#include <Xm/Xm.h>
#include <Xm/PushB.h>
#include <Xm/PushBG.h>

#include <stdio.h>


#define XLOCK_CMD "/var/tmp/xlock/xlockmore"
#define XLOCK_PIXMAP "./yinyang"


void pushed(Widget, XtPointer, XtPointer);


static String fallbacks[] = {
  NULL,};


int main(int argc, char *argv[]){
  XtAppContext app_context;
  Widget       topLevel, button;
  String       pixmap_name;
  Pixmap       pixmap;
  Pixel        fg, bg;
  
  XtSetLanguageProc(NULL, (XtLanguageProc)NULL, NULL);

  topLevel = XtVaAppInitialize(
		    &app_context,
		    "XLockButton",
		    NULL, 0,
		    &argc, argv,
		    fallbacks,
		    NULL);

  XtVaGetValues(topLevel,
		XmNforeground, &fg,
		XmNbackground, &bg,
		NULL);

  pixmap = XmGetPixmap(XtScreen(topLevel), XLOCK_PIXMAP, fg, bg);
  button = XtVaCreateManagedWidget(
				   "button",
				   xmPushButtonWidgetClass, topLevel,
				   XmNlabelType, XmPIXMAP,
				   XmNlabelPixmap, pixmap,
				   NULL);

  XtAddCallback(button, XmNactivateCallback, pushed, NULL);
  XtManageChild(button);
  XtRealizeWidget(topLevel);
  XtAppMainLoop(app_context);

}

void pushed(Widget w, XtPointer client, XtPointer call){
  system(XLOCK_CMD);
}
