summaryrefslogtreecommitdiffstats
path: root/Operations.hs
AgeCommit message (Collapse)Author
2007-06-03comments onlyDon Stewart
darcs-hash:20070603071556-9c5c1-244aeb0d684f78ae0d3495547064a1203cd36762
2007-06-03Polish core layout code. Lifts limitation on nmaster > 1. it may be 0 nowDon Stewart
darcs-hash:20070603064306-9c5c1-7cea709e0ea2b15f6ae395a6942072d91b1e97f2
2007-06-03heads up: polish config.hs. moves tiling-local values into lexical scope. ↵Don Stewart
removes `wide' as an explicit mode (it's `mirror tall') darcs-hash:20070603054740-9c5c1-1cdabf3f5bb2ac2592fc94d7d3ef51621077d3f8
2007-06-02only grab button{1,2,3} for click-to-focus (scrollwheel shouldn't focus)Jason Creighton
darcs-hash:20070602052605-b9aa7-a3aa510c7d439b3169757f644c92107250d8db94
2007-06-02make mouse bindings configurableJason Creighton
darcs-hash:20070602040647-b9aa7-d7bad13c4919882368872a88f04a678308162be6
2007-06-01commented out implementation state logging. if someone has a client, we can ↵Don Stewart
enable this darcs-hash:20070601085626-9c5c1-668bec95074ab7050c0c8105cf7ec9c2a1c7e1f3
2007-06-01ignore numlock/capslock on mouse bindingsJason Creighton
darcs-hash:20070601015137-b9aa7-51c6b9ec428c2d16d65b196384fa2ce953dda245
2007-06-01now we handle transients properly, and restack windows, refresh from focus is okDon Stewart
darcs-hash:20070601022329-9c5c1-067bd51825f075e0813ecea5d2124617b406ad95
2007-06-01Rename withWorkspace to withWindowSet.glasser
darcs-hash:20070601001325-64353-3ea08019b13ac470d7d2c60cbdea61de7d580c8c
2007-05-31comments on why fullscreen tiling doesn't work with `implicit' floatingDon Stewart
darcs-hash:20070531090537-9c5c1-923390025493738d7d9b2e6afbb361362acb2e9a
2007-05-31clean up mouse code a bitDon Stewart
darcs-hash:20070531085308-9c5c1-73ed940708aa9a369b0345c0d2b2a4708a231e67
2007-05-31first shot at a floating layerJason Creighton
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. darcs-hash:20070531044733-b9aa7-c96d5263e1d3447e91f436920f4d047050ce55d9
2007-05-28forgot to set focus in 'focus'. this restores the old behaviourDon Stewart
darcs-hash:20070528134547-9c5c1-d3eb8cfe7bf7293e85f957106d9d9d540524e9b6
2007-05-28don't refresh on focus eventsDon Stewart
leads to a race. this will affect how gaps are redrawn when moving to a new screen with the mouse. darcs-hash:20070528133127-9c5c1-9676939dbb1155129b976146baf929ca19d52a12
2007-05-28apply gap to each screenDon Stewart
darcs-hash:20070528044722-9c5c1-7f8faeac3a2a375f58c94c822f16dc8e3beaea38
2007-05-28be sure to reset the gap list on rescreenDon Stewart
darcs-hash:20070528031835-9c5c1-34c9fc2931a6daa8fc3e63385782f43b097e293f
2007-05-28support per-screen gap settings. you can have different gaps on individual ↵Don Stewart
screens now darcs-hash:20070528031501-9c5c1-beaadbacb5efc1ce5998aba41fbb3b2c68cdf0d1
2007-05-28Use (Int,Int,Int,Int) for arbitrary gaps on any side of the screenDon Stewart
darcs-hash:20070528025135-9c5c1-3c0f63ac557da57cd268cd0129b9ce90692631e4
2007-05-27refactor onlyDon Stewart
darcs-hash:20070527154353-9c5c1-6ef13fd2212f3a18a3050c47d71eb250ec4ec683
2007-05-27comments on alternative gap movement policiesDon Stewart
darcs-hash:20070527153211-9c5c1-0a36be7dd8b8181597f21e362ac735b343746b79
2007-05-27when focus is called from an event, better refresh too, since it might have ↵Don Stewart
switched workspaces (so gap follows screen focus) darcs-hash:20070527151942-9c5c1-27e63c884e4003fc003b1928ed28412e01a21764
2007-05-27only set gap on current physical screenDon Stewart
darcs-hash:20070527150805-9c5c1-6774cc60f8f39b8ac16c465d7ab0d2884a984fc1
2007-05-27revert raiseWindow in focus. Leads to some funny races with pop ups. ↵Don Stewart
Harmless with status bar support now darcs-hash:20070527134505-9c5c1-7cf8be20d1976afdd694da946ae72cfb537fa209
2007-05-27mod-b, toggle on or off the status bar gapDon Stewart
darcs-hash:20070527125928-9c5c1-a16246810db9d4abfe81d0d5814721b64f59a14c
2007-05-27Add new config value, defaultMenuGap, for specifying a gap for a status barDon Stewart
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. darcs-hash:20070527122702-9c5c1-2a3ca82463b3bab21556674936b1bf8a86ba6356
2007-05-27raiseWindow when settings focus. The focused window should always be raised, ↵Don Stewart
I think darcs-hash:20070527094105-9c5c1-8607589fd688646f38b62804c964f24f71f56b5c
2007-05-27Be a bit more conservative with -O flags, and GC. Hope to avoid runtime GC bugDon Stewart
darcs-hash:20070527074438-9c5c1-af8256d1690de2b48e86f2085106f74954c0738b
2007-05-27refactor code smell in Operation.hsDon Stewart
darcs-hash:20070527072135-9c5c1-4ae38462432bab057eb5b3ac8a4abb055bd02ec6
2007-05-26HEADS UP: change key binding for swapLeft/Right and IncMasterDon Stewart
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. darcs-hash:20070526111453-9c5c1-3242145ee5b51eb070a7dc3663f0d6cc01671d5c
2007-05-22add swapLeft and swapRightbobstopper
darcs-hash:20070522050008-ee4f8-6073519fac239b25e5e265ce3995ee75683fcb81
2007-05-22WibbleSpencer Janssen
darcs-hash:20070522043844-a5988-964764300d3bae3751718d2ce9c583a2c8e710af
2007-05-22Add preliminary randr supportSpencer Janssen
darcs-hash:20070522040228-a5988-1ae9fc6bd773b32bc4a4c43aeab556857929fef4
2007-05-22Remove the magic '2'Spencer Janssen
darcs-hash:20070521234535-a5988-1f7d9a7ac5bc14119c249f640946af8e57917030
2007-05-21Move special case 'view' code into 'windows'.Spencer Janssen
This is ugly right now -- I promise to clean it up later. darcs-hash:20070521215646-a5988-dbd38c5fa2ebaac4022cdc60a3371af249c445f5
2007-05-21Remove redundant fromIntegralsSpencer Janssen
darcs-hash:20070521165123-a5988-02f5d32547cfd814fa615ae86c93b824e58b3a12
2007-05-21Make screen info dynamic: first step to supporting randrSpencer Janssen
darcs-hash:20070521152759-a5988-736e7caea5252a77bb01d7631cce0db4287ff6f2
2007-05-21Move xinerama current/visible/hidden workspace logic into StackSet directly.Don Stewart
darcs-hash:20070521055253-9c5c1-4cc51fadb10609340f798aece25097afeae92dbb
2007-05-21s/workspace/windowset/Jason Creighton
darcs-hash:20070521040330-b9aa7-5a36f8a4f90cc4116ffa3532a14bf405bfb942bb
2007-05-21only hide old workspace on view if the old workspace is not visible (Xinerama)Jason Creighton
darcs-hash:20070521031435-b9aa7-2a3825712b36c5ef267c89286006d0ea0073c57d
2007-05-20Be explicit about suspicious System.Mem importSpencer Janssen
darcs-hash:20070520165741-a5988-a02abd4cb1ad1518a43c203b6b8965563b0e72a8
2007-05-20HEADS UP: Rewrite StackSet as a ZipperDon Stewart
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 darcs-hash:20070520070053-9c5c1-241f7ee7793f5db2b9e33d375965cdc21b26cbd7
2007-05-16variable number of windows in master areaJason Creighton
darcs-hash:20070516031437-b9aa7-03d82cb2565a45fa0e17a34c4c20740b51ff625c
2007-05-16Use camelCase, please.Spencer Janssen
darcs-hash:20070516014454-a5988-48a5ca0e1ee75c6636a669e28484016eecc0f2fe
2007-05-15beautify tileDavid Roundy
darcs-hash:20070515154011-72aca-1557c99da679a2be1e52f365f6ae72cfaf40fc87
2007-05-12put doLayout in the X monad.David Roundy
darcs-hash:20070512215301-72aca-59213ac37c38e57d6ffed1d518afd4729f1744c9
2007-05-08Make 'index' return Nothing, rather than errorSpencer Janssen
darcs-hash:20070508151200-a5988-3da2bb925de6c610ed9b7a5ab5bccedb3483d032
2007-05-08Redundant parensSpencer Janssen
darcs-hash:20070508150412-a5988-abf7b3c1e96051cb0cb964f6a94239ac76f83a4e
2007-05-04since we just ignore type errors, no need to derive ShowDon Stewart
darcs-hash:20070504094143-9c5c1-44d5edcd4b261a2d93b054f48e7818b0c9e58db2
2007-05-04Constrain layout messages to be members of a Message classDon Stewart
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. darcs-hash:20070504081649-9c5c1-954b406e8c21c2ca4428960e4fc1f9ffb17fb296
2007-05-04Handle empty layout listsSpencer Janssen
darcs-hash:20070504045644-a5988-68a6d650bacab936f893b96bf866696da3f73436