detached ed22e0a

Merge pull request #86 from bnema/feat/aur-git-ci

Add CI-triggered AUR publish for dumber-browser-git
commit
ed22e0a1a96b150d70409a3306bd038b42966f7b
author
bnema · · 2025-12-31 06:50 UTC
committer
GitHub · · 2025-12-31 06:50 UTC
merge of
8b943c5 + 82fee26 · diff against the first parent
signature
GPG UnverifiedB5690EEEBB952194 The key is unknown
1 file · +109 -11
M .github/workflows/aur.yml +109 -11
@@ -1,24 +1,122 @@
11 name: AUR Publish
22
3-# This workflow only publishes the dumber-browser-bin package to AUR.
4-# The dumber-browser-git package does not need automated updates since it
5-# always builds from the latest source using `git+https://` in its PKGBUILD.
3+# This workflow publishes both AUR packages:
4+# - dumber-browser-bin: Published after Flatpak workflow completes (on release)
5+# - dumber-browser-git: Published after CI workflow completes on main branch
66
77 on:
88 workflow_run:
9- workflows: ["Flatpak"]
9+ workflows: ["CI", "Flatpak"]
1010 types:
1111 - completed
1212
13-concurrency:
14- group: aur-publish-${{ github.event.workflow_run.head_branch }}
15- cancel-in-progress: true
16-
1713 jobs:
18- publish-aur:
19- name: Publish to AUR
14+ publish-aur-git:
15+ name: Publish dumber-browser-git to AUR
16+ runs-on: ubuntu-latest
17+ if: >
18+ github.event.workflow_run.name == 'CI' &&
19+ github.event.workflow_run.conclusion == 'success' &&
20+ github.event.workflow_run.head_branch == 'main'
21+ concurrency:
22+ group: aur-git-publish
23+ cancel-in-progress: true
24+
25+ steps:
26+ - uses: actions/checkout@v4
27+ with:
28+ ref: ${{ github.event.workflow_run.head_sha }}
29+ fetch-depth: 0
30+
31+ - name: Calculate pkgver
32+ id: pkgver
33+ run: |
34+ # Use same logic as PKGBUILD pkgver() function
35+ PKGVER=$(git describe --long --tags 2>/dev/null | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' || echo "0.0.0.r$(git rev-list --count HEAD).g$(git rev-parse --short HEAD)")
36+ echo "version=${PKGVER}" >> $GITHUB_OUTPUT
37+ echo "Calculated pkgver: ${PKGVER}"
38+
39+ - name: Generate PKGBUILD for dumber-browser-git
40+ run: |
41+ PKGVER="${{ steps.pkgver.outputs.version }}"
42+
43+ mkdir -p pkgbuild/dumber-browser-git
44+
45+ printf '%s\n' \
46+ '# Maintainer: bnema <b at bnema dot dev>' \
47+ 'pkgname=dumber-browser-git' \
48+ "pkgver=${PKGVER}" \
49+ 'pkgrel=1' \
50+ 'pkgdesc="A minimal keyboard-driven browser for tiling WMs (git version)"' \
51+ "arch=('x86_64')" \
52+ 'url="https://github.com/bnema/dumber"' \
53+ "license=('MIT')" \
54+ "makedepends=('go>=1.25' 'npm' 'git')" \
55+ "depends=('gtk4' 'webkitgtk-6.0')" \
56+ 'optdepends=(' \
57+ " 'gst-plugins-base: Base media codecs'" \
58+ " 'gst-plugins-good: Additional media codecs'" \
59+ " 'gst-plugins-bad: Extended media codecs'" \
60+ " 'gst-plugins-ugly: Patented media codecs'" \
61+ " 'gst-libav: FFmpeg-based codecs'" \
62+ " 'gst-plugin-pipewire: PipeWire audio support'" \
63+ " 'gst-plugin-va: Hardware video decoding (VA-API stateless decoders)'" \
64+ " 'pipewire: Audio/video routing'" \
65+ " 'pipewire-pulse: PulseAudio replacement'" \
66+ " 'mesa: VA-API driver for AMD GPUs'" \
67+ " 'libva-nvidia-driver: VA-API driver for NVIDIA GPUs'" \
68+ " 'libva-intel-driver: VA-API driver for older Intel GPUs'" \
69+ " 'intel-media-driver: VA-API driver for newer Intel GPUs (Broadwell+)'" \
70+ ')' \
71+ "provides=('dumber-browser' 'dumber')" \
72+ "conflicts=('dumber-browser' 'dumber-browser-bin')" \
73+ 'source=("git+https://github.com/bnema/dumber.git")' \
74+ "sha256sums=('SKIP')" \
75+ '' \
76+ 'pkgver() {' \
77+ ' cd dumber' \
78+ ' git describe --long --tags 2>/dev/null | sed '"'"'s/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'"'"' || echo "0.0.0.r$(git rev-list --count HEAD).g$(git rev-parse --short HEAD)"' \
79+ '}' \
80+ '' \
81+ 'build() {' \
82+ ' cd dumber' \
83+ ' export CGO_ENABLED=0' \
84+ ' export GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw"' \
85+ ' make build' \
86+ '}' \
87+ '' \
88+ 'package() {' \
89+ ' cd dumber' \
90+ ' install -Dm755 dist/dumber "${pkgdir}/usr/bin/dumber"' \
91+ ' install -Dm644 dev.bnema.Dumber.desktop "${pkgdir}/usr/share/applications/dev.bnema.Dumber.desktop"' \
92+ ' install -Dm644 assets/logo-512.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/dev.bnema.Dumber.png"' \
93+ ' install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"' \
94+ '}' \
95+ > pkgbuild/dumber-browser-git/PKGBUILD
96+
97+ echo "Generated PKGBUILD:"
98+ cat pkgbuild/dumber-browser-git/PKGBUILD
99+
100+ - name: Publish dumber-browser-git to AUR
101+ uses: KSXGitHub/github-actions-deploy-aur@v4.1.1
102+ with:
103+ pkgname: dumber-browser-git
104+ pkgbuild: ./pkgbuild/dumber-browser-git/PKGBUILD
105+ commit_username: ${{ secrets.AUR_USERNAME }}
106+ commit_email: ${{ secrets.AUR_EMAIL }}
107+ ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
108+ commit_message: "Update to ${{ steps.pkgver.outputs.version }}"
109+ ssh_keyscan_types: rsa,ecdsa,ed25519
110+
111+ publish-aur-bin:
112+ name: Publish dumber-browser-bin to AUR
20113 runs-on: ubuntu-latest
21- if: ${{ github.event.workflow_run.conclusion == 'success' }}
114+ if: >
115+ github.event.workflow_run.name == 'Flatpak' &&
116+ github.event.workflow_run.conclusion == 'success'
117+ concurrency:
118+ group: aur-bin-publish-${{ github.event.workflow_run.head_branch }}
119+ cancel-in-progress: true
22120
23121 steps:
24122 - uses: actions/checkout@v4
@@ -1,24 +1,122 @@
1 name: AUR Publish1 name: AUR Publish
2 2
3-# This workflow only publishes the dumber-browser-bin package to AUR.3+# This workflow publishes both AUR packages:
4-# The dumber-browser-git package does not need automated updates since it4+# - dumber-browser-bin: Published after Flatpak workflow completes (on release)
5-# always builds from the latest source using `git+https://` in its PKGBUILD.5+# - dumber-browser-git: Published after CI workflow completes on main branch
6 6
7 on:7 on:
8 workflow_run:8 workflow_run:
9- workflows: ["Flatpak"]9+ workflows: ["CI", "Flatpak"]
10 types:10 types:
11 - completed11 - completed
12 12
13-concurrency:
14- group: aur-publish-${{ github.event.workflow_run.head_branch }}
15- cancel-in-progress: true
16-
17 jobs:13 jobs:
18- publish-aur:14+ publish-aur-git:
19- name: Publish to AUR15+ name: Publish dumber-browser-git to AUR
16+ runs-on: ubuntu-latest
17+ if: >
18+ github.event.workflow_run.name == 'CI' &&
19+ github.event.workflow_run.conclusion == 'success' &&
20+ github.event.workflow_run.head_branch == 'main'
21+ concurrency:
22+ group: aur-git-publish
23+ cancel-in-progress: true
24+
25+ steps:
26+ - uses: actions/checkout@v4
27+ with:
28+ ref: ${{ github.event.workflow_run.head_sha }}
29+ fetch-depth: 0
30+
31+ - name: Calculate pkgver
32+ id: pkgver
33+ run: |
34+ # Use same logic as PKGBUILD pkgver() function
35+ PKGVER=$(git describe --long --tags 2>/dev/null | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' || echo "0.0.0.r$(git rev-list --count HEAD).g$(git rev-parse --short HEAD)")
36+ echo "version=${PKGVER}" >> $GITHUB_OUTPUT
37+ echo "Calculated pkgver: ${PKGVER}"
38+
39+ - name: Generate PKGBUILD for dumber-browser-git
40+ run: |
41+ PKGVER="${{ steps.pkgver.outputs.version }}"
42+
43+ mkdir -p pkgbuild/dumber-browser-git
44+
45+ printf '%s\n' \
46+ '# Maintainer: bnema <b at bnema dot dev>' \
47+ 'pkgname=dumber-browser-git' \
48+ "pkgver=${PKGVER}" \
49+ 'pkgrel=1' \
50+ 'pkgdesc="A minimal keyboard-driven browser for tiling WMs (git version)"' \
51+ "arch=('x86_64')" \
52+ 'url="https://github.com/bnema/dumber"' \
53+ "license=('MIT')" \
54+ "makedepends=('go>=1.25' 'npm' 'git')" \
55+ "depends=('gtk4' 'webkitgtk-6.0')" \
56+ 'optdepends=(' \
57+ " 'gst-plugins-base: Base media codecs'" \
58+ " 'gst-plugins-good: Additional media codecs'" \
59+ " 'gst-plugins-bad: Extended media codecs'" \
60+ " 'gst-plugins-ugly: Patented media codecs'" \
61+ " 'gst-libav: FFmpeg-based codecs'" \
62+ " 'gst-plugin-pipewire: PipeWire audio support'" \
63+ " 'gst-plugin-va: Hardware video decoding (VA-API stateless decoders)'" \
64+ " 'pipewire: Audio/video routing'" \
65+ " 'pipewire-pulse: PulseAudio replacement'" \
66+ " 'mesa: VA-API driver for AMD GPUs'" \
67+ " 'libva-nvidia-driver: VA-API driver for NVIDIA GPUs'" \
68+ " 'libva-intel-driver: VA-API driver for older Intel GPUs'" \
69+ " 'intel-media-driver: VA-API driver for newer Intel GPUs (Broadwell+)'" \
70+ ')' \
71+ "provides=('dumber-browser' 'dumber')" \
72+ "conflicts=('dumber-browser' 'dumber-browser-bin')" \
73+ 'source=("git+https://github.com/bnema/dumber.git")' \
74+ "sha256sums=('SKIP')" \
75+ '' \
76+ 'pkgver() {' \
77+ ' cd dumber' \
78+ ' git describe --long --tags 2>/dev/null | sed '"'"'s/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'"'"' || echo "0.0.0.r$(git rev-list --count HEAD).g$(git rev-parse --short HEAD)"' \
79+ '}' \
80+ '' \
81+ 'build() {' \
82+ ' cd dumber' \
83+ ' export CGO_ENABLED=0' \
84+ ' export GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw"' \
85+ ' make build' \
86+ '}' \
87+ '' \
88+ 'package() {' \
89+ ' cd dumber' \
90+ ' install -Dm755 dist/dumber "${pkgdir}/usr/bin/dumber"' \
91+ ' install -Dm644 dev.bnema.Dumber.desktop "${pkgdir}/usr/share/applications/dev.bnema.Dumber.desktop"' \
92+ ' install -Dm644 assets/logo-512.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/dev.bnema.Dumber.png"' \
93+ ' install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"' \
94+ '}' \
95+ > pkgbuild/dumber-browser-git/PKGBUILD
96+
97+ echo "Generated PKGBUILD:"
98+ cat pkgbuild/dumber-browser-git/PKGBUILD
99+
100+ - name: Publish dumber-browser-git to AUR
101+ uses: KSXGitHub/github-actions-deploy-aur@v4.1.1
102+ with:
103+ pkgname: dumber-browser-git
104+ pkgbuild: ./pkgbuild/dumber-browser-git/PKGBUILD
105+ commit_username: ${{ secrets.AUR_USERNAME }}
106+ commit_email: ${{ secrets.AUR_EMAIL }}
107+ ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
108+ commit_message: "Update to ${{ steps.pkgver.outputs.version }}"
109+ ssh_keyscan_types: rsa,ecdsa,ed25519
110+
111+ publish-aur-bin:
112+ name: Publish dumber-browser-bin to AUR
20 runs-on: ubuntu-latest113 runs-on: ubuntu-latest
21- if: ${{ github.event.workflow_run.conclusion == 'success' }}114+ if: >
115+ github.event.workflow_run.name == 'Flatpak' &&
116+ github.event.workflow_run.conclusion == 'success'
117+ concurrency:
118+ group: aur-bin-publish-${{ github.event.workflow_run.head_branch }}
119+ cancel-in-progress: true
22 120
23 steps:121 steps:
24 - uses: actions/checkout@v4122 - uses: actions/checkout@v4

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