Age | Commit message (Collapse) | Author |
|
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
|
|
darcs-hash:20070503234607-a5988-3f9f46071263093707fdaba677899edc1a85edc1
|
|
darcs-hash:20070503233148-a5988-628ec9194db704513dd804fc7c72bb478689526e
|
|
darcs-hash:20070503144750-72aca-f44bca4573837e12fc1f89333b55e04abd52787c
|
|
darcs-hash:20070503074843-9c5c1-52a96686d7d6a1e260790db263c03799116b1202
|
|
darcs-hash:20070503002252-a5988-751a9563c3a2574a423367cdcba11e3e661f9d92
|
|
darcs-hash:20070430163515-a5988-9dea5188c30830fd8b3135f7cb5beffd7b90dcb9
|
|
darcs-hash:20070430162647-a5988-70420c2db283eb1585c96d977e5ac5ca3d0d1532
|
|
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
|
|
darcs-hash:20070426212257-a5988-dc5cc91918a152728de05a7f6c39d209d81c5b04
|
|
darcs-hash:20070426211407-a5988-e08784e64270523d8dac44d8249c335f029272fd
|
|
darcs-hash:20070424013357-b9aa7-aed2e5623aa5d0f804d131974fc9b6c21c7a2ce1
|
|
darcs-hash:20070415233635-b9aa7-a2b7e4d3fe21647c2389ea6be9378fd116b4c6f8
|
|
darcs-hash:20070415233244-b9aa7-ff6853261d57f8feab2ccda3a148eb2a1bf9c8af
|
|
darcs-hash:20070413233019-b9aa7-07490bd62af6357002a01b44ec10b805b831ee60
|
|
darcs-hash:20070413230706-a5988-5e095da766d7425f6099a7de1ac8171d4db7bfe4
|
|
darcs-hash:20070412132033-39448-2be6f5ab22fabd3c126cbba0bc81017477c1a083
|
|
darcs-hash:20070411081042-9c5c1-05a68bbf16969dbb8854b37ab9b72e042d7fac9a
|
|
darcs-hash:20070411073636-9c5c1-fbf217e9e05f7135897d59302445da5f9fcbbef1
|
|
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
|
|
darcs-hash:20070411060456-9c5c1-a5642813cffe434e60310d21497217ef3704b296
|
|
darcs-hash:20070410064714-a5988-e9b1fac201a546d1722db41213efc81223007e43
|
|
darcs-hash:20070410062731-b9aa7-e1768a3fe6c0e3c749400dffc4a5a5e33e6a08c4
|
|
darcs-hash:20070404011441-9c5c1-7d2e61f6f51fbfa155f93512240f9caed286f6d6
|
|
darcs-hash:20070403050610-a5988-34a441f8eb299905ed28d415a9524121585d06d0
|
|
darcs-hash:20070402221948-39448-a27a073869e63b0e11c4cf4f3ae17d2b09d80550
|
|
darcs-hash:20070402045114-a5988-3fa15b1c4d8d79494bf430dcad921d22cdfa8d16
|
|
Error prevents compilation on 64-bit systems.
darcs-hash:20070401143416-39448-7ab8c797f9590cda9576767eddda6b7ceb5bf2ea
|
|
darcs-hash:20070401161027-39448-8fd61e1f1d369ebf4dd4073966833c18f535c269
|
|
darcs-hash:20070401055711-b9aa7-1bb53891b929b1c7311bad643f946b4305983dce
|
|
Changes mean:
* gmrun is like the dmenu key, but with shift set.
- , ((modMask .|. shiftMask, xK_F11 ), spawn "gmrun")
+ , ((modMask .|. shiftMask, xK_p ), spawn "gmrun")
If no one actually uses both gmrun and dmenu, we should consider only
using mod-p for this.
* restart is like quit, but with 'ctrl' set:
+ , ((modMask .|. shiftMask, xK_q ), io $ exitWith ExitSuccess)
+ , ((modMask .|. shiftMask .|. controlMask, xK_q ), io restart)
* revert to 'wer' ordering for xinerama screens:
- | (key, sc) <- zip [xK_e, xK_r, xK_t] [1..]
+ | (key, sc) <- zip [xK_w, xK_e, xK_r] [1..]
that's the only binding order that makes sense, since they're meant to
refer to screens 1 2 and 3, hence 'wer' (look at the keyboard to see why)
darcs-hash:20070401033522-9c5c1-612e23066ea1c2523b0b0be8d2ffdd2fe407c341
|
|
darcs-hash:20070401025433-9c5c1-79adc3fdb8db4cf7929dd6d121ec66c21f24a0e2
|
|
darcs-hash:20070401021846-3a569-083f7d441afc41bdeef843113c1de1d3a5e40ee3
|
|
darcs-hash:20070401015135-3a569-8db7ddadad8f5d3c6b16b14dda2a143644e01898
|
|
darcs-hash:20070401014706-3a569-26a764b57274f67057adf0b81eb71158b58f49de
|
|
darcs-hash:20070330144558-3a569-456564e43e14fbd17ffc1491c89dfc6ae71697ee
|
|
darcs-hash:20070401004726-9c5c1-ffe359da72bfe742bd6c6855e8451c0ea8a8938f
|
|
darcs-hash:20070327013350-b9aa7-7f4e73055e5b801b7f598cb62ce58a60a32d9dec
|
|
darcs-hash:20070326151243-3a569-7dfe6def26ee1722b13c21305646ac0121166e79
|
|
darcs-hash:20070326150213-3a569-64dd38c00558d58f27c3803ab15485892c24cfaa
|
|
darcs-hash:20070326140335-39448-c48e4f4f7bc457c5ec99832e0febd689e9b35e32
|
|
darcs-hash:20070326074234-c98ca-624f259e215d1aad642744cae44d572d88adda60
|
|
darcs-hash:20070326054004-b9aa7-4654d475bc465ce76e32e01407e6765f5e1732c2
|