v0.1.5 7f87577

runtime.go RawHistoryFolder

1package pipewire
2
3import (
4	"errors"
5
6	"github.com/bnema/purego-pipewire/internal/capi"
7	"github.com/bnema/purego-pipewire/internal/core"
8)
9
10// runtimeWrapper wraps the internal core.Runtime to implement the public Runtime interface.
11type runtimeWrapper struct {
12	inner *core.Runtime
13}
14
15func (rw runtimeWrapper) Init() error {
16	return rw.inner.Init()
17}
18
19func (rw runtimeWrapper) Deinit() {
20	rw.inner.Deinit()
21}
22
23func (rw runtimeWrapper) NewMainLoop() (MainLoop, error) {
24	ml, err := rw.inner.NewMainLoop()
25	if err != nil {
26		return nil, err
27	}
28	return mainLoopWrapper{inner: ml}, nil
29}
30
31// mainLoopWrapper wraps the internal core.MainLoop to implement the public MainLoop interface.
32type mainLoopWrapper struct {
33	inner *core.MainLoop
34}
35
36func (mlw mainLoopWrapper) Run() int32 {
37	return mlw.inner.Run()
38}
39
40func (mlw mainLoopWrapper) Destroy() {
41	mlw.inner.Destroy()
42}
43
44// Init initializes the PipeWire runtime and returns a Runtime instance.
45// This function must be called before using any other PipeWire functionality.
46// Returns an error if the PipeWire libraries cannot be loaded.
47func Init() (Runtime, error) {
48	if err := capi.Register(); err != nil {
49		return nil, err
50	}
51	capiInstance := capi.Default()
52	if capiInstance == nil {
53		return nil, errors.New("failed to get default CAPI instance")
54	}
55	r := core.NewRuntime(capiInstance)
56	if err := r.Init(); err != nil {
57		return nil, err
58	}
59	return runtimeWrapper{inner: r}, nil
60}

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 1

Tags 8

↑↓ moveenter openesc close