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