diff --git a/usr/bin/portprotonqt-session-select b/usr/bin/portprotonqt-session-select index e1838c9..8394c3f 100755 --- a/usr/bin/portprotonqt-session-select +++ b/usr/bin/portprotonqt-session-select @@ -69,17 +69,38 @@ if [[ -z $SENTINEL_CREATED ]]; then export SENTINEL_CREATED=1 fi -if [[ -f /usr/share/xsessions/plasmax11.desktop ]]; then - version=$(grep -E '^X-KDE-PluginInfo-Version=' /usr/share/xsessions/plasmax11.desktop | cut -d'=' -f2) - if [[ $version =~ ^6.* ]]; then - KDE6="true" +KDE6="" +HAS_KDE_X11="" +KDE_VERSION="" + +for file in \ + /usr/share/xsessions/plasmax11.desktop \ + /usr/share/wayland-sessions/plasma.desktop \ + /usr/share/wayland-sessions/plasmawayland.desktop \ + /usr/share/xsessions/plasmax.desktop; do + + if [[ -f "$file" ]]; then + version=$(grep -E '^X-KDE-PluginInfo-Version=' "$file" | cut -d'=' -f2) + if [[ -n "$version" ]]; then + KDE_VERSION="$version" + break + fi fi +done + +if [[ -n "$KDE_VERSION" && "${KDE_VERSION%%.*}" -ge 6 ]]; then + KDE6="true" +else + KDE6="" +fi + +if [[ -f /usr/share/xsessions/plasmax11.desktop ]]; then + HAS_KDE_X11="true" fi de_normalized="${DE,,}" # TODO: Check ALT Workstation session_launcher - case "$session" in desktop) if [[ "$SESSION_TYPE" == "wayland" ]]; then @@ -88,8 +109,11 @@ case "$session" in elif [[ "$de_normalized" == *gnome* ]]; then session_launcher="gnome-wayland" elif [[ "$de_normalized" == *kde* ]]; then - session_launcher="plasma" - [[ "$KDE6" != "true" ]] && session_launcher="plasmawayland" + if [[ "$KDE6" == "true" ]]; then + session_launcher="plasma" + else + session_launcher="plasmawayland" + fi elif [[ "$de_normalized" == *hyprland* ]]; then session_launcher="hyprland" elif [[ "$de_normalized" == *xfce* && "$de_normalized" != *unicorn* ]]; then @@ -101,8 +125,15 @@ case "$session" in elif [[ "$de_normalized" == *gnome* ]]; then session_launcher="gnome-xorg" elif [[ "$de_normalized" == *kde* ]]; then - session_launcher="plasmax11" - [[ "$KDE6" != "true" ]] && session_launcher="plasma" + if [[ "$KDE6" == "true" ]]; then + if [[ "$HAS_KDE_X11" == "true" ]]; then + session_launcher="plasmax11" + else + die "KDE6 detected, but plasmax11 (X11 session) not available" + fi + else + session_launcher="plasma" + fi elif [[ "$de_normalized" == *mate* ]]; then session_launcher="mate" elif [[ "$de_normalized" == *unicorn* ]]; then