Skip to content

About

GameStream client for PCs (Windows, Mac, Linux, and Steam Link)

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

Moonlight PC

Important

This is a remote-desktop-focused fork of Moonlight PC. It is designed to be used with fxgl/Sunshine and the bundled fxgl/moonlight-common-c protocol fork.

Why this fork exists

The upstream Moonlight/Sunshine pair is optimized primarily for game streaming. This fork adds the desktop-integration behavior needed to move comfortably between a local Mac or PC and a remote computer:

  • Bidirectional UTF-8 clipboard synchronization. Local clipboard changes are sent to the Sunshine host. In the other direction, Sunshine snapshots its clipboard when Moonlight gains focus and returns it when Moonlight loses focus only if the host clipboard changed during that focus interval.
  • No clipboard overwrite on connection. Moonlight does not publish stale local clipboard contents just because a stream started.
  • Loop and origin suppression. Clipboard text received from Sunshine is not echoed back, and client-originated writes are not mistaken for host-side changes.
  • Direct standard paste. Cmd+V on macOS and Ctrl+V elsewhere can send clipboard text directly to the focused remote application as Unicode.
  • Active-window display following. On compatible Sunshine hosts, Moonlight can automatically follow the foreground window when it moves between host monitors; the setting is enabled by default and refreshes twice per second.
  • Client keyboard layout mode. Printable text can be composed using the client's active keyboard layout and sent as Unicode, while shortcuts and non-text keys continue to use raw key events.

Clipboard synchronization is opt-in, text-only, and limited to 60 KiB per update. Both endpoints must use the matching fxgl forks for the full feature set. The protocol additions live in the pinned moonlight-common-c submodule.

Moonlight PC is an open source PC client for NVIDIA GameStream and Sunshine.

Moonlight also has mobile versions for Android and iOS.

You can follow development on our Discord server and help translate Moonlight into your language on Weblate.

Build Downloads Translation Status

Features

  • Hardware accelerated video decoding on Windows, Mac, and Linux
  • H.264, HEVC, and AV1 codec support (AV1 requires Sunshine and a supported host GPU)
  • YUV 4:4:4 support (Sunshine only)
  • HDR streaming support
  • 7.1 surround sound audio support
  • 10-point multitouch support (Sunshine only)
  • Gamepad support with force feedback and motion controls for up to 16 players
  • Support for both pointer capture (for games) and direct mouse control (for remote desktop)
  • Support for passing system-wide keyboard shortcuts like Alt+Tab to the host

Downloads

Nightly Builds

Special Thanks

Hosted By: Cloudsmith

Hosting for Moonlight's Debian and L4T package repositories is graciously provided for free by Cloudsmith.

Building

Coordinated fxgl macOS releases

This fork includes scripts/release-forks.sh, which coordinates the matching Moonlight, Sunshine, and moonlight-common-c checkouts. It builds Moonlight as a universal macOS app, builds Sunshine for the current Mac architecture, runs the Sunshine tests, signs both apps with a Developer ID Application identity, notarizes and staples the DMGs, verifies the results, and generates SHA-256 files.

The local-only mode does not commit, tag, push, or create GitHub releases. Its Moonlight version must already match app/version.txt:

scripts/release-forks.sh build \
  --moonlight-version 6.1.0 \
  --sunshine-version 2026.725.170000 \
  --signing-identity "Developer ID Application: FX GAMES FZ LLC (V25VKGTW55)" \
  --notary-profile notarytool-password

Use publish instead of build for the complete release. It requires clean tracked trees, commits only the Moonlight version bump, finishes and verifies every artifact before pushing, then pushes the common protocol repository before both parents and creates the two GitHub releases. Before any remote changes, an authenticated Codex CLI turns the commits since each repository's previous reachable v* tag into a concise English ## What's New release body. Codex receives only commit subjects, bodies, and changed-file statistics. It runs non-interactively in a read-only sandbox with an ephemeral session and an isolated temporary working directory; the script uses the current -C/--cd option for that directory (there is no -d directory option in the current CLI). Re-running publish updates the existing release notes as well as its assets. Set CODEX_BIN if codex is not on PATH under that name.

Run with --bootstrap once to install the Homebrew dependencies and the official universal Qt SDK. A .cer file alone cannot sign code; the Developer ID certificate and its private key must be present as a valid identity in Keychain. See scripts/release-forks.sh --help for unsigned test builds and other options.

Windows Build Requirements

  • Qt 6.7 SDK or later (earlier versions may work but are not officially supported)
  • Visual Studio 2022 (Community edition is fine)
  • Select MSVC option during Qt installation. MinGW is not supported.
  • 7-Zip (only if building installers for non-development PCs)
  • Graphics Tools (only if running debug builds)
    • Install "Graphics Tools" in the Optional Features page of the Windows Settings app.
    • Alternatively, run dism /online /add-capability /capabilityname:Tools.Graphics.DirectX~~~~0.0.1.0 and reboot.

