Announcement: Bluetile

Hello list! Here we go now, the 'official' announcement of Bluetile: A modern tiling window manager with a gentle learning curve. As noted before, it is the result of my school project I presented a while ago (http://thread.gmane.org/gmane.comp.lang.haskell.xmonad/7458/). Here is a brief description of Bluetile: Bluetile is a tiling window manager for X based on xmonad. Windows are arranged automatically to tile the screen without gaps or overlap, maximising screen use. Bluetile's focus lies on making the tiling paradigm easily accessible for users coming from traditional window managers by drawing on known conventions and making all features available using the mouse. It also tries to be usable 'out of the box', making configuration unnecessary. Features include: * Hybrid approach: Stacking window layout & tiling layouts available * Maximizing & minimizing windows in all layouts * All features accessible from mouse, as well as keyboard * Good multihead support * Designed to integrate with the GNOME desktop environment Website at http://projects.haskell.org/bluetile/ The website has some information about installing Bluetile, but it basically boils down to 'cabal install bluetile'. (Note: The package bluetileutils is no longer necessary, I merged it in with bluetile.) Keyboard shortcuts are also documented on the website. It should be no problem to have xmonad and Bluetile installed at the same time. I made the modified versions of xmonad and xmonad-contrib that Bluetile depends on (called xmonad-bluetilebranch and xmonad-contrib-bluetilebranch) hidden, so they should not conflict with recompiling xmonad.hs for example. Still, I might have missed something. Let me know if you run into any problems. Also, let me mention at this point, that the readers of this list are probably not at all in my target audience. :-) Since you all pretty much write your own window manager (by modifying xmonad.hs), Bluetile will seem more like a watered-down version of xmonad. Keep in mind though, that it just wants to give an easy glimpse into the possiblities of tiling window managers for a newcomer with little time on their hands. Once hooked, they can later upgrade to the 'real deal' if they want to tinker. :-) The website also contains links to the repositories. As I said before, I will try to look into merging changes back to the xmonad code base. In retrospect I feel like it was a very good choice to pick xmonad as a basis for my project. Thx for a great window manager and a great code base! :-) I hope Bluetile can be useful in some way as well. I appreciate any feedback! Cheers! Jan

Hey Jan,
2009/9/3 Jan Vornberger
Hello list!
Here we go now, the 'official' announcement of Bluetile: A modern tiling window manager with a gentle learning curve. As noted before, it is the result of my school project I presented a while ago (http://thread.gmane.org/gmane.comp.lang.haskell.xmonad/7458/). Here is a brief description of Bluetile:
Congratulations! <snip> A packaging question. The original xmonad uses xmessage for compile errors. Do you still depend on this in any way? -Yaakov

Hi Yaakov! On Thu, Sep 03, 2009 at 10:28:10PM +0200, Yaakov Nemoy wrote:
Hey Jan,
2009/9/3 Jan Vornberger
: Hello list!
Here we go now, the 'official' announcement of Bluetile: A modern tiling window manager with a gentle learning curve. As noted before, it is the result of my school project I presented a while ago (http://thread.gmane.org/gmane.comp.lang.haskell.xmonad/7458/). Here is a brief description of Bluetile:
Congratulations!
<snip>
A packaging question. The original xmonad uses xmessage for compile errors. Do you still depend on this in any way?
The code that calls xmessage on compile errors is still there. But since Bluetile does not support any kind of recompilation I don't see how this code path could ever be triggered. And I don't use it anywhere else. So no, xmessage is not needed for Bluetile. Regards, Jan

Hi Jan, Am Donnerstag, den 03.09.2009, 20:02 +0200 schrieb Jan Vornberger:
Here we go now, the 'official' announcement of Bluetile: A modern tiling window manager with a gentle learning curve.
this might be something that should be shipped by Debian. Do you already know of some users of bluetile on Debian that would benefit from such a package?
It should be no problem to have xmonad and Bluetile installed at the same time. I made the modified versions of xmonad and xmonad-contrib that Bluetile depends on (called xmonad-bluetilebranch and xmonad-contrib-bluetilebranch) hidden, so they should not conflict with recompiling xmonad.hs for example. Still, I might have missed something. Let me know if you run into any problems.
Is there a chance to merge the -bluetilebranch’es into the mainline, so that bluetile and xmonad can use the same library? Otherwise, packaging it for Debian will be quite some hassle.
The website also contains links to the repositories. As I said before, I will try to look into merging changes back to the xmonad code base.
Ah, ok, there is the answer :-). Jan, please make sure you ping me once it’s possible to build bluetile against the released versions of xmonad and xmonad-core. Greetings, Joachim -- Joachim "nomeata" Breitner Debian Developer nomeata@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C JID: nomeata@joachim-breitner.de | http://people.debian.org/~nomeata

Hi Joachim! On Fri, Sep 04, 2009 at 04:43:33PM +0200, Joachim Breitner wrote:
Am Donnerstag, den 03.09.2009, 20:02 +0200 schrieb Jan Vornberger:
Here we go now, the 'official' announcement of Bluetile: A modern tiling window manager with a gentle learning curve.
this might be something that should be shipped by Debian. Do you already know of some users of bluetile on Debian that would benefit from such a package?
I know from a few users that would be much more likely to try Bluetile if it were available as a package for Debian. On that note, thx a lot for your xmonad packages! I'm a Debian user myself, and while I had heard of xmonad before, it wasn't until it entered Debian testing that I installed it and started using it. Thank you! :-)
Ah, ok, there is the answer :-). Jan, please make sure you ping me once it’s possible to build bluetile against the released versions of xmonad and xmonad-core.
Will do. However, it will probably be some time until then. I have a feeling, that some of my patches will be controversial here on xmonad's mailing list. :-) But we shall see. :-) Cheers, Jan

If you don't think it's straying too far off topic, or too time consuming would it be possible to get a brief summary of the kinds of changes you needed to make to xmonad? I'm particularly intrigued by those title bars you have on the windows as it would be nice to get something like that on floating windows or in certain kinds of layouts with plain vanilla xmonad (and yes, I'm aware of the tab bars). On Fri, Sep 11, 2009 at 6:40 PM, Jan Vornberger < Jan.Vornberger@informatik.uni-oldenburg.de> wrote:
Hi Joachim!
On Fri, Sep 04, 2009 at 04:43:33PM +0200, Joachim Breitner wrote:
Am Donnerstag, den 03.09.2009, 20:02 +0200 schrieb Jan Vornberger:
Here we go now, the 'official' announcement of Bluetile: A modern tiling window manager with a gentle learning curve.
this might be something that should be shipped by Debian. Do you already know of some users of bluetile on Debian that would benefit from such a package?
I know from a few users that would be much more likely to try Bluetile if it were available as a package for Debian. On that note, thx a lot for your xmonad packages! I'm a Debian user myself, and while I had heard of xmonad before, it wasn't until it entered Debian testing that I installed it and started using it. Thank you! :-)
Ah, ok, there is the answer :-). Jan, please make sure you ping me once it’s possible to build bluetile against the released versions of xmonad and xmonad-core.
Will do. However, it will probably be some time until then. I have a feeling, that some of my patches will be controversial here on xmonad's mailing list. :-) But we shall see. :-)
Cheers,
Jan _______________________________________________ xmonad mailing list xmonad@haskell.org http://www.haskell.org/mailman/listinfo/xmonad

On Thu, Sep 17, 2009 at 02:08:22AM -0400, Kyle Murphy wrote:
If you don't think it's straying too far off topic, or too time consuming would it be possible to get a brief summary of the kinds of changes you needed to make to xmonad? I'm particularly intrigued by those title bars you have on the windows as it would be nice to get something like that on floating windows or in certain kinds of layouts with plain vanilla xmonad (and yes, I'm aware of the tab bars).
Unfortunately the decoration is the one part, which right now isn't very modular at all. So if you would use Bluetile's decoration, it would probably pull in a bunch of stuff that you may or may not actually want. But what kind of decoration are you looking for? Do you also want those 'buttons' for minimizing, maximizing and closing? Because then, obviously, you would also need the layout modifiers that minimize and maximize. Or do you only want the decoration without those buttons? Then it's not much different from what is currently in XMC.Layout.Decoration (expect for a bunch of improvements to make decoration work better in a dual-head setup. I don't know if you have such a setup?) One more thing: This won't work on floating windows. The decoration is a layout modifier, so will only affect windows that are managed by a layout (which floating windows aren't). Those 'floating windows' you see on Bluetile's screenshots is the effect of an extra floating/stacking layout. Bluetile discourages the use of the floating layer and instead provides this extra layout. It's a little bit like XMC.Layout.SimpleFloat but much improved - again especially for dual-head setups - but requires a modification to xmonad core (the PositionStore). Regards! Jan

