v0.21.0 73bf644

rendering_env.go RawHistoryFolder

1// Package port defines interfaces for external dependencies.
2package port
3
4import "context"
5
6// GPUVendor identifies the GPU manufacturer for vendor-specific optimizations.
7type GPUVendor string
8
9const (
10	// GPUVendorAMD represents AMD/ATI GPUs (vendor ID 0x1002)
11	GPUVendorAMD GPUVendor = "amd"
12	// GPUVendorIntel represents Intel integrated/discrete GPUs (vendor ID 0x8086)
13	GPUVendorIntel GPUVendor = "intel"
14	// GPUVendorNVIDIA represents NVIDIA GPUs (vendor ID 0x10de)
15	GPUVendorNVIDIA GPUVendor = "nvidia"
16	// GPUVendorUnknown represents undetected or unsupported GPUs
17	GPUVendorUnknown GPUVendor = "unknown"
18)
19
20// RenderingEnvSettings contains all rendering-related environment settings.
21// This is a port-local type to avoid import cycles with config package.
22type RenderingEnvSettings struct {
23	// --- GStreamer settings (from MediaConfig) ---
24	// ForceVSync enables vertical sync for video playback.
25	ForceVSync bool
26	// GLRenderingMode controls OpenGL API selection: "auto", "gles2", "gl3", "none".
27	GLRenderingMode string
28	// GStreamerDebugLevel sets GStreamer debug verbosity (0-5).
29	GStreamerDebugLevel int
30	// VideoBufferSizeMB sets buffer size in megabytes for video streaming.
31	VideoBufferSizeMB int
32	// QueueBufferTimeSec sets queue buffer time in seconds for prebuffering.
33	QueueBufferTimeSec int
34
35	// --- WebKit compositor settings (from RenderingConfig) ---
36	DisableDMABufRenderer  bool
37	ForceCompositingMode   bool
38	DisableCompositingMode bool
39
40	// --- GTK/GSK settings (from RenderingConfig) ---
41	GSKRenderer    string
42	DisableMipmaps bool
43	PreferGL       bool
44
45	// --- Debug settings ---
46	ShowFPS      bool
47	SampleMemory bool
48	DebugFrames  bool
49}
50
51// RenderingEnvManager configures rendering environment variables
52// for GStreamer, WebKit, and GTK/GSK.
53// Environment variables must be set BEFORE GTK/WebKit initialization.
54type RenderingEnvManager interface {
55	// DetectGPUVendor identifies the primary GPU vendor from system info.
56	// Uses /sys/class/drm/card*/device/vendor as primary detection method.
57	DetectGPUVendor(ctx context.Context) GPUVendor
58
59	// ApplyEnvironment sets all rendering environment variables.
60	// Must be called before any GTK/GStreamer initialization.
61	ApplyEnvironment(ctx context.Context, settings RenderingEnvSettings) error
62
63	// GetAppliedVars returns a map of environment variables that were set.
64	// Useful for logging and debugging.
65	GetAppliedVars() map[string]string
66}

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 8

Tags 42

↑↓ moveenter openesc close