Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # ~/.bin/dock
- #
- # constants
- PID=$(pgrep dbus-launch)
- USER=$(ps -o user --no-headers $PID)
- [ -z $USER ] && export USER=demian
- USERHOME=$(getent passwd $USER | cut -d: -f6)
- SUSPCAT=$(cat /sys/bus/usb/devices/usb1/power/autosuspend)
- HDMI2=$(xrandr | grep HDMI2)
- DOCKED=$(cat /sys/devices/platform/dock.0/docked)
- DATEN=$(ls /dev/disk/by-uuid | grep 212A2E340D494014 | wc -l)
- LOG=$USERHOME/.logs/dock.log
- EXTOFF=$(xrandr | grep 'HDMI2 disconnected' | wc -l)
- export XAUTHORITY="$USERHOME/.Xauthority"
- for x in /tmp/.X11-unix/*; do
- DISPLAYNUM=$(echo $x | sed s#/tmp/.X11-unix/X##)
- if [ x"$XAUTHORITY" != x"" ]; then
- export DISPLAY=":$DISPLAYNUM"
- fi
- done
- # utilities
- logger() { echo "$(date +'[ %d %b %Y %H %M ]') :: $*" | tee -a $LOG; }
- errorout() { logger "error: $*"; exit 1; }
- # must be root
- [[ $(id -u) -ne 0 ]] && errorout 'you must be root'
- [[ $DOCKED = 0 ]] && errorout 'no docking station found'
- [[ "$1" = '-v' ]] && verbose=true || verbose=false
- ##################################
- logger "starting docking process:"
- ##################################
- $verbose && logger "switching monitor"
- case "$HDMI2" in
- "HDMI2 connected ("*) xrandr --output LVDS1 --off --output HDMI2 --auto
- sh $USERHOME/.wallpaper &;;
- "HDMI2 disconnected"*) $verbose && logger "-> no display connected"
- $verbose && logger "-> retrying in 2, 5 and 20 seconds"
- (sleep 2 && xrandr --output LVDS1 --off --output HDMI2 --auto
- sleep 3 && xrandr --output LVDS1 --off --output HDMI2 --auto && sh $USERHOME/.wallpaper
- sleep 7 && xrandr --output LVDS1 --off --output HDMI2 --auto && sh $USERHOME/.wallpaper)&;;
- "HDMI2 connected 1"*) $verbose && logger "-> display already in use";;
- *) $verbose && logger "-> undefined display state";;
- esac
- $verbose && logger "changing network profile to home"
- (rmmod e1000e && modprobe e1000e
- netcfg -a && netcfg home) >/dev/null 2>&1 &
- $verbose && logger "mounting /media/daten"
- case "$DATEN" in
- 1) if [ $(cat /proc/mounts | grep '/media/daten' | wc -l) = 0 ];then
- (hdparm -B 127 -S 36 -W 0 -M 128 /dev/disk/by-uuid/212A2E340D494014
- echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
- sleep 5 && mount /media/daten) >/dev/null 2>&1 &
- else
- $verbose && logger "-> drive already mounted"
- fi;;
- 0) $verbose && logger "-> drive not present";;
- esac
- if [ $SUSPCAT -ge 1 ];then
- $verbose && logger "toggling usb suspend twice"
- (sh $USERHOME/.bin/usbsuspend && sleep .5 && sh $USERHOME/.bin/usbsuspend) &
- else
- $verbose && logger "-> usb suspend not enabled"
- fi
- $verbose && logger "restarting conky"
- su -c "killall conky" $USER
- LANG=en_US.UTF-8 su -c "conky -q -c $USERHOME/.conkydock &" $USER &
- logger 'success.'
- echo >> $LOG
Advertisement
Add Comment
Please, Sign In to add comment