NAME
scenery-wallpapers — A visual CLI wallpaper manager for Linux power users. Index, tag, and preview images directly in your terminal. Built…
SYNOPSIS
pip install -UINFO
DESCRIPTION
A visual CLI wallpaper manager for Linux power users. Index, tag, and preview images directly in your terminal. Built with Python, Typer & Rich.
README
🌄 Scenery
The Wallpaper Manager for Power Users
Organize, index, and deploy your wallpaper collection with the power of the CLI.
⚡ What is Scenery?
Scenery isn’t just an image folder. It’s an intelligent indexing engine designed for minimalist setups (Arch Linux, Hyprland, Sway).
It fixes the chaos of having thousands of images named like wallhaven-8392.jpg. Scenery analyzes your images, extracts dominant colors, computes their resolution, and lets you inject them into your desktop with simple commands.
🚀 “Galaxy Brain” Features
- 🔍 Visual CLI Search: A beautiful
Rich-powered UI that shows metadata and terminal previews. - 🎨 Color Extraction: Automatically detects whether a wallpaper is
dark,red, ornordthrough palette analysis. - 🛡️ MD5 Integrity: Moved files? Renamed folders? Scenery uses hashes, not names, so your database never breaks.
- 🤖 Smart Import: Recursively scans your old wallpaper folder, detects duplicates, and organizes everything automatically.
- pipe-friendly: Designed for chaining.
scenery getoutputs clean paths, perfect forswww,feh, orhyprpaper.
🖼️ Previews (current collection)
🛠️ Tech Stack
Built with modern libraries to ensure stability and speed:
- Typer: For a robust CLI with autocomplete.
- Rich: For a beautiful terminal UI.
- Pillow: Image processing.
- Colorgram: Color palette extraction.
📦 Quick Install
Clone the repository:
git clone https://github.com/Doble-2/scenery-wallpapers.git cd scenery-wallpapersSet up the environment (recommended on Arch due to PEP 668):
python -m venv .venv source .venv/bin/activate python -m pip install -U pip python -m pip install -r requirements.txt
Optional (terminal preview):
sudo pacman -S chafa
- Configure Paths:
Create your
.envfile to protect your privacy.cp .env.example .env # Edit .env and set the path to your old wallpapers folderIMPORTANT: Use absolute paths (e.g. /home/your-user/Pictures/Wallpapers)
🎮 Usage Guide
Make sure your environment is activated. Here’s the typical workflow of an Architect:
1. Data Ingestion (Import)
Bring your old wallpapers into the 21st century. Scenery will copy them, avoid duplicates, and organize the structure.
python scenery.py import --verbose
2. Indexing (Index)
Analyzes files in assets/, extracts colors, and generates the manifest.yaml database.
python scenery.py index
3. Search and Filtering
Looking for something dark to code at night?
python scenery.py search --tag dark --tag minimalist
Default output (simpler): clickable name, resolution, tags, and colors.
Useful flags:
# Show preview (uses chafa if you’re in the VS Code terminal) python scenery.py search --tag minecraft --previewControl preview size
python scenery.py search --tag minecraft --preview --preview-width 50 --preview-height 12
Show extra columns (if you need them)
python scenery.py search --tag minecraft --show-path --show-id
4. Integration (The Magic)
Use scenery inside your Hyprland scripts or startup configuration.
Example: Change to a random wallpaper with SWWW
swww img $(python scenery.py get --random) --transition-type grow
Example: Specific “Nord” themed wallpaper
swww img $(python scenery.py get --tag "nord" --random)
📂 Repository Structure
scenery-wallpapers/
├── assets/ # 🖼️ Your image sanctuary (managed by Scenery)
├── src/ # 🧠 Lógica del Core y CLI
├── manifest.yaml # 🗃️ Portable database (YAML)
└── scenery.py # 🚀 Entry point
🤝 Contributing
Got an idea to improve the color algorithm or support more formats? PRs are welcome!
- Fork the repo.
- Create your branch (
git checkout -b feature/AmazingFeature). - Commit (
git commit -m 'Add AmazingFeature'). - Push (
git push origin feature/AmazingFeature). - Open a Pull Request.







