[Pharo-project] Tiling windows

Adrian Lienhard adi at netstyle.ch
Wed May 25 10:24:41 CEST 2011


I like it :)

Adrian

On May 24, 2011, at 22:25 , laurent laffont wrote:

> On Tue, May 24, 2011 at 9:48 AM, Stéphane Ducasse <stephane.ducasse at inria.fr
>> wrote:
> 
>> Ok we need a 1.3 version because now we get excited.
>> 
> 
> Here's a first shot (not integrated to TaskBarMorph though) which works in
> 1.3:
> 
> Gofer it
> squeaksource: 'TilingWindowManager';
> package: 'TWM';
> load.
> TWMBar new open.
> 
> The real manager is TilingWM. Try:
> 
> (TilingWM forWorld: World) tileVisibleWindows.
> (TilingWM forWorld: World) tileBrowsers.
> (TilingWM forWorld: World) tileWorkspaces.
> 
> 
> Laurent.
> 
> 
> 
>> Stef
>> 
>> On May 24, 2011, at 8:51 AM, laurent laffont wrote:
>> 
>>> 
>>> 
>>> 2011/5/24 Gastón Dall' Oglio <gaston.dalloglio at gmail.com>
>>> Laurent and corious :)
>>> 
>>> I add some TasklistMorph behavior. With the open list (cmd-rigth or
>> cmd-left):
>>> * cmd-up: maximize all windows
>>> * cmd-down: minimize all windows
>>> * cmd-b: apply SystemBrowser windows's filter
>>> * cmd-w: apply Worspace windows's filter
>>> * cmd-a: remove windows's filter
>>> 
>>> ** The cmd-b work in 1.2.1, in 1.3 you have to change
>> TasklistMorph>>keyStroke: because I use OBSystemBrowser class by way of
>> example and therefore does not perform properly filtered.
>>> 
>>> 
>>> I did not understand until I enable the setting "Keep task list open" :)
>>> 
>>> I've started a TilingWindowManager project (I will upload it this evening
>> on SS) so we can put all our stuff + tests without polluting TaskBar &
>> Tasklist too much.
>>> 
>>> Indeed, after 3 days I can't live without the tiling buttons :)
>>> 
>>> Laurent.
>>> 
>>> 
>>> 
>>> 2011/5/23 laurent laffont <laurent.laffont at gmail.com>
>>> 2011/5/23 Gastón Dall' Oglio <gaston.dalloglio at gmail.com>
>>> Laurent, I attached a package I've added some improvements to your work,
>> I have found useful. Of course I am not knowledgeable about morph, just
>> added some and perhaps can serve as inspiration.
>>> 
>>> Thanks Gastón, I like the idea. It will be a good step forward in having
>> better window management. Now we should rewrite this clean + tests (may be
>> adding the notion of widgets like in KDE / Gnome).
>>> 
>>> As windows fill all the space, would be good to have a button to open the
>> world menu.
>>> 
>>> I would love having the possibility of splitting the World + back and
>> forward configuration like Emacs winner mode, keyboard driven.
>>> 
>>> Since several days I use http://most-advantageous.com/optimal-layout/ on
>> OSX and there's some great ideas too.
>>> 
>>> Laurent.
>>> 
>>> 
>>> 
>>> 2011/5/23 laurent laffont <laurent.laffont at gmail.com>
>>> On 1.2:
>>> 
>>> Gofer it
>>>      squeaksource: 'LaurentLSandbox';
>>>      version: 'Polymorph-Widgets-LaurentLaffont.388';
>>>      load.
>>> 
>>> 
>>> Then open or move a window so the TaskBar is updated and you have a new
>> "magic" button on bottom left.
>>> 
>>> (note this is hacky actually, I will write a nicer version this week if
>> people like it).
>>> 
>>> Laurent.
>>> 
>>> On Mon, May 23, 2011 at 9:06 AM, Stéphane Ducasse <
>> stephane.ducasse at inria.fr> wrote:
>>> send a cs that we can play with it :)
>>> 
>>> On May 22, 2011, at 8:25 PM, laurent laffont wrote:
>>> 
>>>> Hi,
>>>> 
>>>> what do you think of adding this in Pharo ?
>>>> 
>>>> |taskbar tileWindowsBlock|
>>>> 
>>>> tileWindowsBlock := [
>>>>  |windows numberOfColumns numberOfRows windowWidth windowHeight|
>>>>  windows := (World submorphs select: [:m| m isSystemWindow and: [m
>> isNotMinimized]]) asOrderedCollection.
>>>>  numberOfColumns := windows size sqrtFloor.
>>>>  numberOfRows := (windows size / numberOfColumns) rounded.
>>>>  windowWidth := World width // numberOfColumns..
>>>>  windowHeight := World height  - taskbar height // numberOfRows.
>>>> 
>>>>  Matrix
>>>>    rows: numberOfRows
>>>>    columns: numberOfColumns
>>>>    tabulate: [:row :column|  |window|
>>>>          windows ifNotEmpty: [
>>>>              window := windows remove: windows first.
>>>>              window
>>>>              bounds: (
>>>>                  ((column - 1 * windowWidth) @ (row - 1 *
>> windowHeight))
>>>>                  extent: (windowWidth) @  windowHeight)
>>>>          ]
>>>>    ]
>>>> ].
>>>> 
>>>> 
>>>> taskbar := (World submorphs detect: [:m| m isTaskbar]).
>>>> 
>>>> taskbar
>>>>  addMorph: (IconicButton new
>>>>            target: tileWindowsBlock;
>>>>            actionSelector: #value;
>>>>            labelGraphic: taskbar theme smallWindowIcon;
>>>>            color: Color transparent;
>>>>            yourself).
>>>> 
>>>> 
>>>> Laurent Laffont - @lolgzs
>>>> 
>>>> Pharo Smalltalk Screencasts: http://www.pharocasts.com/
>>>> Blog: http://magaloma.blogspot.com/
>>>> Developer group: http://cara74.seasidehosting.st
>>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>> 
>> 
>> 




More information about the Pharo-project mailing list