File: gtw.c

package info (click to toggle)
ctwm 3.7-3
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny
  • size: 6,420 kB
  • ctags: 3,180
  • sloc: ansic: 26,429; yacc: 1,004; lex: 147; makefile: 55; sh: 32
file content (96 lines) | stat: -rw-r--r-- 2,793 bytes parent folder | download | duplicates (5)
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/* 
 *  [ ctwm ]
 *
 *  Copyright 1992 Claude Lecommandeur.
 *            
 * Permission to use, copy, modify  and distribute this software  [ctwm] and
 * its documentation for any purpose is hereby granted without fee, provided
 * that the above  copyright notice appear  in all copies and that both that
 * copyright notice and this permission notice appear in supporting documen-
 * tation, and that the name of  Claude Lecommandeur not be used in adverti-
 * sing or  publicity  pertaining to  distribution of  the software  without
 * specific, written prior permission. Claude Lecommandeur make no represen-
 * tations  about the suitability  of this software  for any purpose.  It is
 * provided "as is" without express or implied warranty.
 *
 * Claude Lecommandeur DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
 * INCLUDING ALL  IMPLIED WARRANTIES OF  MERCHANTABILITY AND FITNESS.  IN NO
 * EVENT SHALL  Claude Lecommandeur  BE LIABLE FOR ANY SPECIAL,  INDIRECT OR
 * CONSEQUENTIAL  DAMAGES OR ANY  DAMAGES WHATSOEVER  RESULTING FROM LOSS OF
 * USE, DATA  OR PROFITS,  WHETHER IN AN ACTION  OF CONTRACT,  NEGLIGENCE OR
 * OTHER  TORTIOUS ACTION,  ARISING OUT OF OR IN  CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 *
 * Author:  Claude Lecommandeur [ lecom@sic.epfl.ch ][ April 1992 ]
 */
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>
/*
#include <X11/Xmu/CharSet.h>
#include <X11/Xresource.h>
*/
#ifdef macII
int strcmp(); /* missing from string.h in AUX 2.0 */
#endif

Atom     _XA_WM_CURRENTWORKSPACE, _XA_WM_OCCUPATION;
Display *dpy;

main (argc, argv)
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", &w);
	    changeOccupation (w, argv [2]);
	    break;

	default:
	    fprintf (stderr, "usage %s name\n", argv [0]);
	    break;

    }
}

gotoWorkspace (name)
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);
}

changeOccupation (w, occup)
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);
}