summaryrefslogtreecommitdiffstats
path: root/roles/obs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--roles/obs/tasks/firefox.yml36
-rw-r--r--roles/obs/tasks/main.yml76
-rw-r--r--roles/obs/tasks/mpv.yml21
-rw-r--r--roles/obs/tasks/obs-setup.yml40
-rw-r--r--roles/obs/tasks/pulse.yml6
-rw-r--r--roles/obs/tasks/tigervnc.yml39
-rw-r--r--roles/obs/tasks/track.yml83
-rw-r--r--roles/obs/tasks/user.yml14
-rw-r--r--roles/obs/templates/bashrc116
-rw-r--r--roles/obs/templates/global.ini36
-rw-r--r--roles/obs/templates/i3-config26
-rwxr-xr-xroles/obs/templates/mpv-track2
-rw-r--r--roles/obs/templates/mpv.conf27
-rwxr-xr-xroles/obs/templates/obs-track2
-rw-r--r--roles/obs/templates/scenes.json644
-rw-r--r--roles/obs/templates/vnc-track2
-rwxr-xr-xroles/obs/templates/xstartup-track6
17 files changed, 992 insertions, 184 deletions
diff --git a/roles/obs/tasks/firefox.yml b/roles/obs/tasks/firefox.yml
deleted file mode 100644
index d96e330..0000000
--- a/roles/obs/tasks/firefox.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-- name: Add Firefox
- apt:
- name: firefox-esr
- when: ansible_distribution == "Debian"
-- name: Add Firefox
- apt:
- name: firefox-esr
- when: ansible_distribution == "Ubuntu"
-- name: Check if Firefox profiles exist
- lineinfile:
- dest: "{{ emacsconf_home }}/.mozilla/firefox/profiles.ini"
- line: "Name={{ emacsconf_id }}-{{ item.id }}"
- check_mode: yes
- register: find_profiles
- failed_when: no
- loop: "{{ emacsconf_tracks }}"
-- name: Fail if there are missing profiles
- fail:
- msg: "Please use firefox -no-remote -CreateProfile {{ emacsconf_id }}-{{ item.item.id }} in an X session to create the profiles."
- when: item.changed
- loop: "{{ find_profiles.results }}"
-- name: Create scripts for tracks
- template:
- src: firefox-track
- dest: "{{ emacsconf_home }}/bin/{{ item.id }}/-firefox"
- owner: "{{ emacsconf_user }}"
- group: "{{ emacsconf_group }}"
- mode: 0775
- loop: "{{ emacsconf_tracks }}"
-
- # - debug:
-# var: find_profiles.results
-# - name: Create profile if it doesn't exist
-# shell: xinit firefox -no-remote -CreateProfile "{{ emacsconf_id }}-{{ item.item.id }}"
-# when: item.changed
-# loop: "{{ find_profiles.results }}"
diff --git a/roles/obs/tasks/main.yml b/roles/obs/tasks/main.yml
index cb981b1..36e14c3 100644
--- a/roles/obs/tasks/main.yml
+++ b/roles/obs/tasks/main.yml
@@ -19,61 +19,39 @@
- dbus-x11
- obs-studio
- xserver-xorg-dev
+ - xdotool
update_cache: yes
-- name: Set up user
- include: user.yml
-- name: Set up track bins for addition to paths
- file:
- path: "{{ emacsconf_home }}/bin/{{ item.id }}"
- state: directory
- owner: "{{ emacsconf_user }}"
- group: "{{ emacsconf_group }}"
- loop: "{{ emacsconf_tracks }}"
+- name: Add Firefox
+ apt:
+ name: firefox-esr
+ when: ansible_distribution == "Debian"
+- name: Add Firefox
+ apt:
+ name: firefox-esr
+ when: ansible_distribution == "Ubuntu"
- name: Copy X11 config
template:
src: xorg.conf
dest: /etc/X11/xorg.conf
-- name: Set up VNC
- include: tigervnc.yml
- tags: vnc, wip
- name: Set up MPV and MPVC
tags: mpv
include: mpv.yml
-- name: Set up OBS profiles and scenes
- tags: obs-profile
- include: obs-setup.yml
-- name: Add FFMPEG script for streaming
- template:
- src: stream-desktop-with-ffmpeg.sh
- dest: /home/{{ emacsconf_user }}/bin/{{ item.id }}/stream-desktop-with-ffmpeg
- mode: 0775
- owner: "{{ emacsconf_user }}"
- group: "{{ emacsconf_group }}"
+- name: Set up track-specific things
+ include: track.yml
loop: "{{ emacsconf_tracks }}"
-- name: Copy logo
- copy:
- src: logo.png
- dest: "{{ emacsconf_home }}/logo.png"
-# - name: Start jack
-# shell: jackd -r -ddummy
-# async: 2592000
-- name: Set up pulse
- include: pulse.yml
- tags: pulse
-- name: Set up Firefox
- tags: firefox
- include: firefox.yml
-- name: Set up I3 directory
- tags: wip
- file:
- path: "{{ emacsconf_home }}/.config/i3"
- state: directory
- owner: "{{ emacsconf_user }}"
- group: "{{ emacsconf_group }}"
-- name: Set up I3
- tags: wip
- template:
- src: i3-config
- dest: "{{ emacsconf_home }}/.config/i3/config"
- owner: "{{ emacsconf_user }}"
- group: "{{ emacsconf_group }}"
+- debug:
+ var: emacsconf_home
+- name: Add packages
+ apt:
+ name:
+ - tigervnc-standalone-server
+ - tigervnc-common
+ tags: vnc
+- name: Allow SSH for the users
+ replace:
+ dest: /etc/ssh/sshd_config.d/emacsconf_ssh.conf
+ regexp: '(AllowUsers(?!.*\b{{ emacsconf_id }}-{{ item.id }}\b).*)$'
+ replace: \1 {{ emacsconf_id }}-{{ item.id }}
+ loop: "{{ emacsconf_tracks }}"
+
+
diff --git a/roles/obs/tasks/mpv.yml b/roles/obs/tasks/mpv.yml
index 581472a..9fbdc05 100644
--- a/roles/obs/tasks/mpv.yml
+++ b/roles/obs/tasks/mpv.yml
@@ -8,18 +8,6 @@
- name: Install mpv
apt:
name: mpv=0.34.1+fruit.2
-- name: Create MPV profile directory
- file:
- path: "{{ emacsconf_home }}/.config/mpv"
- state: directory
- owner: "{{ emacsconf_user }}"
- group: "{{ emacsconf_group }}"
-- name: Add MPV profile
- template:
- src: mpv.conf
- dest: "{{ emacsconf_home }}/.config/mpv/mpv.conf"
- owner: "{{ emacsconf_user }}"
- group: "{{ emacsconf_group }}"
- name: Download MPVC
git:
repo: https://github.com/lwilletts/mpvc.git
@@ -28,11 +16,4 @@
make:
chdir: /usr/src/mpvc
target: install
-- name: Create mpv scripts for tracks
- template:
- src: mpv-track
- dest: "{{ emacsconf_home }}/bin/{{ item.id }}/-mpv"
- owner: "{{ emacsconf_user }}"
- group: "{{ emacsconf_group }}"
- mode: 0775
- loop: "{{ emacsconf_tracks }}"
+
diff --git a/roles/obs/tasks/obs-setup.yml b/roles/obs/tasks/obs-setup.yml
index be82a8f..1da678a 100644
--- a/roles/obs/tasks/obs-setup.yml
+++ b/roles/obs/tasks/obs-setup.yml
@@ -1,37 +1,53 @@
- name: Create OBS scene directory
file:
- path: "{{ emacsconf_home }}/.config/obs-studio/basic/scenes"
- state: directory
+ path: "~{{ emacsconf_user }}/.config/obs-studio/basic/scenes"
owner: "{{ emacsconf_user }}"
group: "{{ emacsconf_group }}"
+ state: directory
- name: Create profile directories
file:
- path: "{{ obs_profile_path }}/{{ item.name }}"
+ path: "~{{ emacsconf_user }}/.config/obs-studio/basic/{{ item.name }}"
state: directory
owner: "{{ emacsconf_user }}"
group: "{{ emacsconf_group }}"
mode: 0775
- loop: "{{ emacsconf_tracks }}"
+- name: Install OBS global profile
+ tags: wip
+ template:
+ src: global.ini
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
+ dest: "~{{ emacsconf_user }}/.config/obs-studio/global.ini"
- name: Install OBS profiles
template:
src: profile.ini
- dest: "{{ obs_profile_path }}/{{ item.name }}/basic.ini"
owner: "{{ emacsconf_user }}"
group: "{{ emacsconf_group }}"
- force: no
+ dest: "~{{ emacsconf_user }}/.config/obs-studio/basic/{{ item.name }}/basic.ini"
mode: 0664
- loop: "{{ emacsconf_tracks }}"
- name: Install OBS scenes
+ tags: obs-scene
template:
src: scenes.json
- dest: "{{ emacsconf_home }}/.config/obs-studio/basic/scenes/{{ item.id }}.json"
- force: no
- loop: "{{ emacsconf_tracks }}"
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
+ dest: "~{{ emacsconf_user }}/.config/obs-studio/basic/scenes/{{ item.id }}.json"
+- name: Create text files for OBS sources
+ copy:
+ content: "Initializing..."
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
+ dest: "~{{ emacsconf_user }}/{{ item }}.txt"
+ mode: 0664
+ loop:
+ - news
+ - url
+ - bottom
- name: Create OBS scripts for tracks
template:
src: obs-track
- dest: "{{ emacsconf_home }}/bin/{{ item.id }}/-obs"
+ dest: "~{{ emacsconf_user }}/bin/track-obs"
owner: "{{ emacsconf_user }}"
group: "{{ emacsconf_group }}"
mode: 0775
- loop: "{{ emacsconf_tracks }}"
+
diff --git a/roles/obs/tasks/pulse.yml b/roles/obs/tasks/pulse.yml
index 1cb71c5..f9a18f7 100644
--- a/roles/obs/tasks/pulse.yml
+++ b/roles/obs/tasks/pulse.yml
@@ -1,7 +1,7 @@
- name: Create pulse directory
file:
state: directory
- path: "{{ emacsconf_home }}/.config/pulse/"
+ path: "~{{ emacsconf_user }}/.config/pulse/"
owner: "{{ emacsconf_user }}"
group: "{{ emacsconf_group }}"
- name: Set up pulse configuration
@@ -9,12 +9,12 @@
src: pulse
owner: "{{ emacsconf_user }}"
group: "{{ emacsconf_group }}"
- dest: "{{ emacsconf_home }}/.config/pulse/default.pa"
+ dest: "~{{ emacsconf_user }}/.config/pulse/default.pa"
mode: 0755
- name: Change ownership
file:
state: directory
- path: "{{ emacsconf_home }}/.config/pulse/"
+ path: "~{{ emacsconf_user }}/.config/pulse/"
owner: "{{ emacsconf_user }}"
group: "{{ emacsconf_group }}"
recurse: true
diff --git a/roles/obs/tasks/tigervnc.yml b/roles/obs/tasks/tigervnc.yml
index 539b70e..e895bec 100644
--- a/roles/obs/tasks/tigervnc.yml
+++ b/roles/obs/tasks/tigervnc.yml
@@ -1,36 +1,27 @@
-- name: Add packages
- apt:
- name:
- - tigervnc-standalone-server
- - tigervnc-common
- name: Create VNC dirs
file:
- path: /home/{{ emacsconf_user }}/.vnc
+ path: ~{{ emacsconf_user }}/.vnc
state: directory
- mode: 0755
owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
+ mode: 0755
# https://github.com/sdarwin/Ansible-VNC/blob/master/tasks/main.yml
- name: Set VNC password
- become: "{{ emacsconf_user }}"
shell: |
set -o pipefail
- printf "{{ vnc_password }}\n{{ vnc_password }}\n\n" | vncpasswd /home/{{ emacsconf_user }}/.vnc/passwd
+ printf "{{ vnc_password }}\n{{ vnc_password }}\n\n" | vncpasswd ~{{ emacsconf_user }}/.vnc/passwd
args:
- chdir: "/home/{{ emacsconf_user }}/.vnc"
- creates: "/home/{{ emacsconf_user }}/.vnc/passwd"
+ chdir: "~{{ emacsconf_user }}/.vnc"
+ creates: "~{{ emacsconf_user }}/.vnc/passwd"
executable: /bin/bash
-- name: Set up xstartup
- template:
- src: xstartup
- dest: ~{{ emacsconf_user }}/.vnc/xstartup
- mode: 0700
- name: Set up xstartup for the tracks
template:
src: xstartup-track
- dest: ~{{ emacsconf_user }}/.vnc/xstartup-{{ item.id }}
+ dest: ~{{ emacsconf_user }}/.vnc/xstartup
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
mode: 0700
- loop: "{{ emacsconf_tracks }}"
-- name: Set up xstartup
+- name: Set up xresources
template:
src: xresources
dest: ~{{ emacsconf_user }}/.Xresources
@@ -40,15 +31,7 @@
- name: Set up VNC scripts
template:
src: vnc-track
- dest: "{{ emacsconf_home }}/bin/{{ item.id }}/-vnc"
+ dest: "~{{ emacsconf_user }}/bin/track-vnc"
mode: 0755
owner: "{{ emacsconf_user }}"
group: "{{ emacsconf_group }}"
- loop: "{{ emacsconf_tracks }}"
-- name: Set permissions and ownership
- file:
- path: "/home/{{ emacsconf_user }}/.vnc"
- owner: "{{ emacsconf_user }}"
- group: "{{ emacsconf_group }}"
- mode: "u+rwX,g-rwx,o-rwx"
- recurse: t
diff --git a/roles/obs/tasks/track.yml b/roles/obs/tasks/track.yml
new file mode 100644
index 0000000..93b789d
--- /dev/null
+++ b/roles/obs/tasks/track.yml
@@ -0,0 +1,83 @@
+- name: Set vars
+ tags: wip, obs-scene, mpv
+ set_fact:
+ old_emacsconf_user: "{{ emacsconf_user }}"
+ old_emacsconf_home: "{{ emacsconf_home }}"
+ emacsconf_user: "{{ emacsconf_id }}-{{ item.id }}"
+ emacsconf_home: "/home/{{ emacsconf_id }}-{{ item.id }}"
+- debug:
+ var: emacsconf_home
+- name: Set up user
+ include: user.yml
+- name: Set up user-related things
+ become: "{{ emacsconf_user }}"
+ block:
+ - name: Set up track bins for addition to paths
+ file:
+ path: "~{{ emacsconf_user }}/bin/{{ item.id }}"
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
+ state: directory
+ - name: Set up VNC
+ include: tigervnc.yml
+ - name: Create MPV profile directory
+ file:
+ path: "~{{ emacsconf_user }}/.config/mpv"
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
+ state: directory
+ - name: Add MPV profile
+ template:
+ src: mpv.conf
+ dest: "~{{ emacsconf_user }}/.config/mpv/mpv.conf"
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
+ - name: Create mpv scripts for tracks
+ template:
+ src: mpv-track
+ dest: "~{{ emacsconf_user }}/bin/track-mpv"
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
+ mode: 0775
+ - name: Set up OBS profiles and scenes
+ tags: obs-profile
+ include: obs-setup.yml
+ - name: Add FFMPEG script for streaming
+ template:
+ src: stream-desktop-with-ffmpeg.sh
+ dest: "~{{ emacsconf_user }}/bin/stream-desktop-with-ffmpeg"
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
+ mode: 0775
+ loop: "{{ emacsconf_tracks }}"
+ - name: Copy logo
+ copy:
+ src: logo.png
+ dest: "~{{ emacsconf_user }}/logo.png"
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
+ # - name: Start jack
+ # shell: jackd -r -ddummy
+ # async: 2592000
+ - name: Set up pulse
+ include: pulse.yml
+ tags: pulse
+ - name: Set up I3 directory
+ file:
+ path: "~{{ emacsconf_user }}/.config/i3"
+ state: directory
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
+ - name: Set up I3
+ template:
+ src: i3-config
+ dest: "~{{ emacsconf_user }}/.config/i3/config"
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
+- name: Reset vars
+ tags: wip, obs-scene, mpv
+ set_fact:
+ old_emacsconf_user: "{{ emacsconf_user }}"
+ old_emacsconf_home: "{{ emacsconf_home }}"
+ emacsconf_user: "{{ old_emacsconf_user }}"
+ emacsconf_home: "{{ old_emacsconf_home }}"
diff --git a/roles/obs/tasks/user.yml b/roles/obs/tasks/user.yml
index c1493dd..a941d7f 100644
--- a/roles/obs/tasks/user.yml
+++ b/roles/obs/tasks/user.yml
@@ -2,9 +2,11 @@
group:
name: "{{ emacsconf_group }}"
- name: Add user
+ tags: wip
user:
name: "{{ emacsconf_user }}"
group: "{{ emacsconf_group }}"
+ shell: /bin/bash
# password: "{{ emacsconf_unix_password }}"
- name: Create SSH folder
file:
@@ -23,3 +25,15 @@
recurse: true
owner: "{{ emacsconf_user }}"
mode: "u+rwX,g-rwx,o-rwx"
+- name: Create bin dir
+ file:
+ path: "/home/{{ emacsconf_user }}/bin"
+ state: directory
+ owner: "{{ emacsconf_user }}"
+- name: Set up bashrc
+ template:
+ src: bashrc
+ dest: "/home/{{ emacsconf_user }}/.bashrc"
+ owner: "{{ emacsconf_user }}"
+ group: "{{ emacsconf_group }}"
+
diff --git a/roles/obs/templates/bashrc b/roles/obs/templates/bashrc
new file mode 100644
index 0000000..3677017
--- /dev/null
+++ b/roles/obs/templates/bashrc
@@ -0,0 +1,116 @@
+# ~/.bashrc: executed by bash(1) for non-login shells.
+# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
+# for examples
+
+# If not running interactively, don't do anything
+case $- in
+ *i*) ;;
+ *) return;;
+esac
+
+# don't put duplicate lines or lines starting with space in the history.
+# See bash(1) for more options
+HISTCONTROL=ignoreboth
+
+# append to the history file, don't overwrite it
+shopt -s histappend
+
+# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
+HISTSIZE=1000
+HISTFILESIZE=2000
+
+# check the window size after each command and, if necessary,
+# update the values of LINES and COLUMNS.
+shopt -s checkwinsize
+
+# If set, the pattern "**" used in a pathname expansion context will
+# match all files and zero or more directories and subdirectories.
+#shopt -s globstar
+
+# make less more friendly for non-text input files, see lesspipe(1)
+#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
+
+# set variable identifying the chroot you work in (used in the prompt below)
+if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
+ debian_chroot=$(cat /etc/debian_chroot)
+fi
+
+# set a fancy prompt (non-color, unless we know we "want" color)
+case "$TERM" in
+ xterm-color|*-256color) color_prompt=yes;;
+esac
+
+# uncomment for a colored prompt, if the terminal has the capability; turned
+# off by default to not distract the user: the focus in a terminal window
+# should be on the output of commands, not on the prompt
+#force_color_prompt=yes
+
+if [ -n "$force_color_prompt" ]; then
+ if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
+ # We have color support; assume it's compliant with Ecma-48
+ # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
+ # a case would tend to support setf rather than setaf.)
+ color_prompt=yes
+ else
+ color_prompt=
+ fi
+fi
+
+if [ "$color_prompt" = yes ]; then
+ PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
+else
+ PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
+fi
+unset color_prompt force_color_prompt
+
+# If this is an xterm set the title to user@host:dir
+case "$TERM" in
+xterm*|rxvt*)
+ PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
+ ;;
+*)
+ ;;
+esac
+
+# enable color support of ls and also add handy aliases
+if [ -x /usr/bin/dircolors ]; then
+ test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
+ alias ls='ls --color=auto'
+ #alias dir='dir --color=auto'
+ #alias vdir='vdir --color=auto'
+
+ #alias grep='grep --color=auto'
+ #alias fgrep='fgrep --color=auto'
+ #alias egrep='egrep --color=auto'
+fi
+
+# colored GCC warnings and errors
+#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
+
+# some more ls aliases
+#alias ll='ls -l'
+#alias la='ls -A'
+#alias l='ls -CF'
+
+# Alias definitions.
+# You may want to put all your additions into a separate file like
+# ~/.bash_aliases, instead of adding them here directly.
+# See /usr/share/doc/bash-doc/examples in the bash-doc package.
+
+if [ -f ~/.bash_aliases ]; then
+ . ~/.bash_aliases
+fi
+
+# enable programmable completion features (you don't need to enable
+# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
+# sources /etc/bash.bashrc).
+if ! shopt -oq posix; then
+ if [ -f /usr/share/bash-completion/bash_completion ]; then
+ . /usr/share/bash-completion/bash_completion
+ elif [ -f /etc/bash_completion ]; then
+ . /etc/bash_completion
+ fi
+fi
+
+export PATH=$PATH:$HOME/bin
+export DISPLAY=${DISPLAY:-:{{ item.vnc_id }}}
diff --git a/roles/obs/templates/global.ini b/roles/obs/templates/global.ini
new file mode 100644
index 0000000..c9b058f
--- /dev/null
+++ b/roles/obs/templates/global.ini
@@ -0,0 +1,36 @@
+[Basic]
+SceneCollection=dev
+SceneCollectionFile=dev
+Profile=emacsconf-dev
+ProfileDir=Development
+
+[General]
+Pre19Defaults=false
+Pre21Defaults=false
+Pre23Defaults=false
+Pre24.1Defaults=false
+FirstRun=true
+LastVersion=469762051
+
+[BasicWindow]
+gridMode=false
+geometry=AdnQywADAAAAAAAAAAAAEgAAAn8AAALPAAAAAgAAABIAAAJ9AAACzQAAAAAAAAAABQAAAAACAAAAEgAAAn0AAALN
+DockState=AAAA/wAAAAD9AAAAAQAAAAMAAAJ8AAAA4PwBAAAABvsAAAAUAHMAYwBlAG4AZQBzAEQAbwBjAGsBAAAAAAAAAHwAAACgAP////sAAAAWAHMAbwB1AHIAYwBlAHMARABvAGMAawEAAACAAAAAfAAAAKAA////+wAAABIAbQBpAHgAZQByAEQAbwBjAGsBAAABAAAAAHwAAADeAP////sAAAAeAHQAcgBhAG4AcwBpAHQAaQBvAG4AcwBEAG8AYwBrAQAAAYAAAAB8AAAAoAD////7AAAAGABjAG8AbgB0AHIAbwBsAHMARABvAGMAawEAAAIAAAAAfAAAAJ4A////+wAAABIAcwB0AGEAdABzAEQAbwBjAGsCAAABIgAAAQQAAAK8AAAAyAAAAnwAAAGoAAAABAAAAAQAAAAIAAAACPwAAAAA
+PreviewEnabled=true
+AlwaysOnTop=false
+SceneDuplicationMode=true
+SwapScenesMode=true
+EditPropertiesMode=false
+PreviewProgramMode=false
+DocksLocked=false
+
+[OBSWebSocket]
+FirstLoad=false
+ServerEnabled=true
+ServerPort={{ item.obs_websocket_port }}
+ServerPassword={{ obs_websocket_password }}
+AlertsEnabled=false
+AuthRequired=true
+
+[ScriptLogWindow]
+geometry=AdnQywADAAAAAAAAAAAAFAAAAlcAAAGjAAAAAAAAABQAAAJXAAABowAAAAAAAAAABQAAAAAAAAAAFAAAAlcAAAGj
diff --git a/roles/obs/templates/i3-config b/roles/obs/templates/i3-config
index ce22fd3..1787b64 100644
--- a/roles/obs/templates/i3-config
+++ b/roles/obs/templates/i3-config
@@ -1,3 +1,4 @@
+# {{ ansible_managed }}
# i3 config file (v4)
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
@@ -189,18 +190,13 @@ bindsym Mod1+r mode "resize"
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
-bar {
- status_command i3status
-}
-
-#######################################################################
-# automatically start i3-config-wizard to offer the user to create a
-# keysym-based config which used their favorite modifier (alt or windows)
-#
-# i3-config-wizard will not launch if there already is a config file
-# in ~/.config/i3/config (or $XDG_CONFIG_HOME/i3/config if set) or
-# ~/.i3/config.
-#
-# Please remove the following exec line:
-#######################################################################
-exec i3-config-wizard
+# bar {
+# status_command i3status
+# }
+
+# EmacsConf tweaks
+# Start with tabbed layout
+workspace_layout tabbed
+# MPV starts full-screen
+for_window [class="mpv"] fullscreen enable
+for_window [title=".*mpv"] fullscreen enable
diff --git a/roles/obs/templates/mpv-track b/roles/obs/templates/mpv-track
index b34df70..ee359f1 100755
--- a/roles/obs/templates/mpv-track
+++ b/roles/obs/templates/mpv-track
@@ -2,4 +2,4 @@
# Run MPV with the output set to the right sink and with an IPC socket
# {{ ansible_managed }}
-mpv --input-ipc-server={{ emacsconf_home }}/mpv-socket-{{ emacsconf_id }}-{{ item.id }} --audio-device=pulse/{{ item.id }}-vid --profile={{ emacsconf_id }}-talks $*
+DISPLAY="${DISPLAY:-:{{ item.vnc_id }}}" mpv --input-ipc-server={{ emacsconf_home }}/mpv-socket-{{ emacsconf_id }}-{{ item.id }} --audio-device=pulse/{{ item.id }}-vid --profile={{ emacsconf_id }}-talks $* &
diff --git a/roles/obs/templates/mpv.conf b/roles/obs/templates/mpv.conf
index 5c73681..9aff3ee 100644
--- a/roles/obs/templates/mpv.conf
+++ b/roles/obs/templates/mpv.conf
@@ -5,9 +5,34 @@
profile={{ emacsconf_id }}-talks
# Then you can load it with `--profile={{ emacsconf_id }}-talks`
+# This puts the video in the top right so that there's room on the left for the logo and some text
[{{ emacsconf_id }}-talks]
# Positioning
video-zoom=-0.15
+video-align-x=1
+video-align-y=-1
+sub-use-margins=yes
+sub-scale-by-window=yes
+sub-pos=103
+sub-margin-x=120
+sub-margin-y=40
+sub-align-x=left
+# Style
+sub-font="{{ emacsconf_font }}"
+sub-color="1/0.82/0"
+sub-blur=0.2
+sub-scale=0.9
+sub-font-size=40
+sub-border-size=0
+sub-border-color=0/1
+sub-shadow-color=0/1
+sub-shadow-offset=1.2
+sub-ass-force-style=Kerning=yes
+sub-ass-line-spacing=0
+
+[{{ emacsconf_id }}-old]
+# Positioning
+video-zoom=-0.15
video-pan-y=-0.055
sub-use-margins=yes
sub-scale-by-window=yes
@@ -15,7 +40,7 @@ sub-pos=103
sub-margin-x=150
sub-margin-y=40
# Style
-sub-font="Clear Sans Bold"
+sub-font="{{ emacsconf_font }}"
sub-color="1/0.82/0"
sub-blur=0.2
sub-scale=0.9
diff --git a/roles/obs/templates/obs-track b/roles/obs/templates/obs-track
index 5763d30..3029715 100755
--- a/roles/obs/templates/obs-track
+++ b/roles/obs/templates/obs-track
@@ -1,3 +1,3 @@
#!/bin/bash
# {{ ansible_managed }}
-obs --profile "{{ emacsconf_id }}-{{ item.id }}" --collection "{{ item.id }}" -m
+obs --profile "{{ emacsconf_id }}-{{ item.id }}" --collection "{{ item.id }}" -m --websocket_port "{{ item.obs_websocket_port }}" --websocket_password "{{ obs_websocket_password }}"
diff --git a/roles/obs/templates/scenes.json b/roles/obs/templates/scenes.json
index 5e19f16..4e6e4bd 100644
--- a/roles/obs/templates/scenes.json
+++ b/roles/obs/templates/scenes.json
@@ -2,14 +2,168 @@
"current_program_scene": "All track audio and screen",
"current_scene": "All track audio and screen",
"current_transition": "Fade",
- "groups": [],
+ "groups": [
+ {
+ "balance": 0.5,
+ "deinterlace_field_order": 0,
+ "deinterlace_mode": 0,
+ "enabled": true,
+ "flags": 0,
+ "hotkeys": {
+ "libobs.hide_scene_item.Logo": [],
+ "libobs.hide_scene_item.News": [],
+ "libobs.hide_scene_item.URL": [],
+ "libobs.show_scene_item.Logo": [],
+ "libobs.show_scene_item.News": [],
+ "libobs.show_scene_item.URL": []
+ },
+ "id": "group",
+ "mixers": 0,
+ "monitoring_type": 0,
+ "muted": false,
+ "name": "{{ emacsconf_id }} base",
+ "prev_ver": 469762051,
+ "private_settings": {},
+ "push-to-mute": false,
+ "push-to-mute-delay": 0,
+ "push-to-talk": false,
+ "push-to-talk-delay": 0,
+ "settings": {
+ "custom_size": true,
+ "cx": 103,
+ "cy": 507,
+ "id_counter": 0,
+ "items": [
+ {
+ "align": 5,
+ "blend_method": "default",
+ "blend_type": "normal",
+ "bounds": {
+ "x": 0,
+ "y": 0
+ },
+ "bounds_align": 0,
+ "bounds_type": 0,
+ "crop_bottom": 0,
+ "crop_left": 0,
+ "crop_right": 0,
+ "crop_top": 0,
+ "group_item_backup": false,
+ "hide_transition": {
+ "duration": 0
+ },
+ "id": 8,
+ "locked": false,
+ "name": "News",
+ "pos": {
+ "x": 22,
+ "y": 390
+ },
+ "private_settings": {},
+ "rot": -90,
+ "scale": {
+ "x": 1,
+ "y": 1
+ },
+ "scale_filter": "disable",
+ "show_transition": {
+ "duration": 0
+ },
+ "visible": true
+ },
+ {
+ "align": 5,
+ "blend_method": "default",
+ "blend_type": "normal",
+ "bounds": {
+ "x": 0,
+ "y": 0
+ },
+ "bounds_align": 0,
+ "bounds_type": 0,
+ "crop_bottom": 0,
+ "crop_left": 0,
+ "crop_right": 0,
+ "crop_top": 0,
+ "group_item_backup": false,
+ "hide_transition": {
+ "duration": 0
+ },
+ "id": 7,
+ "locked": false,
+ "name": "URL",
+ "pos": {
+ "x": 55,
+ "y": 389
+ },
+ "private_settings": {},
+ "rot": -90,
+ "scale": {
+ "x": 1,
+ "y": 1
+ },
+ "scale_filter": "disable",
+ "show_transition": {
+ "duration": 0
+ },
+ "visible": true
+ },
+ {
+ "align": 5,
+ "blend_method": "default",
+ "blend_type": "normal",
+ "bounds": {
+ "x": 0,
+ "y": 0
+ },
+ "bounds_align": 0,
+ "bounds_type": 0,
+ "crop_bottom": 0,
+ "crop_left": 0,
+ "crop_right": 0,
+ "crop_top": 0,
+ "group_item_backup": false,
+ "hide_transition": {
+ "duration": 0
+ },
+ "id": 6,
+ "locked": false,
+ "name": "Logo",
+ "pos": {
+ "x": 0,
+ "y": 404
+ },
+ "private_settings": {},
+ "rot": 0,
+ "scale": {
+ "x": 0.40234375,
+ "y": 0.40234375
+ },
+ "scale_filter": "disable",
+ "show_transition": {
+ "duration": 0
+ },
+ "visible": true
+ }
+ ]
+ },
+ "sync": 0,
+ "versioned_id": "group",
+ "volume": 1
+ }
+ ],
"modules": {
"auto-scene-switcher": {
"active": false,
"interval": 300,
- "non_matching_scene": "",
- "switch_if_not_matching": false,
- "switches": []
+ "non_matching_scene": "All track audio and screen",
+ "switch_if_not_matching": true,
+ "switches": [
+ {
+ "scene": "Video audio and screen",
+ "window_title": ".*mpv"
+ }
+ ]
},
"output-timer": {
"autoStartRecordTimer": false,
@@ -69,6 +223,95 @@
"deinterlace_mode": 0,
"enabled": true,
"flags": 0,
+ "hotkeys": {},
+ "id": "text_ft2_source",
+ "mixers": 0,
+ "monitoring_type": 0,
+ "muted": false,
+ "name": "News",
+ "prev_ver": 469762051,
+ "private_settings": {},
+ "push-to-mute": false,
+ "push-to-mute-delay": 0,
+ "push-to-talk": false,
+ "push-to-talk-delay": 0,
+ "settings": {
+ "font": {
+ "face": "Sans Serif",
+ "flags": 0,
+ "size": 24,
+ "style": ""
+ },
+ "from_file": true,
+ "text_file": "/home/{{ emacsconf_id }}-{{ item.id }}/news.txt"
+ },
+ "sync": 0,
+ "versioned_id": "text_ft2_source_v2",
+ "volume": 1
+ },
+ {
+ "balance": 0.5,
+ "deinterlace_field_order": 0,
+ "deinterlace_mode": 0,
+ "enabled": true,
+ "flags": 0,
+ "hotkeys": {},
+ "id": "text_ft2_source",
+ "mixers": 0,
+ "monitoring_type": 0,
+ "muted": false,
+ "name": "URL",
+ "prev_ver": 469762051,
+ "private_settings": {},
+ "push-to-mute": false,
+ "push-to-mute-delay": 0,
+ "push-to-talk": false,
+ "push-to-talk-delay": 0,
+ "settings": {
+ "font": {
+ "face": "Sans Serif",
+ "flags": 0,
+ "size": 24,
+ "style": ""
+ },
+ "from_file": true,
+ "text_file": "/home/{{ emacsconf_id }}-{{ item.id }}/url.txt"
+ },
+ "sync": 0,
+ "versioned_id": "text_ft2_source_v2",
+ "volume": 1
+ },
+ {
+ "balance": 0.5,
+ "deinterlace_field_order": 0,
+ "deinterlace_mode": 0,
+ "enabled": true,
+ "flags": 0,
+ "hotkeys": {},
+ "id": "image_source",
+ "mixers": 0,
+ "monitoring_type": 0,
+ "muted": false,
+ "name": "Logo",
+ "prev_ver": 469762051,
+ "private_settings": {},
+ "push-to-mute": false,
+ "push-to-mute-delay": 0,
+ "push-to-talk": false,
+ "push-to-talk-delay": 0,
+ "settings": {
+ "file": "/home/{{ emacsconf_id }}-{{ item.id }}/logo.png"
+ },
+ "sync": 0,
+ "versioned_id": "image_source",
+ "volume": 1
+ },
+ {
+ "balance": 0.5,
+ "deinterlace_field_order": 0,
+ "deinterlace_mode": 0,
+ "enabled": true,
+ "flags": 0,
"hotkeys": {
"libobs.mute": [],
"libobs.push-to-mute": [],
@@ -101,12 +344,16 @@
"flags": 0,
"hotkeys": {
"OBSBasic.SelectScene": [],
+ "libobs.hide_scene_item.Bottom": [],
"libobs.hide_scene_item.Screen Capture (XSHM)": [],
- "libobs.hide_scene_item.{{ item.id }}-qa": [],
- "libobs.hide_scene_item.{{ item.id }}-vid": [],
+ "libobs.hide_scene_item.dev-qa": [],
+ "libobs.hide_scene_item.dev-vid": [],
+ "libobs.hide_scene_item.emacsconf base": [],
+ "libobs.show_scene_item.Bottom": [],
"libobs.show_scene_item.Screen Capture (XSHM)": [],
- "libobs.show_scene_item.{{ item.id }}-qa": [],
- "libobs.show_scene_item.{{ item.id }}-vid": []
+ "libobs.show_scene_item.dev-qa": [],
+ "libobs.show_scene_item.dev-vid": [],
+ "libobs.show_scene_item.emacsconf base": []
},
"id": "scene",
"mixers": 0,
@@ -121,7 +368,7 @@
"push-to-talk-delay": 0,
"settings": {
"custom_size": false,
- "id_counter": 14,
+ "id_counter": 22,
"items": [
{
"align": 5,
@@ -145,14 +392,14 @@
"locked": false,
"name": "Screen Capture (XSHM)",
"pos": {
- "x": 0,
+ "x": 115,
"y": 0
},
"private_settings": {},
"rot": 0,
"scale": {
- "x": 1,
- "y": 1
+ "x": 0.91015625,
+ "y": 0.9097222089767456
},
"scale_filter": "disable",
"show_transition": {
@@ -233,6 +480,191 @@
"duration": 0
},
"visible": true
+ },
+ {
+ "align": 5,
+ "blend_method": "default",
+ "blend_type": "normal",
+ "bounds": {
+ "x": 0,
+ "y": 0
+ },
+ "bounds_align": 0,
+ "bounds_type": 0,
+ "crop_bottom": 0,
+ "crop_left": 0,
+ "crop_right": 0,
+ "crop_top": 0,
+ "group_item_backup": true,
+ "hide_transition": {
+ "duration": 0
+ },
+ "id": 8,
+ "locked": false,
+ "name": "News",
+ "pos": {
+ "x": 31,
+ "y": 595
+ },
+ "private_settings": {},
+ "rot": -90,
+ "scale": {
+ "x": 1,
+ "y": 1
+ },
+ "scale_filter": "disable",
+ "show_transition": {
+ "duration": 0
+ },
+ "visible": true
+ },
+ {
+ "align": 5,
+ "blend_method": "default",
+ "blend_type": "normal",
+ "bounds": {
+ "x": 0,
+ "y": 0
+ },
+ "bounds_align": 0,
+ "bounds_type": 0,
+ "crop_bottom": 0,
+ "crop_left": 0,
+ "crop_right": 0,
+ "crop_top": 0,
+ "group_item_backup": true,
+ "hide_transition": {
+ "duration": 0
+ },
+ "id": 7,
+ "locked": false,
+ "name": "URL",
+ "pos": {
+ "x": 64,
+ "y": 594
+ },
+ "private_settings": {},
+ "rot": -90,
+ "scale": {
+ "x": 1,
+ "y": 1
+ },
+ "scale_filter": "disable",
+ "show_transition": {
+ "duration": 0
+ },
+ "visible": true
+ },
+ {
+ "align": 5,
+ "blend_method": "default",
+ "blend_type": "normal",
+ "bounds": {
+ "x": 0,
+ "y": 0
+ },
+ "bounds_align": 0,
+ "bounds_type": 0,
+ "crop_bottom": 0,
+ "crop_left": 0,
+ "crop_right": 0,
+ "crop_top": 0,
+ "group_item_backup": true,
+ "hide_transition": {
+ "duration": 0
+ },
+ "id": 6,
+ "locked": false,
+ "name": "Logo",
+ "pos": {
+ "x": 9,
+ "y": 609
+ },
+ "private_settings": {},
+ "rot": 0,
+ "scale": {
+ "x": 0.40234375,
+ "y": 0.40234375
+ },
+ "scale_filter": "disable",
+ "show_transition": {
+ "duration": 0
+ },
+ "visible": true
+ },
+ {
+ "align": 5,
+ "blend_method": "default",
+ "blend_type": "normal",
+ "bounds": {
+ "x": 0,
+ "y": 0
+ },
+ "bounds_align": 0,
+ "bounds_type": 0,
+ "crop_bottom": 0,
+ "crop_left": 0,
+ "crop_right": 0,
+ "crop_top": 0,
+ "group_item_backup": false,
+ "hide_transition": {
+ "duration": 0
+ },
+ "id": 21,
+ "locked": false,
+ "name": "{{ emacsconf_id }} base",
+ "pos": {
+ "x": 9,
+ "y": 205
+ },
+ "private_settings": {},
+ "rot": 0,
+ "scale": {
+ "x": 1,
+ "y": 1
+ },
+ "scale_filter": "disable",
+ "show_transition": {
+ "duration": 0
+ },
+ "visible": true
+ },
+ {
+ "align": 5,
+ "blend_method": "default",
+ "blend_type": "normal",
+ "bounds": {
+ "x": 0,
+ "y": 0
+ },
+ "bounds_align": 0,
+ "bounds_type": 0,
+ "crop_bottom": 0,
+ "crop_left": 0,
+ "crop_right": 0,
+ "crop_top": 0,
+ "group_item_backup": false,
+ "hide_transition": {
+ "duration": 0
+ },
+ "id": 22,
+ "locked": false,
+ "name": "Bottom",
+ "pos": {
+ "x": 112,
+ "y": 654
+ },
+ "private_settings": {},
+ "rot": 0,
+ "scale": {
+ "x": 1,
+ "y": 1
+ },
+ "scale_filter": "disable",
+ "show_transition": {
+ "duration": 0
+ },
+ "visible": true
}
]
},
@@ -302,9 +734,11 @@
"hotkeys": {
"OBSBasic.SelectScene": [],
"libobs.hide_scene_item.Screen Capture (XSHM)": [],
- "libobs.hide_scene_item.{{ item.id }}-vid": [],
+ "libobs.hide_scene_item.dev-vid": [],
+ "libobs.hide_scene_item.emacsconf base": [],
"libobs.show_scene_item.Screen Capture (XSHM)": [],
- "libobs.show_scene_item.{{ item.id }}-vid": []
+ "libobs.show_scene_item.dev-vid": [],
+ "libobs.show_scene_item.emacsconf base": []
},
"id": "scene",
"mixers": 0,
@@ -319,7 +753,7 @@
"push-to-talk-delay": 0,
"settings": {
"custom_size": false,
- "id_counter": 5,
+ "id_counter": 11,
"items": [
{
"align": 5,
@@ -394,12 +828,192 @@
"duration": 0
},
"visible": true
+ },
+ {
+ "align": 5,
+ "blend_method": "default",
+ "blend_type": "normal",
+ "bounds": {
+ "x": 0,
+ "y": 0
+ },
+ "bounds_align": 0,
+ "bounds_type": 0,
+ "crop_bottom": 0,
+ "crop_left": 0,
+ "crop_right": 0,
+ "crop_top": 0,
+ "group_item_backup": true,
+ "hide_transition": {
+ "duration": 0
+ },
+ "id": 8,
+ "locked": false,
+ "name": "News",
+ "pos": {
+ "x": 31,
+ "y": 580
+ },
+ "private_settings": {},
+ "rot": -90,
+ "scale": {
+ "x": 1,
+ "y": 1
+ },
+ "scale_filter": "disable",
+ "show_transition": {
+ "duration": 0
+ },
+ "visible": true
+ },
+ {
+ "align": 5,
+ "blend_method": "default",
+ "blend_type": "normal",
+ "bounds": {
+ "x": 0,
+ "y": 0
+ },
+ "bounds_align": 0,
+ "bounds_type": 0,
+ "crop_bottom": 0,
+ "crop_left": 0,
+ "crop_right": 0,
+ "crop_top": 0,
+ "group_item_backup": true,
+ "hide_transition": {
+ "duration": 0
+ },
+ "id": 7,
+ "locked": false,
+ "name": "URL",
+ "pos": {
+ "x": 64,
+ "y": 579
+ },
+ "private_settings": {},
+ "rot": -90,
+ "scale": {
+ "x": 1,
+ "y": 1
+ },
+ "scale_filter": "disable",
+ "show_transition": {
+ "duration": 0
+ },
+ "visible": true
+ },
+ {
+ "align": 5,
+ "blend_method": "default",
+ "blend_type": "normal",
+ "bounds": {
+ "x": 0,
+ "y": 0
+ },
+ "bounds_align": 0,
+ "bounds_type": 0,
+ "crop_bottom": 0,
+ "crop_left": 0,
+ "crop_right": 0,
+ "crop_top": 0,
+ "group_item_backup": true,
+ "hide_transition": {
+ "duration": 0
+ },
+ "id": 6,
+ "locked": false,
+ "name": "Logo",
+ "pos": {
+ "x": 9,
+ "y": 594
+ },
+ "private_settings": {},
+ "rot": 0,
+ "scale": {
+ "x": 0.40234375,
+ "y": 0.40234375
+ },
+ "scale_filter": "disable",
+ "show_transition": {
+ "duration": 0
+ },
+ "visible": true
+ },
+ {
+ "align": 5,
+ "blend_method": "default",
+ "blend_type": "normal",
+ "bounds": {
+ "x": 0,
+ "y": 0
+ },
+ "bounds_align": 0,
+ "bounds_type": 0,
+ "crop_bottom": 0,
+ "crop_left": 0,
+ "crop_right": 0,
+ "crop_top": 0,
+ "group_item_backup": false,
+ "hide_transition": {
+ "duration": 0
+ },
+ "id": 11,
+ "locked": false,
+ "name": "{{ emacsconf_id }} base",
+ "pos": {
+ "x": 9,
+ "y": 190
+ },
+ "private_settings": {},
+ "rot": 0,
+ "scale": {
+ "x": 1,
+ "y": 1
+ },
+ "scale_filter": "disable",
+ "show_transition": {
+ "duration": 0
+ },
+ "visible": true
}
]
},
"sync": 0,
"versioned_id": "scene",
"volume": 1
+ },
+ {
+ "balance": 0.5,
+ "deinterlace_field_order": 0,
+ "deinterlace_mode": 0,
+ "enabled": true,
+ "flags": 0,
+ "hotkeys": {},
+ "id": "text_ft2_source",
+ "mixers": 0,
+ "monitoring_type": 0,
+ "muted": false,
+ "name": "Bottom",
+ "prev_ver": 469762051,
+ "private_settings": {},
+ "push-to-mute": false,
+ "push-to-mute-delay": 0,
+ "push-to-talk": false,
+ "push-to-talk-delay": 0,
+ "settings": {
+ "font": {
+ "face": "Sans Serif",
+ "flags": 0,
+ "size": 28,
+ "style": ""
+ },
+ "from_file": true,
+ "text_file": "/home/{{ emacsconf_id }}-{{ item.id }}/bottom.txt"
+ },
+ "sync": 0,
+ "versioned_id": "text_ft2_source_v2",
+ "volume": 1
}
],
"transition_duration": 300,
diff --git a/roles/obs/templates/vnc-track b/roles/obs/templates/vnc-track
index b987d8b..99b0ce8 100644
--- a/roles/obs/templates/vnc-track
+++ b/roles/obs/templates/vnc-track
@@ -1 +1 @@
-vncserver :{{ item.vnc_id }} -geometry {{ res_x }}x{{ res_y }} -useold -xstartup {{ emacsconf_home }}/.vnc/xstartup-{{ item.id }} -desktop {{ emacsconf_id }}-{{ item.id }} \ No newline at end of file
+vncserver :{{ item.vnc_id }} -geometry {{ res_x }}x{{ res_y }} -useold -xstartup {{ emacsconf_home }}/.vnc/xstartup -desktop {{ emacsconf_id }}-{{ item.id }} -rfbport {{ item.vnc_port }} \ No newline at end of file
diff --git a/roles/obs/templates/xstartup-track b/roles/obs/templates/xstartup-track
index 140f836..b80caac 100755
--- a/roles/obs/templates/xstartup-track
+++ b/roles/obs/templates/xstartup-track
@@ -1,11 +1,13 @@
#!/bin/bash
export MPV_SOCKET={{ emacsconf_home }}/{{ item.id }}-mpv-socket
export TRACK={{ item.id }}
-export PATH="/usr/local/bin:/usr/bin:/bin:{{ emacsconf_home }}/bin/{{ item.id }}"
+export PATH="/usr/local/bin:/usr/bin:/bin:{{ emacsconf_home }}/bin"
xrdb $HOME/.Xresources
pulseaudio --start
pacmd set-default-sink {{ item.id }}-qa
-firefox file://data/emacsconf/{{ emacsconf_year }}/index-{{ item.id }}.html -P "{{ emacsconf_id }}-{{ item.id }}" &
+firefox file:///data/emacsconf/{{ emacsconf_year }}/index-{{ item.id }}.html &
+$HOME/bin/track-obs &
+termit &
# $HOME/{{ item.id }}-obs &
# $HOME/{{ item.id }}-mpv $HOME/logo.png &
exec i3