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/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

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.