Read/write schema-less KDE settings (e.g. kxkbrc's Options= line)
directly via kreadconfig6/kwriteconfig6, with default defined as the
key being absent. diff only checks freeform entries already declared
in the manifest, never via undeclared broad scan.
Brings the machine's caps-lock/Escape swap under tracking as the
real-world validation case.
Implements the broad, read-only schema-backed scan for dot kde diff:
walks every (rcfile, group, key) reachable through the kcfg mapping
table, compares live values against their schema-declared defaults,
and reports each mismatch tagged declared or undeclared. Never writes.
Also fixes dot kde completions, which only ever offered save/help —
apply (added in a prior task) and diff were both missing.
Pushes every manifest entry's declared value onto the live system via
kwriteconfig6, idempotently. Non-schema (shortcuts/freeform) entries are
rejected as not-yet-supported, deferred to later tasks.
Removed .config/dot/.tmp from tracking: it was an empty 0-byte file
that had been committed by accident on another machine and was never
meant to be part of the repo.
Recorded fish_variables as it stands after first boot on this machine:
fish stamped __fish_initialized with its own version marker
(bootstrap bookkeeping, not user config) alongside the already-tracked
pure prompt theme, done plugin settings, and fisher plugin
registration.
Introduces the dot kde subcommand family (fish dispatcher plus a Python
helper under commands/kde/), a flat identifier=value manifest, and
dot kde save in both its explicit-identifier and no-argument refresh
modes. Settings resolve to KDE's KConfigXT schema-backed mechanism via a
(rcfile -> [kcfg files]) mapping table auto-derived by scanning the
system schema directory (overridable via DOT_KDE_KCFG_DIR), plus a
hand-maintained exceptions list for schemas that only declare their
target rc file at runtime. Also wires tab-completion for dot kde save
identifiers, sourced live from that same mapping table.
The skill wasn't firing reliably, so instead of polluting the global
config with a skill that only helped *sometimes*, convert it into
project-specific instructions in .config/dot
Future work on this project (dotfiles) should always start from this
directory, even if changes are made outside. This helps Claude keep
the scope narrow.
dotcli is my utility script for everything dotfiles.
A bootstrap command is included in the README.
A test suite and the necessary scaffolding for extending
dotcli is also included.