macOS Build Requirements

  • Qt 6.7 SDK or later (earlier versions may work but are not officially supported)
  • Xcode 14 or later (earlier versions may work but are not officially supported)
  • create-dmg (only if building DMGs for use on non-development Macs)

Linux/Unix Build Requirements

  • Qt 6 is recommended, but Qt 5.12 or later is also supported (replace qmake6 with qmake when using Qt 5).
  • GCC or Clang
  • FFmpeg 4.0 or later
  • Install the required packages:
    • Debian/Ubuntu:
      • Base Requirements: libegl1-mesa-dev libgl1-mesa-dev libopus-dev libsdl2-dev libsdl2-ttf-dev libssl-dev libavcodec-dev libavformat-dev libswscale-dev libva-dev libvdpau-dev libxkbcommon-dev wayland-protocols libdrm-dev
      • Qt 6 (Recommended): qt6-base-dev qt6-declarative-dev libqt6svg6-dev qt6-wayland qml6-module-qtquick-controls qml6-module-qtquick-templates qml6-module-qtquick-layouts qml6-module-qtqml-workerscript qml6-module-qtquick-window qml6-module-qtquick
      • Qt 5: qtbase5-dev qt5-qmake qtdeclarative5-dev qtquickcontrols2-5-dev qml-module-qtquick-controls2 qml-module-qtquick-layouts qml-module-qtquick-window2 qml-module-qtquick2 qtwayland5
    • RedHat/Fedora (RPM Fusion repo required):
      • Base Requirements: openssl-devel SDL2-devel SDL2_ttf-devel ffmpeg-devel libva-devel libvdpau-devel opus-devel pulseaudio-libs-devel alsa-lib-devel libdrm-devel
      • Qt 6 (Recommended): qt6-qtsvg-devel qt6-qtdeclarative-devel
      • Qt 5: qt5-qtsvg-devel qt5-qtquickcontrols2-devel
  • Building the Vulkan renderer requires a libplacebo-dev/libplacebo-devel version of at least v7.349.0 and FFmpeg 6.1 or later.

Steam Link Build Requirements

  • Steam Link SDK cloned on your build system
  • STEAMLINK_SDK_PATH environment variable set to the Steam Link SDK path

Steam Link Hardware Limitations
Moonlight builds for Steam Link are subject to hardware limitations of the Steam Link device:

  • Maximum resolution: 1080p (1920x1080)
  • Maximum framerate: 60 FPS
  • Maximum video bitrate: 40 Mbps
  • HDR streaming is not supported on the original hardware

Docker containers

If you want to use Docker for building, look at this repo containing canonical containers for different architectures, which handle building deps and extra linking for you.

Build Setup Steps

  1. Install the latest Qt SDK (and optionally, the Qt Creator IDE) from https://www.qt.io/download
    • You can install Qt via Homebrew on macOS, but you will need to use brew install qt --with-debug to be able to create debug builds of Moonlight.
    • You may also use your Linux distro's package manager for the Qt SDK as long as the packages are Qt 5.12 or later.
    • This step is not required for building on Steam Link, because the Steam Link SDK includes Qt 5.14.
  2. Download submodules and dependencies
    • Run git submodule update --init --recursive from within moonlight-qt/.
    • On Windows and macOS, you must also run setup-deps.ps1 (Windows) or setup-deps.py (macOS).
    • Perform these steps each time you pull new changes from the Git repository.
  3. Open the project in Qt Creator or build from qmake on the command line.
    • To build a binary for use on non-development machines, use the scripts in the scripts folder.
      • For Windows builds, use scripts\build-arch.bat and scripts\generate-bundle.bat. Execute these scripts from the root of the repository within a Qt command prompt. Ensure 7-Zip binary directory is on your %PATH%.
      • For macOS builds, use scripts/generate-dmg.sh. Execute this script from the root of the repository and ensure Qt's bin folder is in your $PATH.
      • For Steam Link builds, run scripts/build-steamlink-app.sh from the root of the repository.
    • To build from the command line for development use on macOS or Linux, run qmake6 moonlight-qt.pro then make debug or make release.
      • The final binary will be placed in app/moonlight.
    • To create an embedded build for a single-purpose device, use qmake6 "CONFIG+=embedded" moonlight-qt.pro and build normally.
      • This build will lack windowed mode, Discord/Help links, and other features that don't make sense on an embedded device.
      • For platforms with poor GPU performance, add "CONFIG+=gpuslow" to prefer direct KMSDRM rendering over GL/Vulkan renderers. Direct KMSDRM rendering can use dedicated YUV/RGB conversion and scaling hardware rather than slower GPU shaders for these operations.

Contribute

  1. Fork us
  2. Write code
  3. Send Pull Requests

Check out our website for project links and information.

About

GameStream client for PCs (Windows, Mac, Linux, and Steam Link)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages