detached 15e7c83

feat(aur): add AUR packaging support with CI automation

commit
15e7c837db3077bf6bd532c13874140c3b6811b2
author
bnema · · 2025-12-30 21:23 UTC
parent
6c872d5
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
8 files · +262 -0
A .github/workflows/aur.yml +106 -0
@@ -0,0 +1,106 @@
1+name: AUR Publish
2+
3+on:
4+ workflow_run:
5+ workflows: ["Flatpak"]
6+ types:
7+ - completed
8+
9+jobs:
10+ publish-aur:
11+ name: Publish to AUR
12+ runs-on: ubuntu-latest
13+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
14+
15+ steps:
16+ - uses: actions/checkout@v4
17+ with:
18+ fetch-depth: 0
19+
20+ - name: Get release info
21+ id: release
22+ run: |
23+ TAG=$(git describe --tags --abbrev=0)
24+ VERSION=${TAG#v}
25+ echo "tag=${TAG}" >> $GITHUB_OUTPUT
26+ echo "version=${VERSION}" >> $GITHUB_OUTPUT
27+
28+ - name: Wait 1 hour before publishing
29+ run: |
30+ echo "Waiting 1 hour before publishing to AUR..."
31+ echo "This gives time to cancel if there are issues with the release."
32+ echo "Started at: $(date -u)"
33+ sleep 3600
34+ echo "Wait complete at: $(date -u)"
35+
36+ - name: Verify release still exists
37+ run: |
38+ TAG="${{ steps.release.outputs.tag }}"
39+ if ! gh release view "$TAG" &>/dev/null; then
40+ echo "::error::Release $TAG no longer exists. Aborting AUR publish."
41+ exit 1
42+ fi
43+ echo "Release $TAG verified, proceeding with AUR publish."
44+ env:
45+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
46+
47+ - name: Download checksums
48+ id: checksum
49+ run: |
50+ curl -sL "https://github.com/bnema/dumber/releases/download/${{ steps.release.outputs.tag }}/checksums.txt" -o checksums.txt
51+ SHA256=$(grep 'dumber_linux_x86_64.tar.gz' checksums.txt | cut -d' ' -f1)
52+ echo "sha256=${SHA256}" >> $GITHUB_OUTPUT
53+
54+ - name: Generate PKGBUILD for dumber-browser-bin
55+ env:
56+ VERSION: ${{ steps.release.outputs.version }}
57+ SHA256: ${{ steps.checksum.outputs.sha256 }}
58+ run: |
59+ mkdir -p pkgbuild/dumber-browser-bin
60+ cat > pkgbuild/dumber-browser-bin/PKGBUILD << EOF
61+ # Maintainer: bnema <b at bnema dot dev>
62+ pkgname=dumber-browser-bin
63+ pkgver=${VERSION}
64+ pkgrel=1
65+ pkgdesc="A minimal keyboard-driven browser for tiling WMs"
66+ arch=('x86_64')
67+ url="https://github.com/bnema/dumber"
68+ license=('MIT')
69+ depends=('gtk4' 'webkitgtk-6.0')
70+ optdepends=(
71+ 'gstreamer: Media playback support'
72+ 'gst-plugins-base: Base media codecs'
73+ 'gst-plugins-good: Additional media codecs'
74+ 'gst-plugins-bad: Extended media codecs'
75+ 'gst-libav: FFmpeg-based codecs'
76+ )
77+ provides=('dumber-browser' 'dumber')
78+ conflicts=('dumber-browser' 'dumber-browser-git')
79+ source=("\${pkgname}-\${pkgver}.tar.gz::https://github.com/bnema/dumber/releases/download/v\${pkgver}/dumber_linux_x86_64.tar.gz"
80+ "dev.bnema.Dumber.desktop::https://raw.githubusercontent.com/bnema/dumber/v\${pkgver}/dev.bnema.Dumber.desktop"
81+ "logo-512.png::https://raw.githubusercontent.com/bnema/dumber/v\${pkgver}/assets/logo-512.png"
82+ "LICENSE::https://raw.githubusercontent.com/bnema/dumber/v\${pkgver}/LICENSE")
83+ sha256sums=('${SHA256}'
84+ 'SKIP'
85+ 'SKIP'
86+ 'SKIP')
87+
88+ package() {
89+ cd "dumber_\${pkgver}"
90+ install -Dm755 dumber "\${pkgdir}/usr/bin/dumber"
91+ install -Dm644 "\${srcdir}/dev.bnema.Dumber.desktop" "\${pkgdir}/usr/share/applications/dev.bnema.Dumber.desktop"
92+ install -Dm644 "\${srcdir}/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+ EOF
96+
97+ - name: Publish dumber-browser-bin to AUR
98+ uses: KSXGitHub/github-actions-deploy-aur@v4.1.1
99+ with:
100+ pkgname: dumber-browser-bin
101+ pkgbuild: ./pkgbuild/dumber-browser-bin/PKGBUILD
102+ commit_username: ${{ secrets.AUR_USERNAME }}
103+ commit_email: ${{ secrets.AUR_EMAIL }}
104+ ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
105+ commit_message: "Update to ${{ steps.release.outputs.version }}"
106+ ssh_keyscan_types: rsa,ecdsa,ed25519
@@ -0,0 +1,106 @@
1+name: AUR Publish
2+
3+on:
4+ workflow_run:
5+ workflows: ["Flatpak"]
6+ types:
7+ - completed
8+
9+jobs:
10+ publish-aur:
11+ name: Publish to AUR
12+ runs-on: ubuntu-latest
13+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
14+
15+ steps:
16+ - uses: actions/checkout@v4
17+ with:
18+ fetch-depth: 0
19+
20+ - name: Get release info
21+ id: release
22+ run: |
23+ TAG=$(git describe --tags --abbrev=0)
24+ VERSION=${TAG#v}
25+ echo "tag=${TAG}" >> $GITHUB_OUTPUT
26+ echo "version=${VERSION}" >> $GITHUB_OUTPUT
27+
28+ - name: Wait 1 hour before publishing
29+ run: |
30+ echo "Waiting 1 hour before publishing to AUR..."
31+ echo "This gives time to cancel if there are issues with the release."
32+ echo "Started at: $(date -u)"
33+ sleep 3600
34+ echo "Wait complete at: $(date -u)"
35+
36+ - name: Verify release still exists
37+ run: |
38+ TAG="${{ steps.release.outputs.tag }}"
39+ if ! gh release view "$TAG" &>/dev/null; then
40+ echo "::error::Release $TAG no longer exists. Aborting AUR publish."
41+ exit 1
42+ fi
43+ echo "Release $TAG verified, proceeding with AUR publish."
44+ env:
45+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
46+
47+ - name: Download checksums
48+ id: checksum
49+ run: |
50+ curl -sL "https://github.com/bnema/dumber/releases/download/${{ steps.release.outputs.tag }}/checksums.txt" -o checksums.txt
51+ SHA256=$(grep 'dumber_linux_x86_64.tar.gz' checksums.txt | cut -d' ' -f1)
52+ echo "sha256=${SHA256}" >> $GITHUB_OUTPUT
53+
54+ - name: Generate PKGBUILD for dumber-browser-bin
55+ env:
56+ VERSION: ${{ steps.release.outputs.version }}
57+ SHA256: ${{ steps.checksum.outputs.sha256 }}
58+ run: |
59+ mkdir -p pkgbuild/dumber-browser-bin
60+ cat > pkgbuild/dumber-browser-bin/PKGBUILD << EOF
61+ # Maintainer: bnema <b at bnema dot dev>
62+ pkgname=dumber-browser-bin
63+ pkgver=${VERSION}
64+ pkgrel=1
65+ pkgdesc="A minimal keyboard-driven browser for tiling WMs"
66+ arch=('x86_64')
67+ url="https://github.com/bnema/dumber"
68+ license=('MIT')
69+ depends=('gtk4' 'webkitgtk-6.0')
70+ optdepends=(
71+ 'gstreamer: Media playback support'
72+ 'gst-plugins-base: Base media codecs'
73+ 'gst-plugins-good: Additional media codecs'
74+ 'gst-plugins-bad: Extended media codecs'
75+ 'gst-libav: FFmpeg-based codecs'
76+ )
77+ provides=('dumber-browser' 'dumber')
78+ conflicts=('dumber-browser' 'dumber-browser-git')
79+ source=("\${pkgname}-\${pkgver}.tar.gz::https://github.com/bnema/dumber/releases/download/v\${pkgver}/dumber_linux_x86_64.tar.gz"
80+ "dev.bnema.Dumber.desktop::https://raw.githubusercontent.com/bnema/dumber/v\${pkgver}/dev.bnema.Dumber.desktop"
81+ "logo-512.png::https://raw.githubusercontent.com/bnema/dumber/v\${pkgver}/assets/logo-512.png"
82+ "LICENSE::https://raw.githubusercontent.com/bnema/dumber/v\${pkgver}/LICENSE")
83+ sha256sums=('${SHA256}'
84+ 'SKIP'
85+ 'SKIP'
86+ 'SKIP')
87+
88+ package() {
89+ cd "dumber_\${pkgver}"
90+ install -Dm755 dumber "\${pkgdir}/usr/bin/dumber"
91+ install -Dm644 "\${srcdir}/dev.bnema.Dumber.desktop" "\${pkgdir}/usr/share/applications/dev.bnema.Dumber.desktop"
92+ install -Dm644 "\${srcdir}/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+ EOF
96+
97+ - name: Publish dumber-browser-bin to AUR
98+ uses: KSXGitHub/github-actions-deploy-aur@v4.1.1
99+ with:
100+ pkgname: dumber-browser-bin
101+ pkgbuild: ./pkgbuild/dumber-browser-bin/PKGBUILD
102+ commit_username: ${{ secrets.AUR_USERNAME }}
103+ commit_email: ${{ secrets.AUR_EMAIL }}
104+ ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
105+ commit_message: "Update to ${{ steps.release.outputs.version }}"
106+ ssh_keyscan_types: rsa,ecdsa,ed25519
M .gitignore +11 -0
@@ -96,3 +96,14 @@ flatpak-repo/
9696 .flatpak-builder/
9797 *.flatpak
9898 builddir/
99+
100+# AUR build artifacts
101+aur/aur-*/
102+aur/*/src/
103+aur/*/pkg/
104+aur/*/*.tar.gz
105+aur/*/*.tar.zst
106+aur/*/*.pkg.tar.zst
107+aur/*/LICENSE
108+aur/*/dev.bnema.Dumber.desktop
109+aur/*/logo-512.png
@@ -96,3 +96,14 @@ flatpak-repo/
96 .flatpak-builder/96 .flatpak-builder/
97 *.flatpak97 *.flatpak
98 builddir/98 builddir/
99+
100+# AUR build artifacts
101+aur/aur-*/
102+aur/*/src/
103+aur/*/pkg/
104+aur/*/*.tar.gz
105+aur/*/*.tar.zst
106+aur/*/*.pkg.tar.zst
107+aur/*/LICENSE
108+aur/*/dev.bnema.Dumber.desktop
109+aur/*/logo-512.png
M CHANGELOG.md +5 -0
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
55 ## [Unreleased]
66
77 ### Added
8+- **AUR packaging support**: Dumber is now available on the Arch User Repository (AUR).
9+ - `dumber-browser-bin`: Pre-built binary package from GitHub releases (recommended).
10+ - `dumber-browser-git`: Build from source, tracks latest git.
11+ - Install with `yay -S dumber-browser-bin` or `paru -S dumber-browser-bin`.
12+ - Automatic AUR updates via GitHub Actions (1 hour delay after Flatpak build for safety).
813
914 ### Changed
1015
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
5 ## [Unreleased]5 ## [Unreleased]
6 6
7 ### Added7 ### Added
8+- **AUR packaging support**: Dumber is now available on the Arch User Repository (AUR).
9+ - `dumber-browser-bin`: Pre-built binary package from GitHub releases (recommended).
10+ - `dumber-browser-git`: Build from source, tracks latest git.
11+ - Install with `yay -S dumber-browser-bin` or `paru -S dumber-browser-bin`.
12+ - Automatic AUR updates via GitHub Actions (1 hour delay after Flatpak build for safety).
8 13
9 ### Changed14 ### Changed
10 15
M README.md +12 -0
@@ -178,6 +178,18 @@ Development:
178178
179179 Pre-built binaries are available for Linux (x86_64/amd64) in the [releases page](https://github.com/bnema/dumber/releases). See [Quick Start](#quick-start) for installation instructions.
180180
181+### Arch Linux (AUR)
182+
183+Dumber is available on the AUR:
184+
185+```bash
186+# Binary package (pre-built, recommended)
187+yay -S dumber-browser-bin
188+
189+# Or build from source (latest git)
190+yay -S dumber-browser-git
191+```
192+
181193 ### Flatpak
182194
183195 A Flatpak bundle is available in each release. This is the easiest way to install Dumber with all dependencies included:
@@ -178,6 +178,18 @@ Development:
178 178
179 Pre-built binaries are available for Linux (x86_64/amd64) in the [releases page](https://github.com/bnema/dumber/releases). See [Quick Start](#quick-start) for installation instructions.179 Pre-built binaries are available for Linux (x86_64/amd64) in the [releases page](https://github.com/bnema/dumber/releases). See [Quick Start](#quick-start) for installation instructions.
180 180
181+### Arch Linux (AUR)
182+
183+Dumber is available on the AUR:
184+
185+```bash
186+# Binary package (pre-built, recommended)
187+yay -S dumber-browser-bin
188+
189+# Or build from source (latest git)
190+yay -S dumber-browser-git
191+```
192+
181 ### Flatpak193 ### Flatpak
182 194
183 A Flatpak bundle is available in each release. This is the easiest way to install Dumber with all dependencies included:195 A Flatpak bundle is available in each release. This is the easiest way to install Dumber with all dependencies included:
A aur/dumber-browser-bin/.SRCINFO +28 -0
@@ -0,0 +1,28 @@
1+pkgbase = dumber-browser-bin
2+ pkgdesc = A minimal keyboard-driven browser for tiling WMs
3+ pkgver = 0.23.1
4+ pkgrel = 1
5+ url = https://github.com/bnema/dumber
6+ arch = x86_64
7+ license = MIT
8+ depends = gtk4
9+ depends = webkitgtk-6.0
10+ optdepends = gstreamer: Media playback support
11+ optdepends = gst-plugins-base: Base media codecs
12+ optdepends = gst-plugins-good: Additional media codecs
13+ optdepends = gst-plugins-bad: Extended media codecs
14+ optdepends = gst-libav: FFmpeg-based codecs
15+ provides = dumber-browser
16+ provides = dumber
17+ conflicts = dumber-browser
18+ conflicts = dumber-browser-git
19+ source = dumber-browser-bin-0.23.1.tar.gz::https://github.com/bnema/dumber/releases/download/v0.23.1/dumber_linux_x86_64.tar.gz
20+ source = dev.bnema.Dumber.desktop::https://raw.githubusercontent.com/bnema/dumber/v0.23.1/dev.bnema.Dumber.desktop
21+ source = logo-512.png::https://raw.githubusercontent.com/bnema/dumber/v0.23.1/assets/logo-512.png
22+ source = LICENSE::https://raw.githubusercontent.com/bnema/dumber/v0.23.1/LICENSE
23+ sha256sums = c8230e3a5258333fed401439b08c6ef7b0681dd14f4e97a7e837dfc2c4cc83a0
24+ sha256sums = SKIP
25+ sha256sums = SKIP
26+ sha256sums = SKIP
27+
28+pkgname = dumber-browser-bin
@@ -0,0 +1,28 @@
1+pkgbase = dumber-browser-bin
2+ pkgdesc = A minimal keyboard-driven browser for tiling WMs
3+ pkgver = 0.23.1
4+ pkgrel = 1
5+ url = https://github.com/bnema/dumber
6+ arch = x86_64
7+ license = MIT
8+ depends = gtk4
9+ depends = webkitgtk-6.0
10+ optdepends = gstreamer: Media playback support
11+ optdepends = gst-plugins-base: Base media codecs
12+ optdepends = gst-plugins-good: Additional media codecs
13+ optdepends = gst-plugins-bad: Extended media codecs
14+ optdepends = gst-libav: FFmpeg-based codecs
15+ provides = dumber-browser
16+ provides = dumber
17+ conflicts = dumber-browser
18+ conflicts = dumber-browser-git
19+ source = dumber-browser-bin-0.23.1.tar.gz::https://github.com/bnema/dumber/releases/download/v0.23.1/dumber_linux_x86_64.tar.gz
20+ source = dev.bnema.Dumber.desktop::https://raw.githubusercontent.com/bnema/dumber/v0.23.1/dev.bnema.Dumber.desktop
21+ source = logo-512.png::https://raw.githubusercontent.com/bnema/dumber/v0.23.1/assets/logo-512.png
22+ source = LICENSE::https://raw.githubusercontent.com/bnema/dumber/v0.23.1/LICENSE
23+ sha256sums = c8230e3a5258333fed401439b08c6ef7b0681dd14f4e97a7e837dfc2c4cc83a0
24+ sha256sums = SKIP
25+ sha256sums = SKIP
26+ sha256sums = SKIP
27+
28+pkgname = dumber-browser-bin
A aur/dumber-browser-bin/PKGBUILD +34 -0
@@ -0,0 +1,34 @@
1+# Maintainer: bnema <b at bnema dot dev>
2+pkgname=dumber-browser-bin
3+pkgver=0.23.1
4+pkgrel=1
5+pkgdesc="A minimal keyboard-driven browser for tiling WMs"
6+arch=('x86_64')
7+url="https://github.com/bnema/dumber"
8+license=('MIT')
9+depends=('gtk4' 'webkitgtk-6.0')
10+optdepends=(
11+ 'gstreamer: Media playback support'
12+ 'gst-plugins-base: Base media codecs'
13+ 'gst-plugins-good: Additional media codecs'
14+ 'gst-plugins-bad: Extended media codecs'
15+ 'gst-libav: FFmpeg-based codecs'
16+)
17+provides=('dumber-browser' 'dumber')
18+conflicts=('dumber-browser' 'dumber-browser-git')
19+source=("${pkgname}-${pkgver}.tar.gz::https://github.com/bnema/dumber/releases/download/v${pkgver}/dumber_linux_x86_64.tar.gz"
20+ "dev.bnema.Dumber.desktop::https://raw.githubusercontent.com/bnema/dumber/v${pkgver}/dev.bnema.Dumber.desktop"
21+ "logo-512.png::https://raw.githubusercontent.com/bnema/dumber/v${pkgver}/assets/logo-512.png"
22+ "LICENSE::https://raw.githubusercontent.com/bnema/dumber/v${pkgver}/LICENSE")
23+sha256sums=('c8230e3a5258333fed401439b08c6ef7b0681dd14f4e97a7e837dfc2c4cc83a0'
24+ 'SKIP'
25+ 'SKIP'
26+ 'SKIP')
27+
28+package() {
29+ cd "dumber_${pkgver}"
30+ install -Dm755 dumber "${pkgdir}/usr/bin/dumber"
31+ install -Dm644 "${srcdir}/dev.bnema.Dumber.desktop" "${pkgdir}/usr/share/applications/dev.bnema.Dumber.desktop"
32+ install -Dm644 "${srcdir}/logo-512.png" "${pkgdir}/usr/share/icons/hicolor/512x512/apps/dev.bnema.Dumber.png"
33+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
34+}
@@ -0,0 +1,34 @@
1+# Maintainer: bnema <b at bnema dot dev>
2+pkgname=dumber-browser-bin
3+pkgver=0.23.1
4+pkgrel=1
5+pkgdesc="A minimal keyboard-driven browser for tiling WMs"
6+arch=('x86_64')
7+url="https://github.com/bnema/dumber"
8+license=('MIT')
9+depends=('gtk4' 'webkitgtk-6.0')
10+optdepends=(
11+ 'gstreamer: Media playback support'
12+ 'gst-plugins-base: Base media codecs'
13+ 'gst-plugins-good: Additional media codecs'
14+ 'gst-plugins-bad: Extended media codecs'
15+ 'gst-libav: FFmpeg-based codecs'
16+)
17+provides=('dumber-browser' 'dumber')
18+conflicts=('dumber-browser' 'dumber-browser-git')
19+source=("${pkgname}-${pkgver}.tar.gz::https://github.com/bnema/dumber/releases/download/v${pkgver}/dumber_linux_x86_64.tar.gz"
20+ "dev.bnema.Dumber.desktop::https://raw.githubusercontent.com/bnema/dumber/v${pkgver}/dev.bnema.Dumber.desktop"
21+ "logo-512.png::https://raw.githubusercontent.com/bnema/dumber/v${pkgver}/assets/logo-512.png"
22+ "LICENSE::https://raw.githubusercontent.com/bnema/dumber/v${pkgver}/LICENSE")
23+sha256sums=('c8230e3a5258333fed401439b08c6ef7b0681dd14f4e97a7e837dfc2c4cc83a0'
24+ 'SKIP'
25+ 'SKIP'
26+ 'SKIP')
27+
28+package() {
29+ cd "dumber_${pkgver}"
30+ install -Dm755 dumber "${pkgdir}/usr/bin/dumber"
31+ install -Dm644 "${srcdir}/dev.bnema.Dumber.desktop" "${pkgdir}/usr/share/applications/dev.bnema.Dumber.desktop"
32+ install -Dm644 "${srcdir}/logo-512.png" "${pkgdir}/usr/share/icons/hicolor/512x512/apps/dev.bnema.Dumber.png"
33+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
34+}
A aur/dumber-browser-git/.SRCINFO +25 -0
@@ -0,0 +1,25 @@
1+pkgbase = dumber-browser-git
2+ pkgdesc = A minimal keyboard-driven browser for tiling WMs (git version)
3+ pkgver = 0.23.1.r0.g6c872d5
4+ pkgrel = 1
5+ url = https://github.com/bnema/dumber
6+ arch = x86_64
7+ license = MIT
8+ makedepends = go>=1.25
9+ makedepends = npm
10+ makedepends = git
11+ depends = gtk4
12+ depends = webkitgtk-6.0
13+ optdepends = gstreamer: Media playback support
14+ optdepends = gst-plugins-base: Base media codecs
15+ optdepends = gst-plugins-good: Additional media codecs
16+ optdepends = gst-plugins-bad: Extended media codecs
17+ optdepends = gst-libav: FFmpeg-based codecs
18+ provides = dumber-browser
19+ provides = dumber
20+ conflicts = dumber-browser
21+ conflicts = dumber-browser-bin
22+ source = git+https://github.com/bnema/dumber.git
23+ sha256sums = SKIP
24+
25+pkgname = dumber-browser-git
@@ -0,0 +1,25 @@
1+pkgbase = dumber-browser-git
2+ pkgdesc = A minimal keyboard-driven browser for tiling WMs (git version)
3+ pkgver = 0.23.1.r0.g6c872d5
4+ pkgrel = 1
5+ url = https://github.com/bnema/dumber
6+ arch = x86_64
7+ license = MIT
8+ makedepends = go>=1.25
9+ makedepends = npm
10+ makedepends = git
11+ depends = gtk4
12+ depends = webkitgtk-6.0
13+ optdepends = gstreamer: Media playback support
14+ optdepends = gst-plugins-base: Base media codecs
15+ optdepends = gst-plugins-good: Additional media codecs
16+ optdepends = gst-plugins-bad: Extended media codecs
17+ optdepends = gst-libav: FFmpeg-based codecs
18+ provides = dumber-browser
19+ provides = dumber
20+ conflicts = dumber-browser
21+ conflicts = dumber-browser-bin
22+ source = git+https://github.com/bnema/dumber.git
23+ sha256sums = SKIP
24+
25+pkgname = dumber-browser-git
A aur/dumber-browser-git/PKGBUILD +41 -0
@@ -0,0 +1,41 @@
1+# Maintainer: bnema <b at bnema dot dev>
2+pkgname=dumber-browser-git
3+pkgver=0.23.1.r0.g6c872d5
4+pkgrel=1
5+pkgdesc="A minimal keyboard-driven browser for tiling WMs (git version)"
6+arch=('x86_64')
7+url="https://github.com/bnema/dumber"
8+license=('MIT')
9+makedepends=('go>=1.25' 'npm' 'git')
10+depends=('gtk4' 'webkitgtk-6.0')
11+optdepends=(
12+ 'gstreamer: Media playback support'
13+ 'gst-plugins-base: Base media codecs'
14+ 'gst-plugins-good: Additional media codecs'
15+ 'gst-plugins-bad: Extended media codecs'
16+ 'gst-libav: FFmpeg-based codecs'
17+)
18+provides=('dumber-browser' 'dumber')
19+conflicts=('dumber-browser' 'dumber-browser-bin')
20+source=("git+https://github.com/bnema/dumber.git")
21+sha256sums=('SKIP')
22+
23+pkgver() {
24+ cd dumber
25+ 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)"
26+}
27+
28+build() {
29+ cd dumber
30+ export CGO_ENABLED=0
31+ export GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw"
32+ make build
33+}
34+
35+package() {
36+ cd dumber
37+ install -Dm755 dist/dumber "${pkgdir}/usr/bin/dumber"
38+ install -Dm644 dev.bnema.Dumber.desktop "${pkgdir}/usr/share/applications/dev.bnema.Dumber.desktop"
39+ install -Dm644 assets/logo-512.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/dev.bnema.Dumber.png"
40+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
41+}
@@ -0,0 +1,41 @@
1+# Maintainer: bnema <b at bnema dot dev>
2+pkgname=dumber-browser-git
3+pkgver=0.23.1.r0.g6c872d5
4+pkgrel=1
5+pkgdesc="A minimal keyboard-driven browser for tiling WMs (git version)"
6+arch=('x86_64')
7+url="https://github.com/bnema/dumber"
8+license=('MIT')
9+makedepends=('go>=1.25' 'npm' 'git')
10+depends=('gtk4' 'webkitgtk-6.0')
11+optdepends=(
12+ 'gstreamer: Media playback support'
13+ 'gst-plugins-base: Base media codecs'
14+ 'gst-plugins-good: Additional media codecs'
15+ 'gst-plugins-bad: Extended media codecs'
16+ 'gst-libav: FFmpeg-based codecs'
17+)
18+provides=('dumber-browser' 'dumber')
19+conflicts=('dumber-browser' 'dumber-browser-bin')
20+source=("git+https://github.com/bnema/dumber.git")
21+sha256sums=('SKIP')
22+
23+pkgver() {
24+ cd dumber
25+ 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)"
26+}
27+
28+build() {
29+ cd dumber
30+ export CGO_ENABLED=0
31+ export GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw"
32+ make build
33+}
34+
35+package() {
36+ cd dumber
37+ install -Dm755 dist/dumber "${pkgdir}/usr/bin/dumber"
38+ install -Dm644 dev.bnema.Dumber.desktop "${pkgdir}/usr/share/applications/dev.bnema.Dumber.desktop"
39+ install -Dm644 assets/logo-512.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/dev.bnema.Dumber.png"
40+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
41+}

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