Table of Contents
- Wayland Monitor Configuration Guide
- Übersicht: xrandr-Äquivalente für Wayland
- 1. niri msg (für Niri) ⭐ EMPFOHLEN FÜR DICH
- Alle Monitore anzeigen
- Monitor-Konfiguration
- Verfügbare Transform-Werte
- Monitor aktivieren/deaktivieren
- Live-Reload
- 2. wlr-randr (Universal für wlroots) ⭐ EMPFOHLEN FÜR MULTI-COMPOSITOR
- 3. swaymsg (für Sway)
- 4. hyprctl (für Hyprland)
- 5. wdisplays (GUI) ⭐ EMPFOHLEN FÜR ANFÄNGER
- 6. kanshi (Auto-Konfiguration) ⭐ EMPFOHLEN FÜR DYNAMISCHE SETUPS
- Installation
- Monitor-Informationen herausfinden
- Konfiguration
- Erweiterte Syntax-Optionen
- Monitor-Matching Regeln
- Starten und Verwenden
- Debug und Testen
- Beispiel: Dein Setup
- Vorteile von kanshi
- Troubleshooting
- 7. wlay (CLI Alternative)
- Vergleichstabelle
- Empfehlung für dein Setup (Niri)
- Option 1: Niri config.kdl (statisch) ⭐ EINFACHSTE LÖSUNG
- Option 2: kanshi (dynamisch) ⭐ EMPFOHLEN FÜR LAPTOP
- Option 3: wlr-randr (manuell) ⭐ FÜR SCHNELLE ÄNDERUNGEN
- Option 4: wdisplays (GUI) ⭐ FÜR VISUELLE KONFIGURATION
- Skript-Beispiele
- Troubleshooting
- Monitor wird nicht erkannt
- Position stimmt nicht
- Config wird nicht geladen
- wlr-randr funktioniert nicht
- Zusammenfassung: Deine beste Option
Wayland Monitor Configuration Guide
Alternativen zu xrandr für Wayland-Compositoren.
Übersicht: xrandr-Äquivalente für Wayland
| Tool | Compositor | Empfehlung |
|---|---|---|
| niri msg | Niri | ⭐ Beste Option für Niri |
| wlr-randr | wlroots-basiert | ⭐ Universal für Sway, River, etc. |
| swaymsg | Sway | ⭐ Beste Option für Sway |
| hyprctl | Hyprland | ⭐ Beste Option für Hyprland |
| wdisplays | Alle | ⭐ GUI-Tool (wie arandr) |
| kanshi | Alle | ⭐ Auto-Config basierend auf angeschlossenen Monitoren |
| wlay | wlroots-basiert | CLI alternative |
1. niri msg (für Niri) ⭐ EMPFOHLEN FÜR DICH
Alle Monitore anzeigen
niri msg outputs
Ausgabe:
Output "eDP-1"
Current mode: 1920x1080 @ 60.000 Hz
Position: 0,0
Scale: 1.0
Transform: normal
Output "HDMI-A-2"
Current mode: 1920x1080 @ 60.000 Hz
Position: 1920,0
Scale: 1.0
Transform: normal
Monitor-Konfiguration
In Niri erfolgt die Konfiguration direkt in der config.kdl:
// ~/.config/niri/config.kdl
// Laptop-Display
output "eDP-1" {
mode "1920x1080@60.030"
scale 1.5
transform "normal"
position x=0 y=0
}
// Externer Monitor 1
output "HDMI-A-2" {
mode "1920x1080@60"
scale 1.0
transform "normal"
position x=1280 y=0 // Berücksichtigt Scale von eDP-1
}
// Vertikaler Monitor (90° gedreht)
output "DP-1" {
mode "1920x1080@60"
scale 1.0
transform "90" // oder "270"
position x=0 y=-1080
}
Verfügbare Transform-Werte
normal- keine Rotation90- 90° gegen Uhrzeigersinn180- 180° gedreht270- 270° gegen Uhrzeigersinnflipped- horizontal gespiegeltflipped-90,flipped-180,flipped-270- gespiegelt + rotiert
Monitor aktivieren/deaktivieren
output "eDP-1" {
off // Monitor deaktivieren
}
Live-Reload
Niri lädt die Config automatisch neu - einfach speichern!
2. wlr-randr (Universal für wlroots) ⭐ EMPFOHLEN FÜR MULTI-COMPOSITOR
Installation
# Arch Linux
sudo pacman -S wlr-randr
# Andere Distros
# Debian/Ubuntu: sudo apt install wlr-randr
# Fedora: sudo dnf install wlr-randr
Alle Monitore anzeigen
wlr-randr
Ausgabe:
eDP-1 "Built-in screen" (connected)
Physical size: 340x190 mm
Enabled: yes
Modes:
1920x1080 px, 60.000000 Hz (current)
1680x1050 px, 60.000000 Hz
Position: 0,0
Transform: normal
Scale: 1.000000
HDMI-A-2 "External monitor" (connected)
Physical size: 530x300 mm
Enabled: yes
Modes:
1920x1080 px, 60.000000 Hz (current)
1920x1080 px, 50.000000 Hz
Position: 1920,0
Transform: normal
Scale: 1.000000
Monitor konfigurieren
Resolution ändern:
wlr-randr --output HDMI-A-2 --mode 1920x1080@60
Position setzen:
wlr-randr --output HDMI-A-2 --pos 1920,0
Rotation:
wlr-randr --output DP-1 --transform 90 # oder 0, 90, 180, 270
Scale (HiDPI):
wlr-randr --output eDP-1 --scale 1.5
Monitor aus/an:
wlr-randr --output HDMI-A-2 --off
wlr-randr --output HDMI-A-2 --on
Alle Monitore aus:
wlr-randr --output '*' --off
Komplettes Setup-Beispiel
# Laptop-Display: 1920x1080, scale 1.5, Position 0,0
wlr-randr --output eDP-1 --mode 1920x1080@60 --scale 1.5 --pos 0,0
# Externer Monitor: 1920x1080, Position rechts vom Laptop
wlr-randr --output HDMI-A-2 --mode 1920x1080@60 --pos 1280,0
# Vertikaler Monitor: 1920x1080, 90° gedreht, Position links
wlr-randr --output DP-1 --mode 1920x1080@60 --transform 90 --pos -1080,0
3. swaymsg (für Sway)
Alle Monitore anzeigen
swaymsg -t get_outputs
Konfiguration in Sway
In ~/.config/sway/config:
# Laptop-Display
output eDP-1 {
resolution 1920x1080@60Hz
position 0,0
scale 1.5
transform normal
}
# Externer Monitor
output HDMI-A-2 {
resolution 1920x1080@60Hz
position 1280,0
scale 1.0
}
# Vertikaler Monitor
output DP-1 {
resolution 1920x1080@60Hz
position -1080,0
transform 90
}
Runtime-Änderungen
swaymsg output HDMI-A-2 mode 1920x1080@60Hz
swaymsg output HDMI-A-2 pos 1920 0
swaymsg output HDMI-A-2 scale 1.5
swaymsg output HDMI-A-2 transform 90
4. hyprctl (für Hyprland)
Alle Monitore anzeigen
hyprctl monitors
Konfiguration in Hyprland
In ~/.config/hypr/hyprland.conf:
# Format: monitor=NAME,RESOLUTION@REFRESH,POSITION,SCALE,TRANSFORM
monitor=eDP-1,1920x1080@60,0x0,1.5,transform,0
monitor=HDMI-A-2,1920x1080@60,1280x0,1
monitor=DP-1,1920x1080@60,-1080x0,1,transform,1
Transform-Werte:
0= normal1= 90°2= 180°3= 270°
5. wdisplays (GUI) ⭐ EMPFOHLEN FÜR ANFÄNGER
Installation
# Arch Linux
sudo pacman -S wdisplays
# Andere Distros
# Debian/Ubuntu: sudo apt install wdisplays
# Fedora: sudo dnf install wdisplays
Verwendung
wdisplays
Features:
- Drag & Drop Monitor-Anordnung (wie arandr für X11)
- Visuelle Darstellung der Monitor-Positionen
- Resolution, Scale, Rotation per Dropdown
- Speichern von Profilen
- Funktioniert mit allen wlroots-basierten Compositoren
6. kanshi (Auto-Konfiguration) ⭐ EMPFOHLEN FÜR DYNAMISCHE SETUPS
Kanshi erkennt automatisch angeschlossene Monitore und lädt passende Profile.
Installation
# Arch Linux
sudo pacman -S kanshi
Monitor-Informationen herausfinden
Bevor du kanshi konfigurierst, musst du die genauen Monitor-Informationen kennen:
Option 1: Mit wlr-randr (empfohlen)
wlr-randr
Ausgabe-Beispiel:
eDP-1 "BOE 0x095F Unknown (eDP-1)" (connected)
Physical size: 344x194 mm
Make: BOE
Model: 0x095F
Serial: Unknown
Enabled: yes
Modes:
1920x1080 px, 60.049000 Hz (current)
Position: 0,0
Transform: normal
Scale: 1.000000
HDMI-A-2 "Dell Inc. DELL U2415 D3TM8456ABCD" (connected)
Physical size: 520x320 mm
Make: Dell Inc.
Model: DELL U2415
Serial: D3TM8456ABCD
Enabled: yes
Modes:
1920x1200 px, 59.950000 Hz (current)
1920x1080 px, 60.000000 Hz
Position: 1920,0
Transform: normal
Scale: 1.000000
DP-1 "Samsung Electric Company S24C650 H4ZN123456" (connected)
Physical size: 521x293 mm
Make: Samsung Electric Company
Model: S24C650
Serial: H4ZN123456
Enabled: yes
Modes:
1920x1080 px, 60.000000 Hz (current)
Position: 3840,0
Transform: 90
Scale: 1.000000
Wichtige Informationen:
- Output-Name:
eDP-1,HDMI-A-2,DP-1 - Make: Hersteller (z.B. "Dell Inc.", "Samsung Electric Company")
- Model: Modellnummer (z.B. "DELL U2415", "S24C650")
- Serial: Seriennummer (z.B. "D3TM8456ABCD") - wichtig für eindeutige Identifikation!
Option 2: Mit niri msg
niri msg outputs
Ausgabe-Beispiel:
Output "eDP-1"
Make: BOE
Model: 0x095F
Serial: Unknown
Current mode: 1920x1080 @ 60.049 Hz
Position: 0,0
Scale: 1.0
Transform: normal
Output "HDMI-A-2"
Make: Dell Inc.
Model: DELL U2415
Serial: D3TM8456ABCD
Current mode: 1920x1200 @ 59.950 Hz
Position: 1920,0
Scale: 1.0
Transform: normal
Option 3: Mit swaymsg (für Sway)
swaymsg -t get_outputs | jq '.[].make, .[].model, .[].serial'
Konfiguration
~/.config/kanshi/config:
Basis-Konfiguration (Output-Namen)
# Profil: Nur Laptop
profile laptop {
output eDP-1 mode 1920x1080@60Hz position 0,0 scale 1.0
}
# Profil: Laptop + externer Monitor
profile docked {
output eDP-1 mode 1920x1080@60Hz position 0,0 scale 1.5
output HDMI-A-2 mode 1920x1080@60Hz position 1280,0 scale 1.0
}
# Profil: Nur externe Monitore (Laptop zu)
profile desktop {
output eDP-1 disable
output HDMI-A-2 mode 1920x1080@60Hz position 0,0 scale 1.0
output DP-1 mode 1920x1080@60Hz position 1920,0 scale 1.0 transform 90
}
Problem: HDMI-A-2 kann verschiedene Monitore sein! Lösung: Seriennummern verwenden.
Erweiterte Konfiguration (mit Seriennummern) ⭐ EMPFOHLEN
Syntax:
output "Make Model Serial" mode WxH@refresh position X,Y scale SCALE transform TRANSFORM
Vollständiges Beispiel:
# ==========================================
# Home Office Setup
# ==========================================
profile home-office {
# Laptop-Display (integriert, keine Serial)
output eDP-1 mode 1920x1080@60Hz position 0,0 scale 1.5
# Dell U2415 Monitor (links)
output "Dell Inc. DELL U2415 D3TM8456ABCD" {
mode 1920x1200@60Hz
position 1280,0
scale 1.0
transform normal
}
# Samsung Monitor (rechts, vertikal)
output "Samsung Electric Company S24C650 H4ZN123456" {
mode 1920x1080@60Hz
position 3200,0
scale 1.0
transform 90
}
}
# ==========================================
# Büro Setup
# ==========================================
profile office {
# Laptop-Display ausschalten
output eDP-1 disable
# Dell Büro-Monitor (Hauptmonitor)
output "Dell Inc. DELL P2419H 5K8RP12345AB" {
mode 1920x1080@60Hz
position 0,0
scale 1.0
}
# Zusätzlicher Monitor (rechts)
output "Hewlett Packard HP E243 CN12345678" {
mode 1920x1080@60Hz
position 1920,0
scale 1.0
}
}
# ==========================================
# Unterwegs / Nur Laptop
# ==========================================
profile mobile {
output eDP-1 mode 1920x1080@60Hz position 0,0 scale 1.0
}
# ==========================================
# Gaming Setup (z.B. am TV)
# ==========================================
profile gaming {
output eDP-1 disable
# LG OLED TV
output "LG Electronics LG TV SSCR2 0x01010101" {
mode 3840x2160@60Hz
position 0,0
scale 2.0
}
}
# ==========================================
# Präsentations-Setup (Beamer)
# ==========================================
profile presentation {
# Laptop-Display an (zum Steuern)
output eDP-1 mode 1920x1080@60Hz position 0,0 scale 1.0
# Beamer (meist generische Info)
output HDMI-A-1 {
mode 1920x1080@60Hz
position 1920,0
scale 1.0
}
}
Erweiterte Syntax-Optionen
Wildcards und Muster
# Jeder Dell Monitor (wenn Serial nicht wichtig)
profile any-dell {
output "Dell Inc. *" mode 1920x1080@60Hz position 1920,0
}
# Alle Monitore auf HDMI
profile hdmi-only {
output HDMI-A-* mode 1920x1080@60Hz position 0,0
}
Exec-Befehle (zusätzliche Aktionen)
profile home-office {
output eDP-1 mode 1920x1080@60Hz position 0,0
output "Dell Inc. DELL U2415 D3TM8456ABCD" mode 1920x1200@60Hz position 1920,0
# Führe Befehle aus wenn dieses Profil geladen wird
exec notify-send "Kanshi" "Home Office Setup aktiviert"
exec swaybg -o eDP-1 -i ~/Bilder/wallpaper-laptop.png &
exec swaybg -o HDMI-A-2 -i ~/Bilder/wallpaper-monitor.png &
}
Include-Direktive
# Haupt-Config: ~/.config/kanshi/config
include ~/.config/kanshi/home.conf
include ~/.config/kanshi/office.conf
Dann in separaten Dateien:
~/.config/kanshi/home.conf:
profile home-setup {
output eDP-1 mode 1920x1080@60Hz position 0,0
output "Dell Inc. DELL U2415 D3TM8456ABCD" mode 1920x1200@60Hz position 1920,0
}
Monitor-Matching Regeln
Kanshi wählt das erste passende Profil aus. Reihenfolge ist wichtig!
Beispiel: Spezifisch vor generisch
# ✅ RICHTIG: Spezifische Profile zuerst
# 3-Monitor Setup (sehr spezifisch)
profile triple-monitor {
output eDP-1 disable
output "Dell Inc. DELL U2415 D3TM8456ABCD" mode 1920x1200@60Hz position 0,0
output "Samsung Electric Company S24C650 H4ZN123456" mode 1920x1080@60Hz position 1920,0
output "LG Electronics 24MP88 123456789ABC" mode 1920x1080@60Hz position 3000,0
}
# 2-Monitor Setup (mittel spezifisch)
profile dual-monitor {
output eDP-1 mode 1920x1080@60Hz position 0,0
output "Dell Inc. DELL U2415 D3TM8456ABCD" mode 1920x1200@60Hz position 1920,0
}
# Fallback: Nur Laptop (generisch)
profile laptop-only {
output eDP-1 mode 1920x1080@60Hz position 0,0
}
# ❌ FALSCH: Generisches Profil zuerst würde immer matchen!
profile laptop-only {
output eDP-1 mode 1920x1080@60Hz position 0,0
}
# Wird nie erreicht, weil laptop-only immer passt
profile dual-monitor {
output eDP-1 mode 1920x1080@60Hz position 0,0
output "Dell Inc. DELL U2415 D3TM8456ABCD" mode 1920x1200@60Hz position 1920,0
}
Starten und Verwenden
Manuell starten
# Mit Debug-Output
kanshi -v
# Im Hintergrund
kanshi &
In niri autostart
# ~/.config/niri/config.kdl
spawn-at-startup "kanshi"
Als systemd service
Service erstellen:
mkdir -p ~/.config/systemd/user/
~/.config/systemd/user/kanshi.service:
[Unit]
Description=Dynamic display configuration
Documentation=man:kanshi(1)
PartOf=graphical-session.target
[Service]
Type=simple
ExecStart=/usr/bin/kanshi
Restart=on-failure
[Install]
WantedBy=niri.service
Service aktivieren:
systemctl --user enable kanshi.service
systemctl --user start kanshi.service
systemctl --user status kanshi.service
Debug und Testen
Config testen
# Config-Syntax prüfen
kanshi -c ~/.config/kanshi/config
# Mit verbose logging
kanshi -v
Profil manuell aktivieren
# Aktuelles Profil anzeigen
ps aux | grep kanshi
# kanshi neu starten (lädt Config neu)
killall kanshi && kanshi &
Log-Ausgabe
# Systemd logs
journalctl --user -u kanshi -f
# Oder wenn manuell gestartet
kanshi -v 2>&1 | tee ~/kanshi.log
Beispiel: Dein Setup
Basierend auf deiner Hyprland-Config:
# ~/.config/kanshi/config
# ==========================================
# Desktop-Setup (alle 3 Monitore)
# ==========================================
profile desktop-arch {
# Vertikaler Monitor links (90° gedreht)
# output DP-1 mit transform 1 aus hyprland.conf
output DP-1 {
mode 1920x1080@60Hz
position 0,0
transform 90
scale 1.0
}
# Hauptmonitor Mitte
# output HDMI-A-2 aus hyprland.conf
output HDMI-A-2 {
mode 1920x1080@60Hz
position 1080,0
scale 1.0
}
# Rechter Monitor
# output DP-2 aus hyprland.conf
output DP-2 {
mode 1920x1080@60Hz
position 3000,0
scale 1.0
}
# Exec: Wallpaper setzen
exec ~/opt/projects/niri/swaybg/start-swaybg.sh
}
# ==========================================
# Laptop-Setup (unterwegs)
# ==========================================
profile laptop-archpad {
output eDP-1 {
mode 1920x1080@60Hz
position 0,0
scale 1.0
}
exec swaybg -o eDP-1 -i ~/Bilder/aesthetic-wallpapers/images/fractal.png -m fill &
}
# ==========================================
# Laptop + 1 externer Monitor
# ==========================================
profile laptop-docked {
output eDP-1 {
mode 1920x1080@60Hz
position 0,0
scale 1.0
}
output HDMI-A-2 {
mode 1920x1080@60Hz
position 1920,0
scale 1.0
}
}
Mit Seriennummern (nachdem du sie mit wlr-randr herausgefunden hast):
# Zuerst: Seriennummern herausfinden
wlr-randr | grep -E "(Make|Model|Serial)"
Dann:
profile desktop-arch-specific {
# Ersetze mit echten Seriennummern!
output "AOC 24G2W1G4 SERIALNUMBER1" {
mode 1920x1080@60Hz
position 0,0
transform 90
}
output "Samsung Electric Company C27F390 SERIALNUMBER2" {
mode 1920x1080@60Hz
position 1080,0
}
output "BenQ BenQ GW2480 SERIALNUMBER3" {
mode 1920x1080@60Hz
position 3000,0
}
}
Vorteile von kanshi
- ✅ Automatisches Umschalten beim An-/Abstecken von Monitoren
- ✅ Monitor-spezifische Profile (per Serial Number)
- ✅ Mehrere Setups (Home, Office, unterwegs)
- ✅ Exec-Commands für zusätzliche Aktionen
- ✅ Funktioniert mit allen wlroots-Compositoren (Sway, River, niri, etc.)
- ✅ Hotplug-Unterstützung (keine manuelle Konfiguration bei jedem Wechsel)
- ✅ Profile-Priorität (spezifische vor generischen)
Troubleshooting
Profil wird nicht geladen
Check 1: Ist kanshi am Laufen?
ps aux | grep kanshi
Check 2: Config-Syntax prüfen
kanshi -v
Check 3: Monitor-Namen korrekt?
wlr-randr | grep -E "^[A-Z]"
Falsche Seriennummer
Manche Monitore haben keine eindeutige Seriennummer oder zeigen "Unknown":
Serial: Unknown
Lösung: Verwende Make Model ohne Serial:
output "Dell Inc. DELL U2415" mode 1920x1080@60Hz position 0,0
Zwei identische Monitore
Wenn du zwei identische Monitore hast (gleiche Serial):
# Nutze Output-Namen statt Serial
profile dual-same {
output HDMI-A-1 mode 1920x1080@60Hz position 0,0
output HDMI-A-2 mode 1920x1080@60Hz position 1920,0
}
Profile werden nicht gewechselt
kanshi cached die angeschlossenen Monitore. Neu starten:
killall kanshi && kanshi &
7. wlay (CLI Alternative)
Ähnlich wie wlr-randr, aber mit interaktivem Modus.
Installation
# AUR (Arch Linux)
yay -S wlay
Verwendung
wlay # Interaktiver Modus
Vergleichstabelle
| Feature | niri msg | wlr-randr | swaymsg | hyprctl | wdisplays | kanshi |
|---|---|---|---|---|---|---|
| Niri | ✅ | ⚠️ | ❌ | ❌ | ⚠️ | ✅ |
| Sway | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ |
| Hyprland | ❌ | ⚠️ | ❌ | ✅ | ⚠️ | ⚠️ |
| GUI | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ |
| Auto-Switch | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Live Config | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Legende:
- ✅ Vollständig unterstützt
- ⚠️ Teilweise (DPMS funktioniert, aber nicht alles)
- ❌ Nicht unterstützt
Empfehlung für dein Setup (Niri)
Option 1: Niri config.kdl (statisch) ⭐ EINFACHSTE LÖSUNG
Du hast bereits die Monitor-Config in deiner config.kdl:
output "DP-1" {
mode "1920x1080@60"
transform "90"
position x=0 y=0
}
output "HDMI-A-2" {
mode "1920x1080"
position x=1080 y=0
}
output "DP-2" {
mode "1920x1080@60"
position x=3000 y=0
}
Vorteil: Automatisch beim Niri-Start geladen
Option 2: kanshi (dynamisch) ⭐ EMPFOHLEN FÜR LAPTOP
Für deinen Laptop (eDP-1) + wechselnde externe Monitore:
Installation:
sudo pacman -S kanshi
Config: ~/.config/kanshi/config
# Laptop allein (unterwegs)
profile laptop {
output eDP-1 mode 1920x1080@60Hz position 0,0 scale 1.0
}
# Laptop + Desktop-Setup (zu Hause)
profile desktop-docked {
output eDP-1 disable
output DP-1 mode 1920x1080@60Hz position 0,0 transform 90
output HDMI-A-2 mode 1920x1080@60Hz position 1080,0
output DP-2 mode 1920x1080@60Hz position 3000,0
}
# Nur Laptop-Display + 1 externer Monitor
profile simple-dock {
output eDP-1 mode 1920x1080@60Hz position 0,0
output HDMI-A-2 mode 1920x1080@60Hz position 1920,0
}
In niri starten:
spawn-at-startup "kanshi"
Vorteil: Wechselt automatisch zwischen Profilen basierend auf angeschlossenen Monitoren
Option 3: wlr-randr (manuell) ⭐ FÜR SCHNELLE ÄNDERUNGEN
# Monitor-Namen herausfinden
wlr-randr
# Monitor konfigurieren
wlr-randr --output HDMI-A-2 --mode 1920x1080@60 --pos 1920,0
# Monitor ausschalten
wlr-randr --output eDP-1 --off
Vorteil: Schnelle temporäre Änderungen ohne Config-Edit
Option 4: wdisplays (GUI) ⭐ FÜR VISUELLE KONFIGURATION
sudo pacman -S wdisplays
wdisplays
Vorteil: Drag & Drop Interface, einfach für Einsteiger
Skript-Beispiele
Desktop-Setup automatisch laden
#!/bin/bash
# ~/bin/monitor-setup-desktop.sh
# Check ob alle Monitore angeschlossen sind
if wlr-randr | grep -q "DP-1" && wlr-randr | grep -q "HDMI-A-2"; then
# Laptop-Display aus
wlr-randr --output eDP-1 --off
# Desktop-Monitore konfigurieren
wlr-randr --output DP-1 --mode 1920x1080@60 --transform 90 --pos 0,0
wlr-randr --output HDMI-A-2 --mode 1920x1080@60 --pos 1080,0
wlr-randr --output DP-2 --mode 1920x1080@60 --pos 3000,0
echo "Desktop-Setup aktiviert"
else
echo "Nicht alle Monitore angeschlossen"
fi
Monitor-Infos als Funktion
# In ~/.zshrc oder ~/.bashrc
monitors() {
echo "=== Niri Outputs ==="
niri msg outputs
echo ""
echo "=== wlr-randr ==="
wlr-randr
}
Troubleshooting
Monitor wird nicht erkannt
# Check mit verschiedenen Tools
niri msg outputs
wlr-randr
ls /sys/class/drm/
Position stimmt nicht
Denk dran: Bei Scale musst du die logische Größe berechnen!
Beispiel:
- eDP-1: 1920x1080 @ scale 1.5 = logisch 1280x720
- HDMI-A-2: Position sollte bei x=1280 starten, nicht x=1920
Config wird nicht geladen
# Niri config validieren
niri validate
# Niri neu starten
# (Normalerweise reicht speichern für live-reload)
wlr-randr funktioniert nicht
wlr-randr funktioniert nur mit wlroots-basierten Compositoren:
- ✅ Sway, River, Wayfire
- ⚠️ Niri (teilweise - DPMS ja, Config nein)
- ❌ Hyprland (eigene Implementation)
Zusammenfassung: Deine beste Option
Für Niri empfehle ich:
- Statisches Desktop-Setup: Nutze die
config.kdl(hast du schon) - Dynamisches Laptop-Setup: Installiere
kanshifür automatisches Umschalten - Schnelle Änderungen: Nutze
wlr-randroderniri msg - Erste Konfiguration: Nutze
wdisplays(GUI)
Minimales Setup:
# Installation
sudo pacman -S wlr-randr kanshi wdisplays
# kanshi starten
echo 'spawn-at-startup "kanshi"' >> ~/.config/niri/config.kdl
# Fertig!
Erstellt am: 2025-10-27 Für: Wayland Monitor-Konfiguration (xrandr-Ersatz)