Compare commits
14 Commits
views
...
b9e180f910
| Author | SHA1 | Date | |
|---|---|---|---|
| b9e180f910 | |||
| d88a4aa7a0 | |||
| 93e4e9f930 | |||
| 30d3f4ea2c | |||
| e80b309569 | |||
| d15ae94ba5 | |||
| a69b41e652 | |||
| 321ed016a0 | |||
| 6e2a821531 | |||
| 059635057b | |||
| 8e1f9908c9 | |||
| c6406cc2dd | |||
| 2f2593eabc | |||
| 892c6c3b72 |
+3
-3
@@ -10,10 +10,10 @@ before_script:
|
|||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- env:
|
- env:
|
||||||
- NIXPKGS=https://github.com/NixOS/nixpkgs-channels/archive/nixos-19.03.tar.gz
|
- VERSION=19.09
|
||||||
- env:
|
- env:
|
||||||
- NIXPKGS=https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz
|
- VERSION=unstable
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- nix run nixpkgs.haskellPackages.hlint -c hlint src
|
- nix run nixpkgs.haskellPackages.hlint -c hlint src
|
||||||
- nix build -I nixpkgs=$NIXPKGS -f ./release.nix xmonad-masser
|
- nix build -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/nixos-$VERSION.tar.gz -f ./release.nix xmonad-masser
|
||||||
|
|||||||
+41
-30
@@ -1,6 +1,7 @@
|
|||||||
{-# LANGUAGE DataKinds #-}
|
{-# LANGUAGE DataKinds #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
|
{-# LANGUAGE ScopedTypeVariables #-}
|
||||||
{-# LANGUAGE TypeApplications #-}
|
{-# LANGUAGE TypeApplications #-}
|
||||||
module XMonad.Config.MasseR where
|
module XMonad.Config.MasseR where
|
||||||
|
|
||||||
@@ -9,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,
|
||||||
@@ -23,7 +23,7 @@ import XMonad.Layout.Decoration (Decoration,
|
|||||||
import XMonad.Layout.DwmStyle
|
import XMonad.Layout.DwmStyle
|
||||||
import XMonad.Layout.LayoutModifier (ModifiedLayout)
|
import XMonad.Layout.LayoutModifier (ModifiedLayout)
|
||||||
import XMonad.Layout.Master
|
import XMonad.Layout.Master
|
||||||
import XMonad.Layout.NoBorders (smartBorders)
|
import XMonad.Layout.NoBorders (noBorders, smartBorders)
|
||||||
import XMonad.Layout.PerWorkspace (onWorkspace)
|
import XMonad.Layout.PerWorkspace (onWorkspace)
|
||||||
import XMonad.Layout.Renamed
|
import XMonad.Layout.Renamed
|
||||||
import XMonad.Layout.Simplest (Simplest)
|
import XMonad.Layout.Simplest (Simplest)
|
||||||
@@ -31,9 +31,11 @@ import XMonad.Layout.Spiral
|
|||||||
import XMonad.Layout.Tabbed (TabbedDecoration,
|
import XMonad.Layout.Tabbed (TabbedDecoration,
|
||||||
Theme (..), shrinkText,
|
Theme (..), shrinkText,
|
||||||
tabbed)
|
tabbed)
|
||||||
import XMonad.Layout.ToggleLayouts (ToggleLayout (..))
|
import XMonad.Layout.ToggleLayouts (ToggleLayout (..),
|
||||||
|
toggleLayouts)
|
||||||
import XMonad.Password
|
import XMonad.Password
|
||||||
import XMonad.Prompt.RunOrRaise (runOrRaisePrompt)
|
import XMonad.Prompt.RunOrRaise (runOrRaisePrompt)
|
||||||
|
import XMonad.Prompt.Shell (shellPrompt)
|
||||||
import qualified XMonad.StackSet as W
|
import qualified XMonad.StackSet as W
|
||||||
import XMonad.TopicSpace
|
import XMonad.TopicSpace
|
||||||
import XMonad.Util.EZConfig
|
import XMonad.Util.EZConfig
|
||||||
@@ -47,6 +49,7 @@ import XMonad.Util.SpawnOnce
|
|||||||
|
|
||||||
import System.IO (hClose, hPutStr)
|
import System.IO (hClose, hPutStr)
|
||||||
import XMonad.Actions.Navigation2D
|
import XMonad.Actions.Navigation2D
|
||||||
|
import XMonad.Actions.UpdatePointer (updatePointer)
|
||||||
import XMonad.Util.NamedActions
|
import XMonad.Util.NamedActions
|
||||||
import XMonad.Util.Run (spawnPipe)
|
import XMonad.Util.Run (spawnPipe)
|
||||||
|
|
||||||
@@ -78,17 +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=")
|
|
||||||
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", ddgP) -- Training to use ddg again
|
("g", googleP) : extras
|
||||||
, ("g", ddgP) -- 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
|
||||||
@@ -123,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"
|
||||||
@@ -150,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"
|
||||||
@@ -158,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"]
|
||||||
@@ -178,37 +179,40 @@ 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))] ^++^
|
||||||
subKeys "Launchers" [ ("M-S-y", addName "Open youtube" $ spawn "mpv $(clip -o)")
|
subKeys "Launchers" [ ("M-S-<Return>", addName "Open terminal" $ spawn $ XMonad.terminal conf)
|
||||||
, ("M-S-<Return>", addName "Open terminal" $ spawn $ XMonad.terminal conf)
|
|
||||||
, ("M-n", scratchSubmaps conf)
|
, ("M-n", scratchSubmaps conf)
|
||||||
, ("M-s", searchSubmaps extraConfig conf)
|
, ("M-s", searchSubmaps extraConfig conf)
|
||||||
, ("M-p", addName "Retrieve password" $ passPrompt def)
|
, ("M-p", addName "Retrieve password" $ passPrompt def)
|
||||||
, ("M-S-e", addName "Open with app" xdgOpen)
|
, ("M-e", addName "Run app" $ runOrRaisePrompt def)
|
||||||
, ("M-e", addName "Run app" $ runOrRaisePrompt def)] ^++^
|
, ("M-S-e", addName "Run shell command" $ shellPrompt def)] ^++^
|
||||||
subKeys "Windows" [ ("M-j", addName "Go down" $ windowGo D False)
|
subKeys "Windows" [ ("M-j", addName "Go down" $ windowGo D False)
|
||||||
, ("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)
|
||||||
] ^++^
|
] ^++^
|
||||||
subKeys "Projects & Workspaces" (topicKeys' extraConfig conf) ^++^
|
subKeys "Projects & Workspaces" (topicKeys' extraConfig conf) ^++^
|
||||||
subKeys "Layout management" [ ("M-C-<Space>", addName "Toggle layout" $ sendMessage ToggleLayout)
|
subKeys "Layout management" [ ("M-C-<Space>", addName "Toggle layout" $ sendMessage ToggleLayout)
|
||||||
|
, ("M-z", addName "Toggle zoom" $ sendMessage (Toggle "Zoom"))
|
||||||
, ("M-<Space>", addName "Next layout" $ sendMessage NextLayout)] ^++^
|
, ("M-<Space>", addName "Next layout" $ sendMessage NextLayout)] ^++^
|
||||||
subKeys "Resize" []
|
subKeys "Resize" []
|
||||||
where
|
where
|
||||||
locker = "sh ~/scripts/lock.sh"
|
locker = "xset s activate"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -238,15 +242,22 @@ masser extraConfig = xmonad =<< statusBar (bar extraConfig) zenburnPP toggleStru
|
|||||||
, normalBorderColor = "#262626"
|
, normalBorderColor = "#262626"
|
||||||
, focusedBorderColor = "#7F9F7F"
|
, focusedBorderColor = "#7F9F7F"
|
||||||
, manageHook = myManageHook
|
, manageHook = myManageHook
|
||||||
|
-- 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
|
, focusFollowsMouse = False
|
||||||
|
, logHook = updatePointer (0.25, 0.25) (0.25, 0.25)
|
||||||
}
|
}
|
||||||
myLayout = onWorkspace "web" webLayout $
|
myLayout = toggleLayouts zoom workspaceLayouts
|
||||||
|
where
|
||||||
|
zoom = renamed [Replace "Zoom"] (noBorders Full)
|
||||||
|
workspaceLayouts = onWorkspace "web" webLayout $
|
||||||
onWorkspace "dynamics" webLayout $
|
onWorkspace "dynamics" webLayout $
|
||||||
onWorkspace "pdf" pdfLayout $
|
onWorkspace "pdf" pdfLayout $
|
||||||
onWorkspace "documents" documentLayout $
|
onWorkspace "documents" documentLayout $
|
||||||
onWorkspace "mail" mailLayout
|
onWorkspace "mail" mailLayout
|
||||||
defLayout
|
defLayout
|
||||||
where
|
|
||||||
-- Default layout
|
-- Default layout
|
||||||
defLayout = tiled ||| tabLayout ||| readLayout ||| bspLayout ||| vimLayout ||| spiral (6/7) ||| Full
|
defLayout = tiled ||| tabLayout ||| readLayout ||| bspLayout ||| vimLayout ||| spiral (6/7) ||| Full
|
||||||
-- Pdfs are restricted to tabs
|
-- Pdfs are restricted to tabs
|
||||||
|
|||||||
@@ -54,4 +54,4 @@ mkPassPrompt label f conf = do
|
|||||||
|
|
||||||
|
|
||||||
selectPassword :: String -> X ()
|
selectPassword :: String -> X ()
|
||||||
selectPassword pass = spawn $ "pass --clip " ++ pass
|
selectPassword pass = spawn $ "PASSWORD_STORE_CLIP_TIME=10 pass --clip " ++ pass
|
||||||
|
|||||||
+1
-1
@@ -25,7 +25,7 @@ library
|
|||||||
, XMonad.TopicSpace
|
, XMonad.TopicSpace
|
||||||
, XMonad.XMobar
|
, XMonad.XMobar
|
||||||
-- other-extensions:
|
-- other-extensions:
|
||||||
build-depends: base >=4.11 && <4.13
|
build-depends: base >=4.11 && <4.14
|
||||||
, xmonad
|
, xmonad
|
||||||
, xmonad-contrib
|
, xmonad-contrib
|
||||||
, mtl
|
, mtl
|
||||||
|
|||||||
Reference in New Issue
Block a user