summaryrefslogtreecommitdiff
path: root/source/xap/blueman/blueman-open
blob: 0cfa688fa9fa690750e18e5a1d2306e25c98c4c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/bin/sh
# Blueman Mount Script for Slackware
# by Zarren Spry & Robby Workman
# Based on http://kde-apps.org/content/show.php/kde4+bluetooth+files+open?content=108869

# Set to 0 if you want more debugging messages
DEBUG=1

device_addr="$1"
device_name="$(hcitool name $device_addr)"
own_name="$(basename $0)"
basedir="${basedir:-$HOME/obexfs}"
mountpoint="${basedir}/${device_addr}"
browser=${browser:-"xdg-open"}

# If we're running in kde, use kdialog
if [ "$KDE_FULL_SESSION" = "true" ]; then
  if which kdialog 1>/dev/null 2>/dev/null; then
  messagetype="kdialog"
  fi
# If not, then see if libnotify is available
# Even if it is, there may not be a notification daemon running, but there's
# no good way to check for this, so oh well...
elif which notify-send 1>/dev/null 2>/dev/null; then
  messagetype="libnotify"
# If no libnotify, then use kdialog if it's installed
elif which kdialog 1>/dev/null 2>/dev/null; then
  messagetype="kdialog"
# If all else fails, just don't do notifications
else
  messagetype=""
fi

# Mount function
mount_device ()
{
  [ ! -z $DEBUG ] && logger -i -t $own_name "Attempting to mount device $device_name to $mountpoint..."
  [ ! -z $DEBUG ] && logger -i -t $own_name "Execute: obexfs -b $device_addr $mountpoint"
  
  mkdir -p $mountpoint
  obexfs -b $device_addr $mountpoint 2>&1

  if [ $? != 0 ]; then
    MSG_TXT="Failed to mount $device_name to $mountpoint. $dbg_msg"
    FAILZOR=definitely
    if [ ! -z $DEBUG ]; then
      logger -i -t $own_name "Failed to mount $device_name to $mountpoint."
    fi
  else
    MSG_TXT="Successfully mounted $device_name to $mountpoint"
    if [ ! -z $DEBUG ]; then
      logger -i -t $own_name "Successfully mounted $device_name to $mountpoint."
    fi
  fi

  if [ $messagetype == "kdialog" ]; then
    kdialog --passivepopup "$MSG_TXT" 2
  elif [ $messagetype == "libnotify" ]; then
    notify-send --expire-time=20000 --icon=blueman "$MSG_TXT"
  fi

  [ "$FAILZOR" = "definitely" ] && exit 1

  [ ! -z $DEBUG ] && logger -i -t $own_name "Opening $mountpoint with $browser..."
  $browser $mountpoint 2>&1

}

# Unmount function
umount_device ()
{
  if grep -qw $mountpoint /proc/mounts 2>/dev/null ; then
    [ ! -z $DEBUG ] && logger -i -t $own_name \
      "$mountpoint has something mounted on it already - unmounting it..."

    fusermount -u $mountpoint 1>/dev/null 2>/dev/null

    if [ $? != 0 ]; then
      [ ! -z $DEBUG ] && logger -i -t $own_name "Failed to unmount $mountpoint with fusermount..."
      umount -f $mountpoint 1>/dev/null 2>/dev/null
        if [ $? != 0 ]; then
          [ ! -z $DEBUG ] && \
            logger -i -t $own_name \
            "Failed to unmount $mountpoint with umount - try it manually as root and then start over."
          FAILZOR=definitely
          MSG_TXT="Failed to unmount $mountpoint with fusermount and umount - try it as root first."
        else
          break
        fi
    else
      [ ! -z $DEBUG ] && logger -i -t $own_name "Successfully unmounted $device_name."
    fi
  else
    [ ! -z $DEBUG ] && logger -i -t $own_name "$mountpoint has nothing mounted on it - continuing..."
  fi
  
  if [ $messagetype == "kdialog" ]; then
    kdialog --passivepopup "$MSG_TXT" 3
  elif [ $messagetype == "libnotify" ]; then
    notify-send --expire-time=20000 --icon=blueman "$MSG_TXT"
  fi
  [ "$FAILZOR" = "definitely" ] && exit 1
}

MSG_TXT="Attempting to mount $device_name - 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