diff options
| author | srdusr <trevorgray@srdusr.com> | 2024-10-16 19:01:01 +0200 |
|---|---|---|
| committer | srdusr <trevorgray@srdusr.com> | 2024-10-16 19:01:01 +0200 |
| commit | b20e4e004be74884cc72c57a3128e36fd5177d7a (patch) | |
| tree | 2a0d1a286e1c48fb0fe1415260e5c816a09faeff | |
| parent | 96d7a3c44d2c78db616b5c5e97bfdbc8f206e3a4 (diff) | |
| download | dotfiles-b20e4e004be74884cc72c57a3128e36fd5177d7a.tar.gz dotfiles-b20e4e004be74884cc72c57a3128e36fd5177d7a.zip | |
Add session_manager.sh
| -rwxr-xr-x | session_manager.sh | 72 |
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 "$@" |
