From 45a0d521209bfdc3bdc3f9ee10c8dee49ddfe1aa Mon Sep 17 00:00:00 2001 From: qvalentin Date: Thu, 23 Dec 2021 14:12:41 +0100 Subject: [PATCH] center single window with layout 3 --- xmonad | 2 +- xmonad-contrib | 2 +- xmonad.hs | 35 ++++++++++++++++++++++++++++------- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/xmonad b/xmonad index eb2ee34..e25d090 160000 --- a/xmonad +++ b/xmonad @@ -1 +1 @@ -Subproject commit eb2ee340e4180d1f7741605d846b154e777b509b +Subproject commit e25d090112f2a76364a10b88a729b8586c18145b diff --git a/xmonad-contrib b/xmonad-contrib index 28aa164..061faf1 160000 --- a/xmonad-contrib +++ b/xmonad-contrib @@ -1 +1 @@ -Subproject commit 28aa164abd853a237e409d0fbb9f3819f253cf56 +Subproject commit 061faf17485cbeeb9372e68394572ba4d58ab53e diff --git a/xmonad.hs b/xmonad.hs index f948c4f..c9a71ef 100644 --- a/xmonad.hs +++ b/xmonad.hs @@ -1,3 +1,8 @@ +{-# LANGUAGE DeriveDataTypeable #-} +{-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE MultiParamTypeClasses #-} + +import Control.Arrow (second) import Control.Monad (liftM2) import Data.List (isInfixOf) import qualified Data.Monoid @@ -8,6 +13,7 @@ import XMonad Full (Full), Mirror (Mirror), Query, + Rectangle (Rectangle), Tall (Tall), WindowSet, WindowSpace, @@ -72,6 +78,7 @@ import XMonad.Hooks.EwmhDesktops import XMonad.Hooks.InsertPosition (Focus (Newer), Position (End), insertPosition) import XMonad.Hooks.ManageHelpers (doRectFloat) import XMonad.Hooks.Place (placeHook, simpleSmart) +import XMonad.Hooks.SetWMName (setWMName) import XMonad.Hooks.StatusBar ( defToggleStrutsKey, statusBarProp, @@ -79,9 +86,11 @@ import XMonad.Hooks.StatusBar ) import XMonad.Layout (Resize (Expand, Shrink)) import XMonad.Layout.Fullscreen (fullscreenEventHook) +import XMonad.Layout.LayoutModifier import qualified XMonad.Layout.LayoutModifier import XMonad.Layout.Named (named) import XMonad.Layout.NoBorders +import XMonad.Layout.ResizableTile (MirrorResize (MirrorExpand), ResizableTall (ResizableTall)) import XMonad.Layout.Spacing ( Border (Border), Spacing, @@ -92,13 +101,13 @@ import XMonad.Layout.WindowNavigation Navigate (Go), 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.Loggers (logTitles) +import XMonad.Util.Font (fi) +import XMonad.Util.Loggers (logTitles, wrapL) import XMonad.Util.SpawnOnce (spawnOnce) import XMonad.Util.Ungrab (unGrab) import XMonad.Util.WorkspaceCompare (getSortByIndex) -import XMonad.Hooks.SetWMName (setWMName) main :: IO () main = do @@ -116,14 +125,14 @@ main = do manageHook = myManageHook, layoutHook = myLayout, handleEventHook = - handleEventHook def <+> fullscreenEventHook + handleEventHook def <+> fullscreenEventHook } `additionalKeysP` [ ("M-S-z", spawn "xscreensaver-command -lock"), ("M-S-s", unGrab *> spawn "cast_screenshot"), ("M-f", runOrRaise "brave" (className =? "Brave-browser")), ("M-i", raise (className =? "jetbrains-idea")), ("M-", spawn "rofi -show drun"), - ("M-p", spawn "dmen"), + ("M-p", spawn "dmenu-with-suggestions"), -- audio settings ("", spawn "amixer set Master 5%- unmute"), ("", spawn "amixer set Master 5%+ unmute"), @@ -184,7 +193,6 @@ myXmobarPP colors = myStartupHook :: X () myStartupHook = do - setWMName "LG3D" spawnOnce "picom &" spawnOnce "sh $HOME/.fehbg" 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 = 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 tiled = named "Tall" $ mySpacing' 8 $ Tall nmaster delta ratio nmaster = 1 -- Default number of windows in the master pane @@ -248,3 +256,16 @@ myManageHook = -- IntelliJ fix (~=?) :: Eq a => Query [a] -> [a] -> Query Bool 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)