detached 7e09e66

merge: deps-tags (published purego-libwayland v0.1.0 and purego-vulkan v0.4.0, package from git archive)

commit
7e09e66eb4769c3cfe6191171e880f23088a829b
author
brice · · 2026-09-26 06:21 UTC
merge of
d2b5051 + 70424d4 · diff against the first parent
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
8 files · +47 -52
M .gitignore +2 -0
@@ -5,3 +5,5 @@
55 coverage/
66 .worktrees/
77 /dist/
8+go.work
9+go.work.sum
@@ -5,3 +5,5 @@
5 coverage/5 coverage/
6 .worktrees/6 .worktrees/
7 /dist/7 /dist/
8+go.work
9+go.work.sum
M LICENSE +1 -1
@@ -1,6 +1,6 @@
11 MIT License
22
3-Copyright (c) 2026 bnema
3+Copyright (c) 2026 nefertty contributors
44
55 Permission is hereby granted, free of charge, to any person obtaining a copy
66 of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1 MIT License1 MIT License
2 2
3-Copyright (c) 2026 bnema3+Copyright (c) 2026 nefertty contributors
4 4
5 Permission is hereby granted, free of charge, to any person obtaining a copy5 Permission is hereby granted, free of charge, to any person obtaining a copy
6 of this software and associated documentation files (the "Software"), to deal6 of this software and associated documentation files (the "Software"), to deal
M Makefile +15 -37
@@ -1,4 +1,4 @@
1-.PHONY: build test vet race mocks mocks-check fakes-check arch check bin tty logs dist pkg
1+.PHONY: build test vet race mocks mocks-check fakes-check arch check bin tty logs pkg
22
33 # 0 runs until quit; set e.g. TTY_TIMEOUT=60s for a safety net.
44 TTY_TIMEOUT ?= 0
@@ -46,40 +46,18 @@ arch:
4646 $(HOME)/go/bin/hexcheck -hexcheck.config .hexcheck.yaml -hexcheck.root . ./...
4747 check: vet test arch fakes-check
4848
49-# Self-contained source tarball for packaging (packaging/arch/PKGBUILD): the
50-# sibling purego-* modules are vendored, so the package builds offline. It
51-# holds the working trees; the version ends in .dirty when one is not clean.
52-SIBLINGS := github.com/bnema/purego-libwayland github.com/bnema/purego-vulkan
53-SIBLING_DIRS = $(shell go list -m -f '{{.Dir}}' $(SIBLINGS))
54-dirty = $(shell for d in . $(SIBLING_DIRS); do git -C $$d diff --quiet HEAD && \
55- test -z "$$(git -C $$d ls-files -o --exclude-standard)" || { echo .dirty; break; }; done)
56-# pacman-ordered: 0.0.0.r<commits>.g<hash>; a tag replaces 0.0.0.
57-VERSION ?= $(shell t=$$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//; s/-/_/g'); \
58- echo "$${t:-0.0.0}.r$$(git rev-list --count HEAD).g$$(git rev-parse --short HEAD)")$(dirty)
59-DIST = dist/nefertty-$(VERSION)
60-dist: SHELL := bash
61-dist: .SHELLFLAGS := -eo pipefail -c
62-# Computed once per dist run (git and go list), not for every target.
63-ifneq ($(filter dist pkg,$(MAKECMDGOALS)),)
64-VERSION := $(VERSION)
65-endif
66-dist:
67- @for d in $(SIBLING_DIRS); do test -d $$d || { echo "sibling module not found: $$d" >&2; exit 1; }; done
68- rm -rf $(DIST) && mkdir -p $(DIST)
69- git ls-files -co --exclude-standard -z | tar --null -T - -c | tar -x -C $(DIST)
70- cd $(DIST) && go mod edit $(foreach m,$(SIBLINGS),-replace=$(m)=$(shell go list -m -f '{{.Dir}}' $(m))) && go mod vendor
71- cd $(DIST) && $(foreach m,$(SIBLINGS),sed -i 's#=> $(shell go list -m -f '{{.Dir}}' $(m))$$#=> ../$(notdir $(m))#' go.mod vendor/modules.txt &&) true
72- @! grep -rqF "$(HOME)" $(DIST) || { echo "home path leaked into $(DIST)" >&2; exit 1; }
73- echo '$(VERSION)' > $(DIST)/VERSION
74- tar --owner=0 --group=0 --numeric-owner --sort=name --mtime=@$$(git log -1 --format=%ct) -C dist -czf $(DIST).tar.gz nefertty-$(VERSION)
75- rm -rf $(DIST)
76- @echo $(DIST).tar.gz
77-
78-# Arch package from the dist tarball, built outside the home directory so
79-# no path of it lands in the package metadata. Install it with
80-# `sudo pacman -U` on the printed file.
81-pkg: dist
82- d=$$(mktemp -d /tmp/nefertty-pkg.XXXXXX) && cp packaging/arch/PKGBUILD $(DIST).tar.gz $$d/ && \
83- cd $$d && sed -i "s/^pkgver=.*/pkgver=$(VERSION)/; s/^sha256sums=.*/sha256sums=('$$(sha256sum *.tar.gz | cut -d' ' -f1)')/" PKGBUILD && \
84- makepkg -f --noconfirm && mv *.pkg.tar.zst $(CURDIR)/dist/ && cd / && rm -rf $$d
49+# Arch package of the committed HEAD (packaging/arch/PKGBUILD). Go modules
50+# come from the module proxy in prepare(); the build itself runs offline.
51+# pacman-ordered version: 0.0.0.r<commits>.g<hash>; a tag replaces 0.0.0.
52+pkg: SHELL := bash
53+pkg: .SHELLFLAGS := -eo pipefail -c
54+pkg:
55+ @test -z "$$(git status --porcelain)" || echo "warning: uncommitted changes are not packaged" >&2
56+ v=$$(t=$$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//; s/-/_/g'); \
57+ echo "$${t:-0.0.0}.r$$(git rev-list --count HEAD).g$$(git rev-parse --short HEAD)"); \
58+ d=$$(mktemp -d /tmp/nefertty-pkg.XXXXXX); trap 'rm -rf "$$d"' EXIT; \
59+ git archive --prefix=nefertty-$$v/ -o "$$d/nefertty-$$v.tar.gz" HEAD; \
60+ cp packaging/arch/PKGBUILD "$$d/"; \
61+ cd "$$d" && sed -i "s/^pkgver=.*/pkgver=$$v/; s/^sha256sums=.*/sha256sums=('$$(sha256sum *.tar.gz | cut -d' ' -f1)')/" PKGBUILD; \
62+ makepkg -f --noconfirm; mkdir -p $(CURDIR)/dist; rm -f $(CURDIR)/dist/nefertty-*.pkg.tar.zst; mv *.pkg.tar.zst $(CURDIR)/dist/
8563 @ls dist/*.pkg.tar.zst
@@ -1,4 +1,4 @@
1-.PHONY: build test vet race mocks mocks-check fakes-check arch check bin tty logs dist pkg1+.PHONY: build test vet race mocks mocks-check fakes-check arch check bin tty logs pkg
2 2
3 # 0 runs until quit; set e.g. TTY_TIMEOUT=60s for a safety net.3 # 0 runs until quit; set e.g. TTY_TIMEOUT=60s for a safety net.
4 TTY_TIMEOUT ?= 04 TTY_TIMEOUT ?= 0
@@ -46,40 +46,18 @@ arch:
46 $(HOME)/go/bin/hexcheck -hexcheck.config .hexcheck.yaml -hexcheck.root . ./...46 $(HOME)/go/bin/hexcheck -hexcheck.config .hexcheck.yaml -hexcheck.root . ./...
47 check: vet test arch fakes-check47 check: vet test arch fakes-check
48 48
49-# Self-contained source tarball for packaging (packaging/arch/PKGBUILD): the49+# Arch package of the committed HEAD (packaging/arch/PKGBUILD). Go modules
50-# sibling purego-* modules are vendored, so the package builds offline. It50+# come from the module proxy in prepare(); the build itself runs offline.
51-# holds the working trees; the version ends in .dirty when one is not clean.51+# pacman-ordered version: 0.0.0.r<commits>.g<hash>; a tag replaces 0.0.0.
52-SIBLINGS := github.com/bnema/purego-libwayland github.com/bnema/purego-vulkan52+pkg: SHELL := bash
53-SIBLING_DIRS = $(shell go list -m -f '{{.Dir}}' $(SIBLINGS))53+pkg: .SHELLFLAGS := -eo pipefail -c
54-dirty = $(shell for d in . $(SIBLING_DIRS); do git -C $$d diff --quiet HEAD && \54+pkg:
55- test -z "$$(git -C $$d ls-files -o --exclude-standard)" || { echo .dirty; break; }; done)55+ @test -z "$$(git status --porcelain)" || echo "warning: uncommitted changes are not packaged" >&2
56-# pacman-ordered: 0.0.0.r<commits>.g<hash>; a tag replaces 0.0.0.56+ v=$$(t=$$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//; s/-/_/g'); \
57-VERSION ?= $(shell t=$$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//; s/-/_/g'); \57+ echo "$${t:-0.0.0}.r$$(git rev-list --count HEAD).g$$(git rev-parse --short HEAD)"); \
58- echo "$${t:-0.0.0}.r$$(git rev-list --count HEAD).g$$(git rev-parse --short HEAD)")$(dirty)58+ d=$$(mktemp -d /tmp/nefertty-pkg.XXXXXX); trap 'rm -rf "$$d"' EXIT; \
59-DIST = dist/nefertty-$(VERSION)59+ git archive --prefix=nefertty-$$v/ -o "$$d/nefertty-$$v.tar.gz" HEAD; \
60-dist: SHELL := bash60+ cp packaging/arch/PKGBUILD "$$d/"; \
61-dist: .SHELLFLAGS := -eo pipefail -c61+ cd "$$d" && sed -i "s/^pkgver=.*/pkgver=$$v/; s/^sha256sums=.*/sha256sums=('$$(sha256sum *.tar.gz | cut -d' ' -f1)')/" PKGBUILD; \
62-# Computed once per dist run (git and go list), not for every target.62+ makepkg -f --noconfirm; mkdir -p $(CURDIR)/dist; rm -f $(CURDIR)/dist/nefertty-*.pkg.tar.zst; mv *.pkg.tar.zst $(CURDIR)/dist/
63-ifneq ($(filter dist pkg,$(MAKECMDGOALS)),)
64-VERSION := $(VERSION)
65-endif
66-dist:
67- @for d in $(SIBLING_DIRS); do test -d $$d || { echo "sibling module not found: $$d" >&2; exit 1; }; done
68- rm -rf $(DIST) && mkdir -p $(DIST)
69- git ls-files -co --exclude-standard -z | tar --null -T - -c | tar -x -C $(DIST)
70- cd $(DIST) && go mod edit $(foreach m,$(SIBLINGS),-replace=$(m)=$(shell go list -m -f '{{.Dir}}' $(m))) && go mod vendor
71- cd $(DIST) && $(foreach m,$(SIBLINGS),sed -i 's#=> $(shell go list -m -f '{{.Dir}}' $(m))$$#=> ../$(notdir $(m))#' go.mod vendor/modules.txt &&) true
72- @! grep -rqF "$(HOME)" $(DIST) || { echo "home path leaked into $(DIST)" >&2; exit 1; }
73- echo '$(VERSION)' > $(DIST)/VERSION
74- tar --owner=0 --group=0 --numeric-owner --sort=name --mtime=@$$(git log -1 --format=%ct) -C dist -czf $(DIST).tar.gz nefertty-$(VERSION)
75- rm -rf $(DIST)
76- @echo $(DIST).tar.gz
77-
78-# Arch package from the dist tarball, built outside the home directory so
79-# no path of it lands in the package metadata. Install it with
80-# `sudo pacman -U` on the printed file.
81-pkg: dist
82- d=$$(mktemp -d /tmp/nefertty-pkg.XXXXXX) && cp packaging/arch/PKGBUILD $(DIST).tar.gz $$d/ && \
83- cd $$d && sed -i "s/^pkgver=.*/pkgver=$(VERSION)/; s/^sha256sums=.*/sha256sums=('$$(sha256sum *.tar.gz | cut -d' ' -f1)')/" PKGBUILD && \
84- makepkg -f --noconfirm && mv *.pkg.tar.zst $(CURDIR)/dist/ && cd / && rm -rf $$d
85 @ls dist/*.pkg.tar.zst63 @ls dist/*.pkg.tar.zst
M README.md +13 -5
@@ -10,18 +10,28 @@ Requires Linux and Go 1.27.
1010 - **NVIDIA GPUs:** untested. NVIDIA drivers need explicit sync (`linux-drm-syncobj`), which NeferTTY does not implement yet. Testers with NVIDIA hardware are welcome to report issues or contribute.
1111 - **Intel GPUs:** untested.
1212
13-Build: `make build` (requires sibling checkouts of purego-libwayland and purego-vulkan).
13+Build: `make build`.
1414
1515 Run: `nefertty --backend=headless --timeout 5s`
1616
1717 ## Install (Arch Linux)
1818
1919 ```sh
20-make pkg # builds dist/nefertty-*.pkg.tar.zst
20+make pkg # builds dist/nefertty-*.pkg.tar.zst from HEAD
2121 sudo pacman -U dist/nefertty-*.pkg.tar.zst
2222 ```
2323
24-The package installs `nefertty` and a **NeferTTY** session for display managers (Ly, GDM, SDDM). The session runs `nefertty --session`, which shares `WAYLAND_DISPLAY` and `DISPLAY` with D-Bus and systemd user services, so portals and notification daemons reach it. `make dist` alone builds the self-contained source tarball (Go modules vendored) that the package uses; its version ends in `.dirty` when this repo or a sibling module has uncommitted changes.
24+The package installs `nefertty` and a **NeferTTY** session for display managers (Ly, GDM, SDDM). The session runs `nefertty --session`, which shares `WAYLAND_DISPLAY` and `DISPLAY` with D-Bus and systemd user services, so portals and notification daemons reach it.
25+
26+## Developing the bindings
27+
28+NeferTTY depends on tagged releases of [purego-libwayland](https://github.com/bnema/purego-libwayland) and [purego-vulkan](https://github.com/bnema/purego-vulkan). To change them together with NeferTTY, check them out next to it and use a Go workspace (not committed):
29+
30+```sh
31+go work init . ../purego-libwayland ../purego-vulkan
32+```
33+
34+`make pkg` ignores the workspace and builds the versions in `go.mod`: tag a binding change and update `go.mod` before packaging it.
2535
2636 ## Configuration
2737
@@ -39,8 +49,6 @@ startup = wl-paste --watch cliphist store
3949
4050 See `examples/config` for every key and its default. A missing file means defaults. An invalid line logs a warning and keeps that key's default; the rest of the file still applies. Every key applies live when the file changes, including the keyboard layout; each reload logs the keys that changed.
4151
42-Building requires sibling checkouts of purego-libwayland and purego-vulkan until they are published.
43-
4452 ## Running commands
4553
4654 NeferTTY starts a program, not a shell line: `spawn` runs a binary or a script. Anything more than one command with arguments, such as pipes or variables, goes in a script that you write.
@@ -10,18 +10,28 @@ Requires Linux and Go 1.27.
10 - **NVIDIA GPUs:** untested. NVIDIA drivers need explicit sync (`linux-drm-syncobj`), which NeferTTY does not implement yet. Testers with NVIDIA hardware are welcome to report issues or contribute.10 - **NVIDIA GPUs:** untested. NVIDIA drivers need explicit sync (`linux-drm-syncobj`), which NeferTTY does not implement yet. Testers with NVIDIA hardware are welcome to report issues or contribute.
11 - **Intel GPUs:** untested.11 - **Intel GPUs:** untested.
12 12
13-Build: `make build` (requires sibling checkouts of purego-libwayland and purego-vulkan).13+Build: `make build`.
14 14
15 Run: `nefertty --backend=headless --timeout 5s`15 Run: `nefertty --backend=headless --timeout 5s`
16 16
17 ## Install (Arch Linux)17 ## Install (Arch Linux)
18 18
19 ```sh19 ```sh
20-make pkg # builds dist/nefertty-*.pkg.tar.zst20+make pkg # builds dist/nefertty-*.pkg.tar.zst from HEAD
21 sudo pacman -U dist/nefertty-*.pkg.tar.zst21 sudo pacman -U dist/nefertty-*.pkg.tar.zst
22 ```22 ```
23 23
24-The package installs `nefertty` and a **NeferTTY** session for display managers (Ly, GDM, SDDM). The session runs `nefertty --session`, which shares `WAYLAND_DISPLAY` and `DISPLAY` with D-Bus and systemd user services, so portals and notification daemons reach it. `make dist` alone builds the self-contained source tarball (Go modules vendored) that the package uses; its version ends in `.dirty` when this repo or a sibling module has uncommitted changes.24+The package installs `nefertty` and a **NeferTTY** session for display managers (Ly, GDM, SDDM). The session runs `nefertty --session`, which shares `WAYLAND_DISPLAY` and `DISPLAY` with D-Bus and systemd user services, so portals and notification daemons reach it.
25+
26+## Developing the bindings
27+
28+NeferTTY depends on tagged releases of [purego-libwayland](https://github.com/bnema/purego-libwayland) and [purego-vulkan](https://github.com/bnema/purego-vulkan). To change them together with NeferTTY, check them out next to it and use a Go workspace (not committed):
29+
30+```sh
31+go work init . ../purego-libwayland ../purego-vulkan
32+```
33+
34+`make pkg` ignores the workspace and builds the versions in `go.mod`: tag a binding change and update `go.mod` before packaging it.
25 35
26 ## Configuration36 ## Configuration
27 37
@@ -39,8 +49,6 @@ startup = wl-paste --watch cliphist store
39 49
40 See `examples/config` for every key and its default. A missing file means defaults. An invalid line logs a warning and keeps that key's default; the rest of the file still applies. Every key applies live when the file changes, including the keyboard layout; each reload logs the keys that changed.50 See `examples/config` for every key and its default. A missing file means defaults. An invalid line logs a warning and keeps that key's default; the rest of the file still applies. Every key applies live when the file changes, including the keyboard layout; each reload logs the keys that changed.
41 51
42-Building requires sibling checkouts of purego-libwayland and purego-vulkan until they are published.
43-
44 ## Running commands52 ## Running commands
45 53
46 NeferTTY starts a program, not a shell line: `spawn` runs a binary or a script. Anything more than one command with arguments, such as pipes or variables, goes in a script that you write.54 NeferTTY starts a program, not a shell line: `spawn` runs a binary or a script. Anything more than one command with arguments, such as pipes or variables, goes in a script that you write.
M cmd/nefertty/main.go +1 -1
@@ -104,7 +104,7 @@ func run() error {
104104 }
105105 v := info.Main.Version
106106 if version != "" {
107- v = version // set by release builds (make dist)
107+ v = version // set by packaged builds (PKGBUILD -X main.version)
108108 } else if v == "" {
109109 v = "(devel)"
110110 }
@@ -104,7 +104,7 @@ func run() error {
104 }104 }
105 v := info.Main.Version105 v := info.Main.Version
106 if version != "" {106 if version != "" {
107- v = version // set by release builds (make dist)107+ v = version // set by packaged builds (PKGBUILD -X main.version)
108 } else if v == "" {108 } else if v == "" {
109 v = "(devel)"109 v = "(devel)"
110 }110 }
M go.mod +2 -6
@@ -4,8 +4,8 @@ go 1.27
44
55 require (
66 github.com/bnema/purego v0.11.0-bnema.4
7- github.com/bnema/purego-libwayland v0.0.0
8- github.com/bnema/purego-vulkan v0.0.0
7+ github.com/bnema/purego-libwayland v0.1.0
8+ github.com/bnema/purego-vulkan v0.4.0
99 github.com/bnema/wlturbo v0.2.0
1010 github.com/bnema/zerowrap v1.4.1
1111 github.com/rs/zerolog v1.35.1
@@ -21,7 +21,3 @@ require (
2121 go.yaml.in/yaml/v3 v3.0.5 // indirect
2222 gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
2323 )
24-
25-replace github.com/bnema/purego-libwayland => ../purego-libwayland
26-
27-replace github.com/bnema/purego-vulkan => ../purego-vulkan
@@ -4,8 +4,8 @@ go 1.27
4 4
5 require (5 require (
6 github.com/bnema/purego v0.11.0-bnema.46 github.com/bnema/purego v0.11.0-bnema.4
7- github.com/bnema/purego-libwayland v0.0.07+ github.com/bnema/purego-libwayland v0.1.0
8- github.com/bnema/purego-vulkan v0.0.08+ github.com/bnema/purego-vulkan v0.4.0
9 github.com/bnema/wlturbo v0.2.09 github.com/bnema/wlturbo v0.2.0
10 github.com/bnema/zerowrap v1.4.110 github.com/bnema/zerowrap v1.4.1
11 github.com/rs/zerolog v1.35.111 github.com/rs/zerolog v1.35.1
@@ -21,7 +21,3 @@ require (
21 go.yaml.in/yaml/v3 v3.0.5 // indirect21 go.yaml.in/yaml/v3 v3.0.5 // indirect
22 gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect22 gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
23 )23 )
24-
25-replace github.com/bnema/purego-libwayland => ../purego-libwayland
26-
27-replace github.com/bnema/purego-vulkan => ../purego-vulkan
M go.sum +4 -0
@@ -1,5 +1,9 @@
11 github.com/bnema/purego v0.11.0-bnema.4 h1:uQjx9QtM945rD6HkwYzPGuVN7wKr5HrFKIWE3kRprbs=
22 github.com/bnema/purego v0.11.0-bnema.4/go.mod h1:LHW8Sb4QO18dQaLVRU8tZCGM0SjsC+agFW/3M3nCUtg=
3+github.com/bnema/purego-libwayland v0.1.0 h1:bPsZcR47Ra1uBM8h2BGk1MhY2WnTX31hzo7KGhhyA/E=
4+github.com/bnema/purego-libwayland v0.1.0/go.mod h1:nN9HngjyWl/8pHLpFcFgtgQCnae8oP9xXjLfY9hMS8w=
5+github.com/bnema/purego-vulkan v0.4.0 h1:AcnZHek4AJ1ECnQ+8azKtbMP/T15NO25G9U14k1nImo=
6+github.com/bnema/purego-vulkan v0.4.0/go.mod h1:ttS5qS7yTInFL8GvZwhvXkEc96u/nwXza0ZAMu9rpYM=
37 github.com/bnema/wlturbo v0.2.0 h1:gZPe81TrrrYW8xrbZpEvZnDI7VQBm60+dgAapbXJyRQ=
48 github.com/bnema/wlturbo v0.2.0/go.mod h1:4i1k1wyw7FDWOkh2hg1ZwPfrPRn3+E6WrYg9Qrt74CA=
59 github.com/bnema/zerowrap v1.4.1 h1:v70w8LDU2+FU+EX/etY9DjVwOAWN0fUKShwZyZHnyLU=
@@ -1,5 +1,9 @@
1 github.com/bnema/purego v0.11.0-bnema.4 h1:uQjx9QtM945rD6HkwYzPGuVN7wKr5HrFKIWE3kRprbs=1 github.com/bnema/purego v0.11.0-bnema.4 h1:uQjx9QtM945rD6HkwYzPGuVN7wKr5HrFKIWE3kRprbs=
2 github.com/bnema/purego v0.11.0-bnema.4/go.mod h1:LHW8Sb4QO18dQaLVRU8tZCGM0SjsC+agFW/3M3nCUtg=2 github.com/bnema/purego v0.11.0-bnema.4/go.mod h1:LHW8Sb4QO18dQaLVRU8tZCGM0SjsC+agFW/3M3nCUtg=
3+github.com/bnema/purego-libwayland v0.1.0 h1:bPsZcR47Ra1uBM8h2BGk1MhY2WnTX31hzo7KGhhyA/E=
4+github.com/bnema/purego-libwayland v0.1.0/go.mod h1:nN9HngjyWl/8pHLpFcFgtgQCnae8oP9xXjLfY9hMS8w=
5+github.com/bnema/purego-vulkan v0.4.0 h1:AcnZHek4AJ1ECnQ+8azKtbMP/T15NO25G9U14k1nImo=
6+github.com/bnema/purego-vulkan v0.4.0/go.mod h1:ttS5qS7yTInFL8GvZwhvXkEc96u/nwXza0ZAMu9rpYM=
3 github.com/bnema/wlturbo v0.2.0 h1:gZPe81TrrrYW8xrbZpEvZnDI7VQBm60+dgAapbXJyRQ=7 github.com/bnema/wlturbo v0.2.0 h1:gZPe81TrrrYW8xrbZpEvZnDI7VQBm60+dgAapbXJyRQ=
4 github.com/bnema/wlturbo v0.2.0/go.mod h1:4i1k1wyw7FDWOkh2hg1ZwPfrPRn3+E6WrYg9Qrt74CA=8 github.com/bnema/wlturbo v0.2.0/go.mod h1:4i1k1wyw7FDWOkh2hg1ZwPfrPRn3+E6WrYg9Qrt74CA=
5 github.com/bnema/zerowrap v1.4.1 h1:v70w8LDU2+FU+EX/etY9DjVwOAWN0fUKShwZyZHnyLU=9 github.com/bnema/zerowrap v1.4.1 h1:v70w8LDU2+FU+EX/etY9DjVwOAWN0fUKShwZyZHnyLU=
M packaging/arch/PKGBUILD +9 -2
@@ -1,4 +1,4 @@
1-# Built by `make pkg` at the repo root, from the `make dist` tarball.
1+# Built by `make pkg` at the repo root, from `git archive HEAD`.
22 pkgname=nefertty
33 pkgver=0.0.0
44 pkgrel=1
@@ -17,9 +17,16 @@ optdepends=('xwayland-satellite>=0.7: X11 apps'
1717 source=("$pkgname-$pkgver.tar.gz")
1818 sha256sums=('SKIP')
1919
20+prepare() {
21+ cd "$pkgname-$pkgver"
22+ export GOPATH="$srcdir/gopath" GOFLAGS='-mod=readonly -modcacherw' GOWORK=off GOTOOLCHAIN=local
23+ go mod download
24+ go mod vendor
25+}
26+
2027 build() {
2128 cd "$pkgname-$pkgver"
22- export CGO_ENABLED=0 GOFLAGS='-mod=vendor -trimpath -buildvcs=false -buildmode=pie' GOPROXY=off GOTOOLCHAIN=local
29+ export CGO_ENABLED=0 GOFLAGS='-mod=vendor -trimpath -buildvcs=false -buildmode=pie' GOPROXY=off GOWORK=off GOTOOLCHAIN=local
2330 go build -ldflags "-X main.version=$pkgver" -o nefertty ./cmd/nefertty
2431 }
2532
@@ -1,4 +1,4 @@
1-# Built by `make pkg` at the repo root, from the `make dist` tarball.1+# Built by `make pkg` at the repo root, from `git archive HEAD`.
2 pkgname=nefertty2 pkgname=nefertty
3 pkgver=0.0.03 pkgver=0.0.0
4 pkgrel=14 pkgrel=1
@@ -17,9 +17,16 @@ optdepends=('xwayland-satellite>=0.7: X11 apps'
17 source=("$pkgname-$pkgver.tar.gz")17 source=("$pkgname-$pkgver.tar.gz")
18 sha256sums=('SKIP')18 sha256sums=('SKIP')
19 19
20+prepare() {
21+ cd "$pkgname-$pkgver"
22+ export GOPATH="$srcdir/gopath" GOFLAGS='-mod=readonly -modcacherw' GOWORK=off GOTOOLCHAIN=local
23+ go mod download
24+ go mod vendor
25+}
26+
20 build() {27 build() {
21 cd "$pkgname-$pkgver"28 cd "$pkgname-$pkgver"
22- export CGO_ENABLED=0 GOFLAGS='-mod=vendor -trimpath -buildvcs=false -buildmode=pie' GOPROXY=off GOTOOLCHAIN=local29+ export CGO_ENABLED=0 GOFLAGS='-mod=vendor -trimpath -buildvcs=false -buildmode=pie' GOPROXY=off GOWORK=off GOTOOLCHAIN=local
23 go build -ldflags "-X main.version=$pkgver" -o nefertty ./cmd/nefertty30 go build -ldflags "-X main.version=$pkgver" -o nefertty ./cmd/nefertty
24 }31 }
25 32

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