From faaddb6f526d090cd8cf151b9715c49cdd17994b Mon Sep 17 00:00:00 2001 From: "[yuri]" <[yuri.kuit@gmail.com]> Date: Wed, 19 Nov 2025 20:23:51 +0100 Subject: [PATCH] hyprland setup --- v2/arch-hyprland.sh | 100 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 1 deletion(-) diff --git a/v2/arch-hyprland.sh b/v2/arch-hyprland.sh index f1f641a..0861dfd 100755 --- a/v2/arch-hyprland.sh +++ b/v2/arch-hyprland.sh @@ -1 +1,99 @@ -#!/usr/bin/env bash +#!/bin/bash +set -euo pipefail + +########################## +# Color helpers (printf-safe, no tput) +########################## +RED="\033[0;31m" +GREEN="\033[0;32m" +YELLOW="\033[0;33m" +CYAN="\033[0;36m" +GRAY="\033[0;37m" +BOLD="\033[1m" +RESET="\033[0m" + +# Disable colors if output is not a terminal +if [ ! -t 1 ]; then + RED="" GREEN="" YELLOW="" CYAN="" GRAY="" BOLD="" RESET="" +fi + +say_red() { printf "\n"; printf "%b%s%b\n" "$RED" "$*" "$RESET"; } +say_green() { printf "\n"; printf "%b%s%b\n" "$GREEN" "$*" "$RESET"; } +say_yellow() { printf "\n"; printf "%b%s%b\n" "$YELLOW" "$*" "$RESET"; } +say_cyan() { printf "\n"; printf "%b%s%b\n" "$CYAN" "$*" "$RESET"; } +say_gray() { printf "\n"; printf "%b%s%b\n" "$GRAY" "$*" "$RESET"; } +say_bold() { printf "\n"; printf "%b%s%b\n" "$BOLD" "$*" "$RESET"; } + +########################## +# Use exported variables from main detection script +########################## +OS="${DETECTED_OS:-debian}" +DDE="${DETECTED_DE}" +DE="${SELECTED_DE:-none}" +TWM="${SELECTED_TWM:-none}" +INSTALL_LEVEL="${INSTALL_LEVEL:-minimal}" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +########################## +# Helper functions +########################## +install_packages() { sudo pacman -Sy; sudo pacman -S --noconfirm --needed "$@"; } +is_package_installed() { pacman -Qi "$@" &>/dev/null; } +remove_packages() { sudo pacman -Rs --noconfirm "$@"; } + +detect_de() { + if command -v xfce4-session >/dev/null 2>&1; then + echo "xfce" + else + echo "" + fi +} + +detect_display_manager() { + if [ -f /etc/X11/default-display-manager ]; then + basename "$(cat /etc/X11/default-display-manager)" + else + echo "" + fi +} + +enable_graphical_target() { + sudo systemctl enable sddm + sudo systemctl set-default graphical.target +} + +######################### +# Start installation +########################## +say_yellow "Starting hyprland setup..." + +CURRENT_DE="$(detect_de)" +CURRENT_DM="$(detect_display_manager)" + +if [[ -z "$CURRENT_DE" ]]; then + say_cyan -e "No Desktop Environment detected. Installing Hyprland (light setup with SDDM)..." + + install_packages sddm hyprland dunst grim kitty polkit-kde-agent qt5-wayland qt6-wayland slurp uwsm wofi xdg-desktop-portal-hyprland + enable_graphical_target + + say_green -e "Hyprland with SDDM installed successfully. You can reboot now to start Hyprland." +else + say_cyan -e "Detected existing Desktop Environment: $CURRENT_DE" + + if [[ "$CURRENT_DM" == "lightdm" ]]; then + say_yellow -e "LightDM is currently active. Replacing with SDDM..." + + sudo systemctl disable lightdm + sudo apt purge -y lightdm lightdm-gtk-greeter + + install_packages sddm + enable_graphical_target + + say_green -e "LightDM removed and replaced with SDDM." + else + say_cyan -e "Current display manager: ${CURRENT_DM:-none}. Leaving unchanged." + fi +fi + +# End of script +say_green -e "Hyprland / SDDM setup completed." \ No newline at end of file