From 9e6ecb68d3019d7a94b6ccb42a4732172d8cfe7d Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Wed, 27 May 2026 14:24:32 +0600 Subject: [PATCH] =?UTF-8?q?[2026-05-27]=20Whale:=20update=20docs=20?= =?UTF-8?q?=E2=80=94=20cursor=20detection,=20overlay=20filter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- family/how-to/htpc-magic4pc.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/family/how-to/htpc-magic4pc.md b/family/how-to/htpc-magic4pc.md index e7c18dfd..de25adbe 100644 --- a/family/how-to/htpc-magic4pc.md +++ b/family/how-to/htpc-magic4pc.md @@ -58,7 +58,9 @@ TV шлёт координаты в пространстве 0–1920 × 0–108 При открытии окна (алерт, диалог) клиент определяет его размер через `xdotool search --onlyvisible`, так как `getactivewindow` не работает в gamescope (нет `_NET_ACTIVE_WINDOW`). Если окно единственное видимое — используется **letterbox-алгоритм**: -1. Активное окно находится через `xdotool search --onlyvisible`, отсекая `steamcompmgr`, `Default IME` и окна ≤5×5 +1. Активное окно определяется двумя стратегиями: + 1а) **Под курсором** — `xdotool getmouselocation` показывает window ID под мышью + 1б) **По bounding box** — собираются все visible окна, отсекаются те что внутри другого (popup меню), из оставшихся берётся с наибольшим ID (последнее открытое) 2. Вычисляется **letterbox viewport** в пропорции 16:9 на основе ширины окна: `lb_h = win_w * 9/16` 3. Вычисляется **отступ**: `off_y = -(lb_h - win_h) / 2` (отрицательный — сдвигает viewport вверх, чтобы TV y=0 совпадал с верхом чёрной полосы) 4. TV-координаты маппятся в X11 через scale и offset: