From 0557d67d9e3e1e71b5abdc09c4181ee277aec698 Mon Sep 17 00:00:00 2001 From: ndwarshuis Date: Sun, 24 Jul 2022 13:28:33 -0400 Subject: [PATCH] FIX make xdg directories if they don't exist already (prompt needs this) --- bin/xmonad.hs | 17 ++++++++++++++++- my-xmonad.cabal | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/bin/xmonad.hs b/bin/xmonad.hs index 4e41d84..fe3f0f0 100644 --- a/bin/xmonad.hs +++ b/bin/xmonad.hs @@ -20,8 +20,10 @@ import Graphics.X11.Types import Graphics.X11.Xlib.Atom import Graphics.X11.Xlib.Extras +import System.Directory import System.Environment import System.IO +import System.IO.Error import System.Process import XMonad @@ -75,11 +77,24 @@ run :: IO () run = do db <- connectDBusX conf <- withCache $ evalConf db - ds <- getDirectories + ds <- getCreateDirectories -- IDK why this is necessary; nothing prior to this will print if missing hFlush stdout launch conf ds +getCreateDirectories :: IO Directories +getCreateDirectories = do + ds <- getDirectories + mapM_ (createIfMissing ds) [dataDir, cfgDir, cacheDir] + return ds + where + createIfMissing ds f = do + let d = f ds + r <- tryIOError $ createDirectoryIfMissing True d + case r of + (Left e) -> print e + _ -> return () + data FeatureSet = FeatureSet { fsKeys :: ThreadState -> DBusState -> [KeyGroup FeatureX] , fsDBusExporters :: [Maybe SesClient -> SometimesIO] diff --git a/my-xmonad.cabal b/my-xmonad.cabal index fad387b..fdd7c20 100644 --- a/my-xmonad.cabal +++ b/my-xmonad.cabal @@ -71,6 +71,7 @@ executable xmonad , xmonad >= 0.13 , xmonad-contrib >= 0.13 , lifted-base >= 0.2.3.12 + , directory >= 1.3.3.0 default-language: Haskell2010 ghc-options: -Wall -Werror -Wpartial-fields -fno-warn-missing-signatures -threaded