|
| 1 | +from enum import IntEnum |
| 2 | +import Xlib.X |
| 3 | + |
| 4 | + |
| 5 | +class Root: |
| 6 | + SUPPORTED = "_NET_SUPPORTED" |
| 7 | + CLIENT_LIST = "_NET_CLIENT_LIST" |
| 8 | + CLIENT_LIST_STACKING = "_NET_CLIENT_LIST_STACKING" |
| 9 | + NUMBER_OF_DESKTOPS = "_NET_NUMBER_OF_DESKTOPS" |
| 10 | + DESKTOP_GEOMETRY = "_NET_DESKTOP_GEOMETRY" |
| 11 | + DESKTOP_VIEWPORT = "_NET_DESKTOP_VIEWPORT" |
| 12 | + CURRENT_DESKTOP = "_NET_CURRENT_DESKTOP" |
| 13 | + DESKTOP_NAMES = "_NET_DESKTOP_NAMES" |
| 14 | + ACTIVE = "_NET_ACTIVE_WINDOW" |
| 15 | + WORKAREA = "_NET_WORKAREA" |
| 16 | + SUPPORTING_WM_CHECK = "_NET_SUPPORTING_WM_CHECK" |
| 17 | + VIRTUAL_ROOTS = "_NET_VIRTUAL_ROOTS" |
| 18 | + SHOWING_DESKTOP = "_NET_SHOWING_DESKTOP" |
| 19 | + DESKTOP_LAYOUT = "_NET_DESKTOP_LAYOUT" |
| 20 | + # Additional Root properties (always related to a specific window) |
| 21 | + CLOSE = "_NET_CLOSE_WINDOW" |
| 22 | + MOVERESIZE = "_NET_MOVERESIZE_WINDOW" |
| 23 | + WM_MOVERESIZE = "_NET_WM_MOVERESIZE" |
| 24 | + RESTACK = "_NET_RESTACK_WINDOW" |
| 25 | + REQ_FRAME_EXTENTS = "_NET_REQUEST_FRAME_EXTENTS" |
| 26 | + # WM_PROTOCOLS messages |
| 27 | + PROTOCOLS = "WM_PROTOCOLS" |
| 28 | + PING = "_NET_WM_PING" |
| 29 | + SYNC = "_NET_WM_SYNC_REQUEST" |
| 30 | + |
| 31 | + |
| 32 | +class DesktopLayout(IntEnum): |
| 33 | + ORIENTATION_HORZ = 0 |
| 34 | + ORIENTATION_VERT = 1 |
| 35 | + TOPLEFT = 0 |
| 36 | + TOPRIGHT = 1 |
| 37 | + BOTTOMRIGHT = 2 |
| 38 | + BOTTOMLEFT = 3 |
| 39 | + |
| 40 | + |
| 41 | +class Window: |
| 42 | + NAME = "_NET_WM_NAME" |
| 43 | + VISIBLE_NAME = "_NET_WM_VISIBLE_NAME" |
| 44 | + ICON_NAME = "_NET_WM_ICON_NAME" |
| 45 | + VISIBLE_ICON_NAME = "_NET_WM_VISIBLE_ICON_NAME" |
| 46 | + DESKTOP = "_NET_WM_DESKTOP" |
| 47 | + WM_WINDOW_TYPE = "_NET_WM_WINDOW_TYPE" |
| 48 | + CHANGE_STATE = "WM_CHANGE_STATE" |
| 49 | + WM_STATE = "_NET_WM_STATE" |
| 50 | + ALLOWED_ACTIONS = "_NET_WM_ALLOWED_ACTIONS" |
| 51 | + STRUT = "_NET_WM_STRUT" |
| 52 | + STRUT_PARTIAL = "_NET_WM_STRUT_PARTIAL" |
| 53 | + ICON_GEOMETRY = "_NET_WM_ICON_GEOMETRY" |
| 54 | + ICON = "_NET_WM_ICON" |
| 55 | + PID = "_NET_WM_PID" |
| 56 | + HANDLED_ICONS = "_NET_WM_HANDLED_ICONS" |
| 57 | + USER_TIME = "_NET_WM_USER_TIME" |
| 58 | + FRAME_EXTENTS = "_NET_FRAME_EXTENTS" |
| 59 | + # These are Root properties, but always related to a specific window |
| 60 | + ACTIVE = "_NET_ACTIVE_WINDOW" |
| 61 | + CLOSE = "_NET_CLOSE_WINDOW" |
| 62 | + MOVERESIZE = "_NET_MOVERESIZE_WINDOW" |
| 63 | + WM_MOVERESIZE = "_NET_WM_MOVERESIZE" |
| 64 | + RESTACK = "_NET_RESTACK_WINDOW" |
| 65 | + REQ_FRAME_EXTENTS = "_NET_REQUEST_FRAME_EXTENTS" |
| 66 | + OPAQUE_REGION = "_NET_WM_OPAQUE_REGION" |
| 67 | + BYPASS_COMPOSITOR = "_NET_WM_BYPASS_COMPOSITOR" |
| 68 | + |
| 69 | + |
| 70 | +class WindowType: |
| 71 | + DESKTOP = "_NET_WM_WINDOW_TYPE_DESKTOP" |
| 72 | + DOCK = "_NET_WM_WINDOW_TYPE_DOCK" |
| 73 | + TOOLBAR = "_NET_WM_WINDOW_TYPE_TOOLBAR" |
| 74 | + MENU = "_NET_WM_WINDOW_TYPE_MENU" |
| 75 | + UTILITY = "_NET_WM_WINDOW_TYPE_UTILITY" |
| 76 | + SPLASH = "_NET_WM_WINDOW_TYPE_SPLASH" |
| 77 | + DIALOG = "_NET_WM_WINDOW_TYPE_DIALOG" |
| 78 | + NORMAL = "_NET_WM_WINDOW_TYPE_NORMAL" |
| 79 | + |
| 80 | + |
| 81 | +class State: |
| 82 | + NULL = "0" |
| 83 | + MODAL = "_NET_WM_STATE_MODAL" |
| 84 | + STICKY = "_NET_WM_STATE_STICKY" |
| 85 | + MAXIMIZED_VERT = "_NET_WM_STATE_MAXIMIZED_VERT" |
| 86 | + MAXIMIZED_HORZ = "_NET_WM_STATE_MAXIMIZED_HORZ" |
| 87 | + SHADED = "_NET_WM_STATE_SHADED" |
| 88 | + SKIP_TASKBAR = "_NET_WM_STATE_SKIP_TASKBAR" |
| 89 | + SKIP_PAGER = "_NET_WM_STATE_SKIP_PAGER" |
| 90 | + HIDDEN = "_NET_WM_STATE_HIDDEN" |
| 91 | + FULLSCREEN = "_NET_WM_STATE_FULLSCREEN" |
| 92 | + ABOVE = "_NET_WM_STATE_ABOVE" |
| 93 | + BELOW = "_NET_WM_STATE_BELOW" |
| 94 | + DEMANDS_ATTENTION = "_NET_WM_STATE_DEMANDS_ATTENTION" |
| 95 | + FOCUSED = "_NET_WM_STATE_FOCUSED" |
| 96 | + |
| 97 | + |
| 98 | +class StateAction(IntEnum): |
| 99 | + REMOVE = 0 |
| 100 | + ADD = 1 |
| 101 | + TOGGLE = 2 |
| 102 | + |
| 103 | + |
| 104 | +class MoveResize(IntEnum): |
| 105 | + SIZE_TOPLEFT = 0 |
| 106 | + SIZE_TOP = 1 |
| 107 | + SIZE_TOPRIGHT = 2 |
| 108 | + SIZE_RIGHT = 3 |
| 109 | + SIZE_BOTTOMRIGHT = 4 |
| 110 | + SIZE_BOTTOM = 5 |
| 111 | + SIZE_BOTTOMLEFT = 6 |
| 112 | + SIZE_LEFT = 7 |
| 113 | + MOVE = 8 # movement only |
| 114 | + SIZE_KEYBOARD = 9 # size via keyboard |
| 115 | + MOVE_KEYBOARD = 10 # move via keyboard |
| 116 | + |
| 117 | + |
| 118 | +class DataFormat(IntEnum): |
| 119 | + STR = 8 |
| 120 | + INT = 32 |
| 121 | + |
| 122 | + |
| 123 | +class Mode(IntEnum): |
| 124 | + REPLACE = Xlib.X.PropModeReplace |
| 125 | + APPEND = Xlib.X.PropModeAppend |
| 126 | + PREPEND = Xlib.X.PropModePrepend |
| 127 | + |
| 128 | + |
| 129 | +class StackMode(IntEnum): |
| 130 | + ABOVE = Xlib.X.Above |
| 131 | + BELOW = Xlib.X.Below |
| 132 | + |
| 133 | + |
| 134 | +class HintAction(IntEnum): |
| 135 | + KEEP = -1 |
| 136 | + REMOVE = -2 |
| 137 | + |
| 138 | + |
0 commit comments