polytreewm/rust-polytreewm/src/atoms.rs

38 lines
1.1 KiB
Rust

use x11::xlib::{self, Atom, Display, False};
#[repr(C)]
pub struct Atoms {
wmatom: [Atom; 4],
netatom: [Atom; 9],
utf8string: Atom,
}
fn atom(dpy: *mut Display, name: &str) -> Atom {
unsafe { xlib::XInternAtom(dpy, name.as_ptr() as *const i8, False) }
}
impl Atoms {
pub fn create(dpy: *mut Display) -> Self {
Self {
wmatom: [
atom(dpy, "WM_PROTOCOLS"),
atom(dpy, "WM_DELETE_WINDOW"),
atom(dpy, "WM_STATE"),
atom(dpy, "WM_TAKE_FOCUS"),
],
netatom: [
atom(dpy, "_NET_SUPPORTED"),
atom(dpy, "_NET_WM_NAME"),
atom(dpy, "_NET_WM_STATE"),
atom(dpy, "_NET_SUPPORTING_WM_CHECK"),
atom(dpy, "_NET_WM_STATE_FULLSCREEN"),
atom(dpy, "_NET_ACTIVE_WINDOW"),
atom(dpy, "_NET_WM_WINDOW_TYPE"),
atom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG"),
atom(dpy, " _NET_CLIENT_LIST"),
],
utf8string: atom(dpy, "UTF8_STRING"),
}
}
}