summaryrefslogtreecommitdiffstats
path: root/Operations.hs
AgeCommit message (Collapse)Author
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
2007-05-04refactoring, style, comments on new layout codeDon Stewart
darcs-hash:20070504023618-9c5c1-4b5a4021212b08fedff7f8ec3d8b4234431aada3
2007-05-04added mirrorLayout to mirror arbitrary layoutsJason Creighton
darcs-hash:20070504014653-b9aa7-1709cb0b718a7a058021c76fb95f9654c43f54b1
2007-05-04Fix layout switching orderSpencer Janssen
darcs-hash:20070503235632-a5988-98863d7067876591bd9da2b33d062bfe2c5b42fd
2007-05-03Avoid the unsafe pattern match, in case Config.hs has no layoutsSpencer Janssen
darcs-hash:20070503214007-a5988-f427a9747f76859219abf029c2f550e7dbec258f
2007-05-03add support for extensible layouts.David Roundy
darcs-hash:20070503144750-72aca-f44bca4573837e12fc1f89333b55e04abd52787c
2007-05-03comments. and stop tracing events to stderrDon Stewart
darcs-hash:20070503075821-9c5c1-d5bc043872adb9f95c23e0fde87ae11f16108785
2007-04-30Make border width configurableSpencer Janssen
darcs-hash:20070430163515-a5988-9dea5188c30830fd8b3135f7cb5beffd7b90dcb9
2007-04-30Add Config.hs-boot, remove defaultLayoutDesc from XConfSpencer Janssen
darcs-hash:20070430162647-a5988-70420c2db283eb1585c96d977e5ac5ca3d0d1532
2007-04-30Add XConf for values that don't change.Spencer Janssen
darcs-hash:20070430054715-a5988-a74f5e2868f47443a69b0cd821fa690e43a4a7e1
2007-04-30Control.Arrow is suspicious, add an explicit importSpencer Janssen
darcs-hash:20070430053623-a5988-b7fd0de8376993fdab9ce99bf3c525105b597b33
2007-04-30configurable border colorsJason Creighton
This also fixes a bug where xmonad was assuming a 24-bit display, and just using, eg, 0xff0000 as an index into a colormap without querying the X server to determine the proper pixel value for "red". darcs-hash:20070430043859-b9aa7-9467ff583ec95144e5baa088e4b1536a725e7bc6
2007-04-23force window border to 1pxJason Creighton
darcs-hash:20070423050824-b9aa7-3fc8d9ad35a886852f035f8dabb0abaaee912ede
2007-04-19use prefixed record names in latest X11-extrasJason Creighton
darcs-hash:20070419032244-b9aa7-b3a4ef75d313d5c960775a75ddc91dbdae6485c7
2007-04-19WindowSet is better than WorkSpaceSpencer Janssen
darcs-hash:20070419015430-a5988-1abfb64ca77e80031074f4a01f1f4e1a2e5efbac
2007-04-19Parameterise StackSet by two index types, rather than breaking abstractionDon Stewart
darcs-hash:20070419012705-9c5c1-3aa97e02123af08c3f4500c9e9c3bb7ab4121652
2007-04-19Promote now swaps focused window with master windowDon Stewart
This means other windows are unaffected. The change from the previous cycling behaviour was felt necessary, since cycling isn't a terribly useful operation. Some properties that hold: focus is unchanged by promotion promote is idempotent (promoting twice does nothing) the focused and master window will swap their positions in the stack darcs-hash:20070418224236-9c5c1-4539f9f397e181f91dc9743e3ffac4b5796c0fac
2007-04-16test for xmonad in path first, before restartingDon Stewart
darcs-hash:20070416025541-9c5c1-16be9a7ee5e4d1c3d319be7890f0812c56986116
2007-04-15fix typo.David Roundy
darcs-hash:20070415055616-72aca-b81f926fe289216aa59af135f34db069eefce0a2