Guest User

~/.bin/dock

a guest
May 19th, 2010
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.78 KB | None | 0 0
  1. #!/bin/bash
  2. # ~/.bin/dock
  3. #
  4.  
  5. # constants
  6. PID=$(pgrep dbus-launch)
  7. USER=$(ps -o user --no-headers $PID)
  8. [ -z $USER ] && export USER=demian
  9. USERHOME=$(getent passwd $USER | cut -d: -f6)
  10. SUSPCAT=$(cat /sys/bus/usb/devices/usb1/power/autosuspend)
  11. HDMI2=$(xrandr | grep HDMI2)
  12. DOCKED=$(cat /sys/devices/platform/dock.0/docked)
  13. DATEN=$(ls /dev/disk/by-uuid | grep 212A2E340D494014 | wc -l)
  14. LOG=$USERHOME/.logs/dock.log
  15. EXTOFF=$(xrandr | grep 'HDMI2 disconnected' | wc -l)
  16. export XAUTHORITY="$USERHOME/.Xauthority"
  17. for x in /tmp/.X11-unix/*; do
  18.     DISPLAYNUM=$(echo $x | sed s#/tmp/.X11-unix/X##)
  19.     if [ x"$XAUTHORITY" != x"" ]; then
  20.             export DISPLAY=":$DISPLAYNUM"
  21.     fi
  22. done
  23.  
  24. # utilities
  25. logger() { echo "$(date +'[ %d %b %Y %H %M ]') :: $*" | tee -a $LOG; }
  26. errorout() { logger "error: $*"; exit 1; }
  27.  
  28. # must be root
  29. [[ $(id -u) -ne 0 ]] && errorout 'you must be root'
  30. [[ $DOCKED = 0 ]] && errorout 'no docking station found'
  31. [[ "$1" = '-v' ]] && verbose=true || verbose=false
  32.  
  33. ##################################
  34. logger "starting docking process:"
  35. ##################################
  36.  
  37. $verbose && logger "switching monitor"
  38. case "$HDMI2" in
  39.     "HDMI2 connected ("*)   xrandr --output LVDS1 --off --output HDMI2 --auto
  40.                 sh $USERHOME/.wallpaper &;;
  41.     "HDMI2 disconnected"*)  $verbose && logger "-> no display connected"
  42.                 $verbose && logger "-> retrying in 2, 5 and 20 seconds"
  43.                 (sleep 2 && xrandr --output LVDS1 --off --output HDMI2 --auto
  44.                 sleep 3 && xrandr --output LVDS1 --off --output HDMI2 --auto && sh $USERHOME/.wallpaper
  45.                 sleep 7 && xrandr --output LVDS1 --off --output HDMI2 --auto && sh $USERHOME/.wallpaper)&;;
  46.     "HDMI2 connected 1"*)   $verbose && logger "-> display already in use";;
  47.     *)              $verbose && logger "-> undefined display state";;
  48. esac
  49.  
  50. $verbose && logger "changing network profile to home"
  51. (rmmod e1000e && modprobe e1000e
  52. netcfg -a && netcfg home) >/dev/null 2>&1 &
  53.  
  54. $verbose && logger "mounting /media/daten"
  55. case "$DATEN" in
  56.   1)  if [ $(cat /proc/mounts | grep '/media/daten' | wc -l) = 0 ];then
  57.           (hdparm -B 127 -S 36 -W 0 -M 128 /dev/disk/by-uuid/212A2E340D494014
  58.       echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
  59.           sleep 5 && mount /media/daten) >/dev/null 2>&1 &
  60.       else
  61.           $verbose && logger "-> drive already mounted"
  62.       fi;;
  63.   0)  $verbose && logger "-> drive not present";;
  64. esac
  65.  
  66. if [ $SUSPCAT -ge 1 ];then
  67.     $verbose && logger "toggling usb suspend twice"
  68.     (sh $USERHOME/.bin/usbsuspend && sleep .5 && sh $USERHOME/.bin/usbsuspend) &
  69. else
  70.     $verbose && logger "-> usb suspend not enabled"
  71. fi
  72.  
  73. $verbose && logger "restarting conky"
  74. su -c "killall conky" $USER
  75. LANG=en_US.UTF-8 su -c "conky -q -c $USERHOME/.conkydock &" $USER &
  76.  
  77. logger 'success.'
  78. echo >> $LOG
Advertisement
Add Comment
Please, Sign In to add comment