92 lines
2.8 KiB
Bash
Executable File
92 lines
2.8 KiB
Bash
Executable File
#! /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
|