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