Come configurare correttamente e facilmente `xdg-open` senza alcun ambiente?


63

Sto usando il gestore di finestre OpenBox senza alcun ambiente desktop .

xdg-opensi comporta in modo strano. Si apre tutto con firefox.

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

Sto cercando un programma semplice; qualcosa come leggere ogni *.desktopfile nella /usr/share/applications/cartella e impostare automaticamente le impostazioni xdg.


l'utilizzo di xdg-mime(parte di xdg-utils) è la risposta migliore per lavorare con (query, configurazione) xdg-open. Vedi anche unix.stackexchange.com/questions/8793/…
— michael

Risposte:


24

È possibile utilizzare perl-file-mimeinfo nel extrarepository per gestire i mimetipi.

Esempio per aprire tutti i .pdffile in apvlv:

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

e poi, al prompt, accedere all'applicazione: apvlv.


Funziona. Ma apre solo il file. Quindi la mia xdg-opensinistra non è stata configurata e le applicazioni che usano xdg-opennon apriranno i file nel modo giusto.
— kravemir,

Non seguo abbastanza il tuo commento. Cosa non funziona? L' -dinterruttore imposta il valore predefinito. Quindi, se lo usi per aprire fileA.pdf, dovresti essere in grado di aprire fileB.pdfcon l'applicazione preferita.
— Jasonwryan,

1
Sì. mimeopen -d a.pdfimposta il valore predefinito per *.pdf, ma imposta il valore predefinito per se stesso - mimeopen b.pdffunziona. Ma la xdg-openconfigurazione è rimasta invariata e apre ancora tutto con firefox: /
— kravemir

3
Una volta impostato il default con mimeopen, xdg-opensi comporta come previsto - nel caso di .pdfs, li apre con apvlv.
— Jasonwryan,

1
Questo non funziona per me in Lubuntu 16.04. sudo xdg-mime default pluma.desktop text/plaindà 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.txtdà bash: /usr/bin/vendor_perl/mimeopen: No such file or directory.
— Nickolai Leschov,

62

Perché non usare i programmi di utilità di xdg stesso?

Per rendere Thunar il browser di file predefinito, ovvero l'applicazione predefinita per l'apertura di cartelle.

$ xdg-mime default Thunar.desktop inode/directory

utilizzare xpdf come visualizzatore PDF predefinito:

$ xdg-mime default xpdf.desktop application/pdf

Questo dovrebbe creare una voce nel database MIME locale:

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

I tuoi file PDF dovrebbero essere aperti con xpdf ora.


+1 e vedi anche la mia risposta correlata alla domanda correlata, unix.stackexchange.com/questions/77136/…
— michael

2
Risposta molto utile, grazie. Più facile da sapere, defaults.listquindi può essere modificato manualmente a mano, se necessario.
— mVChr,

Per qualche motivo xdg-mimenon è stato modificato defaults.list, ma modificarlo manualmente (grazie ai suggerimenti in questa risposta) ha funzionato.
— Skippy le Grand Gourou,

FYI sono necessarie alcune dipendenze Perl per questo, assicurati di averle installate. Le distribuzioni RPM / DEB le installeranno normalmente.
— lzap

2
Sembra che defaults.listora sia chiamato mimeapps.list. Consulta Arch Wiki per un elenco di posizioni valide per mimeapps.list.
— Mateen Ulhaq,

7

Su Debian puoi usare il comando, come root

update-mime-database /usr/share/mime

avendo shared-mime-infoinstallato il pacchetto.


2
L'ho provato Non funziona Sto correndo Arch.
— kravemir,

-1 Questo è specifico per gli ambienti desktop che dipendono da informazioni-mime condivise, come GNOME
— craymichael

7

Puoi usare qualcosa del genere per generare i xdg-mimecomandi appropriati per ciascuno dei tuoi .desktopfile e i mimetipi che contengono, quindi eseguire quelli che ti piacciono. Nota /usr/share/applicationspotrebbe avere sottodirectory.

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

Questa è la risposta di @aleb , ma funziona su file desktop con spazi:

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.