docs: first-class Linux + Windows positioning + IDD-push differentiator
apple / swift (push) Failing after 0s
apple / screenshots (push) Has been skipped
windows-drivers-provision / provision (push) Successful in 13s
windows-drivers / probe-and-proto (push) Successful in 17s
windows-drivers / driver-build (push) Successful in 1m10s
android / android (push) Successful in 3m19s
ci / web (push) Successful in 39s
ci / docs-site (push) Successful in 53s
windows-host / package (push) Successful in 6m6s
ci / rust (push) Successful in 11m12s
decky / build-publish (push) Successful in 11s
ci / bench (push) Successful in 5m9s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 5s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 21s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 3s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 4s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 43s
deb / build-publish (push) Successful in 7m31s
rpm / build-publish (bazzite, punktfunk-fedora-rpm) (push) Successful in 9m14s
rpm / build-publish (fedora-44, punktfunk-fedora44-rpm) (push) Successful in 9m12s
release / apple (push) Failing after 1s
docker / deploy-docs (push) Successful in 19s
flatpak / build-publish (push) Successful in 4m43s
apple / swift (push) Failing after 0s
apple / screenshots (push) Has been skipped
windows-drivers-provision / provision (push) Successful in 13s
windows-drivers / probe-and-proto (push) Successful in 17s
windows-drivers / driver-build (push) Successful in 1m10s
android / android (push) Successful in 3m19s
ci / web (push) Successful in 39s
ci / docs-site (push) Successful in 53s
windows-host / package (push) Successful in 6m6s
ci / rust (push) Successful in 11m12s
decky / build-publish (push) Successful in 11s
ci / bench (push) Successful in 5m9s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 5s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 21s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 3s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 4s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 43s
deb / build-publish (push) Successful in 7m31s
rpm / build-publish (bazzite, punktfunk-fedora-rpm) (push) Successful in 9m14s
rpm / build-publish (fedora-44, punktfunk-fedora44-rpm) (push) Successful in 9m12s
release / apple (push) Failing after 1s
docker / deploy-docs (push) Successful in 19s
flatpak / build-publish (push) Successful in 4m43s
Drop the "Linux-first" framing across the README and docs site in favor of first-class Linux AND Windows hosts, and surface the Windows IDD-push virtual-display path as a distinct differentiator (punktfunk's own indirect display driver the host pushes frames into — a real virtual display, no physical monitor or dummy plug, even on the secure desktop). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -16,14 +16,22 @@ monitor. When the client disconnects, the virtual display goes away.
|
||||
That's why a 1080p60 laptop and a 1440p120 desktop can stream from the same host **at the same time**,
|
||||
each at its own mode — they each get their own virtual display.
|
||||
|
||||
How the virtual display is created depends on your desktop:
|
||||
How the virtual display is created depends on your host:
|
||||
|
||||
| Desktop | How |
|
||||
| Host | How |
|
||||
|---|---|
|
||||
| **GNOME** (Mutter) | A virtual monitor via the screen-cast API |
|
||||
| **KDE Plasma** (KWin) | A virtual output via KWin's screencast |
|
||||
| **Bazzite / Steam** (gamescope) | A nested gamescope session launched at the client's mode |
|
||||
| **Sway** (wlroots) | A headless output added to the running session |
|
||||
| **Windows** | A virtual-display driver — including punktfunk's own **indirect display driver** the host pushes frames straight into — a real virtual display, no physical monitor, even on the secure desktop |
|
||||
|
||||
That last one is the distinctive part on Windows: rather than only capturing an existing screen,
|
||||
punktfunk has **its own indirect display driver (IDD)**, and the host can push finished frames
|
||||
**straight into the driver**. You get the same on-the-fly virtual display the Linux compositors give
|
||||
you — at the client's exact mode, with no physical monitor or dummy HDMI dongle, and even on the
|
||||
secure desktop (UAC / lock screen). That tight, push-based integration is unusual among Windows
|
||||
streaming hosts.
|
||||
|
||||
## From screen to GPU to wire
|
||||
|
||||
|
||||
@@ -1,19 +1,21 @@
|
||||
---
|
||||
title: Introduction
|
||||
description: Low-latency desktop and game streaming from a Linux host to any of your devices.
|
||||
description: Low-latency desktop and game streaming from a Linux or Windows host to any of your devices.
|
||||
---
|
||||
|
||||
import { Cards, Card } from 'fumadocs-ui/components/card'
|
||||
|
||||
**punktfunk** streams your Linux desktop or games to your other devices — a laptop, a Mac, a tablet,
|
||||
**punktfunk** streams your desktop or games to your other devices — a laptop, a Mac, a tablet,
|
||||
a TV — at low latency and at **each device's own resolution and refresh rate**. Run the host on a
|
||||
Linux machine with an NVIDIA GPU, connect a client, and you're streaming.
|
||||
Linux machine or a Windows PC, connect a client, and you're streaming.
|
||||
|
||||
It's built for the things that make streaming feel native:
|
||||
|
||||
- **Your device's exact mode.** The host spins up a virtual display sized to the client that's
|
||||
connecting — 1080p60 to your laptop, 1440p120 to your desktop, 4K to your TV — at the same time.
|
||||
No letterboxing, no scaling, no juggling your real monitors.
|
||||
No letterboxing, no scaling, no juggling your real monitors. On Windows that's punktfunk's own
|
||||
indirect display driver, frames pushed straight in — so there's no physical monitor or dummy HDMI
|
||||
plug to deal with, even on the secure desktop.
|
||||
- **Low latency, GPU end to end.** Frames go straight from the compositor to the GPU encoder
|
||||
(NVENC) with zero CPU copies, and over a transport tuned for responsiveness rather than throughput.
|
||||
- **Works with the apps you already have.** punktfunk speaks the GameStream protocol, so any
|
||||
@@ -34,9 +36,9 @@ It's built for the things that make streaming feel native:
|
||||
|
||||
## What you need
|
||||
|
||||
- A **Linux host** with an **NVIDIA GPU** (for the NVENC hardware encoder) running one of the
|
||||
[supported setups](/docs/requirements): **Ubuntu** (GNOME or KDE), **Fedora** (KDE), or **Bazzite**.
|
||||
A native [**Windows host**](/docs/windows-host) (NVIDIA-only) is also available.
|
||||
- A **host** with a supported GPU — either a **Linux** machine running one of the
|
||||
[supported setups](/docs/requirements) (**Ubuntu** GNOME or KDE, **Fedora** KDE, or **Bazzite**), or
|
||||
a **[Windows](/docs/windows-host) PC**.
|
||||
- A **client device** to stream to — there are native apps for **macOS, iOS/iPadOS, tvOS, Linux,
|
||||
Windows, and Android**, plus any device that runs **Moonlight**.
|
||||
- Both on the **same network** (LAN or VPN). punktfunk is designed for a trusted local network.
|
||||
|
||||
@@ -84,9 +84,10 @@ session unit — see [Bazzite](/docs/bazzite).
|
||||
|
||||
## Windows
|
||||
|
||||
> punktfunk is Linux-first, but a native **Windows host** also ships — a signed installer with an SCM
|
||||
> service and a bundled virtual-display driver. It's **NVIDIA-only** (NVENC) and newer than the Linux
|
||||
> host. (Not to be confused with the Windows *client*, which streams *to* a Windows PC.)
|
||||
> punktfunk has first-class **Linux and Windows** hosts. On Windows it ships as a signed installer
|
||||
> with an SCM service and a virtual-display driver — including punktfunk's own **indirect display
|
||||
> driver** the host pushes frames straight into. The Windows host is newer than the Linux host. (Not
|
||||
> to be confused with the Windows *client*, which streams *to* a Windows PC.)
|
||||
|
||||
On Windows the host runs as a `LocalSystem` service that launches into the interactive session, so it
|
||||
captures the secure desktop (UAC / lock screen) and survives reboots with nobody logged in — the same
|
||||
|
||||
@@ -23,9 +23,9 @@ A high-level view of where punktfunk stands. The ordered plan of work is on the
|
||||
|
||||
## What works today
|
||||
|
||||
punktfunk is a low-latency desktop and game streaming **host** — Linux-first (Linux + NVIDIA, NVENC),
|
||||
with a newer **NVIDIA-only Windows host** too — and native **clients** on macOS, iOS/iPadOS/tvOS,
|
||||
Linux, Windows, and Android.
|
||||
punktfunk is a low-latency desktop and game streaming **host** with first-class **Linux and Windows**
|
||||
support — and native **clients** on macOS, iOS/iPadOS/tvOS, Linux, Windows, and Android. (The Windows
|
||||
host is newer than the Linux host.)
|
||||
|
||||
- **Two protocols.** The host speaks the **GameStream** protocol, so any **Moonlight**
|
||||
client works out of the box, plus its own lower-latency **`punktfunk/1`** protocol
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
---
|
||||
title: "Windows Host"
|
||||
description: "Run the punktfunk streaming host on a Windows PC with an NVIDIA GPU."
|
||||
description: "Run the punktfunk streaming host on a Windows PC — a first-class, virtual-display host."
|
||||
---
|
||||
|
||||
|
||||
**Status: implemented and shipping — NVIDIA-only, x64-only.** punktfunk is Linux-first, but it also
|
||||
runs as a native **Windows host**: a signed installer registers a `LocalSystem` service that streams
|
||||
**Status: implemented and shipping — x64-only.** Alongside the Linux host, punktfunk runs as a
|
||||
first-class native **Windows host**: a signed installer registers a `LocalSystem` service that streams
|
||||
your Windows desktop or games to any punktfunk or Moonlight client, at the client's exact resolution
|
||||
via a virtual display — including **HDR10** (10-bit BT.2020 PQ) when your Windows desktop is in HDR
|
||||
mode. It's newer and less battle-tested than the Linux host, and it is built specifically around
|
||||
NVIDIA hardware. (The Linux host is 8-bit only — HDR there is blocked upstream.)
|
||||
via a **virtual display** — including **HDR10** (10-bit BT.2020 PQ) when your Windows desktop is in HDR
|
||||
mode. punktfunk has its own **indirect display driver (IDD)** that the host pushes finished frames
|
||||
straight into, so you get a real on-the-fly virtual display with no physical monitor or dummy HDMI
|
||||
plug — even on the secure desktop (UAC / lock screen). The Windows host is newer and less
|
||||
battle-tested than the Linux host. (The Linux host is 8-bit only — HDR there is blocked upstream.)
|
||||
|
||||
> This page is about the Windows **host** (streaming *from* a Windows PC). To stream *to* a Windows
|
||||
> PC, see the [Windows client](/docs/clients#windows-desktop-client).
|
||||
|
||||
@@ -13,8 +13,8 @@ function Home() {
|
||||
<BrandMark className="size-20 drop-shadow-[0_8px_30px_rgba(108,91,243,0.45)]" />
|
||||
<Wordmark className="h-12 md:h-14" />
|
||||
<p className="max-w-xl text-fd-muted-foreground">
|
||||
Linux-first, low-latency desktop and game streaming — a shared Rust protocol
|
||||
core with native clients per platform.
|
||||
Low-latency desktop and game streaming with first-class Linux and Windows
|
||||
hosts — a shared Rust protocol core with native clients on every platform.
|
||||
</p>
|
||||
<Link
|
||||
to="/docs/$"
|
||||
|
||||
Reference in New Issue
Block a user