LINUX.ORG.RU

История изменений

Исправление 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. Не уверен, можно ли так.