Files
punktfunk/assets/os-icons/README.md
T
enricobuehlerandClaude Fable 5 4c2a6dd091 feat(host,api): the host knows what OS it runs, and says so
Clients want to show which OS/distro a host runs. The host now detects it once
per process (new osinfo module: compile-time on Windows/macOS, os-release on
Linux) and advertises an icon-friendly specificity chain, generic → specific —
`windows`, `macos`, `linux[/<family>][/<id>]`, e.g. `linux/fedora/bazzite`,
`linux/arch/steamos`. A client walks the chain most-specific-first and shows the
first token it has art for, so an unknown distro degrades to its family's mark
and finally to plain Tux — the host emits the full chain precisely so clients
need zero distro→parent knowledge. The middle token is the first recognized
ID_LIKE ancestor (the spec orders them most-similar-first); the leaf is ID
verbatim, sanitized to TXT-safe `[a-z0-9._-]` because it feeds a DNS record.

Two carriers, both additive: a new advisory mDNS `os=` TXT key (same trust
posture as `mac` — unauthenticated, a wrong value only draws a wrong icon), and
`HostInfo.os` + `HostInfo.os_name` on the mgmt API (`os_name` is the os-release
PRETTY_NAME, REST-only so the TXT stays small). GameStream serverinfo and the
QUIC Welcome are untouched. api/openapi.json regenerated (drift test green on
Linux) and the TS SDK gen refreshed from it — which also catches the committed
gen up with earlier spec changes it had missed (monitors, native_paired_clients,
encoder_backend).

assets/os-icons/ gains the ten master SVG marks every client derives its
per-platform art from (Font Awesome Free brands CC BY 4.0 + Simple Icons CC0 —
provenance in its README), with attribution folded into THIRD-PARTY-NOTICES.txt
via the generator (regenerating also catches the stale crate manifest up with
the current lockfile).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 17:58:33 +02:00

1.7 KiB

OS icon masters

The canonical OS/distro brand marks every client derives its host-card OS icon from (web console inline SVGs, GTK symbolic icons, Windows PNGs, Apple template imagesets, Android ImageVectors). One file per icon token of the host's OS-identity chain (see crates/punktfunk-host/src/osinfo.rs and crates/pf-client-core/src/os.rs):

token mark source
windows Windows Font Awesome Free brands (CC BY 4.0)
apple Apple (also macos via alias) Font Awesome Free brands (CC BY 4.0)
linux Tux Font Awesome Free brands (CC BY 4.0)
steam Steam (also steamos via alias) Font Awesome Free brands (CC BY 4.0)
ubuntu Ubuntu Font Awesome Free brands (CC BY 4.0)
fedora Fedora Font Awesome Free brands (CC BY 4.0)
opensuse SUSE Font Awesome Free brands (CC BY 4.0)
arch Arch Linux Simple Icons (CC0 1.0)
nixos NixOS Simple Icons (CC0 1.0)
debian Debian Simple Icons (CC0 1.0)

Distros with no file here (Bazzite, CachyOS, Nobara, Pop!_OS, Mint, …) are intentional: the host advertises the full chain (linux/fedora/bazzite), and clients walk it most-specific-first, so they degrade to the family mark and finally to Tux.

All files are monochrome (fill="currentColor"), original per-icon viewBoxes preserved. Licensing: attribution notices live in LICENSES/ and are folded into THIRD-PARTY-NOTICES.txt by scripts/gen-third-party-notices.py. The marks are trademarks of their respective owners; they are used here nominatively — to identify the operating system a host runs, the standard practice in this ecosystem — and imply no affiliation or endorsement.