1/* 2 * Copyright 1992 Claude Lecommandeur. 3 */ 4 5#include <stdio.h> 6#include <stdlib.h> 7#include <string.h> 8 9#include <X11/Xlib.h> 10#include <X11/Xatom.h> 11 12Atom _XA_WM_CURRENTWORKSPACE, _XA_WM_OCCUPATION; 13Display *dpy; 14 15void gotoWorkspace(char *name); 16void changeOccupation(Window w, char *occup); 17 18int 19main(int argc, char **argv) 20{ 21 Window w; 22 23 dpy = XOpenDisplay(NULL); 24 if(dpy == NULL) { 25 fprintf(stderr, "Can't open display\n"); 26 exit(1); 27 } 28 29 switch(argc) { 30 case 2: 31 gotoWorkspace(argv [1]); 32 break; 33 34 case 3: 35 sscanf(argv [1], "%x", (unsigned int *)&w); 36 changeOccupation(w, argv [2]); 37 break; 38 39 default: 40 fprintf(stderr, "usage %s name\n", argv [0]); 41 break; 42 43 } 44} 45 46void 47gotoWorkspace(char *name) 48{ 49 _XA_WM_CURRENTWORKSPACE = XInternAtom(dpy, "WM_CURRENTWORKSPACE", True); 50 if(_XA_WM_CURRENTWORKSPACE == None) { 51 fprintf(stderr, "Can't get WM_CURRENTWORKSPACE atom\n"); 52 exit(1); 53 } 54 55 XChangeProperty(dpy, RootWindow(dpy, 0), _XA_WM_CURRENTWORKSPACE, XA_STRING, 8, 56 PropModeReplace, (unsigned char *) name, strlen(name)); 57 XFlush(dpy); 58} 59 60void 61changeOccupation(Window w, char *occup) 62{ 63 _XA_WM_OCCUPATION = XInternAtom(dpy, "WM_OCCUPATION", True); 64 if(_XA_WM_OCCUPATION == None) { 65 fprintf(stderr, "Can't get WM_WORKSPACES atom\n"); 66 exit(1); 67 } 68 69 XChangeProperty(dpy, w, _XA_WM_OCCUPATION, XA_STRING, 8, 70 PropModeReplace, (unsigned char *) occup, strlen(occup)); 71 XFlush(dpy); 72} 73