diff options
author | eylles <ed.ylles1997@gmail.com> | 2021-09-11 08:14:34 -0600 |
---|---|---|
committer | Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr> | 2021-09-16 22:55:31 +0300 |
commit | d8ec6f91a9857fb651f39de7929f17543d1c996c (patch) | |
tree | ae53b8c984aa5452d609cd1d4007cba183f66a1c | |
parent | 46a54c4b2d6181fc9c92facf600bef59e6041ab3 (diff) |
Set the _NET_WM_PID and WM_CLIENT_MACHINE X properties (#13)
Set the _NET_WM_PID and WM_CLIENT_MACHINE X properties
Co-authored-by: Leon Kowarschick <lkowarschick@gmail.com>
Co-authored-by: Kian Kasad <kian@kasad.com>
Co-authored-by: NRK <nrk@disroot.org>
-rw-r--r-- | sxiv.h | 1 | ||||
-rw-r--r-- | window.c | 20 |
2 files changed, 21 insertions, 0 deletions
@@ -385,6 +385,7 @@ enum { ATOM__NET_WM_ICON_NAME, ATOM__NET_WM_ICON, ATOM__NET_WM_STATE, + ATOM__NET_WM_PID, ATOM__NET_WM_STATE_FULLSCREEN, ATOM_COUNT }; @@ -25,6 +25,7 @@ #include <stdlib.h> #include <string.h> #include <locale.h> +#include <unistd.h> #include <X11/cursorfont.h> #include <X11/Xatom.h> #include <X11/Xresource.h> @@ -151,6 +152,7 @@ void win_init(win_t *win) INIT_ATOM_(_NET_WM_ICON_NAME); INIT_ATOM_(_NET_WM_ICON); INIT_ATOM_(_NET_WM_STATE); + INIT_ATOM_(_NET_WM_PID); INIT_ATOM_(_NET_WM_STATE_FULLSCREEN); } @@ -168,6 +170,8 @@ void win_open(win_t *win) int gmask; XSizeHints sizehints; XWMHints hints; + pid_t pid; + char hostname[255]; e = &win->env; parent = options->embed != 0 ? options->embed : RootWindow(e->dpy, e->scr); @@ -215,6 +219,22 @@ void win_open(win_t *win) if (win->xwin == None) error(EXIT_FAILURE, 0, "Error creating X window"); + /* set the _NET_WM_PID */ + pid = getpid(); + XChangeProperty(e->dpy, win->xwin, + atoms[ATOM__NET_WM_PID], XA_CARDINAL, sizeof(pid_t) * 8, + PropModeReplace, (unsigned char *) &pid, 1); + + /* set the _NET_WM_PID */ + if (gethostname(hostname, sizeof(hostname)) == 0) { + XTextProperty tp; + tp.value = (unsigned char *)hostname; + tp.nitems = strnlen(hostname, sizeof(hostname)); + tp.encoding = XA_STRING; + tp.format = 8; + XSetWMClientMachine(e->dpy, win->xwin, &tp); + } + XSelectInput(e->dpy, win->xwin, ButtonReleaseMask | ButtonPressMask | KeyPressMask | PointerMotionMask | StructureNotifyMask); |