Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

KWin-правила окон: как принудительно задать поведение окна

Правила окон KWin (KWin Rules) позволяют переопределить поведение любого окна в KDE Plasma: скрыть из таскбара, зафиксировать размер и позицию, закрепить на нужном рабочем столе. Свою проблему я решил правилом для mpv, окно которого отказывалось прятаться из панели задач.

Что такое правила окон KWin и зачем они нужны

KWin — оконный менеджер в составе KDE Plasma. У него есть механизм «правил окон» (window rules). Каждое правило задаёт два параметра: какое окно ловить (условие матчинга) и что с ним делать (принудительные действия).

Типичные задачи, которые решают правила:

  • Приложение запоминает последний размер, а хочется фиксированный.
  • Плеер появляется на рабочем столе, а нужен на втором мониторе.
  • Утилита засоряет панель задач, хотя работает в фоне.
  • Переключатель окон (Alt+Tab) показывает лишнее.

В XFCE такие настройки делаются через «Менеджер окон» с горячими клавишами (об этом в статье про XFCE), в i3wm — через конфиг. В KDE всё через графический интерфейс или текстовый файл.

Как открыть настройку правил окон

Два способа попасть в диалог.

Через Системные настройки:

  1. Откройте «Системные настройки» (System Settings).
  2. Перейдите в раздел «Окна» (Windows).
  3. Выберите «Правила окон» (Window Rules).

Через файл конфигурации:

Правила хранятся в ~/.config/kwinrulesrc в формате INI. После изменений перезайдите в сессию.

Параметры описаны на странице KWin Rules в ArchWiki.

Проблема: mpv меняет заголовок окна

Вот с чем столкнулся я. Нужно было скрыть mpv из таскбара: он работает в фоновом режиме (воспроизведение аудио по HTTP-плейлисту). Создал правило с матчингом по имени приложения mpv. Не заработало.

Причина: mpv меняет заголовок окна на имя воспроизводимого файла или потока. Каждый запуск — новый заголовок. KWin сравнивает по заголовку (WM_CLASS или window title), и совпадение пропадает.

Это общая проблема не только для mpv: любое приложение с динамическим title bar может «вылезать» из-под правила.

Как найти правильный идентификатор окна

Способ 1: класс окна через xprop

Запустите xprop и щёлкните по нужному окну:

xprop | grep WM_CLASS

Вывод покажет класс окна (второе значение после запятой):

WM_CLASS(STRING) = "mpv", "mpv"

Значение mpv стабильно, даже когда заголовок меняется. Подставляйте его в поле «Имя приложения» правила.

Способ 2: UUID группы окон

KDE отслеживает каждое окно через внутренний UUID. Узнать его:

  1. Кликните правой кнопкой по окну, выберите «Свойства окна» (Window Properties).
  2. Откройте вкладку «Общее» (General).
  3. Строка UUID — уникальный идентификатор окна.

UUID пригодится, когда нужно поймать конкретное окно, а не все экземпляры приложения.

Что выбрать?

Класс окна ловит все окна приложения, UUID — одно конкретное, заголовок — только при фиксированном title. Для mpv надёжнее всего класс окна: он стабилен, и mpv при каждом запуске создаёт окно с WM_CLASS = mpv.

Пошаговая настройка правила

  1. Откройте «Системные настройки» → «Окна» → «Правила окон».
  2. Нажмите «Добавить правило…».
  3. В поле «Имя приложения» введите mpv (или класс из xprop).
  4. В раскрывающемся списке рядом выберите режим совпадения, например точное совпадение.
  5. Перейдите к разделу «Действия» (Actions) и включите нужные параметры.
  6. Нажмите «Применить» (Apply) и закройте диалог.
  7. Закройте и заново откройте приложение. Проверьте, сработало ли правило.

Важно: KWin применяет правила только при создании окна. Открытое окно правило не подхватит.

Доступные действия

Основные принудительные параметры:

  • Скрыть из таскбара (Hide from taskbar) — окно не появится на панели задач.
  • Не показывать в переключателе (Keep above/below) — окно не участвует в Alt+Tab.
  • Принудительный размер (Force size) — фиксированные ширина и высота.
  • Принудительная позиция (Force position) — фиксированные координаты x, y.
  • На рабочем столе (On all desktops) — окно видно на всех рабочих столах.

Для mpv хватило двух действий: «Скрыть из таскбара» и «Не показывать в переключателе».

Если правило не работает

Проверьте по порядку:

  1. Заголовок или класс? Убедитесь, что правило матчится по правильному полю. Откройте «Свойства окна» и сверьте.
  2. Приложение перезапущено? Правило действует только на новые окна. Закройте и откройте заново.
  3. Конфликт правил? Если правил несколько, KWin применяет последнее в списке. Проверьте порядок.
  4. kwinrulesrc не синхронизируется? Если редактировали файл руками, перезайдите в сессию.

Для сравнения: в i3wm всё задаётся строками в конфиге, в Hyprland — через hyprland.conf с похожей логикой условий. Суть та же: сопоставить окно и задать параметры.

Частые вопросы

Как узнать, какое правило KWin действует на окно?

Откройте «Свойства окна» (правая кнопка мыши по заголовку → «Другое» → «Показать свойства окна»). На вкладке «Правила» KWin покажет, какие правила совпали.

Можно ли настроить правила окон из терминала?

Да. Правила хранятся в ~/.config/kwinrulesrc в формате INI. После изменений перезайдите в сессию.

Как настроить правила для всех приложений одного класса?

Укажите класс окна (значение WM_CLASS из xprop) в поле «Имя приложения». Все окна с таким классом попадут под правило.

Правило работает, но только на одном мониторе?

В KWin правила не зависят от монитора. Если окно «прилипает» к одному экрану, проверьте настройку «Позиция» в правиле.

Стоит ли использовать kwinrules вместо настроек приложения?

Да, если приложение не даёт нужных опций (mpv, например, не умеет скрываться из таскбара нативно). Правила работают на уровне оконного менеджера и не зависят от возможностей приложения.

Заключение

KWin-правила окон решают задачи, недоступные настройкам приложения. Главное запомнить: надёжнее всего матчится не по заголовку окна, а по классу (из xprop) или UUID группы окон. Заголовки меняются, а стабильные идентификаторы остаются.

Если приложение ведёт себя не так, как нужно, не спешите искать параметр запуска. Откройте «Системные настройки» → «Окна» → «Правила окон», создайте правило с правильным матчингом и перезапустите приложение.

Полезные ресурсы



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max