mirror of
https://gitlab.com/dwt1/dotfiles.git
synced 2026-04-24 03:50:24 +10:00
111 lines
4.4 KiB
Haskell
111 lines
4.4 KiB
Haskell
module Custom.MyLayouts where
|
|
|
|
import XMonad
|
|
import XMonad.Actions.MouseResize
|
|
import XMonad.Hooks.ManageDocks (avoidStruts)
|
|
|
|
-- Layouts
|
|
import XMonad.Layout.GridVariants (Grid(Grid))
|
|
import XMonad.Layout.SimplestFloat
|
|
import XMonad.Layout.Spiral
|
|
import XMonad.Layout.ResizableTile
|
|
import XMonad.Layout.Tabbed
|
|
import XMonad.Layout.ThreeColumns
|
|
|
|
-- Layouts modifiers
|
|
import XMonad.Layout.LayoutModifier
|
|
import XMonad.Layout.LimitWindows (limitWindows)
|
|
import XMonad.Layout.Magnifier
|
|
import XMonad.Layout.MultiToggle (mkToggle, single, EOT(EOT), (??))
|
|
import XMonad.Layout.MultiToggle.Instances (StdTransformers(NBFULL, MIRROR, NOBORDERS))
|
|
import XMonad.Layout.NoBorders
|
|
import XMonad.Layout.Renamed (renamed, Rename(Replace))
|
|
import XMonad.Layout.ShowWName
|
|
import XMonad.Layout.Spacing
|
|
import XMonad.Layout.WindowArranger (windowArrange)
|
|
import qualified XMonad.Layout.ToggleLayouts as T (toggleLayouts)
|
|
|
|
------------------------------------------------------------------------
|
|
-- LAYOUTS
|
|
------------------------------------------------------------------------
|
|
-- Makes setting the spacingRaw simpler to write. The spacingRaw
|
|
-- module adds a configurable amount of space around windows.
|
|
mySpacing :: Integer -> l a -> XMonad.Layout.LayoutModifier.ModifiedLayout Spacing l a
|
|
mySpacing i = spacingRaw False (Border i i i i) True (Border i i i i) True
|
|
|
|
-- Below is a variation of the above except no borders are applied
|
|
-- if fewer than two windows. So a single window has no gaps.
|
|
mySpacing' :: Integer -> l a -> XMonad.Layout.LayoutModifier.ModifiedLayout Spacing l a
|
|
mySpacing' i = spacingRaw True (Border i i i i) True (Border i i i i) True
|
|
|
|
-- Defining a bunch of layouts, many that I don't use.
|
|
tall = renamed [Replace "tall"]
|
|
$ limitWindows 12
|
|
$ mySpacing 8
|
|
$ ResizableTall 1 (3/100) (1/2) []
|
|
magnify = renamed [Replace "magnify"]
|
|
$ magnifier
|
|
$ limitWindows 12
|
|
$ mySpacing 8
|
|
$ ResizableTall 1 (3/100) (1/2) []
|
|
monocle = renamed [Replace "monocle"]
|
|
$ limitWindows 20 Full
|
|
floats = renamed [Replace "floats"]
|
|
$ limitWindows 20 simplestFloat
|
|
grid = renamed [Replace "grid"]
|
|
$ limitWindows 12
|
|
$ mySpacing 8
|
|
$ mkToggle (single MIRROR)
|
|
$ Grid (16/10)
|
|
spirals = renamed [Replace "spirals"]
|
|
$ mySpacing' 8
|
|
$ spiral (6/7)
|
|
threeCol = renamed [Replace "threeCol"]
|
|
$ limitWindows 7
|
|
$ mySpacing' 4
|
|
$ ThreeCol 1 (3/100) (1/2)
|
|
threeRow = renamed [Replace "threeRow"]
|
|
$ limitWindows 7
|
|
$ mySpacing' 4
|
|
-- Mirror takes a layout and rotates it by 90 degrees.
|
|
-- So we are applying Mirror to the ThreeCol layout.
|
|
$ Mirror
|
|
$ ThreeCol 1 (3/100) (1/2)
|
|
tabs = renamed [Replace "tabs"]
|
|
-- I cannot add spacing to this layout because it will
|
|
-- add spacing between window and tabs which looks bad.
|
|
$ tabbed shrinkText myTabConfig
|
|
where
|
|
myTabConfig = def { fontName = "xft:Mononoki Nerd Font:regular:pixelsize=11"
|
|
, activeColor = "#292d3e"
|
|
, inactiveColor = "#3e445e"
|
|
, activeBorderColor = "#292d3e"
|
|
, inactiveBorderColor = "#292d3e"
|
|
, activeTextColor = "#ffffff"
|
|
, inactiveTextColor = "#d0d0d0"
|
|
}
|
|
|
|
-- Theme for showWName which prints current workspace when you change workspaces.
|
|
myShowWNameTheme :: SWNConfig
|
|
myShowWNameTheme = def
|
|
{ swn_font = "xft:Sans:bold:size=60"
|
|
, swn_fade = 1.0
|
|
, swn_bgcolor = "#000000"
|
|
, swn_color = "#FFFFFF"
|
|
}
|
|
|
|
-- The layout hook
|
|
myLayoutHook = avoidStruts $ mouseResize $ windowArrange $ T.toggleLayouts floats $
|
|
mkToggle (NBFULL ?? NOBORDERS ?? EOT) myDefaultLayout
|
|
where
|
|
-- I've commented out the layouts I don't use.
|
|
myDefaultLayout = tall
|
|
||| magnify
|
|
||| noBorders monocle
|
|
||| floats
|
|
-- ||| grid
|
|
||| noBorders tabs
|
|
-- ||| spirals
|
|
-- ||| threeCol
|
|
-- ||| threeRow
|