diff options
author | Luke Shumaker <LukeShu@sbcglobal.net> | 2014-03-27 15:24:05 -0400 |
---|---|---|
committer | Luke Shumaker <LukeShu@sbcglobal.net> | 2014-03-27 15:24:05 -0400 |
commit | 674efbf431f2c1c879c9bfed05f7ed6adce22351 (patch) | |
tree | b873ec80e45fb1bd9a414bb25c4e27d68c8861cf /.config | |
parent | de9c3e08412ae13cc8a2d1e4418d9e9257f67518 (diff) |
pre-merge move
Diffstat (limited to '.config')
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 |