summaryrefslogtreecommitdiffstats
path: root/pkgs/haskell/xmonad-tv
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2025-10-09 01:51:46 +0200
committertv <tv@krebsco.de>2025-10-09 01:51:46 +0200
commitda6508cb5fba80d97110c705a7c496b6e76c4776 (patch)
tree9eabce39ee74d59aa29456be1afecd3e9f28d110 /pkgs/haskell/xmonad-tv
parentd7b28125dac83c5f4150a1a07a7307a41c5fa7d7 (diff)
xmonad-tv: run alacritty in dedicated slice
Diffstat (limited to 'pkgs/haskell/xmonad-tv')
-rw-r--r--pkgs/haskell/xmonad-tv/src/main.hs23
1 files changed, 21 insertions, 2 deletions
diff --git a/pkgs/haskell/xmonad-tv/src/main.hs b/pkgs/haskell/xmonad-tv/src/main.hs
index 889038b..a747a04 100644
--- a/pkgs/haskell/xmonad-tv/src/main.hs
+++ b/pkgs/haskell/xmonad-tv/src/main.hs
@@ -45,6 +45,11 @@ import XMonad.Hooks.Place (placeHook, smart)
import XMonad.Actions.PerWorkspaceKeys (chooseAction)
import Shutdown (shutdown, newShutdownEventHandler)
+import System.IO.Unsafe (unsafePerformIO)
+
+
+sliceEnvPath :: FilePath
+sliceEnvPath = unsafePerformIO (getEnv "XMONAD_CACHE_DIR") <> "/slice.env"
main :: IO ()
@@ -71,6 +76,7 @@ readEnv' defaultValue name =
mainNoArgs :: IO ()
mainNoArgs = do
+ getEnvironment >>= \env -> writeFile sliceEnvPath $ unlines [ k <> "=" <> v | (k, v) <- env]
myMasterDelta <- readEnv' (1 / 20) "XMONAD_MASTER_DELTA" :: IO Rational
myMasterWidth <- readEnv' (1 / 2) "XMONAD_MASTER_WIDTH" :: IO Rational
myScreenGaps <- readEnv' [] "XMONAD_SCREEN_GAPS" :: IO [Int]
@@ -140,6 +146,19 @@ forkFile path args env = void . xfork $ do
executeFile path True args (env <> Just environment)
+forkFileInSlice :: String -> FilePath -> [String] -> X ()
+forkFileInSlice sliceName path args = void . xfork $
+ executeFile {-pkg:systemd-}"systemd-run" True
+ ( "--collect"
+ : "--user"
+ : "--slice=" <> sliceName
+ : "--property=EnvironmentFile=" <> sliceEnvPath
+ : path
+ : args
+ )
+ Nothing
+
+
myKeys :: XConfig Layout -> Map (KeyMask, KeySym) (X ())
myKeys conf = Map.fromList $
[ ((_4 , xK_Escape ), forkFile {-pkg-}"slock" [] Nothing)
@@ -150,8 +169,8 @@ myKeys conf = Map.fromList $
, ((_4 , xK_p ), forkFile {-pkg:fzmenu-}"passmenu" [] Nothing)
, ((_4C , xK_p ), forkFile {-pkg:fzmenu-}"passmenu" ["--phase2-method=copy"] Nothing)
- , ((_4 , xK_x ), forkFile {-pkg:alacritty-tv-}"alacritty" ["--dtach", "--singleton"] Nothing)
- , ((_4C , xK_x ), forkFile {-pkg:alacritty-tv-}"alacritty" ["--profile=root", "-e", "/run/wrappers/bin/su", "-"] Nothing)
+ , ((_4 , xK_x ), forkFileInSlice "alacritty" {-pkg:alacritty-tv-}"alacritty" ["--dtach", "--singleton"])
+ , ((_4C , xK_x ), forkFileInSlice "alacritty" {-pkg:alacritty-tv-}"alacritty" ["--profile=root", "-e", "/run/wrappers/bin/su", "-"])
, ((_C , xK_Menu ), toggleWS)