about summary refs log tree commit diff
path: root/test.sh
diff options
context:
space:
mode:
authorAzat Bahawi <azahi@teknik.io>2021-12-02 10:46:40 +0300
committerAzat Bahawi <azahi@teknik.io>2021-12-02 10:46:40 +0300
commit1be0f7aee9a571b4b0694136758df53b63c6f915 (patch)
tree3817e90e0b4cdf6b24d8e9faac7579fe620f0c6b /test.sh
parentUpdate HIE (diff)
Some stuff
Diffstat (limited to '')
-rwxr-xr-xtest.sh103
1 files changed, 103 insertions, 0 deletions
diff --git a/test.sh b/test.sh
new file mode 100755
index 0000000..fd86536
--- /dev/null
+++ b/test.sh
@@ -0,0 +1,103 @@
+#!/usr/bin/env bash
+
+################################################################################
+usage() {
+	cat <<EOF
+Usage: run-in-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 "hs:" 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-newstyle ]; then
+	echo "cabal build detected"
+	BIN_PATH=$(find dist-newstyle/ -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-$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
+
+	$ARCH_BIN
+)

Consider giving Nix/NixOS a try! <3