summaryrefslogtreecommitdiff
path: root/archive
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2018-04-07 10:17:36 -0700
committerSean Whitton <spwhitton@spwhitton.name>2018-04-07 10:17:36 -0700
commit1f9c1e2a69de6c7456d425b8cbb0293f66efab95 (patch)
tree98575c019dae934575417c28c84151dc7aaa7f9c /archive
parentd385532242370bdf01db1f015acc804c11c1ae16 (diff)
downloaddotfiles-1f9c1e2a69de6c7456d425b8cbb0293f66efab95.tar.gz
archive a lot more out of ~
Diffstat (limited to 'archive')
-rw-r--r--archive/.Xdefaults106
-rw-r--r--archive/.config/autostart/xstartup.desktop12
-rw-r--r--archive/.config/cron/spw_ma.sdf.org23
-rw-r--r--archive/.config/cron/spwhitton_shortgeese.silentflame.com6
-rw-r--r--archive/.config/cron/swhitton_artemis.silentflame.com18
-rw-r--r--archive/.config/cron/swhitton_demeter.silentflame.com12
-rw-r--r--archive/.config/feh/themes1
-rw-r--r--archive/.config/user/duplicity.service7
-rw-r--r--archive/.config/user/duplicity.timer12
-rw-r--r--archive/.config/user/movemail.service10
-rw-r--r--archive/.config/user/mpd.service8
-rw-r--r--archive/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.wheezy.xml136
-rw-r--r--archive/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.wheezy.xml81
-rwxr-xr-xarchive/.config/xfce4/xinitrc9
-rw-r--r--archive/.extract_urlview6
-rw-r--r--archive/.fonts.conf.old40
-rw-r--r--archive/.gtk-bookmarks5
-rw-r--r--archive/.hgrc8
-rw-r--r--archive/.keysnail.js669
-rw-r--r--archive/.local/share/gnome-shell/extensions/steal-my-focus@kagesenshi.org/extension.js44
-rw-r--r--archive/.local/share/gnome-shell/extensions/steal-my-focus@kagesenshi.org/metadata.json20
-rw-r--r--archive/.mairixrc10
-rw-r--r--archive/.msmtprc34
-rw-r--r--archive/.offlineimaprc38
-rw-r--r--archive/.procmailrc30
-rw-r--r--archive/.recoll/recoll.conf11
-rw-r--r--archive/.ssh/host.d/spw_ma.sdf.org9
-rw-r--r--archive/.ssh/host.d/swhitton_artemis.silentflame.com3
-rw-r--r--archive/.ssh/host.d/swhitton_demeter.silentflame.com1
-rw-r--r--archive/.xbindkeys.noauto0
-rw-r--r--archive/.xbindkeysrc37
-rw-r--r--archive/.xmonad/xmonad.hs181
-rwxr-xr-xarchive/.xsessionrc13
-rw-r--r--archive/.zsh/96-vcs_info-cdpath.zsh60
-rw-r--r--archive/.zsh/functions/_git-annex196
-rw-r--r--archive/.zsh/functions/chpwd_update_git_vars1
-rw-r--r--archive/.zsh/functions/precmd_update_git_vars4
-rw-r--r--archive/.zsh/functions/preexec_update_git_vars5
-rw-r--r--archive/.zsh/functions/prompt_git_info21
-rw-r--r--archive/.zsh/functions/update_current_git_vars29
-rw-r--r--archive/.zshrc585
-rw-r--r--archive/AppData/Roaming/VirtuaWin/virtuawin.cfg40
-rw-r--r--archive/AppData/Roaming/VirtuaWin/window.cfg17
-rw-r--r--archive/lib/pro.terminal194
-rwxr-xr-xarchive/lib/spw.sh12
-rwxr-xr-xarchive/lib/try.sh22
46 files changed, 2786 insertions, 0 deletions
diff --git a/archive/.Xdefaults b/archive/.Xdefaults
new file mode 100644
index 00000000..079c76dc
--- /dev/null
+++ b/archive/.Xdefaults
@@ -0,0 +1,106 @@
+! ---- fonts
+
+! shatter in #suckless
+
+Xft.antialias: true
+Xft.autohint: true
+Xft.dpi: 96
+Xft.hinting: true
+Xft.hintstyle: hintslight
+Xft.lcdfilter: lcddefault
+Xft.rgba: rgb
+
+! ---- urxvt
+
+! http://git.sysphere.org/dotfiles/tree/Xdefaults
+! Zenburn color-scheme
+urxvt*background: #3f3f3f
+! this is the same as the vim zenburn theme
+!urxvt*background: #3a3a3a
+urxvt*foreground: #dcdccc
+! black + red
+!urxvt*color0: #3f3f3f
+urxvt*color0: #1E2320
+urxvt*color1: #705050
+! green + yellow
+urxvt*color2: #60b48a
+urxvt*color3: #dfaf8f
+! blue + purple
+urxvt*color4: #506070
+urxvt*color5: #dc8cc3
+! cyan + white
+urxvt*color6: #8cd0d3
+urxvt*color7: #dcdccc
+! bright-black + bright-red
+urxvt*color8: #709080
+urxvt*color9: #dca3a3
+! bright-green + bright-yellow
+urxvt*color10: #c3bf9f
+urxvt*color11: #f0dfaf
+! bright-blue + bright-purple
+urxvt*color12: #94bff3
+urxvt*color13: #ec93d3
+! bright-cyan + bright-white
+urxvt*color14: #93e0e3
+urxvt*color15: #ffffff
+
+URxvt.urlLauncher : firefox
+URxvt.matcher.button : 1
+
+! Terminus for English and Baekmuk Gulim for Korean
+URxvt.font: xft:Terminus:pixelsize=14,\
+ xft:Baekmuk Gulim
+
+URxvt*metaSendsEscape: true
+URxvt*scrollBar: false
+URxvt*transparent: false
+URxvt*shading: 30
+URxvt*cursorBlink: false
+URxvt*cursorColor: #dcdccc
+
+! do not scroll with output
+URxvt*scrollTtyOutput: false
+
+! scroll in relation to buffer (with mouse scroll or Shift+Page Up)
+URxvt*scrollWithBuffer: true
+
+! scroll back to the bottom on keypress
+URxvt*scrollTtyKeypress: true
+
+! from Arch wiki: permits mousewheel/shift-pgup scrolling when using a pager
+URxvt.secondaryScreen: 1
+URxvt.secondaryScroll: 0
+!URxvt.secondaryWheel: 1 ! requires patched urxvt
+
+! disable everything except the URL matcher
+URxvt.perl-ext-common: matcher
+
+! disable unicode entry methods which clash with my keybindings
+URxvt*iso14755_52: false
+URxvt*iso14755: false
+URxvt.termName: xterm-256color
+
+! ---- xterm
+
+XTerm*faceName: Monospace
+XTerm*faceSize: 10
+XTerm*background: black
+XTerm*foreground: white
+XTerm*metaSendsEscape: true
+
+! ---- xpdf
+
+! http://wiki.archlinux.org/index.php/Xdefaults_(English)#xpdf_preferences
+
+xpdf*enableFreetype: yes
+xpdf*antialias: yes
+xpdf*foreground: #dcdccc
+xpdf*background: #3a3a3a
+xpdf*urlCommand: /home/swhitton/bin/ilinks %s
+xpdf*matteColor: #3a3a3a
+
+! ---- xscreensaver
+
+xscreensaver.timeout: 0:20:00
+xscreensaver.lock: True
+xscreensaver.lockTimeout: 0:00:00
diff --git a/archive/.config/autostart/xstartup.desktop b/archive/.config/autostart/xstartup.desktop
new file mode 100644
index 00000000..3038df87
--- /dev/null
+++ b/archive/.config/autostart/xstartup.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=0.9.4
+Type=Application
+Name=xstartup
+Comment=Sean's X session startup script
+Exec=/home/swhitton/bin/xstartup
+OnlyShowIn=XFCE;
+StartupNotify=false
+Terminal=false
+Hidden=false
+
diff --git a/archive/.config/cron/spw_ma.sdf.org b/archive/.config/cron/spw_ma.sdf.org
new file mode 100644
index 00000000..44ee5e21
--- /dev/null
+++ b/archive/.config/cron/spw_ma.sdf.org
@@ -0,0 +1,23 @@
+# -*- mode: conf -*-
+
+# /usr/pkg/bin before other system directories so get correct version
+# of e.g. Emacs
+
+PATH=$HOME/bin:$HOME/local/pkg/bin:$HOME/local/pkg/sbin:/usr/pkg/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
+
+#*/15 * * * * chronic doccheckin
+#@hourly chronic mbsync fastmail
+
+# update Org wiki & philosophy notes at 7am and 2pm MST
+#0 14 * * * chronic ma_org_publish
+#0 21 * * * chronic ma_org_publish
+
+#0 18 * * * duply-run
+#0 3 * * * chronic planetnewspipe
+
+# @reboot cronjobs don't work on the MetaArray, so check for a reboot
+# every 10 minutes
+#*/10 * * * * chronic ma_reboot_check
+
+@weekly pkg_admin fetch-pkg-vulnerabilities
+@weekly pkg_admin audit
diff --git a/archive/.config/cron/spwhitton_shortgeese.silentflame.com b/archive/.config/cron/spwhitton_shortgeese.silentflame.com
new file mode 100644
index 00000000..b6fbd4e8
--- /dev/null
+++ b/archive/.config/cron/spwhitton_shortgeese.silentflame.com
@@ -0,0 +1,6 @@
+PATH=$HOME/local/bin:$HOME/.local/bin:$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
+MAILTO=spwhitton@spwhitton.name
+
+# until I get my hands on a VGA-to-HDMI converter, shortgeese is
+# serving only mpd audio
+@reboot cvlc --loop http://hephaestus.local:8000/ >/dev/null 2>&1
diff --git a/archive/.config/cron/swhitton_artemis.silentflame.com b/archive/.config/cron/swhitton_artemis.silentflame.com
new file mode 100644
index 00000000..4073675b
--- /dev/null
+++ b/archive/.config/cron/swhitton_artemis.silentflame.com
@@ -0,0 +1,18 @@
+PATH=$HOME/local/bin:$HOME/.local/bin:$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
+MAILTO=spwhitton@spwhitton.name
+
+# watch any annexes I have checked out
+#@reboot cd $HOME/lib/annex 2>/dev/null && git annex watch || true
+#@reboot cd $HOME/lib/dionysus 2>/dev/null && git annex watch || true
+#@reboot cd $HOME/lib/rt 2>/dev/null && git annex watch || true
+#@reboot cd $HOME/lib/wikiannex 2>/dev/null && git annex watch || true
+
+# srem needs maintenance
+# * * * * * srem --cron
+# 0 */2 * * * srem --refresh-emacs
+
+*/15 * * * * chronic doccheckin
+*/30 * * * * offline || chronic mbsync fastmail
+
+@reboot rt
+
diff --git a/archive/.config/cron/swhitton_demeter.silentflame.com b/archive/.config/cron/swhitton_demeter.silentflame.com
new file mode 100644
index 00000000..3bd9c02e
--- /dev/null
+++ b/archive/.config/cron/swhitton_demeter.silentflame.com
@@ -0,0 +1,12 @@
+PATH=$HOME/local/bin:$HOME/.local/bin:$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
+MAILTO=spwhitton@spwhitton.name
+
+# watch any annexes I have checked out
+#@reboot cd $HOME/lib/annex 2>/dev/null && git annex watch || true
+#@reboot cd $HOME/lib/dionysus 2>/dev/null && git annex watch || true
+#@reboot cd $HOME/lib/rt 2>/dev/null && git annex watch || true
+#@reboot cd $HOME/lib/wikiannex 2>/dev/null && git annex watch || true
+
+@weekly sariulccron /home/swhitton/html/sariul/cgi-bin
+
+@reboot emacs --daemon
diff --git a/archive/.config/feh/themes b/archive/.config/feh/themes
new file mode 100644
index 00000000..8b950bea
--- /dev/null
+++ b/archive/.config/feh/themes
@@ -0,0 +1 @@
+feh --full-screen --auto-zoom
diff --git a/archive/.config/user/duplicity.service b/archive/.config/user/duplicity.service
new file mode 100644
index 00000000..33128c79
--- /dev/null
+++ b/archive/.config/user/duplicity.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=Run duplicity to back up my home directory
+
+[Service]
+ExecStart=/home/spwhitton/bin/duply-run
+# TODO what does systemd do if this exits non-zero? hopefully just
+# tries again next time but might need to instruct it to do that
diff --git a/archive/.config/user/duplicity.timer b/archive/.config/user/duplicity.timer
new file mode 100644
index 00000000..a2b48982
--- /dev/null
+++ b/archive/.config/user/duplicity.timer
@@ -0,0 +1,12 @@
+[Unit]
+Description=Trigger backing up my home directory
+Wants=network-online.target
+After=network-online.target
+
+[Timer]
+OnBootSec=10min
+OnUnitActiveSec=20h
+Unit=duplicity.service
+
+[Install]
+WantedBy=multi-user.target
diff --git a/archive/.config/user/movemail.service b/archive/.config/user/movemail.service
new file mode 100644
index 00000000..182f048a
--- /dev/null
+++ b/archive/.config/user/movemail.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Send and receive mail when the network comes up
+
+[Service]
+ExecStart=/home/spwhitton/bin/movemail
+# TODO what does systemd do if this exits non-zero? hopefully just
+# tries again next time but might need to instruct it to do that
+
+[Install]
+WantedBy=network-online.target
diff --git a/archive/.config/user/mpd.service b/archive/.config/user/mpd.service
new file mode 100644
index 00000000..c2ee8e7e
--- /dev/null
+++ b/archive/.config/user/mpd.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Music Player Daemon
+
+[Service]
+ExecStart=/usr/bin/mpd --no-daemon
+
+[Install]
+WantedBy=default.target
diff --git a/archive/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.wheezy.xml b/archive/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.wheezy.xml
new file mode 100644
index 00000000..eec58e8b
--- /dev/null
+++ b/archive/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.wheezy.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<channel name="xfce4-keyboard-shortcuts" version="1.0">
+ <property name="commands" type="empty">
+ <property name="default" type="empty">
+ <property name="&lt;Alt&gt;F2" type="empty"/>
+ <property name="&lt;Primary&gt;&lt;Alt&gt;Delete" type="empty"/>
+ <property name="XF86Display" type="empty"/>
+ <property name="&lt;Super&gt;p" type="empty"/>
+ <property name="&lt;Primary&gt;Escape" type="empty"/>
+ </property>
+ <property name="custom" type="empty">
+ <property name="XF86Display" type="string" value="xfce4-display-settings --minimal"/>
+ <property name="&lt;Primary&gt;&lt;Alt&gt;Delete" type="string" value="xflock4"/>
+ <property name="&lt;Primary&gt;Escape" type="string" value="xfdesktop --menu"/>
+ <property name="&lt;Alt&gt;F2" type="string" value="xfrun4"/>
+ <property name="override" type="bool" value="true"/>
+ </property>
+ </property>
+ <property name="xfwm4" type="empty">
+ <property name="default" type="empty">
+ <property name="&lt;Alt&gt;Insert" type="empty"/>
+ <property name="Escape" type="empty"/>
+ <property name="Left" type="empty"/>
+ <property name="Right" type="empty"/>
+ <property name="Up" type="empty"/>
+ <property name="Down" type="empty"/>
+ <property name="&lt;Alt&gt;Tab" type="empty"/>
+ <property name="&lt;Alt&gt;&lt;Shift&gt;Tab" type="empty"/>
+ <property name="&lt;Alt&gt;Delete" type="empty"/>
+ <property name="&lt;Control&gt;&lt;Alt&gt;Down" type="empty"/>
+ <property name="&lt;Control&gt;&lt;Alt&gt;Left" type="empty"/>
+ <property name="&lt;Shift&gt;&lt;Alt&gt;Page_Down" type="empty"/>
+ <property name="&lt;Alt&gt;F4" type="empty"/>
+ <property name="&lt;Alt&gt;F6" type="empty"/>
+ <property name="&lt;Alt&gt;F7" type="empty"/>
+ <property name="&lt;Alt&gt;F8" type="empty"/>
+ <property name="&lt;Alt&gt;F9" type="empty"/>
+ <property name="&lt;Alt&gt;F10" type="empty"/>
+ <property name="&lt;Alt&gt;F11" type="empty"/>
+ <property name="&lt;Alt&gt;F12" type="empty"/>
+ <property name="&lt;Control&gt;&lt;Shift&gt;&lt;Alt&gt;Left" type="empty"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;End" type="empty"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;Home" type="empty"/>
+ <property name="&lt;Control&gt;&lt;Shift&gt;&lt;Alt&gt;Right" type="empty"/>
+ <property name="&lt;Control&gt;&lt;Shift&gt;&lt;Alt&gt;Up" type="empty"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_1" type="empty"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_2" type="empty"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_3" type="empty"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_4" type="empty"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_5" type="empty"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_6" type="empty"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_7" type="empty"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_8" type="empty"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_9" type="empty"/>
+ <property name="&lt;Alt&gt;space" type="empty"/>
+ <property name="&lt;Shift&gt;&lt;Alt&gt;Page_Up" type="empty"/>
+ <property name="&lt;Control&gt;&lt;Alt&gt;Right" type="empty"/>
+ <property name="&lt;Control&gt;&lt;Alt&gt;d" type="empty"/>
+ <property name="&lt;Control&gt;&lt;Alt&gt;Up" type="empty"/>
+ <property name="&lt;Super&gt;Tab" type="empty"/>
+ <property name="&lt;Control&gt;F1" type="empty"/>
+ <property name="&lt;Control&gt;F2" type="empty"/>
+ <property name="&lt;Control&gt;F3" type="empty"/>
+ <property name="&lt;Control&gt;F4" type="empty"/>
+ <property name="&lt;Control&gt;F5" type="empty"/>
+ <property name="&lt;Control&gt;F6" type="empty"/>
+ <property name="&lt;Control&gt;F7" type="empty"/>
+ <property name="&lt;Control&gt;F8" type="empty"/>
+ <property name="&lt;Control&gt;F9" type="empty"/>
+ <property name="&lt;Control&gt;F10" type="empty"/>
+ <property name="&lt;Control&gt;F11" type="empty"/>
+ <property name="&lt;Control&gt;F12" type="empty"/>
+ </property>
+ <property name="custom" type="empty">
+ <property name="&lt;Control&gt;F3" type="string" value="workspace_3_key"/>
+ <property name="&lt;Control&gt;F4" type="string" value="workspace_4_key"/>
+ <property name="&lt;Control&gt;F5" type="string" value="workspace_5_key"/>
+ <property name="&lt;Control&gt;F6" type="string" value="workspace_6_key"/>
+ <property name="&lt;Control&gt;F7" type="string" value="workspace_7_key"/>
+ <property name="&lt;Control&gt;F8" type="string" value="workspace_8_key"/>
+ <property name="&lt;Control&gt;F9" type="string" value="workspace_9_key"/>
+ <property name="&lt;Alt&gt;Tab" type="string" value="cycle_windows_key"/>
+ <property name="&lt;Control&gt;&lt;Alt&gt;Right" type="string" value="right_workspace_key"/>
+ <property name="Left" type="string" value="left_key"/>
+ <property name="&lt;Control&gt;&lt;Shift&gt;&lt;Alt&gt;Left" type="string" value="move_window_left_key"/>
+ <property name="&lt;Control&gt;&lt;Shift&gt;&lt;Alt&gt;Right" type="string" value="move_window_right_key"/>
+ <property name="Up" type="string" value="up_key"/>
+ <property name="&lt;Alt&gt;F6" type="string" value="stick_window_key"/>
+ <property name="&lt;Control&gt;&lt;Alt&gt;Down" type="string" value="down_workspace_key"/>
+ <property name="&lt;Alt&gt;F7" type="string" value="move_window_key"/>
+ <property name="&lt;Alt&gt;F11" type="string" value="fullscreen_key"/>
+ <property name="&lt;Alt&gt;F8" type="string" value="resize_window_key"/>
+ <property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>
+ <property name="Escape" type="string" value="cancel_key"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_1" type="string" value="move_window_workspace_1_key"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_2" type="string" value="move_window_workspace_2_key"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_3" type="string" value="move_window_workspace_3_key"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_4" type="string" value="move_window_workspace_4_key"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_5" type="string" value="move_window_workspace_5_key"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_6" type="string" value="move_window_workspace_6_key"/>
+ <property name="Down" type="string" value="down_key"/>
+ <property name="&lt;Control&gt;&lt;Shift&gt;&lt;Alt&gt;Up" type="string" value="move_window_up_key"/>
+ <property name="&lt;Shift&gt;&lt;Alt&gt;Page_Down" type="string" value="lower_window_key"/>
+ <property name="&lt;Alt&gt;F12" type="string" value="above_key"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_8" type="string" value="move_window_workspace_8_key"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_9" type="string" value="move_window_workspace_9_key"/>
+ <property name="Right" type="string" value="right_key"/>
+ <property name="&lt;Control&gt;&lt;Alt&gt;Up" type="string" value="up_workspace_key"/>
+ <property name="&lt;Control&gt;F10" type="string" value="workspace_10_key"/>
+ <property name="&lt;Alt&gt;&lt;Control&gt;KP_7" type="string" value="move_window_workspace_7_key"/>
+ <property name="&lt;Alt&gt;Delete" type="string" value="del_workspace_key"/>
+ <property name="&lt;Control&gt;&lt;Alt&gt;Left" type="string" value="left_workspace_key"/>
+ <property name="&lt;Control&gt;F12" type="string" value="workspace_12_key"/>
+ <property name="&lt;Alt&gt;&lt;Shift&gt;Tab" type="string" value="cycle_reverse_windows_key"/>
+ <property name="&lt;Shift&gt;&lt;Alt&gt;Page_Up" type="string" value="raise_window_key"/>
+ <property name="&lt;Alt&gt;Insert" type="string" value="add_workspace_key"/>
+ <property name="&lt;Control&gt;F2" type="string" value="workspace_2_key"/>
+ <property name="&lt;Control&gt;F1" type="string" value="workspace_1_key"/>
+ <property name="&lt;Control&gt;F11" type="string" value="workspace_11_key"/>
+ <property name="override" type="bool" value="true"/>
+ <property name="&lt;Super&gt;w" type="string" value="popup_menu_key"/>
+ <property name="&lt;Super&gt;Up" type="string" value="maximize_window_key"/>
+ <property name="&lt;Super&gt;Down" type="string" value="hide_window_key"/>
+ <property name="&lt;Shift&gt;&lt;Super&gt;u" type="string" value="move_window_prev_workspace_key"/>
+ <property name="&lt;Shift&gt;&lt;Super&gt;i" type="string" value="move_window_next_workspace_key"/>
+ <property name="&lt;Super&gt;i" type="string" value="next_workspace_key"/>
+ <property name="&lt;Super&gt;u" type="string" value="prev_workspace_key"/>
+ <property name="F11" type="string" value="close_window_key"/>
+ </property>
+ </property>
+ <property name="providers" type="array">
+ <value type="string" value="xfwm4"/>
+ <value type="string" value="commands"/>
+ </property>
+</channel>
diff --git a/archive/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.wheezy.xml b/archive/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.wheezy.xml
new file mode 100644
index 00000000..093dea3e
--- /dev/null
+++ b/archive/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.wheezy.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<channel name="xfwm4" version="1.0">
+ <property name="general" type="empty">
+ <property name="activate_action" type="string" value="bring"/>
+ <property name="borderless_maximize" type="bool" value="true"/>
+ <property name="box_move" type="bool" value="false"/>
+ <property name="box_resize" type="bool" value="false"/>
+ <property name="button_layout" type="string" value="O|HMC"/>
+ <property name="button_offset" type="int" value="0"/>
+ <property name="button_spacing" type="int" value="0"/>
+ <property name="click_to_focus" type="bool" value="false"/>
+ <property name="focus_delay" type="int" value="5"/>
+ <property name="cycle_apps_only" type="bool" value="false"/>
+ <property name="cycle_draw_frame" type="bool" value="true"/>
+ <property name="cycle_hidden" type="bool" value="true"/>
+ <property name="cycle_minimum" type="bool" value="true"/>
+ <property name="cycle_workspaces" type="bool" value="false"/>
+ <property name="double_click_time" type="int" value="250"/>
+ <property name="double_click_distance" type="int" value="5"/>
+ <property name="double_click_action" type="string" value="maximize"/>
+ <property name="easy_click" type="string" value="Alt"/>
+ <property name="focus_hint" type="bool" value="true"/>
+ <property name="focus_new" type="bool" value="true"/>
+ <property name="frame_opacity" type="int" value="100"/>
+ <property name="full_width_title" type="bool" value="true"/>
+ <property name="inactive_opacity" type="int" value="100"/>
+ <property name="maximized_offset" type="int" value="0"/>
+ <property name="move_opacity" type="int" value="100"/>
+ <property name="placement_ratio" type="int" value="20"/>
+ <property name="placement_mode" type="string" value="center"/>
+ <property name="popup_opacity" type="int" value="100"/>
+ <property name="mousewheel_rollup" type="bool" value="true"/>
+ <property name="prevent_focus_stealing" type="bool" value="false"/>
+ <property name="raise_delay" type="int" value="250"/>
+ <property name="raise_on_click" type="bool" value="true"/>
+ <property name="raise_on_focus" type="bool" value="false"/>
+ <property name="raise_with_any_button" type="bool" value="true"/>
+ <property name="repeat_urgent_blink" type="bool" value="false"/>
+ <property name="resize_opacity" type="int" value="100"/>
+ <property name="restore_on_move" type="bool" value="true"/>
+ <property name="scroll_workspaces" type="bool" value="true"/>
+ <property name="shadow_delta_height" type="int" value="0"/>
+ <property name="shadow_delta_width" type="int" value="0"/>
+ <property name="shadow_delta_x" type="int" value="0"/>
+ <property name="shadow_delta_y" type="int" value="-3"/>
+ <property name="shadow_opacity" type="int" value="50"/>
+ <property name="show_app_icon" type="bool" value="false"/>
+ <property name="show_dock_shadow" type="bool" value="true"/>
+ <property name="show_frame_shadow" type="bool" value="false"/>
+ <property name="show_popup_shadow" type="bool" value="false"/>
+ <property name="snap_resist" type="bool" value="false"/>
+ <property name="snap_to_border" type="bool" value="true"/>
+ <property name="snap_to_windows" type="bool" value="false"/>
+ <property name="snap_width" type="int" value="10"/>
+ <property name="theme" type="string" value="Default"/>
+ <property name="title_alignment" type="string" value="center"/>
+ <property name="title_font" type="string" value="Sans Bold 9"/>
+ <property name="title_horizontal_offset" type="int" value="0"/>
+ <property name="title_shadow_active" type="string" value="false"/>
+ <property name="title_shadow_inactive" type="string" value="false"/>
+ <property name="title_vertical_offset_active" type="int" value="0"/>
+ <property name="title_vertical_offset_inactive" type="int" value="0"/>
+ <property name="toggle_workspaces" type="bool" value="false"/>
+ <property name="unredirect_overlays" type="bool" value="true"/>
+ <property name="urgent_blink" type="bool" value="false"/>
+ <property name="use_compositing" type="bool" value="false"/>
+ <property name="workspace_count" type="int" value="4"/>
+ <property name="wrap_cycle" type="bool" value="false"/>
+ <property name="wrap_layout" type="bool" value="true"/>
+ <property name="wrap_resistance" type="int" value="10"/>
+ <property name="wrap_windows" type="bool" value="true"/>
+ <property name="wrap_workspaces" type="bool" value="false"/>
+ <property name="workspace_names" type="array">
+ <value type="string" value="Workspace 1"/>
+ <value type="string" value="Workspace 2"/>
+ <value type="string" value="Workspace 3"/>
+ <value type="string" value="Workspace 4"/>
+ </property>
+ </property>
+</channel>
diff --git a/archive/.config/xfce4/xinitrc b/archive/.config/xfce4/xinitrc
new file mode 100755
index 00000000..a42bca05
--- /dev/null
+++ b/archive/.config/xfce4/xinitrc
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Disable the system bell
+
+xset b off
+
+# Source the standard xfce4 configuration
+
+. /etc/xdg/xfce4/xinitrc
diff --git a/archive/.extract_urlview b/archive/.extract_urlview
new file mode 100644
index 00000000..34525426
--- /dev/null
+++ b/archive/.extract_urlview
@@ -0,0 +1,6 @@
+COMMAND firefox
+DEFAULT_VIEW context
+HTML_TAGS a
+IGNORE_EMPTY_TAGS
+SHORTCUT
+NOREVIEW
diff --git a/archive/.fonts.conf.old b/archive/.fonts.conf.old
new file mode 100644
index 00000000..bf8350c1
--- /dev/null
+++ b/archive/.fonts.conf.old
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+<!-- Use the Antialiasing -->
+ <match target="font">
+ <edit name="antialias" mode="assign"><bool>true</bool></edit>
+ </match>
+<!-- Use Hinting -->
+ <match target="font">
+ <edit name="hinting" mode="assign"><bool>true</bool></edit>
+ </match>
+<!-- Use Slight Hinting -->
+ <match target="font">
+ <edit name="hintstyle" mode="assign"><const>hintslight</const></edit>
+ </match>
+<!-- Use lcddefault as default for LCD filter -->
+ <match target="font">
+ <edit mode="assign" name="lcdfilter">
+ <const>lcddefault</const>
+ </edit>
+ </match>
+<!-- Use legacy LCD filter on smaller Monospace fonts -->
+ <match target="font">
+ <test name="family">
+ <string>DejaVu Sans Mono</string>
+ <string>Bitstream Vera Sans Mono</string>
+ </test>
+ <test name="pixelsize" compare="less_eq">
+ <double>12.0</double>
+ </test>
+
+ <edit name="lcd_filter" mode="assign">
+ <const>lcdlegacy</const>
+ </edit>
+ <edit name="hintstyle" mode="assign">
+ <const>hintfull</const>
+ </edit>
+ </match>
+</fontconfig>
+
diff --git a/archive/.gtk-bookmarks b/archive/.gtk-bookmarks
new file mode 100644
index 00000000..afb67873
--- /dev/null
+++ b/archive/.gtk-bookmarks
@@ -0,0 +1,5 @@
+file:///home/swhitton/doc Documents
+file:///home/swhitton/tmp Download
+file:///home/swhitton/lib/annex/music Music
+file:///home/swhitton/lib/annex/doc/img Pictures
+file:///home/swhitton/lib/annex/video Videos
diff --git a/archive/.hgrc b/archive/.hgrc
new file mode 100644
index 00000000..b3e0559a
--- /dev/null
+++ b/archive/.hgrc
@@ -0,0 +1,8 @@
+[ui]
+username = Sean Whitton <sean@silentflame.com>
+verbose = True
+
+[extensions]
+hgext.win32text =
+hgext.fetch =
+hgext.mq =
diff --git a/archive/.keysnail.js b/archive/.keysnail.js
new file mode 100644
index 00000000..69069235
--- /dev/null
+++ b/archive/.keysnail.js
@@ -0,0 +1,669 @@
+// ========================== KeySnail Init File =========================== //
+
+// You can preserve your code in this area when generating the init file using GUI.
+// Put all your code except special key, set*key, hook, blacklist.
+// ========================================================================= //
+//{{%PRESERVE%
+
+key.setViewKey(["C-x", "b"], function (ev, arg){
+
+ ext.exec("tanything", arg);
+
+}, "view all tabs", true);
+
+key.setViewKey('e', function (aEvent, aArg){
+
+ ext.exec("hok-start-foreground-mode", aArg);
+
+}, 'Hok - Foreground hint mode', true);
+
+
+key.setViewKey('E', function (aEvent, aArg){
+
+ ext.exec("hok-start-background-mode", aArg);
+
+}, 'HoK - Background hint mode', true);
+
+
+key.setViewKey(';', function (aEvent, aArg){
+
+ ext.exec("hok-start-extended-mode", aArg);
+
+}, 'HoK - Extented hint mode', true);
+
+
+key.setViewKey(['C-c', 'C-e'], function (aEvent, aArg){
+
+ ext.exec("hok-start-continuous-mode", aArg);
+
+}, 'Start continuous HaH', true);
+
+
+key.setViewKey('c', function (aEvent, aArg){
+
+ ext.exec("hok-yank-foreground-mode", aArg);
+
+}, 'Hok - Foreground yank hint mode', true);
+
+plugins.options["bmany.default_open_type"] = "tab";
+
+key.setViewKey(['C-c', 'b'], function (ev, arg) {
+ ext.exec("bmany-list-all-bookmarks", arg, ev);
+}, 'bmany - List all bookmarks');
+
+key.setViewKey(['C-c', 'h'], function (ev, arg) {
+ ext.exec("history-show", arg, ev);
+}, 'History - show histories list');
+
+function getShortcutOrURI(k, d) {
+ return PlacesUtils.getURLAndPostDataForKeyword(k)[0];
+}
+
+key.setViewKey(['C-c', 'r'], function (ev, arg) {
+ if (window.loadURI) {
+ loadURI("javascript:(function(){readStyle%3D'style-apertura'%3BreadSize%3D'size-large'%3BreadMargin%3D'margin-wide'%3B_readability_script%3Ddocument.createElement('SCRIPT')%3B_readability_script.type%3D'text/javascript'%3B_readability_script.src%3D'http://spw.sdf.org/tech/old-readability.js?x%3D'%2B(Math.random())%3Bdocument.getElementsByTagName('head')%5B0%5D.appendChild(_readability_script)%3B_readability_css%3Ddocument.createElement('LINK')%3B_readability_css.rel%3D'stylesheet'%3B_readability_css.href%3D'http://spw.sdf.org/tech/old-readability.css'%3B_readability_css.type%3D'text/css'%3B_readability_css.media%3D'all'%3Bdocument.getElementsByTagName('head')%5B0%5D.appendChild(_readability_css)%3B_readability_print_css%3Ddocument.createElement('LINK')%3B_readability_print_css.rel%3D'stylesheet'%3B_readability_print_css.href%3D'http://spw.sdf.org/tech/old-readability-print.css'%3B_readability_print_css.media%3D'print'%3B_readability_print_css.type%3D'text/css'%3Bdocument.getElementsByTagName('head')%5B0%5D.appendChild(_readability_print_css)%3B})()%3B");
+ }
+}, 'Good old Readability');
+
+// http://stackoverflow.com/questions/410411/get-current-page-url-from-a-firefox-sidebar-extension
+function getCurrentURL(){
+
+ var currentWindow = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("navigator:browser");
+
+ var currBrowser = currentWindow.getBrowser();
+ var currURL = currBrowser.currentURI.spec;
+
+ return currURL;
+}
+
+key.setViewKey(['C-c', 'k'], function (ev, arg){
+ Components.utils.import("resource://gre/modules/FileUtils.jsm");
+
+ // http://stackoverflow.com/questions/10215643/how-to-execute-a-windows-command-from-firefox-addon
+ var env = Components.classes["@mozilla.org/process/environment;1"]
+ .getService(Components.interfaces.nsIEnvironment);
+ var shell = new FileUtils.File("/bin/bash");
+ var args = ["-c", "reading.py ".concat(getCurrentURL())];
+
+ var process = Components.classes["@mozilla.org/process/util;1"]
+ .createInstance(Components.interfaces.nsIProcess);
+ process.init(shell);
+ process.runAsync(args, args.length);
+}, 'Send to Kindle and add to Org reading list');
+
+key.setViewKey(['C-c', 'v'], function (ev, arg){
+ Components.utils.import("resource://gre/modules/FileUtils.jsm");
+
+ // http://stackoverflow.com/questions/10215643/how-to-execute-a-windows-command-from-firefox-addon
+ var env = Components.classes["@mozilla.org/process/environment;1"]
+ .getService(Components.interfaces.nsIEnvironment);
+ var shell = new FileUtils.File("/bin/bash");
+ var args = ["-c", "yt ".concat(getCurrentURL())];
+
+ var process = Components.classes["@mozilla.org/process/util;1"]
+ .createInstance(Components.interfaces.nsIProcess);
+ process.init(shell);
+ process.runAsync(args, args.length);
+}, 'Send flash video stream to VLC');
+
+//}}%PRESERVE%
+// ========================================================================= //
+
+// ========================= Special key settings ========================== //
+
+key.quitKey = "C-g";
+key.helpKey = "<f1>";
+key.escapeKey = "C-q";
+key.macroStartKey = "<f3>";
+key.macroEndKey = "<f4>";
+key.universalArgumentKey = "C-u";
+key.negativeArgument1Key = "C--";
+key.negativeArgument2Key = "C-M--";
+key.negativeArgument3Key = "M--";
+key.suspendKey = "<f2>";
+
+// ================================= Hooks ================================= //
+
+hook.setHook('KeyBoardQuit', function (aEvent) {
+ if (key.currentKeySequence.length) return;
+
+ command.closeFindBar();
+
+ let marked = command.marked(aEvent);
+
+ if (util.isCaretEnabled()) {
+ if (marked) {
+ command.resetMark(aEvent);
+ } else {
+ if ("blur" in aEvent.target) aEvent.target.blur();
+
+ gBrowser.focus();
+ _content.focus();
+ }
+ } else {
+ goDoCommand("cmd_selectNone");
+ }
+
+ if (KeySnail.windowType === "navigator:browser" && !marked) {
+ key.generateKey(aEvent.originalTarget, KeyEvent.DOM_VK_ESCAPE, true);
+ }
+});
+
+// ============================= Key bindings ============================== //
+
+key.setGlobalKey(['C-c', 'r'], function (ev) {
+ userscript.reload();
+}, 'Reload the initialization file', true);
+
+key.setGlobalKey(['C-x', '1'], function (ev) {
+ window.loadURI(ev.target.ownerDocument.location.href);
+}, 'Show current frame only', true);
+
+key.setGlobalKey(['C-x', 'C-m'], function (ev, arg) {
+ ext.select(arg, ev);
+}, 'List exts and execute selected one', true);
+
+key.setGlobalKey(['C-x', 'l'], function (ev) {
+ command.focusToById("urlbar");
+}, 'Focus to the location bar', true);
+
+key.setGlobalKey(['C-x', 'g'], function (ev) {
+ command.focusToById("searchbar");
+}, 'Focus to the search bar', true);
+
+key.setGlobalKey(['C-x', 't'], function (ev) {
+ command.focusElement(command.elementsRetrieverTextarea, 0);
+}, 'Focus to the first textarea', true);
+
+key.setGlobalKey(['C-x', 's'], function (ev) {
+ command.focusElement(command.elementsRetrieverButton, 0);
+}, 'Focus to the first button', true);
+
+key.setGlobalKey(['C-x', 'k'], function (ev) {
+ BrowserCloseTabOrWindow();
+}, 'Close tab / window');
+
+key.setGlobalKey(['C-x', 'K'], function (ev) {
+ closeWindow(true);
+}, 'Close the window');
+
+key.setGlobalKey(['C-x', 'n'], function (ev) {
+ OpenBrowserWindow();
+}, 'Open new window');
+
+key.setGlobalKey(['C-x', 'C-c'], function (ev) {
+ goQuitApplication();
+}, 'Exit Firefox', true);
+
+key.setGlobalKey(['C-x', 'o'], function (ev, arg) {
+ command.focusOtherFrame(arg);
+}, 'Select next frame');
+
+key.setGlobalKey(['C-x', 'C-f'], function (ev) {
+ BrowserOpenFileWindow();
+}, 'Open the local file', true);
+
+key.setGlobalKey(['C-x', 'C-s'], function (ev) {
+ saveDocument(window.content.document);
+}, 'Save current page to the file', true);
+
+key.setGlobalKey('M-:', function (ev) {
+ command.interpreter();
+}, 'Command interpreter', true);
+
+key.setGlobalKey(['<f1>', 'b'], function (ev) {
+ key.listKeyBindings();
+}, 'List all keybindings');
+
+key.setGlobalKey(['<f1>', 'F'], function (ev) {
+ openHelpLink("firefox-help");
+}, 'Display Firefox help');
+
+key.setGlobalKey('C-m', function (ev) {
+ key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_RETURN, true);
+}, 'Generate the return key code');
+
+key.setGlobalKey('M-w', function (ev) {
+ command.copyRegion(ev);
+}, 'Copy selected text', true);
+
+key.setGlobalKey('C-s', function (ev) {
+ command.iSearchForwardKs(ev);
+}, 'Emacs like incremental search forward', true);
+
+key.setGlobalKey('C-r', function (ev) {
+ command.iSearchBackwardKs(ev);
+}, 'Emacs like incremental search backward', true);
+
+key.setGlobalKey('C-/', function (ev) {
+ undoCloseTab();
+}, 'Undo closed tab');
+
+key.setGlobalKey(['C-c', 'C-c', 'C-v'], function (ev) {
+ toJavaScriptConsole();
+}, 'Display JavaScript console', true);
+
+key.setGlobalKey(['C-c', 'C-c', 'C-c'], function (ev) {
+ command.clearConsole();
+}, 'Clear Javascript console', true);
+
+key.setViewKey(['C-c', 'j'], function (ev, arg){
+
+ ext.exec("tanything", arg);
+
+}, 'view all tabs', true)
+
+key.setViewKey(['C-x', 'b'], function (ev, arg){
+
+ ext.exec("tanything", arg);
+
+}, 'view all tabs', true);
+
+key.setViewKey(['C-x', 'h'], function (ev) {
+ goDoCommand("cmd_selectAll");
+}, 'Select all', true);
+
+key.setViewKey('e', function (aEvent, aArg){
+
+ ext.exec("hok-start-foreground-mode", aArg);
+
+}, 'Hok - Foreground hint mode', true);
+
+key.setViewKey('E', function (aEvent, aArg){
+
+ ext.exec("hok-start-background-mode", aArg);
+
+}, 'HoK - Background hint mode', true);
+
+key.setViewKey(';', function (aEvent, aArg){
+
+ ext.exec("hok-start-extended-mode", aArg);
+
+}, 'HoK - Extented hint mode', true);
+
+key.setViewKey(['C-c', 'C-e'], function (aEvent, aArg){
+
+ ext.exec("hok-start-continuous-mode", aArg);
+
+}, 'Start continuous HaH', true);
+
+key.setViewKey(['C-c', 'b'], function (ev, arg) {
+ ext.exec("bmany-list-all-bookmarks", arg, ev);
+}, 'bmany - List all bookmarks');
+
+key.setViewKey(['C-c', 'h'], function (ev, arg) {
+ ext.exec("history-show", arg, ev);
+}, 'History - show histories list');
+
+key.setViewKey(['C-c', 'r'], function (ev, arg) {
+ if (window.loadURI) {
+ loadURI("javascript:(function(){readStyle%3D'style-apertura'%3BreadSize%3D'size-large'%3BreadMargin%3D'margin-wide'%3B_readability_script%3Ddocument.createElement('SCRIPT')%3B_readability_script.type%3D'text/javascript'%3B_readability_script.src%3D'http://spw.sdf.org/tech/old-readability.js?x%3D'%2B(Math.random())%3Bdocument.getElementsByTagName('head')%5B0%5D.appendChild(_readability_script)%3B_readability_css%3Ddocument.createElement('LINK')%3B_readability_css.rel%3D'stylesheet'%3B_readability_css.href%3D'http://spw.sdf.org/tech/old-readability.css'%3B_readability_css.type%3D'text/css'%3B_readability_css.media%3D'all'%3Bdocument.getElementsByTagName('head')%5B0%5D.appendChild(_readability_css)%3B_readability_print_css%3Ddocument.createElement('LINK')%3B_readability_print_css.rel%3D'stylesheet'%3B_readability_print_css.href%3D'http://spw.sdf.org/tech/old-readability-print.css'%3B_readability_print_css.media%3D'print'%3B_readability_print_css.type%3D'text/css'%3Bdocument.getElementsByTagName('head')%5B0%5D.appendChild(_readability_print_css)%3B})()%3B");
+ }
+}, 'Good old Readability');
+
+key.setViewKey(['C-c', 'k'], function (ev, arg){
+ Components.utils.import("resource://gre/modules/FileUtils.jsm");
+
+ // http://stackoverflow.com/questions/10215643/how-to-execute-a-windows-command-from-firefox-addon
+ var env = Components.classes["@mozilla.org/process/environment;1"]
+ .getService(Components.interfaces.nsIEnvironment);
+ var shell = new FileUtils.File("/bin/bash");
+ var args = ["-c", "reading.py ".concat(getCurrentURL())];
+
+ var process = Components.classes["@mozilla.org/process/util;1"]
+ .createInstance(Components.interfaces.nsIProcess);
+ process.init(shell);
+ process.runAsync(args, args.length);
+}, 'Send to Kindle and add to Org reading list');
+
+key.setViewKey('c', function (aEvent, aArg){
+
+ ext.exec("hok-yank-foreground-mode", aArg);
+
+}, 'Hok - Foreground yank hint mode', true);
+
+key.setViewKey('C-n', function (ev) {
+ key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_DOWN, true);
+}, 'Scroll line down');
+
+key.setViewKey('u', function (ev) {
+ undoCloseTab();
+}, 'Undo closed tab');
+
+key.setViewKey('C-p', function (ev) {
+ key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_UP, true);
+}, 'Scroll line up');
+
+key.setViewKey([['C-f'], ['.']], function (ev) {
+ key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_RIGHT, true);
+}, 'Scroll right');
+
+key.setViewKey([['C-b'], [',']], function (ev) {
+ key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_LEFT, true);
+}, 'Scroll left');
+
+key.setViewKey([['M-v'], ['b']], function (ev) {
+ goDoCommand("cmd_scrollPageUp");
+}, 'Scroll page up');
+
+key.setViewKey('C-v', function (ev) {
+ goDoCommand("cmd_scrollPageDown");
+}, 'Scroll page down');
+
+key.setViewKey([['M-<'], ['g']], function (ev) {
+ goDoCommand("cmd_scrollTop");
+}, 'Scroll to the top of the page', true);
+
+key.setViewKey([['M->'], ['G']], function (ev) {
+ goDoCommand("cmd_scrollBottom");
+}, 'Scroll to the bottom of the page', true);
+
+key.setViewKey(':', function (ev, arg) {
+ shell.input(null, arg);
+}, 'List and execute commands', true);
+
+key.setViewKey('R', function (ev) {
+ BrowserReload();
+}, 'Reload the page', true);
+
+key.setViewKey('B', function (ev) {
+ BrowserBack();
+}, 'Back');
+
+key.setViewKey('F', function (ev) {
+ BrowserForward();
+}, 'Forward');
+
+key.setViewKey('f', function (ev) {
+ command.focusElement(command.elementsRetrieverTextarea, 0);
+}, 'Focus to the first textarea', true);
+
+key.setViewKey('M-p', function (ev) {
+ command.walkInputElement(command.elementsRetrieverButton, true, true);
+}, 'Focus to the next button');
+
+key.setViewKey('M-n', function (ev) {
+ command.walkInputElement(command.elementsRetrieverButton, false, true);
+}, 'Focus to the previous button');
+
+key.setViewKey('q', function (ev) {
+ BrowserCloseTabOrWindow();
+}, 'Close tab / window');
+
+key.setViewKey('/', function (ev) {
+ command.iSearchForwardKs(ev);
+}, 'Emacs like incremental search forward', true);
+
+key.setViewKey('?', function (ev) {
+ command.iSearchBackward();
+}, 'Incremental search backward', true);
+
+key.setEditKey(['C-x', 'h'], function (ev) {
+ command.selectAll(ev);
+}, 'Select whole text', true);
+
+key.setEditKey(['C-x', 'r', 'd'], function (ev, arg) {
+ command.replaceRectangle(ev.originalTarget, "", false, !arg);
+}, 'Delete text in the region-rectangle', true);
+
+key.setEditKey(['C-x', 'r', 't'], function (ev) {
+ prompt.read("String rectangle: ", function (aStr, aInput) {
+ command.replaceRectangle(aInput, aStr);
+ },
+ ev.originalTarget);
+}, 'Replace text in the region-rectangle with user inputted string', true);
+
+key.setEditKey(['C-x', 'r', 'o'], function (ev) {
+ command.openRectangle(ev.originalTarget);
+}, 'Blank out the region-rectangle, shifting text right', true);
+
+key.setEditKey(['C-x', 'r', 'k'], function (ev, arg) {
+ command.kill.buffer = command.killRectangle(ev.originalTarget, !arg);
+}, 'Delete the region-rectangle and save it as the last killed one', true);
+
+key.setEditKey(['C-x', 'r', 'y'], function (ev) {
+ command.yankRectangle(ev.originalTarget, command.kill.buffer);
+}, 'Yank the last killed rectangle with upper left corner at point', true);
+
+key.setEditKey(['C-x', 'C-k'], function (ev) {
+ goDoCommand("cmd_copy");
+ goDoCommand("cmd_delete");
+ command.resetMark(ev);
+}, 'Cut current region', true);
+
+key.setEditKey([['C-/'], ['C-_']], function (ev) {
+ display.echoStatusBar("Undo!", 2000);
+ goDoCommand("cmd_undo");
+}, 'Undo');
+
+key.setEditKey([['C-SPC'], ['C-@']], function (ev) {
+ command.setMark(ev);
+}, 'Set the mark', true);
+
+key.setEditKey('C-o', function (ev) {
+ command.openLine(ev);
+}, 'Open line');
+
+key.setEditKey('C-\\', function (ev) {
+ display.echoStatusBar("Redo!", 2000);
+ goDoCommand("cmd_redo");
+}, 'Redo');
+
+key.setEditKey('C-a', function (ev) {
+ command.beginLine(ev);
+}, 'Beginning of the line');
+
+key.setEditKey('C-e', function (ev) {
+ command.endLine(ev);
+}, 'End of the line');
+
+key.setEditKey('C-f', function (ev) {
+ command.nextChar(ev);
+}, 'Forward char');
+
+key.setEditKey('C-b', function (ev) {
+ command.previousChar(ev);
+}, 'Backward char');
+
+key.setEditKey('M-f', function (ev) {
+ command.forwardWord(ev);
+}, 'Next word');
+
+key.setEditKey('M-b', function (ev) {
+ command.backwardWord(ev);
+}, 'Previous word');
+
+key.setEditKey('C-n', function (ev) {
+ command.nextLine(ev);
+}, 'Next line');
+
+key.setEditKey('C-p', function (ev) {
+ command.previousLine(ev);
+}, 'Previous line');
+
+key.setEditKey('C-v', function (ev) {
+ command.pageDown(ev);
+}, 'Page down');
+
+key.setEditKey('M-v', function (ev) {
+ command.pageUp(ev);
+}, 'Page up');
+
+key.setEditKey('M-<', function (ev) {
+ command.moveTop(ev);
+}, 'Beginning of the text area');
+
+key.setEditKey('M->', function (ev) {
+ command.moveBottom(ev);
+}, 'End of the text area');
+
+key.setEditKey('C-d', function (ev) {
+ goDoCommand("cmd_deleteCharForward");
+}, 'Delete forward char');
+
+key.setEditKey('C-h', function (ev) {
+ goDoCommand("cmd_deleteCharBackward");
+}, 'Delete backward char');
+
+key.setEditKey('M-d', function (ev) {
+ command.deleteForwardWord(ev);
+}, 'Delete forward word');
+
+key.setEditKey([['C-w'], ['M-<delete>']], function (ev) {
+ command.deleteBackwardWord(ev);
+}, 'Delete backward word');
+
+key.setEditKey('M-u', function (ev, arg) {
+ command.wordCommand(ev, arg, command.upcaseForwardWord, command.upcaseBackwardWord);
+}, 'Convert following word to upper case');
+
+key.setEditKey('M-l', function (ev, arg) {
+ command.wordCommand(ev, arg, command.downcaseForwardWord, command.downcaseBackwardWord);
+}, 'Convert following word to lower case');
+
+key.setEditKey('M-c', function (ev, arg) {
+ command.wordCommand(ev, arg, command.capitalizeForwardWord, command.capitalizeBackwardWord);
+}, 'Capitalize the following word');
+
+key.setEditKey('C-k', function (ev) {
+ command.killLine(ev);
+}, 'Kill the rest of the line');
+
+key.setEditKey('C-y', command.yank, 'Paste (Yank)');
+
+key.setEditKey('M-y', command.yankPop, 'Paste pop (Yank pop)', true);
+
+key.setEditKey('C-M-y', function (ev) {
+ if (!command.kill.ring.length)
+ return;
+
+ let ct = command.getClipboardText();
+ if (!command.kill.ring.length || ct != command.kill.ring[0])
+ command.pushKillRing(ct);
+
+ prompt.selector(
+ {
+ message: "Paste:",
+ collection: command.kill.ring,
+ callback: function (i) { if (i >= 0) key.insertText(command.kill.ring[i]); }
+ }
+ );
+}, 'Show kill-ring and select text to paste', true);
+
+key.setEditKey('M-n', function (ev) {
+ command.walkInputElement(command.elementsRetrieverTextarea, true, true);
+}, 'Focus to the next text area');
+
+key.setEditKey('M-p', function (ev) {
+ command.walkInputElement(command.elementsRetrieverTextarea, false, true);
+}, 'Focus to the previous text area');
+
+key.setCaretKey([['C-a'], ['^']], function (ev) {
+ ev.target.ksMarked ? goDoCommand("cmd_selectBeginLine") : goDoCommand("cmd_beginLine");
+}, 'Move caret to the beginning of the line');
+
+key.setCaretKey([['C-e'], ['$'], ['M->'], ['G']], function (ev) {
+ ev.target.ksMarked ? goDoCommand("cmd_selectEndLine") : goDoCommand("cmd_endLine");
+}, 'Move caret to the end of the line');
+
+key.setCaretKey([['C-n'], ['j']], function (ev) {
+ ev.target.ksMarked ? goDoCommand("cmd_selectLineNext") : goDoCommand("cmd_scrollLineDown");
+}, 'Move caret to the next line');
+
+key.setCaretKey([['C-p'], ['k']], function (ev) {
+ ev.target.ksMarked ? goDoCommand("cmd_selectLinePrevious") : goDoCommand("cmd_scrollLineUp");
+}, 'Move caret to the previous line');
+
+key.setCaretKey([['C-f'], ['l']], function (ev) {
+ ev.target.ksMarked ? goDoCommand("cmd_selectCharNext") : goDoCommand("cmd_scrollRight");
+}, 'Move caret to the right');
+
+key.setCaretKey([['C-b'], ['h'], ['C-h']], function (ev) {
+ ev.target.ksMarked ? goDoCommand("cmd_selectCharPrevious") : goDoCommand("cmd_scrollLeft");
+}, 'Move caret to the left');
+
+key.setCaretKey([['M-f'], ['w']], function (ev) {
+ ev.target.ksMarked ? goDoCommand("cmd_selectWordNext") : goDoCommand("cmd_wordNext");
+}, 'Move caret to the right by word');
+
+key.setCaretKey([['M-b'], ['W']], function (ev) {
+ ev.target.ksMarked ? goDoCommand("cmd_selectWordPrevious") : goDoCommand("cmd_wordPrevious");
+}, 'Move caret to the left by word');
+
+key.setCaretKey([['C-v'], ['SPC']], function (ev) {
+ ev.target.ksMarked ? goDoCommand("cmd_selectPageNext") : goDoCommand("cmd_movePageDown");
+}, 'Move caret down by page');
+
+key.setCaretKey([['M-v'], ['b']], function (ev) {
+ ev.target.ksMarked ? goDoCommand("cmd_selectPagePrevious") : goDoCommand("cmd_movePageUp");
+}, 'Move caret up by page');
+
+key.setCaretKey([['M-<'], ['g']], function (ev) {
+ ev.target.ksMarked ? goDoCommand("cmd_selectTop") : goDoCommand("cmd_scrollTop");
+}, 'Move caret to the top of the page');
+
+key.setCaretKey('J', function (ev) {
+ util.getSelectionController().scrollLine(true);
+}, 'Scroll line down');
+
+key.setCaretKey('K', function (ev) {
+ util.getSelectionController().scrollLine(false);
+}, 'Scroll line up');
+
+key.setCaretKey(',', function (ev) {
+ util.getSelectionController().scrollHorizontal(true);
+ goDoCommand("cmd_scrollLeft");
+}, 'Scroll left');
+
+key.setCaretKey('.', function (ev) {
+ goDoCommand("cmd_scrollRight");
+ util.getSelectionController().scrollHorizontal(false);
+}, 'Scroll right');
+
+key.setCaretKey('z', function (ev) {
+ command.recenter(ev);
+}, 'Scroll to the cursor position');
+
+key.setCaretKey([['C-SPC'], ['C-@']], function (ev) {
+ command.setMark(ev);
+}, 'Set the mark', true);
+
+key.setCaretKey(':', function (ev, arg) {
+ shell.input(null, arg);
+}, 'List and execute commands', true);
+
+key.setCaretKey('R', function (ev) {
+ BrowserReload();
+}, 'Reload the page', true);
+
+key.setCaretKey('B', function (ev) {
+ BrowserBack();
+}, 'Back');
+
+key.setCaretKey('F', function (ev) {
+ BrowserForward();
+}, 'Forward');
+
+key.setCaretKey(['C-x', 'h'], function (ev) {
+ goDoCommand("cmd_selectAll");
+}, 'Select all', true);
+
+key.setCaretKey('f', function (ev) {
+ command.focusElement(command.elementsRetrieverTextarea, 0);
+}, 'Focus to the first textarea', true);
+
+key.setCaretKey('M-p', function (ev) {
+ command.walkInputElement(command.elementsRetrieverButton, true, true);
+}, 'Focus to the next button');
+
+key.setCaretKey('M-n', function (ev) {
+ command.walkInputElement(command.elementsRetrieverButton, false, true);
+}, 'Focus to the previous button');
+
+key.setViewKey('o', function (ev) {
+ getBrowser().mTabContainer.advanceSelectedTab(1, true);
+}, 'Select next tab');
+
+key.setViewKey('i', function (ev) {
+ getBrowser().mTabContainer.advanceSelectedTab(-1, true);
+}, 'Select previous tab');
diff --git a/archive/.local/share/gnome-shell/extensions/steal-my-focus@kagesenshi.org/extension.js b/archive/.local/share/gnome-shell/extensions/steal-my-focus@kagesenshi.org/extension.js
new file mode 100644
index 00000000..1127b3a0
--- /dev/null
+++ b/archive/.local/share/gnome-shell/extensions/steal-my-focus@kagesenshi.org/extension.js
@@ -0,0 +1,44 @@
+const Main = imports.ui.main;
+const WindowAttentionHandler = imports.ui.windowAttentionHandler;
+const Shell = imports.gi.Shell;
+const Lang = imports.lang;
+
+function StealMyFocus() {
+ this._init();
+ this.blacklist = ["Skype"];
+}
+
+StealMyFocus.prototype = {
+ _init : function() {
+ this._tracker = Shell.WindowTracker.get_default();
+ this._handlerid = global.display.connect('window-demands-attention', Lang.bind(this, this._onWindowDemandsAttention));
+ },
+
+ _onWindowDemandsAttention: function(display, window) {
+ for (var i = 0; i < this.blacklist.length; i++) {
+ var name = this.blacklist[i].toLowerCase();
+ if (window.title.toLowerCase().indexOf(name) != -1) {
+ // app in blacklist, return and do nothing
+ return;
+ }
+ }
+ Main.activateWindow(window);
+ },
+
+ destroy: function () {
+ global.display.disconnect(this._handlerid);
+ }
+}
+
+let stealmyfocus;
+
+function init() {
+}
+
+function enable() {
+ stealmyfocus = new StealMyFocus();
+}
+
+function disable() {
+ stealmyfocus.destroy();
+}
diff --git a/archive/.local/share/gnome-shell/extensions/steal-my-focus@kagesenshi.org/metadata.json b/archive/.local/share/gnome-shell/extensions/steal-my-focus@kagesenshi.org/metadata.json
new file mode 100644
index 00000000..b45a0ac1
--- /dev/null
+++ b/archive/.local/share/gnome-shell/extensions/steal-my-focus@kagesenshi.org/metadata.json
@@ -0,0 +1,20 @@
+{
+ "_generated": "Generated by SweetTooth, do not edit",
+ "description": "Let windows steal focus. Removes the annoying 'Window is ready' notification and focus window immediately",
+ "name": "Steal My Focus",
+ "original-authors": [
+ "kagesenshi.87@gmail.com"
+ ],
+ "shell-version": [
+ "3.2",
+ "3.4",
+ "3.5.2",
+ "3.6",
+ "3.8",
+ "3.10",
+ "3.10.*"
+ ],
+ "url": "https://github.com/kagesenshi/gnome-shell-extension-stealmyfocus",
+ "uuid": "steal-my-focus@kagesenshi.org",
+ "version": 1
+}
diff --git a/archive/.mairixrc b/archive/.mairixrc
new file mode 100644
index 00000000..40a84219
--- /dev/null
+++ b/archive/.mairixrc
@@ -0,0 +1,10 @@
+base=$HOME
+maildir=.fmail/*
+mbox=lib/annex/doc/mail/*
+mformat=maildir
+mfolder=local/mairixresults
+database=~/local/mairixdb
+omit=spam*
+omit=*Junk Mail*
+omit=*Trash*
+follow_mbox_symlinks
diff --git a/archive/.msmtprc b/archive/.msmtprc
new file mode 100644
index 00000000..683baba3
--- /dev/null
+++ b/archive/.msmtprc
@@ -0,0 +1,34 @@
+# -*- mode: conf-space; -*-
+
+# ---- defaults
+
+defaults
+auth on
+tls on
+tls_starttls on
+tls_trust_file /etc/ssl/certs/ca-certificates.crt
+logfile ~/local/msmtp.log
+
+# ---- FastMail
+
+account fastmail
+host mail.messagingengine.com
+port 587
+auth on
+from spwhitton@spwhitton.name
+user spwhitton@fastmail.com
+passwordeval cat ~/local/auth/fmailsyncpass
+
+# ---- CatMail
+
+account catmail
+host smtp.gmail.com
+port 587
+auth on
+from spwhitton@email.arizona.edu
+user spwhitton@email.arizona.edu
+passwordeval cat ~/local/auth/catmailsmtppass
+
+# ---- defaults again
+
+account default : fastmail
diff --git a/archive/.offlineimaprc b/archive/.offlineimaprc
new file mode 100644
index 00000000..600daf63
--- /dev/null
+++ b/archive/.offlineimaprc
@@ -0,0 +1,38 @@
+# -*- mode: conf-unix; -*-
+
+[general]
+accounts = SDF
+maxsyncaccounts = 1
+pythonfile = ~/bin/offlineimap.py
+# metadata = ~/lib/offlineimap
+
+[mbnames]
+enabled = yes
+filename = ~/.mutt/mailboxes
+header = "mailboxes "
+#peritem = "+%(accountname)s/%(foldername)s"
+peritem = "+%(foldername)s"
+sep = " "
+footer = "\n"
+
+[Account SDF]
+localrepository = Local
+remoterepository = ma
+status_backend = sqlite
+# autorefresh = 15
+# quick = 5
+postsynchook = mairix -F -Q
+
+[Repository Local]
+type = Maildir
+localfolders = ~/.offlinemail
+
+[Repository ma]
+type = IMAP
+keepalive = 60
+remotehost = ma.sdf.org
+remoteuser = spw
+subscribedonly = yes
+ssl = yes
+cert_fingerprint = 69:8C:4A:3F:E5:EA:EE:2D:2D:4A:41:50:BB:4A:1D:8D
+folderfilter = lambda foldername: not re.search('(^procmail.log$)', foldername)
diff --git a/archive/.procmailrc b/archive/.procmailrc
new file mode 100644
index 00000000..1937954f
--- /dev/null
+++ b/archive/.procmailrc
@@ -0,0 +1,30 @@
+MAILDIR=/meta/s/spw/mail
+DEFAULT=/meta/mail/spw
+#LOGFILE=/meta/s/spw/tmp/.procmail.log
+LOGFILE=/dev/null
+SHELL=/bin/sh
+PATH=/usr/pkg/bin:/usr/local/bin:/usr/bin:/bin
+
+# spam
+:0:
+* ^X-Spam-Flag: YES
+$MAILDIR/spam
+
+# more spam
+:0:
+* ^From.*<newletters@slacker.com>
+$MAILDIR/spam
+
+# moar
+:0:
+* ^Subject.*SEAnews.*
+$MAILDIR/spam
+
+:0:
+* ^Subject.*BitFolk VPS 'seaotter' data transfer report
+$MAILDIR/archive
+
+# mailing lists I archive but don't read
+:0:
+* ^List-Id.*<wikimedia-l.lists.wikimedia.org>|^List-Id.*<wikimania-l.lists.wikimedia.org>|^List-Id.*<wikitech-l.lists.wikimedia.org>|^List-Id.*<mediawiki-announce.lists.wikimedia.org>|^List-Id.*<toolserver-l.lists.wikimedia.org>|^List-Id.*<daily-article-l.lists.wikimedia.org>|^List-Id.*<unblock-en-l.lists.wikimedia.org>|^List-Id.*<meta-l_lists.wikipedia.be.lists.wikipedia.be>|^List-Id.*amidaniel.com>|^List-Id.*<wikimediameta-l.lists.wikimedia.org>|^List-Id.*<wikiquality-l.lists.wikimedia.org>|^List-Id.*<wmfcc-l.lists.wikimedia.org>|^List-Id.*<internal-l.lists.wikimedia.org>|^List-Id.*<mediation-en-l.lists.wikimedia.org>|^List-Id.*<otrs-en-l.lists.wikimedia.org>|^List-Id.*<toolserver-announce.lists.wikimedia.org>|^List-Id.*<comproj.lists.wikimedia.org>|^List-Id.*<wikimediauk-l.lists.wikimedia.org>|^List-Id.*<irc-contacts.lists.wikimedia.org>|^List-Id.*<wikipedia-l.lists.wikimedia.org>|^List-Id.*<wikien-l.lists.wikimedia.org>|^List-Id.*<editors_wikizine.org.wikizine.org>|^List-Id.*<announce-l.lists.wikimedia.org>
+$MAILDIR/oldlists
diff --git a/archive/.recoll/recoll.conf b/archive/.recoll/recoll.conf
new file mode 100644
index 00000000..ea67b0b9
--- /dev/null
+++ b/archive/.recoll/recoll.conf
@@ -0,0 +1,11 @@
+# The system-wide configuration files for recoll are located in:
+# /usr/share/recoll/examples
+# The default configuration files are commented, you should take a look
+# at them for an explanation of what can be set (you could also take a look
+# at the manual instead).
+# Values set in this file will override the system-wide values for the file
+# with the same name in the central directory. The syntax for setting
+# values is identical.
+
+skippedPaths = /media
+dbdir = /home/swhitton/.cache/recoll
diff --git a/archive/.ssh/host.d/spw_ma.sdf.org b/archive/.ssh/host.d/spw_ma.sdf.org
new file mode 100644
index 00000000..ffb60ffe
--- /dev/null
+++ b/archive/.ssh/host.d/spw_ma.sdf.org
@@ -0,0 +1,9 @@
+swhitton@artemis-2015-08-15
+swhitton@artemis-seven
+swhitton@quentin
+root@zephyr
+root@artemis
+root@demeter
+duply@artemis
+duply@zephyr
+swhitton@various
diff --git a/archive/.ssh/host.d/swhitton_artemis.silentflame.com b/archive/.ssh/host.d/swhitton_artemis.silentflame.com
new file mode 100644
index 00000000..9a7f7867
--- /dev/null
+++ b/archive/.ssh/host.d/swhitton_artemis.silentflame.com
@@ -0,0 +1,3 @@
+swhitton@artemis-2015-08-15
+swhitton@dionysus
+spwhitton@dionysus
diff --git a/archive/.ssh/host.d/swhitton_demeter.silentflame.com b/archive/.ssh/host.d/swhitton_demeter.silentflame.com
new file mode 100644
index 00000000..a0b716d3
--- /dev/null
+++ b/archive/.ssh/host.d/swhitton_demeter.silentflame.com
@@ -0,0 +1 @@
+swhitton@artemis-2015-08-15
diff --git a/archive/.xbindkeys.noauto b/archive/.xbindkeys.noauto
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/archive/.xbindkeys.noauto
diff --git a/archive/.xbindkeysrc b/archive/.xbindkeysrc
new file mode 100644
index 00000000..f3914ca6
--- /dev/null
+++ b/archive/.xbindkeysrc
@@ -0,0 +1,37 @@
+keystate_numlock = enable
+
+"mpc toggle"
+ Mod2 + XF86AudioPlay
+
+"mpc next"
+ Mod2 + XF86AudioNext
+
+"mpc prev"
+ Mod2 + XF86AudioPrev
+
+"mpc stop"
+ Mod2 + XF86AudioStop
+
+# "xlaunch emacs"
+# F9
+
+# "xlaunch term"
+# F10
+
+# "xlaunch www"
+# F12
+
+# "xlaunch ma"
+# Shift + F11
+
+# "xmousetidy"
+# Shift + F10
+
+# "xscreensaver-command -lock"
+# Mod4 + l
+
+# "sonata --toggle"
+# Shift + F9
+
+"thunar"
+ XF86HomePage
diff --git a/archive/.xmonad/xmonad.hs b/archive/.xmonad/xmonad.hs
new file mode 100644
index 00000000..b8a2b812
--- /dev/null
+++ b/archive/.xmonad/xmonad.hs
@@ -0,0 +1,181 @@
+{-
+
+ Sean's second attempt at an XMonad configuration, after having learnt some Haskell
+
+ Many ideas from Joey Hess's config
+
+-}
+
+import XMonad
+import XMonad.Config.Xfce
+import qualified XMonad.StackSet as W
+import XMonad.Util.EZConfig (additionalKeysP)
+
+import XMonad.Actions.CycleWS (toggleWS)
+import XMonad.Actions.RotSlaves
+import XMonad.Hooks.ManageDocks
+import XMonad.Hooks.ManageHelpers
+
+import XMonad.Layout.Dishes
+-- import XMonad.Layout.FixedColumn
+import XMonad.Layout.Grid
+import XMonad.Layout.LayoutHints
+import XMonad.Layout.LimitWindows
+-- import XMonad.Layout.Magnifier
+import XMonad.Layout.Maximize
+import XMonad.Layout.NoBorders
+import XMonad.Layout.PerWorkspace
+import XMonad.Layout.Tabbed
+-- import XMonad.Layout.ResizeScreen
+
+main = xmonad myConfig
+
+myConfig = xfceConfig
+
+ { terminal = myTerm
+ , normalBorderColor = "#656555"
+ , focusedBorderColor = "#94BFF3"
+ , borderWidth = 1
+ , modMask = myMod
+ , workspaces = myWorkspaces
+ , manageHook = myManageHook
+ <+> manageHook xfceConfig
+ -- A more nuanced version of
+ -- XMonad.Hooks.InsertPosition: avoid the
+ -- master for non-dialogs, and ensure
+ -- dialogs appear on top of everything else.
+ <+> (not <$> isDialog --> doF avoidMaster)
+ <+> (isDialog --> doF W.shiftMaster)
+ , layoutHook = myLayoutHook
+
+ -- , startupHook = docksStartupHook
+ , handleEventHook = docksEventHook
+
+ } `additionalKeysP` myKeys
+
+-- basic preferences
+
+myMod = mod4Mask
+myTerm = "urxvtcd"
+myEditor = "emacscd"
+myBrowser = "firefox"
+myWorkspaces = [ "one"
+ , "two"
+ , "three"
+ , "four"
+ , "five"
+ , "six"
+ , "www"
+ , "comm"
+ , "view"
+ , "tail"
+ ]
+
+-- key bindings
+
+myKeys = [ ("M4-/", spawn "xmousetidy")
+
+ -- launchers
+ , ("M4-g t" -- see urxvt-bell-command(1)
+ , spawn "urxvtcd --bell-command \"aplay /home/swhitton/lib/annex/doc/sounds/beep.wav\" -e ii")
+ , ("M4-S-;", spawn myEditor)
+ , ("M4-g w", spawn myBrowser)
+ , ("M4-g c", spawn $ inMyTerm "ncmpcpp") -- 'c' for chaones
+ , ("M4-g v", spawn $ inMyTerm "alsamixer")
+ , ("M4-g j", spawn "thunar")
+
+ -- special keyboard keys
+ , ("<XF86Tools>", spawn $ inMyTerm "ncmpcpp")
+ , ("<XF86HomePage>", spawn "thunar")
+
+ -- window & workspace management
+ , ("M4-'", withFocused (sendMessage . maximizeRestore))
+ , ("M4-;", toggleWS)
+ , ("M4-S-i", kill)
+ , ("M1-<Tab>", rotSlavesDown)
+ , ("M1-S-<Tab>", rotSlavesUp)
+
+ -- tenth workspace
+ , ("M4-0", windows $ W.greedyView "tail")
+ , ("M4-S-0", windows $ W.shift "tail")
+
+ -- When locking the screen, also clear out my SSH key.
+ -- Otherwise it lasts until I log off. See GNOME bugzilla
+ -- bug #525574. Note that PGP keys may be set to timeout,
+ -- but SSH keys can't be.
+ , ("M4-S-l", spawn "sh -c 'ssh-add -D && xscreensaver-command -lock'")
+
+ -- Since shutting artemis' lid to suspend crashes X and
+ -- using the Xfce menu option to suspend fails to lock the
+ -- screen, let's just make a binding..
+ , ("M4-<F4>", spawn "sensible-suspend")
+ , ("M4-S-<F4>", spawn $ inMyTerm "fmr-sync-suspend")
+
+ -- TODO restore M4-l shrink keybinding to M4-S-l or something
+ ]
+
+-- hooks
+
+myFloatClasses = [ "Gimp"
+ , "feh"
+ , "MPlayer"
+ , "Xfrun4"
+ ]
+
+myManageHook = composeOne $
+ [ checkDock -?> doIgnore
+ , className =? "Xfce4-notifyd" -?> doIgnore
+ , isDialog -?> doFloat
+ , className =? "Firefox" -?> doShift "www"
+ , className =? "LibreOffice 5.0" -?> doShift "view"
+ , className =? "vlc" -?> doShift "view"
+ , className =? "Evince" -?> doShift "view"
+ , title =? "Dominion" -?> doShift "view"
+ , title =? "Messenger" -?> doShift "view"
+ , title =? "ii" -?> doShift "comm"
+ ] ++ [className =? c -?> doFloat | c <- myFloatClasses]
+
+myLayoutHook = maximize $
+ smartBorders $
+ layoutHintsToCenter $
+ onWorkspace "www" myWebLayout $
+ onWorkspace "comm" myWebLayout $
+ onWorkspace "tail" (myDish ||| Full) $
+ onWorkspace "view" myViewLayout $
+ -- default for other workspaces:
+ avoidStruts $ myEditing ||| maximize Grid ||| Full
+
+-- custom layouts
+
+-- Set the fixed column layout to 90 columns to allow for 88 columns
+-- of quoted e-mail text in mutt and the '> ' prefix. Then the
+-- magnification setting of 1.31 allows slave mutt windows to display
+-- their 90 columns properly on artemis' 1280x screen.
+
+myEditing = limitWindows 7 $
+ -- small screens: magnifiercz' 1.31 $
+ -- alt: FixedColumn 1 20 90 10
+ Tall 1 0.03 0.55
+
+-- myReadWriting = resizeHorizontal 600 $
+-- resizeHorizontalRight 600 $
+-- limitWindows 3 $
+-- Dishes 1 (1/6)
+
+myWebLayout = avoidStrutsOn [] $ Mirror $ Tall 1 0.03 0.7
+
+-- logs, compiles, tails etc.
+myDish = avoidStruts $ limitWindows 5 $ Dishes 1 (1/5)
+
+myViewLayout = avoidStrutsOn [] $
+ tabbed shrinkText defaultTheme { fontName = "xft:terminus:size=12" }
+
+-- helper functions
+
+inMyTerm :: String -> String
+inMyTerm cmd = unwords [myTerm, "-e", cmd]
+
+avoidMaster :: W.StackSet i l a s sd -> W.StackSet i l a s sd
+avoidMaster = W.modify' $ \c -> case c of
+ W.Stack t [] (r:rs) -> W.Stack t [r] rs
+ _ -> c
diff --git a/archive/.xsessionrc b/archive/.xsessionrc
new file mode 100755
index 00000000..10fbc75e
--- /dev/null
+++ b/archive/.xsessionrc
@@ -0,0 +1,13 @@
+#umask 022
+
+# --- $PATH
+
+if [ -d "$HOME/bin" ] ; then
+ PATH="$HOME/bin:$PATH"
+ export PATH
+fi
+
+if [ -d "$HOME/local/bin" ] ; then
+ PATH="$HOME/local/bin:$PATH"
+ export PATH
+fi
diff --git a/archive/.zsh/96-vcs_info-cdpath.zsh b/archive/.zsh/96-vcs_info-cdpath.zsh
new file mode 100644
index 00000000..ef723e30
--- /dev/null
+++ b/archive/.zsh/96-vcs_info-cdpath.zsh
@@ -0,0 +1,60 @@
+# a lot of vcs_info related stuff happened here
+autoload -U is-at-least
+is-at-least 4.3.12 || return
+
+# this hook adds the base path of a repository to the cdpath, for as long as
+# the pwd stays inside the repository.
+#
+# plays nice with vcs_info-lofi.
+
+typeset -H repocdpath_dir
+
++vi-repocdpath () {
+
+ # cases: no known base dir
+ if [[ -z $hook_com[base] ]]; then
+
+ # any old repocdpath_dir? this should be handled by chpwd hook as well, just making sure.
+ if [[ -n $repocdpath_dir ]]; then
+cdpath=( ${cdpath:#$repocdpath_dir} )
+ repocdpath_dir=""
+ fi
+
+ # nothing to do here
+ return
+fi
+
+ # at this point, we know there is a base dir. if it's the same, don't bother.
+ [[ $hook_com[base] == $repocdpath_dir ]] && return
+
+ # otherwise, is it a different one? unset the old one, then.
+ if [[ $hook_com[base] != $repocdpath_dir ]]; then
+cdpath=( ${cdpath:#$repocdpath_dir} )
+ fi
+
+ # and set the new one.
+ cdpath+=( $hook_com[base] )
+ repocdpath_dir=$hook_com[base]
+
+ # just sniffing dat base path, don't mind me. :)
+ return 0
+
+}
+
+# remove repo from cdpath when we leave
+repocdpath_chpwd () {
+ # new pwd no longer subdir of repocdpath_dir?
+ if ! [[ $PWD == $repocdpath_dir* ]]; then
+ # remove from cdpath, then.
+ cdpath=( ${cdpath:#$repocdpath_dir} )
+ repocdpath_dir=""
+ fi
+}
+
+autoload -U add-zsh-hook
+add-zsh-hook chpwd repocdpath_chpwd
+
+# add to hooks
+autoload -U vcs_info_hookadd
+vcs_info_hookadd set-message repocdpath
+vcs_info_hookadd set-lofi-message repocdpath
diff --git a/archive/.zsh/functions/_git-annex b/archive/.zsh/functions/_git-annex
new file mode 100644
index 00000000..e90d98a5
--- /dev/null
+++ b/archive/.zsh/functions/_git-annex
@@ -0,0 +1,196 @@
+#compdef git-annex
+#description:managing files while ignoring their content
+
+# ZSH Completion for git-annex (http://git-annex.branchable.com/)
+#
+# This completion was written for git-annex version: 3.20111122~bpo60+2
+#
+# Note that this completion is still very much early alpha work in progress.
+#
+# This completion depends on Python for a jason parser, sorry. Unfortunately
+# there is no such thing in zsh (yet).
+#
+# Skeleton implementation by Frank Terbeck <ft@bewatermyfriend.org>
+# Blanks filled in by Valentin Haenel <valentin.haenel@gmx.de>
+# Licence: WTFPL (http://sam.zoy.org/wtfpl/)
+#
+# To use this completion drop it somewhere in you $fpath, e.g.:
+#
+# $ git clone $CLONEURL
+# $ fpath+=$PWD/git-annex-zsh-completion
+# $ compinit git-annex
+#
+# TODO
+# ----
+#
+# * 'git annex add' to only complete files not in annex
+#
+
+local state line context
+local -A opt_args
+
+__annex_backend(){
+ local -a backends
+ backends=($(git annex status --fast --json |
+ python -c "
+import sys
+import json
+parsed = json.loads(sys.stdin.read())
+print ' '.join(parsed['supported backends'])"))
+ _describe -t backends backend backends
+}
+
+__annex_remotes(){
+
+ local -a remotes
+ remotes=($(git remote))
+ _describe -t remotes 'configured remote' remotes
+
+}
+
+__annex_repository(){
+
+ local -a currents
+ currents=(\.)
+ _describe -t currents current currents
+
+ __annex_remotes
+
+ local -a descriptions
+ descriptions=($(git annex status --fast --json |
+ python -c "
+import sys
+import json
+parsed = json.loads(sys.stdin.read())
+descriptions = []
+for repo in (parsed['trusted repositories']
+ + parsed['semitrusted repositories']
+ + parsed['untrusted repositories']):
+ descriptions.append(repo['description'])
+print ' '.join(descriptions)"))
+ _describe -t descriptions description descriptions
+
+ local -a uuids
+ uuids=($(git annex status --fast --json |
+ python -c "
+import sys
+import json
+parsed = json.loads(sys.stdin.read())
+uuids = []
+for repo in (parsed['trusted repositories']
+ + parsed['semitrusted repositories']
+ + parsed['untrusted repositories']):
+ uuids.append(repo['uuid'])
+print ' '.join(uuids)"))
+ _describe -t uuids uuid uuids
+}
+
+local -a arguments
+arguments=(
+ '--and[both previous and next option match]'
+ '(-a --auto)'{-a,--auto}'[automatic mode]'
+ '(-d --debug)'{-d,--debug}'[show debug messages]'
+ '(-x --exclude=)'{-x,--exclude=}'[skips files matching the globbing pattern]'
+ '(-b --backend=)'{-b,--backend=}'[specifies which key-value backend to use]::backend:__annex_backend'
+ '-c name=-[override git configuration settings]'
+ '(-C --copies=)'{-C,--copies=}'[skip files with fewer copies]'
+ '--force[force unsafe actions]'
+ '(-f --from=)'{-f,--from=}'[copy/move from repository]:repository:__annex_remotes'
+ '(-F --fast)'{-F,--fast}'[less expensive version of some commands]'
+ '(-i --in=)'{-i,--in=}'[skip files not present in a remote]:repository:__annex_repository'
+ '(-j --json)'{-j,--json}'[generate machine readable JSON]'
+ '(-k --key=)'{-k,--key=}'[specifies a key to operate on]'
+ '(-N --numcopies=)'{-N,--numcopies=}'[overrides annex.numcopies]'
+ '--not[negate next option]'
+ '--or[either previous or next option match]'
+ '--print0[output filenames terminated with nulls, for use with xargs -0]'
+ '(-t --to=)'{-t,--to=}'[copy/move to repository]:repository:__annex_remotes'
+ '--semitrust=-[override trust settings]:repository:__annex_repository'
+ '--trust=-[override trust settings]:repository:__annex_repository'
+ '--untrust=-[override trust settings]:repository:__annex_repository'
+ '--verbose[verbose display]'
+ '--quiet'
+ '-([open group of options]'
+ '-)[close group of options]'
+ ': :->command'
+ '*:: :->subcmd'
+)
+
+_arguments -C $arguments
+
+case $state in
+(command)
+ local -a common
+ local -a setup
+ local -a maintenance
+ local -a query
+ local -a utility
+ local -a plumbing
+ common=(
+ add:'adds files in the path to the annex'
+ get:'makes the content of annexed files available in this repository'
+ drop:'drops the content of annexed files from this repository'
+ move:'move files from/to repositories'
+ copy:'copy from/to repositories'
+ unlock:'unlock a file for editing'
+ edit:'alias for the unlock command'
+ lock:'lock file again after editing'
+ sync:'synchronise with one or more remotes'
+ addurl:'downloads each url to a file, which is added to the annex.'
+ )
+ setup=(
+ init:'initialize an annex'
+ describe:'changes the description of a repository'
+ initremote:'set up a special remote'
+ trust:'records that a repository is trusted to not unexpectedly lose content'
+ untrust:'records that a repository is not trusted and could lose content at any time'
+ semitrust:'returns a repository to the default semi trusted state'
+ )
+ maintenance=(
+ fsck:'check annex consistency'
+ unused:'check for data that has no symlinks pointing to it'
+ dropunused:'drop unused data, as reported by unused'
+ merge:'merge the git-annex branches of remotes'
+ fix:'fix up symlinks that have become broken'
+ upgrade:'upgrades the repository to current layout'
+ )
+ query=(
+ version:'print version and repository information'
+ find:'search for present/missing files in current annex'
+ whereis:'show all repositories that contain a file'
+ status:'displays some statistics and other information'
+ map:'generate a visual map of repositories'
+ )
+ utility=(
+ migrate:'migrate annexd files to new backend'
+ unannex:'undo an accidental git annex add command'
+ uninit:'stop using git-annex entirely'
+ )
+ plumbing=(
+ pre-commit:'fixes up symlinks that are staged as part of a commit'
+ reinject:'moves a src file into the annex as the content of the dest file.'
+ dropkey:'drop annexd data for specified keys'
+ fromkey:'set file to link to given key'
+ )
+ _describe -t common_commands "common commands" common
+ _describe -t setup_commands "setup commands" setup
+ _describe -t maintenance_commands "maintenance commands" maintenance
+ _describe -t query_commands "query commands" query
+ _describe -t utility_commands "utility commands" utility
+ _describe -t plumbing_commands "plumbing commands" plumbing
+ ;;
+(subcmd)
+ case ${line[1]} in
+ (map|status)
+ _message 'No more arguments'
+ ;;
+ (sync)
+ __annex_remotes
+ ;;
+ (*)
+ _arguments -C $arguments
+ _path_files
+ ;;
+ esac
+ ;;
+esac
diff --git a/archive/.zsh/functions/chpwd_update_git_vars b/archive/.zsh/functions/chpwd_update_git_vars
new file mode 100644
index 00000000..2cc7ffa5
--- /dev/null
+++ b/archive/.zsh/functions/chpwd_update_git_vars
@@ -0,0 +1 @@
+update_current_git_vars \ No newline at end of file
diff --git a/archive/.zsh/functions/precmd_update_git_vars b/archive/.zsh/functions/precmd_update_git_vars
new file mode 100644
index 00000000..7fa32df6
--- /dev/null
+++ b/archive/.zsh/functions/precmd_update_git_vars
@@ -0,0 +1,4 @@
+if [ -n "$__EXECUTED_GIT_COMMAND" ]; then
+ update_current_git_vars
+ unset __EXECUTED_GIT_COMMAND
+fi \ No newline at end of file
diff --git a/archive/.zsh/functions/preexec_update_git_vars b/archive/.zsh/functions/preexec_update_git_vars
new file mode 100644
index 00000000..998de211
--- /dev/null
+++ b/archive/.zsh/functions/preexec_update_git_vars
@@ -0,0 +1,5 @@
+case "$1" in
+ git*)
+ __EXECUTED_GIT_COMMAND=1
+ ;;
+esac \ No newline at end of file
diff --git a/archive/.zsh/functions/prompt_git_info b/archive/.zsh/functions/prompt_git_info
new file mode 100644
index 00000000..e1c7a9c7
--- /dev/null
+++ b/archive/.zsh/functions/prompt_git_info
@@ -0,0 +1,21 @@
+if [ -n "$__CURRENT_GIT_BRANCH" ]; then
+ local s="("
+ s+="$__CURRENT_GIT_BRANCH"
+ case "$__CURRENT_GIT_BRANCH_STATUS" in
+ ahead)
+ s+="↑"
+ ;;
+ diverged)
+ s+="↕"
+ ;;
+ behind)
+ s+="↓"
+ ;;
+ esac
+ if [ -n "$__CURRENT_GIT_BRANCH_IS_DIRTY" ]; then
+ s+="⚡"
+ fi
+ s+=")"
+
+ printf " %s%s" "%{${fg[yellow]}%}" $s
+fi
diff --git a/archive/.zsh/functions/update_current_git_vars b/archive/.zsh/functions/update_current_git_vars
new file mode 100644
index 00000000..9bb50552
--- /dev/null
+++ b/archive/.zsh/functions/update_current_git_vars
@@ -0,0 +1,29 @@
+unset __CURRENT_GIT_BRANCH
+unset __CURRENT_GIT_BRANCH_STATUS
+unset __CURRENT_GIT_BRANCH_IS_DIRTY
+
+local st="$(git status 2>/dev/null)"
+if [[ -n "$st" ]]; then
+ local -a arr
+ arr=(${(f)st})
+
+ if [[ $arr[1] =~ 'Not currently on any branch.' ]]; then
+ __CURRENT_GIT_BRANCH='no-branch'
+ else
+ __CURRENT_GIT_BRANCH="${arr[1][(w)4]}";
+ fi
+
+ if [[ $arr[2] =~ 'Your branch is' ]]; then
+ if [[ $arr[2] =~ 'ahead' ]]; then
+ __CURRENT_GIT_BRANCH_STATUS='ahead'
+ elif [[ $arr[2] =~ 'diverged' ]]; then
+ __CURRENT_GIT_BRANCH_STATUS='diverged'
+ elif [[ ! $arr[2] =~ 'up-to-date' ]]; then
+ __CURRENT_GIT_BRANCH_STATUS='behind'
+ fi
+ fi
+
+ if [[ ! $st =~ 'nothing to commit' ]]; then
+ __CURRENT_GIT_BRANCH_IS_DIRTY='1'
+ fi
+fi
diff --git a/archive/.zshrc b/archive/.zshrc
new file mode 100644
index 00000000..b37003b6
--- /dev/null
+++ b/archive/.zshrc
@@ -0,0 +1,585 @@
+# Credits for much of the following config file: tomaw,
+# <slarti@gentoo.org>, <spider@gentoo.org>, <ciaranm@gentoo.org>
+
+# --- personal settings
+
+# basic env
+source ~/.shenv
+export GPG_TTY=$(tty)
+
+# colours
+if ! [[ "$TERM" == "dumb" ]]; then
+ autoload -U colors; colors
+ export PS1="%(?..%? )%{$fg[${1:-yellow}]%}%m %{$fg[${1:-green}]%}%~ %{$fg[${1:-blue}]%}%#%{$reset_color%} "
+fi
+
+# add newer GHC to PATH if interactive shell (can't just add in .shenv
+# because xmonad needs the old one)
+# if [[ $- == *i* ]]; then
+# if [ -d "$HOME/local/stow/ghc/bin" ]; then
+# export PATH=$HOME/local/stow/ghc/bin:$PATH
+# fi
+# fi
+
+# TODO more robust way to find develacc -- perhaps drop a flagfile
+# /etc/in-develacc
+# TODO add to enter-develacc-i3 too? needed?
+if [ "$(whoami)" = "spw" \
+ -a "$(systemd-detect-virt)" = "systemd-nspawn" \
+ -a "$(hostname -d)" = "silentflame.com" ]; then
+ umask 002
+fi
+
+# --- terminals
+
+# From dev.gentoo.org/~ciaranm/configs/bashrc
+if [[ "${TERM}" == "rxvt-unicode" ]] ; then
+ export TERMTYPE="256"
+elif [[ "${TERM}" != "dumb" ]] ; then
+ export TERMTYPE="16"
+fi
+
+if [[ "${TERM}" == "rxvt-unicode" ]] && \
+ [[ ! -f /usr/share/terminfo/r/rxvt-unicode ]] && \
+ [[ ! -f ~/.terminfo/r/rxvt-unicode ]] ; then
+ export TERM=rxvt
+fi
+
+# set window title
+
+precmd() {
+ # [[ -t 1 ]] || return
+ case $TERM in
+ *xterm*|rxvt*) print -Pn "]2;%n@%m:%~\a"
+ ;;
+ # screen*) print -Pn "\"%n@%m:%~\134"
+ # ;;
+ esac
+}
+
+# --- aliases
+
+alias ls="ls -F --color=always"
+alias ll="ls -al"
+alias g="git"
+alias ga="git annex"
+alias gs="git status"
+# better: pa fax | grep
+# alias pg="ps auxxxxxxxxxxxxxxxxxxx | grep"
+alias d="emacsclient -c -n -e '(dired \".\")'"
+alias mg=$EDITOR
+alias mrs="mr -m status"
+
+alias screen="screen -U" # enable UTF-8
+alias tmux="tmux"
+alias rax="screen -URaAx"
+alias ta="tmux attach-session"
+
+alias blogdates="rdate.py-dir ~/html/blog/entries"
+alias httpdir="sudo python -m SimpleHTTPServer 80"
+alias sdfvpn="sshuttle -r ma 0/0 --dns --auto-hosts --python /usr/pkg/bin/python2.7"
+alias athvpn="sshuttle -r athena 0/0 --dns"
+alias calup="emacs -batch -l /home/swhitton/.emacs.d/init.el -eval \"(org-batch-store-agenda-views)\""
+alias dotex="texi2dvi --pdf --clean --batch"
+alias whitenoise="cvlc --quiet --loop ~/lib/annex/doc/sounds/R*.ogg"
+alias myip="dig +short myip.opendns.com @resolver1.opendns.com"
+alias mailnow="pkill mbsync ; mbsync -q fastmail && mutt -Z"
+alias mykb="setxkbmap gb; setxkbmap -option ctrl:nocaps"
+alias fixmacs="pkill -USR2 emacs"
+alias myfiles="cadaver https://myfiles.messagingengine.com/"
+alias unstow="stow -D"
+alias sid="sudo /usr/local/bin/enter-sid /bin/sh -c \"export DISPLAY=${DISPLAY}; su - swhitton\""
+alias uavpn="pkill rtorrent && sudo openconnect https://vpn.arizona.edu/ && TERM=dumb rt"
+alias loungempd="ssh TallGeese /Applications/VLC.app/Contents/MacOS/VLC -I rc --loop http://192.168.1.72:8000"
+alias sid-build-deps="sudo mk-build-deps -irt 'apt-get -o Debug::pkgProblemResolver=yes -t sid --no-install-recommends'"
+alias testing-build-deps="sudo mk-build-deps -irt 'apt-get -o Debug::pkgProblemResolver=yes -t testing --no-install-recommends'"
+alias stable-build-deps="sudo mk-build-deps -irt 'apt-get -o Debug::pkgProblemResolver=yes -t stable --no-install-recommends'"
+alias test-package-plan="schroot -d $HOME -- /bin/sh -c \"cabal --no-require-sandbox update && cd src/package-plan && perl test-packages.pl\""
+alias wnpomodoro="mplayer ~/lib/annex/doc/sounds/*pomodoro.mp3"
+alias ghc8-sbuild="sbuild --extra-repository='deb http://httpredir.debian.org/debian experimental main' --build-dep-resolver=aspcud --add-depends=\"ghc (>= 8)\""
+alias dq="dgit --quilt=gbp"
+alias qsbuild="sbuild --no-apt-update --no-apt-distupgrade --no-run-piuparts --no-run-lintian"
+alias qqsbuild="DEB_BUILD_OPTIONS=nocheck sbuild --no-apt-update --no-apt-distupgrade --no-run-piuparts --no-run-lintian --no-run-autopkgtest"
+alias b="bts --mbox show"
+alias test-reproducible="reprotest auto . -- schroot sid"
+alias dinstall="curl https://ftp-master.debian.org/dinstall.status;echo -n 'Now: ';date -u"
+alias disable-propellor="sudo rm /etc/cron.d/propellor"
+alias ls="ls --literal"
+
+# copy files into persistent part of develacc chroot, ensuring that we
+# don't give spw write access to packages
+# THIS IS NOT SAFE there is a race. file could be modified before chown.
+# instead, should be copying into /root
+copy-to-develacc () {
+ sudo cp -RL "$@" /home/spw/tmp/
+ for f in /home/spw/tmp/*; do
+ if ! [ "${f##*.}" = "deb" ]; then
+ sudo chown spw:spw "$f"
+ fi
+ done
+}
+
+# idea from
+# https://coderwall.com/p/aohfrg/smux-ssh-with-auto-reconnect-tmux-a-mosh-replacement
+smux () {
+ autossh -M 0 -t "$@" "tmux attach-session"
+}
+
+# This alias is more reliable than calling `server-start' in my Emacs
+# init file. Previously, I was seeing Emacs fail to start with "Error
+# reading from stdin." See <http://emacs.stackexchange.com/a/12789>
+
+# `switch-to-buffer' means that there is some chance the new window
+# will show a buffer I want to see (tip from the frames-only-mode
+# README)
+alias emacscd="emacsclient -c -a '' -n -e '(switch-to-buffer nil)'"
+
+dak-rdeps () {
+ ssh mirror.ftp-master.debian.org "dak rm -Rn $@"
+}
+madison () {
+ ssh mirror.ftp-master.debian.org "dak ls $@"
+}
+
+build-for-upload () {
+ dgit=""
+ sbuild=""
+ for key in "$@"; do
+ case $key in
+ --gbp|--dpm|--quilt=*)
+ dgit="$dgit $key"
+ shift
+ ;;
+ *)
+ sbuild="$sbuild $key"
+ shift
+ ;;
+ esac
+ done
+ if [[ $(pwd) =~ "src/DHG_packages/p" ]]; then
+ sbuild $sbuild \
+ --no-run-lintian --run-piuparts --run-autopkgtest
+ else
+ eval dgit $dgit sbuild $sbuild \
+ --no-run-lintian --run-piuparts --run-autopkgtest
+ fi
+ lintian
+}
+
+# based on gregor hermann's dh-make-perl-dev he posted on bugs.d.o
+dh-make-elpa-dev () {
+ PERL5LIB=~/src/dh-make-elpa/lib/ ~/src/dh-make-elpa/dh-make-elpa "$@"
+}
+
+# cd to top of git checkout
+alias cg='cd $(git rev-parse --show-toplevel)'
+
+# try to stop dpkg-buildpackage from invoking gpg2 and thereby messing
+# with ~/.gnupg
+alias dpkg-buildpackage="dpkg-buildpackage -pgpg"
+
+# add a project to projectile's known projects
+projectile () {
+ local dir="$(pwd)"
+ chronic emacsclient -c -n -e "(projectile-switch-project-by-name \"$dir\")"
+}
+
+# clone with git and open in Emacs
+clone () {
+ cd $HOME/src
+ git clone $1
+ name=$(basename $1 | cut -d: -f2)
+ cd $name
+ mr register
+ projectile
+}
+
+# tmux is smart and it detects a changed SSH_AUTH_SOCK and any newly
+# created shells use that. But not old ones: this should pull the
+# newly detected value into the old sehll.
+
+# check tmux is running first by seeing if we're inside it
+if ! [ "$TMUX" = "" ]; then
+ alias fixsshagent="eval $(tmux show-environment | grep '^SSH_AUTH_SOCK')"
+fi
+
+# append a stream to mpd's playlist, and play it
+mpc_play_stream () {
+ mpc stop
+ mpc add $1
+ mpc play $(mpc playlist | wc -l)
+}
+
+# BBC radio stream URIs:
+# http://www.suppertime.co.uk/blogmywiki/2015/04/updated-list-of-bbc-network-radio-urls/
+alias radio4="mpc_play_stream http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio4fm_mf_p"
+alias worldservice="mpc_play_stream http://bbcwssc.ic.llnwd.net/stream/bbcwssc_mp1_ws-eieuk"
+
+# Manipulate Policy bugs. (from Russ Allbery)
+bts-policy () {
+ bts user debian-policy@packages.debian.org , source debian-policy , "$@"
+}
+
+dgit-view () {
+ if [ $# = 0 ]; then
+ 1="--gbp"
+ fi
+ dgit "$@" --dgit-view-save=unquilted quilt-fixup
+ git checkout unquilted
+}
+
+dhtunpack () {
+ exists=/tmp/cabal/$1*
+ if [ -e $exists ]; then
+ cd $exists
+ else
+ mkdir -p /tmp/cabal
+ cd /tmp/cabal
+ cabal unpack $1
+ cd $1*
+ dir=$(pwd)
+ dir=$(basename $dir)
+ package=${dir%-*}
+ version=${dir##*-}
+ mkdir -p ~/src/package-plan/patches/$package/$version
+ ln -s ~/src/package-plan/patches/$package/$version patches
+ if [ -e ~/src/package-plan/additional-cabals/$package-$version.cabal ]; then
+ cp ~/src/package-plan/additional-cabals/$package-$version.cabal $package.cabal
+ fi
+ fi
+}
+
+# --- load zsh features
+
+# Change word boundary characters. Nabbed from
+# http://zshwiki.org/KeyBindings.
+
+# by default: export WORDCHARS='*?_-.[]~=/&;!#$%^(){}<>'
+# we take out the slash, period, angle brackets, dash here.
+export WORDCHARS='*?_-[]~=&;!#$%^(){}'
+
+# Follow GNU LS_COLORS for completion menus
+zmodload -i zsh/complist
+#eval $(dircolors -b /home/tom/.dir_colors)
+zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
+zstyle ':completion:*:*:kill:*' list-colors '=%*=01;31'
+
+# Load the completion system
+autoload -U compinit; compinit
+
+# Very powerful version of mv implemented in zsh. The main feature I
+# know of it that seperates it from the standard mv is that it saves you
+# time by being able to use patterns which are expanded into positional
+# parameters. So:
+#
+# slarti@pohl % zmv (*)foo ${1}bar
+#
+# On a series of files like onefoo, twofoo, threefoo, fivefoo would be
+# renamed to onebar twobar threebar fourbar.
+#
+# Although that's nifty enough, I suspect there are other features I
+# don't know about yet...
+#
+# Read $fpath/zmv for some more basic examples of usage, and also use
+# run-help on it :)
+autoload -U zmv
+
+# automatically escape URLs
+autoload -U url-quote-magic
+zle -N self-insert url-quote-magic
+
+# Incremental completion of a word. After starting this, a list of
+# completion choices can be shown after every character you type, which
+# can deleted with ^H or delete. Return will accept the current
+# completion. Hit tab for normal completion, ^G to get back where you
+# came from and ^D to list matches.
+autoload -U incremental-complete-word
+zle -N incremental-complete-word
+bindkey "^Xi" incremental-complete-word
+
+# This function allows you type a file pattern, and see the results of
+# the expansion at each step. When you hit return, they will be
+# inserted into the command line.
+autoload -U insert-files
+zle -N insert-files
+bindkey "^Xf" insert-files
+
+# This set of functions implements a sort of magic history searching.
+# After predict-on, typing characters causes the editor to look backward
+# in the history for the first line beginning with what you have typed so
+# far. After predict-off, editing returns to normal for the line found.
+# In fact, you often don't even need to use predict-off, because if the
+# line doesn't match something in the history, adding a key performs
+# standard completion - though editing in the middle is liable to delete
+# the rest of the line.
+autoload -U predict-on
+zle -N predict-on
+zle -N predict-off
+bindkey "^X^Z" predict-on
+bindkey "^Z" predict-off
+
+# _gnu_generic is a completion widget that parses the --help output of
+# commands for options. df and feh work fine with it, however options
+# are not described.
+compdef _gnu_generic feh df
+
+compdef _pkglist ecd emetadataviewer
+compdef _useflaglist explainuseflag
+compdef _category list_cat
+
+compdef _nothing etc-update dispatch-conf fixpackages
+
+# History things
+HISTFILE=$HOME/.zshist
+SAVEHIST=10000
+HISTSIZE=10000
+TMPPREFIX=$HOME/tmp
+
+# Key bindings
+
+# You can use:
+# % autoload -U zkbd
+# % zkbd
+# to discover your keys.
+
+bindkey -e
+
+# C-x C-k to kill region
+bindkey "^X^K" kill-region
+
+# Up, down left, right.
+# echotc is part of the zsh/termcap module. It outputs the termcap value
+# corresponding to the capability it was given as an argument. man zshmodules.
+zmodload -i zsh/termcap
+bindkey "$(echotc kl)" backward-char
+bindkey "$(echotc kr)" forward-char
+bindkey "$(echotc ku)" up-line-or-history
+bindkey "$(echotc kd)" down-line-or-history
+
+bindkey '\e[3~' delete-char # Delete
+
+if [[ "$TERM" == "rxvt-unicode" || "$TERM" == "screen" ]]; then
+ bindkey '\e[7~' beginning-of-line # Home
+ bindkey '\e[8~' end-of-line # End
+elif [[ "$TERM" == "linux" ]]; then
+ bindkey '\e[1~' beginning-of-line # Home
+ bindkey '\e[4~' end-of-line # End
+else # At least xterm; probably other terms too
+ bindkey '\e[H~' beginning-of-line # Home
+ bindkey '\e[F~' end-of-line # End
+fi
+
+bindkey '\e[5~' up-history # PageUp
+bindkey '\e[6~' down-history # PageDown
+
+# --- completion
+
+# Pretty menu!
+zstyle ':completion:*' menu select=1
+
+# Completion options
+zstyle ':completion:*' completer _complete _prefix
+zstyle ':completion::prefix-1:*' completer _complete
+zstyle ':completion:incremental:*' completer _complete _correct
+zstyle ':completion:predict:*' completer _complete
+
+# Completion caching
+zstyle ':completion::complete:*' use-cache 1
+zstyle ':completion::complete:*' cache-path ~/.zsh/cache/$HOST
+
+# Expand partial paths
+zstyle ':completion:*' expand 'yes'
+zstyle ':completion:*' squeeze-slashes 'yes'
+
+# Include non-hidden directories in globbed file completions
+# for certain commands
+zstyle ':completion::complete:*' '\'
+
+# Use menuselection for pid completion
+zstyle ':completion:*:*:kill:*' menu yes select
+zstyle ':completion:*:kill:*' force-list always
+
+# tag-order 'globbed-files directories' all-files
+zstyle ':completion::complete:*:tar:directories' file-patterns '*~.*(-/)'
+
+# Don't complete backup files as executables
+zstyle ':completion:*:complete:-command-::commands' ignored-patterns '*\~'
+
+# Don't complete non-.tex LaTeX files with mg
+zstyle ':completion:*:*:mg:*:*files' ignored-patterns '*?.aux' '*?.log' '*?.pdf' '*?.toc' '*?.bak' '*?.fdb_latexmk'
+
+# Separate matches into groups
+zstyle ':completion:*:matches' group 'yes'
+
+# With commands like rm, it's annoying if you keep getting offered the same
+# file multiple times. This fixes it. Also good for cp, et cetera..
+zstyle ':completion:*:rm:*' ignore-line yes
+zstyle ':completion:*:cp:*' ignore-line yes
+
+# Describe each match group.
+zstyle ':completion:*:descriptions' format "%B---- %d%b"
+
+# Messages/warnings format
+zstyle ':completion:*:messages' format '%B%U---- %d%u%b'
+zstyle ':completion:*:warnings' format '%B%U---- no match for: %d%u%b'
+
+# Describe options in full
+zstyle ':completion:*:options' description 'yes'
+zstyle ':completion:*:options' auto-description '%d'
+
+# Simulate spider's old abbrev-expand 3.0.5 patch
+#zstyle ':completion:*:history-words' stop verbose
+#zstyle ':completion:*:history-words' remove-all-dups yes
+#zstyle ':completion:*:history-words' list false
+
+# From the zshwiki. Hide CVS files/directores from being completed.
+zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS'
+zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS'
+
+# Also from the wiki. Hide uninteresting users from completion.
+zstyle ':completion:*:*:*:users' ignored-patterns \
+ adm apache bin daemon games gdm halt ident junkbust lp mail mailnull \
+ named news nfsnobody nobody nscd ntp operator pcap postgres radvd \
+ rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs backup bind \
+ dictd gnats identd irc man messagebus postfix proxy sys \
+ www-data alias amavis at clamav cmd5checkpw cron cyrus dhcp dnscache \
+ dnslog foldingathome guest haldaemon jabber ldap mailman mpd mysql \
+ nut p2p portage postmaster qmaild qmaill qmailp qmailq qmailr qmails \
+ smmsp tinydns vpopmail wasabi zope
+
+# Pull hosts from $HOME/.ssh/known_hosts, also from the wiki
+# local _myhosts
+_myhosts=( ${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[0-9]*}%%\ *}%%,*} )
+zstyle ':completion:*' hosts $_myhosts
+
+# Approximate completion. From the wiki.
+zstyle ':completion:*' completer _complete _match _approximate
+zstyle ':completion:*:match:*' original only
+zstyle ':completion:*:approximate:*' max-errors 1 numeric
+
+# --- zsh options
+
+setopt \
+ NO_all_export \
+ always_last_prompt \
+ always_to_end \
+ append_history \
+ share_history \
+ auto_cd \
+ auto_list \
+ auto_menu \
+ auto_name_dirs \
+ auto_param_keys \
+ auto_param_slash \
+ auto_pushd \
+ auto_remove_slash \
+ NO_auto_resume \
+ bad_pattern \
+ bang_hist \
+ NO_beep \
+ brace_ccl \
+ NO_bsd_echo \
+ NO_cdable_vars \
+ NO_chase_links \
+ clobber \
+ complete_aliases \
+ complete_in_word \
+ NO_correct \
+ NO_correct_all \
+ csh_junkie_history \
+ NO_csh_junkie_loops \
+ NO_csh_junkie_quotes \
+ NO_csh_null_glob \
+ equals \
+ NO_extended_glob \
+ extended_history \
+ function_argzero \
+ glob \
+ NO_glob_assign \
+ glob_complete \
+ NO_glob_dots \
+ NO_glob_subst \
+ NO_hash_cmds \
+ NO_hash_dirs \
+ hash_list_all \
+ hist_allow_clobber \
+ hist_beep \
+ hist_ignore_dups \
+ hist_ignore_space \
+ NO_hist_no_store \
+ hist_verify \
+ NO_hup \
+ NO_ignore_braces \
+ NO_ignore_eof \
+ interactive_comments \
+ inc_append_history \
+ NO_list_ambiguous \
+ NO_list_beep \
+ list_types \
+ long_list_jobs \
+ magic_equal_subst \
+ NO_mail_warning \
+ NO_mark_dirs \
+ NO_menu_complete \
+ multios \
+ nomatch \
+ notify \
+ noflowcontrol \
+ NO_null_glob \
+ numeric_glob_sort \
+ NO_overstrike \
+ path_dirs \
+ posix_builtins \
+ NO_print_exit_value \
+ NO_prompt_cr \
+ prompt_subst \
+ pushd_ignore_dups \
+ NO_pushd_minus \
+ pushd_silent \
+ pushd_to_home \
+ rc_expand_param \
+ NO_rc_quotes \
+ NO_rm_star_silent \
+ NO_sh_file_expansion \
+ sh_option_letters \
+ short_loops \
+ NO_sh_word_split \
+ NO_single_line_zle \
+ NO_sun_keyboard_hack \
+ NO_verbose \
+ zle
+
+# --- compatibility
+
+# # allow zenity to be called from cron
+
+# # per http://promberger.info/linux/2009/01/02/running-x-apps-like-zenity-from-crontab-solving-cannot-open-display-problem/
+# if which pgrep && pgrep Xorg >/dev/null; then
+# xhost local:${USER} > /dev/null 2> /dev/null
+# fi
+# # per http://superuser.com/questions/111771/using-either-notify-send-or-zenity-in-cron
+# echo $DBUS_SESSION_BUS_ADDRESS > ~/.tmp-dbus-addr
+
+# Make BiBTeX and Org play nice together due to security change in
+# TeXLive 2010. See
+# http://lists.gnu.org/archive/html/emacs-orgmode/2011-04/msg00845.html
+
+export BIBINPUTS="$HOME/doc:$HOME/doc/papers:$BIBINPUTS"
+
+# If we're on a weak terminal (probably non-interactive) such as
+# TRAMP, kill off a bunch of the cool stuff we just set-up.
+
+if [[ "$TERM" == "dumb" ]]; then
+ unsetopt zle
+ unsetopt prompt_cr
+ unsetopt prompt_subst
+ unfunction precmd
+ unfunction preexec
+ export TERMTYPE=""
+ export NOCOLOR="true"
+ PS1='$ '
+fi
+
+if [[ -n ${INSIDE_EMACS} ]]; then
+ unsetopt zle
+fi
diff --git a/archive/AppData/Roaming/VirtuaWin/virtuawin.cfg b/archive/AppData/Roaming/VirtuaWin/virtuawin.cfg
new file mode 100644
index 00000000..abcf2758
--- /dev/null
+++ b/archive/AppData/Roaming/VirtuaWin/virtuawin.cfg
@@ -0,0 +1,40 @@
+ver# 2
+hotkeyCount# 6
+hotkey1# 37 19 1 0
+hotkey2# 39 19 2 0
+hotkey3# 38 19 3 0
+hotkey4# 40 19 4 0
+hotkey5# 37 23 13 0
+hotkey6# 39 23 15 0
+desktopNameCount# 0
+deskX# 2
+deskY# 2
+deskWrap# 0
+useWindowRules# 1
+taskButtonAct# 0
+winListContent# 11
+winListCompact# 0
+mouseEnable# 6
+mouseJumpLength# 60
+mouseDelay# 20
+mouseWarp# 0
+mouseKnock# 2
+mouseModifierUsed# 0
+mouseModifier# 0
+preserveZOrder# 2
+hiddenWindowAct# 2
+releaseFocus# 0
+refreshOnWarp# 0
+invertY# 0
+noTaskbarCheck# 0
+displayTaskbarIcon# 1
+logFlag# 0
+winMenuCompact# 1
+useDynButtonRm# 0
+hotkeyMenuLoc# 0
+vwHookUse# 0
+useDskChgModRelease# 0
+initialDesktop# 0
+lastDeskNoDelay# 0
+minWinHide# 1
+ctlMenuCompact# 1
diff --git a/archive/AppData/Roaming/VirtuaWin/window.cfg b/archive/AppData/Roaming/VirtuaWin/window.cfg
new file mode 100644
index 00000000..ebd172a9
--- /dev/null
+++ b/archive/AppData/Roaming/VirtuaWin/window.cfg
@@ -0,0 +1,17 @@
+flags# 26624
+0n# TPlayerForm
+desk# 3
+flags# 34816
+0n# XLMAIN
+flags# 34816
+0n# AdobeAcrobat
+flags# 553650178
+0n# WindowsForms10.
+flags# 553650176
+0n# ExploreWClass
+flags# 553650176
+0n# IEFrame
+flags# 553650176
+0n# CabinetWClass
+flags# 3072
+0n# BaseBar
diff --git a/archive/lib/pro.terminal b/archive/lib/pro.terminal
new file mode 100644
index 00000000..9fb72f73
--- /dev/null
+++ b/archive/lib/pro.terminal
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>BackgroundBlur</key>
+ <real>0.0</real>
+ <key>BackgroundColor</key>
+ <data>
+ YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS
+ AAGGoKMHCA9VJG51bGzTCQoLDA0OV05TV2hpdGVcTlNDb2xvclNwYWNlViRjbGFzc0Iw
+ ABADgALSEBESE1okY2xhc3NuYW1lWCRjbGFzc2VzV05TQ29sb3KiEhRYTlNPYmplY3Rf
+ EA9OU0tleWVkQXJjaGl2ZXLRFxhUcm9vdIABCBEaIy0yNztBSFBdZGdpa3B7hIyPmKqt
+ sgAAAAAAAAEBAAAAAAAAABkAAAAAAAAAAAAAAAAAAAC0
+ </data>
+ <key>CommandString</key>
+ <string>/Volumes/SPWHITTON/bin/apple-setup.sh</string>
+ <key>CursorColor</key>
+ <data>
+ YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS
+ AAGGoKMHCA9VJG51bGzTCQoLDA0OV05TV2hpdGVcTlNDb2xvclNwYWNlViRjbGFzc0sw
+ LjMwMjQxOTM2ABADgALSEBESE1okY2xhc3NuYW1lWCRjbGFzc2VzV05TQ29sb3KiEhRY
+ TlNPYmplY3RfEA9OU0tleWVkQXJjaGl2ZXLRFxhUcm9vdIABCBEaIy0yNztBSFBdZHBy
+ dHmEjZWYobO2uwAAAAAAAAEBAAAAAAAAABkAAAAAAAAAAAAAAAAAAAC9
+ </data>
+ <key>Font</key>
+ <data>
+ YnBsaXN0MDDUAQIDBAUGGBlYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS
+ AAGGoKQHCBESVSRudWxs1AkKCwwNDg8QVk5TU2l6ZVhOU2ZGbGFnc1ZOU05hbWVWJGNs
+ YXNzI0AsAAAAAAAAEBCAAoADXxAPQ291cmllci1PYmxpcXVl0hMUFRZaJGNsYXNzbmFt
+ ZVgkY2xhc3Nlc1ZOU0ZvbnSiFRdYTlNPYmplY3RfEA9OU0tleWVkQXJjaGl2ZXLRGhtU
+ cm9vdIABCBEaIy0yNzxCS1JbYmlydHZ4io+ao6qttsjL0AAAAAAAAAEBAAAAAAAAABwA
+ AAAAAAAAAAAAAAAAAADS
+ </data>
+ <key>FontAntialias</key>
+ <false/>
+ <key>FontWidthSpacing</key>
+ <real>0.99596774193548387</real>
+ <key>ProfileCurrentVersion</key>
+ <real>2.04</real>
+ <key>RunCommandAsShell</key>
+ <true/>
+ <key>SelectionColor</key>
+ <data>
+ YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS
+ AAGGoKMHCA9VJG51bGzTCQoLDA0OV05TV2hpdGVcTlNDb2xvclNwYWNlViRjbGFzc0sw
+ LjI1NDAzMjI1ABADgALSEBESE1okY2xhc3NuYW1lWCRjbGFzc2VzV05TQ29sb3KiEhRY
+ TlNPYmplY3RfEA9OU0tleWVkQXJjaGl2ZXLRFxhUcm9vdIABCBEaIy0yNztBSFBdZHBy
+ dHmEjZWYobO2uwAAAAAAAAEBAAAAAAAAABkAAAAAAAAAAAAAAAAAAAC9
+ </data>
+ <key>ShowActiveProcessInTitle</key>
+ <false/>
+ <key>ShowDimensionsInTitle</key>
+ <false/>
+ <key>ShowWindowSettingsNameInTitle</key>
+ <false/>
+ <key>TextBoldColor</key>
+ <data>
+ YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS
+ AAGGoKMHCA9VJG51bGzTCQoLDA0OV05TV2hpdGVcTlNDb2xvclNwYWNlViRjbGFzc0Ix
+ ABADgALSEBESE1okY2xhc3NuYW1lWCRjbGFzc2VzV05TQ29sb3KiEhRYTlNPYmplY3Rf
+ EA9OU0tleWVkQXJjaGl2ZXLRFxhUcm9vdIABCBEaIy0yNztBSFBdZGdpa3B7hIyPmKqt
+ sgAAAAAAAAEBAAAAAAAAABkAAAAAAAAAAAAAAAAAAAC0
+ </data>
+ <key>TextColor</key>
+ <data>
+ YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS
+ AAGGoKMHCA9VJG51bGzTCQoLDA0OV05TV2hpdGVcTlNDb2xvclNwYWNlViRjbGFzc0sw
+ Ljk0NzU4MDY0ABADgALSEBESE1okY2xhc3NuYW1lWCRjbGFzc2VzV05TQ29sb3KiEhRY
+ TlNPYmplY3RfEA9OU0tleWVkQXJjaGl2ZXLRFxhUcm9vdIABCBEaIy0yNztBSFBdZHBy
+ dHmEjZWYobO2uwAAAAAAAAEBAAAAAAAAABkAAAAAAAAAAAAAAAAAAAC9
+ </data>
+ <key>columnCount</key>
+ <integer>160</integer>
+ <key>keyMapBoundKeys</key>
+ <dict>
+ <key>$F702</key>
+ <string></string>
+ <key>$F703</key>
+ <string></string>
+ <key>$F708</key>
+ <string>[25~</string>
+ <key>$F709</key>
+ <string>[26~</string>
+ <key>$F70A</key>
+ <string>[28~</string>
+ <key>$F70B</key>
+ <string>[29~</string>
+ <key>$F70C</key>
+ <string>[31~</string>
+ <key>$F70D</key>
+ <string>[32~</string>
+ <key>$F70E</key>
+ <string>[33~</string>
+ <key>$F70F</key>
+ <string>[34~</string>
+ <key>$F728</key>
+ <string>[3;2~</string>
+ <key>F704</key>
+ <string>OP</string>
+ <key>F705</key>
+ <string>OQ</string>
+ <key>F706</key>
+ <string>OR</string>
+ <key>F707</key>
+ <string>OS</string>
+ <key>F708</key>
+ <string>[15~</string>
+ <key>F709</key>
+ <string>[17~</string>
+ <key>F70A</key>
+ <string>[18~</string>
+ <key>F70B</key>
+ <string>[19~</string>
+ <key>F70C</key>
+ <string>[20~</string>
+ <key>F70D</key>
+ <string>[21~</string>
+ <key>F70E</key>
+ <string>[23~</string>
+ <key>F70F</key>
+ <string>[24~</string>
+ <key>F710</key>
+ <string>[25~</string>
+ <key>F711</key>
+ <string>[26~</string>
+ <key>F712</key>
+ <string>[28~</string>
+ <key>F713</key>
+ <string>[29~</string>
+ <key>F714</key>
+ <string>[31~</string>
+ <key>F715</key>
+ <string>[32~</string>
+ <key>F716</key>
+ <string>[33~</string>
+ <key>F717</key>
+ <string>[34~</string>
+ <key>F728</key>
+ <string>[3~</string>
+ <key>^F702</key>
+ <string></string>
+ <key>^F703</key>
+ <string></string>
+ <key>^F728</key>
+ <string>[3;5~</string>
+ <key>~F702</key>
+ <string></string>
+ <key>~F703</key>
+ <string></string>
+ <key>~F704</key>
+ <string>[17~</string>
+ <key>~F705</key>
+ <string>[18~</string>
+ <key>~F706</key>
+ <string>[19~</string>
+ <key>~F707</key>
+ <string>[20~</string>
+ <key>~F708</key>
+ <string>[21~</string>
+ <key>~F709</key>
+ <string>[23~</string>
+ <key>~F70A</key>
+ <string>[24~</string>
+ <key>~F70B</key>
+ <string>[25~</string>
+ <key>~F70C</key>
+ <string>[26~</string>
+ <key>~F70D</key>
+ <string>[28~</string>
+ <key>~F70E</key>
+ <string>[29~</string>
+ <key>~F70F</key>
+ <string>[31~</string>
+ <key>~F710</key>
+ <string>[32~</string>
+ <key>~F711</key>
+ <string>[33~</string>
+ <key>~F712</key>
+ <string>[34~</string>
+ <key>~^F728</key>
+ <string>[3;5~</string>
+ </dict>
+ <key>name</key>
+ <string>pro</string>
+ <key>rowCount</key>
+ <integer>48</integer>
+ <key>shellExitAction</key>
+ <integer>1</integer>
+ <key>type</key>
+ <string>Window Settings</string>
+ <key>useOptionAsMetaKey</key>
+ <true/>
+</dict>
+</plist>
diff --git a/archive/lib/spw.sh b/archive/lib/spw.sh
new file mode 100755
index 00000000..9e3c35ff
--- /dev/null
+++ b/archive/lib/spw.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+athena_cmd () {
+ # here we rely on the fact that ssh already passes argument
+ # through `/bin/sh -c' (note use of single-quotes in this
+ # function)
+ ssh athena 'cd $HOME/'"$1"' && . $HOME/.shenv && '"$2" 2>&1 | sed -e 's/^/ /'
+}
+
+win32 () {
+ test "$(perl -e 'print $^O')" = "msys"
+}
diff --git a/archive/lib/try.sh b/archive/lib/try.sh
new file mode 100755
index 00000000..8721a57f
--- /dev/null
+++ b/archive/lib/try.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+. "$HOME/lib/tputfs.sh"
+
+zero () {
+ local cmd="$*"
+ while ! (output="$($cmd)" ; echo "$output" ; [ -z "$output" ]); do
+ status "executing '$cmd' produced output"
+ status but it should produce no output -- spawning a shell
+ status "when you C-d, I will attempt to run '$cmd' again"
+ eval "$SHELL"
+ done
+}
+
+try () {
+ local cmd="$*"
+ while ! $cmd; do
+ status "executing '$cmd' failed: spawning a shell"
+ status "when you C-d, I will attempt to run '$cmd' again"
+ eval "$SHELL"
+ done
+}