У меня есть два окна, A и B. Возможно ли как-то связать два окна вместе, так что переключение на A также поднимает B, или переключение на B также поднимает A?
Я понимаю, что использование нескольких рабочих областей является альтернативным вариантом, но мне было интересно, возможно ли это?
command-line
scripts
shortcut-keys
window-manager
window
Саймон Тонг
источник
источник
Ответы:
Вступление
Следующий скрипт позволяет выбрать два окна, и, пока оба окна открыты, он поднимает оба окна, когда пользователь фокусирует одно из них. Например, если кто-то связывает вдов А и В, то ведьма к А или В заставит обоих подняться выше других вдов.
Чтобы остановить скрипт, вы можете использовать его
killall link_windows.py
в терминале или закрыть и снова открыть одно из окон. Вы также можете отменить выполнение, нажав кнопку закрытия Xв любом из всплывающих диалоговых окон выбора окна.Потенциальные настройки:
использование
Запустите скрипт как:
Скрипт совместим с Python 3, поэтому он также может работать как
Есть две опции командной строки:
--quiet
или-q
, позволяет отключить окна GUI. С помощью этой опции вы можете просто щелкнуть мышью на любых двух окнах, и скрипт начнет их связывать.--help
или-h
печатает информацию об использовании и описании.-h
Опция производит следующую информацию:Дополнительную техническую информацию можно просмотреть через
pydoc ./link_windows.py
, где./
означает, что вы должны находиться в том же каталоге, что и скрипт.Простой процесс использования для двух окон:
Появится всплывающее окно с просьбой выбрать окно № 1, нажмите OKили нажмите Enter. Указатель мыши превратится в крест. Нажмите на одно из окон, которое вы хотите связать.
Появится второе всплывающее окно с просьбой выбрать окно № 2, нажать OKили нажать Enter. Опять же, указатель мыши превратится в крестик. Нажмите на другое окно, которое вы хотите связать. После этого начнется казнь.
Всякий раз, когда вы фокусируете одно из окон, сценарий поднимает другое окно вверх, но возвращает фокус к первоначально выбранному (обратите внимание - с задержкой в четверть секунды для лучшей производительности), создавая ощущение, что окна связаны друг с другом.
Если вы выберете одно и то же окно оба раза, скрипт закроется. Если в любой момент вы нажмете кнопку закрытия всплывающего диалога, скрипт закроется.
Источник скрипта
Также доступно как GitHub Gist
Заметки:
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
Их можно игнорировать.источник
time.sleep
Бит между переключениями, я в состоянии положить , что к нулю? есть ли причина для задержки?# time.sleep(0.25)
и она не будет выполняться. Причина этого заключается в том, чтобы убедиться, что каждое окно правильно поднято. По моему опыту в прошлом, мне нужно было иметь задержки для работы на Windows. Я думаю, что задержка в четверть секунды не так уж и велика. На самом деле, позвольте мне добавить еще одну строку в сценарий, это может ускорить его. ОК ?Поднимите произвольное количество окон как одно
Приведенное ниже решение позволит вам выбрать любую комбинацию из двух, трех или более окон, которые будут объединены и подняты как одно с помощью сочетания клавиш.
Скрипт работает с тремя аргументами:
добавить активное окно в группу
поднять заданную группу
очистить группу, готов определить новую группу
Сценарий
Как пользоваться
Скрипт нуждается
wmctrl
иxdotool
:groupwindows.py
Тест - запустите скрипт: откройте два окна терминала, выполните команду:
в них обоих. Накройте их другими окнами (или сверните их). Откройте третье окно терминала, выполните команду:
Первые два окна будут подняты как одно.
Если все работает нормально, создайте три пользовательских сочетания клавиш: Выберите: «Системные настройки»> «Клавиатура»> «Ярлыки»> «Пользовательские сочетания клавиш». Нажмите «+» и добавьте команды ниже к трем отдельным ярлыкам:
в моей системе я использовал:
Alt+ A, запустив команду:
... чтобы добавить окно в группу.
Alt+ R, запустив команду:
... чтобы поднять группу.
Alt+ C, запустив команду:
... очистить группу
объяснение
Скрипт работает довольно просто:
add
скрипт сохраняет / добавляет идентификатор окна активного окна в скрытый файл~/.windowlist
При запуске с аргументом
raise
скрипт читает файл, поднимает окна в списке с помощью команды:clear
скрипт удаляет скрытый файл~/.windowlist
.Заметки
Больше гибкости?
Как уже упоминалось, приведенный выше скрипт позволяет в любое время добавлять окна в сгруппированные окна. Версия ниже также позволяет удалить любое из окон (в любое время) из сгруппированного списка:
Дополнительный аргумент для запуска скрипта
delete
таков:удаляет активное окно из сгруппированных окон. Чтобы запустить эту команду, в моей системе я установил Alt+ Dкак ярлык.
источник