mirror of
https://github.com/0intro/wmii
synced 2024-11-25 23:30:24 +03:00
Sorry, I lost track. See diff.
This commit is contained in:
parent
d951419167
commit
f55337ef2b
2
TODO
2
TODO
@ -5,6 +5,6 @@ BUGS
|
|||||||
|
|
||||||
4.0
|
4.0
|
||||||
* Opaque managed moves. I know I've argued against it, but it may be doable.
|
* Opaque managed moves. I know I've argued against it, but it may be doable.
|
||||||
* Resizable managed area
|
* Resizable managed area. Maybe. Struts seem to do everything this might.
|
||||||
* New dmenu, with real cursor; snarfable.
|
* New dmenu, with real cursor; snarfable.
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ FILTER = sed "s|CONFPREFIX|$(ETC)|g; \
|
|||||||
s|CONFVERSION|$(CONFVERSION)|g; \
|
s|CONFVERSION|$(CONFVERSION)|g; \
|
||||||
s|P9PATHS|$(P9PATHS)|g; \
|
s|P9PATHS|$(P9PATHS)|g; \
|
||||||
s|LIBDIR|$(LIBDIR)|g; \
|
s|LIBDIR|$(LIBDIR)|g; \
|
||||||
|
s|BINSH|$(BINSH)|g; \
|
||||||
s|AWKPATH|$(AWKPATH)|g"
|
s|AWKPATH|$(AWKPATH)|g"
|
||||||
|
|
||||||
LDFLAGS += -lfmt -lutf
|
LDFLAGS += -lfmt -lutf
|
||||||
|
@ -14,6 +14,10 @@ _wi_script() {
|
|||||||
narg = 1;
|
narg = 1;
|
||||||
body = "";
|
body = "";
|
||||||
}
|
}
|
||||||
|
function quote(s) {
|
||||||
|
gsub(/"'"/, "'\\''", s)
|
||||||
|
return "'" s "'"
|
||||||
|
}
|
||||||
function addevent() {
|
function addevent() {
|
||||||
var = arg[1] "s"
|
var = arg[1] "s"
|
||||||
for(i=2; i <= narg; i++) {
|
for(i=2; i <= narg; i++) {
|
||||||
@ -24,11 +28,11 @@ _wi_script() {
|
|||||||
if(i == 2) {
|
if(i == 2) {
|
||||||
# There's a bug here. Can you spot it?
|
# There's a bug here. Can you spot it?
|
||||||
gsub("[^a-zA-Z_0-9]", "_", arg[2]);
|
gsub("[^a-zA-Z_0-9]", "_", arg[2]);
|
||||||
body = sprintf("%s_%s \"$@\"", arg[1], arg[2])
|
body = sprintf("%s %s \"$@\"", arg[1], arg[2])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/^(Event|Key|Action)[ \t]/ {
|
/^(Event|Key|Action|Menu)[ \t]/ {
|
||||||
addevent()
|
addevent()
|
||||||
split($0, arg)
|
split($0, arg)
|
||||||
narg = NF
|
narg = NF
|
||||||
@ -43,13 +47,16 @@ _wi_script() {
|
|||||||
for(k in a) {
|
for(k in a) {
|
||||||
split(k, b, SUBSEP)
|
split(k, b, SUBSEP)
|
||||||
c[b[1]] = c[b[1]] b[2] "\n"
|
c[b[1]] = c[b[1]] b[2] "\n"
|
||||||
gsub("[^a-zA-Z_0-9]", "_", b[2]);
|
|
||||||
if(body != "")
|
if(body != "")
|
||||||
printf "%s_%s() { %s\n }\n", b[1], b[2], a[k]
|
d[b[1]] = d[b[1]] quote(b[2]) ")" a[k] ";;\n"
|
||||||
}
|
}
|
||||||
for(k in c) {
|
for(k in c)
|
||||||
gsub("'", "'\"'\"'", c[k])
|
printf "%ss=%s\n", k, quote(c[k])
|
||||||
printf "%ss='%s'\n", k, c[k]
|
for(k in d) {
|
||||||
|
printf "%s() {\n", k
|
||||||
|
printf " %s=$1; shift\n", tolower(k)
|
||||||
|
printf "case $%s in\n%s\nesac\n", tolower(k), d[k]
|
||||||
|
printf "}\n"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
!
|
!
|
||||||
@ -62,8 +69,7 @@ Event Start
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
Event Key
|
Event Key
|
||||||
fn=$(echo "$@" | sed 's/[^a-zA-Z_0-9]/_/g')
|
Key "$@"
|
||||||
Key_$fn "$@"
|
|
||||||
!
|
!
|
||||||
eval "cat <<!
|
eval "cat <<!
|
||||||
$(sed "$_sed" | sed '/^[ ]/s/\([$`]\)/\\\1/g')
|
$(sed "$_sed" | sed '/^[ ]/s/\([$`]\)/\\\1/g')
|
||||||
@ -76,6 +82,7 @@ wi_events() {
|
|||||||
_sed="s/^$2//"
|
_sed="s/^$2//"
|
||||||
shift 2
|
shift 2
|
||||||
fi
|
fi
|
||||||
|
#cho "$(_wi_text | awk "$(_wi_script)")" | cat -n
|
||||||
eval "$(_wi_text | awk "$(_wi_script)")"
|
eval "$(_wi_text | awk "$(_wi_script)")"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,6 +112,19 @@ wi_9menu() {
|
|||||||
wi_9menu "$@"
|
wi_9menu "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wi_fnmenu() {
|
||||||
|
group="$1-$2"; shift 2
|
||||||
|
_last="$(echo $group|tr - _)_last"
|
||||||
|
eval "last=\"\$$_last\""
|
||||||
|
res=$(set -- $(echo "$Menus" | awk -v "s=$group" 'BEGIN{n=length(s)}
|
||||||
|
substr($1,1,n) == s{print substr($1,n+2)}')
|
||||||
|
[ $# != 0 ] && wi_9menu -initial "$last" "$@")
|
||||||
|
if [ -n "$res" ]; then
|
||||||
|
eval "$_last="'"$res"'
|
||||||
|
Menu $group-$res "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
wi_proglist() {
|
wi_proglist() {
|
||||||
ls -lL $(echo $* | sed 'y/:/ /') 2>/dev/null \
|
ls -lL $(echo $* | sed 'y/:/ /') 2>/dev/null \
|
||||||
| awk '$1 ~ /^[^d].*x/ { print $NF }' \
|
| awk '$1 ~ /^[^d].*x/ { print $NF }' \
|
||||||
@ -153,24 +173,29 @@ wi_tags() {
|
|||||||
wmiir ls /tag | sed 's,/,,; /^sel$/d'
|
wmiir ls /tag | sed 's,/,,; /^sel$/d'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wi_seltag() {
|
||||||
|
wmiir read /tag/sel/ctl | sed 1q | tr -d '\012'
|
||||||
|
}
|
||||||
|
|
||||||
wi_eventloop() {
|
wi_eventloop() {
|
||||||
echo "$Keys" | wmiir write /keys
|
echo "$Keys" | wmiir write /keys
|
||||||
|
|
||||||
wmiir read /event | while read wi_event
|
wmiir read /event | while read wi_event
|
||||||
do
|
do
|
||||||
OIFS="$IFS"; IFS="$wi_nl"
|
IFS="$wi_nl"
|
||||||
wi_arg=$(echo "$wi_event" | sed 's/^[^ ]* //')
|
wi_arg=$(echo "$wi_event" | sed 's/^[^ ]* //')
|
||||||
IFS="$OIFS"
|
unset IFS
|
||||||
set -- $wi_event
|
set -- $wi_event
|
||||||
event=$1; shift
|
event=$1; shift
|
||||||
Event_$event $@
|
Event $event "$@"
|
||||||
done 2>/dev/null
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
Action() {
|
action() {
|
||||||
action=$1; shift
|
action=$1; shift
|
||||||
if [ -n "$action" ]; then
|
if [ -n "$action" ]; then
|
||||||
Action_$action "$@" \
|
set +x
|
||||||
|
Action $action "$@" \
|
||||||
|| wi_runconf $action "$@"
|
|| wi_runconf $action "$@"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -369,8 +369,11 @@ comp_frame(const void *a, const void *b) {
|
|||||||
return ia < ib ? -1 :
|
return ia < ib ? -1 :
|
||||||
ia > ib ? 1 :
|
ia > ib ? 1 :
|
||||||
/* Favor the selected client. */
|
/* Favor the selected client. */
|
||||||
|
/* No... don't. Windows shouldn't jump when the mouse
|
||||||
|
* enters them.
|
||||||
fa == fa->area->sel ? -1 :
|
fa == fa->area->sel ? -1 :
|
||||||
fb == fa->area->sel ? 1 :
|
fb == fa->area->sel ? 1 :
|
||||||
|
*/
|
||||||
0;
|
0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -488,6 +491,8 @@ column_arrange(Area *a, bool dirty) {
|
|||||||
}
|
}
|
||||||
column_scale(a);
|
column_scale(a);
|
||||||
resize:
|
resize:
|
||||||
|
/* XXX */
|
||||||
|
if(a->sel->collapsed)
|
||||||
area_setsel(a, a->sel);
|
area_setsel(a, a->sel);
|
||||||
if(v == screen->sel) {
|
if(v == screen->sel) {
|
||||||
//view_restack(v);
|
//view_restack(v);
|
||||||
|
@ -568,7 +568,7 @@ move_focus(Frame *old_f, Frame *f) {
|
|||||||
|
|
||||||
void
|
void
|
||||||
frame_focus(Frame *f) {
|
frame_focus(Frame *f) {
|
||||||
Frame *old_f;
|
Frame *old_f, *ff;
|
||||||
View *v;
|
View *v;
|
||||||
Area *a, *old_a;
|
Area *a, *old_a;
|
||||||
|
|
||||||
@ -576,10 +576,20 @@ frame_focus(Frame *f) {
|
|||||||
a = f->area;
|
a = f->area;
|
||||||
old_a = v->sel;
|
old_a = v->sel;
|
||||||
|
|
||||||
|
if(0 && f->collapsed) {
|
||||||
|
for(ff=f; ff->collapsed && ff->anext; ff=ff->anext)
|
||||||
|
;
|
||||||
|
for(; ff->collapsed && ff->aprev; ff=ff->aprev)
|
||||||
|
;
|
||||||
|
/* XXX */
|
||||||
|
f->colr.max.y = f->colr.min.y + Dy(ff->colr);
|
||||||
|
ff->colr.max.y = ff->colr.min.y + labelh(def.font);
|
||||||
|
}else {
|
||||||
for(; f->collapsed && f->anext; f=f->anext)
|
for(; f->collapsed && f->anext; f=f->anext)
|
||||||
;
|
;
|
||||||
for(; f->collapsed && f->aprev; f=f->aprev)
|
for(; f->collapsed && f->aprev; f=f->aprev)
|
||||||
;
|
;
|
||||||
|
}
|
||||||
|
|
||||||
old_f = old_a->sel;
|
old_f = old_a->sel;
|
||||||
a->sel = f;
|
a->sel = f;
|
||||||
@ -595,7 +605,9 @@ frame_focus(Frame *f) {
|
|||||||
move_focus(old_f, f);
|
move_focus(old_f, f);
|
||||||
client_focus(f->client);
|
client_focus(f->client);
|
||||||
|
|
||||||
|
/*
|
||||||
if(!a->floating && ((a->mode == Colstack) || (a->mode == Colmax)))
|
if(!a->floating && ((a->mode == Colstack) || (a->mode == Colmax)))
|
||||||
|
*/
|
||||||
column_arrange(a, false);
|
column_arrange(a, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -220,6 +220,8 @@ view_update(View *v) {
|
|||||||
|
|
||||||
if(v != screen->sel)
|
if(v != screen->sel)
|
||||||
return;
|
return;
|
||||||
|
if(starting)
|
||||||
|
return;
|
||||||
|
|
||||||
frames_update_sel(v);
|
frames_update_sel(v);
|
||||||
view_arrange(v);
|
view_arrange(v);
|
||||||
@ -313,6 +315,7 @@ view_attach(View *v, Frame *f) {
|
|||||||
|
|
||||||
if(c->sel == nil)
|
if(c->sel == nil)
|
||||||
c->sel = f;
|
c->sel = f;
|
||||||
|
view_update(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/sh -f
|
#!BINSH -f
|
||||||
# start wmiirc
|
# start wmiirc
|
||||||
|
|
||||||
export home="$HOME"
|
export home="$HOME"
|
||||||
|
@ -28,6 +28,10 @@ AR = ar crs
|
|||||||
|
|
||||||
AWKPATH = $$(which awk)
|
AWKPATH = $$(which awk)
|
||||||
P9PATHS = ${PLAN9}:"'$${HOME}/plan9'":/usr/local/plan9:/usr/local/9:/opt/plan9:/opt/9:/usr/plan9:/usr/9
|
P9PATHS = ${PLAN9}:"'$${HOME}/plan9'":/usr/local/plan9:/usr/local/9:/opt/plan9:/opt/9:/usr/plan9:/usr/9
|
||||||
|
# Your make shell. By default, the first found of /bin/dash, /bin/ksh,
|
||||||
|
# /bin/sh. Except with bsdmake, which assumes /bin/sh is sane. bash and zsh
|
||||||
|
# are painfully slow, and should be avoided.
|
||||||
|
#BINSH = /bin/ash
|
||||||
|
|
||||||
INCX11 = -I/usr/X11R6/include
|
INCX11 = -I/usr/X11R6/include
|
||||||
LIBX11 = -L/usr/X11R6/lib -lX11
|
LIBX11 = -L/usr/X11R6/lib -lX11
|
||||||
|
@ -14,6 +14,14 @@ MKCFGSH=if test -f $(ROOT)/config.local.mk; then echo $(ROOT)/config.local.mk; e
|
|||||||
MKCFG:=${shell $(MKCFGSH)}
|
MKCFG:=${shell $(MKCFGSH)}
|
||||||
MKCFG!=${MKCFGSH}
|
MKCFG!=${MKCFGSH}
|
||||||
include $(MKCFG)
|
include $(MKCFG)
|
||||||
|
# and this:
|
||||||
|
# Try to find a sane shell. /bin/sh is a last resort, because it's
|
||||||
|
# usually bash on Linux, which means, it's painfully slow.
|
||||||
|
BINSH := $(shell \
|
||||||
|
if [ -x /bin/dash ]; then echo /bin/dash; \
|
||||||
|
elif [ -x /bin/ksh ]; then echo /bin/ksh; \
|
||||||
|
else echo /bin/sh; fi)
|
||||||
|
BINSH != echo /bin/sh
|
||||||
|
|
||||||
.SILENT:
|
.SILENT:
|
||||||
.SUFFIXES: .O .o .o_pic .c .sh .rc .$(SOEXT) .awk .1 .man1 .depend .install .uninstall .clean
|
.SUFFIXES: .O .o .o_pic .c .sh .rc .$(SOEXT) .awk .1 .man1 .depend .install .uninstall .clean
|
||||||
|
@ -10,6 +10,7 @@ TARG = rc.wmii \
|
|||||||
FILTER = sed "s|CONFPREFIX|${ETC}|g; \
|
FILTER = sed "s|CONFPREFIX|${ETC}|g; \
|
||||||
s|CONFVERSION|${CONFVERSION}|g; \
|
s|CONFVERSION|${CONFVERSION}|g; \
|
||||||
s|P9PATHS|${P9PATHS}|g; \
|
s|P9PATHS|${P9PATHS}|g; \
|
||||||
|
s|BINSH|$(BINSH)|g; \
|
||||||
s|AWKPATH|${AWKPATH}|g"
|
s|AWKPATH|${AWKPATH}|g"
|
||||||
|
|
||||||
include ${ROOT}/mk/many.mk
|
include ${ROOT}/mk/many.mk
|
||||||
|
41
rc/wmiirc.sh
41
rc/wmiirc.sh
@ -1,4 +1,4 @@
|
|||||||
#!/bin/sh -f
|
#!BINSH -f
|
||||||
# Configure wmii
|
# Configure wmii
|
||||||
wmiiscript=wmiirc # For wmii.sh
|
wmiiscript=wmiirc # For wmii.sh
|
||||||
. wmii.sh
|
. wmii.sh
|
||||||
@ -22,8 +22,8 @@ WMII_BACKGROUND='#333333'
|
|||||||
WMII_FONT='-*-fixed-medium-r-*-*-13-*-*-*-*-*-*-*'
|
WMII_FONT='-*-fixed-medium-r-*-*-13-*-*-*-*-*-*-*'
|
||||||
|
|
||||||
set -- $(echo $WMII_NORMCOLORS $WMII_FOCUSCOLORS)
|
set -- $(echo $WMII_NORMCOLORS $WMII_FOCUSCOLORS)
|
||||||
WMII_MENU="dmenu -b -fn '\$WMII_FONT' -nf '$1' -nb '$2' -sf '$4' -sb '$5'"
|
WMII_MENU='dmenu -b -fn "$WMII_FONT"'" -nf '$1' -nb '$2' -sf '$4' -sb '$5'"
|
||||||
WMII_9MENU="wmii9menu -font '\$WMII_FONT' -nf '$1' -nb '$2' -sf '$4' -sb '$5' -br '$6'"
|
WMII_9MENU='wmii9menu -font "$WMII_FONT"'" -nf '$1' -nb '$2' -sf '$4' -sb '$5' -br '$6'"
|
||||||
WMII_TERM="xterm"
|
WMII_TERM="xterm"
|
||||||
|
|
||||||
# Column Rules
|
# Column Rules
|
||||||
@ -47,7 +47,7 @@ wi_runconf -s wmiirc_local
|
|||||||
echo $WMII_NORMCOLORS | wmiir create $noticebar
|
echo $WMII_NORMCOLORS | wmiir create $noticebar
|
||||||
|
|
||||||
# Event processing
|
# Event processing
|
||||||
events="$(
|
events() {
|
||||||
sed 's/^ //' <<'!'
|
sed 's/^ //' <<'!'
|
||||||
# Events
|
# Events
|
||||||
Event CreateTag
|
Event CreateTag
|
||||||
@ -97,6 +97,31 @@ events="$(
|
|||||||
kill $xpid 2>/dev/null # Let's hope this isn't reused...
|
kill $xpid 2>/dev/null # Let's hope this isn't reused...
|
||||||
{ sleep $noticetimeout; wmiir xwrite $noticebar ' '; }&
|
{ sleep $noticetimeout; wmiir xwrite $noticebar ' '; }&
|
||||||
xpid = $!
|
xpid = $!
|
||||||
|
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
|
# Actions
|
||||||
Action quit
|
Action quit
|
||||||
wmiir xwrite /ctl quit
|
wmiir xwrite /ctl quit
|
||||||
@ -138,7 +163,7 @@ events="$(
|
|||||||
Key $MODKEY-t
|
Key $MODKEY-t
|
||||||
wmiir xwrite /ctl view $(wi_tags | wi_menu) &
|
wmiir xwrite /ctl view $(wi_tags | wi_menu) &
|
||||||
Key $MODKEY-Return
|
Key $MODKEY-Return
|
||||||
eval $WMII_TERM &
|
eval wmiir setsid $WMII_TERM &
|
||||||
Key $MODKEY-Shift-space
|
Key $MODKEY-Shift-space
|
||||||
wmiir xwrite /tag/sel/ctl send sel toggle
|
wmiir xwrite /tag/sel/ctl send sel toggle
|
||||||
Key $MODKEY-f
|
Key $MODKEY-f
|
||||||
@ -172,9 +197,9 @@ events="$(
|
|||||||
wmiir xwrite /client/sel/tags "$i"
|
wmiir xwrite /client/sel/tags "$i"
|
||||||
!
|
!
|
||||||
done
|
done
|
||||||
)"
|
}
|
||||||
wi_events <<!
|
wi_events <<!
|
||||||
$events
|
$(events)
|
||||||
$local_events
|
$local_events
|
||||||
!
|
!
|
||||||
unset events local_events
|
unset events local_events
|
||||||
@ -195,7 +220,7 @@ export WMII_FOCUSCOLORS WMII_SELCOLORS WMII_NORMCOLORS
|
|||||||
|
|
||||||
# Misc
|
# Misc
|
||||||
progsfile="$(wmiir namespace)/.proglist"
|
progsfile="$(wmiir namespace)/.proglist"
|
||||||
Action status &
|
action status &
|
||||||
wi_proglist $PATH >$progsfile &
|
wi_proglist $PATH >$progsfile &
|
||||||
|
|
||||||
# Setup Tag Bar
|
# Setup Tag Bar
|
||||||
|
Loading…
Reference in New Issue
Block a user