#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include <X11/Shell.h>
#include "Eyes.h"
#include <stdio.h>
#include <stdlib.h>
#include "eyes.bit"
#include "eyesmask.bit"
static void
usage(void)
{
fprintf(stderr,
"usage: xeyes\n"
" [-display [{host}]:[{vs}]]\n"
" [-geometry [{width}][x{height}][{+-}{xoff}[{+-}{yoff}]]]\n"
" [-fg {color}] [-bg {color}] [-bd {color}] [-bw {pixels}]\n"
" [-shape | +shape] [-outline {color}] [-center {color}]\n"
" [-backing {backing-store}] [-distance]\n");
#ifdef XRENDER
fprintf(stderr,
" [-render | +render]\n");
#endif
exit(1);
}
static XrmOptionDescRec options[] = {
{"-outline", "*eyes.outline", XrmoptionSepArg, NULL},
{"-center", "*eyes.center", XrmoptionSepArg, NULL},
{"-backing", "*eyes.backingStore", XrmoptionSepArg, NULL},
{"-shape", "*eyes.shapeWindow", XrmoptionNoArg, "TRUE"},
{"+shape", "*eyes.shapeWindow", XrmoptionNoArg, "FALSE"},
#ifdef XRENDER
{"-render", "*eyes.render", XrmoptionNoArg, "TRUE"},
{"+render", "*eyes.render", XrmoptionNoArg, "FALSE"},
#endif
{"-distance", "*eyes.distance", XrmoptionNoArg, "TRUE"},
};
static Atom wm_delete_window;
static void
quit(Widget w, XEvent *event, String *params, Cardinal *num_params)
{
if (event->type == ClientMessage &&
event->xclient.data.l[0] != wm_delete_window) {
XBell(XtDisplay(w), 0);
} else {
XtDestroyApplicationContext(XtWidgetToApplicationContext(w));
exit(0);
}
}
static XtActionsRec actions[] = {
{"quit", quit}
};
int
main(int argc, char **argv)
{
XtAppContext app_context;
Widget toplevel;
Arg arg[2];
Cardinal i;
XtSetLanguageProc(NULL, (XtLanguageProc) NULL, NULL);
toplevel = XtAppInitialize(&app_context, "XEyes",
options, XtNumber(options), &argc, argv,
NULL, arg, (Cardinal) 0);
if (argc != 1) usage();
wm_delete_window = XInternAtom(XtDisplay(toplevel), "WM_DELETE_WINDOW",
False);
XtAppAddActions(app_context, actions, XtNumber(actions));
XtOverrideTranslations
(toplevel, XtParseTranslationTable ("<Message>WM_PROTOCOLS: quit()"));
i = 0;
XtSetArg (arg[i], XtNiconPixmap,
XCreateBitmapFromData (XtDisplay(toplevel),
XtScreen(toplevel)->root,
(char *)eyes_bits, eyes_width, eyes_height));
i++;
XtSetArg (arg[i], XtNiconMask,
XCreateBitmapFromData (XtDisplay(toplevel),
XtScreen(toplevel)->root,
(char *)eyesmask_bits,
eyesmask_width, eyesmask_height));
i++;
XtSetValues (toplevel, arg, i);
(void) XtCreateManagedWidget ("eyes", eyesWidgetClass, toplevel, NULL, 0);
XtRealizeWidget (toplevel);
(void) XSetWMProtocols (XtDisplay(toplevel), XtWindow(toplevel),
&wm_delete_window, 1);
XtAppMainLoop(app_context);
return 0;
}