Skip to content

Add a window list and gather troubleshooting tools in the menu - #27

Merged
BlakeGardner merged 1 commit into
mainfrom
window-list
Nov 1, 2026
Merged

BlakeGardner merged 1 commit into
mainfrom
window-list

Conversation

@BlakeGardner

Copy link
Copy Markdown
Owner

When an application doesn't show up in the application picker, or a remap for it doesn't apply, there was no way to see what the desktop actually reports. This adds a window list that shows xremap's raw answer, and gathers the troubleshooting tools out of everyday sight in the ⋯ menu.

Window list

  • Opens in its own window, like the remapping log, and lists every window exactly as xremap --list-windows prints it: the application id that application-specific remaps match on, and the title.
  • Asks the same xremap binary the service uses (its path is shown) every 5 seconds while the window is open, and stops when it closes. --list-windows exits before xremap touches any input device.
  • Nothing is merged or left out: Keyloom's own windows, every window of an application, and windows without an id (shown as "none") all appear.
  • Ids and titles are selectable (drag, double- or triple-click, Ctrl+C, and right-click Copy / Select All through libcosmic's selectable_text). Copy puts every row on the clipboard as tab-separated id and title.
  • When xremap is missing or can't ask the desktop, the window shows xremap's own explanation and keeps trying.

Troubleshooting menu

  • The ⋯ menu now ends with a muted, collapsed Troubleshooting ▸ entry holding the remapping log, the window list, and "Reset all mappings". It starts collapsed every time the menu opens.
  • The "Show log" button on failure toasts is unchanged. Without systemd there's no log entry, and the Tester page leaves out the reset entry.

Internals

  • apps::parse_window_list now keeps every row. The picker's de-duplication and filtering moved into apps::applications, so the picker behaves as before.
  • The log window's frame and window settings moved to shared helpers (ui::side_window, ui::side_window_settings) so both side windows look identical.

Docs

docs/Current_Features.md gains a "Window list" section and says where the log and reset now live.

Validation

  • cargo fmt --all -- --check, cargo clippy --all-targets --all-features --locked -- -D warnings: clean
  • cargo test --verbose --locked: 335 passed, 21 ignored
  • New tests cover parsing every row, the copied text, opening and closing the window list, its rows and error banner, and the Troubleshooting entry staying collapsed until asked for.
  • Checked in headless renders at the default and smallest window sizes.

Not verified on a live desktop: the 5-second refresh against a real compositor, and the right-click menu, which libcosmic shows as a popup on Wayland and an overlay on X11. Both are worth a quick look on COSMIC and on one other desktop.

🤖 Generated with Claude Code

When an application doesn't show up in the application picker, or a
remap for it doesn't apply, there was no way to see what the desktop
actually reports. "Window list" opens a window of its own showing every
window exactly as `xremap --list-windows` prints it, refreshed every 5
seconds while open: the application id remapping matches on and the
title, with nothing merged or left out. Ids and titles can be selected
and copied (right-click offers Copy), and Copy takes every row.

To keep the menu beginner friendly, the window list, the remapping log,
and "Reset all mappings" now sit under a collapsed "Troubleshooting"
entry at the foot of the ⋯ menu, closed again each time the menu opens.
The "Show log" button on failure toasts is unchanged.

The log window's frame and window settings move to shared helpers in
ui/mod.rs so both side windows look the same.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@BlakeGardner
BlakeGardner merged commit acf002a into main Nov 1, 2026
6 checks passed
@BlakeGardner BlakeGardner mentioned this pull request Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant