|
|
@ -10,9 +10,8 @@ import Control.Lens ((^.))
|
|
|
|
import Data.Generics.Product (field)
|
|
|
|
import Data.Generics.Product (field)
|
|
|
|
import qualified Data.List as List
|
|
|
|
import qualified Data.List as List
|
|
|
|
import XMonad
|
|
|
|
import XMonad
|
|
|
|
import XMonad.Actions.CycleWS (swapNextScreen)
|
|
|
|
-- import XMonad.Actions.CycleWS (swapNextScreen)
|
|
|
|
import XMonad.Actions.Search
|
|
|
|
import XMonad.Actions.Search
|
|
|
|
import XMonad.CustomPrompt
|
|
|
|
|
|
|
|
import XMonad.Hooks.EwmhDesktops (ewmh, ewmhDesktopsStartup)
|
|
|
|
import XMonad.Hooks.EwmhDesktops (ewmh, ewmhDesktopsStartup)
|
|
|
|
import XMonad.Hooks.SetWMName (setWMName)
|
|
|
|
import XMonad.Hooks.SetWMName (setWMName)
|
|
|
|
import XMonad.Hooks.UrgencyHook (args, dzenUrgencyHook,
|
|
|
|
import XMonad.Hooks.UrgencyHook (args, dzenUrgencyHook,
|
|
|
@ -82,18 +81,19 @@ scratchSubmaps conf = submapName . mkNamedKeymap conf $ [
|
|
|
|
searchSubmaps :: ExtraConfig -> XConfig l -> NamedAction
|
|
|
|
searchSubmaps :: ExtraConfig -> XConfig l -> NamedAction
|
|
|
|
searchSubmaps extraConfig conf =
|
|
|
|
searchSubmaps extraConfig conf =
|
|
|
|
let mkBrowser = promptSearchBrowser def (extraConfig ^. field @"applications" . field @"browser")
|
|
|
|
let mkBrowser = promptSearchBrowser def (extraConfig ^. field @"applications" . field @"browser")
|
|
|
|
_googleP = addName "Search google" $ mkBrowser google
|
|
|
|
googleP = addName "Search google" $ mkBrowser google
|
|
|
|
_ddgP = addName "Search duckduckgo" $ mkBrowser (searchEngine "duckduckgo" "http://duckduckgo.com/?q=")
|
|
|
|
|
|
|
|
searx = addName "Search searx" $ mkBrowser (searchEngine "searx" "https://searx.me/?q=")
|
|
|
|
|
|
|
|
extras = [(key, addName name $ mkBrowser (searchEngine name url)) | Search{..} <- searchEndpoints extraConfig]
|
|
|
|
extras = [(key, addName name $ mkBrowser (searchEngine name url)) | Search{..} <- searchEndpoints extraConfig]
|
|
|
|
in submapName . mkNamedKeymap conf $
|
|
|
|
in submapName . mkNamedKeymap conf $
|
|
|
|
[ ("d", searx) -- Training to use ddg again
|
|
|
|
("g", googleP) : extras
|
|
|
|
, ("g", searx) -- training to use ddg again
|
|
|
|
|
|
|
|
] ++ extras
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
myNav2d :: Navigation2DConfig
|
|
|
|
myNav2d :: Navigation2DConfig
|
|
|
|
myNav2d = def { defaultTiledNavigation = lineNavigation }
|
|
|
|
myNav2d =
|
|
|
|
|
|
|
|
def { defaultTiledNavigation = nav
|
|
|
|
|
|
|
|
, screenNavigation = nav
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
where
|
|
|
|
|
|
|
|
nav = hybridOf lineNavigation sideNavigation
|
|
|
|
|
|
|
|
|
|
|
|
showKeybindings :: [((KeyMask, KeySym), NamedAction)] -> NamedAction
|
|
|
|
showKeybindings :: [((KeyMask, KeySym), NamedAction)] -> NamedAction
|
|
|
|
showKeybindings x = addName "Show keybindings" $ io $ do
|
|
|
|
showKeybindings x = addName "Show keybindings" $ io $ do
|
|
|
@ -128,14 +128,10 @@ myManageHook = composeAll $ concat [
|
|
|
|
, documentHooks
|
|
|
|
, documentHooks
|
|
|
|
, floatHooks
|
|
|
|
, floatHooks
|
|
|
|
, debuggerHooks
|
|
|
|
, debuggerHooks
|
|
|
|
, ideHooks
|
|
|
|
|
|
|
|
, flowHook
|
|
|
|
, flowHook
|
|
|
|
]
|
|
|
|
]
|
|
|
|
where
|
|
|
|
where
|
|
|
|
classHook y = map (\x -> className =? x --> y)
|
|
|
|
classHook y = map (\x -> className =? x --> y)
|
|
|
|
ideHooks = classHook (doShift "eclipse") [
|
|
|
|
|
|
|
|
"Anypoint Studio"
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
webHooks = classHook (doShift "web") [
|
|
|
|
webHooks = classHook (doShift "web") [
|
|
|
|
"Firefox"
|
|
|
|
"Firefox"
|
|
|
|
, "qutebrowser"
|
|
|
|
, "qutebrowser"
|
|
|
@ -155,7 +151,7 @@ myManageHook = composeAll $ concat [
|
|
|
|
"libreoffice"
|
|
|
|
"libreoffice"
|
|
|
|
, "libreoffice-calc"
|
|
|
|
, "libreoffice-calc"
|
|
|
|
, "Assistant"
|
|
|
|
, "Assistant"
|
|
|
|
, "Bouml"
|
|
|
|
, "Bouml" -- Oh wow, didn't even remember this existed
|
|
|
|
]
|
|
|
|
]
|
|
|
|
floatHooks = classHook doFloat [
|
|
|
|
floatHooks = classHook doFloat [
|
|
|
|
"SMplayer"
|
|
|
|
"SMplayer"
|
|
|
@ -163,11 +159,11 @@ myManageHook = composeAll $ concat [
|
|
|
|
, "MPlayer"
|
|
|
|
, "MPlayer"
|
|
|
|
, "Kaffeine"
|
|
|
|
, "Kaffeine"
|
|
|
|
, "Xmessage"
|
|
|
|
, "Xmessage"
|
|
|
|
, "Wfica_Seamless"
|
|
|
|
, "Wfica_Seamless" -- I think this is citrix
|
|
|
|
, "mpv"
|
|
|
|
, "mpv"
|
|
|
|
]
|
|
|
|
]
|
|
|
|
debuggerHooks = classHook (doShift "debugger") [
|
|
|
|
debuggerHooks = classHook (doShift "debugger") [
|
|
|
|
"JSwat Debugger",
|
|
|
|
"JSwat Debugger", -- Haven't used this in years. A good thing?
|
|
|
|
"DBeaver"
|
|
|
|
"DBeaver"
|
|
|
|
]
|
|
|
|
]
|
|
|
|
dynamicsHook = [title =~? "Dynamics" --> doShift "dynamics"]
|
|
|
|
dynamicsHook = [title =~? "Dynamics" --> doShift "dynamics"]
|
|
|
@ -183,9 +179,9 @@ myKeys extraConfig conf =
|
|
|
|
, ("<XF86AudioLowerVolume>", addName "Decrease volume" $ spawn "amixer set Master 2%-")
|
|
|
|
, ("<XF86AudioLowerVolume>", addName "Decrease volume" $ spawn "amixer set Master 2%-")
|
|
|
|
, ("M-<plus>", addName "Increase volume" $ spawn "amixer set Master 2+")
|
|
|
|
, ("M-<plus>", addName "Increase volume" $ spawn "amixer set Master 2+")
|
|
|
|
, ("M-<minus>", addName "Decrease volume" $ spawn "amixer set Master 2-")
|
|
|
|
, ("M-<minus>", addName "Decrease volume" $ spawn "amixer set Master 2-")
|
|
|
|
, ("<XF86AudioPlay>", addName "Play/pause mopidy" $ spawn "mpc toggle")
|
|
|
|
, ("<XF86AudioPlay>", addName "Play/pause music" $ spawn "mpc toggle")
|
|
|
|
, ("M-m", spotify extraConfig conf)
|
|
|
|
, ("M-m", spotify extraConfig conf)
|
|
|
|
, ("M-S-<Space>", addName "Swap screens" swapNextScreen)
|
|
|
|
-- , ("M-S-<Space>", addName "Swap screens" swapNextScreen)
|
|
|
|
, ("M-<Backspace>", addName "Kill window" kill)
|
|
|
|
, ("M-<Backspace>", addName "Kill window" kill)
|
|
|
|
-- scrot requires `unGrab`
|
|
|
|
-- scrot requires `unGrab`
|
|
|
|
, ("M-<Print>", addName "Take screenshot" $ spawn (screenshot . applications $ extraConfig))] ^++^
|
|
|
|
, ("M-<Print>", addName "Take screenshot" $ spawn (screenshot . applications $ extraConfig))] ^++^
|
|
|
@ -199,10 +195,13 @@ myKeys extraConfig conf =
|
|
|
|
, ("M-k", addName "Go up" $ windowGo U False)
|
|
|
|
, ("M-k", addName "Go up" $ windowGo U False)
|
|
|
|
, ("M-h", addName "Go left" $ windowGo L False)
|
|
|
|
, ("M-h", addName "Go left" $ windowGo L False)
|
|
|
|
, ("M-l", addName "Go right" $ windowGo R False)
|
|
|
|
, ("M-l", addName "Go right" $ windowGo R False)
|
|
|
|
, ("M-S-j", addName "Shift window down" $ windowSwap D False)
|
|
|
|
-- Swap screen left or right, don't wrap
|
|
|
|
, ("M-S-k", addName "Shift window up" $ windowSwap U False)
|
|
|
|
, ("M-S-h", addName "Shift window up" $ screenSwap L True)
|
|
|
|
, ("M-S-h", addName "Shift window left" $ windowSwap L False)
|
|
|
|
, ("M-S-l", addName "Shift window right" $ screenSwap R True)
|
|
|
|
, ("M-S-l", addName "Shift window right" $ windowSwap R False)
|
|
|
|
-- , ("M-S-j", addName "Shift window down" $ windowSwap D False)
|
|
|
|
|
|
|
|
-- , ("M-S-k", addName "Shift window up" $ windowSwap U False)
|
|
|
|
|
|
|
|
-- , ("M-S-h", addName "Shift window left" $ windowSwap L False)
|
|
|
|
|
|
|
|
-- , ("M-S-l", addName "Shift window right" $ windowSwap R False)
|
|
|
|
, ("M-.", addName "Go to previous window" $ windows W.focusDown)
|
|
|
|
, ("M-.", addName "Go to previous window" $ windows W.focusDown)
|
|
|
|
, ("M-,", addName "Go to next window" $ windows W.focusUp)
|
|
|
|
, ("M-,", addName "Go to next window" $ windows W.focusUp)
|
|
|
|
, ("M-S-m", addName "Swap master" $ windows W.swapMaster)
|
|
|
|
, ("M-S-m", addName "Swap master" $ windows W.swapMaster)
|
|
|
@ -243,7 +242,11 @@ masser extraConfig = xmonad =<< statusBar (bar extraConfig) zenburnPP toggleStru
|
|
|
|
, normalBorderColor = "#262626"
|
|
|
|
, normalBorderColor = "#262626"
|
|
|
|
, focusedBorderColor = "#7F9F7F"
|
|
|
|
, focusedBorderColor = "#7F9F7F"
|
|
|
|
, manageHook = myManageHook
|
|
|
|
, manageHook = myManageHook
|
|
|
|
, focusFollowsMouse = True
|
|
|
|
-- The focus follows mouse is a bad idea for me because
|
|
|
|
|
|
|
|
-- it misbehaves with accordion. If I accidentally hover
|
|
|
|
|
|
|
|
-- my mouse at the lower edge of the accordion, it will
|
|
|
|
|
|
|
|
-- just cycle through to the last accordion
|
|
|
|
|
|
|
|
, focusFollowsMouse = False
|
|
|
|
, logHook = updatePointer (0.25, 0.25) (0.25, 0.25)
|
|
|
|
, logHook = updatePointer (0.25, 0.25) (0.25, 0.25)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
myLayout = toggleLayouts zoom workspaceLayouts
|
|
|
|
myLayout = toggleLayouts zoom workspaceLayouts
|
|
|
|