On Thu, Sep 17, 2009 at 09:25:47PM +0200, Jan Vornberger wrote:
On Thu, Sep 17, 2009 at 02:08:22AM -0400, Kyle Murphy wrote:
If you don't think it's straying too far off topic, or too time consuming would it be possible to get a brief summary of the kinds of changes you needed to make to xmonad? I'm particularly intrigued by those title bars you have on the windows as it would be nice to get something like that on floating windows or in certain kinds of layouts with plain vanilla xmonad (and yes, I'm aware of the tab bars).
Unfortunately the decoration is the one part, which right now isn't very modular at all. So if you would use Bluetile's decoration, it would probably pull in a bunch of stuff that you may or may not actually want.
But what kind of decoration are you looking for? Do you also want those 'buttons' for minimizing, maximizing and closing? Because then, obviously, you would also need the layout modifiers that minimize and maximize.
Or do you only want the decoration without those buttons? Then it's not much different from what is currently in XMC.Layout.Decoration (expect for a bunch of improvements to make decoration work better in a dual-head setup. I don't know if you have such a setup?)
One more thing: This won't work on floating windows. The decoration is a layout modifier, so will only affect windows that are managed by a layout (which floating windows aren't). Those 'floating windows' you see on Bluetile's screenshots is the effect of an extra floating/stacking layout. Bluetile discourages the use of the floating layer and instead provides this extra layout. It's a little bit like XMC.Layout.SimpleFloat but much improved - again especially for dual-head setups - but requires a modification to xmonad core (the PositionStore).
What's particularly beautiful to me about Bluetile is the way windows can be moved and resized using only the mouse, both when tiled and when "floating". Xmonad seems to be designed to cater for keyboard-only use, and the support for that is fantastic. But I use Xmonad on a tablet PC, so mouse-only use is also important to me. Currently Xmonad isn't so great for the latter. I'd love to see these parts of Bluetile make it into Xmonad or Xmonad-contrib. How easy would that be to do? I guess for starters it would need your extra floating/stacking layout... Best, Toby -- Dr T. S. Cubitt Quantum Information Theory group Department of Mathematics University of Bristol email: toby@dr-qubit.org web: www.dr-qubit.org

On Tue, Sep 22, 2009 at 08:47:07PM +0100, Toby Cubitt wrote:
What's particularly beautiful to me about Bluetile is the way windows can be moved and resized using only the mouse, both when tiled and when "floating". Xmonad seems to be designed to cater for keyboard-only use, and the support for that is fantastic. But I use Xmonad on a tablet PC, so mouse-only use is also important to me. Currently Xmonad isn't so great for the latter.
I'd love to see these parts of Bluetile make it into Xmonad or Xmonad-contrib. How easy would that be to do? I guess for starters it would need your extra floating/stacking layout...
Those are definitely things that are useful on their own. The floating layout is called PositionStoreFloat but needs some modification to the core. For the tiled cases, I wrote MouseResizableTile which is basically a version of XMC.Layout.ResizableTile that can also be resized with the mouse. That one should actually be pretty straightforward to use with xmonad. To switch windows with the mouse, there is a WindowSwitcher decoration. It needs the big blob of decoration code, that hopefully can be modularized a little bit more. I'm working on it. :-) Regards, Jan

