diff options
| author | Josh Rahm <joshuarahm@gmail.com> | 2022-03-25 19:48:53 -0600 |
|---|---|---|
| committer | Josh Rahm <joshuarahm@gmail.com> | 2022-03-25 19:48:53 -0600 |
| commit | 4b1adef5afe4748c2f9d9362baff71a44428b902 (patch) | |
| tree | 065d941bcacd0e7b6999405d2e3908986c42b327 /src/Internal/Keys.hs | |
| parent | 9118fc86df893f92a14d5ec4d82d052253a450b0 (diff) | |
| parent | a7129b68fb7fa4f7cea52513fad7223dcbba9801 (diff) | |
| download | rde-4b1adef5afe4748c2f9d9362baff71a44428b902.tar.gz rde-4b1adef5afe4748c2f9d9362baff71a44428b902.tar.bz2 rde-4b1adef5afe4748c2f9d9362baff71a44428b902.zip | |
Merge branch 'v017' of josher.dev:rde into v017
Diffstat (limited to 'src/Internal/Keys.hs')
| -rw-r--r-- | src/Internal/Keys.hs | 60 |
1 files changed, 49 insertions, 11 deletions
diff --git a/src/Internal/Keys.hs b/src/Internal/Keys.hs index 195e12f..c40c346 100644 --- a/src/Internal/Keys.hs +++ b/src/Internal/Keys.hs @@ -1,6 +1,7 @@ {-# LANGUAGE RankNTypes #-} module Internal.Keys (applyKeys) where +import Internal.Intercept (setIntercept) import Control.Monad.Loops (iterateWhile) import Control.Monad.Fix (fix) import Graphics.X11.ExtraTypes.XF86; @@ -45,6 +46,7 @@ import Internal.Lib import Internal.DMenu import Internal.PassMenu import Internal.Logger +import Internal.ScreenRotate (screenRotateForward, screenRotateBackward) type KeyMap l = XConfig l -> Map (KeyMask, KeySym) (X ()) type ButtonsMap l = XConfig l -> Map (KeyMask, Button) (Window -> X ()) @@ -245,6 +247,12 @@ keymap = runKeys $ do then mediaPrev else mediaNext + bind xK_t $ + + (justMod -|- noMod) $ + setIntercept (modMask config, xK_i) $ + logs $ "Intercepted!" + bind xK_r $ do justMod runDMenu shiftMod $ sendMessage DoRotate @@ -376,6 +384,17 @@ mouseMap = runButtons $ do Map.lookup button (mouseMap config) subMouse = submapButtonsWithKey defaultButtons . flip runButtons config + + let continuous :: [(Button, X ())] -> Button -> Window -> X () + continuous actions button w = do + case find ((==button) . fst) actions of + Just (_, action) -> action + Nothing -> return () + + (subMouse $ + forM_ (map fst actions) $ \b -> + bind b $ noMod $ \w -> continuous actions b w) w + bind button1 $ do justMod $ \w -> focus w >> mouseMoveWindow w >> windows W.shiftMaster @@ -406,6 +425,9 @@ mouseMap = runButtons $ do bind button14 $ do noMod $ \_ -> click >> sendMessage ToggleZoom + bind button15 $ do + noMod $ \_ -> spawn "pavucontrol" + let mediaButtons = [ (button4, increaseVolume), (button5, decreaseVolume), @@ -416,19 +438,32 @@ mouseMap = runButtons $ do (button7, mediaNext) ] + forM_ (map fst mediaButtons) $ \b -> + bind b $ noMod $ continuous mediaButtons b - let continuous :: [(Button, X ())] -> Button -> Window -> X () - continuous actions button w = do - case find ((==button) . fst) actions of - Just (_, action) -> action - Nothing -> return () + bind button15 $ do - (subMouse $ - forM_ (map fst mediaButtons) $ \b -> - bind b $ noMod $ \w -> continuous actions b w) w + noMod $ subMouse $ do + + bind button15 $ do + noMod $ \_ -> jumpToLast - forM_ (map fst mediaButtons) $ \b -> - bind b $ noMod $ continuous mediaButtons b + + let workspaceButtons = [ + (button2, swapMaster), + + (button9, relativeWorkspaceShift next), + (button8, relativeWorkspaceShift prev), + + (button4, windows W.focusUp), + (button5, windows W.focusDown), + + (button7, windows screenRotateForward), + (button6, windows screenRotateBackward) + ] + + forM_ (map fst workspaceButtons) $ \b -> + bind b $ noMod $ continuous workspaceButtons b applyKeys :: XConfig l -> IO (XConfig l) applyKeys config = @@ -442,4 +477,7 @@ click = do modifyWindowBorder :: Integer -> SpacingModifier modifyWindowBorder i = ModifyWindowBorder $ \(Border a b c d) -> - Border (a + i) (b + i) (c + i) (d + i) + Border (clip $ a + i) (clip $ b + i) (clip $ c + i) (clip $ d + i) + + where clip i | i < 0 = 0 + clip i | otherwise = i |