scripts/ecran

92 lines
2.8 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#! /bin/sh
# Description: Manage video output (size, orientation, ...)
# And reload wm configuration
# Vars {{{
## First and main screen (laptop screen,…)
readonly MAIN_OUTPUT_NAME="LVDS-1"
[ -z "${DEBUG}" ] && readonly DEBUG=0
## Colors
readonly PURPLE='\033[1;35m'
readonly RED='\033[0;31m'
readonly RESET='\033[0m'
readonly COLOR_DEBUG="${PURPLE}"
# }}}
debug_message() { # {{{
local_message="${1}"
## Print message if DEBUG is enable (=0)
[ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6b\e[m\n' "DEBUG ${PROGNAME}: ${local_message}"
return 0
}
# }}}
define_vars() { # {{{
return_second_output_name="0"
SECOND_OUTPUT_NAME=$(xrandr | grep " connected" | grep -v "${MAIN_OUTPUT_NAME}" | awk 'NR==1{ print $1 }')
debug_message "define_vars \
The second connected output is: ${SECOND_OUTPUT_NAME}."
return "${return_second_output_name}"
}
# }}}
main() { # {{{
## Define all vars
define_vars
}
# }}}
main
# Manage arguments # {{{
# This code can't be in a function due to arguments
case "${1}" in
off )
## TODO: One command to enable main screen and a loop to disable all other connected output
xrandr --output "${MAIN_OUTPUT_NAME:=/dev/null}" --auto --output "${SECOND_OUTPUT_NAME:=/dev/null}" --off --output VGA-1 --off --output HDMI-3 --off --output "${SECOND_OUTPUT_NAME:=/dev/null}" --off
xrandr --output VGA --off
printf 'Desactivate all video output'
;;
leftof | left-of | ds | dockstation | work )
#xrandr --output VGA-1 --mode 1024x768 --left-of "${MAIN_OUTPUT_NAME:=/dev/null}" --output "${MAIN_OUTPUT_NAME:=/dev/null}" --mode 1366x768
xrandr --output "${SECOND_OUTPUT_NAME:=/dev/null}" --auto --left-of "${MAIN_OUTPUT_NAME:=/dev/null}" --output "${MAIN_OUTPUT_NAME:=/dev/null}" --auto
printf 'Xrandr for second output left-of main screen'
;;
rightof | right-of | home )
xrandr --output "${SECOND_OUTPUT_NAME:=/dev/null}" --auto --right-of "${MAIN_OUTPUT_NAME:=/dev/null}" --output "${MAIN_OUTPUT_NAME:=/dev/null}" --auto
printf 'Xrandr for second output left-of main screen'
;;
above )
xrandr --output "${SECOND_OUTPUT_NAME:=/dev/null}" --auto --above "${MAIN_OUTPUT_NAME:=/dev/null}" --output "${MAIN_OUTPUT_NAME:=/dev/null}" --auto
printf 'Xrandr for dual screen with DisplayPort'
;;
out | game )
xrandr --output "${SECOND_OUTPUT_NAME:=/dev/null}" --auto --output "${MAIN_OUTPUT_NAME:=/dev/null}" --off
;;
first_off | main_off | laptop_off )
xrandr --output "${MAIN_OUTPUT_NAME:=/dev/null}" --off
;;
* )
printf 'Bad argument, please use [vga|hdmi|ds|work|off]'
exit 1
;;
esac
# }}}
# Update herbstluftWM configuration
herbstclient detect_monitors
herbstclient reload
exit 0