AtlasWM is a dynamic, customizable X11 window manager written in C, designed with flexibility and efficiency in mind. It provides a modern approach to window management while maintaining a lightweight footprint. (Not even 10MB of RAM and less than 0.1% of CPU!)
- Dynamic Workspace Management: Support for multiple workspaces with customizable names
- Flexible Layouts: Multiple built-in layouts including:
- Dwindle with gaps (default)
- Floating
- Full/Monocle
- Multi-Monitor Support: Full Xinerama support with intuitive monitor management
- Customizable Gaps: Both inner and outer gaps support through configuration
- Hot Reloading: Configuration can be reloaded without restarting the window manager
- IPC Support: Control AtlasWM through external commands
- Startup Programs: Automatically launch applications on startup
- Comprehensive Logging: Detailed logging system for debugging and monitoring
- Xlib (X11)
- Xft
- Xinerama
For Debian/Ubuntu:
sudo apt install libx11-dev libxft-dev libxinerama-dev libfontconfig1-dev
For Arch Linux:
sudo pacman -S libx11 libxft libxinerama fontconfig
For NixOS:
Work in progress See flake.nix for Nix flake configuration.
- Clone the repository:
git clone https://github.com/jasper-clarke/atlaswm.git
cd atlaswm
- Build and install:
make
sudo make install
AtlasWM uses TOML for configuration. Create a config file at ~/.config/atlaswm/config.toml
:
See the example config file for a complete list of available options.
Default key bindings can be customized in the config file. Available actions include:
spawn
: Launch applicationskillclient
: Close the focused windowreload
: Reload AtlasWM configurationcyclefocus
: Cycle through windowstogglefloating
: Toggle floating mode for windowsfocusmonitor
: Focus different monitorsmovetomonitor
: Move windows between monitorsviewworkspace
: View a specific workspacemovetoworkspace
: Move a window to a specific workspaceduplicatetoworkspace
: Duplicate a window to a specific workspace, this means you can have a single window on two workspaces (on the same monitor) at the same time!toggleworkspace
: Toggle a workspace, this pulls the chosen workspace's windows onto the current workspace in a preview fashion (the windows are only visually there but still belong to the original workspace they came from)quit
: Exit AtlasWM
- Add to your
.xinitrc
:
exec atlaswm
- Start X server:
startx
- To reload configuration:
atlaswm reload
AtlasWM maintains logs at ~/.atlaslogs
. The log level can be configured in development, and logs include:
- INFO: General operation information
- WARNING: Non-critical issues
- ERROR: Critical issues that don't prevent operation
- DEBUG: Detailed debugging information
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.
AtlasWM draws inspiration from various window managers in the X11 ecosystem while introducing modern features and configuration options. Special thanks to the X.org community and all contributors.
AtlasWM is currently in active development. While it's stable for daily use, you may encounter occasional bugs. Please report any issues you find through the GitHub issue tracker.