summaryrefslogtreecommitdiff
path: root/archive/bin/debian-ftp-master
diff options
context:
space:
mode:
Diffstat (limited to 'archive/bin/debian-ftp-master')
-rwxr-xr-xarchive/bin/debian-ftp-master158
1 files changed, 158 insertions, 0 deletions
diff --git a/archive/bin/debian-ftp-master b/archive/bin/debian-ftp-master
new file mode 100755
index 00000000..e410c021
--- /dev/null
+++ b/archive/bin/debian-ftp-master
@@ -0,0 +1,158 @@
+#!/bin/bash
+
+# debian-ftp-master -- set up some windows for doing work on Debian's ftp-master
+
+# Copyright (C) 2019 Sean Whitton
+#
+# GPL-3 or later
+
+set -e
+
+. $HOME/.shenv
+
+# # require irssi is already raiseable, as starting it is interactive in
+# # a way we can't easily wait for
+# if ! wmctrl -l | grep -q "irssi"; then
+# zenity --error --no-wrap --text="Please attach to irssi first."
+# exit 1
+# fi
+
+# # kill off any broken session (e.g. lost WiFi)
+# wmctrl -c "ftp-master session cleanup" ||:
+# wmctrl -c "ftp-master dak command session" ||:
+# wmctrl -c "ftp-master GNU mc session" ||:
+# wmctrl -c "*NEW notes*" ||:
+# # wait, in case xfce4-terminal prompted the user
+# while wmctrl -l | grep -q -E "ftp-master (session cleanup|dak command session|GNU mc session)"; do
+# sleep 1
+# done
+
+# # If there are no other Emacs frames open, the title of the frame will
+# # be emacs@$HOST rather than *NEW notes*, which means we can't control
+# # it. So, ensure one is open
+# if ! wmctrl -lx | grep -q "emacs.Emacs"; then
+# emacsclient -c -a '' -n -e '(switch-to-buffer "*scratch*")'
+# fi
+
+# first establish a control socket, so that the two interactive ssh
+# connections don't race to do this and one of them disables multiplexing
+ssh -fN ftp-master.debian.org
+
+# start Emacs on ftp-master
+ssh ftp-master.debian.org pgrep -u spwhitton emacs \
+ || ssh ftp-master.debian.org emacs --daemon &
+
+# # open zenity dialog first; i3 will not float it
+# zenity --question --no-wrap --no-markup \
+# --title="ftp-master session cleanup" \
+# --text="Kill tmux & Emacs sessions on ftp-master?" &
+# zenity_pid=$!
+# until wmctrl -l | grep -q "ftp-master session cleanup"; do
+# sleep 0.3
+# done
+
+monitors="$(xrandr -q | grep ' connected' | wc -l)"
+
+if ! wmctrl -l | grep -q "ftp-master dak command session"; then
+ first="$(i3-fresh-workspace)"
+
+ xfce4-terminal -x ssh-and-tmux \
+ ftp-master.debian.org dak "ftp-master dak command session"
+ until wmctrl -l | grep -q "ftp-master dak command session"; do
+ sleep 0.3
+ done
+ wmctrl -R "ftp-master dak command session"
+
+ # if we have the `layout tabbed` above, before any windows are opened,
+ # the workspace ends up with a tabbed container inside a tabbed
+ # container on buster's i3 (but not stretch's)
+ i3-msg layout tabbed
+
+ xfce4-terminal -x ssh-and-tmux \
+ ftp-master.debian.org mc "ftp-master GNU mc session"
+ until wmctrl -l | grep -q "ftp-master GNU mc session"; do
+ sleep 0.3
+ done
+ wmctrl -R "ftp-master GNU mc session"
+
+ emacsclient -c -a '' -n -e '(progn (switch-to-buffer "*NEW notes*") (text-mode))'
+ until wmctrl -l | grep -q "*NEW notes*"; do
+ sleep 0.3
+ done
+ wmctrl -R "*NEW notes*"
+
+ # Now we've the windows opened, arrange them. For some reason, in
+ # order to have the resize commands take effect, there has to be a
+ # pause before each resize command is issued, i.e. separate i3-msg
+ # calls separated by calls to sleep
+ monwidth="$(xdpyinfo | awk '/dimensions/{print $2}' | cut -dx -f1)"
+ if [ $monitors -gt 1 ] ; then
+ second="$(i3-fresh-workspace)"
+ i3-msg workspace "$first"
+ # ensure mc window is on primary output, since I spend more time
+ # in it (I think this is sensible!)
+ i3-msg move workspace to output primary
+ # move the dak control window
+ i3-msg focus left, focus left, move to workspace "$second"
+ # split windows
+ i3-msg move up
+ sleep 0.2
+ i3-msg resize set height 70 ppt
+ # machine-specific: move workspace 9 to the secondary monitor, if
+ # we know what that's called. Otherwise, user can just manually
+ # move workspace 9 to the correct monitor right after executing
+ # this script; workspace 7 will be left displayed on the primary
+ # monitor
+ if [ "$(hostname -f)" = "iris.silentflame.com" ]; then
+ i3-msg workspace "$second"
+ i3-msg move workspace to output LVDS-1
+ i3-msg workspace "$second"
+ else # no machine-specific config
+ # ensure dak control window focused
+ i3-msg workspace "$first"
+ fi
+ elif [ $monwidth -ge 1920 ]; then
+ # three column split (i.e. two mc columns and dak column) should
+ # work on a monitor this big (after some tweaking of mc's display
+ # settings)
+ i3-msg move down, focus up, focus left, move right, move right, move right
+ sleep 0.2
+ i3-msg resize set width 35 ppt, focus left
+ sleep 0.2
+ i3-msg resize set height 65 ppt, focus right
+ else
+ # small screen view
+ i3-msg focus left, split v, focus right, move left
+ sleep 0.2
+ i3-msg resize set height 30 ppt, focus up, focus left
+ fi
+else
+ wmctrl -a "ftp-master dak command session"
+ if [ "$(hostname -f)" = "iris.silentflame.com" ] \
+ && [ $monitors -gt 1 ]; then
+ i3-msg move workspace to output LVDS-1
+ wmctrl -a "ftp-master GNU mc session"
+ fi
+ i3-msg move workspace to output primary
+fi
+
+# ssh athena tmux send-keys -t irssi DOWN
+# ssh athena tmux send-keys -t irssi "\"/join -OFTC #debian-ftp-private\"" ENTER
+# # ssh athena tmux send-keys -t irssi ! l o c k SPACE N E W
+# # ssh athena tmux send-keys -t irssi LEFT LEFT LEFT LEFT LEFT LEFT LEFT LEFT
+# i3-msg '[class="^Xfce4-terminal$" title="^irssi$"]' scratchpad show
+
+# # finally, get a little more space in the mc session
+# ssh ftp-master.debian.org tmux set -t mc status off
+
+# # clean everything up, per DMUP
+# wait $zenity_pid
+# zenity_exit=$?
+# wmctrl -c "*NEW notes*" ||:
+# if [ $zenity_exit = 0 ]; then
+# ssh ftp-master.debian.org tmux kill-server
+# ssh ftp-master.debian.org pkill -u spwhitton emacs
+# sleep 10
+# # --title needs to be different from the above so i3 floats the window
+# ssh ftp-master.debian.org pgrep -u spwhitton emacs && zenity --error --no-wrap --title="Session cleanup error" --text="Processes still running on ftp-master!"
+# fi