feat/hints a471fa4

headless.md RawHistoryFolder

Headless mode

Runs NeferWL without a screen, for tests and quick checks:

neferwl --backend=headless --screenshot /tmp/neferwl-shots
WAYLAND_DISPLAY=<name from the log> foot
  • latest.png shows the current frame. Every frame is also saved as frame-NNNNNN.png, so the directory grows.
  • --size 640x360,640x360 creates two outputs, arranged left to right, for testing focus-monitor-left/right and moving columns between outputs.
  • With several outputs, each writes to <dir>/HEADLESS-<n>/.
  • --timeout 5s stops NeferWL after 5 seconds.
  • grim and recorders work too; see Screen capture.

Input scripts

--input <file>, or --input - for stdin, plays one command per line:

Command Effect
type <text> Type text
key Super+Return Press a key, with optional Shift, Ctrl, Alt or Super
hold Super+h 1s Press a key like key, hold it, then release it
sleep 1s Wait
move <x> <y> Move the pointer, in output coordinates
click [left|right|middle], down <button>, up <button> Mouse buttons
swipe up|down|left|right Three-finger flick
swipe4 up|down Four-finger flick

Testing input methods

examples/testime sends a preedit string, then commits text, each time an app enables text input:

WAYLAND_DISPLAY=<name> go run ./examples/testime -preedit nihon -commit 日本

-count <n> exits after n commits; -delay sets the time between preedit and commit.

Colour check

make color-check renders examples/testpattern on a headless output and checks the colours, in SDR and in HDR (--headless-hdr). It needs a GPU and /dev/udmabuf, and is not part of make check.

On a real screen, compare by eye:

WAYLAND_DISPLAY=<name> go run ./examples/testpattern -mode hdr -fullscreen   # or -mode sdr
source
1# Headless mode
2
3Runs NeferWL without a screen, for tests and quick checks:
4
5```sh
6neferwl --backend=headless --screenshot /tmp/neferwl-shots
7WAYLAND_DISPLAY=<name from the log> foot
8```
9
10- `latest.png` shows the current frame. Every frame is also saved as `frame-NNNNNN.png`, so the directory grows.
11- `--size 640x360,640x360` creates two outputs, arranged left to right,
12  for testing `focus-monitor-left/right` and moving columns between outputs.
13- With several outputs, each writes to `<dir>/HEADLESS-<n>/`.
14- `--timeout 5s` stops NeferWL after 5 seconds.
15- `grim` and recorders work too; see [Screen capture](capture.md).
16
17## Input scripts
18
19`--input <file>`, or `--input -` for stdin, plays one command per line:
20
21| Command | Effect |
22|---|---|
23| `type <text>` | Type text |
24| `key Super+Return` | Press a key, with optional Shift, Ctrl, Alt or Super |
25| `hold Super+h 1s` | Press a key like `key`, hold it, then release it |
26| `sleep 1s` | Wait |
27| `move <x> <y>` | Move the pointer, in output coordinates |
28| `click [left\|right\|middle]`, `down <button>`, `up <button>` | Mouse buttons |
29| `swipe up\|down\|left\|right` | Three-finger flick |
30| `swipe4 up\|down` | Four-finger flick |
31
32## Testing input methods
33
34`examples/testime` sends a preedit string, then commits text, each time an app enables text input:
35
36```sh
37WAYLAND_DISPLAY=<name> go run ./examples/testime -preedit nihon -commit 日本
38```
39
40`-count <n>` exits after n commits; `-delay` sets the time between preedit and commit.
41
42## Colour check
43
44`make color-check` renders `examples/testpattern` on a headless output and checks the colours, in SDR and in HDR (`--headless-hdr`). It needs a GPU and `/dev/udmabuf`, and is not part of `make check`.
45
46On a real screen, compare by eye:
47
48```sh
49WAYLAND_DISPLAY=<name> go run ./examples/testpattern -mode hdr -fullscreen   # or -mode sdr
50```

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 25

Tags 10

↑↓ moveenter openesc close