#!/bin/sh

#################################
# HDMI detection script
# Author: 4X_Pro, 2012
# License: MIT
# http://new.xpro.su
#################################

if [ -e /sys/class/drm/card0/card0-HDMI-A-1 ]; then
 CNvidia="0"
 CIntel="1"
else
 CNvidia="1"
 CIntel="0"
fi

if [ -e /sys/class/drm/card$CNvidia/card$CNvidia-HDMI-A-1 -a -e /sys/class/drm/card$CIntel/card$CIntel-LVDS-1 ]; then
  if [ ! "$(ls -A /sys/kernel/debug)" ]; then
    DebugMounted="1"
    mount -t debugfs none /sys/kernel/debug
  fi
# Обнаружена конфигурация из двух видеокарт, проверяем HDMI.
  if [ -e /sys/kernel/debug/vgaswitcheroo/switch ]; then
    if [ `cat /sys/class/drm/card$CNvidia/card$CNvidia-HDMI-A-1/status` == 'connected' -a "$1" != '-off' -o "$1" == '-force' ]; then
# Обнаружен HDMI-монитор, переключились на дискретную карту
      /usr/sbin/vbetool dpms off
      echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
      echo "OFF" > /sys/kernel/debug/vgaswitcheroo/switch
    else
# HDMI-монитор не найден, отключаем дискретную видеокарту для сбережения энергии
      echo "IGD" > /sys/kernel/debug/vgaswitcheroo/switch
      /usr/sbin/vbetool dpms on
      echo "OFF" > /sys/kernel/debug/vgaswitcheroo/switch
    fi
    if [ "$DebugMounted" == "1" ]; then
      umount /sys/kernel/debug
     fi
  fi 
fi
