История изменений
Исправление xenith, (текущая версия) :
Если найти способ получить 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, :
Если найти способ получить 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, :
Если найти способ получить 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. Не уверен, можно ли так.