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