Забудьте о навязчивых окнах: KDE Plasma научится "держать оборону" в Wayland
- Категория: Linux
- Дата: 4 августа 2025 г. в 14:30
- Просмотров: 47
Одна из интересных особенностей Wayland – это то, как он управляет фокусом окон. В отличие от X11, где окна могли "перехватывать" фокус, что раздражало и даже создавало угрозу безопасности, Wayland использует специальный механизм, чтобы этого не допустить. Этот механизм называется "XDG Activation".
Как это работает? Приложение запрашивает у Wayland уникальный "токен" (своего рода цифровой пропуск). Wayland выдает этот токен только в ответ на действия пользователя. Затем, чтобы получить фокус, приложение предъявляет этот токен. Если токен действителен, и запрос уместен, фокус предоставляется. В противном случае, окно помечается как "требующее внимания", и вы видите мигающий значок на панели задач.
Мигающий значок на панели задач показывает, какое приложение "просится" в фокус. Изображение: Kai-Uwe Broulik
Кай-Уве Броулик, разработчик KDE, сообщил, что планируется "включить перехват фокуса KWin в Wayland на низком уровне". Это значит, что KWin (оконный менеджер для KDE Plasma) будет более эффективно обеспечивать соблюдение правил управления фокусом.
Вспомним прошлое: проблемы X11
В X11 новые окна или диалоговые окна могли захватывать фокус, только если их приложение было последним активным. Проверка основывалась на временной метке _NET_WM_USER_TIME
, что было не очень надежно. Например, иногда это мешало полноэкранному Adobe Flash Player отображаться поверх видео на YouTube. Хуже того, приложение могло просто вызвать команду XSetInputFocus
в окне другого приложения, и фокус "мерцал", даже если KWin пытался это отменить.
Wayland: работа над ошибками
В Wayland система XDG Activation работает гораздо лучше, но некоторые приложения все равно умудряются нарушать протокол из-за ошибок. В таких случаях KWin, как правило, просто фокусировал любое новое открытое окно. Но теперь все изменится!
"Extreme": новый режим против "угонщиков" фокуса
В настройках управления окнами появится новый параметр "Extreme" в разделе "Предотвращение перехвата фокуса". Если он включен, KWin будет активировать окно, только если оно запросит активацию с действительным токеном.
Изображение: Kai-Uwe Broulik
Что уже исправлено?
Благодаря этому строгому режиму, разработчики Xaver Hugl и Kai-Uwe Broulik уже решили ряд проблем:
- Dolphin (файловый менеджер KDE) больше не теряет свой токен активации при запуске нового экземпляра.
- KRunner, Kickoff (инструменты запуска приложений в KDE) и другие всплывающие окна Plasmoid теперь правильно запрашивают активацию.
- LayerShell-Qt теперь запрашивает активацию при показе и правильно считывает
XDG_ACTIVATION_TOKEN
из окружения. - Привилегированные клиенты (такие как Plasma) теперь могут правильно запрашивать токены.
- Нажатия клавиш-модификаторов (Ctrl, Shift, Alt) теперь игнорируются, поскольку они часто используются в глобальных сочетаниях клавиш.
Работа ведется и на уровне "движка": спецификация DBusRunner теперь имеет метод SetActivationToken
, который вызывается непосредственно перед запуском действия. Baloo (средство поиска на рабочем столе) использует это, чтобы открывать файлы в существующем окне приложения.
Подробнее об этом можно прочитать в блоге Кая.
Мнение редакции: Это важный шаг вперед для KDE Plasma в Wayland. Улучшенное управление фокусом окон сделает работу более удобной и безопасной, предотвращая несанкционированный перехват фокуса приложениями. Пользователи обязательно оценят более плавную и предсказуемую работу.
- Комментарии