#!/bin/sh fatal() { echo "error: $@" 1>&2; exit 1; } [ $(xrandr | grep -oP '^Screen \d+' | wc -l) -eq 1 ] \ || fatal "liczba wirtualnych monitorów nie jest równa 1" [ $(xrandr | grep connected | wc -l) -eq 2 ] \ || fatal "liczba podłączonych monitorów nie jest równa 2" M1="$(xrandr | grep connected | grep -oP '^.*\d+x\d+\+\d+\+\d+' | sed 's/\s.*\s/ /g' | head -1)" M2="$(xrandr | grep connected | grep -oP '^.*\d+x\d+\+\d+\+\d+' | sed 's/\s.*\s/ /g' | tail -1)" M1_NAM="$(echo "$M1" | cut -d' ' -f1)" M1_WID="$(echo "$M1" | cut -d' ' -f2 | grep -oP '^\d+(?=x)')" M1_HEI="$(echo "$M1" | cut -d' ' -f2 | grep -oP '(?<=x)\d+')" M1_OFX="$(echo "$M1" | cut -d' ' -f2 | grep -oP '(?<=\+)\d+(?=\+)')" M1_OFY="$(echo "$M1" | cut -d' ' -f2 | grep -oP '(?<=\+)\d+$')" M2_NAM="$(echo "$M2" | cut -d' ' -f1)" M2_WID="$(echo "$M2" | cut -d' ' -f2 | grep -oP '^\d+(?=x)')" M2_HEI="$(echo "$M2" | cut -d' ' -f2 | grep -oP '(?<=x)\d+')" M2_OFX="$(echo "$M2" | cut -d' ' -f2 | grep -oP '(?<=\+)\d+(?=\+)')" M2_OFY="$(echo "$M2" | cut -d' ' -f2 | grep -oP '(?<=\+)\d+$')" # zamienienie monitorów horyzontalnie if [ "$M1_OFX" -ge "$M2_WID" ]; then # obecnie M2 jest na lewo od M1, więc to odwracamy xrandr \ --output "$M1_NAM" --auto --pos "0x0" \ --output "$M2_NAM" --auto --pos "${M1_WID}x0" \ && echo "$M1_NAM jest na lewo od $M2_NAM" \ || fatal "błąd podczas przenoszenia monitorów" elif [ "$M2_OFX" -ge "$M1_WID" ]; then # obecnie M1 jest na lewo od M2, więc to odwracamy xrandr \ --output "$M2_NAM" --auto --pos "0x0" \ --output "$M1_NAM" --auto --pos "${M2_WID}x0" \ && echo "$M2_NAM jest na lewo od $M1_NAM" \ || fatal "błąd podczas przenoszenia monitorów" else fatal "nieobsługiwana konfiguracja monitorów" fi while true; do printf "1) %s\n2) %s\nn) %s\n" "$M1_NAM" "$M2_NAM" "nie ustawiaj" read -p "czy ustawić monitor główny? (1/2/n): " choice [ "n" = "$choice" ] || [ "N" = "$choice" ] && break M_PRI="" [ "1" = "$choice" ] && M_PRI="$M1_NAM" [ "2" = "$choice" ] && M_PRI="$M2_NAM" [ -z "$M_PRI" ] && echo "niepoprawna opcja $choice" && continue xrandr --output "$M_PRI" --primary \ && echo "$M_PRI jest głównym monitorem" && break \ || fatal "błąd podczas ustawiania głównego monitora" done exit 0