aboutsummaryrefslogtreecommitdiffstats
path: root/Operations.hs (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* Be explicit about suspicious System.Mem importSpencer Janssen2007-05-201-1/+1
| | | | darcs-hash:20070520165741-a5988-a02abd4cb1ad1518a43c203b6b8965563b0e72a8.gz
* HEADS UP: Rewrite StackSet as a ZipperDon Stewart2007-05-201-194/+162
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.gz
* variable number of windows in master areaJason Creighton2007-05-161-10/+13
| | | | darcs-hash:20070516031437-b9aa7-03d82cb2565a45fa0e17a34c4c20740b51ff625c.gz
* Use camelCase, please.Spencer Janssen2007-05-161-10/+10
| | | | darcs-hash:20070516014454-a5988-48a5ca0e1ee75c6636a669e28484016eecc0f2fe.gz
* beautify tileDavid Roundy2007-05-151-11/+18
| | | | darcs-hash:20070515154011-72aca-1557c99da679a2be1e52f365f6ae72cfaf40fc87.gz
* put doLayout in the X monad.David Roundy2007-05-121-4/+6
| | | | darcs-hash:20070512215301-72aca-59213ac37c38e57d6ffed1d518afd4729f1744c9.gz
* Make 'index' return Nothing, rather than errorSpencer Janssen2007-05-081-3/+3
| | | | darcs-hash:20070508151200-a5988-3da2bb925de6c610ed9b7a5ab5bccedb3483d032.gz
* Redundant parensSpencer Janssen2007-05-081-1/+1
| | | | darcs-hash:20070508150412-a5988-abf7b3c1e96051cb0cb964f6a94239ac76f83a4e.gz
* since we just ignore type errors, no need to derive ShowDon Stewart2007-05-041-1/+1
| | | | darcs-hash:20070504094143-9c5c1-44d5edcd4b261a2d93b054f48e7818b0c9e58db2.gz
* Constrain layout messages to be members of a Message classDon Stewart2007-05-041-20/+24
| | | | | | | | | | | | | | | | | | 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 darcs-hash:20070504081649-9c5c1-954b406e8c21c2ca4428960e4fc1f9ffb17fb296.gz
* Handle empty layout listsSpencer Janssen2007-05-041-7/+8
| | | | darcs-hash:20070504045644-a5988-68a6d650bacab936f893b96bf866696da3f73436.gz
* refactoring, style, comments on new layout codeDon Stewart2007-05-041-39/+58
| | | | darcs-hash:20070504023618-9c5c1-4b5a4021212b08fedff7f8ec3d8b4234431aada3.gz
* added mirrorLayout to mirror arbitrary layoutsJason Creighton2007-05-041-10/+9
| | | | darcs-hash:20070504014653-b9aa7-1709cb0b718a7a058021c76fb95f9654c43f54b1.gz
* Fix layout switching orderSpencer Janssen2007-05-041-2/+1
| | | | darcs-hash:20070503235632-a5988-98863d7067876591bd9da2b33d062bfe2c5b42fd.gz
* Avoid the unsafe pattern match, in case Config.hs has no layoutsSpencer Janssen2007-05-031-1/+1
| | | | darcs-hash:20070503214007-a5988-f427a9747f76859219abf029c2f550e7dbec258f.gz
* add support for extensible layouts.David Roundy2007-05-031-18/+30
| | | | darcs-hash:20070503144750-72aca-f44bca4573837e12fc1f89333b55e04abd52787c.gz
* comments. and stop tracing events to stderrDon Stewart2007-05-031-4/+9
| | | | darcs-hash:20070503075821-9c5c1-d5bc043872adb9f95c23e0fde87ae11f16108785.gz
* Make border width configurableSpencer Janssen2007-04-301-1/+1
| | | | darcs-hash:20070430163515-a5988-9dea5188c30830fd8b3135f7cb5beffd7b90dcb9.gz
* Add Config.hs-boot, remove defaultLayoutDesc from XConfSpencer Janssen2007-04-301-4/+4
| | | | darcs-hash:20070430162647-a5988-70420c2db283eb1585c96d977e5ac5ca3d0d1532.gz
* Add XConf for values that don't change.Spencer Janssen2007-04-301-9/+11
| | | | darcs-hash:20070430054715-a5988-a74f5e2868f47443a69b0cd821fa690e43a4a7e1.gz
* Control.Arrow is suspicious, add an explicit importSpencer Janssen2007-04-301-1/+1
| | | | darcs-hash:20070430053623-a5988-b7fd0de8376993fdab9ce99bf3c525105b597b33.gz
* configurable border colorsJason Creighton2007-04-301-7/+4
| | | | | | | | 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.gz
* force window border to 1pxJason Creighton2007-04-231-0/+1
| | | | darcs-hash:20070423050824-b9aa7-3fc8d9ad35a886852f035f8dabb0abaaee912ede.gz
* use prefixed record names in latest X11-extrasJason Creighton2007-04-191-1/+1
| | | | darcs-hash:20070419032244-b9aa7-b3a4ef75d313d5c960775a75ddc91dbdae6485c7.gz
* WindowSet is better than WorkSpaceSpencer Janssen2007-04-191-1/+1
| | | | darcs-hash:20070419015430-a5988-1abfb64ca77e80031074f4a01f1f4e1a2e5efbac.gz
* Parameterise StackSet by two index types, rather than breaking abstractionDon Stewart2007-04-191-3/+3
| | | | darcs-hash:20070419012705-9c5c1-3aa97e02123af08c3f4500c9e9c3bb7ab4121652.gz
* Promote now swaps focused window with master windowDon Stewart2007-04-191-4/+1
| | | | | | | | | | | | | 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.gz
* test for xmonad in path first, before restartingDon Stewart2007-04-161-3/+7
| | | | darcs-hash:20070416025541-9c5c1-16be9a7ee5e4d1c3d319be7890f0812c56986116.gz
* fix typo.David Roundy2007-04-151-1/+1
| | | | darcs-hash:20070415055616-72aca-b81f926fe289216aa59af135f34db069eefce0a2.gz
* Ignore window entries while moving windows. This should fix all the focus ↵Spencer Janssen2007-04-131-0/+11
| | | | | | preservation problems. darcs-hash:20070413083702-a5988-20863eaa042f45a1421a6f171d9a8c42a7854883.gz
* add license headers to two missing filesDon Stewart2007-04-111-0/+12
| | | | darcs-hash:20070411081042-9c5c1-05a68bbf16969dbb8854b37ab9b72e042d7fac9a.gz
* clean up tiling code a teensy bit, and comment on the interaction between ↵Don Stewart2007-04-111-5/+14
| | | | | | focus, master, and cycling direction between the modes darcs-hash:20070411080747-9c5c1-0f6e9cc92481db8ba812976ee8d3cb0f7dde6626.gz
* Change semantics of 'promote'.Don Stewart2007-04-111-7/+3
| | | | | | | | | | | | Previously 'promote' would move the currently focused window into the master position in tiled mode. This was *almost* a cycle of the windows, but not quite (depending on where the focus was, it was in fact a cycle). Now we do the obvious generalisation, and just cycle the current window stack. Simpler to understand, simpler to reason about. darcs-hash:20070411073456-9c5c1-3ee88f9ac46e2301b4c803ec4fd66798e6fee91d.gz
* Statically distinguish Workspace and Screen indicesDon Stewart2007-04-111-12/+10
| | | | darcs-hash:20070411060456-9c5c1-a5642813cffe434e60310d21497217ef3704b296.gz
* removed xinerama-enabled dmenu actionJason Creighton2007-04-111-10/+0
| | | | | | | | | I don't think we're going to see any Xinerama support upstream, at least not anytime soon. It doesn't make sense to ship something with xmonad that isn't going to work out of the box. So for now Xinerama users should just use this patch: http://www.jcreigh.com/xmonad/xinerama-dmenu.html darcs-hash:20070411024716-b9aa7-e41d85ad5030a6a4eb6120257e8a5f2d1adaf00f.gz
* Move workspace fetching logic from Config.hs to Operations.hsSpencer Janssen2007-04-101-0/+4
| | | | darcs-hash:20070410064714-a5988-e9b1fac201a546d1722db41213efc81223007e43.gz
* moved screen <-> workspace mapping from XMonad to StackSetJason Creighton2007-04-101-30/+12
| | | | darcs-hash:20070410062731-b9aa7-e1768a3fe6c0e3c749400dffc4a5a5e33e6a08c4.gz
* Remove redundant setFocus, setFocus is called by refresh which is called by ↵Spencer Janssen2007-04-051-3/+0
| | | | | | windows darcs-hash:20070405215832-a5988-87a975ad9fcea125d7d8ba3497d7bc0289a3f158.gz
* -Wall policeDon Stewart2007-04-051-3/+3
| | | | darcs-hash:20070405000100-9c5c1-aab51f7bfb20248e9a601b7af5107591db48af8c.gz
* take window borders into account when resizing (requires latest X11-extras)Jason Creighton2007-04-041-1/+10
| | | | darcs-hash:20070404021612-b9aa7-842163845e3969d9f5446065bc3fe57606501a48.gz
* replace multiple gets with a single get and record bindDon Stewart2007-04-041-16/+9
| | | | darcs-hash:20070404010524-9c5c1-ae8b8c6a6e47d6676fb1fa77d800eb6485ac3424.gz
* Use Tall and Wide for split screen layouts. This should be less confusing.Spencer Janssen2007-04-031-5/+5
| | | | darcs-hash:20070403050610-a5988-34a441f8eb299905ed28d415a9524121585d06d0.gz
* vertical (master area on top) tilingJason Creighton2007-04-031-3/+9
| | | | darcs-hash:20070403040658-b9aa7-4bbe82e188fd19de00f8d6f86a3e4d3b4a39bf01.gz
* Comment only.Spencer Janssen2007-04-021-0/+5
| | | | darcs-hash:20070402072418-a5988-3b4db0be791c44772e0ce4ec49df25c16edaee94.gz
* Revert to the old layout code.Spencer Janssen2007-04-021-113/+26
| | | | darcs-hash:20070402045114-a5988-3fa15b1c4d8d79494bf430dcad921d22cdfa8d16.gz
* Remove trailing spaces, no content changedAlec Berryman2007-04-011-6/+6
| | | | darcs-hash:20070401144539-39448-1903870c5ef75cc918a8ea3153c5b154feb4e644.gz
* "dmenu" operation to spawn dmenu only on the current screen (for Xinerama)Jason Creighton2007-04-011-0/+11
| | | | | | | | | This requires a dmenu that will accept -x and -w. Currently, This means applying this patch: http://www.jcreigh.com/dmenu/position-options.patch (I'm trying to see if I can get this into dmenu upstream; haven't heard anything back yet.) darcs-hash:20070401012712-b9aa7-00f28388a705814f8e542e8b25b1b41922e3cc6c.gz
* Cleaned up layout a little bithughes2007-04-011-13/+35
| | | | darcs-hash:20070401023639-3a569-2b7b3e7e7b2f26ebb77590053d8360ee736cfbc3.gz
* restore dwm-style keybindings. mod-shift-{j,k} resize in vert modeDon Stewart2007-04-011-1/+5
| | | | darcs-hash:20070401025433-9c5c1-79adc3fdb8db4cf7929dd6d121ec66c21f24a0e2.gz
* Merged things together with dons changes.hughes2007-04-011-29/+54
| | | | darcs-hash:20070401021846-3a569-083f7d441afc41bdeef843113c1de1d3a5e40ee3.gz