Skip to content

MPRIS-enabled player remote control via web UI. Control media on Linux machines from the comfort of your phone!

Notifications You must be signed in to change notification settings

Ozdotdotdot/UMR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

remoted

Go daemon + web UI for remote media control on Linux (MPRIS playback + PipeWire/PulseAudio volume). Includes a live now-playing page with artwork, transport controls, seek bar, and volume.

Mobile UI showing playback controls and artwork

Features

  • Auto player selection with manual override; WebSocket push updates (no polling).
  • Play/pause, next/prev, ±10s seek, arbitrary seek via scrubber, volume set/delta/mute.
  • Artwork-driven theming: background, controls, and service icons adapt to dominant colors in the current artwork; falls back to service-themed icons when art is missing.
  • Artwork proxying for local file:// art (under /tmp//var/tmp). Optional Chromium helper extension can send the active tab URL to remoted for higher-quality art (YouTube thumbnails, TMDb lookups); Firefox already exposes URLs via MPRIS.
  • HTTP API + browser UI (/ui).
  • Progressive Web App enabled for mobile interfaces. Can now "add to homescreen" on iOS for easy and native-feeling access.

Prereqs

  • Linux desktop with MPRIS-capable players and DBus (standard on most distros).
  • PipeWire (wpctl) or PulseAudio (pactl) for volume control.
  • Go 1.21+ (only needed for go install or building yourself).

Install (Go users)

go install github.com/ozdotdotdot/UMR/cmd/remoted@latest

Notes:

  • Binary name: remoted; ensure $GOBIN (or $GOPATH/bin) is on your PATH.
  • @latest resolves to the latest git tag (e.g., v0.1.0).

Install (downloaded binary)

Release tarballs include ready-to-run binaries:

  • remoted-linux-amd64.tar.gz
  • remoted-linux-arm64.tar.gz

Download and unpack:

tar -xf remoted-linux-amd64.tar.gz
./remoted-linux-amd64

Configure / Run

You can configure with env vars or flags (flags override env defaults):

  • REMOTED_BIND / -bind — listen address (default 127.0.0.1)
  • REMOTED_PORT / -port — listen port (default 8080)
  • REMOTED_TOKEN / -token — bearer token (required for everything except /healthz when set)
  • REMOTED_ART_CACHE / -art-cache — art cache dir (default ~/.cache/umr/art or /tmp/umr/art)
  • REMOTED_TMDB_KEY / -tmdb-key — optional TMDb API key; enables fallback art for HBO/Max titles
  • -version (string) or -v (print version and exit)

Examples:

# local-only (env)
REMOTED_TOKEN="choose-a-secret" remoted

# LAN access (flag)
remoted -bind=0.0.0.0 -token=choose-a-secret

Visit the UI at http://<host>:<port>/ui (enter your token if set). WebSocket updates keep the page live; transport and volume controls call the API.

Health check:

curl http://127.0.0.1:8080/healthz

Optional add-ons

  • Chromium URL helper: Chromium doesn’t expose tab URLs over MPRIS. A tiny local extension can POST the active media tab URL to http://127.0.0.1:8080/player/url (with your token) so YouTube thumbnails and TMDb lookups work in Chromium. Load the helper as an unpacked extension (Developer Mode in chrome://extensions); Firefox already exposes URLs and doesn’t need this.
  • TMDb fallback art: set REMOTED_TMDB_KEY (or -tmdb-key) to enable TMDb lookups for HBO/Max sessions that lack artwork. Uses a quick search (prefers exact title match, else most popular TV/movie with a poster), cached ~12h, w342 poster size, 2s timeout. Requires a TMDb account and an API (free). Also used for Crunchyroll sessions when the show title can be parsed from the player window title; if parsing fails, the UI falls back to a Crunchyroll-themed icon.

Streaming artwork support

  • Netflix: falls back to a Netflix-themed icon when artwork is missing; colors adapt to the service palette or extracted art.
  • HBO/Max: TMDb lookup fills in artwork when the player provides none (requires REMOTED_TMDB_KEY).
  • Crunchyroll: attempts TMDb art pulls when the show name can be extracted from the title; coverage depends on how the title is formatted. Otherwise shows a Crunchyroll icon.

Supported video services (art + theming)

  • Netflix
  • HBO / Max
  • Crunchyroll (partial: depends on title formatting)
  • Generic players inherit artwork-driven theming when art is available.

API

See docs/API.md for endpoints, auth, and examples (players, nowplaying, playback controls, seek, volume, art proxy).

About

MPRIS-enabled player remote control via web UI. Control media on Linux machines from the comfort of your phone!

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published