UltraWide виджет для KDE. Разделение экрана и свои размеры
После покупки UltraWide монитора для ОС Linux с KDE мне пришлось некоторое время поискать нормальные инструменты для разделения рабочего стола. На данный момент я остановился на виджете UltrawideWindows. Пока она оказалась самой удобной, но, к сожалению, не поддерживает FullScreen в разделённой области. Установка достаточно простая: скопировать архив на комп или склонировать git репозиторий в любое место на компе и запустить в папке с виджетом команду plasmapkg2 —type=kwinscript -i .. После чего зайти в Параметры системы и настроить сочетание клавиш.
Но мне не понравились режимы, которые были заложены. Поэтому я решил попробовать изменить скрипт, добавить свои и у меня это легко получилось, т.к. виджет написан на JavaScript’е.
Параметры разделения экрана находятся в файле contents/code/main.js.
За регистрацию комбинации отвечает функция registerShortcut(), в которую передаются следующие параметры:
- Название
- Название, которое отображается в Параметрах системы
- Комбинация клавиш
- Callback функция с действиями, в нашем случае move()
move() сама функция, которая отвечает за разделение экрана:
- workspace — не вдавался в подробности, но что-то типа рабочего пространства, то есть KDE стола. Оставляем как есть
- numberXslots — количество колонок
- numberYslots — количество строк
- x — начальная позиция по X (номер колонки)
- y — начальная позиция по Y (номер строки)
- xSlotToFill — ширина, количество заполненных колоно
- ySlotToFill — высота, количество заполненных строк
Так для примера в настоящее время я использую разделение 5×1 (пять колонок 1+3+1) и мой код выглядит так:
// GRID 5x1 1+3+1
registerShortcut("MoveWindowToLeft5", "UltrawideWindows: 5 left", "", function () {
move(workspace, 5, 1, 0, 0, 1, 1)
});
registerShortcut("MoveWindowToCenter5", "UltrawideWindows: 5 center", "", function () {
move(workspace, 5, 1, 1, 0, 3, 1)
});
registerShortcut("MoveWindowToRight5", "UltrawideWindows: 5 right", "", function () {
move(workspace, 5, 1, 4, 0, 1, 1)
});
Для примера пробовал другой вариант 7×1 (2+5), но мне не понравился:
// GRID 7x1 (2+5)
registerShortcut("MoveWindowToLeft5", "UltrawideWindows: 5 left", "", function () {
move(workspace, 7, 1, 0, 0, 2, 1)
});
registerShortcut("MoveWindowToRight5", "UltrawideWindows: 5 right", "", function () {
move(workspace, 7, 1, 2, 0, 5, 1)
});
Обратите внимание, что я не указываю сочетания клавиш, потому что у меня назначены медиа клавиши, их выставляю через Параметры системы, вы же можете сразу прописать свои комбинации. Режимы которые вам не нужны — можете закомментировать, чтобы не было лишних в Параметрах системы и не засоряло комбинации клавиш.
После того, как вы прописали и сохранили файл — необходимо перезапустить виджет. Для этого зайдите через консоль в папку с виджетом и запустите команду ./scripts/update.sh. Возможно у вас будут какие-то не критические ошибки в консоли, но я не обращаю на них внимание.