aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsrdusr <trevorgray@srdusr.com>2024-10-16 19:01:01 +0200
committersrdusr <trevorgray@srdusr.com>2024-10-16 19:01:01 +0200
commitb20e4e004be74884cc72c57a3128e36fd5177d7a (patch)
tree2a0d1a286e1c48fb0fe1415260e5c816a09faeff
parent96d7a3c44d2c78db616b5c5e97bfdbc8f206e3a4 (diff)
downloaddotfiles-b20e4e004be74884cc72c57a3128e36fd5177d7a.tar.gz
dotfiles-b20e4e004be74884cc72c57a3128e36fd5177d7a.zip
Add session_manager.sh
-rwxr-xr-xsession_manager.sh72
1 files changed, 72 insertions, 0 deletions
diff --git a/session_manager.sh b/session_manager.sh
new file mode 100755
index 0000000..b6a6b03
--- /dev/null
+++ b/session_manager.sh
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+cd ~
+
+# Default session to be executed
+unset DISPLAY XAUTHORITY DBUS_SESSION_BUS_ADDRESS
+
+session=""
+
+# Function to display and start the selected session
+display() {
+ # Default list of sessions in priority order
+ default_sessions=("Hyprland" "bspwm" "sway")
+
+ # Check conditions and set session command
+ if [ "$DISPLAY" = "" ] && [ "$XDG_VTNR" -eq 1 ]; then
+ if [ -f ~/.session ]; then
+ session=$(cat ~/.session)
+ rm ~/.session # Remove the session file after reading
+ fi
+
+ if [ "$session" != "" ]; then
+ case "$session" in
+ bspwm )
+ export XDG_SESSION_TYPE="x11"
+ session="startx /usr/bin/bspwm"
+ ;;
+ Hyprland | sway)
+ session="dbus-launch --sh-syntax --exit-with-session $session"
+ ;;
+ *)
+ echo "Session $session is not supported."
+ session=""
+ ;;
+ esac
+ else
+ # Iterate through default sessions to find a suitable one
+ for wm in "${default_sessions[@]}"; do
+ if command -v "$wm" >/dev/null 2>&1; then
+ case "$wm" in
+ bspwm )
+ export XDG_SESSION_TYPE="x11"
+ session="startx /usr/bin/$wm"
+ break
+ ;;
+ Hyprland | sway)
+ session="dbus-launch --sh-syntax --exit-with-session $wm >/dev/null 2>&1 && exit"
+ #show_animation.sh
+ clear
+ break
+ ;;
+ esac
+ fi
+ done
+ fi
+
+ # Execute the session command if session is set
+ if [ "$session" != "" ]; then
+ #echo "Starting session: $session"
+ eval "$session"
+ else
+ echo "No suitable window manager found or conditions not met."
+ fi
+ fi
+}
+
+# Main function
+main() {
+ display
+}
+
+main "$@"