#!/bin/bash
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful, 
# but WITHOUT ANY WARRANTY; without even the implied warranty of 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details. 
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA  02110-1301  USA
#
#
# $Id: usbcam.x11-app 15370 2015-02-22 10:13:05Z marcusmeissner $
#
# /etc/hotplug/usb/usbcam
#
# Sets up newly plugged in USB camera so that just one certain user

USER=root

# can access it from user space. (Replace root by the user you want
# to have access to the cameras.)

# It then runs the X11 application (gtkam is used as an example)

X11_APP=/usr/bin/gtkam

# on the X11 display (:0 should work on most single user workstations)

DISPLAY=:0

# in the directory (~$USER is just the user's home directory)

DIRECTORY=~$USER

#
# Note that for this script to work, you'll need all of the following:
# a) a line in the file /etc/hotplug/usermap that corresponds to the 
#    camera you are using. You can get the correct lines for all cameras 
#    supported by libgphoto2 by running
#              $ print-camera-list usb-usermap usbcam
# b) run your camera software as the user given above
# c) a Linux kernel supporting hotplug and usbdevfs
# d) the hotplug package (http://linux-hotplug.sourceforge.net/)
# e) su
# f) env
# g) X11
#
# In the usermap file, the first field "usb module" should be named 
# "usbcam" like this script.
#
# Script written by Trevor Woerner but slightly adapted for inclusion
# into libgphoto2. 

SU=/bin/su
ENV=/usr/bin/env

if [ "${ACTION}" = "add" ] && [ -f "${DEVICE}" ]
then
    chmod a-rwx "${DEVICE}"
    chown "${USER}" "${DEVICE}"
    chmod u+rw "${DEVICE}"

    if [ "${USER}" != "root" ]
    then
	# we don't want to run this as root. definitely not.
	cd "${DIRECTORY}"
	usrhome=~${USER}
	"${SU}" "${USER}" -c "${ENV} DISPLAY=${DISPLAY} HOME=${usrhome} ${X11_APP}"
    fi
fi
