diff --git a/src/XMonad/Config/Vanessa.hs b/src/XMonad/Config/Vanessa.hs
--- a/src/XMonad/Config/Vanessa.hs
+++ b/src/XMonad/Config/Vanessa.hs
@@ -1,24 +1,26 @@
 -- | Configuration with defaults I like and brightness adjustable for my computer and appropriate
 module XMonad.Config.Vanessa (vConfig) where
 
---XMonad modules
-import           XMonad                   hiding (workspaces)
+import qualified Data.Map                  as M
+import           Data.Maybe
+import           Data.Monoid
+import           Data.Ratio                ((%))
+import           XMonad                    hiding (workspaces)
+import           XMonad.Actions.GridSelect
 import           XMonad.Hooks.DynamicLog
 import           XMonad.Hooks.ManageDocks
+import           XMonad.Layout.Fullscreen
+import           XMonad.Layout.Hidden
+import           XMonad.Layout.Mosaic
 import           XMonad.Layout.Reflect
 import           XMonad.Layout.Spiral
-import           XMonad.StackSet          hiding (filter)
+import           XMonad.StackSet           hiding (filter)
 import           XMonad.Util.Brightness
 import           XMonad.Util.Keyboard
 import           XMonad.Util.MediaKeys
 import           XMonad.Util.NamedWindows
 import           XMonad.Util.Run
 import           XMonad.Util.Volume
---Monads etc.
-import qualified Data.Map                 as M
-import           Data.Maybe
-import           Data.Monoid
-import           XMonad.Layout.Hidden
 
 -- | IO action of the whole thing
 vConfig :: IO ()
@@ -26,28 +28,30 @@
     where config = myConfig
 
 -- | Custom configuration taking in one pipe to xmobar
-myConfig xmproc = docks $ def { terminal   = "alacritty"
+myConfig xmproc = fullscreenSupport $ docks $ def { terminal   = "alacritty"
                               , keys       = newKeys
                               , layoutHook = myLayout
-                              , logHook    = (vLogHook xmproc)
-                              , manageHook = myManageHook }
+                              , logHook    = vLogHook xmproc
+                              , manageHook = myManageHook <+> manageDocks
+                              , handleEventHook = docksEventHook
+                              , startupHook = docksStartupHook }
 
 -- | get the current music playing (assumed to be in number 5)
 musicString :: X String
 musicString = do
     winset <- gets windowset
     {-- let p = (== "5") . fst --}
-    wt <- maybe (pure "") (fmap show . getName) . (fmap snd) . listToMaybe {--. filter p--} $ zip (((map tag . workspaces)) winset) (allWindows winset)
-    pure . (xmobarColor "green" "black") . take 40 $ wt
+    wt <- maybe (pure "") (fmap show . getName) . fmap snd . listToMaybe {--. filter p--} $ zip ((map tag . workspaces) winset) (allWindows winset)
+    pure . xmobarColor "green" "black" . take 40 $ wt
 
 -- | Provides custom hooks to xmonad. This disables printing the window title/connects xmobar and xmonad.
-vLogHook xmproc = musicString >>= \m ->  dynamicLogWithPP xmobarPP { ppOutput = hPutStrLn xmproc
-                                                                   , ppTitle = const m
-                                                                   , ppLayout = const ""
-                                                                   , ppHiddenNoWindows = id
-                                                                   , ppHidden = (xmobarColor "darkorange" "black") -- . (\x -> if x == "5" then "Spotify" else x)
-                                                                   , ppVisible = (xmobarColor "yellow" "black")
-                                                                   }
+vLogHook xmproc = musicString >>= \m -> dynamicLogWithPP xmobarPP { ppOutput = hPutStrLn xmproc
+                                                                  , ppTitle = const m
+                                                                  , ppLayout = const ""
+                                                                  , ppHiddenNoWindows = id
+                                                                  , ppHidden = xmobarColor "darkorange" "black" -- . (\x -> if x == "5" then "Spotify" else x)
+                                                                  , ppVisible = xmobarColor "yellow" "black"
+                                                                  }
 
 -- | Doesn't work on spotify
 myManageHook :: Query (Endo WindowSet)
@@ -58,21 +62,22 @@
                           , resource =? "crx_bikioccmkafdpakkkcpdbppfkghcmihk" --> doF (shift "7")
                           , resource =? "crx_bgkodfmeijboinjdegggmkbkjfiagaan" --> doF (shift "7")
                           , resource =? "launcher"                             --> doFloat
