center single window with layout 3

This commit is contained in:
qvalentin 2021-12-23 14:12:41 +01:00
parent 0d46fe9c68
commit 45a0d52120
3 changed files with 30 additions and 9 deletions

2
xmonad

@ -1 +1 @@
Subproject commit eb2ee340e4180d1f7741605d846b154e777b509b Subproject commit e25d090112f2a76364a10b88a729b8586c18145b

@ -1 +1 @@
Subproject commit 28aa164abd853a237e409d0fbb9f3819f253cf56 Subproject commit 061faf17485cbeeb9372e68394572ba4d58ab53e

View File

@ -1,3 +1,8 @@
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
import Control.Arrow (second)
import Control.Monad (liftM2) import Control.Monad (liftM2)
import Data.List (isInfixOf) import Data.List (isInfixOf)
import qualified Data.Monoid import qualified Data.Monoid
@ -8,6 +13,7 @@ import XMonad
Full (Full), Full (Full),
Mirror (Mirror), Mirror (Mirror),
Query, Query,
Rectangle (Rectangle),
Tall (Tall), Tall (Tall),
WindowSet, WindowSet,
WindowSpace, WindowSpace,
@ -72,6 +78,7 @@ import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.InsertPosition (Focus (Newer), Position (End), insertPosition) import XMonad.Hooks.InsertPosition (Focus (Newer), Position (End), insertPosition)
import XMonad.Hooks.ManageHelpers (doRectFloat) import XMonad.Hooks.ManageHelpers (doRectFloat)
import XMonad.Hooks.Place (placeHook, simpleSmart) import XMonad.Hooks.Place (placeHook, simpleSmart)
import XMonad.Hooks.SetWMName (setWMName)
import XMonad.Hooks.StatusBar import XMonad.Hooks.StatusBar
( defToggleStrutsKey, ( defToggleStrutsKey,
statusBarProp, statusBarProp,
@ -79,9 +86,11 @@ import XMonad.Hooks.StatusBar
) )
import XMonad.Layout (Resize (Expand, Shrink)) import XMonad.Layout (Resize (Expand, Shrink))
import XMonad.Layout.Fullscreen (fullscreenEventHook) import XMonad.Layout.Fullscreen (fullscreenEventHook)
import XMonad.Layout.LayoutModifier
import qualified XMonad.Layout.LayoutModifier import qualified XMonad.Layout.LayoutModifier
import XMonad.Layout.Named (named) import XMonad.Layout.Named (named)
import XMonad.Layout.NoBorders import XMonad.Layout.NoBorders
import XMonad.Layout.ResizableTile (MirrorResize (MirrorExpand), ResizableTall (ResizableTall))
import XMonad.Layout.Spacing import XMonad.Layout.Spacing
( Border (Border), ( Border (Border),
Spacing, Spacing,
@ -92,13 +101,13 @@ import XMonad.Layout.WindowNavigation
Navigate (Go), Navigate (Go),
windowNavigation, windowNavigation,
) )
import XMonad.StackSet (RationalRect (RationalRect), Workspace (tag), currentTag, greedyView, integrate', shift, stack) import XMonad.StackSet (RationalRect (RationalRect), Stack (Stack), Workspace (tag), currentTag, greedyView, integrate', shift, stack)
import XMonad.Util.EZConfig (additionalKeysP) import XMonad.Util.EZConfig (additionalKeysP)
import XMonad.Util.Loggers (logTitles) import XMonad.Util.Font (fi)
import XMonad.Util.Loggers (logTitles, wrapL)
import XMonad.Util.SpawnOnce (spawnOnce) import XMonad.Util.SpawnOnce (spawnOnce)
import XMonad.Util.Ungrab (unGrab) import XMonad.Util.Ungrab (unGrab)
import XMonad.Util.WorkspaceCompare (getSortByIndex) import XMonad.Util.WorkspaceCompare (getSortByIndex)
import XMonad.Hooks.SetWMName (setWMName)
main :: IO () main :: IO ()
main = do main = do
@ -116,14 +125,14 @@ main = do
manageHook = myManageHook, manageHook = myManageHook,
layoutHook = myLayout, layoutHook = myLayout,
handleEventHook = handleEventHook =
handleEventHook def <+> fullscreenEventHook handleEventHook def <+> fullscreenEventHook
} }
`additionalKeysP` [ ("M-S-z", spawn "xscreensaver-command -lock"), `additionalKeysP` [ ("M-S-z", spawn "xscreensaver-command -lock"),
("M-S-s", unGrab *> spawn "cast_screenshot"), ("M-S-s", unGrab *> spawn "cast_screenshot"),
("M-f", runOrRaise "brave" (className =? "Brave-browser")), ("M-f", runOrRaise "brave" (className =? "Brave-browser")),
("M-i", raise (className =? "jetbrains-idea")), ("M-i", raise (className =? "jetbrains-idea")),
("M-<Space>", spawn "rofi -show drun"), ("M-<Space>", spawn "rofi -show drun"),
("M-p", spawn "dmen"), ("M-p", spawn "dmenu-with-suggestions"),
-- audio settings -- audio settings
("<XF86AudioLowerVolume>", spawn "amixer set Master 5%- unmute"), ("<XF86AudioLowerVolume>", spawn "amixer set Master 5%- unmute"),
("<XF86AudioRaiseVolume>", spawn "amixer set Master 5%+ unmute"), ("<XF86AudioRaiseVolume>", spawn "amixer set Master 5%+ unmute"),
@ -184,7 +193,6 @@ myXmobarPP colors =
myStartupHook :: X () myStartupHook :: X ()
myStartupHook = do myStartupHook = do
setWMName "LG3D"
spawnOnce "picom &" spawnOnce "picom &"
spawnOnce "sh $HOME/.fehbg" spawnOnce "sh $HOME/.fehbg"
spawnOnce "setxkbmap -option caps:escape" spawnOnce "setxkbmap -option caps:escape"
@ -203,7 +211,7 @@ mySpacing' i = spacingRaw True (Border i 0 i i) True (Border i 0 i i) True
myWorkspaces :: [String] myWorkspaces :: [String]
myWorkspaces = show <$> ([1 .. 9] :: [Integer]) myWorkspaces = show <$> ([1 .. 9] :: [Integer])
myLayout = smartBorders $ windowNavigation tiled ||| smartBorders Full ||| Mirror tiled myLayout = smartBorders $ windowNavigation tiled ||| smartBorders Full ||| Mirror (fullWSpacing 8 $ Tall nmaster delta ratio)
where where
tiled = named "Tall" $ mySpacing' 8 $ Tall nmaster delta ratio tiled = named "Tall" $ mySpacing' 8 $ Tall nmaster delta ratio
nmaster = 1 -- Default number of windows in the master pane nmaster = 1 -- Default number of windows in the master pane
@ -248,3 +256,16 @@ myManageHook =
-- IntelliJ fix -- IntelliJ fix
(~=?) :: Eq a => Query [a] -> [a] -> Query Bool (~=?) :: Eq a => Query [a] -> [a] -> Query Bool
q ~=? x = fmap (isInfixOf x) q q ~=? x = fmap (isInfixOf x) q
fullWSpacing :: Int -> l a -> ModifiedLayout FullWSpacing l a
fullWSpacing p = ModifiedLayout (FullWSpacing p)
data FullWSpacing a = FullWSpacing Int deriving (Show, Read)
instance LayoutModifier FullWSpacing a where
pureModifier (FullWSpacing _) _ (Just (Stack f _ _)) [(param, rect)] = ([(param, shrinkRect 250 rect)], Nothing)
pureModifier (FullWSpacing p) _ _ wrs = (map (second $ shrinkRect p) wrs, Nothing)
modifierDescription (FullWSpacing p) = "Tall center"
shrinkRect :: Int -> Rectangle -> Rectangle
shrinkRect p (Rectangle x y w h) = Rectangle (x + fi (p `div` 2)) (y + fi p) (fi $ max 1 $ fi w -2 * (p `div` 2)) (fi $ max 1 $ fi h -2 * p)