#!/bin/sh
#Barry Kauler april 2008, for Puppy Linux, www.puppylinux.com. GPL
#v4.00 original app written by bk.
#v4.00 nathan patch to make unselected sections invisible.

XSETQ="`xset q`"

MOUSEACCEL10=`echo "$XSETQ" | grep '  acceleration:' | grep ' threshold:' | tr -s ' ' | cut -f 3 -d ' ' | cut -f 1 -d '/'`
MOUSEACCELDIV=`echo "$XSETQ" | grep '  acceleration:' | grep ' threshold:' | tr -s ' ' | cut -f 3 -d ' ' | cut -f 2 -d '/'`
MOUSEACCEL=`dc ${MOUSEACCEL10} ${MOUSEACCELDIV} div p`
MOUSETHRESHOLD=`echo "$XSETQ" | grep '  acceleration:' | grep ' threshold:' | tr -s ' ' | cut -f 5 -d ' '`
KEYBOARDVOL="`echo "$XSETQ" | grep 'key click percent: ' | tr -s ' ' | cut -f 8 -d ' '`"
KEYBOARDAUTO="`echo "$XSETQ" | grep ' auto repeat: ' | tr -s ' ' | cut -f 4 -d ' '`"

#v4.00 nathan...
#[ "$KEYBOARDAUTO" = "on" ] && KEYBOARDAUTO="yes"
#[ "$KEYBOARDAUTO" = "off" ] && KEYBOARDAUTO="no"
if [ "$KEYBOARDAUTO" = "on" ];then
 KEYBOARDAUTO="yes"
 KBVISIBLE="enabled"
fi
if [ "$KEYBOARDAUTO" = "off" ];then
 KEYBOARDAUTO="no"
 KBVISIBLE="disabled"
fi

KEYBOARDDELAY="`echo "$XSETQ" | grep ' auto repeat delay: ' | tr -s ' ' | cut -f 5 -d ' '`"
KEYBOARDRATE="`echo "$XSETQ" | grep ' auto repeat delay: ' | grep 'repeat rate:' | tr -s ' ' | cut -f 8 -d ' '`"
SCREENSAVERDELAY="`echo "$XSETQ" | grep ' timeout: ' | grep ' cycle: ' | tr -s ' ' | cut -f 3 -d ' '`"
SCREENSAVERFLAG='yes'

#v4.00 nathan...
#[ "$SCREENSAVERDELAY" = "0" ] && SCREENSAVERFLAG='no'
SCREENVISIBLE="enabled"
if [ "$SCREENSAVERDELAY" = "0" ];then
 SCREENSAVERFLAG='no'
 SCREENVISIBLE="disabled"
fi

SCREENSAVERCYCLE="`echo "$XSETQ" | grep ' timeout: ' | grep ' cycle: ' | tr -s ' ' | cut -f 5 -d ' '`"
SCREENSAVERBLANKING="`echo "$XSETQ" | grep ' prefer blanking: ' | tr -s ' ' | cut -f 4 -d ' '`"
SCREENSAVEREXPOSURES="`echo "$XSETQ" | grep ' allow exposures: ' | tr -s ' ' | cut -f 7 -d ' '`"

#precautions...
[ "$MOUSEACCEL" = "" ] && MOUSEACCEL='2.0'
[ "$MOUSETHRESHOLD" = "" ] && MOUSETHRESHOLD='4'
[ "$KEYBOARDVOL" = "" ] && KEYBOARDVOL='0'
[ "$KEYBOARDAUTO" = "" ] && KEYBOARDAUTO='yes'
[ "$KEYBOARDDELAY" = "" ] && KEYBOARDDELAY='500'
[ "$KEYBOARDRATE" = "" ] && KEYBOARDRATE='6'
[ "$SCREENSAVERFLAG" = "" ] && SCREENSAVERFLAG='yes'
[ "$SCREENSAVERDELAY" = "" ] && SCREENSAVERDELAY='600'
[ "$SCREENSAVERCYCLE" = "" ] && SCREENSAVERCYCLE='600'
[ "$SCREENSAVERBLANKING" = "" ] && SCREENSAVERBLANKING='yes'
[ "$SCREENSAVEREXPOSURES" = "" ] && SCREENSAVEREXPOSURES='yes'


