xmonad-vanessa 0.1.1.6 → 0.1.1.8
raw patch · 8 files changed
+118/−101 lines, 8 filessetup-changedPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- README.md +7/−5
- Setup.hs +2/−0
- cabal.project.local +4/−0
- src/XMonad/Config/Vanessa.hs +21/−15
- src/XMonad/Util/Keyboard.hs +5/−4
- src/XMonad/Util/MediaKeys.hs +7/−4
- stack.yaml +0/−8
- xmonad-vanessa.cabal +72/−65
README.md view
@@ -1,9 +1,11 @@-## Usage+# Use -`xmonad` with a custom configuration, in a project to be compiled with stack or cabal. You can also use the library by itself (the executable is not build by default).+`xmonad` with a custom configuration, in a project to be compiled with cabal. You can also use the library by itself. -### Requirements+## Requirements+ Requires libxft-dev, amixer for volume, gnome-terminal, and setxkbmap to switch keyboard layouts. -### Sugestions-Use dmenu, libx11-dev, libxinerama, and yeganesh as well. +## Sugestions++Use dmenu, libx11-dev, libxinerama, xmobar, and yeganesh as well.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ cabal.project.local view
@@ -0,0 +1,4 @@+constraints: xmonad-vanessa -library+with-compiler: ghc-8.2.2+optimization: 2+documentation: True
src/XMonad/Config/Vanessa.hs view
@@ -1,3 +1,4 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-} -- | Configuration with defaults I like and brightness adjustable for my computer and appropriate module XMonad.Config.Vanessa (vConfig) where @@ -5,6 +6,7 @@ import Data.Maybe import Data.Monoid import Data.Ratio ((%))+import System.IO (Handle) import XMonad hiding (workspaces) import XMonad.Actions.GridSelect import XMonad.Hooks.DynamicLog@@ -14,7 +16,7 @@ import XMonad.Layout.Mosaic import XMonad.Layout.Reflect import XMonad.Layout.Spiral-import XMonad.StackSet hiding (filter)+import XMonad.StackSet hiding (float) import XMonad.Util.Brightness import XMonad.Util.Keyboard import XMonad.Util.MediaKeys@@ -24,8 +26,8 @@ -- | IO action of the whole thing vConfig :: IO ()-vConfig = xmonad . config =<< spawnPipe "xmobar"- where config = myConfig+vConfig = xmonad . config' =<< spawnPipe "xmobar"+ where config' = myConfig -- | Custom configuration taking in one pipe to xmobar myConfig xmproc = fullscreenSupport $ docks $ def { terminal = "alacritty"@@ -45,6 +47,7 @@ pure . xmobarColor "green" "black" . take 40 $ wt -- | Provides custom hooks to xmonad. This disables printing the window title/connects xmobar and xmonad.+vLogHook :: Handle -> X () vLogHook xmproc = musicString >>= \m -> dynamicLogWithPP xmobarPP { ppOutput = hPutStrLn xmproc , ppTitle = const m , ppLayout = const ""@@ -70,12 +73,17 @@ , className =? "qemu-system-x86_64" --> doFloat ] +-- TODO gaps between windows?++mkSmall :: Window -> X ()+mkSmall = flip tileWindow (Rectangle 850 150 600 400)+ -- | Custom keymaps to adjust volume, brightness, and myKeys :: XConfig t -> M.Map (KeyMask, KeySym) (X ()) myKeys XConfig {XMonad.modMask = modm} = mediaKeys . M.fromList $ [ --volume control- ((modm, xK_Up), raiseVolume 5)- , ((modm, xK_Down), lowerVolume 5)+ ((modm, xK_Up), raiseVolume (5 :: Word))+ , ((modm, xK_Down), lowerVolume (5 :: Word)) , ((modm, xK_Delete), toggleMute) --personal (extra) media keys , ((modm, xK_Page_Down), audioNext)@@ -86,21 +94,18 @@ , ((modm, xK_Right), brighten 100) --program shortcuts , ((modm, xK_q), spawn "spotify")+ , ((modm .|. shiftMask, xK_n), spawn "firefox") , ((modm .|. controlMask, xK_Return), spawn "gnome-terminal")- --open signal- , ((modm .|. shiftMask, xK_n), spawn "google-chrome --profile-directory=Default --app-id=bikioccmkafdpakkkcpdbppfkghcmihk") --launch bar- , ((modm, xK_p), spawn "$(yeganesh -x)")- -- bash command execution bar- , ((modm .|. shiftMask, xK_l), spawn "launcher")+ , ((modm, xK_p), spawn "yeganesh -x") --screenshots- , ((0, xK_Print), spawn "cd ~/.screenshots && scrot") -- TODO figure out how to surpress window size information+ , ((0, xK_Print), spawn "cd ~/.screenshots && scrot")+ -- open scratchpad+ , ((modm .|. shiftMask, xK_p), withFocused (mconcat . sequence [float, mkSmall])) --shutdown etc. , ((modm .|. shiftMask, xK_End), spawn "shutdown now") -- lock screen , ((controlMask, xK_End), spawn "slock")- -- function lock- -- , ((modm, xK_Insert, XF86ModeLock --switch keyboards , ((modm, xK_F1), setLang def) , ((modm, xK_F2), setLang tibetan)@@ -111,7 +116,7 @@ , ((modm, xK_F7), setLang dansk) , ((modm, xK_F9), setLang dzongkha) -- hide windows- , ((modm .|. shiftMask, xK_h), withFocused hide >> withFocused hideWindow)+ , ((modm .|. shiftMask, xK_h), withFocused (mconcat . sequence [hide, hideWindow])) , ((modm, xK_u), popNewestHiddenWindow >> withFocused reveal) -- grid select , ((modm, xK_g), goToSelected def)@@ -127,8 +132,9 @@ [ ((modm, xK_p), pure ()) ] -- | Gives a better ratio for the master pane and lets us spiral windows-myLayout = (avoidStruts . hiddenWindows $ mosaic 1.33 (take 6 $ iterate (* (4 % 5)) 1) ||| normalPanes ||| reflectHoriz normalPanes ||| Full) ||| hiddenWindows (spiral (6/7))+myLayout = (avoidStruts . hiddenWindows $ mosaic 1.33 mosaicSettings ||| normalPanes ||| reflectHoriz normalPanes ||| Full) ||| hiddenWindows (spiral (6/7)) where normalPanes = Tall 1 (3/100) (3/7)+ mosaicSettings = take 6 $ iterate (* (4 % 5)) 1 -- | Make new key layout from a given keyboard layout newKeys :: XConfig Layout -> M.Map (KeyMask, KeySym) (X ())
src/XMonad/Util/Keyboard.hs view
@@ -16,7 +16,7 @@ -- TODO module for battery import Control.Composition-import System.Process hiding (spawn)+import System.Process import XMonad import XMonad.Hooks.DynamicLog @@ -33,6 +33,7 @@ show (Simple "is") = "Ænglisc" show (Simple "de") = "De" show (Simple "dk") = "Dk"+ show _ = xmobarColor "red" "black" "ERROR" -- | Set default keyboard layout to vanilla "us" instance Default KbLayout where@@ -46,7 +47,7 @@ parseKB :: IO KbLayout parseKB = do out <- lines <$> readCreateProcess (shell "setxkbmap -query") ""- let strip = dropWhile (==' ') . (drop 1) . (dropWhile (/=':')) .* (!!)+ let strip = dropWhile (==' ') . drop 1 . dropWhile (/=':') .* (!!) let line = strip out if length out == 3 then pure (Simple (line 2))@@ -55,7 +56,7 @@ -- | keyboard layout for typing Tibetan text tibetan :: KbLayout-tibetan = (Regional "cn" "tib")+tibetan = Regional "cn" "tib" -- | AZERTY French keyboard français :: KbLayout@@ -79,7 +80,7 @@ -- | Alr-gr keyboard providing common accents on a US keyboard accented :: KbLayout-accented = (Regional "us" "altgr-intl")+accented = Regional "us" "altgr-intl" -- | Set keyboard layout setLang :: KbLayout -> X ()
src/XMonad/Util/MediaKeys.hs view
@@ -20,28 +20,31 @@ -- | Given your keymaps, add the media keybindings mediaKeys :: M.Map (KeyMask, KeySym) (X ()) -> M.Map (KeyMask, KeySym) (X ())-mediaKeys = M.fromList . ((<>) mediaKeyList) . M.toList+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)+ , ((0, xF86XK_AudioLowerVolume), lowerVolume (5 :: Word))+ , ((0, xF86XK_AudioRaiseVolume), raiseVolume (5 :: Word)) ] -- | 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.")+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 :: X () audioNext = sp "Next" -- | Action in the 'X' monad to go the previous+audioPrev :: X () audioPrev = sp "Previous" -- | Action in the 'X' monad to play/pause+audioPlayPause :: X () audioPlayPause = sp "PlayPause" -- lana = sp "OpenUri string:6QOU3FhUkPeA2RtaXcvgi7"
− stack.yaml
@@ -1,8 +0,0 @@-resolver: lts-10.2-packages:-- .-extra-deps: []-flags:- xmonad-vanessa:- library: false-extra-package-dbs: []
xmonad-vanessa.cabal view
@@ -1,74 +1,81 @@-name: xmonad-vanessa-version: 0.1.1.6-synopsis: Custom xmonad, which builds with stack or cabal.-description: Please see README.md-homepage: https://hub.darcs.net/vmchale/xmonad-vanessa-license: BSD3-license-file: LICENSE-author: Vanessa McHale-maintainer: vanessa.mchale@reconfigure.io-copyright: 2017 Vanessa McHale-category: Web-build-type: Simple-extra-source-files: README.md, stack.yaml-cabal-version: >=1.10+cabal-version: >=1.10+name: xmonad-vanessa+version: 0.1.1.8+license: BSD3+license-file: LICENSE+copyright: 2017-2018 Vanessa McHale+maintainer: vamchale@gmail.com+author: Vanessa McHale+homepage: https://hub.darcs.net/vmchale/xmonad-vanessa+synopsis: Custom xmonad, which builds with stack or cabal.+description:+ Custom xmonad example, plus several bits of functionality for managing media within XMonad.+category: Web+build-type: Simple+extra-source-files:+ README.md+ cabal.project.local -Flag library {- Description: Don't build an executable- Default: True-}+source-repository head+ type: darcs+ location: https://hub.darcs.net/vmchale/xmonad-vanessa +flag library+ description:+ Don't build an executable+ library- hs-source-dirs: src- exposed-modules: XMonad.Config.Vanessa- , XMonad.Util.Brightness- , XMonad.Util.Keyboard- , XMonad.Util.Volume- , XMonad.Util.MediaKeys- build-depends: base >= 4.8 && < 5- , xmonad >= 0.13- , xmonad-contrib >= 0.13- , composition-prelude- , containers- , process- , X11- , transformers- ghc-options: -fwarn-unused-imports- default-language: Haskell2010+ exposed-modules:+ XMonad.Config.Vanessa+ XMonad.Util.Brightness+ XMonad.Util.Keyboard+ XMonad.Util.Volume+ XMonad.Util.MediaKeys+ hs-source-dirs: src+ default-language: Haskell2010+ ghc-options: -Wall+ build-depends:+ base >=4.8 && <5,+ xmonad >=0.13,+ xmonad-contrib >=0.13,+ composition-prelude -any,+ containers -any,+ process -any,+ X11 -any,+ transformers -any executable xmonad- if flag(library)- Buildable: False- hs-source-dirs: app- main-is: Main.hs- ghc-options: -O2- build-depends: base- , xmonad-vanessa- default-language: Haskell2010+ main-is: Main.hs+ hs-source-dirs: app+ default-language: Haskell2010+ ghc-options: -O2+ build-depends:+ base -any,+ xmonad-vanessa -any+ + if flag(library)+ buildable: False executable getkb- if flag(library)- Buildable: False- hs-source-dirs: app- main-is: ParseKBLayout.hs- ghc-options: -threaded -O2- -- -rtsopts -with-rtsopts=-N- -- -fllvm -optlo-O3- build-depends: base- , xmonad-vanessa- default-language: Haskell2010+ main-is: ParseKBLayout.hs+ hs-source-dirs: app+ default-language: Haskell2010+ ghc-options: -O2+ build-depends:+ base -any,+ xmonad-vanessa -any+ + if flag(library)+ buildable: False test-suite xmonad-test- type: exitcode-stdio-1.0- hs-source-dirs: test- main-is: Spec.hs- build-depends: base- , xmonad-vanessa- , hspec- , xmonad- ghc-options: -threaded -rtsopts -with-rtsopts=-N - default-language: Haskell2010--source-repository head- type: darcs- location: https://hub.darcs.net/vmchale/xmonad-vanessa+ type: exitcode-stdio-1.0+ main-is: Spec.hs+ hs-source-dirs: test+ default-language: Haskell2010+ ghc-options: -threaded -rtsopts -with-rtsopts=-N+ build-depends:+ base -any,+ xmonad-vanessa -any,+ hspec -any,+ xmonad -any