Как закрыть, свернуть и развернуть указанное окно из Терминала?

Я использую 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 
Другие вопросы по тегам