diff --git a/config.example.toml b/config.example.toml index 0af6218..8241fcc 100644 --- a/config.example.toml +++ b/config.example.toml @@ -23,6 +23,10 @@ runs = "~/SplatWorkshop/runs" # Additional folders that are scanned for *_stereo.mp4 recordings. extra_recording_dirs = ["~/Downloads", "~/Videos"] +# Program for "Open in video player", e.g. "mpv" or "vlc --fullscreen". +# Leave empty to use the system default for MP4 files. +video_player = "" + [frame] # SSH target of your Steam Frame. Leave empty to work without the Frame # (no downloading of recordings, no copying into the Gaussian XR gallery). diff --git a/splat_workshop/config.py b/splat_workshop/config.py index 3aa47e6..c319a92 100644 --- a/splat_workshop/config.py +++ b/splat_workshop/config.py @@ -25,6 +25,7 @@ DEFAULTS = { "recordings": "~/SplatWorkshop/recordings", "runs": "~/SplatWorkshop/runs", "extra_recording_dirs": ["~/Downloads", "~/Videos"], + "video_player": "", }, "frame": {"host": ""}, "server": {"port": 8771, "lan": False, "idle_minutes": 20, "language": "auto"}, @@ -48,6 +49,8 @@ class Config: self.recordings = path(p["recordings"]) self.runs = path(p["runs"]) self.extra_recording_dirs = [path(d) for d in p.get("extra_recording_dirs", [])] + # Command for "Open in video player" (e.g. "mpv"); empty = system default via xdg-open + self.video_player = shlex.split(p.get("video_player", "")) or ["xdg-open"] self.frame_host = os.environ.get("FRAME_HOST", f.get("host", "")).strip() self.port = int(os.environ.get("SPLAT_PORT", s["port"])) lan = os.environ.get("SPLAT_LAN") diff --git a/splat_workshop/server.py b/splat_workshop/server.py index da6c223..29802ed 100644 --- a/splat_workshop/server.py +++ b/splat_workshop/server.py @@ -860,7 +860,7 @@ class Handler(http.server.BaseHTTPRequestHandler): if not local: e = err("err.not_local") else: - subprocess.Popen(["xdg-open", local], start_new_session=True, + subprocess.Popen([*CFG.video_player, local], start_new_session=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) elif path == "/api/open": d = scene_dir(p.get("slug", ""))