+                          , resource =? "qemu-system-arm"                      --> doFloat
                           , className =? "libreoffice-writer"                  --> doFloat
                           , className =? "Gimp"                                --> doFloat
                           , className =? "keepassx"                            --> doFloat
                           , className =? "xviewer"                             --> doFloat
+                          , className =? "qemu-system-x86_64"                  --> doFloat
                           ]
 
 -- | Custom keymaps to adjust volume, brightness, and
 myKeys :: XConfig t -> M.Map (KeyMask, KeySym) (X ())
-myKeys conf@(XConfig {XMonad.modMask = modm}) = mediaKeys . M.fromList $
+myKeys XConfig {XMonad.modMask = modm} = mediaKeys . M.fromList $
              [ --volume control
                ((modm, xK_Up), raiseVolume 5)
              , ((modm, xK_Down), lowerVolume 5)
-             , ((modm, xK_F8), toggleMute)
+             , ((modm, xK_Delete), toggleMute)
              --personal (extra) media keys
-             --, ((modm, xK_End), audioNext)
              , ((modm, xK_Page_Down), audioNext)
              , ((modm, xK_Page_Up), audioPrev)
              , ((modm, xK_Home), audioPlayPause)
@@ -94,6 +99,8 @@
              , ((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)
@@ -106,18 +113,21 @@
              -- hide windows
              , ((modm .|. shiftMask, xK_h), withFocused hide >> withFocused hideWindow)
              , ((modm, xK_u), popNewestHiddenWindow >> withFocused reveal)
+             -- grid select
+             , ((modm, xK_g), goToSelected def)
+             -- Mosaic adjustment
+             , ((modm, xK_a), sendMessage Taller)
+             , ((modm, xK_s), sendMessage Wider)
+             , ((modm, xK_r), sendMessage Reset)
              ]
-             {-- ++  [((m .|. modMask, k), windows $ f i)
-                 | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
-                 , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]] --}
 
 -- | Function giving keybindings to undo
 keysToRemove :: XConfig Layout -> M.Map (KeyMask, KeySym) (X ())
-keysToRemove x@(XConfig {XMonad.modMask = modm}) = M.fromList
+keysToRemove XConfig {XMonad.modMask = modm} = M.fromList
         [ ((modm, xK_p), pure ()) ]
 
 -- | Gives a better ratio for the master pane and lets us spiral windows
-myLayout = avoidStruts . hiddenWindows $ normalPanes ||| (reflectHoriz normalPanes) ||| Full ||| (spiral (16/9))
+myLayout = (avoidStruts . hiddenWindows $ mosaic 1.33 (take 6 $ iterate (* (4 % 5)) 1) ||| normalPanes ||| reflectHoriz normalPanes ||| Full) ||| hiddenWindows (spiral (6/7))
     where normalPanes = Tall 1 (3/100) (3/7)
 
 -- | Make new key layout from a given keyboard layout
diff --git a/src/XMonad/Util/Keyboard.hs b/src/XMonad/Util/Keyboard.hs
--- a/src/XMonad/Util/Keyboard.hs
+++ b/src/XMonad/Util/Keyboard.hs
@@ -13,7 +13,9 @@
                             , dzongkha
                             ) where
 
-import           Data.Composition
+-- TODO module for battery
+
+import           Control.Composition
 import           System.Process          hiding (spawn)
 import           XMonad
 import           XMonad.Hooks.DynamicLog
diff --git a/src/XMonad/Util/MediaKeys.hs b/src/XMonad/Util/MediaKeys.hs
--- a/src/XMonad/Util/MediaKeys.hs
+++ b/src/XMonad/Util/MediaKeys.hs
@@ -1,11 +1,12 @@
 -- | Bind media keys using dbus
 -- Requires amixer to control volume.
 module XMonad.Util.MediaKeys (-- * default keybindings
-                             mediaKeys
+                               mediaKeys
                              -- * media control in the 'X' monad
                              , audioPrev
                              , audioNext
-                             , audioPlayPause) where
+                             , audioPlayPause
+                             ) where
 
 --gives us media keys
 import           Graphics.X11.ExtraTypes.XF86
@@ -42,3 +43,5 @@
 
 -- | Action in the 'X' monad to play/pause
 audioPlayPause = sp "PlayPause"
