Skip to content

yauiclient desktop

Martin Vallevand edited this page Jun 20, 2026 · 6 revisions

yauiclient Desktop

yauiclient is a lightweight playback client for NextPVR. The desktop build runs on Windows, Linux, and macOS and renders NextPVR's UI as live video, while handling video/audio playback locally through libmpv.

This page covers install/config locations, the JSON config file and profiles, libmpv tuning, platform differences, and remote control / keyboard support.


Downloads

Platform Link
Windows yaInstaller.exe
Windows yaInstaller3.zip
Linux Generic X11
Linux Generic X11 Legacy
Linux Generic Wayland
macOS (coming soon)

All versions and release notes: Releases page


Install and Config Locations

yauiclient stores all of its settings — login info, window/screen preferences, and playback tuning — in a small JSON file, separate from wherever the program itself is installed.

Platform Config folder
Windows %APPDATA%\yauiclient\
Linux ~/.yauiclient/
macOS ~/.yauiclient/

The folder is created automatically the first time you run yauiclient, along with a default config file inside it. If you ever need to reset your settings, delete the file(s) in this folder and they'll be regenerated with defaults on next launch.

The Windows build is distributed with an NSIS installer; the install folder for the program itself (the .exe and its dependencies) is whatever you chose during setup. The config folder above is unrelated to that and is always per-Windows-user under %APPDATA%.


Config File and Profiles

Profiles

yauiclient supports multiple independent configurations, called profiles. Each profile is just its own JSON file in the config folder above, named <profile>.json (the default profile is simply called yauiclient, giving yauiclient.json).

This is useful if you want to keep separate settings for, say, two different rooms/displays, or two different NextPVR servers, using the same yauiclient install. Each profile also gets its own matching libmpv settings file (see below) — <profile>.conf alongside <profile>.json.

You choose a profile with a command-line option when launching yauiclient — see Command-Line Options below.

Config Options

Below are the options yauiclient reads from (and writes back to) the JSON config file:

Option Type Meaning
host string NextPVR server address
server_port number NextPVR server port
protocol string http or https
pin / hashed_pin string Login credential for the NextPVR server. Normally filled in automatically by yauiclient's built-in server discovery/login process — you shouldn't need to edit these by hand.
sid string Current session ID, managed automatically
client_id string A random ID generated once per install to identify this client to the server; don't need to set this manually
resolution string, e.g. "1280x720" Requested video/UI resolution from the server, and the fallback size used when running windowed
fullscreen true/false Start yauiclient in fullscreen or in a window
monitor number Which display to use for fullscreen on a multi-monitor system (0 = first monitor)
deinterlace true/false Turn on automatic deinterlacing in mpv by default
shutdown true/false What the remote's Power button does: true shuts down the whole PC, false just closes yauiclient
thumbnail_throttle number (ms) How quickly the scrub-thumbnail strip advances while you browse with Left/Right during playback
thumbnail_fast_start number (ms) How long you need to hold Left/Right before thumbnail browsing speeds up
thumbnail_fast_step number How many thumbnails are skipped per step once fast-browsing kicks in
window object {x, y, w, h} Saved windowed-mode position and size — only written to disk when you explicitly save your window placement with Alt+S; toggling or leaving fullscreen on its own does not save anything
pathsubstitution.substitute list of {from, to} Rewrites file paths the server sends (e.g. swapping a server-side recording path for a locally-mounted equivalent)

If a setting is missing from the file, yauiclient just uses a sensible built-in default, and will write the full set of current values back out the next time it saves.


Command-Line Options

yauiclient takes a few options when launched from a shortcut, terminal, or script:

Option Effect
-p <name> or --profile <name> Launch with the named profile instead of the default
-c or --console Show a live console/terminal with log output, for troubleshooting
-h or --help Print usage and exit

Launching with a specific profile

yauiclient --profile livingroom

This loads (or creates, on first run) livingroom.json — and its matching livingroom.conf for libmpv settings — instead of the default yauiclient.json. Give just the bare profile name, not a path or file extension. Leave the option off entirely to use the default profile.

Getting troubleshooting output

