A minimal floating window manager for X11, written in C++. One of biggest plus: ace uses only 5 RAM megabytes
- Maps new windows as soon as they are created
- Move a window:
Alt+ left mouse button + drag - Resize a window:
Alt+ right mouse button + drag - Quit the window manager:
Super+Ctrl+Q - Close a window:
Super+Q - Open the application launcher:
Super+D - Open a terminal:
Super+Space - Switch workspace:
Super+0-9 - Make fullscreen:
Super+F
ace/
├── include/ header files
│ ├── window_manager.h
│ ├── ewmh.h
│ ├── process.h
│ ├── workspaces.h
│ └── config.h
├── src/ source files
│ ├── main.cpp
│ ├── window_manager.cpp
│ ├── ewmh.cpp
│ ├── process.cpp
│ ├── workspaces.cpp
│ └── config.cpp
├── Makefile
├── README.md
├── CONTRIBUTING.md
└── ... (Other files)
If you want to select ace as a session from your login manager
(LightDM, GDM, SDDM, etc.), use the commands in Makefile.
make install copies the ace binary to /usr/bin and
assets/ace.desktop to /usr/share/xsessions, so it shows up in the
session picker on the login screen:
sudo make clean install
make delete removes both of these:
sudo make delete
Both commands require root, since they write to /usr/bin and
/usr/share/xsessions.
ace itself doesn't launch anything on its own — it relies on external programs configured by you:
On first run, ace creates a config file at ~/.config/ace/config (if it
doesn't already exist)
You can change alacritty (or any other program) to any terminal emulator installed on your
system (e.g. xterm, kitty, foot) — ace will launch whatever you put
there when you press Super + Space.
- g++ with C++17 support
- libX11 (headers and library)
On Arch Linux:
sudo pacman -S libx11 xorg-server-xephyr
On Debian based:
sudo apt install libx11-dev xserver-xephyr
make
The ace binary will be produced in the project root. You can write make help to see Makefile command list
For testing without leaving your current session, use Xephyr:
Xephyr :1 -screen 1280x800 &
DISPLAY=:1 ./ace
Alternatively, just run:
make run
This checks that Xephyr is installed, builds ace if needed, then starts
Xephyr and launches ace on DISPLAY=:1.
Then, in that same DISPLAY=:1, you can launch any X11 application, e.g.:
DISPLAY=:1 xterm
To use ace as your main window manager, add this to ~/.xinitrc:
exec /path/to/ace
and start your session with startx. Or select in your greeter
This project is licensed under the GNU General Public License v3.0 (GPLv3).
See the LICENSE file for the full text.



