ewmh

Implementation of the Extended Window Manager Hints (EWMH)

Usage no npm install needed!

<script type="module">
  import ewmh from 'https://cdn.skypack.dev/ewmh';
</script>

README

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