lots: shellcheck, streaming stuff, fixes
[distro-setup] / obs-i3-monitor
diff --git a/obs-i3-monitor b/obs-i3-monitor
new file mode 100755 (executable)
index 0000000..26d17f8
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+set -e; . /usr/local/lib/bash-bear; set +e
+
+try() {
+  "$@" || printf "warning: failed %s\n" "$*"
+}
+
+while true; do
+  while read -r line ; do
+    mark=$(printf "%s\n" "$line" | jq -r 'select (.change == "focus") | .container.marks[0]') ||:
+    if [[ $mark && $mark != null ]]; then
+      echo $mark > /tmp/last-obs-i3-mark
+      if [[ ! -e /tmp/no-obs-auto-scene-switch ]]; then
+        p=$(cat /p/obs-ws-pass)
+        try obs-cmd -w obsws://localhost:4455/$p scene switch $mark
+      fi
+    fi
+    # debugging
+    #printf "%s\n" "$line" | jq
+
+
+    # intentional process substitution to properly exit on kill
+    # ||: avoids error messages
+  done < <(i3-msg -t subscribe -m '[ "window" ]' ||:)
+  sleep 5
+done