Zauważyłem, że czasami zawartość schowka staje się niedostępna, jeśli aplikacja źródłowa (z której treść została skopiowana) jest zamknięta.
To prowadzi mnie do zastanowienia się, czy można dowiedzieć się, co to jest aplikacja źródłowa (np. Przez PID).
Dlaczego? Jeśli aplikacją źródłową jest terminal, chciałbym znaleźć katalog roboczy terminala, na wypadek gdyby skopiowana zawartość była ścieżką względną, aby utworzyć pełną ścieżkę do pliku.
Do Twojej wiadomości, obecnie używam xclip do określenia zawartości schowka, np
xclip -selection primary -t STRING -o 2> /dev/null
XGetSelectionOwner(3)
pobiera identyfikator okna właściciela zaznaczenia. Z którego można przejść po drzewie okien, aby na przykład znaleźć okno z właściwością _NET_WM_PIDxprop
(przy założeniu, że okno pochodzi od lokalnego klienta, który ustawia tę właściwość).xwininfo -root -tree | less +/0x<that-id>
może wystarczyć do zidentyfikowania aplikacji.Odpowiedzi:
Napisałem narzędzie, które zwraca prostą nazwę aplikacji (np. „Terminal”, „gedit” lub „SmartGit”, które testowałem). Większość kodu jest bezwstydnie skradziona z @Harvey tutaj .
źródło
gnome-terminal
uruchamianie tylko raz wystąpienie aplikacji na sesję zamiast jednego wystąpienia na okno terminala, jak czcigodnyxterm
. Może dlatego widzisz ten sam PID we wszystkich? Dlagnome-terminal
użyłeś aby móc wyłączyć tę misfeature z--disable-factory
(nieparzyste nazwy opcji), ale widocznie, że może nie być możliwe . W każdym razie wygląda na to, że potrzebujesz pwd jednego z procesów działających w terminalu, a nie samego.