diff --git a/Makefile b/Makefile
index ecaa7ee..3afa6d0 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
PACKAGE = Camera
VERSION = 0.0.0
-SUBDIRS = data po src tools
+SUBDIRS = data doc po src tools
RM = rm -f
LN = ln -f
TAR = tar -czvf
@@ -25,6 +25,10 @@ dist:
$(PACKAGE)-$(VERSION)/data/camera.desktop \
$(PACKAGE)-$(VERSION)/data/gallery.desktop \
$(PACKAGE)-$(VERSION)/data/project.conf \
+ $(PACKAGE)-$(VERSION)/doc/Makefile \
+ $(PACKAGE)-$(VERSION)/doc/docbook.sh \
+ $(PACKAGE)-$(VERSION)/doc/camera.xml \
+ $(PACKAGE)-$(VERSION)/doc/project.conf \
$(PACKAGE)-$(VERSION)/po/Makefile \
$(PACKAGE)-$(VERSION)/po/gettext.sh \
$(PACKAGE)-$(VERSION)/po/POTFILES \
diff --git a/doc/Makefile b/doc/Makefile
new file mode 100644
index 0000000..5a51395
--- /dev/null
+++ b/doc/Makefile
@@ -0,0 +1,33 @@
+TARGETS = camera.1 camera.html
+PREFIX = /usr/local
+DESTDIR =
+RM = rm -f
+LN = ln -f
+MKDIR = mkdir -m 0755 -p
+INSTALL = install
+
+
+all: $(TARGETS)
+
+camera.1: camera.xml
+ ./docbook.sh -P "$(PREFIX)" -- "camera.1"
+
+camera.html: camera.xml
+ ./docbook.sh -P "$(PREFIX)" -- "camera.html"
+
+clean:
+ $(RM) -- $(camera.1_OBJS) $(camera.html_OBJS)
+ ./docbook.sh -c -P "$(PREFIX)" -- "camera.html"
+
+distclean: clean
+ $(RM) -- $(TARGETS)
+
+install: $(TARGETS)
+ ./docbook.sh -P "$(DESTDIR)$(PREFIX)" -i -- "camera.1"
+ ./docbook.sh -P "$(DESTDIR)$(PREFIX)" -i -- "camera.html"
+
+uninstall:
+ ./docbook.sh -P "$(DESTDIR)$(PREFIX)" -u -- "camera.1"
+ ./docbook.sh -P "$(DESTDIR)$(PREFIX)" -u -- "camera.html"
+
+.PHONY: all clean distclean install uninstall
diff --git a/doc/camera.xml b/doc/camera.xml
new file mode 100644
index 0000000..4758043
--- /dev/null
+++ b/doc/camera.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+ &title;
+ &package;
+
+
+ &firstname;
+ &surname;
+ Code and documentation.
+
+ &email;
+
+
+
+
+ 2013
+ &firstname; &surname; <&email;>
+
+
+ This manual page was written for the DeforaOS project (and may be
+ used by others).
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU General Public License,
+ Version 3 as published by the Free Software Foundation.
+
+
+
+ &name;
+ §ion;
+
+
+ &name;
+ &purpose;
+
+
+
+ &name;
+
+ device
+
+
+
+ Description
+ &name; is a webcam application, with the ability to
+ take pictures.
+
+
+ Options
+ The following options are available:
+
+
+
+
+ Specify a video device to open.
+
+
+
+
+
+ Bugs
+ Issues can be listed and reported at .
+
+
+ See also
+
+
+ browser
+ 1
+ ,
+
+ gallery
+ 1
+
+
+
+
+
diff --git a/doc/docbook.sh b/doc/docbook.sh
new file mode 100755
index 0000000..a9d498c
--- /dev/null
+++ b/doc/docbook.sh
@@ -0,0 +1,138 @@
+#!/bin/sh
+#$Id$
+#Copyright (c) 2012-2013 Pierre Pronchery
+#
+#Redistribution and use in source and binary forms, with or without
+#modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+#AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+#IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+#DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+#FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+#DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+#SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+#CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+#OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+#variables
+PREFIX="/usr/local"
+. "../config.sh"
+#executables
+DEBUG="_debug"
+INSTALL="install -m 0644"
+MKDIR="mkdir -m 0755 -p"
+RM="rm -f"
+XSLTPROC="xsltproc --nonet --xinclude"
+
+
+#functions
+#debug
+_debug()
+{
+ echo "$@" 1>&2
+ "$@"
+}
+
+
+#usage
+_usage()
+{
+ echo "Usage: docbook.sh [-c|-i|-u][-P prefix] target..." 1>&2
+ return 1
+}
+
+
+#main
+clean=0
+install=0
+uninstall=0
+while getopts "ciuP:" name; do
+ case "$name" in
+ c)
+ clean=1
+ ;;
+ i)
+ uninstall=0
+ install=1
+ ;;
+ u)
+ install=0
+ uninstall=1
+ ;;
+ P)
+ PREFIX="$2"
+ ;;
+ ?)
+ _usage
+ exit $?
+ ;;
+ esac
+done
+shift $((OPTIND - 1))
+if [ $# -eq 0 ]; then
+ _usage
+ exit $?
+fi
+
+[ -z "$DATADIR" ] && DATADIR="$PREFIX/share"
+[ -z "$MANDIR" ] && MANDIR="$DATADIR/man"
+
+while [ $# -gt 0 ]; do
+ target="$1"
+ source="${target%.*}.xml"
+ shift
+
+ #determine the type
+ ext="${target##*.}"
+ ext="${ext##.}"
+ case "$ext" in
+ html)
+ XSL="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"
+ [ -f "${target%.*}.xsl" ] && XSL="${target%.*}.xsl"
+ instdir="$DATADIR/doc/$ext/$PACKAGE"
+ ;;
+ 1|2|3|4|5|6|7|8|9)
+ XSL="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"
+ instdir="$MANDIR/man$ext"
+ ;;
+ *)
+ echo "$0: $target: Unknown type" 1>&2
+ exit 2
+ ;;
+ esac
+
+ #clean
+ [ "$clean" -ne 0 ] && continue
+
+ #uninstall
+ if [ "$uninstall" -eq 1 ]; then
+ $DEBUG $RM -- "$instdir/$target" || exit 2
+ continue
+ fi
+
+ #install
+ if [ "$install" -eq 1 ]; then
+ $DEBUG $MKDIR -- "$instdir" || exit 2
+ $DEBUG $INSTALL -- "$target" "$instdir/$target" || exit 2
+ continue
+ fi
+
+ #create
+ $DEBUG $XSLTPROC -o "$target" "$XSL" "$source"
+ #XXX ignore errors
+ if [ $? -ne 0 ]; then
+ echo "$0: $target: Could not create page" 1>&2
+ $RM -- "$target"
+ break
+ fi
+done
diff --git a/doc/project.conf b/doc/project.conf
new file mode 100644
index 0000000..269e60e
--- /dev/null
+++ b/doc/project.conf
@@ -0,0 +1,14 @@
+targets=camera.1,camera.html
+dist=Makefile,docbook.sh,camera.xml
+
+[camera.1]
+type=script
+script=./docbook.sh
+install=
+depends=camera.xml
+
+[camera.html]
+type=script
+script=./docbook.sh
+install=
+depends=camera.xml
diff --git a/project.conf b/project.conf
index 89f1173..fec281a 100644
--- a/project.conf
+++ b/project.conf
@@ -1,6 +1,6 @@
package=Camera
version=0.0.0
-subdirs=data,po,src,tools
+subdirs=data,doc,po,src,tools
config=h,sh
dist=Makefile,config.h