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.

Kravemir
quelle
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.

jasonwryan
quelle
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.

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

Enzotib
quelle
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
aleb
quelle
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
user60561
quelle