Jan.Vornberger:
On Tue, Sep 22, 2009 at 08:47:07PM +0100, Toby Cubitt wrote:
What's particularly beautiful to me about Bluetile is the way windows can be moved and resized using only the mouse, both when tiled and when "floating". Xmonad seems to be designed to cater for keyboard-only use, and the support for that is fantastic. But I use Xmonad on a tablet PC, so mouse-only use is also important to me. Currently Xmonad isn't so great for the latter.
I'd love to see these parts of Bluetile make it into Xmonad or Xmonad-contrib. How easy would that be to do? I guess for starters it would need your extra floating/stacking layout...
Those are definitely things that are useful on their own. The floating layout is called PositionStoreFloat but needs some modification to the core. For the tiled cases, I wrote MouseResizableTile which is basically a version of XMC.Layout.ResizableTile that can also be resized with the mouse. That one should actually be pretty straightforward to use with xmonad. To switch windows with the mouse, there is a WindowSwitcher decoration. It needs the big blob of decoration code, that hopefully can be modularized a little bit more.
I'm working on it. :-)
What does the xmonad team need to do to help you merge this wonderful code in?

On Wed, Sep 23, 2009 at 09:32:31AM -0700, Don Stewart wrote:
Jan.Vornberger:
I'm working on it. :-)
What does the xmonad team need to do to help you merge this wonderful code in?
For now I'm good working on it on my own, it'll just take some time. But if it's too much and I need help, I'll ask. Thx for the offer! Cheers, Jan

Hi, Le 03 Sep 2009 20:02, Jan Vornberger a écrit:
* Maximizing & minimizing windows in all layouts
It may be a dumb question, but is there a way to use the GNOME window decorator to draw windows border and titlebar ? I just had a look at the screenshot and I feel it may have a better look with such a decoration ?
* Designed to integrate with the GNOME desktop environment
By saying that, you are okay to depend on GNOME features, aren't you ? Cheers, Olivier

Hi! On Sun, Sep 06, 2009 at 03:15:55PM +0200, Olivier Schwander wrote:
Hi,
Le 03 Sep 2009 20:02, Jan Vornberger a écrit:
* Maximizing & minimizing windows in all layouts
It may be a dumb question, but is there a way to use the GNOME window decorator to draw windows border and titlebar ? I just had a look at the screenshot and I feel it may have a better look with such a decoration ?
I agree, it would be really nice to be able to use the GNOME/Metacity window decorator. I don't know if there is an easy way to do this. I did look into using the window decorator of Compiz. They seperated the decoration part into an extra manager, that talks with the core application. That way it's easy to write different decoration manager and they can use stuff like the GTK toolkit, without having that dependency in Compiz itself. So I figured, it might be possible to reuse those decoration managers with Bluetile. There isn't too much documentation, how exactly it works, but this is what I gathered (mostly from these two posts: http://lists.freedesktop.org/archives/compiz/2006-April/000009.html and http://lists.freedesktop.org/archives/compiz/2007-April/001935.html): Compiz creates input-only frame windows around all real windows and sets a property on them. The decoration manager finds those frame windows by the property and creates pixmaps that contain the decoration. Those are then somehow communicated back to the window manager and can be drawn. There are some libraries (libdecoration, libwnck) to help with some off this stuff. Unfortunately it was beyond my skills with X11 programming and interfacing with C applications from Haskell to do this in the time I had. There might be other problems as well, I'm not sure. It would be a nice feature though, I agree.
* Designed to integrate with the GNOME desktop environment
By saying that, you are okay to depend on GNOME features, aren't you ?
I guess so - do you have anything particular in mind? I guess 'integrated' is a little too much to say here. I think it's still fairly desktop environment agnostic, but I only tested it with GNOME, so that's why I mention it. The only 'integration' is, that some Metacity keyboard shortcuts are available and gnome-terminal is the default terminal (but if that is not available, it falls back to xterm). Regards! Jan

Hi there! Just wanted to let you know, that I created a short screencast showing some of Bluetile's features. If you are curious about Bluetile, but don't want to install it, this should give you a good overview! :-) http://vimeo.com/6661713 Regards, Jan

On Sun, Sep 20, 2009 at 02:10:25PM +0200, Jan Vornberger wrote:
Hi there!
Just wanted to let you know, that I created a short screencast showing some of Bluetile's features. If you are curious about Bluetile, but don't want to install it, this should give you a good overview! :-)
Beautiful! -Brent
participants (8)
-
Brent Yorgey
-
Don Stewart
-
Jan Vornberger
-
Joachim Breitner
-
Kyle Murphy
-
Olivier Schwander
-
Toby Cubitt
-
Yaakov Nemoy