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.


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.


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.


+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.


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.