From 45d817f69e5b0f47ef5104df12932dabfbef750d Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Mon, 22 Nov 2021 23:29:16 -0700 Subject: Add some support of the XF86 keys. --- src/Internal/Keys.hs | 27 ++++++++++++++++++++++++++- src/Internal/KeysM.hs | 1 + src/Main.hs | 11 ++++++----- 3 files changed, 33 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/Internal/Keys.hs b/src/Internal/Keys.hs index 439986c..0dd8760 100644 --- a/src/Internal/Keys.hs +++ b/src/Internal/Keys.hs @@ -1,6 +1,7 @@ {-# LANGUAGE RankNTypes #-} module Internal.Keys (applyKeys) where +import Graphics.X11.ExtraTypes.XF86; import Internal.KeysM import Internal.SwapMaster (swapMaster) import XMonad.Hooks.ManageDocks @@ -207,10 +208,11 @@ keymap = runKeys $ do bind xK_z $ do justMod $ subkeys $ do + + -- Double-tap Z to toggle zoom. bind xK_z $ do noMod -|- justMod $ sendMessage ToggleZoom - -- Z is reserved to create sub keybindings to do various things. -- I don't really use these at the moment. bind xK_h $ do @@ -223,6 +225,29 @@ keymap = runKeys $ do -- modifier. shiftMod $ sendMessage ToggleZoom + bind xF86XK_AudioLowerVolume $ do + noMod $ spawn "pactl set-sink-volume @DEFAULT_SINK@ -1%" + justMod $ spawn "spotify-control prev" + + bind xF86XK_AudioRaiseVolume $ do + noMod $ spawn "pactl set-sink-volume @DEFAULT_SINK@ +1%" + justMod $ spawn "spotify-control next" + + bind xF86XK_AudioMute $ do + noMod $ spawn "pactl set-sink-mute @DEFAULT_SINK@ toggle" + + bind xF86XK_AudioPlay $ do + noMod $ spawn "spotify-control play" + + bind xF86XK_AudioNext $ do + noMod $ spawn "spotify-control next" + + bind xF86XK_AudioPrev $ do + noMod $ spawn "spotify-control prev" + + bind xF86XK_AudioPrev $ do + noMod $ spawn "spotify-control prev" + mouseMap :: ButtonsMap l mouseMap = runButtons $ do bind button1 $ do diff --git a/src/Internal/KeysM.hs b/src/Internal/KeysM.hs index 0d7adce..f834796 100644 --- a/src/Internal/KeysM.hs +++ b/src/Internal/KeysM.hs @@ -412,3 +412,4 @@ mapAlpha km fn = , (xK_y, 'y') , (xK_z, 'z') ] + diff --git a/src/Main.hs b/src/Main.hs index 94fb5a7..2b9baf3 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -3,7 +3,7 @@ import XMonad import XMonad.Hooks.ManageDocks (docks) import System.Directory (getHomeDirectory) import System.FilePath (()) -import XMonad.Hooks.EwmhDesktops (ewmhDesktopsStartup) +import XMonad.Hooks.EwmhDesktops (ewmh) import XMonad.Hooks.ManageHelpers (isFullscreen, doFullFloat) import XMonad.Layout.Fullscreen (fullscreenEventHook) import System.Environment (setEnv) @@ -16,6 +16,7 @@ import qualified XMonad as X import qualified XMonad.StackSet as S main = do + -- Execute some commands. homeDir <- getHomeDirectory let fp = homeDir ".xmonad" "startup" @@ -25,7 +26,7 @@ main = do xmobar <- spawnXMobar (=<<) X.xmonad $ - applyKeys $ docks $ def + applyKeys $ ewmh $ docks $ def { terminal = "alacritty" , modMask = mod3Mask , borderWidth = 2 @@ -33,9 +34,7 @@ main = do , focusedBorderColor = "#ff6c00" , normalBorderColor = "#404040" , layoutHook = myLayout - , startupHook = do - ewmhDesktopsStartup - spawn fp + , startupHook = spawn fp , manageHook = composeAll [ isFullscreen --> doFullFloat , className =? "Tilda" --> doFloat @@ -43,6 +42,8 @@ main = do , className =? "MPlayer" --> doFloat , title =? "Event Tester" --> doFloat , title =? "Floating Term" --> doFloat + , title =? "xmessage" --> doFloat + , title =? "gxmessage" --> doFloat , className =? "mpv" --> doFloat , className =? "gnubby_ssh_prompt" --> doFloat ] -- cgit