xdg-abra o comportamento de aplicativos padrão

11

Quando não tenho defaults.list e mimeapps.list , xdg-open abre text/plain com gvim . Mas quando eu criar defaults.list em /usr/share/applications/ e adicionar as seguintes linhas:

[Default Applications]
text/plain=emacs.desktop

abre arquivos de texto com o firefox.

No entanto, se eu mover /usr/share/applications/defaults.list para ~/.local/share/applications/mimeapps.list , ele abrirá arquivos de texto com emacs conforme o esperado.

Minhas perguntas:

  1. Como o xdg-open determina qual aplicativo será iniciado quando não houver defaults.list e mimeapps.list ?
  2. Por que xdg-open está usando o firefox quando eu simplesmente escrevo /usr/share/applications/defaults.list ?

Estou usando o Arch linux.

    
por Gradient 26.05.2013 / 10:05

1 resposta

16

Se estiver usando xdg-open para abrir aplicativos, use xdg-mime para definir o aplicativo padrão para um determinado tipo de mimo (normalmente, instalar o xdg-utils fornece o xdg-mime e programas relacionados).

Por exemplo, para ver o "tipo de arquivo" (tipo mime, se desejar) de um determinado arquivo:

$ xdg-mime query filetype tmp.txt
text/plain

$ xdg-mime query filetype foo.pdf 
application/pdf

$ xdg-mime query filetype $PWD
inode/directory

Exemplo de alteração do gerenciador de arquivos padrão para abrir diretórios (pode-se escolher caja.desktop (padrão para mint), nautilus.desktop (ubuntu), etc:

$ xdg-mime default Thunar.desktop inode/directory

E também locate -i foo.desktop para verificar se foo.desktop existe de fato.

Mais ao ponto, para ver qual é o editor de texto padrão,

$ xdg-mime  query default text/plain 
gedit.desktop

Para usar um editor de texto padrão diferente (novamente, verificando se o arquivo ".desktop" existe):

$ locate -i vim.desktop
/usr/share/applications/gvim.desktop

$ xdg-mime default gvim.desktop text/plain

Agora, se você clicar duas vezes em "foo.txt" (no gerenciador de arquivos da GUI) ou executar xdg-open foo.txt , usará gvim em vez de gedit .

Solução de problemas: certifique-se de que o arquivo ".desktop" para um determinado aplicativo possa ser encontrado, desde que ele tenha que ser usado com o utilitário xdg-mime ; por exemplo,

$ xdg-mime default emacs text/plain 
xdg-mime: malformed argument 'emacs', expected *.desktop

Além disso, isso silenciosamente não funciona como esperado se o arquivo ".desktop" não existir:

$ locate -i emacs.desktop
(none)

$ xdg-mime default emacs.desktop text/plain  # won't work

O arquivo emacs ".desktop" real (no meu env):

$ locate -r 'emacs.*\.desktop'
/usr/share/applications/emacs24.desktop

$ xdg-mime default emacs24.desktop text/plain  # does work

Veja também: link

    
por 02.01.2014 / 09:54