Wie kann man `xdg-open` ohne jegliche Umgebung richtig und einfach konfigurieren?


63

Ich verwende OpenBox Window Manager ohne Desktop-Umgebung .

xdg-openbenimmt sich seltsam. Es öffnet sich alles mit firefox.

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

Ich suche ein einfaches Programm; So etwas wie das Lesen jeder *.desktopDatei in einem /usr/share/applications/Ordner und das automatische Festlegen der xdg-Einstellungen.


Verwenden von xdg-mime(Teil von xdg-utils) ist die beste Antwort für das Arbeiten mit (Abfragen, Konfigurieren) xdg-open. Siehe auch unix.stackexchange.com/questions/8793/…
michael

Antworten:


24

Sie können perl-file-mimeinfo im extraRepository verwenden, um Mimetypen zu verwalten.

Beispiel zum Öffnen aller .pdfDateien in apvlv:

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

und dann, an der Eingabeaufforderung die Anwendung: apvlv.


Es klappt. Aber es öffnet nur die Datei. Also meine nicht xdg-openkonfiguriert und Anwendungen mit xdg-opennicht richtig geöffneten Dateien.
Kravemir

Ich folge deinem Kommentar nicht ganz. Was funktioniert nicht? Der -dSchalter legt die Standardeinstellung fest. Wenn Sie es also zum Öffnen verwenden fileA.pdf, sollten Sie in der Lage sein, fileB.pdfmit Ihrer bevorzugten Anwendung zu öffnen .
Jasonwryan

1
Ja. mimeopen -d a.pdfSetzt Standard für *.pdf, aber es setzt Standard für sich selbst - mimeopen b.pdffunktioniert. Aber die xdg-openKonfiguration bleibt unverändert und es öffnet sich immer noch alles mit firefox: /
kravemir

3
Sobald ich die Voreinstellung mit gesetzt habe mimeopen, xdg-openverhält es sich wie erwartet - im Falle von .pdfs öffnet es sie mit apvlv.
Jasonwryan

1
Das funktioniert bei mir in Lubuntu nicht 16.04. sudo xdg-mime default pluma.desktop text/plaingibt 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.txtgibt bash: /usr/bin/vendor_perl/mimeopen: No such file or directory.
Nickolai Leschov

62

Warum nicht Dienstprogramme von xdg selbst verwenden?

Thunar zum Standard-Dateibrowser machen, dh zur Standardanwendung zum Öffnen von Ordnern.

$ xdg-mime default Thunar.desktop inode/directory

So verwenden Sie xpdf als Standard-PDF-Viewer:

$ xdg-mime default xpdf.desktop application/pdf

Dies sollte einen Eintrag in Ihrer lokalen MIME-Datenbank erstellen:

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

Ihre PDF-Dateien sollten jetzt mit xpdf geöffnet werden.


+1 und siehe auch meine verwandte Antwort auf die verwandte Frage, unix.stackexchange.com/questions/77136/…
Michael

2
Hilfreichste Antwort, danke. Am einfachsten zu wissen, defaults.listso dass es bei Bedarf einfach von Hand bearbeitet werden kann.
mVChr

Aus irgendeinem Grund xdg-mimenicht geändert defaults.list, aber die manuelle Bearbeitung (dank der Hinweise in dieser Antwort) hat den Trick getan.
Skippy le Grand Gourou

Einige Perl-Abhängigkeiten sind hierfür erforderlich. Stellen Sie sicher, dass Sie sie installiert haben. RPM / DEB-Distributionen installieren diese normalerweise für Sie.
lzap

2
Es scheint defaults.listjetzt heißt mimeapps.list. Siehe die Arch Wiki für eine Liste der gültigen Standorte für mimeapps.list.
Mateen Ulhaq

7

Unter Debian können Sie den Befehl als root verwenden

update-mime-database /usr/share/mime

das shared-mime-infoPaket installiert haben.


2
Ich habe es versucht. Es funktioniert nicht Ich leite Arch.
Kravemir

-1 Dies gilt speziell für Desktop-Umgebungen, die von freigegebenen
MIME

7

Sie können so etwas verwenden, um die entsprechenden xdg-mimeBefehle für jede Ihrer .desktopDateien und die darin enthaltenen Mimetypen zu generieren und dann die gewünschten Befehle auszuführen. Hinweis: /usr/share/applicationsMöglicherweise sind Unterverzeichnisse vorhanden.

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

Dies ist wie die Antwort von @ aleb , funktioniert jedoch bei Desktop-Dateien mit Leerzeichen:

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.