about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rwxr-xr-xscripts/mpc-play-pause.sh (renamed from misc/bin/mpc-play-pause.sh)0
-rwxr-xr-xscripts/nsp-console.sh (renamed from misc/bin/nsp-console.sh)0
-rwxr-xr-xscripts/screenlock.sh (renamed from misc/bin/screenlock.sh)0
-rwxr-xr-xscripts/toggle-compton.sh (renamed from misc/bin/toggle-compton.sh)0
-rwxr-xr-xscripts/toggle-redshift.sh (renamed from misc/bin/toggle-redshift.sh)0
-rwxr-xr-xscripts/toggle-touchpad.sh (renamed from misc/bin/toggle-touchpad.sh)0
-rwxr-xr-xscripts/toggle-trackpoint.sh (renamed from misc/bin/toggle-trackpoint.sh)0
-rwxr-xr-xscripts/xmobar/fcitx.sh (renamed from misc/bin/xmobar/fcitx.sh)0
-rwxr-xr-xscripts/xshot-select-upload.sh (renamed from misc/bin/xshot-select-upload.sh)0
-rwxr-xr-xscripts/xshot-select.sh (renamed from misc/bin/xshot-select.sh)0
-rwxr-xr-xscripts/xshot-upload.sh (renamed from misc/bin/xshot-upload.sh)0
-rwxr-xr-xscripts/xshot.sh (renamed from misc/bin/xshot.sh)0
-rw-r--r--src/Test.hs50
-rw-r--r--src/XMonad/Actions/FloatSnapSpaced.hs2
-rw-r--r--src/XMonad/Custom/Bindings.hs24
-rw-r--r--src/XMonad/Custom/Log.hs4
-rw-r--r--src/XMonad/Custom/Prompt.hs18
-rw-r--r--src/XMonad/Custom/Scratchpads.hs4
-rw-r--r--src/XMonad/Custom/Startup.hs4
-rw-r--r--src/XMonad/Util/ALSA.hs12
-rw-r--r--stack.yaml2
-rwxr-xr-xtest/xmonad-ng-xephyr.sh102
-rw-r--r--xmobarrc/bot.hs (renamed from misc/xmobarrcBot.hs)9
-rw-r--r--xmobarrc/top.hs (renamed from misc/xmobarrcTop.hs)3
-rw-r--r--xmonad-ng.cabal71
26 files changed, 175 insertions, 131 deletions
diff --git a/.gitignore b/.gitignore
index b9df080..f11ea6a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
 .stack-work/
 cabal.sandbox.config
 dist/
