aboutsummaryrefslogtreecommitdiffstats
path: root/AGENTS.md
blob: 4b44a10e4c6afa1c9f1713b61f78c0cb9804101f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# AGENTS.md

Guidance for AI coding agents working in this repository.

## What this is

`rofi-scripts`: the shell scripts that open rofi menus on a Hyprland desktop.
Plain bash or POSIX sh, one file per menu under `bin/`, no build step. Runtime
deps are rofi 2.0 plus whatever each menu drives (pass, grimblast, notifyctl,
sd-server, firefox).

`./install.sh` symlinks every file in `bin/` into `~/bin/`, so edits are live
on the next launch. The names are the ones hypr-theme's keybindings call
(`udt-powermenu.sh`, `qar-scrotmenu.sh`, `blackpearl-sshmenu.sh`, ...), so a
rename here must be matched there.

## The themes live elsewhere

Every script points rofi at a layout under `~/.config/rofi/udt/`, which the
sibling `unified-desktop-theme` repo installs. This repo holds no `.rasi`.
A layout change (header, card grid, banner) belongs there; here only the
per-menu bits passed on the command line: `-p` title, `-mesg`,
`-theme-str` overrides, keybindings.

Menus on the searchable layouts (`list.rasi`, `grid.rasi`, `ssh.rasi`) show a
wallpaper banner with the `-p` text as a title plate above the search bar.
The house style for that title is a Nerd Font glyph, two spaces, a word and a
colon: `'󰌋  Pass:'`. Pick glyphs from the `U+F0xxx` range; `ClearlyU` claims
much of the older Private Use Area and draws a blank instead.
`fc-match ":charset=f030b" family` says which font wins.

## Gotchas

- **One quoted string per `-theme-str`.** rofi 2.0's lexer reads from the
  first `"` to the last, so `textbox { font: "A"; } entry { placeholder: "B"; }`
  in one argument silently swallows the second block. Pass two `-theme-str`.
- **Glyph-only elements need `children: [ element-text ]`** in their layout,
  or the hidden icon slot pushes the glyph off centre.
- Do not judge a menu by exit code: rofi exits non-zero on Escape.

## Conventions

- New menu: one file in `bin/`, license header, then `./install.sh`.
- Placeholders only in code, docs and commits: no hostnames, account names or
  home paths. A gitleaks hook enforces it.

## Testing

No test suite. `bash -n bin/<script>` (or `sh -n`) for syntax. For anything
visual, open the menu in the session, screenshot and look:

    grim -o DP-1 /tmp/shot.png

`wtype -k Escape` closes it from a script.

## Repo facts

- License: GPLv2 only (`LICENSE`, header in each source file), except
  `bin/rofipass` (derived from MIT-licensed upstream, notice kept in the file)
  and `bin/udt-powermenu.sh`, `bin/udt-launcher.sh` (derived from adi1090x/rofi,
  GPL-3.0 like upstream).
- `origin` is the personal git server (cgit section "Linux").
- Work directly on master.