Last active
December 13, 2015 23:49
-
-
Save benkaiser/4994503 to your computer and use it in GitHub Desktop.
My wmiirc (WMII configuration file)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/dash -f | |
# Configure wmii | |
wmiiscript=wmiirc # For wmii.sh | |
. wmii.sh | |
# Configuration Variables | |
MODKEY=Mod1 | |
UP=k | |
DOWN=j | |
LEFT=h | |
RIGHT=l | |
ARROW_UP=Up | |
ARROW_DOWN=Down | |
ARROW_LEFT=Left | |
ARROW_RIGHT=Right | |
# Bars | |
noticetimeout=5 | |
noticebar=/rbar/!notice | |
# Colors tuples: "<text> <background> <border>" | |
export WMII_NORMCOLORS='#333333 #D7D1C8 #D7D1C8' | |
export WMII_FOCUSCOLORS='#000000 #D7D1C8 #696C6D' | |
export WMII_BACKGROUND='#001D25' | |
export WMII_FONT='xft:Sans-10' | |
set -- $(echo $WMII_NORMCOLORS $WMII_FOCUSCOLORS) | |
export WMII_TERM="terminator" | |
if ! test -d "${WMII_CONFPATH%%:*}"; then | |
mkdir "${WMII_CONFPATH%%:*}" | |
res=$(wihack -type DIALOG xmessage -nearmouse -buttons Windows,Alt -print -fn $WMII_FONT \ | |
"Welcome to wmii,$wi_newline$wi_newline" \ | |
"Most of wmii's default key bindings make use of the$wi_newline" \ | |
"Windows key, or equivalent. For keyboards lacking such$wi_newline" \ | |
"a key, many users change this to the Alt key.$wi_newline$wi_newline" \ | |
"Which would you prefer?") | |
[ "$res" = "Alt" ] && MODKEY=Mod1 | |
echo "MODKEY=$MODKEY" >"${WMII_CONFPATH%%:*}/wmiirc_local" | |
chmod +x "${WMII_CONFPATH%%:*}/wmiirc_local" | |
fi | |
# Menu history | |
hist="${WMII_CONFPATH%%:*}/history" | |
histnum=5000 | |
# Column Rules | |
wmiir write /colrules <<! | |
/gimp/ -> 17+83+41 | |
/.*/ -> 62+38 # Golden Ratio | |
! | |
# Tagging Rules | |
wmiir write /tagrules <<! | |
/MPlayer|VLC/ -> ~ | |
/^bashee.*/ -> 9 | |
/^thunderbird.*/ -> 9 | |
/.*/ -> sel | |
! | |
# Status Bar Info | |
status() { | |
echo -n $(ip addr show | perl -ne '/inet\s*([\d\.]+).*global/ && do {print "$1\n"}') '|' $(acpi -V | awk 'NR==1{print $3 " " $4 " " $5 " Remaining" }' | sed s/,//) '|' $(sut) '|' $(date) | |
} | |
local_events() { true;} | |
wi_runconf -s wmiirc_local | |
echo $WMII_NORMCOLORS | wmiir create $noticebar | |
# Event processing | |
events() { | |
cat <<'!' | |
# Events | |
Event CreateTag | |
echo "$WMII_NORMCOLORS" "$@" | wmiir create "/lbar/$@" | |
Event DestroyTag | |
wmiir remove "/lbar/$@" | |
Event FocusTag | |
wmiir xwrite "/lbar/$@" "$WMII_FOCUSCOLORS" "$@" | |
Event UnfocusTag | |
wmiir xwrite "/lbar/$@" "$WMII_NORMCOLORS" "$@" | |
Event UrgentTag | |
shift | |
wmiir xwrite "/lbar/$@" "*$@" | |
Event NotUrgentTag | |
shift | |
wmiir xwrite "/lbar/$@" "$@" | |
Event LeftBarClick LeftBarDND | |
shift | |
wmiir xwrite /ctl view "$@" | |
Event Unresponsive | |
{ | |
client=$1; shift | |
msg="The following client is not responding. What would you like to do?$wi_newline" | |
resp=$(wihack -transient $client \ | |
xmessage -nearmouse -buttons Kill,Wait -print | |
-fn "${WMII_FONT%%,*}" "$msg $(wmiir read /client/sel/label)") | |
if [ "$resp" = Kill ]; then | |
wmiir xwrite /client/$client/ctl slay & | |
fi | |
}& | |
Event Notice | |
wmiir xwrite $noticebar $wi_arg | |
kill $xpid 2>/dev/null # Let's hope this isn't reused... | |
{ sleep $noticetimeout; wmiir xwrite $noticebar ' '; }& | |
xpid = $! | |
# Menus | |
Menu Client-3-Delete | |
wmiir xwrite /client/$1/ctl kill | |
Menu Client-3-Kill | |
wmiir xwrite /client/$1/ctl slay | |
Menu Client-3-Fullscreen | |
wmiir xwrite /client/$1/ctl Fullscreen on | |
Event ClientMouseDown | |
wi_fnmenu Client $2 $1 & | |
Menu LBar-3-Delete | |
tag=$1; clients=$(wmiir read "/tag/$tag/index" | awk '/[^#]/{print $2}') | |
for c in $clients; do | |
if [ "$tag" = "$(wmiir read /client/$c/tags)" ]; then | |
wmiir xwrite /client/$c/ctl kill | |
else | |
wmiir xwrite /client/$c/tags -$tag | |
fi | |
if [ "$tag" = "$(wi_seltag)" ]; then | |
newtag=$(wi_tags | awk -v't='$tag ' | |
$1 == t { if(!l) getline l | |
print l | |
exit } | |
{ l = $0 }') | |
wmiir xwrite /ctl view $newtag | |
fi | |
done | |
Event LeftBarMouseDown | |
wi_fnmenu LBar "$@" & | |
Event RightBarClick | |
if [ $2 = "suspend" ]; then | |
sudo pm-suspend & | |
fi | |
if [ $2 = "screen" ]; then | |
xscreensaver-command -activate | |
fi | |
# Actions | |
Action showkeys | |
echo "$KeysHelp" | xmessage -file - -fn ${WMII_FONT%%,*} | |
Action quit | |
wmiir xwrite /ctl quit | |
Action exec | |
wmiir xwrite /ctl exec "$@" | |
Action rehash | |
wi_proglist $PATH >$progsfile | |
Action status | |
set +xv | |
if wmiir remove /rbar/status 2>/dev/null; then | |
sleep 2 | |
fi | |
echo "$WMII_NORMCOLORS" | wmiir create /rbar/status | |
while status | wmiir write /rbar/status; do | |
sleep 1 | |
done | |
# Key Bindings | |
KeyGroup Moving around | |
Key $MODKEY-$LEFT # Select the client to the left | |
wmiir xwrite /tag/sel/ctl select left | |
Key $MODKEY-$RIGHT # Select the client to the right | |
wmiir xwrite /tag/sel/ctl select right | |
Key $MODKEY-$UP # Select the client above | |
wmiir xwrite /tag/sel/ctl select up | |
Key $MODKEY-$DOWN # Select the client below | |
wmiir xwrite /tag/sel/ctl select down | |
Key $MODKEY-space # Toggle between floating and managed layers | |
wmiir xwrite /tag/sel/ctl select toggle | |
KeyGroup Moving through stacks | |
Key $MODKEY-Control-$UP # Select the stack above | |
wmiir xwrite /tag/sel/ctl select up stack | |
Key $MODKEY-Control-$DOWN # Select the stack below | |
wmiir xwrite /tag/sel/ctl select down stack | |
KeyGroup Moving clients around | |
Key $MODKEY-Shift-$LEFT # Move selected client to the left | |
wmiir xwrite /tag/sel/ctl send sel left | |
Key $MODKEY-Shift-$RIGHT # Move selected client to the right | |
wmiir xwrite /tag/sel/ctl send sel right | |
Key $MODKEY-Shift-$UP # Move selected client up | |
wmiir xwrite /tag/sel/ctl send sel up | |
Key $MODKEY-Shift-$DOWN # Move selected client down | |
wmiir xwrite /tag/sel/ctl send sel down | |
Key $MODKEY-Shift-space # Toggle selected client between floating and managed layers | |
wmiir xwrite /tag/sel/ctl send sel toggle | |
KeyGroup Client actions | |
Key $MODKEY-f # Toggle selected client's fullsceen state | |
wmiir xwrite /client/sel/ctl Fullscreen toggle | |
Key $MODKEY-Shift-c # Close client | |
wmiir xwrite /client/sel/ctl kill | |
KeyGroup Changing column modes | |
Key $MODKEY-d # Set column to default mode | |
wmiir xwrite /tag/sel/ctl colmode sel default-max | |
Key $MODKEY-s # Set column to stack mode | |
wmiir xwrite /tag/sel/ctl colmode sel stack-max | |
Key $MODKEY-m # Set column to max mode | |
wmiir xwrite /tag/sel/ctl colmode sel stack+max | |
KeyGroup Running programs | |
Key $MODKEY-a # Open wmii actions menu | |
action $(wi_actions | wimenu -h "${hist}.actions" -n $histnum) & | |
Key $MODKEY-p # Open program menu | |
eval wmiir setsid "$(wimenu -h "${hist}.progs" -n $histnum <$progsfile)" & | |
Key $MODKEY-Return # Launch a terminal | |
eval wmiir setsid $WMII_TERM & | |
Key XF86AudioRaiseVolume | |
amixer sset Master 8%+ | |
Key XF86AudioLowerVolume | |
amixer sset Master 8%- | |
Key XF86AudioMute | |
amixer -D pulse set Master toggle | |
Key XF86MonBrightnessUp | |
xbacklight -inc 10 | |
Key XF86MonBrightnessDown | |
xbacklight -dec 10 | |
Key XF86KbdBrightnessDown | |
lower_key_backlight | |
Key XF86KbdBrightnessUp | |
raise_key_backlight | |
KeyGroup Other | |
Key $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 | |
KeyGroup Window Movements | |
Key $MODKEY-Shift-$ARROW_LEFT | |
wmiir xwrite /tag/sel/ctl grow sel sel right -1 | |
Key $MODKEY-Shift-$ARROW_RIGHT | |
wmiir xwrite /tag/sel/ctl grow sel sel right 1 | |
Key $MODKEY-Shift-$ARROW_DOWN | |
wmiir xwrite /tag/sel/ctl grow sel sel down 1 | |
Key $MODKEY-Shift-$ARROW_UP | |
wmiir xwrite /tag/sel/ctl grow sel sel down -1 | |
KeyGroup Tag actions | |
Key $MODKEY-t # Change to another tag | |
(tag=$(wi_tags | wimenu -h "${hist}.tags" -n 50) && wmiir xwrite /ctl view $tag) & | |
Key $MODKEY-$ARROW_LEFT # move to left tag | |
c=$(wmiir read /ctl | tail -n 1 | awk '{print $2}') | |
wmiir xwrite /ctl view $(($c-1)) | |
Key $MODKEY-$ARROW_RIGHT # move to right tag | |
c=$(wmiir read /ctl | tail -n 1 | awk '{print $2}') | |
wmiir xwrite /ctl view $(($c+1)) | |
Key $MODKEY-Shift-t # Retag the selected client | |
c=$(wi_selclient) | |
(tag=$(wi_tags | wimenu -h "${hist}.tags" -n 50) && wmiir xwrite /client/$c/tags $tag) & | |
! | |
for i in 0 1 2 3 4 5 6 7 8 9; do | |
cat <<! | |
Key $MODKEY-$i # Move to the numbered view | |
wmiir xwrite /ctl view "$i" | |
Key $MODKEY-Shift-$i # Retag selected client with the numbered tag | |
wmiir xwrite /client/sel/tags "$i" | |
! | |
done | |
} | |
wi_events events local_events | |
# WM Configuration | |
wmiir write /ctl <<! | |
font $WMII_FONT | |
focuscolors $WMII_FOCUSCOLORS | |
normcolors $WMII_NORMCOLORS | |
grabmod $MODKEY | |
border 1 | |
! | |
xsetroot -solid "$WMII_BACKGROUND" & | |
# Misc | |
progsfile="$(wmiir namespace)/.proglist" | |
action status & | |
wi_proglist $PATH >$progsfile & | |
# Setup Tag Bar | |
IFS="$wi_newline" | |
wmiir rm $(wmiir ls /lbar | sed 's,^,/lbar/,') >/dev/null | |
seltag=$(wmiir read /tag/sel/ctl | sed 1q) | |
unset IFS | |
wi_tags | while read tag | |
do | |
if [ "$tag" = "$seltag" ]; then | |
echo "$WMII_FOCUSCOLORS" "$tag" | |
else | |
echo "$WMII_NORMCOLORS" "$tag" | |
fi | wmiir create "/lbar/$tag" | |
done | |
#creat clickable suspend button | |
echo "Suspend" | wmiir create /rbar/suspend & | |
#creat clickable screen off button | |
echo "Screen Off" | wmiir create /rbar/screen & | |
# hack for custom background image | |
hsetroot -fill ~/.wmii/background.png | |
# startup apps | |
[ "`ps aux | grep google-chrome-unstable | grep -v grep`" = "" ] && google-chrome-unstable & | |
[ "`ps aux | grep thunderbird | grep -v grep`" = "" ] && thunderbird & | |
[ "`ps aux | grep xfce4-panel | grep -v grep`" = "" ] && xfce4-panel & | |
[ "`ps aux | grep clipit | grep -v grep`" = "" ] && clipit & | |
[ "`ps aux | grep nm-applet | grep -v grep`" = "" ] && nm-applet & | |
gnome-settings-daemon & | |
xinput set-button-map 11 1 2 3 4 5 6 7 & | |
CopyAgent & | |
udiskie & | |
# change sound on startup, full volume is a bit much | |
amixer sset Master 10% & | |
wi_eventloop |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment