wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit e9752c508140f42b054b1c679f95c479cc5db070
parent 7fcbd1be5e12e01cc8c92a2391c5f2949dca9287
Author: Kris Maglione <jg@suckless.org>
Date:   Fri, 16 Oct 2009 09:31:50 -0400

Follow some more EWMH "MUST"s.

Diffstat:
cmd/wmii/ewmh.c | 28+++++++++++++++++++++++++---
1 file changed, 25 insertions(+), 3 deletions(-)

diff --git a/cmd/wmii/ewmh.c b/cmd/wmii/ewmh.c @@ -41,14 +41,17 @@ ewmh_init(void) { long supported[] = { /* Misc */ NET("SUPPORTED"), - /* Root Properties */ + /* Root Properties/Messages */ NET("ACTIVE_WINDOW"), + NET("CLOSE_WINDOW"), NET("CURRENT_DESKTOP"), /* Client Properties */ + NET("FRAME_EXTENTS"), + NET("WM_DESKTOP"), + NET("WM_FULLSCREEN_MONITORS"), NET("WM_NAME"), + NET("WM_STRUT"), NET("WM_STRUT_PARTIAL"), - NET("WM_DESKTOP"), - NET("FRAME_EXTENTS"), /* States */ NET("WM_STATE"), STATE("DEMANDS_ATTENTION"), @@ -377,6 +380,17 @@ ewmh_clientmessage(XClientMessageEvent *e) { focus(c, true); return 1; }else + if(msg == NET("CLOSE_WINDOW")) { + if(e->format != 32) + return -1; + Dprint(DEwmh, "\tsource: %ld\n", l[0]); + Dprint(DEwmh, "\twindow: 0x%lx\n", e->window); + c = win2client(e->window); + if(c == nil) + return 1; + client_kill(c, true); + return 1; + }else if(msg == NET("CURRENT_DESKTOP")) { if(e->format != 32) return -1; @@ -453,6 +467,14 @@ ewmh_updatestate(Client *c) { changeprop_long(&c->w, Net("WM_STATE"), "ATOM", state, i); else delproperty(&c->w, Net("WM_STATE")); + + if(c->fullscreen >= 0) + changeprop_long(&c->w, Net("WM_FULLSCREEN_MONITORS"), "CARDINAL", + (long[]) { c->fullscreen, c->fullscreen, + c->fullscreen, c->fullscreen }, + 4); + else + delproperty(&c->w, Net("WM_FULLSCREEN_MONITORS")); } /* Views */