From 94c5d15dadb9249c9b6a50c51c5aac8e7e5d374a Mon Sep 17 00:00:00 2001 From: "[yuri]" <[yuri.kuit@gmail.com]> Date: Thu, 27 Nov 2025 17:33:15 +0100 Subject: [PATCH] arch-full first commit --- v2/arch-full.sh | 160 ++++++++++++++++++ v2/config-files/arch/.config/test.txt | 1 + .../xfce-perchannel-xml/xfce4-panel.xml | 60 +++++++ 3 files changed, 221 insertions(+) create mode 100755 v2/arch-full.sh create mode 100644 v2/config-files/arch/.config/test.txt create mode 100644 v2/config-files/arch/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml diff --git a/v2/arch-full.sh b/v2/arch-full.sh new file mode 100755 index 0000000..d5df5b0 --- /dev/null +++ b/v2/arch-full.sh @@ -0,0 +1,160 @@ +#!/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 "$@"; } + +say_yellow "Starting full setup..." + +# Run minimal first +bash "$SCRIPT_DIR/arch-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-indicator-plugin xfce4-pulseaudio-plugin xfce4-clipman-plugin + +# Ensure NetworkManager manages all interfaces +echo "Setting NetworkManager to manage all interfaces..." +sudo cp /etc/network/interfaces /etc/network/interfaces.bak.$(date +%s) +sudo tee /etc/network/interfaces > /dev/null <<'EOF' +auto lo +iface lo inet loopback +EOF +sudo sed -i 's/^managed=.*/managed=true/' /etc/NetworkManager/NetworkManager.conf || \ + echo -e "[ifupdown]\nmanaged=true" | sudo tee -a /etc/NetworkManager/NetworkManager.conf +sudo systemctl restart NetworkManager + +# Enable pipewire +sudo 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 + +############################################### +# Copy settings to HOME +############################################### +SOURCE_DIR="$SCRIPT_DIR/config-files/arch" +DEST_DIR="$HOME" + +# 1. Verify source directory exists +if [ ! -d "$SOURCE_DIR" ]; then + echo "Error: Source directory '$SOURCE_DIR' not found. Skipping XFCE config." + # Use exit 1 if this is critical, or just exit 0 to continue the main script + # exit 1 +fi + +say_yellow "Applying XFCE configuration directly to $DEST_DIR..." + +# 2. Use shopt for dotfiles, then copy recursively and forcefully +shopt -s dotglob +cp -vrf "$SOURCE_DIR"/* "$DEST_DIR"/ +shopt -u dotglob + +# 3. Clean up session cache if desired (e.g., if copying existing settings) +say_yellow "Clearing session cache..." +rm -rf "$HOME/.cache/sessions/" + +say_yellow "XFCE configuration applied. User can log in now." + +# End of script +say_green "Full setup completed." diff --git a/v2/config-files/arch/.config/test.txt b/v2/config-files/arch/.config/test.txt new file mode 100644 index 0000000..6cda19a --- /dev/null +++ b/v2/config-files/arch/.config/test.txt @@ -0,0 +1 @@ +TEST-FILE \ No newline at end of file diff --git a/v2/config-files/arch/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/v2/config-files/arch/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml new file mode 100644 index 0000000..1bb5063 --- /dev/null +++ b/v2/config-files/arch/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +