In einem Programm, das ich schreibe, möchte ich die Funktionalität anbieten, das Verzeichnis zu öffnen, in dem sich die Datei befindet, die ich gerade verarbeite, und diese Datei automatisch auszuwählen (damit der Benutzer nicht danach suchen muss).
Ich weiß, dass ich mit im Standard-Dateimanager ein Verzeichnis öffnen kann
xdg-open /path/to/directory
Ich weiß, dass ich ein Verzeichnis in Nautilus öffnen und eine Datei mit auswählen kann
nautilus /path/to/file.txt
Ich dachte , ich könnte es gebrauchen
xdg-mime query default inode/directory
Um den Standard-Dateimanager zu erhalten und - wenn es sich um Nautilus handelt - rufen Sie ihn wie oben gezeigt auf. Trotz der Tatsache, dass Nautilus die Standardeinstellung auf meinem System ist ( xdg-open
öffnet Nautilus und das Ortsmenü in der Gnome-Shell), wird xdg-mime
zurückgegeben Thunar.desktop
. (Ich habe es versucht, find / -name Thunar.desktop -mount 2>/dev/null
aber es wurde nichts gefunden.)
Auch ich weiß nicht , wie ein Verzeichnis zu öffnen und einen Unter wählen Verzeichnis in Nautilus (mit dem oben genannten Ansatz wäre es das Unterverzeichnis öffnen).
Wie kann ich ein Verzeichnis im Standard-Dateimanager öffnen und eine Datei in diesem Verzeichnis auswählen (wenn auch die Auswahl eines Verzeichnisses möglich wäre, wäre das großartig, aber für diese Anwendung nicht erforderlich) oder zumindest den Standard-Dateimanager herausfinden, damit ich kann es direkt anrufen?
mimeapps.list
. Können Sie erklären, in was sich diese Zuordnungen befinden? "Wenn nach der Verarbeitung aller Dateien noch keine Standardanwendung gefunden wurde, wählen Sie die am meisten bevorzugte Anwendung (nach Zuordnungen) aus, die den Typ unterstützt"? Wissen Sie, wie Sie herausfinden können, welches Programm automatisch gestartet wird, ohne dass dieser Algorithmus erneut implementiert werden muss?Möglicherweise möchten Sie dbus zum Öffnen Ihrer Datei verwenden, da diese schnell immer beliebter wird.
Das Konzept eines "Standard" -Dateimanagers gibt es nur dann wirklich, wenn Sie sich ausschließlich auf
xdg-mime
dbus konzentrieren. In der Tat nimmt die Geschichte bei den meisten Anwendungen eine andere Wendung und das Konzept eines "Standard" -Dateimanagers hört auf zu existieren.So öffnen Sie eine Datei (
/home/me/path/to/folder/or/file
) im (Standard?) Dateimanager mit dbus:Dieser Befehl sucht nach einem dbus-Dienst, der die
org.freedesktop.FileManager1
Schnittstelle implementiert , und ruft ihn mit dem Pfad zu der Datei auf, die Sie öffnen möchten.Der Grund, warum ich nach dem Standard ein Fragezeichen setze, ist, dass dbus das Konzept des "Standard" -Dateimanagers nicht respektiert. Alles, was es tut, ist den Anruf an den ersten Dienst zu senden, den es findet, der die Schnittstelle implementiert und die Operation ausführen lässt. Nun kann es sein, dass die ausgewählte Anwendung Ihr "Standard" -Dateimanager ist, aber das ist nicht immer eine Garantie.
Die meisten modernen Anwendungen werden
dbus
standardmäßig verwendet und greifen dann darauf zurück,xdg-mime
wenn der dbus-Aufruf fehlschlägt. Ich würde Ihnen daher empfehlen, dies zu tun.quelle