Introducing velox! - January 30, 2010


For the past couple months, I have been working on a tiling window manager called velox. Velox aims to be a little more featureful than dwm, and slightly smaller than awesome. Like awesome, I am using the xcb library for communicating with the X server.


Velox started out as mwm, but I soon found that this name was also used for the Motif Window Manager. I eventually settled on velox, a latin word meaning swift or rapid, which I hope to be a prominent feature of velox.


These are several key aspects that I tried to focus on during the development of velox.

No dependencies on external languages for extensions

Many related window managers turn to other languages to allow customization. However, this adds another layer of bloat and in my opinion can be avoided through the use of modules. Configuration in velox is strictly setting values. If you want to add any functionality you should do so through a module.

Easy to use and robust support for modules

I think this is where velox differs from most window managers I have looked at. Velox tries to use modules where appropriate for any functionality a user might want to modify. This includes things like layouts and starting applications.

Currently, velox comes with the following modules:

  • layout_tile: The standard tiling layout, similar to awesome, dwm, and xmonad.
  • layout_grid: A grid layout which tries to give each window an equal amount of space, similar to the one included in xmonad. This layout is essentially a tile layout without a master and an automatically adjusted number of columns.
  • spawn: A module which uses keybindings to run certain commands. Currently, these commands are not configurable, but I plan on adding that functionality in the near future.
  • wallpaper: A module which uses feh to set the wallpaper using a random image from a wallpaper directory.
  • mpd: This module establishes a connection with mpd, and binds the multimedia keys to perform their expected functionality.

Clean and consise source code

I've tried to keep velox's source very organized and consistent throughout its development. I hope that the source remains this way and velox itself will continue to include only core functionality.

Use xcb effectively

Throughout the source of velox, I have tried to use xcb effectively by making requests early, and checking replies as late as I could. This leads to increased efficiency because xcb is an asynchronous library.

Current Status

I released version 0.0.1 of velox yesterday, but I still feel it needs a bit of work before people start using it. I have been using velox as my window manager for well over a month now, and my biggest grievance is a little bit of quirky behavior which I hope to correct soon.

Velox currently has absolutely no support for multiple monitors and refuses to touch anything but the first one. I will be getting a new laptop soon, which I can use for testing a multiple monitor setup, but this is not one of my top priorities.

Floating window support for velox is limited at best. There is no way to manually move or resize floating windows at the moment. I hope to work on this is in the near future.

However, I really think that velox is starting to finally come together, and has the potential to become a nice alternative to other tiling window managers.


Valid XHTML 1.0 StrictValid CSS!
Generated on Thu, 12 Dec 2013 20:28:11 UTC