Files
libgphoto2/packaging/linux-hotplug/usbcam.x11-app
Ismo Puustinen 39b4395532 scripts: remove bashisms.
Convert bash scripts to more generic shell scripts. This removes the
strict bash dependency and the scripts should now run with any posix
shell. Also fix the issues reported by shellcheck while at it.
2017-01-24 22:35:26 +02:00

77 lines
2.3 KiB
Bash

#!/bin/sh
# 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$
#
# /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}" || exit 1
usrhome=~${USER}
"${SU}" "${USER}" -c "${ENV} DISPLAY=${DISPLAY} HOME=${usrhome} ${X11_APP}"
fi
fi