Table of Contents
- Hyprpaper zu swaybg Port - README
- Wichtiger Hinweis: Keine Config-Datei
- Erfolgreich portierte Features
- Architektur-Unterschiede
- 1. Keine Config-Datei
- 2. Preload-Funktion
- 3. IPC (Inter-Process Communication)
- 4. Splash Screen
- 5. Multiple Instances per Output
- 6. Unload-Funktion
- Skalierungs-Modi
- Monitor-Auswahl
- Verwendung der Skripte
- Integration in niri config.kdl
- Option 1: Skript beim Start ausführen
- Option 2: Direkter swaybg-Aufruf
- Option 3: Keybinding für Wallpaper-Wechsel
- Deine portierte Konfiguration
- Alternativen zu swaybg
- Vergleichstabelle: hyprpaper vs. swaybg
- Empfehlung
- Installation von Alternativen
- Troubleshooting
- swaybg startet nicht
- Wallpaper wird nicht angezeigt
- Mehrere swaybg-Instanzen
- Skript funktioniert nicht
- Nützliche Kommandos
- Weitere Ressourcen
Hyprpaper zu swaybg Port - README
Diese Datei dokumentiert alle Unterschiede, Einschränkungen und Features beim Portieren von hyprpaper zu swaybg.
Wichtiger Hinweis: Keine Config-Datei
Hyprpaper: Verwendet eine Konfigurationsdatei (hyprpaper.conf)
swaybg: Keine Konfigurationsdatei - wird ausschließlich über Kommandozeilen-Parameter gesteuert
Daher wurden Shell-Skripte erstellt, um die hyprpaper-Funktionalität zu replizieren:
start-swaybg.sh- Startet swaybg mit deinen Wallpaper-Einstellungenchange-wallpaper.sh- Wechselt Wallpaper zur Laufzeit (IPC-Ersatz)
Erfolgreich portierte Features
- ✅ Wallpaper pro Monitor setzen
- ✅ Wallpaper für alle Monitore gleichzeitig setzen
- ✅ Bildpfade (
~/Bilder/aesthetic-wallpapers/images/fractal.png) - ✅ Scaling-Modi (fill, fit, stretch, center, tile)
- ✅ Multi-Monitor-Setup
Architektur-Unterschiede
1. Keine Config-Datei
Hyprpaper:
# hyprpaper.conf
preload = ~/Bilder/wallpaper.png
wallpaper = eDP-1,~/Bilder/wallpaper.png
ipc = on
swaybg: Nur Kommandozeile
swaybg -o eDP-1 -i ~/Bilder/wallpaper.png -m fill &
Lösung: Verwende das start-swaybg.sh Skript als "Config-Ersatz"
Status: Gelöst durch Shell-Skript
2. Preload-Funktion
Hyprpaper:
preload = ~/Bilder/wallpaper.png
wallpaper = eDP-1,~/Bilder/wallpaper.png
Hyprpaper lädt Bilder vorab in den Speicher für schnellere Wallpaper-Wechsel.
swaybg: Kein Preload
- Bilder werden direkt beim Setzen geladen
- Kein Caching im Speicher
- Bei Wallpaper-Wechsel muss swaybg neu gestartet werden
Status: Feature existiert nicht
3. IPC (Inter-Process Communication)
Hyprpaper:
ipc = on
Mit IPC kann hyprpaper zur Laufzeit gesteuert werden:
hyprctl hyprpaper wallpaper "eDP-1,~/Bilder/new-wallpaper.png"
hyprctl hyprpaper preload "~/Bilder/new-wallpaper.png"
hyprctl hyprpaper unload "~/Bilder/old-wallpaper.png"
swaybg: Kein IPC
- Keine Laufzeit-Steuerung
- Zum Wechseln muss swaybg neu gestartet werden
Lösung: Verwende das change-wallpaper.sh Skript:
./change-wallpaper.sh eDP-1 ~/Bilder/new-wallpaper.png fill
Status: Ersetzt durch Neustart-Skript
4. Splash Screen
Hyprpaper:
splash = false
Hyprpaper kann einen Splash-Screen beim Start anzeigen.
swaybg: Kein Splash Screen
- Startet sofort ohne visuelle Rückmeldung
- Keine Lade-Animation
Status: Feature existiert nicht (ist aber auch nicht nötig)
5. Multiple Instances per Output
Hyprpaper: Eine Instanz für alle Monitore
wallpaper = DP-1,~/Bilder/wallpaper1.png
wallpaper = HDMI-A-2,~/Bilder/wallpaper2.png
wallpaper = DP-2,~/Bilder/wallpaper3.png
swaybg: Separate Instanzen für jeden Monitor
swaybg -o DP-1 -i ~/Bilder/wallpaper1.png -m fill &
swaybg -o HDMI-A-2 -i ~/Bilder/wallpaper2.png -m fill &
swaybg -o DP-2 -i ~/Bilder/wallpaper3.png -m fill &
Oder eine Instanz für alle:
swaybg -o '*' -i ~/Bilder/wallpaper.png -m fill &
Unterschied: Bei swaybg muss für jeden Monitor mit unterschiedlichem Wallpaper eine separate Instanz laufen.
Status: Funktioniert, aber anders strukturiert
6. Unload-Funktion
Hyprpaper: Bilder können aus dem Speicher entfernt werden
hyprctl hyprpaper unload "~/Bilder/old-wallpaper.png"
swaybg: Kein Unload
- Prozess läuft, bis er beendet wird
- Speicher wird beim Beenden freigegeben
Status: Nicht relevant (kein Preload = kein Unload nötig)
Skalierungs-Modi
Beide unterstützen ähnliche Scaling-Modi:
| Hyprpaper | swaybg | Beschreibung |
|---|---|---|
fill |
fill |
Skaliert und beschneidet, um zu füllen |
fit |
fit |
Skaliert, um zu passen (mit Balken) |
stretch |
stretch |
Streckt auf volle Größe |
center |
center |
Zentriert ohne Skalierung |
tile |
tile |
Kachelt das Bild |
| - | solid_color |
Nur Hintergrundfarbe, kein Bild |
Status: Vollständig kompatibel
Monitor-Auswahl
Hyprpaper:
wallpaper = eDP-1,~/Bilder/wallpaper.png
swaybg:
swaybg -o eDP-1 -i ~/Bilder/wallpaper.png -m fill &
Wildcard für alle Monitore:
Hyprpaper: Nicht direkt unterstützt (muss für jeden Monitor einzeln gesetzt werden)
swaybg:
swaybg -o '*' -i ~/Bilder/wallpaper.png -m fill &
Status: swaybg ist hier flexibler mit dem * Wildcard
Verwendung der Skripte
Start-Skript (Autostart)
Das start-swaybg.sh Skript ersetzt die hyprpaper.conf:
# Ausführbar machen (bereits erledigt)
chmod +x ~/path/to/start-swaybg.sh
# Manuell starten
~/path/to/start-swaybg.sh
# In niri config.kdl einbinden:
spawn-at-startup "/home/zenn/opt/projects/niri/swaybg/start-swaybg.sh"
# Oder mit vollem Pfad:
spawn-sh-at-startup "$HOME/opt/projects/niri/swaybg/start-swaybg.sh"
Wallpaper zur Laufzeit wechseln
Das change-wallpaper.sh Skript ersetzt hyprpapers IPC:
# Wallpaper für einen Monitor wechseln
./change-wallpaper.sh eDP-1 ~/Bilder/new-wallpaper.png fill
# Wallpaper für alle Monitore wechseln
./change-wallpaper.sh '*' ~/Bilder/new-wallpaper.png fill
# Mit verschiedenen Scaling-Modi
./change-wallpaper.sh eDP-1 ~/Bilder/wallpaper.png fit
./change-wallpaper.sh eDP-1 ~/Bilder/wallpaper.png center
./change-wallpaper.sh eDP-1 ~/Bilder/wallpaper.png tile
Skript-Syntax
./change-wallpaper.sh [output] [image-path] [mode]
# Parameter:
# output - Monitor-Name (z.B. eDP-1) oder '*' für alle
# image-path - Vollständiger Pfad zum Bild
# mode - fill, fit, stretch, center, tile (Standard: fill)
Integration in niri config.kdl
Option 1: Skript beim Start ausführen
// In der niri config.kdl Datei:
spawn-at-startup "/home/zenn/opt/projects/niri/swaybg/start-swaybg.sh"
Option 2: Direkter swaybg-Aufruf
// Einzelnes Wallpaper für alle Monitore
spawn-sh-at-startup "swaybg -o '*' -i ~/Bilder/aesthetic-wallpapers/images/fractal.png -m fill &"
// Oder für jeden Monitor einzeln:
spawn-sh-at-startup "swaybg -o eDP-1 -i ~/Bilder/aesthetic-wallpapers/images/fractal.png -m fill &"
spawn-sh-at-startup "swaybg -o DP-1 -i ~/Bilder/aesthetic-wallpapers/images/lofi_cat.png -m fill &"
spawn-sh-at-startup "swaybg -o HDMI-A-2 -i ~/Bilder/aesthetic-wallpapers/images/lofi_cat.png -m fill &"
Option 3: Keybinding für Wallpaper-Wechsel
binds {
// Wallpaper wechseln mit Mod+W
Mod+Shift+W { spawn-sh "/home/zenn/opt/projects/niri/swaybg/change-wallpaper.sh '*' ~/Bilder/new-wallpaper.png fill"; }
}
Deine portierte Konfiguration
Hyprpaper (Original):
preload = ~/Bilder/aesthetic-wallpapers/images/fractal.png
wallpaper = eDP-1,~/Bilder/aesthetic-wallpapers/images/fractal.png
splash = false
ipc = on
swaybg (Portiert - im start-swaybg.sh):
#!/bin/bash
killall swaybg 2>/dev/null
sleep 0.5
swaybg -o eDP-1 \
-i ~/Bilder/aesthetic-wallpapers/images/fractal.png \
-m fill &
Alternativen zu swaybg
Falls dir die Limitierungen von swaybg nicht gefallen:
1. wpaperd (empfohlen)
- Config-Datei basiert (ähnlich wie hyprpaper)
- Unterstützt dynamische Wallpaper
- Bessere Speicherverwaltung
- Hotreload der Config
# ~/.config/wpaperd/config.toml
[eDP-1]
path = "~/Bilder/aesthetic-wallpapers/images/fractal.png"
mode = "fill"
2. swww (Wayland Wallpaper Daemon)
- IPC-Unterstützung
- Animierte Wallpaper
- Smooth Transitions zwischen Wallpapern
- Ähnlicher zu hyprpaper
swww init
swww img ~/Bilder/aesthetic-wallpapers/images/fractal.png
3. mpvpaper (für Videos/GIFs)
- Kann Videos als Wallpaper abspielen
- Ideal für animated wallpapers
Vergleichstabelle: hyprpaper vs. swaybg
| Feature | Hyprpaper | swaybg | wpaperd | swww |
|---|---|---|---|---|
| Config-Datei | ✅ | ❌ | ✅ | ⚠️ (daemon) |
| IPC | ✅ | ❌ | ⚠️ | ✅ |
| Preload | ✅ | ❌ | ✅ | ✅ |
| Multi-Monitor | ✅ | ✅ | ✅ | ✅ |
| Scaling-Modi | ✅ | ✅ | ✅ | ✅ |
| Live-Reload | ✅ | ❌ | ✅ | ✅ |
| Animationen | ❌ | ❌ | ❌ | ✅ |
| Speicher-Effizienz | Mittel | Gut | Sehr gut | Mittel |
| Einfachheit | Mittel | Sehr einfach | Mittel | Komplex |
Legende:
- ✅ Vollständig unterstützt
- ⚠️ Teilweise unterstützt oder anders
- ❌ Nicht unterstützt
Empfehlung
Für deine Anforderungen:
-
swaybg (aktuell): Einfach, stabil, tut was es soll
- ✅ Gut für statische Wallpaper
- ✅ Minimaler Overhead
- ❌ Keine IPC
- ❌ Keine Config-Datei
-
wpaperd (empfohlen): Beste hyprpaper-Alternative
- ✅ Config-Datei wie hyprpaper
- ✅ Bessere Speicherverwaltung
- ✅ Hotreload
- ⚠️ Noch in aktiver Entwicklung
-
swww (für Power-User): Wenn du IPC und Animationen willst
- ✅ IPC wie hyprpaper
- ✅ Smooth transitions
- ✅ Animated wallpapers
- ❌ Komplexer Setup
Installation von Alternativen
wpaperd
# Arch Linux
yay -S wpaperd
# Config erstellen
mkdir -p ~/.config/wpaperd
cat > ~/.config/wpaperd/config.toml << 'EOF'
[eDP-1]
path = "~/Bilder/aesthetic-wallpapers/images/fractal.png"
mode = "fill"
# Für Desktop-Monitore:
# [DP-1]
# path = "~/Bilder/aesthetic-wallpapers/images/lofi_cat.png"
# mode = "fill"
EOF
# In niri starten:
spawn-at-startup "wpaperd"
swww
# Arch Linux
yay -S swww
# In niri starten:
spawn-at-startup "swww-daemon"
# Wallpaper setzen:
spawn-sh-at-startup "sleep 1 && swww img ~/Bilder/aesthetic-wallpapers/images/fractal.png"
Troubleshooting
swaybg startet nicht
# Check ob swaybg installiert ist
which swaybg
# Manuell testen
swaybg -o '*' -i ~/Bilder/aesthetic-wallpapers/images/fractal.png -m fill
# Logs checken
journalctl --user -u niri -f
Wallpaper wird nicht angezeigt
# Bildpfad validieren
ls -lh ~/Bilder/aesthetic-wallpapers/images/fractal.png
# Ausgabe-Namen checken
niri msg outputs
# Mit korrektem Output-Namen neu versuchen
swaybg -o <OUTPUT-NAME> -i ~/Bilder/wallpaper.png -m fill
Mehrere swaybg-Instanzen
# Alle beenden
killall swaybg
# Oder spezifisch nach PID
ps aux | grep swaybg
kill <PID>
Skript funktioniert nicht
# Ausführbar machen
chmod +x start-swaybg.sh
chmod +x change-wallpaper.sh
# Testen
./start-swaybg.sh
echo $? # sollte 0 sein bei Erfolg
Nützliche Kommandos
# swaybg für alle Monitore mit gleichem Wallpaper
swaybg -o '*' -i ~/path/to/wallpaper.png -m fill &
# Nur Hintergrundfarbe (ohne Bild)
swaybg -o '*' -c '#808080' -m solid_color &
# Verschiedene Wallpaper pro Monitor
swaybg -o eDP-1 -i ~/wallpaper1.png -m fill &
swaybg -o HDMI-A-2 -i ~/wallpaper2.png -m fill &
# swaybg beenden
killall swaybg
# Laufende Instanzen anzeigen
ps aux | grep swaybg
Weitere Ressourcen
Generiert am: 2025-10-27 Von: Hyprpaper → swaybg Config Converter Empfehlung: Für einfache statische Wallpaper ist swaybg perfekt. Für mehr Features (IPC, Config-Datei), schaue dir wpaperd oder swww an.