wmii/rc/wmiirc.sh

235 lines
5.5 KiB
Bash
Raw Normal View History

2008-05-30 01:22:56 +04:00
#!BINSH -f
2007-02-03 01:57:40 +03:00
# Configure wmii
wmiiscript=wmiirc # For wmii.sh
. wmii.sh
2006-02-25 21:36:53 +03:00
# Configuration Variables
MODKEY=Mod1
UP=k
DOWN=j
LEFT=h
RIGHT=l
2008-01-22 02:22:42 +03:00
# Bars
noticetimeout=5
noticebar=/rbar/!notice
# Colors tuples: "<text> <background> <border>"
WMII_NORMCOLORS='#000000 #c1c48b #81654f'
WMII_FOCUSCOLORS='#000000 #81654f #000000'
WMII_BACKGROUND='#333333'
WMII_FONT='-*-fixed-medium-r-*-*-13-*-*-*-*-*-*-*'
set -- $(echo $WMII_NORMCOLORS $WMII_FOCUSCOLORS)
WMII_TERM="xterm"
2008-10-18 22:58:26 +04:00
# Menu history
hist="$(wmiir namespace)/history"
histnum=5000
# Column Rules
wmiir write /colrules <<!
/gimp/ -> 17+83+41
/.*/ -> 62+38 # Golden Ratio
!
2006-02-25 21:36:53 +03:00
# Tagging Rules
wmiir write /tagrules <<!
/MPlayer|VLC/ -> ~
!
# Status Bar Info
status() {
echo -n $(uptime | sed 's/.*://; s/,//g') '|' $(date)
}
2008-06-02 19:52:29 +04:00
local_events() { true;}
2008-05-20 03:26:43 +04:00
wi_runconf -s wmiirc_local
2008-01-22 02:22:42 +03:00
echo $WMII_NORMCOLORS | wmiir create $noticebar
# Event processing
2008-05-30 01:22:56 +04:00
events() {
2008-05-20 03:26:43 +04:00
sed 's/^ //' <<'!'
# 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/$@" "$@"
2008-01-22 02:22:42 +03:00
Event LeftBarClick LeftBarDND
shift
wmiir xwrite /ctl view "$@"
2008-01-22 02:22:42 +03:00
Event Unresponsive
{
client=$1; shift
msg="The following client is not responding. What would you like to do?$wi_nl"
resp=$(wihack -transient $client \
xmessage -nearmouse -buttons Kill,Wait -print \
"$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 = $!
2008-05-30 01:22:56 +04:00
Menu Client-3-Delete
wmiir xwrite /client/$1/ctl kill
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 "$@" &
# Actions
Action quit
wmiir xwrite /ctl quit
2007-06-01 05:05:59 +04:00
Action exec
wmiir xwrite /ctl exec "$@"
Action rehash
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
Key $MODKEY-Control-t
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
Key $MODKEY-space
wmiir xwrite /tag/sel/ctl select toggle
Key $MODKEY-d
wmiir xwrite /tag/sel/ctl colmode sel default-max
Key $MODKEY-s
wmiir xwrite /tag/sel/ctl colmode sel stack-max
Key $MODKEY-m
wmiir xwrite /tag/sel/ctl colmode sel stack+max
Key $MODKEY-a
2008-10-18 22:58:26 +04:00
Action $(wi_actions | wimenu -h "${hist}.actions" -n $histnum) &
Key $MODKEY-p
2008-10-18 22:58:26 +04:00
eval wmiir setsid "$(wimenu -h "${hist}.progs" -n $histnum <$progsfile)" &
Key $MODKEY-t
2008-10-18 22:58:26 +04:00
wmiir xwrite /ctl view $(wi_tags | wimenu -h "${hist}.tags" -n 50) &
Key $MODKEY-Return
2008-05-30 01:22:56 +04:00
eval wmiir setsid $WMII_TERM &
Key $MODKEY-Shift-space
wmiir xwrite /tag/sel/ctl send sel toggle
2007-11-16 16:46:31 +03:00
Key $MODKEY-f
wmiir xwrite /client/sel/ctl Fullscreen toggle
Key $MODKEY-Shift-c
wmiir xwrite /client/sel/ctl kill
Key $MODKEY-Shift-t
2008-10-18 22:58:26 +04:00
wmiir xwrite "/client/$(wmiir read /client/sel/ctl)/tags" $(wi_tags | wimenu -h "${hist}.tags" -n 50) &
Key $MODKEY-$LEFT
wmiir xwrite /tag/sel/ctl select left
Key $MODKEY-$RIGHT
wmiir xwrite /tag/sel/ctl select right
Key $MODKEY-$DOWN
wmiir xwrite /tag/sel/ctl select down
Key $MODKEY-$UP
wmiir xwrite /tag/sel/ctl select up
2008-06-02 19:52:29 +04:00
Key $MODKEY-Control-$DOWN
wmiir xwrite /tag/sel/ctl select down stack
Key $MODKEY-Control-$UP
wmiir xwrite /tag/sel/ctl select up stack
Key $MODKEY-Shift-$LEFT
wmiir xwrite /tag/sel/ctl send sel left
Key $MODKEY-Shift-$RIGHT
wmiir xwrite /tag/sel/ctl send sel right
Key $MODKEY-Shift-$DOWN
wmiir xwrite /tag/sel/ctl send sel down
Key $MODKEY-Shift-$UP
wmiir xwrite /tag/sel/ctl send sel up
!
for i in 0 1 2 3 4 5 6 7 8 9; do
2008-05-20 03:26:43 +04:00
sed 's/^ //' <<!
Key $MODKEY-$i
wmiir xwrite /ctl view "$i"
Key $MODKEY-Shift-$i
wmiir xwrite /client/sel/tags "$i"
!
done
2008-05-30 01:22:56 +04:00
}
2008-05-20 03:26:43 +04:00
wi_events <<!
2008-05-30 01:22:56 +04:00
$(events)
2008-06-02 19:52:29 +04:00
$(local_events)
2008-05-20 03:26:43 +04:00
!
unset 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" &
2007-02-03 01:57:40 +03:00
export WMII_FONT WMII_TERM
2007-06-01 05:05:59 +04:00
export WMII_FOCUSCOLORS WMII_SELCOLORS WMII_NORMCOLORS
# Misc
2008-02-03 23:06:26 +03:00
progsfile="$(wmiir namespace)/.proglist"
2008-05-30 01:22:56 +04:00
action status &
wi_proglist $PATH >$progsfile &
# Setup Tag Bar
2008-05-20 03:26:43 +04:00
IFS="$wi_nl"
2008-01-22 02:22:42 +03:00
wmiir rm $(wmiir ls /lbar | sed 's,^,/lbar/,')
seltag=$(wmiir read /tag/sel/ctl | sed 1q)
2008-05-20 03:26:43 +04:00
unset IFS
wi_tags | while read tag
2008-01-18 23:57:54 +03:00
do
2008-01-18 23:05:45 +03:00
if [ "$tag" = "$seltag" ]; then
echo "$WMII_FOCUSCOLORS" "$tag"
else
2008-01-18 23:05:45 +03:00
echo "$WMII_NORMCOLORS" "$tag"
fi | wmiir create "/lbar/$tag"
done
wi_eventloop
2008-01-18 23:05:45 +03:00