+#define DOCKAPP_SIZE 56
+#define SPEED 100
+#define ACTIVE_DESKTOP 1
+#define ACTIVE_WINDOW 2
+
+static GC lightGrayGC, darkGrayGC, active_desktopGC, inactive_desktopGC, active_windowGC, inactive_windowGC;
+static Atom num_desktops_atom, current_desktop_atom, client_list_atom, client_desktop_atom, client_state_atom, active_window_atom;
+static Atom shaded_state, skip_pager_state, hidden_state;
+static long desktop = -1;
+
+void setup_atom(Atom *atom, const char *prop) {
+ *atom = XInternAtom(DADisplay, prop, True);
+ if (*atom == None) exit(111);
+}
+
+void get_atom_longs(Atom atom, Atom type, Window window, long **data, unsigned long *num_items) {
+ Atom actual;
+ int format;
+ unsigned long num_bytes;
+
+ XGetWindowProperty(DADisplay, window, atom, 0, 8192, False, type, &actual, &format, num_items, &num_bytes, (unsigned char **) data);
+}
+
+long get_atom_long(Atom atom, Atom type, Window window) {
+ long *data;
+ long ret = 0;
+ unsigned long num_items;
+
+ get_atom_longs(atom, type, window, &data, &num_items);
+ if (num_items) ret = data[0];
+ XFree(data);
+
+ return ret;
+}