mirror of
https://github.com/duma799/hyprduma-config.git
synced 2026-05-15 07:01:00 +00:00
Restructure, change logo
This commit is contained in:
+56
-60
@@ -1,17 +1,12 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
"""
|
|
||||||
HyprDuma Config Auto-Installer
|
|
||||||
Automates the complete installation of HyprDuma dotfiles.
|
|
||||||
Run: python3 install.py
|
|
||||||
"""
|
|
||||||
|
|
||||||
import configparser
|
import configparser
|
||||||
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import shutil
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
# --- Colors ---
|
# Colors
|
||||||
RESET = "\033[0m"
|
RESET = "\033[0m"
|
||||||
BOLD = "\033[1m"
|
BOLD = "\033[1m"
|
||||||
RED = "\033[31m"
|
RED = "\033[31m"
|
||||||
@@ -24,10 +19,23 @@ CYAN = "\033[36m"
|
|||||||
REPO_URL = "https://github.com/duma799/hyprduma-config.git"
|
REPO_URL = "https://github.com/duma799/hyprduma-config.git"
|
||||||
|
|
||||||
PACMAN_PACKAGES = [
|
PACMAN_PACKAGES = [
|
||||||
"hyprland", "hyprlock", "hyprshot", "wlogout", "kitty", "waybar",
|
"hyprland",
|
||||||
"swaybg", "waypaper", "wofi", "nautilus", "wireplumber",
|
"hyprlock",
|
||||||
"pipewire-pulse", "brightnessctl", "playerctl", "adwaita-cursors",
|
"hyprshot",
|
||||||
"python-pywal", "fastfetch",
|
"wlogout",
|
||||||
|
"kitty",
|
||||||
|
"waybar",
|
||||||
|
"swaybg",
|
||||||
|
"waypaper",
|
||||||
|
"wofi",
|
||||||
|
"nautilus",
|
||||||
|
"wireplumber",
|
||||||
|
"pipewire-pulse",
|
||||||
|
"brightnessctl",
|
||||||
|
"playerctl",
|
||||||
|
"adwaita-cursors",
|
||||||
|
"python-pywal",
|
||||||
|
"fastfetch",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@@ -64,7 +72,6 @@ def ask_yn(prompt, default=True):
|
|||||||
|
|
||||||
|
|
||||||
def run(cmd, check=True, capture=False, **kwargs):
|
def run(cmd, check=True, capture=False, **kwargs):
|
||||||
"""Run a shell command."""
|
|
||||||
if capture:
|
if capture:
|
||||||
result = subprocess.run(
|
result = subprocess.run(
|
||||||
cmd, shell=True, capture_output=True, text=True, **kwargs
|
cmd, shell=True, capture_output=True, text=True, **kwargs
|
||||||
@@ -84,12 +91,9 @@ def cmd_exists(name):
|
|||||||
|
|
||||||
|
|
||||||
def find_repo_dir():
|
def find_repo_dir():
|
||||||
"""Determine the repo directory - either CWD or needs cloning."""
|
|
||||||
cwd = Path.cwd()
|
cwd = Path.cwd()
|
||||||
# Check if we're inside the cloned repo
|
|
||||||
if (cwd / "hyprland.conf").exists() and (cwd / "pywal.sh").exists():
|
if (cwd / "hyprland.conf").exists() and (cwd / "pywal.sh").exists():
|
||||||
return cwd
|
return cwd
|
||||||
# Check if install.py is in the repo
|
|
||||||
script_dir = Path(__file__).resolve().parent
|
script_dir = Path(__file__).resolve().parent
|
||||||
if (script_dir / "hyprland.conf").exists() and (script_dir / "pywal.sh").exists():
|
if (script_dir / "hyprland.conf").exists() and (script_dir / "pywal.sh").exists():
|
||||||
return script_dir
|
return script_dir
|
||||||
@@ -97,7 +101,6 @@ def find_repo_dir():
|
|||||||
|
|
||||||
|
|
||||||
def check_arch():
|
def check_arch():
|
||||||
"""Verify we're on Arch Linux."""
|
|
||||||
if not Path("/etc/arch-release").exists():
|
if not Path("/etc/arch-release").exists():
|
||||||
print_err("This installer is designed for Arch Linux (or Arch-based distros).")
|
print_err("This installer is designed for Arch Linux (or Arch-based distros).")
|
||||||
if not ask_yn("Continue anyway?", default=False):
|
if not ask_yn("Continue anyway?", default=False):
|
||||||
@@ -105,7 +108,6 @@ def check_arch():
|
|||||||
|
|
||||||
|
|
||||||
def install_aur_helpers():
|
def install_aur_helpers():
|
||||||
"""Step: Install yay and paru (optional)."""
|
|
||||||
has_yay = cmd_exists("yay")
|
has_yay = cmd_exists("yay")
|
||||||
has_paru = cmd_exists("paru")
|
has_paru = cmd_exists("paru")
|
||||||
|
|
||||||
@@ -148,7 +150,6 @@ def install_aur_helpers():
|
|||||||
|
|
||||||
|
|
||||||
def install_packages():
|
def install_packages():
|
||||||
"""Step: Install required packages via pacman."""
|
|
||||||
print_info(f"Packages: {' '.join(PACMAN_PACKAGES)}")
|
print_info(f"Packages: {' '.join(PACMAN_PACKAGES)}")
|
||||||
|
|
||||||
if not ask_yn("Install required packages via pacman?"):
|
if not ask_yn("Install required packages via pacman?"):
|
||||||
@@ -163,14 +164,15 @@ def install_packages():
|
|||||||
|
|
||||||
|
|
||||||
def install_caelestia():
|
def install_caelestia():
|
||||||
"""Step: Install Caelestia Shell (optional)."""
|
|
||||||
already_installed = cmd_exists("caelestia")
|
already_installed = cmd_exists("caelestia")
|
||||||
|
|
||||||
if already_installed:
|
if already_installed:
|
||||||
print_ok("Caelestia shell is already installed")
|
print_ok("Caelestia shell is already installed")
|
||||||
else:
|
else:
|
||||||
if not cmd_exists("yay") and not cmd_exists("paru"):
|
if not cmd_exists("yay") and not cmd_exists("paru"):
|
||||||
print_warn("No AUR helper found - skipping Caelestia (install manually: yay -S caelestia-shell)")
|
print_warn(
|
||||||
|
"No AUR helper found - skipping Caelestia (install manually: yay -S caelestia-shell)"
|
||||||
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
if not ask_yn("Install Caelestia Shell (recommended for dynamic theming)?"):
|
if not ask_yn("Install Caelestia Shell (recommended for dynamic theming)?"):
|
||||||
@@ -181,16 +183,16 @@ def install_caelestia():
|
|||||||
if run(f"{helper} -S --noconfirm caelestia-shell"):
|
if run(f"{helper} -S --noconfirm caelestia-shell"):
|
||||||
print_ok("Caelestia shell installed")
|
print_ok("Caelestia shell installed")
|
||||||
else:
|
else:
|
||||||
print_err("Failed to install Caelestia - you can try manually: yay -S caelestia-shell")
|
print_err(
|
||||||
|
"Failed to install Caelestia - you can try manually: yay -S caelestia-shell"
|
||||||
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
# Pre-create state directories so caelestia shell starts cleanly
|
|
||||||
state_dir = Path.home() / ".local" / "state" / "caelestia"
|
state_dir = Path.home() / ".local" / "state" / "caelestia"
|
||||||
wallpaper_dir = state_dir / "wallpaper"
|
wallpaper_dir = state_dir / "wallpaper"
|
||||||
wallpaper_dir.mkdir(parents=True, exist_ok=True)
|
wallpaper_dir.mkdir(parents=True, exist_ok=True)
|
||||||
print_ok("Created Caelestia state directories (~/.local/state/caelestia/)")
|
print_ok("Created Caelestia state directories (~/.local/state/caelestia/)")
|
||||||
|
|
||||||
# Launch caelestia shell if Hyprland is running
|
|
||||||
if run("pgrep -x Hyprland", capture=True) is not None:
|
if run("pgrep -x Hyprland", capture=True) is not None:
|
||||||
print_info("Hyprland detected, launching Caelestia shell...")
|
print_info("Hyprland detected, launching Caelestia shell...")
|
||||||
run("caelestia shell -d &", check=False)
|
run("caelestia shell -d &", check=False)
|
||||||
@@ -200,7 +202,6 @@ def install_caelestia():
|
|||||||
|
|
||||||
|
|
||||||
def clone_repo():
|
def clone_repo():
|
||||||
"""Step: Clone the repository if needed. Returns repo Path."""
|
|
||||||
repo_dir = find_repo_dir()
|
repo_dir = find_repo_dir()
|
||||||
if repo_dir:
|
if repo_dir:
|
||||||
print_ok(f"Using repo at: {repo_dir}")
|
print_ok(f"Using repo at: {repo_dir}")
|
||||||
@@ -227,7 +228,6 @@ def clone_repo():
|
|||||||
|
|
||||||
|
|
||||||
def backup_configs():
|
def backup_configs():
|
||||||
"""Step: Backup existing configs."""
|
|
||||||
config = Path.home() / ".config"
|
config = Path.home() / ".config"
|
||||||
backed_up = []
|
backed_up = []
|
||||||
|
|
||||||
@@ -248,20 +248,16 @@ def backup_configs():
|
|||||||
|
|
||||||
|
|
||||||
def install_hypr_config(repo):
|
def install_hypr_config(repo):
|
||||||
"""Step: Copy Hyprland configuration files."""
|
|
||||||
hypr_dir = Path.home() / ".config" / "hypr"
|
hypr_dir = Path.home() / ".config" / "hypr"
|
||||||
hypr_dir.mkdir(parents=True, exist_ok=True)
|
hypr_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
# Copy main config
|
|
||||||
shutil.copy2(repo / "hyprland.conf", hypr_dir / "hyprland.conf")
|
shutil.copy2(repo / "hyprland.conf", hypr_dir / "hyprland.conf")
|
||||||
print_ok("Copied hyprland.conf")
|
print_ok("Copied hyprland.conf")
|
||||||
|
|
||||||
# Create screenshots directory
|
|
||||||
screenshots = Path.home() / "Pictures" / "Screenshots"
|
screenshots = Path.home() / "Pictures" / "Screenshots"
|
||||||
screenshots.mkdir(parents=True, exist_ok=True)
|
screenshots.mkdir(parents=True, exist_ok=True)
|
||||||
print_ok(f"Created {screenshots}")
|
print_ok(f"Created {screenshots}")
|
||||||
|
|
||||||
# Copy wallpapers
|
|
||||||
wallpapers_src = repo / "wallpapers"
|
wallpapers_src = repo / "wallpapers"
|
||||||
wallpapers_dst = hypr_dir / "wallpapers"
|
wallpapers_dst = hypr_dir / "wallpapers"
|
||||||
if wallpapers_src.exists():
|
if wallpapers_src.exists():
|
||||||
@@ -273,12 +269,11 @@ def install_hypr_config(repo):
|
|||||||
|
|
||||||
|
|
||||||
def install_pywal(repo):
|
def install_pywal(repo):
|
||||||
"""Step: Install pywal integration."""
|
|
||||||
home = Path.home()
|
home = Path.home()
|
||||||
hypr_dir = home / ".config" / "hypr"
|
hypr_dir = home / ".config" / "hypr"
|
||||||
hypr_dir.mkdir(parents=True, exist_ok=True)
|
hypr_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
# 1. Pywal templates
|
# Pywal templates
|
||||||
templates_dst = home / ".config" / "wal" / "templates"
|
templates_dst = home / ".config" / "wal" / "templates"
|
||||||
templates_dst.mkdir(parents=True, exist_ok=True)
|
templates_dst.mkdir(parents=True, exist_ok=True)
|
||||||
templates_src = repo / "wal" / "templates"
|
templates_src = repo / "wal" / "templates"
|
||||||
@@ -289,16 +284,21 @@ def install_pywal(repo):
|
|||||||
else:
|
else:
|
||||||
print_err("wal/templates not found in repo")
|
print_err("wal/templates not found in repo")
|
||||||
|
|
||||||
# 2. Copy scripts to ~/.config/hypr/
|
# Scripts
|
||||||
for script in ["pywal.sh", "sync-caelestia-wallpaper.sh", "waypaper-hook.sh"]:
|
for script in [
|
||||||
|
"pywal.sh",
|
||||||
|
"sync-caelestia-wallpaper.sh",
|
||||||
|
"waypaper-hook.sh",
|
||||||
|
"monitor-handler.py",
|
||||||
|
]:
|
||||||
src = repo / script
|
src = repo / script
|
||||||
dst = hypr_dir / script
|
dst = hypr_dir / script
|
||||||
if src.exists():
|
if src.exists():
|
||||||
shutil.copy2(str(src), str(dst))
|
shutil.copy2(str(src), str(dst))
|
||||||
dst.chmod(0o755)
|
dst.chmod(0o755)
|
||||||
print_ok("Copied pywal.sh, sync-caelestia-wallpaper.sh, and waypaper-hook.sh to ~/.config/hypr/")
|
print_ok("Copied scripts to ~/.config/hypr/")
|
||||||
|
|
||||||
# 2b. Register waypaper hook in waypaper config
|
# Waypaper hook
|
||||||
hook_cmd = str(hypr_dir / "waypaper-hook.sh")
|
hook_cmd = str(hypr_dir / "waypaper-hook.sh")
|
||||||
waypaper_config_dir = home / ".config" / "waypaper"
|
waypaper_config_dir = home / ".config" / "waypaper"
|
||||||
waypaper_config_dir.mkdir(parents=True, exist_ok=True)
|
waypaper_config_dir.mkdir(parents=True, exist_ok=True)
|
||||||
@@ -320,20 +320,22 @@ def install_pywal(repo):
|
|||||||
config.write(f)
|
config.write(f)
|
||||||
print_ok("Updated waypaper post_command to use waypaper-hook.sh")
|
print_ok("Updated waypaper post_command to use waypaper-hook.sh")
|
||||||
else:
|
else:
|
||||||
print_info(f"To add manually: set post_command = {hook_cmd} in ~/.config/waypaper/config.ini")
|
print_info(
|
||||||
|
f"To add manually: set post_command = {hook_cmd} in ~/.config/waypaper/config.ini"
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
config.set("Settings", "post_command", hook_cmd)
|
config.set("Settings", "post_command", hook_cmd)
|
||||||
with open(str(waypaper_ini), "w") as f:
|
with open(str(waypaper_ini), "w") as f:
|
||||||
config.write(f)
|
config.write(f)
|
||||||
print_ok("Registered waypaper-hook.sh as waypaper post_command")
|
print_ok("Registered waypaper-hook.sh as waypaper post_command")
|
||||||
|
|
||||||
# 3. Copy pywal.sh to home for easy access
|
# pywal.sh in home
|
||||||
home_pywal = home / "pywal.sh"
|
home_pywal = home / "pywal.sh"
|
||||||
shutil.copy2(str(repo / "pywal.sh"), str(home_pywal))
|
shutil.copy2(str(repo / "pywal.sh"), str(home_pywal))
|
||||||
home_pywal.chmod(0o755)
|
home_pywal.chmod(0o755)
|
||||||
print_ok("Copied pywal.sh to ~/pywal.sh")
|
print_ok("Copied pywal.sh to ~/pywal.sh")
|
||||||
|
|
||||||
# 4. Kitty config
|
# Kitty
|
||||||
kitty_dir = home / ".config" / "kitty"
|
kitty_dir = home / ".config" / "kitty"
|
||||||
kitty_dir.mkdir(parents=True, exist_ok=True)
|
kitty_dir.mkdir(parents=True, exist_ok=True)
|
||||||
kitty_src = repo / "kitty" / "kitty.conf"
|
kitty_src = repo / "kitty" / "kitty.conf"
|
||||||
@@ -341,7 +343,7 @@ def install_pywal(repo):
|
|||||||
shutil.copy2(str(kitty_src), kitty_dir / "kitty.conf")
|
shutil.copy2(str(kitty_src), kitty_dir / "kitty.conf")
|
||||||
print_ok("Installed kitty config with pywal colors")
|
print_ok("Installed kitty config with pywal colors")
|
||||||
|
|
||||||
# 5. Bashrc pywal integration
|
# Bashrc
|
||||||
bashrc = home / ".bashrc"
|
bashrc = home / ".bashrc"
|
||||||
pywal_marker = "# Import pywal colorscheme from cache"
|
pywal_marker = "# Import pywal colorscheme from cache"
|
||||||
already_configured = False
|
already_configured = False
|
||||||
@@ -364,10 +366,10 @@ def install_pywal(repo):
|
|||||||
f.write(snippet)
|
f.write(snippet)
|
||||||
print_ok("Added pywal integration to ~/.bashrc")
|
print_ok("Added pywal integration to ~/.bashrc")
|
||||||
|
|
||||||
# 6. Generate initial colors from default wallpaper
|
# Initial colors
|
||||||
wallpaper = hypr_dir / "wallpapers" / "sakura.jpg"
|
wallpaper = hypr_dir / "wallpapers" / "sakura.jpg"
|
||||||
if not wallpaper.exists():
|
if not wallpaper.exists():
|
||||||
# Fallback: find any wallpaper
|
# Fallback
|
||||||
wp_dir = hypr_dir / "wallpapers"
|
wp_dir = hypr_dir / "wallpapers"
|
||||||
if wp_dir.exists():
|
if wp_dir.exists():
|
||||||
for ext in ("*.jpg", "*.png", "*.jpeg"):
|
for ext in ("*.jpg", "*.png", "*.jpeg"):
|
||||||
@@ -381,7 +383,6 @@ def install_pywal(repo):
|
|||||||
run(f'wal -i "{wallpaper}"')
|
run(f'wal -i "{wallpaper}"')
|
||||||
print_ok("Generated initial pywal color scheme")
|
print_ok("Generated initial pywal color scheme")
|
||||||
|
|
||||||
# Apply colors
|
|
||||||
pywal_script = home / "pywal.sh"
|
pywal_script = home / "pywal.sh"
|
||||||
if pywal_script.exists():
|
if pywal_script.exists():
|
||||||
if run(f'bash "{pywal_script}"'):
|
if run(f'bash "{pywal_script}"'):
|
||||||
@@ -389,13 +390,16 @@ def install_pywal(repo):
|
|||||||
else:
|
else:
|
||||||
print_warn("pywal.sh had errors (normal if Hyprland isn't running yet)")
|
print_warn("pywal.sh had errors (normal if Hyprland isn't running yet)")
|
||||||
elif not cmd_exists("wal"):
|
elif not cmd_exists("wal"):
|
||||||
print_warn("pywal (wal) not found - install python-pywal and run: wal -i <wallpaper> && ~/pywal.sh")
|
print_warn(
|
||||||
|
"pywal (wal) not found - install python-pywal and run: wal -i <wallpaper> && ~/pywal.sh"
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
print_warn("No wallpaper found - run manually: wal -i <wallpaper> && ~/pywal.sh")
|
print_warn(
|
||||||
|
"No wallpaper found - run manually: wal -i <wallpaper> && ~/pywal.sh"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def install_fastfetch_config(repo):
|
def install_fastfetch_config(repo):
|
||||||
"""Step: Install fastfetch configuration."""
|
|
||||||
home = Path.home()
|
home = Path.home()
|
||||||
fastfetch_src = repo / "fastfetch"
|
fastfetch_src = repo / "fastfetch"
|
||||||
|
|
||||||
@@ -407,13 +411,12 @@ def install_fastfetch_config(repo):
|
|||||||
print_warn("Skipping fastfetch config")
|
print_warn("Skipping fastfetch config")
|
||||||
return
|
return
|
||||||
|
|
||||||
# Copy to ~/.config/fastfetch/
|
|
||||||
fastfetch_dst = home / ".config" / "fastfetch"
|
fastfetch_dst = home / ".config" / "fastfetch"
|
||||||
if fastfetch_dst.exists():
|
if fastfetch_dst.exists():
|
||||||
shutil.rmtree(str(fastfetch_dst))
|
shutil.rmtree(str(fastfetch_dst))
|
||||||
shutil.copytree(str(fastfetch_src), str(fastfetch_dst))
|
shutil.copytree(str(fastfetch_src), str(fastfetch_dst))
|
||||||
|
|
||||||
# Fix hardcoded /home/duma/ path in config.jsonc for the current user
|
# Fix hardcoded home path
|
||||||
config_file = fastfetch_dst / "config.jsonc"
|
config_file = fastfetch_dst / "config.jsonc"
|
||||||
if config_file.exists():
|
if config_file.exists():
|
||||||
content = config_file.read_text()
|
content = config_file.read_text()
|
||||||
@@ -427,10 +430,12 @@ def install_fastfetch_config(repo):
|
|||||||
|
|
||||||
def print_banner():
|
def print_banner():
|
||||||
print(f"""{CYAN}{BOLD}
|
print(f"""{CYAN}{BOLD}
|
||||||
╦ ╦╦ ╦╔═╗╦═╗╔╦╗╦ ╦╔╦╗╔═╗
|
|
||||||
╠═╣╚╦╝╠═╝╠╦╝ ║║║ ║║║║╠═╣
|
▄▄ ▄▄ ▄▄ ▄▄ ▄▄▄▄ ▄▄▄▄ ▄▄▄▄ ▄▄ ▄▄ ▄▄ ▄▄ ▄▄▄
|
||||||
╩ ╩ ╩ ╩ ╩╚══╩╝╚═╝╩ ╩╩ ╩
|
██▄██ ▀███▀ ██▄█▀ ██▄█▄ ██▀██ ██ ██ ██▀▄▀██ ██▀██
|
||||||
Auto-Installer{RESET}
|
██ ██ █ ██ ██ ██ ████▀ ▀███▀ ██ ██ ██▀██
|
||||||
|
|
||||||
|
Auto-Installer{RESET}
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
|
||||||
@@ -463,48 +468,39 @@ def print_post_install():
|
|||||||
def main():
|
def main():
|
||||||
print_banner()
|
print_banner()
|
||||||
|
|
||||||
# Pre-flight check
|
|
||||||
check_arch()
|
check_arch()
|
||||||
|
|
||||||
total = 8
|
total = 8
|
||||||
step = 0
|
step = 0
|
||||||
|
|
||||||
# Step 1: AUR helpers
|
|
||||||
step += 1
|
step += 1
|
||||||
print_step(step, total, "AUR Helpers (yay/paru)")
|
print_step(step, total, "AUR Helpers (yay/paru)")
|
||||||
install_aur_helpers()
|
install_aur_helpers()
|
||||||
|
|
||||||
# Step 2: Packages
|
|
||||||
step += 1
|
step += 1
|
||||||
print_step(step, total, "Install Required Packages")
|
print_step(step, total, "Install Required Packages")
|
||||||
install_packages()
|
install_packages()
|
||||||
|
|
||||||
# Step 3: Caelestia
|
|
||||||
step += 1
|
step += 1
|
||||||
print_step(step, total, "Install Caelestia Shell")
|
print_step(step, total, "Install Caelestia Shell")
|
||||||
install_caelestia()
|
install_caelestia()
|
||||||
|
|
||||||
# Step 4: Clone / locate repo
|
|
||||||
step += 1
|
step += 1
|
||||||
print_step(step, total, "Locate/Clone Repository")
|
print_step(step, total, "Locate/Clone Repository")
|
||||||
repo = clone_repo()
|
repo = clone_repo()
|
||||||
|
|
||||||
# Step 5: Backup
|
|
||||||
step += 1
|
step += 1
|
||||||
print_step(step, total, "Backup Existing Configs")
|
print_step(step, total, "Backup Existing Configs")
|
||||||
backup_configs()
|
backup_configs()
|
||||||
|
|
||||||
# Step 6: Install configs
|
|
||||||
step += 1
|
step += 1
|
||||||
print_step(step, total, "Install Configuration Files")
|
print_step(step, total, "Install Configuration Files")
|
||||||
install_hypr_config(repo)
|
install_hypr_config(repo)
|
||||||
|
|
||||||
# Step 7: Pywal
|
|
||||||
step += 1
|
step += 1
|
||||||
print_step(step, total, "Setup Pywal Integration")
|
print_step(step, total, "Setup Pywal Integration")
|
||||||
install_pywal(repo)
|
install_pywal(repo)
|
||||||
|
|
||||||
# Step 8: Fastfetch
|
|
||||||
step += 1
|
step += 1
|
||||||
print_step(step, total, "Install Fastfetch Config")
|
print_step(step, total, "Install Fastfetch Config")
|
||||||
install_fastfetch_config(repo)
|
install_fastfetch_config(repo)
|
||||||
|
|||||||
Reference in New Issue
Block a user