summaryrefslogtreecommitdiff
path: root/.config/wmii/config.sh
diff options
context:
space:
mode:
Diffstat (limited to '.config/wmii/config.sh')
-rw-r--r--.config/wmii/config.sh249
1 files changed, 249 insertions, 0 deletions
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: "<text> <background> <border>"
+. `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