aboutsummaryrefslogtreecommitdiff
path: root/XMonad/xmonad.hs
diff options
context:
space:
mode:
authorVidhu Kant Sharma <bokuwakanojogahoshii@yahoo.com>2021-01-03 15:04:44 +0530
committerVidhu Kant Sharma <bokuwakanojogahoshii@yahoo.com>2021-01-03 15:04:44 +0530
commit9947c2d5ef66990fee4adfe6a5d762ed9b438183 (patch)
tree5af0a186ba6955f02086f4053a7d74f5e32128d5 /XMonad/xmonad.hs
parente7b3bd7b5beaa32a9b5e0c28df6a7802c35fcec6 (diff)
changed keybindings to mostly use the modkey
Diffstat (limited to 'XMonad/xmonad.hs')
-rw-r--r--XMonad/xmonad.hs241
1 files changed, 241 insertions, 0 deletions
diff --git a/XMonad/xmonad.hs b/XMonad/xmonad.hs
new file mode 100644
index 00000000..e08d987c
--- /dev/null
+++ b/XMonad/xmonad.hs
@@ -0,0 +1,241 @@
+import XMonad
+import qualified XMonad.StackSet as W
+import XMonad.ManageHook
+
+-- actions
+import XMonad.Actions.CycleWS (moveTo, shiftTo, WSType(..), nextScreen, prevScreen)
+import XMonad.Actions.CopyWindow
+import XMonad.Actions.CycleWS
+import XMonad.Actions.GridSelect
+import XMonad.Actions.SwapWorkspaces
+import XMonad.Actions.WindowBringer
+import XMonad.Actions.MouseResize
+
+-- layouts modifiers
+import XMonad.Layout.Spacing
+import XMonad.Layout.LayoutModifier
+import XMonad.Layout.WindowNavigation as WN
+
+-- Layouts
+-- import XMonad.Layout.AvoidFloats
+import XMonad.Layout.BinarySpacePartition as BSP
+-- import XMonad.Layout.CenteredMaster
+import XMonad.Layout.Grid
+import XMonad.Layout.ThreeColumns
+import XMonad.Layout.TwoPane
+import XMonad.Layout.Spiral
+import XMonad.Layout.ResizableTile
+import XMonad.Layout.Tabbed
+
+-- hooks
+import XMonad.Hooks.SetWMName
+import XMonad.Hooks.ManageDocks
+import XMonad.Hooks.DynamicLog
+-- import XMonad.Hooks.FadeInactive
+
+-- utilities
+import XMonad.Util.SpawnOnce
+import XMonad.Util.EZConfig (additionalKeys)
+import XMonad.Util.Cursor
+import XMonad.Util.Paste
+import XMonad.Util.Run
+import XMonad.Util.NamedScratchpad
+
+myStartupHook :: X ()
+myStartupHook = do
+ spawnOnce "/home/zt/.xmonad/baraction | lemonbar -g 1366x20+0+0 -B '#171520' -p -F '#ffffff' -f 'Source Han Sans JP:size=10' -o -3 -f 'RobotoMono Nerd Font:style=Regular:size=15' -f -n 'sysinfo-bar' -o 0"
+-- spawnOnce "/home/zt/.config/scripts/weather"
+ spawnOnce "nitrogen --restore"
+ spawnOnce "picom"
+ spawnOnce "deadd-notification-center"
+ spawnOnce "firefox"
+ spawnOnce "weather"
+-- spawnOnce "sleep 3; trayer --align center --edge top --width 20 --height 21 --expand true --distance 90 --distancefrom right --tint 0x171520 --transparent true --alpha 0 --iconspacing 8"
+ setWMName "Oppai"
+ setDefaultCursor xC_left_ptr
+
+
+windowCount :: X (Maybe String)
+windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
+
+
+-- defaults
+myModMask :: KeyMask
+myModMask = mod4Mask
+
+myTerminal :: String
+myTerminal = "st"
+
+myLauncher :: String
+myLauncher = "run_dmenu"
+
+myBrowser :: String
+myBrowser = "firefox"
+
+myEditor :: String
+myEditor = "nvim"
+
+-- wm variables
+
+nBorder = "#000000" -- "#3804f4" -- "#bf00ff"
+fBorder = "#6e02fc"
+
+myBorderWidth = 1
+
+sGap = 0 -- screen gap
+wGap = 1 -- window gap
+
+myExtraWorkspaces = [(xK_0, " 十 ")] -- , (xK_comma, " 十一 "), (xK_period, " 十二 "), (xK_slash, " 十三 ")]
+myWorkspaces = [" 一 "," 二 "," 三 "," 四 "," 五 "," 六 "," 七 "," 八 ", " 九 "] ++ (map snd myExtraWorkspaces)
+
+
+
+-- scratchpad config
+myScratchpads = [
+-- NS "Vysor" "Vysor.AppImage" (title =? "Vysor") defaultFloating
+ NS "Phone" "scrcpy" (title =? "Motorola One Power") defaultFloating,
+ NS "T1" "st -t 'T1'" (title =? "T1") defaultFloating,
+ NS "T2" "st -t 'T2'" (title =? "T2") defaultFloating,
+ NS "Nitrogen" "nitrogen" (title =? "Nitrogen") defaultFloating
+ ] where role = stringProperty "WM_WINDOW_ROLE"
+
+
+-- keybindings
+myKeys = [
+ ((mod4Mask, xK_Return), spawn (myTerminal))
+ , ((mod4Mask, xK_p), spawn "/home/zt/.config/scripts/run_dmenu")
+ , ((mod1Mask, xK_w), kill1)
+ , ((mod1Mask .|. shiftMask, xK_k), kill1)
+ , ((mod1Mask, xK_o), withFocused $ windows . W.sink) -- unfloat windows
+
+ -- scratchpad keybindings
+ , ((mod4Mask, xK_p), namedScratchpadAction myScratchpads "Phone")
+ , ((mod4Mask, xK_o), namedScratchpadAction myScratchpads "T1")
+ , ((mod4Mask, xK_i), namedScratchpadAction myScratchpads "T2")
+ , ((mod4Mask, xK_w), namedScratchpadAction myScratchpads "Nitrogen")
+
+ -- view prev/next workspaces
+ , ((mod1Mask, xK_h), prevWS)
+ , ((mod1Mask, xK_l), nextWS)
+
+ -- move to prev/next workspaces
+ , ((mod1Mask .|. shiftMask, xK_h), shiftToPrev >> prevWS)
+ , ((mod1Mask .|. shiftMask, xK_l), shiftToNext >> nextWS)
+
+ -- modify gaps on runtime
+ , ((mod4Mask, xK_equal), incWindowSpacing 1)
+ , ((mod4Mask, xK_minus), decWindowSpacing 1)
+ , ((mod4Mask .|. shiftMask, xK_equal), incScreenSpacing 1)
+ , ((mod4Mask .|. shiftMask, xK_minus), decScreenSpacing 1)
+
+ -- Swap the focused window and the master window
+ , ((mod1Mask .|. shiftMask, xK_Return), windows W.swapMaster)
+
+ -- these keybindings are for WindowNavigation
+ -- and they conflict with BSP layout
+
+ -- directional navigation of windows
+ , ((mod4Mask, xK_l), sendMessage $ Go R)
+ , ((mod4Mask, xK_h), sendMessage $ Go L)
+ , ((mod4Mask, xK_k), sendMessage $ Go U)
+ , ((mod4Mask, xK_j), sendMessage $ Go D)
+
+ -- swap windows
+ , ((mod4Mask .|. shiftMask, xK_l), sendMessage $ WN.Swap R)
+ , ((mod4Mask .|. shiftMask, xK_h), sendMessage $ WN.Swap L)
+ , ((mod4Mask .|. shiftMask, xK_k), sendMessage $ WN.Swap U)
+ , ((mod4Mask .|. shiftMask, xK_j), sendMessage $ WN.Swap D)
+
+ -- cycle through windows
+ , ((mod1Mask, xK_j), windows W.focusDown)
+ , ((mod1Mask, xK_k), windows W.focusUp)
+
+ -- grid select
+ , ((mod4Mask, xK_n), goToSelected defaultGSConfig)
+
+ -- windowbringer
+ , ((mod4Mask, xK_b), bringMenu)
+ , ((mod4Mask, xK_g), gotoMenu)
+
+ -- paste x selection
+ , ((mod1Mask, xK_v), pasteSelection)
+
+ -- toggle bars
+ , ((mod4Mask, xK_backslash), sendMessage ToggleStruts) -- toggle both bars
+ , ((mod4Mask, xK_bracketleft), sendMessage $ ToggleStrut D) -- toggle bottom bar
+ , ((mod4Mask, xK_bracketright), sendMessage $ ToggleStrut U) -- toggle top bar
+
+ -- BSP layout keybindings
+ -- resize
+ , ((mod4Mask .|. mod1Mask, xK_l ), sendMessage $ ExpandTowards R)
+ , ((mod4Mask .|. mod1Mask, xK_h ), sendMessage $ ExpandTowards L)
+ , ((mod4Mask .|. mod1Mask, xK_j ), sendMessage $ ExpandTowards D)
+ , ((mod4Mask .|. mod1Mask, xK_k ), sendMessage $ ExpandTowards U)
+ , ((mod4Mask .|. mod1Mask .|. shiftMask , xK_l ), sendMessage $ ShrinkFrom R)
+ , ((mod4Mask .|. mod1Mask .|. shiftMask , xK_h ), sendMessage $ ShrinkFrom L)
+ , ((mod4Mask .|. mod1Mask .|. shiftMask , xK_j ), sendMessage $ ShrinkFrom D)
+ , ((mod4Mask .|. mod1Mask .|. shiftMask , xK_k ), sendMessage $ ShrinkFrom U)
+ -- other
+ , ((mod4Mask, xK_r ), sendMessage Rotate)
+ , ((mod4Mask, xK_s ), sendMessage BSP.Swap)
+-- , ((mod4Mask .|. shiftMask .|. controlMask , xK_j ), sendMessage $ SplitShift Prev)
+-- , ((mod4Mask .|. shiftMask .|. controlMask , xK_k ), sendMessage $ SplitShift Next)
+
+
+
+ ] ++ [ -- 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 workspaces
+ ((mod1Mask .|. shiftMask, k), windows $ swapWithCurrent i)
+ | (i, k) <- zip myWorkspaces [xK_1 ..]
+ ] -- ++ [
+-- ((m .|. myModMask, k), windows $ f i)
+-- | (i, k) <- zip (myWorkspaces x) [xK_1 ..]
+-- , (f, m) <- [(copy, shiftMask .|. controlMask)]
+-- ]
+
+
+
+-- layouts
+myGap = spacingRaw False (Border sGap sGap sGap sGap) True (Border wGap wGap wGap wGap) True
+
+myLayouts = avoidStruts $ mouseResize $ windowNavigation $ myGap $ emptyBSP ||| ThreeColMid 1 (3/100) (1/2) ||| Grid ||| TwoPane (3/100) (1/2) ||| ThreeCol 1 (3/100) (1/2) ||| ThreeCol 2 (3/100) (1/2)
+
+myLayoutHook = myLayouts
+
+
+myLemonbarPP = def {ppCurrent = wrap "%{F#6c71c4}%{B#d33682}%{F-}" "%{F#d33682}%{B-}%{F-}"
+ , ppWsSep = " "
+ , ppHidden = wrap "%{B#268bd2}" "%{B-}"
+ , ppHiddenNoWindows = wrap "%{F#02fc45}" "%{F-}"
+ , ppTitle = wrap " %{B#6c71c4}%{F#f0f0f0} " " %{B-}" . shorten 75
+ , ppUrgent = wrap "%{B#9cfc02} " " %{B-}%{F-}"
+ , ppLayout = wrap "%{r}%{B#99B1D5}%{F#232627} " " %{B-} "
+ , ppSep = " "
+ , ppExtras = [windowCount]
+ , ppOrder = \(ws:l:t:ex) -> [ws]++[t]++[l]++["%{B#50FA7B}%{F#232627} WIN:"]++ex++["%{B-}%{F-} "]
+ }
+
+main = do
+ notXMobar <- spawnPipe "lemonbar -b -g 1366x21+0+0 -B '#171520' -F '#ffffff' -f 'Source Han Sans JP:size=10' -o -3 -f 'RobotoMono Nerd Font:style=Regular:size=15' -f -n 'notXMobar' -o 0"
+ xmonad $ docks def
+ {
+ terminal = myTerminal,
+ focusFollowsMouse = True,
+ borderWidth = myBorderWidth,
+ modMask = myModMask,
+ workspaces = myWorkspaces,
+ normalBorderColor = nBorder,
+ focusedBorderColor = fBorder,
+ -- mouseBindings = myMouseBindings,
+ layoutHook = myLayoutHook,
+ manageHook = namedScratchpadManageHook myScratchpads,
+ -- handleEventHook = myEventHook,
+ logHook = dynamicLogWithPP myLemonbarPP { ppOutput = \x -> hPutStrLn notXMobar x},
+ startupHook = myStartupHook
+} `additionalKeys` myKeys
+