diff --git a/fedora/fedora-full.sh b/fedora/fedora-full.sh index 4da56d9..6fd549f 100755 --- a/fedora/fedora-full.sh +++ b/fedora/fedora-full.sh @@ -1,9 +1,9 @@ #!/bin/bash set -euo pipefail -########################## +#------------------------------------------ # Color helpers (printf-safe, no tput) -########################## +#------------------------------------------ RED="\033[0;31m" GREEN="\033[0;32m" YELLOW="\033[0;33m" @@ -17,16 +17,16 @@ 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"; } +color_yellow() { printf '%b' "$YELLOW"; } +color_cyan() { printf '%b' "$CYAN"; } +color_red() { printf '%b' "$RED"; } +color_green() { printf '%b' "$GREEN"; } +color_gray() { printf '%b' "$GRAY"; } +color_reset() { printf '%b' "$RESET"; } -########################## +#------------------------------------------ # Use exported variables from main detection script -########################## +#------------------------------------------ OS="${DETECTED_OS}" DDE="${DETECTED_DE:-}" DE="${SELECTED_DE:-none}" @@ -34,24 +34,26 @@ TWM="${SELECTED_TWM:-none}" INSTALL_LEVEL="${INSTALL_LEVEL:-minimal}" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -########################## +#------------------------------------------ # Helper functions -########################## +#------------------------------------------ install_packages() { sudo dnf install -y "$@"; } is_package_installed() { rpm -q "$@" &>/dev/null; } -say_yellow "Starting full setup..." +color_yellow "Starting full setup..." # Run minimal first bash "$SCRIPT_DIR/fedora-minimal.sh" # Add extra packages -install_packages arandr catfish galculator NetworkManager network-manager-applet NetworkManager-openvpn numlockx pipewire pipewire-alsa pipewire-pulse wireplumber pavucontrol playerctl gparted xfce4-pulseaudio-plugin xfce4-clipman-plugin +install_packages arandr catfish galculator NetworkManager network-manager-applet \ + NetworkManager-openvpn numlockx pipewire pipewire-alsa pipewire-pulse \ + wireplumber pavucontrol playerctl gparted xfce4-pulseaudio-plugin xfce4-clipman-plugin # temp disabled packages # xfce4-indicator-plugin # install SDDM-theme -say_yellow "Installing SDDM Theme" +color_yellow "Installing SDDM Theme" GIT_DIR="$HOME/git" REPO_DIR="$GIT_DIR/SilentSDDM" @@ -74,10 +76,10 @@ cd "$REPO_DIR" || { } # Ensure NetworkManager manages all interfaces -say_yellow "Ensuring NetworkManager service is enabled and running..." +color_yellow "Ensuring NetworkManager service is enabled and running..." sudo systemctl enable --now NetworkManager -say_yellow "Setting NetworkManager to globally manage all devices..." +color_yellow "Setting NetworkManager to globally manage all devices..." sudo tee /etc/NetworkManager/conf.d/10-globally-managed-devices.conf > /dev/null <<'EOF' [ifupdown] managed=true @@ -86,85 +88,18 @@ managed=true unmanaged-devices= EOF -say_yellow "Restarting NetworkManager service..." +color_yellow "Restarting NetworkManager service..." sudo systemctl restart NetworkManager -say_yellow "Waiting for NetworkManager to reconnect..." +color_yellow "Waiting for NetworkManager to reconnect..." sleep 15 # Enable pipewire systemctl --user enable pipewire pipewire-pulse wireplumber -######################################## -# XFCE-specific configuration -######################################## -if [[ "${DE}" == "xfce" || "${DDE}" == "xfce" ]]; then - echo - say_cyan "Applying XFCE defaults: fonts, browser, and terminal..." - - # Ensure xfconf-query exists (for XFCE settings) - if ! command -v xfconf-query >/dev/null 2>&1; then - say_yellow "xfconf-query not found — installing xfce4-settings..." - install_packages xfce4-settings - fi - - # set fonts - # Wait for xfconf to be available (only needed if running inside the same session) - if command -v xfconf-query >/dev/null 2>&1; then - # Interface font (UI) - xfconf-query -c xsettings -p /Gtk/FontName -s "RobotoMono Nerd Font Regular 10" - # Monospace font (terminals, editors) - xfconf-query -c xsettings -p /Gtk/MonospaceFontName -s "RobotoMono Nerd Font Mono Regular 10" - - say_green "XFCE fonts updated successfully!" - else - say_yellow "xfconf-query not found — skipping XFCE font config (will apply at first login)." - fi - - # Set browser default - if command -v chromium >/dev/null 2>&1; then - mkdir -p "$HOME/.config/xfce4/" - HELPERS_FILE="$HOME/.config/xfce4/helpers.rc" - - # Ensure the helpers file exists - touch "$HELPERS_FILE" - - # Update or insert browser entry - if grep -q '^WebBrowser=' "$HELPERS_FILE"; then - sed -i 's|^WebBrowser=.*|WebBrowser=chromium|' "$HELPERS_FILE" - else - echo "WebBrowser=chromium" >> "$HELPERS_FILE" - fi - say_green "XFCE defeault browser set to chromium!" - fi - - # Set default terminal - if command -v alacritty >/dev/null 2>&1; then - mkdir -p "$HOME/.config/xfce4/" - HELPERS_FILE="$HOME/.config/xfce4/helpers.rc" - - touch "$HELPERS_FILE" - - # TerminalEmulator entry - if grep -q '^TerminalEmulator=' "$HELPERS_FILE"; then - sed -i 's|^TerminalEmulator=.*|TerminalEmulator=alacritty|' "$HELPERS_FILE" - else - echo "TerminalEmulator=alacritty" >> "$HELPERS_FILE" - fi - - # TerminalEmulatorCommand entry - if grep -q '^TerminalEmulatorCommand=' "$HELPERS_FILE"; then - sed -i 's|^TerminalEmulatorCommand=.*|TerminalEmulatorCommand=alacritty|' "$HELPERS_FILE" - else - echo "TerminalEmulatorCommand=alacritty" >> "$HELPERS_FILE" - fi - say_green "XFCE defeault terminal set to alacritty!" - fi -fi - # replace bashrc -say_yellow "making backup of bashrc" +color_yellow "making backup of bashrc" sudo cp -v /etc/skel/.bashrc /etc/skel/.bashrc.starburst # End of script -say_green "Full setup completed." +color_green "Full setup completed." diff --git a/fedora/fedora-xfce.sh b/fedora/fedora-xfce.sh new file mode 100755 index 0000000..d47bfe0 --- /dev/null +++ b/fedora/fedora-xfce.sh @@ -0,0 +1,124 @@ +#!/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 + +color_yellow() { printf '%b' "$YELLOW"; } +color_cyan() { printf '%b' "$CYAN"; } +color_red() { printf '%b' "$RED"; } +color_green() { printf '%b' "$GREEN"; } +color_gray() { printf '%b' "$GRAY"; } +color_reset() { printf '%b' "$RESET"; } + +#------------------------------------------ +# Use exported variables from main detection script +#------------------------------------------ +OS="${DETECTED_OS}" +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 dnf install -y "$@"; } +is_package_installed() { rpm -q "$@" &>/dev/null; } + +color_yellow "Starting XFCE installation..." + +CURRENT_DE="$(detect_de)" +CURRENT_DM="$(detect_display_manager)" + +if [[ -z "$CURRENT_DE" ]]; then + color_cyan -e "No Desktop Environment detected. Installing XFCE (light setup with SDDM)..." + + install_packages sddm xfce4 xfce4-goodies + enable_graphical_target + + color_green -e "XFCE with SDDM installed successfully. You can reboot now to start XFCE." +else + color_cyan -e "Detected existing Desktop Environment: $CURRENT_DE" + + if [[ "$CURRENT_DM" == "lightdm" ]]; then + color_yellow -e "LightDM is currently active. Replacing with SDDM..." + + sudo systemctl disable lightdm + sudo pacman -Rns lightdm lightdm-gtk-greeter + + install_packages sddm + enable_graphical_target + + color_green -e "LightDM removed and replaced with SDDM." + else + color_cyan -e "Current display manager: ${CURRENT_DM:-none}. Leaving unchanged." + fi +fi + +#------------------------------------------ +# XFCE-specific configuration +#------------------------------------------ +if [[ "${DE}" == "xfce" || "${DDE}" == "xfce" ]]; then + echo + color_cyan "Applying XFCE defaults: fonts, browser, and terminal..." + + # Ensure xfconf-query exists (for XFCE settings) + if ! command -v xfconf-query >/dev/null 2>&1; then + color_yellow "xfconf-query not found — installing xfce4-settings..." + install_packages xfce4-settings + fi + + # set fonts + # Wait for xfconf to be available (only needed if running inside the same session) + if command -v xfconf-query >/dev/null 2>&1; then + # Interface font (UI) + xfconf-query -c xsettings -p /Gtk/FontName -s "RobotoMono Nerd Font Regular 10" + # Monospace font (terminals, editors) + xfconf-query -c xsettings -p /Gtk/MonospaceFontName -s "RobotoMono Nerd Font Mono Regular 10" + + color_green "XFCE fonts updated successfully!" + else + color_yellow "xfconf-query not found — skipping XFCE font config (will apply at first login)." + fi + + # Set default terminal + if command -v alacritty >/dev/null 2>&1; then + mkdir -p "$HOME/.config/xfce4/" + HELPERS_FILE="$HOME/.config/xfce4/helpers.rc" + + touch "$HELPERS_FILE" + + # TerminalEmulator entry + if grep -q '^TerminalEmulator=' "$HELPERS_FILE"; then + sed -i 's|^TerminalEmulator=.*|TerminalEmulator=alacritty|' "$HELPERS_FILE" + else + echo "TerminalEmulator=alacritty" >> "$HELPERS_FILE" + fi + + # TerminalEmulatorCommand entry + if grep -q '^TerminalEmulatorCommand=' "$HELPERS_FILE"; then + sed -i 's|^TerminalEmulatorCommand=.*|TerminalEmulatorCommand=alacritty|' "$HELPERS_FILE" + else + echo "TerminalEmulatorCommand=alacritty" >> "$HELPERS_FILE" + fi + color_green "XFCE defeault terminal set to alacritty!" + fi +fi + +# End of script +color_green -e "XFCE / SDDM setup completed."