From 6e3ecf794f5528d6fb086c08443748c074197f5d Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Mon, 28 Nov 2022 21:49:07 -0500 Subject: try to simplify state transitions --- emacsconf-publish.el | 1 + emacsconf-stream.el | 49 ++++++++++++++++++++++++++++++++++--------------- emacsconf.el | 2 ++ 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/emacsconf-publish.el b/emacsconf-publish.el index a4b09fe..ed83cd6 100644 --- a/emacsconf-publish.el +++ b/emacsconf-publish.el @@ -1980,6 +1980,7 @@ when the host has opened the Q&A.

(defun emacsconf-publish-bbb-static-redirects () "Create emergency redirects that can be copied over the right location." + (interactive) (mapc (lambda (state) (let ((emacsconf-publish-current-dir (expand-file-name diff --git a/emacsconf-stream.el b/emacsconf-stream.el index 078b673..91fbd81 100644 --- a/emacsconf-stream.el +++ b/emacsconf-stream.el @@ -190,27 +190,46 @@ while OTHER-FILENAME will be displayed at other times." "@" (tramp-file-name-host info)) "-p" (tramp-file-name-port info) "nohup") - (if (plist-get talk :recorded-intro) - (list "~/bin/track-mpv" (concat "~/assets/intros/" (plist-get talk :slug) ".webm")) - (list "firefox" (concat "~/assets/in-between/" (plist-get talk :slug) ".png"))) + (list "intro" (plist-get talk :slug)) (list ">" "/dev/null" "2>&1" "&"))))) (defun emacsconf-stream-play-talk-on-change (talk) "Play the talk." (interactive (list (emacsconf-complete-talk-info))) (when (or (not (boundp 'org-state)) (string= org-state "PLAYING")) - (if (plist-get talk :video-file) - (save-window-excursion - (emacsconf-stream-play-video talk)) - (let ((default-directory (emacsconf-stream-track-login talk)) - (async-shell-command-buffer 'new-buffer)) - (save-window-excursion - (shell-command - (concat "nohup firefox -new-window " - (shell-quote-argument - (plist-get talk :bbb-room)) - " > /dev/null 2>&1 & ")) - (emacsconf-stream-play-intro-maybe talk)))))) + (let ((info (tramp-dissect-file-name (emacsconf-stream-track-login talk)))) + (apply + #'call-process + (append + (list + "ssh" nil nil t + (concat (tramp-file-name-user info) + "@" (tramp-file-name-host info)) + "-p" (tramp-file-name-port info) + (format "DISPLAY=%s" (plist-get (emacsconf-get-track talk) :vnc-display)) + "nohup") + (cond + ((and + (plist-get talk :recorded-intro) + (plist-get talk :video-file)) ;; recorded intro and recorded talk + (message "should automatically play intro and recording") + (list "play" (plist-get talk :slug))) ;; todo deal with stream files + ((and + (plist-get talk :recorded-intro) + (null (plist-get talk :video-file))) ;; recorded intro and live talk; play the intro and join BBB + (message "should automatically play intro; join %s" (plist-get talk :bbb-backstage)) + (list "intro" (plist-get talk :slug))) + ((and + (null (plist-get talk :recorded-intro)) + (plist-get talk :video-file)) ;; live intro and recorded talk, show slide and use Mumble; manually play talk + (message "should show intro slide; play %s afterwards" (plist-get talk :slug)) + (list "intro" (plist-get talk :slug))) + ((and + (null (plist-get talk :recorded-intro)) + (null (plist-get talk :video-file))) ;; live intro and live talk, join the BBB + (message "join %s for live intro and talk" (plist-get talk :bbb-backstage)) + (list "bbb" (plist-get talk :slug)))) + (list "&")))))) (defun emacsconf-stream-get-filename (talk) "Return the local filename for the video file for TALK. diff --git a/emacsconf.el b/emacsconf.el index fe1d2ff..abd0052 100644 --- a/emacsconf.el +++ b/emacsconf.el @@ -1033,6 +1033,7 @@ :stream ,(concat emacsconf-stream-base "gen.webm") :480p ,(concat emacsconf-stream-base "gen-480p.webm") :start "09:00" :end "17:00" + :vnc-display ":5" :vnc-port "5905" :status "offline") (:name "Development" :color "skyblue" :id "dev" :channel "emacsconf-dev" @@ -1042,6 +1043,7 @@ :stream ,(concat emacsconf-stream-base "dev.webm") :480p ,(concat emacsconf-stream-base "dev-480p.webm") :start "09:00" :end "17:00" + :vnc-display ":6" :vnc-port "5906" :status "offline"))) -- cgit v1.2.3