Skip to content

Polaris v1.3.5

Latest

Choose a tag to compare

@papi-ux papi-ux released this 07 Aug 03:07
cbcd044

Polaris v1.3.5

Polaris v1.3.5 makes repeated manual package updates deterministic and failure-safe by writing each download to the exact package filename, moves the Linux host integration files into the package that owns them, and adds playtime and completion estimates to the library.

Important: upgrading from v1.3.4

Two things about this upgrade are worth reading before you run it.

Use the exact-output command below. The Update Center bundled with v1.3.4 can let wget create a .1 or .2 file when the package already exists, while the package manager continues to read the stale unsuffixed file.

The host integration files move. The udev rules and modules-load configuration are now installed by the package to /usr/lib/udev/rules.d and /usr/lib/modules-load.d, so your package manager owns them and removes them on uninstall. If an older Polaris wrote its own copy into /etc, that copy takes precedence over the packaged one and would silently shadow every future fix to the rules. polaris --setup-host retires an unmodified /etc copy for you and warns instead of deleting one you edited yourself.

--setup-host also no longer needs sudo when the package already provides everything and the virtual input nodes are usable — it reports that there is nothing to do and exits. It still needs root when it has to write /etc or apply --enable-kms.

If you ran --setup-host on any earlier version, check for a shadowing copy. Host setup removes an /etc copy only when its contents still match the file the running Polaris ships. A copy written by an older version does not match, so it is kept with a warning rather than deleted — nothing can distinguish it from one you edited yourself. Until it is removed it overrides the packaged rules, and the seat isolation rules never apply however the option is set. If --setup-host warns about /etc/udev/rules.d/60-polaris.rules and you did not edit it yourself:

sudo rm /etc/udev/rules.d/60-polaris.rules
sudo udevadm control --reload-rules
grep -c seat-isolated /usr/lib/udev/rules.d/60-polaris.rules   # expect 4

Fedora 44

wget --output-document=./Polaris-fedora44-x86_64.rpm https://github.com/papi-ux/polaris/releases/download/v1.3.5/Polaris-fedora44-x86_64.rpm &&
sudo dnf install "./Polaris-fedora44-x86_64.rpm" &&
sudo -H polaris --setup-host &&
systemctl --user restart polaris

Arch Linux / CachyOS

wget --output-document=./Polaris-arch-x86_64.pkg.tar.zst https://github.com/papi-ux/polaris/releases/download/v1.3.5/Polaris-arch-x86_64.pkg.tar.zst &&
sudo pacman -U ./Polaris-arch-x86_64.pkg.tar.zst &&
sudo -H polaris --setup-host &&
systemctl --user restart polaris

Ubuntu 24.04

wget --output-document=./Polaris-ubuntu24.04-x86_64.deb https://github.com/papi-ux/polaris/releases/download/v1.3.5/Polaris-ubuntu24.04-x86_64.deb &&
sudo apt install ./Polaris-ubuntu24.04-x86_64.deb &&
sudo -H polaris --setup-host &&
systemctl --user restart polaris

Bazzite users should follow the exact-output rpm-ostree flow in the Bazzite guide. SteamOS 3.8 already uses an exact output target and a read-only restoration trap; follow the SteamOS guide.

Changes

Package updates

  • Overwrites the exact target selected by dnf, pacman, or apt instead of allowing numbered sibling downloads.
  • Short-circuits package installation, host setup, and service restart after any earlier failure.
  • Adds executable failure-path coverage for Fedora, Arch, and Ubuntu command generation.
  • Preserves the existing manual-install trust boundary.

Linux host integration

  • Ships the udev rules and modules-load configuration as package files under /usr/lib, so they are package-manager owned and removed on uninstall.
  • Retires an unmodified /etc copy left by an older install, which would otherwise shadow the packaged file; a copy you edited yourself is kept, with a warning naming the file in effect.
  • Makes --setup-host exit without asking for root when there is nothing privileged left to do.
  • Adds a polaris-debug package alongside the Arch and SteamOS builds. Installing it makes coredumpctl info polaris produce a real backtrace instead of no debugging symbols, which is what a useful crash report needs.
  • Closes a systemd-inhibit process leaked on every session and stops a private session's virtual keyboard and mouse from typing into the desktop session logged in at the machine.
  • Warns at startup when client gamepad or keyboard/mouse seat isolation is enabled and the account Polaris runs as is not in the input group. Isolated devices are deliberately denied the logind ACL, so without that group membership neither Polaris nor the streamed game can open the devices it just created.

Input

  • Warns when back_button_timeout is set to a value shorter than the 100ms Home press it emulates. The setting is in milliseconds, so 2 meant two thousandths of a second: Back/Select was released and turned into Home on essentially every press, and the controller looked broken rather than misconfigured. The warning names the value that was almost certainly intended.

Library

  • Reports the playtime Steam and Lutris already record on disk, instead of leaving clients to ask a third party for a number that was sitting there.
  • Serves completion estimates from a local dataset first, falling back to How Long To Beat only for titles the dataset does not cover. beat_times_lookup turns the network lookup off.

The host announces both through /polaris/v1/capabilities as library_playtime_v1 and
library_beat_times_v1, so a client can adopt them without inferring support from whether a
value happens to be present.

  • Adds a transactional custom artwork workflow with an authenticated resolver, bounded provider downloads, and atomic source-aware caching.
  • Surfaces per-app environment variables in the web UI.

Audio and capture

  • Releases the host loopback when a session turns host audio off. Previously a loopback created by an earlier session stayed loaded, so a client that launched with host audio disabled still played through the host speakers for the rest of the Polaris process.
  • Applies the session's requested resolution and refresh when preparing the streaming display, rather than a fixed default.

Build

  • Clears the dependency advisories that were failing every web build, and keeps npm audit --audit-level=high mandatory.
  • Fixes a link failure that had been breaking the sanitizer job on clean builds.
  • Drops the local gamescope patch now that it has merged upstream.

Official assets

  • Polaris-arch-x86_64.pkg.tar.zst
  • Polaris-fedora44-x86_64.rpm
  • Polaris-steamos3.8-x86_64.pkg.tar.zst
  • Polaris-ubuntu24.04-x86_64.deb