Chcę zamknąć wszystkie okna pojawiające się na pulpicie. Myślałem, aby to zrobić pkill
, ale udało mi się zabić ich pojedynczo, co nie jest tym, czego chcę. Ostatecznym celem jest umieszczenie tego w skrypcie, aby uruchomić kiosk, wykryje, czy oprogramowanie kiosku jest uruchomione (wymyśliłem tę część), a jeśli nie, to zabije wszystkie otwarte okna i uruchomi ponownie oprogramowanie kiosku.
9
Odpowiedzi:
Najprostsze podejście wykorzystuje
xdotool
:xdotool search ""
wyświetla każde okno.windowkill %@
zabija każdego z nich;%@
odnosi się do wszystkich wyników poprzedniego wyszukiwania.Może wolisz skorzystać z
--maxdepth 1
opcji , abysearch
ograniczyć do wybranych okien okien najwyższego poziomu.źródło
działa to przynajmniej dla kde i xfce (gnome nie testowany, ale może również działać):
1) zainstaluj wmctrl
2) następnie utwórz skrypt o nazwie
close_windows.sh
:3) uczynić go wykonywalnym:
chmod +x ./close_windows.sh
3) Utwórz pozycję w menu Start, która wskazuje na skrypt close_windows.
4) uruchom skrypt close_windows z tego wpisu.
źródło: https://forum.manjaro.org/index.php?topic=4412.0 :
źródło
Michael Homer i Guido van Steen pokazali sposoby na zabicie wszystkich okien. Nie zabiłoby to procesów działających w tle, jeśli takie istnieją. Nie zabiłoby to zawieszonych programów, których okno zniknęło, ale które nadal działają bez interfejsu użytkownika. Dlatego możesz zamiast tego zabić procesy.
Możesz działać
kill -9 -1
jako użytkownik inny niż root, aby zabić wszystkie procesy uruchomione jako ten użytkownik. Musisz uruchomić aplikację kiosku jako dedykowany użytkownik (i tak jest to standardowa konfiguracja kiosków, dla bezpieczeństwa) i upewnić się, że interfejs kiosku uruchomi się ponownie, gdy wszystkie procesy w sesji będą martwe (co jest również standardową konfiguracją kiosków, za solidność).źródło
Odpowiedź Guido doskonale dla mnie działa. Napisałem mały kompilowalny program Pascal dla systemu Linux / Windows skompilowany z Lazarus / FPC na własny użytek, który uruchamia jego polecenie wmctrl lub równoważne polecenie systemu Windows Powershell:
Zauważyłem również, że Diego ma rację co do nazwy pulpitu, a mój plik wykonywalny Linuksa działałby tylko we francuskim środowisku xfce z pulpitem o nazwie „Bureau”. Nie mogłem znaleźć nazwy pulpitu w zmiennych środowiskowych (i nie było to warte kłopotu).
źródło