This repository has no description
1.7 kB
62 lines
1{ writeDashBin, writeHaskellPackage, coreutils, xorg, virtualgl, ... }:
2
3let
4
5 xephyrify-xmonad = writeHaskellPackage "xephyrify-xmonad" {
6 executables.xmonad = {
7 extra-depends = [
8 "containers"
9 "unix"
10 "xmonad"
11 ];
12 text = /* haskell */ ''
13 module Main where
14 import XMonad
15 import Data.Monoid
16 import System.Posix.Process (executeFile)
17 import qualified Data.Map as Map
18
19 main :: IO ()
20 main = do
21 xmonad def
22 { workspaces = [ "1" ]
23 , layoutHook = myLayoutHook
24 , keys = myKeys
25 , normalBorderColor = "#000000"
26 , focusedBorderColor = "#000000"
27 , handleEventHook = myEventHook
28 }
29
30 myEventHook :: Event -> X All
31
32 myEventHook (ConfigureEvent { ev_event_type = 22 }) = do
33 spawn "${xorg.xrandr}/bin/xrandr >/dev/null 2>&1"
34 return (All True)
35
36 myEventHook _ = do
37 return (All True)
38
39 myLayoutHook = Full
40 myKeys _ = Map.fromList []
41 '';
42 };
43 };
44
45in writeDashBin "xephyrify" ''
46 NDISPLAY=''${NDISPLAY:-$(${coreutils}/bin/shuf -i 100-65536 -n 1)}
47 echo "using DISPLAY $NDISPLAY"
48 ${xorg.xorgserver}/bin/Xephyr -br -ac -reset -terminate -resizeable -dpi 60 -nolisten local :$NDISPLAY &
49 if test -n $DROP_TO_USER; then
50 sleep 1
51 ls /tmp/.X11-unix/
52 id
53 ${coreutils}/bin/chgrp "$DROP_TO_USER" "/tmp/.X11-unix/X$NDISPLAY"
54 ${coreutils}/bin/chmod 770 "/tmp/.X11-unix/X$NDISPLAY"
55 fi
56 XEPHYR_PID=$!
57 DISPLAY=:$NDISPLAY ${xephyrify-xmonad}/bin/xmonad &
58 XMONAD_PID=$!
59 DISPLAY=:$NDISPLAY ${virtualgl}/bin/vglrun "$@"
60 kill $XMONAD_PID
61 kill $XEPHYR_PID
62''