#apply-now script for setting mouse params...
echo '#!/bin/sh
MOUSEACCX10=`dc ${1} 10 mul p`
xset m ${MOUSEACCX10}/10 ${2}
echo -n "m ${MOUSEACCX10}/10 ${2}" >> /tmp/pupx_finalparams
[ $3 ] && exit
Xdialog --title "マウスの設定" --msgbox "マウスの加速を ${1}に\nマウスの閾値を ${2}に\n(このセッション中のみ)設定します" 0 0' > /tmp/pupx_mouseaccel.sh
chmod 777 /tmp/pupx_mouseaccel.sh

#apply-now script for setting keyboard...
echo '#!/bin/sh
KEYBOARDVOL=$1
KEYBOARDAUTO=$2
KEYBOARDDELAY=$3
KEYBOARDRATE=$4
KEYBOARDDELAY=`echo -n $KEYBOARDDELAY | cut -f 1 -d '.'`
KEYBOARDRATE=`echo -n $KEYBOARDRATE | cut -f 1 -d '.'`
[ $KEYBOARDVOL -eq 0 ] && KEYBOARDVOL=off
if [ "$KEYBOARDAUTO" = "false" ];then
 KEYBOARDPARAMS="off"
else
 KEYBOARDPARAMS="rate $KEYBOARDDELAY $KEYBOARDRATE"
fi
xset c $KEYBOARDVOL r $KEYBOARDPARAMS
echo -n " c $KEYBOARDVOL r $KEYBOARDPARAMS"  >> /tmp/pupx_finalparams
[ $5 ] && exit
Xdialog --title "キーボードの設定" --msgbox "キークリックの音量を${KEYBOARDVOL}に\nオートリピートを${KEYBOARDPARAMS}に\n(このセッション中のみ)設定します" 0 0' > /tmp/pupx_keyboard.sh
chmod 777 /tmp/pupx_keyboard.sh

#/tmp/pupx_screen.sh \$SCREENSAVERFLAG \$SCREENSAVERDELAY \$SCREENSAVERCYCLE \$SCREENSAVERBLANKING \$SCREENSAVEREXPOSURES
echo '#!/bin/sh
SCREENSAVERFLAG=$1
SCREENSAVERDELAY=$2
SCREENSAVERCYCLE=$3
SCREENSAVERBLANKING=$4
SCREENSAVEREXPOSURES=$5
SCREENSAVERDELAY=`echo -n $SCREENSAVERDELAY | cut -f 1 -d '.'`
SCREENSAVERCYCLE=`echo -n $SCREENSAVERCYCLE | cut -f 1 -d '.'`
if [ "$SCREENSAVERFLAG" = "false" ];then
 SCREENSAVERPARAMS="s off"
else
 [ "$SCREENSAVERBLANKING" = "false" ] && SCREENSAVERBLANKING=noblank
 [ "$SCREENSAVERBLANKING" = "true" ] && SCREENSAVERBLANKING=blank
 [ "$SCREENSAVEREXPOSURES" = "false" ] && SCREENSAVEREXPOSURES=noexpose
 [ "$SCREENSAVEREXPOSURES" = "true" ] && SCREENSAVEREXPOSURES=expose
 SCREENSAVERPARAMS="s $SCREENSAVERDELAY $SCREENSAVERCYCLE s $SCREENSAVERBLANKING s $SCREENSAVEREXPOSURES"
fi
xset $SCREENSAVERPARAMS
echo -n " $SCREENSAVERPARAMS"  >> /tmp/pupx_finalparams
[ $6 ] && exit
Xdialog --title "スクリーンセーバーの設定" --msgbox "スクリーンセーバーのパラメーターを:\n${SCREENSAVERDELAY} ${SCREENSAVERCYCLE} ${SCREENSAVERBLANKING} ${SCREENSAVEREXPOSURES}に\n(このセッション中のみ)設定します" 0 0
' > /tmp/pupx_screen.sh
chmod 777 /tmp/pupx_screen.sh


