Петр Семилетов

devilspie2 - принудительная установка положения и размера окна программы


Перейдя с KDE/Plasma на другой рабочий стол, Mate, мне недостает возможности сохранять положение да размер окна и восстанавливать оные, ежели такая возможность не поддерживается самой программой. Примеры непокорных программ - Firefox, который не запоминает положение своего левого верхнего угла, а также Kdenlive.

Пошарив по сети я узнал, что есть разные утилиты для принудительного задания параметров окон (основного и подчиненных) после запуска определенной программы. Среди утилит наиболее часто упоминают devilspie и devilspie2 (https://github.com/gusnan/devilspie2). С первым у меня не срослось, посему расскажу о втором.

После установки devilspie2, надо в каталог

$HOME/.config/devilspie2 положить Lua-скрипты, задающие правила размещения окон запускаемых программ. Можно всё в один файл, но мне кажется удобнее по одному скриптовому файлу на каждую программу, которой мы хотим назначить особые размер и положение.

Пример моего скрипта для Kdenlive, файл я назвал nle.lua:

if (get_window_name() == "Kdenlive") then
   set_window_position (14,432);
end

Здесь мы сравниваем результат выполнения функции get_window_name() со строкой "Kdenlive", и в случае совпадения устанавливаем нужные координаты текущего (для скрипта) окна.

Чтобы эти правила работали, надо запустить devilspie2 - например, прописать где-то его запуск в режиме демона:


devilspie2 &


Можно также запустить его в отладочном режиме:


devilspie2 -d


В таком случае если написать в скрипте строку:


debug_print(get_window_name());


то в окне терминала, где запущен devilspie2, будут при запуске каждой программы выводиться названия открываемых окон. Используя Lua-функции, предоставляемые devilspie2, можно получать также другие параметры окон, например положение и размеры.

Иной способ узнать то же - запуск программы xwininfo, после чего она предложит вам щелкнуть по окну и выдаст в консоль сведения о нем. Однако отладочный режим devilspie2 более удобен, ибо выводит именно те значения, которые мы можем использовать в скриптах, а от xwininfo польза будет разве что в координатах.

devilspie2 позволяет также управлять состоянием окна (свернуто, развернуто во всю, поверх других окон), прозрачностью окна, фокусом и многим другим.