LINUX.ORG.RU

Есть ли возможость открывать приложения в том теге, в котором был вызван launcher в Awesome WM?

 , ,


0

2

Сейчас если вызвать dmenu(или любой другой laucher), скажем, в первом теге, написать firefox, нажать enter, перейти во второй тег, то окно создастся во втором теге. Есть ли возможность заставить Awesome открывать его в первом?

Нет, нельзя, если "лаунчер" не является родительским окном запускаемому (а он не является).

Можно назначить конкретный тег конкретному софту, смотри awful.rules.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Можно назначить конкретный тег конкретному софту, смотри awful.rules.

Так задолбаешься настраивать для каждой программы.

devalone ★★
() автор топика
Ответ на: комментарий от devalone

Зато один раз настроил, и забыл — всё открывается на своих местах, а не прыгаешь по тегам как идиот, открывая нужные клиенты, рассовывая их по нужным тегам.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Не один раз настроил, а кучу раз, каждый раз вспоминая про новое приложение.

devalone ★★
() автор топика

Если найти способ получить PID запущенного процесса из лончера, то можно сделать примерно следующее:

desktop=$(xdotool get_desktop)
pid=$(my_launcher)
xdotool search --sync --all --pid $pid --name '' set_desktop_for_window %@ $desktop

Это использовать как скрипт-обёртку для лончера.

Тут:

xdotool get_desktop получает номер текущего десктопа (тэга) и этот номер попадает в переменную $desktop.

my_launcher это условная команда, которая должна написать PID запущенного процесса в stdout, он попадёт в переменную $pid. Способ получения PID может быть любым, главное чтобы он был передан в качестве аргумента после --pid. Посоветовать лончер не могу, т.к. использую дефолтный awful.widget.prompt (который по дефолту вызывается по Mod4+R).

--sync будет ждать пока у процесса не появится хотя бы одно окно.

--all заставит search отбирать только те окна, которые соответствуют всем условиям (AND), а не любому из перечисленных (OR). Последнее эквивалентно ключу --any, который включен по умолчанию, и который выключается с помощью --all.

--name '' требуется для того чтобы при использовании нескольких команд не выводилось сообщение Defaulting to search window name, class, and classname и xdotool воспринимал set_desktop_for_window как имя команды, а не имя окна/класса/classname, которые надо искать.

Если не указывать %@, то по умолчанию переместится только первое найденное окно (эквивалентно записи %1), которое может легко оказаться невидимым (кстати, для отбора только видимых окон есть --onlyvisible).

В общем, думаю, идея понятна. В идеале это должно работать без вызова внешних утилит, чисто на Lua. Не уверен, можно ли так.

xenith
()
Последнее исправление: xenith (всего исправлений: 2)

Вообще, я много лет (с 2015±1) пользуюсь awesome wm и раньше мне хотелось такого же поведения, когда у меня был более медленный комп и жирный/медленный софт запускался не на том теге, где я вызывал лончер. С апдейтами софта, ускорившими его, и апгрейдом компа потребность отпала, так что пробовать это переписать на Lua сейчас не стану. awful.rules покрывают то, что использую чаще всего (90% всех окон), а остальное можно переместить вручную, да и почти весь остальной софт теперь запускается достаточно быстро и перемещать его надо реже.

xenith
()
Ответ на: комментарий от xenith

спасибо, мб когда-нибудь подобный функционал добавлю в своё лаунчер)

devalone ★★
() автор топика
Ответ на: комментарий от xenith

Благодарю, в ближайшие недели попробую реализовать, на рабочем пк. Уже давно хочется реализовать то же самое, что хочет ТС.

evgeny_aa ★★☆
()
Ответ на: комментарий от devalone

Да, обязательно отпишусь, когда будет какой-то результат

evgeny_aa ★★☆
()

для awesome есть настройки tyrannical. программы распределены по тегам. В каком бы теге я не вызывал например firefox, или другие браузеры - они у меня все находятся на 2 теге, консоли всегда на первом теге, пдф просмотрщики на пятом теге ну и т.п. Сам настраиваешь какие программы где открывать.

kurlovitsch
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.