diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aabcc1f --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +# Subagents workspace logs +.agents/ + +# Python byte-code / cache +__pycache__/ +*.py[cod] +*$py.class + +# OS / Editor temporary files +.DS_Store +*.swp +*~ + +# QuickShell build / temporary runtime files +*.qmlc +quickshell/tmp/ + +# Exclude paid proprietary assets +dracula-pro/ diff --git a/ZOEY_EXPORT_GUIDE.md b/ZOEY_EXPORT_GUIDE.md new file mode 100644 index 0000000..07616bd --- /dev/null +++ b/ZOEY_EXPORT_GUIDE.md @@ -0,0 +1,159 @@ +# QuickShell & Dracula Pro Ecosystem: Zoey's Deployment Guide + +Welcome to the **QuickShell Desktop Shell & Riced Theme Ecosystem**! This guide contains everything necessary to set up, deploy, and run this complete desktop experience on **Zoey's computer (Nobara Linux / Fedora / Arch / Ubuntu)**. + +--- + +## 🌟 Overview of Riced Components + +- **QuickShell Desktop Shell (QML Engine)**: + - **Top Status Bar**: Dynamic workspace switcher, active window title tracker, CPU/RAM/Temp metrics, digital clock with calendar dropdown, system tray, audio volume, brightness, battery, and MPRIS music player controller. + - **Bottom Dock**: Floating application launcher, pinned apps, window task bar, mouse-over micro-animations, and wallpaper selector. + - **Overlay Panels & Popups**: Glassmorphic Quick Settings, App Launcher modal, MPRIS player card, volume & brightness OSDs. +- **Multi-App Dynamic Theme Engine (`theme_sync.py`)**: + - Automatically synchronizes color palettes across **GTK 3/4**, **Alacritty**, **Discord**, **VSCode / VSCodium**, **Zen Browser**, **Feishin Music Player**, and **Starship Shell Prompt**. + - Includes 30+ curated dark & light color themes (Dracula Pro: Blade, Buff, Lincoln, Morpheus, Alucard; Catppuccin; Tokyo Night; RosΓ© Pine; Gruvbox; Everforest; Nord; Solarized; One Dark; Cyberpunk Neon). +- **Custom Assets & Wallpapers**: + - Theme-matching wallpapers in `quickshell/wallpapers/`. + - Icon sets and riced terminal/editor configuration files. + +--- + +## πŸš€ Quick Automated Installation (Recommended) + +On Zoey's computer running **Nobara Linux**, open a terminal in this repository directory and run: + +```bash +chmod +x install.sh +./install.sh +``` + +The script will automatically detect Nobara (`dnf`), install all necessary system packages, deploy QuickShell and riced application configs to `~/.config/`, enable the `quickshell.service` systemd user daemon, and trigger the initial multi-app theme synchronization. + +--- + +## πŸ› οΈ Step-by-Step Manual Setup for Nobara Linux + +If you prefer installing manually or want to understand each step: + +### Step 1: Install Package Dependencies on Nobara (DNF) + +Run the following command to install Python 3 libraries, PipeWire audio tools, DBus wrappers, and desktop utilities: + +```bash +sudo dnf install -y \ + python3 python3-pillow python3-dbus \ + pipewire wireplumber brightnessctl ddcutil \ + NetworkManager bluez playerctl wl-clipboard cliphist \ + fastfetch power-profiles-daemon upower curl jq libnotify \ + lm_sensors lsblk starship alacritty wmctrl xdotool \ + qt6-qtdeclarative qt6-qtdeclarative-devel qt6-qtbase qt6-qtbase-devel \ + layer-shell-qt layer-shell-qt-devel cmake gcc-c++ +``` + +### Step 2: Install QuickShell Engine + +Check if `quickshell` is available via Fedora COPR: + +```bash +sudo dnf copr enable -y outfoxxed/quickshell +sudo dnf install -y quickshell +``` + +*Fallback Build from Source (if package not found in COPR):* + +```bash +git clone https://git.outfoxxed.me/outfoxxed/quickshell.git /tmp/quickshell-build +cd /tmp/quickshell-build +cmake -B build -S . -DCMAKE_BUILD_TYPE=Release +cmake --build build +sudo cmake --install build +``` + +### Step 3: Deploy Config Files to `~/.config/` + +```bash +# 1. QuickShell configuration +mkdir -p ~/.config/quickshell +cp -r quickshell/* ~/.config/quickshell/ +chmod +x ~/.config/quickshell/toggle_launcher.sh + +# 2. Application riced configurations +cp -r dracula-pro-blade-configs/alacritty ~/.config/ +cp -r dracula-pro-blade-configs/fastfetch ~/.config/ +cp -r dracula-pro-blade-configs/btop ~/.config/ +cp -r dracula-pro-blade-configs/micro ~/.config/ + +# 3. GTK 3 & GTK 4 themes +mkdir -p ~/.config/gtk-3.0 ~/.config/gtk-4.0 +cp -r dracula-pro-blade-configs/gtk/* ~/.config/gtk-3.0/ +cp -r dracula-pro-blade-configs/gtk/* ~/.config/gtk-4.0/ + +# 4. VSCode settings +mkdir -p ~/.config/Code/User +cp -r dracula-pro-blade-configs/vscode/* ~/.config/Code/User/ +``` + +### Step 4: Configure Systemd User Service + +Create `~/.config/systemd/user/quickshell.service`: + +```ini +[Unit] +Description=QuickShell Desktop Shell Ecosystem +After=graphical-session.target +PartOf=graphical-session.target + +[Service] +ExecStart=/usr/bin/quickshell -p %h/.config/quickshell +Restart=always +RestartSec=2 +Environment=QT_QPA_PLATFORM=wayland + +[Install] +WantedBy=graphical-session.target +``` + +Enable and start the service: + +```bash +systemctl --user daemon-reload +systemctl --user enable --now quickshell.service +``` + +### Step 5: Initialize Multi-App Theme Sync Engine + +Run the python theme synchronizer to broadcast themes to GTK, Alacritty, VSCode, Discord, Zen Browser, Feishin, and Starship: + +```bash +python3 ~/.config/quickshell/services/python/theme_sync.py --variant Pro +``` + +--- + +## ⌨️ Binding the App Launcher Shortcut on Nobara / KDE + +To bind the QuickShell App Launcher to the `Super` (Windows) key or a keyboard shortcut in Nobara / KDE Plasma: + +1. Open **System Settings** -> **Keyboard** -> **Shortcuts**. +2. Click **Add New** -> **Command**. +3. Name: `Toggle QuickShell App Launcher` +4. Command: `~/.config/quickshell/toggle_launcher.sh` +5. Shortcut: Press `Super` or `Meta+Space` (or your preferred shortcut). +6. Click **Apply**. + +--- + +## πŸ” Service & Process Management Commands + +- **Check Shell Status**: `systemctl --user status quickshell.service` +- **Restart Desktop Shell**: `systemctl --user restart quickshell.service` +- **View Runtime Logs**: `journalctl --user -u quickshell.service -f` +- **Manual Theme Switch**: `python3 ~/.config/quickshell/services/python/theme_sync.py --variant "Catppuccin Mocha"` + +--- + +## 🎨 Adding Custom Wallpapers & Pinned Apps + +- **Wallpapers**: Drop any `.png` or `.jpg` image into `~/.config/quickshell/wallpapers/`. QuickShell automatically indexes and displays them in the wallpaper switcher panel. +- **Pinned Apps**: Edit `~/.config/quickshell/config/pinned_apps.json` to customize default dock application icons and `.desktop` launchers. diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..cb7f898 --- /dev/null +++ b/install.sh @@ -0,0 +1,288 @@ +#!/usr/bin/env bash +# ============================================================================== +# QuickShell & Dracula Pro Ecosystem Installer +# Optimized for Nobara Linux (Fedora-based), Arch Linux, and Debian/Ubuntu +# ============================================================================== + +set -eo pipefail + +# Formatting & Colors +BOLD='\033[1m' +GREEN='\033[0;32m' +CYAN='\033[0;36m' +YELLOW='\033[1;33m' +RED='\033[0;31m' +NC='\033[0m' # No Color + +info() { echo -e "${CYAN}${BOLD}[INFO]${NC} $1"; } +success() { echo -e "${GREEN}${BOLD}[SUCCESS]${NC} $1"; } +warn() { echo -e "${YELLOW}${BOLD}[WARNING]${NC} $1"; } +error() { echo -e "${RED}${BOLD}[ERROR]${NC} $1"; exit 1; } + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +TARGET_CONFIG_DIR="${HOME}/.config" + +echo -e "${BOLD}${CYAN}" +echo "==========================================================" +echo " QuickShell Desktop Shell & Theme Ecosystem Installer " +echo "==========================================================" +echo -e "${NC}" + +# 1. OS & Package Manager Detection +detect_pm() { + if command -v dnf &>/dev/null; then + echo "dnf" + elif command -v pacman &>/dev/null; then + echo "pacman" + elif command -v apt-get &>/dev/null; then + echo "apt" + else + echo "unknown" + fi +} + +PM=$(detect_pm) +info "Detected Package Manager: ${PM}" + +# 2. Dependency Installation +install_dependencies() { + info "Installing system dependencies..." + case "$PM" in + dnf) + info "Running DNF installation for Nobara / Fedora..." + sudo dnf install -y \ + python3 \ + python3-pillow \ + python3-dbus \ + pipewire \ + wireplumber \ + brightnessctl \ + ddcutil \ + NetworkManager \ + bluez \ + playerctl \ + wl-clipboard \ + cliphist \ + fastfetch \ + power-profiles-daemon \ + upower \ + curl \ + jq \ + libnotify \ + lm_sensors \ + lsblk \ + tar \ + gzip \ + awk \ + sed \ + grep \ + starship \ + alacritty \ + wmctrl \ + xdotool \ + qt6-qtdeclarative \ + qt6-qtdeclarative-devel \ + qt6-qtbase \ + qt6-qtbase-devel \ + layer-shell-qt \ + layer-shell-qt-devel \ + cmake \ + gcc-c++ || warn "Some packages failed to install via DNF, continuing..." + ;; + pacman) + info "Running Pacman installation for Arch Linux / CachyOS..." + sudo pacman -S --needed --noconfirm \ + python \ + python-pillow \ + python-dbus \ + pipewire \ + wireplumber \ + brightnessctl \ + ddcutil \ + networkmanager \ + bluez \ + bluez-utils \ + playerctl \ + wl-clipboard \ + cliphist \ + fastfetch \ + power-profiles-daemon \ + upower \ + curl \ + jq \ + libnotify \ + lm_sensors \ + lsblk \ + starship \ + alacritty \ + wmctrl \ + xdotool || warn "Some packages failed to install via Pacman, continuing..." + ;; + apt) + info "Running APT installation for Debian / Ubuntu..." + sudo apt-get update + sudo apt-get install -y \ + python3 \ + python3-pil \ + python3-dbus \ + pipewire \ + wireplumber \ + brightnessctl \ + ddcutil \ + network-manager \ + bluez \ + playerctl \ + wl-clipboard \ + cliphist \ + fastfetch \ + power-profiles-daemon \ + upower \ + curl \ + jq \ + libnotify-bin \ + lm-sensors \ + starship \ + alacritty \ + wmctrl \ + xdotool || warn "Some packages failed to install via APT, continuing..." + ;; + *) + warn "Unrecognized package manager. Please ensure Python3, Qt6, Wayland tools, and Pipewire are installed." + ;; + esac +} + +# 3. Quickshell Binary Check / Build +install_quickshell() { + if command -v quickshell &>/dev/null; then + success "QuickShell binary found at $(which quickshell)" + return 0 + fi + + info "QuickShell binary not found. Attempting installation..." + + if [ "$PM" = "dnf" ]; then + info "Checking Fedora COPR repository for quickshell..." + sudo dnf copr enable -y outfoxxed/quickshell 2>/dev/null || true + if sudo dnf install -y quickshell 2>/dev/null; then + success "QuickShell successfully installed via DNF COPR!" + return 0 + fi + elif [ "$PM" = "pacman" ]; then + if command -v yay &>/dev/null; then + yay -S --needed --noconfirm quickshell-git && return 0 + elif command -v paru &>/dev/null; then + paru -S --needed --noconfirm quickshell-git && return 0 + fi + fi + + warn "QuickShell package build required from git repository..." + BUILD_DIR=$(mktemp -d) + git clone https://git.outfoxxed.me/outfoxxed/quickshell.git "$BUILD_DIR" + cmake -B "$BUILD_DIR/build" -S "$BUILD_DIR" -DCMAKE_BUILD_TYPE=Release + cmake --build "$BUILD_DIR/build" + sudo cmake --install "$BUILD_DIR/build" + rm -rf "$BUILD_DIR" + success "QuickShell built and installed from source!" +} + +# 4. Copying and Linking Configurations +deploy_configs() { + info "Deploying configurations to ${TARGET_CONFIG_DIR}..." + mkdir -p "${TARGET_CONFIG_DIR}" + + # Quickshell Desktop Shell Config + if [ -d "${SCRIPT_DIR}/quickshell" ]; then + info "Deploying QuickShell QML ecosystem..." + rm -rf "${TARGET_CONFIG_DIR}/quickshell" + cp -r "${SCRIPT_DIR}/quickshell" "${TARGET_CONFIG_DIR}/quickshell" + chmod +x "${TARGET_CONFIG_DIR}/quickshell/toggle_launcher.sh" + chmod +x "${TARGET_CONFIG_DIR}/quickshell/services/python/"*.py 2>/dev/null || true + fi + + # Application Riced Configs from dracula-pro-blade-configs + CONFIGS_SRC="${SCRIPT_DIR}/dracula-pro-blade-configs" + if [ -d "$CONFIGS_SRC" ]; then + info "Deploying application configs (Alacritty, Fastfetch, GTK, micro, btop)..." + + [ -d "${CONFIGS_SRC}/alacritty" ] && cp -r "${CONFIGS_SRC}/alacritty" "${TARGET_CONFIG_DIR}/" + [ -d "${CONFIGS_SRC}/fastfetch" ] && cp -r "${CONFIGS_SRC}/fastfetch" "${TARGET_CONFIG_DIR}/" + [ -d "${CONFIGS_SRC}/btop" ] && cp -r "${CONFIGS_SRC}/btop" "${TARGET_CONFIG_DIR}/" + [ -d "${CONFIGS_SRC}/micro" ] && cp -r "${CONFIGS_SRC}/micro" "${TARGET_CONFIG_DIR}/" + [ -d "${CONFIGS_SRC}/ghostty" ] && cp -r "${CONFIGS_SRC}/ghostty" "${TARGET_CONFIG_DIR}/" + + # GTK 3 & GTK 4 + if [ -d "${CONFIGS_SRC}/gtk" ]; then + mkdir -p "${TARGET_CONFIG_DIR}/gtk-3.0" "${TARGET_CONFIG_DIR}/gtk-4.0" + cp -r "${CONFIGS_SRC}/gtk/"* "${TARGET_CONFIG_DIR}/gtk-3.0/" 2>/dev/null || true + cp -r "${CONFIGS_SRC}/gtk/"* "${TARGET_CONFIG_DIR}/gtk-4.0/" 2>/dev/null || true + fi + + # VSCode settings + VSCODE_DIR="${TARGET_CONFIG_DIR}/Code/User" + if [ -d "${CONFIGS_SRC}/vscode" ]; then + mkdir -p "$VSCODE_DIR" + cp -r "${CONFIGS_SRC}/vscode/"* "$VSCODE_DIR/" 2>/dev/null || true + fi + fi + + success "Configurations deployed successfully!" +} + +# 5. Systemd User Service Setup +setup_systemd_service() { + info "Setting up Systemd User Service for QuickShell..." + SERVICE_DIR="${TARGET_CONFIG_DIR}/systemd/user" + mkdir -p "$SERVICE_DIR" + + cat << EOF > "${SERVICE_DIR}/quickshell.service" +[Unit] +Description=QuickShell Desktop Shell Ecosystem +After=graphical-session.target +PartOf=graphical-session.target + +[Service] +ExecStart=/usr/bin/quickshell -p %h/.config/quickshell +Restart=always +RestartSec=2 +Environment=QT_QPA_PLATFORM=wayland + +[Install] +WantedBy=graphical-session.target +EOF + + systemctl --user daemon-reload + systemctl --user enable quickshell.service || warn "Could not enable quickshell service automatically" + info "Starting QuickShell systemd service..." + systemctl --user restart quickshell.service || warn "Could not start quickshell service automatically (is a Wayland session running?)" + success "Systemd user service configured!" +} + +# 6. Run Theme Sync Engine +run_initial_sync() { + info "Triggering initial multi-app theme synchronization..." + THEME_SYNC_SCRIPT="${TARGET_CONFIG_DIR}/quickshell/services/python/theme_sync.py" + if [ -f "$THEME_SYNC_SCRIPT" ]; then + python3 "$THEME_SYNC_SCRIPT" || warn "Theme sync script executed with warnings." + success "Multi-app themes synced across GTK, Alacritty, VSCode, Zen, Feishin, and Starship!" + else + warn "theme_sync.py not found at ${THEME_SYNC_SCRIPT}" + fi +} + +# Execution Flow +install_dependencies +install_quickshell +deploy_configs +setup_systemd_service +run_initial_sync + +echo "" +echo -e "${GREEN}${BOLD}==========================================================" +echo " QuickShell Ecosystem Successfully Installed! " +echo "=========================================================="${NC} +echo -e "${CYAN}Key Commands & Shortcuts:${NC}" +echo " - App Launcher Toggle Script: ${TARGET_CONFIG_DIR}/quickshell/toggle_launcher.sh" +echo " - Systemd Service Management: systemctl --user [start|stop|restart|status] quickshell.service" +echo " - Manual Theme Sync: python3 ${TARGET_CONFIG_DIR}/quickshell/services/python/theme_sync.py" +echo ""