Awesome
node-ewmh
This module allows a window manager to implement the Extended Window Manager Hints. See: http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html
Example
Install x11 and ewmh modules
npm install x11 ewmh
var x11 = require('x11');
var EWMH = require('ewmh');
x11.createClient(function(err, display) {
if (err) {
throw err;
}
var ewmh = new EWMH(display.client, display.screen[0].root);
ewmh.on('CurrentDesktop', function(d) {
console.log('Client requested current desktop to be: ' + d);
});
ewmh.set_number_of_desktops(4, function(err) {
if (err) {
throw err;
}
ewmh.set_current_desktop(1);
});
});
HINTS - API relationship
This is a work in progress.
_NET_SUPPORTED - ewmh.set_supported(hints_list, cb)
_NET_NUMBER_OF_DESKTOPS - ewmh.set_number_of_desktops
_NET_CURRENT_DESKTOP - ewmh.set_current_desktop
_NET_CLIENT_LIST - ewmh.update_window_list(list, cb)
_NET_CLIENT_LIST_STACKING - ewmh.update_window_list_stacking(list_stacking, cb)
_NET_WM_PID - emwh.set_pid(windowId, cb)
WM_CLIENT_MACHINE - emwh.set_hostname(windowId, cb)
_NET_ACTIVE_WINDOW - ewmh.set_active_window(windowId, cb)
_NET_WM_CM_S0 - emwh.set_composite_manager_owner(windowId, screenNo, cb)
_NET_CLOSE_WINDOW - ewmh.close_window(windowId, delete_protocol);
_NET_WM_DESKTOP - ewmh.set_desktop(windowId, desktop, cb);
=======
EVENTS
Events are generated whenever a client requests the modification of a HINT.
Events - Hint relationship
ActiveWindow - _NET_ACTIVE_WINDOW
Close Window - _NET_CLOSE_WINDOW
CurrentDesktop - _NET_CURRENT_DESKTOP
Desktop - _NET_WM_DESKTOP