Em um programa que estou escrevendo, desejo oferecer a funcionalidade de abrir o diretório em que o arquivo que estou processando no momento está localizado e selecionar automaticamente esse arquivo (para que o usuário não precise procurá-lo).
Eu sei que posso abrir um diretório no gerenciador de arquivos padrão usando
xdg-open /path/to/directory
Eu sei que posso abrir um diretório no nautilus e selecionar um arquivo usando
nautilus /path/to/file.txt
Eu pensei que eu poderia usar
xdg-mime query default inode/directory
para obter o gerenciador de arquivos padrão e - se for nautilus - chame-o como mostrado acima. Mas, apesar do fato de o nautilus ser o padrão no meu sistema ( xdg-open
abre o nautilus e o menu de locais no shell do gnome), xdg-mime
retorna Thunar.desktop
. (Eu tentei, find / -name Thunar.desktop -mount 2>/dev/null
mas não encontrou nada.)
Além disso, eu não sei como abrir um diretório e selecionar um sub diretório no Nautilus (com a abordagem acima indicado abriria o subdiretório).
Como posso abrir um diretório no gerenciador de arquivos padrão e selecionar um arquivo nesse diretório (se também fosse possível selecionar um diretório, seria ótimo, mas para esse aplicativo não é necessário) ou, pelo menos, descobrir o gerenciador de arquivos padrão para que eu pode chamá-lo diretamente?
mimeapps.list
. Você pode explicar em que consiste essas associações "se, depois que todos os arquivos forem tratados, ainda não encontramos um aplicativo padrão, selecione o aplicativo mais preferido (de acordo com as associações) que suporta o tipo"? Você sabe como descobrir qual programa será iniciado automaticamente sem precisar reimplementar esse algoritmo?Você pode considerar o uso do dbus para abrir seu arquivo, pois está rapidamente se tornando mais popular.
O conceito de um gerenciador de arquivos "padrão" só existe realmente se você estiver focado apenas
xdg-mime
, no entanto, no dbus land e na maioria das aplicações existentes, a história tem uma reviravolta diferente e o conceito de um gerenciador de arquivos "padrão" Deixa de existir.É assim que você abre um arquivo (
/home/me/path/to/folder/or/file
) no gerenciador de arquivos (padrão?), Usando o dbus:O que este comando faz é procurar por qualquer serviço dbus que implemente a
org.freedesktop.FileManager1
interface e a chama com o caminho para o arquivo que você deseja abrir.O motivo de eu colocar um ponto de interrogação após o padrão é porque o dbus não respeita o conceito de gerenciador de arquivos "padrão"; tudo o que faz é enviar a chamada para o primeiro serviço encontrado que implementa a interface e permite que ela lide com a operação. Agora pode ser que o aplicativo escolhido seja seu gerenciador de arquivos "padrão", mas isso nem sempre é uma garantia.
A maioria dos aplicativos modernos usará
dbus
por padrão e fará o fallback paraxdg-mime
se a chamada do dbus falhar, então é isso que eu sugiro que você faça.fonte