diff options
Diffstat (limited to 'common/.profile')
| -rw-r--r-- | common/.profile | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/common/.profile b/common/.profile new file mode 100644 index 0000000..b847d6c --- /dev/null +++ b/common/.profile @@ -0,0 +1,102 @@ +#!/bin/bash + +#~/.profile + +# ====================================== +# Basic environment setup +# ====================================== + +export EDITOR="$(command -v nvim || command -v vim || echo nano)" + +# Load zsh env if running zsh +if [ -n "$ZSH_VERSION" ] && [ -f "$HOME/.config/zsh/.zshenv" ]; then + . "$HOME/.config/zsh/.zshenv" +fi + +cd "$HOME" || exit 1 + +# ====================================== +# Session launcher +# ====================================== + +# Detect graphical DE session +if [ -n "$DISPLAY" ]; then + #echo "Graphical session detected ($XDG_SESSION_DESKTOP). Skipping auto TTY session launch." + return +fi + +# Only run on first virtual terminal +if [ -z "$XDG_VTNR" ] || [ "$XDG_VTNR" -ne 1 ]; then + return +fi + +# Clean environment +unset DISPLAY XAUTHORITY DBUS_SESSION_BUS_ADDRESS + +# Priority-ordered list of sessions (WM/DE) +sessions=( + "Hyprland" + "bspwm" + "sway" + "gnome-session" + "startplasma-x11" + "startxfce4" + "openbox" + "i3" +) + +# Handle saved session +if [ -f "$HOME/.session" ]; then + chosen_session=$(<"$HOME/.session") + rm -f "$HOME/.session" +fi + +# Start a session +start_session() { + local s="$1" + case "$s" in + bspwm) + export XDG_SESSION_TYPE="x11" + exec startx /usr/bin/bspwm + ;; + Hyprland|sway) + #exec dbus-launch --sh-syntax --exit-with-session "$s" + exec dbus-launch --sh-syntax --exit-with-session "$s" >/dev/null 2>&1 + ;; + gnome-session|startplasma-x11|startxfce4|openbox|i3) + exec "$s" + ;; + *) + return 1 + ;; + esac +} + +# Try saved session first +if [ -n "$chosen_session" ]; then + if start_session "$chosen_session"; then + exit + else + echo "Saved session '$chosen_session' not found. Falling back..." + fi +fi + +# Try default sessions in priority +for wm in "${sessions[@]}"; do + if command -v "$wm" >/dev/null 2>&1; then + echo "Starting session: $wm" + start_session "$wm" + exit + fi +done + +# Fallback: Check for common display managers (GDM/LightDM/SDDM) +for dm in gdm lightdm sddm; do + if command -v "$dm" >/dev/null 2>&1; then + echo "Launching display manager: $dm" + exec "$dm" + fi +done + +echo "No suitable window manager or display manager found." +exit 1 |
