aboutsummaryrefslogtreecommitdiff
path: root/common/.profile
blob: c63f761b7fc5975e7a4a4e31dbf70c75b8090502 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/bin/bash

# ======================================
# 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"
            ;;
        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