NEWS for veteran Window Maker users ----------------------------------- -- 0.95.10 Keep dock on primary head ------------------------- To keep the dock on the primary head in a multi-head setup, set the option "KeepDockOnPrimaryHead" in ~/GNUstep/Defaults/WindowMaker to "YES" or click "Keep dock on primary head" under the WPrefs "Expert User Preferences" tab. -- 0.95.9 Configurable SwitchPanel ------------------------ SwitchPanel is now more configurable: you can configure the switch panel icon size by setting the "SwitchPanelIconSize" option to your preferred value in ~/GNUstep/Defaults/WindowMaker. The font size used in this panel now is also sensible to changes in the system font. New user configuration directory environment variable ----------------------------------------------------- In previous versions, the GNUstep directory used to store a user's Window Maker configuration files was specified by the GNUSTEP_USER_ROOT environment variable, which defaulted to ~/GNUstep. However, this environment variable was deprecated in gnustep-make v2. Therefore, it has been replaced by the WMAKER_USER_ROOT environment variable. libXmu is now an optional dependency ------------------------------------ If the library is not found, compilation work, the only limitation will arise when trying to install the standard colormap on displays which are not TrueColor. Please note that if you have the library but not the headers, configure will still stop; there is no user option to explicitly disable the library use. -- 0.95.8 Move pointer with maximized windows ----------------------------------- Implementation for moving mouse pointer within the maximized window. Mouse pointer can be now moved together with window if keyboard was used for arrange maximized windows on screen. This feature can be turned on in WPrefs.app in Expert tab by selecting "Move mouse pointer with half maximized windows.", or setting "PointerWithHalfMaxWindows" to "Yes" on ~/GNUstep/Defaults/WindowMaker file. Alternative way for traverse half-maximized windows --------------------------------------------------- For now, there could be three possible state of the window while using half-maximized feature. Unmaximized window have its state saved during that process, which was use to unmaximize it. For example, if there is a window, which is maximized on the half left side of the screen, and while requesting left-half-maximized, it become unmaximized with size and dimension restored to original state. By setting "AlternativeHalfMaximized" option to "Yes" ~/GNUstep/Defaults/WindowMaker config file (or by using WPrefs.app and option "Alternative transitions between states for half maximized windows."), there would be slightly different change in window "traverse". Given layout depicted below: ┌┬────────────────────┬┐ ├┘ ┌───────┐ ├┤ │ ├───────┤ ├┤ │ │ │ ├┤ │ │ │ ├┤ │ └───────┘ └┤ ├┬┐ │ └┴┴────────────────────┘ Window can be moved using keyboard shortcut right-half-maximize: ┌┬─────────┬──────────┬┐ ├┘ ├──────────┼┤ │ │ ├┤ │ │ ├┤ │ │ ├┤ │ │ ├┤ ├┬┐ └──────────┘│ └┴┴────────────────────┘ Further invoking right-half-maximize will do nothing. Note, that window always can be unmaximzied using appropriate keyboard shortcut or by selecting "Unmaximize" from window menu. Going to opposite direction by invoking left-half-maximize, will make the window maximized in both, vertical and horizontal directions: ┌─────────────────────┬┐ ├─────────────────────┼┤ │ ├┤ │ ├┤ │ ├┤ │ ├┤ ├┬┬───────────────────┘│ └┴┴────────────────────┘ Further invoking left-half-maximize, will make the window maximized in half left side od the screen: ┌──────────┬──────────┬┐ ├──────────┤ ├┤ │ │ ├┤ │ │ ├┤ │ │ ├┤ │ │ └┤ ├┬┬────────┘ │ └┴┴────────────────────┘ And again, further invoking left-half-maximize, will do nothing in this mode. This change affects all possible half-maximized window state also quarters. Issuing bottom-left-corner will take lower left quarter of the screen (nothing is new so far): ┌┬────────────────────┬┐ ├┘ ├┤ │ ├┤ ├──────────┐ ├┤ ├──────────┤ ├┤ │ │ └┤ ├┬┬────────┘ │ └┴┴────────────────────┘ Issuing bottom-right-corner again will change window state to bottom half maximized: ┌┬────────────────────┬┐ ├┘ ├┤ │ ├┤ ├─────────────────────┼┤ ├─────────────────────┼┤ │ ├┤ ├┬┬───────────────────┘│ └┴┴────────────────────┘ Invoking bottom-right-corner again: ┌┬────────────────────┬┐ ├┘ ├┤ │ ├┤ │ ┌──────────┼┤ │ ├──────────┼┤ │ │ ├┤ ├┬┐ └──────────┘│ └┴┴────────────────────┘ Issuing bottom-right-corner again will have no effect. Move half-maximized windows between the screens ----------------------------------------------- New option was introduced to allow change of behaviour of half-maximize windows in multiple displays environment. In such environment it is more natural that half maximized windows would travel from one screen to another. Now it is possible to make that happen by setting an option "MoveHalfMaximizedWindowsBetweenScreens" to "Yes" in ~/GNUstep/Defaults/WindowMaker config file, or by checking "Allow move half-maximized windows between multiple screens." in 'Expert User Preferences" tab in WPrefs.app. For example, given there are two screens in layout where one display is on the left and second display is on the right with window on first screen: ┌┬────────────────┬─────────────────┬┐ ├┘ ┌───────┐ │ ├┤ │ ├───────┤ │ ├┤ │ │ │ │ ├┤ │ │ │ │ ├┤ │ └───────┘ │ └┤ ├┬┐ ├┬┬┐ │ └┴┴───────────────┴┴┴┴───────────────┘ It can be right-half-maximized (using previously defined key combination), so it become: ┌┬───────┬────────┬─────────────────┬┐ ├┘ ├────────┤ ├┤ │ │ │ ├┤ │ │ │ ├┤ │ │ │ ├┤ │ │ │ └┤ ├┬┐ └────────┼┬┬┐ │ └┴┴───────────────┴┴┴┴───────────────┘ In this example there is an assumption that WindowMaker is configured, that maximized windows wont cover mini icons nor dock. Without setting new option to true, issuing another right-half-maximize will restore window dimensions and position to the original state (like on the first figure). With new option set to true it will move window to second screen like: ┌┬────────────────┬────────┬────────┬┐ ├┘ ├────────┤ ├┤ │ │ │ ├┤ │ │ │ ├┤ │ │ │ ├┤ │ │ │ └┤ ├┬┐ ├┬┬┬─────┘ │ └┴┴───────────────┴┴┴┴───────────────┘ Another activation of right-half-maxmimize: ┌┬────────────────┬────────┬────────┬┐ ├┘ │ ├────────┼┤ │ │ │ ├┤ │ │ │ ├┤ │ │ │ ├┤ │ │ │ ├┤ ├┬┐ ├┬┬┐ └────────┘│ └┴┴───────────────┴┴┴┴───────────────┘ And final activation of right-half-maxmimize: ┌┬────────────────┬───────┬─────────┬┐ ├┘ ├───────┤ ├┤ │ │ │ ├┤ │ │ │ ├┤ │ ├───────┘ ├┤ │ │ └┤ ├┬┐ ├┬┬┐ │ └┴┴───────────────┴┴┴┴───────────────┘ Where window is restored its size (but not position, since it it on different head now). Moving window in directions like left-half-maximize, top-half-maximize and bottom-half-maximize will behave in similar way depending on the layout of displays. Note, that only windows that are half-maximized vertically or horizontally can be moved to another screen due to the fact, that direction of movement of quarter-maximized windows is ambiguous. As for vertical/horizontal-maximize, since doesn't move the window but only stretch it vertically/horizontally this feature also doesn't apply. Snapping a window to the top ---------------------------- You can now choose whether snapping a window to the top edge of the screen maximizes it to the top half (the previous and default behavior) or to the full screen by setting "SnapToTopMaximizesFullscreen" to "NO" or "YES", respectively. This setting can also be changed by unchecking or checking "Snapping a window to the top maximizes it to the full screen" in the "Expert User Preferences" tab in WPrefs.app. Global defaults directory configuration --------------------------------------- You can now configure the global defaults directory, where the system WindowMaker, WMRootMenu, etc. files are stored, by running ./configure --with-defsdatadir=/path/to/defaults at build time. The previous method, which only partially worked, involved defining the GLOBAL_DEFAULTS_SUBDIR macro. This is no longer available. Note that the default location is ${sysconfdir}/WindowMaker. -- 0.95.7 Window snapping --------------- You can now "snap" a window, i.e., maximize it to a side or corner of the screen, by dragging it to that side or corner. It is enabled by setting "WindowSnapping = YES" in ~/GNUstep/Defaults/WindowMaker or selecting "Maximize (snap) a window to edge or corner by dragging." under "Expert User Preferences" in WPrefs.app. Note that if "Switch workspaces while dragging windows" is selected under "Workspace Preferences" in WPrefs.app, or if "DontLinkWorkspaces = NO" in ~/GNUstep/Defaults/WindowMaker, then you may only snap a window to the top or bottom of the screen. You may set the distance (in pixels) from the edge or corner of the screen at which a window will begin snapping using "SnapEdgeDetect" and "SnapCornerDetect" in ~/GNUstep/Defaults/WindowMaker or setting "Distance from edge/corner to begin window snap." under "Expert User Preferences" in WPrefs.app. (The defaults are 1 pixel and 10 pixels, respectively). Dragging maximized windows -------------------------- You can now control the behavior when a maximized window is dragged by setting the "DragMaximizedWindow" option in ~/GNUstep/Defaults/WindowMaker or by selecting an option from the "When dragging a maximized window..." pop-up button under "Window Handling Preferences" in WPrefs.app. There are four choices: * "Move" ("...change position (normal behavior)" in WPrefs.app) is the default and traditional behavior. A maximized window is moved when dragged and remains maximized, i.e., it keeps its maximized geometry and can later be unmaximized. * "RestoreGeometry" ("...restore unmaximized geometry") is the behavior standard in desktop environments like GNOME, Cinnamon, and Unity. A maximized window is moved when dragged and is completely unmaximized, i.e., its unmaximized geometry is restored. * "Unmaximize" ("...consider the window unmaximized") causes a maximized window to be moved when dragged and remains partially maximized, i.e., it keeps its maximized geometry, but is consider to be unmaximized. In particular, it can be immediately re-maximized. * "NoMove" ("...do not move the window") prevents a maximized window from being moved when dragged. Note that, to accomodate this option in the "Window Handling Preferences" tab in WPrefs.app, the option to "Open dialogs in the same workspace as their owners" (which sets the "OpenTransientOnOwnerWorkspace" option from ~/GNUstep/Defaults/WindowMaker) has been moved to "Expert User Preferences". Mini-Previews instead of Apercus -------------------------------- Since the original name was not really clear because it is a French word that is rarely used by British people, it was decided to change it to the more usual Mini-Preview name. The setting is configurable with WPrefs in the Icon Preferences tab, the size is now expressed in pixels directly. Ignore Decoration Hints from GNOME applications ----------------------------------------------- The GNOME applications ask Window Maker to get no title bar and no resize bar to their windows by using "Hints". You can re-add them using the Attribute dialog in the Window menu, but if you are using many GNOME applications you may want to tell Window Maker to just ignore them. This is done with the new setting called "IgnoreGtkHints", which is available in the "Expert" panel in WPrefs. Cooperative Window Manager Replacement -------------------------------------- The ICCCM defines a protocol for window managers to ask to replace the currently running one; Window Maker now supports it. You can ask Window Maker to take the place of current one by running "wmaker --replace", or any other window manager can ask Window Maker to leave the place for them when started the same way. Please note that this feature must be explicitely enabled at compile time because by default it is not compiled in ("configure --enable-wmreplace"). --- 0.95.6 More image format supported --------------------------- In addition to a more complete Netpbm image formats support, WindowMaker can now load WebP images. It can also make use of the ImageMagick library to support a lot more formats, like SVG, BMP, TGA... Mini-window apercu ------------------ A small preview of window contents can be enabled from WPrefs, in Miscellaneous Ergonomic Preferences, check miniwindow apercus. Apercu size can be configured using the ApercuSize variable with $ wdwrite WindowMaker ApercuSize 4 in multiples of the icon size (in this case the apercu size will be four times the icon size). The default size is 2 (twice the icon size). Support for up to 9-buttons mouse --------------------------------- The action for the newly supported buttons can be configured from WPrefs. wmiv, an image viewer application --------------------------------- wmiv is a quick image viewer using wrlib to be run from the command line. --- 0.95.5 Support for generated menus in proplist format ---------------------------------------------- The root menu now supports a OPEN_PLMENU option to construct a submenu from the output of a command which is proplist format. This can be used e.g. in conjunction with wmmenugen like: ( "Generated PL Submenu", OPEN_PLMENU, "|| find /usr/share/applications -type f -name '*desktop' | xargs wmmenugen -parser:xdg" ) New window placements --------------------- Now it is possible to maximize windows to the top/bottom halves of the screen and also to the corners (top/bottom + left/right). The keyboard shortcuts can be configured with WPrefs. Options to configure window/menu borders ---------------------------------------- You can now configure the width and color of window and menu borders. For example, the default settings could be configured as follows: $ wdwrite WindowMaker FrameBorderWidth 1 $ wdwrite WindowMaker FrameBorderColor black $ wdwrite WindowMaker FrameSelectedBorderColor white Keyboard shortcuts to move windows between workspaces ----------------------------------------------------- You can now bind keyboard shortcuts - or use the window dropdown menus - to move windows to other workspaces. You can either move a window directly to a particular workspace or to the "next" or "previous" workspace. The new shortcuts can be configured in WPrefs. Native support for Drawers -------------------------- WindowMaker now supports drawers in the dock natively. You can add a dock by right-clicking on a docked appicon and select "Add a drawer". You can now drag appicons to this drawer. You can customize how you want your drawers to auto-expand/collapse and auto-raise/lower, or you can also completely disable them. Improved switch panel functionality ----------------------------------- The switch panel can be used to switch between windows of the same WM_CLASS, for example between all open xterms. If the switch panel is opened as normal with either the "FocusNextKey" or "FocusPrevKey" shortcut, you can switch to the next (or previous) window of the same type as the focused window with the "GroupNextKey" or "GroupPrevKey" shortcut. If the switch panel is opened with the "GroupNextKey" or "GroupPrevKey" shortcut, it will show only windows of the same type as the window which was focused at the time the panel was opened, and no difference will be seen between the two types of window selection shortcut. The new shortcuts can be configured in WPrefs, where they are described as allowing switching between windows of the same group. To maintain consistency with other popular operating systems, the switch panel is now configured so that it no longer automatically closes when the shift key is pressed and released. To configure the switch panel so that it does close on release of the shift key, which was the traditional Window Maker behavior, run the following command: $ wdwrite WindowMaker StrictWindozeCycling NO If you find yourself regularly opening the switch panel just to visualize open windows, you can run the following command to force the first "FocusNextKey" or similar shortcut to open the panel without switching to a new window. $ wdwrite WindowMaker SwitchPanelOnlyOpen YES --- 0.95.4 New window placement strategy ----------------------------- Among the window placement algorithms has arrived the "center" placement to get new windows appear at the center of the screen (unless application explicitly specify a position, of course). Removed dependency to CPP ------------------------- The menu files used to be pre-processed with CPP, which can be a problem because modern system do not install dev tools by default, and some compilers do not provide a pre-processor anyway. WindowMaker is now autonomous. --- 0.95.3 The references to the legacy path /usr/X11R6 have been removed because xorg does not use it in favor of a standard /usr layout. Similarly, the directory /etc/X11/WindowMaker is now /usr/share/WindowMaker. New application Relaunching functionality ----------------------------------------- There are now several ways to launch a new instance of an application with the same command line that was originally used to start it. 1. By selecting Launch from the application's window menu. 2. By using the "Launch new instance of application" keyboard shortcut. 3. By clicking the application's appicon with the middle button. 4. By double-clicking the application's appicon while holding Control. For example, if you have two xterms open, one started with "xterm" and one started with "xterm -rv", using the Relaunch functionality on the first xterm would run "xterm" and using it on the second would run "xterm -rv". Thus Relaunching can also be thought of as "cloning" an application. Application Relaunching works by examining the window's WM_COMMAND property and so will not work if it is not set. Options to limit the window/menu title height --------------------------------------------- You can now set the minimum and maximum titlebar heights. For example, to force all titlebars to 24 pixels execute the following commands: $ wdwrite WindowMaker WindowTitleMinHeight 24 $ wdwrite WindowMaker WindowTitleMaxHeight 24 $ wdwrite WindowMaker MenuTitleMinHeight 24 $ wdwrite WindowMaker MenuTitleMaxHeight 24 --- 0.95.2 New Resizing functionality -------------------------- You can now use the mouse wheel and modifier keys to resize windows. MOD+Wheel will resize windows vertically and CTRL+Wheel will resize windows horizontally. MOD+CTRL+Wheel will resize both at the same time. The resize step, or increment can be set in WPrefs in the "Window Handling" page, or in the config file with "ResizeIncrement". If this intrudes into a specific application's functionality, you can disable it on an application- by-application basis by setting the "Do not bind mouse clicks" attribute in "Advanced Options". New Maximize functionality -------------------------- Maximus/Maximumize. A new tiled maximization, configured with a keyboard shortcut. Using it will maximize the window to the greatest area such that it will not overlap any other window of the same workspace. This can be configured in WPrefs in the "Keyboard Shortcuts" page, or in the config file with "MaximusKey". Left/right maximization. Now wmaker supports maximizing a window to the left or right half of the screen, making it occupy 50% of the area. This is useful on wide screen displays where you want to bring up two windows side-by- side. The shortcut keys for this can be configured in WPrefs in the "Keyboard Shortcuts" page, or in the config file with "LHMaximizeKey" and "RHMaximizeKey" History and AutoComplete in the run dialog ------------------------------------------ The "Run..." dialog now auto-completes executables in your path (triggered by the TAB key) and records the history of past commands (last 500 by default). It can also complete folder names if you start the complete with a "/" To use it replace %a with %A in the "Run..." entry in your WMRootMenu file. See commit 05720d97076ffc1569e5 for more details. Automatic menu generator (wmgenmenu) ----------------------------------- There is now a new utility to generate the Window Maker menu automatically, called wmgenmenu. It searches from a list of pre-defined applications the ones which exist in your $PATH and adds them to the corresponding submenus ("Internet", "Terminals", "Editors" etc) of your WM menu. It also supports localization (currently English and German). You can use it like: $ wmgenmenu > WMRootMenu-new $ cp WMRootMenu-new $HOME/GNUstep/Defaults/WMRootMenu and WM will automatically detect the new menu file and use it without restarting wmaker (made possible by the 'inotify' mechanism) Automatic detection of menu changes (via inotify) ------------------------------------------------- Window Maker now uses the 'inotify' mechanism from the Linux kernel to automatically detect changes in the WMRootMenu file. So the --no-polling option is now gone and Window Maker does not wake up your CPU unnecessarily (0 wakeups when idle, instead of 4). So if you edit the WMRootMenu file by hand (or by using 'wmgenmenu'), there is no need to restart wmaker for the changes to take effect. DockApp recognition ------------------- In addition to applications with only Withdrawn windows, Window Maker will now treat any application with its WM_CLASS res_class set as "DockApp". This provides an easy workaround for toolkits like gtk+ that do not allow creation of windows with the initial_state member of XWMHints set to WithdrawnState. --- 0.92.0 GNUstep Installation Directory ------------------------------ WPrefs is now installed in /usr/local/bin and /usr/local/share by default. If you use GNUstep and want it to install in /usr/GNUstep/Applications, you may specify --with-gnustepdir=/usr/GNUstep If the GNUSTEP_LOCAL_ROOT environment variable is defined when configure is executed, it will be used (and you don't need to use --with-gnustepdir) Cached Pixmaps Directory ------------------------ The directory where Window Maker stores the cached application pixmaps for its later use has changed from ~/GNUstep/.AppInfo/WindowMaker to ~/GNUstep/Library/WindowMaker/CachedPixmaps for better compatibility with the GNUstep path structure. Also WPrefs now stores internal data in ~/GNUstep/Library/WindowMaker/WPrefs (it was ~/GNUstep/.AppInfo/WPrefs before) X Input Methods support in WINGs -------------------------------- Preliminary support for X Input Methods was added to textfield and text widgets in WINGs. Input for text in other languages than English should work now (except for kanji which will most likely not work, even though it wasn't tested). Disabling the switch panel -------------------------- To disable the panel shown during Alt-tabbing, you may put the following in ~/GNUstep/Defaults/WindowMaker SwitchPanelImages= None; --- 0.91.0 Alt-Tab Window Switching ------------------------ You can change the appearance of the panel shown during Alt-Tab window switching with the SwitchPanelImages option: (selected_icon_tile_image, background_image, width, height) selected_icon_tile_image is the image used to highlight the currently selected window icon. It must be 64x64 pixels. background_image is the image used in the background of the panel. It must be at least 64x80. width and height are the width and size of the central part of the image. When drawing the panel, the image will be split as: |W | +--+--+--+ | | | | +--+--+--+ - | | | | H +--+--+--+ - | | | | +--+--+--+ The 4 corner images will be copied in their original sizes and the rest will be scaled to the final panel size. background_image, width and height are optional. If you leave them out, a gray panel will be used. If your machine is not very fast, you may want to use it. --- 0.90.0 NetWM / EWMH Support -------------------- Support for the EWMH standard has been added. Applications from GNOME 2.x and KDE 3.x should now inter-operate better with Window Maker. Support for the obsolete/legacy GNOME 1.x, KDE 1.x and OpenLook(!) hints was wiped out for the sake of sanity. Antialiased font support ------------------------ With the addition of Xft2 support in the WINGs library, now Window Maker can display antialiased text with TrueType or any scalable fonts. You can pick fonts for Window Maker in the Font configuration section of WPrefs. Antialiased text is enabled by default, but can be disabled by adding AntialiasedText = NO; in ~/GNUstep/Defaults/WMGLOBAL This will disable antialiased text for any WINGs based application. If you only want to disable them for a specific application only, like WindowMaker for example, then add the same option in the applications configuration file, in this case ~/GNUstep/Defaults/WindowMaker For WindowMaker, this can also be achieved from the Expert panel in WPrefs. Note that bitmapped fonts look much better than TrueType when antialiasing is disabled. Global Submenus --------------- Global menus allow for system wide menus that are added to every users application menus. They are located in /usr/etc/WindowMaker/, /usr/local/etc/WindowMaker or whatever is your sysconf directory for WindowMaker. There are 2 files: GlobalMenu.pre, which is added to the beginning of the menu and GlobalMenu.post, which is added to the end of the menu. These are to be proplist format menus, for example: (("Foobar", EXEC, foobar), ("Blabla", EXEC, blabla)) or, in case you want a submenu: (("Submenu", ("Foobar", EXEC, foobar), ("Blabla", EXEC, blabla))) UTF-8 Support ------------- Window Maker now uses UTF-8 internally (and thus can display UTF-8 text in window titles and other places). Menus and po files must now be encoded in UTF-8. If your menus contain non ASCII characters, you can convert them to UTF-8 with the following command: iconv -f -t utf-8 > .utf8 For example: iconv -f iso-8859-1 -t utf-8 menu > menu.utf mv menu.utf menu Icon Panel for Alt-Tabbing -------------------------- A panel with icons for the windows that you can switch to will appear when you press Alt-Tab. You can navigate through the windows with Alt-Tab (Alt-Shift-Tab) or with the left/right keys once the panel is shown. --- 0.80.0 Shading/Unshading windows using mouse wheel on their titlebar ------------------------------------------------------------- In addition to the known methods of shading/unshading a window, one can now do this by using the mouse wheel on the window's titlebar. The mouse events are interpreted via a mapping in the global WINGs configuration file, WMGLOBAL, by the MouseWheelUp and MouseWheelDown directives which will do shading and unshading respectfully. However, to avoid unwanted triggers of shading/unshading the window, two consecutive mouse wheel events in the same direction are required. The trigger won't occur if the events are separated by more than a double-click's worth of time, which is technically speaking like making a double-click with the button that corresponds to the mouse wheel direction. Practically speaking, this means that you have to move the mouse wheel up or down quickly, like when you want to quickly scroll over something big. Shared application icons ------------------------ Real application icon sharing was implemented in place of the collapse appicon thing. With this applications of the same instance.class will have a single shared application icon and hiding will hide all windows of the application attached to that appicon as if there is a single application. This feature is enabled by default for all applications in the global WMWindowAttributes defaults domain using: "*" = {SharedAppIcon = Yes;}; If you're not satisfied with this or want the old behavior back you can revert this (either in the global domain for all users or in your personal WMWindowAttibutes domain) using SharedAppIcon = No; for "*" It can also be enabled/disabled for individual applications as needed. Setting this option can be done using the window's inspector panel in the "Application Specific" section. You can set/unset it for all applications by using the "Defaults for all windows" in the "Window Specification" section Basically using this can have 2 major scenarios: 1. Leave it on by default, but disable it for the few specific applications that do not behave well with it. (default) 2. Leave it off by default, and enable it for all applications for which you want it enabled. At this point all applications we tested work ok, some of them even work better with this feature turned on: for example xmms and Corel's WorkPerfect8 now only have 1 appicon (they used to have 2 without this feature). This feature is turned off by default for the following applications because it's incompatible with them: 1. all GNUstep applications 2. applications with an application menu (wterm, Aileron, etc) 3. all applications with withdrawn windows only (this means all dockapps) As a side note: wterm can use the shared appicon feature as long as it doesn't use the appmenu (will do this by default). If you start it using the appmenu (wterm -wm) it will disable the shared appicon feature because apps with appmenus are incompatible with this feature. If an application is a GNUstep application or if it has an appmenu, it's detected automatically and the shared appicon is disabled automatically without any user intervention or need to configure anything. Dock/Clip stealing appicons --------------------------- This feature is different form the Clip's "Autoattract Icons" feature as it won't attach any new icon to the dock/clip. What it does, is when you start an application by other means than dock/clip, like for example using the main menu or a terminal, it will search the dock/clips for the presence of an appicon for that application, that is not already running at that moment and will attach the started application to that appicon in the dock/clip if available, making it look like the dock/clip just stole the appicon for the started application. There is an animation for this to offer visual feedback that this happened. --- 0.70.0 New dock option --------------- Copy/paste launch in dock. ========================== For example, put netscape %s in the Docked icon for Netscape, select an url somewhere and then middle-click the icon. The command will be launched with the "pasted" string. Xinerama Support ================ Supported Xinerama features: - Normal maximization of windows will maximize to only one of the screens, the one where the cursor pointer is. - Full Maximize command in window menu - Place dialogs in the middle of the head where the pointer is - Try to place windows inside one head in non-manual placement modes Less dependencies ----------------- starting with 0.70.0 libPropList is no longer required to build Window Maker. PropList handling code was added to WINGs being now better integrated with all the rest. For more details check the Changelog and the following files: ./WINGs/ChangeLog ./WINGs/NEWS ./WINGs/WINGs/WUtil.h ./WINGs/WINGs/proplist-compat.h --- 0.65.1 Removed FocusFollowMouse option, only SloppyFocus present now. Added None option to MoveDisplay and ResizeDisplay --- 0.65.0 Single AppIcon -------------- Removed --single-appicon patch and replaced it with a application specific collapsing option. Check inspector panel and appicon menu. New options to configure the workspace mouse actions ---------------------------------------------------- The following options were removed from the WindowMaker defaults configuration file: SelectWindowsMouseButton, WindowListMouseButton and ApplicationMenuMouseButton. They were replaced with the following 3+1: MouseLeftButtonAction, MouseMiddleButtonAction and MouseRightButtonAction plus MouseWheelAction In the old way because all gravitated around the workspace actions to which specific mouse buttons could have been bound, it allowed one to specify in the configuration file settings which would have led to weird situations that also had undesirable results. For example the same mouse button (for example left) could have been assigned to all workspace actions: 'select windows', 'show window list menu' and 'show applications menu' which of course were not only impossible to accomplish while still having a properly working workspace, but they also allowed one to specify some settings in the configuration file that were never in fact translatable to proper workspace actions. To void this kind of user interface inconsistency, the new options now gravitate around the physical device (the mouse and its buttons) to which specific workspace actions can be bound. This way, even if one assigns the same action to all mouse buttons, that situation while gives redundant and unpractical settings it will still translatable to proper workspace actions: all buttons will execute the same action, but a button will execute only one action at a time. The new options take the following values: all Mouse...ButtonAction can have one of the following values: None, SelectWindows, OpenApplicationsMenu or OpenWindowListMenu MouseWheelAction can be one of None or SwitchWorkspaces If you had the default actions bound to mouse buttons before, then it will work for you without any intervention in the configuration files. Else you need to use WPrefs.app to bind the actions to the mouse buttons again to your old settings. Also if you want to change the mouse wheel behavior regarding workspaces you can now (use WPrefs.app to do this). Client supplied icons --------------------- Window Maker saves the client supplied icons in ~/GNUstep/Library/WindowMaker/CachedPixmaps in XPM format for later use when the app is no longer running (to have the image to display for docked icons for example). Until recently the XPM images saved by Window Maker were incorrect, but a recent fix in the code to save XPM's fixed them. But with this fix, all previously saved XPM's in that directory are no longer readable (they give wrong images on screen or fail to load). To avoid the need for the user to fix this by hand editing WMWindowAttributes and removing all references to icons in ~/GNUstep/Library/WindowMaker/CachedPixmaps which can be annoying, new code was added to Window Maker to permit the regeneration of images in ~/GNUstep/Library/WindowMaker/CachedPixmaps if they are missing. With this addition, all you need to do to fix your old broken images, is to delete all *.xpm files from ~/GNUstep/Library/WindowMaker/CachedPixmaps. Next time the application that is supplying an icon image will start the icon will be recreated if missing, but this time it will be saved with the new XPM save code which produces good XPM images. All the rest of the process is transparent to the user. Hermes library support ---------------------- If configure finds hermes library (an optimized pixel format conversion library) installed it will use it to do the pixel format conversion in the wraster library for some cases (TrueColor visuals without dithering). Currently the hermes routines cannot convert to an indexed destination, so we can't use hermes for PseudoColor, GrayScale and StaticGray visuals. Also hermes only does dithering for just 2 combinations of source/destination bits/masks none of them useful to out needs so for dithering we still use out routines. The Hermes library is completely optional, you can build Window Maker without having it, it just speeds up the things a little for some situations. hermes library is available here: http://www.clanlib.org/hermes/ --- 0.64.0 No Polling of Configuration Files --------------------------------- Running Window Maker with one of -nopolling or --no-polling command line options will make it not to poll every 3 seconds for changes in its configuration files (good for laptops to let them spin disks down when idle). Note: For the ones used with Jim Knoble's 'no polling' patch, this is the same, except that the need to #define ENABLE_NO_POLLING in wconfig.h was removed and the behavior is always available if you use the command line option. --- 0.63.0 Interwoven Gradient ------------------- interwoven gradients rip^Winspired on blackbox. Will render a texture that interweaves 2 different ones. (igradient, from1, to1, thickness1, from2, to2, thickness2) Will render a interwoven texture with the 2 specified gradients, with each section having the specified thickness. wmagnify -------- The wmagnify utility will magnify the area on the screen where your mouse pointer is located, updating it in real-time. tip: maximize it horizontally, make it Omnipresent and Always at Bottom. Then leave it in the bottom of the screen. workspace border ---------------- 2 options (WorkspaceBorder and WorkspaceBorderSize) were added to allow one to set a small (0..5 pixels) border for the workspace. This border will not be covered by windows when maximizing, allowing one to easily access the clip or map a menu using the mouse in the border area, even when there are windows maximized in both horizontal and vertical directions. WorkspaceBorder can be one of (None, LeftRight, TopBottom, AllDirections) while WorkspaceBorderSize is the size in pixels of the border not to be covered by windows when maximizing (usually a small amount 0..5 pixels). Both options can be set using WPrefs.app in the "Miscellaneous Ergonomic Preferences" section. WPrefs will always limit WorkspaceBorderSize in the (0..5) range. Note that if "full screen maximization" option is set for a window, that window will ignore this border area, maximizing to full screen. --- 0.62.0 Optimizations!! --------------- Code for converting wrlib images into X Pixmaps was optimized in many ways, both in the original C code and in assembly for Pentium(tm) processors (with and without MMX(tm)). Depending on the bit depth/color mode and CPU model, performance increases can go up to 150% Weendoze Window Cycling (alt-tab) --------------------------------- Window cycling was changed to weendoze style. NoBorder Window Attribute -------------------------- The NoBorder window attribute (to be put in ~/GNUstep/Defaults/WindowAttributes) was added and will remove the 1 pixel border around windows. Removed "Keep Attracted Icons" option from Clip's menu ------------------------------------------------------ Since this option brought more confusion than usefulness among users, and since it was usable only in a very limited context, being able to fill up the Clip very easily, it was removed. An alternative way of gaining the same functionality is to use the "Keep icon" entry in the Clip's main menu. Or select multiple icons before calling that entry, to make it apply to more than one icon. Note: "Keep icon", as the obsoleted "Keep Attracted Icons" had nothing to do with holding icons in Clip, while the application is running. Once they are attracted, they are kept until the application close. Using "Keep icon", will only assure that the icon will be kept, even after the application is closed. Please don't ask for this option back. It's error prone, and very unintuitive. Considering it's very restrictive usability, and it's very ambiguous topic, it does not need a special entry in the Clip's menu, taking in count that there are already better alternative ways of gaining the same functionality. Removed DisplayFont Option --------------------------- The font for the geometry size will be controlled by the default WINGs font (SystemFont in WMGLOBAL) now. Others ------ - added DONT_SCALE_ICONS compile time option - added --dont-restore cmd line option. When passed to wmaker, it wont restore the state saved previously. --- 0.61.1 New libPropList --------------- new libPropList-0.9.1 is REQUIRED to build Window Maker 0.61.1. go grab it and install it first. --- 0.60.1 Window Edge Attraction ---------------------- Window edge attraction was now added. Attraction = YES/NO; will enable/disable gravity to edge's border. The strength of gravity can be controlled by modify `EdgeResistance' value in WindowMaker configuration file. Titlebar Draw String Plugin --------------------------- FTitleColor, UTitleColor, PTitleColor, MenuTitleColor can be assigned with drawstring plugin instead of plain color. For example: FTitleColor = ( function, libwmfun.so, drawPlainString, gold, black, gray49 ); will invoke function drawplainstring from libwmfun.so and pass 3 colors for arguments. To code new plugin, please see plugin.h for more information. --- 0.60.0 User Menu --------- The user menu is now a compile time option disabled by default. Supply --enable-usermenu to configure to enable it. root menu INCOMPATIBLE changes ------------------------------ EXEC will execute the named program SHEXEC will execute the shell command. If you want to execute something like blabla > /dev/null, then use SHEXEC Don't forget to update your menus. New Option For setstyle ----------------------- The --ignore flag will tell setstyle to not change the option that is specified, when modifying the Window Maker configurations. For example: setstyle --ignore MenuStyle sometheme.themed will cause the MenuStyle option to not be changed. setstyle --ignore FTitleBack --ignore UTitleBack --ignore PTitleBack bla.themed will load the theme, but keep the titlebar background related options as before. MultiByte Text Support Changes ------------------------------ The --enable-kanji configure option is not needed anymore and was removed. To enable support for multibyte text, you must: - set the LANG environment variable to the appropriate value - change the font configurations to contain font sets in the appropriate encodings in both ~/G/D/WindowMaker and ~/G/D/WMGLOBAL (for WPrefs) - set the MultiByteText option to YES in both of the above files New Options ----------- WorkspaceNameDisplayPosition = none/center/top/bottom/topleft/topright/bottomleft/bottomright SmoothWorkspaceBack = YES/NO will enable smoothing of scaled workspace background images. Application User Menu Path Changes ---------------------------------- Default configuration for user specific menus installed in /usr/local/share/WindowMaker/UserMenus or $(datadir)/WindowMaker/UserMenus and ~/GNUstep/Library/WindowMaker/UserMenus. Omnipresent icons in Clip ------------------------- Added ability to set icons docked in Clip to be omnipresent on all workspaces. To set/reset this flag use the clip menu. The Clip menu changed in the following way: - if you bring up the menu from the Clip's main icon, it will contain as before the "Rename Workspace" entry in the second position. - however, if you bring up the menu from any other icon in clip, the "Rename Workspace" menu entry is replaced by "Omnipresent" or "Toggle Omnipresent" depending on the context. This entry will work in the following way, depending on the context: 1. If there is no icon selected in the clip, then the menu will contain the entry named "Omnipresent" which will be checked accordingly to the current state of the icon (omnipresent or not), and will let you change the omnipresent state of the icon you brought the menu from. 2. If one or more icons are already selected when the Clip menu is called, the entry will be named "Toggle Omnipresent" and will apply to all selected icons trying to toggle their omnipresent state. The icons which will be successfully changed to their new state as requested, will be unselected, while the ones that will fail for some reason to gain their new state, will remain selected. In both cases if there is no success in setting what user requested a panel will inform user of the failure. (Note: trying to set an icon to not-omnipresent will never fail. Failures can be met only when trying to set omnipresent for an icon). The icons set to omnipresent will be marked with a triangle in the upper left corner, having the color of the IconTitleColor. An icon can be set to omnipresent, only if its position is free in all the workspaces, else you will be informed of the problem and asked to fix it first. Also when dragging an omnipresent icon around in Clip, all the icons docked in all the workspaces are shown while the dragging is done, to let one easily see where are free slots in all workspaces. For advanced users, there is also a shortcut to set/reset the omnipresent state of an icon: just use "Shift+MiddleButton" (button2) on the icon you want to change. In this case only the mark in the upper left corner will appear in case of success, or nothing will happen if icon cannot be made omnipresent (advanced users are expected to know why the icon failed to be made omnipresent, so they don't need a panel to explain them why ;) ). Now before you load your gun to start a flame war because this is against your principles you love so much, please sit down and think that this is a feature, which, if you don't use, the old behavior of the Clip is totally preserved. It just adds some extra capabilities to the Clip for people who think that this is useful. XDND drop on dock support ------------------------- Support for XDE on dock is now replaced by XDND. To enable, edit src/wconfig.h --- 0.53.0 New Options ----------- ** MenuStyle MenuStyle=