diff options
Diffstat (limited to '.config/XMonad/lib')
-rw-r--r-- | .config/XMonad/lib/Defaults.hs | 42 | ||||
-rw-r--r-- | .config/XMonad/lib/Hooks.hs | 42 | ||||
-rw-r--r-- | .config/XMonad/lib/Keybindings.hs | 170 | ||||
-rw-r--r-- | .config/XMonad/lib/Scratchpads.hs | 60 |
4 files changed, 314 insertions, 0 deletions
diff --git a/.config/XMonad/lib/Defaults.hs b/.config/XMonad/lib/Defaults.hs new file mode 100644 index 0000000..34d81e9 --- /dev/null +++ b/.config/XMonad/lib/Defaults.hs @@ -0,0 +1,42 @@ +module Defaults where + +import XMonad +import XMonad.Layout.Spacing +import XMonad.Layout.Tabbed + +-- variables +myModMask = mod4Mask +altMask = mod1Mask +myLockscreen = "notify-send 'to be set up!' 'to be set up!'" +myColorPicker = "colorpicker --short --one-shot --preview | xsel -b" +myFont = "xft:Sauce Code Pro:style=Regular:size=14" +volUp = "pamixer -i 5" +volDown = "pamixer -d 5" +volMute = "pamixer -t" +backlightUp = "brightnessctl s +5" +backlightDown = "brightnessctl s 5-" +screenshot = "flameshot screen" +fullScreenshot = "flameshot full" +customScreenshot = "flameshot gui" + +-- workspaces +myExtraWorkspaces = [(xK_0, "十")] -- , (xK_comma, " 十一 "), (xK_period, " 十二 "), (xK_slash, " 十三 ")] +myWorkspaces = ["一", "二", "三", "四", "五", "六", "七", "八", "九"] ++ map snd myExtraWorkspaces + +-- screen gaps +sGap = 4 +wGap = 6 + +myGap = spacingRaw True (Border sGap sGap sGap sGap) True (Border wGap wGap wGap wGap) True +myGap' = spacingRaw False (Border sGap sGap sGap sGap) True (Border wGap wGap wGap wGap) True + +myTabTheme = def { + fontName = myFont + , activeColor = "#755999" + , inactiveColor = "#282c35" + , activeBorderColor = "#755999" + , inactiveBorderColor = "#313846" + , activeTextColor = "#FFFFFF" + , inactiveTextColor = "#d0d0d0" + , decoHeight = 20 + } diff --git a/.config/XMonad/lib/Hooks.hs b/.config/XMonad/lib/Hooks.hs new file mode 100644 index 0000000..858737d --- /dev/null +++ b/.config/XMonad/lib/Hooks.hs @@ -0,0 +1,42 @@ +module Hooks where + +import XMonad + +import XMonad.Layout.Spacing +import XMonad.Layout.WindowNavigation as WN +import XMonad.Layout.Maximize +import XMonad.Layout.NoBorders + +import XMonad.Layout.BinarySpacePartition as BSP +import XMonad.Layout.Grid +import XMonad.Layout.Tabbed + +import XMonad.Hooks.SetWMName +import XMonad.Hooks.ManageDocks + +import XMonad.Util.SpawnOnce +import XMonad.Util.Cursor +import XMonad.Util.NamedScratchpad + +import Defaults +import Scratchpads + +myManageHook = namedScratchpadManageHook myScratchpads + <+> manageDocks <+> composeAll [ + className =? "discord" --> doShift ( myWorkspaces !! 9 ) + , className =? "vlc" --> doShift ( myWorkspaces !! 6 ) + ] + +myLayoutHook = avoidStruts $ maximize $ windowNavigation $ smartBorders $ myGap $ ( + emptyBSP ||| tabbed shrinkText myTabTheme ||| Grid + ) + +myStartupHook = do + spawnOnce "xmodmap /home/zt/.Xmodmap" + spawnOnce "picom" + spawnOnce "dunst" + spawnOnce "polystart" + spawnOnce "nitrogen --restore" + spawnOnce "cbatticon" + setWMName "LG3D" + setDefaultCursor xC_left_ptr diff --git a/.config/XMonad/lib/Keybindings.hs b/.config/XMonad/lib/Keybindings.hs new file mode 100644 index 0000000..b92fc97 --- /dev/null +++ b/.config/XMonad/lib/Keybindings.hs @@ -0,0 +1,170 @@ +module Keybindings where + +import XMonad +import qualified XMonad.StackSet as W +import XMonad.ManageHook +import System.Exit +import System.IO + +-- data +import Data.Tree +import qualified Data.Map as M + +-- actions +import XMonad.Actions.CopyWindow +import XMonad.Actions.CycleWS +import XMonad.Actions.GridSelect +import XMonad.Actions.SwapWorkspaces +import qualified XMonad.Actions.TreeSelect as TS + +-- layout modifiers +import XMonad.Layout.Spacing +import XMonad.Layout.WindowNavigation as WN +import XMonad.Layout.Maximize +import XMonad.Layout.Fullscreen +import XMonad.Layout.NoBorders + +-- Layouts +import XMonad.Layout.BinarySpacePartition as BSP +import XMonad.Layout.Grid +import XMonad.Layout.Tabbed + +-- hooks +import XMonad.Hooks.SetWMName +import XMonad.Hooks.ManageDocks +import XMonad.Hooks.EwmhDesktops + +import XMonad.Hooks.DynamicLog +-- DynamicLog replacement(s) +-- import XMonad.Hooks.StatusBar +-- import XMonad.Hooks.StatusBar.PP + +-- utilities +import XMonad.Util.Run +import XMonad.Util.SpawnOnce +import XMonad.Util.EZConfig +import XMonad.Util.Cursor +import XMonad.Util.NamedScratchpad + +import Defaults +import Scratchpads + + +myMouseKeybindings = [ + ((myModMask, 4), \w -> prevWS) + , ((myModMask, 5), \w -> nextWS) + ] + +myKeybindings = [ + ((myModMask, xK_Return), spawn ("open_terminal")) + , ((myModMask .|. shiftMask, xK_q), kill1) + + -- volume keys , ((myModMask, xK_equal), spawn volUp) + , ((myModMask, xK_minus), spawn volDown) + , ((myModMask, xK_BackSpace), spawn volMute) + + -- brightness keys + , ((myModMask .|. shiftMask, xK_equal), spawn backlightUp) + , ((myModMask .|. shiftMask, xK_minus), spawn backlightDown) + + -- modify gaps on runtime + , ((myModMask, xK_F2), incWindowSpacing 1) + , ((myModMask, xK_F1), decWindowSpacing 1) + , ((myModMask .|. shiftMask, xK_F2), incScreenSpacing 1) + , ((myModMask .|. shiftMask, xK_F1), decScreenSpacing 1) + + -- view prev/next workspaces + , ((myModMask .|. shiftMask, xK_Tab), prevWS) + , ((myModMask, xK_Tab), nextWS) + , ((myModMask, xK_semicolon), prevWS) + , ((myModMask, xK_apostrophe), nextWS) + , ((altMask, xK_h), prevWS) + , ((altMask, xK_l), nextWS) + + -- move to prev/next workspaces + , ((altMask .|. shiftMask, xK_h), shiftToPrev >> prevWS) + , ((altMask .|. shiftMask, xK_l), shiftToNext >> nextWS) + , ((myModMask .|. shiftMask, xK_semicolon), shiftToPrev >> prevWS) + , ((myModMask .|. shiftMask, xK_apostrophe), shiftToNext >> nextWS) + + -- focus previous/next monitor + , ((myModMask, xK_bracketleft), prevScreen) + , ((myModMask, xK_bracketright), nextScreen) + + -- move window to previous/next monitor + , ((myModMask .|. shiftMask, xK_bracketleft), shiftPrevScreen >> prevScreen) + , ((myModMask .|. shiftMask, xK_bracketright), shiftNextScreen >> nextScreen) + + -- swap different screens + , ((myModMask .|. controlMask, xK_bracketleft), swapPrevScreen) + , ((myModMask .|. controlMask, xK_bracketright), swapNextScreen) + + , ((myModMask, xK_a), sendMessage ToggleStruts) -- toggle both bars + , ((myModMask, xK_f), withFocused (sendMessage . maximizeRestore)) -- toggle maximize + , ((myModMask .|. shiftMask, xK_f), withFocused $ windows . W.sink) -- unfloat windows + + -- cycle through windows + , ((altMask, xK_j), windows W.focusDown) + , ((altMask, xK_k), windows W.focusUp) + + -- 2D navigation + , ((myModMask, xK_l), sendMessage $ Go R) + , ((myModMask, xK_h), sendMessage $ Go L) + , ((myModMask, xK_k), sendMessage $ Go U) + , ((myModMask, xK_j), sendMessage $ Go D) + + -- swap windows + , ((myModMask .|. shiftMask, xK_l), sendMessage $ WN.Swap R) + , ((myModMask .|. shiftMask, xK_h), sendMessage $ WN.Swap L) + , ((myModMask .|. shiftMask, xK_k), sendMessage $ WN.Swap U) + , ((myModMask .|. shiftMask, xK_j), sendMessage $ WN.Swap D) + + -- resize + , ((myModMask .|. mod1Mask, xK_l ), sendMessage $ ExpandTowards R) + , ((myModMask .|. mod1Mask, xK_h ), sendMessage $ ExpandTowards L) + , ((myModMask .|. mod1Mask, xK_j ), sendMessage $ ExpandTowards D) + , ((myModMask .|. mod1Mask, xK_k ), sendMessage $ ExpandTowards U) + , ((myModMask .|. mod1Mask .|. shiftMask , xK_l ), sendMessage $ ShrinkFrom R) + , ((myModMask .|. mod1Mask .|. shiftMask , xK_h ), sendMessage $ ShrinkFrom L) + , ((myModMask .|. mod1Mask .|. shiftMask , xK_j ), sendMessage $ ShrinkFrom D) + , ((myModMask .|. mod1Mask .|. shiftMask , xK_k ), sendMessage $ ShrinkFrom U) + + ] ++ [ -- for extra workspace(s) + ((myModMask, key), (windows $ W.greedyView ws)) + | (key,ws) <- myExtraWorkspaces + ] ++ [ -- also for extra workspaces + ((myModMask .|. shiftMask, key), (windows $ W.shift ws)) + | (key,ws) <- myExtraWorkspaces + ] ++ [ -- to swap workspace + ((mod1Mask .|. shiftMask, k), windows $ swapWithCurrent i) + | (i, k) <- zip myWorkspaces [xK_1, xK_2, xK_3, xK_4, xK_5, xK_6, xK_7, xK_8, xK_9, xK_0] + ] ++ [ -- copy + ((m .|. myModMask, k), windows $ f i) + | (i, k) <- zip (myWorkspaces) [xK_1, xK_2, xK_3, xK_4, xK_5, xK_6, xK_7, xK_8, xK_9, xK_0] + , (f, m) <- [(copy, shiftMask .|. altMask)] + ] ++ [ -- for not swapping tags while using multihead + ((m .|. myModMask, k), windows $ f i) + | (i, k) <- zip myWorkspaces [xK_1, xK_2, xK_3, xK_4, xK_5, xK_6, xK_7, xK_8, xK_9, xK_0] + , (f, m) <- [(W.view, 0), (W.shift, shiftMask)] + ] + +myKeybindingsP = [ + -- fn keys + -- ("<XF86MonBrightnessUp>", spawn backlightUp) + -- , ("<XF86MonBrightnessDown>", spawn backlightDown) + -- , ("<XF86AudioRaiseVolume>", spawn volUp) + -- , ("<XF86AudioLowerVolume>", spawn volDown) + -- , ("<XF86AudioMute>", spawn volMute) + -- ("M-S-p", spawn "dmenu_run") + -- scratchpads + -- , ("M-r", namedScratchpadAction myScratchpads "Term 0") + -- , ("M-t", namedScratchpadAction myScratchpads "Term 1") + -- , ("M-y", namedScratchpadAction myScratchpads "Term 2") + -- , ("M-u", namedScratchpadAction myScratchpads "Term 3") + -- , ("M-m", namedScratchpadAction myScratchpads "BPYTOP") + -- , ("M-S-m", namedScratchpadAction myScratchpads "calc") + -- , ("M-n", namedScratchpadAction myScratchpads "pavucontrol") + -- , ("M-S-n", namedScratchpadAction myScratchpads "arandr") + -- , ("M-b", namedScratchpadAction myScratchpads "blueman") + -- , ("M-S-r", namedScratchpadAction myScratchpads "wallpaper") + ] diff --git a/.config/XMonad/lib/Scratchpads.hs b/.config/XMonad/lib/Scratchpads.hs new file mode 100644 index 0000000..8422e48 --- /dev/null +++ b/.config/XMonad/lib/Scratchpads.hs @@ -0,0 +1,60 @@ +module Scratchpads where +import XMonad +import qualified XMonad.StackSet as W +import XMonad.ManageHook +import System.Exit +import System.IO + +-- data +import Data.Tree +import qualified Data.Map as M + +-- actions +import XMonad.Actions.CopyWindow +import XMonad.Actions.CycleWS +import XMonad.Actions.GridSelect +import XMonad.Actions.SwapWorkspaces +import qualified XMonad.Actions.TreeSelect as TS + +-- layout modifiers +import XMonad.Layout.Spacing +import XMonad.Layout.WindowNavigation as WN +import XMonad.Layout.Maximize +import XMonad.Layout.Fullscreen +import XMonad.Layout.NoBorders + +-- Layouts +import XMonad.Layout.BinarySpacePartition as BSP +import XMonad.Layout.Grid +import XMonad.Layout.Tabbed + +-- hooks +import XMonad.Hooks.SetWMName +import XMonad.Hooks.ManageDocks +import XMonad.Hooks.EwmhDesktops + +import XMonad.Hooks.DynamicLog +-- DynamicLog replacement(s) +-- import XMonad.Hooks.StatusBar +-- import XMonad.Hooks.StatusBar.PP + +-- utilities +import XMonad.Util.Run +import XMonad.Util.SpawnOnce +import XMonad.Util.EZConfig +import XMonad.Util.Cursor +import XMonad.Util.NamedScratchpad + +myScratchpads = + [ NS "Term 0" "alacritty -t 'Term 0'" (title =? "Term 0") (customFloating $ W.RationalRect (1/16) (1/16) (7/8) (7/8)) + , NS "Term 1" "alacritty -t 'Term 1'" (title =? "Term 1") (customFloating $ W.RationalRect (1/16) (1/16) (7/8) (7/8)) + , NS "Term 2" "alacritty -t 'Term 2'" (title =? "Term 2") (customFloating $ W.RationalRect (1/16) (1/16) (7/8) (7/8)) + , NS "Term 3" "alacritty -t 'Term 3'" (title =? "Term 3") (customFloating $ W.RationalRect (1/16) (1/16) (7/8) (7/8)) + , NS "lf" "alacritty -t 'lf' -e 'lf'" (title =? "lf") (customFloating $ W.RationalRect (1/16) (1/16) (7/8) (7/8)) + , NS "arandr" "arandr" (className =? "Arandr") (customFloating $ W.RationalRect (1/4) (1/4) (1/2) (1/2)) + , NS "calc" "galculator" (className =? "Galculator") (customFloating $ W.RationalRect (5/13) (4/13) (3/13) (6/13)) + , NS "blueman" "blueman-manager" (className =? "Blueman-manager") (customFloating $ W.RationalRect (5.5/16) (4/13) (5/16) (6/13)) + , NS "pavucontrol" "pavucontrol" (className =? "Pavucontrol") (customFloating $ W.RationalRect (3/12) (1/12) (3/6) (5/6)) + , NS "wallpaper" "nitrogen" (className =? "Nitrogen") (customFloating $ W.RationalRect (3/12) (1/12) (3/6) (5/6)) + , NS "BPYTOP" "alacritty -t 'BPYTOP' -e 'bpytop'" (title =? "BPYTOP") (customFloating $ W.RationalRect (1/16) (1/16) (7/8) (7/8)) + ] |