export MAIN_DIALOG="<window title=\"pupX: Xのプロパティ設定\">
<vbox>
  <notebook labels=\"マウス|キーボード|スクリーンセーバー\">
  
    <vbox>
     <hbox>
      <text>
       <label>加速度:</label>
      </text>
      <combobox>
       <variable>MOUSEACCEL</variable>
       <item>${MOUSEACCEL}</item>
       <item>7.0</item>
       <item>6.5</item>
       <item>6.0</item>
       <item>5.5</item>
       <item>5.0</item>
       <item>4.5</item>
       <item>4.0</item>
       <item>3.5</item>
       <item>3.0</item>
       <item>2.5</item>
       <item>2.0</item>
       <item>1.8</item>
       <item>1.6</item>
       <item>1.4</item>
       <item>1.2</item>
       <item>1.0</item>
      </combobox>
     </hbox>
     <text><label>瞬間的に閾値(ピクセル)を越えて動かすとき、この係数倍で加速</label></text>
     <hbox>
      <text>
       <label>閾値:</label>
      </text>
      <combobox>
       <variable>MOUSETHRESHOLD</variable>
       <item>${MOUSETHRESHOLD}</item>
       <item>16</item>
       <item>15</item>
       <item>14</item>
       <item>13</item>
       <item>12</item>
       <item>11</item>
       <item>10</item>
       <item>9</item>
       <item>8</item>
       <item>7</item>
       <item>6</item>
       <item>5</item>
       <item>4</item>
       <item>3</item>
       <item>2</item>
       <item>1</item>
      </combobox>
     </hbox>
     <text><label>瞬間的にこのピクセルを移動した際に加速開始</label></text>
     <hbox>
      <button>
       <label>反映</label>
       <action>/tmp/pupx_mouseaccel.sh \$MOUSEACCEL \$MOUSETHRESHOLD &</action>
      </button>
     </hbox>
    </vbox>

    <vbox>
     <hbox>
      <text><label>音量:</label></text>
      <combobox>
       <variable>KEYBOARDVOL</variable>
       <item>${KEYBOARDVOL}</item>
       <item>100</item>
       <item>90</item>
       <item>80</item>
       <item>70</item>
       <item>60</item>
       <item>50</item>
       <item>40</item>
       <item>30</item>
       <item>20</item>
       <item>10</item>
       <item>0</item>
      </combobox>
     </hbox>
     <text><label>キークリックの音量 (0-100)％</label></text>
     <frame オートリピート>
      <checkbox>
       <label>オートリピート</label>
       <variable>KEYBOARDAUTO</variable>
       <default>${KEYBOARDAUTO}</default>
       <action>if true enable: KEYBOARDDELAY</action>
       <action>if true enable: KEYBOARDRATE</action>
       <action>if false disable: KEYBOARDDELAY</action>
       <action>if false disable: KEYBOARDRATE</action>
      </checkbox>
      <hbox>
       <text><label>\"       \"</label></text>
       <text><label>遅延:</label></text>
       <entry max_length=\"4\">
        <visible>${KBVISIBLE}</visible>
        <default>${KEYBOARDDELAY}</default>
        <variable>KEYBOARDDELAY</variable>
       </entry>
       <text><label>\"(ミリ秒)       \"</label></text>
      </hbox>
      <text><label>キーリピートが始まるまでの遅延時間</label></text>
      <hbox>
       <text><label>\"        \"</label></text>
       <text><label>速度:</label></text>
       <entry max_length=\"2\">
        <visible>${KBVISIBLE}</visible>
        <default>${KEYBOARDRATE}</default>
        <variable>KEYBOARDRATE</variable>
       </entry>
       <text><label>\"(リピート/秒)       \"</label></text>
      </hbox>
      <text><label>キーリピートの速さ</label></text>
     </frame>
     <hbox>
      <button>
       <label>反映</label>
       <action>/tmp/pupx_keyboard.sh \$KEYBOARDVOL \$KEYBOARDAUTO \$KEYBOARDDELAY \$KEYBOARDRATE &</action>
      </button>
     </hbox>
    </vbox>

    <vbox>
      <checkbox>
       <label>スクリーンセーバーを有効に</label>
       <variable>SCREENSAVERFLAG</variable>
       <default>${SCREENSAVERFLAG}</default>
       <action>if true enable: SCREENSAVERDELAY</action>
       <action>if true enable: SCREENSAVERCYCLE</action>
       <action>if false disable: SCREENSAVERDELAY</action>
       <action>if false disable: SCREENSAVERCYCLE</action>
      </checkbox>
      <hbox>
       <text><label>\"       \"</label></text>
       <text><label>待ち時間:</label></text>
       <entry max_length=\"4\">
        <visible>${SCREENVISIBLE}</visible>
        <default>${SCREENSAVERDELAY}</default>
        <variable>SCREENSAVERDELAY</variable>
       </entry>
       <text><label>\"(秒)       \"</label></text>
      </hbox>
      <text><label>スクリーンセーバーが起動するまでの時間</label></text>
      <hbox>
       <text><label>\"        \"</label></text>
       <text><label>間隔:</label></text>
       <entry max_length=\"4\">
        <visible>${SCREENVISIBLE}</visible>
        <default>${SCREENSAVERCYCLE}</default>
        <variable>SCREENSAVERCYCLE</variable>
       </entry>
       <text><label>\"(秒)       \"</label></text>
      </hbox>
      <text><label>背景が変わる間隔</label></text>
      <hbox>
       <text><label>\"   \"</label></text>
       <vbox>
        <checkbox>
         <label>ブランクスクリーンを表示</label>
         <variable>SCREENSAVERBLANKING</variable>
         <default>${SCREENSAVERBLANKING}</default>
        </checkbox>
        <checkbox>
         <label>露出を許可</label>
         <variable>SCREENSAVEREXPOSURES</variable>
         <default>${SCREENSAVEREXPOSURES}</default>
        </checkbox>
       </vbox>
      </hbox>
     <hbox>
      <button>
       <label>反映</label>
       <action>/tmp/pupx_screen.sh \$SCREENSAVERFLAG \$SCREENSAVERDELAY \$SCREENSAVERCYCLE \$SCREENSAVERBLANKING \$SCREENSAVEREXPOSURES &</action>
      </button>
     </hbox>
    </vbox>
    
  </notebook>
  
  <hbox>
   <button>
    <label>保存せずに終了</label>
    <action type=\"exit\">no save</action>
   </button>
   <button>
    <label>設定を反映、保存して終了</label>
    <action type=\"exit\">save settings</action>
   </button>
  </hbox>
</vbox>
</window>
"

#echo "$MAIN_DIALOG" >/tmp/testmaindlg

RETPARAMS="`gtkdialog3 --program=MAIN_DIALOG`"

eval "$RETPARAMS"

echo "$RETPARAMS"

[ "$EXIT" != "save settings" ] && exit

echo -n "" > /tmp/pupx_finalparams
/tmp/pupx_mouseaccel.sh $MOUSEACCEL $MOUSETHRESHOLD quiet
/tmp/pupx_keyboard.sh $KEYBOARDVOL $KEYBOARDAUTO $KEYBOARDDELAY $KEYBOARDRATE quiet
/tmp/pupx_screen.sh $SCREENSAVERFLAG $SCREENSAVERDELAY $SCREENSAVERCYCLE $SCREENSAVERBLANKING $SCREENSAVEREXPOSURES quiet
sync
echo -n "xset " > /root/.xset.sh
cat /tmp/pupx_finalparams >> /root/.xset.sh
chmod 644 /root/.xset.sh
#...this is evaluated at bootup by /root/.xinitrc

###END###

