summaryrefslogtreecommitdiff
path: root/.config
diff options
context:
space:
mode:
authorLuke Shumaker <LukeShu@sbcglobal.net>2014-03-27 15:24:05 -0400
committerLuke Shumaker <LukeShu@sbcglobal.net>2014-03-27 15:24:05 -0400
commit674efbf431f2c1c879c9bfed05f7ed6adce22351 (patch)
treeb873ec80e45fb1bd9a414bb25c4e27d68c8861cf /.config
parentde9c3e08412ae13cc8a2d1e4418d9e9257f67518 (diff)
pre-merge move
Diffstat (limited to '.config')
-rw-r--r--.config/X11/clientrc26
-rw-r--r--.config/X11/defaults18
-rw-r--r--.config/X11/login10
-rw-r--r--.config/bash/aliases.sh66
-rw-r--r--.config/bash/logout.sh9
-rw-r--r--.config/bash/rc.d/emacs.sh8
-rw-r--r--.config/bash/rc.sh117
-rw-r--r--.config/bazaar/ignore10
-rw-r--r--.config/conkeror55
-rw-r--r--.config/cron/.crontab0
-rw-r--r--.config/cron/.crontab.local0
-rw-r--r--.config/emacs/.gitignore9
-rw-r--r--.config/emacs/custom.el21
-rw-r--r--.config/emacs/emacsutils.el13
-rw-r--r--.config/emacs/init.el180
-rw-r--r--.config/git/config10
-rw-r--r--.config/hgrc2
-rw-r--r--.config/irbrc1
-rw-r--r--.config/login.local.sh6
-rw-r--r--.config/login.sh67
-rw-r--r--.config/maildirproc/default.rc351
-rw-r--r--.config/offlineimaprc29
-rw-r--r--.config/ssh/config3
-rwxr-xr-x.config/wmii/autostart4
-rw-r--r--.config/wmii/include.sh70
-rwxr-xr-x.config/wmii/quit3
-rwxr-xr-x.config/wmii/rbar_battery10
-rwxr-xr-x.config/wmii/rbar_clock10
-rwxr-xr-x.config/wmii/rbar_cpu13
-rwxr-xr-x.config/wmii/rbar_wifi10
-rw-r--r--.config/wmii/theme-solarized16
-rw-r--r--.config/wmii/theme-solarized-dark12
-rwxr-xr-x.config/wmii/wmiirc271
33 files changed, 1430 insertions, 0 deletions
diff --git a/.config/X11/clientrc b/.config/X11/clientrc
new file mode 100644
index 0000000..9c5ce55
--- /dev/null
+++ b/.config/X11/clientrc
@@ -0,0 +1,26 @@
+#!/bin/sh
+#
+# ~/.xinitrc
+#
+# Executed by startx (run your window manager from here)
+
+if [ -d /etc/X11/xinit/xinitrc.d ]; then
+ echo ' ==> Running scripts in Entering xinitrc.d/*'
+ for f in /etc/X11/xinit/xinitrc.d/*; do
+ echo " -> $f"
+ [ -x "$f" ] && "$f" &
+ done
+ unset f
+ echo ' -> done'
+fi
+
+usermodmap="$HOME/.xmodmap"
+if [ -f "$usermodmap" ]; then
+ xmodmap "$usermodmap"
+fi
+
+# exec gnome-session
+# exec startkde
+# exec startxfce4
+# ...or the Window Manager of your choice
+exec ck-launch-session wmii
diff --git a/.config/X11/defaults b/.config/X11/defaults
new file mode 100644
index 0000000..ceabc5c
--- /dev/null
+++ b/.config/X11/defaults
@@ -0,0 +1,18 @@
+URxvt.background: #000000
+URxvt.foreground: #CCCCCC
+
+URxvt.scrollstyle: plain
+URxvt.scrollBar_floating: true
+
+URxvt.font: xft:Monospace-8
+URxvt.cursorBlink: true
+URxvt.termName: xterm-256color
+URxvt.pastableTabs: true
+
+URxvt.scrollTtyOutput: false
+URxvt.scrollTtyKeypress: false
+URxvt.scrollWithBuffer: true
+
+URxvt.perl-ext-common: default,matcher
+URxvt.urlLauncher: v-www-browser
+URxvt.matcher.button: 1
diff --git a/.config/X11/login b/.config/X11/login
new file mode 100644
index 0000000..a16dc0b
--- /dev/null
+++ b/.config/X11/login
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+#
+# ~/.xsession
+#
+# Executed by xdm/gdm/kdm at login
+#
+
+/bin/bash --login -i ~/.xinitrc
+
diff --git a/.config/bash/aliases.sh b/.config/bash/aliases.sh
new file mode 100644
index 0000000..de1a321
--- /dev/null
+++ b/.config/bash/aliases.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+# The above line probably should never be *used* in this file, but it
+# lets text editors know that this is BASH syntax.
+
+######################################################################
+# Set up colors and settings for ls/dir/vdir #
+######################################################################
+if [ -x "`which dircolors`" ]; then
+ eval "`dircolors -b`"
+ alias ls='ls -1v --color=auto'
+ alias dir='dir -v --color=auto'
+ alias vdir='vdir -v--color=auto'
+
+ for xgrep in ${PATH//:/\/*grep }/*grep; do
+ if [ -f "$xgrep" ]; then
+ xgrep=`basename "$xgrep"`
+ if [ "$xgrep" != pgrep ]; then
+ alias $xgrep="$xgrep --color=auto"
+ fi
+ fi
+ done
+else
+ alias ls='ls -1v'
+ alias dir='dir -v'
+ alias vdir='vdir -v'
+fi
+
+######################################################################
+# Set up the standard aliases for ls #
+######################################################################
+alias ll='ls -l'
+alias la='ls -a'
+alias l='ls -CF'
+
+######################################################################
+# Some preferences for miscellaneous stuff #
+######################################################################
+#alias rm='gvfs-trash'
+alias ssh='ssh -XC'
+alias sed='sed --follow-symlinks'
+alias tree='tree --charset utf8'
+alias cd=pushd
+alias gitk='gitk --all --date-order'
+
+######################################################################
+# Remember lat/long for redshift #
+######################################################################
+redshift='redshift -l39.9030:85.9979'
+alias gtk-redshift="gtk-$redshift"
+alias redshift="$redshift"
+
+######################################################################
+# Some almost-function aliases #
+######################################################################
+#alias serva='ssh luke@servb.ath.cx -p3440'
+#alias phpdoctor='php /usr/gnu/www/0-other/phpdoctor-head/phpdoc.php'
+function xterm-title () { echo "];$@"; } # Oh, wait this one *is* a function
+alias lock="clear; away -C 'This terminal is locked'"
+alias plock="xterm-title Terminal Locked;lock"
+
+######################################################################
+# Other #
+######################################################################
+case "$TERM" in
+ eterm*) alias editor='editor -n';;
+esac
diff --git a/.config/bash/logout.sh b/.config/bash/logout.sh
new file mode 100644
index 0000000..a8b88c1
--- /dev/null
+++ b/.config/bash/logout.sh
@@ -0,0 +1,9 @@
+# ~/.bash_logout: executed by bash(1) when login shell exits.
+
+# when leaving the console clear the screen to increase privacy
+
+if [ "$SHLVL" = 1 ]; then
+ [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
+fi
+
+make -C "$HOME"
diff --git a/.config/bash/rc.d/emacs.sh b/.config/bash/rc.d/emacs.sh
new file mode 100644
index 0000000..f484bbb
--- /dev/null
+++ b/.config/bash/rc.d/emacs.sh
@@ -0,0 +1,8 @@
+case "$TERM" in
+ eterm*)
+ SELECTED_EDITOR='emacsclient'
+ EDITOR=$SELECTED_EDITOR
+ VISUAL=$SELECTED_EDITOR
+ export SELECTED_EDITOR EDITOR VISUAL
+ :;;
+esac
diff --git a/.config/bash/rc.sh b/.config/bash/rc.sh
new file mode 100644
index 0000000..ed5d87e
--- /dev/null
+++ b/.config/bash/rc.sh
@@ -0,0 +1,117 @@
+# ~/.bashrc: executed by bash(1) for non-login shells.
+# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
+# for examples
+
+# I include this file for all interactive invocations of bash(1), whether
+# they are login shells or not.
+
+# If not running interactively, don't do anything
+[ -z "$PS1" ] && return
+
+# don't put duplicate lines in the history. See bash(1) for more options
+# don't overwrite GNU Midnight Commander's setting of `ignorespace'.
+export HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups
+# ... or force ignoredups and ignorespace
+export HISTCONTROL=ignoreboth
+
+# append to the history file, don't overwrite it
+shopt -s histappend
+
+# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
+
+# check the window size after each command and, if necessary,
+# update the values of LINES and COLUMNS.
+shopt -s checkwinsize
+
+# Let ** recursively scan directories
+shopt -s globstar
+
+# Why is this not on by default?
+# "We have a cached value, but it isn't valid anymore. Should we trash it?"
+shopt -s checkhash
+
+# set variable identifying the chroot you work in (used in the prompt below)
+if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
+ debian_chroot=$(cat /etc/debian_chroot)
+fi
+
+case "$TERM" in
+ xterm) export TERM=xterm-256color;;
+esac
+
+# set a fancy prompt (non-color, unless we know we "want" color)
+case "$TERM" in
+ linux) color_prompt=yes;;
+ *-*color*) color_prompt=yes;;
+esac
+
+# uncomment for a colored prompt, if the terminal has the capability; turned
+# off by default to not distract the user: the focus in a terminal window
+# should be on the output of commands, not on the prompt
+#force_color_prompt=yes
+
+if [ -n "$force_color_prompt" ]; then
+ if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
+ # We have color support; assume it's compliant with Ecma-48
+ # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
+ # a case would tend to support setf rather than setaf.)
+ color_prompt=yes
+ else
+ color_prompt=
+ fi
+fi
+
+if [ "$color_prompt" = yes ]; then
+ PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\n\$ '
+else
+ PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\n\$ '
+fi
+unset color_prompt force_color_prompt
+
+# If this is an xterm set the title to user@host:dir
+case "$TERM" in
+xterm*|rxvt*)
+ PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
+ ;;
+*)
+ ;;
+esac
+
+# Include modular config files
+if [ -d ~/.bash.d ]; then
+ for file in ~/.bash.d/*.sh; do
+ . $file;
+ done
+fi
+
+# Alias definitions.
+# You may want to put all your additions into a separate file like
+# ~/.bash_aliases, instead of adding them here directly.
+# See /usr/share/doc/bash-doc/examples in the bash-doc package.
+
+if [ -f ~/.bash_aliases ]; then
+ . ~/.bash_aliases
+fi
+
+# enable programmable completion features (you don't need to enable
+# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
+# sources /etc/bash.bashrc).
+if [ -f /etc/bash_completion ]; then
+ . /etc/bash_completion
+fi
+
+if [ -f "$HOME/.login-daemons" ]; then
+ . "$HOME/.login-daemons"
+fi
+
+if [ -f "${HOME}/.gnupg/agent-info" ]; then
+ . "${HOME}/.gnupg/agent-info"
+ export GPG_AGENT_INFO
+ #export SSH_AUTH_SOCK
+fi
+
+export PERL_LOCAL_LIB_ROOT="/home/luke/perl5";
+export PERL_MB_OPT="--install_base /home/luke/perl5";
+export PERL_MM_OPT="INSTALL_BASE=/home/luke/perl5";
+export PERL5LIB="/home/luke/perl5/lib/perl5/i686-linux-thread-multi:/home/luke/perl5/lib/perl5";
+export PATH="/home/luke/perl5/bin:$PATH";
diff --git a/.config/bazaar/ignore b/.config/bazaar/ignore
new file mode 100644
index 0000000..0e498f2
--- /dev/null
+++ b/.config/bazaar/ignore
@@ -0,0 +1,10 @@
+*.a
+*.o
+*.py[co]
+*.so
+*.sw[nop]
+*~
+.#*
+[#]*#
+__pycache__
+bzr-orphans
diff --git a/.config/conkeror b/.config/conkeror
new file mode 100644
index 0000000..e33add1
--- /dev/null
+++ b/.config/conkeror
@@ -0,0 +1,55 @@
+/* -*- Mode: js -*- */
+session_pref("signon.rememberSignons", true);
+session_pref("signon.expireMasterPassword", false);
+session_pref("signon.SignonFileName", "signons.txt");
+
+define_webjump("ddg", "https://duckduckgo.com/?q=%s");
+
+// Load login manager
+Components.classes["@mozilla.org/login-manager;1"].getService(Components.interfaces.nsILoginManager);
+
+// Auto complete stuff
+minibuffer_auto_complete_default = true;
+url_completion_use_history = true; // should work since bf05c87405
+url_completion_use_bookmarks = true;
+
+// Prompt before closing
+//define_key(content_buffer_normal_keymap, "C-x C-c", "confirm-quit");
+//can_kill_last_buffer = false;
+
+// Workaround for scrollbar bug (issue351)
+add_hook("create_buffer_late_hook",
+ function (buffer) {
+ buffer.top_frame.scrollbars.visible = true;
+ });
+
+// load session module
+require("session.js");
+session_auto_save_auto_load = true; // auto-load session
+
+// Don't show a clock in the modeline
+remove_hook("mode_line_hook", mode_line_adder(clock_widget));
+
+// Add favicons to the modeline
+require("favicon");
+add_hook("mode_line_hook", mode_line_adder(buffer_icon_widget), true);
+read_buffer_show_icons = true;
+
+// load firebug lite
+define_variable("firebug_url",
+ "https://getfirebug.com/firebug-lite.js");
+
+function firebug (I) {
+ var doc = I.buffer.document;
+ var script = doc.createElement('script');
+ script.setAttribute('type', 'text/javascript');
+ script.setAttribute('src', firebug_url);
+ script.setAttribute('onload', 'firebug.init();');
+ doc.body.appendChild(script);
+}
+interactive("firebug", "open firebug lite", firebug);
+
+// Make middle-click open links in a new buffer
+require("clicks-in-new-buffer.js");
+clicks_in_new_buffer_target = OPEN_NEW_BUFFER_BACKGROUND;
+clicks_in_new_buffer_button = 1;
diff --git a/.config/cron/.crontab b/.config/cron/.crontab
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.config/cron/.crontab
diff --git a/.config/cron/.crontab.local b/.config/cron/.crontab.local
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.config/cron/.crontab.local
diff --git a/.config/emacs/.gitignore b/.config/emacs/.gitignore
new file mode 100644
index 0000000..ef4ec20
--- /dev/null
+++ b/.config/emacs/.gitignore
@@ -0,0 +1,9 @@
+auto-save-list/*
+el-get/*
+elmo/*
+elpa/*
+image-dired/*
+server/*
+session.*
+tramp
+url/*
diff --git a/.config/emacs/custom.el b/.config/emacs/custom.el
new file mode 100644
index 0000000..5a3e67f
--- /dev/null
+++ b/.config/emacs/custom.el
@@ -0,0 +1,21 @@
+(custom-set-variables
+ ;; custom-set-variables was added by Custom.
+ ;; If you edit it by hand, you could mess it up, so be careful.
+ ;; Your init file should contain only one such instance.
+ ;; If there is more than one, they won't work right.
+ '(custom-enabled-themes (quote (wombat)))
+ '(custom-safe-themes (quote ("71b172ea4aad108801421cc5251edb6c792f3adbaecfa1c52e94e3d99634dee7" "fc5fcb6f1f1c1bc01305694c59a1a861b008c534cae8d0e48e4d5e81ad718bc6" default)))
+ '(erc-nick "lukeshu")
+ '(explicit-shell-file-name "/bin/bash")
+ '(inhibit-startup-screen t)
+ '(mdmua-maildir "~/Maildir")
+ '(minibuffer-prompt-properties (quote (read-only t point-entered minibuffer-avoid-prompt face minibuffer-prompt)))
+ '(ruby-deep-arglist nil)
+ '(ruby-deep-indent-paren nil)
+ '(scroll-bar-mode nil))
+(custom-set-faces
+ ;; custom-set-faces was added by Custom.
+ ;; If you edit it by hand, you could mess it up, so be careful.
+ ;; Your init file should contain only one such instance.
+ ;; If there is more than one, they won't work right.
+ )
diff --git a/.config/emacs/emacsutils.el b/.config/emacs/emacsutils.el
new file mode 100644
index 0000000..966d16e
--- /dev/null
+++ b/.config/emacs/emacsutils.el
@@ -0,0 +1,13 @@
+(defun mailto-compose-mail (mailto-url)
+ (if (and (stringp mailto-url)
+ (string-match "\\`mailto:" mailto-url))
+ (progn
+ (require 'rfc2368)
+ (let* ((headers (mapcar (lambda (h) (cons (intern (car h)) (cdr h)))
+ (rfc2368-parse-mailto-url mailto-url)))
+ (good-headers (remove-if (lambda (h) (member (car h) '(Body))) headers))
+ (body (cdr (assoc 'Body headers))))
+ (wl-draft good-headers nil nil body)))))
+
+(defun emacs-terminal-emulator (program)
+ (ansi-term program)) \ No newline at end of file
diff --git a/.config/emacs/init.el b/.config/emacs/init.el
new file mode 100644
index 0000000..3cd2ea3
--- /dev/null
+++ b/.config/emacs/init.el
@@ -0,0 +1,180 @@
+;; Preliminary settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(set-face-attribute 'default nil :height 80)
+(setq notify-method 'notify-via-libnotify)
+(add-to-list 'load-path "~/.emacs.d/")
+(add-to-list 'load-path "~/.emacs.d/el-get/el-get")
+(setq custom-file "~/.emacs.d/custom.el")
+
+; derived from ELPA installation
+; http://tromey.com/elpa/install.html
+(defun eval-url (url)
+ (let ((buffer (url-retrieve-synchronously url)))
+ (save-excursion
+ (set-buffer buffer)
+ (goto-char (point-min))
+ (re-search-forward "^$" nil 'move)
+ (eval-region (point) (point-max))
+ (kill-buffer (current-buffer)))))
+
+ ;; ELPA stuff ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(unless (require 'package nil t)
+ (eval-url "http://tromey.com/elpa/package-install.el"))
+
+(setq package-archives '(("ELPA" . "http://tromey.com/elpa/")
+ ("marmalade" . "http://marmalade-repo.org/packages/")
+ ("gnu" . "http://elpa.gnu.org/packages/")))
+
+;; el-get stuff ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(setq el-get-install-branch "master") ;; live life on the edge
+(unless (require 'el-get nil t)
+ (eval-url "https://github.com/dimitri/el-get/raw/master/el-get-install.el"))
+
+(setq el-get-sources '(
+ (:name nxhtml
+ :type http
+ :url "http://ourcomments.org/Emacs/DL/elisp/nxhtml/zip/nxhtml-2.08-100425.zip"
+ :build ("unzip nxhtml-2.08-100425.zip")
+ :load "nxhtml/autostart.el")
+ ))
+
+(setq my-el-get-packages
+ '(el-get
+; nxhtml
+ apel flim semi wanderlust
+ smarttabs
+ ))
+
+;; Now load all of that ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; ELPA
+(package-initialize)
+;; el-get
+(when (require 'el-get nil t) (el-get 'sync my-el-get-packages))
+;; custom
+(load custom-file 'noerror)
+
+;; General settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;(load "mdmua")
+(load "emacsutils")
+
+(tool-bar-mode -1)
+(ido-mode t)
+(show-paren-mode 1)
+(setq org-hide-leading-stars t)
+(setq org-log-done 'time)
+;(xclip-mode 1)
+
+(load "whitespace")
+(setq whitespace-style '(
+ tab-mark
+ space-mark
+ newline-mark
+ empty
+))
+
+
+;; These are my preferred settings; we let dtrt-indent detect when we play with other's files
+(setq-default tab-width 8)
+(setq-default c-basic-offset 8)
+(setq-default indent-tabs-mode t)
+
+
+(setq
+ backup-by-copying t ;; don't clobber symlinks
+ backup-directory-alist '(("." . "~/.emacs.d/saves")) ;; don't litter my fs tree
+ delete-old-versions t
+ kept-new-versions 6
+ kept-old-versions 2
+ version-control t ;; use versioned backups
+)
+
+(setq column-number-mode t
+ inhibit-startup-screen t
+ line-number-mode t
+ server-use-tcp t
+ server-mode t
+ show-paren-mode t)
+
+(setq browse-url-generic-program (executable-find "v-www-browser")
+ browse-url-browser-function 'browse-url-generic)
+
+
+(defun toggle-fullscreen (&optional f)
+ (interactive)
+ (let ((current-value (frame-parameter nil 'fullscreen)))
+ (set-frame-parameter nil 'fullscreen
+ (if (equal 'fullboth current-value)
+ (if (boundp 'old-fullscreen) old-fullscreen nil)
+ (progn (setq old-fullscreen current-value)
+ 'fullboth)))))
+
+;; Custom keybindings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(global-set-key [f11] 'toggle-fullscreen)
+(global-set-key "\C-cw" 'global-whitespace-mode)
+
+;; mode-hooks ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(add-hook 'text-mode-hook 'turn-on-auto-fill)
+
+; for term-mode
+;; (add-hook 'after-make-frame-functions
+;; (lambda (frame)
+;; (set-variable 'term-default-fg-color
+;; (face-foreground 'default))
+;; (set-variable 'term-default-bg-color
+;; (face-background 'default)))
+;; t)
+
+(add-hook 'lisp-mode-hook
+ '(lambda ()
+ (set (make-local-variable 'indent-tabs-mode) nil)
+ ))
+
+(add-hook 'emacs-lisp-mode-hook
+ '(lambda ()
+ (set (make-local-variable 'indent-tabs-mode) nil)
+ ))
+
+(add-hook 'coffee-mode-hook
+ '(lambda ()
+ (set (make-local-variable 'tab-width) 2)
+ ))
+
+(add-hook 'term-mode-hook
+ '(lambda ()
+ (setq term-prompt-regexp "^[^#$%>\n]*[#$%>] *")
+ (make-local-variable 'mouse-yank-at-point)
+ ;(make-local-variable 'transient-mark-mode)
+ (setq mouse-yank-at-point t)
+ ;(setq transient-mark-mode nil)
+ (auto-fill-mode -1)
+ (setq tab-width 8 )
+ (setq autopair-dont-activate t) ;; Don't let autopair break ansi-term
+ ))
+
+(add-hook 'ruby-mode-hook
+ '(lambda ()
+ (set (make-local-variable 'indent-tabs-mode) t)
+ (set (make-local-variable 'ruby-indent-level) 4)
+ (set (make-local-variable 'tab-width) 4)
+ ))
+
+(add-hook 'coffee-mode-hook
+ '(lambda ()
+ (set (make-local-variable 'indent-tabs-mode) nil)
+ ))
+
+(add-to-list 'auto-mode-alist '("PKGBUILD" . sh-mode))
+
+;(require 'flymake)
+;(add-hook 'php-mode-hook (lambda() (flymake-mode 1)))
+;(define-key php-mode-map '[M-S-up] 'flymake-goto-prev-error)
+;(define-key php-mode-map '[M-S-down] 'flymake-goto-next-error)
+
+;(setq tramp-debug-buffer t)
+;(setq tramp-verbose 10)
diff --git a/.config/git/config b/.config/git/config
new file mode 100644
index 0000000..9846d72
--- /dev/null
+++ b/.config/git/config
@@ -0,0 +1,10 @@
+[user]
+ name = Luke Shumaker
+ email = LukeShu@sbcglobal.net
+[color]
+ ui = auto
+[sendemail]
+ smtpencryption = ssl
+ smtpserver = plus.smtp.mail.yahoo.com
+ smtpuser = lukeshu@sbcglobal.net
+ smtpserverport = 465
diff --git a/.config/hgrc b/.config/hgrc
new file mode 100644
index 0000000..96fce82
--- /dev/null
+++ b/.config/hgrc
@@ -0,0 +1,2 @@
+[ui]
+username = Luke Shumaker <lukeshu@sbcglobal.net>
diff --git a/.config/irbrc b/.config/irbrc
new file mode 100644
index 0000000..7596d96
--- /dev/null
+++ b/.config/irbrc
@@ -0,0 +1 @@
+require 'rubygems' unless defined? Gem # only needed in 1.8
diff --git a/.config/login.local.sh b/.config/login.local.sh
new file mode 100644
index 0000000..1da7aa7
--- /dev/null
+++ b/.config/login.local.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+if [ -x "`which daemon`" ]; then
+ # daemon ...
+ :
+fi
diff --git a/.config/login.sh b/.config/login.sh
new file mode 100644
index 0000000..377dc9b
--- /dev/null
+++ b/.config/login.sh
@@ -0,0 +1,67 @@
+# ~/.profile: executed by the command interpreter for login shells.
+# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
+# exists.
+
+# the default umask is set in /etc/profile; for setting the umask
+# for ssh logins, install and configure the libpam-umask package.
+umask 022
+
+## Paths #############################################################
+
+# Unix
+bins=$(echo $HOME/bin $HOME/.local.`uname -m`/bin $HOME/.local/bin $HOME/.prefix.`uname -m`/bin $HOME/.prefix/bin $HOME/.gem/ruby/*/bin)
+for dir in $bins; do
+ if [ -d "$dir" ]; then
+ export PATH="$dir:$PATH"
+ fi
+done
+
+# Ruby
+for dir in $HOME/.prefix/lib; do
+ if [ -d "$dir" ]; then
+ export RUBYLIB="$dir"
+ fi
+done
+
+# Settings ###########################################################
+
+# Text editor
+if [ -f "$HOME/.selected_editor" ]; then
+ . "$HOME/.selected_editor"
+ export SELECTED_EDITOR
+ export ALTERNATE_EDITOR
+ export EDITOR="${EDITOR:-$SELECTED_EDITOR}"
+ export VISUAL="${VISUAL:-$SELECTED_EDITOR}"
+fi
+
+# GPG
+export GPGKEY=D4FFBFC9
+
+# Java
+_JAVA_OPTIONS=''
+_JAVA_OPTIONS+=' -Dawt.useSystemAAFontSettings=on'
+_JAVA_OPTIONS+=' -Dswing.aatext=true'
+_JAVA_OPTIONS+=' -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
+_JAVA_OPTIONS+=" -Djava.io.tmpdir=$TMPDIR"
+export _JAVA_OPTIONS
+
+# X11
+if [ -z "$XAUTHORITY" ]; then
+ export XAUTHORITY=$HOME/.Xauthority
+fi
+
+# Start background programs ##########################################
+if [ -f "$HOME/.login-daemons" ]; then
+ . "$HOME/.login-daemons"
+fi
+
+# BASH ###############################################################
+if [ -n "$BASH_VERSION" ]; then
+ # include .bashrc if it exists
+ if [ -f "$HOME/.bashrc" ]; then
+ . "$HOME/.bashrc"
+ fi
+fi
+
+export PERL5LIB=/homes/shumakl/.prefix.x86_64/lib64/perl5:$PERL5LIB
+export GOROOT=/homes/shumakl/.prefix.x86_64/go
diff --git a/.config/maildirproc/default.rc b/.config/maildirproc/default.rc
new file mode 100644
index 0000000..71bc00c
--- /dev/null
+++ b/.config/maildirproc/default.rc
@@ -0,0 +1,351 @@
+# -*- mode: python; -*-
+
+import subprocess
+
+processor.maildir_base = "~/Maildir"
+processor.auto_reload_rcfile = True
+
+def is_to_or_from(mail,address):
+ """
+ Return true if [mail] is to or from an address that contains [address].
+ """
+ return (
+ mail["From"].contains(address)
+ or mail.target.contains(address))
+def is_to_or_from_re(mail,address):
+ """
+ Return true if [mail] is to or from an address that matches the
+ regex [address].
+ """
+ return (
+ mail["From"].matches(address)
+ or mail.target.matches(address))
+
+def bogofilter_auto(mail):
+ p = subprocess.Popen(
+ ["bogofilter", "-u", "-v", "-I", mail.path],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT)
+ (output, _) = p.communicate()
+ processor.log("*** Bogofilter result: {0!r}".format(output.rstrip()))
+ if p.returncode not in [0, 1, 2]:
+ processor.log_error(
+ "Error running bogofilter: Return code = {0!r}".format(
+ p.returncode))
+ return p.returncode
+
+def bogofilter_ham(mail):
+ subprocess.call(["bogofilter", "-S", "-n", "-I", mail.path])
+
+def bogofilter_spam(mail):
+ subprocess.call(["bogofilter", "-N", "-s", "-I", mail.path])
+
+def handle_incoming_spam_training(mail):
+ bogofilter_spam(mail)
+ mail.move(".Bulk Mail")
+
+def handle_incoming_ham_training(mail):
+ bogofilter_ham(mail)
+ handle_incoming_ham(mail)
+
+def handle_incoming_ham(mail):
+ my_filters(mail)
+def handle_incoming_spam(mail):
+ mail.move(".Bulk Mail")
+
+def handle_incoming_unknown(mail):
+ # Filter spam
+
+ spam = bogofilter_auto(mail)
+ if spam == 0:
+ handle_incoming_spam(mail)
+ return
+ elif spam == 1:
+ handle_incoming_ham(mail)
+ return
+ elif spam == 2:
+ # maybe spam
+ return
+ else:
+ mail.move(".Error")
+ return
+
+def my_filters(mail):
+ # Sort mail from GNU mailing lists
+ for list in [ 'bug-gsrc', 'bug-make', 'help-make', 'social', 'help-grub' ]:
+ if (
+ False
+ or mail["List-Id"].matches(list+"\.gnu\.org")
+ or mail["Subject"].contains(list)
+ ):
+ mail.move(".software."+list)
+ return
+
+ # Sort mail from other software mailing lists
+ if (
+ False
+ or mail["List-Id"].matches("social-discuss\.gnu\.org")
+ or mail["Subject"].contains("social-discuss")
+ ):
+ mail.move(".software.social")
+ return
+
+ if mail["List-Id"].matches("maintenance.lists.parabolagnulinux.org"):
+ mail.move(".software.parabola-maintenance")
+ return
+ if (
+ False
+ or mail["List-Id"].matches("parabolagnulinux.org")
+ or is_to_or_from(mail, "parabolagnulinux.org")
+ or is_to_or_from(mail, "parabola.nu")
+ ):
+ mail.move(".software.parabola-dev")
+ return
+
+ if (mail["List-Id"].matches("pacman-dev.archlinux.org")):
+ mail.move(".software.pacman-dev")
+ return
+
+ for subject_re in [
+ "\[Stow-[^\]]*\].*",
+ ]:
+ if mail["Subject"].matches(subject_re):
+ mail.move(".software")
+ return
+
+ # Sort mail from some social websites
+ if mail["From"].matches("facebook(|mail)\.com"):
+ mail.move(".Social.Facebook")
+ return
+
+ if (
+ False
+ or mail["From"].matches("identi\.ca")
+ or mail["From"].matches("statusnet")
+ ):
+ mail.move(".Social.Identica")
+ return
+
+ if mail["From"].matches("twitter\.com"):
+ mail.move(".Social.Twitter")
+ return
+
+ if mail["From"].matches("@xkcd\.com"):
+ mail.move(".Social.xkcd")
+ return
+
+ # Sort mail related to Troop 276
+ if (
+ False
+ or mail["List-Id"].contains("troopmailinglist.troop276.net")
+ or is_to_or_from(mail,"t276_announcements@att.net")
+ or mail["Subject"].matches("troop")
+ or mail["Subject"].matches("merit\s*badge")
+ or is_to_or_from(mail,"jsting@sbcglobal.net")
+ or is_to_or_from(mail,"trdindy@comcast.net")
+ or is_to_or_from(mail,"wjensen111@aol.com")
+ or is_to_or_from(mail,"dhoyt@yourhomecompany.com")
+ or is_to_or_from(mail,"salupo_vincent_p@lilly.com")
+ or is_to_or_from(mail,"basu@maharjan.org")
+ or is_to_or_from(mail,"muellerindy@yahoo.com")
+ or is_to_or_from(mail,"solorzano.luis@rocketmail.com")
+ or is_to_or_from(mail,"eldredmac@comcast.net")# MacDonell
+ or is_to_or_from(mail,"mitchprather@sbcglobal.net")
+ or is_to_or_from(mail,"oa_wap@yahoo.com")
+ or is_to_or_from(mail,"mytroop.us")
+ ):
+ mail.move(".Troop276")
+ return
+
+ # Sort mail from misc people
+ if mail["From"].matches("margieshu@sbcglobal\.net"):
+ mail.move(".misc.Mom")
+ return
+
+ for address in [
+ "justicejade10@aol.com",
+ "parsonsjade@aol.com",
+ ]:
+ if mail["From"].contains(address):
+ mail.move(".misc.Jade")
+ return
+
+ for address in [
+ "nintendo.com",
+ "nintendo-news.com",
+ ]:
+ if mail["From"].contains(address):
+ mail.move(".misc.Nintendo")
+ return
+
+ for address in [
+ "@lpi.org",
+ "@pearson.com",
+ "CompTIA",
+ ]:
+ if mail["From"].contains(address):
+ mail.move(".misc.CompTIA")
+ return
+
+ # Sort mail from FRC people
+ for address in [
+ "jeffreysmith@msdlt.k12.in.us",
+ "jason.zielke@gmail.com",
+ "allison.m.babcock@gmail.com",
+ "william.walk@gmail.com",
+ "BBonahoom@stanleyworks.com",
+ "wcxctrack829@aim.com", # Pat
+ "djnels1@comcast.net", # Dave and Julie Nelson
+ "sarahlittell@comcast.net",
+ "skiplittell@comcast.net",
+ "dave.nelson@ecolab.com",
+ "@ni.com",
+ "@usfirst.org",
+ "gamefreak207@gmail.com", # Brett Leedy
+ "tswilson4801@att.net",
+ "silioso@gmail.com",
+ "cdewalt3@yahoo.com",
+ "bryanbonahoom@gmail.com",
+ ]:
+ if is_to_or_from(mail,address):
+ mail.move(".School.Robotics")
+ return
+ for subject_re in [
+ "FIRST",
+ "robotics",
+ "1024",
+ "kil-?a-?bytes",
+ ]:
+ if mail["Subject"].matches(subject_re):
+ mail.move(".School.Robotics")
+ return
+
+ # Sort mail from software people
+ for address in [
+ "gnu.org",
+ "eff.org",
+ "gitorious.org",
+ "sourceforge.com",
+ "ietf.org",
+ "kde.org",
+ "trustees@core3.amsl.com",
+ "esr@thyrsus.com",
+ "canonical.org",
+ "foocorp.net",
+ "cnuk.org",
+ "@archlinux.org",
+ "@github.com",
+ ]:
+ if is_to_or_from(mail,address):
+ mail.move(".software")
+ return
+
+
+ # Sort mail from the school newspaper
+ if (
+ False
+ or is_to_or_from(mail, "@lnnorthstar.org")
+ or is_to_or_from(mail, "lnnorthstar.org@tigertech.net")
+ ):
+ mail.move(".School.Newspaper")
+ return
+
+ # Sort mail from various employers/people who pay me
+ if is_to_or_from(mail, "@precisepath.com"):
+ mail.move(".Work.PrecisePath")
+ return
+
+ if is_to_or_from(mail,"susyphil@aol.com"):
+ mail.move(".Work.PMCH")
+
+ for address in [
+ "d.farrar@comcast.net",
+ "dfarrar@avacoustics.net",
+ "@vmware.com",
+ ]:
+ if is_to_or_from(mail,address):
+ mail.move(".Work.FAST")
+ return
+
+ # Sort misc newsletters
+ if (
+ False
+ or mail["From"].contains("newsletter")
+ or mail["From"].contains("auto@comicsbyemail.com")
+ or mail["From"].contains("oreilly.com")
+ or mail["Subject"].contains("newsletter")
+ or mail["From"].contains("Info@mailing.jamendo.com")
+ or mail["From"].contains("info@demandprogress.org")
+ ):
+ mail.move(".misc.Newsletters")
+ return
+
+ if (
+ False
+ or mail["From"].contains("@msdlt.k12.in.us")
+ or mail["From"].contains("naviance.com")
+ or is_to_or_from(mail,"ibwhite@comcast.net")
+ or mail["Subject"].contains("IOA")
+ or mail["From"].contains("nths.org")
+ or mail["Subject"].contains("NTHS")
+ or mail["Subject"].contains("National Technical Honor Society")
+ or mail["Subject"].contains("NHS")
+ or mail["Subject"].contains("National Honor Society")
+ ):
+ mail.move(".School")
+ return
+
+ # from college stuff
+ if (
+ False
+ or mail["Subject"].contains("NYLF") # National Youth Leadership Conference
+ or mail["Subject"].contains("NSHSS")
+ ):
+ mail.move(".College.Societies")
+ return
+ if (
+ False
+ or mail["From"].contains(".edu")
+ or mail["From"].contains("admissions@")
+ or mail["From"].contains("college")
+ or mail["From"].contains("university")
+ or mail["Subject"].contains("college")
+ # now we get to the BS
+ or mail["From"].contains("@dreamitdoitindiana.com")
+ or mail["From"].contains("@indianatechinfo.org")
+ ):
+ mail.move(".College")
+ return
+
+ if mail["From"].contains("@projectwonderful.com"):
+ mail.move(".ProjectWonderful")
+ return
+
+ if (
+ False
+ or mail["From"].matches("@localhost")
+ or mail["From"].matches("@[^,>]*\.local")
+ or mail["From"].matches("@[^,>]*\.lukeshu\.ath\.cx")
+ or mail["To"].matches("luke@")
+ ):
+ mail.move(".LocalSystems")
+ return
+ if (
+ False
+ or mail["Subject"].contains("password")
+ or mail["Subject"].contains("account")
+ ):
+ mail.move(".misc.accounts")
+ return
+
+ mail.move(".Ham")
+
+handle_mapping = {
+ ".": handle_incoming_unknown,
+ ".spam-training": handle_incoming_spam_training,
+ ".ham-training": handle_incoming_ham_training,
+ #".Ham": handle_incoming_ham,
+ }
+processor.maildirs = handle_mapping.keys()
+for mail in processor:
+ handle_mapping[mail.maildir](mail)
diff --git a/.config/offlineimaprc b/.config/offlineimaprc
new file mode 100644
index 0000000..319593c
--- /dev/null
+++ b/.config/offlineimaprc
@@ -0,0 +1,29 @@
+# -*- Mode: Conf -*-
+[general]
+accounts = LukeShu
+
+[Account LukeShu]
+localrepository = Local
+remoterepository = Remote
+
+[Repository Local]
+type = Maildir
+localfolders = ~/Maildir
+sep = .
+folderfilter = lambda foldername: not re.search('(Trash|Del|-old|Draft)', foldername)
+
+# transforms local -> remote
+nametrans = lambda foldername: re.sub('^$', 'Inbox', re.sub('^'+re.escape('%(sep)s'), '', foldername))
+
+
+[Repository Remote]
+type = IMAP
+ssl = yes
+cert_fingerprint = 700d84baa7e852240178dc2de18e7e528a2854df
+remotehost = imap.mail.yahoo.com
+remoteuser = lukeshu@sbcglobal.net
+folderfilter = lambda foldername: not re.search('(Trash|Del)', foldername)
+
+# transforms remote -> local
+# we must assume that sep=/ on the remote IMAP server.
+nametrans = lambda foldername: '/'+re.sub('^Inbox$', '', foldername)
diff --git a/.config/ssh/config b/.config/ssh/config
new file mode 100644
index 0000000..bb876ba
--- /dev/null
+++ b/.config/ssh/config
@@ -0,0 +1,3 @@
+Host *
+ Protocol 2
+ Compression yes
diff --git a/.config/wmii/autostart b/.config/wmii/autostart
new file mode 100755
index 0000000..aae23f4
--- /dev/null
+++ b/.config/wmii/autostart
@@ -0,0 +1,4 @@
+#!/bin/bash
+daemon lxpanel &> /dev/null
+daemon wicd-client -t &> /dev/null
+daemon notifyd &> /dev/null
diff --git a/.config/wmii/include.sh b/.config/wmii/include.sh
new file mode 100644
index 0000000..36f8f3e
--- /dev/null
+++ b/.config/wmii/include.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+if [ -z "$WMII_NAMESPACE" ]; then
+ export WMII_NAMESPACE=`wmiir namespace`
+fi
+if [ -z "$WMII_DIR" ]; then
+ export WMII_DIR=$WMII_NAMESPACE/mnt
+fi
+
+# a -- a work-around for buggy IO append in 9pfuse
+# useing '|a' should be just like using '>>', but will work
+# when 9pfuse decides to bug out.
+a() {
+ f="${1/#${WMII_DIR}/}"
+ if [ "$f" = "$1" ]; then
+ cat >> "$1"
+ else
+ if wmiir ls "$f" &>/dev/null; then
+ wmiir write "$f"
+ else
+ wmiir create "$f"
+ fi
+ fi
+}
+
+# I like wmiir's setsid better than linux-utils'
+setsid() { wmiir setsid "$@"; }
+
+path_ls() {
+ find -L `echo "$@"|sed 'y/:/ /'` -maxdepth 1 -type f -executable -printf '%f\n' 2>/dev/null| sort -u
+}
+
+path_which() {
+ mypath=$1
+ prog=$2
+ which=`which which`
+ PATH="$mypath" "$which" -- "$prog" 2>/dev/null
+}
+
+
+lstags() {
+ ls $WMII_DIR/tag | sed '/^sel$/d'
+}
+
+scansection() {
+ file=`path_which "$WMII_CONFPATH" wmiirc`
+ sec=$1
+ tmp=`mktemp`
+ if [ -n "$sec" ]; then
+ < "$file" sed -n "/^\s*$sec\s*()/,/##\s*End $sec/p" | sed '1d;$d'> $tmp
+ else
+ < "$file" sed "/\s*}\s*##\s*End\s/d" > $tmp
+ fi
+ < $tmp sed -n '/##/p'|sed -r 's/^\s*(.*)\)\s*## ?/\t\1\t/;s/\s*## ?//'
+ rm $tmp
+}
+
+conffile() {
+ echo "$HOME/.wmii/$@"
+}
+
+Action() {
+ prog=`path_which "$WMII_CONFPATH" $1`; shift
+ if [ -n "$prog" ]; then
+ "$prog" "$@"
+ return $?
+ else
+ return 1
+ fi
+}
diff --git a/.config/wmii/quit b/.config/wmii/quit
new file mode 100755
index 0000000..54f64e7
--- /dev/null
+++ b/.config/wmii/quit
@@ -0,0 +1,3 @@
+#!/bin/bash
+. "$HOME/.wmii/include.sh"
+echo quit |a $WMII_DIR/ctl
diff --git a/.config/wmii/rbar_battery b/.config/wmii/rbar_battery
new file mode 100755
index 0000000..7a7f24f
--- /dev/null
+++ b/.config/wmii/rbar_battery
@@ -0,0 +1,10 @@
+#!/bin/bash
+. "$HOME/.wmii/include.sh"
+
+priority=$1
+
+set -e
+while true; do
+ acpi -b |a "$WMII_DIR/rbar/${priority}_battery"
+ sleep 1
+done
diff --git a/.config/wmii/rbar_clock b/.config/wmii/rbar_clock
new file mode 100755
index 0000000..8e7d2a4
--- /dev/null
+++ b/.config/wmii/rbar_clock
@@ -0,0 +1,10 @@
+#!/bin/bash
+. "$HOME/.wmii/include.sh"
+
+priority=$1
+
+set -e
+while true; do
+ date |a "$WMII_DIR/rbar/${priority}_clock"
+ sleep .5
+done
diff --git a/.config/wmii/rbar_cpu b/.config/wmii/rbar_cpu
new file mode 100755
index 0000000..7f891da
--- /dev/null
+++ b/.config/wmii/rbar_cpu
@@ -0,0 +1,13 @@
+#!/bin/bash
+. "$HOME/.wmii/include.sh"
+
+priority=$1
+
+set -e
+while true; do
+ # This doesn't work for me, it shows capacity
+ #echo -n 'Core MHz:' $(cat /proc/cpuinfo | grep 'cpu MHz' | sed 's/.*: //g; s/\..*//g;') |a "$WMII_DIR/rbar/${priority}_cpu"
+ # This actually displays %idle
+ echo 'CPU: [ '$(tail -n3 ~/tmp/cputime|sed -ur 's/\s\s+/\t/g'|cut -f2,11|sed 's/\t\(.*\)/(\1)/')' ]' |a "$WMII_DIR/rbar/${priority}_cpu"
+ sleep 1
+done
diff --git a/.config/wmii/rbar_wifi b/.config/wmii/rbar_wifi
new file mode 100755
index 0000000..608b164
--- /dev/null
+++ b/.config/wmii/rbar_wifi
@@ -0,0 +1,10 @@
+#!/bin/bash
+. "$HOME/.wmii/include.sh"
+
+priority=$1
+
+set -e
+while true; do
+ echo 'Wlan0:' $(iwconfig wlan0 | sed 's/ /\n/g' | grep Quality) |a "$WMII_DIR/rbar/${priority}_wifi"
+ sleep 1
+done
diff --git a/.config/wmii/theme-solarized b/.config/wmii/theme-solarized
new file mode 100644
index 0000000..5dc830d
--- /dev/null
+++ b/.config/wmii/theme-solarized
@@ -0,0 +1,16 @@
+SOL_BASE03='#002b36'
+SOL_BASE02='#073642'
+SOL_BASE01='#586e75'
+SOL_BASE00='#657b83'
+SOL_BASE0='#839496'
+SOL_BASE1='#93a1a1'
+SOL_BASE2='#eee8d5'
+SOL_BASE3='#fdf6e3'
+SOL_YELLOW='#b58900'
+SOL_ORANGE='#cb4b16'
+SOL_RED='#dc322f'
+SOL_MAGENTA='#d33682'
+SOL_VIOLET='#6c71c4'
+SOL_BLUE='#268bd2'
+SOL_CYAN='#2aa198'
+SOL_GREEN='#859900'
diff --git a/.config/wmii/theme-solarized-dark b/.config/wmii/theme-solarized-dark
new file mode 100644
index 0000000..83285ba
--- /dev/null
+++ b/.config/wmii/theme-solarized-dark
@@ -0,0 +1,12 @@
+#!/bin/sh
+# Solarized-dark
+
+. $HOME/.wmii/theme-solarized
+
+WMII_BACKGROUND="$SOL_BASE02"
+
+# ="<text> <background> <border>"
+WMII_NORMCOLORS="$SOL_BASE0 $SOL_BASE03 $SOL_BASE02"
+WMII_FOCUSCOLORS="$SOL_BASE0 $SOL_BASE02 $SOL_BASE0"
+WMII_URGENTCOLORS="$SOL_RED $SOL_BASE03 $SOL_RED"
+
diff --git a/.config/wmii/wmiirc b/.config/wmii/wmiirc
new file mode 100755
index 0000000..92adb8b
--- /dev/null
+++ b/.config/wmii/wmiirc
@@ -0,0 +1,271 @@
+#!/bin/bash
+# Let any running instances of wmiirc know that we're starting
+wmiir xwrite /event Start
+
+. "$HOME/.wmii/include.sh"
+
+echo ' ==> Starting wmiirc'
+mount9p=/opt/plan9/bin/9pfuse
+mkdir -p $WMII_NAMESPACE/mnt
+$mount9p $WMII_NAMESPACE/{wmii,mnt}
+
+MODKEY=Mod4 # super
+UP=p
+DOWN=n
+LEFT=b
+RIGHT=f
+
+# Colors tuples: "<text> <background> <border>"
+. `conffile theme-solarized-dark`
+
+# Menu history
+hist="`conffile history`"
+
+# Tagging Rules
+echo '/Emacs|Navigator/ -> +sel' >> $WMII_DIR/tagrules
+echo '/Eclipse/ -> +sel' >> $WMII_DIR/tagrules
+echo '/panel/ -> /.*/' >> $WMII_DIR/tagrules
+
+Event() {
+ event=$1; shift;
+ case "$event" in
+ ## Mouse event meanings:
+ ## MouseDown = mouse down
+ ## Click = mouse up
+ ## DND = hover, while dragging something (Drag 'n' Drop)
+ ## The associated mouse button is always "1"
+ ##
+ ## Mouse-button IDs:
+ ## 1 = left
+ ## 2 = middle
+ ## 3 = right
+
+ ## WMII-meta events
+ Quit) ## No args
+ echo ' ==> Stopping wmiirc'
+ echo " -> unmounting WMII_DIR=$WMII_DIR..."
+ # might complain about /etc/mtab if the x server has already stopped
+ fusermount -u "$WMII_DIR" 2>>/dev/null
+ echo " -> rmdir'ing WMII_DIR=$WMII_DIR..."
+ rmdir "$WMII_DIR"
+ exit;;
+ Warning) ## $@=string
+ notify-send "wmii warning: $*";;
+ Key) ## $1=keystroke
+ Key "$@";;
+
+ ## WMII Window management events
+ FocusFloating) ## No args
+ ;;
+ AreaFocus) ## $1=area
+ ;;
+ DestroyArea) ## $1=area
+ ;;
+ ColumnFocus) ## $1=column
+ ;;
+ CreateColumn) ## $1=column
+ ;;
+
+ ## Client events
+ CreateClient) ## $1=client
+ ;;
+ DestroyClient) ## $1=client
+ ;;
+ Urgent) ## $1=client $2=[Manager|Client]
+ ;;
+ NotUrgent) ## $1=client $2=[Manager|Client]
+ ;;
+ ClientMouseDown) ## $1=client $2=button
+ client=$1
+ button=$2
+ case $button in
+ 1) ;;
+ 2) ;;
+ 3)
+ {
+ case `wmii9menu Delete Fullscreen` in
+ Delete)
+ echo kill |a $WMII_DIR/client/$client/ctl;;
+ Fullscreen)
+ echo Fullscreen on |a $WMII_DIR/client/$1/ctl;;
+ esac
+ }& ;;
+ esac;;
+ ClientClick) ## $1=client $2=button
+ ;;
+ Unresponsive) ## $1=client
+ client=$1
+ client_name=`cat $WMII_DIR/client/$client/label`
+ msg="The client \`${client_name}' is not responding."
+ msg+=" What would you like to do?"
+ {
+ resp=$(wihack -transient $client \
+ xmessage -nearmouse -buttons Kill,Wait -print "$msg")
+ if [ "$resp" = Kill ]; then
+ echo slay |a $WMII_DIR/client/$client/ctl
+ fi
+ }& ;;
+ Fullscreen) ## $1=client $2=[on|off]
+ # TODO: hide any clients with the 'panel' class
+ ;;
+
+ ## Tag events
+ CreateTag) ## $1=tag
+ echo "$WMII_NORMCOLORS" $@ |a $WMII_DIR/lbar/$1;;
+ DestroyTag) ## $1=tag
+ rm $WMII_DIR/lbar/$1;;
+ FocusTag) ## $1=tag
+ echo "$WMII_FOCUSCOLORS" $1 |a $WMII_DIR/lbar/$1;;
+ UnfocusTag) ## $1=tag
+ echo "$WMII_NORMCOLORS" $1 |a $WMII_DIR/lbar/$1;;
+ UrgentTag) ## $1=tag $2=[Manager|Client]
+ echo "$WMII_URGENTCOLORS" $1 |a $WMII_DIR/lbar/$1;;
+ NotUrgentTag) ## $1=tag $2=[Manager|Client]
+ echo "$WMII_NORMCOLORS" $1 |a $WMII_DIR/lbar/$1;;
+
+ ## LeftBar events (usually tag buttons)
+ LeftBarMouseDown) ## $1=button $2=bar_item
+ ;;
+ LeftBarClick) ## $1=button $2=bar_item
+ shift # ignore the button
+ echo view "$@" |a $WMII_DIR/ctl;;
+ LeftMouseDND) ## $1=button $2=bar_item
+ Event LeftBarClick "$@";;
+
+ ## RightBar events
+ RightBarMouseDown) ## $1=button $2=bar_item
+ ;;
+ RightBarClick) ## $1=button $2=bar_item
+ ;;
+ RightMouseDND) ## $1=button $2=bar_item
+ Event RightBarClick "$@";;
+
+ ## Custom (non-WMII-generated) events
+ Start) ## No args
+ Event Quit;; # get out of the way for a new event loop
+ esac
+} ## End Event
+
+# Key Bindings
+Key() {
+ key=$1
+ case "$key" in
+ ## Moving around
+
+ $MODKEY-$LEFT) ## Select the client to the left
+ echo select left |a $WMII_DIR/tag/sel/ctl;;
+ $MODKEY-$RIGHT) ## Select the client to the right
+ echo select right |a $WMII_DIR/tag/sel/ctl;;
+ $MODKEY-$UP) ## Select the client above
+ echo select up |a $WMII_DIR/tag/sel/ctl;;
+ $MODKEY-$DOWN) ## Select the client below
+ echo select down |a $WMII_DIR/tag/sel/ctl;;
+
+ $MODKEY-space) ## Toggle between floating and managed layers
+ echo select toggle |a $WMII_DIR/tag/sel/ctl;;
+
+ ## Moving clients around
+
+ $MODKEY-Shift-$LEFT) ## Move selected client to the left
+ wmiir xwrite /tag/sel/ctl send sel left;;
+ $MODKEY-Shift-$RIGHT) ## Move selected client to the right
+ wmiir xwrite /tag/sel/ctl send sel right;;
+ $MODKEY-Shift-$UP) ## Move selected client up
+ wmiir xwrite /tag/sel/ctl send sel up;;
+ $MODKEY-Shift-$DOWN) ## Move selected client down
+ wmiir xwrite /tag/sel/ctl send sel down;;
+
+ $MODKEY-Shift-space) ## Toggle selected client between floating and managed layers
+ wmiir xwrite /tag/sel/ctl send sel toggle;;
+
+ ## Moving through stacks
+ $MODKEY-Control-$UP) ## Select the stack above
+ wmiir xwrite /tag/sel/ctl select up stack;;
+ $MODKEY-Control-$DOWN) # Select the stack below
+ wmiir xwrite /tag/sel/ctl select down stack;;
+
+ ## Client actions
+ $MODKEY-shift-1) ## Toggle selected client's fullsceen state
+ wmiir xwrite /client/sel/ctl Fullscreen toggle;;
+ $MODKEY-shift-0) ## Close client
+ wmiir xwrite /client/sel/ctl kill;;
+
+ ## Changing column modes
+ $MODKEY-d) ## Set column to default mode
+ wmiir xwrite /tag/sel/ctl colmode sel default-max;;
+ $MODKEY-s) ## Set column to stack mode
+ wmiir xwrite /tag/sel/ctl colmode sel stack-max;;
+ $MODKEY-m) ## Set column to max mode
+ wmiir xwrite /tag/sel/ctl colmode sel stack+max;;
+
+ ## Running programs
+ $MODKEY-a) ## Open wmii actions menu
+ Action $(path_ls $WMII_CONFPATH | wimenu -h "${hist}.actions" -n 5000) & ;;
+ $MODKEY-x) ## Open program menu
+ setsid $(wimenu -h "${hist}.progs" -n 5000 <$progsfile) & ;;
+ $MODKEY-Return) ## Launch a terminal
+ setsid x-terminal-emulator & ;;
+
+ ## Other
+ $MODKEY-Control-t) ## Toggle all other key bindings
+ case $(wmiir read /keys | wc -l | tr -d ' \t\n') in
+ 0|1)
+ echo -n "$Keys" | wmiir write /keys
+ wmiir xwrite /ctl grabmod $MODKEY;;
+ *)
+ wmiir xwrite /keys $MODKEY-Control-t
+ wmiir xwrite /ctl grabmod Mod3;;
+ esac;;
+
+ ## Tag actions
+ $MODKEY-t) ## Change to another tag
+ {
+ tag=$(lstags | wimenu -h "${hist}.tags" -n 50) || return
+ wmiir xwrite /ctl view $tag
+ }& ;;
+ $MODKEY-Shift-t) ## Retag the selected client
+ sel=$(sed 1q $WMII_DIR/client/sel/ctl)
+ {
+ tag=$(lstags | wimenu -h "${hist}.tags" -n 50) || return
+ wmiir xwrite /client/$sel/tags "$tag"
+ }& ;;
+ esac
+} ## End Key
+
+# WM Configuration
+echo font xft:Monospace-8 |a $WMII_DIR/ctl
+echo focuscolors $WMII_FOCUSCOLORS |a $WMII_DIR/ctl
+echo normcolors $WMII_NORMCOLORS |a $WMII_DIR/ctl
+echo grabmod $MODKEY |a $WMII_DIR/ctl
+echo border 1 |a $WMII_DIR/ctl
+xsetroot -solid "$WMII_BACKGROUND" &
+
+progsfile=$WMII_NAMESPACE/.proglist
+path_ls $PATH > $progsfile &
+
+eval arg `scansection Key|cut -sf2` |a $WMII_DIR/keys
+
+# Clear the LBar
+find $WMII_DIR/lbar -type f -delete
+
+# Emulate [Create|Focus]Tag events
+seltag=`sed 1q $WMII_DIR/tag/sel/ctl`
+lstags | while read tag; do
+ Event CreateTag "$tag"
+ if [ "$tag" = "$seltag" ]; then
+ Event FocusTag "$tag"
+ fi
+done
+
+Action autostart 2>/dev/null &
+
+if [ -f "`conffile wmiirc_local`" ]; then
+ . "`conffile wmiirc_local`"
+fi
+
+trap "Event Quit" EXIT
+
+# use wmiir so it doesn't look like an open file
+wmiir read /event 2>/dev/null | while read event; do
+ Event $event
+done