yt-dlp: a managed, checksum-verified, daily-updated yt-dlp in the app and the dedicated server (--[no-]yt-dlp, --yt-dlp-dir). Pasted links are probed: direct files stay links, pages are resolved for title, uploader, duration and thumbnail. Everyone fetches it: mpv's ytdl hook on the managed copy. I pass it on / the server fetches it: the best single-file format, re-resolved once when its URL expires. Relay names never split the /r/ path; viewers of server-fetched pages wait for the relay to go live. No wire change. Icon: two stars orbiting a play button (assets/icon/icon.svg, PNGs, the Windows .ico). GTK app id moe.senkochan.watch_together; release builds install their .desktop file and icons into ~/.local/share so Wayland shows the icon; the window icon is set for X11. README shows the icon. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
27 lines
1.0 KiB
Desktop File
27 lines
1.0 KiB
Desktop File
# Dedicated watch-together server (no display needed).
|
|
# Install: unpack the release tarball to /opt/watch-together (the unit only
|
|
# uses the watch-together-server binary in it), copy this file to
|
|
# /etc/systemd/system/, then `systemctl enable --now watch-together`.
|
|
# Flags: --port <n> (default 8080), --secret <password> (empty = open
|
|
# server, anyone who can reach the port can join), --name, --media <file>,
|
|
# --advertise-host <host>, --no-yt-dlp, --yt-dlp-dir <dir>, --config
|
|
# <file.yaml|json>. See README. The server's yt-dlp (for web page links it
|
|
# fetches) is downloaded into the state directory below.
|
|
# Prefer --config with a root-only file over --secret here: unit files and
|
|
# process lists are readable by other users.
|
|
|
|
[Unit]
|
|
Description=watch-together dedicated server
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
ExecStart=/opt/watch-together/watch-together-server --port 8080 --secret change-me
|
|
Restart=on-failure
|
|
DynamicUser=true
|
|
StateDirectory=watch-together
|
|
NoNewPrivileges=true
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|