2007-03-03 17:42:06 +03:00
|
|
|
#!/usr/bin/env wmii9rc
|
2008-01-14 23:42:21 +03:00
|
|
|
scriptname=$0
|
|
|
|
oldpath=$path; path=($PLAN9/bin $path)
|
|
|
|
. wmii.rc wmiirc # Include utility functions
|
2007-04-14 08:07:52 +04:00
|
|
|
|
2008-01-14 23:42:21 +03:00
|
|
|
# WMII Configuration
|
2007-04-14 08:07:52 +04:00
|
|
|
|
2008-01-14 23:42:21 +03:00
|
|
|
# Keys
|
2007-07-17 00:52:35 +04:00
|
|
|
MODKEY=Mod1
|
|
|
|
UP=k
|
|
|
|
DOWN=j
|
|
|
|
LEFT=h
|
|
|
|
RIGHT=l
|
|
|
|
|
2008-01-21 02:00:21 +03:00
|
|
|
# Bars
|
|
|
|
noticetimeout=5
|
|
|
|
noticebar=/rbar/!notice
|
|
|
|
|
2008-01-14 23:42:21 +03:00
|
|
|
# Theme
|
|
|
|
wmiifont='drift,-*-fixed-*-*-*-*-9-*-*-*-*-*-*-*'
|
|
|
|
wmiifont='-*-fixed-medium-r-*-*-13-*-*-*-*-*-*-*'
|
2008-01-20 02:05:50 +03:00
|
|
|
wmiinormcol=`{echo '#000000 #c1c48b #81654f'}
|
|
|
|
wmiifocuscol=`{echo '#000000 #81654f #000000'}
|
2008-01-14 23:42:21 +03:00
|
|
|
wmiibackground='#333333'
|
2008-05-28 02:34:59 +04:00
|
|
|
wmiifloatbackground='#222222'
|
|
|
|
fn setbackground { xsetroot -solid $* }
|
2007-07-17 00:52:35 +04:00
|
|
|
|
2008-01-14 23:42:21 +03:00
|
|
|
# Programs
|
2007-07-17 00:52:35 +04:00
|
|
|
WMII_TERM=(xterm)
|
|
|
|
|
2007-02-23 06:36:50 +03:00
|
|
|
# Column Rules
|
|
|
|
wmiir write /colrules <<!
|
2008-01-20 02:05:50 +03:00
|
|
|
/gimp/ -> 17+83+41
|
2008-01-21 02:00:21 +03:00
|
|
|
/.*/ -> 62+38 # Golden Ratio
|
2007-02-23 06:36:50 +03:00
|
|
|
!
|
|
|
|
|
|
|
|
# Tagging Rules
|
|
|
|
wmiir write /tagrules <<!
|
2008-01-21 02:00:21 +03:00
|
|
|
/MPlayer|VLC/ -> ~
|
2007-02-23 06:36:50 +03:00
|
|
|
!
|
|
|
|
|
|
|
|
# Status Bar Info
|
2008-01-14 23:42:21 +03:00
|
|
|
fn status {
|
|
|
|
echo -n `{uptime | sed 's/.*://; s/,//g'} \
|
|
|
|
'|' `{date}
|
2007-02-23 06:36:50 +03:00
|
|
|
}
|
2007-02-26 07:29:16 +03:00
|
|
|
|
2008-01-14 23:42:21 +03:00
|
|
|
# End Configuration
|
2007-06-27 06:39:03 +04:00
|
|
|
|
2008-01-21 02:00:21 +03:00
|
|
|
# For the time being, this file follows the lisp bracing
|
|
|
|
# convention. i.e.:
|
|
|
|
# if(frob this) {
|
|
|
|
# frob that
|
|
|
|
# if(frob theother) {
|
|
|
|
# unfrob this
|
|
|
|
# unfrob that}}
|
|
|
|
# Comments welcome.
|
|
|
|
|
2008-01-14 23:42:21 +03:00
|
|
|
confpath=`{echo $WMII_CONFPATH | sed 'y/:/ /'}
|
2007-06-27 06:39:03 +04:00
|
|
|
|
2007-07-17 00:52:35 +04:00
|
|
|
# Events
|
2008-01-14 23:42:21 +03:00
|
|
|
fn sigexit {
|
|
|
|
rm -f $progs_file
|
|
|
|
wi_cleankeys
|
2007-06-27 06:39:03 +04:00
|
|
|
}
|
2007-02-26 07:29:16 +03:00
|
|
|
|
2008-01-21 02:00:21 +03:00
|
|
|
fn Event-CreateTag {
|
|
|
|
echo $wmiinormcol $* | wmiir create /lbar/$"*}
|
|
|
|
fn Event-DestroyTag {
|
|
|
|
wmiir remove /lbar/$"*}
|
|
|
|
fn Event-FocusTag {
|
|
|
|
wmiir xwrite /lbar/$"* $wmiifocuscol $*}
|
|
|
|
fn Event-UnfocusTag {
|
|
|
|
wmiir xwrite /lbar/$"* $wmiinormcol $*}
|
|
|
|
fn Event-UrgentTag {
|
2008-01-22 02:22:42 +03:00
|
|
|
shift
|
|
|
|
wmiir xwrite /lbar/$"* '*'$"*}
|
2008-01-21 02:00:21 +03:00
|
|
|
fn Event-NotUrgentTag {
|
2008-01-22 02:22:42 +03:00
|
|
|
shift
|
|
|
|
wmiir xwrite /lbar/$"* $"*}
|
2008-05-28 02:34:59 +04:00
|
|
|
fn Event-AreaFocus {
|
|
|
|
if(~ $1 '~')
|
|
|
|
setbackground $wmiifloatbackground
|
|
|
|
if not
|
|
|
|
setbackground $wmiibackground }
|
2007-02-26 07:29:16 +03:00
|
|
|
|
2008-01-18 01:50:35 +03:00
|
|
|
fn Event-Unresponsive {
|
|
|
|
client = $1; shift
|
|
|
|
@{
|
|
|
|
msg = 'The following client is not responding. What would you like to do?'
|
|
|
|
resp = `{wihack -transient $client \
|
|
|
|
xmessage -nearmouse -buttons Kill,Wait -print \
|
2008-08-25 20:47:56 +04:00
|
|
|
$msg $wi_nl '' `{wmiir read /client/$client/label}}
|
2008-01-18 01:50:35 +03:00
|
|
|
if(~ $resp Kill)
|
2008-04-02 03:26:46 +04:00
|
|
|
wmiir xwrite /client/$client/ctl slay
|
|
|
|
}&}
|
2008-01-21 02:00:21 +03:00
|
|
|
fn Event-Notice {
|
|
|
|
wmiir xwrite $noticebar $wi_arg
|
2007-03-01 05:18:26 +03:00
|
|
|
|
2008-01-21 02:00:21 +03:00
|
|
|
/bin/kill $xpid >[2]/dev/null # Let's hope this isn't reused...
|
|
|
|
{ sleep $noticetimeout; wmiir xwrite $noticebar ' ' }& # Bug...
|
|
|
|
xpid = $apid}
|
|
|
|
|
2008-01-21 09:21:37 +03:00
|
|
|
fn Event-LeftBar^(Click DND) {
|
2008-01-21 02:00:21 +03:00
|
|
|
shift; wmiir xwrite /ctl view $*}
|
2008-01-28 00:08:25 +03:00
|
|
|
|
|
|
|
fn ClientMenu-3-Delete {
|
|
|
|
wmiir xwrite /client/$1/ctl kill}
|
|
|
|
fn ClientMenu-3-Fullscreen {
|
|
|
|
wmiir xwrite /client/$1/ctl Fullscreen on}
|
2007-02-26 12:27:03 +03:00
|
|
|
fn Event-ClientMouseDown {
|
2008-01-28 00:08:25 +03:00
|
|
|
wi_fnmenu Client $2 $1 &}
|
|
|
|
|
|
|
|
fn LBarMenu-3-Delete {
|
|
|
|
tag=$1; clients=`{wmiir read /tag/$tag/index | awk '/[^#]/{print $2}'}
|
|
|
|
for(c in $clients) {
|
|
|
|
if(~ $tag `{wmiir read /client/$c/tags})
|
|
|
|
wmiir xwrite /client/$c/ctl kill
|
|
|
|
if not
|
|
|
|
wmiir xwrite /client/$c/tags -$tag}
|
|
|
|
if(~ $tag `{wi_seltag}) {
|
|
|
|
newtag = `{wi_tags | awk -v't='$tag '
|
|
|
|
$1 == t { if(!l) getline l
|
|
|
|
print l
|
|
|
|
exit }
|
|
|
|
{ l = $0 }'}
|
|
|
|
wmiir xwrite /ctl view $newtag}}
|
|
|
|
fn Event-LeftBarMouseDown {
|
|
|
|
wi_fnmenu LBar $* &}
|
2007-02-23 06:36:50 +03:00
|
|
|
|
2008-01-14 23:42:21 +03:00
|
|
|
# Actions
|
2007-07-17 00:52:35 +04:00
|
|
|
fn Action-rehash {
|
2008-02-05 02:33:57 +03:00
|
|
|
comm -23 <{ls `{namespace}^/proglist.* >[2]/dev/null | awk -F'.' '{print $NF}'} \
|
2008-01-14 23:42:21 +03:00
|
|
|
<{ps | awk '{print $2}'} |
|
|
|
|
while(id=`{read})
|
2008-02-05 02:33:57 +03:00
|
|
|
rm `{namespace}^/proglist.$id
|
2008-01-21 02:00:21 +03:00
|
|
|
wi_proglist $PATH >$progs_file}
|
|
|
|
fn Action-quit {
|
|
|
|
wmiir xwrite /ctl quit}
|
|
|
|
fn Action-exec {
|
|
|
|
wmiir xwrite /ctl exec $*}
|
2007-02-23 06:36:50 +03:00
|
|
|
fn Action-status {
|
2007-07-17 00:52:35 +04:00
|
|
|
flag x -; flag r -
|
2007-02-23 06:36:50 +03:00
|
|
|
if(wmiir remove /rbar/status >[2]/dev/null)
|
2007-03-01 23:20:53 +03:00
|
|
|
sleep 2
|
2008-01-14 23:42:21 +03:00
|
|
|
echo $wmiinormcol | wmiir create /rbar/status
|
2007-02-23 06:36:50 +03:00
|
|
|
while(status | wmiir write /rbar/status)
|
|
|
|
sleep 1
|
|
|
|
}
|
|
|
|
|
2007-06-27 06:39:03 +04:00
|
|
|
# Source Variables, &c
|
2008-04-02 03:26:46 +04:00
|
|
|
if(~ $0 ('' */)rc.wmii.local)
|
2008-01-14 23:42:21 +03:00
|
|
|
wi_notice This file should not be named rc.wmii.local
|
|
|
|
if not
|
2008-01-21 02:00:21 +03:00
|
|
|
. `{wi_script -f rc.wmii.local}
|
2008-04-05 02:43:53 +04:00
|
|
|
echo $wmiinormcol | wmiir create $noticebar
|
2007-06-27 06:39:03 +04:00
|
|
|
|
2007-02-23 06:36:50 +03:00
|
|
|
# Key Bindings
|
2008-05-18 21:31:58 +04:00
|
|
|
_keys = `{wi_getfuns Key}
|
2007-07-17 00:52:35 +04:00
|
|
|
fn key {
|
|
|
|
key=()
|
2008-05-18 21:31:58 +04:00
|
|
|
for(k) if(! ~ $_keys $k) key = ($key Key-$k)
|
2008-01-21 02:00:21 +03:00
|
|
|
~ $#key 0}
|
2007-07-17 00:52:35 +04:00
|
|
|
|
2008-01-14 23:42:21 +03:00
|
|
|
# This is... ugly.
|
|
|
|
|
2007-07-17 00:52:35 +04:00
|
|
|
key $MODKEY-Control-t || fn $key {
|
2007-02-26 07:29:16 +03:00
|
|
|
switch(`{wmiir read /keys | wc -l}) {
|
|
|
|
case 0 1
|
2008-04-02 03:26:46 +04:00
|
|
|
wmiir xwrite /keys $keys
|
2007-02-23 06:36:50 +03:00
|
|
|
wmiir xwrite /ctl grabmod $MODKEY
|
2007-02-26 07:29:16 +03:00
|
|
|
case *
|
2008-01-14 23:42:21 +03:00
|
|
|
ifs=() { keys=`{wmiir read /keys} }
|
2007-02-26 07:29:16 +03:00
|
|
|
wmiir xwrite /keys $MODKEY-Control-t
|
2007-02-23 06:36:50 +03:00
|
|
|
wmiir xwrite /ctl grabmod Mod3
|
2008-01-21 02:00:21 +03:00
|
|
|
}}
|
|
|
|
|
|
|
|
key $MODKEY-$LEFT || fn $key {
|
|
|
|
wmiir xwrite /tag/sel/ctl select left}
|
|
|
|
key $MODKEY-$RIGHT || fn $key {
|
|
|
|
wmiir xwrite /tag/sel/ctl select right}
|
|
|
|
key $MODKEY-$DOWN || fn $key {
|
|
|
|
wmiir xwrite /tag/sel/ctl select down}
|
|
|
|
key $MODKEY-$UP || fn $key {
|
|
|
|
wmiir xwrite /tag/sel/ctl select up}
|
2008-05-26 05:53:14 +04:00
|
|
|
key $MODKEY-Control-$DOWN || fn $key {
|
|
|
|
wmiir xwrite /tag/sel/ctl select down stack}
|
|
|
|
key $MODKEY-Control-$UP || fn $key {
|
|
|
|
wmiir xwrite /tag/sel/ctl select up stack}
|
2008-01-21 02:00:21 +03:00
|
|
|
|
|
|
|
key $MODKEY-Shift-$LEFT || fn $key {
|
|
|
|
wmiir xwrite /tag/sel/ctl send sel left}
|
|
|
|
key $MODKEY-Shift-$RIGHT || fn $key {
|
|
|
|
wmiir xwrite /tag/sel/ctl send sel right}
|
|
|
|
key $MODKEY-Shift-$DOWN || fn $key {
|
|
|
|
wmiir xwrite /tag/sel/ctl send sel down}
|
|
|
|
key $MODKEY-Shift-$UP || fn $key {
|
|
|
|
wmiir xwrite /tag/sel/ctl send sel up}
|
|
|
|
|
|
|
|
key $MODKEY-f || fn $key {
|
|
|
|
wmiir xwrite /client/sel/ctl Fullscreen toggle}
|
|
|
|
|
|
|
|
key $MODKEY-space || fn $key {
|
|
|
|
wmiir xwrite /tag/sel/ctl select toggle}
|
|
|
|
key $MODKEY-Shift-space || fn $key {
|
|
|
|
wmiir xwrite /tag/sel/ctl send sel toggle}
|
|
|
|
key $MODKEY-d || fn $key {
|
2008-06-01 19:28:37 +04:00
|
|
|
wmiir xwrite /tag/sel/ctl colmode sel default-max}
|
2008-01-21 02:00:21 +03:00
|
|
|
key $MODKEY-s || fn $key {
|
2008-06-01 19:28:37 +04:00
|
|
|
wmiir xwrite /tag/sel/ctl colmode sel stack-max}
|
2008-01-21 02:00:21 +03:00
|
|
|
key $MODKEY-m || fn $key {
|
2008-06-01 19:28:37 +04:00
|
|
|
wmiir xwrite /tag/sel/ctl colmode sel stack+max}
|
2008-01-21 02:00:21 +03:00
|
|
|
|
|
|
|
key $MODKEY-Shift-c || fn $key {
|
|
|
|
wmiir xwrite /client/sel/ctl kill}
|
|
|
|
|
|
|
|
key $MODKEY-a || fn $key {
|
2008-10-16 07:15:42 +04:00
|
|
|
Action `{wi_actions | wimenu -h $hist.action -n $histlen} &}
|
2008-01-21 02:00:21 +03:00
|
|
|
key $MODKEY-p || fn $key {
|
2008-10-16 07:59:17 +04:00
|
|
|
ifs=() { cmd = `{wimenu -h $hist.prog -n $histlen <$progs_file >[2]/dev/tty} }
|
|
|
|
wi_runcmd $cmd & }
|
2008-10-16 07:15:42 +04:00
|
|
|
|
2008-01-21 02:00:21 +03:00
|
|
|
key $MODKEY-Return || fn $key {
|
|
|
|
wi_runcmd $WMII_TERM &}
|
|
|
|
|
|
|
|
key $MODKEY-t || fn $key {
|
2008-10-16 07:15:42 +04:00
|
|
|
wmiir xwrite /ctl view `{wi_tags | wimenu -h $hist.tag -n 50} &}
|
2007-07-17 00:52:35 +04:00
|
|
|
key $MODKEY-Shift-t || fn $key {
|
|
|
|
sel = `{wmiir read /client/sel/ctl | sed 1q} \
|
2008-10-16 07:15:42 +04:00
|
|
|
wmiir xwrite /client/$sel/tags `{wi_tags | wimenu -h $hist.tag -n 50} &}
|
2007-02-23 22:05:46 +03:00
|
|
|
|
2008-01-14 23:42:21 +03:00
|
|
|
key $MODKEY-^`{seq 0 9} || fn $key {
|
2008-01-21 02:00:21 +03:00
|
|
|
wmiir xwrite /ctl view `{echo $1 | sed 's/.*-//'}}
|
2007-07-17 00:52:35 +04:00
|
|
|
key Shift-$MODKEY-^`{seq 0 9} || fn $key {
|
2008-01-21 02:00:21 +03:00
|
|
|
wmiir xwrite /client/sel/tags `{echo $1 | sed 's/.*-//'}}
|
2007-02-23 06:36:50 +03:00
|
|
|
|
2008-01-21 02:00:21 +03:00
|
|
|
#` WM Configuration
|
2007-02-24 03:50:02 +03:00
|
|
|
wmiir write /ctl <<!
|
2008-01-14 23:42:21 +03:00
|
|
|
grabmod $MODKEY
|
|
|
|
border 2
|
|
|
|
font $wmiifont
|
|
|
|
focuscolors $wmiifocuscol
|
|
|
|
normcolors $wmiinormcol
|
2007-02-24 03:50:02 +03:00
|
|
|
!
|
2008-05-28 02:34:59 +04:00
|
|
|
setbackground $wmiibackground
|
2007-02-24 03:50:02 +03:00
|
|
|
|
2007-04-01 01:22:30 +04:00
|
|
|
# Source Overrides
|
2008-01-14 23:42:21 +03:00
|
|
|
Action overridekeys
|
2007-04-01 01:22:30 +04:00
|
|
|
|
2007-02-23 06:36:50 +03:00
|
|
|
# Misc Setup
|
2008-02-05 02:33:57 +03:00
|
|
|
progs_file=`{namespace}^/proglist.$pid
|
2008-10-15 03:00:58 +04:00
|
|
|
hist=`{namespace}^/history
|
|
|
|
histlen=5000
|
2008-10-14 08:17:01 +04:00
|
|
|
touch $progs_hist
|
2008-06-01 02:42:13 +04:00
|
|
|
Action status &
|
|
|
|
Action rehash &
|
2007-02-23 06:36:50 +03:00
|
|
|
|
2007-02-26 07:29:16 +03:00
|
|
|
# Tag Bar Setup
|
2008-01-21 02:00:21 +03:00
|
|
|
ifs=$wi_nl{
|
2008-01-29 01:58:23 +03:00
|
|
|
rc -c 'wmiir rm /lbar/^$*' >[2]/dev/null \
|
|
|
|
`{comm -23 <{wmiir ls /lbar} \
|
2008-01-28 00:08:25 +03:00
|
|
|
<{wi_tags}}
|
|
|
|
seltag=`{wi_seltag}
|
2008-01-29 01:58:23 +03:00
|
|
|
for(tag in `{wi_tags}) {{
|
2007-02-23 06:36:50 +03:00
|
|
|
if(~ $tag $seltag)
|
2008-01-29 01:58:23 +03:00
|
|
|
echo $wmiifocuscol $tag
|
2007-02-23 06:36:50 +03:00
|
|
|
if not
|
2008-01-29 01:58:23 +03:00
|
|
|
echo $wmiinormcol $tag
|
|
|
|
} | wmiir create /lbar/$tag}}
|
2007-02-23 06:36:50 +03:00
|
|
|
|
2008-01-14 23:42:21 +03:00
|
|
|
wi_eventloop
|
2007-02-23 06:36:50 +03:00
|
|
|
|