Jak mogę zabić określone okno X.

9

Biorąc pod uwagę identyfikatory wyprodukowane przez wmctrl -l, chciałbym móc zabić proces powiązany z identyfikatorem okna.

Jak sugerowałbyś to zrobić?

użytkownik123456
źródło

Odpowiedzi:

10

Oprócz wyszczególnienia PID, jak opisano w innych odpowiedziach Floriana Diescha i Serga, możesz użyć -icopcji bezpośredniego zamknięcia okna:

$ wmctrl -ic 0x02e00085
Nykakin
źródło
3
Jeśli proces się zatrzyma, może nie zauważyć, że zamknąłeś okno. Okno zniknie, ale proces będzie nadal obecny i prawdopodobnie zużyje procesor i pamięć RAM.
kasperd
9

Jeśli używasz wmctrl -lpPID, są w trzeciej kolumnie.

Dla danego identyfikatora okna możesz użyć

kill $(wmctrl -lp | awk '/^WID/ {print $3}')

(zamień WID na swój identyfikator okna)

Florian Diesch
źródło
Może czystszy zamiast awk, którego możesz po prostu użyćcol3 .
Pablo Bianchi
8

wmctrlfaktycznie ma inną flagę -pna liście PID.

bash-4.3$ wmctrl -lp
0x0380000a  0 4410   eagle Desktop
0x04800006  0 4275   eagle XdndCollectionWindowImp
0x04800009  0 4275   eagle unity-launcher
0x0480000c  0 4275   eagle unity-panel
0x0480000f  0 4275   eagle unity-dash
0x04800010  0 4275   eagle Hud

Gdy się o tym dowiesz, jest to trywialne ćwiczenie wyodrębnienia PID tego okna i przekazania go kill

wmctrl -lp | awk '/Window Title/{print $3}' | xargs kill
Sergiy Kolodyazhnyy
źródło
6

Możesz także użyć xkill -id [id]. Narzędzie xkill działa inaczej niż inne odpowiedzi - zamiast zamykać okno lub bezpośrednio zabijać proces, instruuje serwer X, aby rozłączył klienta, który utworzył okno. Zwykle powoduje to zakończenie procesu nawet dla procesu zdalnego.

Zalety i wady każdego podejścia:

  • wmctrl -czamyka okno „z wdziękiem” - tak jakbyś sam kliknął przycisk zamykania menedżera okien. Może to nie zabić procesu i nawet nie zamknąć okna, jeśli aplikacja nie chce, aby okno zostało zamknięte lub zostało zawieszone.

  • Korzystanie z pid from wmctrl -lpwith killgwarantuje zabicie procesu, ale może wymagać dodatkowej pracy lub w ogóle nie działać, jeśli proces może być uruchomiony na innym komputerze.

  • xkillmoże nie zakończyć procesu, jeśli jest zaprojektowany tak, aby móc przywrócić działanie po awarii serwera X lub utracie łączności z siecią, ale większość aplikacji po prostu zawiesi się w takich okolicznościach. W każdym razie okna znikną. Procesy zdalne i lokalne są obsługiwane identycznie.

Losowo 832
źródło
1

użyć xkill. Po prostu wpisz xkillswój terminal i kliknij wymagane okno.

xkill

Abhishek Dhanraj Shahdeo
źródło