v0.1.0 d9218d6

devices.go RawHistoryFolder

1package ports
2
3import (
4	"image"
5	"os"
6)
7
8// Renderer draws scenes for an output. One goroutine owns it. Frames go
9// to its own image until ExportTargets gives it scanout images; then each
10// Render draws into the target chosen by UseTarget (ADR 014: no CPU pass).
11type Renderer interface {
12	// Render draws the scene. done is a sync file signalled when the GPU
13	// finished the frame (nil: already finished); the caller closes it.
14	Render(Scene, map[WindowID]SurfaceContent) (done *os.File, err error)
15	// ExportTargets allocates n images of the renderer's size that the
16	// display can scan out, with one of the given XRGB8888 modifiers
17	// (none: any the device exports), and returns them as dmabufs.
18	// n = 0 drops the targets.
19	ExportTargets(n int, modifiers []uint64) ([]DMABuf, error)
20	// UseTarget selects the exported image the next Render draws into.
21	UseTarget(i int)
22	// CursorBuffers allocates two linear ARGB8888 images of size×size the
23	// display can show on its cursor plane, and returns them as dmabufs.
24	CursorBuffers(size int) ([2]DMABuf, error)
25	// WriteCursor fills cursor image i with premultiplied ARGB8888 pixels
26	// (w×h, w*4 per row), cropped to the image and cleared around it.
27	WriteCursor(i int, pixels []byte, w, h int) error
28	// Pixels reads the last frame back (headless screenshots, tests).
29	Pixels() *image.RGBA
30	Close()
31}
32
33// Seat is the device broker (libseat) input devices are opened through.
34type Seat interface {
35	OpenDevice(path string) (int, error)
36	CloseDevice(fd int)
37	SwitchVT(vt int)
38}

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