danielrosehill's picture
commit
279efce
# Switch Display Profile
You are helping the user switch between different display configurations/profiles (e.g., docked, laptop only, presentation).
## Task
1. **Check current display setup:**
```bash
# Display server type
echo $XDG_SESSION_TYPE
# Connected displays
kscreen-doctor -o # KDE/Wayland
# OR
xrandr --query # X11
```
2. **Ask user which profile they want:**
- **Laptop only** (internal display only)
- **Docked** (external monitors only or primary external)
- **Extended** (laptop + external monitors)
- **Mirrored** (same output on all displays)
- **Presentation** (external display as primary)
- **Custom** (user-defined configuration)
3. **KDE Plasma - Use saved profiles:**
```bash
# List saved display configurations
ls ~/.local/share/kscreen/
# KDE automatically switches profiles based on connected displays
# Force reload configuration
kscreen-doctor --reload
```
4. **Create/Use autorandr (X11):**
```bash
# Install if not present
sudo apt install autorandr
# Save current configuration as profile
autorandr --save profile-name
# Switch to saved profile
autorandr --load profile-name
# Auto-detect and load appropriate profile
autorandr --change
```
5. **Manual X11 configuration examples:**
**Laptop only:**
```bash
xrandr --output eDP-1 --auto --primary \
--output HDMI-1 --off \
--output DP-1 --off
```
**Docked (external monitors only):**
```bash
xrandr --output eDP-1 --off \
--output HDMI-1 --auto --primary \
--output DP-1 --auto --right-of HDMI-1
```
**Extended (laptop + external):**
```bash
xrandr --output eDP-1 --auto \
--output HDMI-1 --auto --primary --above eDP-1
```
**Mirrored:**
```bash
xrandr --output eDP-1 --auto \
--output HDMI-1 --auto --same-as eDP-1
```
6. **Wayland/KDE configuration:**
```bash
# Laptop only
kscreen-doctor output.eDP-1.enable \
output.HDMI-1.disable \
output.DP-1.disable
# Docked
kscreen-doctor output.eDP-1.disable \
output.HDMI-1.enable output.HDMI-1.primary \
output.DP-1.enable output.DP-1.position.1920,0
# Extended
kscreen-doctor output.eDP-1.enable \
output.HDMI-1.enable output.HDMI-1.primary \
output.HDMI-1.position.0,-1080
```
7. **Create quick-switch scripts:**
```bash
# Create scripts directory
mkdir -p ~/.local/bin/display-profiles
# Example: Laptop only script
cat > ~/.local/bin/display-profiles/laptop-only.sh << 'EOF'
#!/bin/bash
xrandr --output eDP-1 --auto --primary \
--output HDMI-1 --off \
--output DP-1 --off
notify-send "Display Profile" "Switched to: Laptop Only"
EOF
chmod +x ~/.local/bin/display-profiles/laptop-only.sh
```
8. **Create keyboard shortcuts (KDE):**
```bash
# Add custom shortcut
kwriteconfig6 --file kglobalshortcutsrc \
--group "Display Profile - Laptop" \
--key "_k_friendly_name" "Laptop Display Only"
```
9. **Automatic profile switching with udev:**
```bash
# Create udev rule for auto-switching when docking
sudo tee /etc/udev/rules.d/95-monitor-hotplug.rules << 'EOF'
ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/bin/display-switch.sh"
EOF
# Create switch script
sudo tee /usr/local/bin/display-switch.sh << 'EOF'
#!/bin/bash
export DISPLAY=:0
export XAUTHORITY=/home/daniel/.Xauthority
/usr/bin/autorandr --change
EOF
sudo chmod +x /usr/local/bin/display-switch.sh
sudo udevadm control --reload-rules
```
## Verify Configuration
- Check display arrangement with GUI or commands
- Test window movement between displays
- Verify primary display setting
- Check resolution and refresh rates
- Test systray/panel positioning
## Troubleshooting
**Profile not loading:**
- Verify display names with `xrandr` or `kscreen-doctor -o`
- Check saved profile files
- Ensure all referenced displays are connected
**Automatic switching not working:**
- Check udev rule syntax
- Verify script permissions and paths
- Check logs: `journalctl -f` while connecting/disconnecting displays
**Black screen after switching:**
- Use Ctrl+Alt+F2 to access TTY
- Reset display configuration: `xrandr --auto`
- Restart display manager: `sudo systemctl restart sddm` (or gdm, lightdm)
## Notes
- autorandr is the most reliable tool for X11 profile management
- KDE Plasma handles profile switching automatically on Wayland
- Save profiles for different scenarios (home office, conference room, etc.)
- Consider using descriptive names for profiles
- Test profiles before relying on them for important presentations