itCreate a window on screen - xmenu - drop-down menu for X11 Err z3bra.org 70 hgit clone git://git.z3bra.org/xmenu.git URL:git://git.z3bra.org/xmenu.git z3bra.org 70 1Log /scm/xmenu/log.gph z3bra.org 70 1Files /scm/xmenu/files.gph z3bra.org 70 1Refs /scm/xmenu/refs.gph z3bra.org 70 i--- Err z3bra.org 70 1commit 7ee5c0bf82d7491c1f62d381fcde373ec154d066 /scm/xmenu/commit/7ee5c0bf82d7491c1f62d381fcde373ec154d066.gph z3bra.org 70 1parent 6aa884a39d72c6c64ccb4efdf2417c90df0fef72 /scm/xmenu/commit/6aa884a39d72c6c64ccb4efdf2417c90df0fef72.gph z3bra.org 70 hAuthor: Willy Goiffon URL:mailto:dev@z3bra.org z3bra.org 70 iDate: Fri, 8 Nov 2019 22:11:42 +0100 Err z3bra.org 70 i Err z3bra.org 70 iCreate a window on screen Err z3bra.org 70 i Err z3bra.org 70 iDiffstat: Err z3bra.org 70 i M config.def.h | 7 +++++++ Err z3bra.org 70 i M xmenu.c | 40 +++++++++++++++++++++++++++++++ Err z3bra.org 70 i Err z3bra.org 70 i2 files changed, 47 insertions(+), 0 deletions(-) Err z3bra.org 70 i--- Err z3bra.org 70 1diff --git a/config.def.h b/config.def.h /scm/xmenu/file/config.def.h.gph z3bra.org 70 it@@ -0,0 +1,7 @@ Err z3bra.org 70 i+/* widget size */ Err z3bra.org 70 i+int width = 320; Err z3bra.org 70 i+int height = 480; Err z3bra.org 70 i+ Err z3bra.org 70 i+/* widget colors, given as RGB hex values */ Err z3bra.org 70 i+uint32_t background = 0x666666; Err z3bra.org 70 i+uint32_t foreground = 0xffffff; Err z3bra.org 70 1diff --git a/xmenu.c b/xmenu.c /scm/xmenu/file/xmenu.c.gph z3bra.org 70 it@@ -1,11 +1,18 @@ Err z3bra.org 70 i #include Err z3bra.org 70 i+#include Err z3bra.org 70 i #include Err z3bra.org 70 i+#include Err z3bra.org 70 i Err z3bra.org 70 i #include Err z3bra.org 70 i Err z3bra.org 70 i #include "arg.h" Err z3bra.org 70 i #include "config.h" Err z3bra.org 70 i Err z3bra.org 70 i+int verbose = 0; Err z3bra.org 70 i+xcb_connection_t *dpy; Err z3bra.org 70 i+xcb_screen_t *screen; Err z3bra.org 70 i+xcb_window_t wid; Err z3bra.org 70 i+ Err z3bra.org 70 i void Err z3bra.org 70 i usage(FILE *fd, char *name) Err z3bra.org 70 i { Err z3bra.org 70 it@@ -15,17 +22,50 @@ usage(FILE *fd, char *name) Err z3bra.org 70 i int Err z3bra.org 70 i main(int argc, char *argv[]) Err z3bra.org 70 i { Err z3bra.org 70 i+ int mask, val[4]; Err z3bra.org 70 i char *argv0; Err z3bra.org 70 i+ Err z3bra.org 70 i ARGBEGIN { Err z3bra.org 70 i case 'h': Err z3bra.org 70 i usage(stdout, argv0); Err z3bra.org 70 i return 0; Err z3bra.org 70 i break; Err z3bra.org 70 i+ case 'v': Err z3bra.org 70 i+ verbose++; Err z3bra.org 70 i+ break; Err z3bra.org 70 i default: Err z3bra.org 70 i usage(stderr, argv0); Err z3bra.org 70 i return -1; Err z3bra.org 70 i break; Err z3bra.org 70 i } ARGEND; Err z3bra.org 70 i Err z3bra.org 70 i+ dpy = xcb_connect(NULL, NULL); Err z3bra.org 70 i+ if (xcb_connection_has_error(dpy)) Err z3bra.org 70 i+ return -1; Err z3bra.org 70 i+ Err z3bra.org 70 i+ screen = xcb_setup_roots_iterator(xcb_get_setup(dpy)).data; Err z3bra.org 70 i+ if (!screen) Err z3bra.org 70 i+ return -1; Err z3bra.org 70 i+ Err z3bra.org 70 i+ mask = XCB_CW_BACK_PIXEL Err z3bra.org 70 i+ | XCB_CW_EVENT_MASK; Err z3bra.org 70 i+ Err z3bra.org 70 i+ val[0] = background; Err z3bra.org 70 i+ val[1] = XCB_EVENT_MASK_EXPOSURE Err z3bra.org 70 i+ | XCB_EVENT_MASK_BUTTON_PRESS Err z3bra.org 70 i+ | XCB_EVENT_MASK_BUTTON_RELEASE Err z3bra.org 70 i+ | XCB_EVENT_MASK_BUTTON_MOTION; Err z3bra.org 70 i+ Err z3bra.org 70 i+ wid = xcb_generate_id(dpy); Err z3bra.org 70 i+ xcb_create_window(dpy, screen->root_depth, wid, screen->root, Err z3bra.org 70 i+ 0, 0, width, height, 0, XCB_WINDOW_CLASS_INPUT_OUTPUT, Err z3bra.org 70 i+ screen->root_visual, mask, val); Err z3bra.org 70 i+ Err z3bra.org 70 i+ xcb_map_window(dpy, wid); Err z3bra.org 70 i+ xcb_flush(dpy); Err z3bra.org 70 i+ Err z3bra.org 70 i+ sleep(50); Err z3bra.org 70 i+ Err z3bra.org 70 i+ xcb_disconnect(dpy); Err z3bra.org 70 i return 0; Err z3bra.org 70 i } Err z3bra.org 70 .