Перейдя с 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 позволяет также управлять состоянием окна (свернуто, развернуто во всю, поверх других окон), прозрачностью окна, фокусом и многим другим.