From a9ccc784827ed480f599886277119e46112a0c1e Mon Sep 17 00:00:00 2001 From: dabruh <11458706-dabruh@users.noreply.gitlab.com> Date: Wed, 17 Apr 2024 16:05:25 +0200 Subject: [PATCH] Support identical config on different output names --- .local/bin/xmonconf | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/.local/bin/xmonconf b/.local/bin/xmonconf index 5e7bada..a7863fd 100755 --- a/.local/bin/xmonconf +++ b/.local/bin/xmonconf @@ -285,6 +285,7 @@ move_nonexistent_i3_workspaces() { } main() { + local primary_monitor monitor_count monitors=() profile_found=false primary_monitor=$(get_monitors primary | cut -d',' -f1) monitor_count=$(get_monitors connected | wc -l) echo "Monitors connected: $monitor_count" @@ -292,15 +293,30 @@ main() { if [ "$monitor_count" -eq 1 ]; then echo "Applying laptop-only profile" xrandr --auto - elif usb_devices_exist all exact "HP, Inc HP USB-C Universal Dock" >/dev/null && monitors_exist eDP-1 DVI-I-2-2 DVI-I-3-3; then - echo "Applying work profile" - xrandr \ - --output eDP-1 --primary --mode 1920x1200 --pos 1200x1474 --rotate normal \ - --output DVI-I-2-2 --mode 1920x1200 --pos 0x0 --rotate left \ - --output DVI-I-3-3 --mode 1920x1200 --pos 1200x274 --rotate normal - else + profile_found=true + elif usb_devices_exist all exact "HP, Inc HP USB-C Universal Dock" >/dev/null; then + monitors=( + "eDP-1,DVI-I-1-1,DVI-I-2-2" + "eDP-1,DVI-I-2-2,DVI-I-3-3" + ) + + for monitor in "${monitors[@]}"; do + IFS=',' read -r -a monitor_array <<<"$monitor" + if monitors_exist "${monitor_array[@]}"; then + echo "Applying dock profile for ${monitor_array[*]}" + xrandr \ + --output "${monitor_array[0]}" --mode 1920x1200 --rotate normal --pos 1200x1474 --primary \ + --output "${monitor_array[1]}" --mode 1920x1200 --rotate left --pos 0x0 \ + --output "${monitor_array[2]}" --mode 1920x1200 --rotate normal --pos 1200x274 + profile_found=true + break + fi + done + fi + + if ! "$profile_found"; then echo "No profile found" - return 0 + return 1 fi move_nonexistent_i3_workspaces "$primary_monitor" 10