|
@@ -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;
|