Pressing Enter in the name field fires both the text field's accepted
signal and the dialog's own Return handler, so submitAndClose() runs
twice. The first call renames and hides the window, which clears the
field; the second call then renames to an empty string and unsets the
workspace name. The OK button only fires once, so it was unaffected.
Ignore submits once the window is hidden.
Claude-Session: https://claude.ai/code/session_01791wgvD8EqJaAeURYXYbT5
Signed-off-by: Thomas Kroll <[email protected]>
Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
* matugen: support multiple injected palettes with settings ui
Run user-configured external commands on each theme build and merge their
JSON output into matugen's import data under a namespace, so templates can
reference e.g. {{mypalette.color0}} alongside dank16. Multiple palettes are
supported, each under its own namespace. Command output may be nested JSON
(pywal/wallust shape). A settings page manages the list; a legacy
single-object config file is still read.
* settings: map PaletteInjectTab in search index
* matugen: bound palette-inject command with timeout and WaitDelay
* fix palette column spacing (review suggested
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
* remove wallpaper kind guard (review suggestion)
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
* fixup! remove wallpaper kind guard (review suggestion)
---------
Co-authored-by: bbedward <[email protected]>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
* feat(keybinds): redesign cheatsheet with category navigation, M3 styling, and click-to-execute
- Add category sidebar with Material Symbols icons and badge counts
- Move search field to top of sidebar with Ctrl+F shortcut
- Implement 2-column masonry layout for keybind items
- Deduplicate duplicate actions and stack multi-key combos vertically
- Collapse consecutive workspace keybindings (1-9) into range entries
- Add media & hardware icons for volume, mic, brightness, and PrtSc keycaps
- Preserve Niri window filter properties and distinguish same-app Alt-Tab binds
- Enable click-to-execute for keybind actions across supported compositors
* fix(keybinds): preserve niri action properties and disable execution on range rows
* fix(keybinds): convert niri action properties to CLI flags and disable IPC execution for window switcher binds
* fix(keybinds): pass skip-confirmation as boolean switch in niri executeAction
* fix(keybinds): handle niri spawn-sh actions in executeAction
- A new minimal and fun island instance (dot) that gets out of your way to be tossed anywhere on your screen
- Dankisland freedom is here too! It can now also be used in anywhere mode and used horizontally or vertically as you see fit!
dnf lists the packages an upgrade obsoletes indented beneath it, under a
separate heading. Those rows are removals carrying their installed
version, so they were parsed as upgrades from a version to itself and
counted as pending. Skip indented rows. The heading is translated, so
matching it would only work in English.
* mux: add herdr backend
* mux: remove herdr service tests
* mux: include herdr in settings subtitle
* mux: add translator context to the multiplexers subtitle
* mux: drive the service from a backend table
Each backend (tmux, zellij, herdr) is one entry in MuxBackends.js with
its commands and parser, so the service no longer branches on muxType
in eight places and the settings dropdown lists the table keys. One
availability check runs for the selected backend and re-runs when the
backend changes. The herdr parser reads the real {sessions:[...]}
shape only.
dnf prints one row per (package, repo), so a package offered at the same
version by two enabled repos is listed twice and inflates the pending
count. Key the parse on (name.arch, version) and keep the first row.
* feat(bar): show edit window rule in focused app popout when rule exists
Check existing DMS-managed window rules when the focused window popout
opens. If a matching rule exists for the focused window, show
'Edit window rule' and open the rule in edit mode via showEdit().
Otherwise, keep showing 'Add window rule' for new rule creation.
* fix(bar): address PR review feedback for focused window rules
- Clear matchingRule up front in checkMatchingRule() to prevent showing previous window's rule while async query is in flight
- Reuse existing catalog term 'Edit Window Rule' to leverage existing translations
* i18n: pick the DankCommon translation for the chosen locale
updateLocale() switches the shell translation, but the DankCommon one was
picked once at startup from the system locale and never changed. With DMS set
to English on a German system, plugin strings that fall back to I18n.tr()
(Suspend, Reboot, ...) stayed German. _pickCommonTranslation() now uses the
resolved locale and runs again from useLocale(); for English, where no common
file exists, the table is cleared.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
* i18n: clear the DankCommon table when falling back to English
_fallbackToEnglish() left the common table as it was picked for the previous
locale. Setting Language to "System default" on a system without a shell
translation (an English one, cs_CZ, ...) goes through that path, so the shell
switched to English while DankCommon strings stayed in the old language - the
same mismatch this branch fixes for the useLocale() path.
The function now resolves to "en" before re-picking, which clears the table
because no English common file exists, and it also covers the case where the
selected translation file is missing or fails to parse.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
---------
Co-authored-by: Claude Opus 5 (1M context) <[email protected]>