Files
dotfiles/.claude/tasks/0024-rofi-launcher.md
alexion af5922b681 fix(desktop): give calc its own key instead of combi (task 0024)
rofi-calc's live result only shows with the global -no-show-match flag,
which inside combi would unfilter the drun/run/window app search. Move
math evaluation to its own Super+C invocation carrying that flag, and
return combi to drun,run,window with emoji as the tab-away mode.
2026-07-22 16:10:10 -04:00

2.8 KiB

spec, blocked-by
spec blocked-by
hyprland-desktop 0021-desktop-group-and-hyprland-session

What to build

A search-everything launcher, so one keybound tool handles launching and utility menus.

Add a rofi (Wayland fork) module to the desktop group, enabled through the aggregator, combining application-run, binary-run, and window-switch into one prompt, plus math-evaluation and emoji modes. Bind it on Super+R. Structure it so it is reusable as the dmenu-style frontend for later utility menus (clipboard history, power menu), and provide a power menu that uses it.

Acceptance criteria

  • A rofi module exists in the desktop group and is enabled by the aggregator.
  • rofi combines application-run, binary-run, and window-switch modes, plus math evaluation and emoji.
  • rofi opens on Super+R.
  • rofi is usable as a dmenu-style frontend for utility menus, and a power menu is provided through it.
  • neogaia builds green under nix flake check.

Implementation Notes

  • rofi-wayland no longer exists as a separate package: nixpkgs merged the Wayland fork into pkgs.rofi (now 2.0.0), and rofi-emoji-wayland into rofi-emoji. The module uses the plain pkgs.rofi, which is the Wayland-capable build.
  • The combined prompt is rofi's combi mode: combi-modi = "drun,run,window" merges the run/switch modes into one list, with emoji (via rofi-emoji) the one further mode the same window tabs to. Super+R runs rofi -show combi.
  • Math evaluation is a separate Super+C invocation, rofi -show calc -modi calc -no-show-match -no-sort (the rofi-calc plugin). rofi-calc's live result is one generated entry that only survives with -no-show-match, a global rofi flag. Inside combi that flag would also unfilter the drun/run/window app search, so calc cannot share the combi prompt and takes its own key.
  • The dmenu-style reuse is the themed rofi itself, not a separate abstraction: any rofi -dmenu invocation reads the same config and Stylix theme, so the power menu — and later clipboard/utility menus — look uniform for free.
  • The launcher and power-menu keybinds live in this module rather than in hyprland.nix, contributed through settings.bind, which the module system concatenates with the compositor's own binds in the single hyprland.conf. This keeps each command next to its binding and referenced by store path, so a rename cannot silently break the bind.
  • The power menu is bound to Super+Shift+X, chosen by the operator. It pairs with lock on Super+X (a key the spec's table does list), so the two session actions sit together, and the parent spec's table has no power-menu key of its own.
  • No Waybar window-rewrite icon mapping was added: rofi renders as a Wayland layer-shell overlay, not a tiled window with a class on a workspace, so it never appears on the workspace indicator the convention governs.