#!/usr/bin/env bash
set -e
CHOICE="${1:-}"
case "$CHOICE" in
gdm)
systemctl disable sddm || true
systemctl enable gdm --force
;;
sddm)
systemctl disable gdm || true
systemctl enable sddm --force
;;
*)
echo "Invalid choice: $CHOICE" >&2
exit 1
;;
esac
#!/usr/bin/env bash
set -u
for cmd in zenity pkexec; do
if ! command -v "$cmd" >/dev/null 2>&1; then
zenity --error --title="오류" --text="'$cmd' 명령을 찾을 수 없습니다."
exit 1
fi
done
get_current_dm() {
local target
target=$(readlink -f /etc/systemd/system/display-manager.service 2>/dev/null || true)
case "$target" in
*gdm.service) echo "gdm" ;;
*sddm.service) echo "sddm" ;;
*) echo "unknown" ;;
esac
}
CURRENT_DM=$(get_current_dm)
GDM_SELECTED="FALSE"
SDDM_SELECTED="FALSE"
case "$CURRENT_DM" in
gdm) GDM_SELECTED="TRUE" ;;
sddm) SDDM_SELECTED="TRUE" ;;
*) GDM_SELECTED="TRUE" ;;
esac
CHOICE=$(
zenity --list \
--radiolist \
--title="디스플레이 매니저 선택" \
--text="다음 부팅 때 사용할 디스플레이 매니저를 선택하세요." \
--width=420 \
--height=250 \
--column="선택" \
--column="디스플레이 매니저" \
"$GDM_SELECTED" "gdm" \
"$SDDM_SELECTED" "sddm"
)
if [ $? -ne 0 ] || [ -z "${CHOICE:-}" ]; then
zenity --info --title="취소됨" --text="변경이 취소되었습니다."
exit 0
fi
if pkexec ./set-display-manager.sh "$CHOICE"; then
zenity --info \
--title="적용 예약 완료" \
--text="'$CHOICE'가 다음 부팅 때 적용되도록 설정했습니다.\n\n변경 사항은 재부팅 후 적용됩니다."
else
zenity --error \
--title="오류" \
--text="설정 변경에 실패했습니다."
exit 1
fi