Woher weiß der Befehl xdg-open, mit welcher Anwendung eine Datei geöffnet werden soll?

21

Ich würde erwarten, dass der Befehl xdg-open die gleiche Anwendung verwendet, die beim Doppelklicken auf die Datei im Standarddateimanager geöffnet wird, dies ist jedoch nicht immer der Fall.

Mein DE ist beispielsweise XFCE, mein Dateimanager ist Thunar und mein Standardbildbetrachter ist Ristretto. Allerdings xdg-open example.pngöffnet das Beispiel PNG - Datei in Pinta. Warum?

Ivan
quelle

Antworten:

23

xdg-open ist ein desktopunabhängiges Tool zum Konfigurieren der Standardanwendungen eines Benutzers. Viele Anwendungen rufen den Befehl xdg-open intern auf. In einer Desktop-Umgebung (wie GNOME, KDE oder Xfce) übergibt xdg-open die Argumente einfach an die Dateiöffner-Anwendung dieser Desktop-Umgebung (z. B. gvfs-open, kde-open oder exo-open). Dies bedeutet, dass die Zuordnungen der Desktop-Umgebung überlassen bleiben. Wenn keine Desktop-Umgebung erkannt wird (z. B. wenn ein eigenständiger Fenstermanager wie z. B. Openbox ausgeführt wird), verwendet xdg-open seine eigenen Konfigurationsdateien.

aus archwiki

Sie können dies versuchen, um die Standardanwendung festzulegen, die der PNG-Datei zugeordnet ist:

xdg-mime default <ristretto.desktop> image/png

Sie müssen herausfinden, wie genau der Desktop-Dateiname von Ristretto lautet. Danach können Sie dies überprüfen:

xdg-mime query default image/png
oxnz
quelle
1
Dies kann formal als Antwort betrachtet werden, erklärt aber nicht das Phänomen, das ich erwähnt habe.
Ivan
aktualisiert, bitte erneut prüfen
oxnz
Vielen Dank. Und das ist sehr lustig: xdg-mime query default image/pngkehrt zurück wine-extension-png.desktop:-)
Ivan
2

@Ivan Das passiert wahrscheinlich, weil Sie nicht den richtigen Dateityp angegeben haben, als Sie nach der Standardanwendung gefragt haben. Wichtig ist, wie xdg diesen bestimmten Dateityp aufruft. Dies kann leicht durch Laufen herausgefunden werden

xdg-mime query filetype example.png

Wenn ich dies zum Beispiel mit einer bestimmten PNG-Datei auf meinem Computer mache, wird sie zurückgegeben image/x-apple-ios-png. Sobald Sie den tatsächlichen Dateityp herausgefunden haben, können Sie ausführen

xdg-mime query default <new filetype>

und rufen Sie die Anwendung ab, die von xdg für diesen bestimmten Dateityp verwendet wird. Wenn für diesen Dateityp keine Anwendung definiert ist, prüft xdg-open, ob die Datei /etc/debian_versionverfügbar ist. Ist dies der Fall, wird sie gestartet run-mailcap, die der von xdg-open sehr ähnlich ist und versucht, ein Programm zum Öffnen der Datei zu finden .

Nur wenn dies ebenfalls fehlschlägt, fordert xdg-open den Benutzer auf, ein Programm zum Öffnen der Datei zu definieren.

lauve
quelle
Hat oxnz das nicht schon geschrieben?
Jeff Schaller
oxny erwähnt nur, wie die Anwendung für einen bekannten Dateityp festgelegt und überprüft wird. Es fehlt ihm der Hinweis, xdg-mime query filetype example.pngden Dateityp einer bestimmten Datei zu überprüfen, da die bloße Annahme, dass eine PNG-Datei auch in die Kategorie image / png fällt, nicht immer richtig ist. Wenn ich die Kommentare von Ivan betrachte , denke ich, dass sein Problem noch nicht gelöst ist.
Lauve