About a year ago, I wrote about making your own window manager in Python, and how to extend this to use Twisted as your window manager’s main loop. Around the time I wrote those articles, I also wrote a tiling window manager, called Romulus, for my own personal use. I consider it to be unfinished, but at the request of a workmate, I’ve made the code available.
The rest of this post is technical in nature and does not go into detailed explanations. Do not expect to find it useful unless you are willing to fiddle with things and dig around for answers.
This project is licensed under version 3 of the GNU General Public License. To download, use, modify or distribute it you must agree with the license.
The project is in two parts, twinman (a framework) and Romulus itself. Let me stress that this project is still unfinished and is far from polished. Some notes if you’d like to try using it:
- alt+v, alt+h to split vertically / horizontally
- alt+enter to open terminal, alt+shift+enter to lock screen
- alt+h,k,l,m to move focus, alt+shift+h,k,l,m to move window between panes
- detects resolution on start / reload, so after running xrandr, restart (there’s a menu option to very crudely reload)
- alt+t toggles the tab bar
- alt+shift+g labels a window with a given letter
- alt+g goes to the window with the given label
I usually run Romulus from the launcher which I’ve included in the public Romulus repository. The launcher has three buttons, one for Romulus, one for xterm and one for quit (logout). This means that if Romulus does crash all your windows stay alive because the launcher is still alive.
Also, the launcher loads key=value lines from ~/.environment and sets them in os.environ before starting Romulus, so you can set your PATH, PYTHONPATH etc. that way since it’s not being run from a bash shell so it won’t have .bashrc. At the moment the launcher has some paths hard-coded into it, so you’ll have to fiddle with it to make it work for your system. You should also refer to this article for tips about testing window managers (either using Xephyr or by running a second X server).
5 Responses to Romulus, My Window Manager