github papi-ux/polaris v1.4.13-beta.3

pre-release13 hours ago

Polaris v1.4.13

Install, update and uninstall are the work of this release, and the first part of it is here: a beta channel, so packaging changes reach people who volunteered for them before they reach anyone's working setup. Turning DRM/KMS capture back off is one command now instead of three, and there is a new codec to try on a wired link. Polaris 1.4.13 is matched with Nova 1.4.13; existing settings, paired devices and Spaces keep working.

Beta releases

  • A release can be published early as a beta, tagged v1.4.13-beta.1 and marked as a prerelease. It carries the version it will ship as and reuses that release's notes.
  • A beta never reaches anyone who did not ask for it. GitHub keeps prereleases out of releases/latest, the package repositories never serve one, and Polaris mentions one only when PreRelease Notifications is on in the console's General tab.
  • A beta offer always hands you the download command. The repositories carry stable only, so dnf upgrade on a beta would answer "nothing to do", which reads like the beta failed rather than like advice that could never have worked.

DRM/KMS capture survives an update

  • The capture permission now belongs to a package, polaris-kms, instead of to the binary. Updating Polaris no longer takes it away, so DRM/KMS capture no longer stops working every time you update and waits for you to notice.
  • It is a separate package because it is a second copy of the binary, about 31 MB, and most hosts never capture this way. Install it alongside Polaris only if yours does.
  • It works on image-based hosts. Bazzite could not hold the permission at all before, which is why its guide had you copy the binary somewhere writable by hand, and why that copy then outlived every update: rpm reported one version while the console ran another.
  • The permission is no longer granted to every account on the machine. The helper is readable only by the polaris-kms group, and --enable-kms adds you to it. A session picks up its groups when you log in, so the first time, log out and back in before capture works.
  • sudo -H polaris --setup-host --disable-kms turns it back off, and also undoes what older releases had you do by hand: the capability on the binary, the copy at /usr/local/bin/polaris-kms, and the service drop-in that pointed at it. It says what it removed, says so plainly when there was nothing to remove, and leaves a drop-in that points somewhere else alone.

The Desktop entry, and the screen it runs on

  • Desktop can be given a screen of its own now, not only mirror the one on the desk. Pick Host Virtual Display for it and that is what you get.
  • It mirrors by default, even on a host whose Default Display is Host Virtual Display. The desktop is the screen you already have, so mirroring it is that entry's own answer rather than a preference borrowed from how the host runs games. Everything else still takes the display you configured.
  • The picker offers only what can actually happen. Desktop used to list Private Stream, Gamescope and GPU-native and then quietly mirror instead, because an entry whose job is the desktop can only run where a desktop is.
  • The separate Virtual Display tile is gone from the library, folded into Desktop now that one entry can be either. Moonlight still sees it, because a client without a picker has no other route to a virtual screen.
  • Screen To Add and Screen Scale are per device, in Play Setup. The screen a host creates is sized from the device that asked for it rather than from the stream, and the scale is what decides whether the result can be read: a 2560x1600 desktop is comfortable on a monitor and unusable on a ten inch tablet.
  • A created screen takes the scale it was asked for whichever backend made it. On KDE an EVDI screen was being adopted at whatever a stored layout said, which on one host was 135% that nobody chose.

Covers for a whole library at once

  • Find covers on the Apps page looks up every published game with no cover in one pass and proposes a match for each. Nothing is stored until you apply it: the review lists one row per game with the matched title and how close it is, and a row opens to show that game's other posters.
  • Three hundred imported ROMs used to mean three hundred blank tiles and three hundred trips through Find Cover. A title search is right most of the time rather than always, so the review is the point rather than a formality.
  • Entries Polaris ships artwork for are never looked up, because a title search for one of those finds a coincidental game instead of nothing. A game you used Remove artwork on stays untouched until you use Find artwork again.
  • A numbered ROM set no longer carries its index into the library. 0001 - Super Mario 64 DS (USA).nds becomes Super Mario 64 DS, which is also what gets searched for. Titles that only look like an index keep theirs: 1943 - The Battle of Midway is a year, and 007 - GoldenEye is a name.

