#!/usr/bin/env sh # A pretty simple auto configurator script for displays. sort_list() { # Sort a space-delimited list and echo it. list_to_sort=$1 echo "${list_to_sort}" | xargs -n1 | sort | xargs } xrandr_output="$(xrandr)" all_displays="$(sort_list "$(echo "${xrandr_output}" | grep "connected" | cut -d " " -f1)")" connected_displays="$(sort_list "$(echo "${xrandr_output}" | grep " connected" | cut -d " " -f1)")" xrandr_args="" display_is_connected() { display_to_check=$1 # Check the connected_displays list for $display_to_check result="no" for display in ${connected_displays}; do if [ "${display}" = "${display_to_check}" ]; then result="yes" fi done echo "${result}" } display_configuration() { target_displays="$*" # Each argument is a display name. use_this_configuration="no" if [ "$(sort_list "${target_displays}")" = "${connected_displays}" ]; then use_this_configuration="yes" fi echo "${use_this_configuration}" } disable_disconnected_displays() { for display in $all_displays; do if [ ! "$(display_is_connected "${display}")" = "yes" ]; then xrandr_args="${xrandr_args} --output ${display} --off" fi done } echo "LVDS1 connected?" display_is_connected "LVDS1" echo "HDMI3 connected?" display_is_connected "HDMI3" disable_disconnected_displays echo $xrandr_args