[vendor/x11]: Add some client to window management communication functions

This commit is contained in:
flysand7
2023-11-13 11:59:36 +11:00
parent 9737c2ad0b
commit 55d42492ac
3 changed files with 217 additions and 4 deletions
+54
View File
@@ -17,6 +17,18 @@ AllTemporary :: 0
CurrentTime :: 0
NoSymbol :: 0
XA_WM_CLASS :: Atom(67)
XA_WM_CLIENT_MACHINE :: Atom(36)
XA_WM_COMMAND :: Atom(34)
XA_WM_HINTS :: Atom(35)
XA_WM_ICON_NAME :: Atom(37)
XA_WM_ICON_SIZE :: Atom(38)
XA_WM_NAME :: Atom(39)
XA_WM_NORMAL_HINTS :: Atom(40)
XA_WM_SIZE_HINTS :: Atom(41)
XA_WM_TRANSIENT_FOR :: Atom(68)
XA_WM_ZOOM_HINTS :: Atom(42)
// NOTE(flysand): Some implementations return Status as enum, other return it
// as an integer. I will make it a status.
Status :: enum i32 {
@@ -569,3 +581,45 @@ KeyboardLedMode :: enum i32 {
LedModeOff = 0,
LedModeOn = 1,
}
WMHints :: bit_set[WMHintsBits; uint]
WMHintsBits :: enum {
InputHint = 0,
StateHint = 1,
IconPixmapHint = 2,
IconWindowHint = 3,
IconPositionHint = 4,
IconMaskHint = 5,
WindowGroupHint = 6,
XUrgencyHint = 8,
}
WMHintState :: enum i32 {
WithdrawnState = 0,
NormalState = 1,
IconicState = 3,
}
AllHints :: WMHints{
.InputHint,
.StateHint,
.IconPixmapHint,
.IconWindowHint,
.IconPositionHint,
.IconMaskHint,
.WindowGroupHint,
}
SizeHints :: bit_set[SizeHintsBits; uint]
SizeHintsBits :: enum {
USPosition = 0,
USSize = 1,
PPosition = 2,
PSize = 3,
PMinSize = 4,
PMaxSize = 5,
PResizeInc = 6,
PAspect = 7,
PBaseSize = 8,
PWinGravity = 9,
}
+159
View File
@@ -1546,4 +1546,163 @@ foreign xlib {
XFreeModifiermap :: proc(modmap: ^XModifierKeymap) ---
XSetModifierMapping :: proc(display: ^Display, modmap: ^XModifierKeymap) -> i32 ---
XGetModifierMapping :: proc(display: ^Display) -> ^XModifierKeymap ---
// Manipulating top-level windows
XIconifyWindow :: proc(
dipslay: ^Display,
window: Window,
screen_no: i32,
) -> Status ---
XWithdrawWindow :: proc(
dipslay: ^Display,
window: Window,
screen_no: i32,
) -> Status ---
XReconfigureWMWindow :: proc(
dipslay: ^Display,
window: Window,
screen_no: i32,
mask: WindowChangesMask,
changes: ^XWindowChanges,
) -> Status ---
// Getting and setting the WM_NAME property
XSetWMName :: proc(
display: ^Display,
window: Window,
prop: ^XTextProperty
) ---
XGetWMName :: proc(
display: ^Display,
window: Window,
prop: ^XTextProperty,
) -> Status ---
XStoreName :: proc(
display: ^Display,
window: Window,
name: cstring
) ---
XFetchName :: proc(
display: ^Display,
window: Window,
name: ^cstring
) -> Status ---
XSetWMIconName :: proc(
display: ^Display,
window: Window,
prop: ^XTextProperty
) ---
XGetWMIconName :: proc(
display: ^Display,
window: Window,
prop: ^XTextProperty,
) -> Status ---
XSetIconName :: proc(
display: ^Display,
window: Window,
name: cstring,
) ---
XGetIconName :: proc(
display: ^Display,
window: Window,
prop: ^cstring,
) -> Status ---
// Setting and reading WM_HINTS property
XAllocWMHints :: proc() -> ^XWMHints ---
XSetWMHints :: proc(
display: ^Display,
window: Window,
hints: ^XWMHints,
) ---
XGetWMHints :: proc(
display: ^Display,
window: Window,
) -> ^XWMHints ---
// Setting and reading MW_NORMAL_HINTS property
XAllocSizeHints :: proc() -> ^XSizeHints ---
XSetWMNormalHints :: proc(
display: ^Display,
window: Window,
hints: ^XSizeHints,
) ---
XGetWMNormalHints :: proc(
display: ^Display,
window: Window,
hints: ^XSizeHints,
flags: ^SizeHints,
) -> Status ---
XSetWMSizeHints :: proc(
display: ^Display,
window: Window,
hints: ^XSizeHints,
prop: Atom,
) ---
XGetWMSizeHints :: proc(
display: ^Display,
window: Window,
hints: ^XSizeHints,
masks: ^SizeHints,
prop: Atom,
) -> Status ---
// Setting and reading the WM_CLASS property
XAllocClassHint :: proc() -> ^XClassHint ---
XSetClassHint :: proc(
display: ^Display,
window: Window,
hint: ^XClassHint,
) ---
XGetClassHint :: proc(
display: ^Display,
window: Window,
hint: ^XClassHint,
) -> Status ---
// Setting and reading WM_TRANSIENT_FOR property
XSetTransientForHint :: proc(
display: ^Display,
window: Window,
prop_window: Window,
) ---
XGetTransientForHint :: proc(
display: ^Display,
window: Window,
prop_window: ^Window,
) -> Status ---
// Setting and reading the WM_PROTOCOLS property
XSetWMProtocols :: proc(
display: ^Display,
window: Window,
protocols: [^]Atom,
count: i32,
) -> Status ---
XGetWMProtocols :: proc(
display: ^Display,
window: Window,
protocols: ^[^]Atom,
count: ^i32
) -> Status ---
// Setting and reading the WM_COLORMAP_WINDOWS property
XSetWMColormapWindows :: proc(
display: ^Display,
window: Window,
colormap_windows: [^]Window,
count: i32,
) -> Status ---
XGetWMColormapWindows :: proc(
display: ^Display,
window: Window,
colormap_windows: ^[^]Window,
count: ^i32,
) -> Status ---
// Setting and reading the WM_ICON_SIZE_PROPERTY
XAllocIconSize :: proc() -> ^XIconSize ---
XSetIconSizes :: proc(
display: ^Display,
window: Window,
size_list: [^]XIconSize,
count: i32,
) ---
XGetIconSizes :: proc(
display: ^Display,
window: Window,
size_list: ^[^]XIconSize,
count: ^i32,
) -> Status ---
}
+4 -4
View File
@@ -1162,7 +1162,7 @@ XcmsFunctionSet :: struct {
/* ---- X11/Xutil.h --------------------------------------------------------*/
XSizeHints :: struct {
flags: int,
flags: SizeHints,
x: i32,
y: i32,
width: i32,
@@ -1181,9 +1181,9 @@ XSizeHints :: struct {
}
XWMHints :: struct {
flags: int,
input: i32,
initial_state: i32,
flags: WMHints,
input: b32,
initial_state: WMHintState,
icon_pixmap: Pixmap,
icon_window: Window,
icon_x: i32,