From 553cb2204b0bf27afe13c6332f5679bbd47172a0 Mon Sep 17 00:00:00 2001 From: srdusr Date: Wed, 24 Sep 2025 05:01:20 +0200 Subject: Update/Overhaul --- unix/sys/session_manager.sh | 72 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100755 unix/sys/session_manager.sh (limited to 'unix/sys/session_manager.sh') diff --git a/unix/sys/session_manager.sh b/unix/sys/session_manager.sh new file mode 100755 index 0000000..b6a6b03 --- /dev/null +++ b/unix/sys/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 "$@" -- cgit v1.2.3