You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.4 KiB
Bash
65 lines
1.4 KiB
Bash
#!/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
|