From 02916834d1d6a829ef1f72567f487465e841b0af Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Fri, 22 Mar 2019 12:18:52 -0700 Subject: Re-enable xmonad --- xmonad.hs | 65 +++++++++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 51 insertions(+), 14 deletions(-) (limited to 'xmonad.hs') diff --git a/xmonad.hs b/xmonad.hs index 4113186..55f6a69 100644 --- a/xmonad.hs +++ b/xmonad.hs @@ -1,35 +1,72 @@ +{- + +Docs: + +- EZConfig: https://hackage.haskell.org/package/xmonad-contrib-0.13/docs/XMonad-Util-EZConfig.html#g:3 +- Media keys: https://hackage.haskell.org/package/X11-1.9/docs/Graphics-X11-ExtraTypes-XF86.html +- Audio control: https://xmonadhaskell.wordpress.com/2018/10/24/xmonad-audio-control/ + +- XMonad API: https://hackage.haskell.org/package/xmonad +- Contrib API: https://hackage.haskell.org/package/xmonad-contrib + +-} + + import XMonad import XMonad.Config import XMonad.Hooks.EwmhDesktops (ewmh) import XMonad.Hooks.ManageDocks import XMonad.Layout.Spiral import XMonad.Util.CustomKeys (customKeys) +import XMonad.Actions.CopyWindow +import XMonad.Util.EZConfig (additionalKeys) +import Graphics.X11.ExtraTypes.XF86 delKeys conf@(XConfig {modMask = modMask}) = [(modMask, xK_p)] insKeys :: XConfig l -> [((KeyMask, KeySym), X ())] insKeys conf@(XConfig {modMask = modMask}) = - [ ((0, xK_F5), spawn "xbacklight -dec 1") - , ((0, xK_F6), spawn "xbacklight -inc 1") - , ((modMask, xK_o), spawn "dmenu_run") + [ -- run dmenu with M-o + ((modMask, xK_o), spawn "dmenu_run") + -- passmenu doesn't work :( , ((modMask, xK_p), spawn "${SHELL:-\"/bin/sh\"} -c passmenu &") , ((modMask, xK_y), spawn "passmenu &") + -- sticky windows + , ((modMask, xK_a ), windows copyToAll) -- @@ Make focused window always visible + , ((modMask .|. shiftMask, xK_a ), killAllOtherCopies) -- @@ Toggle window state back + -- media/ function keys + -- backlight + , ((0, xK_F5), spawn "xbacklight -dec 5") + , ((0, xK_F6), spawn "xbacklight -inc 5") + , ((0, xF86XK_KbdBrightnessDown), spawn "xbacklight -dec 5") + , ((0, xF86XK_KbdBrightnessUp), spawn "xbacklight -inc 5") + -- volume controls + , ((0, xK_F1), amixer "2%+") + , ((0, xK_F2), amixer "2%-") + , ((0, xK_F3), amixer "toggle") + + , ((0, xF86XK_AudioLowerVolume), amixer "2%+") + , ((0, xF86XK_AudioRaiseVolume), amixer "2%-") + , ((0, xF86XK_AudioMute), amixer "toggle") ] +amixer :: String -> X () +amixer cmd = spawn $ "amixer -q sset Master " <> cmd + myLayout = spiral (6 / 7) myWorkspaces = ["1:mail", "2:org", "3:web"] ++ map show [4 .. 9] ++ ["0"] -myConf = - def - { modMask = mod4Mask -- ^ super instead of alt - , normalBorderColor = "#eee8d4" -- ^ solarized base3 - , focusedBorderColor = "#2aa198" -- ^ solarized cyan - , manageHook = manageDocks <+> manageHook defaultConfig - , layoutHook = avoidStruts $ myLayout ||| layoutHook defaultConfig - , terminal = "/home/ben/.nix-profile/bin/xterm" - , keys = customKeys delKeys insKeys - , workspaces = myWorkspaces - } +myConf = additionalKeys c (insKeys c) + where c = def + { modMask = mod4Mask -- ^ super instead of alt + , normalBorderColor = "#eee8d4" -- ^ solarized base3 + , focusedBorderColor = "#2aa198" -- ^ solarized cyan + , manageHook = manageDocks <+> manageHook def + , layoutHook = avoidStruts $ myLayout ||| layoutHook def + , terminal = "/home/ben/.nix-profile/bin/xterm" + , workspaces = myWorkspaces + --, keys = customKeys delKeys insKeys + } main = xmonad $ ewmh $ docks $ myConf -- cgit v1.2.3