Ich habe festgestellt, dass der Inhalt der Zwischenablage manchmal nicht mehr verfügbar ist, wenn die Quellanwendung (aus der der Inhalt kopiert wurde) geschlossen wird.
Dies führt mich zu der Frage, ob es möglich ist, die Quellanwendung zu kennen (z. B. durch PID).
Warum? Wenn die Quellanwendung ein Terminal ist, möchte ich das Arbeitsverzeichnis des Terminals finden, falls der kopierte Inhalt ein relativer Pfad ist, um einen vollständigen Pfad zu einer Datei zu erstellen.
Zu Ihrer Information, ich verwende derzeit xclip, um den Inhalt der Zwischenablage zu bestimmen, z
xclip -selection primary -t STRING -o 2> /dev/null
XGetSelectionOwner(3)
Ruft die Fenster-ID des Eigentümers der Auswahl ab. Von hier aus können Sie im Fensterbaum versuchen, ein Fenster mit einer _NET_WM_PID-Eigenschaft zu finden, beispielsweise mitxprop
(vorausgesetzt, das Fenster stammt von einem lokalen Client, der diese Eigenschaft festlegt).xwininfo -root -tree | less +/0x<that-id>
kann ausreichen, um die Anwendung zu identifizieren.Antworten:
Ich habe ein Tool geschrieben, das den einfachen Anwendungsnamen zurückgibt (z. B. 'Terminal', 'gedit' oder 'SmartGit', die ich getestet habe). Die meisten Code ist schamlos aus @Harvey gestohlen hier .
quelle
gnome-terminal
starten nur einmal Instanz der Anwendung pro Sitzung anstelle einer Instanz pro Terminalfenster wie ehrwürdigxterm
. Vielleicht sehen Sie deshalb in allen die gleiche PID? Fürgnome-terminal
Sie , dass misfeature mit der Lage sein , verwendet zu deaktivieren--disable-factory
(ungeradeem Namen für eine Option) , aber offensichtlich , dass nicht mehr möglich sein könnte . Wie auch immer, es hört sich so an, als ob Sie das pwd eines der Prozesse benötigen, die im Terminal ausgeführt werden, nicht von sich selbst.