# Reported issues for kwin-mcp Desktop Extension

Pod holds 6 of 6 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to [kwin-mcp Desktop Extension](/mcp/kwin-mcp-desktop-extension).

## Most discussed

### Geometry re-fetch in one process returns []: fixed bus/script names collide

## Problem

Verifier C found a live, reproducible contract break on `head` `9662d56`: in a long-lived MCP process, the second and subsequent geometry fetches return `[]`, silently degrading all AT-SPI coordinate translation to the `(0,0)` no-op (clicks land on empty desktop). Reproduced live: 1st `fetch_window_geometries()` → 6 windows; 2nd/3rd/4th → 0 windows, no exception, no log (8s timeout with no payload). Control probes with unique bus/script names → 3/3 × 6 windows;…

[Read the thread](https://github.com/VibeProgramm/kwin-mcp/issues/23) · 2026-09-07 · closed · 1 comment

### Small contracts: single-line kscreen Geometry, negative screen size, stale CHANGELOG symbol

## Problem

Two small contract bugs confirmed live on `head` `c54ee0c`:

- **P5 (kscreen single-line Geometry):** `_parse_kscreen_doctor()` (`src/kwin_mcp/core.py:65-98`) only matches `Geometry:` when it starts its own stripped line (`elif line.startswith("Geometry:")`). Probe: `"Output: 1 eDP-1 enabled connected priority 1 Geometry: 0,0 1920x1080"` (flags + geometry compacted on one line, a variant the code comments already acknowledge for flags) → `None`; the two-line form → `(1920, 1080)`. A…

[Read the thread](https://github.com/VibeProgramm/kwin-mcp/issues/21) · 2026-09-07 · closed · 1 comment

### Held-state intent race: set mutation after _flush misses same-call PAUSED→RESUMED replay

## Problem

Independent review of PR #15 at `head` `c54ee0c` found a held-state race, confirmed live on the current code with the repo's `FakeLibei` harness (server pushes `PAUSED`+`RESUMED` during the post-send `_flush` dispatch, as a real KWin does):

- **Hold path:** `hold_keys()` sends the DOWN press, then `_flush()` drains `PAUSED` (server neutralizes the just-sent press) + `RESUMED` (replay fires while `_held_keys` is still empty — the `.update()` runs only after `_flush` returns), then…

[Read the thread](https://github.com/VibeProgramm/kwin-mcp/issues/19) · 2026-09-07 · closed · 1 comment

### Fractional KWin geometries silently dropped → AT-SPI translation no-op on scaled desktops

## Problem

Live verification of PR #15 on a real KDE Plasma desktop (1746×982, fractional scaling) found that AT-SPI coordinate translation silently does nothing for normal windows, so every coordinate click lands on empty desktop while keyboard input keeps working.

Evidence (live session, `session_connect` → KWin EIS OK):
- KWin scripting returns **fractional** geometries for normal windows: `KCalc client=601.8031365528899,188.1437101908282,440.9090909090911,526.3636363636363` (journal of a…

[Read the thread](https://github.com/VibeProgramm/kwin-mcp/issues/17) · 2026-09-07 · closed · 1 comment

### Review round 3 for PR #15: remove-path hardening (R1–R3)

## Problem

Follow-up review of PR #15 at `head` `94874fc` (after #16 rounds 1–2 + #17) confirmed no P1 blockers but left three P2 remarks. All three reproduce on the current code (probes executed against `src/kwin_mcp/input.py@94874fc` with the repo's `FakeLibei` harness):

- **R1.** `_remove_device()` (`src/kwin_mcp/input.py:947-951`) calls `ei_device_unref()` unguarded, unlike `_teardown_connection()` / `_handle_seat_removed()` / `close()` which suppress per-step failures. Probe: raising…

[Read the thread](https://github.com/VibeProgramm/kwin-mcp/issues/18) · 2026-09-07 · closed · 0 comments

### Портировать из upstream #42: контракт ошибок EIS, резолвер at-spi-bus-launcher, ScreenShot2-first для screenshot

## Проблема

Апстрим-PR https://github.com/isac322/kwin-mcp/pull/42 (не вмержен) содержит проверенные фиксы, отсутствующие в форке. Апстрим мержит редко, поэтому решение форка — точечный порт нужных фиксов, не merge.

Три дефекта, воспроизводимых в текущем коде форка:

1. **Контракт ошибок EIS — `src/kwin_mcp/input.py`, `EISClient._setup` (~строки 341–353).** Цепочка вызовов `dbus get_object → dbus.Interface → connectToEIS` не защищена. `dbus.DBusException` не является `RuntimeError`, а…

[Read the thread](https://github.com/VibeProgramm/kwin-mcp/issues/8) · 2026-09-06 · closed · 0 comments

## Most recent

The remaining reports are on [the project's issue tracker](https://github.com/VibeProgramm/kwin-mcp/issues).
