detached 06fe392

style(selection): color the record mode coral red and keep amber for warnings

commit
06fe3927261b9de3fb51ded3cabd57ece4b4aa5e
author
brice · · 2026-10-17 18:18 UTC
parent
ffd1332
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
3 files · +7 -8
M README.md +1 -1
@@ -24,7 +24,7 @@ bind.cmd+p = spawn nefercap
2424
2525 Press the key: a selector covers every monitor. Pick what to capture, press **Tab** to switch between screenshot and recording, then confirm.
2626
27-Chips at the top left show the mode (`SHOT` or `REC`) and the target (`R Region`, `M Monitor`, `W Workspace`). The active ones and the selection border take the mode color: cyan for screenshots, amber for recordings. Each key press also shows a short toast in the center and pulses the border.
27+Chips at the top left show the mode (`SHOT` or `REC`) and the target (`R Region`, `M Monitor`, `W Workspace`). The active ones and the selection border take the mode color: cyan for screenshots, red for recordings. Each key press also shows a short toast in the center and pulses the border.
2828
2929 After a screenshot, a green frame briefly flashes over the captured area. It is drawn after the capture, so it never appears in the image.
3030
@@ -24,7 +24,7 @@ bind.cmd+p = spawn nefercap
24 24
25 Press the key: a selector covers every monitor. Pick what to capture, press **Tab** to switch between screenshot and recording, then confirm.25 Press the key: a selector covers every monitor. Pick what to capture, press **Tab** to switch between screenshot and recording, then confirm.
26 26
27-Chips at the top left show the mode (`SHOT` or `REC`) and the target (`R Region`, `M Monitor`, `W Workspace`). The active ones and the selection border take the mode color: cyan for screenshots, amber for recordings. Each key press also shows a short toast in the center and pulses the border.27+Chips at the top left show the mode (`SHOT` or `REC`) and the target (`R Region`, `M Monitor`, `W Workspace`). The active ones and the selection border take the mode color: cyan for screenshots, red for recordings. Each key press also shows a short toast in the center and pulses the border.
28 28
29 After a screenshot, a green frame briefly flashes over the captured area. It is drawn after the capture, so it never appears in the image.29 After a screenshot, a green frame briefly flashes over the captured area. It is drawn after the capture, so it never appears in the image.
30 30
M internal/adapters/selection/scene.go +2 -3
@@ -74,8 +74,7 @@ func footerText(mode ports.Mode, kind core.PickKind, workspace, toggle, noIndica
7474 return b.String()
7575 }
7676
77-// badgeText is the label of a mode chip. No mode is red: red would read as
78-// an active recording.
77+// badgeText is the label of a mode chip.
7978 func badgeText(mode ports.Mode) string {
8079 if mode == ports.Record {
8180 return "REC"
@@ -84,7 +83,7 @@ func badgeText(mode ports.Mode) string {
8483 }
8584
8685 // modeClass is the stylesheet class that colors the active mode: cyan for
87-// screenshots, amber for recordings.
86+// screenshots, coral red for recordings.
8887 func modeClass(mode ports.Mode) string {
8988 if mode == ports.Record {
9089 return "rec"
@@ -74,8 +74,7 @@ func footerText(mode ports.Mode, kind core.PickKind, workspace, toggle, noIndica
74 return b.String()74 return b.String()
75 }75 }
76 76
77-// badgeText is the label of a mode chip. No mode is red: red would read as77+// badgeText is the label of a mode chip.
78-// an active recording.
79 func badgeText(mode ports.Mode) string {78 func badgeText(mode ports.Mode) string {
80 if mode == ports.Record {79 if mode == ports.Record {
81 return "REC"80 return "REC"
@@ -84,7 +83,7 @@ func badgeText(mode ports.Mode) string {
84 }83 }
85 84
86 // modeClass is the stylesheet class that colors the active mode: cyan for85 // modeClass is the stylesheet class that colors the active mode: cyan for
87-// screenshots, amber for recordings.86+// screenshots, coral red for recordings.
88 func modeClass(mode ports.Mode) string {87 func modeClass(mode ports.Mode) string {
89 if mode == ports.Record {88 if mode == ports.Record {
90 return "rec"89 return "rec"
M internal/adapters/selection/style.css +4 -4
@@ -9,10 +9,10 @@ box.backdrop { overflow: hidden; }
99 box.backdrop image { width: 100%; height: 100%; }
1010 box.dim { background-color: rgba(0, 0, 0, 0.5); }
1111 box.edge { background-color: #4fd1a5; }
12-/* Mode colors: cyan for screenshots, amber for recordings. Never red, which
13- would read as a recording in progress. */
12+/* Mode colors: cyan for screenshots, coral red for recordings. Amber is kept
13+ for warnings. */
1414 box.edge.shot { background-color: #38bdf8; }
15-box.edge.rec { background-color: #f5a524; }
15+box.edge.rec { background-color: #ef5350; }
1616 box.grid { background-color: #808080; }
1717 box.tag {
1818 display: flex; flex-direction: row; justify-content: center; align-items: center;
@@ -24,7 +24,7 @@ box.tag {
2424 box.chip.idle { color: #8b949e; }
2525 box.chip.off { color: #484f58; }
2626 box.chip.shot { background-color: #38bdf8; color: #0d1014; }
27-box.chip.rec { background-color: #f5a524; color: #0d1014; }
27+box.chip.rec { background-color: #ef5350; color: #0d1014; }
2828 /* Centered toast confirming a key, faded out by the o* steps. */
2929 box.toast {
3030 display: flex; flex-direction: row; justify-content: center; align-items: center;
@@ -9,10 +9,10 @@ box.backdrop { overflow: hidden; }
9 box.backdrop image { width: 100%; height: 100%; }9 box.backdrop image { width: 100%; height: 100%; }
10 box.dim { background-color: rgba(0, 0, 0, 0.5); }10 box.dim { background-color: rgba(0, 0, 0, 0.5); }
11 box.edge { background-color: #4fd1a5; }11 box.edge { background-color: #4fd1a5; }
12-/* Mode colors: cyan for screenshots, amber for recordings. Never red, which12+/* Mode colors: cyan for screenshots, coral red for recordings. Amber is kept
13- would read as a recording in progress. */13+ for warnings. */
14 box.edge.shot { background-color: #38bdf8; }14 box.edge.shot { background-color: #38bdf8; }
15-box.edge.rec { background-color: #f5a524; }15+box.edge.rec { background-color: #ef5350; }
16 box.grid { background-color: #808080; }16 box.grid { background-color: #808080; }
17 box.tag {17 box.tag {
18 display: flex; flex-direction: row; justify-content: center; align-items: center;18 display: flex; flex-direction: row; justify-content: center; align-items: center;
@@ -24,7 +24,7 @@ box.tag {
24 box.chip.idle { color: #8b949e; }24 box.chip.idle { color: #8b949e; }
25 box.chip.off { color: #484f58; }25 box.chip.off { color: #484f58; }
26 box.chip.shot { background-color: #38bdf8; color: #0d1014; }26 box.chip.shot { background-color: #38bdf8; color: #0d1014; }
27-box.chip.rec { background-color: #f5a524; color: #0d1014; }27+box.chip.rec { background-color: #ef5350; color: #0d1014; }
28 /* Centered toast confirming a key, faded out by the o* steps. */28 /* Centered toast confirming a key, faded out by the o* steps. */
29 box.toast {29 box.toast {
30 display: flex; flex-direction: row; justify-content: center; align-items: center;30 display: flex; flex-direction: row; justify-content: center; align-items: center;

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 9

↑↓ moveenter openesc close