Skip to content

Title


License C++ Platform PRs welcome build

A minimal floating window manager for X11, written in C++.

Features

  • 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

Project layout

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)

System-wide installation

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.

Apps Dependencies

ace itself doesn't launch anything on its own — it relies on external programs configured by you:

  • a terminal emulator, defaulting to alacritty
  • an application launcher, defaulting to rofi

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.

Dependencies

  • g++ with C++17 support
  • libX11 (headers and library)

On Arch Linux:

sudo pacman -S libx11

Building

make

The ace binary will be produced in the project root. You can write make help to see Makefile command list

Running

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.

Screenshots

The screenshots will be updated shortly, so they won't be available for now.

License

This project is licensed under the GNU General Public License v3.0 (GPLv3). See the LICENSE file for the full text.

About

Simple and minimal wm for Arch linux

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages