A minimal floating window manager for X11, written in C++.
- 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 - ace uses only 5 RAM megabytes
ace/
├── include/ header files
│ ├── window_manager.h
│ ├── ewmh.h
│ ├── process.h
│ └── config.h
├── src/ source files
│ ├── main.cpp
│ ├── window_manager.cpp
│ ├── ewmh.cpp
│ ├── process.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 scripts in assets/.
assets/install.sh 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 ./assets/install.sh
assets/delete.sh removes both of these:
sudo ./assets/delete.sh
Both scripts 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
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:
sudo pacman -S xorg-server-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.
The screenshots will be updated shortly, so they won't be available for now.
This project is licensed under the GNU General Public License v3.0 (GPLv3).
See the LICENSE file for the full text.