+prompt-history
diff --git a/misc/bin/mpc-play-pause.sh b/scripts/mpc-play-pause.sh
index 3fb4f3b..3fb4f3b 100755
--- a/misc/bin/mpc-play-pause.sh
+++ b/scripts/mpc-play-pause.sh
diff --git a/misc/bin/nsp-console.sh b/scripts/nsp-console.sh
index 5d19f46..5d19f46 100755
--- a/misc/bin/nsp-console.sh
+++ b/scripts/nsp-console.sh
diff --git a/misc/bin/screenlock.sh b/scripts/screenlock.sh
index 28dbe0c..28dbe0c 100755
--- a/misc/bin/screenlock.sh
+++ b/scripts/screenlock.sh
diff --git a/misc/bin/toggle-compton.sh b/scripts/toggle-compton.sh
index 91ebc4d..91ebc4d 100755
--- a/misc/bin/toggle-compton.sh
+++ b/scripts/toggle-compton.sh
diff --git a/misc/bin/toggle-redshift.sh b/scripts/toggle-redshift.sh
index 8ba6b60..8ba6b60 100755
--- a/misc/bin/toggle-redshift.sh
+++ b/scripts/toggle-redshift.sh
diff --git a/misc/bin/toggle-touchpad.sh b/scripts/toggle-touchpad.sh
index 5a30528..5a30528 100755
--- a/misc/bin/toggle-touchpad.sh
+++ b/scripts/toggle-touchpad.sh
diff --git a/misc/bin/toggle-trackpoint.sh b/scripts/toggle-trackpoint.sh
index b0b3501..b0b3501 100755
--- a/misc/bin/toggle-trackpoint.sh
+++ b/scripts/toggle-trackpoint.sh
diff --git a/misc/bin/xmobar/fcitx.sh b/scripts/xmobar/fcitx.sh
index ddf1826..ddf1826 100755
--- a/misc/bin/xmobar/fcitx.sh
+++ b/scripts/xmobar/fcitx.sh
diff --git a/misc/bin/xshot-select-upload.sh b/scripts/xshot-select-upload.sh
index e846800..e846800 100755
--- a/misc/bin/xshot-select-upload.sh
+++ b/scripts/xshot-select-upload.sh
diff --git a/misc/bin/xshot-select.sh b/scripts/xshot-select.sh
index 53ad782..53ad782 100755
--- a/misc/bin/xshot-select.sh
+++ b/scripts/xshot-select.sh
diff --git a/misc/bin/xshot-upload.sh b/scripts/xshot-upload.sh
index 91c23f4..91c23f4 100755
--- a/misc/bin/xshot-upload.sh
+++ b/scripts/xshot-upload.sh
diff --git a/misc/bin/xshot.sh b/scripts/xshot.sh
index d7984e3..d7984e3 100755
--- a/misc/bin/xshot.sh
+++ b/scripts/xshot.sh
diff --git a/src/Test.hs b/src/Test.hs
deleted file mode 100644
index eea5d61..0000000
--- a/src/Test.hs
+++ /dev/null
@@ -1,50 +0,0 @@
-module Main where
-
-import Control.Monad (void)
-import qualified Data.Map as M
-import qualified Data.Set as S
-import XMonad
-import XMonad.Prompt
-import XMonad.StackSet (new)
-import XMonad.Util.EZConfig (checkKeymap)
-import XMonad.Util.Font
-import XMonad.Custom.Bindings (rawKeys)
-import XMonad.Custom.Theme (promptTheme)
-
-main :: IO ()
-main = do
-    dpy   <- openDisplay ""
-    rootw <- rootWindow dpy $ defaultScreen dpy
-
-    let xmc = def {layoutHook = Layout $ layoutHook def}
-        initialWinset = new (layoutHook xmc) (workspaces xmc) []
-
-    let cf = XConf { display       = dpy
-                   , config        = xmc
-                   , theRoot       = rootw
-                   , normalBorder  = 0
-                   , focusedBorder = 0
-                   , keyActions    = M.empty
-                   , buttonActions = M.empty
-                   , mouseFocused  = False
-                   , mousePosition = Nothing
-                   , currentEvent  = Nothing
-                   }
-
-    let st = XState { windowset       = initialWinset
-                    , numberlockMask  = 0
-                    , mapped          = S.empty
-                    , waitingUnmap    = M.empty
-                    , dragging        = Nothing
-                    , extensibleState = M.empty
-                    }
-
-    void $ runX cf st $ do
-        checkKeymap xmc (rawKeys xmc)
-
-        xmf <- initXMF (font promptTheme)
-
-        case xmf of
-            Core _ -> io (putStrLn "Font: core")
-            Utf8 _ -> io (putStrLn "Font: utf8")
-            Xft  _ -> io (putStrLn "Font: xft")
diff --git a/src/XMonad/Actions/FloatSnapSpaced.hs b/src/XMonad/Actions/FloatSnapSpaced.hs
index 5b5d572..a579376 100644
--- a/src/XMonad/Actions/FloatSnapSpaced.hs
+++ b/src/XMonad/Actions/FloatSnapSpaced.hs
@@ -1,7 +1,7 @@
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  XMonad.Actions.FloatSnapSpaced
--- Copyright   :  (c) azahi 2018
+-- Copyright   :  (c) 2009 Anders Engstrom <ankaan@gmail.com>
 -- License     :  BSD3-style (see LICENSE)
 --
 -- Maintainer  :  azahi@teknik.io
