Есть ли способ указать, в какое рабочее пространство и / или окно для запуска программы?

Я задал связанный, но более конкретный вопрос здесь . Я хочу знать, есть ли способ указать, где вы хотите запустить программу. Я в основном хочу написать скрипт оболочки, который запускается каждый раз, когда я вхожу в систему, например,

google-chrome www.gmail.com    -workspace=1 -monitor=1
google-chrome www.facebook.com -workspace=1 -monitor=2
google-chrome www.youtube.com  -workspace=1 -monitor=3

gedit a.txt b.txt c.txt        -workspace=2 -monitor=1
gedit d.txt e.txt f.txt        -workspace=2 -monitor=2
gedit g.txt h.txt i.txt        -workspace=2 -monitor=3

mplayer Terminator1.mkv        -workspace=3 -monitor=1
mplayer Terminator2.mkv        -workspace=3 -monitor=2
mplayer Terminator3.mkv        -workspace=3 -monitor=3

есть программа под названием wmctrl , но она терпит неудачу во многих отношениях, поэтому я не даже не знаю с чего начать. В принципе это просто, укажите окно и переместите его. Но указание окон не так просто, два браузера называются одинаково "Google Chrome". Можно использовать их уникальные идентификаторы окон, но получение этой информации не является тривиальным (AFAIK, это не возвращается после выполнения). Затем есть опция :ACTIVE:, которая является самой последней запущенной программой, но нет никакой гарантии, что окно запускается, когда управление возвращается в командную строку. Что еще хуже, нужно указать глобальные координаты, в отличие от необязательных координат в рабочем пространстве / мониторе.


Вот подход, который я сейчас использую. Я загрузил некоторые скрипты в GitHub (см. здесь или здесь ), которые используют wmctrl для перемещения окон.

2
задан 13 April 2017 в 15:25

3 ответа

Вы можете указать, в какое рабочее пространство программа будет запускаться с помощью графического интерфейса, установив CompizConfig Settings Manager из Центра программного обеспечения.

Сначала откройте экземпляр программы, которую вы хотите разместить.

Запустите CCSM и перейдите в «Управление окнами», а в активном «Поместите Windows», щелкните по нему и выберите «Фиксированное размещение окон».

В разделе «Windows с фиксированным окном просмотра» нажмите «Создать». В появившемся диалоговом окне нажмите кнопку «+». Затем в следующем диалоговом окне нажмите кнопку «Захватить», а затем нажмите запущенную программу и «Добавить». Затем установите значения для окон просмотра: X = 1, Y = 1 слева вверху, X = 1, Y = 2 слева внизу, X = 2, Y = 1 вверху справа, X = 2, Y = 2 внизу право.

Если вы больше ничего не сделаете, это установит его для класса окна, но есть и другие опции, такие как ID, Тип и т. Д., Но ID - единственный, который вы не можете получить.

0
ответ дан 13 April 2017 в 15:25

Вы можете определить, какой дисплей запускать программу, с помощью следующего:

$ DISPLAY=":0.1" program_name

Некоторые программы позволяют вам устанавливать отображение по умолчанию в файле конфигурации. mplayer - одна из этих программ. Добавьте следующее в ~ / .mplayer / config

display = ": 0.1"

Ваше первое отображение - 0.0. Ваш второй дисплей 0,1. Ваш третий дисплей 0,2.

0
ответ дан 13 April 2017 в 15:25

Я реализовал маленький сценарий Python, который запускает и помещает окна в рабочие области. Это полагается на wmctrl. Мое решение проблемы состоит в том, чтобы настроить функцию, которая ищет окно ID. Это может быть основано на PID или основано на заголовке. То, что я также делаю, - то, что я записываю в настоящее время открываемые окна и только проверяю на новые. Но я всегда комбинирую его с поиском заголовка/pid. Кроме того, при использовании заголовка я сразу изменяю его так, это не сталкивается со следующим окном того же приложения.

То, что я нахожу полезными, должно записать маленький сценарий для приложений, которые нуждаются в более сложной обработке.

Я планирую в конечном счете добавить другую поддержку дисплеев.

Можно проверить его на https://github.com/xblahoud/Launch-on-workspace

0
ответ дан 2 December 2019 в 02:35

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

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