docs(export): add Nobara deployment script, installation guide, and .gitignore

This commit is contained in:
Sho 2026-08-01 21:09:41 +09:00
parent 57e8d35449
commit 8b82af0b29
3 changed files with 466 additions and 0 deletions

19
.gitignore vendored Normal file
View File

@ -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/

159
ZOEY_EXPORT_GUIDE.md Normal file
View File

@ -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.

288
install.sh Executable file
View File

@ -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 ""