diff --git a/.gitignore b/.gitignore index 197070b..879b07e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,2 @@ -wmx-defaults-1.tar.gz -wmx-7.tar.gz -/wmx-7.tar.gz -/wmx-defaults-1.tar.gz -/wmx-defaults-2.tar.gz -/wmx-8.tar.gz -/wmx-defaults-3.tar.gz +wmx-6pl1.tar.gz +wmx-defaults.tar.gz diff --git a/Xclients.wmx.sh b/Xclients.wmx.sh old mode 100644 new mode 100755 diff --git a/background.xpm b/background.xpm index cc36fa1..377bdf7 100644 --- a/background.xpm +++ b/background.xpm @@ -1,5 +1,5 @@ /* XPM */ -static const char *background[] = { +static char *background[] = { /* width height num_colors chars_per_pixel */ " 80 80 27 1", /* colors */ diff --git a/sources b/sources index b43253b..185bab4 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -52a0e31b9a77e227eb6dc732f7941f15 wmx-8.tar.gz -d5d5e760039fce77133abff54ce97cc1 wmx-defaults-3.tar.gz +212297d70acef90bbc9dac254de39cb8 wmx-6pl1.tar.gz +2cf73db613197fcc27304f71e188eb19 wmx-defaults.tar.gz diff --git a/wmx-6pl1-64b.patch b/wmx-6pl1-64b.patch new file mode 100644 index 0000000..7a81e60 --- /dev/null +++ b/wmx-6pl1-64b.patch @@ -0,0 +1,31 @@ +--- wmx-6pl1/Client.C.64b 2006-02-16 11:07:31.909626084 -0600 ++++ wmx-6pl1/Client.C 2006-02-16 11:08:02.499956573 -0600 +@@ -663,7 +663,7 @@ + } + + +-int Client::getAtomProperty(Atom a, Atom type) ++size_t Client::getAtomProperty(Atom a, Atom type) + { + char **p, *x; + if (getProperty_aux(display(), m_window, a, type, 1L, +@@ -673,7 +673,7 @@ + + x = *p; + XFree((void *)p); +- return (int)x; ++ return (size_t)x; + } + + +--- wmx-6pl1/Client.h.64b 2006-02-16 11:07:37.465322869 -0600 ++++ wmx-6pl1/Client.h 2006-02-16 11:08:19.883007902 -0600 +@@ -184,7 +184,7 @@ + WindowManager *const m_windowManager; + + char *getProperty(Atom); +- int getAtomProperty(Atom, Atom); ++ size_t getAtomProperty(Atom, Atom); + int getIntegerProperty(Atom); + + // accessors diff --git a/wmx-8-cfg.patch b/wmx-6pl1-cfg.patch similarity index 78% rename from wmx-8-cfg.patch rename to wmx-6pl1-cfg.patch index 560bd60..1e0020a 100644 --- a/wmx-8-cfg.patch +++ b/wmx-6pl1-cfg.patch @@ -1,20 +1,19 @@ -diff -NarU5 wmx-8.orig/Config.h wmx-8/Config.h ---- wmx-8.orig/Config.h 2014-11-16 14:34:19.000000000 -0500 -+++ wmx-8/Config.h 2014-11-20 09:41:54.238623357 -0500 -@@ -77,11 +77,11 @@ - // Spawn a temporary new shell between the wm and each new process? +diff -NarU5 wmx-6pl1.orig/Config.h wmx-6pl1/Config.h +--- wmx-6pl1.orig/Config.h 2006-06-04 13:57:06.000000000 -0400 ++++ wmx-6pl1/Config.h 2006-06-04 13:59:12.000000000 -0400 +@@ -75,11 +75,10 @@ #define CONFIG_EXEC_USING_SHELL False // What to run to get a new window (from the "New" menu option) #define CONFIG_NEW_WINDOW_LABEL "New" --#define CONFIG_NEW_WINDOW_COMMAND "x-terminal-emulator" -+#define CONFIG_NEW_WINDOW_COMMAND "/usr/bin/xterm" + #define CONFIG_NEW_WINDOW_COMMAND "xterm" +-//#define CONFIG_NEW_WINDOW_COMMAND "/home/ccannam/.wmx/terminal" #define CONFIG_NEW_WINDOW_COMMAND_OPTIONS 0 // or, for example, //#define CONFIG_NEW_WINDOW_COMMAND_OPTIONS "-ls","-sb","-sl","1024",0 // alternatively, #define CONFIG_DISABLE_NEW_WINDOW_COMMAND (DynamicConfig::config.disableNew()) -@@ -92,11 +92,11 @@ +@@ -90,11 +89,11 @@ // Directory under $HOME in which to look for commands for the // middle-button menu @@ -27,7 +26,7 @@ diff -NarU5 wmx-8.orig/Config.h wmx-8/Config.h #define CONFIG_ADD_SCREEN_TO_COMMAND_MENU False // Focus possibilities. -@@ -125,11 +125,11 @@ +@@ -121,11 +120,11 @@ // Number of pixels off the screen you have to push a window // before the manager notices the window is off-screen (the higher @@ -36,11 +35,11 @@ diff -NarU5 wmx-8.orig/Config.h wmx-8/Config.h -#define CONFIG_BUMP_DISTANCE 16 +#define CONFIG_BUMP_DISTANCE 32 - // If CONFIG_BUMP_EVERYWHERE is defined, windows will "bump" against - // other window edges as well as the edges of the screen - - #define CONFIG_BUMP_EVERYWHERE True -@@ -192,11 +192,11 @@ + // If CONFIG_PROD_SHAPE is True, all frame element shapes will be + // recalculated afresh every time their focus changes. This will + // probably slow things down hideously, but has been reported as + // necessary on some systems (possibly SunOS 4.x with OpenWindows). +@@ -178,11 +177,11 @@ // This is the key for wm controls: e.g. Alt/Left and Alt/Right to // flip channels, and Alt/Tab to switch windows. (On my 105-key @@ -53,7 +52,7 @@ diff -NarU5 wmx-8.orig/Config.h wmx-8/Config.h // modifier is pressed; they're keysyms as defined in // and -@@ -335,11 +335,11 @@ +@@ -304,11 +303,11 @@ #define CONFIG_MENU_BORDERS "black" // Pixel width for the bit of frame to the left of the window and the @@ -66,7 +65,7 @@ diff -NarU5 wmx-8.orig/Config.h wmx-8/Config.h // ======================== // Section IV. Flashy stuff // ======================== -@@ -348,11 +348,11 @@ +@@ -317,11 +316,11 @@ // in ./background.xpm; if USE_PIXMAP_MENUS is also True, the menus // will be too. The latter screws up in palette-based visuals, but // should be okay in true-colour. diff --git a/wmx-6pl1-cfgbug.patch b/wmx-6pl1-cfgbug.patch new file mode 100644 index 0000000..2ed40a6 --- /dev/null +++ b/wmx-6pl1-cfgbug.patch @@ -0,0 +1,32 @@ +diff -NarU5 wmx-6pl1.orig/Config.C wmx-6pl1/Config.C +--- wmx-6pl1.orig/Config.C 2006-06-04 14:23:33.000000000 -0400 ++++ wmx-6pl1/Config.C 2006-06-04 14:25:03.000000000 -0400 +@@ -149,13 +149,25 @@ + if (OPTION("off")) m_impl->rightBt = 0; + else if (OPTION("circulate")) m_impl->rightBt = 1; + else if (OPTION("lower")) m_impl->rightBt = 2; + else if (OPTION("toggleheight")) m_impl->rightBt = 4; + +- if (OPTION("tabfg:")) strncpy(m_impl->tabfg, s, COLOR_LEN); +- if (OPTION("tabbg:")) strncpy(m_impl->tabbg, s, COLOR_LEN); +- if (OPTION("framebg:")) strncpy(m_impl->framebg, s, COLOR_LEN); ++ if (OPTION("tabfg:")) { ++ strncpy(m_impl->tabfg, s, COLOR_LEN); ++ m_impl->tabfg[COLOR_LEN-1] = '\0'; // prevent unterminated string ++ s += strlen(m_impl->tabfg); // avoid error message below ++ } ++ if (OPTION("tabbg:")) { ++ strncpy(m_impl->tabbg, s, COLOR_LEN); ++ m_impl->tabbg[COLOR_LEN-1] = '\0'; ++ s += strlen(m_impl->tabbg); ++ } ++ if (OPTION("framebg:")) { ++ strncpy(m_impl->framebg, s, COLOR_LEN); ++ m_impl->framebg[COLOR_LEN-1] = '\0'; ++ s += strlen(m_impl->framebg); ++ } + + if (*s != '\0') { + fprintf(stderr, "\nwmx: Dynamic configuration error: " + "`%s' @ position %d", s, string - s); + } diff --git a/wmx-6pl1-cvs20060602.patch b/wmx-6pl1-cvs20060602.patch new file mode 100644 index 0000000..ee2cf1b --- /dev/null +++ b/wmx-6pl1-cvs20060602.patch @@ -0,0 +1,1629 @@ +diff -NarU5 wmx-6pl1/Border.C wmx-cvs-2006-06-02/Border.C +--- wmx-6pl1/Border.C 2001-04-04 05:02:34.000000000 -0400 ++++ wmx-cvs-2006-06-02/Border.C 2003-08-14 08:54:22.000000000 -0400 +@@ -84,13 +84,15 @@ + if (!m_parent) fprintf(stderr,"wmx: zero parent in Border::~Border\n"); + else { + XDestroyWindow(display(), m_tab); + XDestroyWindow(display(), m_button); + XDestroyWindow(display(), m_parent); +- +- // bad window if its parent has already gone: + XDestroyWindow(display(), m_resize); ++ ++ if (m_feedback) { ++ XDestroyWindow(display(), m_feedback); ++ } + } + } + + if (m_label) free(m_label); + } +@@ -748,15 +750,14 @@ + rl.append(rl.item(rl.count()-2)); + rl.remove(rl.count()-3); + } + + int final = rl.count(); +- rl.append(rl.item(final-1)); +- rl.item(final).x -= 1; +- rl.item(final).y += rl.item(final).height; +- rl.item(final).width += 1; +- rl.item(final).height = h - rl.item(final).height + 2; ++ rl.append(rl.item(final-1).x - 1, ++ rl.item(final-1).y + rl.item(final-1).height, ++ rl.item(final-1).width + 1, ++ h - rl.item(final-1).height + 2); + + XShapeCombineRectangles(display(), m_parent, ShapeBounding, + 0, 0, rl.xrectangles(), rl.count(), + visible ? ShapeUnion : ShapeSubtract, YXSorted); + rl.remove_all(); +diff -NarU5 wmx-6pl1/Buttons.C wmx-cvs-2006-06-02/Buttons.C +--- wmx-6pl1/Buttons.C 2001-04-24 04:56:39.000000000 -0400 ++++ wmx-cvs-2006-06-02/Buttons.C 2003-08-14 09:07:12.000000000 -0400 +@@ -16,18 +16,18 @@ + enum {Vertical, Maximum, Horizontal}; + setScreenFromPointer(); + Client *c = windowToClient(e->window); + + #if CONFIG_GNOME_BUTTON_COMPLIANCE == False +- if (e->button == Button3 && m_channelChangeTime == 0) { +- if (dConfig.rightCirculate()) ++ if (e->button == CONFIG_CIRCULATE_BUTTON && m_channelChangeTime == 0) { ++ if (DynamicConfig::config.rightCirculate()) + circulate(e->window == e->root); +- else if (dConfig.rightLower()) ++ else if (DynamicConfig::config.rightLower()) + { + if (e->window != e->root && c) c->lower(); + } +- else if (dConfig.rightToggleHeight()) ++ else if (DynamicConfig::config.rightToggleHeight()) + { + if (e->window != e->root && c) { + if (c->isFullHeight()) { + c->unmaximise(Vertical); + } else { +@@ -37,73 +37,73 @@ + } + return; + } + #endif + +- if (e->button == Button4 && CONFIG_CHANNEL_SURF) { ++ if (e->button == CONFIG_NEXTCHANNEL_BUTTON && CONFIG_CHANNEL_SURF) { + // wheel "up" - increase channel + flipChannel(False, False, True, c); + return ; +- } else if (e->button == Button5 && CONFIG_CHANNEL_SURF) { ++ } else if (e->button == CONFIG_PREVCHANNEL_BUTTON && CONFIG_CHANNEL_SURF) { + // wheel "down" - decrease channel + flipChannel(False, True, True, c); + return ; + } + + if (e->window == e->root) { + + #if CONFIG_GNOME_BUTTON_COMPLIANCE != False +- if ((e->button == Button1 || e->button == Button3) ++ if ((e->button == CONFIG_CLIENTMENU_BUTTON || e->button == CONFIG_CIRCULATE_BUTTON) + && m_channelChangeTime == 0) { + + XUngrabPointer(m_display, CurrentTime); + XSendEvent(m_display, gnome_win, False, SubstructureNotifyMask, ev); + return; + } + +- if (e->button == Button2 && m_channelChangeTime == 0) { ++ if (e->button == CONFIG_COMMANDMENU_BUTTON && m_channelChangeTime == 0) { + ClientMenu menu(this, (XEvent *)e); + return; + } + #endif + +- if (e->button == Button1 && m_channelChangeTime == 0) { ++ if (e->button == CONFIG_CLIENTMENU_BUTTON && m_channelChangeTime == 0) { + ClientMenu menu(this, (XEvent *)e); + + } else if (e->x > DisplayWidth(display(), screen()) - + CONFIG_CHANNEL_CLICK_SIZE && + e->y < CONFIG_CHANNEL_CLICK_SIZE) { + +- if (e->button == Button2) { ++ if (e->button == CONFIG_COMMANDMENU_BUTTON) { + #if CONFIG_USE_CHANNEL_MENU + ChannelMenu(this, (XEvent *)e); + #else + if (m_channelChangeTime == 0) flipChannel(True, False, False, 0); + else flipChannel(False, False, False, 0); + +- } else if (e->button == Button1 && m_channelChangeTime != 0) { ++ } else if (e->button == CONFIG_CLIENTMENU_BUTTON && m_channelChangeTime != 0) { + + flipChannel(False, True, False, 0); + #endif + } + +- } else if (e->button == Button2 && m_channelChangeTime == 0) { +- dConfig.scan(); ++ } else if (e->button == CONFIG_COMMANDMENU_BUTTON && m_channelChangeTime == 0) { ++ DynamicConfig::config.scan(); + CommandMenu menu(this, (XEvent *)e); + } + + } else if (c) { + +- if (e->button == Button2 && CONFIG_CHANNEL_SURF) { ++ if (e->button == CONFIG_COMMANDMENU_BUTTON && CONFIG_CHANNEL_SURF) { + #if CONFIG_USE_CHANNEL_MENU + ChannelMenu menu(this, (XEvent *)e); + #else + if (m_channelChangeTime == 0) flipChannel(True, False, False, 0); + else flipChannel(False, False, False, c); + #endif + return; +- } else if (e->button == Button1 && m_channelChangeTime != 0) { ++ } else if (e->button == CONFIG_CLIENTMENU_BUTTON && m_channelChangeTime != 0) { + // allow left-button to push down a channel --cc 19991001 + flipChannel(False, True, False, c); + return; + } + +@@ -230,11 +230,11 @@ + + if (ev->state & m_altModMask) { + + if (!m_altPressed) { + // oops! bug +- fprintf(stderr, "wmx: Alt key record in inconsistent state\n"); ++// fprintf(stderr, "wmx: Alt key record in inconsistent state\n"); + m_altPressed = True; + m_altStateRetained = False; + // fprintf(stderr, "state is %ld, mask is %ld\n", + // (long)ev->state, (long)m_altModMask); + } +@@ -252,15 +252,15 @@ + // when adding a key it must be added in both places + + switch (key) { + + case CONFIG_FLIP_DOWN_KEY: +- flipChannel(False, True, False, 0); ++ flipChannel(False, True, True, 0); + break; + + case CONFIG_FLIP_UP_KEY: +- flipChannel(False, False, False, 0); ++ flipChannel(False, False, True, 0); + break; + + case CONFIG_CIRCULATE_KEY: + circulate(False); + break; +@@ -463,19 +463,23 @@ + + Boolean wasTop = windowManager()->isTop(this); + + mapRaised(); + +- if (e->button == Button1) { ++ if (e->button == CONFIG_CLIENTMENU_BUTTON) { + if (m_border->hasWindow(e->window)) { +- + m_border->eventButton(e); ++ } else { ++ e->x += m_border->xIndent(); ++ e->y += m_border->yIndent(); ++ move(e); + } + } + +- if (CONFIG_RAISELOWER_ON_CLICK && wasTop && !doSomething) ++ if (CONFIG_RAISELOWER_ON_CLICK && wasTop && !m_doSomething) { + lower(); ++ } + + if (!isNormal() || isActive() || e->send_event) return; + activate(); + } + +@@ -560,11 +564,11 @@ + + XEvent event; + Boolean found; + struct timeval sleepval; + +- doSomething = False; ++ m_doSomething = False; + while (!done) { + + found = False; + + while (XCheckMaskEvent(display(), DragMask | ExposureMask, &event)) { +@@ -572,11 +576,11 @@ + if (event.type != MotionNotify) break; + } + + if (!found) { + sleepval.tv_sec = 0; +- sleepval.tv_usec = 50000; ++ sleepval.tv_usec = 1000; + select(0, 0, 0, 0, &sleepval); + continue; + } + + switch (event.type) { +@@ -591,17 +595,17 @@ + break; + + case ButtonPress: + // don't like this + XUngrabPointer(display(), event.xbutton.time); +- doSomething = False; ++ m_doSomething = False; + done = True; + break; + + case ButtonRelease: + +- if (!nobuttons(&event.xbutton)) doSomething = False; ++ if (!nobuttons(&event.xbutton)) m_doSomething = False; + + m_windowManager->releaseGrab(&event.xbutton); + done = True; + break; + +@@ -610,11 +614,11 @@ + int nx = event.xbutton.x - e->x; + int ny = event.xbutton.y - e->y; + + if (nx != x || ny != y) { + +- if (doSomething) { // so x,y have sensible values already ++ if (m_doSomething) { // so x,y have sensible values already + + // bumping! + + if (nx < x && nx <= 0 && nx > -CONFIG_BUMP_DISTANCE) nx = 0; + if (ny < y && ny <= 0 && ny > -CONFIG_BUMP_DISTANCE) ny = 0; +@@ -630,19 +634,19 @@ + x = nx; + y = ny; + + geometry.update(x, y); + m_border->moveTo(x + xi, y + yi); +- doSomething = True; ++ m_doSomething = True; + } + break; + } + } + + geometry.remove(); + +- if (doSomething) { ++ if (m_doSomething) { + m_x = x + xi; + m_y = y + yi; + } + + if (CONFIG_CLICK_TO_FOCUS) activate(); +@@ -710,11 +714,11 @@ + XEvent event; + Boolean found; + Boolean done = False; + struct timeval sleepval; + +- doSomething = False; ++ m_doSomething = False; + while (!done) { + + found = False; + + while (XCheckMaskEvent(display(), DragMask | ExposureMask, &event)) { +@@ -722,11 +726,11 @@ + if (event.type != MotionNotify) break; + } + + if (!found) { + sleepval.tv_sec = 0; +- sleepval.tv_usec = 50000; ++ sleepval.tv_usec = 10000; + select(0, 0, 0, 0, &sleepval); + continue; + } + + switch (event.type) { +@@ -766,38 +770,38 @@ + if (h == prevH && w == prevW) break; + m_border->configure(m_x, m_y, w, h, CWWidth | CWHeight, 0); + if (CONFIG_RESIZE_UPDATE) + XResizeWindow(display(), m_window, w, h); + geometry.update(dw, dh); +- doSomething = True; ++ m_doSomething = True; + + } else if (vertical) { + prevH = h; h = y - m_y; + fixResizeDimensions(w, h, dw, dh); + if (h == prevH) break; + m_border->configure(m_x, m_y, w, h, CWHeight, 0); + if (CONFIG_RESIZE_UPDATE) + XResizeWindow(display(), m_window, w, h); + geometry.update(dw, dh); +- doSomething = True; ++ m_doSomething = True; + + } else { + prevW = w; w = x - m_x; + fixResizeDimensions(w, h, dw, dh); + if (w == prevW) break; + m_border->configure(m_x, m_y, w, h, CWWidth, 0); + if (CONFIG_RESIZE_UPDATE) + XResizeWindow(display(), m_window, w, h); + geometry.update(dw, dh); +- doSomething = True; ++ m_doSomething = True; + } + + break; + } + } + +- if (doSomething) { ++ if (m_doSomething) { + + geometry.remove(); + + if (vertical && horizontal) { + m_w = x - m_x; +diff -NarU5 wmx-6pl1/Buttons.C.rej wmx-cvs-2006-06-02/Buttons.C.rej +--- wmx-6pl1/Buttons.C.rej 2001-04-24 04:58:31.000000000 -0400 ++++ wmx-cvs-2006-06-02/Buttons.C.rej 1969-12-31 19:00:00.000000000 -0500 +@@ -1,75 +0,0 @@ +-*************** +-*** 173,179 **** +- m_altStateRetained = False; +- } +- +-! #ifdef CONFIG_WANT_SUNKEYS +- #ifdef CONFIG_QUICKRAISE_KEY +- if (key == CONFIG_QUICKRAISE_KEY && c) { +- +---- 173,179 ---- +- m_altStateRetained = False; +- } +- +-! #if CONFIG_WANT_SUNKEYS +- #ifdef CONFIG_QUICKRAISE_KEY +- if (key == CONFIG_QUICKRAISE_KEY && c) { +- +-*************** +-*** 184,202 **** +- } +- +- } else +-! #endif CONFIG_QUICKRAISE_KEY +- #ifdef CONFIG_QUICKHIDE_KEY +- if (key == CONFIG_QUICKHIDE_KEY && c) { +- c->hide(); +- +- } else +-! #endif CONFIG_QUICKHIDE_KEY +- #ifdef CONFIG_QUICKCLOSE_KEY +- if (key == CONFIG_QUICKCLOSE_KEY && c) { +- c->kill(); +- +- } else +-! #endif CONFIG_QUICKCLOSE_KEY +- #ifdef CONFIG_QUICKHEIGHT_KEY +- if (key == CONFIG_QUICKHEIGHT_KEY && c) { +- +---- 184,202 ---- +- } +- +- } else +-! #endif // CONFIG_QUICKRAISE_KEY +- #ifdef CONFIG_QUICKHIDE_KEY +- if (key == CONFIG_QUICKHIDE_KEY && c) { +- c->hide(); +- +- } else +-! #endif // CONFIG_QUICKHIDE_KEY +- #ifdef CONFIG_QUICKCLOSE_KEY +- if (key == CONFIG_QUICKCLOSE_KEY && c) { +- c->kill(); +- +- } else +-! #endif // CONFIG_QUICKCLOSE_KEY +- #ifdef CONFIG_QUICKHEIGHT_KEY +- if (key == CONFIG_QUICKHEIGHT_KEY && c) { +- +-*************** +-*** 207,213 **** +- } +- +- } else +-! #endif //CONFIG_QUICKHEIGHT_KEY +- #if CONFIG_WANT_SUNPOWERKEY +- if (key == SunXK_PowerSwitch) { +- pid_t pid = fork(); +---- 207,213 ---- +- } +- +- } else +-! #endif // CONFIG_QUICKHEIGHT_KEY +- #if CONFIG_WANT_SUNPOWERKEY +- if (key == SunXK_PowerSwitch) { +- pid_t pid = fork(); +diff -NarU5 wmx-6pl1/Channel.C wmx-cvs-2006-06-02/Channel.C +--- wmx-6pl1/Channel.C 2001-04-24 04:58:31.000000000 -0400 ++++ wmx-cvs-2006-06-02/Channel.C 2003-08-17 09:56:59.000000000 -0400 +@@ -42,13 +42,14 @@ + XSetWindowAttributes wa; + wa.background_pixel = nearest.pixel; + wa.override_redirect = True; + + m_channelWindow[sc] = XCreateWindow +- (display(), mroot(sc), 0, 0, 1, 1, 0, CopyFromParent, CopyFromParent, ++ (display(), mroot(sc), ++ 0, 0, 1, 1, 0, CopyFromParent, CopyFromParent, + CopyFromParent, CWOverrideRedirect | CWBackPixel, &wa); +- } ++ } + } + + + int nextChannel; + +@@ -66,11 +67,11 @@ + XRectangle r; + Boolean first = True; + char number[7]; + sprintf(number, "%d", nextChannel); + +- for (i = 0; i < strlen(number); ++i) { ++ for (i = 0; i < (int)strlen(number); ++i) { + for (y = 0; y < 7; ++y) { + for (x = 0; x < 5; ++x) { + if (numerals[number[i]-'0'][y][x] != ' ') { + /* + r.x = i * 110 + x * 20; r.y = y * 20; +@@ -109,15 +110,15 @@ + + if (!statusOnly) { + + ClientList considering; + +- for (i = m_orderedClients.count()-1; i >= 0; --i) { ++ for (i = (int)m_orderedClients.count()-1; i >= 0; --i) { + considering.append(m_orderedClients.item(i)); + } + +- for (i = 0; i < considering.count(); ++i) { ++ for (i = 0; i < (int)considering.count(); ++i) { + if (considering.item(i) == push || considering.item(i)->isSticky() + #if CONFIG_USE_WINDOW_GROUPS + || (push && + push->hasWindow(considering.item(i)->groupParent())) + #endif +diff -NarU5 wmx-6pl1/Channel.C.orig wmx-cvs-2006-06-02/Channel.C.orig +--- wmx-6pl1/Channel.C.orig 2000-05-24 11:46:14.000000000 -0400 ++++ wmx-cvs-2006-06-02/Channel.C.orig 1969-12-31 19:00:00.000000000 -0500 +@@ -1,220 +0,0 @@ +- +-#include "Manager.h" +-#include "Client.h" +-#include +- +-static char *numerals[10][7] = { +- { " ### ", "# #", "# ##", "# # #", "## #", "# #", " ### " }, +- { " # ", " ## ", " # ", " # ", " # ", " # ", " ### " }, +- { " ### ", "# #", " #", " ## ", " # ", "# ", "#####" }, +- { "#####", " # ", " # ", " ### ", " #", " #", "#### " }, +- { " # ", " ## ", " # # ", "# # ", "#####", " # ", " # " }, +- { "#####", "# ", "#### ", " #", " #", " #", "#### " }, +- { " ## ", " # ", "# ", "#### ", "# #", "# #", " ### " }, +- { "#####", " #", " # ", " # ", " # ", " # ", " # " }, +- { " ### ", "# #", "# #", " ### ", "# #", "# #", " ### " }, +- { " ### ", "# #", "# #", " ####", " #", " # ", " ## " } +-}; +- +- +-void WindowManager::flipChannel(Boolean statusOnly, Boolean flipDown, +- Boolean quickFlip, Client *push) +-{ +- int x, y, i, sc; +- if (!CONFIG_CHANNEL_SURF) return; +- +- for(sc = 0; sc < screensTotal(); sc++) +- { +- if (!m_channelWindow[sc]) { +- +- XColor nearest, ideal; +- +- if (!XAllocNamedColor(display(), DefaultColormap(display(), sc), +- CONFIG_CHANNEL_NUMBER, &nearest, &ideal)) { +- +- if (!XAllocNamedColor(display(), DefaultColormap(display(), sc), +- "black", &nearest, &ideal)) { +- +- fatal("Couldn't allocate green or black"); +- } +- } +- +- XSetWindowAttributes wa; +- wa.background_pixel = nearest.pixel; +- wa.override_redirect = True; +- +- m_channelWindow[sc] = XCreateWindow +- (display(), mroot(sc), 0, 0, 1, 1, 0, CopyFromParent, CopyFromParent, +- CopyFromParent, CWOverrideRedirect | CWBackPixel, &wa); +- } +- } +- +- +- int nextChannel; +- +- if (statusOnly) nextChannel = m_currentChannel; +- else { +- if (!flipDown) { +- nextChannel = m_currentChannel + 1; +- if (nextChannel > m_channels) nextChannel = 1; +- } else { +- nextChannel = m_currentChannel - 1; +- if (nextChannel < 1) nextChannel = m_channels; +- } +- } +- +- XRectangle r; +- Boolean first = True; +- char number[7]; +- sprintf(number, "%d", nextChannel); +- +- for (i = 0; i < strlen(number); ++i) { +- for (y = 0; y < 7; ++y) { +- for (x = 0; x < 5; ++x) { +- if (numerals[number[i]-'0'][y][x] != ' ') { +-/* +- r.x = i * 110 + x * 20; r.y = y * 20; +- r.width = r.height = 20; +- */ +- r.x = 10 + (i * 6 + x) * CONFIG_CHANNEL_NUMBER_SIZE; +- r.y = y * CONFIG_CHANNEL_NUMBER_SIZE; +- r.width = r.height = CONFIG_CHANNEL_NUMBER_SIZE; +- for(sc = 0; sc < screensTotal(); sc++) +- { +- XShapeCombineRectangles +- (display(), m_channelWindow[sc], ShapeBounding, +- 0, 0, &r, 1, first ? ShapeSet : ShapeUnion, +- YXBanded); +- } +- first = False; +- } +- } +- } +- } +- +- for(sc = 0; sc < screensTotal(); sc++) +- { +-/* +- XMoveResizeWindow(display(), m_channelWindow[sc], +- DisplayWidth(display(), sc) - 30 - +- 110 * strlen(number), 30, 500, 160); +- */ +- +- XMoveResizeWindow(display(), m_channelWindow[sc], +- DisplayWidth(display(), sc) - 30 - +- (5 * CONFIG_CHANNEL_NUMBER_SIZE + 10) * +- strlen(number), 30, 500, 160); +- XMapRaised(display(), m_channelWindow[sc]); +- } +- +- if (!statusOnly) { +- +- ClientList considering; +- +- for (i = m_orderedClients.count()-1; i >= 0; --i) { +- considering.append(m_orderedClients.item(i)); +- } +- +- for (i = 0; i < considering.count(); ++i) { +- if (considering.item(i) == push || considering.item(i)->isSticky() +-#ifdef CONFIG_USE_WINDOW_GROUPS +- || (push && +- push->hasWindow(considering.item(i)->groupParent())) +-#endif +- ) { +- considering.item(i)->setChannel(nextChannel); +- } else { +- considering.item(i)->flipChannel(True, nextChannel); +- } +- } +- +- considering.remove_all(); +- } +- +- m_currentChannel = nextChannel; +- m_channelChangeTime = timestamp(True) + +- (quickFlip ? CONFIG_QUICK_FLIP_DELAY : CONFIG_FLIP_DELAY); +- +-#if CONFIG_GNOME_COMPLIANCE != False +- gnomeUpdateChannelList(); +-#endif +-} +- +- +-void WindowManager::instateChannel() +-{ +- int i; +- m_channelChangeTime = 0; +- for(i = 0; i < screensTotal(); i++) +- { +- XUnmapWindow(display(), m_channelWindow[i]); +- } +- +- ClientList considering; +- +- for (i = m_orderedClients.count()-1; i >= 0; --i) { +- considering.append(m_orderedClients.item(i)); +- } +- +- for (i = 0; i < considering.count(); ++i) { +- considering.item(i)->flipChannel(False, m_currentChannel); +- if (considering.item(i)->channel() == m_channels && +- !considering.item(i)->isSticky()) createNewChannel(); +- } +- +- if (m_activeClient && m_activeClient->channel() != channel()) { +- m_activeClient = 0; +- } +- +- checkChannel(m_channels-1); +-} +- +- +-void WindowManager::checkChannel(int ch) +-{ +- if (m_channels <= 2 || ch < m_channels - 1) return; +- +- for (int i = m_orderedClients.count()-1; i >= 0; --i) { +- if (m_orderedClients.item(i)->channel() == ch) return; +- } +- +- --m_channels; +- +-#if CONFIG_GNOME_COMPLIANCE != False +- gnomeUpdateChannelList(); +-#endif +- +- if (m_currentChannel > m_channels) m_currentChannel = m_channels; +- +- checkChannel(ch - 1); +-} +- +- +-void WindowManager::createNewChannel() +-{ +- ++m_channels; +-#if CONFIG_GNOME_COMPLIANCE != False +- gnomeUpdateChannelList(); +-#endif +- +-} +- +-void WindowManager::gotoChannel(int channel, Client *push) +-{ +- if (channel == m_currentChannel) { +- flipChannel(True, False, False, 0); +- return; +- } +- +- if (channel > 0 && channel <= m_channels) { +- +- while (m_currentChannel != channel) { +- if (m_channels < channel) { +- flipChannel(False, False, True, push); +- } else { +- flipChannel(False, True, True, push); +- } +- XSync(display(), False); +- } +- } +-} +diff -NarU5 wmx-6pl1/Client.C wmx-cvs-2006-06-02/Client.C +--- wmx-6pl1/Client.C 2000-05-12 03:40:20.000000000 -0400 ++++ wmx-cvs-2006-06-02/Client.C 2003-08-12 10:50:47.000000000 -0400 +@@ -73,11 +73,11 @@ + } + + + Client::~Client() + { +- // empty ++ delete m_border; + } + + + Boolean Client::hasWindow(Window w) + { +@@ -107,13 +107,10 @@ + windowManager()->skipInRevert(this, m_revert); + + if (isHidden()) unhide(False); + windowManager()->removeFromOrderedList(this); + +- delete m_border; +- m_window = None; +- + if (isActive()) { + if (CONFIG_CLICK_TO_FOCUS) { + if (m_revert) { + windowManager()->setActiveClient(m_revert); + m_revert->activate(); +@@ -121,10 +118,12 @@ + } else { + windowManager()->setActiveClient(0); + } + } + ++ m_window = None; ++ + if (m_colormapWinCount > 0) { + XFree((char *)m_colormapWindows); + free((char *)m_windowColormaps); // not allocated through X + } + +@@ -212,10 +211,15 @@ + }; + + XGrabKey(display(), XKeysymToKeycode(display(), CONFIG_ALT_KEY), + 0, m_window, True, GrabModeAsync, GrabModeAsync); + ++ // for dragging windows from anywhere with Alt pressed ++ XGrabButton(display(), Button1, ++ m_windowManager->altModMask(), m_window, False, 0, ++ GrabModeAsync, GrabModeSync, None, None); ++ + for (i = 0; i < sizeof(keys)/sizeof(keys[0]); ++i) { + keycode = XKeysymToKeycode(display(), keys[i]); + if (keycode) { + XGrabKey(display(), keycode, + m_windowManager->altModMask()|LockMask|Mod2Mask, +@@ -513,15 +517,17 @@ + if (isActive()) { + decorate(True); + if (CONFIG_AUTO_RAISE || CONFIG_RAISE_ON_FOCUS) mapRaised(); + return; + } +- ++/*!!! + if (activeClient()) { + activeClient()->deactivate(); + // & some other-screen business + } ++*/ ++ windowManager()->setActiveClient(this); // deactivates any other + + XUngrabButton(display(), AnyButton, AnyModifier, parent()); + + XSetInputFocus(display(), m_window, RevertToPointerRoot, + windowManager()->timestamp(False)); +@@ -536,11 +542,11 @@ + windowManager()->skipInRevert(this, m_revert); + + m_revert = activeClient(); + while (m_revert && !m_revert->isNormal()) m_revert = m_revert->revertTo(); + +- windowManager()->setActiveClient(this); ++//!!! windowManager()->setActiveClient(this); + decorate(True); + + installColormap(); // new! + } + +@@ -1213,10 +1219,13 @@ + if (CONFIG_MAD_FEEDBACK) { + removeFeedback(isNormal()); // mostly it won't be there anyway, but... + } + + if (!isNormal()) return; ++ if (activeClient() == this) { ++ windowManager()->setActiveClient(0); ++ } + m_unmappedForChannel = True; + XUnmapWindow(display(), m_window); + withdraw(False); + return; + +diff -NarU5 wmx-6pl1/Client.h wmx-cvs-2006-06-02/Client.h +--- wmx-6pl1/Client.h 2001-04-24 04:58:31.000000000 -0400 ++++ wmx-cvs-2006-06-02/Client.h 2003-08-12 10:49:35.000000000 -0400 +@@ -136,11 +136,11 @@ + int m_w; + int m_h; + int m_bw; + Window m_wroot; + int m_screen; +- Boolean doSomething; // Become true if move() or resize() made ++ Boolean m_doSomething; // Become true if move() or resize() made + // effect to this client. + + int m_channel; + Boolean m_unmappedForChannel; + Boolean m_sticky; +diff -NarU5 wmx-6pl1/Config.C wmx-cvs-2006-06-02/Config.C +--- wmx-6pl1/Config.C 2000-03-02 08:56:35.000000000 -0500 ++++ wmx-cvs-2006-06-02/Config.C 2003-08-14 09:07:12.000000000 -0400 +@@ -5,11 +5,14 @@ + #include + #include + #include + #include + +-DynamicConfig DynamicConfig::dynamicConfig; ++// 32 is enough to fit even "light goldenrod yellow" comfortably ++#define COLOR_LEN 32 ++ ++DynamicConfig DynamicConfig::config; + + struct DynamicConfigImpl + { + char options[1000]; // Old options-string + char path[1000]; // Path to Options-Link +@@ -19,10 +22,13 @@ + char menu; // 0 = no unmapped, 1 = everything + char feedback; // 0 = no , 1 = yes + int feeddelay; + char disable; // 0 = New Window option, 1 = no New + char rightBt; // 0 = disable, 1 = circulate, 2 = lower, 4 = height ++ char tabfg[COLOR_LEN]; // black ++ char tabbg[COLOR_LEN]; // gray80 ++ char framebg[COLOR_LEN]; // gray95 + }; + + DynamicConfig::DynamicConfig() : m_impl(new DynamicConfigImpl) + { + strcpy(m_impl->options, ""); +@@ -55,10 +61,13 @@ + m_impl->menu = 1; // 0 = no unmapped, 1 = everything + m_impl->feedback = 1; // 0 = no , 1 = yes + m_impl->feeddelay = 300; + m_impl->disable = 0; // 0 = allow New window, 1 = don't + m_impl->rightBt = 1; // 0 = disable, 1 = circulate, 2 = lower ++ strcpy(m_impl->tabfg, "black"); ++ strcpy(m_impl->tabbg, "gray80"); ++ strcpy(m_impl->framebg, "gray95"); + + scan(1); + } + + DynamicConfig::~DynamicConfig() +@@ -76,10 +85,13 @@ + int DynamicConfig::feedbackDelay() { return m_impl->feeddelay; } + char DynamicConfig::disableNew() { return m_impl->disable & 1; } + char DynamicConfig::rightCirculate() { return m_impl->rightBt & 1; } + char DynamicConfig::rightLower() { return m_impl->rightBt & 2; } + char DynamicConfig::rightToggleHeight() { return m_impl->rightBt & 4; } ++char *DynamicConfig::tabForeground() { return m_impl->tabfg; } ++char *DynamicConfig::tabBackground() { return m_impl->tabbg; } ++char *DynamicConfig::frameBackground() { return m_impl->framebg; } + + void DynamicConfig::scan(char startup) + { + char temp[1000]; + memset(temp, 0, 1000); +@@ -137,16 +149,20 @@ + if (OPTION("off")) m_impl->rightBt = 0; + else if (OPTION("circulate")) m_impl->rightBt = 1; + else if (OPTION("lower")) m_impl->rightBt = 2; + else if (OPTION("toggleheight")) m_impl->rightBt = 4; + ++ if (OPTION("tabfg:")) strncpy(m_impl->tabfg, s, COLOR_LEN); ++ if (OPTION("tabbg:")) strncpy(m_impl->tabbg, s, COLOR_LEN); ++ if (OPTION("framebg:")) strncpy(m_impl->framebg, s, COLOR_LEN); ++ + if (*s != '\0') { + fprintf(stderr, "\nwmx: Dynamic configuration error: " + "`%s' @ position %d", s, string - s); + } + +- } while (s = strtok(NULL, "/")); ++ } while ((s = strtok(NULL, "/"))); + + fprintf(stderr, "\n"); + + #undef OPTION + } +diff -NarU5 wmx-6pl1/config.cache wmx-cvs-2006-06-02/config.cache +--- wmx-6pl1/config.cache 2001-04-23 08:09:21.000000000 -0400 ++++ wmx-cvs-2006-06-02/config.cache 1969-12-31 19:00:00.000000000 -0500 +@@ -1,26 +0,0 @@ +-# This file is a shell script that caches the results of configure +-# tests run on this system so they can be shared between configure +-# scripts and configure runs. It is not useful on other systems. +-# If it contains results you don't want to keep, you may remove or edit it. +-# +-# By default, configure uses ./config.cache as the cache file, +-# creating it if it does not exist already. You can give configure +-# the --cache-file=FILE option to use a different cache file; that is +-# what configure does when it calls configure scripts in +-# subdirectories, so they share the cache. +-# Giving --cache-file=/dev/null disables caching, for debugging configure. +-# config.status only pays attention to the cache file if you give it the +-# --recheck option to rerun configure. +-# +-ac_cv_have_x=${ac_cv_have_x='have_x=yes ac_x_includes=/usr/X11R6/include ac_x_libraries=/usr/X11R6/lib'} +-ac_cv_lib_X11_XOpenDisplay=${ac_cv_lib_X11_XOpenDisplay='yes'} +-ac_cv_lib_Xext_XShapeQueryExtension=${ac_cv_lib_Xext_XShapeQueryExtension='yes'} +-ac_cv_lib_Xpm_XpmCreatePixmapFromData=${ac_cv_lib_Xpm_XpmCreatePixmapFromData='yes'} +-ac_cv_path_TWM=${ac_cv_path_TWM='/usr/X11R6/bin/twm'} +-ac_cv_prog_CXX=${ac_cv_prog_CXX='c++'} +-ac_cv_prog_CXXCPP=${ac_cv_prog_CXXCPP='c++ -E'} +-ac_cv_prog_cxx_cross=${ac_cv_prog_cxx_cross='no'} +-ac_cv_prog_cxx_g=${ac_cv_prog_cxx_g='yes'} +-ac_cv_prog_cxx_works=${ac_cv_prog_cxx_works='yes'} +-ac_cv_prog_gxx=${ac_cv_prog_gxx='yes'} +-ac_cv_prog_make_make_set=${ac_cv_prog_make_make_set='yes'} +diff -NarU5 wmx-6pl1/Config.h wmx-cvs-2006-06-02/Config.h +--- wmx-6pl1/Config.h 2001-04-23 11:48:31.000000000 -0400 ++++ wmx-cvs-2006-06-02/Config.h 2003-08-14 09:07:12.000000000 -0400 +@@ -49,41 +49,42 @@ + int feedbackDelay(); + char disableNew(); + char rightCirculate(); + char rightLower(); + char rightToggleHeight(); ++ char *tabForeground(); ++ char *tabBackground(); ++ char *frameBackground(); + +- static DynamicConfig dynamicConfig; ++ static DynamicConfig config; + + private: + DynamicConfigImpl *m_impl; + void update(char *); + }; + +-static DynamicConfig &dConfig = DynamicConfig::dynamicConfig; +- + + // ================================================= + // Section I. Straightforward operational parameters + // ================================================= + + // List visible as well as hidden clients on the root menu? (Visible + // ones will be towards the bottom of the menu, flush-right.) +-#define CONFIG_EVERYTHING_ON_ROOT_MENU (dConfig.fullMenu()) ++#define CONFIG_EVERYTHING_ON_ROOT_MENU (DynamicConfig::config.fullMenu()) + + // Spawn a temporary new shell between the wm and each new process? + #define CONFIG_EXEC_USING_SHELL False + + // What to run to get a new window (from the "New" menu option) + #define CONFIG_NEW_WINDOW_LABEL "New" +-//#define CONFIG_NEW_WINDOW_COMMAND "xterm" +-#define CONFIG_NEW_WINDOW_COMMAND "/home/chris/.wmx/terminal" ++#define CONFIG_NEW_WINDOW_COMMAND "xterm" ++//#define CONFIG_NEW_WINDOW_COMMAND "/home/ccannam/.wmx/terminal" + #define CONFIG_NEW_WINDOW_COMMAND_OPTIONS 0 + // or, for example, + //#define CONFIG_NEW_WINDOW_COMMAND_OPTIONS "-ls","-sb","-sl","1024",0 + // alternatively, +-#define CONFIG_DISABLE_NEW_WINDOW_COMMAND (dConfig.disableNew()) ++#define CONFIG_DISABLE_NEW_WINDOW_COMMAND (DynamicConfig::config.disableNew()) + + // Area where [exit wmx] is added (0 -> everywhere -# -> px from other side) + #define CONFIG_EXIT_CLICK_SIZE_X 0 + #define CONFIG_EXIT_CLICK_SIZE_Y -3 + +@@ -101,24 +102,24 @@ + // You can't have CLICK_TO_FOCUS without RAISE_ON_FOCUS, but the other + // combinations should be okay. If you set AUTO_RAISE you must leave + // the other two False; you'll then get focus-follows, auto-raise, and + // a delay on auto-raise as configured in the DELAY settings below. + +-#define CONFIG_CLICK_TO_FOCUS (dConfig.clickFocus()) +-#define CONFIG_RAISE_ON_FOCUS (dConfig.raiseFocus()) +-#define CONFIG_AUTO_RAISE (dConfig.autoRaiseFocus()) ++#define CONFIG_CLICK_TO_FOCUS (DynamicConfig::config.clickFocus()) ++#define CONFIG_RAISE_ON_FOCUS (DynamicConfig::config.raiseFocus()) ++#define CONFIG_AUTO_RAISE (DynamicConfig::config.autoRaiseFocus()) + + // Delays when using AUTO_RAISE focus method + // + // In theory these only apply when using AUTO_RAISE, not when just + // using RAISE_ON_FOCUS without CLICK_TO_FOCUS. First of these is the + // usual delay before raising; second is the delay after the pointer + // has stopped moving (only when over simple X windows such as xvt). + +-#define CONFIG_AUTO_RAISE_DELAY (dConfig.raiseDelay()) ++#define CONFIG_AUTO_RAISE_DELAY (DynamicConfig::config.raiseDelay()) + #define CONFIG_POINTER_STOPPED_DELAY 80 +-#define CONFIG_DESTROY_WINDOW_DELAY 1000 ++#define CONFIG_DESTROY_WINDOW_DELAY 600 + + // Number of pixels off the screen you have to push a window + // before the manager notices the window is off-screen (the higher + // the value, the easier it is to place windows at the screen edges) + +@@ -171,17 +172,17 @@ + // ======================== + // Section II. Key bindings + // ======================== + + // Allow keyboard control? +-#define CONFIG_USE_KEYBOARD (dConfig.useKeyboard()) ++#define CONFIG_USE_KEYBOARD (DynamicConfig::config.useKeyboard()) + + // This is the key for wm controls: e.g. Alt/Left and Alt/Right to + // flip channels, and Alt/Tab to switch windows. (On my 105-key + // PC keyboard, Meta_L corresponds to the left Windows key.) + +-#define CONFIG_ALT_KEY XK_Meta_L ++#define CONFIG_ALT_KEY XK_Super_L + + // And these define the rest of the keyboard controls, when the above + // modifier is pressed; they're keysyms as defined in + // and + +@@ -232,10 +233,21 @@ + #define CONFIG_QUICKRAISE_ALSO_LOWERS True + #define CONFIG_SUNPOWER_EXEC "/usr/openwin/bin/sys-suspend" + #define CONFIG_SUNPOWER_OPTIONS "-x","-h",0 + #define CONFIG_SUNPOWER_SHIFTOPTIONS "-x","-n",0 + ++// Mouse Configuration ++// Use this section to remap your mouse button actions. ++// Button1 = LMB, Button2 = MMB, Button3 = RMB ++// Button4 = WheelUp, Button5 = WheelDown ++ ++#define CONFIG_CLIENTMENU_BUTTON Button1 ++#define CONFIG_COMMANDMENU_BUTTON Button2 ++#define CONFIG_CIRCULATE_BUTTON Button3 ++#define CONFIG_PREVCHANNEL_BUTTON Button5 ++#define CONFIG_NEXTCHANNEL_BUTTON Button4 ++ + + // ============================== + // Section III. Colours and fonts + // ============================== + +@@ -261,14 +273,12 @@ + #if I18N + #define CONFIG_NICE_FONT "-*-lucida-bold-r-*-*-14-*-75-75-*-*-*-*,-*-*-medium-r-*-*-14-*-75-75-*-*-*-*" + #define CONFIG_NICE_MENU_FONT "-*-lucida-medium-r-*-*-14-*-75-75-*-*-*-*,-*-*-medium-r-*-*-14-*-75-75-*-*-*-*" + #define CONFIG_NASTY_FONT "fixed,-*-*-*-*-*-*-14-*-75-75-*-*-*-*" + #else +-//#define CONFIG_NICE_FONT "-*-lucida-bold-r-*-*-14-*-75-75-*-*-*-*" +-//#define CONFIG_NICE_MENU_FONT "-*-lucida-medium-r-*-*-14-*-75-75-*-*-*-*" +-#define CONFIG_NICE_FONT "-*-verdana-medium-r-*-*-12-*-*-*-*-*-*-*" +-#define CONFIG_NICE_MENU_FONT "-*-verdana-medium-r-*-*-12-*-*-*-*-*-*-*" ++#define CONFIG_NICE_FONT "-*-lucida-bold-r-*-*-14-*-75-75-*-*-*-*" ++#define CONFIG_NICE_MENU_FONT "-*-lucida-medium-r-*-*-14-*-75-75-*-*-*-*" + #define CONFIG_NASTY_FONT "fixed" + #endif + + // If USE_PLAIN_X_CURSORS is True, wmx will use cursors from the + // standard X cursor font; otherwise it will install its own. You may +@@ -280,19 +290,19 @@ + + // Colours for window decorations. The BORDERS one is for the + // one-pixel border around the edge of each piece of decoration, not + // for the whole decoration + +-#define CONFIG_TAB_FOREGROUND "black" +-#define CONFIG_TAB_BACKGROUND "gray80" +-#define CONFIG_FRAME_BACKGROUND "gray95" +-#define CONFIG_BUTTON_BACKGROUND "gray95" ++#define CONFIG_TAB_FOREGROUND (DynamicConfig::config.tabForeground()) ++#define CONFIG_TAB_BACKGROUND (DynamicConfig::config.tabBackground()) ++#define CONFIG_FRAME_BACKGROUND (DynamicConfig::config.frameBackground()) ++#define CONFIG_BUTTON_BACKGROUND (DynamicConfig::config.frameBackground()) + #define CONFIG_BORDERS "black" + #define CONFIG_CHANNEL_NUMBER "green" + +-#define CONFIG_MENU_FOREGROUND "black" +-#define CONFIG_MENU_BACKGROUND "gray80" ++#define CONFIG_MENU_FOREGROUND (DynamicConfig::config.tabForeground()) ++#define CONFIG_MENU_BACKGROUND (DynamicConfig::config.tabBackground()) + #define CONFIG_MENU_BORDERS "black" + + // Pixel width for the bit of frame to the left of the window and the + // sum of the two bits at the top + +@@ -339,12 +349,12 @@ + // post the entire window contents instead; if it's negative, the + // contents will never be posted. Experiment with these -- if your + // machine is fast and you're really hyper, you might even like a + // delay of 0ms. + +-#define CONFIG_MAD_FEEDBACK (dConfig.useFeedback()) +-#define CONFIG_FEEDBACK_DELAY (dConfig.feedbackDelay()) ++#define CONFIG_MAD_FEEDBACK (DynamicConfig::config.useFeedback()) ++#define CONFIG_FEEDBACK_DELAY (DynamicConfig::config.feedbackDelay()) + + // Groups are fun. you can bind a bunch of windows to a number key + // and when you press CONFIG_ALT_KEY_MASK and the number key + // all the windows of that group are raised. + +diff -NarU5 wmx-6pl1/config.log wmx-cvs-2006-06-02/config.log +--- wmx-6pl1/config.log 2001-04-24 04:58:56.000000000 -0400 ++++ wmx-cvs-2006-06-02/config.log 1969-12-31 19:00:00.000000000 -0500 +@@ -1,17 +0,0 @@ +-This file contains any messages produced by compilers while +-running configure, to aid debugging if configure makes a mistake. +- +-configure:529: checking whether make sets ${MAKE} +-configure:560: checking for c++ +-configure:592: checking whether the C++ compiler (c++ ) works +-configure:608: c++ -o conftest conftest.C 1>&5 +-configure:634: checking whether the C++ compiler (c++ ) is a cross-compiler +-configure:639: checking whether we are using GNU C++ +-configure:667: checking whether c++ accepts -g +-configure:707: checking how to run the C++ preprocessor +-configure:754: checking for X +-configure:997: checking for XOpenDisplay in -lX11 +-configure:1048: checking for XShapeQueryExtension in -lXext +-configure:1099: checking for XpmCreatePixmapFromData in -lXpm +-configure:1154: checking for twm +-configure:1193: checking whether you're still watching +diff -NarU5 wmx-6pl1/config.status wmx-cvs-2006-06-02/config.status +--- wmx-6pl1/config.status 2001-04-24 04:58:56.000000000 -0400 ++++ wmx-cvs-2006-06-02/config.status 1969-12-31 19:00:00.000000000 -0500 +@@ -1,153 +0,0 @@ +-#! /bin/sh +-# Generated automatically by configure. +-# Run this file to recreate the current configuration. +-# This directory was configured as follows, +-# on host amanita: +-# +-# ./configure +-# +-# Compiler output produced by configure, useful for debugging +-# configure, is in ./config.log if it exists. +- +-ac_cs_usage="Usage: ./config.status [--recheck] [--version] [--help]" +-for ac_option +-do +- case "$ac_option" in +- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) +- echo "running ${CONFIG_SHELL-/bin/sh} ./configure --no-create --no-recursion" +- exec ${CONFIG_SHELL-/bin/sh} ./configure --no-create --no-recursion ;; +- -version | --version | --versio | --versi | --vers | --ver | --ve | --v) +- echo "./config.status generated by autoconf version 2.13" +- exit 0 ;; +- -help | --help | --hel | --he | --h) +- echo "$ac_cs_usage"; exit 0 ;; +- *) echo "$ac_cs_usage"; exit 1 ;; +- esac +-done +- +-ac_given_srcdir=. +- +-trap 'rm -fr Makefile conftest*; exit 1' 1 2 15 +- +-# Protect against being on the right side of a sed subst in config.status. +-sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\&%]/\\&/g; +- s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF +-/^[ ]*VPATH[ ]*=[^:]*$/d +- +-s%@SHELL@%/bin/sh%g +-s%@CFLAGS@%%g +-s%@CPPFLAGS@%%g +-s%@CXXFLAGS@%-g -O2 -I/usr/X11R6/include%g +-s%@FFLAGS@%%g +-s%@DEFS@% -DHAVE_LIBX11=1 -DHAVE_LIBXEXT=1 -DHAVE_LIBXPM=1 %g +-s%@LDFLAGS@% -L/usr/X11R6/lib%g +-s%@LIBS@%-lXpm -lXext -lX11 %g +-s%@exec_prefix@%${prefix}%g +-s%@prefix@%/usr/X11R6%g +-s%@program_transform_name@%s,x,x,%g +-s%@bindir@%${exec_prefix}/bin%g +-s%@sbindir@%${exec_prefix}/sbin%g +-s%@libexecdir@%${exec_prefix}/libexec%g +-s%@datadir@%${prefix}/share%g +-s%@sysconfdir@%${prefix}/etc%g +-s%@sharedstatedir@%${prefix}/com%g +-s%@localstatedir@%${prefix}/var%g +-s%@libdir@%${exec_prefix}/lib%g +-s%@includedir@%${prefix}/include%g +-s%@oldincludedir@%/usr/include%g +-s%@infodir@%${prefix}/info%g +-s%@mandir@%${prefix}/man%g +-s%@SET_MAKE@%%g +-s%@CXX@%c++%g +-s%@CXXCPP@%c++ -E%g +-s%@TWM@%/usr/X11R6/bin/twm%g +- +-CEOF +- +-# Split the substitutions into bite-sized pieces for seds with +-# small command number limits, like on Digital OSF/1 and HP-UX. +-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +-ac_file=1 # Number of current file. +-ac_beg=1 # First line for current file. +-ac_end=$ac_max_sed_cmds # Line after last line for current file. +-ac_more_lines=: +-ac_sed_cmds="" +-while $ac_more_lines; do +- if test $ac_beg -gt 1; then +- sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file +- else +- sed "${ac_end}q" conftest.subs > conftest.s$ac_file +- fi +- if test ! -s conftest.s$ac_file; then +- ac_more_lines=false +- rm -f conftest.s$ac_file +- else +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds="sed -f conftest.s$ac_file" +- else +- ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" +- fi +- ac_file=`expr $ac_file + 1` +- ac_beg=$ac_end +- ac_end=`expr $ac_end + $ac_max_sed_cmds` +- fi +-done +-if test -z "$ac_sed_cmds"; then +- ac_sed_cmds=cat +-fi +- +-CONFIG_FILES=${CONFIG_FILES-"Makefile"} +-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". +- case "$ac_file" in +- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` +- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; +- *) ac_file_in="${ac_file}.in" ;; +- esac +- +- # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. +- +- # Remove last slash and all that follows it. Not all systems have dirname. +- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` +- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then +- # The file is in a subdirectory. +- test ! -d "$ac_dir" && mkdir "$ac_dir" +- ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" +- # A "../" for each directory in $ac_dir_suffix. +- ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` +- else +- ac_dir_suffix= ac_dots= +- fi +- +- case "$ac_given_srcdir" in +- .) srcdir=. +- if test -z "$ac_dots"; then top_srcdir=. +- else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; +- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; +- *) # Relative path. +- srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" +- top_srcdir="$ac_dots$ac_given_srcdir" ;; +- esac +- +- +- echo creating "$ac_file" +- rm -f "$ac_file" +- configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." +- case "$ac_file" in +- *Makefile*) ac_comsub="1i\\ +-# $configure_input" ;; +- *) ac_comsub= ;; +- esac +- +- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` +- sed -e "$ac_comsub +-s%@configure_input@%$configure_input%g +-s%@srcdir@%$srcdir%g +-s%@top_srcdir@%$top_srcdir%g +-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +-fi; done +-rm -f conftest.s* +- +- +- +-exit 0 +diff -NarU5 wmx-6pl1/CVS/Entries wmx-cvs-2006-06-02/CVS/Entries +--- wmx-6pl1/CVS/Entries 1969-12-31 19:00:00.000000000 -0500 ++++ wmx-cvs-2006-06-02/CVS/Entries 2006-06-02 10:50:25.000000000 -0400 +@@ -0,0 +1,29 @@ ++/ANNOYING-BUGS/1.1/Tue Aug 12 13:24:10 2003// ++/Border.C/1.9/Thu Aug 14 12:54:22 2003// ++/Border.h/1.4/Tue Aug 12 13:11:19 2003// ++/Buttons.C/1.14/Thu Aug 14 13:07:12 2003// ++/Channel.C/1.11/Sun Aug 17 13:56:59 2003// ++/Client.C/1.11/Tue Aug 12 14:50:47 2003// ++/Client.h/1.9/Tue Aug 12 14:49:35 2003// ++/Config.C/1.4/Thu Aug 14 13:07:12 2003// ++/Config.h/1.15/Thu Aug 14 13:07:12 2003// ++/Cursors.h/1.1/Tue Aug 12 12:55:17 2003// ++/Events.C/1.9/Thu Aug 14 13:07:12 2003// ++/General.h/1.4/Tue Aug 12 13:11:19 2003// ++/Main.C/1.2/Tue Aug 12 13:07:39 2003// ++/Makefile.in/1.1/Tue Aug 12 13:11:19 2003// ++/Manager.C/1.13/Thu Aug 14 13:07:12 2003// ++/Manager.h/1.13/Tue Aug 12 14:50:47 2003// ++/Menu.C/1.11/Thu Aug 14 13:07:12 2003// ++/Menu.h/1.7/Tue Aug 12 13:16:28 2003// ++/README/1.8/Tue Aug 12 13:21:33 2003// ++/README.contrib/1.1/Tue Aug 12 13:07:39 2003// ++/Rotated.C/1.4/Tue Aug 12 13:16:28 2003// ++/Rotated.h/1.4/Tue Aug 12 13:16:28 2003// ++/Session.C/1.1/Tue Aug 12 13:07:39 2003// ++/UPDATES/1.3/Tue Aug 12 14:49:35 2003// ++/background.xpm/1.2/Tue Aug 12 13:17:29 2003// ++/configure/1.1/Tue Aug 12 13:11:19 2003// ++/configure.in/1.1/Tue Aug 12 13:11:19 2003// ++/listmacro.h/1.1/Tue Aug 12 13:07:39 2003// ++D +diff -NarU5 wmx-6pl1/CVS/Repository wmx-cvs-2006-06-02/CVS/Repository +--- wmx-6pl1/CVS/Repository 1969-12-31 19:00:00.000000000 -0500 ++++ wmx-cvs-2006-06-02/CVS/Repository 2006-06-02 10:50:25.000000000 -0400 +@@ -0,0 +1 @@ ++wmx +diff -NarU5 wmx-6pl1/CVS/Root wmx-cvs-2006-06-02/CVS/Root +--- wmx-6pl1/CVS/Root 1969-12-31 19:00:00.000000000 -0500 ++++ wmx-cvs-2006-06-02/CVS/Root 2006-06-02 10:50:25.000000000 -0400 +@@ -0,0 +1 @@ ++:pserver:anonymous@wm2.cvs.sourceforge.net:/cvsroot/wm2 +diff -NarU5 wmx-6pl1/Events.C wmx-cvs-2006-06-02/Events.C +--- wmx-6pl1/Events.C 2001-08-31 04:02:49.000000000 -0400 ++++ wmx-cvs-2006-06-02/Events.C 2003-08-14 09:07:12.000000000 -0400 +@@ -244,11 +244,11 @@ + + void WindowManager::checkDelaysForFocus() + { + if (!CONFIG_AUTO_RAISE) return; + +- int t = timestamp(True); ++ Time t = timestamp(True); + + if (m_focusPointerMoved) { // only raise when pointer stops + + if (t < m_focusTimestamp || + t - m_focusTimestamp > CONFIG_POINTER_STOPPED_DELAY) { +@@ -262,11 +262,11 @@ + } else m_focusPointerNowStill = True; // until proven false + } + } else { + + if (t < m_focusTimestamp || +- t - m_focusTimestamp > CONFIG_AUTO_RAISE_DELAY) { ++ t - m_focusTimestamp > (Time)CONFIG_AUTO_RAISE_DELAY) { + + m_focusCandidate->focusIfAppropriate(True); + + // if (m_focusCandidate->isNormal()) m_focusCandidate->mapRaised(); + // stopConsideringFocus(); +diff -NarU5 wmx-6pl1/Makefile wmx-cvs-2006-06-02/Makefile +--- wmx-6pl1/Makefile 2001-04-24 04:58:56.000000000 -0400 ++++ wmx-cvs-2006-06-02/Makefile 1969-12-31 19:00:00.000000000 -0500 +@@ -1,69 +0,0 @@ +-# Generated automatically from Makefile.in by configure. +- +-CCC=c++ +-prefix=/usr/X11R6 +-exec_prefix=${prefix} +- +-# If you're not using background pixmaps, remove -lXpm from the LIBS. +-# If your X libraries are somewhere other than /usr/X11/lib, give their +-# location here. +-#LIBS = -L/usr/X11/lib -lXpm -lXext -lX11 -lXmu -lSM -lICE -lm +-LIBS=-lXpm -lXext -lX11 +-LDFLAGS= -L/usr/X11R6/lib +- +- +-# If your X includes are not in /usr/include/X11, add their location +-# as a -I option here (excluding the X11 bit). If you're using I18N +-# and Xlocale, please add -DX_LOCALE. +-#CFLAGS = -g -O2 -I/usr/include -I/usr/openwin/include +-CXXFLAGS=-g -O2 -I/usr/X11R6/include +- +-OBJECTS = Border.o Buttons.o Channel.o Client.o Config.o Events.o Main.o Manager.o Menu.o Rotated.o Session.o +- +-.C.o: +- $(CCC) -c $(CXXFLAGS) $< +- +-all: wmx +- +-wmx: $(OBJECTS) +- test -f wmx && mv -f wmx wmx.old || true +- $(CCC) -o wmx $(OBJECTS) $(LDFLAGS) $(LIBS) +- +-depend: +- -awk '{print;} /^# DO NOT DELETE/{exit}' Makefile>Makefile.dep +- test -s Makefile.dep +- mv Makefile.dep Makefile;g++ -MM $(CXXFLAGS) *.C>>Makefile +- +-clean: +- rm -f *.o core +- +-distclean: clean +- rm -f wmx wmx.old *~ *.bak *.org *.orig config.* Makefile +- +-install: +- -mv -f ${exec_prefix}/bin/wmx ${exec_prefix}/bin/wmx.old +- cp wmx ${exec_prefix}/bin/wmx +- -chmod 0755 ${exec_prefix}/bin/wmx +- -chown root:wheel ${exec_prefix}/bin/wmx +- -rm -f ${exec_prefix}/bin/wmx.old +- +-# DO NOT DELETE -- make depend depends on it +-Border.o: Border.C Border.h General.h Config.h Rotated.h Client.h \ +- Manager.h listmacro.h background.xpm +-Buttons.o: Buttons.C Manager.h General.h Config.h listmacro.h Client.h \ +- Border.h Rotated.h Menu.h +-Channel.o: Channel.C Manager.h General.h Config.h listmacro.h Client.h \ +- Border.h Rotated.h +-Client.o: Client.C Manager.h General.h Config.h listmacro.h Client.h \ +- Border.h Rotated.h +-Config.o: Config.C Config.h +-Events.o: Events.C Manager.h General.h Config.h listmacro.h Client.h \ +- Border.h Rotated.h +-Main.o: Main.C Manager.h General.h Config.h listmacro.h Client.h \ +- Border.h Rotated.h +-Manager.o: Manager.C Manager.h General.h Config.h listmacro.h Menu.h \ +- Client.h Border.h Rotated.h Cursors.h +-Menu.o: Menu.C Menu.h General.h Config.h Manager.h listmacro.h \ +- Client.h Border.h Rotated.h +-Rotated.o: Rotated.C Config.h Rotated.h +-Session.o: Session.C Manager.h General.h Config.h listmacro.h +diff -NarU5 wmx-6pl1/Manager.C wmx-cvs-2006-06-02/Manager.C +--- wmx-6pl1/Manager.C 2001-04-23 05:10:42.000000000 -0400 ++++ wmx-cvs-2006-06-02/Manager.C 2003-08-14 09:07:12.000000000 -0400 +@@ -53,18 +53,19 @@ + m_altModMask(0) // later + { + char *home = getenv("HOME"); + char *wmxdir = getenv("WMXDIR"); + +- fprintf(stderr, "\nwmx: Copyright (c) 1996-2001 Chris Cannam." +- " Sixth release, April 2001\n" ++ fprintf(stderr, "\nwmx: Copyright (c) 1996-2003 Chris Cannam." ++ " Not a release\n" + " Parts derived from 9wm Copyright (c) 1994-96 David Hogan\n" + " Command menu code Copyright (c) 1997 Jeremy Fitzhardinge\n" + " Japanize code Copyright (c) 1998 Kazushi (Jam) Marukawa\n" + " Original keyboard-menu code Copyright (c) 1998 Nakayama Shintaro\n" + " Dynamic configuration code Copyright (c) 1998 Stefan `Sec' Zehl\n" + " Multihead display code Copyright (c) 2000 Sven Oliver `SvOlli' Moll\n" ++ " See source distribution for other patch contributors\n" + " %s\n Copying and redistribution encouraged. " + "No warranty.\n\n", XV_COPYRIGHT); + + int i; + #if CONFIG_USE_SESSION_MANAGER != False +@@ -515,11 +516,13 @@ + + char error[100]; + sprintf(error, "couldn't load %s colour", desc); + fatal(error); + +- } else return nearest.pixel; ++ } ++ ++ return nearest.pixel; + } + + + void WindowManager::installCursor(RootCursor c) + { +@@ -568,15 +571,16 @@ + m_restart = True; + } + + void WindowManager::scanInitialWindows() + { +- unsigned int i, n, s; ++ unsigned int i, n; ++ int s; + Window w1, w2, *wins; + XWindowAttributes attr; + +- for(s=0;sdeactivate(); ++ } ++ m_activeClient = c; ++} ++ + void WindowManager::clearFocus() + { + static Window w = 0; + Client *active = activeClient(); + +diff -NarU5 wmx-6pl1/Manager.h wmx-cvs-2006-06-02/Manager.h +--- wmx-6pl1/Manager.h 2001-04-24 04:58:31.000000000 -0400 ++++ wmx-cvs-2006-06-02/Manager.h 2003-08-12 10:50:47.000000000 -0400 +@@ -25,11 +25,11 @@ + Client *activeClient() { return m_activeClient; } + Boolean raiseTransients(Client *); // true if raised any + Time timestamp(Boolean reset); + void clearFocus(); + +- void setActiveClient(Client *const c) { m_activeClient = c; } ++ void setActiveClient(Client *const c); + + void addToHiddenList(Client *); + void removeFromHiddenList(Client *); + void skipInRevert(Client *, Client *); + +diff -NarU5 wmx-6pl1/Menu.C wmx-cvs-2006-06-02/Menu.C +--- wmx-6pl1/Menu.C 2001-10-05 09:01:21.000000000 -0400 ++++ wmx-cvs-2006-06-02/Menu.C 2003-08-14 09:07:12.000000000 -0400 +@@ -25,12 +25,13 @@ + #define STRLEN_MITEMS(i) strlen(m_items[(i)]) + #endif + + Menu::Menu(WindowManager *manager, XEvent *e) + : m_items(0), m_nItems(0), m_nHidden(0), +- m_windowManager(manager), m_event(e), +- m_hasSubmenus(False) ++ m_hasSubmenus(False), ++ m_windowManager(manager), ++ m_event(e) + { + if (!m_initialised) + { + XGCValues *values; + XSetWindowAttributes *attr; +@@ -236,11 +237,11 @@ + { + int i; + foundEvent = False; + + if (CONFIG_FEEDBACK_DELAY >= 0 && +- tdiff > CONFIG_FEEDBACK_DELAY && ++ tdiff > (unsigned long)CONFIG_FEEDBACK_DELAY && + !isKeyboardMenu && // removeFeedback didn't seem to work for it + !speculating) { + + if (selecting >= 0 && selecting < m_nItems) { + raiseFeedbackLevel(selecting); +@@ -618,12 +619,11 @@ + { + if (Client *c = checkFeedback(item)) c->raiseFeedbackLevel(); + } + + +-CommandMenu::CommandMenu(WindowManager *manager, XEvent *e, +- char* otherdir = NULL) ++CommandMenu::CommandMenu(WindowManager *manager, XEvent *e, char* otherdir) + : Menu(manager, e) + { + const char *home = getenv("HOME"); + const char *wmxdir = getenv("WMXDIR"); + +diff -NarU5 wmx-6pl1/UPDATES wmx-cvs-2006-06-02/UPDATES +--- wmx-6pl1/UPDATES 2000-05-11 12:42:30.000000000 -0400 ++++ wmx-cvs-2006-06-02/UPDATES 2003-08-12 10:49:35.000000000 -0400 +@@ -1,7 +1,12 @@ + /* vim:set ts=4 ai: ,e to add info */ + ++- 2000/05/12 ++ added Zvezdan Petkovic's patch for horizontal and full- ++ screen maximise as well as vertical, and to make maximise ++ and unmaximise optionally use the same key (toggle). ++ + wmx-6pre4: + + - 2000/05/11 + change so as to use alt-modifier keysym instead of + coding the mask straight in to Config.h. now Manager.C diff --git a/wmx.spec b/wmx.spec index 3ea685b..2646b6b 100644 --- a/wmx.spec +++ b/wmx.spec @@ -1,20 +1,21 @@ Name: wmx -Version: 8 -Release: 28%{?dist} +Version: 6pl1 +Release: 14%{?dist} Summary: A really simple window manager for X -# Automatically converted from old format: BSD - review is highly recommended. -License: LicenseRef-Callaway-BSD +License: BSD +Group: User Interface/X URL: http://www.all-day-breakfast.com/wmx/ Source0: http://www.all-day-breakfast.com/wmx/%{name}-%{version}.tar.gz -Source1: wmx-defaults-3.tar.gz +Source1: wmx-defaults.tar.gz Source2: background.xpm Source3: wmx.desktop Source4: Xclients.wmx.sh -Patch0: wmx-8-cfg.patch -#wmx's 'New' button is hardcoded to start an xterm, better make sure we have it: -Requires: xterm -BuildRequires: make -BuildRequires: gcc-c++ xorg-x11-proto-devel libX11-devel libXpm-devel libXext-devel libXaw-devel libXt-devel libXcomposite-devel freetype-devel libXft-devel +Patch0: wmx-6pl1-cvs20060602.patch +Patch1: wmx-6pl1-64b.patch +Patch2: wmx-6pl1-cfgbug.patch +Patch3: wmx-6pl1-cfg.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: xorg-x11-proto-devel libX11-devel libXpm-devel libXext-devel libXaw-devel libXt-devel %description A really simple window manager for X, based on wm2, with a minimal set of @@ -22,181 +23,44 @@ configurable options. %prep %setup -q -%setup -q -a 1 -%{__install} -p -m 0644 %{SOURCE2} . -%patch -P0 -p1 +%setup -a 1 +%{__install} -p %{SOURCE2} . +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 %build -%configure --x-libraries=%{_libdir} --x-includes=%{_includedir}/X11 LIBS=-lfontconfig +%configure --x-libraries=%{_libdir} --x-includes=%{_includedir}/X11 %{__make} %{?_smp_mflags} %install %{__rm} -rf %{buildroot} %{__install} -D -m 0755 wmx %{buildroot}%{_bindir}/wmx %{__install} -d -m 0755 %{buildroot}%{_datadir}/%{name} -%{__install} -m 0755 wmx-defaults-3/* %{buildroot}%{_datadir}/%{name} +%{__install} -m 0755 wmx-defaults/* %{buildroot}%{_datadir}/%{name} %{__chmod} 0644 %{buildroot}%{_datadir}/%{name}/startup %{__install} -D -m 0644 %{SOURCE3} %{buildroot}%{_datadir}/xsessions/wmx.desktop %{__install} -D -m 0755 %{SOURCE4} %{buildroot}%{_sysconfdir}/X11/xinit/Xclients.d/Xclients.wmx.sh +%clean +%{__rm} -rf %{buildroot} + %files -%doc README* UPDATES TODO.netwm rsharman-patch/ +%defattr(-,root,root) +%doc README* UPDATES ANNOYING-BUGS %{_bindir}/* -%{_datadir}/%{name} -%{_datadir}/xsessions/* +%{_datadir}/* %{_sysconfdir}/X11/xinit/Xclients.d/* %changelog -* Fri Jul 17 2026 Fedora Release Engineering - 8-28 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild - -* Sat Jan 17 2026 Fedora Release Engineering - 8-27 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild - -* Fri Jul 25 2025 Fedora Release Engineering - 8-26 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Sun Jan 19 2025 Fedora Release Engineering - 8-25 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Wed Sep 04 2024 Miroslav Suchý - 8-24 -- convert license to SPDX - -* Sat Jul 20 2024 Fedora Release Engineering - 8-23 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Mon Jan 29 2024 Fedora Release Engineering - 8-22 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sat Jan 27 2024 Fedora Release Engineering - 8-21 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sat Jul 22 2023 Fedora Release Engineering - 8-20 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Sat Jan 21 2023 Fedora Release Engineering - 8-19 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Sat Jul 23 2022 Fedora Release Engineering - 8-18 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Sat Jan 22 2022 Fedora Release Engineering - 8-17 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Fri Jul 23 2021 Fedora Release Engineering - 8-16 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Wed Jan 27 2021 Fedora Release Engineering - 8-15 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Wed Jul 29 2020 Fedora Release Engineering - 8-14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Fri Jan 31 2020 Fedora Release Engineering - 8-13 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Sat Jul 27 2019 Fedora Release Engineering - 8-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Sun Feb 03 2019 Fedora Release Engineering - 8-11 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Mon Jul 23 2018 Gabriel Somlo 8-10 -- add "BuildRequires: gcc-c++" (#1606700) - -* Sat Jul 14 2018 Fedora Release Engineering - 8-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Fri Feb 09 2018 Fedora Release Engineering - 8-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Thu Aug 03 2017 Fedora Release Engineering - 8-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 8-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Sat Feb 11 2017 Fedora Release Engineering - 8-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Fri Feb 05 2016 Fedora Release Engineering - 8-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Fri Jun 19 2015 Fedora Release Engineering - 8-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Sat May 02 2015 Kalev Lember - 8-2 -- Rebuilt for GCC 5 C++11 ABI change - -* Thu Nov 20 2014 Gabriel Somlo 8-1 -- update to 8 - -* Mon Aug 18 2014 Fedora Release Engineering - 7-14.20120109svn -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Sun Jun 08 2014 Fedora Release Engineering - 7-13.20120109svn -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Sun Aug 04 2013 Fedora Release Engineering - 7-12.20120109svn -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Fri Feb 15 2013 Fedora Release Engineering - 7-11.20120109svn -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Sun Jul 22 2012 Fedora Release Engineering - 7-10.20120109svn -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Mon Jan 09 2012 Gabriel Somlo 7-9.20120109svn -- upgrade to latest svn checkout -- updated defaults -- dropped xnodecor - -* Mon Feb 07 2011 Fedora Release Engineering - 7-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Tue Dec 07 2010 Gabriel Somlo 7-7 -- explicitly link against libfontconfig (BZ 660741) - -* Mon Mar 01 2010 Gabriel Somlo 7-6 -- fixed directory ownership (BZ 569408) - -* Mon Jul 27 2009 Fedora Release Engineering - 7-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - -* Wed Feb 25 2009 Fedora Release Engineering - 7-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild - -* Mon Jan 19 2009 Gabriel Somlo 7-3 -- applied patch for use of compositing offscreen storage to speed up rendering -- added buildreq for libxcomposite-devel - -* Tue Jan 13 2009 Gabriel Somlo 7-2 -- re-enabled scroll-wheel-cycles-channels feature - -* Sat Jan 10 2009 Gabriel Somlo 7-1 -- update to 7 - -* Tue Feb 19 2008 Fedora Release Engineering - 6pl1-18 -- Autorebuild for GCC 4.3 - -* Tue Dec 25 2007 Gabriel Somlo 6pl1-17 -- changed build config option to use default X cursor fonts - -* Sat Nov 17 2007 Gabriel Somlo 6pl1-16 -- rebuild - -* Tue Nov 13 2007 Gabriel Somlo 6pl1-15 -- patch containing latest cvs fixes -- added xnodecor.c from ftp://ftp.42.org/pub/wmx/contrib/xnodecor.c -- updated default menu entries - * Fri Sep 08 2006 Gabriel Somlo 6pl1-14 - rebuilt for FC6MassRebuild -* Thu Jun 08 2006 Gabriel Somlo 6pl1-13 +* Wed Jun 08 2006 Gabriel Somlo 6pl1-13 - rebuild -* Thu Jun 08 2006 Gabriel Somlo 6pl1-12 +* Wed Jun 08 2006 Gabriel Somlo 6pl1-12 - more X11 buildrequires (thanks tibbs@math.uh.edu and Jarod Wilson) * Wed Jun 07 2006 Gabriel Somlo 6pl1-11 @@ -236,8 +100,8 @@ configurable options. * Fri Dec 16 2005 Gabriel Somlo 6pl1-3 - spec file fixes as per P. Lemenkov and I. Vazquez - default menu entries now go in /usr/share/wmx/menu -- example wmx .xsession file added to doc -- gave up on using /usr/X11R6/bin -- using bindir instead +- example wmx .xsession file added to %doc +- gave up on using /usr/X11R6/bin -- using %{_bindir} instead * Wed Dec 14 2005 Gabriel Somlo 6pl1-2 - increased bump-distance parameter for easier placement at edge of screen @@ -251,5 +115,5 @@ configurable options. * Tue Aug 09 2005 Gabriel Somlo 6pl1-0 - rebuilt for Fedora Core 4 -* Sun May 23 2004 Gabriel Somlo +* Wed May 23 2004 Gabriel Somlo - initial spec and packages.