A new codec, for a wired link (experimental)

  • Polaris can stream PyroWave, an intra only wavelet codec that runs as plain Vulkan compute instead of on the GPU's video engine. Every frame costs about the same to encode, and a lost packet costs one frame rather than everything up to the next keyframe.
  • It is built in from this release. Only a client that asks for it by name gets it, and no Moonlight client asks, so nothing changes for a host nobody asks. Nova 1.4.13 asks in its beta build, under Video codec in Play Setup.
  • On the host here it encodes a 1920x1080 60 fps stream in 0.49 ms a frame without the frame ever leaving the GPU. The same stream cost 2.84 ms a frame with the colour conversion on the CPU.
  • It wants a wired link at a couple of hundred megabits. It is not a codec for wifi and it is not a replacement for H.264, HEVC or AV1.
  • 4:4:4 is available, which is what makes small text on a streamed desktop readable.
  • HDR works when capture goes through the desktop portal. A host set to capture = kms cannot serve HDR on this codec yet: KDE composites an HDR desktop into a pixel format the codec's input cannot read, and the conversion for it is not written.
  • An ultrawide source is slow. A 32:9 desktop is padded to twice its height before it encodes, which is sixteen times the pixels, so stream a matching aspect ratio if you have one.
  • Steam Remote Play added the same codec, by the same author, in its own beta the same week: Windows and macOS now, Linux behind the experimental SteamRT3 client, mobile still to come. Valve quotes 100 to 500 Mbit/s and at least gigabit ethernet for it, which is the envelope measured here too, so what this codec asks of a network is not a number Polaris invented. The two are separate streams and cannot talk to each other.

Fixed

  • A reading of the Game Mode screen that had already answered no longer makes the next one report that the last one never came back, which placed touch across the whole frame for nothing.

Heads up

  • While 1.4.13 is in beta, use the packages attached to the prerelease you are reading. The install commands below name the final release, which does not exist yet.
  • If this host captures through DRM/KMS, install polaris-kms as well, then run sudo -H polaris --setup-host --enable-kms once and log out and back in. After that, updates leave it alone: this is the last release that asks you to do anything about it.
  • Bazzite hosts should still install the Fedora 44 RPM through rpm-ostree.
Install (Fedora 44, Arch / CachyOS, Ubuntu 24.04, SteamOS 3.8)

Already added repo.papi-ux.com? Updating is sudo dnf upgrade on Fedora or sudo pacman -Syu on Arch, then restart Polaris.

Fedora 44

wget --output-document=./Polaris-fedora44-x86_64.rpm https://github.com/papi-ux/polaris/releases/download/v1.4.13/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.4.13/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.4.13/Polaris-ubuntu24.04-x86_64.deb &&
sudo apt install ./Polaris-ubuntu24.04-x86_64.deb &&
sudo -H polaris --setup-host &&
systemctl --user restart polaris

SteamOS 3.8

Run this in Desktop Mode. It sets up the package keyring when needed and restores the read-only root before starting Polaris.

wget --output-document=./Polaris-steamos3.8-x86_64.pkg.tar.zst https://github.com/papi-ux/polaris/releases/download/v1.4.13/Polaris-steamos3.8-x86_64.pkg.tar.zst &&
(
set -e
trap 'sudo steamos-readonly enable' EXIT
sudo steamos-readonly disable || exit $?
sudo pacman-key --init || exit $?
sudo pacman-key --populate || exit $?
sudo pacman -Sy || exit $?
sudo pacman -U ./Polaris-steamos3.8-x86_64.pkg.tar.zst || exit $?
sudo -H polaris --setup-host --enable-headless-boot || exit $?
sudo steamos-readonly enable || exit $?
trap - EXIT
) &&
systemctl --user enable --now polaris

Bazzite users should follow the Bazzite guide and use the Fedora RPM through rpm-ostree. SteamOS 3.8 users should follow the SteamOS guide, which also covers keeping Polaris running in Game Mode.

Assets: Polaris-fedora44-x86_64.rpm · Polaris-arch-x86_64.pkg.tar.zst · Polaris-ubuntu24.04-x86_64.deb · Polaris-steamos3.8-x86_64.pkg.tar.zst

DRM/KMS capture, only if you use it: Polaris-kms-fedora44-x86_64.rpm · Polaris-kms-arch-x86_64.pkg.tar.zst · Polaris-kms-ubuntu24.04-x86_64.deb · Polaris-kms-steamos3.8-x86_64.pkg.tar.zst

Don't miss a new polaris release

NewReleases is sending notifications on new releases.