Por favor, não marque como duplicado antes de ler minha pergunta. Eu sei que já existem essas perguntas, mas a resposta existente não funcionou como esperado, e é por isso que estou fazendo esta pergunta.
As respostas existentes dizem que a maneira de definir o gerenciador de arquivos padrão é xdg-mime default <app name> inode/directory
, e a maneira de localizar um arquivo com o gerenciador de arquivos padrão é dbus-send --session --print-reply --dest=org.freedesktop.FileManager1 --type=method_call /org/freedesktop/FileManager1 org.freedesktop.FileManager1.ShowItems array:string:"<path>" string:""
.
Mas quando testei isso em algumas distribuições baseadas em Arch, incluindo Arch com Gnome, o dbus-send
comando nem sempre abriu o gerenciador de arquivos que xdg-mime query default
indica, após instalar o gerenciador de arquivos Nemo (o gerenciador de arquivos padrão do Gnome é o Gnome Files). Enquanto xdg-mime query default inode/directory
gera nemo.desktop
, o dbus-send...
comando acima abre arquivos Gnome, e quando o primeiro gera "org.gnome.Nautilus.desktop", o último abre o Nemo. (Isso ocorre quando não há um gerenciador de arquivos em execução. Se já houver uma instância de um gerenciador de arquivos, dbus-send
o comando parece usar esse gerenciador de arquivos.)
O dbus-send
comando acima é o comando correto para "localizar um arquivo com o gerenciador de arquivos padrão"? Embora o dbus-send
comando acima não tenha funcionado conforme o esperado, os IDEs da JetBrain, como Android Studio ou IntellJ, localizaram corretamente o arquivo com o gerenciador de arquivos padrão, quando cliquei com o botão direito do mouse em um arquivo e, em seguida, cliquei em "Abrir em" e, em seguida, no nome do gerenciador de arquivos. Pensei em pesquisar o código-fonte, mas esses são aplicativos enormes e tentar pesquisar o código-fonte não retornou nenhum resultado (usei palavras-chave como "abrir em" ou "gerenciador de arquivos").
Essas duas configurações não têm nada a ver uma com a outra, pois o sistema realmente não possui um conceito unificado de "gerenciador de arquivos padrão".
xdg-mime
apenas altera as associações do tipo MIME, mas não tem absolutamente nenhum efeito sobre qual serviço é ativado quando um programa tenta se comunicarorg.freedesktop.FileManager1
via D-Bus.(É um pouco como arquivos .html e URLs http:// podem ser associados a diferentes programas.)
Por motivos legados, o dbus-daemon permite que vários
.service
arquivos afirmem que fornecem o mesmo nome de serviço. (Isto só importa ao ativar um serviço que ainda não está em execução; a ativação não é usada se o nome já for reivindicado por um processo já em execução.)O primeiro passo pode ser descobrir quais arquivos D-Bus .service fornecem o nome:
(Não se preocupe que os nomes dos arquivos não correspondem ao nome do serviço que eles aparentemente fornecem.)
Em seguida, substitua os serviços indesejados por meio de
~/.local/share/dbus-1
:O nomeado
org.freedesktop.FileManager1.service
na verdade é o Nautilus, então pode ficar:Verifique se funciona: