コード例 #1
0
ファイル: Icccm.cpp プロジェクト: edeproject/svn
void ICCCM::set_iconsizes()
{
    XIconSize *is = XAllocIconSize();

    is->min_width = 8;
    is->min_height = 8;
    is->max_width = 48;
    is->max_height = 48;
    is->width_inc = 1;
    is->height_inc = 1;
    XSetIconSizes(fl_display, root_win, is, 1);

    XFree(is);
}
コード例 #2
0
ファイル: main.cpp プロジェクト: zchydem/qtablet
int main(int argc, char **argv)
{
    for(int i=1; i < argc; i++)
    {
        if(strcmp(argv[i], "--version") == 0)
        {
            logmsg << DVERSION;
            return(0);
        }

        if(strcmp(argv[i], "-restart") == 0)
            defaults::start_restart = TRUE;

        if(strcmp(argv[i], "-c") == 0 && argc > i+1)
            defaults::cfdir = argv[++i];
    }

    if(defaults::cfdir.isNull())  // get config dir
    {
        QString fname(getenv("HOME"));

        if(! fname.isNull())
            defaults::cfdir = fname + "/.qlwm";
    }
    defaults::argc = argc;
    defaults::argv = argv;

    qapp a(argc, argv);
    a.setOverrideCursor( Qt::BlankCursor );

    defaults::read_config();

    qapp::home = HomeDesktop::instance();
    qapp::read_cprops();
    make_bpixmaps();
    qapp::winf = new winfo(0);

    XSetErrorHandler(xerrors);

    XIconSize *isize;
    if((isize = XAllocIconSize()) != NULL)
    {
        isize->min_width = isize->min_height = 2;
        isize->max_width = isize->max_height = 200;
        isize->width_inc = isize->height_inc = 1;

        XSetIconSizes(QX11Info::display(), QX11Info::appRootWindow(), isize, 1);
        XFree(isize);
    }

    XClearWindow(QX11Info::display(), QX11Info::appRootWindow());


    qapp::upal = new QPalette(defaults::urgent_bg);

    if(defaults::inactive_bg == NULL)
    {
        qapp::ipal = new QPalette;
        qapp::ipal->setBrush(QPalette::Window, qapp::ipal->brush(QPalette::Dark));
    }
    else
        qapp::ipal = new QPalette(*defaults::inactive_bg);

    XSelectInput(QX11Info::display(), QX11Info::appRootWindow(), SubstructureRedirectMask);
    XSync(QX11Info::display(), FALSE);

    if(defaults::sttiled[0])
    {
        qapp::tdesks[0] = TRUE;
        defaults::sttiled[0] = FALSE;
    }

    getrunprocs();
    defaults::start_restart = FALSE;

    XSelectInput(QX11Info::display(), QX11Info::appRootWindow(),
                 SubstructureNotifyMask|SubstructureRedirectMask|
                 StructureNotifyMask|
                 ButtonPressMask|
                 PropertyChangeMask|
                 KeyPressMask|
                 ColormapChangeMask|
                 EnterWindowMask);

    XSync(QX11Info::display(), FALSE);

    struct sigaction act;

    act.sa_handler = sig_hup;
    act.sa_flags = SA_RESTART;
    sigaction(SIGHUP, &act, NULL);

    act.sa_handler = sig_term;
    sigaction(SIGTERM, &act, NULL);

    wm_init = FALSE;
    startprg();

    return(a.exec());
}
コード例 #3
0
ファイル: main.cpp プロジェクト: nic0lae/freebsddistro
int main(int argc, char **argv)
{
	for(int i=1; i < argc; i++)
	{
		if(strcmp(argv[i], "--version") == 0)
		{
			qapp::logmsg << DVERSION;
			return(0);
		}
		
		if(strcmp(argv[i], "-restart") == 0)
			defaults::start_restart = TRUE;

		if(strcmp(argv[i], "-c") == 0 && argc > i+1)
			defaults::cfdir = argv[++i];
	}

	if(defaults::cfdir.isNull())  // get config dir
	{
		QString fname(getenv("HOME"));

		if(! fname.isNull())
			defaults::cfdir = fname + "/.qlwm";
	}
	defaults::argc = argc;
	defaults::argv = argv;
	
	qapp a(argc, argv);

	clients.setAutoDelete(TRUE);
	defaults::read_config();
	qapp::tb = new Toolbar(0, "Toolbar");
	qapp::read_cprops();
	make_bpixmaps();
	qapp::winf = new winfo(0, "winfo");
	a.setMainWidget(qapp::tb);
	
	XSetErrorHandler(xerrors);

	XIconSize *isize;
	if((isize = XAllocIconSize()) != NULL)
	{
		isize->min_width = isize->min_height = 2;
		isize->max_width = isize->max_height = 200;
		isize->width_inc = isize->height_inc = 1;

		XSetIconSizes(qt_xdisplay(), qt_xrootwin(), isize, 1);
		XFree(isize);
	}	

	if(defaults::root_pix.isNull()) 
		a.desktop()->setBackgroundColor(defaults::root_bg);
	else
		a.desktop()->setBackgroundPixmap(QPixmap(defaults::root_pix));

	qapp::upal = new QPalette(defaults::urgent_bg, defaults::urgent_bg);
	qapp::ipal = new QPalette(defaults::inactive_bg, defaults::inactive_bg);

	XSelectInput(qt_xdisplay(), qt_xrootwin(), SubstructureRedirectMask);
	XSync(qt_xdisplay(), FALSE);

	if(defaults::sttiled[0])
	{
		qapp::tdesks[0] = TRUE;
		defaults::sttiled[0] = FALSE;
	}
	tb_wl->set_pixmap();
	getrunprocs();
	defaults::start_restart = FALSE;

	XSelectInput(qt_xdisplay(), qt_xrootwin(),
	SubstructureNotifyMask|SubstructureRedirectMask| 
	ButtonPressMask|
	PropertyChangeMask|
	KeyPressMask|
	ColormapChangeMask|
	EnterWindowMask);

	XSync(qt_xdisplay(), FALSE);

	struct sigaction act;
	
	act.sa_handler = sig_hup;
	act.sa_flags = SA_RESTART;
	sigaction(SIGHUP, &act, NULL);

	act.sa_handler = sig_term;
	sigaction(SIGTERM, &act, NULL);

	keyboard::init();
	wm_init = FALSE;
	startprg();
	
	return(a.exec());
}
コード例 #4
0
ファイル: WmProtocol.c プロジェクト: juddy/edcde
void SetupWmICCC (void)
{
    enum { 
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
      	   XA_TARGETS, XA_MULTIPLE, XA_TIMESTAMP, 
#endif
	   XA_WM_STATE, XA_WM_PROTOCOLS, XA_WM_CHANGE_STATE,
	   XA_WM_SAVE_YOURSELF, XA_WM_DELETE_WINDOW,
	   XA_WM_COLORMAP_WINDOWS, XA_WM_TAKE_FOCUS, XA_MWM_HINTS,
	   XA_MWM_MENU, XA_MWM_MESSAGES, XA_MOTIF_WM_OFFSET,
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL) || !defined(NO_WMQUERY))
	   XA_MOTIF_WM_CLIENT_WINDOW, XA_MOTIF_WM_POINTER_WINDOW,
	   XA_MOTIF_WM_ALL_CLIENTS,
