| Age | Commit message (Collapse) | Author | Files | Lines |
|
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>
|
|
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>
|
|
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>
|
|
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>
|