Repository navigation
feat(linux): Linux desktop support — Part 6/6: HTTPS client, self-updater, and setup uninstaller - #44
Conversation
…uts, network & BLE (Part 2) Signed-off-by: Jochen Kirstätter <7329802+jochenkirstaetter@users.noreply.github.com>
Signed-off-by: Jochen Kirstätter <7329802+jochenkirstaetter@users.noreply.github.com>
…-monitor parser Signed-off-by: Jochen Kirstätter <7329802+jochenkirstaetter@users.noreply.github.com>
…ode for watched PIDs Signed-off-by: Jochen Kirstätter <7329802+jochenkirstaetter@users.noreply.github.com>
Signed-off-by: Jochen Kirstätter <7329802+jochenkirstaetter@users.noreply.github.com>
…rdings (Part 4) Signed-off-by: Jochen Kirstätter <7329802+jochenkirstaetter@users.noreply.github.com>
Signed-off-by: Jochen Kirstätter <7329802+jochenkirstaetter@users.noreply.github.com>
Signed-off-by: Jochen Kirstätter <7329802+jochenkirstaetter@users.noreply.github.com>
|
Thanks for opening this. Notes for this part are on #38 (comment). The |
… D-Bus, and packaging Applies the Part 2 review improvements and fixes from upstream/linux-review-fixes (b346bfe, 47e3e06, 6291b51, a815275, 0be2ddf, 20c70f3, ccb9318): - USB ADB: retry another local TCP port only when adb reports a port bind failure (47e3e06) - Linux platform layer: native D-Bus/Netlink/Qt integrations for clipboard, tray, notifications (6291b51), single-instance activation token, BlueZ/NetworkManager, Wake-on-LAN, BLE beacon, and clean SIGTERM/SIGINT/SIGHUP shutdown (ccb9318) - Shell & Doctor: remove Windows settings links/explorer.exe shims (20c70f3) and provide plain Linux Doctor readiness checks and wording with German and Chinese translations (a815275) - Release workflow & packaging: pin AppImage tools with SHA-256 verification and smoke-test every Linux package (.deb, AppImage, tarball) with --version (0be2ddf) Many thanks to @thtbee for the thorough review and reference implementation on linux-review-fixes! Co-authored-by: Bee <302257494+thtbee@users.noreply.github.com> Signed-off-by: Jochen Kirstätter <7329802+jochenkirstaetter@users.noreply.github.com>
…and window capture Merges updated linux-2-basics and applies the Part 3 review improvements from upstream/linux-review-fixes (b346bfe, 7bc9b2b, a815275): - Keyboard layout resolution (7bc9b2b): add desktop/app/src/linux/keymap.rs using libxkbcommon / libxkbcommon-x11 to resolve keysyms and keycodes against the user's active X11 or Wayland keyboard layout for text typing and shortcuts - Input injection & window capture (b346bfe): native XTest/uinput/RemoteDesktop portal input handling and X11/Portal window capture improvements - DeckPage QML & i18n (a815275): use Linux shortcut labels (Super+D, Screenshot, Super) with German and Chinese translations Many thanks to @thtbee for the collaborative review and reference implementation on linux-review-fixes! Co-authored-by: Bee <302257494+thtbee@users.noreply.github.com> Signed-off-by: Jochen Kirstätter <7329802+jochenkirstaetter@users.noreply.github.com>
… portal, and OpenH264 ABI Applies the Part 4 review improvements and fixes from upstream/linux-review-fixes (b346bfe, c41f185, 20c70f3): - Wayland ScreenCast portal: open the portal's PipeWire remote connection via OpenPipeWireRemote and pass it as fd 3 to gst-launch-1.0 pipewiresrc, with session restore_token persistence (c41f185) - Media & audio: PipeWire/PulseAudio speaker monitor capture, MPRIS D-Bus client & server, FFmpeg 8 libavcodec compatibility, v4l2loopback virtual camera, and virtual microphone - OpenH264 ABI compatibility: auto-detect 40-byte (Debian/Ubuntu libopenh264.so.7 2.4.1) vs 56-byte (upstream 2.3+ r_psnr) SLayerBSInfo layout at runtime and install libopenh264-dev in Linux CI Many thanks to @thtbee for the thorough review and reference implementation on linux-review-fixes! Co-authored-by: Bee <302257494+thtbee@users.noreply.github.com> Signed-off-by: Jochen Kirstätter <7329802+jochenkirstaetter@users.noreply.github.com>
…phone storage Applies the Part 5 review improvements and fixes from upstream/linux-review-fixes (b346bfe, e58ee10): - Replace whole-phone sync folder with an on-demand /dev/fuse filesystem mount via fusermount3/fusermount - Add GTK3 and XBEL file-manager bookmark integration and clean unmount on disconnect or shutdown - Only advertise STORAGE_MOUNT / STORAGE_READ / STORAGE_WRITE on Linux when /dev/fuse and fusermount are available (e58ee10) Many thanks to @thtbee for the thorough review and reference implementation on linux-review-fixes! Co-authored-by: Bee <302257494+thtbee@users.noreply.github.com> Signed-off-by: Jochen Kirstätter <7329802+jochenkirstaetter@users.noreply.github.com>
Merge linux-5-storage and incorporate @thtbee's review fixes from linux-review-fixes (b346bfe..e58ee10) for Part 6 (HTTP, setup, updater): - Enforce 1024-byte response line limit and preserve 120s idle read timeout in HTTP redirect/chunked readers - Guard privileged .deb and .tar.gz installs in setup/updater against command injection and TOCTOU races - Fix #[cfg] platform coverage in setup.rs and updater.rs so macOS builds and tests compile cleanly alongside Windows and Linux Co-authored-by: Bee <302257494+thtbee@users.noreply.github.com> Signed-off-by: Jochen Kirstätter <7329802+jochenkirstaetter@users.noreply.github.com>
|
Updated with |
Signed-off-by: Jochen Kirstätter <7329802+jochenkirstaetter@users.noreply.github.com>
|
Hi @thtbee The failing CI for macOS has been noted, going to fix it. Cheers |
Co-authored-by: Bee <302257494+thtbee@users.noreply.github.com> Signed-off-by: Jochen Kirstätter <7329802+jochenkirstaetter@users.noreply.github.com>
…euid on Unix setup::install and setup::remove ran the NSIS installer's switches (/S /PROGRESS, uninstall.exe) on macOS too once they became cfg(not(target_os = "linux")); they are Windows-only again, and macOS gets its own: there is no installer to run, and removing clears this user's data. The Linux install no longer hands those switches to a file that is neither a .deb nor a tarball. updater::current_euid read the owner of /proc/self, which doesn't exist on macOS and so read as root; it uses geteuid now.
|
I pushed one small fix on top (fdef5c2), since it was quicker than describing it. With |
|
Sorry, my earlier commit broke the macOS clippy job: the crate denies |
Summary
Part 6 of 6 for Linux desktop support (stacked on #43 /
linux-5-storage, #42 /linux-4-media, #41 /linux-3-input, and #38 /linux-2-basics).Adds the Linux HTTPS client, self-updater (
.AppImageand.deb), and setup uninstaller:desktop/app/src/linux/http.rs):get,get_retrying,get_json,download, anddownload_to_filebacked bycurl(--proto =https --proto-redir =https) withwget(--https-only) fallback.O_NOFOLLOWand0o600permissions.desktop/app/src/updater.rs):.AppImageand.debrelease assets (x86_64andaarch64/arm64) and verifies SHA-256 digests againstSHA256SUMS.txt.0o700, UID-verified, non-symlink) cache directory (~/.cache/nectarlink/updates)..AppImagereplacement and TOCTOU-hardened privileged.debinstallation (PRIVILEGED_DEB_INSTALL_SCRIPTcopies the package to root-owned0700/var/cache/nectarlink-update, re-verifiessha256sum -cas root, and runsdpkg -i).desktop/app/src/setup.rs,desktop/app/i18n/):.deb(dpkg-query) and/opt/nectarlinkinstallations, cleans up user autostart, shortcuts, send-to entries, and storage bookmarks, and runs elevated package/directory removal.deandzh_CNtranslations for the newSetupstrings (Couldn't uninstall NectarLink: %1andUninstall stopped with code %1.).Verification
cargo fmt --all --checkcargo xtask tokens --checkcargo xtask strings --checkcargo clippy --locked -p nectarlink-protocol -p nectarlink-core -p nectarlink-ffi -p nectarlink-cli -p xtask --all-targets -- -D warningscargo test --locked -p nectarlink-protocol -p nectarlink-core -p nectarlink-ffi -p nectarlink-cli -p xtaskcargo clippy --locked -p nectarlink-desktop -p nectarlink-vcam -p s1-qt-rust --all-targets -- -D warningscargo test --locked -p nectarlink-desktop -p nectarlink-vcam(311 + 6 unit tests pass)pwsh ./scripts/check-headers.ps1(456 files checked, 0 problems)