#endif
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
	   XA_MOTIF_WM_DEFINE_COMMAND, XA_MOTIF_WM_INCLUDE_COMMAND,
	   XA_MOTIF_WM_REMOVE_COMMAND, XA_MOTIF_WM_ENABLE_COMMAND,
	   XA_MOTIF_WM_DISABLE_COMMAND, XA_MOTIF_WM_RENAME_COMMAND,
	   XA_MOTIF_WM_INVOKE_COMMAND, XA_MOTIF_WM_REQUEST_COMMAND,
	   XA_MOTIF_WM_WINDOW_FLAGS, XA_MOTIF_WM_AUTOMATION, 
#endif
	   XA_COMPOUND_TEXT, NUM_ATOMS };

    static char *atom_names[] = {
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
      	   _XA_TARGETS, _XA_MULTIPLE, _XA_TIMESTAMP, 
#endif
	   _XA_WM_STATE, _XA_WM_PROTOCOLS, _XA_WM_CHANGE_STATE,
	   _XA_WM_SAVE_YOURSELF, _XA_WM_DELETE_WINDOW,
	   _XA_WM_COLORMAP_WINDOWS, _XA_WM_TAKE_FOCUS, _XA_MWM_HINTS,
	   _XA_MWM_MENU, _XA_MWM_MESSAGES, _XA_MOTIF_WM_OFFSET,
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL) || !defined(NO_WMQUERY))
# ifdef _XA_MOTIF_WM_CLIENT_WINDOW
	   _XA_MOTIF_WM_CLIENT_WINDOW, _XA_MOTIF_WM_POINTER_WINDOW,
	   _XA_MOTIF_WM_ALL_CLIENTS, 
