Files
dot-config-folder/i3/monitor-setup.sh
Jens Luedicke 33038ab2ee Add i3 config
2025-09-22 11:07:46 +02:00

66 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# Monitor setup script for i3wm
# This script automatically detects connected monitors and configures them
# Get the internal display name (usually eDP-1 or LVDS-1)
INTERNAL=$(xrandr | grep " connected" | grep -E "(eDP|LVDS)" | cut -d" " -f1)
# Get external displays
EXTERNAL=$(xrandr | grep " connected" | grep -v -E "(eDP|LVDS)" | cut -d" " -f1)
# If no internal display found, fallback to first connected display
if [ -z "$INTERNAL" ]; then
INTERNAL=$(xrandr | grep " connected" | head -n1 | cut -d" " -f1)
fi
echo "Internal display: $INTERNAL"
echo "External displays: $EXTERNAL"
# Turn off all displays first
xrandr --auto
# Configure displays based on what's connected
if [ -n "$EXTERNAL" ]; then
# External monitor(s) connected
# Count external monitors
EXT_COUNT=$(echo "$EXTERNAL" | wc -l)
echo "Found $EXT_COUNT external monitor(s)"
if [ $EXT_COUNT -eq 1 ]; then
# Single external monitor - place to the right
ext=$(echo "$EXTERNAL" | head -n1)
echo "Configuring single external display: $ext"
xrandr --output $INTERNAL --auto --primary --output $ext --auto --right-of $INTERNAL
else
# Multiple external monitors - chain them
echo "Configuring multiple external displays"
prev_output=$INTERNAL
# First, enable the internal display
xrandr --output $INTERNAL --auto --primary
# Then chain each external monitor
for ext in $EXTERNAL; do
echo "Configuring external display: $ext (right of $prev_output)"
xrandr --output $ext --auto --right-of $prev_output
prev_output=$ext
done
fi
# Restart i3 to refresh workspace assignments
i3-msg restart
else
# Only internal display
echo "Only internal display connected"
xrandr --output $INTERNAL --auto
# Turn off any disconnected displays
for output in $(xrandr | grep " disconnected" | cut -d" " -f1); do
xrandr --output $output --off
done
fi
# Refresh i3bar
i3-msg reload