diff options
Diffstat (limited to 'blueman-open')
-rwxr-xr-x | blueman-open | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/blueman-open b/blueman-open new file mode 100755 index 0000000..f46d97a --- /dev/null +++ b/blueman-open @@ -0,0 +1,104 @@ +#!/bin/sh +# Blueman Mount Script for Slackware +# by Zarren Spry & Robby Workman + + +DEBUG=${DEBUG:-"1"} +if [ ! -z $DEBUG ];then + dbg_msg="Check /var/log/messages for errors." +else + dbg_msg="Enable *DEBUG* for error log." +fi + +device_addr=$1 +device_name=$(hcitool name $device_addr) +own_name=$(basename $0) +basedir=${basedir:-$HOME/.gvfs} +dir=${basedir} +browser=${browser:-"xdg-open"} +max_tries=5 + +# Check for kdialog +if which kdialog 1>/dev/null 2>/dev/null; then + messagetype="kdialog" +else + messagetype="libnotify" +fi + +# Mount function +mount_device () +{ + loop=0 + while [ $loop -lt $max_tries ] + do + [ ! -z $DEBUG ] && logger -i -t $own_name "Perform $loop try to mount device $device_name to $dir using gvfs." + [ ! -z $DEBUG ] && logger -i -t $own_name "Execute: gvfs-mount obex://["$device_addr"]" + out=$(gvfs-mount obex://["$device_addr"] 2>&1) + [ ! -z $DEBUG ] && logger -i -t $own_name "$out" + mounts=$(ls $dir | grep $device_name) + [ ! -z $DEBUG ] && logger -i -t $own_name "Found $mounts mounted inside $dir" + + if [ "$mounts" = "$device_name" ] ;then + MSG_TXT="Successfully mounted $device_name to $dir" + if [ $messagetype == "kdialog" ]; then + kdialog --passivepopup "$MSG_TXT" 2 + elif [ $messagetype == "libnotify" ]; then + notify-send --expire-time=20000 --icon=blueman "$MSG_TXT" + fi + [ ! -z $DEBUG ] && logger -i -t $own_name "Open $dir/$device_name with $browser" + out=$($browser $dir/$device_name 2>&1) + [ ! -z $DEBUG ] && logger -i -t $own_name "$out" + exit 0 + else + [ ! -z $DEBUG ] && logger -i -t $own_name "Failed to mount $device_name to $dir/$device_name from try $loop " + if [ $loop -ne 4 ]; then + MSG_TXT="Attempt $loop to mount $device_name to $dir failed. Retrying, please wait ..." + else + MSG_TXT="Failed to mount $device_name to $dir. $dbg_msg" + fi + if [ $messagetype == "kdialog" ]; then + kdialog --passivepopup "$MSG_TXT" 3 + elif [ $messagetype == "libnotify" ]; then + notify-send --expire-time=20000 --icon=blueman "$MSG_TXT" + fi + fi + sleep 2 + ((loop += 1)) + done +} + +# Unmount function +umount_device () +{ + mounts=$(ls $dir | grep $device_name) + if [ "$mounts" = "$device_name" ] ;then + [ ! -z $DEBUG ] && logger -i -t $own_name "Performing umount of $dir/$device_name." + out=$(gvfs-mount -u obex://[$device_addr] 2>&1) + [ ! -z $DEBUG ] && logger -i -t $own_name "$out" + if [ -d $dir/$device_name ] ;then + [ ! -z $DEBUG ] && logger -i -t $own_name "$device_name failed to unmount. Please perform its umount manually." + MSG_TXT="Failed to umount $dir - $dbg_msg" + if [ $messagetype == "kdialog" ]; then + kdialog --passivepopup "$MSG_TXT" 3 + elif [ $messagetype == "libnotify" ]; then + notify-send --expire-time=20000 --icon=blueman "$MSG_TXT" + fi + else + [ ! -z $DEBUG ] && logger -i -t $own_name "Successfully unmounted $device_name." + fi + else + [ ! -z $DEBUG ] && logger -i -t $own_name "$dir is not mounted - no need to perform umount..." + fi +} + +# Main +MSG_TXT="Mount device is in progress... Please wait..." +if [ $messagetype == "kdialog" ]; then + kdialog --passivepopup "$MSG_TXT" 4 +elif [ $messagetype == "libnotify" ]; then + notify-send --expire-time=20000 --icon=blueman "$MSG_TXT" +fi + +umount_device +mount_device + |