By default yauiclient runs quietly: no console window pops up on Windows, and on Linux/macOS its normal console output is suppressed entirely. It always writes a log file to yauiclient.log in your config folder (one shared log file regardless of which profile you're running) — that's the first place to check if something's gone wrong.

For live output while troubleshooting, launch with -c / --console:

  • On Windows, this opens a visible console window showing log output as it happens.
  • On Linux/macOS, it switches stdout/stderr to unbuffered terminal output you can watch directly in your shell, and sets the program's text locale appropriately for displaying non-ASCII characters (skipped on the LibreELEC build, which doesn't need it).

libmpv Configuration File

Playback itself is handled by libmpv (the same engine behind the standalone mpv player), and yauiclient lets you drop in your own libmpv settings per profile.

If a file named <profile>.conf exists next to your <profile>.json (so yauiclient.conf for the default profile), yauiclient loads it at startup and applies whatever options are in it on top of its own built-in defaults (hardware decoding, audio channel handling, etc.). If the file doesn't exist, yauiclient just logs that it's using its defaults and carries on — nothing breaks.

This file uses the same plain option=value format as a normal mpv config file, so anything documented as an mpv option can go in it — for example, subtitle styling, audio filters, or fine-tuning hardware decode behaviour for your particular GPU. It's intended for advanced tweaks; most people will never need to create one.


Platform Differences

The desktop build behaves the same way on every platform for the core experience — same UI rendering, same keyboard shortcuts, same playback engine — but a few things differ:

  • Windows has the most complete remote-control support: it understands classic Windows Media Center IR receivers and remotes (both their dedicated "media keys" and raw button presses), and many third-party USB IR receivers that show up as standard multimedia keyboards. Alt+F4 closes the app cleanly, stopping any live TV in progress first.
  • Linux has the same playback features and keyboard shortcuts as Windows, plus its own remote-control path: yauiclient can read an IR remote directly through the Linux kernel's built-in remote-control driver (handy with cheap USB IR receivers), or alternatively through a LIRC daemon if you already have one set up.
  • macOS (currently tested on a Hackintosh build) behaves like the Linux build for everyday playback and keyboard control, but doesn't currently have a remote/IR-receiver layer of its own — keyboard control is fully supported, dedicated remote hardware is not.
  • A separate LibreELEC Kodi add-on build also exists, aimed at always-on HTPC boxes; it's different enough (always fullscreen, takes over from Kodi, etc.) that it's documented on its own page rather than here.

Saving Window Position, Monitor, and Fullscreen State (Alt+S)

On windowed platforms (Windows, Linux, and macOS — everywhere except the LibreELEC add-on, which is always fullscreen), pressing Alt+S writes your current window setup into your profile's config so it comes back the same way next launch:

  • If you're currently windowed, it saves the exact x/y position and width/height of the window.
  • If you're currently fullscreen, it instead saves the windowed size/position you'd return to if you left fullscreen, plus which monitor you're fullscreen on — so next launch goes fullscreen on the correct display.

yauiclient also tracks which monitor your window is on automatically in the background: if you drag the window over to a different display, it notices and updates that internally, so Alt+S always saves the monitor you're actually using, not just whichever one the app happened to start on.

Not available on Wayland

This tracking depends on being able to ask the operating system exactly where the window is on screen — and the Wayland display protocol deliberately does not let applications query their own window position. That's an intentional sandboxing decision in Wayland, not a bug: compositors are free to place and move windows however they like without telling the application.

Because of that, when running under Wayland:

  • Alt+S can still save your window's width/height, but the saved x/y position isn't meaningful.
  • yauiclient can't detect that you've dragged the window to a different monitor, so the remembered monitor stays fixed at whatever it was when the window was created.

Fullscreen itself isn't affected — telling the window to go fullscreen on a specific monitor is something the app can still request directly under Wayland. It's only the after-the-fact "where did my window end up" tracking that Wayland blocks. If exact window placement on launch matters to you, running your Linux session under X11 instead of Wayland (most desktop environments offer this as a login option) avoids the limitation entirely.


Remote Control Support

yauiclient normalizes every input source — keyboard, IR remote, USB HID remote — down to one internal set of actions, so the same key behaves consistently no matter where it came from. The supported input sources are:

  • Keyboard, always available, on every platform (see the key table below).
  • Linux kernel IR remotes (evdev) — yauiclient automatically finds the /dev/input device created by the kernel for an IR receiver (the same mechanism ir-keytable uses) and reads remote button presses straight from it. If auto-detection doesn't find your receiver, a specific device path can be configured as an override.
  • LIRC — for setups that already run a LIRC daemon (Linux, LibreELEC, or WinLIRC on Windows), yauiclient can take its remote input from LIRC instead.
  • Windows Media Center remotes — handled natively through Windows' own remote/media-key messages, including raw button presses from MCE-style IR receivers.
  • USB HID multimedia remotes/keyboards — generic "consumer control" remotes (the kind that show up as a standard multimedia keyboard) are recognized for common buttons like play/pause/stop, volume, and channel up/down.

