
xcompmgr + samurai-x + (bodged) rounded corners
sx is one year old today! ( or close enuff anyway ). We've come a long way but still plenty to do...
Talking of which lately Iv mostly been working on a status bar/panel for sx. Iv implemented configurable "slots" which are how you build up your status bar and Iv written slots that work as labels, clocks, active desktop and active app all of which also support updating via dbus. The status bar is in yahiko if you want to try it out for yourself.
Unfortunately the status bar code has brought up some problems with sx-desktops not handling sticky ( and other ) windows correctly which means Im now working on a new focus stack
Anyway ( Im writing this while cooking pasta )... Thanks to all who have worked on, tested and helped with samurai-x. I cant wait to see sx in another years time!
(Because I know fred will never blog about it... ;)) samurai-x is now using a new DBus module called yaydbus. Why? Because its written in pure python ( we like that! ) and no more nasty gobject loop, perfect!
Plus I think I know how Im going to write the new statusbar Im working on ( which will use DBus a fair bit ).
Exciting...
(You can find yaydbus in the samurai-x git repo btw)
Well after the release we had about 6000 visitors to the sx site! woo! Thats about 5500 more than usual! ;) Not got much more to say about the release except that Iv now fixed the download problem with ooxcb.
What we've done since? Fred has re-arranged ooxcb quite a bit and started wrapping some more extensions *whisper* composite *whisper*. Ive been trying to get bbpager ( and hopefully other pagers ) to work and have been looking at ewmh stuff. Now plugins can tell the app what hints they provide support for.
Cant think of anything else right now...
firstly: Yay!
The release announcment looked like this ( just in case you missed it ):
We are happy to release version 0.2 of samurai-x. samurai-x is a window manager written in pure python using ctypes, xcb and cairo. A lot has happened since version 0.1 including: * a new plugin system - the core samurai-x is now very small with all other functionality added via plugins * a new xcb binding - ooxcb - for more information see http://docs.samurai-x.org/ooxcb/ * lots of plugins! we now have plugins for most common features found in other window managers For more information, including installation instructions check http://samurai-x.org or join us in #samuraix on irc.freenode.net Big thanks to all have helped out with samurai-x but especially to Friedrich Weber for writing ooxcb and all the other work on samurai-x he has done and also to Jochen Maes for hosting the project.
So whats in store for sx 0.3 and beyond? Hopefully:
So stay tuned! Lots of exciting code to come!
A plugin that has been asked for a few times ( ... ok - once! ) was something to allow putting clients onto specific desktops. What was really needed was just a simple plugin to perform actions on new clients. So now there is sx-autoclient which means you can do things like this in your config:
import logging log = logging.getLogger(__name__) def test_rule(screen, client): log.info('test rule!') client.actor.configure(x=100, y=100) config = { 'core.plugins': [ #... 'sxautoclient', ], #... 'autoclient.rules': [test_rule], }
...and all your new clients will be moved to 100,100.
Ok its still a bit low level, but once Iv added some simple rule functions for matching window names and classes and some easy actions it will be much better.
Trying to write a new window decorator for samurai-x at the moment. Not an easy task!. Its using my yahiko library which has led me to fix a few bugs. Widget libs are always such a pain in the ass! I see they are discussing one on the pyglet google group at the moment. If only we had a compositing wm we could use their code in an opengl window - zoom zoooom... *evil grin*
Anyway yahiko seems to be working ok with a X window as a child widget...more later
Grrrrrr... it just wont work with samurai-x. I can run a service outside of sx and talk to it with a client, but I cant run the service inside sx!. http://samurai-x.org/browser/sx-dbus/sxdbus.py I even created a gobject main loop plugin to run this! more grrrrr's....
Anyway... I went back to a bit of hacking with the sx-web plugin and made it use webob and mako templates. Mixed in with a theme and some js magic from jquery and we've got something that looks rather nice!
Finally Ive done it and written a window manager in pure python, lots and lots of ctypes, but no actual c code. Presenting Samurai-X
The feature set is pretty small at the moment, just window resizing/moving, virtual desktops and a statusbar (drawn with cairo). Not sure exactly what the full feature list will look like, probably something like awesome/fluxbox - but with more python goodness