Как закрыть, свернуть и развернуть указанное окно из Терминала?
Я использую Ubuntu GNOME 15.10 с GNOME 3.18 и мне интересно, есть ли способ из терминала закрыть, свернуть, свернуть, развернуть и развернуть указанные окна?
Обратите внимание - я посмотрел на этот вопрос и ответы - я спрашиваю, как сделать это из терминала... Не как добавить кнопки... Кнопки уже есть, мне не нужно их добавлять.
4 ответа
Есть два важных инструмента для управления окнами из cli
; xdotool
а также wmctrl
, Оба инструмента перекрывают друг друга по функциональности, но наиболее важные команды относятся к вашему вопросу:
В (без сомнения, неполном) обзоре перечислены команды, которые я использую чаще всего:
Закрытие окна
wmctrl:
wmctrl -ic <window_id>
Свернуть окно
xdotool:
xdotool windowminimize <window_id>
Свернуть окно
wmctrl:
Эффективная минимизация осуществляется путем:
wmctrl -ia <window_id>
Я упоминаю эффективно, поскольку команда перемещается на соответствующий рабочий стол, минимизирует и поднимает окно, но команда также делает это на окнах, которые не свернуты.
Максимизация окна
xdotool:
xdotool windowsize <window_id> 100% 100%
wmctrl:
wmctrl -ir <window_id> -b add,maximized_vert,maximized_horz
Свернуть окно:
wmctrl -ir <window_id> -b remove,maximized_vert,maximized_horz
Заметки
И то и другое
xdotool
а такжеwmctrl
не находятся в вашей системе по умолчанию:sudo apt-get install xdotool wmctrl
Чтобы выполнить любую из команд в текущем активном окне:
за
wmctrl
команды, удалите-i
вариант, заменить<window_id>
от:ACTIVE:
за
xdotool
команды: заменить<window_id>
от$(xdotool getactivewindow)
Во многих случаях команды могут выполняться с использованием либо идентификатора окна, либо имени окна.
-i
вариант вwmctrl
говоритwmctrl
использовать идентификатор окна. Я бы предложил не использовать имя окна в качестве идентификатора, чтобы предотвратить конфликт имен. Это происходит легче, чем вы ожидаете.- Исходя из собственного опыта, используя максимизацию в скрипте; С помощью
wmctrl
максимизировать / unmaximize может быть немного глючит на обоихUnity
а такжеGnome
, в то время какxdotool
Вариант работает более надежно в моем опыте. В большинстве сценариев я использую обаwmctrl
а такжеxdotool
,
Больше информации о man wmctrl и man xdotool (в основном это раздел: WINDOW COMMANDS).
Добавляем к ответу Якоба Влиима:
xdotool windowactivate $minwinid
xdotool windowraise $minwinid
xdotool windowfocus $minwinid
Также работает для минимизации окна. Анимация быстрее для меня.
Добавление к ответу Джейкоба Влайма:
Сворачивание окна с xdotool по имени окна:
xdotool search -name '<window_name>' windowminimize
Чтобы получить список имен окон, используйте:
wmctrl -l
Чтобы скрыть текущее окно:
wmctrl -r :ACTIVE: -b toggle,hidden