Long-press support for simple remotes: if your remote only has a directional pad, OK, and a few colour buttons (no dedicated skip/menu buttons), yauiclient adds extra functions to a 600ms long-press:

Long-press Action
Hold Up Show the hidden menu bar
Hold Left Skip back (large)
Hold Right Skip forward (large)
Hold OK/Enter Context-dependent action
Hold Blue Toggle panscan (zoom to fill screen)

Keyboard Keys and What They Do

Most keys are sent straight through to NextPVR's own keyboard shortcuts so the experience matches using NextPVR's web/desktop UI directly with a keyboard plugged into the server. A smaller set of keys are handled entirely inside yauiclient itself and never reach the NextPVR server at all — these exist for things that only make sense locally, like volume or window management.

Keys that always stay local (never sent to NextPVR)

Key What it does
Blue, long-press Toggle panscan (zoom to fill screen)
Alt+F4 Exit yauiclient
F11 or Alt+Enter Toggle fullscreen / windowed
Alt+S Save the current window position/size/monitor to your profile (see dedicated section below)
Alt+H Show/hide the window's title bar

Single-letter shortcuts (only active while a video is playing)

On top of the colour-button equivalents above, these plain letter keys are wired directly to the player and only do anything while a video is actually playing. They're handy if you're at a keyboard rather than a remote, and like the colour buttons, they never reach NextPVR:

Key What it does
B Volume up
V Volume down
M Mute
D Toggle deinterlacing
G Cycle subtitles
Y Cycle audio track
I Toggle the on-screen video stats overlay
A Cycle aspect ratio
P Toggle panscan (zoom to fill screen)

D/G/Y/A/P duplicate what the Yellow/Red/Green/Blue/long-press-Blue remote buttons do during playback — they're just keyboard-friendly alternates to the same functions, so use whichever is convenient.

Keys that are local while a video is playing, but go to NextPVR otherwise

A handful of buttons serve double duty depending on context — sent to NextPVR while you're browsing menus, but handled directly by yauiclient (faster, no round-trip) while video is actually playing:

Key While browsing NextPVR While video is playing
Red Sent to NextPVR (Alt+R) Cycle subtitles
Green Sent to NextPVR (Alt+G) Cycle audio track
Yellow Sent to NextPVR (Alt+Y) Toggle deinterlacing
Blue Sent to NextPVR (Alt+B) Cycle aspect ratio
Info Sent to NextPVR (Ctrl+I, show info) Toggle the on-screen stats overlay locally

While the scrub-thumbnail strip is on screen (after pressing Left/Right during playback), Left/Right/Enter/Escape and the skip keys are all captured locally to navigate and select a thumbnail, rather than going to the server; pressing a number key closes the strip and continues on to NextPVR as normal.

Path substitution

Normally UI client uses http for file playback. If yauiclient can access a media file via the filesystem the filesystem wil be used. On localhost this will be automatic. On remote clients if recordings are created with a UNC or have matching drive letters, the file system will also be used. If they client aren't mapped the same, manual mapping is needed by adding a path substitution block to yauiclient.json. Here is an example from Linux to a Windows setup with SMB file sharing.

    "pathsubstitution": {
        "substitute": [
            {
                "from": "/media/recordings/",
                "to": "K:/"
            },
            {
                "from": "/home/martin/recordings/",
                "to": "//172.16.105/recordings/"
            }
        ]
    },

Everything else

All remaining keys — navigation (arrows, Page Up/Down, Home, Escape, Enter), playback transport (Play, Pause, Stop, Record, Rewind, Fast Forward, Skip), channel changing, audio/subtitle selection, teletext, PIP, and the number keys — are sent to NextPVR using the same Ctrl-based shortcuts as NextPVR's own keyboard control scheme, so yauiclient behaves consistently with the rest of the NextPVR ecosystem. For the full list of those shortcuts, see the NextPVR Keyboard Reference.