/* David Leonard, 2000. Public domain. */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <X11/Intrinsic.h>

/*
 * Simple program to change the icon state of a window
 */

void
usage()
{
	fprintf(stderr, "usage: iconify [-u] -i id\n");
}

int
main(argc, argv)
	int argc;
	char *argv[];
{
	Display *display;
	Window w = 0;
	int screen_number;
	Status status;
	int uflag = 0;
	extern char *optarg;
	int ch;

	while ((ch = getopt(argc, argv, "ui:")) != -1)
		switch (ch) {
		case 'u':
			uflag = 1;
			break;
		case 'i':
			w = strtoul(optarg, NULL, 0);
			break;
		default:
			usage();
			exit(1);
		}

	if (w == 0)
		usage();

	display = XOpenDisplay(NULL);
	if (display == NULL) {
		fprintf(stderr, "cannot open display\n");
		exit(1);
	}

	screen_number = DefaultScreen(display);

	if (!uflag)
		/* Iconify */
		status = XIconifyWindow(display, w, screen_number);
	else
		/* Uniconify */
		status = XMapWindow(display, w);

	XCloseDisplay(display);

	if (status != 1) {
		fprintf(stderr, "could not %siconify window 0x%lx\n",
			uflag ? "un" : "", w);
		exit(1);
	}

	exit(0);
}

