Compare commits
14 Commits
searching
...
6e2a821531
Author | SHA1 | Date | |
---|---|---|---|
6e2a821531 | |||
059635057b | |||
8e1f9908c9 | |||
c6406cc2dd | |||
2f2593eabc | |||
892c6c3b72 | |||
cb8917f6cf | |||
6c9bc7399a | |||
f7b1d89755 | |||
1639feed4c | |||
3789e23cb9 | |||
7c27571ca7 | |||
dbd3024d98 | |||
9b16e074ef |
@ -9,8 +9,6 @@ before_script:
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- env:
|
||||
- NIXPKGS=https://github.com/NixOS/nixpkgs-channels/archive/nixos-18.09.tar.gz
|
||||
- env:
|
||||
- NIXPKGS=https://github.com/NixOS/nixpkgs-channels/archive/nixos-19.03.tar.gz
|
||||
- env:
|
||||
|
14
default.nix
14
default.nix
@ -1,3 +1,13 @@
|
||||
{ haskellPackages }:
|
||||
{ lib, haskellPackages }:
|
||||
|
||||
haskellPackages.callCabal2nix "xmonad-masser" ./. {}
|
||||
let
|
||||
filtered = src: lib.sourceByRegex src [
|
||||
"^src.*"
|
||||
"Setup.hs"
|
||||
".*cabal"
|
||||
"LICENSE"
|
||||
];
|
||||
|
||||
in
|
||||
|
||||
haskellPackages.callCabal2nix "xmonad-masser" (filtered ./.) {}
|
||||
|
@ -1,15 +1,18 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE RecordWildCards #-}
|
||||
{-# LANGUAGE DataKinds #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE RecordWildCards #-}
|
||||
{-# LANGUAGE ScopedTypeVariables #-}
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
module XMonad.Config.MasseR where
|
||||
|
||||
|
||||
import XMonad.Password
|
||||
import XMonad.CustomPrompt
|
||||
import XMonad.TopicSpace
|
||||
import Control.Lens ((^.))
|
||||
import Data.Generics.Product (field)
|
||||
import qualified Data.List as List
|
||||
import XMonad
|
||||
import XMonad.Actions.CycleWS (swapNextScreen)
|
||||
import XMonad.Actions.Search
|
||||
import XMonad.CustomPrompt
|
||||
import XMonad.Hooks.EwmhDesktops (ewmh, ewmhDesktopsStartup)
|
||||
import XMonad.Hooks.SetWMName (setWMName)
|
||||
import XMonad.Hooks.UrgencyHook (args, dzenUrgencyHook,
|
||||
@ -21,7 +24,7 @@ import XMonad.Layout.Decoration (Decoration,
|
||||
import XMonad.Layout.DwmStyle
|
||||
import XMonad.Layout.LayoutModifier (ModifiedLayout)
|
||||
import XMonad.Layout.Master
|
||||
import XMonad.Layout.NoBorders (smartBorders)
|
||||
import XMonad.Layout.NoBorders (noBorders, smartBorders)
|
||||
import XMonad.Layout.PerWorkspace (onWorkspace)
|
||||
import XMonad.Layout.Renamed
|
||||
import XMonad.Layout.Simplest (Simplest)
|
||||
@ -29,12 +32,16 @@ import XMonad.Layout.Spiral
|
||||
import XMonad.Layout.Tabbed (TabbedDecoration,
|
||||
Theme (..), shrinkText,
|
||||
tabbed)
|
||||
import XMonad.Layout.ToggleLayouts (ToggleLayout (..))
|
||||
import XMonad.Layout.ToggleLayouts (ToggleLayout (..),
|
||||
toggleLayouts)
|
||||
import XMonad.Password
|
||||
import XMonad.Prompt.RunOrRaise (runOrRaisePrompt)
|
||||
import XMonad.Prompt.Shell (shellPrompt)
|
||||
import qualified XMonad.StackSet as W
|
||||
import XMonad.TopicSpace
|
||||
import XMonad.Util.EZConfig
|
||||
|
||||
import XMonad.XMobar (zenburnPP)
|
||||
import XMonad.XMobar (zenburnPP)
|
||||
|
||||
import Data.Monoid (Endo, (<>))
|
||||
|
||||
@ -43,6 +50,7 @@ import XMonad.Util.SpawnOnce
|
||||
|
||||
import System.IO (hClose, hPutStr)
|
||||
import XMonad.Actions.Navigation2D
|
||||
import XMonad.Actions.UpdatePointer (updatePointer)
|
||||
import XMonad.Util.NamedActions
|
||||
import XMonad.Util.Run (spawnPipe)
|
||||
|
||||
@ -55,9 +63,9 @@ import XMonad.Hooks.DynamicLog (statusBar)
|
||||
|
||||
import qualified Data.Set as S
|
||||
|
||||
spotify :: XConfig l -> NamedAction
|
||||
spotify conf = submapName . mkNamedKeymap conf $
|
||||
[ ("M-p", addName "Play" $ spawn "sp play") ]
|
||||
spotify :: ExtraConfig -> XConfig l -> NamedAction
|
||||
spotify extraConf conf = submapName . mkNamedKeymap conf $
|
||||
[ ("M-p", addName "Play" $ spawn (musicToggle . applications $ extraConf)) ]
|
||||
|
||||
scratchpads :: [NamedScratchpad]
|
||||
scratchpads = [
|
||||
@ -73,13 +81,14 @@ scratchSubmaps conf = submapName . mkNamedKeymap conf $ [
|
||||
-- Search engines inside submaps
|
||||
searchSubmaps :: ExtraConfig -> XConfig l -> NamedAction
|
||||
searchSubmaps extraConfig conf =
|
||||
let mkBrowser = promptSearchBrowser def "qutebrowser"
|
||||
let mkBrowser = promptSearchBrowser def (extraConfig ^. field @"applications" . field @"browser")
|
||||
_googleP = addName "Search google" $ mkBrowser google
|
||||
ddgP = addName "Search duckduckgo" $ mkBrowser (searchEngine "duckduckgo" "http://duckduckgo.com/?q=")
|
||||
_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]
|
||||
in submapName . mkNamedKeymap conf $
|
||||
[ ("d", ddgP) -- Training to use ddg again
|
||||
, ("g", ddgP) -- training to use ddg again
|
||||
[ ("d", searx) -- Training to use ddg again
|
||||
, ("g", searx) -- training to use ddg again
|
||||
] ++ extras
|
||||
|
||||
|
||||
@ -174,20 +183,18 @@ myKeys extraConfig conf =
|
||||
, ("<XF86AudioLowerVolume>", addName "Decrease 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-")
|
||||
-- , ("<XF86AudioPlay>", addName "Play/pause spotify" $ spawn "/home/masse/.local/bin/sp play")
|
||||
, ("<XF86AudioPlay>", addName "Play/pause mopidy" $ spawn "mpc toggle")
|
||||
, ("M-m", spotify conf)
|
||||
, ("M-m", spotify extraConfig conf)
|
||||
, ("M-S-<Space>", addName "Swap screens" swapNextScreen)
|
||||
, ("M-<Backspace>", addName "Kill window" kill)
|
||||
-- scrot requires `unGrab`
|
||||
, ("M-<Print>", addName "Take screenshot" $ spawn (screenshot . applications $ extraConfig))] ^++^
|
||||
subKeys "Launchers" [ ("M-S-y", addName "Open youtube" $ spawn "mpv $(clip -o)")
|
||||
, ("M-S-<Return>", addName "Open terminal" $ spawn $ XMonad.terminal conf)
|
||||
subKeys "Launchers" [ ("M-S-<Return>", addName "Open terminal" $ spawn $ XMonad.terminal conf)
|
||||
, ("M-n", scratchSubmaps conf)
|
||||
, ("M-s", searchSubmaps extraConfig conf)
|
||||
, ("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)
|
||||
, ("M-k", addName "Go up" $ windowGo U False)
|
||||
, ("M-h", addName "Go left" $ windowGo L False)
|
||||
@ -202,10 +209,11 @@ myKeys extraConfig conf =
|
||||
] ^++^
|
||||
subKeys "Projects & Workspaces" (topicKeys' extraConfig conf) ^++^
|
||||
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)] ^++^
|
||||
subKeys "Resize" []
|
||||
where
|
||||
locker = "sh ~/scripts/lock.sh"
|
||||
locker = "xset s activate"
|
||||
|
||||
|
||||
|
||||
@ -235,15 +243,18 @@ masser extraConfig = xmonad =<< statusBar (bar extraConfig) zenburnPP toggleStru
|
||||
, normalBorderColor = "#262626"
|
||||
, focusedBorderColor = "#7F9F7F"
|
||||
, manageHook = myManageHook
|
||||
, focusFollowsMouse = False
|
||||
, focusFollowsMouse = True
|
||||
, logHook = updatePointer (0.25, 0.25) (0.25, 0.25)
|
||||
}
|
||||
myLayout = onWorkspace "web" webLayout $
|
||||
onWorkspace "dynamics" webLayout $
|
||||
onWorkspace "pdf" pdfLayout $
|
||||
onWorkspace "documents" documentLayout $
|
||||
onWorkspace "mail" mailLayout
|
||||
defLayout
|
||||
myLayout = toggleLayouts zoom workspaceLayouts
|
||||
where
|
||||
zoom = renamed [Replace "Zoom"] (noBorders Full)
|
||||
workspaceLayouts = onWorkspace "web" webLayout $
|
||||
onWorkspace "dynamics" webLayout $
|
||||
onWorkspace "pdf" pdfLayout $
|
||||
onWorkspace "documents" documentLayout $
|
||||
onWorkspace "mail" mailLayout
|
||||
defLayout
|
||||
-- Default layout
|
||||
defLayout = tiled ||| tabLayout ||| readLayout ||| bspLayout ||| vimLayout ||| spiral (6/7) ||| Full
|
||||
-- Pdfs are restricted to tabs
|
||||
|
@ -10,6 +10,7 @@ data Applications =
|
||||
, prompt :: FilePath
|
||||
, screenshot :: FilePath
|
||||
, urxvt :: FilePath
|
||||
, musicToggle :: FilePath
|
||||
} deriving (Show, Generic)
|
||||
|
||||
data TopicRule =
|
||||
|
@ -54,4 +54,4 @@ mkPassPrompt label f conf = do
|
||||
|
||||
|
||||
selectPassword :: String -> X ()
|
||||
selectPassword pass = spawn $ "pass --clip " ++ pass
|
||||
selectPassword pass = spawn $ "PASSWORD_STORE_CLIP_TIME=10 pass --clip " ++ pass
|
||||
|
@ -4,7 +4,6 @@ module XMonad.TopicSpace (topicKeys', addTopic, TopicAction(..)) where
|
||||
import XMonad.Actions.TopicSpace
|
||||
import XMonad
|
||||
import qualified Data.Map as M
|
||||
import XMonad.Actions.GridSelect
|
||||
import XMonad.Actions.DynamicWorkspaces
|
||||
import XMonad.TopicUtils
|
||||
import XMonad.Util.EZConfig (mkNamedKeymap)
|
||||
@ -42,7 +41,6 @@ myTopicConfig extraConfig =
|
||||
topicKeys' :: ExtraConfig -> XConfig l -> [(String, NamedAction)]
|
||||
topicKeys' extraConfig conf = [ ("M-y", addName "Change topic" $ visualSelect (myTopicConfig extraConfig))
|
||||
, ("M-S-g", addName "Move window to topic" $ gridselectMove def)
|
||||
, ("M-u", addName "Select window" $ gotoSelected' def{gs_colorizer = fromClassName})
|
||||
, ("M-<Return>", addName "Open project action" $ currentTopicAction' (myTopicConfig extraConfig))
|
||||
, ("M-w", modificationSubmaps' conf)]
|
||||
|
||||
|
@ -26,9 +26,11 @@ safeRunInTerm dir Nothing = safeSpawn "urxvt" ["-cd", dir]
|
||||
safeRunInTerm dir (Just command) = safeSpawn "urxvt" ["-cd", dir, "-e", command]
|
||||
|
||||
inactiveTags :: X [WorkspaceId]
|
||||
inactiveTags = map W.tag . inactive' <$> gets windowset
|
||||
inactiveTags = inactive' <$> gets windowset
|
||||
where
|
||||
inactive' s = W.hidden s ++ map W.workspace (filter (\w -> (W.tag . W.workspace . W.current) s /= (W.tag . W.workspace) w) (W.visible s))
|
||||
inactive' s =
|
||||
let current = W.currentTag s
|
||||
in filter (current /=) . map W.tag $ W.hidden s <> map W.workspace (W.visible s)
|
||||
|
||||
gridselectMove :: GSConfig WorkspaceId -> X ()
|
||||
gridselectMove conf = do
|
||||
@ -48,7 +50,10 @@ gsConfig = def{gs_navigate = navNSearch, gs_colorizer = fromClassName}
|
||||
-- - Takes a topicspace viewfunc
|
||||
gridselectWorkspace :: GSConfig WorkspaceId -> (WorkspaceId -> X ()) -> X ()
|
||||
gridselectWorkspace conf viewFunc = withWindowSet $ \ws -> do
|
||||
let wss = map W.tag . W.hidden $ ws
|
||||
let wss = filter (/= current) . map W.tag $ invisible <> visible
|
||||
visible = fmap W.workspace (W.visible ws)
|
||||
invisible = W.hidden ws
|
||||
current = W.currentTag ws
|
||||
gridselect conf (zip wss wss) >>= flip whenJust viewFunc
|
||||
|
||||
gotoSelected' :: GSConfig Window -> X ()
|
||||
|
@ -34,5 +34,7 @@ library
|
||||
, unix
|
||||
, containers
|
||||
, text
|
||||
, lens
|
||||
, generic-lens
|
||||
hs-source-dirs: src
|
||||
default-language: Haskell2010
|
||||
|
Reference in New Issue
Block a user