#!/bin/sh MAIN_DISPLAY="eDP-1" MAIN_MODE="--mode 3000x2000_48.00 --primary" popup() { echo "$1" | rofi -dmenu -i -p "$2" \ -color-window "#524040, #dc7a43, #fff" \ -color-normal "#524040, #fff, #524040, #fff, #707880" \ -no-fixed-num-lines } multiDisplay() { case "$(echo "$CONNECTED" | wc -l)" in 1) setSingle ;; 2) setDual ;; *) setMulti ;; esac } setSingle() { [ "$CHOOSE" = "$MAIN_DISPLAY" ] && MODE="$MAIN_MODE" || MODE="--auto" # Disconnect all other displays eval xrandr --output "$CHOOSE" "$MODE" \ "$(echo "$CONNECTED" | grep -vx "$CHOOSE" | awk '{print "--output", $1, "--off"}' | tr '\n' ' ')" } setDual() { PRIMARY=$(popup "$CONNECTED" "Select primary display") [ "$PRIMARY" = "$MAIN_DISPLAY" ] && MODE="$MAIN_MODE" || MODE="--auto" SECONDARY=$(echo "$CONNECTED" | grep -vx "$PRIMARY") SIDE=$(popup "$(printf "right\nleft")" "On which side of $PRIMARY should $SECONDARY be?") eval xrandr --output "$PRIMARY" "$MODE" --output "$SECONDARY" --"$SIDE"-of "$PRIMARY" --auto } setMulti() { # @Todo echo "Todo" } # Get all connected displays CONNECTED=$(xrandr -q | grep " connected" | awk '{print $1}') # Add Multi-monitor and Manual selection to the selectable options SELECTION="$(printf "%s\nMulti-monitor\nManual selection" "$CONNECTED")" # Get user selection CHOOSE="$(popup "$SELECTION" "Select display arangement")" && case "$CHOOSE" in "Manual selection") arandr 2> /dev/null ; exit ;; "Multi-monitor") multiDisplay ;; *) setSingle ;; esac # Reload background $HOME/.local/bin/wm/wallpaper.sh