#!/bin/bash

if [ $(which xscreensaver-demo | wc -l) -gt 0 ] ; then
	rm -f "${HOME}/.config/autostart/bean_dpms.desktop"
	xscreensaver-demo
	exit 1
fi

x="$(xset -q)"

if [ $(echo "${x}" | grep DPMS -A 3 | grep "DPMS is" | grep "Enabled" | wc -l) -gt 0 ] ; then
	dpms=TRUE
else
	dpms=FALSE
fi

if [ $(echo "${x}" | grep "Screen Saver" -A 2 | grep "prefer" | awk '{print $3}') == "yes" ] ; then
	blank=TRUE
else
	blank=FALSE
fi

while true ; do
	
	input=$(yad --title "linuxBean モニターの保護" \
	--window-icon=monitor --on-top --center --form \
	--field="数値を0にすると機能を無効化できます。\nまた、スクリーンセーバーにはxscreensaver、\nモニターの電源制御にはacpidが必要です。\n設定ウィザードから「解像度・シャットダウン」と\n「スクリーンセーバー」を導入しておいてください。\n<span foreground='#990000'>（暗転をオフにするだけなら必要ありません）</span>:LBL"                     ""   \
	--field=":LBL"                     ""   \
	--field="<span font='sans 16'>スクリーンセーバー</span>:LBL" "" \
	--field="暗転を優先する:CHK" ${blank} \
	--field="起動までの時間（秒）:NUM" $(echo "${x}" | grep "Screen Saver" -A 2 | grep timeout | awk '{print $2}') \
	--field="変化サイクル（秒）:NUM"   $(echo "${x}" | grep "Screen Saver" -A 2 | grep timeout | awk '{print $4}') \
	--field=":LBL"                     ""   \
	--field="<span font='sans 16'>モニターの電源</span>:LBL" "" \
	--field="モニターの電源制御（Energy Star）:CHK" ${dpms} \
	--field="スタンバイまでの時間（秒）:NUM" $(echo "${x}" | grep DPMS -A 3 | grep Standby | awk '{print $2}') \
	--field="サスペンドまでの時間（秒）:NUM" $(echo "${x}" | grep DPMS -A 3 | grep Standby | awk '{print $4}') \
	--field="電源オフまでの時間（秒）:NUM"   $(echo "${x}" | grep DPMS -A 3 | grep Standby | awk '{print $6}') )
	
	if [ $? -gt 0 ] ; then
		exit 1
	fi
	
	sb=$(echo $input | cut -d\| -f10 | cut -d. -f1)
	sp=$(echo $input | cut -d\| -f11 | cut -d. -f1)
	sd=$(echo $input | cut -d\| -f12 | cut -d. -f1)
	
	if [ $sb -gt $sp ] || [ $sp -gt $sd ] || [ $sb -gt $sd ] ; then
		yad --title "linuxBean モニターの保護" --on-top --center \
		--window-icon=monitor --image=gtk-dialog-error \
		--text="  「モニターの電源」の秒数は、\n  下に行くほど大きくなるように設定してください。"
	else
		break
	fi
done

if [ "$(echo $input | cut -d\| -f4)" == "TRUE" ] ; then
	xset s blank
	bl="blank"
else
	xset s noblank
	bl="noblank"
fi

to=$(echo $input | cut -d\| -f5 | cut -d. -f1)
cy=$(echo $input | cut -d\| -f6 | cut -d. -f1)
xset s $to $cy

sb=$(echo $input | cut -d\| -f10 | cut -d. -f1)
sp=$(echo $input | cut -d\| -f11 | cut -d. -f1)
sd=$(echo $input | cut -d\| -f12 | cut -d. -f1)
xset dpms $sb $sp $sd

if [ "$(echo $input | cut -d\| -f9)" == "TRUE" ] ; then
	xset +dpms
	es="+dpms"
else
	xset -dpms
	es="-dpms"
fi

echo "
[Desktop Entry]
Name=Monitor saving
Name[ja]=モニターの保護
Comment=Set monitor saving
Comment[ja]=モニターの保護を設定します
Exec=sh -c \"xset s ${bl} & xset dpms ${sb} ${sp} ${sd} & xset ${es}\"
Icon=monitor
Categories=System
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
" > ${HOME}/.config/autostart/bean_dpms.desktop
