Added Xprompt to the config. Also cleaned up the config and added more comments.
This commit is contained in:
parent
aca6002bb3
commit
b5845cdddf
|
@ -9,12 +9,23 @@
|
||||||
-- Base
|
-- Base
|
||||||
import XMonad
|
import XMonad
|
||||||
import XMonad.Config.Desktop
|
import XMonad.Config.Desktop
|
||||||
import Data.Monoid
|
|
||||||
import Data.Maybe (isJust)
|
|
||||||
import System.IO (hPutStrLn)
|
import System.IO (hPutStrLn)
|
||||||
import System.Exit (exitSuccess)
|
import System.Exit (exitSuccess)
|
||||||
import qualified XMonad.StackSet as W
|
import qualified XMonad.StackSet as W
|
||||||
|
|
||||||
|
-- Prompt
|
||||||
|
import XMonad.Prompt
|
||||||
|
import XMonad.Prompt.Shell (shellPrompt)
|
||||||
|
import XMonad.Prompt.Man
|
||||||
|
import XMonad.Prompt.Ssh
|
||||||
|
import Control.Arrow ((&&&),first)
|
||||||
|
|
||||||
|
-- Data
|
||||||
|
import Data.List
|
||||||
|
import Data.Monoid
|
||||||
|
import Data.Maybe (isJust)
|
||||||
|
import qualified Data.Map as M
|
||||||
|
|
||||||
-- Utilities
|
-- Utilities
|
||||||
import XMonad.Util.Loggers
|
import XMonad.Util.Loggers
|
||||||
import XMonad.Util.EZConfig (additionalKeysP, additionalMouseBindings)
|
import XMonad.Util.EZConfig (additionalKeysP, additionalMouseBindings)
|
||||||
|
@ -65,52 +76,17 @@ import XMonad.Layout.ResizableTile
|
||||||
import XMonad.Layout.ZoomRow (zoomRow, zoomIn, zoomOut, zoomReset, ZoomMessage(ZoomFullToggle))
|
import XMonad.Layout.ZoomRow (zoomRow, zoomIn, zoomOut, zoomReset, ZoomMessage(ZoomFullToggle))
|
||||||
import XMonad.Layout.IM (withIM, Property(Role))
|
import XMonad.Layout.IM (withIM, Property(Role))
|
||||||
|
|
||||||
-- Prompts
|
|
||||||
import XMonad.Prompt (defaultXPConfig, XPConfig(..), XPPosition(Top), Direction1D(..))
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
---VARIABLES
|
---VARIABLES
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
myFont = "xft:Mononoki Nerd Font:regular:pixelsize=12"
|
myFont = "xft:Mononoki Nerd Font:regular:pixelsize=12"
|
||||||
myModMask = mod4Mask -- Sets modkey to super/windows key
|
myModMask = mod4Mask -- Sets modkey to super/windows key
|
||||||
myTerminal = "alacritty" -- Sets default terminal
|
altMask = mod4Mask --this is the super key, but I have it remapped
|
||||||
myTextEditor = "nvim" -- Sets default text editor
|
myTerminal = "alacritty" -- Sets default terminal
|
||||||
myBorderWidth = 2 -- Sets border width for windows
|
myTextEditor = "nvim" -- Sets default text editor
|
||||||
|
myBorderWidth = 2 -- Sets border width for windows
|
||||||
windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
|
windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
---MAIN
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
main = do
|
|
||||||
-- Launching three instances of xmobar on their monitors.
|
|
||||||
xmproc0 <- spawnPipe "xmobar -x 0 /home/dt/.config/xmobar/xmobarrc0"
|
|
||||||
xmproc1 <- spawnPipe "xmobar -x 1 /home/dt/.config/xmobar/xmobarrc2"
|
|
||||||
xmproc2 <- spawnPipe "xmobar -x 2 /home/dt/.config/xmobar/xmobarrc1"
|
|
||||||
-- the xmonad, ya know...what the WM is named after!
|
|
||||||
xmonad $ ewmh desktopConfig
|
|
||||||
{ manageHook = ( isFullscreen --> doFullFloat ) <+> myManageHook <+> manageHook desktopConfig <+> manageDocks
|
|
||||||
, logHook = dynamicLogWithPP xmobarPP
|
|
||||||
{ ppOutput = \x -> hPutStrLn xmproc0 x >> hPutStrLn xmproc1 x >> hPutStrLn xmproc2 x
|
|
||||||
, ppCurrent = xmobarColor "#c3e88d" "" . wrap "[" "]" -- Current workspace in xmobar
|
|
||||||
, ppVisible = xmobarColor "#c3e88d" "" -- Visible but not current workspace
|
|
||||||
, ppHidden = xmobarColor "#82AAFF" "" . wrap "*" "" -- Hidden workspaces in xmobar
|
|
||||||
, ppHiddenNoWindows = xmobarColor "#F07178" "" -- Hidden workspaces (no windows)
|
|
||||||
, ppTitle = xmobarColor "#d0d0d0" "" . shorten 60 -- Title of active window in xmobar
|
|
||||||
, ppSep = "<fc=#666666> | </fc>" -- Separators in xmobar
|
|
||||||
, ppUrgent = xmobarColor "#C45500" "" . wrap "!" "!" -- Urgent workspace
|
|
||||||
, ppExtras = [windowCount] -- # of windows current workspace
|
|
||||||
, ppOrder = \(ws:l:t:ex) -> [ws,l]++ex++[t]
|
|
||||||
}
|
|
||||||
, modMask = myModMask
|
|
||||||
, terminal = myTerminal
|
|
||||||
, startupHook = myStartupHook
|
|
||||||
, layoutHook = myLayoutHook
|
|
||||||
, workspaces = myWorkspaces
|
|
||||||
, borderWidth = myBorderWidth
|
|
||||||
, normalBorderColor = "#292d3e"
|
|
||||||
, focusedBorderColor = "#bbc5ff"
|
|
||||||
} `additionalKeysP` myKeys
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
---AUTOSTART
|
---AUTOSTART
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
|
@ -148,6 +124,71 @@ spawnSelected' :: [(String, String)] -> X ()
|
||||||
spawnSelected' lst = gridselect conf lst >>= flip whenJust spawn
|
spawnSelected' lst = gridselect conf lst >>= flip whenJust spawn
|
||||||
where conf = defaultGSConfig
|
where conf = defaultGSConfig
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
-- XPROMPT KEYMAP (emacs-like key bindings)
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
dtXPKeymap :: M.Map (KeyMask,KeySym) (XP ())
|
||||||
|
dtXPKeymap = M.fromList $
|
||||||
|
map (first $ (,) controlMask) -- control + <key>
|
||||||
|
[ (xK_z, killBefore) -- kill line backwards
|
||||||
|
, (xK_k, killAfter) -- kill line fowards
|
||||||
|
, (xK_a, startOfLine) -- move to the beginning of the line
|
||||||
|
, (xK_e, endOfLine) -- move to the end of the line
|
||||||
|
, (xK_m, deleteString Next) -- delete a character foward
|
||||||
|
, (xK_b, moveCursor Prev) -- move cursor forward
|
||||||
|
, (xK_f, moveCursor Next) -- move cursor backward
|
||||||
|
, (xK_BackSpace, killWord Prev) -- kill the previous word
|
||||||
|
, (xK_y, pasteString) -- paste a string
|
||||||
|
, (xK_g, quit) -- quit out of prompt
|
||||||
|
, (xK_bracketleft, quit)
|
||||||
|
] ++
|
||||||
|
map (first $ (,) altMask) -- meta key + <key>
|
||||||
|
[ (xK_BackSpace, killWord Prev) -- kill the prev word
|
||||||
|
, (xK_f, moveWord Next) -- move a word forward
|
||||||
|
, (xK_b, moveWord Prev) -- move a word backward
|
||||||
|
, (xK_d, killWord Next) -- kill the next word
|
||||||
|
, (xK_n, moveHistory W.focusUp')
|
||||||
|
, (xK_p, moveHistory W.focusDown')
|
||||||
|
]
|
||||||
|
++
|
||||||
|
map (first $ (,) 0) -- <key>
|
||||||
|
[ (xK_Return, setSuccess True >> setDone True)
|
||||||
|
, (xK_KP_Enter, setSuccess True >> setDone True)
|
||||||
|
, (xK_BackSpace, deleteString Prev)
|
||||||
|
, (xK_Delete, deleteString Next)
|
||||||
|
, (xK_Left, moveCursor Prev)
|
||||||
|
, (xK_Right, moveCursor Next)
|
||||||
|
, (xK_Home, startOfLine)
|
||||||
|
, (xK_End, endOfLine)
|
||||||
|
, (xK_Down, moveHistory W.focusUp')
|
||||||
|
, (xK_Up, moveHistory W.focusDown')
|
||||||
|
, (xK_Escape, quit)
|
||||||
|
]
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
-- XPROMPT SETTINGS
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
dtXPConfig = def
|
||||||
|
{ font = "xft:Mononoki Nerd Font:size=9"
|
||||||
|
, bgColor = "#292d3e"
|
||||||
|
, fgColor = "#d0d0d0"
|
||||||
|
, bgHLight = "#c792ea"
|
||||||
|
, fgHLight = "#000000"
|
||||||
|
, borderColor = "#535974"
|
||||||
|
, promptBorderWidth = 1
|
||||||
|
, promptKeymap = dtXPKeymap
|
||||||
|
, position = Top
|
||||||
|
, height = 20
|
||||||
|
, historySize = 256
|
||||||
|
, historyFilter = id
|
||||||
|
, defaultText = []
|
||||||
|
, autoComplete = Just 100000 -- set Just 100000 for .1 sec
|
||||||
|
, showCompletionOnTab = True
|
||||||
|
, searchPredicate = isPrefixOf
|
||||||
|
, alwaysHighlight = True
|
||||||
|
, maxComplRows = Just 5 -- set to Just 5 for 5 rows
|
||||||
|
}
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
---KEYBINDINGS
|
---KEYBINDINGS
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
|
@ -156,14 +197,19 @@ myKeys =
|
||||||
[ ("M-C-r", spawn "xmonad --recompile") -- Recompiles xmonad
|
[ ("M-C-r", spawn "xmonad --recompile") -- Recompiles xmonad
|
||||||
, ("M-S-r", spawn "xmonad --restart") -- Restarts xmonad
|
, ("M-S-r", spawn "xmonad --restart") -- Restarts xmonad
|
||||||
, ("M-S-q", io exitSuccess) -- Quits xmonad
|
, ("M-S-q", io exitSuccess) -- Quits xmonad
|
||||||
|
|
||||||
|
-- Prompts
|
||||||
|
, ("M-S-<Return>", shellPrompt dtXPConfig) -- Shell Prompt
|
||||||
|
, ("M-S-s", sshPrompt dtXPConfig) -- Ssh Prompt
|
||||||
|
, ("M-S-m", manPrompt dtXPConfig) -- Manpage Prompt
|
||||||
|
|
||||||
-- Windows
|
-- Windows
|
||||||
, ("M-S-c", kill1) -- Kill the currently focused client
|
, ("M-S-c", kill1) -- Kill the currently focused client
|
||||||
, ("M-S-a", killAll) -- Kill all the windows on current workspace
|
, ("M-S-a", killAll) -- Kill all the windows on current workspace
|
||||||
|
|
||||||
-- Floating windows
|
-- Floating windows
|
||||||
, ("M-<Delete>", withFocused $ windows . W.sink) -- Push floating window back to tile.
|
, ("M-<Delete>", withFocused $ windows . W.sink) -- Push floating window back to tile.
|
||||||
, ("M-S-<Delete>", sinkAll) -- Push ALL floating windows back to tile.
|
, ("M-S-<Delete>", sinkAll) -- Push ALL floating windows back to tile.
|
||||||
|
|
||||||
-- Grid Select
|
-- Grid Select
|
||||||
, (("M-S-t"), spawnSelected'
|
, (("M-S-t"), spawnSelected'
|
||||||
|
@ -192,13 +238,13 @@ myKeys =
|
||||||
, ("M-m", windows W.focusMaster) -- Move focus to the master window
|
, ("M-m", windows W.focusMaster) -- Move focus to the master window
|
||||||
, ("M-j", windows W.focusDown) -- Move focus to the next window
|
, ("M-j", windows W.focusDown) -- Move focus to the next window
|
||||||
, ("M-k", windows W.focusUp) -- Move focus to the prev window
|
, ("M-k", windows W.focusUp) -- Move focus to the prev window
|
||||||
, ("M-S-m", windows W.swapMaster) -- Swap the focused window and the master window
|
--, ("M-S-m", windows W.swapMaster) -- Swap the focused window and the master window
|
||||||
, ("M-S-j", windows W.swapDown) -- Swap the focused window with the next window
|
, ("M-S-j", windows W.swapDown) -- Swap the focused window with the next window
|
||||||
, ("M-S-k", windows W.swapUp) -- Swap the focused window with the prev window
|
, ("M-S-k", windows W.swapUp) -- Swap the focused window with the prev window
|
||||||
, ("M-<Backspace>", promote) -- Moves focused window to master, all others maintain order
|
, ("M-<Backspace>", promote) -- Moves focused window to master, all others maintain order
|
||||||
, ("M1-S-<Tab>", rotSlavesDown) -- Rotate all windows except master and keep focus in place
|
, ("M1-S-<Tab>", rotSlavesDown) -- Rotate all windows except master and keep focus in place
|
||||||
, ("M1-C-<Tab>", rotAllDown) -- Rotate all the windows in the current stack
|
, ("M1-C-<Tab>", rotAllDown) -- Rotate all the windows in the current stack
|
||||||
, ("M-S-s", windows copyToAll)
|
--, ("M-S-s", windows copyToAll)
|
||||||
, ("M-C-s", killAllOtherCopies)
|
, ("M-C-s", killAllOtherCopies)
|
||||||
|
|
||||||
, ("M-C-M1-<Up>", sendMessage Arrange)
|
, ("M-C-M1-<Up>", sendMessage Arrange)
|
||||||
|
@ -217,14 +263,14 @@ myKeys =
|
||||||
, ("M-C-<Left>", sendMessage (DecreaseLeft 10)) -- Decrease size of focused window left
|
, ("M-C-<Left>", sendMessage (DecreaseLeft 10)) -- Decrease size of focused window left
|
||||||
|
|
||||||
-- Layouts
|
-- Layouts
|
||||||
, ("M-<Tab>", sendMessage NextLayout) -- Switch to next layout
|
, ("M-<Tab>", sendMessage NextLayout) -- Switch to next layout
|
||||||
, ("M-S-<Space>", sendMessage ToggleStruts) -- Toggles struts
|
, ("M-S-<Space>", sendMessage ToggleStruts) -- Toggles struts
|
||||||
, ("M-S-n", sendMessage $ Toggle NOBORDERS) -- Toggles noborder
|
, ("M-S-n", sendMessage $ Toggle NOBORDERS) -- Toggles noborder
|
||||||
, ("M-S-=", sendMessage (Toggle NBFULL) >> sendMessage ToggleStruts) -- Toggles noborder/full
|
, ("M-S-=", sendMessage (Toggle NBFULL) >> sendMessage ToggleStruts) -- Toggles noborder/full
|
||||||
, ("M-S-f", sendMessage (T.Toggle "float"))
|
, ("M-S-f", sendMessage (T.Toggle "float"))
|
||||||
, ("M-S-x", sendMessage $ Toggle REFLECTX)
|
, ("M-S-x", sendMessage $ Toggle REFLECTX)
|
||||||
, ("M-S-y", sendMessage $ Toggle REFLECTY)
|
, ("M-S-y", sendMessage $ Toggle REFLECTY)
|
||||||
, ("M-S-m", sendMessage $ Toggle MIRROR)
|
--, ("M-S-m", sendMessage $ Toggle MIRROR)
|
||||||
, ("M-<KP_Multiply>", sendMessage (IncMasterN 1)) -- Increase number of clients in the master pane
|
, ("M-<KP_Multiply>", sendMessage (IncMasterN 1)) -- Increase number of clients in the master pane
|
||||||
, ("M-<KP_Divide>", sendMessage (IncMasterN (-1))) -- Decrease number of clients in the master pane
|
, ("M-<KP_Divide>", sendMessage (IncMasterN (-1))) -- Decrease number of clients in the master pane
|
||||||
, ("M-S-<KP_Multiply>", increaseLimit) -- Increase number of windows that can be shown
|
, ("M-S-<KP_Multiply>", increaseLimit) -- Increase number of windows that can be shown
|
||||||
|
@ -252,7 +298,7 @@ myKeys =
|
||||||
, ("M-<Return>", spawn (myTerminal ++ " -e fish"))
|
, ("M-<Return>", spawn (myTerminal ++ " -e fish"))
|
||||||
|
|
||||||
--- Dmenu Scripts (Alt+Ctr+Key)
|
--- Dmenu Scripts (Alt+Ctr+Key)
|
||||||
, ("M-S-<Return>", spawn "dmenu_run")
|
--, ("M-S-<Return>", spawn "dmenu_run")
|
||||||
, ("M1-C-e", spawn "./.dmenu/dmenu-edit-configs.sh")
|
, ("M1-C-e", spawn "./.dmenu/dmenu-edit-configs.sh")
|
||||||
, ("M1-C-h", spawn "./.dmenu/dmenu-hugo.sh")
|
, ("M1-C-h", spawn "./.dmenu/dmenu-hugo.sh")
|
||||||
, ("M1-C-m", spawn "./.dmenu/dmenu-sysmon.sh")
|
, ("M1-C-m", spawn "./.dmenu/dmenu-sysmon.sh")
|
||||||
|
@ -374,3 +420,37 @@ myScratchPads = [ NS "terminal" spawnTerm findTerm manageTerm
|
||||||
w = 0.9
|
w = 0.9
|
||||||
t = 0.95 -h
|
t = 0.95 -h
|
||||||
l = 0.95 -w
|
l = 0.95 -w
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
---MAIN
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
main = do
|
||||||
|
-- Launching three instances of xmobar on their monitors.
|
||||||
|
xmproc0 <- spawnPipe "xmobar -x 0 /home/dt/.config/xmobar/xmobarrc0"
|
||||||
|
xmproc1 <- spawnPipe "xmobar -x 1 /home/dt/.config/xmobar/xmobarrc2"
|
||||||
|
xmproc2 <- spawnPipe "xmobar -x 2 /home/dt/.config/xmobar/xmobarrc1"
|
||||||
|
-- the xmonad, ya know...what the WM is named after!
|
||||||
|
xmonad $ ewmh desktopConfig
|
||||||
|
{ manageHook = ( isFullscreen --> doFullFloat ) <+> myManageHook <+> manageHook desktopConfig <+> manageDocks
|
||||||
|
, logHook = dynamicLogWithPP xmobarPP
|
||||||
|
{ ppOutput = \x -> hPutStrLn xmproc0 x >> hPutStrLn xmproc1 x >> hPutStrLn xmproc2 x
|
||||||
|
, ppCurrent = xmobarColor "#c3e88d" "" . wrap "[" "]" -- Current workspace in xmobar
|
||||||
|
, ppVisible = xmobarColor "#c3e88d" "" -- Visible but not current workspace
|
||||||
|
, ppHidden = xmobarColor "#82AAFF" "" . wrap "*" "" -- Hidden workspaces in xmobar
|
||||||
|
, ppHiddenNoWindows = xmobarColor "#F07178" "" -- Hidden workspaces (no windows)
|
||||||
|
, ppTitle = xmobarColor "#d0d0d0" "" . shorten 60 -- Title of active window in xmobar
|
||||||
|
, ppSep = "<fc=#666666> | </fc>" -- Separators in xmobar
|
||||||
|
, ppUrgent = xmobarColor "#C45500" "" . wrap "!" "!" -- Urgent workspace
|
||||||
|
, ppExtras = [windowCount] -- # of windows current workspace
|
||||||
|
, ppOrder = \(ws:l:t:ex) -> [ws,l]++ex++[t]
|
||||||
|
}
|
||||||
|
, modMask = myModMask
|
||||||
|
, terminal = myTerminal
|
||||||
|
, startupHook = myStartupHook
|
||||||
|
, layoutHook = myLayoutHook
|
||||||
|
, workspaces = myWorkspaces
|
||||||
|
, borderWidth = myBorderWidth
|
||||||
|
, normalBorderColor = "#292d3e"
|
||||||
|
, focusedBorderColor = "#bbc5ff"
|
||||||
|
} `additionalKeysP` myKeys
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue