1
Fork 0

feat: improved xmonad config

This commit is contained in:
Matei Adriel 2022-01-17 19:22:09 +02:00
parent 6ea9361fce
commit f8f756f19b
5 changed files with 119 additions and 73 deletions

View file

@ -0,0 +1 @@
dist-newstyle

View file

@ -0,0 +1,102 @@
{-# LANGUAGE BlockArguments #-}
import Control.Monad (join)
import Data.Function ((&))
import XMonad
import XMonad.Actions.SpawnOn
import XMonad.Config.Kde
import XMonad.Hooks.EwmhDesktops (ewmh, fullscreenEventHook)
import XMonad.Hooks.ManageDocks
import XMonad.Layout.Spacing
import XMonad.Layout.ThreeColumns
import XMonad.Util.EZConfig
kdeOn :: Bool
kdeOn = False
startingConfig = if kdeOn then kdeConfig else defaultConfig
a = 1 + []
main =
xmonad $
ewmh $
docks $
startingConfig
{ modMask = mod4Mask,
layoutHook = myLayoutHook,
startupHook = startup,
manageHook = manageDocks <+> myManagerHook <+> manageHook kdeConfig,
handleEventHook = handleEventHook kdeConfig <+> fullscreenEventHook,
terminal = myTerminal,
workspaces = myWorkspaces
}
`additionalKeysP` keymap
where
myWorkspaces =
["1:dev", "2:browser", "3:chat", "4:terminal", "5", "6", "7", "8", "9", "0"]
appWorkspaceConfig =
[ (3, "Discord"),
(4, "alacritty"),
(2, "google-chrome-stable")
]
manageWorkspaces =
appWorkspaceConfig
& fmap \(workspaceId, name) -> do
let workspaceName = myWorkspaces !! (workspaceId + 1)
className =? name --> doShift workspaceName
kdeFloats =
[ "yakuake",
"Yakuake",
"Kmix",
"kmix",
"plasma",
"Plasma",
"plasma-desktop",
"Plasma-desktop",
"krunner",
"ksplashsimple",
"ksplashqml",
"ksplashx"
]
floatKdeStuff = [className =? name --> doFloat | name <- kdeFloats]
myManagerHook =
composeAll $
concat
[ if kdeOn then floatKdeStuff else [],
manageWorkspaces
]
myTerminal = "alacritty"
myBrowser = "google-chrome-stable"
-- TODO: find a way to bind all the program-opening-keybindings to a single sub-map
keymap =
[ ("M-p", spawn "rofi -show run"),
("M-g", spawn myBrowser),
("M-d", spawn "Discord"),
("M-s", spawn "slack"),
("M-r", spawn "ksysgurad")
]
uniformBorder = join $ join $ join Border
border = uniformBorder 4
spacingHook = spacingRaw True border True border True
tall = Tall 1 (3 / 100) (1 / 2)
threeCols = ThreeCol 1 (3 / 100) (1 / 2)
layouts = tall ||| threeCols ||| Full
myLayoutHook = desktopLayoutModifiers $ spacingHook layouts
startup :: X ()
startup = do
spawn "xwallpaper --zoom ./background.jpg"
spawn "Discord"
spawn "google-chrome-stable"
spawn "alacritty"

View file

@ -3,7 +3,7 @@
xsession.windowManager.xmonad = {
enable = true;
enableContribAndExtras = true;
config = ./xmonad.hs;
config = ./Main.hs;
};
home.packages = with pkgs; [ xwallpaper ];

View file

@ -0,0 +1,15 @@
cabal-version: 2.4
name: xmonad-config
version: 0.1.0.0
author: Matei Adriel
maintainer: rafaeladriel11@gmail.com
-- The license under which the package is released.
-- license:
executable xmonad-config
main-is: Main.hs
build-depends:
, base
, xmonad
, X11
default-language: Haskell2010

View file

@ -1,72 +0,0 @@
import Control.Monad ( join )
import Data.Function ( (&) )
import XMonad
import XMonad.Actions.SpawnOn
import XMonad.Config.Kde
import XMonad.Hooks.EwmhDesktops ( fullscreenEventHook )
import XMonad.Hooks.EwmhDesktops ( ewmh )
import XMonad.Hooks.ManageDocks
import XMonad.Util.EZConfig
import XMonad.Layout.Spacing
import XMonad.Layout.ThreeColumns
main =
xmonad
$ ewmh
$ docks
$ kdeConfig
{ modMask = mod4Mask
, layoutHook = myLayoutHook
, startupHook = startup
, manageHook = manageDocks <+> myManagerHook <+> manageHook kdeConfig
, handleEventHook = handleEventHook kdeConfig <+> fullscreenEventHook
, terminal = myTerminal
}
`additionalKeysP` keymap
where
kdeFloats =
[ "yakuake"
, "Yakuake"
, "Kmix"
, "kmix"
, "plasma"
, "Plasma"
, "plasma-desktop"
, "Plasma-desktop"
, "krunner"
, "ksplashsimple"
, "ksplashqml"
, "ksplashx"
]
myManagerHook =
composeAll [ className =? name --> doFloat | name <- kdeFloats ]
myTerminal = "alacritty"
myBrowser = "google-chrome-stable"
-- TODO: find a way to bind all the program-opening-keybindings to a single sub-map
keymap =
[ ("M-p", spawn "rofi -show run")
, ("M-g", spawn myBrowser)
, ("M-d", spawn "Discord")
, ("M-s", spawn "slack")
, ("M-r", spawn "ksysgurad")
]
uniformBorder = join $ join $ join Border
border = uniformBorder 4
spacingHook = spacingRaw True border True border True
tall = Tall 1 (3 / 100) (1 / 2)
threeCols = ThreeCol 1 (3 / 100) (1 / 2)
layouts = tall ||| threeCols ||| Full
myLayoutHook = desktopLayoutModifiers $ spacingHook layouts
startup :: X ()
startup = do
spawn "xwallpaper --zoom ./background.jpg"