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); }
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()); }
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()); }
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 */