From 628ba98d3b2c3e8c028554c4261783693b6a46a7 Mon Sep 17 00:00:00 2001 From: Jakub Zych Date: Mon, 27 Apr 2026 03:45:31 +0200 Subject: [PATCH] Music Box scene + Desktop scene right-sidebar rework MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New full-screen scene (Music Box, Ctrl+M) for music-only foreground use. Built on the same terminal pattern as Goodbye/Loading: typed boot sequence (music --boot --shuffle, [audio] subscribing, library count, queue: shuffle on, standby ✓), scrolling [audio] now: history on track changes, static-HTML pinned block at the bottom (3-up next/then/then + arrow-pulse now-playing line). Below the terminal, a dedicated "CHAT !skip · !queue · !info" status strip — kept outside the scrolling area on purpose so the command help stays visible regardless of terminal contents. Desktop scene now mirrors Game's right-sidebar layout: - Camera moved into top-right at the Game-scene transform (1937,98 × 0.286), always visible (vs. Game which toggles per-session). - New Music Box widget (music-box/widget.html) directly below camera, same width (549 px) so the two pair as one column. 880 px tall to fill the right sidebar down to the canvas bottom. Authored at native pixel size with bounds_type 0 (no stretch) — pinned 3-up next + inline arrow/title/time + chat help; same scrolling [audio] history pattern as the full-screen Music Box. - HUD swapped from the shared Game HUD to a forked desktop/index.html: same top-strip + camera-frame OBS-sync, but no game-name slot (status reads "DESKTOP"), no manifest dependence, no status-bar music widget (lives in the dedicated sidebar source now). Pinned blocks in both Music Box overlays are static HTML so the structure renders even if a script throws — JS only updates text content. --- basic/scenes/Default_Stream_HUD.json | 397 +++++++++++++++++++- desktop/index.html | 344 +++++++++++++++++ music-box/index.html | 538 +++++++++++++++++++++++++++ music-box/widget.html | 314 ++++++++++++++++ 4 files changed, 1586 insertions(+), 7 deletions(-) create mode 100644 desktop/index.html create mode 100644 music-box/index.html create mode 100644 music-box/widget.html diff --git a/basic/scenes/Default_Stream_HUD.json b/basic/scenes/Default_Stream_HUD.json index 0232785..285e7b9 100644 --- a/basic/scenes/Default_Stream_HUD.json +++ b/basic/scenes/Default_Stream_HUD.json @@ -507,7 +507,7 @@ "mixers": 255, "sync": 0, "flags": 0, - "volume": 0.34666880965232849, + "volume": 0.0, "balance": 0.5, "enabled": true, "muted": false, @@ -538,7 +538,7 @@ "mixers": 255, "sync": 0, "flags": 0, - "volume": 0.012610126286745071, + "volume": 0.0053968820720911026, "balance": 0.5, "enabled": true, "muted": false, @@ -557,6 +557,121 @@ "monitoring_type": 0, "private_settings": {} }, + { + "prev_ver": 536936450, + "name": "Desktop HUD", + "uuid": "8acfb832-cfb4-4310-8ebb-b58fad2b3509", + "id": "browser_source", + "versioned_id": "browser_source", + "settings": { + "is_local_file": true, + "local_file": "/home/jin/.config/obs-studio/desktop/index.html", + "width": 2560, + "height": 1336, + "fps": 15, + "fps_custom": true, + "shutdown": true + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "libobs.mute": [], + "libobs.unmute": [], + "libobs.push-to-mute": [], + "libobs.push-to-talk": [], + "ObsBrowser.Refresh": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + }, + { + "prev_ver": 536936450, + "name": "Music Box HUD", + "uuid": "1b9f5436-864d-4f24-9f92-f45702a23953", + "id": "browser_source", + "versioned_id": "browser_source", + "settings": { + "is_local_file": true, + "local_file": "/home/jin/.config/obs-studio/music-box/index.html", + "width": 2560, + "height": 1336, + "fps": 30, + "fps_custom": true, + "shutdown": true, + "restart_when_active": true + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "libobs.mute": [], + "libobs.unmute": [], + "libobs.push-to-mute": [], + "libobs.push-to-talk": [], + "ObsBrowser.Refresh": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + }, + { + "prev_ver": 536936450, + "name": "Music Box Widget", + "uuid": "f662d513-6fe6-49fd-99f6-ea7f44e8de18", + "id": "browser_source", + "versioned_id": "browser_source", + "settings": { + "is_local_file": true, + "local_file": "/home/jin/.config/obs-studio/music-box/widget.html", + "width": 549, + "height": 880, + "fps": 15, + "fps_custom": true, + "shutdown": true + }, + "mixers": 255, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "libobs.mute": [], + "libobs.unmute": [], + "libobs.push-to-mute": [], + "libobs.push-to-talk": [], + "ObsBrowser.Refresh": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "private_settings": {} + }, { "prev_ver": 536936450, "name": "Desktop", @@ -565,7 +680,7 @@ "versioned_id": "scene", "settings": { "custom_size": false, - "id_counter": 15, + "id_counter": 17, "items": [ { "name": "Screen Capture (PipeWire)", @@ -678,8 +793,8 @@ "private_settings": {} }, { - "name": "HUD", - "source_uuid": "f409a999-358f-488d-98db-c5c6a01d01b9", + "name": "Desktop HUD", + "source_uuid": "8acfb832-cfb4-4310-8ebb-b58fad2b3509", "visible": true, "locked": false, "rot": 0.0, @@ -688,7 +803,7 @@ "y": 1336.0 }, "align": 5, - "bounds_type": 0, + "bounds_type": 1, "bounds_align": 0, "bounds_crop": false, "crop_left": 0, @@ -713,6 +828,116 @@ "x": 1.0, "y": 1.0 }, + "bounds": { + "x": 2560.0, + "y": 1336.0 + }, + "bounds_rel": { + "x": 3.8323352336883545, + "y": 2.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 300 + }, + "hide_transition": { + "duration": 300 + }, + "private_settings": {} + }, + { + "name": "Camera", + "source_uuid": "a8b362a1-91a6-491b-8751-26e2dad55ccd", + "visible": false, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 1920.0, + "y": 1080.0 + }, + "align": 5, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 16, + "group_item_backup": false, + "pos": { + "x": 1990.0, + "y": 49.0 + }, + "pos_rel": { + "x": 1.0628741979598999, + "y": -0.92664670944213867 + }, + "scale": { + "x": 0.28593748807907104, + "y": 0.28611111640930176 + }, + "scale_rel": { + "x": 0.23114706575870514, + "y": 0.23128743469715118 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 0 + }, + "hide_transition": { + "duration": 0 + }, + "private_settings": {} + }, + { + "name": "Music Box Widget", + "source_uuid": "f662d513-6fe6-49fd-99f6-ea7f44e8de18", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 549.0, + "y": 880.0 + }, + "align": 5, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 17, + "group_item_backup": false, + "pos": { + "x": 1984.0, + "y": 392.0 + }, + "pos_rel": { + "x": 1.0538922548294067, + "y": -0.41317367553710938 + }, + "scale": { + "x": 1.0364298820495605, + "y": 1.0363636016845703 + }, + "scale_rel": { + "x": 0.68267840147018433, + "y": 0.68263471126556396 + }, "bounds": { "x": 0.0, "y": 0.0 @@ -757,7 +982,11 @@ "libobs.show_scene_item.14": [], "libobs.hide_scene_item.14": [], "libobs.show_scene_item.15": [], - "libobs.hide_scene_item.15": [] + "libobs.hide_scene_item.15": [], + "libobs.show_scene_item.16": [], + "libobs.hide_scene_item.16": [], + "libobs.show_scene_item.17": [], + "libobs.hide_scene_item.17": [] }, "deinterlace_mode": 0, "deinterlace_field_order": 0, @@ -1990,6 +2219,157 @@ "monitoring_type": 0, "canvas_uuid": "6c69626f-6273-4c00-9d88-c5136d61696e", "private_settings": {} + }, + { + "prev_ver": 536936450, + "name": "Music Box", + "uuid": "747b2411-45a9-471a-b0dc-dfe39b0d6385", + "id": "scene", + "versioned_id": "scene", + "settings": { + "id_counter": 2, + "custom_size": false, + "items": [ + { + "name": "MPD", + "source_uuid": "25440930-0606-46d9-ba2c-be786ff4a3ae", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 2560.0, + "y": 1336.0 + }, + "align": 5, + "bounds_type": 0, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 1, + "group_item_backup": false, + "pos": { + "x": 0.0, + "y": 0.0 + }, + "pos_rel": { + "x": -1.9161676168441772, + "y": -1.0 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 0.0, + "y": 0.0 + }, + "bounds_rel": { + "x": 0.0, + "y": 0.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 300 + }, + "hide_transition": { + "duration": 300 + }, + "private_settings": {} + }, + { + "name": "Music Box HUD", + "source_uuid": "1b9f5436-864d-4f24-9f92-f45702a23953", + "visible": true, + "locked": false, + "rot": 0.0, + "scale_ref": { + "x": 2560.0, + "y": 1336.0 + }, + "align": 5, + "bounds_type": 1, + "bounds_align": 0, + "bounds_crop": false, + "crop_left": 0, + "crop_top": 0, + "crop_right": 0, + "crop_bottom": 0, + "id": 2, + "group_item_backup": false, + "pos": { + "x": 0.0, + "y": 0.0 + }, + "pos_rel": { + "x": -1.9161676168441772, + "y": -1.0 + }, + "scale": { + "x": 1.0, + "y": 1.0 + }, + "scale_rel": { + "x": 1.0, + "y": 1.0 + }, + "bounds": { + "x": 2560.0, + "y": 1336.0 + }, + "bounds_rel": { + "x": 3.8323352336883545, + "y": 2.0 + }, + "scale_filter": "disable", + "blend_method": "default", + "blend_type": "normal", + "show_transition": { + "duration": 300 + }, + "hide_transition": { + "duration": 300 + }, + "private_settings": {} + } + ] + }, + "mixers": 0, + "sync": 0, + "flags": 0, + "volume": 1.0, + "balance": 0.5, + "enabled": true, + "muted": false, + "push-to-mute": false, + "push-to-mute-delay": 0, + "push-to-talk": false, + "push-to-talk-delay": 0, + "hotkeys": { + "OBSBasic.SelectScene": [ + { + "control": true, + "key": "OBS_KEY_M" + } + ], + "libobs.show_scene_item.1": [], + "libobs.hide_scene_item.1": [], + "libobs.show_scene_item.2": [], + "libobs.hide_scene_item.2": [] + }, + "deinterlace_mode": 0, + "deinterlace_field_order": 0, + "monitoring_type": 0, + "canvas_uuid": "6c69626f-6273-4c00-9d88-c5136d61696e", + "private_settings": {} } ], "groups": [ @@ -2215,6 +2595,9 @@ { "name": "Desktop" }, + { + "name": "Music Box" + }, { "name": "Good Bye" } diff --git a/desktop/index.html b/desktop/index.html new file mode 100644 index 0000000..d8667be --- /dev/null +++ b/desktop/index.html @@ -0,0 +1,344 @@ +<!doctype html> +<html lang="en"> +<head> +<meta charset="utf-8"> +<title>OPHI-118 / DESKTOP + + + + +
+
+ TRANSMISSION + OPHI-118 // DESKTOP +
+
+ SIGNAL + ▮▮▮▯▯ +
+
+ UTC + --:--:-- +
+
+ +
+ + + + + CAM 01 +
+ + + + + + — WAITING FOR CAMERA — + auto-syncs from OBS scene transform +
+
+ + + + + + + + + diff --git a/music-box/index.html b/music-box/index.html new file mode 100644 index 0000000..aeefaa0 --- /dev/null +++ b/music-box/index.html @@ -0,0 +1,538 @@ + + + + +OPHI-118 / MUSIC BOX + + + + +
+
+ ON AIR + OPHI-118 // MUSIC +
+
+ SIGNAL + ▮▮▮▮▯ +
+
+ UTC + --:--:-- +
+
+ +
+
+ +
+
+
+
+ next:— end of queue — +
+
+ then: +
+
+ then: +
+
+
+ connecting to daemon…[--:-- / --:--] +
+
+
+
+
+ +
+ CHAT + + !skipnext track + !queuepeek next 3 + !infofull metadata + +
+ + + + + + +
+
+
+ + + + + + + + diff --git a/music-box/widget.html b/music-box/widget.html new file mode 100644 index 0000000..d56805f --- /dev/null +++ b/music-box/widget.html @@ -0,0 +1,314 @@ + + + + +Music Box widget + + + + + + + + +
+ NOW PLAYING + CH 118.0 // MUSIC +
+ +
+ +
+
+
+
+ next:— end of queue — +
+
+ then: +
+
+ then: +
+
+
+ connecting…[--:-- / --:--] +
+
+ chat: !skip · !queue · !info +
+
+
+
+ +
+ + + + + +