detached 338e508

Merge pull request #24 from bnema/docs/config-readme

docs: document configuration file support
commit
338e508ef6cc034fc750b68806f7a235aba6be2e
author
bnema · · 2026-07-06 00:21 UTC
committer
GitHub · · 2026-07-06 00:21 UTC
merge of
65a9160 + 1ef1be5 · diff against the first parent
signature
GPG UnverifiedB5690EEEBB952194 The key is unknown
1 file · +54 -0
M README.md +54 -0
@@ -38,6 +38,60 @@ Ephemeral sessions get a number (`0`, `1`, `2`, ...) and die when you detach. Na
3838
3939 Only one client is attached to a session at a time; attaching again displaces the old client.
4040
41+## Configuration
42+
43+vev reads `$XDG_CONFIG_HOME/vev/config`, or `~/.config/vev/config` when `XDG_CONFIG_HOME` is unset. Missing files use defaults. The daemon reloads mtime/size changes while running, polling about every two seconds.
44+
45+```text
46+# Theme: auto follows the client; dark/light force built-in palettes.
47+theme = auto
48+
49+# Rebindable actions. Leave a line out to keep its built-in binding.
50+open-palette = alt+space
51+jump-attention = alt+a
52+focus-pane-left = alt+h
53+focus-pane-right = alt+l
54+focus-pane-up = alt+k
55+focus-pane-down = alt+j
56+switch-tab-1 = alt+1
57+switch-tab-2 = alt+2
58+switch-tab-3 = alt+3
59+switch-tab-4 = alt+4
60+switch-tab-5 = alt+5
61+switch-tab-6 = alt+6
62+switch-tab-7 = alt+7
63+switch-tab-8 = alt+8
64+switch-tab-9 = alt+9
65+
66+# Command palette codes are trimmed, uppercased, then checked as 2-3 letters or digits.
67+code.new-tab = CNT
68+code.new-session = CNS
69+code.close-tab = CLT
70+code.split-right = SPR
71+code.split-left = SPL
72+code.split-up = SPU
73+code.split-down = SPD
74+code.stack-pane = STP
75+code.toggle-stack = TST
76+code.close-pane = CLP
77+code.focus-pane-left = FPL
78+code.focus-pane-right = FPR
79+code.focus-pane-up = FPU
80+code.focus-pane-down = FPD
81+code.next-tab = NXT
82+code.previous-tab = PVT
83+code.back-session = BSK
84+code.forward-session = FSK
85+code.session-picker = SSP
86+code.visual-mode = VIS
87+code.rename-session = RNS
88+code.detach = DET
89+```
90+
91+Configuring an action replaces all of its built-in aliases. In the example above, the focus-pane lines keep Alt+h/j/k/l but not the Alt+Arrow aliases; omit those lines to keep all built-ins.
92+
93+Key specs support `alt+<char>`, `alt+space`, and `alt+left/right/up/down`; digit key specs support `alt+1` through `alt+9`, not `alt+0`. `jump-attention` first opens the oldest attention tab in the current session; if none exists, it opens the oldest attention tab in another session. Invalid entries are logged as warnings and skipped where possible; duplicate config keys use the last value, binding conflicts keep the later action's defaults, and command-code conflicts drop the conflicting override.
94+
4195 ## Remote attach
4296
4397 ```sh
@@ -38,6 +38,60 @@ Ephemeral sessions get a number (`0`, `1`, `2`, ...) and die when you detach. Na
38 38
39 Only one client is attached to a session at a time; attaching again displaces the old client.39 Only one client is attached to a session at a time; attaching again displaces the old client.
40 40
41+## Configuration
42+
43+vev reads `$XDG_CONFIG_HOME/vev/config`, or `~/.config/vev/config` when `XDG_CONFIG_HOME` is unset. Missing files use defaults. The daemon reloads mtime/size changes while running, polling about every two seconds.
44+
45+```text
46+# Theme: auto follows the client; dark/light force built-in palettes.
47+theme = auto
48+
49+# Rebindable actions. Leave a line out to keep its built-in binding.
50+open-palette = alt+space
51+jump-attention = alt+a
52+focus-pane-left = alt+h
53+focus-pane-right = alt+l
54+focus-pane-up = alt+k
55+focus-pane-down = alt+j
56+switch-tab-1 = alt+1
57+switch-tab-2 = alt+2
58+switch-tab-3 = alt+3
59+switch-tab-4 = alt+4
60+switch-tab-5 = alt+5
61+switch-tab-6 = alt+6
62+switch-tab-7 = alt+7
63+switch-tab-8 = alt+8
64+switch-tab-9 = alt+9
65+
66+# Command palette codes are trimmed, uppercased, then checked as 2-3 letters or digits.
67+code.new-tab = CNT
68+code.new-session = CNS
69+code.close-tab = CLT
70+code.split-right = SPR
71+code.split-left = SPL
72+code.split-up = SPU
73+code.split-down = SPD
74+code.stack-pane = STP
75+code.toggle-stack = TST
76+code.close-pane = CLP
77+code.focus-pane-left = FPL
78+code.focus-pane-right = FPR
79+code.focus-pane-up = FPU
80+code.focus-pane-down = FPD
81+code.next-tab = NXT
82+code.previous-tab = PVT
83+code.back-session = BSK
84+code.forward-session = FSK
85+code.session-picker = SSP
86+code.visual-mode = VIS
87+code.rename-session = RNS
88+code.detach = DET
89+```
90+
91+Configuring an action replaces all of its built-in aliases. In the example above, the focus-pane lines keep Alt+h/j/k/l but not the Alt+Arrow aliases; omit those lines to keep all built-ins.
92+
93+Key specs support `alt+<char>`, `alt+space`, and `alt+left/right/up/down`; digit key specs support `alt+1` through `alt+9`, not `alt+0`. `jump-attention` first opens the oldest attention tab in the current session; if none exists, it opens the oldest attention tab in another session. Invalid entries are logged as warnings and skipped where possible; duplicate config keys use the last value, binding conflicts keep the later action's defaults, and command-code conflicts drop the conflicting override.
94+
41 ## Remote attach95 ## Remote attach
42 96
43 ```sh97 ```sh

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 2

Tags 13

↑↓ moveenter openesc close