From 927aedb7605bba96a6ea2fc707ab026946b4d2b0 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 21 Mar 2014 16:10:08 -0400 Subject: backport changes from my laptop --- .config/abs.conf | 1 + .config/bash/rc.d/emacs.sh | 43 ++++++++++++++-- .config/bash/rc.sh | 12 ++--- .config/login.sh | 34 +++++++++---- .config/lxpanel/default/panels/panel | 11 ---- .config/maildirproc/att.rc | 33 ++++++++---- .config/maildirproc/purdue.rc | 58 ++++++++++++++++++---- .config/ssh/.gitignore | 1 + .config/ssh/config | 13 +++-- .config/symlinks | 23 +++++---- .config/wmii-hg/fixes.sh | 6 +-- .config/wmii-hg/util.sh | 35 ++++++------- .../xfconf/xfce-perchannel-xml/xfce4-notifyd.xml | 6 --- 13 files changed, 179 insertions(+), 97 deletions(-) create mode 100644 .config/abs.conf create mode 100644 .config/ssh/.gitignore delete mode 100644 .config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml 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/rc.d/emacs.sh b/.config/bash/rc.d/emacs.sh index f484bbb..9c1bf4d 100644 --- a/.config/bash/rc.d/emacs.sh +++ b/.config/bash/rc.d/emacs.sh @@ -1,8 +1,41 @@ +#!/bin/bash + case "$TERM" in eterm*) - SELECTED_EDITOR='emacsclient' - EDITOR=$SELECTED_EDITOR - VISUAL=$SELECTED_EDITOR - export SELECTED_EDITOR EDITOR VISUAL - :;; + SELECTED_EDITOR='emacsclient' + EDITOR=$SELECTED_EDITOR + VISUAL=$SELECTED_EDITOR + export SELECTED_EDITOR EDITOR VISUAL + # The following uses the variable _EMACS_BUFFER to store some state + _emacs_quote() { + local str="$*" + str="${str//\\/\\\\}" + str="${str//\"/\\\"}" + str="\"${str}\"" + printf '%s' "$str" + } + _emacs_rename_terminal() { + local name="$(_emacs_quote "$(_emacs_get_desired_buffer_name)")" + if [[ -n $_EMACS_BUFFER ]]; then + local buffer="(get-buffer $_EMACS_BUFFER)" + else + local buffer='(window-buffer (selected-window))' + fi + _EMACS_BUFFER="$(emacsclient -e "(with-current-buffer ${buffer} (rename-buffer ${name} t)))" 2>/dev/null)" + } + _emacs_get_short_cwd() { + local base=$1 + local suffix='' + if [[ $base =~ (/(src|pkg|doc|pkg-libre|src-libre|trunk|tags|branches))*$ ]]; then + suffix=$BASH_REMATCH + base=${base%$suffix} + fi + base=${base##*/} + echo ${base}${suffix} + } + _emacs_get_desired_buffer_name() { + echo "*ansi-term*<$(_emacs_get_short_cwd "$PWD")>" + } + PROMPT_COMMAND='_emacs_rename_terminal "$(_emacs_get_desired_buffer_name)"' + :;; esac diff --git a/.config/bash/rc.sh b/.config/bash/rc.sh index 447796a..2bf60bc 100644 --- a/.config/bash/rc.sh +++ b/.config/bash/rc.sh @@ -13,17 +13,16 @@ shopt -s checkhash ################################################################################ # History settings -export HISTCONTROL=ignoredups -export HISTFILE=${XDG_CACHE_HOME}/bash/history -export HISTTIMEFORMAT='[%Y-%m-%d %H:%M] ' -export HISTSIZE=5000 +HISTCONTROL=ignoredups +HISTFILE=${XDG_CACHE_HOME}/bash/history +HISTTIMEFORMAT='[%Y-%m-%d %H:%M] ' +HISTSIZE=5000 shopt -s histappend # append to the history file, don't overwrite it mkdir -p "${HISTFILE%/*}" # General settings shopt -s checkwinsize # update the values of LINES and COLUMNS shopt -s globstar # Let ** recursively scan directories -PROMPT_COMMAND='' ################################################################################ # Overly complicated setting of PS1 # @@ -38,6 +37,7 @@ term-title() { esac printf "$fmt" "$*" } +PROMPT_COMMAND='' make_prompt() { echo "${BOLD}${GREEN}\u@\h${BLUE}:\w${RESET}" @@ -57,7 +57,7 @@ if tput setaf 1 &>/dev/null; then _STATUS+="\$(v=\$?; [[ \$v = 0 ]] && c='${GREEN}' || c='${RED}'; printf %s%03i \$c \$v)" _STATUS+="${RESET}${BOLD}]${RESET}" else - _STATUS='[$?]' + _STATUS='[$(printf "%03i" $?)]' fi PS1="${_STATUS} $(make_prompt)"'\n\$ ' unset RESET BOLD RED GREEN BLUE _STATUS diff --git a/.config/login.sh b/.config/login.sh index 3dad752..2687a8e 100644 --- a/.config/login.sh +++ b/.config/login.sh @@ -27,9 +27,15 @@ export TMPDIR="$HOME/tmp" # XDG ################################################################ . "$HOME/.local/lib/xdg.sh" +ln -sf -- "$XDG_RUNTIME_DIR/sessions" ~/.sessions # Settings ########################################################### +# Spell check +if [[ -z "$DICTIONARY" ]] && [[ -n "$LANG" ]]; then + export DICTIONARY="${LANG%%.*}" +fi + # Text editor if [[ -f "$HOME/.selected_editor" ]]; then . "$HOME/.selected_editor" @@ -41,13 +47,17 @@ fi # GPG if [[ -z $GPGKEY ]] && [[ -f "${HOME}/.gnupg/gpg.conf" ]]; then + echo 'login: Setting GPGKEY' export GPGKEY=`sed -nr 's/^\s*default-key\s+//p' "${HOME}/.gnupg/gpg.conf"` fi if [[ -z "$(pgrep -u `whoami` gpg-agent)" ]] && [[ -n $XDG_RUNTIME_DIR ]] && type gpg-agent &>/dev/null; then + echo 'login: Starting gpg-agent' mkdir -p "${XDG_RUNTIME_DIR}/sessions" - gpg-agent --daemon --write-env-file "${XDG_RUNTIME_DIR}/sessions/gpg" &>/dev/null + gpg-agent --daemon --write-env-file "${XDG_RUNTIME_DIR}/sessions/gpg" >/dev/null fi if [[ -f "${XDG_RUNTIME_DIR}/sessions/gpg" ]]; then + echo 'login: Setting gpg-agent info:' + cat "${XDG_RUNTIME_DIR}/sessions/gpg" . "${XDG_RUNTIME_DIR}/sessions/gpg" export GPG_AGENT_INFO #export SSH_AUTH_SOCK @@ -65,19 +75,21 @@ export _JAVA_OPTIONS # X11 if [[ -z $XAUTHORITY ]]; then - export XAUTHORITY="$HOME/.Xauthority" + #export XAUTHORITY="$HOME/.Xauthority" + mkdir -p "${XDG_RUNTIME_DIR}/sessions" + export XAUTHORITY="${XDG_RUNTIME_DIR}/sessions/Xauthority" fi # D-Bus -if [[ -z $DBUS_SESSION_BUS_ADDRESS ]] && type dbus-launch &>/dev/null; then - # I want a separate instance for each login - #dbus-launch > "${HOME}/.cache/sessions/dbus" - #. "${HOME}/.cache/sessions/dbus" - eval `dbus-launch` - - export DBUS_SESSION_BUS_ADDRESS - export DBUS_SESSION_BUS_PID -fi +# if [[ -z $DBUS_SESSION_BUS_ADDRESS ]] && type dbus-launch &>/dev/null; then +# # I want a separate instance for each login +# #dbus-launch > "${HOME}/.cache/sessions/dbus" +# #. "${HOME}/.cache/sessions/dbus" +# eval `dbus-launch` + +# export DBUS_SESSION_BUS_ADDRESS +# export DBUS_SESSION_BUS_PID +# fi # Load any box-specific stuff if [[ -f "$XDG_CONFIG_HOME/login.local.sh" ]]; then diff --git a/.config/lxpanel/default/panels/panel b/.config/lxpanel/default/panels/panel index 304f201..93bdb61 100644 --- a/.config/lxpanel/default/panels/panel +++ b/.config/lxpanel/default/panels/panel @@ -31,17 +31,6 @@ Plugin { image=/usr/share/lxpanel/images/my-computer.png system { } - separator { - } - item { - command=run - } - separator { - } - item { - image=gnome-logout - command=logout - } } } diff --git a/.config/maildirproc/att.rc b/.config/maildirproc/att.rc index e862b3f..381ce8f 100644 --- a/.config/maildirproc/att.rc +++ b/.config/maildirproc/att.rc @@ -76,7 +76,7 @@ def handle_incoming_unknown(mail): def my_filters(mail): # Sort mail from GNU mailing lists - for list in [ 'bug-gsrc', 'bug-make', 'help-make', 'social', 'help-grub', 'bug-gnuzilla' ]: + for list in [ 'bug-gsrc', 'bug-make', 'help-make', 'social', 'help-grub', 'bug-gnuzilla', 'bug-librejs' ]: if ( False or mail["List-Id"].matches(list+"\.gnu\.org") @@ -101,6 +101,9 @@ def my_filters(mail): if mail["List-Id"].matches("maintenance.lists.parabolagnulinux.org"): if mail["From"].contains("monit@"): if mail["Message-Id"].contains("@repo.parabolagnulinux.org"): + if mail["Subject"].matches("^\[Maintenance\] monit alert -- (Execution|Connection) (succeeded|failed) sshd$"): + mail.move(".software.parabola-maintenance.monit-repo.sshd") + return mail.move(".software.parabola-maintenance.monit-repo") return if mail["Message-Id"].contains("@rshg054.dnsready.net"): @@ -125,6 +128,9 @@ def my_filters(mail): or is_to_or_from(mail, "parabolagnulinux.org") or is_to_or_from(mail, "kiwwwi.com.ar") ): + if mail["Subject"].contains("[Django]"): + mail.move(".software.parabola-maintenance.django") + return mail.move(".software.parabola-dev") return @@ -132,6 +138,10 @@ def my_filters(mail): mail.move(".software.pacman-dev") return + if (mail["List-Id"].matches("systemd-devel.lists.freedesktop.org")): + mail.move(".software.systemd-devel") + return + for subject_re in [ "\[Stow-[^\]]*\].*", ]: @@ -179,6 +189,7 @@ def my_filters(mail): 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") + or is_to_or_from(mail,"crossroadsbsa.org") ): mail.move(".Troop276") return @@ -250,20 +261,21 @@ def my_filters(mail): # Sort mail from software people for address in [ - "gnu.org", - "gnome.org", + "@archlinux.org", + "@fsf.org", + "@github.com", + "canonical.org", + "cnuk.org", "eff.org", + "esr@thyrsus.com", + "foocorp.net", "gitorious.org", - "sourceforge.com", + "gnome.org", + "gnu.org", "ietf.org", "kde.org", + "sourceforge.com", "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") @@ -305,6 +317,7 @@ def my_filters(mail): or mail["Subject"].contains("newsletter") or mail["From"].contains("Info@mailing.jamendo.com") or mail["From"].contains("info@demandprogress.org") + or (mail["From"].contains("@sparkfun.com") and mail["Message-Id"].contains("rsgsv.net")) ): mail.move(".misc.Newsletters") return diff --git a/.config/maildirproc/purdue.rc b/.config/maildirproc/purdue.rc index 0ffc1e6..6d4b913 100644 --- a/.config/maildirproc/purdue.rc +++ b/.config/maildirproc/purdue.rc @@ -27,7 +27,7 @@ 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 ######################################################## @@ -37,11 +37,11 @@ def my_filters(mail): or is_to_or_from(mail,"Purduealumni@purdue.edu") or is_to_or_from(mail,"pase@purdue.edu") ): - mail.move("INBOX.PASE") + mail.move("INBOX.crap.PASE") return if mail["Subject"].contains("[PLUG]"): - mail.move("INBOX.PLUG") + mail.move("INBOX.crap.PLUG") return if mail["From"].matches(".*bursar.*@purdue\.edu"): @@ -49,15 +49,19 @@ def my_filters(mail): return if mail["From"].contains("mailhub-admin@purdue.edu"): - mail.move("INBOX.mailhub-admin") + mail.move("INBOX.crap.mailhub-admin") return if mail["From"].matches("pmx-.*@purdue.edu"): - mail.move("INBOX.spam") + mail.move("INBOX.crap.spam") return if is_to_or_from(mail,"linkedin.com"): - mail.move("INBOX.LinkedIn") + mail.move("INBOX.crap.LinkedIn") + return + + if is_to_or_from(mail,"follet.com"): + mail.move("INBOX.Follet") return if ( @@ -65,12 +69,14 @@ def my_filters(mail): 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.CollegeStation") + mail.move("INBOX.housing.CollegeStation") return if mail["From"].matches("facebook(|mail)\.com"): - mail.move("INBOX.Facebook") + mail.move("INBOX.crap.Facebook") return if ( @@ -78,7 +84,7 @@ def my_filters(mail): or is_to_or_from(mail,"@cable.comcast.com") or is_to_or_from(mail,"@apexsystemsinc.com") ): - mail.move("INBOX.Comcast") + mail.move("INBOX.work.Comcast") return if ( @@ -86,7 +92,10 @@ def my_filters(mail): or mail["Subject"].contains("[CS Opportunity Update]") or mail["Subject"].contains("[CS Majors]") ): - mail.move("INBOX.CS") + 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 ############################################################ @@ -145,6 +154,35 @@ def my_filters(mail): 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, } 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 894af44..b6e53d6 100644 --- a/.config/ssh/config +++ b/.config/ssh/config @@ -1,16 +1,16 @@ Host * Protocol 2 ControlMaster auto - ControlPath ~/.ssh/master-%r@%h:%p + ControlPath ~/.sessions/ssh-%r@%h:%p Compression yes Host lore - HostName lore.cs.purdue.edu - User shumakl + HostName lore.cs.purdue.edu + User shumakl Host data - HostName data.cs.purdue.edu - User shumakl + HostName data.cs.purdue.edu + User shumakl Host repo Port 1863 @@ -20,6 +20,5 @@ Host rshg054 Port 1863 HostName parabolagnulinux.org -Host lukeshu +Host lukeshu.com Port 1863 - HostName 199.180.255.147 diff --git a/.config/symlinks b/.config/symlinks index dfd06d4..030954c 100644 --- a/.config/symlinks +++ b/.config/symlinks @@ -15,39 +15,40 @@ .config/bash/logout.sh .bash_logout # Files plucked out of multi-purpose directories -.config/ssh/config .ssh/config .config/gpg/gpg.conf .gnupg/gpg.conf # Individual config files +.config/abs.conf .abs.conf .config/conkerorrc .conkerorrc -.config/hgrc .hgrc .config/hgk .hgk +.config/hgrc .hgrc .config/irbrc .irbrc -.config/linphonerc .linphonerc +.config/linphonerc .linphonerc # .config/selected_editor .selected_editor -.cache/offlineimap .offlineimap .config/offlineimaprc .offlineimaprc +.cache/offlineimap .offlineimap # Directories .cache/maildirproc/ .maildirproc -.config/icons/ .icons + .config/arduino/ .arduino .config/bazaar/ .bazaar .config/cpan/ .cpan .config/emacs/ .emacs.d +.config/icons/ .icons .config/mozilla/ .mozilla # -.config/mplayer/ .mplayer -.config/nanorc .nanorc +.config/mplayer/ .mplayer # .config/purple/ .purple +.config/ssh/ .ssh .config/subversion/ .subversion -.config/wmii/ .wmii # .config/wmii-hg/ .wmii-hg +.config/wmii/ .wmii # # KDE -.config/ .kde/share/apps -.config/ .kde/share/config -.kde/ .kde4 +.config/ .kde/share/apps # +.config/ .kde/share/config # +.kde/ .kde4 # # Alias for conkeror .mozilla/ .conkeror.mozdev.org diff --git a/.config/wmii-hg/fixes.sh b/.config/wmii-hg/fixes.sh index aa09157..5858859 100644 --- a/.config/wmii-hg/fixes.sh +++ b/.config/wmii-hg/fixes.sh @@ -7,11 +7,11 @@ ## unalias ls &>/dev/null ls() { - real_ls="`which ls` -1F" - [ $# = 0 ] && set -- "`pwd`" + local real_ls=("$(which ls)" -1F) + [ $# = 0 ] && set -- "$PWD" f="${1/#${WMII_DIR}/}" if [ "$f" = "$1" ]; then - $real_ls "$f" + "${real_ls[@]}" "$f" else wmiir ls "$f" fi diff --git a/.config/wmii-hg/util.sh b/.config/wmii-hg/util.sh index a4c4bb4..71dbc41 100644 --- a/.config/wmii-hg/util.sh +++ b/.config/wmii-hg/util.sh @@ -13,7 +13,7 @@ # It escapes ways to execute code, but not variables. ## dquote() { - str=$1 + local str=$1 str="${str//\\/\\\\}" # backslash str="${str//\"/\\\"}" # dquote str="${str//\$(/\\\$(}" # $(...) @@ -32,8 +32,8 @@ expand_variables() { } is_mounted() { - dir="$(readlink -m $1)" - mntpnt="$(cut -d' ' -f2 /proc/mounts|grep -- "$dir")" + local dir="$(readlink -m $1)" + local mntpnt="$(cut -d' ' -f2 /proc/mounts|grep -Fx -- "$dir")" [[ $dir = "$mntpnt" ]] return $? } @@ -47,8 +47,9 @@ is_mounted() { # List executables in PATH (PATH is delimited by `:') ## path_ls() { - dirs="`echo "$@"|sed 'y/:/ /'`" - find -L $dirs -maxdepth 1 -type f -executable -printf '%f\n' 2>/dev/null | sort -u + local dirs + IFS=: dirs=($@) + find -L "${dirs[@]}" -maxdepth 1 -type f -executable -printf '%f\n' 2>/dev/null | sort -u } ## @@ -56,9 +57,9 @@ path_ls() { # Find the full path of PROGRAM by searching PATH ## path_which() { - mypath=$1 - prog=$2 - which=`which which` + local mypath=$1 + local prog=$2 + local which=$(which which) PATH="$mypath" "$which" -- "$prog" 2>/dev/null } @@ -71,7 +72,7 @@ path_which() { # Lists wmii tags ## lstags() { - ls $WMII_DIR/tag | sed -e 's@/@@' -e '/^sel$/d' + ls "$WMII_DIR/tag" | sed -e 's@/$@@' -e '/^sel$/d' } ################################################################################ @@ -97,18 +98,18 @@ connected_to_x_server() { # If SECTION is not given, it reads all doc comments. ## scansection() { - file=`conffile config.sh` - sec=$1 - tmp=`mktemp` + 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 + < "$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 + < "$file" sed "/\s*}\s*##\s*End\s/d" > "$tmp" fi - < $tmp sed -n '/##/p' | while read; do + < "$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 @@ -117,12 +118,12 @@ scansection() { printf '\t%s\t%s\n' "$(echo "$var"|expand_variables)" "$comment" fi done - rm $tmp + rm -- "$tmp" } ## # Usage: conffile FILE ## conffile() { - echo "$HOME/.wmii-hg/$@" + echo "$HOME/.wmii-hg/$1" } diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml b/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml deleted file mode 100644 index 2dd5c11..0000000 --- a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - -- cgit v1.2.3-54-g00ecf