xmonad-config/lib/XMonad/Internal/Shell.hs

55 lines
1.3 KiB
Haskell
Raw Normal View History

2020-04-01 22:06:00 -04:00
--------------------------------------------------------------------------------
-- | Functions for formatting and spawning shell commands
2020-04-01 20:17:47 -04:00
module XMonad.Internal.Shell
( fmtCmd
, spawnCmd
2020-05-31 20:56:57 -04:00
, spawnSound
2020-04-01 20:17:47 -04:00
, (#!&&)
, (#!||)
, (#!>>)
) where
2020-03-18 12:17:39 -04:00
2020-05-31 20:56:57 -04:00
import System.FilePath.Posix
import XMonad.Core (X, getXMonadDir)
import XMonad.Internal.Process
2020-03-28 18:38:38 -04:00
2020-04-01 22:06:00 -04:00
--------------------------------------------------------------------------------
-- | Opening subshell
2020-03-18 12:17:39 -04:00
spawnCmd :: String -> [String] -> X ()
spawnCmd cmd args = spawn $ fmtCmd cmd args
2020-05-31 20:56:57 -04:00
--------------------------------------------------------------------------------
-- | Playing sound
soundDir :: FilePath
soundDir = "sound"
spawnSound :: FilePath -> X ()
spawnSound file = do
path <- (</> soundDir </> file) <$> getXMonadDir
spawnCmd "aplay" [path]
2020-04-01 22:06:00 -04:00
--------------------------------------------------------------------------------
-- | Formatting commands
fmtCmd :: String -> [String] -> String
fmtCmd cmd args = unwords $ cmd : args
2020-03-18 12:17:39 -04:00
(#!&&) :: String -> String -> String
cmdA #!&& cmdB = cmdA ++ " && " ++ cmdB
infixr 0 #!&&
(#!||) :: String -> String -> String
cmdA #!|| cmdB = cmdA ++ " || " ++ cmdB
infixr 0 #!||
(#!>>) :: String -> String -> String
cmdA #!>> cmdB = cmdA ++ "; " ++ cmdB
infixr 0 #!>>