Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
a76188b
feat(linux): clipboard, notifications, tray, autostart, shell, shortc…
jochenkirstaetter Oct 20, 2026
ceb7cb1
fix(linux): address PR #38 review feedback
jochenkirstaetter Oct 22, 2026
a07755c
fix(linux): gate zbus behind target_os = linux and remove unused dbus…
jochenkirstaetter Oct 23, 2026
fe3fdf1
fix(linux): omit /proc/net/arp in net fallback and report None exit c…
jochenkirstaetter Oct 23, 2026
426360f
feat(linux): input injection, deck actions, and window capture (Part 3)
jochenkirstaetter Oct 20, 2026
355c08b
feat(linux): audio, MPRIS, vcam, vmic, H.264/MP4, mirroring, and reco…
jochenkirstaetter Oct 20, 2026
a41faaf
feat(linux): FUSE3 virtual filesystem and file manager mounts (Part 5)
jochenkirstaetter Oct 20, 2026
8050b60
Merge remote-tracking branch 'upstream/main' into linux-2-basics
jochenkirstaetter Oct 23, 2026
6adc2db
fix(linux): incorporate linux-review-fixes for Part 2 basics, Doctor,…
jochenkirstaetter Oct 23, 2026
824712f
fix(linux): incorporate linux-review-fixes for Part 3 input, keymap, …
jochenkirstaetter Oct 23, 2026
945496a
Merge branch 'linux-3-input' into linux-4-media
jochenkirstaetter Oct 23, 2026
4b4f03e
fix(linux): incorporate linux-review-fixes for Part 4 media, PipeWire…
jochenkirstaetter Oct 23, 2026
bc5591a
Merge branch 'linux-4-media' into linux-5-storage
jochenkirstaetter Oct 23, 2026
67a0e90
fix(linux): incorporate linux-review-fixes for Part 5 on-demand FUSE …
jochenkirstaetter Oct 23, 2026
f223e47
fix(desktop): enable libc dependency on all unix targets for recordings
jochenkirstaetter Oct 23, 2026
6baa86f
Merge branch 'linux-4-media' into linux-5-storage
jochenkirstaetter Oct 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,8 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
libgl1-mesa-dev libxkbcommon-dev libvulkan-dev libx11-dev
libgl1-mesa-dev libxkbcommon-dev libvulkan-dev libx11-dev \
ffmpeg libopenh264-dev
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
Expand Down
75 changes: 72 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,75 @@ jobs:
name: windows-arm64
path: target/package/*-setup.exe

linux:
name: Linux packages (x86_64)
needs: version
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v7
- name: Install the pinned Rust toolchain
run: rustup show active-toolchain || rustup toolchain install
- name: Install system build dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential pkg-config libgl1-mesa-dev libx11-dev libxcb1-dev \
libxkbcommon-dev libxkbcommon-x11-dev libwayland-dev libfontconfig1-dev \
libfreetype-dev libdbus-1-dev libxtst-dev file desktop-file-utils appstream
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: ${{ env.QT_VERSION }}
host: linux
target: desktop
arch: linux_gcc_64
modules: qtshadertools qtwaylandcompositor
cache: true
aqtsource: git+https://github.com/miurahr/aqtinstall.git
- name: Install appimagetool and the AppImage runtime (pinned, checked)
run: |
curl -fsSL -o /tmp/appimagetool \
https://github.com/AppImage/appimagetool/releases/download/1.9.1/appimagetool-x86_64.AppImage
curl -fsSL -o /tmp/runtime-x86_64 \
https://github.com/AppImage/type2-runtime/releases/download/20251108/runtime-x86_64
sha256sum -c - <<'SUMS'
ed4ce84f0d9caff66f50bcca6ff6f35aae54ce8135408b3fa33abfc3cb384eb0 /tmp/appimagetool
2fca8b443c92510f1483a883f60061ad09b46b978b2631c807cd873a47ec260d /tmp/runtime-x86_64
SUMS
chmod +x /tmp/appimagetool
sudo mv /tmp/appimagetool /usr/local/bin/appimagetool
echo "APPIMAGE_RUNTIME=/tmp/runtime-x86_64" >> "$GITHUB_ENV"
- name: Validate desktop entry and AppStream metadata
run: |
desktop-file-validate desktop/packaging/linux/nectarlink.desktop
appstreamcli validate --no-net desktop/packaging/linux/org.nectarlink.desktop.metainfo.xml
- name: Build and package (.deb, AppImage, tarball)
env:
APPIMAGE_EXTRACT_AND_RUN: "1"
run: |
cargo build --release -p nectarlink-desktop
./desktop/packaging/linux/build-deb.sh
./desktop/packaging/linux/build-appimage.sh
./desktop/packaging/linux/build-tarball.sh
- name: Check that each package starts
# A package that doesn't start must not reach a release. The .deb goes
# into a clean Ubuntu 24.04, the oldest system the build supports.
run: |
docker run --rm -v "$PWD/dist:/dist:ro" ubuntu:24.04 bash -euc '
apt-get update -qq
DEBIAN_FRONTEND=noninteractive apt-get install -y -qq --no-install-recommends /dist/*.deb >/dev/null
nectarlink-desktop --version'
APPIMAGE_EXTRACT_AND_RUN=1 ./dist/*.AppImage --version
mkdir -p /tmp/tarball && tar -xzf dist/*.tar.gz -C /tmp/tarball
/tmp/tarball/*/nectarlink-desktop --version
- uses: actions/upload-artifact@v7
with:
name: linux
path: |
dist/*.deb
dist/*.AppImage
dist/*.tar.gz

android:
name: Android app (signed)
needs: version
Expand Down Expand Up @@ -147,7 +216,7 @@ jobs:

publish:
name: Draft the release
needs: [windows, windows-arm64, android]
needs: [windows, windows-arm64, linux, android]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v8
Expand All @@ -169,13 +238,13 @@ jobs:
name=$(awk '/^\[workspace.metadata.release\]/{f=1;next} /^\[/{f=0} f && /^name = /{print $3}' source/Cargo.toml | tr -d '"')
title="NectarLink ${GITHUB_REF_NAME#v}${name:+ $name}"
cd files
sha256sum *.exe *.apk > SHA256SUMS.txt
sha256sum *.exe *.deb *.AppImage *.tar.gz *.apk > SHA256SUMS.txt
cat SHA256SUMS.txt
# The notes: this version's section of CHANGELOG.md ("## <version> ..."),
# with its wrapped lines joined, or GitHub's generated notes when
# there isn't one.
awk -v v="${GITHUB_REF_NAME#v}" '$1=="##" && $2==v {f=1; next} f && /^## / {exit} f' \
../source/CHANGELOG.md | awk -f ../source/.github/scripts/unwrap-notes.awk > notes.md || true
if [ -s notes.md ]; then notes=(--notes-file notes.md); else notes=(--generate-notes); fi
gh release create "${{ github.ref_name }}" *.exe *.apk SHA256SUMS.txt \
gh release create "${{ github.ref_name }}" *.exe *.deb *.AppImage *.tar.gz *.apk SHA256SUMS.txt \
--repo "${{ github.repository }}" --draft "${notes[@]}" --title "$title"
Loading
Loading