Skip to content

Instantly share code, notes, and snippets.

@toastal
Last active March 21, 2019 08:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save toastal/15fcaa4f0a4be8fff17599a80270be0b to your computer and use it in GitHub Desktop.
Save toastal/15fcaa4f0a4be8fff17599a80270be0b to your computer and use it in GitHub Desktop.
xmonad confs
-- vim: noai ts=2 sw=2
-- vim: filetype=haskell
Config
{ font = "xft:Terminus:size=16:regular:antialias=false"
, additionalFonts =
[ "xft:TerminessTTF Nerd Font:size=18:medium:antialias=true"
, "xft:Fixedsys Excelsior:size=22:regular:antialias=false"
]
, border = NoBorder
, borderColor = "#131217"
, bgColor = "#131217"
, fgColor = "grey"
, alpha = 255
, position = Bottom
, textOffset = -1
, iconOffset = -1
, lowerOnStart = True
, pickBroadest = False
, persistent = False
, hideOnStart = False
, iconRoot = "."
, allDesktops = True
, overrideRedirect = True
, commands =
--Run Brightness
--[ "--template", " %"
--, "-D", "intel_backlight"
--, "-C", "actual_brightness"
--, "-M", "max_brightness"
--] 100
--Run MPD
--[ "--template", "
-- vim: noai ts=2 sw=2
{-# LANGUAGE UnicodeSyntax #-}
import Data.Monoid (Endo, (<>))
import GHC.IO.Handle.Types (Handle)
import XMonad
import XMonad.Actions.UpdatePointer (updatePointer)
import XMonad.Config.Desktop (desktopConfig)
import XMonad.Hooks.DynamicLog (PP, dynamicLogWithPP, ppCurrent,
ppOutput, ppSort, ppTitle,
shorten, statusBar, wrap,
xmobarColor, xmobarPP)
import XMonad.Hooks.EwmhDesktops (fullscreenEventHook)
import XMonad.Hooks.FadeInactive (fadeIf, fadeOutLogHook)
import XMonad.Hooks.ManageDocks (AvoidStruts, avoidStruts)
import XMonad.Hooks.ManageHelpers (doFullFloat, isFullscreen)
import XMonad.Layout.LayoutModifier (ModifiedLayout)
import XMonad.Layout.NoBorders (SmartBorder, smartBorders)
import XMonad.Layout.ThreeColumns (ThreeCol (..))
import XMonad.Util.EZConfig (additionalKeysP)
import XMonad.Util.NamedScratchpad (namedScratchpadFilterOutWorkspace)
import XMonad.Util.Run (spawnPipe)
import XMonad.Util.WorkspaceCompare (getSortByTag)
main ∷ IO ()
main = do
xmobarConf ← statusBar "xmobar" xmobarPP' toggleStrutsKey xmonadConf
xmonad xmobarConf
xmonadConf ∷ XConfig (ModifiedLayout SmartBorder (ModifiedLayout AvoidStruts (Choose Tall (Choose (Mirror Tall) (Choose ThreeCol Full)))))
xmonadConf =
desktopConfig
{ borderWidth = 1
, normalBorderColor = "#3e4074"
, focusedBorderColor = "#bfcdcc"
, handleEventHook = fullscreenEventHook -- fixes fullscreen bug in Chromium
, layoutHook = smartBorders . avoidStruts $ layoutHook'
, manageHook = manageHook'
, modMask = mod4Mask -- Super as mod
, terminal = "kitty" -- "termite"
, workspaces = workspaces'
} `additionalKeysP`
keys'
keys' ∷ [(String, X ())]
keys' =
[ ("M-o", spawn "rofi -show run")
, ("M-u", spawn "xkblayout-state set +1")
, ("M-i", spawn "xkblayout-state set -1")
]
xmobarPP' ∷ PP
xmobarPP' =
xmobarPP
{ ppCurrent = xmobarColor "#ff8787" "" . wrap "[" "]" -- #9BC1B2
, ppTitle = xmobarColor "#00d7ff" "" . shorten 58 -- #9BC1B2
, ppSort = fmap (. namedScratchpadFilterOutWorkspace) getSortByTag
}
toggleStrutsKey ∷ XConfig Layout → ( KeyMask, KeySym )
toggleStrutsKey XConfig { XMonad.modMask = modMask } =
( modMask, xK_b )
layoutHook' ∷ Choose Tall (Choose (Mirror Tall) (Choose ThreeCol Full)) a
layoutHook' =
tall ||| Mirror tall ||| three ||| Full
where
tall = Tall 1 (1/100) (1/2)
three = ThreeCol 1 (3/100) (1/2)
-- Window management
manageHook' ∷ Query (Endo WindowSet)
manageHook' =
composeAll
[ className =? "MPlayer" --> doFloat
, className =? "mpv" --> doFloat
, className =? "zoom" --> doFloat
, className =? "peek" --> doFloat
, className =? "stalonetray" --> doIgnore
, isFullscreen --> doFullFloat
]
workspaces' ∷ [String]
workspaces' =
map xdo
[ ( 1, "๑" )
, ( 2, "๒" )
, ( 3, "๓" )
, ( 4, "๔" )
, ( 5, "๕" )
, ( 6, "๖" )
, ( 7, "๗" )
, ( 8, "๘" )
, ( 9, "๙" )
]
where
xdo ( n, s ) =
" show n <> "`>" <> s <> ""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment