From 44885fa01e6348f211eac0cfed47d3e237410286 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 27 Jan 2013 17:42:06 -0500 Subject: mv .wmii .config/wmii; ln -s .config/wmii .wmii --- .config/wmii/autostart | 11 ++ .config/wmii/config.sh | 249 ++++++++++++++++++++++++++++++++++++++ .config/wmii/ctl-init | 5 + .config/wmii/fixes.sh | 24 ++++ .config/wmii/help-events | 3 + .config/wmii/help-keys | 3 + .config/wmii/include.sh | 11 ++ .config/wmii/quit | 3 + .config/wmii/rbar_battery | 9 ++ .config/wmii/rbar_clock | 9 ++ .config/wmii/rbar_cpu | 12 ++ .config/wmii/rbar_wifi | 9 ++ .config/wmii/tagrules | 3 + .config/wmii/theme-solarized | 16 +++ .config/wmii/theme-solarized-dark | 12 ++ .config/wmii/util.sh | 128 ++++++++++++++++++++ .config/wmii/wmiirc | 12 ++ .wmii | 1 + .wmii/autostart | 11 -- .wmii/config.sh | 249 -------------------------------------- .wmii/ctl-init | 5 - .wmii/fixes.sh | 24 ---- .wmii/help-events | 3 - .wmii/help-keys | 3 - .wmii/include.sh | 11 -- .wmii/quit | 3 - .wmii/rbar_battery | 9 -- .wmii/rbar_clock | 9 -- .wmii/rbar_cpu | 12 -- .wmii/rbar_wifi | 9 -- .wmii/tagrules | 3 - .wmii/theme-solarized | 16 --- .wmii/theme-solarized-dark | 12 -- .wmii/util.sh | 128 -------------------- .wmii/wmiirc | 12 -- 35 files changed, 520 insertions(+), 519 deletions(-) create mode 100755 .config/wmii/autostart create mode 100644 .config/wmii/config.sh create mode 100644 .config/wmii/ctl-init create mode 100644 .config/wmii/fixes.sh create mode 100755 .config/wmii/help-events create mode 100755 .config/wmii/help-keys create mode 100644 .config/wmii/include.sh create mode 100755 .config/wmii/quit create mode 100755 .config/wmii/rbar_battery create mode 100755 .config/wmii/rbar_clock create mode 100755 .config/wmii/rbar_cpu create mode 100755 .config/wmii/rbar_wifi create mode 100644 .config/wmii/tagrules create mode 100644 .config/wmii/theme-solarized create mode 100644 .config/wmii/theme-solarized-dark create mode 100644 .config/wmii/util.sh create mode 100755 .config/wmii/wmiirc create mode 120000 .wmii delete mode 100755 .wmii/autostart delete mode 100644 .wmii/config.sh delete mode 100644 .wmii/ctl-init delete mode 100644 .wmii/fixes.sh delete mode 100755 .wmii/help-events delete mode 100755 .wmii/help-keys delete mode 100644 .wmii/include.sh delete mode 100755 .wmii/quit delete mode 100755 .wmii/rbar_battery delete mode 100755 .wmii/rbar_clock delete mode 100755 .wmii/rbar_cpu delete mode 100755 .wmii/rbar_wifi delete mode 100644 .wmii/tagrules delete mode 100644 .wmii/theme-solarized delete mode 100644 .wmii/theme-solarized-dark delete mode 100644 .wmii/util.sh delete mode 100755 .wmii/wmiirc diff --git a/.config/wmii/autostart b/.config/wmii/autostart new file mode 100755 index 0000000..1370689 --- /dev/null +++ b/.config/wmii/autostart @@ -0,0 +1,11 @@ +#!/bin/bash +. "$HOME/.wmii/include.sh" + +daemon lxpanel &> /dev/null +#daemon nm-applet &> /dev/null +daemon notifyd &> /dev/null +daemon blueman-applet &> /dev/null +#daemon linphone --iconified &> /dev/null + +Action rbar_cpu 01 & +Action rbar_clock 99 & diff --git a/.config/wmii/config.sh b/.config/wmii/config.sh new file mode 100644 index 0000000..1dac0ad --- /dev/null +++ b/.config/wmii/config.sh @@ -0,0 +1,249 @@ +#!/bin/bash + +MODKEY=Mod4 # "super" +UP=p +DOWN=n +LEFT=b +RIGHT=f + +HIST="`conffile history`" + +# Colors tuples: " " +. `conffile theme-solarized-dark` + +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 + + ## Custom (non-WMII-generated) events + WmiircStart) ## No args + echo ' ==> Starting wmiirc' + is_mounted $WMII_DIR && Event WmiircUnmount + Event WmiircMount + + # Configure wmii + < "`conffile tagrules`" expand_variables >> $WMII_DIR/tagrules + < "`conffile ctl-init`" expand_variables >> $WMII_DIR/ctl + scansection Key | cut -sf2 >> $WMII_DIR/keys + # Configure X11 + xsetroot -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' + 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 + 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 >> $WMII_DIR/client/$client/ctl;; + Fullscreen) + echo Fullscreen on >> $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 >> $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" $@ >> $WMII_DIR/lbar/$1;; + DestroyTag) ## $1=tag + rm $WMII_DIR/lbar/$1;; + FocusTag) ## $1=tag + echo "$WMII_FOCUSCOLORS" $1 >> $WMII_DIR/lbar/$1;; + UnfocusTag) ## $1=tag + echo "$WMII_NORMCOLORS" $1 >> $WMII_DIR/lbar/$1;; + UrgentTag) ## $1=tag $2=[Manager|Client] + echo "$WMII_URGENTCOLORS" $1 >> $WMII_DIR/lbar/$1;; + NotUrgentTag) ## $1=tag $2=[Manager|Client] + echo "$WMII_NORMCOLORS" $1 >> $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 "$@" >> $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 "$@";; + esac +} ## End Event + +# Key Bindings +Key() { + key=$1 + case "$key" in + ## Moving around + + $MODKEY-$LEFT) ## Select the client to the left + echo select left >> $WMII_DIR/tag/sel/ctl;; + $MODKEY-$RIGHT) ## Select the client to the right + echo select right >> $WMII_DIR/tag/sel/ctl;; + $MODKEY-$UP) ## Select the client above + echo select up >> $WMII_DIR/tag/sel/ctl;; + $MODKEY-$DOWN) ## Select the client below + echo select down >> $WMII_DIR/tag/sel/ctl;; + + $MODKEY-space) ## Toggle between floating and managed layers + echo select toggle >> $WMII_DIR/tag/sel/ctl;; + + ## Moving clients around + + $MODKEY-Shift-$LEFT) ## Move selected client to the left + echo send sel left >> $WMII_DIR/tag/sel/ctl;; + $MODKEY-Shift-$RIGHT) ## Move selected client to the right + echo send sel right >> $WMII_DIR/tag/sel/ctl;; + $MODKEY-Shift-$UP) ## Move selected client up + echo send sel up >> $WMII_DIR/tag/sel/ctl;; + $MODKEY-Shift-$DOWN) ## Move selected client down + echo send sel down >> $WMII_DIR/tag/sel/ctl;; + $MODKEY-Shift-space) ## Toggle selected client between floating and managed layers + echo send sel toggle >> $WMII_DIR/tag/sel/ctl;; + + ## Moving through stacks + $MODKEY-Control-$UP) ## Select the stack above + 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 + echo Fullscreen toggle >> $WMII_DIR/client/sel/ctl;; + $MODKEY-shift-0) ## Close client + echo kill >> $WMII_DIR/client/sel/ctl;; + + ## Changing column modes + $MODKEY-d) ## Set column to default mode + echo colmode sel default-max >> $WMII_DIR/tag/sel/ctl;; + $MODKEY-s) ## Set column to stack mode + echo colmode sel stack-max >> $WMII_DIR/tag/sel/ctl;; + $MODKEY-m) ## Set column to max mode + 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) & ;; + $MODKEY-x) ## Open program menu + setsid $(path_ls $PATH | wimenu -h "${HIST}.progs" -n 5000) & ;; + $MODKEY-Return) ## Launch a terminal + setsid x-terminal-emulator & ;; + + ## Tag actions + $MODKEY-t) ## Change to another 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 + echo "$tag" >> $WMII_DIR/client/$sel/tags + }& ;; + esac +} ## End Key + +Action() { + prog=`path_which "$WMII_CONFPATH" $1`; shift + if [ -n "$prog" ]; then + "$prog" "$@" + return $? + else + return 1 + fi +} ## End Action diff --git a/.config/wmii/ctl-init b/.config/wmii/ctl-init new file mode 100644 index 0000000..026c0d5 --- /dev/null +++ b/.config/wmii/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/fixes.sh b/.config/wmii/fixes.sh new file mode 100644 index 0000000..aa09157 --- /dev/null +++ b/.config/wmii/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() { + 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/help-events b/.config/wmii/help-events new file mode 100755 index 0000000..25b7d41 --- /dev/null +++ b/.config/wmii/help-events @@ -0,0 +1,3 @@ +#!/bin/bash +. "$HOME/.wmii/include.sh" +scansection Event | xmessage -file - diff --git a/.config/wmii/help-keys b/.config/wmii/help-keys new file mode 100755 index 0000000..c6e7038 --- /dev/null +++ b/.config/wmii/help-keys @@ -0,0 +1,3 @@ +#!/bin/bash +. "$HOME/.wmii/include.sh" +scansection Key | xmessage -file - diff --git a/.config/wmii/include.sh b/.config/wmii/include.sh new file mode 100644 index 0000000..d4e58c3 --- /dev/null +++ b/.config/wmii/include.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +if [ -z "$WMII_NAMESPACE" ]; then + export WMII_NAMESPACE="`wmiir namespace`" +fi +if [ -z "$WMII_DIR" ]; then + export WMII_DIR="$HOME/n/wmii" +fi + +. "$HOME/.wmii/util.sh" +. "$HOME/.wmii/config.sh" diff --git a/.config/wmii/quit b/.config/wmii/quit new file mode 100755 index 0000000..876a60e --- /dev/null +++ b/.config/wmii/quit @@ -0,0 +1,3 @@ +#!/bin/bash +. "$HOME/.wmii/include.sh" +echo quit >> $WMII_DIR/ctl diff --git a/.config/wmii/rbar_battery b/.config/wmii/rbar_battery new file mode 100755 index 0000000..ae8980a --- /dev/null +++ b/.config/wmii/rbar_battery @@ -0,0 +1,9 @@ +#!/bin/bash +. "$HOME/.wmii/include.sh" + +priority=$1 + +while connected_to_x_server; do + acpi -b >> "$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..18c4493 --- /dev/null +++ b/.config/wmii/rbar_clock @@ -0,0 +1,9 @@ +#!/bin/bash +. "$HOME/.wmii/include.sh" + +priority=$1 + +while connected_to_x_server; do + date >> "$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..22da985 --- /dev/null +++ b/.config/wmii/rbar_cpu @@ -0,0 +1,12 @@ +#!/bin/bash +. "$HOME/.wmii/include.sh" + +priority=$1 + +while connected_to_x_server; 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;') >> "$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)/')' ]' >> "$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..2ada834 --- /dev/null +++ b/.config/wmii/rbar_wifi @@ -0,0 +1,9 @@ +#!/bin/bash +. "$HOME/.wmii/include.sh" + +priority=$1 + +while connected_to_x_server; do + echo 'Wlan0:' $(iwconfig wlan0 | sed 's/ /\n/g' | grep Quality) >> "$WMII_DIR/rbar/${priority}_wifi" + sleep 1 +done diff --git a/.config/wmii/tagrules b/.config/wmii/tagrules new file mode 100644 index 0000000..990151f --- /dev/null +++ b/.config/wmii/tagrules @@ -0,0 +1,3 @@ +/Emacs|Navigator/ -> +sel +/Eclipse/ -> +sel +/panel/ -> /.*/ 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" + +# =" " +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/util.sh b/.config/wmii/util.sh new file mode 100644 index 0000000..43d7d4a --- /dev/null +++ b/.config/wmii/util.sh @@ -0,0 +1,128 @@ +#!/bin/bash + +# I moved "fixes" into a separate file because it isn't so much configuration... +. "$HOME/.wmii/fixes.sh" + +################################################################################ +# Added shell features # +################################################################################ + +## +# Usage: dquote STRING +# Safely double-quotes a string. +# It escapes ways to execute code, but not variables. +## +dquote() { + 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() { + dir="$(readlink -m $1)" + mntpnt="$(cut -d' ' -f2 /proc/mounts|grep -- "$dir")" + [[ $dir = "$mntpnt" ]] + return $? +} + +################################################################################ +# PATH manipulation # +################################################################################ + +## +# Usage: path_ls PATH +# 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 +} + +## +# Usage: path_which PATH PROGRAM +# Find the full path of PROGRAM by searching PATH +## +path_which() { + mypath=$1 + prog=$2 + 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() { + file=`conffile config.sh` + sec=$1 + tmp=`mktemp` + # 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/$@" +} diff --git a/.config/wmii/wmiirc b/.config/wmii/wmiirc new file mode 100755 index 0000000..1f1ea18 --- /dev/null +++ b/.config/wmii/wmiirc @@ -0,0 +1,12 @@ +#!/bin/bash +. "$HOME/.wmii/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 diff --git a/.wmii b/.wmii new file mode 120000 index 0000000..4d13294 --- /dev/null +++ b/.wmii @@ -0,0 +1 @@ +.config/wmii/ \ No newline at end of file diff --git a/.wmii/autostart b/.wmii/autostart deleted file mode 100755 index 1370689..0000000 --- a/.wmii/autostart +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -. "$HOME/.wmii/include.sh" - -daemon lxpanel &> /dev/null -#daemon nm-applet &> /dev/null -daemon notifyd &> /dev/null -daemon blueman-applet &> /dev/null -#daemon linphone --iconified &> /dev/null - -Action rbar_cpu 01 & -Action rbar_clock 99 & diff --git a/.wmii/config.sh b/.wmii/config.sh deleted file mode 100644 index 1dac0ad..0000000 --- a/.wmii/config.sh +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/bash - -MODKEY=Mod4 # "super" -UP=p -DOWN=n -LEFT=b -RIGHT=f - -HIST="`conffile history`" - -# Colors tuples: " " -. `conffile theme-solarized-dark` - -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 - - ## Custom (non-WMII-generated) events - WmiircStart) ## No args - echo ' ==> Starting wmiirc' - is_mounted $WMII_DIR && Event WmiircUnmount - Event WmiircMount - - # Configure wmii - < "`conffile tagrules`" expand_variables >> $WMII_DIR/tagrules - < "`conffile ctl-init`" expand_variables >> $WMII_DIR/ctl - scansection Key | cut -sf2 >> $WMII_DIR/keys - # Configure X11 - xsetroot -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' - 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 - 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 >> $WMII_DIR/client/$client/ctl;; - Fullscreen) - echo Fullscreen on >> $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 >> $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" $@ >> $WMII_DIR/lbar/$1;; - DestroyTag) ## $1=tag - rm $WMII_DIR/lbar/$1;; - FocusTag) ## $1=tag - echo "$WMII_FOCUSCOLORS" $1 >> $WMII_DIR/lbar/$1;; - UnfocusTag) ## $1=tag - echo "$WMII_NORMCOLORS" $1 >> $WMII_DIR/lbar/$1;; - UrgentTag) ## $1=tag $2=[Manager|Client] - echo "$WMII_URGENTCOLORS" $1 >> $WMII_DIR/lbar/$1;; - NotUrgentTag) ## $1=tag $2=[Manager|Client] - echo "$WMII_NORMCOLORS" $1 >> $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 "$@" >> $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 "$@";; - esac -} ## End Event - -# Key Bindings -Key() { - key=$1 - case "$key" in - ## Moving around - - $MODKEY-$LEFT) ## Select the client to the left - echo select left >> $WMII_DIR/tag/sel/ctl;; - $MODKEY-$RIGHT) ## Select the client to the right - echo select right >> $WMII_DIR/tag/sel/ctl;; - $MODKEY-$UP) ## Select the client above - echo select up >> $WMII_DIR/tag/sel/ctl;; - $MODKEY-$DOWN) ## Select the client below - echo select down >> $WMII_DIR/tag/sel/ctl;; - - $MODKEY-space) ## Toggle between floating and managed layers - echo select toggle >> $WMII_DIR/tag/sel/ctl;; - - ## Moving clients around - - $MODKEY-Shift-$LEFT) ## Move selected client to the left - echo send sel left >> $WMII_DIR/tag/sel/ctl;; - $MODKEY-Shift-$RIGHT) ## Move selected client to the right - echo send sel right >> $WMII_DIR/tag/sel/ctl;; - $MODKEY-Shift-$UP) ## Move selected client up - echo send sel up >> $WMII_DIR/tag/sel/ctl;; - $MODKEY-Shift-$DOWN) ## Move selected client down - echo send sel down >> $WMII_DIR/tag/sel/ctl;; - $MODKEY-Shift-space) ## Toggle selected client between floating and managed layers - echo send sel toggle >> $WMII_DIR/tag/sel/ctl;; - - ## Moving through stacks - $MODKEY-Control-$UP) ## Select the stack above - 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 - echo Fullscreen toggle >> $WMII_DIR/client/sel/ctl;; - $MODKEY-shift-0) ## Close client - echo kill >> $WMII_DIR/client/sel/ctl;; - - ## Changing column modes - $MODKEY-d) ## Set column to default mode - echo colmode sel default-max >> $WMII_DIR/tag/sel/ctl;; - $MODKEY-s) ## Set column to stack mode - echo colmode sel stack-max >> $WMII_DIR/tag/sel/ctl;; - $MODKEY-m) ## Set column to max mode - 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) & ;; - $MODKEY-x) ## Open program menu - setsid $(path_ls $PATH | wimenu -h "${HIST}.progs" -n 5000) & ;; - $MODKEY-Return) ## Launch a terminal - setsid x-terminal-emulator & ;; - - ## Tag actions - $MODKEY-t) ## Change to another 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 - echo "$tag" >> $WMII_DIR/client/$sel/tags - }& ;; - esac -} ## End Key - -Action() { - prog=`path_which "$WMII_CONFPATH" $1`; shift - if [ -n "$prog" ]; then - "$prog" "$@" - return $? - else - return 1 - fi -} ## End Action diff --git a/.wmii/ctl-init b/.wmii/ctl-init deleted file mode 100644 index 026c0d5..0000000 --- a/.wmii/ctl-init +++ /dev/null @@ -1,5 +0,0 @@ -font xft:Monospace-8 -focuscolors $WMII_FOCUSCOLORS -normcolors $WMII_NORMCOLORS -grabmod $MODKEY -border 1 diff --git a/.wmii/fixes.sh b/.wmii/fixes.sh deleted file mode 100644 index aa09157..0000000 --- a/.wmii/fixes.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/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() { - 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/.wmii/help-events b/.wmii/help-events deleted file mode 100755 index 25b7d41..0000000 --- a/.wmii/help-events +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -. "$HOME/.wmii/include.sh" -scansection Event | xmessage -file - diff --git a/.wmii/help-keys b/.wmii/help-keys deleted file mode 100755 index c6e7038..0000000 --- a/.wmii/help-keys +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -. "$HOME/.wmii/include.sh" -scansection Key | xmessage -file - diff --git a/.wmii/include.sh b/.wmii/include.sh deleted file mode 100644 index d4e58c3..0000000 --- a/.wmii/include.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -if [ -z "$WMII_NAMESPACE" ]; then - export WMII_NAMESPACE="`wmiir namespace`" -fi -if [ -z "$WMII_DIR" ]; then - export WMII_DIR="$HOME/n/wmii" -fi - -. "$HOME/.wmii/util.sh" -. "$HOME/.wmii/config.sh" diff --git a/.wmii/quit b/.wmii/quit deleted file mode 100755 index 876a60e..0000000 --- a/.wmii/quit +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -. "$HOME/.wmii/include.sh" -echo quit >> $WMII_DIR/ctl diff --git a/.wmii/rbar_battery b/.wmii/rbar_battery deleted file mode 100755 index ae8980a..0000000 --- a/.wmii/rbar_battery +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -. "$HOME/.wmii/include.sh" - -priority=$1 - -while connected_to_x_server; do - acpi -b >> "$WMII_DIR/rbar/${priority}_battery" - sleep 1 -done diff --git a/.wmii/rbar_clock b/.wmii/rbar_clock deleted file mode 100755 index 18c4493..0000000 --- a/.wmii/rbar_clock +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -. "$HOME/.wmii/include.sh" - -priority=$1 - -while connected_to_x_server; do - date >> "$WMII_DIR/rbar/${priority}_clock" - sleep .5 -done diff --git a/.wmii/rbar_cpu b/.wmii/rbar_cpu deleted file mode 100755 index 22da985..0000000 --- a/.wmii/rbar_cpu +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -. "$HOME/.wmii/include.sh" - -priority=$1 - -while connected_to_x_server; 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;') >> "$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)/')' ]' >> "$WMII_DIR/rbar/${priority}_cpu" - sleep 1 -done diff --git a/.wmii/rbar_wifi b/.wmii/rbar_wifi deleted file mode 100755 index 2ada834..0000000 --- a/.wmii/rbar_wifi +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -. "$HOME/.wmii/include.sh" - -priority=$1 - -while connected_to_x_server; do - echo 'Wlan0:' $(iwconfig wlan0 | sed 's/ /\n/g' | grep Quality) >> "$WMII_DIR/rbar/${priority}_wifi" - sleep 1 -done diff --git a/.wmii/tagrules b/.wmii/tagrules deleted file mode 100644 index 990151f..0000000 --- a/.wmii/tagrules +++ /dev/null @@ -1,3 +0,0 @@ -/Emacs|Navigator/ -> +sel -/Eclipse/ -> +sel -/panel/ -> /.*/ diff --git a/.wmii/theme-solarized b/.wmii/theme-solarized deleted file mode 100644 index 5dc830d..0000000 --- a/.wmii/theme-solarized +++ /dev/null @@ -1,16 +0,0 @@ -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/.wmii/theme-solarized-dark b/.wmii/theme-solarized-dark deleted file mode 100644 index 83285ba..0000000 --- a/.wmii/theme-solarized-dark +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -# Solarized-dark - -. $HOME/.wmii/theme-solarized - -WMII_BACKGROUND="$SOL_BASE02" - -# =" " -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/.wmii/util.sh b/.wmii/util.sh deleted file mode 100644 index 43d7d4a..0000000 --- a/.wmii/util.sh +++ /dev/null @@ -1,128 +0,0 @@ -#!/bin/bash - -# I moved "fixes" into a separate file because it isn't so much configuration... -. "$HOME/.wmii/fixes.sh" - -################################################################################ -# Added shell features # -################################################################################ - -## -# Usage: dquote STRING -# Safely double-quotes a string. -# It escapes ways to execute code, but not variables. -## -dquote() { - 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() { - dir="$(readlink -m $1)" - mntpnt="$(cut -d' ' -f2 /proc/mounts|grep -- "$dir")" - [[ $dir = "$mntpnt" ]] - return $? -} - -################################################################################ -# PATH manipulation # -################################################################################ - -## -# Usage: path_ls PATH -# 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 -} - -## -# Usage: path_which PATH PROGRAM -# Find the full path of PROGRAM by searching PATH -## -path_which() { - mypath=$1 - prog=$2 - 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() { - file=`conffile config.sh` - sec=$1 - tmp=`mktemp` - # 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/$@" -} diff --git a/.wmii/wmiirc b/.wmii/wmiirc deleted file mode 100755 index 1f1ea18..0000000 --- a/.wmii/wmiirc +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -. "$HOME/.wmii/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 -- cgit v1.2.3