mirror of
https://github.com/kuhyx/testsAndMisc.git
synced 2026-07-04 15:23:03 +02:00
42 lines
1.4 KiB
Plaintext
42 lines
1.4 KiB
Plaintext
|
|
#!/bin/bash
|
||
|
|
# switch-wm — choose which window manager lightdm boots you into.
|
||
|
|
# Flips the autologin + default session between i3 and dwm in both lightdm
|
||
|
|
# config files (main lightdm.conf overrides the conf.d drop-in, so keep both in
|
||
|
|
# sync). Reboot or log out to apply.
|
||
|
|
# switch-wm show the current boot session
|
||
|
|
# switch-wm dwm boot into dwm next time
|
||
|
|
# switch-wm i3 boot into i3 next time
|
||
|
|
# Recovery: if a session misbehaves at boot, go to a TTY (Ctrl+Alt+F3),
|
||
|
|
# log in, run `switch-wm i3`, then `reboot`.
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
readonly CONFS=(
|
||
|
|
/etc/lightdm/lightdm.conf
|
||
|
|
/etc/lightdm/lightdm.conf.d/50-autologin.conf
|
||
|
|
)
|
||
|
|
|
||
|
|
show_current() {
|
||
|
|
grep -hE '^autologin-session=' /etc/lightdm/lightdm.conf 2>/dev/null \
|
||
|
|
| tail -1 | cut -d= -f2
|
||
|
|
}
|
||
|
|
|
||
|
|
target="${1:-}"
|
||
|
|
case "$target" in
|
||
|
|
"") echo "boot session: $(show_current)"; exit 0 ;;
|
||
|
|
i3|dwm) ;;
|
||
|
|
*) echo "Usage: $(basename "$0") {i3|dwm} (no arg = show current)" >&2; exit 1 ;;
|
||
|
|
esac
|
||
|
|
|
||
|
|
if [[ ! -f "/usr/share/xsessions/${target}.desktop" ]]; then
|
||
|
|
echo "Error: /usr/share/xsessions/${target}.desktop not found — is '${target}' installed?" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
for f in "${CONFS[@]}"; do
|
||
|
|
[[ -f "$f" ]] || continue
|
||
|
|
sudo sed -i -E \
|
||
|
|
"s/^(autologin-session=).*/\1${target}/; s/^(user-session=).*/\1${target}/" "$f"
|
||
|
|
done
|
||
|
|
|
||
|
|
echo "Boot session set to '${target}'. Reboot (or log out) to apply."
|