# else
	   "_MOTIF_WM_CLIENT_WINDOW", "_MOTIF_WM_POINTER_WINDOW",
	   "_MOTIF_WM_ALL_CLIENTS"
# endif
#endif
#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
	   _XA_MOTIF_WM_DEFINE_COMMAND, _XA_MOTIF_WM_INCLUDE_COMMAND,
	   _XA_MOTIF_WM_REMOVE_COMMAND, _XA_MOTIF_WM_ENABLE_COMMAND,
	   _XA_MOTIF_WM_DISABLE_COMMAND, _XA_MOTIF_WM_RENAME_COMMAND,
	   _XA_MOTIF_WM_INVOKE_COMMAND, _XA_MOTIF_WM_REQUEST_COMMAND,
	   _XA_MOTIF_WM_WINDOW_FLAGS, _XA_MOTIF_WM_AUTOMATION, 
#endif
	   "COMPOUND_TEXT"
    };

    XIconSize sizeList;
    int scr;
    Atom atoms[XtNumber(atom_names) + 1];

    /*
     * Make atoms that are required by the ICCC and mwm.  The atom for
     * _MOTIF_WM_INFO is intern'ed in ProcessMotifWmInfo.
     */
    XInternAtoms(DISPLAY, atom_names, XtNumber(atom_names), False, atoms);


#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
    wmGD.xa_TARGETS			= atoms[XA_TARGETS];

    wmGD.xa_MULTIPLE			= atoms[XA_MULTIPLE];
    wmGD.xa_TIMESTAMP			= atoms[XA_TIMESTAMP];
#endif /* !defined(WSM) || defined(MWM_QATS_PROTOCOL) */

    wmGD.xa_WM_STATE			= atoms[XA_WM_STATE];
    wmGD.xa_WM_PROTOCOLS		= atoms[XA_WM_PROTOCOLS];
    wmGD.xa_WM_CHANGE_STATE		= atoms[XA_WM_CHANGE_STATE];
    wmGD.xa_WM_SAVE_YOURSELF		= atoms[XA_WM_SAVE_YOURSELF];
    wmGD.xa_WM_DELETE_WINDOW		= atoms[XA_WM_DELETE_WINDOW];
    wmGD.xa_WM_COLORMAP_WINDOWS		= atoms[XA_WM_COLORMAP_WINDOWS];
    wmGD.xa_WM_TAKE_FOCUS		= atoms[XA_WM_TAKE_FOCUS];
    wmGD.xa_MWM_HINTS			= atoms[XA_MWM_HINTS];
    wmGD.xa_MWM_MENU			= atoms[XA_MWM_MENU];
    wmGD.xa_MWM_MESSAGES		= atoms[XA_MWM_MESSAGES];
    wmGD.xa_MWM_OFFSET			= atoms[XA_MOTIF_WM_OFFSET];

