Rofi - full menu¶
A fullscreen Rofi application launcher (drun mode) with a pre-themed grid
layout. Designed to be the primary app launcher in a Hyprland setup.
Package: fullmenu
Overview¶
src/rofi/fullmenu/
├── default.nix
├── bin/
│ └── menu # launches rofi in drun mode with the bundled config
└── share/
├── conf.rasi # rofi config (keybinds, font, drun settings)
└── full.rasi # fullscreen grid theme (8 columns × 4 rows)
menu - the launcher¶
#!/usr/bin/env bash
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
SRC_DIR="$(dirname "$SCRIPT_DIR")"
ROFI_THEME_STR="${ROFI_THEME_STR:-}"
killall -q rofi
rofi -show drun -config "$SRC_DIR/share/conf.rasi"
Simple by design: kill any existing rofi (toggle behavior), then launch drun
with the bundled config.
| Arguments | none |
| Runtime deps | rofi-wayland, killall |
| Package | fullmenu |
| Main program | menu |
Theme¶
conf.rasi¶
Standard keybind config (Ctrl+h/j/k/l navigation, mouse click select,
Return accept) plus drun-specific settings:
Quick-select keys are enabled: l (1st), s (2nd), e (3rd), r (4th),
S (5th).
full.rasi - grid layout¶
A centered, fullscreen window (1366×768) with a translucent black background
(black / 10%). The listview is an 8-column × 4-row grid with vertical
orientation, 72px icons, and rounded 15px element corners. The input bar is
centered with a 10px rounded border.
Theme injection
The first line of full.rasi is {{full-theme-str}} - a placeholder
replaced at build time with the full-theme-str argument. This is where
color variables (@selected, @foreground, etc.) are injected, typically
from Stylix.
Build overrides¶
| Argument | Default | Description |
|---|---|---|
full-theme-str |
"" |
Rasi fragment substituted into full.rasi (color variables) |
inputs.utils.packages.${pkgs.system}.fullmenu.override {
full-theme-str = ''
* {
selected: #62AEEF;
foreground: #ffffff;
background-alt: #101010;
}
'';
}
Environment variables¶
| Variable | Default | Description |
|---|---|---|
ROFI_THEME_STR |
"" |
Additional inline theme override (currently unused by the script but available) |
Usage¶
# Direct
nix run github:semi710/utils#fullmenu
# In config
{ inputs, pkgs, lib, ... }:
let u = inputs.utils.packages.${pkgs.system};
in {
wayland.windowManager.hyprland.settings.bind = [
"$mod, space, exec, ${lib.getExe u.fullmenu}"
];
}