Permalink
Cannot retrieve contributors at this time
Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign up
Fetching contributors…
| ;;; xcb-ewmh.el --- Extended Window Manager Hints -*- lexical-binding: t -*- | |
| ;; Copyright (C) 2015-2018 Free Software Foundation, Inc. | |
| ;; Author: Chris Feng <chris.w.feng@gmail.com> | |
| ;; This file is part of GNU Emacs. | |
| ;; GNU Emacs is free software: you can redistribute it and/or modify | |
| ;; it under the terms of the GNU General Public License as published by | |
| ;; the Free Software Foundation, either version 3 of the License, or | |
| ;; (at your option) any later version. | |
| ;; GNU Emacs is distributed in the hope that it will be useful, | |
| ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| ;; GNU General Public License for more details. | |
| ;; You should have received a copy of the GNU General Public License | |
| ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | |
| ;;; Commentary: | |
| ;; This library implements EWMH the same way as xcb/util-wm. | |
| ;; Usage tips: | |
| ;; + Do not forget to call `xcb:ewmh:init' for _every_ connection using | |
| ;; this library. | |
| ;; + Use `xcb:ewmh:SendEvent' instead of `xcb:SendEvent' to send client | |
| ;; messages defined in this library. | |
| ;; + Initializing this library auto loads and initializes 'xcb-icccm'. | |
| ;; References: | |
| ;; + EWMH (http://standards.freedesktop.org/wm-spec/wm-spec-latest.html) | |
| ;; + xcb/util-wm (git://anongit.freedesktop.org/xcb/util-wm) | |
| ;;; Code: | |
| (require 'xcb) | |
| (require 'xcb-icccm) | |
| ;;;; EWMH Atoms | |
| (eval-and-compile | |
| (defconst xcb:ewmh:-atoms | |
| '( ;; Root Window Properties (and Related Messages) | |
| _NET_SUPPORTED | |
| _NET_CLIENT_LIST | |
| _NET_CLIENT_LIST_STACKING | |
| _NET_NUMBER_OF_DESKTOPS | |
| _NET_DESKTOP_GEOMETRY | |
| _NET_DESKTOP_VIEWPORT | |
| _NET_CURRENT_DESKTOP | |
| _NET_DESKTOP_NAMES | |
| _NET_ACTIVE_WINDOW | |
| _NET_WORKAREA | |
| _NET_SUPPORTING_WM_CHECK | |
| _NET_VIRTUAL_ROOTS | |
| _NET_DESKTOP_LAYOUT | |
| _NET_SHOWING_DESKTOP | |
| ;; Other Root Window Messages | |
| _NET_CLOSE_WINDOW | |
| _NET_MOVERESIZE_WINDOW | |
| _NET_WM_MOVERESIZE | |
| _NET_RESTACK_WINDOW | |
| _NET_REQUEST_FRAME_EXTENTS | |
| ;; Application Window Properties | |
| _NET_WM_NAME | |
| _NET_WM_VISIBLE_NAME | |
| _NET_WM_ICON_NAME | |
| _NET_WM_VISIBLE_ICON_NAME | |
| _NET_WM_DESKTOP | |
| _NET_WM_WINDOW_TYPE | |
| _NET_WM_STATE | |
| _NET_WM_ALLOWED_ACTIONS | |
| _NET_WM_STRUT | |
| _NET_WM_STRUT_PARTIAL | |
| _NET_WM_ICON_GEOMETRY | |
| _NET_WM_ICON | |
| _NET_WM_PID | |
| _NET_WM_HANDLED_ICONS | |
| _NET_WM_USER_TIME | |
| _NET_WM_USER_TIME_WINDOW | |
| _NET_FRAME_EXTENTS | |
| _NET_WM_OPAQUE_REGION | |
| _NET_WM_BYPASS_COMPOSITOR | |
| ;; Window Manager Protocols | |
| _NET_WM_PING | |
| _NET_WM_SYNC_REQUEST | |
| _NET_WM_SYNC_REQUEST_COUNTER | |
| _NET_WM_FULLSCREEN_MONITORS | |
| ;; Other Properties | |
| _NET_WM_FULL_PLACEMENT | |
| _NET_WM_CM_S0 ;_NET_WM_CM_Sn (n = 1, 2, ...) are left out here. | |
| ;; _NET_WM_WINDOW_TYPE hint | |
| _NET_WM_WINDOW_TYPE_DESKTOP | |
| _NET_WM_WINDOW_TYPE_DOCK | |
| _NET_WM_WINDOW_TYPE_TOOLBAR | |
| _NET_WM_WINDOW_TYPE_MENU | |
| _NET_WM_WINDOW_TYPE_UTILITY | |
| _NET_WM_WINDOW_TYPE_SPLASH | |
| _NET_WM_WINDOW_TYPE_DIALOG | |
| _NET_WM_WINDOW_TYPE_DROPDOWN_MENU | |
| _NET_WM_WINDOW_TYPE_POPUP_MENU | |
| _NET_WM_WINDOW_TYPE_TOOLTIP | |
| _NET_WM_WINDOW_TYPE_NOTIFICATION | |
| _NET_WM_WINDOW_TYPE_COMBO | |
| _NET_WM_WINDOW_TYPE_DND | |
| _NET_WM_WINDOW_TYPE_NORMAL | |
| ;; _NET_WM_STATE hint | |
| _NET_WM_STATE_MODAL | |
| _NET_WM_STATE_STICKY | |
| _NET_WM_STATE_MAXIMIZED_VERT | |
| _NET_WM_STATE_MAXIMIZED_HORZ | |
| _NET_WM_STATE_SHADED | |
| _NET_WM_STATE_SKIP_TASKBAR | |
| _NET_WM_STATE_SKIP_PAGER | |
| _NET_WM_STATE_HIDDEN | |
| _NET_WM_STATE_FULLSCREEN | |
| _NET_WM_STATE_ABOVE | |
| _NET_WM_STATE_BELOW | |
| _NET_WM_STATE_DEMANDS_ATTENTION | |
| _NET_WM_STATE_FOCUSED | |
| ;; _NET_WM_ACTION hint | |
| _NET_WM_ACTION_MOVE | |
| _NET_WM_ACTION_RESIZE | |
| _NET_WM_ACTION_MINIMIZE | |
| _NET_WM_ACTION_SHADE | |
| _NET_WM_ACTION_STICK | |
| _NET_WM_ACTION_MAXIMIZE_HORZ | |
| _NET_WM_ACTION_MAXIMIZE_VERT | |
| _NET_WM_ACTION_FULLSCREEN | |
| _NET_WM_ACTION_CHANGE_DESKTOP | |
| _NET_WM_ACTION_CLOSE | |
| _NET_WM_ACTION_ABOVE | |
| _NET_WM_ACTION_BELOW) | |
| "EWMH atoms.") | |
| (dolist (atom xcb:ewmh:-atoms) | |
| (eval `(defvar ,(intern (concat "xcb:Atom:" (symbol-name atom))) nil)))) | |
| (cl-defmethod xcb:ewmh:init ((obj xcb:connection) &optional force) | |
| "Initialize EWMH module. | |
| This method must be called before using any other method in this module. | |
| This method also initializes ICCCM module automatically." | |
| (when (or force (not xcb:Atom:_NET_SUPPORTED)) | |
| (xcb:icccm:init obj) ;required | |
| (let ((atoms xcb:ewmh:-atoms)) | |
| (dotimes (i (1- (x-display-screens))) | |
| (push (intern (format "_NET_WM_CM_S%d" (1+ i))) atoms)) | |
| (xcb:icccm:intern-atoms obj atoms force)))) | |
| ;;;; Client message | |
| (defclass xcb:ewmh:SendEvent (xcb:SendEvent) | |
| ((propagate :initform 0) | |
| (event-mask :initform (logior xcb:EventMask:SubstructureNotify | |
| xcb:EventMask:SubstructureRedirect))) | |
| :documentation "A fork of `xcb:SendEvent' to send EWMH client message. | |
| Note that this only applies to \"sending a message to the root window\" in | |
| EWMH") | |
| (defclass xcb:ewmh:-ClientMessage (xcb:icccm:--ClientMessage xcb:ClientMessage) | |
| ((format :initform 32))) | |
| ;;;; Abstract classes for getting/changing (UTF-8) string properties | |
| (defclass xcb:ewmh:-GetProperty-utf8 (xcb:icccm:-GetProperty-text) | |
| ((type :initform xcb:Atom:UTF8_STRING)) | |
| :documentation "Get an EWMH UTF-8 text property (request part).") | |
| (defclass xcb:ewmh:-GetProperty-utf8~reply (xcb:icccm:-GetProperty-text~reply) | |
| nil | |
| :documentation "Get an EWMH UTF-8 text property (reply part).") | |
| (defclass xcb:ewmh:-ChangeProperty-utf8 (xcb:icccm:-ChangeProperty-text) | |
| ((type :initform xcb:Atom:UTF8_STRING)) | |
| :documentation "Change an EWMH UTF-8 text property.") | |
| ;;;; Root Window Properties (and Related Messages) | |
| ;; _NET_SUPPORTED | |
| (defclass xcb:ewmh:get-_NET_SUPPORTED (xcb:icccm:-GetProperty) | |
| ((property :initform xcb:Atom:_NET_SUPPORTED) | |
| (type :initform xcb:Atom:ATOM))) | |
| (defclass xcb:ewmh:get-_NET_SUPPORTED~reply (xcb:icccm:-GetProperty~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_SUPPORTED (xcb:icccm:-ChangeProperty) | |
| ((property :initform xcb:Atom:_NET_SUPPORTED) | |
| (type :initform xcb:Atom:ATOM))) | |
| ;; _NET_CLIENT_LIST | |
| (defclass xcb:ewmh:get-_NET_CLIENT_LIST (xcb:icccm:-GetProperty) | |
| ((property :initform xcb:Atom:_NET_CLIENT_LIST) | |
| (type :initform xcb:Atom:WINDOW))) | |
| (defclass xcb:ewmh:get-_NET_CLIENT_LIST~reply (xcb:icccm:-GetProperty~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_CLIENT_LIST (xcb:icccm:-ChangeProperty) | |
| ((property :initform xcb:Atom:_NET_CLIENT_LIST) | |
| (type :initform xcb:Atom:WINDOW))) | |
| ;; _NET_CLIENT_LIST_STACKING | |
| (defclass xcb:ewmh:get-_NET_CLIENT_LIST_STACKING (xcb:icccm:-GetProperty) | |
| ((property :initform xcb:Atom:_NET_CLIENT_LIST_STACKING) | |
| (type :initform xcb:Atom:WINDOW))) | |
| (defclass xcb:ewmh:get-_NET_CLIENT_LIST_STACKING~reply | |
| (xcb:icccm:-GetProperty~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_CLIENT_LIST_STACKING (xcb:icccm:-ChangeProperty) | |
| ((property :initform xcb:Atom:_NET_CLIENT_LIST_STACKING) | |
| (type :initform xcb:Atom:WINDOW))) | |
| ;; _NET_NUMBER_OF_DESKTOPS | |
| (defclass xcb:ewmh:get-_NET_NUMBER_OF_DESKTOPS (xcb:icccm:-GetProperty-single) | |
| ((property :initform xcb:Atom:_NET_NUMBER_OF_DESKTOPS) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:get-_NET_NUMBER_OF_DESKTOPS~reply | |
| (xcb:icccm:-GetProperty-single~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_NUMBER_OF_DESKTOPS | |
| (xcb:icccm:-ChangeProperty-single) | |
| ((property :initform xcb:Atom:_NET_NUMBER_OF_DESKTOPS) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| ;; _NET_DESKTOP_GEOMETRY | |
| (defclass xcb:ewmh:-_NET_DESKTOP_GEOMETRY (xcb:--struct) | |
| ((width :initarg :width :type xcb:-ignore) | |
| (height :initarg :height :type xcb:-ignore))) | |
| ;; | |
| (defclass xcb:ewmh:get-_NET_DESKTOP_GEOMETRY (xcb:icccm:-GetProperty-explicit) | |
| ((property :initform xcb:Atom:_NET_DESKTOP_GEOMETRY) | |
| (type :initform xcb:Atom:CARDINAL) | |
| (long-length :initform 2))) | |
| (defclass xcb:ewmh:get-_NET_DESKTOP_GEOMETRY~reply | |
| (xcb:icccm:-GetProperty-explicit~reply xcb:ewmh:-_NET_DESKTOP_GEOMETRY) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_DESKTOP_GEOMETRY | |
| (xcb:icccm:-ChangeProperty-explicit xcb:ewmh:-_NET_DESKTOP_GEOMETRY) | |
| ((property :initform xcb:Atom:_NET_DESKTOP_GEOMETRY) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:_NET_DESKTOP_GEOMETRY | |
| (xcb:ewmh:-ClientMessage xcb:ewmh:-_NET_DESKTOP_GEOMETRY) | |
| ((type :initform xcb:Atom:_NET_DESKTOP_GEOMETRY))) | |
| ;; _NET_DESKTOP_VIEWPORT | |
| (defclass xcb:ewmh:get-_NET_DESKTOP_VIEWPORT (xcb:icccm:-GetProperty) | |
| ((property :initform xcb:Atom:_NET_DESKTOP_VIEWPORT) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:get-_NET_DESKTOP_VIEWPORT~reply | |
| (xcb:icccm:-GetProperty~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_DESKTOP_VIEWPORT (xcb:icccm:-ChangeProperty) | |
| ((property :initform xcb:Atom:_NET_DESKTOP_VIEWPORT) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:_NET_DESKTOP_VIEWPORT (xcb:ewmh:-ClientMessage) | |
| ((type :initform xcb:Atom:_NET_DESKTOP_VIEWPORT) | |
| (new-vx :initarg :new-vx :type xcb:CARD32) | |
| (new-vy :initarg :new-vy :type xcb:CARD32))) | |
| ;; _NET_CURRENT_DESKTOP | |
| (defclass xcb:ewmh:get-_NET_CURRENT_DESKTOP (xcb:icccm:-GetProperty-single) | |
| ((property :initform xcb:Atom:_NET_CURRENT_DESKTOP) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:get-_NET_CURRENT_DESKTOP~reply | |
| (xcb:icccm:-GetProperty-single~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_CURRENT_DESKTOP (xcb:icccm:-ChangeProperty-single) | |
| ((property :initform xcb:Atom:_NET_CURRENT_DESKTOP) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:_NET_CURRENT_DESKTOP (xcb:ewmh:-ClientMessage) | |
| ((type :initform xcb:Atom:_NET_CURRENT_DESKTOP) | |
| (new-index :initarg :new-index :type xcb:CARD32) | |
| (timestamp :initarg :timestamp :type xcb:CARD32))) | |
| ;; _NET_DESKTOP_NAMES | |
| (defclass xcb:ewmh:get-_NET_DESKTOP_NAMES (xcb:ewmh:-GetProperty-utf8) | |
| ((property :initform xcb:Atom:_NET_DESKTOP_NAMES))) | |
| (defclass xcb:ewmh:get-_NET_DESKTOP_NAMES~reply | |
| (xcb:ewmh:-GetProperty-utf8~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_DESKTOP_NAMES (xcb:ewmh:-ChangeProperty-utf8) | |
| ((property :initform xcb:Atom:_NET_DESKTOP_NAMES))) | |
| ;; _NET_ACTIVE_WINDOW | |
| (defclass xcb:ewmh:get-_NET_ACTIVE_WINDOW (xcb:icccm:-GetProperty-single) | |
| ((property :initform xcb:Atom:_NET_ACTIVE_WINDOW) | |
| (type :initform xcb:Atom:WINDOW))) | |
| (defclass xcb:ewmh:get-_NET_ACTIVE_WINDOW~reply | |
| (xcb:icccm:-GetProperty-single~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_ACTIVE_WINDOW (xcb:icccm:-ChangeProperty-single) | |
| ((property :initform xcb:Atom:_NET_ACTIVE_WINDOW) | |
| (type :initform xcb:Atom:WINDOW))) | |
| (defclass xcb:ewmh:_NET_ACTIVE_WINDOW (xcb:ewmh:-ClientMessage) | |
| ((type :initform xcb:Atom:_NET_ACTIVE_WINDOW) | |
| (source-indication :initarg :source-indication :type xcb:CARD32) | |
| (timestamp :initarg :timestamp :type xcb:CARD32) | |
| (current-active-window :initarg :current-active-window :type xcb:WINDOW))) | |
| ;; _NET_WORKAREA | |
| (defclass xcb:ewmh:get-_NET_WORKAREA (xcb:icccm:-GetProperty) | |
| ((property :initform xcb:Atom:_NET_WORKAREA) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:get-_NET_WORKAREA~reply (xcb:icccm:-GetProperty~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WORKAREA (xcb:icccm:-ChangeProperty) | |
| ((property :initform xcb:Atom:_NET_WORKAREA) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| ;; _NET_SUPPORTING_WM_CHECK | |
| (defclass xcb:ewmh:get-_NET_SUPPORTING_WM_CHECK (xcb:icccm:-GetProperty-single) | |
| ((property :initform xcb:Atom:_NET_SUPPORTING_WM_CHECK) | |
| (type :initform xcb:Atom:WINDOW))) | |
| (defclass xcb:ewmh:get-_NET_SUPPORTING_WM_CHECK~reply | |
| (xcb:icccm:-GetProperty-single~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_SUPPORTING_WM_CHECK | |
| (xcb:icccm:-ChangeProperty-single) | |
| ((property :initform xcb:Atom:_NET_SUPPORTING_WM_CHECK) | |
| (type :initform xcb:Atom:WINDOW))) | |
| ;; _NET_VIRTUAL_ROOTS | |
| (defclass xcb:ewmh:get-_NET_VIRTUAL_ROOTS (xcb:icccm:-GetProperty) | |
| ((property :initform xcb:Atom:_NET_VIRTUAL_ROOTS) | |
| (type :initform xcb:Atom:WINDOW))) | |
| (defclass xcb:ewmh:get-_NET_VIRTUAL_ROOTS~reply (xcb:icccm:-GetProperty~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_VIRTUAL_ROOTS (xcb:icccm:-ChangeProperty) | |
| ((property :initform xcb:Atom:_NET_VIRTUAL_ROOTS) | |
| (type :initform xcb:Atom:WINDOW))) | |
| ;; _NET_DESKTOP_LAYOUT | |
| ;; Orientations | |
| (defconst xcb:ewmh:_NET_WM_ORIENTATION_HORZ 0) | |
| (defconst xcb:ewmh:_NET_WM_ORIENTATION_VERT 1) | |
| ;; Starting corners | |
| (defconst xcb:ewmh:_NET_WM_TOPLEFT 0) | |
| (defconst xcb:ewmh:_NET_WM_TOPRIGHT 1) | |
| (defconst xcb:ewmh:_NET_WM_BOTTOMRIGHT 2) | |
| (defconst xcb:ewmh:_NET_WM_BOTTOMLEFT 3) | |
| ;; | |
| (defclass xcb:ewmh:-_NET_DESKTOP_LAYOUT (xcb:--struct) | |
| ((orientation :initarg :orientation :type xcb:-ignore) | |
| (columns :initarg :columns :type xcb:-ignore) | |
| (rows :initarg :rows :type xcb:-ignore) | |
| (starting-corner :initarg :starting-corner :type xcb:-ignore))) | |
| ;; | |
| (defclass xcb:ewmh:get-_NET_DESKTOP_LAYOUT (xcb:icccm:-GetProperty-explicit) | |
| ((property :initform xcb:Atom:_NET_DESKTOP_LAYOUT) | |
| (type :initform xcb:Atom:CARDINAL) | |
| (long-length :initform 4))) | |
| (defclass xcb:ewmh:get-_NET_DESKTOP_LAYOUT~reply | |
| (xcb:icccm:-GetProperty-explicit~reply xcb:ewmh:-_NET_DESKTOP_LAYOUT) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_DESKTOP_LAYOUT | |
| (xcb:icccm:-ChangeProperty-explicit xcb:ewmh:-_NET_DESKTOP_LAYOUT) | |
| ((property :initform xcb:Atom:_NET_DESKTOP_LAYOUT) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| ;; _NET_SHOWING_DESKTOP | |
| (defclass xcb:ewmh:get-_NET_SHOWING_DESKTOP (xcb:icccm:-GetProperty-single) | |
| ((property :initform xcb:Atom:_NET_SHOWING_DESKTOP) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:get-_NET_SHOWING_DESKTOP~reply | |
| (xcb:icccm:-GetProperty-single~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_SHOWING_DESKTOP (xcb:icccm:-ChangeProperty-single) | |
| ((property :initform xcb:Atom:_NET_SHOWING_DESKTOP) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:_NET_SHOWING_DESKTOP (xcb:ewmh:-ClientMessage) | |
| ((type :initform xcb:Atom:_NET_SHOWING_DESKTOP) | |
| (show :initarg :show :type xcb:CARD32))) | |
| ;;;; Other Root Window Messages | |
| ;; _NET_CLOSE_WINDOW | |
| (defclass xcb:ewmh:_NET_CLOSE_WINDOW (xcb:ewmh:-ClientMessage) | |
| ((type :initform xcb:Atom:_NET_CLOSE_WINDOW) | |
| (timestamp :initarg :timestamp :type xcb:CARD32) | |
| (source-indication :initarg :source-indication :type xcb:CARD32))) | |
| ;; _NET_MOVERESIZE_WINDOW | |
| (defclass xcb:ewmh:_NET_MOVERESIZE_WINDOW (xcb:ewmh:-ClientMessage) | |
| ((type :initform xcb:Atom:_NET_MOVERESIZE_WINDOW) | |
| (gravity-and-flags :initarg :gravity-and-flags :type xcb:CARD32) | |
| (x :initarg :x :type xcb:CARD32) | |
| (y :initarg :y :type xcb:CARD32) | |
| (width :initarg :width :type xcb:CARD32) | |
| (height :initarg :height :type xcb:CARD32))) | |
| ;; _NET_WM_MOVERESIZE | |
| (defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_TOPLEFT 0) | |
| (defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_TOP 1) | |
| (defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_TOPRIGHT 2) | |
| (defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_RIGHT 3) | |
| (defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT 4) | |
| (defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_BOTTOM 5) | |
| (defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT 6) | |
| (defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_LEFT 7) | |
| (defconst xcb:ewmh:_NET_WM_MOVERESIZE_MOVE 8) | |
| (defconst xcb:ewmh:_NET_WM_MOVERESIZE_SIZE_KEYBOARD 9) | |
| (defconst xcb:ewmh:_NET_WM_MOVERESIZE_MOVE_KEYBOARD 10) | |
| (defconst xcb:ewmh:_NET_WM_MOVERESIZE_CANCEL 11) | |
| ;; | |
| (defclass xcb:ewmh:_NET_WM_MOVERESIZE (xcb:ewmh:-ClientMessage) | |
| ((type :initform xcb:Atom:_NET_WM_MOVERESIZE) | |
| (x-root :initarg :x-root :type xcb:CARD32) | |
| (y-root :initarg :y-root :type xcb:CARD32) | |
| (direction :initarg :direction :type xcb:CARD32) | |
| (button :initarg :button :type xcb:CARD32) | |
| (source-indication :initarg :source-indication :type xcb:CARD32))) | |
| ;; _NET_RESTACK_WINDOW | |
| (defclass xcb:ewmh:_NET_RESTACK_WINDOW (xcb:ewmh:-ClientMessage) | |
| ((type :initform xcb:Atom:_NET_RESTACK_WINDOW) | |
| (source-indication :initarg :source-indication :type xcb:CARD32) | |
| (sibling :initarg :sibling :type xcb:WINDOW) | |
| (detail :initarg :detail :type xcb:CARD32))) | |
| ;; _NET_REQUEST_FRAME_EXTENTS | |
| (defclass xcb:ewmh:_NET_REQUEST_FRAME_EXTENTS (xcb:ewmh:-ClientMessage) | |
| ((type :initform xcb:Atom:_NET_REQUEST_FRAME_EXTENTS))) | |
| ;;;; Application Window Properties | |
| ;; _NET_WM_NAME | |
| (defclass xcb:ewmh:get-_NET_WM_NAME (xcb:ewmh:-GetProperty-utf8) | |
| ((property :initform xcb:Atom:_NET_WM_NAME))) | |
| (defclass xcb:ewmh:get-_NET_WM_NAME~reply (xcb:ewmh:-GetProperty-utf8~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_NAME (xcb:ewmh:-ChangeProperty-utf8) | |
| ((property :initform xcb:Atom:_NET_WM_NAME))) | |
| ;; _NET_WM_VISIBLE_NAME | |
| (defclass xcb:ewmh:get-_NET_WM_VISIBLE_NAME (xcb:ewmh:-GetProperty-utf8) | |
| ((property :initform xcb:Atom:_NET_WM_VISIBLE_NAME))) | |
| (defclass xcb:ewmh:get-_NET_WM_VISIBLE_NAME~reply | |
| (xcb:ewmh:-GetProperty-utf8~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_VISIBLE_NAME (xcb:ewmh:-ChangeProperty-utf8) | |
| ((property :initform xcb:Atom:_NET_WM_VISIBLE_NAME))) | |
| ;; _NET_WM_ICON_NAME | |
| (defclass xcb:ewmh:get-_NET_WM_ICON_NAME (xcb:ewmh:-GetProperty-utf8) | |
| ((property :initform xcb:Atom:_NET_WM_ICON_NAME))) | |
| (defclass xcb:ewmh:get-_NET_WM_ICON_NAME~reply | |
| (xcb:ewmh:-GetProperty-utf8~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_ICON_NAME (xcb:ewmh:-ChangeProperty-utf8) | |
| ((property :initform xcb:Atom:_NET_WM_ICON_NAME))) | |
| ;; _NET_WM_VISIBLE_ICON_NAME | |
| (defclass xcb:ewmh:get-_NET_WM_VISIBLE_ICON_NAME (xcb:ewmh:-GetProperty-utf8) | |
| ((property :initform xcb:Atom:_NET_WM_VISIBLE_ICON_NAME))) | |
| (defclass xcb:ewmh:get-_NET_WM_VISIBLE_ICON_NAME~reply | |
| (xcb:ewmh:-GetProperty-utf8~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_VISIBLE_ICON_NAME | |
| (xcb:ewmh:-ChangeProperty-utf8) | |
| ((property :initform xcb:Atom:_NET_WM_VISIBLE_ICON_NAME))) | |
| ;; _NET_WM_DESKTOP | |
| (defclass xcb:ewmh:get-_NET_WM_DESKTOP (xcb:icccm:-GetProperty-single) | |
| ((property :initform xcb:Atom:_NET_WM_DESKTOP) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:get-_NET_WM_DESKTOP~reply | |
| (xcb:icccm:-GetProperty-single~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_DESKTOP (xcb:icccm:-ChangeProperty-single) | |
| ((property :initform xcb:Atom:_NET_WM_DESKTOP) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:_NET_WM_DESKTOP (xcb:ewmh:-ClientMessage) | |
| ((type :initform xcb:Atom:_NET_WM_DESKTOP) | |
| (new-desktop :initarg :new-desktop :type xcb:CARD32) | |
| (source-indication :initarg :source-indication :type xcb:CARD32))) | |
| ;; _NET_WM_WINDOW_TYPE | |
| (defclass xcb:ewmh:get-_NET_WM_WINDOW_TYPE (xcb:icccm:-GetProperty) | |
| ((property :initform xcb:Atom:_NET_WM_WINDOW_TYPE) | |
| (type :initform xcb:Atom:ATOM))) | |
| (defclass xcb:ewmh:get-_NET_WM_WINDOW_TYPE~reply (xcb:icccm:-GetProperty~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_WINDOW_TYPE (xcb:icccm:-ChangeProperty) | |
| ((property :initform xcb:Atom:_NET_WM_WINDOW_TYPE) | |
| (type :initform xcb:Atom:ATOM))) | |
| ;; _NET_WM_STATE | |
| (defconst xcb:ewmh:_NET_WM_STATE_REMOVE 0) | |
| (defconst xcb:ewmh:_NET_WM_STATE_ADD 1) | |
| (defconst xcb:ewmh:_NET_WM_STATE_TOGGLE 2) | |
| ;; | |
| (defclass xcb:ewmh:get-_NET_WM_STATE (xcb:icccm:-GetProperty) | |
| ((property :initform xcb:Atom:_NET_WM_STATE) | |
| (type :initform xcb:Atom:ATOM))) | |
| (defclass xcb:ewmh:get-_NET_WM_STATE~reply (xcb:icccm:-GetProperty~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_STATE (xcb:icccm:-ChangeProperty) | |
| ((property :initform xcb:Atom:_NET_WM_STATE) | |
| (type :initform xcb:Atom:ATOM))) | |
| (defclass xcb:ewmh:_NET_WM_STATE (xcb:ewmh:-ClientMessage) | |
| ((type :initform xcb:Atom:_NET_WM_STATE) | |
| (action :initarg :action :type xcb:CARD32) | |
| (first-property :initarg :first-property :type xcb:CARD32) | |
| (second-property :initarg :second-property :type xcb:CARD32) | |
| (source-indication :initarg :source-indication :type xcb:CARD32))) | |
| ;; _NET_WM_ALLOWED_ACTIONS | |
| (defclass xcb:ewmh:get-_NET_WM_ALLOWED_ACTIONS (xcb:icccm:-GetProperty) | |
| ((property :initform xcb:Atom:_NET_WM_ALLOWED_ACTIONS) | |
| (type :initform xcb:Atom:ATOM))) | |
| (defclass xcb:ewmh:get-_NET_WM_ALLOWED_ACTIONS~reply | |
| (xcb:icccm:-GetProperty~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_ALLOWED_ACTIONS (xcb:icccm:-ChangeProperty) | |
| ((property :initform xcb:Atom:_NET_WM_ALLOWED_ACTIONS) | |
| (type :initform xcb:Atom:ATOM))) | |
| ;; _NET_WM_STRUT | |
| (defclass xcb:ewmh:-_NET_WM_STRUT (xcb:--struct) | |
| ((left :initarg :left :type xcb:-ignore) | |
| (right :initarg :right :type xcb:-ignore) | |
| (top :initarg :top :type xcb:-ignore) | |
| (bottom :initarg :bottom :type xcb:-ignore))) | |
| ;; | |
| (defclass xcb:ewmh:get-_NET_WM_STRUT (xcb:icccm:-GetProperty-explicit) | |
| ((property :initform xcb:Atom:_NET_WM_STRUT) | |
| (type :initform xcb:Atom:CARDINAL) | |
| (long-length :initform 4))) | |
| (defclass xcb:ewmh:get-_NET_WM_STRUT~reply | |
| (xcb:icccm:-GetProperty-explicit~reply xcb:ewmh:-_NET_WM_STRUT) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_STRUT | |
| (xcb:icccm:-ChangeProperty-explicit xcb:ewmh:-_NET_WM_STRUT) | |
| ((property :initform xcb:Atom:_NET_WM_STRUT) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| ;; _NET_WM_STRUT_PARTIAL | |
| (defclass xcb:ewmh:-_NET_WM_STRUT_PARTIAL (xcb:--struct) | |
| ((left :initarg :left :type xcb:-ignore) | |
| (right :initarg :right :type xcb:-ignore) | |
| (top :initarg :top :type xcb:-ignore) | |
| (bottom :initarg :bottom :type xcb:-ignore) | |
| (left-start-y :initarg :left-start-y :type xcb:-ignore) | |
| (left-end-y :initarg :left-end-y :type xcb:-ignore) | |
| (right-start-y :initarg :right-start-y :type xcb:-ignore) | |
| (right-end-y :initarg :right-end-y :type xcb:-ignore) | |
| (top-start-x :initarg :top-start-x :type xcb:-ignore) | |
| (top-end-x :initarg :top-end-x :type xcb:-ignore) | |
| (bottom-start-x :initarg :bottom-start-x :type xcb:-ignore) | |
| (bottom-end-x :initarg :bottom-end-x :type xcb:-ignore))) | |
| ;; | |
| (defclass xcb:ewmh:get-_NET_WM_STRUT_PARTIAL (xcb:icccm:-GetProperty-explicit) | |
| ((property :initform xcb:Atom:_NET_WM_STRUT_PARTIAL) | |
| (type :initform xcb:Atom:CARDINAL) | |
| (long-length :initform 12))) | |
| (defclass xcb:ewmh:get-_NET_WM_STRUT_PARTIAL~reply | |
| (xcb:icccm:-GetProperty-explicit~reply xcb:ewmh:-_NET_WM_STRUT_PARTIAL) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_STRUT_PARTIAL | |
| (xcb:icccm:-ChangeProperty-explicit xcb:ewmh:-_NET_WM_STRUT_PARTIAL) | |
| ((property :initform xcb:Atom:_NET_WM_STRUT_PARTIAL) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| ;; _NET_WM_ICON_GEOMETRY | |
| (defclass xcb:ewmh:-_NET_WM_ICON_GEOMETRY (xcb:--struct) | |
| ((x :initarg :x :type xcb:-ignore) | |
| (y :initarg :y :type xcb:-ignore) | |
| (width :initarg :width :type xcb:-ignore) | |
| (height :initarg :height :type xcb:-ignore))) | |
| ;; | |
| (defclass xcb:ewmh:get-_NET_WM_ICON_GEOMETRY (xcb:icccm:-GetProperty-explicit) | |
| ((property :initform xcb:Atom:_NET_WM_ICON_GEOMETRY) | |
| (type :initform xcb:Atom:CARDINAL) | |
| (long-length :initform 4))) | |
| (defclass xcb:ewmh:get-_NET_WM_ICON_GEOMETRY~reply | |
| (xcb:icccm:-GetProperty-explicit~reply xcb:ewmh:-_NET_WM_ICON_GEOMETRY) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_ICON_GEOMETRY | |
| (xcb:icccm:-ChangeProperty-explicit xcb:ewmh:-_NET_WM_ICON_GEOMETRY) | |
| ((property :initform xcb:Atom:_NET_WM_ICON_GEOMETRY) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| ;; _NET_WM_ICON | |
| (defclass xcb:ewmh:-get-_NET_WM_ICON (xcb:icccm:-GetProperty) | |
| ((property :initform xcb:Atom:_NET_WM_ICON) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:-get-_NET_WM_ICON~reply (xcb:icccm:-GetProperty~reply) | |
| nil) | |
| (defclass xcb:ewmh:-set-_NET_WM_ICON (xcb:icccm:-ChangeProperty) | |
| ((property :initform xcb:Atom:_NET_WM_ICON) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| ;; _NET_WM_PID | |
| (defclass xcb:ewmh:get-_NET_WM_PID (xcb:icccm:-GetProperty-single) | |
| ((property :initform xcb:Atom:_NET_WM_PID) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:get-_NET_WM_PID~reply (xcb:icccm:-GetProperty-single~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_PID (xcb:icccm:-ChangeProperty-single) | |
| ((property :initform xcb:Atom:_NET_WM_PID) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| ;; _NET_WM_HANDLED_ICONS | |
| (defclass xcb:ewmh:get-_NET_WM_HANDLED_ICONS (xcb:icccm:-GetProperty-single) | |
| ((property :initform xcb:Atom:_NET_WM_HANDLED_ICONS) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:get-_NET_WM_HANDLED_ICONS~reply | |
| (xcb:icccm:-GetProperty-single~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_HANDLED_ICONS (xcb:icccm:-ChangeProperty-single) | |
| ((property :initform xcb:Atom:_NET_WM_HANDLED_ICONS) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| ;; _NET_WM_USER_TIME | |
| (defclass xcb:ewmh:get-_NET_WM_USER_TIME (xcb:icccm:-GetProperty-single) | |
| ((property :initform xcb:Atom:_NET_WM_USER_TIME) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:get-_NET_WM_USER_TIME~reply | |
| (xcb:icccm:-GetProperty-single~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_USER_TIME (xcb:icccm:-ChangeProperty-single) | |
| ((property :initform xcb:Atom:_NET_WM_USER_TIME) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| ;; _NET_WM_USER_TIME_WINDOW | |
| (defclass xcb:ewmh:get-_NET_WM_USER_TIME_WINDOW (xcb:icccm:-GetProperty-single) | |
| ((property :initform xcb:Atom:_NET_WM_USER_TIME_WINDOW) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:get-_NET_WM_USER_TIME_WINDOW~reply | |
| (xcb:icccm:-GetProperty-single~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_USER_TIME_WINDOW | |
| (xcb:icccm:-ChangeProperty-single) | |
| ((property :initform xcb:Atom:_NET_WM_USER_TIME_WINDOW) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| ;; _NET_FRAME_EXTENTS | |
| (defclass xcb:ewmh:-_NET_FRAME_EXTENTS (xcb:--struct) | |
| ((left :initarg :left :type xcb:-ignore) | |
| (right :initarg :right :type xcb:-ignore) | |
| (top :initarg :top :type xcb:-ignore) | |
| (bottom :initarg :bottom :type xcb:-ignore))) | |
| ;; | |
| (defclass xcb:ewmh:get-_NET_FRAME_EXTENTS (xcb:icccm:-GetProperty-explicit) | |
| ((property :initform xcb:Atom:_NET_FRAME_EXTENTS) | |
| (type :initform xcb:Atom:CARDINAL) | |
| (long-length :initform 4))) | |
| (defclass xcb:ewmh:get-_NET_FRAME_EXTENTS~reply | |
| (xcb:icccm:-GetProperty-explicit~reply xcb:ewmh:-_NET_FRAME_EXTENTS) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_FRAME_EXTENTS | |
| (xcb:icccm:-ChangeProperty-explicit xcb:ewmh:-_NET_FRAME_EXTENTS) | |
| ((property :initform xcb:Atom:_NET_FRAME_EXTENTS) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| ;; _NET_WM_OPAQUE_REGION | |
| (defclass xcb:ewmh:get-_NET_WM_OPAQUE_REGION (xcb:icccm:-GetProperty) | |
| ((property :initform xcb:Atom:_NET_WM_OPAQUE_REGION) | |
| (type :initform xcb:Atom:ATOM))) | |
| (defclass xcb:ewmh:get-_NET_WM_OPAQUE_REGION~reply | |
| (xcb:icccm:-GetProperty~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_OPAQUE_REGION (xcb:icccm:-ChangeProperty) | |
| ((property :initform xcb:Atom:_NET_WM_OPAQUE_REGION) | |
| (type :initform xcb:Atom:ATOM))) | |
| ;; _NET_WM_BYPASS_COMPOSITOR | |
| (defclass xcb:ewmh:get-_NET_WM_BYPASS_COMPOSITOR | |
| (xcb:icccm:-GetProperty-single) | |
| ((property :initform xcb:Atom:_NET_WM_BYPASS_COMPOSITOR) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:get-_NET_WM_BYPASS_COMPOSITOR~reply | |
| (xcb:icccm:-GetProperty-single~reply) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_BYPASS_COMPOSITOR | |
| (xcb:icccm:-ChangeProperty-single) | |
| ((property :initform xcb:Atom:_NET_WM_BYPASS_COMPOSITOR) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| ;;;; Window Manager Protocols | |
| ;; _NET_WM_PING | |
| (defclass xcb:ewmh:_NET_WM_PING (xcb:ewmh:-ClientMessage) | |
| ((type :initform xcb:Atom:WM_PROTOCOLS) | |
| (protocol :initform xcb:Atom:_NET_WM_PING :type xcb:CARD32) | |
| (timestamp :initarg :timestamp :type xcb:CARD32) | |
| (client-window :initarg :client-window :type xcb:WINDOW))) | |
| ;; _NET_WM_SYNC_REQUEST | |
| (defclass xcb:ewmh:_NET_WM_SYNC_REQUEST (xcb:ewmh:-ClientMessage) | |
| ((type :initform xcb:Atom:WM_PROTOCOLS) | |
| (protocol :initform xcb:Atom:_NET_WM_SYNC_REQUEST :type xcb:CARD32) | |
| (timestamp :initarg :timestamp :type xcb:CARD32) | |
| (low :initarg :low :type xcb:CARD32) | |
| (high :initarg :high :type xcb:CARD32))) | |
| ;; _NET_WM_SYNC_REQUEST_COUNTER | |
| (defclass xcb:ewmh:-_NET_WM_SYNC_REQUEST_COUNTER (xcb:--struct) | |
| ((low :initarg :low :type xcb:-ignore) | |
| (high :initarg :hight :type xcb:-ignore))) | |
| ;; | |
| (defclass xcb:ewmh:get-_NET_WM_SYNC_REQUEST_COUNTER | |
| (xcb:icccm:-GetProperty-explicit) | |
| ((property :initform xcb:Atom:_NET_WM_SYNC_REQUEST_COUNTER) | |
| (type :initform xcb:Atom:CARDINAL) | |
| (long-length :initform 2))) | |
| (defclass xcb:ewmh:get-_NET_WM_SYNC_REQUEST_COUNTER~reply | |
| (xcb:icccm:-GetProperty-explicit~reply | |
| xcb:ewmh:-_NET_WM_SYNC_REQUEST_COUNTER) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_SYNC_REQUEST_COUNTER | |
| (xcb:icccm:-ChangeProperty-explicit xcb:ewmh:-_NET_WM_SYNC_REQUEST_COUNTER) | |
| ((property :initform xcb:Atom:_NET_WM_SYNC_REQUEST_COUNTER) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| ;; _NET_WM_FULLSCREEN_MONITORS | |
| (defclass xcb:ewmh:-_NET_WM_FULLSCREEN_MONITORS (xcb:--struct) | |
| ((top :initarg :top :type xcb:-ignore) | |
| (bottom :initarg :bottom :type xcb:-ignore) | |
| (left :initarg :left :type xcb:-ignore) | |
| (right :initarg :right :type xcb:-ignore))) | |
| ;; | |
| (defclass xcb:ewmh:get-_NET_WM_FULLSCREEN_MONITORS | |
| (xcb:icccm:-GetProperty-explicit) | |
| ((property :initform xcb:Atom:_NET_WM_FULLSCREEN_MONITORS) | |
| (type :initform xcb:Atom:CARDINAL) | |
| (long-length :initform 4))) | |
| (defclass xcb:ewmh:get-_NET_WM_FULLSCREEN_MONITORS~reply | |
| (xcb:icccm:-GetProperty-explicit~reply xcb:ewmh:-_NET_WM_FULLSCREEN_MONITORS) | |
| nil) | |
| (defclass xcb:ewmh:set-_NET_WM_FULLSCREEN_MONITORS | |
| (xcb:icccm:-ChangeProperty-explicit xcb:ewmh:-_NET_WM_FULLSCREEN_MONITORS) | |
| ((property :initform xcb:Atom:_NET_WM_FULLSCREEN_MONITORS) | |
| (type :initform xcb:Atom:CARDINAL))) | |
| (defclass xcb:ewmh:_NET_WM_FULLSCREEN_MONITORS | |
| (xcb:ewmh:-ClientMessage xcb:ewmh:-_NET_WM_FULLSCREEN_MONITORS) | |
| ((type :initform xcb:Atom:_NET_WM_FULLSCREEN_MONITORS))) | |
| ;;;; Other Properties | |
| ;;;; Misc. | |
| (defconst xcb:ewmh:source-indication:none 0) | |
| (defconst xcb:ewmh:source-indication:normal 1) | |
| (defconst xcb:ewmh:source-indication:other 2) | |
| (provide 'xcb-ewmh) | |
| ;;; xcb-ewmh.el ends here |