¿Cómo configurar de forma correcta y fácil `xdg-open` sin ningún entorno?

63

Estoy usando el administrador de ventanas OpenBox sin ningún entorno de escritorio .

xdg-opense comporta de manera extraña Se abre todo con firefox.

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

Estoy buscando un programa simple; algo así como leer cada *.desktoparchivo en la /usr/share/applications/carpeta y configurar automáticamente la configuración de xdg.

Kravemir
fuente
usar xdg-mime(parte de xdg-utils) es la mejor respuesta para trabajar con (consultar, configurar) xdg-open. Ver también unix.stackexchange.com/questions/8793/…
michael

Respuestas:

24

Puede usar perl-file-mimeinfo en el extrarepositorio para administrar los tipos mime .

Ejemplo para abrir todos los .pdfarchivos en apvlv:

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

y luego, en el indicador, introduzca la aplicación: apvlv.

jasonwryan
fuente
Funciona. Pero solo abre el archivo. Por lo tanto, mi xdg-openizquierda no configurada y las aplicaciones que usan xdg-openno abren archivos correctamente.
kravemir
No entiendo bien tu comentario. ¿Qué no funciona? El -dinterruptor establece el valor predeterminado. Entonces, si lo usa para abrir fileA.pdf, debería poder abrir fileB.pdfcon su aplicación preferida.
jasonwryan
1
Si. mimeopen -d a.pdfestablece el valor predeterminado para *.pdf, pero establece el valor predeterminado para sí mismo: mimeopen b.pdffunciona. Pero la xdg-openconfiguración no se modificó y todavía abre todo con firefox: /
kravemir
3
Una vez que haya establecido el valor por defecto con mimeopen, xdg-opense comporta como se esperaba - en el caso de .pdfs, que les abre con apvlv.
jasonwryan
1
Esto no funciona para mí en Lubuntu 16.04. sudo xdg-mime default pluma.desktop text/plainda touch: 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.txtda bash: /usr/bin/vendor_perl/mimeopen: No such file or directory.
Nickolai Leschov
62

¿Por qué no utilizar utilidades de xdg?

Para que Thunar sea el explorador de archivos predeterminado, es decir, la aplicación predeterminada para abrir carpetas.

$ xdg-mime default Thunar.desktop inode/directory

para usar xpdf como el visor de PDF predeterminado:

$ xdg-mime default xpdf.desktop application/pdf

Esto debería crear una entrada en su base de datos MIME local:

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

Sus archivos PDF deben abrirse con xpdf ahora.

lzap
fuente
+1 y vea también mi respuesta relacionada a la pregunta relacionada, unix.stackexchange.com/questions/77136/…
michael
2
Respuesta más útil, gracias. Es más fácil de conocer, por defaults.listlo que simplemente se puede editar a mano si es necesario.
mVChr
Por alguna razón xdg-mimeno se modificó defaults.list, pero la edición manual (gracias a las sugerencias en esta respuesta) fue el truco.
Skippy le Grand Gourou
Para su información, se requieren pocas dependencias de Perl para esto, asegúrese de tenerlas instaladas. Las distribuciones RPM / DEB las instalarán normalmente.
lzap
2
Parece defaults.listque ahora se llama mimeapps.list. Consulte Arch Wiki para obtener una lista de ubicaciones válidas para mimeapps.list.
Mateen Ulhaq
7

En Debian podría usar el comando, como root

update-mime-database /usr/share/mime

Tener el shared-mime-infopaquete instalado.

enzotib
fuente
2
Lo he intentado No funciona Estoy corriendo Arch.
kravemir
-1 Esto es específico para entornos de escritorio que dependen de información compartida mime, como GNOME
craymichael
7

Puede usar algo como esto para generar los xdg-mimecomandos apropiados para cada uno de sus .desktoparchivos y los tipos MIME que contienen, y luego ejecutar los que desee. Nota /usr/share/applicationspuede tener subdirectorios.

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
fuente
3

Esto es como la respuesta de @ aleb , pero funciona en archivos de escritorio con espacios:

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
usuario60561
fuente