diff --git a/.gitignore b/.gitignore
index 2ebaa5e..634f043 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,5 @@ CHANGELOG
config.h
#*
\#*
+wmfs.1.gz
+wmfs.1.xml
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a12b6be..166b5da 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,6 +11,7 @@ set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
# Other
#set(CMAKE_BUILD_TYPE RELEASE)
option(WITH_LOGOS "install wmfs logos")
+option(GENERATE_MANPAGES "generate manpages" ON)
# Project name - wmfs
set(PROJECT_NAME wmfs)
project(${PROJECT_NAME} C)
@@ -46,7 +47,24 @@ pkg_check_modules(wmfs_required
x11
libconfuse)
# Find exterbal programs
+macro(a_find_program var prg req)
+ set(required ${req})
+ find_program(${var} ${prg})
+ if(NOT ${var})
+ message(STATUS "${prg} not found.")
+ if(required)
+ message(FATAL_ERROR "${prg} is required to build wmfs")
+ endif()
+ else()
+ message(STATUS "${prg} -> ${${var}}")
+ endif()
+endmacro()
find_program(GIT_EXECUTABLE git)
+# programs needed for man pages
+a_find_program(ASCIIDOC_EXECUTABLE asciidoc FALSE)
+a_find_program(XMLTO_EXECUTABLE xmlto FALSE)
+a_find_program(GZIP_EXECUTABLE gzip FALSE)
+a_find_program(CAT_EXECUTABLE cat TRUE)
# Remplace strings in configs
set(WMFS_VERSION ${VERSION})
set(WMFS_COMPILE_MACHINE ${CMAKE_SYSTEM_PROCESSOR})
@@ -84,19 +102,98 @@ set(CHANGELOG_FILE ${SOURCE_DIR}/CHANGELOG)
file(WRITE ${CHANGELOG_FILE} ${WMFS_CHANGELOG})
endif()
+# {{{ Check if documentation can be build
+if(GENERATE_MANPAGES)
+ if(NOT ASCIIDOC_EXECUTABLE OR NOT XMLTO_EXECUTABLE OR NOT GZIP_EXECUTABLE)
+ if(NOT ASCIIDOC_EXECUTABLE)
+ SET(missing "asciidoc")
+ endif()
+ if(NOT XMLTO_EXECUTABLE)
+ SET(missing ${missing} " xmlto")
+ endif()
+ if(NOT GZIP_EXECUTABLE)
+ SET(missing ${missing} " gzip")
+ endif()
+
+ message(STATUS "Not generating manpages. Missing: " ${missing})
+ set(GENERATE_MANPAGES OFF)
+ endif()
+endif()
+
+# sets
+# {{{ Install path and configuration variables
+if(DEFINED PREFIX)
+ set(PREFIX ${PREFIX} CACHE PATH "install prefix")
+ set(CMAKE_INSTALL_PREFIX ${PREFIX})
+else()
+ set(PREFIX ${CMAKE_INSTALL_PREFIX} CACHE PATH "install prefix")
+endif()
+
+# set man path
+set(WMFS_MAN_SRCS
+ ${SOURCE_DIR}/wmfs.1.txt)
+
+if(DEFINED WMFS_MAN_PATH)
+ set(WMFS_MAN_PATH ${WMFS_MAN_PATH} CACHE PATH "wmfs manpage directory")
+else()
+ set(WMFS_MAN_PATH ${PREFIX}/share/man CACHE PATH "wmfs manpage directory")
+endif()
+
+# {{{ Manpages
+if(GENERATE_MANPAGES)
+ foreach(txtfile ${WMFS_MAN_SRCS})
+ string(REGEX REPLACE ".txt\$" ".xml" xmlfile ${txtfile})
+ string(REPLACE ${SOURCE_DIR}
+ ${BUILD_DIR} xmlfile ${xmlfile})
+ string(REGEX REPLACE ".xml\$" ".gz" gzfile ${xmlfile})
+ string(REGEX REPLACE ".gz\$" "" manfile ${gzfile})
+
+ add_custom_command(
+ COMMAND ${CAT_EXECUTABLE} ${txtfile}
+ | ${ASCIIDOC_EXECUTABLE} -d manpage -b docbook -o ${xmlfile} -
+ WORKING_DIRECTORY ${BUILD_DIR}
+ OUTPUT ${xmlfile}
+ DEPENDS ${txtfile}
+ VERBATIM)
+ add_custom_command(
+ COMMAND ${XMLTO_EXECUTABLE} man ${xmlfile}
+ OUTPUT ${manfile}
+ DEPENDS ${xmlfile})
+ add_custom_command(
+ COMMAND ${CAT_EXECUTABLE} ${manfile}
+ | ${GZIP_EXECUTABLE}
+ > ${gzfile}
+ OUTPUT ${gzfile}
+ DEPENDS ${manfile}
+ VERBATIM)
+
+ set(MAN_FILES ${MAN_FILES} ${gzfile})
+
+ # figure out in what section to install to from filename
+ string(REGEX REPLACE "^.*\\.([0-9])\\.gz\$" "\\1" section ${gzfile})
+ set(WMFS_MAN${section}_FILES ${WMFS_MAN${section}_FILES} ${gzfile})
+ endforeach()
+
+ add_custom_target(man ALL DEPENDS ${MAN_FILES})
+endif()
+# }}}
+
set(PROJECT_DATA_PATH share/${PROJECT_NAME})
set(PROJECT_TODO ${SOURCE_DIR}/TODO)
set(PROJECT_README ${SOURCE_DIR}/README)
set(PROJECT_CHANGELOG ${SOURCE_DIR}/CHANGELOG)
set(PROJECT_DEFAULT_CONF ${SOURCE_DIR}/wmfsrc)
-install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
+# installs
+install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
if(WITH_LOGOS)
set(PROJECT_LOGOS ${PROJECT_DATA_PATH}/logos)
set(PROJECT_LOGOS_DIR ${SOURCE_DIR}/logos)
install(DIRECTORY ${PROJECT_LOGOS_DIR} DESTINATION ${PROJECT_DATA_PATH})
message("Install With logos")
endif()
-
+if(GENERATE_MANPAGES)
+ install(FILES ${WMFS_MAN1_FILES} DESTINATION ${WMFS_MAN_PATH}/man1)
+endif()
install(FILES ${PROJECT_TODO} ${PROJECT_README} ${PROJECT_CHANGELOG}
${PROJECT_DEFAULT_CONF} DESTINATION ${PROJECT_DATA_PATH})
diff --git a/build/wmfs.1 b/build/wmfs.1
new file mode 100644
index 0000000..360983e
--- /dev/null
+++ b/build/wmfs.1
@@ -0,0 +1,75 @@
+.\" Title: wmfs
+.\" Author:
+.\" Generator: DocBook XSL Stylesheets v1.73.2
+.\" Date: 09/13/2008
+.\" Manual:
+.\" Source:
+.\"
+.TH "WMFS" "1" "09/13/2008" "" ""
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.SH "NAME"
+wmfs - Windows Manager From Scratch
+.SH "SYNOPSIS"
+\fBwmfs\fR [\fB\-v\fR | \fB\-\-version\fR] [\fB\-h\fR | \fB\-\-help\fR] [\fB\-c\fR | \fB\-\-config\fR \fIFILE\fR]
+.sp
+.SH "DESCRIPTION"
+\fBWmfs\fR is a windows manager for X\. You can use Floating and Tiling apps\. blahblahblah\&...
+.sp
+.SH "OPTIONS"
+.PP
+\fB\-v\fR, \fB\-\-version\fR
+.RS 4
+Print version information to standard output, then exit\.
+.RE
+.PP
+\fB\-h\fR, \fB\-\-help\fR
+.RS 4
+Print help information, then exit\.
+.RE
+.PP
+\fB\-c\fR, \fB\-\-config\fR
+.RS 4
+Use an alternate configuration file instead of
+\fI$HOME/\.wmfsrc\fR\.
+.RE
+.SH "DEFAULT MOUSE BINDINGS"
+.SS "Type de bind\."
+.PP
+\fBtouche + truc\fR on XYZ
+.RS 4
+Description\.
+.RE
+.SS "Autre type de bind\."
+.PP
+\fBtruc + machin\fR
+.RS 4
+Desc\.
+.RE
+.SH "DEFAULT KEY BINDINGS"
+.SS "Type de bind\."
+.PP
+\fBtouche + truc\fR on XYZ
+.RS 4
+Description\.
+.RE
+.SS "Autre type de bind\."
+.PP
+\fBtruc + machin\fR
+.RS 4
+Desc\.
+.RE
+.SH "CONFIGURATION"
+\fBWmfs\fR is configured by \fI$HOME/\.wmfsrc\fR
+.sp
+.SH "BUGS"
+Know bug list here\.
+.sp
+.SH "AUTHORS"
+Marc Lagrange for the build system and Gentoo ebuilds\. Martin Duquesnoy for the code\.
+.sp
+.SH "WWW"
+http://wmfs\.sangor\.net/
+.sp
diff --git a/wmfs.1.txt b/wmfs.1.txt
new file mode 100644
index 0000000..9af1253
--- /dev/null
+++ b/wmfs.1.txt
@@ -0,0 +1,76 @@
+wmfs(1)
+=======
+
+NAME
+----
+
+wmfs - Windows Manager From Scratch
+
+SYNOPSIS
+--------
+
+*wmfs* [*-v* | *--version*] [*-h* | *--help*] [*-c* | *--config* 'FILE']
+
+DESCRIPTION
+-----------
+
+*Wmfs* is a windows manager for X. You can use Floating and Tiling apps.
+blahblahblah...
+
+OPTIONS
+-------
+*-v*, *--version*::
+ Print version information to standard output, then exit.
+*-h*, *--help*::
+ Print help information, then exit.
+*-c*, *--config*::
+ Use an alternate configuration file instead of '$HOME/.wmfsrc'.
+
+DEFAULT MOUSE BINDINGS
+----------------------
+
+Type de bind.
+~~~~~~~~~~~~~
+
+*touche + truc* on XYZ::
+ Description.
+
+
+Autre type de bind.
+~~~~~~~~~~~~~~~~~~~
+
+*truc + machin*::
+ Desc.
+
+DEFAULT KEY BINDINGS
+---------------------
+
+Type de bind.
+~~~~~~~~~~~~~
+
+*touche + truc* on XYZ::
+ Description.
+
+Autre type de bind.
+~~~~~~~~~~~~~~~~~~~
+
+*truc + machin*::
+ Desc.
+
+
+CONFIGURATION
+-------------
+*Wmfs* is configured by '$HOME/.wmfsrc'
+
+BUGS
+----
+Know bug list here.
+
+AUTHORS
+-------
+Marc Lagrange for the build system and Gentoo ebuilds.
+Martin Duquesnoy for the code.
+
+WWW
+---
+http://wmfs.sangor.net/