ly instead of SDDM

This commit is contained in:
2026-02-22 22:17:36 +01:00
parent 9359884f8c
commit 3963c09a90
5 changed files with 512 additions and 345 deletions

294
build.sh
View File

@@ -10,10 +10,10 @@ MAGENTA="\033[1;35m"
CYAN="\033[1;36m"
RESET="\033[0m"
log_info() { printf "${CYAN}[*]${RESET} %s\n" "$1"; }
log_info() { printf "${CYAN}[*]${RESET} %s\n" "$1"; }
log_success() { printf "${GREEN}[✓]${RESET} %s\n" "$1"; }
log_warn() { printf "${YELLOW}[!]${RESET} %s\n" "$1"; }
log_error() { printf "${RED}[✗]${RESET} %s\n" "$1"; }
log_warn() { printf "${YELLOW}[!]${RESET} %s\n" "$1"; }
log_error() { printf "${RED}[✗]${RESET} %s\n" "$1"; }
ORIG_PWD=$(pwd)
ORIG_USER=$(logname)
@@ -21,7 +21,7 @@ ORIG_HOME=$(getent passwd "$ORIG_USER" | cut -d: -f6)
# === Elevate to root if needed ===
if [ "$(id -u)" -ne 0 ]; then
exec sudo "$0" "$@"
exec sudo "$0" "$@"
fi
# === Package Groups ===
@@ -39,7 +39,7 @@ SYSTEM_TOOLS="
"
DISPLAY_MANAGER="
sddm
ly
qt5-graphicaleffects
qt5ct
qt6ct
@@ -96,206 +96,180 @@ MEDIA_PACKAGES="
# === Functions ===
update_system() {
log_info "Updating system..."
pacman -Syu --noconfirm
log_info "Updating system..."
pacman -Syu --noconfirm
}
install_packages() {
log_info "Installing packages..."
pacman -Sy --noconfirm --needed \
$ESSENTIAL_PACKAGES \
$SYSTEM_TOOLS \
$DISPLAY_MANAGER \
$WAYLAND_ENVIRONMENT \
$AUDIO_PACKAGES \
$FONTS_AND_THEME \
$NETWORK_AND_APPS \
$MEDIA_PACKAGES
log_info "Installing packages..."
pacman -Sy --noconfirm --needed \
$ESSENTIAL_PACKAGES \
$SYSTEM_TOOLS \
$DISPLAY_MANAGER \
$WAYLAND_ENVIRONMENT \
$AUDIO_PACKAGES \
$FONTS_AND_THEME \
$NETWORK_AND_APPS \
$MEDIA_PACKAGES
}
install_nvidia_drivers() {
log_info "Checking for NVIDIA GPU..."
log_info "Checking for NVIDIA GPU..."
if lspci | grep -i 'vga\|3d' | grep -iq 'nvidia'; then
log_success "NVIDIA GPU detected."
if lspci | grep -i 'vga\|3d' | grep -iq 'nvidia'; then
log_success "NVIDIA GPU detected."
log_info "Installing NVIDIA drivers..."
pacman -Sy --noconfirm --needed nvidia-open nvidia-utils
log_info "Installing NVIDIA drivers..."
pacman -Sy --noconfirm --needed nvidia-open nvidia-utils
log_info "Running mkinitcpio..."
mkinitcpio -P
log_info "Running mkinitcpio..."
mkinitcpio -P
log_info "Enabling NVIDIA modeset..."
mkdir -p /etc/modprobe.d
echo "options nvidia_drm modeset=1" > /etc/modprobe.d/nvidia.conf
log_info "Enabling NVIDIA modeset..."
mkdir -p /etc/modprobe.d
echo "options nvidia_drm modeset=1" >/etc/modprobe.d/nvidia.conf
else
log_info "No NVIDIA GPU detected. Skipping NVIDIA driver installation."
fi
else
log_info "No NVIDIA GPU detected. Skipping NVIDIA driver installation."
fi
}
install_system_files() {
log_info "Installing system files from ./system_files to /..."
log_info "Installing system files from ./system_files to /..."
if [ -d "system_files" ]; then
cp -a ./system_files/. /
if [ -d "system_files" ]; then
cp -a ./system_files/. /
chown root:root /
chown root:root /etc
chown root:root /usr
chown root:root /var
chown root:root /run
chown root:root /
chown root:root /etc
chown root:root /usr
chown root:root /var
chown root:root /run
log_success "System files copied to root (/)."
else
log_warn "'system_files' directory not found."
fi
log_success "System files copied to root (/)."
else
log_warn "'system_files' directory not found."
fi
}
apply_gtk_settings() {
log_info "Applying GTK settings..."
export XDG_RUNTIME_DIR="/run/user/$(id -u "$ORIG_USER")"
DBUS_ADDR="unix:path=${XDG_RUNTIME_DIR}/bus"
log_info "Applying GTK settings..."
export XDG_RUNTIME_DIR="/run/user/$(id -u "$ORIG_USER")"
DBUS_ADDR="unix:path=${XDG_RUNTIME_DIR}/bus"
for setting in \
"org.gnome.desktop.interface gtk-theme Graphite-Dark-compact" \
"org.gnome.desktop.interface icon-theme Tela-grey-dark" \
"org.gnome.desktop.interface color-scheme prefer-dark"
do
if sudo -u "$ORIG_USER" \
DBUS_SESSION_BUS_ADDRESS="$DBUS_ADDR" \
gsettings set $setting; then
log_success "Set $setting"
else
log_warn "Failed to set $setting"
fi
done
for setting in \
"org.gnome.desktop.interface gtk-theme Graphite-Dark-compact" \
"org.gnome.desktop.interface icon-theme Tela-grey-dark" \
"org.gnome.desktop.interface color-scheme prefer-dark"; do
if sudo -u "$ORIG_USER" \
DBUS_SESSION_BUS_ADDRESS="$DBUS_ADDR" \
gsettings set $setting; then
log_success "Set $setting"
else
log_warn "Failed to set $setting"
fi
done
}
enable_sddm() {
log_info "Enabling SDDM..."
systemctl enable sddm
}
install_sddm_theme() {
log_info "Installing SDDM theme..."
if pacman -Q where-is-my-sddm-theme-git >/dev/null 2>&1; then
log_success "SDDM theme already installed."
return
fi
sudo -u "$ORIG_USER" mkdir -p "$ORIG_HOME/Repositories"
cd "$ORIG_HOME/Repositories" || return
if [ ! -d "where-is-my-sddm-theme" ]; then
sudo -u "$ORIG_USER" git clone https://aur.archlinux.org/where-is-my-sddm-theme-git.git where-is-my-sddm-theme
else
log_warn "Theme repo already exists, skipping clone."
fi
cd "$ORIG_HOME/Repositories/where-is-my-sddm-theme" || return
sudo -u "$ORIG_USER" makepkg -si --noconfirm
log_info "Cleaning up theme repository..."
rm -rf "$ORIG_HOME/Repositories/where-is-my-sddm-theme"
log_success "SDDM theme installed and repo removed."
enable_ly() {
log_info "Enabling Ly..."
systemctl enable ly@tty2.service
}
install_gtk_theme() {
log_info "Installing GTK theme..."
if [ -d "$ORIG_HOME/.themes/Graphite-Dark-compact" ]; then
log_success "GTK theme already installed."
return
fi
log_info "Installing GTK theme..."
sudo -u "$ORIG_USER" mkdir -p "$ORIG_HOME/Repositories"
cd "$ORIG_HOME/Repositories" || return
if [ -d "$ORIG_HOME/.themes/Graphite-Dark-compact" ]; then
log_success "GTK theme already installed."
return
fi
if [ ! -d "graphite-gtk" ]; then
sudo -u "$ORIG_USER" git clone https://github.com/vinceliuice/Graphite-gtk-theme.git graphite-gtk
else
log_warn "Theme repo already exists, skipping clone."
fi
sudo -u "$ORIG_USER" mkdir -p "$ORIG_HOME/Repositories"
cd "$ORIG_HOME/Repositories" || return
cd "$ORIG_HOME/Repositories/graphite-gtk" || return
sudo -u "$ORIG_USER" ./install.sh -c dark --tweaks rimless --size compact --round 0px
if [ ! -d "graphite-gtk" ]; then
sudo -u "$ORIG_USER" git clone https://github.com/vinceliuice/Graphite-gtk-theme.git graphite-gtk
else
log_warn "Theme repo already exists, skipping clone."
fi
log_info "Cleaning up theme repository..."
rm -rf "$ORIG_HOME/Repositories/graphite-gtk"
log_success "GTK theme installed and repo removed."
cd "$ORIG_HOME/Repositories/graphite-gtk" || return
sudo -u "$ORIG_USER" ./install.sh -c dark --tweaks rimless --size compact --round 0px
log_info "Cleaning up theme repository..."
rm -rf "$ORIG_HOME/Repositories/graphite-gtk"
log_success "GTK theme installed and repo removed."
}
install_gtk_icons() {
log_info "Installing Tela icons..."
if [ -d "$ORIG_HOME/.local/share/icons/Tela-grey-dark" ]; then
log_success "GTK theme already installed."
return
fi
log_info "Installing Tela icons..."
sudo -u "$ORIG_USER" mkdir -p "$ORIG_HOME/Repositories"
cd "$ORIG_HOME/Repositories" || return
if [ -d "$ORIG_HOME/.local/share/icons/Tela-grey-dark" ]; then
log_success "GTK theme already installed."
return
fi
if [ ! -d "tela-icons" ]; then
sudo -u "$ORIG_USER" git clone https://github.com/vinceliuice/Tela-icon-theme.git tela-icons
else
log_warn "Theme repo already exists, skipping clone."
fi
sudo -u "$ORIG_USER" mkdir -p "$ORIG_HOME/Repositories"
cd "$ORIG_HOME/Repositories" || return
cd "$ORIG_HOME/Repositories/tela-icons" || return
sudo -u "$ORIG_USER" ./install.sh -c grey
if [ ! -d "tela-icons" ]; then
sudo -u "$ORIG_USER" git clone https://github.com/vinceliuice/Tela-icon-theme.git tela-icons
else
log_warn "Theme repo already exists, skipping clone."
fi
log_info "Cleaning up icons repository..."
rm -rf "$ORIG_HOME/Repositories/tela-icons"
log_success "Tela icons installed and repo removed."
cd "$ORIG_HOME/Repositories/tela-icons" || return
sudo -u "$ORIG_USER" ./install.sh -c grey
log_info "Cleaning up icons repository..."
rm -rf "$ORIG_HOME/Repositories/tela-icons"
log_success "Tela icons installed and repo removed."
}
run_dotfiles_setup() {
log_info "Running dotfiles setup..."
cd "$ORIG_PWD"
log_info "Running dotfiles setup..."
cd "$ORIG_PWD"
sudo -u "$ORIG_USER" mkdir -p \
"$ORIG_HOME/Downloads" \
"$ORIG_HOME/Documents" \
"$ORIG_HOME/Pictures" \
"$ORIG_HOME/Videos" \
"$ORIG_HOME/Repositories"
sudo -u "$ORIG_USER" mkdir -p \
"$ORIG_HOME/Downloads" \
"$ORIG_HOME/Documents" \
"$ORIG_HOME/Pictures" \
"$ORIG_HOME/Videos" \
"$ORIG_HOME/Repositories"
if [ -d "home" ]; then
log_info "Copying files from ./home to $ORIG_HOME..."
if [ -d "home" ]; then
log_info "Copying files from ./home to $ORIG_HOME..."
cp -a ./home/. "$ORIG_HOME/"
cp -a ./home/. "$ORIG_HOME/"
chown -R "$ORIG_USER:$ORIG_USER" "$ORIG_HOME"
log_info "Select monitor configuration:"
echo "1) monitors-1.conf"
echo "2) monitors-2.conf"
printf "${MAGENTA}Enter your choice (1 or 2): ${RESET}"
read -r MONITOR_CHOICE
chown -R "$ORIG_USER:$ORIG_USER" "$ORIG_HOME"
MONITORS_DIR="$ORIG_HOME/.config/hypr"
case "$MONITOR_CHOICE" in
1)
cp "$MONITORS_DIR/monitors-1.conf" "$MONITORS_DIR/monitors.conf"
;;
2)
cp "$MONITORS_DIR/monitors-2.conf" "$MONITORS_DIR/monitors.conf"
;;
*)
log_warn "Invalid choice. Skipping monitor config setup."
;;
esac
log_info "Select monitor configuration:"
echo "1) monitors-1.conf"
echo "2) monitors-2.conf"
printf "${MAGENTA}Enter your choice (1 or 2): ${RESET}"
read -r MONITOR_CHOICE
chown "$ORIG_USER:$ORIG_USER" "$MONITORS_DIR/monitors.conf" 2>/dev/null || true
log_success "Monitor config set to monitors.conf"
MONITORS_DIR="$ORIG_HOME/.config/hypr"
case "$MONITOR_CHOICE" in
1)
cp "$MONITORS_DIR/monitors-1.conf" "$MONITORS_DIR/monitors.conf"
;;
2)
cp "$MONITORS_DIR/monitors-2.conf" "$MONITORS_DIR/monitors.conf"
;;
*)
log_warn "Invalid choice. Skipping monitor config setup."
;;
esac
log_success "Files copied to user home directory."
else
log_warn "'home' directory not found in script directory."
fi
chown "$ORIG_USER:$ORIG_USER" "$MONITORS_DIR/monitors.conf" 2>/dev/null || true
log_success "Monitor config set to monitors.conf"
log_success "Files copied to user home directory."
else
log_warn "'home' directory not found in script directory."
fi
}
# === Main flow ===
@@ -305,10 +279,8 @@ install_nvidia_drivers
install_gtk_theme
install_gtk_icons
apply_gtk_settings
install_sddm_theme
install_system_files
run_dotfiles_setup
enable_sddm
enable_ly
log_success "Setup completed successfully."