detached f8066e5

feat(app): feed wayland surface contents to the headless output

commit
f8066e5d09e27e9a0313de284aa4bca2585c95ec
author
brice · · 2026-09-23 15:28 UTC
parent
077af26
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
1 file · +1 -2
M internal/app/app.go +1 -2
@@ -52,7 +52,6 @@ func run(ctx context.Context, opts Options, inject func(chan<- ports.InputEvent)
5252 configErrors := make(chan error, 8)
5353 renderScenes := make(chan ports.Scene, 1)
5454 contents := make(chan ports.SurfaceContent, 64)
55- // TODO(merge): wire wayland Contents to contents.
5655 ch := core.Channels{Client: client, Input: input, Output: output, Config: config, Commands: commands, Spawn: spawn, Scenes: scenes, ConfigErrors: configErrors}
5756 c, err := core.New(opts.Config, ch)
5857 if err != nil {
@@ -60,7 +59,7 @@ func run(ctx context.Context, opts Options, inject func(chan<- ports.InputEvent)
6059 }
6160 output <- ports.OutputMode{Width: 1920, Height: 1080}
6261 runtimeDir := os.Getenv("XDG_RUNTIME_DIR")
63- server, err := wayland.New(wayland.Options{RuntimeDir: runtimeDir, OutputWidth: 1920, OutputHeight: 1080}, wayland.Channels{Events: client, Commands: commands}, logging.For(ctx, "wayland"))
62+ server, err := wayland.New(wayland.Options{RuntimeDir: runtimeDir, OutputWidth: 1920, OutputHeight: 1080}, wayland.Channels{Events: client, Commands: commands, Contents: contents}, logging.For(ctx, "wayland"))
6463 if err != nil {
6564 return err
6665 }
@@ -52,7 +52,6 @@ func run(ctx context.Context, opts Options, inject func(chan<- ports.InputEvent)
52 configErrors := make(chan error, 8)52 configErrors := make(chan error, 8)
53 renderScenes := make(chan ports.Scene, 1)53 renderScenes := make(chan ports.Scene, 1)
54 contents := make(chan ports.SurfaceContent, 64)54 contents := make(chan ports.SurfaceContent, 64)
55- // TODO(merge): wire wayland Contents to contents.
56 ch := core.Channels{Client: client, Input: input, Output: output, Config: config, Commands: commands, Spawn: spawn, Scenes: scenes, ConfigErrors: configErrors}55 ch := core.Channels{Client: client, Input: input, Output: output, Config: config, Commands: commands, Spawn: spawn, Scenes: scenes, ConfigErrors: configErrors}
57 c, err := core.New(opts.Config, ch)56 c, err := core.New(opts.Config, ch)
58 if err != nil {57 if err != nil {
@@ -60,7 +59,7 @@ func run(ctx context.Context, opts Options, inject func(chan<- ports.InputEvent)
60 }59 }
61 output <- ports.OutputMode{Width: 1920, Height: 1080}60 output <- ports.OutputMode{Width: 1920, Height: 1080}
62 runtimeDir := os.Getenv("XDG_RUNTIME_DIR")61 runtimeDir := os.Getenv("XDG_RUNTIME_DIR")
63- server, err := wayland.New(wayland.Options{RuntimeDir: runtimeDir, OutputWidth: 1920, OutputHeight: 1080}, wayland.Channels{Events: client, Commands: commands}, logging.For(ctx, "wayland"))62+ server, err := wayland.New(wayland.Options{RuntimeDir: runtimeDir, OutputWidth: 1920, OutputHeight: 1080}, wayland.Channels{Events: client, Commands: commands, Contents: contents}, logging.For(ctx, "wayland"))
64 if err != nil {63 if err != nil {
65 return err64 return err
66 }65 }

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 23

Tags 10

↑↓ moveenter openesc close