diff options
Diffstat (limited to '.config')
46 files changed, 1496 insertions, 168 deletions
diff --git a/.config/.gitignore b/.config/.gitignore new file mode 100644 index 0000000..b5b3b3c --- /dev/null +++ b/.config/.gitignore @@ -0,0 +1,19 @@ +/RecentDocuments + +# Ignore things I don't care enough about to track +/Trolltech.conf +/vlc +/purple + +# some 3d graphics toolkit +/Kitware +# KDE color picker +/colors +# binary, not helpful to track +/dconf/user + +# Ignore these files that if I tracked them, would be a separate repo +/libreoffice +/transmission +/gimp-* +/netbeans diff --git a/.config/Makefile b/.config/Makefile new file mode 100644 index 0000000..829b820 --- /dev/null +++ b/.config/Makefile @@ -0,0 +1,40 @@ +#!/usr/bin/make -f + +SHELL = /bin/bash + +GITDIR = ${HOME}/.git + +targets = \ + ${GITDIR}/info/exclude \ + ${HOME}/.folders \ + ${XDG_CACHE_HOME}/config-symlinks/cookie \ + ${XDG_CACHE_HOME}/cron/cookie + +all: $(targets) +clean: + rm -f $(targets) + +${HOME}/.folders: ${HOME}/Maildir + ( echo '..'; find $< -maxdepth 2 -type f -name "maildirfolder" -printf '%h\n'|sed -r 's@.*/(.*\.)(.*)@.\1\2@' )|sort>'$@' +${GITDIR}/info/exclude: ${HOME}/.git.info.exclude.in $(shell echo .??*/) + ( cat $<; find $^ -type f -name 'CACHEDIR.TAG' -printf '%h\n'|sed 's@^\./@/@' ) > $@ + +${XDG_CACHE_HOME}/cron/cookie: ${XDG_CONFIG_HOME}/cron + -(cat $^/*; echo) | crontab - 2>/dev/null + mkdir -p '$(@D)' + date > '$@' + +${XDG_CACHE_HOME}/config-symlinks/cookie: ${XDG_CONFIG_HOME}/symlinks + config-symlinks + mkdir -p '$(@D)' + date > '$@' + +${HOME}/Maildir: + mkdir -p '$@'/{cur,new,tmp} +${HOME}/Maildir/%: | ${HOME}/Maildir + mkdir -p '$@'/{cur,new,tmp} + touch '$@'/maildirfolder + +.PHONY: FORCE PHONY +FORCE: ; +PHONY: ; diff --git a/.config/X11/defaults b/.config/X11/defaults index ceabc5c..252170c 100644 --- a/.config/X11/defaults +++ b/.config/X11/defaults @@ -1,12 +1,17 @@ -URxvt.background: #000000 -URxvt.foreground: #CCCCCC +# -*- Mode: Conf-xdefaults -*- + +# "native" colors +#URxvt.background: #000000 +#URxvt.foreground: #CCCCCC +# Tango-dark +URxvt.background: #2E3436 +URxvt.foreground: #EEEEEC 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 @@ -14,5 +19,5 @@ URxvt.scrollTtyKeypress: false URxvt.scrollWithBuffer: true URxvt.perl-ext-common: default,matcher -URxvt.urlLauncher: v-www-browser +URxvt.url-launcher: v-www-browser URxvt.matcher.button: 1 diff --git a/.config/X11/login b/.config/X11/login index a16dc0b..03bad2a 100644 --- a/.config/X11/login +++ b/.config/X11/login @@ -7,4 +7,3 @@ # /bin/bash --login -i ~/.xinitrc - diff --git a/.config/X11/modmap b/.config/X11/modmap new file mode 100644 index 0000000..1736e09 --- /dev/null +++ b/.config/X11/modmap @@ -0,0 +1,12 @@ +! My desktop doesn't have a super key, so I map Caps_Lock to Super_L +! Also, use Caps_Lock for the compose key +remove lock = Caps_Lock +keysym Caps_Lock = Super_L Multi_key + +! All of these are my "super". Silly I have so many... +clear mod4 +add mod4 = Super_L Super_R Hyper_L Hyper_R Menu + + +! Note to future me: +! The modifiers are: << Shift, Lock, Control, Mod{1..5} >> and are NOT case sensitive diff --git a/.config/X11/serverrc b/.config/X11/serverrc new file mode 120000 index 0000000..ce14133 --- /dev/null +++ b/.config/X11/serverrc @@ -0,0 +1 @@ +/etc/X11/xinit/xserverrc
\ No newline at end of file diff --git a/.config/abs.conf b/.config/abs.conf new file mode 100644 index 0000000..163bc53 --- /dev/null +++ b/.config/abs.conf @@ -0,0 +1 @@ +ABSROOT="$HOME/packages/abs" diff --git a/.config/bash/aliases.sh b/.config/bash/aliases.sh index de1a321..aabd073 100644 --- a/.config/bash/aliases.sh +++ b/.config/bash/aliases.sh @@ -6,23 +6,23 @@ # 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' + 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 + 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' + alias ls='ls -1v' + alias dir='dir -v' + alias vdir='vdir -v' fi ###################################################################### @@ -36,8 +36,7 @@ alias l='ls -CF' # Some preferences for miscellaneous stuff # ###################################################################### #alias rm='gvfs-trash' -alias ssh='ssh -XC' -alias sed='sed --follow-symlinks' +#alias sed='sed --follow-symlinks' # breaks sed 4.2.2 alias tree='tree --charset utf8' alias cd=pushd alias gitk='gitk --all --date-order' @@ -48,19 +47,11 @@ alias gitk='gitk --all --date-order' redshift='redshift -l39.9030:85.9979' alias gtk-redshift="gtk-$redshift" alias redshift="$redshift" +unset 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 +alias plock="term-title Terminal Locked;lock" +mvln() { mv $1 $2; ln -s $2 $1; } diff --git a/.config/bash/login.sh b/.config/bash/login.sh new file mode 100644 index 0000000..1269a03 --- /dev/null +++ b/.config/bash/login.sh @@ -0,0 +1,9 @@ +# ~/.bash_login: executed by bash(1) when login shell starts. + +# I think this is sane default behavior + +# Load user settings +. "$HOME/.profile" + +# Load bash settings (automatic for non-login shells) +. "$HOME/.bashrc" diff --git a/.config/conkeror b/.config/conkerorrc index e33add1..e33add1 100644 --- a/.config/conkeror +++ b/.config/conkerorrc diff --git a/.config/cron/make-config b/.config/cron/make-config new file mode 100644 index 0000000..448475b --- /dev/null +++ b/.config/cron/make-config @@ -0,0 +1,2 @@ +# m h dom mon dow command +*/5 * * * * . $HOME/.local/lib/path.sh && . $HOME/.local/lib/xdg.sh && make -C $XDG_CONFIG_HOME diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc new file mode 100644 index 0000000..fc93a12 --- /dev/null +++ b/.config/dunst/dunstrc @@ -0,0 +1,92 @@ +# -*- Mode: conf -*- +[global] + + # Markup syntax: + # http://developer.gnome.org/pango/stable/PangoMarkupFormat.html + # Format string variables: + # %a appname + # %s summary + # %b body + # %i iconname (including its path) + # %I iconname (without its path) + # %p progress value if set ([ 0%] to [100%]) or nothing + + # Message format + format = "<b>%s</b>\n%b" + allow_markup = yes + ignore_newline = no + # Message word-wrap/scroll + word_wrap = yes # Split lines... + bounce_freq = 0 # ...or scroll long lines? + # Window settings + monitor = 0 # Default monitor + follow = mouse # Follow monitors? (mouse/keyboard/none) + geometry = "300x5-0+16" # [{width}]x{height}][+/-{x}+/-{y}] + transparency = 10 + # Layout settings + padding = 8 # Vertical padding + horizontal_padding = 8 # Horizontal padding + separator_height = 2 # Height of line between notifications + separator_color = frame # (auto/foreground/frame/<X color>) + # Font settings + font = Monospace 8 + line_height = 0 # if less than font height, font height is used + allignment = left # (left/center/right) + # Misc. + sort = yes # Sort messages by urgency + indicate_hidden = yes + show_age_threshold = 60 # -1 to disable + idle_threshold = 120 # Don't timeout messages if the user is gone + sticky_history = yes # Don't timeout messages popped up from history + startup_notification = false # mostly for debugging + # External programs + dmenu = wimenu -p dunst: + browser = v-www-browser + +[frame] + width = 1 + color = "#eeeeec" + +[shortcuts] + close = ctrl+space + close_all = ctrl+shift+space + history = ctrl+grave + context = ctrl+shift+period + +[urgency_low] + background = "#2e3436" + foreground = "#babdb6" + timeout = 10 + +[urgency_normal] + background = "#555753" + foreground = "#eeeeec" + timeout = 10 + +[urgency_critical] + background = "#cc0000" + foreground = "#eeeeec" + timeout = 0 + + +# Every section that isn't one of the above is interpreted as a rules +# to override settings for certain messages. + +# Filters: (shell-like globbing will get expanded) +# appname +# summary +# body +# icon +# Overrides: +# timeout +# urgency +# foreground +# background +# format (blank to not display) +# Scripting: +# If you set 'script=', the value will be called like: +# script appname summary body icon urgency +# Where urgency can be "LOW", "NORMAL" or "CRITICAL". +# +# NOTE: It might be helpful to run dunst -print in a terminal in order to find +# fitting options for filters. diff --git a/.config/emacs/init.el b/.config/emacs/init.el index 3cd2ea3..2a7645f 100644 --- a/.config/emacs/init.el +++ b/.config/emacs/init.el @@ -58,14 +58,45 @@ ;; General settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(require 'go-mode-load) + +(require 'mailcrypt) +(mc-setversion "gpg") +(add-hook 'wl-summary-mode-hook 'mc-install-read-mode) +(add-hook 'wl-mail-setup-hook 'mc-install-write-mode) + +(defun mc-wl-verify-signature () + (interactive) + (save-window-excursion + (wl-summary-jump-to-current-message) + (mc-verify))) + +(defun mc-wl-decrypt-message () + (interactive) + (save-window-excursion + (wl-summary-jump-to-current-message) + (let ((inhibit-read-only t)) + (mc-decrypt)))) + +(eval-after-load "mailcrypt" + '(setq mc-modes-alist + (append + (quote + ((wl-draft-mode (encrypt . mc-encrypt-message) + (sign . mc-sign-message)) + (wl-summary-mode (decrypt . mc-wl-decrypt-message) + (verify . mc-wl-verify-signature)))) + mc-modes-alist))) + ;(load "mdmua") (load "emacsutils") +(set-default 'truncate-lines t) (tool-bar-mode -1) (ido-mode t) (show-paren-mode 1) -(setq org-hide-leading-stars t) (setq org-log-done 'time) +(setq gamegrid-user-score-file-directory "/var/games/emacs/") ;(xclip-mode 1) (load "whitespace") @@ -170,6 +201,9 @@ )) (add-to-list 'auto-mode-alist '("PKGBUILD" . sh-mode)) +(add-to-list 'auto-mode-alist '("SRCBUILD" . sh-mode)) +(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode)) +(add-to-list 'auto-mode-alist '("\\.ronn\\'" . markdown-mode)) ;(require 'flymake) ;(add-hook 'php-mode-hook (lambda() (flymake-mode 1))) @@ -178,3 +212,29 @@ ;(setq tramp-debug-buffer t) ;(setq tramp-verbose 10) + +;; (add-to-list 'load-path "/usr/share/emacs/site-lisp/mu4e") +;; (require 'mu4e) +;; (require 'mu4e-speedbar) + +;; (setq +;; mu4e-maildir "~/Maildir" ;; top-level Maildir +;; mu4e-sent-folder "/.Sent" ;; folder for sent messages +;; mu4e-drafts-folder "/.Draft" ;; unfinished messages +;; mu4e-trash-folder "/.Trash" ;; trashed messages +;; mu4e-refile-folder "/archive") ;; saved messages +;; (setq mu4e-get-mail-command "offlineimap") +;; (setq mu4e-use-fancy-chars "t") +;; ;; enable inline images +;; (setq mu4e-view-show-images t) +;; ;; use imagemagick, if available +;; (when (fboundp 'imagemagick-register-types) +;; (imagemagick-register-types)) + + +(defun sm-try-smerge () + (save-excursion + (goto-char (point-min)) + (when (re-search-forward "^<<<<<<< " nil t) + (smerge-mode 1)))) +(add-hook 'find-file-hook 'sm-try-smerge t) diff --git a/.config/emacs/wl.el b/.config/emacs/wl.el new file mode 100644 index 0000000..a169249 --- /dev/null +++ b/.config/emacs/wl.el @@ -0,0 +1,77 @@ +;; mode:-*-emacs-lisp-*- + +(setq user-mail-address "lukeshu@sbcglobal.net") + +;; wanderlust +(setq + ;; Misc ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + wl-local-domain "lukeshu.ath.cx" + wl-icon-directory "~/.emacs.d/el-get/wanderlust/icons" + + ;; Network ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; This only deals with sending--I use offlineimap to fetch + wl-draft-send-mail-function 'wl-draft-send-mail-with-smtp + ;; The following settings are Yahoo!'s SMTP servers: + wl-smtp-connection-type (quote ssl) + wl-smtp-authenticate-type "login" + wl-smtp-posting-server "plus.smtp.mail.yahoo.com" + ;wl-smtp-posting-server "outbound.att.net" + wl-smtp-posting-port 465 + wl-smtp-posting-user user-mail-address + wl-message-id-domain user-mail-address + + ;; Folders/File system ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + elmo-msgdb-directory "~/.emacs.d/elmo" ;; where elmo keeps all its stuff + elmo-cache-directory "~/.emacs.d/elmo-cache" ;; where elmo keeps all its stuff + elmo-maildir-folder-path "~/Maildir" ;; where I store my mail + + ;; note: all below are dirs (Maildirs) under elmo-maildir-folder-path + ;; the '.'-prefix is for marking them as maildirs + wl-fcc "..Sent" ;; sent msgs go to the "sent"-folder + wl-default-folder "..Ham" ;; my main inbox + wl-draft-folder "..Draft" ;; store drafts in 'postponed' + wl-trash-folder "..Trash" ;; put trash in 'trash' + wl-spam-folder "..Bulk Mail" ;; put spam in 'Bulk Mail' + wl-queue-folder "..queue" ;; we don't use this + + ;; check this folder periodically, and update modeline + ;wl-biff-check-folder-list '(".todo") ;; check every 180 seconds + ;; (default: wl-biff-check-interval) + + ;wl-folder-hierarchy-access-folders '("\.*") + wl-folder-hierarchy-access-folders '( + "^.\\([^/.]+[/.]\\)*[^/.]+\\(:\\|@\\|$\\)" + "^-[^.]*\\(:\\|@\\|$\\)" + "^@$" + "^'$") + + ;; Writing + wl-from (concat user-full-name " <" user-mail-address ">") ;; From: line + ;;wl-organization "Foo Corp" + wl-fcc-force-as-read t ;; mark sent messages as read + mime-edit-split-message nil ;; don't split long messages + + ;; Reading ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + wl-stay-folder-window t ;; show the folder pane (left) + wl-folder-window-width 35 ;; + wl-message-auto-reassemble-message/partial t ;; reasemble split messages + + wl-message-ignored-field-list '("^.*:") ;; default to hiding all headers + wl-message-visible-field-list ;; but then display these + '("^\\(To\\|Cc\\):" + "^Subject:" + "^\\(From\\|Reply-To\\):" + "^Organization:" + "^Message-Id:" + "^\\(Posted\\|Date\\):" + "^List-ID:" + ) + wl-message-sort-field-list ;; in this order + '("^Date" + "^From" + "^Organization:" + "^X-Attribution:" + "^Subject" + "^To" + "^Cc") + ) diff --git a/.config/git/config b/.config/git/config index 9846d72..218b006 100644 --- a/.config/git/config +++ b/.config/git/config @@ -8,3 +8,7 @@ smtpserver = plus.smtp.mail.yahoo.com smtpuser = lukeshu@sbcglobal.net smtpserverport = 465 +[push] + default = matching +[alias] + lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative diff --git a/.config/git/ignore b/.config/git/ignore new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.config/git/ignore diff --git a/.config/gpg/gpg.conf b/.config/gpg/gpg.conf new file mode 100644 index 0000000..f43a58e --- /dev/null +++ b/.config/gpg/gpg.conf @@ -0,0 +1,242 @@ +# Options for GnuPG +# Copyright 1998, 1999, 2000, 2001, 2002, 2003, +# 2010 Free Software Foundation, Inc. +# +# This file is free software; as a special exception the author gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# This file is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Unless you specify which option file to use (with the command line +# option "--options filename"), GnuPG uses the file ~/.gnupg/gpg.conf +# by default. +# +# An options file can contain any long options which are available in +# GnuPG. If the first non white space character of a line is a '#', +# this line is ignored. Empty lines are also ignored. +# +# See the man page for a list of options. + +# Uncomment the following option to get rid of the copyright notice + +no-greeting + +# If you have more than 1 secret key in your keyring, you may want to +# uncomment the following option and set your preferred keyid. + +default-key D4FFBFC9 + +# If you do not pass a recipient to gpg, it will ask for one. Using +# this option you can encrypt to a default key. Key validation will +# not be done in this case. The second form uses the default key as +# default recipient. + +#default-recipient some-user-id +#default-recipient-self + +# Use --encrypt-to to add the specified key as a recipient to all +# messages. This is useful, for example, when sending mail through a +# mail client that does not automatically encrypt mail to your key. +# In the example, this option allows you to read your local copy of +# encrypted mail that you've sent to others. + +#encrypt-to some-key-id + +# By default GnuPG creates version 4 signatures for data files as +# specified by OpenPGP. Some earlier (PGP 6, PGP 7) versions of PGP +# require the older version 3 signatures. Setting this option forces +# GnuPG to create version 3 signatures. + +#force-v3-sigs + +# Because some mailers change lines starting with "From " to ">From " +# it is good to handle such lines in a special way when creating +# cleartext signatures; all other PGP versions do it this way too. + +#no-escape-from-lines + +# If you do not use the Latin-1 (ISO-8859-1) charset, you should tell +# GnuPG which is the native character set. Please check the man page +# for supported character sets. This character set is only used for +# metadata and not for the actual message which does not undergo any +# translation. Note that future version of GnuPG will change to UTF-8 +# as default character set. In most cases this option is not required +# as GnuPG is able to figure out the correct charset at runtime. + +charset utf-8 + +# Group names may be defined like this: +# group mynames = paige 0x12345678 joe patti +# +# Any time "mynames" is a recipient (-r or --recipient), it will be +# expanded to the names "paige", "joe", and "patti", and the key ID +# "0x12345678". Note there is only one level of expansion - you +# cannot make an group that points to another group. Note also that +# if there are spaces in the recipient name, this will appear as two +# recipients. In these cases it is better to use the key ID. + +#group mynames = paige 0x12345678 joe patti + +# Lock the file only once for the lifetime of a process. If you do +# not define this, the lock will be obtained and released every time +# it is needed, which is usually preferable. + +#lock-once + +# GnuPG can send and receive keys to and from a keyserver. These +# servers can be HKP, email, or LDAP (if GnuPG is built with LDAP +# support). +# +# Example HKP keyserver: +# hkp://keys.gnupg.net +# hkp://subkeys.pgp.net +# +# Example email keyserver: +# mailto:pgp-public-keys@keys.pgp.net +# +# Example LDAP keyservers: +# ldap://keyserver.pgp.com +# +# Regular URL syntax applies, and you can set an alternate port +# through the usual method: +# hkp://keyserver.example.net:22742 +# +# Most users just set the name and type of their preferred keyserver. +# Note that most servers (with the notable exception of +# ldap://keyserver.pgp.com) synchronize changes with each other. Note +# also that a single server name may actually point to multiple +# servers via DNS round-robin. hkp://keys.gnupg.net is an example of +# such a "server", which spreads the load over a number of physical +# servers. To see the IP address of the server actually used, you may use +# the "--keyserver-options debug". + +#keyserver hkp://keys.gnupg.net +#keyserver mailto:pgp-public-keys@keys.nl.pgp.net +#keyserver ldap://keyserver.pgp.com + +#keyserver hkps://keys.indymedia.org +#keyserver-options ca-cert-file=/etc/ssl/certs/cacert.org.pem + +keyserver hkps://zimmermann.mayfirst.org +keyserver-options ca-cert-file=/home/luke/.gnupg/mfpl.crt + +# Common options for keyserver functions: +# +# include-disabled : when searching, include keys marked as "disabled" +# on the keyserver (not all keyservers support this). +# +# no-include-revoked : when searching, do not include keys marked as +# "revoked" on the keyserver. +# +# verbose : show more information as the keys are fetched. +# Can be used more than once to increase the amount +# of information shown. +# +# use-temp-files : use temporary files instead of a pipe to talk to the +# keyserver. Some platforms (Win32 for one) always +# have this on. +# +# keep-temp-files : do not delete temporary files after using them +# (really only useful for debugging) +# +# http-proxy="proxy" : set the proxy to use for HTTP and HKP keyservers. +# This overrides the "http_proxy" environment variable, +# if any. +# +# auto-key-retrieve : automatically fetch keys as needed from the keyserver +# when verifying signatures or when importing keys that +# have been revoked by a revocation key that is not +# present on the keyring. +# +# no-include-attributes : do not include attribute IDs (aka "photo IDs") +# when sending keys to the keyserver. + +#keyserver-options auto-key-retrieve + +# Display photo user IDs in key listings + +# list-options show-photos + +# Display photo user IDs when a signature from a key with a photo is +# verified + +# verify-options show-photos + +# Use this program to display photo user IDs +# +# %i is expanded to a temporary file that contains the photo. +# %I is the same as %i, but the file isn't deleted afterwards by GnuPG. +# %k is expanded to the key ID of the key. +# %K is expanded to the long OpenPGP key ID of the key. +# %t is expanded to the extension of the image (e.g. "jpg"). +# %T is expanded to the MIME type of the image (e.g. "image/jpeg"). +# %f is expanded to the fingerprint of the key. +# %% is %, of course. +# +# If %i or %I are not present, then the photo is supplied to the +# viewer on standard input. If your platform supports it, standard +# input is the best way to do this as it avoids the time and effort in +# generating and then cleaning up a secure temp file. +# +# If no photo-viewer is provided, GnuPG will look for xloadimage, eog, +# or display (ImageMagick). On Mac OS X and Windows, the default is +# to use your regular JPEG image viewer. +# +# Some other viewers: +# photo-viewer "qiv %i" +# photo-viewer "ee %i" +# +# This one saves a copy of the photo ID in your home directory: +# photo-viewer "cat > ~/photoid-for-key-%k.%t" +# +# Use your MIME handler to view photos: +# photo-viewer "metamail -q -d -b -c %T -s 'KeyID 0x%k' -f GnuPG" + +# Passphrase agent +# +# We support the old experimental passphrase agent protocol as well as +# the new Assuan based one (currently available in the "newpg" package +# at ftp.gnupg.org/gcrypt/alpha/aegypten/). To make use of the agent, +# you have to run an agent as daemon and use the option +# +use-agent +# +# which tries to use the agent but will fallback to the regular mode +# if there is a problem connecting to the agent. The normal way to +# locate the agent is by looking at the environment variable +# GPG_AGENT_INFO which should have been set during gpg-agent startup. +# In certain situations the use of this variable is not possible, thus +# the option +# +# --gpg-agent-info=<path>:<pid>:1 +# +# may be used to override it. + +# Automatic key location +# +# GnuPG can automatically locate and retrieve keys as needed using the +# auto-key-locate option. This happens when encrypting to an email +# address (in the "user@example.com" form), and there are no +# user@example.com keys on the local keyring. This option takes the +# following arguments, in the order they are to be tried: +# +# cert = locate a key using DNS CERT, as specified in RFC-4398. +# GnuPG can handle both the PGP (key) and IPGP (URL + fingerprint) +# CERT methods. +# +# pka = locate a key using DNS PKA. +# +# ldap = locate a key using the PGP Universal method of checking +# "ldap://keys.(thedomain)". For example, encrypting to +# user@example.com will check ldap://keys.example.com. +# +# keyserver = locate a key using whatever keyserver is defined using +# the keyserver option. +# +# You may also list arbitrary keyservers here by URL. +# +# Try CERT, then PKA, then LDAP, then hkp://subkeys.net: +#auto-key-locate cert pka ldap hkp://subkeys.pgp.net diff --git a/.config/gtk-2.0/.gitignore b/.config/gtk-2.0/.gitignore new file mode 100644 index 0000000..67b1609 --- /dev/null +++ b/.config/gtk-2.0/.gitignore @@ -0,0 +1 @@ +gtkfilechooser.ini diff --git a/.config/gtk-3.0/bookmarks b/.config/gtk-3.0/bookmarks new file mode 100644 index 0000000..85af107 --- /dev/null +++ b/.config/gtk-3.0/bookmarks @@ -0,0 +1,5 @@ +file:///home/luke/Documents +file:///home/luke/Music +file:///home/luke/Pictures +file:///home/luke/Videos +file:///home/luke/Downloads diff --git a/.config/gtk-3.0/settings.ini b/.config/gtk-3.0/settings.ini index 5c3cf6a..9801ab0 100644 --- a/.config/gtk-3.0/settings.ini +++ b/.config/gtk-3.0/settings.ini @@ -1,17 +1,17 @@ -[Settings] -# DO NOT EDIT! This file will be overwritten by LXAppearance. -gtk-theme-name = oxygen-gtk -gtk-icon-theme-name = default.kde4 -gtk-font-name = Sans 10 -gtk-cursor-theme-name = Vanilla-DMZ -gtk-cursor-theme-size = 0 -gtk-toolbar-style = GTK_TOOLBAR_BOTH -gtk-toolbar-icon-size = GTK_ICON_SIZE_SMALL_TOOLBAR -gtk-button-images = 0 -gtk-menu-images = 1 -gtk-enable-event-sounds = 1 -gtk-enable-input-feedback-sounds = 1 -gtk-xft-antialias = 1 -gtk-xft-hinting = 1 -gtk-xft-hintstyle = hintfull -gtk-xft-rgba = rgb +[Settings] +gtk-theme-name=oxygen-gtk +gtk-icon-theme-name=oxygen +gtk-fallback-icon-theme=gnome +gtk-font-name=Sans 10 +gtk-cursor-theme-name=Vanilla-DMZ +gtk-cursor-theme-size=0 +gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ +gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR +gtk-button-images=0 +gtk-menu-images=1 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle=hintfull +gtk-xft-rgba=rgb diff --git a/.config/hgk b/.config/hgk new file mode 100644 index 0000000..f767058 --- /dev/null +++ b/.config/hgk @@ -0,0 +1,59 @@ +set mainfont {Helvetica 9} +set curidfont {Helvetica 9 bold italic underline} +set textfont {Courier 9} +set findmergefiles 0 +set gaudydiff 0 +set maxgraphpct 50 +set maxwidth 16 +set geometry(width) 1364 +set geometry(height) 690 +set geometry(canv1) 321 +set geometry(canv2) 66 +set geometry(canv3) 947 +set geometry(canvh) 256 +set geometry(ctextw) 90 +set geometry(cflistw) 84 +# +# main window position: +set posx 1 +set posy 61 +# +# authorcolors format: +# +# zero or more sublists of +# +# { regex color } +# +# followed by a list of colors +# +# If the commit author matches a regex in a sublist, +# the commit will be colored by that color +# otherwise the next unused entry from the list of colors +# will be assigned to this commit and also all other commits +# of the same author. When the list of colors is exhausted, +# the last entry will be reused. +# +set authorcolors { + black blue deeppink mediumorchid blue burlywood4 goldenrod slateblue red2 navy dimgrey +} +# +# The background color in the text windows +set bgcolor white +# +# The text color used in the diff and file list view +set fgcolor black +# +# Color to display + lines in diffs +set diffaddcolor #00a000 +# +# Color to display - lines in diffs +set diffremcolor red +# +# Merge diffs: Color to signal lines from first parent +set diffmerge1color red +# +# Merge diffs: Color to signal lines from second parent +set diffmerge2color blue +# +# Hunkseparator (@@ -lineno,lines +lineno,lines @@) color +set hunksepcolor blue diff --git a/.config/hgrc b/.config/hgrc index 96fce82..cf595e3 100644 --- a/.config/hgrc +++ b/.config/hgrc @@ -1,2 +1,4 @@ [ui] username = Luke Shumaker <lukeshu@sbcglobal.net> +[extensions] +hgk = diff --git a/.config/icons/default/index.theme b/.config/icons/default/index.theme new file mode 100644 index 0000000..dd26337 --- /dev/null +++ b/.config/icons/default/index.theme @@ -0,0 +1,4 @@ +# This file is written by LXAppearance. Do not edit.[Icon Theme] +Name=Default +Comment=Default Cursor Theme +Inherits=Vanilla-DMZ diff --git a/.config/libretools/.gitignore b/.config/libretools/.gitignore new file mode 100644 index 0000000..1881962 --- /dev/null +++ b/.config/libretools/.gitignore @@ -0,0 +1 @@ +blacklist.txt diff --git a/.config/lxpanel/default/config b/.config/lxpanel/default/config index 3ac287f..e19a7d1 100644 --- a/.config/lxpanel/default/config +++ b/.config/lxpanel/default/config @@ -1,3 +1,4 @@ [Command] FileManager=v-editor %s -Terminal=urxvt +Terminal=urxvt -c %s +Logout=bash -c 'echo quit >> $WMII_DIR/ctl' diff --git a/.config/lxpanel/default/panels/panel b/.config/lxpanel/default/panels/panel index 9d776bb..93bdb61 100644 --- a/.config/lxpanel/default/panels/panel +++ b/.config/lxpanel/default/panels/panel @@ -9,7 +9,7 @@ Global { width=100 height=16 transparent=1 - tintcolor=#002b36 + tintcolor=#555753 alpha=255 autohide=0 heightwhenhidden=2 @@ -17,11 +17,21 @@ Global { setpartialstrut=1 usefontcolor=1 fontsize=10 - fontcolor=#839496 + fontcolor=#eeeeec usefontsize=0 background=0 backgroundfile=/usr/share/lxpanel/images/background.png iconsize=16 + loglevel=2 +} + +Plugin { + type = menu + Config { + image=/usr/share/lxpanel/images/my-computer.png + system { + } + } } Plugin { diff --git a/.config/maildirproc/default.rc b/.config/maildirproc/att.rc index 71bc00c..71bc00c 100644 --- a/.config/maildirproc/default.rc +++ b/.config/maildirproc/att.rc diff --git a/.config/maildirproc/purdue.rc b/.config/maildirproc/purdue.rc new file mode 100644 index 0000000..6d4b913 --- /dev/null +++ b/.config/maildirproc/purdue.rc @@ -0,0 +1,191 @@ +# -*- mode: python; indent-tabs-mode: t -*- + +import os +import subprocess + +processor.maildir_base = "~/Maildir.purdue" +processor.auto_reload_rcfile = True +processor.logfile = os.getenv('XDG_CACHE_HOME', "~/.cache")+"/maildirproc/purdue.log" + +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 piazza_topic(mail, topic): + return ( + is_to_or_from(mail, topic+" on Piazza") + or mail["Subject"].contains(topic+" on Piazza")) + +def my_filters(mail): + # Generic stuff ######################################################## + + if ( + False + or mail["Subject"].contains("[PASE]") + or is_to_or_from(mail,"Purduealumni@purdue.edu") + or is_to_or_from(mail,"pase@purdue.edu") + ): + mail.move("INBOX.crap.PASE") + return + + if mail["Subject"].contains("[PLUG]"): + mail.move("INBOX.crap.PLUG") + return + + if mail["From"].matches(".*bursar.*@purdue\.edu"): + mail.move("INBOX.tuition") + return + + if mail["From"].contains("mailhub-admin@purdue.edu"): + mail.move("INBOX.crap.mailhub-admin") + return + + if mail["From"].matches("pmx-.*@purdue.edu"): + mail.move("INBOX.crap.spam") + return + + if is_to_or_from(mail,"linkedin.com"): + mail.move("INBOX.crap.LinkedIn") + return + + if is_to_or_from(mail,"follet.com"): + mail.move("INBOX.Follet") + return + + if ( + False + or is_to_or_from(mail,"@edrtrust.com") + or is_to_or_from(mail,"@propertysolutions.com") + or is_to_or_from(mail,"collegestationapartments@gmail.com") + or is_to_or_from_re(mail,"collegestationca\..*@gmail.com") + or is_to_or_from(mail, "@duke-energy.com") + ): + mail.move("INBOX.housing.CollegeStation") + return + + if mail["From"].matches("facebook(|mail)\.com"): + mail.move("INBOX.crap.Facebook") + return + + if ( + False + or is_to_or_from(mail,"@cable.comcast.com") + or is_to_or_from(mail,"@apexsystemsinc.com") + ): + mail.move("INBOX.work.Comcast") + return + + if ( + False + or mail["Subject"].contains("[CS Opportunity Update]") + or mail["Subject"].contains("[CS Majors]") + ): + mail.move("INBOX.crap.CS") + return + if (mail["From"].contains("shumakl@cs.purdue.edu") and mail["Subject"].matches("^cron:")): + mail.move("INBOX.crap.cron") + return + + # Fall 2012 ############################################################ + + if mail["Subject"].contains("Fall-2012-SCI-21000-001:"): + mail.move("INBOX.classes.2012-2.SCI210") + if mail["Subject"].contains("fall-2012-cs-18000"): + mail.move("INBOX.classes.2012-2.CS180") + return + if piazza_topic(mail, "CS 18000"): + mail.move("INBOX.classes.2012-2.CS180.Piazza") + return + if mail["Subject"].contains("Fall-2012-SOC-10000"): + mail.move("INBOX.classes.2012-2.SOC100") + return + + # Spring 2013 ########################################################## + + if mail["Subject"].contains("[CS240] Submission result for"): + mail.move("INBOX.classes.2013-1.CS240.autograder") + return + if mail["Subject"].contains("[CS240]") or mail["Subject"].contains("Spring-2013-CS-24000"): + mail.move("INBOX.classes.2013-1.CS240") + return + if piazza_topic(mail, "CS 240"): + mail.move("INBOX.classes.2013-1.CS240.Piazza") + return + if mail["Subject"].matches(".*(PHYS|CHIP)\s*220.*") or is_to_or_from(mail,"srdas@purdue.edu"): + mail.move("INBOX.classes.2013-1.PHYS220") + return + if mail["Subject"].contains("Spring-2013-SOC-22000"): + mail.move("INBOX.classes.2013-1.SOC220") + return + + # Fall 2013 ############################################################ + + if mail["Subject"].contains("Fall-2013-CS-25000"): + mail.move("INBOX.classes.2013-2.CS250") + return + if piazza_topic(mail, "CS 250") or piazza_topic(mail, "CS 250-FALL2013"): + mail.move("INBOX.classes.2013-2.CS250.Piazza") + return + if mail["Subject"].contains("Fall-2013-CS-25100"): + mail.move("INBOX.classes.2013-2.CS251") + return + if piazza_topic(mail, "CS 251"): + mail.move("INBOX.classes.2013-2.CS251.Piazza") + return + if mail["Subject"].contains("Fall-2013-SPAN-10100"): + mail.move("INBOX.classes.2013-2.SPAN101") + return + if mail["Subject"].contains("Fall-2013-MA-26100"): + mail.move("INBOX.classes.2013-2.MA261") + return + if mail["Subject"].contains("Fall-2013-MA-26500"): + mail.move("INBOX.classes.2013-2.MA265") + return + + # Spring 2014 ########################################################## + + # COM217 + if mail["Subject"].contains("Spring-2014-COM-21700-004"): + mail.move("INBOX.classes.2014-1.COM217") + return + if mail["From"].contains("mixable") and mail["Subject"].matches("^COM 21700"): + mail.move("INBOX.classes.2014-1.COM217.Mixable") + return + # CS252 + if piazza_topic(mail, "CS 25200"): + mail.move("INBOX.classes.2014-1.CS252.Piazza") + return + # CS307 + if is_to_or_from(mail, "dunsmore@purdue.edu") or mail["Subject"].contains("Spring-2014-CS-30700-LE1"): + mail.move("INBOX.classes.2014-1.CS307") + return + # SPAN102 + if mail["Subject"].contains("spring-2014-span-102"): + mail.move("INBOX.classes.2014-1.SPAN102") + return + # STAT350 + if is_to_or_from(mail, "ssellke@purdue.edu"): + mail.move("INBOX.classes.2014-1.STAT350") + return + if piazza_topic(mail, "STAT 35000 (SELLKE)"): + mail.move("INBOX.classes.2014-1.STAT350.Piazza") + return + +handle_mapping = { + "INBOX": my_filters, + } +processor.maildirs = handle_mapping.keys() +for mail in processor: + handle_mapping[mail.maildir](mail) diff --git a/.config/meld/meldrc.ini b/.config/meld/meldrc.ini deleted file mode 120000 index dc1dc0c..0000000 --- a/.config/meld/meldrc.ini +++ /dev/null @@ -1 +0,0 @@ -/dev/null
\ No newline at end of file diff --git a/.config/nanorc b/.config/nanorc new file mode 100644 index 0000000..b21e86b --- /dev/null +++ b/.config/nanorc @@ -0,0 +1,233 @@ +## Please note that you must have configured nano with --enable-nanorc +## for this file to be read! Also note that this file should not be in +## DOS or Mac format, and that characters specially interpreted by the +## shell should not be escaped here. +## +## To make sure a value is disabled, use "unset <option>". +## +## For the options that take parameters, the default value is given. +## Other options are unset by default. +## +## Quotes inside string parameters don't have to be escaped with +## backslashes. The last double quote in the string will be treated as +## its end. For example, for the "brackets" option, ""')>]}" will match +## ", ', ), >, ], and }. + +## Use auto-indentation. +set autoindent + +## Backup files to filename~. +# set backup + +## The directory to put unique backup files in. +set backupdir "~/.nano-backup" + +## Do backwards searches by default. +# set backwards + +## Use bold text instead of reverse video text. +# set boldtext + +## The characters treated as closing brackets when justifying +## paragraphs. They cannot contain blank characters. Only closing +## punctuation, optionally followed by closing brackets, can end +## sentences. +## +# set brackets ""')>]}" + +## Do case sensitive searches by default. +# set casesensitive + +## Constantly display the cursor position in the statusbar. Note that +## this overrides "quickblank". +# set const + +## Use cut to end of line by default. +# set cut + +## Set the line length for wrapping text and justifying paragraphs. +## If fill is 0 or less, the line length will be the screen width less +## this number. +## +# set fill -8 + +## Enable ~/.nano_history for saving and reading search/replace strings. +# set historylog + +## The opening and closing brackets that can be found by bracket +## searches. They cannot contain blank characters. The former set must +## come before the latter set, and both must be in the same order. +## +# set matchbrackets "(<[{)>]}" + +## Use the blank line below the titlebar as extra editing space. +# set morespace + +## Enable mouse support, if available for your system. When enabled, +## mouse clicks can be used to place the cursor, set the mark (with a +## double click), and execute shortcuts. The mouse will work in the X +## Window System, and on the console when gpm is running. +## +# set mouse + +## Allow multiple file buffers (inserting a file will put it into a +## separate buffer). You must have configured with --enable-multibuffer +## for this to work. +## +# set multibuffer + +## Don't convert files from DOS/Mac format. +set noconvert + +## Don't follow symlinks when writing files. +# set nofollow + +## Don't display the helpful shortcut lists at the bottom of the screen. +# set nohelp + +## Don't add newlines to the ends of files. +set nonewlines + +## Don't wrap text at all. +# set nowrap + +## Set operating directory. nano will not read or write files outside +## this directory and its subdirectories. Also, the current directory +## is changed to here, so any files are inserted from this dir. A blank +## string means the operating directory feature is turned off. +## +# set operatingdir "" + +## Preserve the XON and XOFF keys (^Q and ^S). +# set preserve + +## The characters treated as closing punctuation when justifying +## paragraphs. They cannot contain blank characters. Only closing +## punctuation, optionally followed by closing brackets, can end +## sentences. +## +# set punct "!.?" + +## Do quick statusbar blanking. Statusbar messages will disappear after +## 1 keystroke instead of 26. Note that "const" overrides this. +## +# set quickblank + +## The email-quote string, used to justify email-quoted paragraphs. +## This is an extended regular expression if your system supports them, +## otherwise a literal string. Default: +# set quotestr "^([ ]*[#:>\|}])+" +## if you have extended regular expression support, otherwise: +# set quotestr "> " + +## Fix Backspace/Delete confusion problem. +# set rebinddelete + +## Fix numeric keypad key confusion problem. +# set rebindkeypad + +## Do extended regular expression searches by default. +# set regexp + +## Make the Home key smarter. When Home is pressed anywhere but at the +## very beginning of non-whitespace characters on a line, the cursor +## will jump to that beginning (either forwards or backwards). If the +## cursor is already at that position, it will jump to the true +## beginning of the line. +set smarthome + +## Use smooth scrolling as the default. +set smooth + +## Enable soft line wrapping (AKA full line display). +set softwrap + +## Use this spelling checker instead of the internal one. This option +## does not properly have a default value. +## +# set speller "aspell -x -c" + +## Allow nano to be suspended. +# set suspend + +## Use this tab size instead of the default; it must be greater than 0. +# set tabsize 8 + +## Convert typed tabs to spaces. +# set tabstospaces + +## Save automatically on exit, don't prompt. +# set tempfile + +## Enable the new (EXPERIMENTAL) generic undo code, not just for line +## cuts. +# set undo + +## Disallow file modification. Why would you want this in an rcfile? ;) +# set view + +## The two single-column characters used to display the first characters +## of tabs and spaces. 187 in ISO 8859-1 (0000BB in Unicode) and 183 in +## ISO-8859-1 (0000B7 in Unicode) seem to be good values for these. +# set whitespace " " + +## Detect word boundaries more accurately by treating punctuation +## characters as parts of words. +# set wordbounds + + +## Color setup +## +## Format: +## +## syntax "short description" ["filename regex" ...] +## +## The "none" syntax is reserved; specifying it on the command line is +## the same as not having a syntax at all. The "default" syntax is +## special: it takes no filename regexes, and applies to files that +## don't match any other syntax's filename regexes. +## +## color foreground,background "regex" ["regex"...] +## or +## icolor foreground,background "regex" ["regex"...] +## +## "color" will do case sensitive matches, while "icolor" will do case +## insensitive matches. +## +## Valid colors: white, black, red, blue, green, yellow, magenta, cyan. +## For foreground colors, you may use the prefix "bright" to get a +## stronger highlight. +## +## To use multi-line regexes, use the start="regex" end="regex" +## [start="regex" end="regex"...] format. +## +## If your system supports transparency, not specifying a background +## color will use a transparent color. If you don't want this, be sure +## to set the background color to black or white. +## +## If you wish, you may put your syntaxes in separate files. You can +## make use of such files (which can only include "syntax", "color", and +## "icolor" commands) as follows: +## +## include "/path/to/syntax_file.nanorc" +## +## Unless otherwise noted, the name of the syntax file (without the +## ".nanorc" extension) should be the same as the "short description" +## name inside that file. These names are kept fairly short to make +## them easier to remember and faster to type using nano's -Y option. +## +## All regexes should be extended regular expressions. + +## Key bindings +## Please see nanorc(5) for more details on this +## +## Here are some samples to get you going +## +# bind M-W nowrap main +# bind M-A casesens search +# bind ^S research main + +## Set this if your backspace key sends delete most of the time (2.1.3+) +# bind kdel backspace all + + diff --git a/.config/okular/.gitignore b/.config/okular/.gitignore new file mode 100644 index 0000000..4e33b14 --- /dev/null +++ b/.config/okular/.gitignore @@ -0,0 +1 @@ +docdata diff --git a/.config/selected_editor b/.config/selected_editor new file mode 100644 index 0000000..7631487 --- /dev/null +++ b/.config/selected_editor @@ -0,0 +1,4 @@ +# Generated by /usr/bin/select-editor +SELECTED_EDITOR="emacsclient -a '' -c" +ALTERNATE_EDITOR='nano' +VISUAL="$SELECTED_EDITOR" diff --git a/.config/ssh/.gitignore b/.config/ssh/.gitignore new file mode 100644 index 0000000..00977c6 --- /dev/null +++ b/.config/ssh/.gitignore @@ -0,0 +1 @@ +id_* diff --git a/.config/ssh/config b/.config/ssh/config index bb876ba..b6e53d6 100644 --- a/.config/ssh/config +++ b/.config/ssh/config @@ -1,3 +1,24 @@ Host * Protocol 2 + ControlMaster auto + ControlPath ~/.sessions/ssh-%r@%h:%p Compression yes + +Host lore + HostName lore.cs.purdue.edu + User shumakl + +Host data + HostName data.cs.purdue.edu + User shumakl + +Host repo + Port 1863 + HostName repo.parabolagnulinux.org + +Host rshg054 + Port 1863 + HostName parabolagnulinux.org + +Host lukeshu.com + Port 1863 diff --git a/.config/symlinks b/.config/symlinks new file mode 100644 index 0000000..030954c --- /dev/null +++ b/.config/symlinks @@ -0,0 +1,54 @@ +# target link + +# Generic +.config/login.sh .profile + +# X11 +.config/X11/defaults .Xdefaults +.config/X11/clientrc .xinitrc +.config/X11/serverrc .xserverrc +.config/X11/login .xsession + +# Bash +.config/bash/rc.sh .bashrc +.config/bash/login.sh .bash_login +.config/bash/logout.sh .bash_logout + +# Files plucked out of multi-purpose directories +.config/gpg/gpg.conf .gnupg/gpg.conf + +# Individual config files +.config/abs.conf .abs.conf +.config/conkerorrc .conkerorrc +.config/hgk .hgk +.config/hgrc .hgrc +.config/irbrc .irbrc +.config/linphonerc .linphonerc # +.config/selected_editor .selected_editor + +.config/offlineimaprc .offlineimaprc +.cache/offlineimap .offlineimap + +# Directories +.cache/maildirproc/ .maildirproc + +.config/arduino/ .arduino +.config/bazaar/ .bazaar +.config/cpan/ .cpan +.config/emacs/ .emacs.d +.config/icons/ .icons +.config/mozilla/ .mozilla # +.config/mplayer/ .mplayer # +.config/purple/ .purple +.config/ssh/ .ssh +.config/subversion/ .subversion +.config/wmii-hg/ .wmii-hg +.config/wmii/ .wmii # + +# KDE +.config/ .kde/share/apps # +.config/ .kde/share/config # +.kde/ .kde4 # + +# Alias for conkeror +.mozilla/ .conkeror.mozdev.org diff --git a/.config/wmii-hg/config.sh b/.config/wmii-hg/config.sh index 92adb8b..3ddc8d5 100755..100644 --- a/.config/wmii-hg/config.sh +++ b/.config/wmii-hg/config.sh @@ -1,30 +1,16 @@ #!/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 +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`" +HIST="$XDG_CACHE_HOME/wmii/history" +mkdir -p "${HIST%/*}" -# Tagging Rules -echo '/Emacs|Navigator/ -> +sel' >> $WMII_DIR/tagrules -echo '/Eclipse/ -> +sel' >> $WMII_DIR/tagrules -echo '/panel/ -> /.*/' >> $WMII_DIR/tagrules +# Colors tuples: "<text> <background> <border>" +. theme-tango-dark Event() { event=$1; shift; @@ -40,15 +26,52 @@ Event() { ## 2 = middle ## 3 = right - ## WMII-meta events - Quit) ## No args + ## Custom (non-WMII-generated) events + WmiircStart) ## No args + echo ' ==> Starting wmiirc' + is_mounted $WMII_DIR && Event WmiircUnmount + Event WmiircMount + + # Configure wmii + < "`conffile rules`" expand_variables >> $WMII_DIR/rules + < "`conffile ctl-init`" expand_variables >> $WMII_DIR/ctl + scansection Key | cut -sf2 >> $WMII_DIR/keys + # Configure X11 + hsetroot -solid "$WMII_BACKGROUND" + + # Clear the LBar and RBar + find $WMII_DIR/{l,r}bar -type f -delete + # Populate the LBar by emulating [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 + + # Run the autostart action + Action autostart 2>/dev/null & + ;; + WmiircQuit) ## 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;; + WmiircMount) ## No args + echo " -> Creating mountpoint WMII_DIR=$WMII_DIR..." + mkdir -p "$WMII_DIR" + echo " -> Mounting WMII_DIR=$WMII_DIR..." + 9mount -i "unix!$WMII_NAMESPACE/wmii" "$WMII_DIR";; + WmiircUnmount) ## No args + echo " -> Unmounting WMII_DIR=$WMII_DIR..." + 9umount "$WMII_DIR" + echo " -> Removing mountpoint WMII_DIR=$WMII_DIR..." + rmdir "$WMII_DIR";; + ## WMII-meta events + Quit) ## No args + echo ' ==> wmii quit: unmounting' + trap - EXIT + Event WmiircUnmount + Event WmiircQuit;; Warning) ## $@=string notify-send "wmii warning: $*";; Key) ## $1=keystroke @@ -85,9 +108,9 @@ Event() { { case `wmii9menu Delete Fullscreen` in Delete) - echo kill |a $WMII_DIR/client/$client/ctl;; + echo kill >> $WMII_DIR/client/$client/ctl;; Fullscreen) - echo Fullscreen on |a $WMII_DIR/client/$1/ctl;; + echo Fullscreen on >> $WMII_DIR/client/$1/ctl;; esac }& ;; esac;; @@ -102,7 +125,7 @@ Event() { resp=$(wihack -transient $client \ xmessage -nearmouse -buttons Kill,Wait -print "$msg") if [ "$resp" = Kill ]; then - echo slay |a $WMII_DIR/client/$client/ctl + echo slay >> $WMII_DIR/client/$client/ctl fi }& ;; Fullscreen) ## $1=client $2=[on|off] @@ -111,24 +134,24 @@ Event() { ## Tag events CreateTag) ## $1=tag - echo "$WMII_NORMCOLORS" $@ |a $WMII_DIR/lbar/$1;; + echo label "$*" >> $WMII_DIR/lbar/$1;; DestroyTag) ## $1=tag rm $WMII_DIR/lbar/$1;; FocusTag) ## $1=tag - echo "$WMII_FOCUSCOLORS" $1 |a $WMII_DIR/lbar/$1;; + echo colors "$WMII_FOCUSCOLORS" >> $WMII_DIR/lbar/$1;; UnfocusTag) ## $1=tag - echo "$WMII_NORMCOLORS" $1 |a $WMII_DIR/lbar/$1;; + echo colors "$WMII_NORMCOLORS" >> $WMII_DIR/lbar/$1;; UrgentTag) ## $1=tag $2=[Manager|Client] - echo "$WMII_URGENTCOLORS" $1 |a $WMII_DIR/lbar/$1;; + echo "$WMII_URGENTCOLORS" >> $WMII_DIR/lbar/$1;; NotUrgentTag) ## $1=tag $2=[Manager|Client] - echo "$WMII_NORMCOLORS" $1 |a $WMII_DIR/lbar/$1;; + echo "$WMII_NORMCOLORS" >> $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;; + echo view "$@" >> $WMII_DIR/ctl;; LeftMouseDND) ## $1=button $2=bar_item Event LeftBarClick "$@";; @@ -139,10 +162,6 @@ Event() { ;; 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 @@ -153,119 +172,79 @@ Key() { ## Moving around $MODKEY-$LEFT) ## Select the client to the left - echo select left |a $WMII_DIR/tag/sel/ctl;; + echo select left >> $WMII_DIR/tag/sel/ctl;; $MODKEY-$RIGHT) ## Select the client to the right - echo select right |a $WMII_DIR/tag/sel/ctl;; + echo select right >> $WMII_DIR/tag/sel/ctl;; $MODKEY-$UP) ## Select the client above - echo select up |a $WMII_DIR/tag/sel/ctl;; + echo select up >> $WMII_DIR/tag/sel/ctl;; $MODKEY-$DOWN) ## Select the client below - echo select down |a $WMII_DIR/tag/sel/ctl;; + echo select down >> $WMII_DIR/tag/sel/ctl;; $MODKEY-space) ## Toggle between floating and managed layers - echo select toggle |a $WMII_DIR/tag/sel/ctl;; + echo select toggle >> $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;; + echo send sel left >> $WMII_DIR/tag/sel/ctl;; $MODKEY-Shift-$RIGHT) ## Move selected client to the right - wmiir xwrite /tag/sel/ctl send sel right;; + echo send sel right >> $WMII_DIR/tag/sel/ctl;; $MODKEY-Shift-$UP) ## Move selected client up - wmiir xwrite /tag/sel/ctl send sel up;; + echo send sel up >> $WMII_DIR/tag/sel/ctl;; $MODKEY-Shift-$DOWN) ## Move selected client down - wmiir xwrite /tag/sel/ctl send sel down;; - + echo send sel down >> $WMII_DIR/tag/sel/ctl;; $MODKEY-Shift-space) ## Toggle selected client between floating and managed layers - wmiir xwrite /tag/sel/ctl send sel toggle;; + echo send sel toggle >> $WMII_DIR/tag/sel/ctl;; ## 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;; + echo select up stack >> $WMII_DIR/tag/sel/ctl;; + $MODKEY-Control-$DOWN) ## Select the stack below + echo select down stack >> $WMII_DIR/tag/sel/ctl;; ## Client actions $MODKEY-shift-1) ## Toggle selected client's fullsceen state - wmiir xwrite /client/sel/ctl Fullscreen toggle;; + echo Fullscreen toggle >> $WMII_DIR/client/sel/ctl;; $MODKEY-shift-0) ## Close client - wmiir xwrite /client/sel/ctl kill;; + echo kill >> $WMII_DIR/client/sel/ctl;; ## Changing column modes $MODKEY-d) ## Set column to default mode - wmiir xwrite /tag/sel/ctl colmode sel default-max;; + echo colmode sel default-max >> $WMII_DIR/tag/sel/ctl;; $MODKEY-s) ## Set column to stack mode - wmiir xwrite /tag/sel/ctl colmode sel stack-max;; + echo colmode sel stack-max >> $WMII_DIR/tag/sel/ctl;; $MODKEY-m) ## Set column to max mode - wmiir xwrite /tag/sel/ctl colmode sel stack+max;; + echo colmode sel stack+max >> $WMII_DIR/tag/sel/ctl;; ## Running programs $MODKEY-a) ## Open wmii actions menu - Action $(path_ls $WMII_CONFPATH | wimenu -h "${hist}.actions" -n 5000) & ;; + Action $(path_ls $WMII_CONFPATH | wimenu -h "${HIST}.actions" -n 5000) & ;; $MODKEY-x) ## Open program menu - setsid $(wimenu -h "${hist}.progs" -n 5000 <$progsfile) & ;; + PATH=$_PATH setsid $(path_ls $PATH | wimenu -h "${HIST}.progs" -n 5000) & ;; $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;; + PATH=$_PATH setsid x-terminal-emulator & ;; ## Tag actions $MODKEY-t) ## Change to another tag { - tag=$(lstags | wimenu -h "${hist}.tags" -n 50) || return - wmiir xwrite /ctl view $tag + tag=$(lstags | wimenu -h "${HIST}.tags" -n 50) || return + echo view $tag >> $WMII_DIR/ctl }& ;; $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" + tag=$(lstags | wimenu -h "${HIST}.tags" -n 50) || return + echo "$tag" >> $WMII_DIR/client/$sel/tags }& ;; 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" +Action() { + prog=`path_which "$WMII_CONFPATH" $1`; shift + if [ -n "$prog" ]; then + "$prog" "$@" + return $? + else + return 1 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 +} ## End Action diff --git a/.config/wmii-hg/ctl-init b/.config/wmii-hg/ctl-init new file mode 100644 index 0000000..026c0d5 --- /dev/null +++ b/.config/wmii-hg/ctl-init @@ -0,0 +1,5 @@ +font xft:Monospace-8 +focuscolors $WMII_FOCUSCOLORS +normcolors $WMII_NORMCOLORS +grabmod $MODKEY +border 1 diff --git a/.config/wmii-hg/fixes.sh b/.config/wmii-hg/fixes.sh new file mode 100644 index 0000000..5858859 --- /dev/null +++ b/.config/wmii-hg/fixes.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# Fix various deficiencies in either the shell or the filesystem + +## +# Usage: ls DIRECTORY +# Linux's 9p kernel module sometimes omits entries in directory listings +## +unalias ls &>/dev/null +ls() { + local real_ls=("$(which ls)" -1F) + [ $# = 0 ] && set -- "$PWD" + f="${1/#${WMII_DIR}/}" + if [ "$f" = "$1" ]; then + "${real_ls[@]}" "$f" + else + wmiir ls "$f" + fi +} + +## +# Usage: setsid cmd [arguments...] +# I like wmiir's setsid better than linux-utils' +## +setsid() { wmiir setsid "$@"; } diff --git a/.config/wmii-hg/help-events b/.config/wmii-hg/help-events new file mode 100755 index 0000000..08abd18 --- /dev/null +++ b/.config/wmii-hg/help-events @@ -0,0 +1,3 @@ +#!/bin/bash +. include.sh +scansection Event | xmessage -file - diff --git a/.config/wmii-hg/help-keys b/.config/wmii-hg/help-keys new file mode 100755 index 0000000..6f4bd1c --- /dev/null +++ b/.config/wmii-hg/help-keys @@ -0,0 +1,3 @@ +#!/bin/bash +. include.sh +scansection Key | xmessage -file - diff --git a/.config/wmii-hg/rules b/.config/wmii-hg/rules new file mode 100644 index 0000000..cf735c9 --- /dev/null +++ b/.config/wmii-hg/rules @@ -0,0 +1,8 @@ +/wimenu/ floating=always +/panel/ tags=/.*/ floating=always +/xfce4-notifyd/ tags=/.*/ floating=always + +/nm-applet/ floating=off + +/Emacs|Navigator/ force-tags=+sel floating=never +/.*/ floating=off diff --git a/.config/wmii-hg/theme-solarized-dark b/.config/wmii-hg/theme-solarized-dark index 83285ba..fde361b 100644 --- a/.config/wmii-hg/theme-solarized-dark +++ b/.config/wmii-hg/theme-solarized-dark @@ -1,7 +1,7 @@ #!/bin/sh # Solarized-dark -. $HOME/.wmii/theme-solarized +. theme-solarized WMII_BACKGROUND="$SOL_BASE02" diff --git a/.config/wmii-hg/theme-tango b/.config/wmii-hg/theme-tango new file mode 100644 index 0000000..e0e35d4 --- /dev/null +++ b/.config/wmii-hg/theme-tango @@ -0,0 +1,10 @@ +TANGO_butter=("#fce94f" "#edd400" "#c4a000") +TANGO_orange=("#fcaf3e" "#f57900" "#ce5c00") +TANGO_choc=( "#e9b96e" "#c17d11" "#8f5902") +TANGO_cham=( "#8ae234" "#73d216" "#4e9a06") +TANGO_blue=( "#729fcf" "#3465a4" "#204a87") +TANGO_plum=( "#ad7fa8" "#75507b" "#5c3566") +TANGO_red=( "#ef2929" "#cc0000" "#a40000") +TANGO_alum=( "#eeeeec" "#d3d7cf" "#babdb6" + "#888a85" "#555753" "#2e3436") + diff --git a/.config/wmii-hg/theme-tango-dark b/.config/wmii-hg/theme-tango-dark new file mode 100644 index 0000000..04a9fa6 --- /dev/null +++ b/.config/wmii-hg/theme-tango-dark @@ -0,0 +1,11 @@ +#!/bin/bash +# Tango-tark + +. theme-tango + +WMII_BACKGROUND="${TANGO_alum[5]}" + +# ="<text> <background> <border>" +WMII_NORMCOLORS="${TANGO_alum[0]} ${TANGO_alum[4]} ${TANGO_alum[3]}" +WMII_FOCUSCOLORS="${TANGO_alum[5]} ${TANGO_alum[1]} ${TANGO_alum[0]}" +WMII_URGENTCOLORS="${TANGO_orange[0]} ${TANGO_alum[4]} ${TANGO_orange[4]}" diff --git a/.config/wmii-hg/util.sh b/.config/wmii-hg/util.sh new file mode 100644 index 0000000..71dbc41 --- /dev/null +++ b/.config/wmii-hg/util.sh @@ -0,0 +1,129 @@ +#!/bin/bash + +# I moved "fixes" into a separate file because it isn't so much configuration... +. fixes.sh + +################################################################################ +# Added shell features # +################################################################################ + +## +# Usage: dquote STRING +# Safely double-quotes a string. +# It escapes ways to execute code, but not variables. +## +dquote() { + local str=$1 + str="${str//\\/\\\\}" # backslash + str="${str//\"/\\\"}" # dquote + str="${str//\$(/\\\$(}" # $(...) + str="${str//\`/\\\`}" # backtick + printf '"%s"\n' "$str" +} + +## +# Usage: expand_variables +# Expands variables read from /dev/stdin +## +expand_variables() { + while read; do + eval printf "'%s\n'" "$(dquote "$REPLY")" + done +} + +is_mounted() { + local dir="$(readlink -m $1)" + local mntpnt="$(cut -d' ' -f2 /proc/mounts|grep -Fx -- "$dir")" + [[ $dir = "$mntpnt" ]] + return $? +} + +################################################################################ +# PATH manipulation # +################################################################################ + +## +# Usage: path_ls PATH +# List executables in PATH (PATH is delimited by `:') +## +path_ls() { + local dirs + IFS=: dirs=($@) + find -L "${dirs[@]}" -maxdepth 1 -type f -executable -printf '%f\n' 2>/dev/null | sort -u +} + +## +# Usage: path_which PATH PROGRAM +# Find the full path of PROGRAM by searching PATH +## +path_which() { + local mypath=$1 + local prog=$2 + local which=$(which which) + PATH="$mypath" "$which" -- "$prog" 2>/dev/null +} + +################################################################################ +# wmii convenience functions # +################################################################################ + +## +# Usage: lstags +# Lists wmii tags +## +lstags() { + ls "$WMII_DIR/tag" | sed -e 's@/$@@' -e '/^sel$/d' +} + +################################################################################ +# X11 functions # +################################################################################ + +## +# Usage: connected_to_x_server +# Return status indicates whether there is an X server at $DISPLAY +## +connected_to_x_server() { + xdpyinfo &>/dev/null + return $? +} + +################################################################################ +# My wmii configuration # +################################################################################ + +## +# Usage: scansection [SECTION] +# Reads the doc comments from a section of wmiirc. +# If SECTION is not given, it reads all doc comments. +## +scansection() { + local file=$(conffile config.sh) + local sec=$1 + local tmp=$(mktemp --tmpdir wmii-scansecion.XXXXXXXXXX) + # Isolate the sections we want. + if [ -n "$sec" ]; then + # Find the section + < "$file" sed -n "/^\s*$sec\s*()/,/##\s*End $sec/p" | sed '1d;$d'> "$tmp" + else + # Remove extra lines that mark the end of a section + < "$file" sed "/\s*}\s*##\s*End\s/d" > "$tmp" + fi + < "$tmp" sed -n '/##/p' | while read; do + var="$(echo "$REPLY" | sed -nr 's/^\s*(.*)\)\s*##.*/\1/p')" + comment="$(echo "$REPLY" | sed -r 's/.*## ?//')" + if [ -z "$var" ]; then + printf '%s\n' "$comment" + else + printf '\t%s\t%s\n' "$(echo "$var"|expand_variables)" "$comment" + fi + done + rm -- "$tmp" +} + +## +# Usage: conffile FILE +## +conffile() { + echo "$HOME/.wmii-hg/$1" +} diff --git a/.config/wmii-hg/wmiirc b/.config/wmii-hg/wmiirc new file mode 100755 index 0000000..a6bc4b4 --- /dev/null +++ b/.config/wmii-hg/wmiirc @@ -0,0 +1,15 @@ +#!/bin/bash +export _PATH="$PATH" +export PATH="$WMII_CONFPATH:$PATH" + +. include.sh + +wmiir xwrite /event WmiircQuit # close any existing wmiirc's + +Event WmiircStart + +trap "Event Quit" EXIT + +wmiir read /event 2>/dev/null | while read event; do + Event $event +done |