Window Maker
Window Maker is a free and open-source stacking window manager for the X Window System, originally developed to emulate the elegant user interface of NeXTSTEP while providing seamless integration support for the GNUstep desktop environment; it operates independently as well and emphasizes lightweight performance with semi-automatic tiling capabilities.[1][2] First released in 1997 by developer Alfredo Kojima as part of the GNU Project, Window Maker was initially named WindowMaker but renamed with a space to avoid conflict with unrelated British software for the window and door industry.[3][4] It quickly gained popularity for its faithful recreation of NeXTSTEP's look and feel, including appicons for minimized windows and a dock for launching applications, and was included as a default option in several Linux distributions during the late 1990s and early 2000s.[4][2] Ported to FreeBSD in 2000, it has since been maintained by a global community of contributors, with development resuming after a hiatus and the latest stable version, 0.96.0, released on August 5, 2023, incorporating bug fixes and enhancements for modern systems.[4][1] Key features include highly configurable dynamic menus, keyboard shortcuts, and human-readable configuration files editable via a graphical preferences tool, alongside support for themes, clips (taskbars), and dockable applets known as dockapps.[1][2] Its design prioritizes speed and efficiency, making it suitable for resource-constrained environments, while maintaining compatibility with GNUstep applications for a cohesive OpenStep-like experience on Unix-like operating systems.[2] Window Maker remains available in major Linux distribution repositories and continues to attract users seeking a minimalist yet feature-rich alternative to heavier desktop environments.[1]Introduction
Overview
Window Maker is a free and open-source window manager for the X Window System, designed to emulate the look and feel of the NeXTSTEP graphical user interface while providing integration support for the GNUstep desktop environment.[1][5] It operates as a stacking window manager with optional semi-automatic tiling capabilities, allowing users to manage windows in a lightweight and customizable manner on Unix-like operating systems. Although primarily developed for GNUstep, Window Maker functions effectively as a standalone window manager without requiring the full desktop environment.[1] The software is licensed under the GNU General Public License version 2.0 or later (GPL-2.0-or-later) and is written primarily in the C programming language, ensuring broad compatibility and ease of compilation on various Unix-like systems such as Linux, BSD variants, and others.[5][6] It is noted for its low resource usage, making it suitable for older hardware or systems where efficiency is prioritized, and demonstrates stability across different distributions due to its mature codebase and inclusion in major package repositories.[1][7] As of 2023, Window Maker maintains an active development community, with version 0.96.0 released in August, incorporating updates such as enhanced screen corner functionality and ongoing bug fixes through mailing lists and GitHub contributions.[8][9]Design Philosophy
Window Maker's design philosophy is deeply rooted in emulating the user interface of NeXTSTEP, incorporating elements such as textured windows, a persistent dock for application launching, and icon-based interactions to recreate the elegant and intuitive aesthetic of that system. This inspiration aims to deliver a visually appealing and functionally cohesive experience on X11, prioritizing the beauty and usability of NeXTSTEP without direct dependency on proprietary software.[10][2] The window manager emphasizes a lightweight and efficient architecture, optimized for performance on older hardware by focusing on speed and minimal resource usage rather than resource-intensive animations or effects. Developers have consistently avoided feature creep, concentrating on core window management capabilities with optional aesthetic enhancements to prevent bloat and ensure stability across diverse systems. This approach allows Window Maker to run blazingly fast even on limited resources.[10][1] A key goal is to provide a GNUstep-compatible environment that supports integration with the GNUstep Desktop without necessitating a full installation, enabling standalone operation while maintaining compatibility for users seeking an OpenStep-like workflow. Flexibility and user control are central tenets, facilitated by human-readable text-based configuration files that allow straightforward editing of preferences, keybindings, and themes without specialized tools. This design empowers users to tailor the interface on-the-fly through graphical utilities or direct file modifications, promoting accessibility and personalization.[2][10]History
Origins and Early Development
Window Maker was initiated in 1997 by Brazilian developer Alfredo K. Kojima as a free and open-source X11 window manager designed to emulate the elegant look and feel of NeXTSTEP while providing seamless integration support for the GNUstep desktop environment on UNIX-like systems. Originally named WindowMaker without a space, it was renamed to Window Maker to avoid conflict with unrelated commercial software for the window and door industry.[3][11] The project emerged from the need to recreate NeXTSTEP's polished graphical user interface for open-source users, particularly those employing GNUstep's Objective-C-based framework on X11, offering a lightweight alternative to heavier window managers prevalent at the time.[2] Kojima led the initial development, with significant contributions from Dan Pascu and a growing number of international programmers under the GNU Project, focusing on creating a fast, configurable, and user-friendly tool that prioritized visual fidelity to NeXTSTEP's aesthetic elements like textured windows and icon docks.[2] Early efforts emphasized core functionality, including support for multiple workspaces and keyboard-driven navigation, while ensuring the manager could run standalone or alongside GNUstep applications.[10] The window manager saw rapid early adoption within the Linux community from 1997 to 2000, becoming a staple in repositories of major distributions due to its efficiency and NeXT-inspired appeal, which resonated with users seeking a refined desktop experience on resource-constrained hardware.[1] Development in these years grappled with technical hurdles, such as attaining near-complete compliance with the Inter-Client Communication Conventions Manual (ICCCM) to guarantee interoperability with diverse X11 clients, and incorporating internationalization (i18n) support for over 11 languages to broaden accessibility.[12][10] By the mid-2000s, after consistent releases that refined its stability and features, the project entered a stagnation phase under the original team, culminating in version 0.92.0 as the final official update in 2005, amid shifting priorities in the open-source desktop landscape.[8]Key Releases and Maintenance
After a period of dormancy following the last release under original developer Alfredo Kojima in 2005, Window Maker was revived in 2012 by Carlos R. Mafra, who had been maintaining a Git fork of the project since 2011. This effort led to the release of version 0.95.1 on January 29, 2012, marking the first official update in nearly six years and incorporating numerous bug fixes to address compatibility issues with modern X11 environments.[13] Subsequent releases in the 0.95.x series, such as 0.95.6 in August 2014, introduced support for the ImageMagick library, enabling handling of additional image formats including WebP, SVG, BMP, and TGA.[8] Development continued under Mafra and a small team, with key milestones including version 0.95.7 in August 2015, which added window snapping functionality, and version 0.95.9 in April 2020, which included enhancements such as configurable icon sizes in the switch panel and the replacement of the GNUSTEP_USER_ROOT environment variable with WMAKER_USER_ROOT for user configuration directories.[8] The project maintains its primary Git repository at repo.or.cz, with a mirror on GitHub to facilitate broader access, while primary contributions are coordinated through the wmaker-dev mailing list.[5] Community involvement has grown through GitHub issues, where users report bugs and suggest fixes, supporting ongoing maintenance despite a small developer base.[14] The most recent stable release, version 0.96.0, arrived on August 5, 2023, introducing preliminary XRandR support for dynamic multi-monitor configurations and resolving several long-standing bugs related to window management and rendering.[8] As of November 2025, Window Maker remains actively maintained but with infrequent releases, emphasizing stability and compatibility with contemporary Linux distributions over major new features.[15]Features
Core Functionality
Window Maker provides robust window management capabilities compliant with the Inter-Client Communication Conventions Manual (ICCCM), ensuring standard handling of X11 windows, including proper decoration, focus management, and cooperative replacement with other window managers.[10] This compliance allows seamless interaction with a wide range of X11 applications, maintaining expected behaviors such as resizing, moving, and closing windows without conflicts.[10] The window manager supports multiple workspaces, also known as virtual desktops, enabling users to organize applications across separate screens for improved multitasking and desktop navigation.[10] It also accommodates multi-display configurations through integration with the Xinerama and XRandR extensions, facilitating extended desktops and dynamic resolution changes across multiple monitors.[10] As of version 0.96.0, it includes support for the _NET_WM_FULLSCREEN_MONITORS hint to better handle fullscreen applications on multi-monitor setups.[9] Core window operations include shading, which rolls up a window to its titlebar for quick access; miniaturization, which minimizes windows to iconic representations on the desktop or dock; and flexible maximization options, such as expanding windows to occupy halves (left/right or top/bottom) or quarters of the screen.[10] Additionally, minimized windows can display content previews (apercus), allowing users to view thumbnails of their contents without restoring them fully.[10] Input handling is enhanced by support for keyboard shortcuts, with predefined bindings for common actions like window movement, shading, and workspace switching, and the ability to customize them via configuration tools.[16] As of version 0.96.0, new keyboard shortcut preferences for taking screenshots have been added.[17] Mouse interactions are versatile, accommodating up to nine buttons for gestures such as dragging, right-clicking for menus, and button combinations for rapid operations.[10] Window Maker incorporates integration hints to optimize compatibility with various desktop environments and toolkits, including GNUstep for native-like rendering, GNOME and KDE for session management and panel awareness, and Motif as well as OPEN LOOK for legacy application support.[10] These hints ensure that applications from these ecosystems receive appropriate decorations, positioning, and behavioral cues. Dynamic popup menus form a key interaction mechanism, accessible via right-click on the root window or titlebars, featuring keyboard traversal for navigation using arrow keys and accelerators, along with options to pin menus to the desktop for persistent access.[10] This design promotes efficient command execution and application launching without relying solely on mouse input.[18] As of version 0.96.0, hot corner support has been introduced for triggering actions at screen corners.[8]Visual and Usability Enhancements
Window Maker incorporates a range of built-in themes and over 13 window decoration styles, including textured appearances that emulate the NeXTSTEP aesthetic, allowing users to customize the visual presentation of windows with options like borders, titles, and shading effects.[10] These decorations enhance the desktop's coherence and appeal, providing a polished interface that integrates seamlessly with GNUstep applications.[10] The window manager supports a wide array of icon formats, including XPM, PNG, JPEG, TIFF, GIF, and PPM with alpha channels for transparency, while integration with ImageMagick enables additional formats when compiled accordingly.[10] This versatility ensures high-quality icons across diverse applications, with built-in dithering for low-color displays at 4bpp and 8bpp to maintain visual clarity on older hardware.[10] Furthermore, users can set custom root backgrounds per workspace using the wmsetbg utility, fostering personalized environments without disrupting workflow.[10] Usability is bolstered by optional animations, such as smooth window shading and sliding icon effects during minimization, which add fluidity to interactions while remaining configurable to user preference.[10] The Application Dock serves as a persistent, drag-and-drop panel on the right side of the screen for quick access to running programs, complemented by the Workspace Dock—also known as Clip or Fiend—for workspace-specific tools and extensions.[10] Preferences can be adjusted on-the-fly via the built-in GUI utility, eliminating the need for restarts and enabling real-time tweaks to menus and visuals.[10] Internationalization support covers over 11 locales, ensuring accessible text rendering and menu navigation for global users.[10]Technical Components
WINGs Library
The WINGs library serves as a lightweight widget toolkit written in C, specifically designed for Window Maker to provide essential graphical user interface elements without the overhead of more comprehensive frameworks. Developed to address the need for a simple, efficient solution for window manager tasks, it employs an object-oriented approach in C, featuring encapsulated objects and methods that enable the creation of basic UI components.[19] Central to Window Maker's interface, WINGs handles the rendering of key UI elements such as menus, buttons, and dialogs, allowing the window manager to maintain its NeXTSTEP-inspired aesthetic independently of heavier toolkits like GNUstep. Its core capabilities include support for images and fonts, along with fundamental widgets like buttons, file browsers, color choosers, and text editor dialogs, which facilitate structured configuration through proplist functionality for files like menus and desktop states. This library powers internal utilities, notably the WPrefs configuration tool, ensuring consistent and performant UI interactions within the environment.[19][20] Although integral to Window Maker and primarily designed for its needs, WINGs can be used in conjunction with Xlib for basic UI elements in other X11 applications. However, it is not a general-purpose GUI toolkit; for more complex scenarios, GNUstep is recommended. Integrated from Window Maker's early versions as a core component, the library has evolved with updates in subsequent releases, including expanded image format support (such as WebP and ImageMagick-handled formats like SVG) and enhancements for modern display features like multi-head configurations via Xinerama.[19][8]Dockapps
Dockapps are small, modular utilities designed to embed directly into the Dock of Window Maker, providing compact interfaces for system monitoring, notifications, and other lightweight tasks, typically operating within a 64x64 pixel icon size.[21] These mini-applications enhance the desktop environment by offering at-a-glance information without requiring full window interactions, such as displaying time, weather, email alerts, or resource usage.[21] Integration of dockapps with Window Maker's Dock relies on the libdockapp library, a simple open-source toolkit that simplifies the creation and setup of these utilities by handling essential configurations like event processing and docking protocols.[22] Libdockapp ensures compatibility by providing functions to initialize the application window for seamless embedding into the Dock, allowing dockapps to respond to user interactions like clicks or drags while maintaining the visual style of the NeXTSTEP-inspired interface.[22] Many dockapps leverage the WINGs library for rendering their graphical elements, enabling consistent theming with Window Maker's overall aesthetic. Popular examples include wmclock for time and calendar display, wmmail for email notifications, and wmnet for network monitoring, among over 200 archived options available through dedicated repositories.[21] These utilities demonstrate the versatility of dockapps, covering categories from audio controls like wmMixer to power management tools like wmacpi for battery status. The primary advantages of dockapps lie in their space efficiency and persistent visibility, allowing users to access critical status indicators without cluttering the desktop or switching applications.[21] Their design promotes portability, as they can integrate with other window managers like AfterStep's wharf or JWM's system tray through compatible protocols, broadening their utility beyond Window Maker.[23] Development of dockapps is facilitated by open-source resources, including the libdockapp library and collections hosted in Git repositories such as repo.or.cz/dockapps.git, where developers can clone, build, and customize applications using standard tools like autotools and make.[22][23] This ecosystem encourages community contributions, with build instructions emphasizing compatibility fixes for modern compilers, ensuring ongoing maintenance and innovation in mini-application design.[23]Usage and Configuration
Installation and Setup
Window Maker is available through standard package managers on major Linux distributions, simplifying deployment without manual compilation. On Debian and Ubuntu systems, it can be installed using the Advanced Package Tool (APT) with the commandsudo apt install wmaker, which pulls in necessary dependencies like X11 libraries.[24][25] For Fedora, the package is provided in the official repositories and can be installed via DNF with sudo dnf install WindowMaker.[26] On Arch Linux, Window Maker is available via the Arch User Repository (AUR), installable using an AUR helper like yay -S windowmaker.[7]
For users preferring to build from source, Window Maker requires minimal dependencies centered on X11 development libraries. Essential prerequisites include X11R6 or later, an ANSI C compiler such as GCC, glibc development files, X development headers (including libXext and libXpm version 4.7 or newer), and Xft2 along with its dependencies (freetype2 and fontconfig).[6] Optional libraries enhance functionality, such as libpng (version 0.96 or later) and libtiff (version 3.4 or later) for additional image format support in icons and backgrounds; ImageMagick can provide further image processing capabilities if needed for custom icon handling.[6] Supported platforms include Intel-based GNU/Linux (x86 and x86_64), BSD variants, and Solaris 10/11. To compile, download the source tarball from the official site, extract it, run ./configure (with --help for options like --prefix to set the installation directory, defaulting to /usr/local/bin), followed by make and sudo make install (requiring root access for system directories), and finally ldconfig to update the library cache.[6][27]
Once installed, Window Maker can be launched through various methods suitable for X11 environments. For manual starts, add exec wmaker to the user's ~/.xinitrc file and run startx, which executes the window manager upon X session initialization.[7][27] In display manager setups like GDM or LightDM, select the Window Maker session from the login menu's session chooser. Alternatively, session scripts or direct invocation via wmaker from a terminal can initiate it.[7]
Initial setup involves creating the ~/GNUstep directory and then running the wmaker.inst script as the user to generate personal configuration files and integrate with the X startup process. This script populates it with defaults under ~/GNUstep/Defaults, modifies ~/.xinitrc to auto-launch Window Maker, and may prompt for basic preferences like menu generation using wmgenmenu > ~/GNUstep/Defaults/WMRootMenu.[27][28] The resulting configuration files, stored as property lists in ~/GNUstep/Defaults, provide a functional starting point, with further personalization available through dedicated options.[28]
Customization Options
Window Maker offers extensive customization options for users to personalize its appearance, behavior, and menus, primarily through graphical tools and editable configuration files. The primary graphical configuration utility is WPrefs.app, a built-in tool that allows on-the-fly modifications to preferences and menus without restarting the window manager.[16] Additionally, wmakerconf, a third-party GTK+-based configurator, provides an alternative mouse-driven interface for editing Window Maker attributes, including menus and styles.[29] Configuration is stored in human-readable property list files within the user's GNUstep directory, specifically~/GNUstep/Defaults/WindowMaker for general preferences such as focus modes, window placement, and bindings.[28] Other key files include WMWindowAttributes! for window-specific settings like icons and title bars, and WMRootMenu for the applications menu, which can be edited manually in text or array format.[28] These files support detailed tweaks, such as defining textures with commands like (hgradient, color1, color2) for gradients or specifying fonts in X Logical Font Description format (e.g., Helvetica bold 12).[28]
Themes can be applied to alter the overall visual style, with built-in options accessible via the "Appearance -> Themes" menu item, which invokes the setstyle program.[30] Custom themes are created or installed in ~/GNUstep/Library/WindowMaker/Themes/, requiring a .themed directory containing a style file and supporting images in formats like PNG or XPM; these enhance the window manager's look without delving into core feature modifications.[30]
Menu customization is handled dynamically through the ~/GNUstep/Library/WindowMaker/ directory, where the root menu (WMRootMenu) supports submenus, icons, and application launch commands in property list format.[18] Users can edit menus directly in WPrefs.app or convert text-based menus using the wm-oldmenu2new script.[18]
Keyboard and mouse bindings are defined in the WindowMaker file, allowing assignments like Mod1+Tab (Alt+Tab) for window cycling or Meta+Up for raising windows.[28] Mouse options include button assignments (e.g., right-click for the applications menu) and wheel support for workspace switching, configurable via WPrefs.app's "Mouse" and "Keyboard shortcut" panels.[16]
For advanced personalization, the wmgenmenu utility generates menu structures in property list format from standard input, outputting to ~/GNUstep/Defaults/WMRootMenu for quick regeneration of dynamic menus.[31] Scripting is possible through manual edits to property lists or integration with external tools; for instance, compiling Window Maker with ImageMagick support enables additional image formats (e.g., SVG) for icons and backgrounds without conversion utilities.[10]