aboutsummaryrefslogtreecommitdiffstats
path: root/keybinds
AgeCommit message (Collapse)AuthorFilesLines
7 daysfix(keybinds): fill columns top to bottomDanilo M.1-2/+9
Groups flowed left to right in rows, so each row was as tall as its longest group: short groups sat above empty space and the block ran past the top and bottom of the screen. Columns filled to the screen's height pack the groups and keep everything visible. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
7 daysfeat(keybinds): live keybind reminder overlayDanilo M.4-0/+229
Modelled on window-switcher: a Scope with a 1x1 keepalive PanelWindow plus a LazyLoader'd overlay, opened via IpcHandler (SUPER+k is bound in a different repo). hyprctl binds -j is asked fresh on every opening so the list matches whatever Hyprland has loaded, with Binds.group() from task 1 turning it into the grid's {name, rows} groups. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
7 daysfix(keybinds): survive group names shadowing Object.prototypeDanilo M.2-1/+9
A description like "toString: X" made byName["toString"] resolve to the inherited Object.prototype.toString instead of undefined, so the group was never created and .rows.push threw. Object.create(null) gives byName no prototype to shadow. Also note in a comment that CAPS/MOD2/MOD3/MOD5 modmask bits are not decoded and silently drop from the combo string. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
7 daysfeat(keybinds): group hyprctl binds by descriptionDanilo M.2-0/+95
Binds.js parses hyprctl binds -j output into display groups for the upcoming keybind reminder overlay. Group name and row label come from the "Group: Label" convention in each bind's description; a bind without one still surfaces under "Undescribed" rather than vanishing, so a gap in the Hyprland config stays visible. Pure functions with no QML dependency, so test_binds.js checks them directly with node, stripping the .pragma library line the QML runtime requires but node does not understand. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>