Commit Graph

91 Commits

Author SHA1 Message Date
David Roundy
0e5f8b03e8 eliminate ugly OldLayout. 2007-09-20 15:52:37 +00:00
David Roundy
3f03dcb5c1 move Layout stuff into class (hokey first cut). 2007-09-14 21:59:59 +00:00
Don Stewart
f1aa00f96f Add StackSet.focusMaster (mod-m) to move focus to master 2007-09-27 21:39:37 +00:00
Spencer Janssen
c6f346f887 Eliminate Operations.sink too 2007-09-17 21:40:52 +00:00
Spencer Janssen
e87a111a50 Remove Operations functions which have StackSet equivalents, just use 'windows foo' instead 2007-09-17 21:19:53 +00:00
Alex Tarkovsky
3b5ca225f6 Change manpage token @@ to %! to avoid conflicts with Haddock (xmonad) 2007-09-16 23:52:29 +00:00
Alex Tarkovsky
874a4264c3 Add missing insert markers for generate-configs.sh in Config.hs 2007-09-07 12:04:14 +00:00
Spencer Janssen
bccf8dd5f8 Use show rather than string hacks 2007-09-05 20:28:16 +00:00
David Roundy
41e3b073c8 switch WorkspaceId to String. 2007-08-20 11:36:58 +00:00
Spencer Janssen
82dd5b8119 Alex Tarkovsky's docstring patch updated for conflicts 2007-09-05 19:35:58 +00:00
Spencer Janssen
49cebc6130 Add docstrings for mouse controls 2007-08-24 04:59:39 +00:00
Don Stewart
aaba52043d comment only: example of 2 monitor gaps 2007-08-21 03:25:38 +00:00
Spencer Janssen
ca0d87664b Fix new bug in screen switching 2007-08-16 21:56:29 +00:00
David Roundy
ec0995a3a6 change workspaces to [WorkspaceId] 2007-08-14 00:37:22 +00:00
Peter De Wachter
d0482810b3 Tweak dmenu binding
Add an "eval", so quotes and environment variables get evaluated
according to sh rules.
2007-07-17 19:07:22 +00:00
Spencer Janssen
bfd638d818 Operations.screenWorkspace: return Nothing when the screen does not exist 2007-07-07 22:38:42 +00:00
David Roundy
e517aedfa1 make Layouts able to layout whatever they like. 2007-06-19 15:08:16 +00:00
Andrea Rossato
e1885f27e1 haddock compatibility 2007-06-10 12:37:46 +00:00
Don Stewart
6365601c77 Move state logging into Config.hs, via logHook :: X () 2007-06-10 06:19:32 +00:00
Don Stewart
7ae7029b50 Enable logging of state changes to stdout 2007-06-05 08:37:35 +00:00
Don Stewart
84f22f7102 heads up: polish config.hs. moves tiling-local values into lexical scope. removes wide' as an explicit mode (it's mirror tall') 2007-06-03 05:47:40 +00:00
Chris Mears
7ae4bc8f39 Fix out-of-date comment in Config.hs. 2007-06-02 11:43:12 +00:00
Jason Creighton
72a50ead89 make mouse bindings configurable 2007-06-02 04:06:47 +00:00
Spencer Janssen
68e6643356 Revert accidental change to border color 2007-05-31 14:55:09 +00:00
Don Stewart
777cf28bdf clean up mouse code a bit 2007-05-31 08:53:08 +00:00
Jason Creighton
3cb64d7461 first shot at a floating layer
This is a first attempting at a floating layer:

mod-button1: move window
mod-button2: swapMaster
mod-button3: resize window

mod-t: make floating window tiled again

Moving or resizing a window automatically makes it floating.

Known issues:

Hard to manage stacking order. You can promote a window to move it to the top,
(which you can do with mod-button2) but it should be easier than that.

Moving a window by dragging it to a different Xinerama screen does not move it
to that workspace.

Code is ugly.
2007-05-31 04:47:33 +00:00
Spencer Janssen
fbfbb14658 Really change restart keybinding this time 2007-05-30 06:14:54 +00:00
Spencer Janssen
79a9c58f92 HEADS UP: Change restart keybinding to mod-q 2007-05-30 06:10:44 +00:00
Spencer Janssen
bc2e6b2112 HEADS UP: Change restart keybinding to mod-q 2007-05-30 06:10:44 +00:00
Spencer Janssen
89417a6e25 Fix 'refresh' doc string 2007-05-29 02:04:46 +00:00
Don Stewart
c023e9a681 make 'tall' layout the default on startup. more useful for new users 2007-05-29 01:46:11 +00:00
Don Stewart
5818e5a7fc ensure !! won't go out of bounds in modifyGap 2007-05-28 07:06:09 +00:00
Don Stewart
94b64e7035 help man script 2007-05-28 03:38:46 +00:00
Spencer Janssen
257aa4776f Document mod-n 2007-05-28 03:35:36 +00:00
Don Stewart
c613073cb6 support per-screen gap settings. you can have different gaps on individual screens now 2007-05-28 03:15:01 +00:00
Don Stewart
1d2c5ca35a Use (Int,Int,Int,Int) for arbitrary gaps on any side of the screen 2007-05-28 02:51:35 +00:00
Don Stewart
bb4bd97c87 mod-b, toggle on or off the status bar gap 2007-05-27 12:59:28 +00:00
Don Stewart
a64c9f1856 Add new config value, defaultMenuGap, for specifying a gap for a status bar
By default, it is 0 (set in Config.hs), but set this to a pixel count to
get a permanent gap at the top of the screen. You can then at startup
launch dzen, and it will run in this gap, and not be obscured by other
windows.

