.goreleaser.yaml RawHistoryFolder

1# Builds the GitHub release for a pushed v* tag (.github/workflows/release.yml)
2# and generates the neferwl-bin PKGBUILD. The workflow verifies that PKGBUILD
3# with makepkg before it pushes it to the AUR, so GoReleaser never uploads it.
4version: 2
5
6project_name: neferwl
7
8before:
9  hooks:
10    - go mod verify
11
12builds:
13  - id: neferwl
14    main: ./cmd/neferwl
15    binary: neferwl
16    env:
17      - CGO_ENABLED=0
18    goos: [linux]
19    goarch: [amd64, arm64]
20    flags:
21      - -trimpath
22      - -buildmode=pie
23    ldflags:
24      - -s -w -X main.version={{ .Version }}
25    # Same inputs give the same binary.
26    mod_timestamp: "{{ .CommitTimestamp }}"
27
28archives:
29  - id: neferwl
30    ids: [neferwl]
31    name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
32    formats: [tar.gz]
33    # Everything the PKGBUILD package() installs, at the paths of the repo.
34    files:
35      - LICENSE
36      - README.md
37      - examples/config
38      - examples/capture-allow
39      - packaging/neferwl-session
40      - packaging/neferwl.service
41      - packaging/neferwl-shutdown.target
42      - packaging/neferwl.desktop
43      - packaging/neferwl-portals.conf
44
45nfpms:
46  - id: neferwl
47    ids: [neferwl]
48    package_name: neferwl
49    file_name_template: "{{ .PackageName }}_{{ .Version }}_{{ .Arch }}"
50    formats: [deb]
51    vendor: bnema
52    homepage: https://github.com/bnema/neferwl
53    maintainer: "bnema <b@bnema.dev>"
54    description: A Wayland compositor that spends its frames on your apps, not on itself
55    license: GPL-3.0-only
56    section: x11
57    bindir: /usr/bin
58    # Loaded at runtime (purego, no cgo): dpkg-shlibdeps cannot see them.
59    dependencies:
60      - libc6
61      - libinput10
62      - libseat1
63      - libudev1
64      - libxkbcommon0
65      - libvulkan1
66      - mesa-vulkan-drivers | vulkan-icd
67      - dbus
68      - libcap2-bin
69    suggests:
70      - xwayland-satellite
71      - foot
72      - fuzzel
73      - xdg-desktop-portal-gtk
74      - xdg-desktop-portal-gnome
75      - pipewire
76    scripts:
77      postinstall: packaging/deb/postinst
78    contents:
79      - src: packaging/neferwl-session
80        dst: /usr/bin/neferwl-session
81        file_info: {mode: 0755}
82      - src: packaging/neferwl.service
83        dst: /usr/lib/systemd/user/neferwl.service
84      - src: packaging/neferwl-shutdown.target
85        dst: /usr/lib/systemd/user/neferwl-shutdown.target
86      - src: packaging/neferwl.desktop
87        dst: /usr/share/wayland-sessions/neferwl.desktop
88      - src: packaging/neferwl-portals.conf
89        dst: /usr/share/xdg-desktop-portal/neferwl-portals.conf
90      - src: examples/config
91        dst: /usr/share/doc/neferwl/config.example
92      - src: examples/capture-allow
93        dst: /usr/share/doc/neferwl/capture-allow.example
94      - src: README.md
95        dst: /usr/share/doc/neferwl/README.md
96      - src: LICENSE
97        dst: /usr/share/doc/neferwl/copyright
98
99checksum:
100  name_template: checksums.txt
101  algorithm: sha256
102
103snapshot:
104  version_template: "{{ incpatch .Version }}-next"
105
106git:
107  tag_sort: -version:refname
108
109changelog:
110  sort: asc
111  use: github
112  filters:
113    exclude:
114      - "^style(\\([^)]+\\))?:"
115      - "^test(\\([^)]+\\))?:"
116  groups:
117    - title: Added
118      regexp: "^feat(\\([^)]+\\))?!?:"
119      order: 0
120    - title: Fixed
121      regexp: "^fix(\\([^)]+\\))?!?:"
122      order: 1
123    - title: Performance
124      regexp: "^perf(\\([^)]+\\))?!?:"
125      order: 2
126    - title: Changed
127      regexp: "^(refactor|build)(\\([^)]+\\))?!?:"
128      order: 3
129    - title: Documentation
130      regexp: "^docs(\\([^)]+\\))?!?:"
131      order: 4
132    - title: Maintenance
133      regexp: "^(chore|ci)(\\([^)]+\\))?!?:"
134      order: 5
135    - title: Other changes
136      order: 999
137
138release:
139  github:
140    owner: bnema
141    name: neferwl
142  draft: false
143  prerelease: auto
144  mode: replace
145  header: |
146    ## NeferWL {{ .Tag }}
147
148    ### Install on Arch Linux
149
150    ```sh
151    paru -S neferwl-bin   # this release, pre-built (x86_64, aarch64)
152    paru -S neferwl-git   # latest main, built from source
153    ```
154
155    ### Install the pre-built archive
156
157    Linux amd64 and arm64. Replace `amd64` with `arm64` on ARM.
158
159    ```sh
160    gh release download {{ .Tag }} -R bnema/neferwl -p 'neferwl_{{ .Version }}_linux_amd64.tar.gz' -p checksums.txt
161    sha256sum -c --ignore-missing checksums.txt
162    gh attestation verify neferwl_{{ .Version }}_linux_amd64.tar.gz -R bnema/neferwl
163    ```
164
165    ### Install on Ubuntu 24.04 and 26.04
166
167    Replace `amd64` with `arm64` on ARM.
168
169    ```sh
170    gh release download {{ .Tag }} -R bnema/neferwl -p 'neferwl_{{ .Version }}_amd64.deb' -p checksums.txt
171    sha256sum -c --ignore-missing checksums.txt
172    sudo apt install ./neferwl_{{ .Version }}_amd64.deb
173    ```
174
175    The archive holds the `neferwl` binary, the session files from `packaging/` and `examples/config`. See the [README](https://github.com/bnema/neferwl#readme) for runtime dependencies and the session setup.
176  footer: |
177    ---
178
179    **Full changelog**: https://github.com/bnema/neferwl/compare/{{ .PreviousTag }}...{{ .Tag }}
180
181aurs:
182  - name: neferwl-bin
183    ids: [neferwl]
184    homepage: https://github.com/bnema/neferwl
185    description: A Wayland compositor that spends its frames on your apps, not on itself
186    maintainers:
187      - "bnema <b at bnema dot dev>"
188    license: GPL-3.0-only
189    # The release workflow verifies and publishes the generated PKGBUILD.
190    skip_upload: true
191    # publish.sh ships the file next to the PKGBUILD.
192    install: ./packaging/neferwl.install
193    provides: [neferwl]
194    conflicts: [neferwl, neferwl-git]
195    # Loaded at runtime (purego, no cgo): not seen by makepkg's library scan.
196    depends:
197      - glibc
198      - libinput
199      - libxkbcommon
200      - seatd
201      - systemd-libs
202      - vulkan-icd-loader
203      - vulkan-driver
204      - wayland
205      - dbus
206      - libcap
207    optdepends:
208      - "xwayland-satellite>=0.7: X11 apps"
209      - "foot: default terminal"
210      - "fuzzel: launcher"
211      - "xdg-desktop-portal-gtk: file pickers and settings for apps"
212      - "xdg-desktop-portal-gnome: screen sharing and screenshots through the portal"
213      - "pipewire: screen sharing streams"
214      - "nefercap: screenshots and screen recording"
215    package: |-
216      install -Dm755 ./neferwl "${pkgdir}/usr/bin/neferwl"
217      install -Dm755 ./packaging/neferwl-session "${pkgdir}/usr/bin/neferwl-session"
218      install -Dm644 ./packaging/neferwl.service "${pkgdir}/usr/lib/systemd/user/neferwl.service"
219      install -Dm644 ./packaging/neferwl-shutdown.target "${pkgdir}/usr/lib/systemd/user/neferwl-shutdown.target"
220      install -Dm644 ./packaging/neferwl.desktop "${pkgdir}/usr/share/wayland-sessions/neferwl.desktop"
221      install -Dm644 ./packaging/neferwl-portals.conf "${pkgdir}/usr/share/xdg-desktop-portal/neferwl-portals.conf"
222      install -Dm644 ./examples/config "${pkgdir}/usr/share/doc/neferwl/config.example"
223      install -Dm644 ./examples/capture-allow "${pkgdir}/usr/share/doc/neferwl/capture-allow.example"
224      install -Dm644 ./README.md "${pkgdir}/usr/share/doc/neferwl/README.md"
225      install -Dm644 ./LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"

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 24

Tags 10

↑↓ moveenter openesc close