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


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.


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.


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


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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.