Perfect for a persistant status bar.
2007-05-27 12:27:02 +00:00
Jason Creighton
8cfe050be7 Generate keybindings section in manpage from Config.hs 2007-05-27 06:29:14 +00:00
Don Stewart
60f4f4e5e4 HEADS UP: change key binding for swapLeft/Right and IncMaster
The use of arrow keys for swapLeft/Right clash with firefox's back
button. Use the more intuitive mod-shift-jk for this. (It's a movement
operation, after all).

This clashes with IncMaster, so we use mod+comma and mod+period for
these (i.e. the keys mod < and mod > , to move windows to and from the
master area).

While we're here, replace the use of the terms 'left' and 'right' for
navigation, in comments and identifiers, with 'up' and 'down' instead.
Hence mod-j == focusDown. Far more intuitive for people (dons) who live
in fullscreen mode and have vim movement wired into their central
nervous system.

Principle of least VI surprise: movement down or up means using j and k.
2007-05-26 11:14:53 +00:00
Spencer Janssen
8d6b914409 Formatting only 2007-05-25 21:44:14 +00:00
Spencer Janssen
654e64b772 Use --resume by default 2007-05-23 19:14:18 +00:00
bobstopper
bcf305cd1e add swapLeft and swapRight 2007-05-22 05:00:08 +00:00
Spencer Janssen
a9d7b7ef49 Experimental support for a beefier restart. 2007-05-21 19:46:53 +00:00
Spencer Janssen
3c2ad2509e Put restart in the X monad 2007-05-21 19:07:49 +00:00
Spencer Janssen
1c4b0a51d8 Fix mod-j/k bindings 2007-05-21 03:02:53 +00:00
Don Stewart
77e46027ed HEADS UP: Rewrite StackSet as a Zipper
In order to give a better account of how focus and master interact, and
how each operation affects focus, we reimplement the StackSet type as a
two level nested 'Zipper'. To quote Oleg:

    A Zipper is essentially an `updateable' and yet pure functional
    cursor into a data structure. Zipper is also a delimited
    continuation reified as a data structure.

That is, we use the Zipper as a cursor which encodes the window which is
in focus. Thus our data structure tracks focus correctly by
construction! We then get simple, obvious semantics for e.g. insert, in
terms of how it affects focus/master. Our transient-messes-with-focus
bug evaporates. 'swap' becomes trivial.

By moving focus directly into the stackset, we can toss some QC
properties about focus handling: it is simply impossible now for focus
to go wrong. As a benefit, we get a dozen new QC properties for free,
governing how master and focus operate.

The encoding of focus in the data type also simplifies the focus
handling in Operations: several operations affecting focus are now
simply wrappers over StackSet.

For the full story, please read the StackSet module, and the QC
properties.

Finally, we save ~40 lines with the simplified logic in Operations.hs

For more info, see the blog post on the implementation,

    http://cgi.cse.unsw.edu.au/~dons/blog/2007/05/17#xmonad_part1b_zipper
2007-05-20 07:00:53 +00:00
Jason Creighton
4206c4bae9 variable number of windows in master area 2007-05-16 03:14:37 +00:00
Don Stewart
0928bb484a Constrain layout messages to be members of a Message class
Using Typeables as the only constraint on layout messages is a bit
scary, as a user can send arbitrary values to layoutMsg, whether they
make sense or not: there's basically no type feedback on the values you
supply to layoutMsg.

Folloing Simon Marlow's dynamically extensible exceptions paper, we use
an existential type, and a Message type class, to constrain valid
arguments to layoutMsg to be valid members of Message.

That is, a user writes some data type for messages their layout
algorithm accepts:

  data MyLayoutEvent = Zoom
                     | Explode
                     | Flaming3DGlassEffect
                     deriving (Typeable)

and they then add this to the set of valid message types:

  instance Message MyLayoutEvent

Done. We also reimplement the dynamic type check while we're here, to
just directly use 'cast', rather than expose a raw fromDynamic/toDyn.

With this, I'm much happier about out dynamically extensible layout
event subsystem.
2007-05-04 08:16:49 +00:00
Spencer Janssen
9d3d2f8503 More Config.hs bugs 2007-05-03 23:46:07 +00:00