Merge branch 'master' of github.com:IvanMalison/dotfiles
This commit is contained in:
commit
c18d3ab9a7
1
dotfiles/config/.gitignore
vendored
1
dotfiles/config/.gitignore
vendored
@ -23,6 +23,7 @@
|
||||
/mopidy
|
||||
/mopidy/spotify/
|
||||
/nemo/
|
||||
/pavucontrol.ini
|
||||
/pulse/
|
||||
/sparkleshare/*.key
|
||||
/sparkleshare/*.pub
|
||||
|
@ -4,7 +4,7 @@ packages:
|
||||
- '.'
|
||||
- location:
|
||||
git: git@github.com:IvanMalison/xmonad-contrib.git
|
||||
commit: fb992e96af0d2af4344e3592d179242e72b01fca
|
||||
commit: 1bcb7a31f662cb06dd0e1c51da666694d9ad1836
|
||||
- location:
|
||||
git: git@github.com:IvanMalison/taffybar.git
|
||||
commit: 39e3a95e9c2eae37ff8b67eaa31bbd18503859b1
|
||||
|
@ -1,4 +1,6 @@
|
||||
{-# LANGUAGE TypeSynonymInstances, MultiParamTypeClasses #-}
|
||||
{-# LANGUAGE DeriveDataTypeable, TypeSynonymInstances,
|
||||
MultiParamTypeClasses, ExistentialQuantification,
|
||||
FlexibleInstances, FlexibleContexts #-}
|
||||
module Main where
|
||||
|
||||
import Control.Monad
|
||||
@ -61,15 +63,13 @@ main = xmonad $ def
|
||||
-- Selectors
|
||||
|
||||
isHangoutsTitle = isPrefixOf "Google Hangouts"
|
||||
|
||||
chromeSelectorBase = className =? "Google-chrome"
|
||||
chromeSelector = chromeSelectorBase <&&>
|
||||
fmap (not . isHangoutsTitle) title
|
||||
|
||||
chromeSelector = chromeSelectorBase <&&> fmap (not . isHangoutsTitle) title
|
||||
spotifySelector = className =? "Spotify"
|
||||
emacsSelector = className =? "Emacs"
|
||||
transmissionSelector = fmap (isPrefixOf "Transmission") title
|
||||
hangoutsSelector = chromeSelectorBase <&&>
|
||||
fmap isHangoutsTitle title
|
||||
hangoutsSelector = chromeSelectorBase <&&> fmap isHangoutsTitle title
|
||||
|
||||
virtualClasses = [ (hangoutsSelector, "Hangouts")
|
||||
, (chromeSelector, "Chrome")
|
||||
@ -105,14 +105,43 @@ instance Transformer MyToggles Window where
|
||||
transform MAGICFOCUS x k = k (magicFocus x) unmodifyLayout
|
||||
|
||||
myToggles = [LIMIT, GAPS, MAGICFOCUS]
|
||||
otherToggles = [FULL, MIRROR]
|
||||
otherToggles = [NBFULL, MIRROR]
|
||||
|
||||
togglesMap = M.fromList $ [ (show toggle, Toggle toggle) | toggle <- myToggles ] ++
|
||||
[ (show toggle, Toggle toggle) | toggle <- otherToggles ]
|
||||
togglesMap = fmap M.fromList $ sequence $ map toggleTuple myToggles ++ map toggleTuple otherToggles
|
||||
where
|
||||
toggleTuple toggle = fmap (\str -> (str, Toggle toggle)) (toggleToStringWithState toggle)
|
||||
|
||||
toggleStateToString s = case s of
|
||||
Just True -> "ON"
|
||||
Just False -> "OFF"
|
||||
Nothing -> "N/A"
|
||||
|
||||
toggleToStringWithState :: (Transformer t Window, Show t) => t -> X String
|
||||
toggleToStringWithState toggle = (printf "%s (%s)" (show toggle) . toggleStateToString) <$>
|
||||
isToggleActive toggle
|
||||
|
||||
selectToggle = do
|
||||
Just selectedToggle <- DM.menuMapArgs "rofi" ["-dmenu", "-i"] togglesMap
|
||||
dmenuMap <- togglesMap
|
||||
Just selectedToggle <- DM.menuMapArgs "rofi" ["-dmenu", "-i"] dmenuMap
|
||||
sendMessage selectedToggle
|
||||
|
||||
toggleInState :: (Transformer t Window) => t -> Maybe Bool -> X Bool
|
||||
toggleInState t s = fmap (/= s) (isToggleActive t)
|
||||
|
||||
whenB b a = do
|
||||
when b a
|
||||
return b
|
||||
|
||||
setToggleActive' toggle active = toggleInState toggle (Just active) >>=
|
||||
flip whenB (sendMessage $ Toggle toggle)
|
||||
|
||||
-- Ambiguous type reference without signature
|
||||
setToggleActive :: (Transformer t Window) => t -> Bool -> X ()
|
||||
setToggleActive = (void .) . setToggleActive'
|
||||
|
||||
toggleOr toggle toState action = setToggleActive' toggle toState >>= ((`when` action) . not)
|
||||
|
||||
deactivateFullOr = toggleOr NBFULL False
|
||||
|
||||
-- Layout setup
|
||||
|
||||
@ -139,7 +168,7 @@ selectLayout = do
|
||||
|
||||
myLayoutHook = avoidStruts . minimize . boringAuto . mkToggle1 MIRROR .
|
||||
mkToggle1 LIMIT . mkToggle1 GAPS . mkToggle1 MAGICFOCUS .
|
||||
mkToggle1 FULL . workspaceNamesHook . smartBorders . noBorders $
|
||||
mkToggle1 NBFULL . workspaceNamesHook . smartBorders . noBorders $
|
||||
fst layoutInfo
|
||||
|
||||
-- WindowBringer
|
||||
@ -343,11 +372,12 @@ addKeys conf@XConfig {modMask = modm} =
|
||||
"systemctl --user restart taffybar.service")
|
||||
, ((modm, xK_v), spawn "copyq paste")
|
||||
, ((modm, xK_s), swapNextScreen)
|
||||
, ((modm .|. controlMask, xK_space), sendMessage $ Toggle FULL)
|
||||
, ((modm .|. controlMask, xK_space), sendMessage $ Toggle NBFULL)
|
||||
, ((modm, xK_slash), sendMessage $ Toggle MIRROR)
|
||||
, ((modm, xK_m), withFocused minimizeWindow)
|
||||
, ((modm .|. shiftMask, xK_m), withLastMinimized maximizeWindowAndFocus)
|
||||
, ((modm, xK_backslash), toggleWS)
|
||||
, ((modm, xK_space), deactivateFullOr $ sendMessage NextLayout)
|
||||
|
||||
-- These need to be rebound to support boringWindows
|
||||
, ((modm, xK_j), focusDown)
|
||||
|
Loading…
Reference in New Issue
Block a user