+
+-- lana = sp "OpenUri string:6QOU3FhUkPeA2RtaXcvgi7"
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,66 +1,8 @@
-# This file was automatically generated by 'stack init'
-#
-# Some commonly used options have been documented as comments in this file.
-# For advanced use and comprehensive documentation of the format, please see:
-# https://docs.haskellstack.org/en/stable/yaml_configuration/
-
-# Resolver to choose a 'specific' stackage snapshot or a compiler version.
-# A snapshot resolver dictates the compiler version and the set of packages
-# to be used for project dependencies. For example:
-#
-# resolver: lts-3.5
-# resolver: nightly-2015-09-21
-# resolver: ghc-7.10.2
-# resolver: ghcjs-0.1.0_ghc-7.10.2
-# resolver:
-#  name: custom-snapshot
-#  location: "./custom-snapshot.yaml"
-resolver: lts-9.0
-
-# User packages to be built.
-# Various formats can be used as shown in the example below.
-#
-# packages:
-# - some-directory
-# - https://example.com/foo/bar/baz-0.0.2.tar.gz
-# - location:
-#    git: https://github.com/commercialhaskell/stack.git
-#    commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
-# - location: https://github.com/commercialhaskell/stack/commit/e7b331f14bcffb8367cd58fbfc8b40ec7642100a
-#   extra-dep: true
-#  subdirs:
-#  - auto-update
-#  - wai
-#
-# A package marked 'extra-dep: true' will only be built if demanded by a
-# non-dependency (i.e. a user package), and its test suites and benchmarks
-# will not be run. This is useful for tweaking upstream packages.
+resolver: lts-10.2
 packages:
 - .
-# Dependency packages to be pulled from upstream that are not in the resolver
-# (e.g., acme-missiles-0.3)
 extra-deps: []
-
-# Override default flag values for local packages and extra-deps
-flags: {}
-
-# Extra package databases containing global packages
+flags:
+    xmonad-vanessa:
+        library: false
 extra-package-dbs: []
-
-# Control whether we use the GHC we find on the path
-# system-ghc: true
-#
-# Require a specific version of stack, using version ranges
-# require-stack-version: -any # Default
-# require-stack-version: ">=1.5"
-#
-# Override the architecture used by stack, especially useful on Windows
-# arch: i386
-# arch: x86_64
-#
-# Extra directories used by stack for building
-# extra-include-dirs: [/path/to/dir]
-# extra-lib-dirs: [/path/to/dir]
-#
-# Allow a newer minor version of GHC than the snapshot specifies
-# compiler-check: newer-minor
diff --git a/xmonad-vanessa.cabal b/xmonad-vanessa.cabal
--- a/xmonad-vanessa.cabal
+++ b/xmonad-vanessa.cabal
@@ -1,5 +1,5 @@
 name:                xmonad-vanessa
-version:             0.1.1.4
+version:             0.1.1.5
 synopsis:            Custom xmonad, which builds with stack or cabal.
 description:         Please see README.md
 homepage:            https://hub.darcs.net/vmchale/xmonad-vanessa
@@ -18,11 +18,6 @@
   Default:     True
 }
 
-Flag gold {
-  Description: Enable the gold linker for faster build times
-  Default:     True
-}
-
 library
   hs-source-dirs:      src
   exposed-modules:     XMonad.Config.Vanessa
@@ -30,17 +25,14 @@
                      , XMonad.Util.Keyboard
                      , XMonad.Util.Volume
                      , XMonad.Util.MediaKeys
-  build-depends:       base >= 4.8 && < 5
+  build-depends:       base >= 4.7 && < 5
                      , xmonad >= 0.13
                      , xmonad-contrib >= 0.13
-                     , composition
+                     , composition-prelude
                      , containers
                      , process
                      , X11
                      , transformers
-  if flag(gold)
-    ghc-options:       -optl-fuse-ld=gold
-    ld-options:        -fuse-ld=gold
   ghc-options:         -fwarn-unused-imports
   default-language:    Haskell2010
 
@@ -49,12 +41,7 @@
     Buildable:         False
   hs-source-dirs:      app
   main-is:             Main.hs
-  if flag(gold)
-    ghc-options:       -optl-fuse-ld=gold
-    ld-options:        -fuse-ld=gold
-  ghc-options:         -O3
-  -- -threaded 
-  -- -fllvm -optlo-O3
+  ghc-options:         -O2
   build-depends:       base
                      , xmonad-vanessa
   default-language:    Haskell2010
@@ -64,10 +51,7 @@
     Buildable:         False
   hs-source-dirs:      app
   main-is:             ParseKBLayout.hs
-  if flag(gold)
-    ghc-options:       -optl-fuse-ld=gold
-    ld-options:        -fuse-ld=gold
-  ghc-options:         -threaded -O3
+  ghc-options:         -threaded -O2
   -- -rtsopts -with-rtsopts=-N
   -- -fllvm -optlo-O3
   build-depends:       base