diff --git a/src/XMonad/Custom/Bindings.hs b/src/XMonad/Custom/Bindings.hs
index 7504526..b31599a 100644
--- a/src/XMonad/Custom/Bindings.hs
+++ b/src/XMonad/Custom/Bindings.hs
@@ -50,7 +50,6 @@ import           XMonad.Layout.Reflect
 import           XMonad.Layout.ResizableTile
 import           XMonad.Layout.SubLayouts
 import           XMonad.Prompt.ConfirmPrompt
-import           XMonad.Prompt.Pass
 import           XMonad.Prompt.Shell
 import           XMonad.Prompt.Window
 import           XMonad.Prompt.Workspace
@@ -133,17 +132,17 @@ keysBase _ =
 keysSystem :: XConfig Layout -> [(String, X ())]
 keysSystem _ =
     [ ("M-C-g"             , return ())
-    , ("<XF86ScreenSaver>" , spawn "~/.xmonad/bin/screenlock.sh")
+    , ("<XF86ScreenSaver>" , spawn "~/.xmonad/scripts/screenlock.sh")
     -- , ("M-S-c"             , xSelectionNotify)
-    , ("M-<Print>"         , spawn "~/.xmonad/bin/xshot-upload.sh")
-    , ("M-S-<Print>"       , spawn "~/.xmonad/bin/xshot-select-upload.sh")
-    , ("M-<Insert>"        , spawn "~/.xmonad/bin/xcast.sh --webm")
-    , ("M-S-<Insert>"      , spawn "~/.xmonad/bin/xcast.sh --gif")
+    , ("M-<Print>"         , spawn "~/.xmonad/scripts/xshot-upload.sh")
+    , ("M-S-<Print>"       , spawn "~/.xmonad/scripts/xshot-select-upload.sh")
+    , ("M-<Insert>"        , spawn "~/.xmonad/scripts/xcast.sh --webm")
+    , ("M-S-<Insert>"      , spawn "~/.xmonad/scripts/xcast.sh --gif")
     , ("M-C-<Insert>"      , spawn "pkill ffmpeg")
-    , ("M-C-c"             , spawn "~/.xmonad/bin/toggle-compton.sh")
-    , ("M-C-r"             , spawn "~/.xmonad/bin/toggle-redshift.sh")
-    , ("M-C-p"             , spawn "~/.xmonad/bin/toggle-touchpad.sh")
-    , ("M-C-t"             , spawn "~/.xmonad/bin/toggle-trackpoint.sh")
+    , ("M-C-c"             , spawn "~/.xmonad/scripts/toggle-compton.sh")
+    , ("M-C-r"             , spawn "~/.xmonad/scripts/toggle-redshift.sh")
+    , ("M-C-p"             , spawn "~/.xmonad/scripts/toggle-touchpad.sh")
+    , ("M-C-t"             , spawn "~/.xmonad/scripts/toggle-trackpoint.sh")
     ]
 
 keysMedia :: XConfig Layout -> [(String, X ())]
