hdmi.sh 885 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #!/bin/bash
  2. ## from https://wiki.archlinux.org/index.php/xrandr
  3. XRANDR="xrandr"
  4. CMD="${XRANDR}"
  5. declare -A VOUTS
  6. eval VOUTS=$(${XRANDR}|awk 'BEGIN {printf("(")} /^\S.*connected/{printf("[%s]=%s ", $1, $2)} END{printf(")")}')
  7. declare -A POS
  8. #XPOS=0
  9. #YPOS=0
  10. #POS="${XPOS}x${YPOS}"
  11. POS=([X]=0 [Y]=0)
  12. find_mode() {
  13. echo $(${XRANDR} |grep ${1} -A1|awk '{FS="[ x]"} /^\s/{printf("WIDTH=%s\nHEIGHT=%s", $4,$5)}')
  14. }
  15. xrandr_params_for() {
  16. if [ "${2}" == 'connected' ]; then
  17. eval $(find_mode ${1}) #sets ${WIDTH} and ${HEIGHT}
  18. MODE="${WIDTH}x${HEIGHT}"
  19. CMD="${CMD} --output ${1} --mode ${MODE} --pos ${POS[X]}x${POS[Y]}"
  20. POS[X]=$((${POS[X]}+${WIDTH}))
  21. return 0
  22. else
  23. CMD="${CMD} --output ${1} --off"
  24. return 1
  25. fi
  26. }
  27. for VOUT in ${!VOUTS[*]}
  28. do
  29. xrandr_params_for ${VOUT} ${VOUTS[${VOUT}]}
  30. done
  31. set -x
  32. ${CMD}
  33. set +x