Skip to content

Add KDE Action Ring core overlay - #178

Open
Dexarim wants to merge 1 commit into
mmaher88:masterfrom
Dexarim:feature/action-ring-core-kde
Open

Dexarim wants to merge 1 commit into
mmaher88:masterfrom
Dexarim:feature/action-ring-core-kde

Conversation

@Dexarim

@Dexarim Dexarim commented Nov 9, 2026

Copy link
Copy Markdown

Summary

This is the second, focused slice of the Action Ring work. It adds the core binding and a minimal text-only overlay while keeping the editor, icons, app catalog, folders, adjustments, and presets out of this PR.

  • add the Action Ring binding and runtime controller
  • route activation through the originating PhysicalDevice*, preserving the per-device design from fix: route device actions to the right mouse; per-mouse profile tabs #174
  • key dispatcher state by the originating device serial and control
  • put cursor lookup and overlay placement behind IDesktopIntegration
  • implement the supported path for KDE/KWin with LayerShellQt
  • expose a capability flag and hide the ring on unsupported desktop integrations
  • store ring configuration as INI keys and preserve valid entries when one entry fails validation
  • add required LayerShellQt build dependencies and gio runtime dependencies to Arch, Fedora, and Debian packaging
  • require LayerShellQt in official package builds so packages cannot silently fall back

Desktop support

The overlay is enabled only when the active desktop integration reports Action Ring support. This PR implements and tests the KDE path. GNOME and Hyprland remain disabled until they have desktop-specific cursor-position sources.

Icons

This slice intentionally uses text labels only and contains no Action Ring SVG assets, so there is no new icon source or license to declare here. Icons will be handled separately in the editor/icons slice.

Validation

  • pre-push hook: passed
  • CTest: 835/835 passed
  • native test binary in one process: 825/825 passed
  • QML tests: 72/72 passed
  • QML lint: passed with existing project warnings only
  • package dependency generation check: passed
  • optional and required LayerShellQt configuration paths verified

The reworked KDE/KWin/LayerShell path has unit and headless coverage. It has not yet been exercised in a live desktop session after this split.

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