#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
    /* wm query targets */
    wmGD._MOTIF_WM_CLIENT_WINDOW  = atoms[XA_MOTIF_WM_CLIENT_WINDOW];
    wmGD._MOTIF_WM_POINTER_WINDOW = atoms[XA_MOTIF_WM_POINTER_WINDOW];
    wmGD._MOTIF_WM_ALL_CLIENTS	  = atoms[XA_MOTIF_WM_ALL_CLIENTS];

    /* intern atoms for Client-Commmand Interface protocol. */
    wmGD._MOTIF_WM_DEFINE_COMMAND = atoms[XA_MOTIF_WM_DEFINE_COMMAND];
    wmGD._MOTIF_WM_INCLUDE_COMMAND= atoms[XA_MOTIF_WM_INCLUDE_COMMAND];
    wmGD._MOTIF_WM_REMOVE_COMMAND = atoms[XA_MOTIF_WM_REMOVE_COMMAND];
    wmGD._MOTIF_WM_ENABLE_COMMAND = atoms[XA_MOTIF_WM_ENABLE_COMMAND];
    wmGD._MOTIF_WM_DISABLE_COMMAND= atoms[XA_MOTIF_WM_DISABLE_COMMAND];
    wmGD._MOTIF_WM_RENAME_COMMAND = atoms[XA_MOTIF_WM_RENAME_COMMAND];
    wmGD._MOTIF_WM_INVOKE_COMMAND = atoms[XA_MOTIF_WM_INVOKE_COMMAND];
    wmGD._MOTIF_WM_REQUEST_COMMAND= atoms[XA_MOTIF_WM_REQUEST_COMMAND];
    wmGD._MOTIF_WM_WINDOW_FLAGS	  = atoms[XA_MOTIF_WM_WINDOW_FLAGS];

    wmGD._MOTIF_WM_AUTOMATION	  = atoms[XA_MOTIF_WM_AUTOMATION];
#endif /* !defined(WSM) || defined(MWM_QATS_PROTOCOL) */


#if ((!defined(WSM)) || defined(MWM_QATS_PROTOCOL))
    /*
     * Assert ownership of the WINDOW_MANAGER selection
     * on each screen that the window manager controls.
     * these use the format WM_Si.
     */
    OwnWMSelections(GetTimestamp());
#endif /* !defined(WSM) || defined(MWM_QATS_PROTOCOL) */

    wmGD.xa_COMPOUND_TEXT = atoms[XA_COMPOUND_TEXT];

#ifndef NO_WMQUERY
    if (!(xa_WM_QUERY = (Atom *) XtMalloc (wmGD.numScreens * (sizeof (Atom)))))
    {
	Warning (((char *)GETMESSAGE(56, 2, "Insufficient memory to XInternAtom _MOTIF_WM_QUERY_nn")));
    }

    for (scr = 0; scr < wmGD.numScreens; scr++)
    {
	if (wmGD.Screens[scr].managed)
	{
	  char wm_query_scr[32];

          sprintf(wm_query_scr, "_MOTIF_WM_QUERY_%d",
                                        wmGD.Screens[scr].screen);
          xa_WM_QUERY[scr] = XInternAtom(DISPLAY, wm_query_scr, False);
        }
        else
        {
          xa_WM_QUERY[scr] = 0;
	}
    }
    xa_WM_CLIENT_WINDOW  = atoms[XA_MOTIF_WM_CLIENT_WINDOW];
    xa_WM_POINTER_WINDOW = atoms[XA_MOTIF_WM_POINTER_WINDOW];
    xa_WM_ALL_CLIENTS    = atoms[XA_MOTIF_WM_ALL_CLIENTS];
#endif /* NO_WMQUERY */


    /*
     * Setup the icon size property on the root window.
     */

    sizeList.width_inc = 1;
    sizeList.height_inc = 1;

    for (scr = 0; scr < wmGD.numScreens; scr++)
    {
	if (wmGD.Screens[scr].managed)
	{
	    sizeList.min_width = wmGD.Screens[scr].iconImageMinimum.width;
	    sizeList.min_height = wmGD.Screens[scr].iconImageMinimum.height;
	    sizeList.max_width = wmGD.Screens[scr].iconImageMaximum.width;
	    sizeList.max_height = wmGD.Screens[scr].iconImageMaximum.height;

	    XSetIconSizes (DISPLAY, wmGD.Screens[scr].rootWindow, 
		&sizeList, 1);
	}
    }

#ifndef NO_WMQUERY
    /*
     * Assert ownership of the WM_QUERY selection
     */
    for (scr = 0; scr < wmGD.numScreens; scr++)
    {
	if (wmGD.Screens[scr].managed)
	{
	    if (!XtOwnSelection(wmGD.topLevelW,
				xa_WM_QUERY[scr],
				GetTimestamp(),
				wmq_convert,
				wmq_lose,
				wmq_done))
	      {
		 Warning (((char *)GETMESSAGE(56, 3, "Failed to own _MOTIF_WM_QUERY_nn selection")));
	      }
	}
    }
#endif /* NO_WMQUERY */


} /* END OF FUNCTION SetupWmICCC */