|
@ -143,6 +143,7 @@ setup(void) { |
|
|
dwmprops = XInternAtom(dpy, "_DWM_PROPERTIES", False); |
|
|
dwmprops = XInternAtom(dpy, "_DWM_PROPERTIES", False); |
|
|
wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); |
|
|
wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); |
|
|
wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False); |
|
|
wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False); |
|
|
|
|
|
wmatom[WMName] = XInternAtom(dpy, "WM_NAME", False); |
|
|
wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False); |
|
|
wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False); |
|
|
netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False); |
|
|
netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False); |
|
|
netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False); |
|
|
netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False); |
|
@ -220,6 +221,33 @@ xerrorstart(Display *dsply, XErrorEvent *ee) { |
|
|
|
|
|
|
|
|
/* extern */ |
|
|
/* extern */ |
|
|
|
|
|
|
|
|
|
|
|
Bool |
|
|
|
|
|
gettextprop(Window w, Atom atom, char *text, unsigned int size) { |
|
|
|
|
|
char **list = NULL; |
|
|
|
|
|
int n; |
|
|
|
|
|
XTextProperty name; |
|
|
|
|
|
|
|
|
|
|
|
if(!text || size == 0) |
|
|
|
|
|
return False; |
|
|
|
|
|
text[0] = '\0'; |
|
|
|
|
|
XGetTextProperty(dpy, w, &name, atom); |
|
|
|
|
|
if(!name.nitems) |
|
|
|
|
|
return False; |
|
|
|
|
|
if(name.encoding == XA_STRING) |
|
|
|
|
|
strncpy(text, (char *)name.value, size - 1); |
|
|
|
|
|
else { |
|
|
|
|
|
if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success |
|
|
|
|
|
&& n > 0 && *list) |
|
|
|
|
|
{ |
|
|
|
|
|
strncpy(text, *list, size - 1); |
|
|
|
|
|
XFreeStringList(list); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
text[size - 1] = '\0'; |
|
|
|
|
|
XFree(name.value); |
|
|
|
|
|
return True; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void |
|
|
void |
|
|
quit(const char *arg) { |
|
|
quit(const char *arg) { |
|
|
readin = running = False; |
|
|
readin = running = False; |
|
|