#!/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
