βββ ββ ββ
ββ ββ β β β β
βββββ ββββ βββββ ββ βββββ βββββ
ββ βββββ ββ ββ ββ ββ ββ ββ ββ
ββ βββββ ββ βββ βββββ ββ ββ
Tarion is a developer-focused, immutable Fedora Atomic distro built with Universal Blue. It combines Hyprland, Vicinae launcher, and powerful developer tools to create a minimal, dark, and unapologetically productive desktop experience.
Minimal. Dark. Developer-First. Atomic.
- Hyprland - Fast, dynamic tiling Wayland compositor
- DankMaterialShell (DMS) - Modern desktop shell providing widgets, top bar, and notification management
- Greetd + DMS-Greeter - Secure, integrated login manager and lock screen
- Hyprscrolling - Native scrolling layout plugin for Hyprland (PaperWM-style)
- Vicinae - Keyboard-driven launcher with plugins and dmenu support
- Ghostty - Modern terminal emulator
- Developer Tools - Homebrew-based installation of ripgrep, fd, bat, eza, starship, lazygit, zoxide
- Auto-updates - Seamless rpm-ostree updates
- Immutable Base - Fedora Atomic with Universal Blue
Warning
This is experimental territory. Proceed with caution.
Rebase an existing Fedora Atomic system to Tarion:
- Rebase to the unsigned image first:
rpm-ostree rebase ostree-unverified-registry:ghcr.io/denogio/tarion:latest- Reboot:
systemctl reboot- Rebase to the signed image:
rpm-ostree rebase ostree-image-signed:docker://ghcr.io/denogio/tarion:latest- Reboot again:
systemctl rebootThe
latesttag always points to the newest build.
On first login, the Tarion setup wizard will guide you through:
- Installing developer tools (via Homebrew)
- Configuring Git
- Generating SSH keys
- Setting up wallpapers
You can also run the setup wizard manually:
tarion-setupTarion comes with a justfile for managing developer tools:
# Show all available commands
just
# Install all developer tools (ripgrep, fd, bat, eza, starship, lazygit, zoxide)
just dev-tools
# Configure developer tools (aliases, prompts)
just dev-setup
# Show installed tool versions
just dev-info
# Update all tools
just dev-update
# Clean up old versions
just dev-cleanTarion uses Vicinae as the primary launcher with extensive customizations:
- Application launcher - SUPER+R
- System controls menu - SUPER+SHIFT+R (dmenu mode)
- Window management - Built-in support
- Clipboard management - Built-in support
- Plugin system - Extensible with community plugins
- Power management (reboot, suspend, lock)
- Display settings (brightness, night mode)
- Network controls (WiFi, Bluetooth)
- System info (CPU, memory, temperature)
- System configuration
- SUPER+Enter - Open terminal (Ghostty)
- SUPER+E - File manager (Thunar)
- SUPER+Space - Vicinae launcher
- SUPER+SHIFT+R - Vicinae system controls (dmenu)
- CTRL+ALT+Space - Vicinae window selection mode
- SUPER+L - Lock screen (DMS)
- SUPER+W - Random wallpaper
- SUPER+SHIFT+W - Next wallpaper
- SUPER+Print - Screenshot (region)
- SUPER+SHIFT+Print - Screenshot (full screen)
- Arrow keys - Navigate windows (scrolling layout)
- SHIFT+Arrow keys - Move windows
- SUPER+, / SUPER+. - Cycle window sizes (scrolling layout)
- 0-9 - Switch workspaces
- Ctrl+P - Search filter
- Ctrl+, - Open settings
- Ctrl+B - Toggle action panel
- Ctrl+R - Refresh
Tarion includes a powerful wallpaper switcher using DMS IPC for seamless wallpaper management.
- Press SUPER+R to open Vicinae
- Select "Wallpaper Switcher"
- Choose from:
- π² Random Wallpaper - Select a random wallpaper
- βοΈ Next Wallpaper - Cycle to next wallpaper
βοΈ Previous Wallpaper - Cycle to previous wallpaper- π¨ Theme Wallpaper - Use a random wallpaper from current theme
- π Select Wallpaper - Manual wallpaper selection
- π Refresh List - Scan for new wallpapers
- π Sync to Greeter - Sync current wallpaper to login screen
- SUPER+W - Random wallpaper
- SUPER+SHIFT+W - Next wallpaper
- SUPER+ALT+W - Previous wallpaper
# Random wallpaper
tarion-wallpaper-switcher random
# Next wallpaper
tarion-wallpaper-switcher next
# Previous wallpaper
tarion-wallpaper-switcher prev
# Get current wallpaper
tarion-wallpaper-switcher get
# Use theme wallpaper
tarion-wallpaper-switcher from-theme
# Set specific wallpaper
tarion-wallpaper-switcher set ~/Pictures/Wallpapers/my-wallpaper.jpg
# List all wallpapers
tarion-wallpaper-switcher list
# Sync wallpaper to DMS-greeter (login screen)
tarion-wallpaper-switcher sync-greeter
# Refresh wallpaper list
tarion-wallpaper-switcher refresh- User wallpapers:
~/Pictures/Wallpapers/ - Theme wallpapers:
~/.config/tarion/current/theme/backgrounds/ - State file:
~/.config/tarion/wallpaper-state
The wallpaper switcher uses DMS IPC calls for wallpaper management:
dms ipc call wallpaper set <path>- Set wallpaperdms ipc call wallpaper next- Next wallpaperdms ipc call wallpaper prev- Previous wallpaperdms ipc call wallpaper get- Get current wallpaper
DMS handles all wallpaper rendering, ensuring seamless integration with the desktop shell.
- State file:
~/.config/tarion/wallpaper-state
The setup wizard downloads 18 curated high-quality wallpapers from Unsplash on first login. Wallpapers include abstract gradients, dark minimalist designs, cyberpunk aesthetics, landscapes, and space imagery.
Backup your Tarion configuration:
tarion-backupRestore from backup:
tarion-restore <backup-file>Backups are stored in: ~/.config/tarion/backups/
Update Tarion:
tarion-updateTarion uses an "Always-Source" model to keep your configurations up to date with the image. The tarion-sync tool runs automatically at login and ensures your local ~/.config files point to the system-wide defaults in /usr/share/tarion/defaults/.
To manually ensure your local configurations are correctly linked to the system-wide defaults:
tarion-sync --forceOr manually:
rpm-ostree upgrade
systemctl rebootClean up old deployments:
tarion-cleanGenerate an offline ISO from a Fedora Atomic system following Universal Blue instructions.
β οΈ GitHub cannot host these ISOs due to size. Public projects require external hosting.
All images are signed with Sigstore via cosign.
Verify your build with:
cosign verify --key cosign.pub ghcr.io/denogio/tarionKey configuration locations:
- Hyprland:
~/.config/hypr/hyprland.conf - DMS:
~/.config/dms/ - Vicinae:
~/.config/vicinae/ - Ghostty:
~/.config/ghostty/config - Neovim:
~/.config/nvim/init.lua - Shell:
~/.bashrc
systemctl --user restart vicinaedms reloadIf you have messed up your configuration, you can force a sync from the system defaults:
tarion-sync --forceThis will restore the "managed" stubs that source the system-wide configuration files while keeping your own additions if they are placed outside the managed blocks.
Build Tarion locally using blue-build:
# Install blue-build
pip install blue-build
# Build image
blue-build build recipes/recipe.ymlContributions are welcome! Please read CONTRIBUTING.md for details.
This project uses ShellCheck to ensure bash script quality and follows strict coding standards.
ShellCheck Integration:
- All shell scripts are validated with ShellCheck
- Pre-commit hooks ensure quality before commits
- CI/CD pipeline validates code on pull requests
- Zero shellcheck warnings/errors are allowed
Running ShellCheck Locally:
# Install shellcheck in distrobox container
distrobox create -n shellcheck-dev -i registry.fedoraproject.org/fedora:41 --yes
distrobox enter shellcheck-dev -- sudo dnf install -y ShellCheck
# Run shellcheck on all scripts
bash scripts/lint-shell.shProject Structure:
files/system/usr/share/tarion/defaults/- Gold Standard system configurationsfiles/system/usr/share/tarion/themes/- Tarion branding and themesfiles/system/usr/lib/tarion/pkg/- Package manager systemfiles/system/usr/bin/- Tarion system utilities (includingtarion-sync)files/scripts/- System build-time setup and maintenance scriptsscripts/- Development utilities and quality checks
When contributing to Tarion:
- All shell scripts must pass ShellCheck validation
- Follow existing code patterns and conventions
- Test changes in a distrobox environment
- Ensure pre-commit hooks pass before committing
Setup Development Environment:
# Install pre-commit hooks
pipx install pre-commit
pre-commit install
# Create shellcheck container
distrobox create -n shellcheck-dev -i registry.fedoraproject.org/fedora:41 --yes
distrobox enter shellcheck-dev -- sudo dnf install -y ShellCheck
# Test your changes
pre-commit run shellcheck --all-filesLicensed under same license as Universal Blue (Apache License 2.0).
See LICENSE for details.
Built with β€οΈ using:
- Universal Blue
- Fedora Atomic
- Hyprland
- DankMaterialShell - Premium desktop shell
- Hyprscrolling - PaperWM-style window management
- greetd - Login manager daemon
- Vicinae
- Blue Build
- Wayblue
Tarion is inspired by and partly based on Omarchy. Many of the configuration patterns and architectural decisions are derived from their work in building a cohesive Hyprland experience on Fedora Atomic.
Made with π€ by denogio