Shorten config

This commit is contained in:
Martin Potier 2017-12-12 21:55:08 +02:00
parent 41d9ca1d38
commit 980ed179c0
2 changed files with 34 additions and 400 deletions

12
lib/MouseBindings.hs Normal file
View file

@ -0,0 +1,12 @@
module MouseBindings (
MouseBindings.modify
) where
import XMonad
import XMonad.Actions.UpdatePointer
modify :: XConfig l -> XConfig l
modify conf = conf
{ logHook = logHook conf >> updatePointer (0.5,0.5) (0,0)
}

422
xmonad.hs
View file

@ -4,35 +4,23 @@
module Main (main) where
import Data.Ratio ((%))
import XMonad
import XMonad.Actions.UpdatePointer
import XMonad.Config.Desktop
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageHelpers
import XMonad.Hooks.ManageDocks (docksEventHook)
import XMonad.Layout.NoBorders (noBorders, smartBorders)
import XMonad.Layout.ResizableTile (ResizableTall(..))
import XMonad.Layout.Spacing
import XMonad.Layout.ToggleLayouts (ToggleLayout(..), toggleLayouts)
import XMonad.Prompt
import XMonad.Prompt.ConfirmPrompt
import XMonad.Prompt.Shell
import XMonad.Layout.ToggleLayouts (toggleLayouts)
import XMonad.Util.EZConfig
import XMonad.Util.Run (spawnPipe)
import qualified Solarized as S
-- Contructors imports
import XMonad.Hooks.ManageDocks (AvoidStruts)
import XMonad.Layout.LayoutModifier (ModifiedLayout)
-- Tidy modules
import StatusBar as Bar (modify)
import KeyBindings as Keys (modify)
import MouseBindings as Mouse (modify)
wkspcs :: [String]
-------- ["●", "◕", "◑", "◔", "◯", "◐", "◒", "◓", "☦", "λ"]
-------- ["α", "β", "γ", "δ", "ε", "ζ", "η", "θ", "ι", "κ"]
-------- 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>" "\xF121" --  work
@ -45,24 +33,8 @@ wkspcs = [ wrap "<fn=1>" "</fn>" "\xF0E0" --  email
, wrap "<fn=1>" "</fn>" "\xF03D" --  movie
]
lh = do
updatePointer (0.5,0.5) (0,0)
logHook desktopConfig
myConfig = Bar.modify
$ Keys.modify
$ desktopConfig
{ manageHook = myManageHook <+> manageHook desktopConfig
, layoutHook = desktopLayoutModifiers myLayouts
, logHook = lh
, terminal = "/run/current-system/sw/bin/kitty"
, workspaces = wkspcs
, normalBorderColor = S.base03
, focusedBorderColor = S.violet
, borderWidth = 5
}
myLayouts = toggleLayouts fullscreen tiled
--------- toggle btw vvvvvvvvvv or vvvvv
layouts = toggleLayouts fullscreen tiled
where
fullscreen = (noBorders Full)
tiled = smarts $ resizableTall ||| (Mirror resizableTall)
@ -71,6 +43,7 @@ myLayouts = toggleLayouts fullscreen tiled
-- Use the `xprop' tool to get the info you need for these matches.
-- 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 =? "Pavucontrol" -?> doShift $ wkspcs !! 7
@ -81,371 +54,20 @@ myManageHook = composeOne
, transience
]
-- Finally:
main = xmonad myConfig
------------ build the full config
withConfig =
Bar.modify -- Apply statusBar 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/kitty"
, workspaces = wkspcs
, normalBorderColor = S.base03
, focusedBorderColor = S.violet
, borderWidth = 5
}
--- import qualified Data.Map as Map
--- import XMonad
--- import XMonad.Util.EZConfig
--- import XMonad.Layout.Tabbed
--- import XMonad.Hooks.ManageDocks
--- import XMonad.Hooks.DynamicLog
--- import XMonad.Layout.NoBorders
--- import XMonad.Actions.SwapWorkspaces
--- import XMonad.Prompt
--- import XMonad.Prompt.Shell
---
--- -- Solarized colours.
--- activeBackColor = "#073642"
--- --activeForeColor = "#93A1A1" -- base1
--- activeForeColor = "#EEE8D5" -- base2
--- passiveForeColor = "#2AA198"
---
--- yoTabbed = tabbed shrinkText $ def
--- { fontName = "xft:Hack:size=10"
--- , activeBorderColor = activeForeColor
--- , activeTextColor = activeForeColor
--- , activeColor = activeBackColor
--- , inactiveBorderColor = "#555555"
--- , inactiveTextColor = "#555555"
--- , inactiveColor = "#000000"
--- }
--- simpleTall = Tall 1 (1/100) (1/2)
--- yoLayouts = smartBorders $ (Mirror simpleTall ||| simpleTall ||| yoTabbed)
---
--- yoPromptXP = def
--- { bgColor = activeBackColor
--- , borderColor = activeForeColor
--- , fgColor = activeForeColor
--- , fgHLight = "#073642"
--- , bgHLight = "#859900"
--- , promptKeymap = emacsLikeXPKeymap
--- , font = "xft:Hack:size=12"
--- }
---
--- yoConfig = def
--- { terminal = "termite"
--- , modMask = mod4Mask
--- , focusedBorderColor = activeForeColor
--- , layoutHook = yoLayouts
--- }
--- `additionalKeysP`
--- [ ( "M-<Return>", spawn $ "emacs")
---
--- , ("<XF86AudioMute>", spawn "pamixer -t")
--- , ("M-<F5>" , spawn "pamixer -d 1")
--- , ("M-<F6>" , spawn "pamixer -i 1")
---
--- , ("M-<F7>" , spawn "xbacklight -dec 5")
--- , ("M-<F8>" , spawn "xbacklight -inc 5")
---
--- , ("M-<F9>" , spawn "setxkbmap dvorak")
--- , ("M-<F10>", spawn "setxkbmap fr" )
--- , ("M-<F11>", spawn "setxkbmap ru" )
--- , ("M-<F12>", spawn "setxkbmap ro" )
---
--- , ("M-C-<Right>", swapTo Next)
--- , ("M-C-<Left>" , swapTo Prev)
---
--- , ("M-r", shellPrompt yoPromptXP)
--- ]
--- `removeKeysP`
--- [ "M-q" ]
---
--- yoXmobarPP = def
--- { ppCurrent = xmobarColor' activeForeColor . activePad
--- , ppVisible = xmobarColor' activeForeColor -- other screen
--- , ppHidden = xmobarColor' passiveForeColor -- other workspaces with windows
--- , ppHiddenNoWindows = xmobarColor' activeBackColor -- other workspaces
--- , ppSep = " "
--- , ppLayout = printLayout
--- , ppTitle = printTitle
--- }
--- where xmobarColor' fg = xmobarColor fg "#000000"
---
--- printLayout "Tall" = "[|]"
--- printLayout "Mirror Tall" = "[—]"
--- printLayout "Tabbed Simplest" = "[□]"
--- printLayout l = "[" ++ l ++ "]"
---
--- printTitle t = let t' = shorten 120 t
--- in xmobarColor' passiveForeColor "[ "
--- ++ xmobarColor' passiveForeColor t'
--- ++ xmobarColor' passiveForeColor " ]"
---
--- activePad s = xmobarColor' bracketColor " >"
--- ++ s
--- ++ xmobarColor' bracketColor "< "
--- bracketColor = "#B58900"
---
--- xmobarCmd = "xmobar /home/scolobb/.xmonad/xmobarrc"
---
--- main = do
--- spawn "stalonetray --geometry 5x1+1000 --icon-size 20 -bg '#000000'"
--- spawn "nm-applet"
--- spawn "seafile-applet"
--- spawn "syndaemon"
--- xmonad =<< statusBar xmobarCmd yoXmobarPP hideBarsKey yoConfig
--- where hideBarsKey XConfig{modMask = modm} = (modm, xK_b)
--- import Codec.Binary.UTF8.String
--- import Graphics.X11.ExtraTypes.XF86
--- import LemonBar
--- import qualified Solarized as S
--- import qualified Data.Map as M
--- import qualified XMonad.StackSet as W
--- import System.Exit
--- import System.IO
--- import Text.Printf
--- import XMonad
--- import XMonad.Actions.CycleWS
--- import XMonad.Config.Desktop
--- import XMonad.Hooks.DynamicLog
--- import XMonad.Hooks.EwmhDesktops
--- import XMonad.Hooks.ManageDocks
--- import XMonad.Hooks.ManageHelpers
--- import XMonad.Layout.IndependentScreens
--- import XMonad.Layout.LayoutCombinators hiding ( (|||) )
--- import XMonad.Layout.Reflect
--- import XMonad.Prompt
--- import XMonad.Prompt.Shell(shellPrompt)
--- import XMonad.Util.Font
--- import XMonad.Util.Loggers
--- -- import XMonad.Util.Run
---
--- main = do
--- spawn bar
--- xmonad $ docks $ ewmh desktopConfig
--- { manageHook = myManageHook <+> manageDocks <+> manageHook defaultConfig
--- , layoutHook = myLayout
--- , logHook = maLogouk
--- , modMask = mod4Mask -- Rebind to Logo key
--- , workspaces = ["●", "◕", "◑", "◔", "◯", "◐", "◒", "◓", "☦"]
--- , borderWidth = 0
--- , keys = myKeys
--- , terminal = "/run/current-system/sw/bin/kitty"
--- , handleEventHook = handleEventHook defaultConfig <+> fullscreenEventHook
--- }
---
--- sym "Tall" = "|"
--- sym "Mirror Tall" = "-"
--- sym "Full" = "F"
--- sym _ = "◓"
---
--- maLogouk = dynamicLogWithPP $ defaultPP
--- { ppOutput = printToFile
--- , ppCurrent = LemonBar.color S.orange S.base03 . LemonBar.underline -- . sym
--- , ppVisible = LemonBar.color S.yellow S.base03 . LemonBar.underline -- . sym
--- , ppHidden = LemonBar.color S.base2 S.base03 . LemonBar.underline -- . sym
--- , ppHiddenNoWindows = LemonBar.color S.base01 S.base03 -- . sym
--- , ppLayout = sym
--- , ppTitle = LemonBar.fColor S.violet . shorten 70
--- , ppSep = " "
--- }
---
--- printToFile :: String -> IO ()
--- printToFile s = do
--- h <- openFile "/tmp/monitors/xmonad" WriteMode
--- hPutStrLn h $ decodeString s
--- -- xxxxxxxxxxxx
--- -- v----------------|
--- -- Hacky hack to fix the broken fix of dynamicLogWithPP
--- hClose h
---
--- myManageHook = composeAll
--- [ className =? "float" --> doCenterFloat
--- , manageDocks ]
---
--- ------------------------------------------------------------------------
--- -- LogHook. Dynamically outputs logs nicely formatted for dzen2
--- --
--- -- myLogHook h = dynamicLogWithPP $ defaultPP {
--- -- ppCurrent = dzenColor "#cb4b16" "#eee8d5",
--- -- ppVisible = dzenColor "#657b83" "#eee8d5",
--- -- ppHiddenNoWindows = dzenColor "#93a1a1" "#eee8d5",
--- -- ppLayout = dzenColor "#6c71c4" "#eee8d5",
--- -- ppTitle = (dzenColor "#cb4b16" "") . (fixedWidth 256),
--- -- ppSep = " ",
--- -- ppWsSep = " ",
--- -- ppOutput = hPutStrLn h
--- -- }
--- -- where
--- -- fixedWidth n l = take (n+5) $ l ++ (cycle ".")
---
---
--- ------------------------------------------------------------------------
--- -- StatusBar. Call lemonbar
--- bar = printf
--- "pkill lemonbar; /home/eeva/bin/mkstatus.sh | \
--- \ lemonbar -g 1919x24+0+0 \
--- \ -f '%s' \
--- \ -f '%s' \
--- \ -u %d -B '%s' -F '%s' -U '%s'"
--- --"tewi:style=Regular:antialias=false:autohint=false"
--- "Iosevka:size=10"
--- "DejaVu Sans Mono:size=10"
--- (2 :: Int)
--- S.base03
--- S.base0
--- S.violet
---
--- myLayout = (avoidStruts $ tiled ||| Mirror tiled) ||| Full
--- where
--- tiled = Tall 1 (3/100) (1/2)
---
--- -- Prompt config
--- myXPConfig = defaultXPConfig {
--- position = Top,
--- promptBorderWidth = 5,
--- font = "xft:tewi:style=Regular:antialias=false:autohint=false",
--- height = 24,
--- borderColor = S.base03,
--- bgHLight = S.base02,
--- fgHLight = S.magenta,
--- bgColor = S.base03,
--- fgColor = S.base0,
--- defaultText = ""
--- }
---
--- ------------------------------------------------------------------------
--- -- Key bindings. Add, modify or remove key bindings here.
--- --
--- myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
--- [
--- -- launch dmenu
--- --((modm, xK_p), spawn "dmenu_run -b -l 3")
--- -- launch prompt
--- ((modm, xK_p), shellPrompt myXPConfig)
---
--- -- close focused window
--- , ((modm, xK_Delete), kill)
---
--- -- Rotate through the available layout algorithms
--- , ((modm, xK_space ), sendMessage NextLayout)
--- --, ((modm .|. shiftMask xK_Tab ), sendMessage PreviousLayout)
---
--- -- Reset the layouts on the current workspace to default
--- , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
---
--- -- Resize viewed windows to the correct size
--- , ((modm, xK_n ), refresh)
---
--- -- Move focus to the master window
--- , ((modm, xK_m ), windows W.focusMaster )
---
--- -- Swap the focused window and the master window
--- , ((modm, xK_BackSpace), windows W.swapMaster)
---
--- -- Move focus to the next window
--- , ((modm, xK_j ), windows W.focusDown)
--- , ((modm, xK_Down ), windows W.focusDown)
---
--- -- Move focus to the previous window
--- , ((modm, xK_k ), windows W.focusUp )
--- , ((modm, xK_Up ), windows W.focusUp)
---
--- -- Swap the focused window with the next window
--- , ((modm .|. shiftMask, xK_j ), windows W.swapDown )
--- , ((modm .|. shiftMask, xK_Down ), windows W.swapDown )
---
--- -- Swap the focused window with the previous window
--- , ((modm .|. shiftMask, xK_k ), windows W.swapUp )
--- , ((modm .|. shiftMask, xK_Up ), windows W.swapUp )
---
--- -- Shrink the master area
--- , ((modm, xK_h ), sendMessage Shrink)
---
--- -- Expand the master area
--- , ((modm, xK_l ), sendMessage Expand)
---
--- -- Move to next Workspace
--- , ((modm, xK_Right ), nextWS)
---
--- -- Move to previous Workspace
--- , ((modm, xK_Left ), prevWS)
---
--- -- Move focused window to next Workspace
--- , ((modm .|. shiftMask, xK_Right ), shiftToNext >> nextWS)
---
--- -- Move focused window to previous Workspace
--- , ((modm .|. shiftMask, xK_Left ), shiftToPrev >> prevWS)
---
--- -- Cycle between windows
--- , ((modm , xK_Tab ), toggleWS)
---
--- -- Push window back into tiling
--- , ((modm, xK_t ), withFocused $ windows . W.sink)
---
--- -- Increment the number of windows in the master area
--- , ((modm , xK_comma ), sendMessage (IncMasterN 1))
---
--- -- Deincrement the number of windows in the master area
--- , ((modm , xK_period), sendMessage (IncMasterN (-1)))
---
--- -- close focused window
--- , ((modm .|. shiftMask, xK_c ), kill)
---
--- -- Swap the focused window and the master window
--- , ((modm, xK_Return), windows W.swapMaster)
---
--- -- run my terminal
--- , ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)
---
--- -- lock my session
--- --, ((modm .|. shiftMask, xK_Delete), spawn "/usr/bin/sxlock -f \"-*-ubuntu mono-*-r-*-*-*-*-*-*-*-*-*-*\"")
--- , ((modm .|. shiftMask, xK_Delete), spawn "/run/current-system/sw/bin/i3lock-fancy -g -p")
---
--- -- quit xmonad
--- , ((modm .|. shiftMask, xK_q), io (exitWith ExitSuccess))
---
--- -- Raise volume (XF86XK_AudioRaiseVolume)
--- , ((0 , xF86XK_AudioRaiseVolume), spawn "/home/eeva/prefix/bin/volume up")
---
--- -- Lower volume (XF86XK_AudioLowerVolume)
--- , ((0 , xF86XK_AudioLowerVolume), spawn "/home/eeva/prefix/bin/volume down")
---
--- -- Mute volume (xF86XK_AudioMute)
--- , ((0 , xF86XK_AudioMute), spawn "/home/eeva/prefix/bin/volume toggle")
---
--- -- Playlist play (xK_F7)
--- , ((0 , xK_F7), spawn "/usr/bin/notify-send \"Current song\" \"$(mpc -h ~/.config/mpd/mpd.socket | head -n 1)\"")
---
--- -- Playlist play (xK_F8)
--- , ((0 , xK_F8), spawn "/home/eeva/prefix/bin/playlist toggle")
---
--- -- Playlist stop (xK_F9)
--- , ((0 , xK_F9), spawn "/home/eeva/prefix/bin/playlist stop")
---
--- -- Launch App (XF86XK_Launch1)
--- , ((0 , xF86XK_Launch1), spawn "/usr/bin/firefox")
---
--- -- Adjust Brightness up (xF86XK_MonBrightnessUp)
--- , ((0 , xF86XK_MonBrightnessUp), spawn "/run/current-system/sw/bin/xbacklight +10")
---
--- -- Adjust Brightness down (xF86XK_MonBrightnessDown)
--- , ((0 , xF86XK_MonBrightnessDown), spawn "/run/current-system/sw/bin/xbacklight -10")
--- ]
--- ++
---
--- --
--- -- mod-[1..9], Switch to workspace N
--- --
--- -- mod-[1..9], Switch to workspace N
--- -- mod-shift-[1..9], Move client to workspace N
--- --
--- [((m .|. modm, k), windows $ f i)
--- | (i, k) <- zip (XMonad.workspaces conf) [xK_F1 .. xK_F9]
--- , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
--- ++
---
--- --
--- -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
--- -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
--- --
--- [((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f))
--- | (key, sc) <- zip [xK_z, xK_e, xK_r] [0..]
--- , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]
------ and pass it to xmonad:
main = xmonad withConfig