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
@@ -4,7 +4,6 @@
 --XMonad modules
 import XMonad hiding (workspaces)
 import XMonad.Hooks.DynamicLog
-import XMonad.Hooks.ManageDocks
 import XMonad.Layout.Spiral
 import XMonad.Layout.Reflect
 import XMonad.Util.Run
@@ -19,10 +18,6 @@
 import qualified Data.Map as M
 import Data.Maybe
 import Data.Monoid
-import Control.Monad hiding (guard)
-import Control.Monad.IO.Class
---
-import Control.Concurrent
 
 -- | IO action of the whole thing
 vConfig :: IO ()
@@ -40,8 +35,8 @@
 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) 
+    {-- 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
 
 -- | Provides custom hooks to xmonad. This disables printing the window title/connects xmobar and xmonad.
@@ -55,14 +50,17 @@
  
 -- | Doesn't work on spotify
 myManageHook :: Query (Endo WindowSet)
-myManageHook = composeAll [ className =? "Gimp"                                --> doFloat
+myManageHook = composeAll [ className =? "Gimp-2.8"                            --> doFloat
                           , resource =? "spotify"                              --> doF (shift "5")
-                          , resource =? "google-chrome"                        --> doF (shift "2")
+                          , className =? "Firefox"                             --> doF (shift "5")
+                          , className =? "google-chrome"                       --> doF (shift "3")
                           , resource =? "crx_bikioccmkafdpakkkcpdbppfkghcmihk" --> doF (shift "7")
                           , resource =? "crx_bgkodfmeijboinjdegggmkbkjfiagaan" --> doF (shift "7")
-                          , className =? "libreoffice-writer" --> doFloat
-                          , className =? "keepassx" --> doFloat
-                          , className =? "xviewer" --> doFloat
+                          , resource =? "launcher"                             --> doFloat
+                          , className =? "libreoffice-writer"                  --> doFloat
+                          , className =? "Gimp"                                --> doFloat
+                          , className =? "keepassx"                            --> doFloat
+                          , className =? "xviewer"                             --> doFloat
                           ]
 
 -- | Custom keymaps to adjust volume, brightness, and 
@@ -82,13 +80,18 @@
              --program shortcuts
              , ((modm, xK_q), spawn "spotify") 
              , ((modm .|. controlMask, xK_Return), spawn "gnome-terminal") 
-             , ((modm .|. shiftMask, xK_n), spawn "google-chrome --profile-directory=Default --app-id=bikioccmkafdpakkkcpdbppfkghcmihk") --open signal
+             --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")
              --screenshots
              , ((0, xK_Print), spawn "cd ~/.screenshots && scrot")
              --shutdown etc.
              , ((modm .|. shiftMask, xK_End), spawn "shutdown now")
+             -- lock screen
+             , ((modm, xK_End), spawn "slock")
              --switch keyboards
              , ((modm, xK_F1), setLang def)
              , ((modm, xK_F2), setLang tibetan)
@@ -98,7 +101,8 @@
              , ((modm, xK_F6), setLang anglisc)
              , ((modm, xK_F7), setLang dansk)
              , ((modm, xK_F9), setLang dzongkha)
-             , ((shiftMask, xK_F11), spawn "cargo install --git https://github.com/jwilm/alacritty.git --force")
+             -- bad idea; use ctrl + shift + enter to open gnome terminal instead
+             -- , ((shiftMask, xK_F11), spawn "cargo install --git https://github.com/jwilm/alacritty.git --force")
              ]
              --alt + h and alt+l should go over by one?
              --idea: "browse" workspaces but multiple of them/autospawn in a new one?
diff --git a/stack-8.yaml b/stack-8.yaml
deleted file mode 100644
--- a/stack-8.yaml
+++ /dev/null
@@ -1,76 +0,0 @@
-# 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:
-# http://docs.haskellstack.org/en/stable/yaml_configuration/
-
-# A warning or info to be displayed to the user on config load.
-user-message: ! 'Warning (added by new or init): Specified resolver could not satisfy
-  all dependencies. Some external packages have been added as dependencies.
-
-  You can suppress this message by removing it from stack.yaml
-
-'
-
-# 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-8.2
-
-# 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.
-packages:
-- '.'
-# Dependency packages to be pulled from upstream that are not in the resolver
-# (e.g., acme-missiles-0.3)
-extra-deps:
-- X11-xft-0.3.1
-- xmonad-contrib-0.13
-
-# Override default flag values for local packages and extra-deps
-flags: {}
-
-# Extra package databases containing global packages
-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.4"
-#
-# 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/stack-nightly.yaml b/stack-nightly.yaml
deleted file mode 100644
--- a/stack-nightly.yaml
+++ /dev/null
@@ -1,66 +0,0 @@
-# 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:
-# http://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: nightly-2017-02-26
-
-# 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.
-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
-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.4"
-#
-# 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/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,66 +1,35 @@
-# 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:
-# http://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: nightly-2017-02-26
-
-# 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-8.15
 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
-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.4"
-#
-# 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
+ - .
+ - extra-dep: true
+   location:
+       git: https://github.com/haskell/deepseq
+       commit: 0b22c9825ef79c1ee41d2f19e7c997f5cdc93494
+ - extra-dep: true
+   location:
+       git: https://github.com/acid-state/acid-state.git
+       commit: f44beb3a3fb96bf2c00b928c89ad5f9f5ce4b3cf
+ - extra-dep: true
+   location:
+       git: https://github.com/ekmett/semigroupoids.git
+       commit: c3297f970658ae874db098190327ec742044a2e6
+ - extra-dep: true
+   location:
+       git: http://github.com/ekmett/lens.git
+       commit: 7031e00f62a704a86c3149c75c1e2afc059af022
+extra-deps:
+    - haskell-qrencode-1.0.4
+allow-newer: true
+compiler: ghc-8.2.0.20170507
+compiler-check: match-exact
+setup-info:
+ ghc:
+  linux64:
+   8.2.0.20170507:
+    url: https://downloads.haskell.org/~ghc/8.2.1-rc2/ghc-8.2.0.20170507-x86_64-deb8-linux.tar.xz
+  macosx:
+   8.2.0.20170507:
+    url: https://downloads.haskell.org/~ghc/8.2.1-rc2/ghc-8.2.0.20170507-x86_64-apple-darwin.tar.xz
+  windows64:
+   8.2.0.20170507:
+    url: https://downloads.haskell.org/~ghc/8.2.1-rc2/ghc-8.2.0.20170507-x86_64-unknown-mingw32.tar.xz
diff --git a/xmonad-vanessa.cabal b/xmonad-vanessa.cabal
--- a/xmonad-vanessa.cabal
+++ b/xmonad-vanessa.cabal
@@ -1,70 +1,86 @@
-name: xmonad-vanessa
-version: 0.1.1.0
-cabal-version: >=1.10
-build-type: Simple
-license: BSD3
-license-file: LICENSE
-copyright: 2016 Vanessa McHale
-maintainer: tmchale@wisc.edu
-homepage: https://github.com/vmchale/xmonad-vanessa#readme
-synopsis: Custom xmonad, which uses stack and sets various defaults
-description:
-    Please see README.md
-category: Web
-author: Vanessa McHale
-extra-source-files:
-    README.md
-    stack.yaml
-    stack-nightly.yaml
-    stack-8.yaml
+name:                xmonad-vanessa
+version:             0.1.1.1
+synopsis:            Custom xmonad, which uses stack and sets various defaults
+description:         Please see README.md
+homepage:            https://github.com/vmchale/xmonad-vanessa#readme
+license:             BSD3
+license-file:        LICENSE
+author:              Vanessa McHale
+maintainer:          tmchale@wisc.edu
+copyright:           2016 Vanessa McHale
+category:            Web
+build-type:          Simple
+extra-source-files:  README.md, stack.yaml
+cabal-version:       >=1.10
 
-source-repository head
-    type: git
-    location: https://github.com/vmchale/xmonad-vanessa
+Flag library {
+  Description: Don't build an executable
+  Default:     False
+}
 
+Flag gold {
+  Description: Enable the gold linker for faster build times
+  Default:     True
+}
+
 library
-    exposed-modules:
-        XMonad.Config.Vanessa
-        XMonad.Util.Brightness
-        XMonad.Util.Keyboard
-        XMonad.Util.Volume
-        XMonad.Util.MediaKeys
-    build-depends:
-        base >=4.7 && <5,
-        xmonad ==0.13.*,
-        xmonad-contrib ==0.13.*,
-        containers >=0.5.7.1 && <0.6,
-        process >=1.4.3.0 && <1.5,
-        X11 ==1.8.*,
-        transformers >=0.5.2.0 && <0.6
-    default-language: Haskell2010
-    hs-source-dirs: src
+  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.7 && < 5
+                     , xmonad >= 0.13
+                     , xmonad-contrib
+                     , 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
 
 executable xmonad
-    main-is: Main.hs
-    build-depends:
-        base >=4.9.1.0 && <4.10,
-        xmonad-vanessa >=0.1.1.0 && <0.2
-    default-language: Haskell2010
-    hs-source-dirs: app
-    ghc-options: -threaded -rtsopts -with-rtsopts=-N -O3 -fllvm -optlo-O3
+  if flag(library)
+    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:         -threaded -rtsopts -with-rtsopts=-N -O3
+  -- -fllvm -optlo-O3
+  build-depends:       base
+                     , xmonad-vanessa
+  default-language:    Haskell2010
 
 executable getkb
-    main-is: ParseKBLayout.hs
-    build-depends:
-        base >=4.9.1.0 && <4.10,
-        xmonad-vanessa >=0.1.1.0 && <0.2
-    default-language: Haskell2010
-    hs-source-dirs: app
-    ghc-options: -threaded -rtsopts -with-rtsopts=-N -fllvm -O3 -optlo-O3
+  if flag(library)
+    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 -rtsopts -with-rtsopts=-N -O3
+  -- -fllvm -optlo-O3
+  build-depends:       base
+                     , xmonad-vanessa
+  default-language:    Haskell2010
 
 test-suite xmonad-test
-    type: exitcode-stdio-1.0
-    main-is: Spec.hs
-    build-depends:
-        base >=4.9.1.0 && <4.10,
-        xmonad-vanessa >=0.1.1.0 && <0.2,
-        hspec >=2.4.2 && <2.5,
-        xmonad ==0.13.*
-    hs-source-dirs: test
-    ghc-options: -threaded -rtsopts -with-rtsopts=-N
+  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 
+
+source-repository head
+  type:     git
+  location: https://github.com/vmchale/xmonad-vanessa
