mirror of
https://github.com/xmonad/xmonad.git
synced 2025-07-25 17:21:52 -07:00
Make layouts Typeable
This makes it possible to query the current layout state, which might be useful to e.g. show the current X.L.WorkspaceDir in xmobar. Example of use (assuming myLayout is the layout that is assigned to layoutHook): asMyLayout (Layout l) = (`asTypeOf` myLayout) <$> cast l … layout <- asMyLayout . W.layout . W.workspace . W.current <$> gets windowset case layout of Just (WorkspaceDir d) -> … Unfortunately this requires adding the Typeable constraint to a bunch of classes in xmonad-contrib, so we need to merge those changes there first (fortunately it doesn't need to go in lockstep, adding a Typeable constraint to those classes in xmonad-contrib is harmless).
This commit is contained in:
@@ -6,6 +6,10 @@
|
||||
causing some floating windows to be smaller/larger than the size they
|
||||
requested.
|
||||
|
||||
* Added `Typeable layout` constraint to `LayoutClass`, making it possible to
|
||||
cast `Layout` back into a concrete type and extract current layout state
|
||||
from it.
|
||||
|
||||
## 0.15 (September 30, 2018)
|
||||
|
||||
* Reimplement `sendMessage` to deal properly with windowset changes made
|
||||
|
@@ -271,7 +271,7 @@ readsLayout (Layout l) s = [(Layout (asTypeOf x l), rs) | (x, rs) <- reads s]
|
||||
-- 'runLayout', 'handleMessage', and so on. This ensures that the
|
||||
-- proper methods will be used, regardless of the particular methods
|
||||
-- that any 'LayoutClass' instance chooses to define.
|
||||
class Show (layout a) => LayoutClass layout a where
|
||||
class (Show (layout a), Typeable layout) => LayoutClass layout a where
|
||||
|
||||
-- | By default, 'runLayout' calls 'doLayout' if there are any
|
||||
-- windows to be laid out, and 'emptyLayout' otherwise. Most
|
||||
|
Reference in New Issue
Block a user