2.3 KiB
spec, blocked-by
| spec | blocked-by | ||
|---|---|---|---|
| dot-kde |
|
What to build
Add the shortcuts mechanism as a dispatch branch across save, apply,
and diff: identifiers rooted at kglobalshortcutsrc are resolved not by
editing the rc file directly but through KDE's kglobalaccel D-Bus
service — shortcut(actionId) for the current value, defaultShortcut (actionId) for the default, and setShortcut(actionId, keys, flags)
with flags = NoAutoloading for writes (so a declared value always wins
over any previously saved shortcut). actionId is the 4-element
[componentUnique, actionUnique, componentFriendly, actionFriendly]
tuple; only the two Unique fields are stored in the manifest, and the
two friendly-name fields are resolved dynamically at call time by looking
up the component's shortcut list.
Per the spec's testing decisions, this mechanism is deliberately excluded from the automated test suite (it depends on a live, already-running session service that isn't practically substitutable without disproportionate mock infrastructure) — verify it manually against the real session instead.
As the real-world validation, apply the planned screenshot/session-lock
keybind changes (Spectacle bindings, moving Lock Session off Meta+L to
Meta+X) through dot kde save/dot kde apply, and update the
corresponding rows in keybindings.md in the same change, per the
project's cross-cutting keybindings convention.
Acceptance criteria
- An identifier whose rc file is
kglobalshortcutsrcdispatches to thekglobalaccelD-Bus mechanism rather than the schema-backed or freeform paths dot kde save <identifier>anddot kde save(refresh) read a shortcut's current value viashortcut(actionId), resolving the friendly-name fields dynamicallydot kde applywrites a declared shortcut viasetShortcut(actionId, keys, NoAutoloading), verified manually to take effect immediately in the running sessiondot kde diffreports a declared shortcut mismatch by comparing againstdefaultShortcut(actionId), verified manually- The Spectacle and Lock-Session (
Meta+X) keybind changes are applied throughdot kde save/applyand tracked in the manifest keybindings.mdis updated to reflect the new bindings in the same change