Saturday, May 28, 2011

Tiling Window Manager

I love Emacs because of editing speed and fast buffer switching among a lot neat features.

This week I've tried to make Pharo a little better on window management. This video shows the progress (thanks Gastón and Patrick for help and ideas).

Next step: KeyMapping integration + history à la Emacs winner-mode.

Sorry for my soooooooo awful english (tired ....).


Update 05/31/2011: you can load last version with colored theme with:
Gofer it
  squeaksource: 'TilingWindowManager';
  package: 'TWM';
  load.
(Smalltalk at: #StandardUITheme) beCurrent.
(Smalltalk at: #TWMBar) showTWMBar:true.


Tested on PharoCore 1.2 and Pharo 1.3.

Now this has support for world snapshot, that means you can arrange the windows and take a snapshot of the layout. Then you can restore these layouts later. (icons camera, <, > and trash). I'm not entirely satisfied with this, thanks for feedback.

In Pharo 1.3 there's initial integration with KeyMapping. To load:

Gofer it
  squeaksource: 'ShortWays';
  package: 'ConfigurationOfKeymapping';
  load.

(Smalltalk at: #ConfigurationOfKeymapping project version: '1.7') load.


Then in settings browser > Keymappings > Tiling Window Managers you have all actions of the dock mapped.

You can choose a Layout Strategy in settings.

Actually there's Horizontal (default) and Vertical (last used windows fills all remaining space) strategies.

To add your own just subclass TWMLayoutStrategy and implement #tileWindows:



To load TWM:
Gofer it
 squeaksource: 'TilingWindowManager';
 package: 'TWM';
 load.


I also think the UI theme Patrick has cleaned fits better with TilingWM:
Gofer it
 squeaksource: 'PBASandbox';
 package: 'PBSandbox';
 load.
 
StandardUITheme beCurrent.

7 comments:

  1. Awesome!

    Of course I had to tweak it a bit: I added NautilusUI to the list in TilingWM>>browsers and hacked TilingWM>>tileWindows: to prefer columns over rows (dang those wide screens). Good job on making thoseplaces so easy to find.

    Any plans on adding configurable keyboard bindings or layout strategies like the awesome window manager has?

    Thanks for the very useful tool.

    ReplyDelete
  2. For layout strategies I can do it. Could you commit your package to the repository ? With tests updated ?

    Keyboard bindings is planned.

    I add NautilusUI to my branch.

    ReplyDelete
  3. I'll try to find the time to do this. Right now my clients seem to feel the spring turning to summer ... getting all antsy :-)

    s.

    ReplyDelete
  4. Hi. Tiling Window Manager works great. Thanks for producing it :)
    Do you know Moom for MacOS? Hava a look for very beautiful UI ideas: http://manytricks.com/moom/

    Best regards, hb.

    ReplyDelete
  5. Thank you Helene ! On OSX I use http://most-advantageous.com/optimal-layout/support.html

    ReplyDelete
  6. Excellent post, It's a really friendly article. Good Blogger

    ReplyDelete