#!/bin/bash mode=$(echo -e "same\ndifferent" | dmenu -p "monitors layout:") #monitors=$(xrandr --listmonitors | sort -r | cut -d' ' -f6) monitors=$(xrandr -q | grep "^[^ ]" | cut -d' ' -f1 | grep -v Screen) main=$(echo $monitors | tr ' ' '\n' | dmenu -p "which monitor is main:") monitors=$(echo $monitors | sed "s/$main//") if [[ $mode == "same" ]]; then for m in $monitors; do xrandr --output $m --auto --same-as $main --mode 1920x1080 done elif [[ $mode == "different" ]]; then for m in $monitors; do direction=$(echo -e "left\nright\nabove\nbelow\nsame\nnone" | dmenu -p "monitor '$m' direction from '$main'") case $direction in "left" | "right") direction="--$direction-of" ;; "above" | "below") direction="--$direction" ;; "same") direction="--$direction-as" ;; "none") continue ;; esac xrandr --output $main --primary --mode 1920x1080 --output $m --mode 1920x1080 $direction $main done fi