Я хочу закрыть все окна, появляющиеся на моем рабочем столе. Я думал сделать это до конца pkill
, но мне удавалось убивать их по одному, а это не то, чего я хочу. Конечная цель - поместить это в скрипт для запуска киоска, он обнаружит, работает ли программное обеспечение киоска (я разобрался с этой частью), а если нет, то он убьет все открытые окна и перезапустит мой программное обеспечение киоска.
9
Ответы:
Самый простой подход использует
xdotool
:xdotool search ""
перечисляет каждое окно.windowkill %@
убивает каждого из них;%@
относится ко всем результатам предыдущего поиска.Вы можете предпочесть использовать
--maxdepth 1
опцию, чтобыsearch
ограничить выбранные окна окнами верхнего уровня.источник
это работает по крайней мере для kde и xfce (gnome не тестировался, но также может работать):
1) установить wmctrl
2) затем создайте скрипт с именем
close_windows.sh
:3) сделать его исполняемым:
chmod +x ./close_windows.sh
3) создать запись в меню «Пуск», которая указывает на скрипт close_windows.
4) выполнить скрипт close_windows из этой записи.
источник: https://forum.manjaro.org/index.php?topic=4412.0 :
источник
Майкл Гомер и Гвидо ван Стин показали способы убить все окна. Это не убило бы фоновые процессы, если они есть. Это не убило бы сбойные программы, окно которых исчезло, но которые все еще выполняются без пользовательского интерфейса. Поэтому вы можете вместо этого предпочесть убить процессы.
Вы можете запускать
kill -9 -1
как пользователь без полномочий root, чтобы уничтожить все процессы, которые выполняются от имени этого пользователя. Вам нужно будет запустить приложение киоска в качестве выделенного пользователя (в любом случае это стандартная конфигурация для киосков для безопасности) и обеспечить перезапуск интерфейса киоска, когда все процессы в сеансе не работают (что также является стандартной конфигурацией для киосков, для надежности).источник
Ответ Гвидо отлично работает для меня. Я написал небольшую кросс-компилируемую прогу Pascal для Linux / Windows, скомпилированную с Lazarus / FPC для собственного использования, которая запускает его команду wmctrl или эквивалентную команду Powershell windows:
Я также заметил, что Диего прав насчет имени рабочего стола, и мой исполняемый файл Linux будет работать только во французской среде xfce с рабочим столом под названием «Бюро». Я не смог найти имя рабочего стола в переменных окружения (и это не стоило того).
источник