antares - a window manager for X

Leon Plickat 13b8190dfd Separated size hint checking into its own function 4 weeks ago
doc 5d8ab4e4ba Version bump to 0.7 1 month ago
dsk 4d7d12335f Fixed nam variables in .desktop file 1 month ago
example_images 559f8680e5 Added another example picture :) 2 months ago
src 13b8190dfd Separated size hint checking into its own function 4 weeks ago
.gitignore 5121b67bd3 Added .gitignore file 5 months ago
LICENSE fb148f6611 Initial commit 5 months ago
Makefile 0a63cbc993 Added support for notifications 2 months ago
README.md dc2042ac5a Fixed a few typos 4 weeks ago

README.md

Warning

This software is not yet ready for actual day to day usage. It handles simple windows, like terminals, rather well, but GUI applications still cause problems and often even crashes.

antares

Antares is a window manager for X. It was written from scratch but is inspired in form, function and code by other window managers (most notably i3 and dwm).

Antares is a tiling window manager, meaning that windows by default are automatically arranged to not overlap. You can however also spawn floating windows, which behave like in a traditional stacking window manager.

Internally, client information is stored in a linear stack, which is reflected in window management: The primary layout displays all windows in a vertical stack. A live configurable amount of windows is displayed in their own stack, the master area, positioned to the left side of the main stack. The secondary layout will arrange all tiled windows into columns of identical size. The tertiary layout places all windows into a Fibonacci spiral/dwindle.

Antares features virtual desktops, so called "workspaces". Each workspace contains separate floating and tiling stacks. Each workspace also has separate gap sizes and layouts.

Antares if configured in the source code. Keybinds, amount of workspaces, colors, fonts, etc... can be changed in config.h. The functions that can be called by keybinds can be configured keybind_functions.c. You can also easily add your own.

Building

Antares depends on Xlib and Cairo.

git clone https://notabug.org/Leon_Plickat/antares
cd antares
make
sudo make install

I tested building on Parabola and Manjaro. Other Arch derivatives will most likely work fine too.

Desktop Environment Integration

Since crude support for desktop windows as well as support for the entire _NET_WM_WINDOW_TYPE_*-gang was added, antares should integrate into all desktop environments that don't do anything fancy or special.

I tested this with XFCE and was quite satisfied. Since antares has the option to limit the space used for displaying windows with paddings (left, right, top and bottom), I had no problem using it with the panel of XFCE.

The most obviously missing feature for desktop environment integration is a --replace flag like some other window managers offer, which I have added to my todo-list.

Todo

These are the things I want to / should add. Although I will work on these in a mostly random order, the bold ones have a high priority, while the cursive ones are just things which are "nice to have" and therefore enjoy a low priority. More might appear out of nowhere.

  • Fix Multi-Monitor support
  • Prevent client windows moving themselves inside the container window
  • Fix flickering of title bars (double buffering?)
  • Fix GUI windows behaving weirdly and crashing randomly
  • Handle transient windows
  • --replace flag
  • Control socket to enable scripting
  • Close button and layer switching button in the title bar
  • Side panel / start screen (I might write an external program for this)
  • Acme-like mouse chording
  • Respect size hints.
  • Move clients between stacks (meaning move a client from floating to tiling, vise versa, or to a different workspace
  • Support for multiple desktop windows; Maybe a "special windows"-stack?
  • Workspace switching indicator like in openbox
  • Support for EWMH_NET_ACTIVE_WINDOW and friends
  • Resizing floating windows
  • Respect window class hints
  • Set EWMH desktop hints
  • Respond to EWMH desktop requests (switching workspaces, but not adding or removing workspaces)
  • Per-Workspace gaps

Contributions

Contributions are welcome! You can send your patches either via email or submit a pull request. Please respect the coding style, which is basically Allman-style with a few quirks. And please stay in scope: If you submit something like a layout, it will be accepted, but a window manager does not need to read emails, do any compositing or control a robot army. Also please do not add any large dependencies: If you patch needs anything like GTK or Qt, it will be denied, except for when you can offer a very good reason for the inclusion.