Como configurar o xdg-open` de maneira adequada e fácil, sem qualquer ambiente?

63

Estou usando o gerenciador de janelas OpenBox sem qualquer ambiente de área de trabalho .

xdg-opencomporta-se estranhamente. Abre tudo com firefox.

$ xdg-settings --list
Known properties:
  default-web-browser           Default web browser

Estou procurando um programa simples; algo como ler todos os *.desktoparquivos da /usr/share/applications/pasta e definir automaticamente as configurações do xdg.

kravemir
fonte
usar xdg-mime(parte de xdg-utils) é a melhor resposta para trabalhar com (consultar, configurar) xdg-open. Veja também unix.stackexchange.com/questions/8793/…
michael

Respostas:

24

Você pode usar perl-file-mimeinfo no extrarepositório para gerenciar tipos de mimet .

Exemplo para abrir todos os .pdfarquivos em apvlv:

/usr/bin/vendor_perl/mimeopen -d $file.pdf

e, em seguida, no prompt, entrar na aplicação: apvlv.

jasonwryan
fonte
Funciona. Mas isso apenas abre o arquivo. Portanto, minha xdg-openesquerda não configurada e aplicativos usando xdg-opennão abrirão arquivos corretamente.
Kravemir
Ainda não sigo o seu comentário. O que não está funcionando? A -dopção define o padrão. Portanto, se você o usar para abrir fileA.pdf- poderá abrir fileB.pdfcom o aplicativo preferido.
jasonwryan
11
Sim. mimeopen -d a.pdfdefine padrão para *.pdf, mas define padrão para si mesmo - mimeopen b.pdffunciona. Mas xdg-openconfiguração deixado inalterado e ainda abre tudo com firefox: /
kravemir
3
Depois de definir o padrão com mimeopen, xdg-opencomporta-se como esperado - no caso de .pdfs, ele será aberto com apvlv.
jasonwryan
11
Isso não funciona para mim no Lubuntu 16.04. sudo xdg-mime default pluma.desktop text/plaintouch: cannot touch "/home/user/.local/share/applications/mimeapps.list": No such file or directory /usr/bin/xdg-mime: 807: /usr/bin/xdg-mime: cannot create /home/user/.local/share/applications/mimeapps.list.new: Directory nonexistent; /usr/bin/vendor_perl/mimeopen -d $file.txtbash: /usr/bin/vendor_perl/mimeopen: No such file or directory.
Nickolai Leschov
62

Por que não usar utilitários do próprio xdg?

Tornar o Thunar o navegador de arquivos padrão, ou seja, o aplicativo padrão para abrir pastas.

$ xdg-mime default Thunar.desktop inode/directory

para usar o xpdf como o visualizador de PDF padrão:

$ xdg-mime default xpdf.desktop application/pdf

Isso deve criar uma entrada no banco de dados MIME local:

~/.local/share/applications/defaults.list
[Default Applications]
application/pdf=xpdf.desktop

Seus arquivos PDF devem ser abertos com o xpdf agora.

lzap
fonte
+1 e ver também a minha resposta relacionada com a questão relacionada, unix.stackexchange.com/questions/77136/...
michael
2
Resposta mais útil, obrigado. Mais fácil de conhecer, defaults.listpara que possa ser editado manualmente, se necessário.
MVChr 24/05
Por algum motivo xdg-mime, não foi modificado defaults.list, mas editá-lo manualmente (graças às dicas nesta resposta) fez o truque.
Skippy le Grand Gourou
Para sua informação, poucas dependências Perl são necessárias para isso, verifique se você as instalou. As distribuições RPM / DEB os instalarão normalmente para você.
lzap
2
Parece que defaults.listagora é chamado mimeapps.list. Veja o Arch Wiki para uma lista de locais válidos para mimeapps.list.
Mateen Ulhaq
7

No Debian você pode usar o comando como root

update-mime-database /usr/share/mime

tendo o shared-mime-infopacote instalado.

enzotib
fonte
2
Eu tentei. Isso não funciona. Eu estou executando o Arch.
Kravemir
-1 Isso é específico para ambientes de desktop que dependem de informações de mímica compartilhadas, como o GNOME
craymichael
7

Você pode usar algo parecido com isto para gerar os xdg-mimecomandos apropriados para cada um dos seus .desktoparquivos e os tipos de mimétipos que eles contêm, e depois executar os que desejar. Nota /usr/share/applicationspode ter subdiretórios.

for dd in /usr/share/applications ~/.local/share/applications; do
  for d in $(ls $dd 2>/dev/null | grep "\\.desktop$"); do
    for m in $(grep MimeType $dd/$d | cut -d= -f2 | tr ";" " "); do
      echo xdg-mime default $d $m;
    done;
  done;
done
aleb
fonte
3

É a resposta do @ aleb , mas funciona em arquivos da área de trabalho com espaços:

find /usr/share/applications ~/.local/share/applications -iname '*.desktop' -print0 | while IFS= read -r -d $'\0' d; do
  for m in $(grep MimeType "$d" | cut -d= -f2 | tr ";" " "); do
    echo xdg-mime default "'$d'" "'$m'"
  done
done
user60561
fonte