xmonad-vanessa 0.1.0.1 → 0.1.0.2
raw patch · 4 files changed
+73/−13 lines, 4 filesdep −tibetan-utilsdep ~xmonad-vanessa
Dependencies removed: tibetan-utils
Dependency ranges changed: xmonad-vanessa
Files
- src/XMonad/Config/Vanessa.hs +23/−8
- src/XMonad/Util/Keyboard.hs +1/−0
- src/XMonad/Util/MediaKeys.hs +44/−0
- xmonad-vanessa.cabal +5/−5
src/XMonad/Config/Vanessa.hs view
@@ -11,12 +11,15 @@ import XMonad.Util.Volume import XMonad.Util.Brightness import XMonad.Util.Keyboard+import XMonad.Util.MediaKeys import XMonad.StackSet as W --Monads etc. import qualified Data.Map as M import Data.Monoid import Control.Monad hiding (guard) import Control.Monad.IO.Class+--+import Control.Concurrent -- | IO action of the whole thing vConfig :: IO ()@@ -44,19 +47,33 @@ myManageHook = composeAll [ className =? "Gimp" --> doFloat , resource =? "spotify" --> doF (W.shift "5") , resource =? "google-chrome" --> doF (W.shift "2")+ , resource =? "crx_bikioccmkafdpakkkcpdbppfkghcmihk" --> doF (W.shift "7") ] -- | Custom keymaps to adjust volume, brightness, and myKeys :: XConfig t -> M.Map (KeyMask, KeySym) (X ())-myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList- [ ((modm, xK_Up), raiseVolume 5)+myKeys conf@(XConfig {XMonad.modMask = modm}) = mediaKeys . M.fromList $+ [ --volume control+ ((modm, xK_Up), raiseVolume 5) , ((modm, xK_Down), lowerVolume 5)+ , ((modm, xK_F8), toggleMute)+ --personal (extra) media keys+ , ((modm, xK_End), audioNext)+ , ((modm, xK_Page_Up), audioPrev)+ , ((modm, xK_Home), audioPlayPause)+ --brightness , ((modm, xK_Left), brighten (-100)) , ((modm, xK_Right), brighten 100)- , ((modm, xK_F8), toggleMute)- --, ((modm, xK_p), spawn "nohup yeganesh -x")+ --program shortcuts+ , ((modm, xK_q), spawn "spotify") + , ((modm .|. shiftMask, xK_n), spawn "google-chrome --profile-directory=Default --app-id=bikioccmkafdpakkkcpdbppfkghcmihk") --open signal+ --launch bar+ , ((modm, xK_p), spawn "$(yeganesh -x)")+ --screenshots+ , ((0, xK_Print), spawn "cd ~/.screenshots && scrot")+ --shutdown etc. , ((modm .|. shiftMask, xK_End), spawn "shutdown now")- , ((modm, xK_F12), spawn "cd ~/.screenshots && scrot")+ --switch keyboards , ((modm, xK_F1), setLang def) , ((modm, xK_F2), setLang tibetan) , ((modm, xK_F3), setLang accented)@@ -65,12 +82,10 @@ --idea: "browse" workspaces but multiple of them/autospawn in a new one? --overambition:vim-like window management - -- | Function giving keybindings to undo keysToRemove :: XConfig Layout -> M.Map (KeyMask, KeySym) (X ()) keysToRemove x@(XConfig {XMonad.modMask = modm}) = M.fromList- --[ ((modm , xK_p ), return ())- []+ [ ((modm, xK_p), pure ()) ] -- | Gives a better ratio for the master pane and lets us spiral windows myLayout = avoidStruts $ normalPanes ||| reflectHoriz normalPanes ||| Full ||| spiral (16/9)
src/XMonad/Util/Keyboard.hs view
@@ -1,4 +1,5 @@ -- | Allows to switch keyboard layouts +-- Uses the command-line utility setxkbmap. module XMonad.Util.Keyboard ( KbLayout (..) , showKBLayout , parseKB
+ src/XMonad/Util/MediaKeys.hs view
@@ -0,0 +1,44 @@+-- | Bind media keys using dbus+-- Requires amixer to control volume. +module XMonad.Util.MediaKeys (-- * default keybindings+ mediaKeys+ -- * media control in the 'X' monad+ , audioPrev+ , audioNext+ , audioPlayPause) where++--gives us media keys+import Graphics.X11.ExtraTypes.XF86+import Graphics.X11.Types+--XMonad stuff+import XMonad.Core+import XMonad.Util.Volume+--monads and all that+import qualified Data.Map as M+import Data.Monoid++-- | Given your keymaps, add the media keybindings+mediaKeys :: M.Map (KeyMask, KeySym) (X ()) -> M.Map (KeyMask, KeySym) (X ())+mediaKeys = M.fromList . ((<>) mediaKeyList) . M.toList++mediaKeyList :: [((KeyMask, KeySym), X ())]+mediaKeyList = [ ((0, xF86XK_AudioNext), audioNext)+ , ((0, xF86XK_AudioPrev), audioPrev)+ , ((0, xF86XK_AudioPlay), audioPlayPause)+ , ((0, xF86XK_AudioMute), toggleMute)+ , ((0, xF86XK_AudioLowerVolume), lowerVolume 5) --module elsewhere? + , ((0, xF86XK_AudioRaiseVolume), raiseVolume 5) + ]++-- | Helper function for use with dbus+sp :: String -> X ()+sp = spawn . ((<>) "dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.")++-- | Action in the 'X' monad to go to next+audioNext = sp "Next"++-- | Action in the 'X' monad to go the previous+audioPrev = sp "Previous"++-- | Action in the 'X' monad to play/pause+audioPlayPause = sp "PlayPause"
xmonad-vanessa.cabal view
@@ -1,5 +1,5 @@ name: xmonad-vanessa-version: 0.1.0.1+version: 0.1.0.2 cabal-version: >=1.10 build-type: Simple license: BSD3@@ -23,6 +23,7 @@ XMonad.Util.Brightness XMonad.Util.Keyboard XMonad.Util.Volume+ XMonad.Util.MediaKeys build-depends: base >=4.7 && <5, xmonad ==0.12.*,@@ -30,8 +31,7 @@ xmonad-extras >=0.12.1 && <0.13, containers >=0.5.7.1 && <0.6, process >=1.4.2.0 && <1.5,- X11 >=1.6.1.2 && <1.7,- tibetan-utils >=0.1.0.1 && <0.2+ X11 >=1.6.1.2 && <1.7 default-language: Haskell2010 hs-source-dirs: src @@ -39,7 +39,7 @@ main-is: Main.hs build-depends: base >=4.9.0.0 && <4.10,- xmonad-vanessa >=0.1.0.1 && <0.2+ xmonad-vanessa >=0.1.0.2 && <0.2 default-language: Haskell2010 hs-source-dirs: app ghc-options: -threaded -rtsopts -with-rtsopts=-N@@ -48,7 +48,7 @@ main-is: ParseKBLayout.hs build-depends: base >=4.9.0.0 && <4.10,- xmonad-vanessa >=0.1.0.1 && <0.2+ xmonad-vanessa >=0.1.0.2 && <0.2 default-language: Haskell2010 hs-source-dirs: app ghc-options: -threaded -rtsopts -with-rtsopts=-N