about summary refs log tree commit diff
path: root/src/XMonad/Custom/Layout.hs
blob: 5da2cf6dad553d6b850cc01ab8d1e500963b57f0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
{-# LANGUAGE DeriveDataTypeable    #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeSynonymInstances  #-}
{-# OPTIONS_GHC -Wno-missing-signatures #-}

-----------------------------------------------------------------------------
-- |
-- Module      :  XMonad.Custom.Layout
-- Copyright   :  (c) 2018-2019 Azat Bahawi <azahi@teknik.io>
-- License     :  BSD3-style (see LICENSE)
--
-- Maintainer  :  Azat Bahawi <azahi@teknik.io>
-- Stability   :  unstable
-- Portability :  unportable
--
-----------------------------------------------------------------------------

module XMonad.Custom.Layout
    ( layoutHook
    , CustomTransformers (..)
    ) where

import           XMonad                              hiding (layoutHook)
import           XMonad.Custom.Theme
import           XMonad.Hooks.ManageDocks
import           XMonad.Layout.Accordion
import           XMonad.Layout.BinarySpacePartition
import           XMonad.Layout.Fullscreen
import           XMonad.Layout.Hidden
import           XMonad.Layout.LayoutModifier
import           XMonad.Layout.MultiToggle
import           XMonad.Layout.MultiToggle.Instances
import           XMonad.Layout.NoBorders
import           XMonad.Layout.Reflect
import           XMonad.Layout.Simplest
import           XMonad.Layout.Spacing
import           XMonad.Layout.SubLayouts
import           XMonad.Layout.Tabbed
import           XMonad.Layout.WindowNavigation

applySpacing :: l a -> ModifiedLayout Spacing l a
applySpacing = spacingRaw False (Border 6 6 6 6) True (Border 6 6 6 6) True

data CustomTransformers = GAPS
                        deriving (Read, Show, Eq, Typeable)

instance Transformer CustomTransformers Window where
    transform GAPS x k = k (avoidStruts $ applySpacing x) (const x)

layoutHook = fullscreenFloat
             $ lessBorders OnlyLayoutFloat
             $ mkToggle (single NBFULL)
             $ avoidStruts
             $ applySpacing
          -- $ mkToggle (single GAPS)
             $ mkToggle (single REFLECTX)
             $ mkToggle (single REFLECTY)
             $ windowNavigation
             $ addTabs shrinkText tabTheme
             $ hiddenWindows
             $ subLayout [] (Simplest ||| Accordion)
             emptyBSP

Consider giving Nix/NixOS a try! <3