summaryrefslogtreecommitdiffstats
path: root/Operations.hs
AgeCommit message (Collapse)Author
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
2007-04-13Ignore window entries while moving windows. This should fix all the focus ↵Spencer Janssen
preservation problems. darcs-hash:20070413083702-a5988-20863eaa042f45a1421a6f171d9a8c42a7854883
2007-04-11add license headers to two missing filesDon Stewart
darcs-hash:20070411081042-9c5c1-05a68bbf16969dbb8854b37ab9b72e042d7fac9a
2007-04-11clean up tiling code a teensy bit, and comment on the interaction between ↵Don Stewart
focus, master, and cycling direction between the modes darcs-hash:20070411080747-9c5c1-0f6e9cc92481db8ba812976ee8d3cb0f7dde6626
2007-04-11Change semantics of 'promote'.Don Stewart
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
2007-04-11Statically distinguish Workspace and Screen indicesDon Stewart
darcs-hash:20070411060456-9c5c1-a5642813cffe434e60310d21497217ef3704b296
2007-04-11removed xinerama-enabled dmenu actionJason Creighton
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
2007-04-10Move workspace fetching logic from Config.hs to Operations.hsSpencer Janssen
darcs-hash:20070410064714-a5988-e9b1fac201a546d1722db41213efc81223007e43
2007-04-10moved screen <-> workspace mapping from XMonad to StackSetJason Creighton
darcs-hash:20070410062731-b9aa7-e1768a3fe6c0e3c749400dffc4a5a5e33e6a08c4
2007-04-05Remove redundant setFocus, setFocus is called by refresh which is called by ↵Spencer Janssen
windows darcs-hash:20070405215832-a5988-87a975ad9fcea125d7d8ba3497d7bc0289a3f158
2007-04-05-Wall policeDon Stewart
darcs-hash:20070405000100-9c5c1-aab51f7bfb20248e9a601b7af5107591db48af8c
2007-04-04take window borders into account when resizing (requires latest X11-extras)Jason Creighton
darcs-hash:20070404021612-b9aa7-842163845e3969d9f5446065bc3fe57606501a48
2007-04-04replace multiple gets with a single get and record bindDon Stewart
darcs-hash:20070404010524-9c5c1-ae8b8c6a6e47d6676fb1fa77d800eb6485ac3424
2007-04-03Use Tall and Wide for split screen layouts. This should be less confusing.Spencer Janssen
darcs-hash:20070403050610-a5988-34a441f8eb299905ed28d415a9524121585d06d0
2007-04-03vertical (master area on top) tilingJason Creighton
darcs-hash:20070403040658-b9aa7-4bbe82e188fd19de00f8d6f86a3e4d3b4a39bf01
2007-04-02Comment only.Spencer Janssen
darcs-hash:20070402072418-a5988-3b4db0be791c44772e0ce4ec49df25c16edaee94
2007-04-02Revert to the old layout code.Spencer Janssen
darcs-hash:20070402045114-a5988-3fa15b1c4d8d79494bf430dcad921d22cdfa8d16
2007-04-01Remove trailing spaces, no content changedAlec Berryman
darcs-hash:20070401144539-39448-1903870c5ef75cc918a8ea3153c5b154feb4e644
2007-04-01"dmenu" operation to spawn dmenu only on the current screen (for Xinerama)Jason Creighton
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
2007-04-01Cleaned up layout a little bithughes
darcs-hash:20070401023639-3a569-2b7b3e7e7b2f26ebb77590053d8360ee736cfbc3