spring refactor

no more Bar bullshit, introducing dynamic projects
This commit is contained in:
eeva 2018-05-26 18:08:13 +03:00
parent 7b6a65f290
commit 088f52a316
4 changed files with 43 additions and 30 deletions

6
.gitignore vendored
View file

@ -1,2 +1,8 @@
.*.swp
artwork/
*.hi
*.o
prompt-history
xmonad-x86_64-linux
xmonad.errors
xmonad.state

View file

@ -9,6 +9,7 @@ import System.Exit
import Text.EditDistance
import XMonad
import XMonad.Actions.CycleWS
import XMonad.Actions.DynamicProjects
import XMonad.Actions.GridSelect
import XMonad.Core
import XMonad.Layout.ToggleLayouts
@ -42,18 +43,15 @@ modify conf = conf
, ("M-S-<Delete>", spawn "/run/current-system/sw/bin/i3lock-fancy -g -p")
, ("M-S-<Left>", shiftToPrev >> prevWS)
, ("M-S-<Right>", shiftToNext >> nextWS)
, ("M-S-p", shellPrompt promptConfig)
, ("M-S-s", spawn "sleep 0.2 ; /run/current-system/sw/bin/scrot -s /tmp/screenSel.png")
--, ("M-p", fuzzyPrompt promptConfig)
, ("M-p", goToSelected defaultGSConfig)
, ("M-s", spawn "/run/current-system/sw/bin/scrot /tmp/screen.png")
-- Workspace and tasks
, ("M-p v", gridselectWorkspace defaultGSConfig W.view)
, ("M-p n", switchProjectPrompt promptConfig)
, ("M-p m", shiftToProjectPrompt promptConfig)
, ("M-p s", shellPrompt promptConfig)
]
`additionalKeys`-- Add some more (automatic) key bindings:
[ ((mod4Mask .|. mask, key), windows $ actionWith tag)
| (tag, key) <- zip (workspaces conf) [ xK_F1 .. ]
, (mask, actionWith) <- zip [ 0, shiftMask ] [ W.view, W.shift ] ]
promptConfig = def
{ position = Top
, alwaysHighlight = True

22
lib/Projects.hs Normal file
View file

@ -0,0 +1,22 @@
module Projects (
Projects.modify
) where
import XMonad
import XMonad.Actions.DynamicProjects
projects :: [Project]
projects = [ Project { projectName = "games"
, projectDirectory = "~/"
, projectStartHook = Nothing
}
, Project { projectName = "web"
, projectDirectory = "~/"
, projectStartHook = Nothing
}
]
modify :: XConfig l -> XConfig l
modify conf = dynamicProjects projects conf
{ workspaces = ["games", "web"] }

View file

@ -5,6 +5,7 @@
module Main (main) where
import XMonad
import XMonad.Actions.DynamicProjects
import XMonad.Config.Desktop
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageHelpers
@ -16,22 +17,9 @@ import XMonad.Util.EZConfig
import qualified Solarized as S
-- Tidy modules
import StatusBar as Bar (modify)
import KeyBindings as Keys (modify)
import MouseBindings as Mouse (modify)
-------- A list of my usual workspaces (with some FontAwesome & xmobar format)
wkspcs = [ wrap "<fn=1>" "</fn>" "\xF0E0" --  email
, wrap "<fn=1>" "</fn>" "\xF086" --  chat
, wrap "<fn=1>" "</fn>" "\xF120" --  work
, wrap "<fn=1>" "</fn>" "\xF1B6" --  game
, wrap "<fn=1>" "</fn>" "\xF11B" --  game
, wrap "<fn=1>" "</fn>" "\xF09C" --  password
, wrap "<fn=1>" "</fn>" "\xF16C" --  web work
, wrap "<fn=1>" "</fn>" "\xF025" --  sound
, wrap "<fn=1>" "</fn>" "\xF269" --  web perso
, wrap "<fn=1>" "</fn>" "\xF03D" --  movie
]
import Projects as Projects (modify)
--------- toggle btw vvvvvvvvvv or vvvvv
layouts = toggleLayouts fullscreen tiled
@ -45,12 +33,12 @@ layouts = toggleLayouts fullscreen tiled
-- For className, use the second value that xprop gives you.
-------------- Here be the law of windows
myManageHook = composeOne
[ className =? "mpv" -?> doFullFloat <+> (doShift $ last wkspcs)
, className =? "Pinentry" -?> doFloat
, className =? "Steam" -?> doShift $ wkspcs !! 3
, className =? "csgo_linux64" -?> doFullFloat
, className =? "Pavucontrol" -?> doShift $ wkspcs !! 7
, className =? "qutebrowser" -?> doShift $ wkspcs !! 5
[ className =? "Pinentry" -?> doFloat
, className =? "mpv" -?> doFullFloat <+> (doShift "Flims")
, className =? "Steam" -?> doShift "Steam"
, className =? "csgo_linux64" -?> doFullFloat <+> (doShift "CSGO")
, className =? "Pavucontrol" -?> doShift "Music"
, className =? "qutebrowser" -?> doShift "Web Perso"
, isDialog -?> doCenterFloat
-- Move transient windows to their parent:
@ -59,14 +47,13 @@ myManageHook = composeOne
------------ build the full config
withConfig =
Bar.modify -- Apply statusBar config
Projects.modify -- Apply projects config
$ Keys.modify -- Apply keybindings config
$ Mouse.modify -- Apply mouse bindings config
$ desktopConfig -- on a default desktop config
{ manageHook = myManageHook <+> manageHook desktopConfig
, layoutHook = desktopLayoutModifiers layouts
, terminal = "/run/current-system/sw/bin/alacritty"
, workspaces = wkspcs
, normalBorderColor = S.base03
, focusedBorderColor = S.violet
, borderWidth = 5