Hacker News Digest

Тег: #xdg-activation

Постов: 1

Window Activation (blog.broulik.de)

Как приложение получает фокус в Wayland
В X11 окно могло «захватить» внимание само; в Wayland это невозможно. Приложение может лишь получить фокус, если композитор одобрит запрос. Для этого используется протокол XDG Activation.

  1. Приложение-источник (например, мессенджер) запрашивает у композитора токен активации.
  2. Токен передаётся целевому приложению через переменную окружения XDG_ACTIVATION_TOKEN или поле activation-token в DBus.
  3. Получив токен, приложение просит композитор активировать своё окно.
  4. Композитор проверяет подлинность: наличие токена, серийный номер события, ID приложения и т.д. При сомнении запрос отклоняется.

Готовые решения в KDE/Qt

  • QWindow::requestActivate() сама использует токен из окружения или запрашивает новый.
  • OpenUrlJob, ApplicationLauncherJob, KDBusService уже умеют работать с токенами.
    Благодаря этому большинство KDE-приложений работают без изменений.

Почему X11 не идеален
У KWin-X11 была «защита от кражи фокуса», но она опиралась на эвристики и могла быть обойдена.

Тестируем правильность
В свежем KWin включите «Extreme»-режим предотвращения кражи фокуса: окно поднимется только при валидном токене. За последние дни исправлены:

  • Dolphin терял токен при новом запуске;
  • KRunner, Kickoff и прочие плазмоиды не запрашивали токен;
  • LayerShell-Qt теперь читает переменную и запрашивает активацию при показе;
  • привилегированные клиенты (Plasma, KGlobalAccel) могут получать токены;
  • нажатия модификаторов больше не считаются «пользовательским взаимодействием».

Спецификация DBusRunner получила метод SetActivationToken, который теперь используют Baloo и KClock для корректного открытия файлов в уже запущенных окнах.

by LorenDB • 04 августа 2025 г. в 12:03 • 213 points

ОригиналHN

#wayland#xdg-activation#qt#kde#dbus#x11

Комментарии (124)

  • Пользователи рады, что Wayland запрещает приложениям «воровать» фокус, в отличие от X11/macOS/Windows, где авто-обновления и всплывающие окна прерывают работу.
  • Некоторые жалуются: из-за новых правил пароли и другие важные диалоги прячутся под окнами, пока не всё ПО перейдёт на XDG Activation.
  • Дискуссия о том, кто должен решать передачу фокуса: само приложение, оконный менеджер или пользователь.
  • Название «Window Activation» ввело в заблуждение: многие ждали статью о лицензировании Windows.