@@ -151,7 +150,7 @@ keysMedia _ =
     [ ("<XF86AudioMute>"        , void   toggleMute)
     , ("<XF86AudioLowerVolume>" , void $ lowerVolume 5)
     , ("<XF86AudioRaiseVolume>" , void $ raiseVolume 5)
-    , ("<XF86AudioPlay>"        , spawn "~/.xmonad/bin/mpc-play-pause.sh")
+    , ("<XF86AudioPlay>"        , spawn "~/.xmonad/scripts/mpc-play-pause.sh")
     , ("<XF86AudioStop>"        , spawn "mpc --no-status stop")
     , ("<XF86AudioPrev>"        , spawn "mpc --no-status prev")
     , ("<XF86AudioNext>"        , spawn "mpc --no-status next")
@@ -159,7 +158,7 @@ keysMedia _ =
 
 keysWorkspaces :: XConfig Layout -> [(String, X ())]
 keysWorkspaces _ =
-    [ ("M-p"   , switchProjectPrompt  promptTheme)
+    [ ("M-S-o" , switchProjectPrompt  promptTheme)
     , ("M-S-p" , shiftToProjectPrompt promptTheme)
     , ("M-,"   , nextNonEmptyWS)
     , ("M-."   , prevNonEmptyWS)
@@ -174,7 +173,6 @@ keysSpawnables :: XConfig Layout -> [(String, X ())]
 keysSpawnables _ =
     [ ("M-<Return>" , spawn (C.term C.applications))
     , ("M-b"        , spawn (C.browser C.applications))
-    , ("M-C-p"      , passPrompt promptTheme)
     , ("M-c"        , namedScratchpadAction scratchpads "console")
     , ("M-m"        , namedScratchpadAction scratchpads "music")
     , ("M-t"        , namedScratchpadAction scratchpads "top")
diff --git a/src/XMonad/Custom/Log.hs b/src/XMonad/Custom/Log.hs
index 461634e..e441a02 100644
--- a/src/XMonad/Custom/Log.hs
+++ b/src/XMonad/Custom/Log.hs
@@ -44,9 +44,7 @@ topBarPP = def
     , ppWsSep           = " "
     , ppTitle           = xmobarColor white1 "" . shorten 50
     , ppTitleSanitize   = xmobarStrip
-    , ppLayout          = xmobarColor white1 "" . \case "Spacing 12 Tabbed Hidden BSP" -> "Omni.Gaps"
-                                                        "Tabbed Hidden BSP"            -> "Omni"
-                                                        _                              -> "Misc"
+    , ppLayout          = xmobarColor white1 ""
     , ppOrder           = id
     , ppSort            = (namedScratchpadFilterOutWorkspace .) <$> getSortByIndex
     , ppExtras          = []
diff --git a/src/XMonad/Custom/Prompt.hs b/src/XMonad/Custom/Prompt.hs
new file mode 100644
index 0000000..15aab2c
--- /dev/null
+++ b/src/XMonad/Custom/Prompt.hs
@@ -0,0 +1,18 @@
+module XMonad.Custom.Prompt
+    ( listCompFunc
+    , aListCompFunc
+    , predicateFunction
+    ) where
+
+import           Data.Char
+import           Data.List
+import           XMonad.Prompt
+
+listCompFunc :: XPConfig -> [String] -> String -> IO [String]
+listCompFunc c xs s = return (filter (searchPredicate c s) xs)
+
+aListCompFunc :: XPConfig -> [(String, a)] -> String -> IO [String]
+aListCompFunc c xs = listCompFunc c (map fst xs)
+
+predicateFunction :: String -> String -> Bool
+predicateFunction x y = lc x `isInfixOf` lc y where lc = map toLower
diff --git a/src/XMonad/Custom/Scratchpads.hs b/src/XMonad/Custom/Scratchpads.hs
index 98ddaf5..d463b87 100644
--- a/src/XMonad/Custom/Scratchpads.hs
+++ b/src/XMonad/Custom/Scratchpads.hs
@@ -34,7 +34,7 @@ floatingNSP = customFloating $ S.RationalRect x y w h
 scratchpads :: [NamedScratchpad]
 scratchpads =
     [ NS "console"
-      (spawnTerminalWith "NSPConsole" "~/.xmonad/bin/nsp-console.sh")
+      (spawnTerminalWith "NSPConsole" "~/.xmonad/scripts/nsp-console.sh")
       (title =? "NSPConsole")
       floatingNSP
     , NS "volume"
@@ -42,7 +42,7 @@ scratchpads =
       (title =? "NSPVolume")
       floatingNSP
     , NS "music"
-      (spawnTerminalWith "NSPMusic" "~/.bin/mp")
+      (spawnTerminalWith "NSPMusic" "mp")
       (title =? "NSPMusic")
       floatingNSP
     , NS "top"
diff --git a/src/XMonad/Custom/Startup.hs b/src/XMonad/Custom/Startup.hs
index 3738f6a..6050dff 100644
--- a/src/XMonad/Custom/Startup.hs
+++ b/src/XMonad/Custom/Startup.hs
@@ -51,8 +51,8 @@ addEWMHFullscreen = do
 
 startupHook :: X ()
 startupHook = do
-    spawnNamedPipe "xmobar ~/.xmonad/xmobarrcTop.hs" "xmobarTop"
-    spawnNamedPipe "xmobar ~/.xmonad/xmobarrcBot.hs" "xmobarBot"
+    spawnNamedPipe "xmobar ~/.xmonad/xmobarrc/top.hs" "xmobarTop"
+    spawnNamedPipe "xmobar ~/.xmonad/xmobarrc/bot.hs" "xmobarBot"
     docksStartupHook
     addEWMHFullscreen
     setDefaultCursor xC_left_ptr
diff --git a/src/XMonad/Util/ALSA.hs b/src/XMonad/Util/ALSA.hs
index 3e543df..0bccfd8 100644
--- a/src/XMonad/Util/ALSA.hs
+++ b/src/XMonad/Util/ALSA.hs
@@ -1,5 +1,17 @@
 {-# LANGUAGE CPP #-}
 
+----------------------------------------------------------------------------
+-- |
+-- Module       : XMonad.Util.ALSA
+-- Copyright    : (c) daniel@wagner-home.com
+-- License      : BSD3-style (see LICENSE)
+--
+-- Maintainer   : azahi@teknik.io
+-- Stability    : unstable
+-- Portability  : unportable
+--
+----------------------------------------------------------------------------
+
 module XMonad.Util.ALSA
     ( toggleMute
     , raiseVolume
diff --git a/stack.yaml b/stack.yaml
index ab9f566..0183c3c 100644
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,4 +1,4 @@
-resolver: lts-12.11
+resolver: lts-12.12
 packages:
     - .
     - ./vendor/xmonad
diff --git a/test/xmonad-ng-xephyr.sh b/test/xmonad-ng-xephyr.sh
new file mode 100755
index 0000000..37e0bab
--- /dev/null
+++ b/test/xmonad-ng-xephyr.sh
@@ -0,0 +1,102 @@
+#!/bin/sh -eu
+
+usage () {
+    cat << EOF
+Usage: xmonad-ng-xephyr.sh [options]
+
+  -d NxN  Set the screen size to NxN
+  -h      This message
+  -n NUM  Set the internal DISPLAY to NUM
+  -s NUM  Set the number of screens to NUM
+EOF
+}
+
+ARCH=$(uname -m)
+OS=$(uname -s | tr '[:upper:]' '[:lower:]')
+SCREENS=1
+SCREEN_SIZE="800x600"
+DISPLAY_NUMBER=5
+
+while getopts "d:hs:n:" o
+do
+    case "${o}" in
+        d)
+            SCREEN_SIZE=$OPTARG
+        ;;
+
+        h) usage
+            exit
+        ;;
+
+        n)
+            DISPLAY_NUMBER=$OPTARG
+        ;;
+
+        s)
+            SCREENS=$OPTARG
+        ;;
+
+        *)
+            echo
+            usage
+            exit 1
+        ;;
+    esac
+done
+
+shift $((OPTIND-1))
+
+################################################################################
+if [ -d .stack-work ]; then
+  echo "stack build detected"
+  options=""
+  [ "${NIX_PATH:-NO}" = "NO" ] || options="--nix"
+  BIN_PATH=$(stack path $options --dist-dir)/build/xmonad-ng
+elif [ -d dist ]; then
+  echo "cabal build detected"
+  BIN_PATH=$(find dist/ -type f -executable -name xmonad-ng -printf '%h')
+else
+  echo "you need to build xmonad-ng first, see README for instructions"
+  exit 1
+fi
+
+RAW_BIN=$BIN_PATH/xmonad-ng
+ARCH_BIN=$BIN_PATH/xmonad-ng-$ARCH-$OS
+
+################################################################################
+cp -p "$RAW_BIN" "$ARCH_BIN"
+
+################################################################################
+XMONAD_CONFIG_DIR=$(pwd)/state/config
+XMONAD_CACHE_DIR=$(pwd)/state/cache
+XMONAD_DATA_DIR=$(pwd)/state/data
+export XMONAD_CONFIG_DIR XMONAD_CACHE_DIR XMONAD_DATA_DIR
+
+mkdir -p "$XMONAD_CONFIG_DIR" "$XMONAD_CACHE_DIR" "$XMONAD_DATA_DIR"
+echo "xmonad will store state files in $(pwd)/state"
+
+################################################################################
+SCREEN_COUNTER=0
+SCREEN_OPTS=""
+X_OFFSET_CURRENT="0"
+X_OFFSET_ADD=$(echo "$SCREEN_SIZE" | cut -dx -f1)
+
+while expr "$SCREEN_COUNTER" "<" "$SCREENS"; do
+  SCREEN_OPTS="$SCREEN_OPTS -origin ${X_OFFSET_CURRENT},0 -screen ${SCREEN_SIZE}+${X_OFFSET_CURRENT}"
+  SCREEN_COUNTER=$(("$SCREEN_COUNTER" + 1))
+  X_OFFSET_CURRENT=$(("$X_OFFSET_CURRENT" + "$X_OFFSET_ADD"))
+done
+
+(
+  # shellcheck disable=SC2086
+  Xephyr $SCREEN_OPTS +xinerama +extension RANDR \
+         -ac -br -reset -terminate -verbosity 10 \
+         -softCursor ":$DISPLAY_NUMBER" &
+
+  export DISPLAY=":$DISPLAY_NUMBER"
+  echo "Waiting for windows to appear..." && sleep 2
+
+  xterm -hold xrandr &
+  xterm &
+  $ARCH_BIN
+)
diff --git a/misc/xmobarrcBot.hs b/xmobarrc/bot.hs
index c70689b..292fec8 100644
--- a/misc/xmobarrcBot.hs
+++ b/xmobarrc/bot.hs
@@ -11,6 +11,7 @@ Config { font = "xft:lucy tewi:style=Regular:pixelsize=11,Efont Biwidth:pixelsiz
                            , height = 24
                            }
        , textOffset = 16
+       , textOffsets = [16, -1]
        , iconOffset = -1
        , lowerOnStart = True
        , hideOnStart = False
@@ -32,11 +33,11 @@ Config { font = "xft:lucy tewi:style=Regular:pixelsize=11,Efont Biwidth:pixelsiz
                     , Run Memory [ "-t", "<fn=1>\57384</fn><usedratio>%" ] 10
                     , Run ThermalZone 0 ["-t","<fn=1>\57371</fn><temp>°C"] 10
                     , Run ThermalZone 1 ["-t","<temp>°C"] 10
-                    , Run Wireless "wlp3s0" [ "-t", "<fn=1>\57882</fn><essid> @ <quality>%" ] 10
+                    , Run Wireless "wlp3s0" [ "-t", "<fn=1>\57775</fn><essid> @ <quality>%" ] 10
                     , Run DynNetwork [ "-t", "<fn=1>\57660</fn><rx> / <fn=1>\57659</fn><tx> kbps" ] 10
-                    , Run Kbd [ ("us", "<fn=1>\57967</fn>English / <fn=1>\57898</fn>")
-                              , ("ru", "<fn=1>\57967</fn>Russian / <fn=1>\57898</fn>")]
-                    , Run Com "/home/free/.xmonad/bin/xmobar/fcitx.sh" [] "fcitx" 3
+                    , Run Kbd [ ("us", "English / ")
+                              , ("ru", "Russian / ")]
+                    , Run Com "/home/free/.xmonad/scripts/xmobar/fcitx.sh" [] "fcitx" 3
                     , Run Locks
                     , Run MPD [ "-t", "<fn=1><statei></fn><artist> - <title>"
                               , "--"
diff --git a/misc/xmobarrcTop.hs b/xmobarrc/top.hs
index 6764359..0f26e5c 100644
--- a/misc/xmobarrcTop.hs
+++ b/xmobarrc/top.hs
@@ -10,7 +10,8 @@ Config { font = "xft:lucy tewi:style=Regular:pixelsize=11,Efont Biwidth:pixelsiz
                            , width = 1600
                            , height = 24
                            }
-       , textOffset = 16
+       , textOffset = -1
+       , textOffsets = [-1, -1]
        , iconOffset = -1
        , lowerOnStart = True
        , hideOnStart = False
diff --git a/xmonad-ng.cabal b/xmonad-ng.cabal
index 112c369..1713214 100644
--- a/xmonad-ng.cabal
+++ b/xmonad-ng.cabal
@@ -17,7 +17,8 @@ source-repository head
     type:     git
     location: https://github.com/azahi/xmonad-ng
 
-library
+executable xmonad-ng
+    main-is:          Main.hs
     ghc-options:      -Wall
     hs-source-dirs:   src
     default-language: Haskell2010
@@ -27,58 +28,21 @@ library
                     , MultiParamTypeClasses
                     , TypeSynonymInstances
 
-    exposed-modules: XMonad.Actions.FloatSnapSpaced
-                   , XMonad.Actions.PerConditionKeys
-                   , XMonad.Custom.Bindings
-                   , XMonad.Custom.Event
-                   , XMonad.Custom.Layout
-                   , XMonad.Custom.Log
-                   , XMonad.Custom.Manage
-                   , XMonad.Custom.Misc
-                   , XMonad.Custom.Navigation
-                   , XMonad.Custom.Projects
-                   , XMonad.Custom.Scratchpads
-                   , XMonad.Custom.Startup
-                   , XMonad.Custom.Theme
-                   , XMonad.Custom.Workspaces
-                   , XMonad.Util.ALSA
-
-    build-depends: X11            >= 1.9  && < 1.10
-                 , alsa-mixer     >= 0.2  && < 0.3
-                 , base           >= 4.11 && < 4.12
-                 , containers     >= 0.5  && < 0.6
-                 , directory      >= 1.3  && < 1.4
-                 , filepath       >= 1.4  && < 1.5
-                 , mtl            >= 2.2  && < 2.3
-                 , text           >= 1.2  && < 1.3
-                 , time           >= 1.8  && < 1.9
-                 , xmonad         >= 0.15 && < 0.16
-                 , xmonad-contrib >= 0.15 && < 0.16
-
-executable xmonad-ng
-    main-is:          Main.hs
-    ghc-options:      -Wall
-    hs-source-dirs:   src
-    default-language: Haskell2010
-
-    build-depends: X11            >= 1.9  && < 1.10
-                 , alsa-mixer     >= 0.2  && < 0.3
-                 , base           >= 4.11 && < 4.12
-                 , containers     >= 0.5  && < 0.6
-                 , directory      >= 1.3  && < 1.4
-                 , filepath       >= 1.4  && < 1.5
-                 , mtl            >= 2.2  && < 2.3
-                 , text           >= 1.2  && < 1.3
-                 , time           >= 1.8  && < 1.9
-                 , xmonad         >= 0.15 && < 0.16
-                 , xmonad-contrib >= 0.15 && < 0.16
-                 , xmonad-ng
-
-executable xmonad-ng-test
-    main-is:          Test.hs
-    ghc-options:      -Wall
-    hs-source-dirs:   src
-    default-language: Haskell2010
+    other-modules: XMonad.Actions.FloatSnapSpaced
+                 , XMonad.Actions.PerConditionKeys
+                 , XMonad.Custom.Bindings
+                 , XMonad.Custom.Event
+                 , XMonad.Custom.Layout
+                 , XMonad.Custom.Log
+                 , XMonad.Custom.Manage
+                 , XMonad.Custom.Misc
+                 , XMonad.Custom.Navigation
+                 , XMonad.Custom.Projects
+                 , XMonad.Custom.Scratchpads
+                 , XMonad.Custom.Startup
+                 , XMonad.Custom.Theme
+                 , XMonad.Custom.Workspaces
+                 , XMonad.Util.ALSA
 
     build-depends: X11            >= 1.9  && < 1.10
                  , alsa-mixer     >= 0.2  && < 0.3
@@ -91,4 +55,3 @@ executable xmonad-ng-test
                  , time           >= 1.8  && < 1.9
                  , xmonad         >= 0.15 && < 0.16
                  , xmonad-contrib >= 0.15 && < 0.16
-                 , xmonad-ng

Consider giving Nix/NixOS a try! <3