Программно переместите окно в область просмотра в compiz

Вопрос

Используя язык сценариев оболочки, Python или что-нибудь, как я могу переместить окно от одной области просмотра до другого?

В то время как я являюсь довольно разрозненным, я предпочел бы решение работать в фоновом режиме. Как в, нет activate window 1, move window 1, active window 2, move window 2, ..., в то время как я должен сидеть и ждать всего этого для случая. (Я назову это медленной проблемой активации.)

Я даже ценил бы ссылки туда, где еще я должен задать этот вопрос, как форумы людей, хорошо осведомленных о Linux и менеджерах окон.

Среда

Я использую Ретроспективный кадр Gnome с Compiz (не Единица или Метагород). Я нахожусь на Ubuntu 14.04, но надо надеяться решения работали бы над другими версиями, поскольку я намереваюсь обновить.

Что я попробовал

Только командная строка наполняет существующими программами.

wmctrl

Во-первых, wmctrl действительно не работает, по-видимому, с compiz. Вот то, с чем я добираюсь wmctrl -d:

$ wmctrl -d
0  * DG: N/A  VP: N/A  WA: N/A  N/A

wmctrl -l не абсолютно бесполезно, но это не показывает все окна. Например, я выполнил его сейчас, и это сообщило о 8 окнах Chrome, но я знаю, что у меня есть по крайней мере 21. Слабый открыто, но не находится в списке окон.

плагин compiz-dbus

Я использовал compiz-dbus плагин с put плагин и попробованное использование ./compiz-send.py put put_viewport_1_key, но это имеет несколько проблем:

  1. Это только работает с активным окном, таким образом дает "медленную активацию" упомянутая выше проблема. И это предполагает, что я мог использовать другой инструмент, чтобы найти окно заголовком и активировать его.
  2. Это - багги для максимизируемых окон, которые 95% моих окон. Для меня это будет иногда перемещать область просмотра окна, но всегда помещать его на мой средний монитор, даже если это запустилось на моем правильном мониторе. Othertimes, это переместит область просмотра, затем положит обратно его! (и все еще помещенный это на средний монитор). Очевидно, это бесполезно.

Предыстория

Я очень не хочу перезапустить свой компьютер, потому что все окна запускаются на единственной области просмотра, и мне требуются несколько минут для положения обратно всех моих окон к областям просмотра, они были ранее включены. Например, у меня будет несколько окон Chrome на области просмотра 1, несколько на области просмотра 2, и т.д. Это - большое перемещение окна, каждый раз, когда я перезапускаю свой компьютер.

Часто, я не перезапускаю свой компьютер в течение длительных периодов из-за этой боли, которая сильна для исправлений безопасности и т.д. Почему у меня есть столько окон открытым? Я - подрядчик и работаю над несколькими проектами одновременно, каждым с его собственными проблемами, требующими веб-исследования, записи кода, материала командной строки, и т.д. У меня есть 32 ГБ RAM, столько окон не является проблемой производительности.

Обычно окна достаточно легко определить заголовком, где я хотел бы, чтобы они были. Например, я всегда хочу, "чтобы Gmail - Google Chrome" был на области просмотра 1.

1
задан 25 June 2017 в 22:37

2 ответа

Также можно использовать плагин Place Windows в CompizConfig Settings Manager , чтобы программы всегда открывались в определенном окне просмотра. Плагин Place Windows находится в категории Управление окнами .

Оказавшись внутри плагина Place Windows , перейдите на вкладку Fixed Window Placement вверху. Внизу вы увидите окно с фиксированным окном просмотра . Нажмите кнопку New , чтобы добавить новую программу. Затем нажмите зеленый плюс, чтобы настроить, какие окна должны быть расположены. Используйте Тип из Класс окна . Используйте кнопку Grab , чтобы получить информацию из открытого окна того типа, который вы хотите расположить при запуске. Вам также нужно будет установить горизонтальное и вертикальное расположение области просмотра, где вы хотите разместить программу при запуске.

Эта информация взята из статьи webupd8.org , озаглавленной «Делать приложения всегда открытыми в данной рабочей области (область просмотра) с помощью Compiz» . На этой странице также есть ссылка на скринкаст, в котором рассказывается об этих шагах.

1
ответ дан 7 December 2019 в 15:33

См. этот ответ на вопрос « Сохранить Unity Desktop Session ». Ответ содержит ссылку на скрипт, ~ / session.config , который поможет вам настроить скрипт, ~ / .sessionconfig с автоматическим запуском файла рабочего стола, ~ / .config /autostart/sessionconf.desktop.

Я использовал этот сценарий в течение некоторого времени. Единственный недостаток в том, что он использует физические размеры дисплея по умолчанию. Это означает, что если вы подключите внешний адаптер дисплея к вашему ноутбуку с разными размерами, программы не будут размещены в нужном окне просмотра.

0
ответ дан 7 December 2019 в 15:33

Другие вопросы по тегам:

Похожие вопросы: