diff options
author | Sean Whitton <spwhitton@spwhitton.name> | 2018-04-07 10:17:36 -0700 |
---|---|---|
committer | Sean Whitton <spwhitton@spwhitton.name> | 2018-04-07 10:17:36 -0700 |
commit | 1f9c1e2a69de6c7456d425b8cbb0293f66efab95 (patch) | |
tree | 98575c019dae934575417c28c84151dc7aaa7f9c /archive | |
parent | d385532242370bdf01db1f015acc804c11c1ae16 (diff) | |
download | dotfiles-1f9c1e2a69de6c7456d425b8cbb0293f66efab95.tar.gz |
archive a lot more out of ~
Diffstat (limited to 'archive')
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="<Alt>F2" type="empty"/> + <property name="<Primary><Alt>Delete" type="empty"/> + <property name="XF86Display" type="empty"/> + <property name="<Super>p" type="empty"/> + <property name="<Primary>Escape" type="empty"/> + </property> + <property name="custom" type="empty"> + <property name="XF86Display" type="string" value="xfce4-display-settings --minimal"/> + <property name="<Primary><Alt>Delete" type="string" value="xflock4"/> + <property name="<Primary>Escape" type="string" value="xfdesktop --menu"/> + <property name="<Alt>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="<Alt>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="<Alt>Tab" type="empty"/> + <property name="<Alt><Shift>Tab" type="empty"/> + <property name="<Alt>Delete" type="empty"/> + <property name="<Control><Alt>Down" type="empty"/> + <property name="<Control><Alt>Left" type="empty"/> + <property name="<Shift><Alt>Page_Down" type="empty"/> + <property name="<Alt>F4" type="empty"/> + <property name="<Alt>F6" type="empty"/> + <property name="<Alt>F7" type="empty"/> + <property name="<Alt>F8" type="empty"/> + <property name="<Alt>F9" type="empty"/> + <property name="<Alt>F10" type="empty"/> + <property name="<Alt>F11" type="empty"/> + <property name="<Alt>F12" type="empty"/> + <property name="<Control><Shift><Alt>Left" type="empty"/> + <property name="<Alt><Control>End" type="empty"/> + <property name="<Alt><Control>Home" type="empty"/> + <property name="<Control><Shift><Alt>Right" type="empty"/> + <property name="<Control><Shift><Alt>Up" type="empty"/> + <property name="<Alt><Control>KP_1" type="empty"/> + <property name="<Alt><Control>KP_2" type="empty"/> + <property name="<Alt><Control>KP_3" type="empty"/> + <property name="<Alt><Control>KP_4" type="empty"/> + <property name="<Alt><Control>KP_5" type="empty"/> + <property name="<Alt><Control>KP_6" type="empty"/> + <property name="<Alt><Control>KP_7" type="empty"/> + <property name="<Alt><Control>KP_8" type="empty"/> + <property name="<Alt><Control>KP_9" type="empty"/> + <property name="<Alt>space" type="empty"/> + <property name="<Shift><Alt>Page_Up" type="empty"/> + <property name="<Control><Alt>Right" type="empty"/> + <property name="<Control><Alt>d" type="empty"/> + <property name="<Control><Alt>Up" type="empty"/> + <property name="<Super>Tab" type="empty"/> + <property name="<Control>F1" type="empty"/> + <property name="<Control>F2" type="empty"/> + <property name="<Control>F3" type="empty"/> + <property name="<Control>F4" type="empty"/> + <property name="<Control>F5" type="empty"/> + <property name="<Control>F6" type="empty"/> + <property name="<Control>F7" type="empty"/> + <property name="<Control>F8" type="empty"/> + <property name="<Control>F9" type="empty"/> + <property name="<Control>F10" type="empty"/> + <property name="<Control>F11" type="empty"/> + <property name="<Control>F12" type="empty"/> + </property> + <property name="custom" type="empty"> + <property name="<Control>F3" type="string" value="workspace_3_key"/> + <property name="<Control>F4" type="string" value="workspace_4_key"/> + <property name="<Control>F5" type="string" value="workspace_5_key"/> + <property name="<Control>F6" type="string" value="workspace_6_key"/> + <property name="<Control>F7" type="string" value="workspace_7_key"/> + <property name="<Control>F8" type="string" value="workspace_8_key"/> + <property name="<Control>F9" type="string" value="workspace_9_key"/> + <property name="<Alt>Tab" type="string" value="cycle_windows_key"/> + <property name="<Control><Alt>Right" type="string" value="right_workspace_key"/> + <property name="Left" type="string" value="left_key"/> + <property name="<Control><Shift><Alt>Left" type="string" value="move_window_left_key"/> + <property name="<Control><Shift><Alt>Right" type="string" value="move_window_right_key"/> + <property name="Up" type="string" value="up_key"/> + <property name="<Alt>F6" type="string" value="stick_window_key"/> + <property name="<Control><Alt>Down" type="string" value="down_workspace_key"/> + <property name="<Alt>F7" type="string" value="move_window_key"/> + <property name="<Alt>F11" type="string" value="fullscreen_key"/> + <property name="<Alt>F8" type="string" value="resize_window_key"/> + <property name="<Super>Tab" type="string" value="switch_window_key"/> + <property name="Escape" type="string" value="cancel_key"/> + <property name="<Alt><Control>KP_1" type="string" value="move_window_workspace_1_key"/> + <property name="<Alt><Control>KP_2" type="string" value="move_window_workspace_2_key"/> + <property name="<Alt><Control>KP_3" type="string" value="move_window_workspace_3_key"/> + <property name="<Alt><Control>KP_4" type="string" value="move_window_workspace_4_key"/> + <property name="<Alt><Control>KP_5" type="string" value="move_window_workspace_5_key"/> + <property name="<Alt><Control>KP_6" type="string" value="move_window_workspace_6_key"/> + <property name="Down" type="string" value="down_key"/> + <property name="<Control><Shift><Alt>Up" type="string" value="move_window_up_key"/> + <property name="<Shift><Alt>Page_Down" type="string" value="lower_window_key"/> + <property name="<Alt>F12" type="string" value="above_key"/> + <property name="<Alt><Control>KP_8" type="string" value="move_window_workspace_8_key"/> + <property name="<Alt><Control>KP_9" type="string" value="move_window_workspace_9_key"/> + <property name="Right" type="string" value="right_key"/> + <property name="<Control><Alt>Up" type="string" value="up_workspace_key"/> + <property name="<Control>F10" type="string" value="workspace_10_key"/> + <property name="<Alt><Control>KP_7" type="string" value="move_window_workspace_7_key"/> + <property name="<Alt>Delete" type="string" value="del_workspace_key"/> + <property name="<Control><Alt>Left" type="string" value="left_workspace_key"/> + <property name="<Control>F12" type="string" value="workspace_12_key"/> + <property name="<Alt><Shift>Tab" type="string" value="cycle_reverse_windows_key"/> + <property name="<Shift><Alt>Page_Up" type="string" value="raise_window_key"/> + <property name="<Alt>Insert" type="string" value="add_workspace_key"/> + <property name="<Control>F2" type="string" value="workspace_2_key"/> + <property name="<Control>F1" type="string" value="workspace_1_key"/> + <property name="<Control>F11" type="string" value="workspace_11_key"/> + <property name="override" type="bool" value="true"/> + <property name="<Super>w" type="string" value="popup_menu_key"/> + <property name="<Super>Up" type="string" value="maximize_window_key"/> + <property name="<Super>Down" type="string" value="hide_window_key"/> + <property name="<Shift><Super>u" type="string" value="move_window_prev_workspace_key"/> + <property name="<Shift><Super>i" type="string" value="move_window_next_workspace_key"/> + <property name="<Super>i" type="string" value="next_workspace_key"/> + <property name="<Super>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>[1;2D</string> + <key>$F703</key> + <string>[1;2C</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>[1;5D</string> + <key>^F703</key> + <string>[1;5C</string> + <key>^F728</key> + <string>[3;5~</string> + <key>~F702</key> + <string>[1;4D</string> + <key>~F703</key> + <string>[1;4C</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 +} |