Sisyphus
: 1 2023 | : 18631 | : 37556084
en ru br
ALT
5.1: 2.0.1-alt9.M51.1
www.altlinux.org/Changes

:: /̣
: italc2

             Sources      Gear   Bugs and FR  Repocop 

: italc2-alt-all.patch



 CMakeLists.txt                             |  44 ++-
 cmake/modules/FindIcotool.cmake            |  42 +++
 cmake/modules/FreedesktopIconsMacros.cmake | 439 +++++++++++++++++++++++++++++
 cmake/modules/MacroProcessManpages.cmake   |  83 ++++++
 ica/CMakeLists.txt                         |   3 +
 ica/helpers/CMakeLists.txt                 |   3 +
 ica/helpers/man/italc_auth_helper.1        |  28 ++
 ica/ica.1                                  |  70 -----
 ica/man/ica.1                              | 101 +++++++
 ica/src/ItalcVncServer.cpp                 |   2 +-
 ima/CMakeLists.txt                         |  12 +
 ima/data/italc.desktop.in                  |   7 +-
 ima/italc.1                                |  35 ---
 ima/man/italc.1                            |  32 +++
 imc/CMakeLists.txt                         |  12 +
 imc/man/imc.1                              |  71 +++++
 lib/resources/ru.qm                        | Bin 77301 -> 77313 bytes
 lib/resources/ru.ts                        |   2 +-
 18 files changed, 875 insertions(+), 111 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 71d86f0..0a5044f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.4.5)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8.5)
 
 PROJECT(italc)
 
@@ -16,6 +16,12 @@ INCLUDE(CheckIncludeFiles)
 INCLUDE(CheckFunctionExists)
 INCLUDE(FindPkgConfig)
 INCLUDE(Qt4Hacks)
+INCLUDE(GNUInstallDirs)
+INCLUDE(MacroProcessManpages)
+IF(UNIX)
+	# installing Freedesktop icons only for UNIX
+	INCLUDE(FreedesktopIconsMacros)
+ENDIF(UNIX)
 
 SET(VERSION_MAJOR "2")
 SET(VERSION_MINOR "0")
@@ -81,6 +87,7 @@ CHECK_INCLUDE_FILES(linux/fb.h ITALC_HAVE_LINUX_FB_H)
 CHECK_INCLUDE_FILES(linux/input.h ITALC_HAVE_LINUX_INPUT_H)
 CHECK_INCLUDE_FILES(linux/uinput.h ITALC_HAVE_LINUX_UINPUT_H)
 CHECK_INCLUDE_FILES(linux/videodev.h ITALC_HAVE_LINUX_VIDEODEV_H)
+CHECK_INCLUDE_FILES(linux/videodev2.h ITALC_HAVE_LINUX_VIDEODEV2_H)
 
 IF(NOT ITALC_BUILD_WIN32)
 	FIND_PACKAGE(PAM REQUIRED)
@@ -221,12 +228,45 @@ INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/lib/include ${ZLIB_I
 LINK_DIRECTORIES(${CMAKE_INSTALL_PREFIX}/lib ${CMAKE_BINARY_DIR}/lib)
 LINK_LIBRARIES(${QT_LIBRARIES} ${ZLIB_LIBRARIES} ${JPEG_LIBRARIES} ${PNG_LIBRARIES} ${OPENSSL_LIBRARIES})
 
+IF(DEFINED CMAKE_INSTALL_DATADIR)
+	SET(
+		DESKTOP_FILES_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/applications"
+		CACHE PATH
+		"Install location for .desktop files (relative to prefix)."
+	)
+	MARK_AS_ADVANCED(DESKTOP_FILES_DIR)
+	INSTALL(
+		FILES ${CMAKE_BINARY_DIR}/ima/data/italc.desktop
+		DESTINATION ${DESKTOP_FILES_INSTALL_DIR}
+	)
+ENDIF(DEFINED CMAKE_INSTALL_DATADIR)
+
 # make sub-directories
 ADD_SUBDIRECTORY(lib)
 ADD_SUBDIRECTORY(ica)
 ADD_SUBDIRECTORY(ima)
 ADD_SUBDIRECTORY(imc)
 
+# doc files
+LIST(APPEND italc_DOC_FILES
+  "${CMAKE_CURRENT_SOURCE_DIR}/AUTHORS"
+  "${CMAKE_CURRENT_SOURCE_DIR}/ChangeLog"
+  "${CMAKE_CURRENT_SOURCE_DIR}/COPYING"
+  "${CMAKE_CURRENT_SOURCE_DIR}/INSTALL"
+  "${CMAKE_CURRENT_SOURCE_DIR}/README"
+  "${CMAKE_CURRENT_SOURCE_DIR}/README.LZO"
+  "${CMAKE_CURRENT_SOURCE_DIR}/TODO"
+)
+
+# doc dirs
+LIST(APPEND italc_DOC_DIRS
+  "${CMAKE_CURRENT_SOURCE_DIR}/doc"
+)
+
+# install docs
+INSTALL(FILES ${italc_DOC_FILES} DESTINATION "${CMAKE_INSTALL_FULL_DOCDIR}")
+INSTALL(DIRECTORY ${italc_DOC_DIRS} DESTINATION "${CMAKE_INSTALL_FULL_DOCDIR}")
+
 INSTALL()
 
 #
@@ -298,6 +338,8 @@ MESSAGE("\n"
 "iTALC build summary\n"
 "--------------------\n"
 "* Install prefix              : ${CMAKE_INSTALL_PREFIX}\n"
+"* Docs dir                    : ${CMAKE_INSTALL_DOCDIR}\n"
+"* Man pages dir               : ${CMAKE_INSTALL_MANDIR}\n"
 "* Build type                  : ${CMAKE_BUILD_TYPE}\n"
 "* Platform                    : ${CMAKE_SYSTEM_PROCESSOR} (${Machine})\n"
 "* Builtin JavaViewer support  : ${STATUS_JAVA}\n"
diff --git a/cmake/modules/FindIcotool.cmake b/cmake/modules/FindIcotool.cmake
new file mode 100644
index 0000000..d6566f6
--- /dev/null
+++ b/cmake/modules/FindIcotool.cmake
@@ -0,0 +1,42 @@
+#
+# - Find icotool
+# This module looks for icotool. This module defines the
+# following values:
+#  ICOTOOL_EXECUTABLE: the full path to the icotool tool.
+#  ICOTOOL_FOUND: True if icotool has been found.
+#
+
+#=============================================================================
+# Copyright (c) 2012, Aleksey Avdeev <solo@altlinux.ru>
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distribute this file outside of CMake, substitute the full
+#  License text for the above reference.)
+
+INCLUDE(FindCygwin)
+
+FIND_PROGRAM(ICOTOOL_EXECUTABLE
+  icotool
+  ${CYGWIN_INSTALL_PATH}/bin
+  /bin
+  /usr/bin
+  /usr/local/bin
+  /sbin
+  /usr/sbin
+  /usr/local/sbin
+)
+
+# handle the QUIETLY and REQUIRED arguments and set ICOTOOL_FOUND to TRUE if
+# all listed variables are TRUE
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Icotool DEFAULT_MSG ICOTOOL_EXECUTABLE)
+
+MARK_AS_ADVANCED(
+  ICOTOOL_EXECUTABLE
+)
diff --git a/cmake/modules/FreedesktopIconsMacros.cmake b/cmake/modules/FreedesktopIconsMacros.cmake
new file mode 100644
index 0000000..bb48f6d
--- /dev/null
+++ b/cmake/modules/FreedesktopIconsMacros.cmake
@@ -0,0 +1,439 @@
+#
+# - Define freedesktop.org standard for icons installation
+# Provides icons install variables as defined freedesktop.org standards:
+#  http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
+# The module defines the following variables:
+#  CMAKE_FREEDESKTOP_ICONS_THEMENAME   - icons theme name (hicolor)
+#  CMAKE_FREEDESKTOP_ICONS_CONTEXTNAME - icons context name (apps)
+#  CMAKE_FREEDESKTOP_ICONS_SIZE        - icons size (auto)
+# Inclusion of this module defines the following variables:
+#  CMAKE_INSTALL_FREEDESKTOP_ICONS_<dir>      - destination for files of
+#                                               a given type
+#  CMAKE_INSTALL_FREEDESKTOP_ICONS_FULL_<dir> - corresponding absolute path
+# where <dir> is one of:
+#  BASE - freedesktop icons theme dir (DATAROOTDIR/icons)
+# Each CMAKE_INSTALL_FREEDESKTOP_ICONS_<dir> value may be passed to the
+# DESTINATION options of install() commands for the corresponding file type.
+# If the includer does not define a value the above-shown default will be used
+# and the value will appear in the cache for editing by the user.
+# Each CMAKE_INSTALL_FREEDESKTOP_ICONS_FULL_<dir> value contains an absolute
+# path constructed # from the corresponding destination by prepending
+# (if necessary) the value of CMAKE_INSTALL_PREFIX.
+# This module also defines a macro:
+#  FREEDESKTOP_INSTALL_ICONFILE(<_install_FILENAME> <_origin_FILE> <_icon_size> <_icon_context> <_icon_theme>)
+#  FREEDESKTOP_INSTALL_ICONS(<_install_BASENAME>|<_install_FILENAME> <_origin_FILES> [auto|<_icon_sizes>  [default|<_icon_context> [default|<_icon_theme>]]])
+#
+###################################################################
+#
+#  Copyright (c) 2012, Aleksey Avdeev <solo@altlinux.ru>
+#  All rights reserved.
+#
+# 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.
+#
+# * Neither the name of the cmake-modules nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# 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 OWNER 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.
+#
+
+# Default names
+#
+IF(NOT DEFINED CMAKE_FREEDESKTOP_ICONS_THEMENAME)
+  SET(CMAKE_FREEDESKTOP_ICONS_THEMENAME "hicolor" CACHE STRING "icons theme name (hicolor)")
+ENDIF()
+
+IF(NOT DEFINED CMAKE_FREEDESKTOP_ICONS_CONTEXTNAME)
+  SET(CMAKE_FREEDESKTOP_ICONS_CONTEXTNAME "apps" CACHE STRING "icons context name (apps)")
+ENDIF()
+
+IF(NOT DEFINED CMAKE_FREEDESKTOP_ICONS_SIZE)
+  SET(CMAKE_FREEDESKTOP_ICONS_SIZE "auto" CACHE STRING "icons size (auto)")
+ENDIF()
+
+MARK_AS_ADVANCED(
+  CMAKE_FREEDESKTOP_ICONS_THEMENAME
+  CMAKE_FREEDESKTOP_ICONS_CONTEXTNAME
+  CMAKE_FREEDESKTOP_ICONS_SIZE
+)
+
+INCLUDE(GNUInstallDirs)
+
+#-----------------------------------------------------------------------------
+# Values whose defaults are relative to DATAROOTDIR.  Store empty values in
+# the cache and store the defaults in local variables if the cache values are
+# not set explicitly. This auto-updates the defaults as DATAROOTDIR changes.
+
+IF(NOT CMAKE_INSTALL_FREEDESKTOP_ICONSDIR)
+  SET(CMAKE_INSTALL_FREEDESKTOP_ICONSDIR "" CACHE PATH "freedesktop icons theme dir (DATAROOTDIR/icons)")
+  SET(CMAKE_INSTALL_FREEDESKTOP_ICONSDIR "${CMAKE_INSTALL_DATAROOTDIR}/icons")
+ENDIF()
+
+MARK_AS_ADVANCED(
+  CMAKE_INSTALL_FREEDESKTOP_ICONSDIR
+)
+
+#-----------------------------------------------------------------------------
+
+# Result directories
+#
+IF(NOT IS_ABSOLUTE ${CMAKE_INSTALL_FREEDESKTOP_ICONSDIR})
+  SET(CMAKE_INSTALL_FULL_FREEDESKTOP_ICONSDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_FREEDESKTOP_ICONSDIR}")
+ELSE()
+  SET(CMAKE_INSTALL_FULL_FREEDESKTOP_ICONSDIR "${CMAKE_INSTALL_FREEDESKTOP_ICONSDIR}")
+ENDIF()
+
+IF(NOT DEFINED ImageMagick_identify_FOUND)
+  FIND_PACKAGE(ImageMagick COMPONENTS identify)
+ENDIF(NOT DEFINED ImageMagick_identify_FOUND)
+
+IF(NOT DEFINED ICOTOOL_FOUND)
+  FIND_PACKAGE(Icotool)
+ENDIF(NOT DEFINED ICOTOOL_FOUND)
+
+MACRO(FREEDESKTOP_INSTALL_ICONFILE _install_FILENAME _origin_FILE _icon_size _icon_context _icon_theme)
+  SET(
+    FREEDESKTOP_INSTALL_ICONFILE_usage
+    "FREEDESKTOP_INSTALL_ICONFILE(<_install_FILENAME> <_origin_FILE> <_icon_size> <_icon_context> <_icon_theme>)"
+  )
+
+  # MESSAGE(STATUS "icon: ${_origin_FILE} theme: ${_icon_theme} size: ${_icon_size} context: ${_icon_context} name: ${_install_FILENAME}")
+  INSTALL(
+    FILES ${_origin_FILE}
+    DESTINATION "${CMAKE_INSTALL_FULL_FREEDESKTOP_ICONSDIR}/${_icon_theme}/${_icon_size}/${_icon_context}/"
+    RENAME ${_install_FILENAME}
+  )
+
+ENDMACRO(FREEDESKTOP_INSTALL_ICONFILE)
+
+#
+# FREEDESKTOP_INSTALL_ICONS(install_file origin_files [auto|<icon_sizes> [default|<icon_context> [default|<icon_theme>]]])
+#
+# The processing parameters install_file:
+#  no extension    - the extension of the installed files will coincide
+#                    with the extension of the original
+#                    (except for .ico - are extracted .png)
+#  is an extension - set only icons of corresponding type
+#
+# The processing parameters origin_files:
+#  .ico                      - for any given size (see parameter icon_sizes)
+#                              are extracted from the file icon with
+#                              the maximum number of bits per pixel and are
+#                              installed as a .png file
+#  .svg, .svgz, .png or .xpm - the files are installed without any changes
+#
+# The processing parameters icon_sizes
+# (CMAKE_FREEDESKTOP_ICONS_SIZE by default):
+#  containing the value of auto    - automatically creates directories
+#                                    actual size by appropriate icons
+#  no containing the value of auto - depending on file type icons:
+#   scalable (.svg or .svgz):
+#    icon_sizes contains the value scalable         - will be placed
+#                         only in the scalable directory
+#    icon_sizes does not contain the value scalable - will be placed
+#                         in all the directories and related to the size
+#                         specified in the list
+#   bitmap (.png or .xpm):
+#    icon_sizes contains only one value different from the scalable -
+#                         all raster will place the file in the directory
+#                         specified by appropriate size, without checking
+#                         the actual size of the icons.
+#    icon_sizes contains multiple values, different from the scalable -
+#                         all raster will place the file in the directory
+#                         by appropriate to their actual size and specified
+#                         in the list
+#
+MACRO(FREEDESKTOP_INSTALL_ICONS _install_NAME _origin_FILES)
+  SET(
+    FREEDESKTOP_INSTALL_ICONS_usage
+    "FREEDESKTOP_INSTALL_ICONS(<_install_BASENAME>|<_install_FILENAME> <_origin_FILES> [auto|<_icon_sizes> [default|<_icon_context> [default|<_icon_theme>]]])"
+  )
+
+  # regex seting
+  SET(
+    _icon_install_ext_regex
+    "^\\.(svgz?|png|xpm)$"
+  )
+  SET(
+    _icon_origin_ext_regex
+    "^\\.(svgz?|png|xpm|ico)$"
+  )
+
+  GET_FILENAME_COMPONENT(_icon_basename ${_install_NAME} NAME_WE)
+  GET_FILENAME_COMPONENT(_icon_extension ${_install_NAME} EXT)
+  IF(_icon_extension)
+    STRING(TOLOWER ${_icon_extension} _icon_extension)
+    IF(NOT _icon_extension MATCHES "${_icon_install_ext_regex}")
+      MESSAGE(FATAL_ERROR "Installable icon file should have the extension .svg, .svgz, .png or .xpm, not ${_icon_extension}")
+    ENDIF(NOT _icon_extension MATCHES "${_icon_install_ext_regex}")
+  ELSE(_icon_extension)
+    SET(_icon_extension "")
+  ENDIF(_icon_extension)
+
+  SET(_icon_sizes ${ARGV2})
+  IF(NOT _icon_sizes)
+    SET(_icon_sizes ${CMAKE_FREEDESKTOP_ICONS_SIZE})
+  ENDIF(NOT _icon_sizes)
+  LIST(REMOVE_DUPLICATES _icon_sizes)
+  LIST(FIND _icon_sizes "auto" _size_index)
+  IF(_size_index EQUAL -1)
+    # no auto in _icon_sizes
+    SET(_icon_size_auto FALSE)
+  ELSE(_size_index EQUAL -1)
+    # yes auto in _icon_sizes
+    SET(_icon_size_auto TRUE)
+    LIST(REMOVE_AT _icon_sizes ${_size_index})
+    FOREACH(_current_size ${_icon_sizes})
+      SET(_icon_${_current_size}_build_files)
+    ENDFOREACH(_current_size ${_icon_sizes})
+  ENDIF(_size_index EQUAL -1)
+  SET(_pixmap_size_default FALSE)
+  IF(NOT _icon_size_auto)
+    SET(_icon_sizes_pixmap ${_icon_sizes})
+    LIST(REMOVE_ITEM _icon_sizes_pixmap "scalable")
+    LIST(LENGTH _icon_sizes_pixmap _sizes_pixmap_count)
+    IF(_sizes_pixmap_count EQUAL 1)
+      SET(_pixmap_size_default ${_icon_sizes_pixmap})
+    ENDIF(_sizes_pixmap_count EQUAL 1)
+  ENDIF(NOT _icon_size_auto)
+
+  SET(_icon_context ${ARGV3})
+  IF(NOT _icon_context OR "${_icon_context}" STREQUAL "default")
+    SET(_icon_context ${CMAKE_FREEDESKTOP_ICONS_CONTEXTNAME})
+  ENDIF(NOT _icon_context OR "${_icon_context}" STREQUAL "default")
+
+  SET(_icon_theme ${ARGV4})
+  IF(NOT _icon_theme OR "${_icon_theme}" STREQUAL "default")
+    SET(_icon_theme ${CMAKE_FREEDESKTOP_ICONS_THEMENAME})
+  ENDIF(NOT _icon_theme OR "${_icon_theme}" STREQUAL "default")
+
+  # preinstall icons
+  FOREACH(_current_file ${_origin_FILES})
+    GET_FILENAME_COMPONENT(_current_extension ${_current_file} EXT)
+    IF(_current_extension)
+      STRING(TOLOWER ${_current_extension} _current_extension)
+      IF(NOT _current_extension MATCHES "${_icon_origin_ext_regex}")
+        MESSAGE(FATAL_ERROR "File ${_current_file} not processed: Use icon with the extension .svg, .svgz, .png, .xpm or .ico")
+      ENDIF(NOT _current_extension MATCHES "${_icon_origin_ext_regex}")
+    ELSE(_current_extension)
+      MESSAGE(FATAL_ERROR "File ${_current_file} not processed: The expansion is absent")
+    ENDIF(_current_extension)
+
+    # set _current_build_patch
+    GET_FILENAME_COMPONENT(_current_patch ${_current_file} PATH)
+    IF("${CMAKE_CURRENT_SOURCE_DIR}" STRLESS "${CMAKE_CURRENT_BINARY_DIR}")
+      SET(_current_build_patch "${_current_patch}")
+    ELSEIF("${_current_patch}" STRLESS "")
+      SET(_current_build_patch "${CMAKE_CURRENT_BINARY_DIR}")
+    ELSEIF(NOT IS_ABSOLUTE "${_current_patch}")
+      SET(_current_build_patch "${CMAKE_CURRENT_BINARY_DIR}/${_current_patch}")
+    ELSE("${CMAKE_CURRENT_SOURCE_DIR}" STRLESS "${CMAKE_CURRENT_BINARY_DIR}")
+      STRING(
+        REGEX REPLACE
+        "^${CMAKE_CURRENT_SOURCE_DIR}((/.*)?)$"
+        "${CMAKE_CURRENT_BINARY_DIR}\\1"
+        _current_build_patch
+        "${_current_patch}"
+      )
+    ENDIF("${CMAKE_CURRENT_SOURCE_DIR}" STRLESS "${CMAKE_CURRENT_BINARY_DIR}")
+
+    IF(_current_extension MATCHES "\\.svgz?$")
+      SET(_current_size "scalable")
+      LIST(FIND _icon_sizes ${_current_size} _size_index)
+      IF(_size_index EQUAL -1)
+        # no scalable in _icon_sizes
+	IF(_icon_size_auto)
+          LIST(APPEND _icon_sizes ${_current_size})
+          SET(_icon_${_current_size}_build_files ${_current_file})
+        ELSE(_icon_size_auto)
+          # add _current_file to all _icon_sizes
+          FOREACH(_current_size ${_icon_sizes})
+            LIST(APPEND _icon_${_current_size}_build_files ${_current_file})
+          ENDFOREACH(_current_size ${_icon_sizes})
+        ENDIF(_icon_size_auto)
+      ELSE(_size_index EQUAL -1)
+        # scalable in _icon_sizes
+        LIST(APPEND _icon_${_current_size}_build_files ${_current_file})
+      ENDIF(_size_index EQUAL -1)
+    ELSEIF("${_current_extension}" STREQUAL ".ico")
+      # ico -> png
+
+      IF(NOT ICOTOOL_FOUND)
+        MESSAGE(FATAL_ERROR "File ico processing is not possible: the icotool program was not found")
+      ENDIF(NOT ICOTOOL_FOUND)
+
+      SET(_icon_ico_sizes)
+
+      # select indexs for transformation ico to png
+      # (create _icon_<size>_index vars)
+      EXECUTE_PROCESS(
+        COMMAND "${ICOTOOL_EXECUTABLE}" --list ${_current_file}
+        OUTPUT_VARIABLE _icon_icotool_out
+        ERROR_VARIABLE _icon_icotool_err
+      )
+      STRING(
+        REGEX MATCHALL
+        "[^\r\n]+"
+        _ico_icotool_list
+        "${_icon_icotool_out}"
+      )
+      FOREACH(_current_string ${_ico_icotool_list})
+        IF(_current_string AND _current_string MATCHES "(^|[ \t])--icon([ \t]|$)")
+          IF(_current_string MATCHES "(^|[ \t])--index=([0-9]+)([ \t]|$)")
+            SET(_current_index ${CMAKE_MATCH_2})
+            IF(_current_string MATCHES "(^|[ \t])--width=([0-9]+)([ \t]|$)")
+              SET(_current_width ${CMAKE_MATCH_2})
+              IF(_current_string MATCHES "(^|[ \t])--height=([0-9]+)([ \t]|$)")
+                SET(_current_height ${CMAKE_MATCH_2})
+                IF(_current_string MATCHES "(^|[ \t])--bit-depth=([0-9]+)([ \t]|$)")
+                  SET(_current_bit_depth ${CMAKE_MATCH_2})
+                  SET(_current_size "${_current_width}x${_current_height}")
+                  LIST(FIND _icon_sizes ${_current_size} _current_size_index)
+		  IF(_icon_size_auto OR NOT _current_size_index EQUAL -1)
+		    IF(_current_size_index EQUAL -1)
+                      LIST(APPEND _icon_sizes ${_current_size})
+                      SET(_icon_${_current_size}_build_files)
+                    ENDIF(_current_size_index EQUAL -1)
+                    LIST(FIND _icon_ico_sizes ${_current_size} _current_size_index)
+                    IF(_current_size_index EQUAL -1)
+                      LIST(APPEND _icon_ico_sizes ${_current_size})
+                      SET(_icon_${_current_size}_bit_depth)
+                    ENDIF(_current_size_index EQUAL -1)
+                    IF((NOT DEFINED _icon_${_current_size}_bit_depth) OR _current_bit_depth GREATER _icon_${_current_size}_bit_depth)
+                      SET(_icon_${_current_size}_bit_depth ${_current_bit_depth})
+                      SET(_icon_${_current_size}_index ${_current_index})
+                    ENDIF((NOT DEFINED _icon_${_current_size}_bit_depth) OR _current_bit_depth GREATER _icon_${_current_size}_bit_depth)
+                  ENDIF(_icon_size_auto OR NOT _current_size_index EQUAL -1)
+                ENDIF(_current_string MATCHES "(^|[ \t])--bit-depth=([0-9]+)([ \t]|$)")
+              ENDIF(_current_string MATCHES "(^|[ \t])--height=([0-9]+)([ \t]|$)")
+            ENDIF(_current_string MATCHES "(^|[ \t])--width=([0-9]+)([ \t]|$)")
+          ENDIF(_current_string MATCHES "(^|[ \t])--index=([0-9]+)([ \t]|$)")
+        ENDIF(_current_string AND _current_string MATCHES "(^|[ \t])--icon([ \t]|$)")
+      ENDFOREACH(_current_string)
+
+      IF(DEFINED _icon_ico_sizes)
+        # create _current_build_patch
+        IF(NOT EXISTS "${_current_build_patch}")
+          FILE(MAKE_DIRECTORY "${_current_build_patch}")
+        ENDIF(NOT EXISTS "${_current_build_patch}")
+
+        # png generate
+        FOREACH(_current_size ${_icon_ico_sizes})
+          SET(
+            _current_build_filename
+            "${_icon_basename}_${_icon_${_current_size}_index}_${_current_size}x${_icon_${_current_size}_bit_depth}.png"
+          )
+          SET(
+            _current_target
+            "icon.icotopng.${_current_build_filename}"
+          )
+          SET(
+            _current_build_file
+            "${_current_build_patch}/${_current_build_filename}"
+          )
+          LIST(
+            APPEND
+           _icon_${_current_size}_build_files
+           "${_current_build_file}"
+          )
+          ADD_CUSTOM_TARGET(
+            "${_current_target}"
+            ALL
+          )
+          ADD_CUSTOM_COMMAND(
+            TARGET "${_current_target}"
+            COMMAND ${ICOTOOL_EXECUTABLE}
+	    ARGS -x --icon -i ${_icon_${_current_size}_index} -o ${_current_build_file} ${_current_file}
+            DEPENDS ${_current_file}
+            VERBATIM
+          )
+        ENDFOREACH(_current_size)
+      ENDIF(DEFINED _icon_ico_sizes)
+    ELSE(_current_extension MATCHES "\\.svgz?$")
+      IF(_pixmap_size_default)
+        SET(_current_size ${_pixmap_size_default})
+      ELSE(_pixmap_size_default)
+        IF(NOT ImageMagick_identify_FOUND)
+          MESSAGE(FATAL_ERROR "Automatic determination of the size of icons is impossible: the identify program was not found")
+        ENDIF(NOT ImageMagick_identify_FOUND)
+        # get _current_size
+        EXECUTE_PROCESS(
+          COMMAND "${ImageMagick_identify_EXECUTABLE}" -verbose ${_current_file}
+          OUTPUT_VARIABLE _icon_identify_out
+        )
+        STRING(
+          REGEX REPLACE
+          "^.*[\r\n][ \t]*[Gg][Ee][Oo][Mm][Ee][Tt][Rr][Yy]:[ \t]+([0-9]+x[0-9]+)([^0-9].*)?[ \t]*[\r\n].*$"
+          "\\1"
+          _current_size
+          "${_icon_identify_out}"
+        )
+        IF((NOT _current_size) OR "${_current_size}" STREQUAL "${_icon_identify_out}")
+          MESSAGE(FATAL_ERROR "Automatic determination of the size of icon ${_current_file} is impossible: the ${ImageMagick_identify_EXECUTABLE} program does not the size allocated")
+        ENDIF((NOT _current_size) OR "${_current_size}" STREQUAL "${_icon_identify_out}")
+      ENDIF(_pixmap_size_default)
+
+      LIST(FIND _icon_sizes ${_current_size} _size_index)
+      IF(_size_index EQUAL -1)
+        # no scalable in _icon_sizes
+	IF(_icon_size_auto)
+          LIST(APPEND _icon_sizes ${_current_size})
+          SET(_icon_${_current_size}_build_files ${_current_file})
+        ELSE(_icon_size_auto)
+          MESSAGE(FATAL_ERROR "Create a directory for the icon size ${_current_size} prohibited (this size is missing in the list)")
+        ENDIF(_icon_size_auto)
+      ELSE(_size_index EQUAL -1)
+        LIST(APPEND _icon_${_current_size}_build_files ${_current_file})
+      ENDIF(_size_index EQUAL -1)
+    ENDIF(_current_extension MATCHES "\\.svgz?$")
+  ENDFOREACH(_current_file)
+
+  # install icons
+  FOREACH(_current_size ${_icon_sizes})
+    FOREACH(_current_file ${_icon_${_current_size}_build_files})
+      GET_FILENAME_COMPONENT(_current_extension ${_current_file} EXT)
+      IF(_current_extension)
+        STRING(TOLOWER ${_current_extension} _current_extension)
+        IF(NOT _current_extension MATCHES "${_icon_install_ext_regex}")
+          MESSAGE(FATAL_ERROR "File ${_current_file} not processed: Use icon with the extension .svg, .svgz, .png or .xpm")
+        ENDIF(NOT _current_extension MATCHES "${_icon_install_ext_regex}")
+      ELSE(_current_extension)
+        MESSAGE(FATAL_ERROR "File ${_current_file} not processed: The expansion is absent")
+      ENDIF(_current_extension)
+
+      IF(_icon_extension AND (NOT "${_current_extension}" STREQUAL "${_icon_extension}"))
+        MESSAGE(FATAL_ERROR "Target (${_install_NAME}) and source (${_current_file}) files have a different extension")
+      ENDIF(_icon_extension AND (NOT "${_current_extension}" STREQUAL "${_icon_extension}"))
+
+      SET(
+        _install_filename
+        "${_icon_basename}${_current_extension}"
+      )
+
+      # MESSAGE(STATUS "icon: ${_current_file} theme: ${_icon_theme} size: ${_current_size} context: ${_icon_context} name: ${_install_filename}")
+      FREEDESKTOP_INSTALL_ICONFILE(${_install_filename} ${_current_file} ${_current_size} ${_icon_context} ${_icon_theme})
+    ENDFOREACH(_current_file)
+  ENDFOREACH(_current_size)
+
+ENDMACRO(FREEDESKTOP_INSTALL_ICONS)
diff --git a/cmake/modules/MacroProcessManpages.cmake b/cmake/modules/MacroProcessManpages.cmake
new file mode 100644
index 0000000..5530c04
--- /dev/null
+++ b/cmake/modules/MacroProcessManpages.cmake
@@ -0,0 +1,83 @@
+#
+# - MACRO_INSTALL_MANPAGES
+#        Find manpages in the given directory and install them
+# structure:
+#
+# man/file.1
+# man/es/file.5
+# man/de/file.1
+#
+###################################################################
+#
+#  Copyright (c) 2006, Andreas Schneider <mail@cynapses.org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA  02110-1301, USA.
+#
+###################################################################
+#
+#  Copyright (c) Andreas Schneider <mail@cynapses.org>
+#  All rights reserved.
+#
+# 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.
+#
+# * Neither the name of the cmake-modules nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# 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 OWNER 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.
+#
+
+INCLUDE(GNUInstallDirs)
+
+MACRO(MACRO_INSTALL_MANPAGES _mandirs)
+  FOREACH(_current_mandir ${_mandirs})
+    FILE(GLOB_RECURSE _manpages "${_current_mandir}/*.[1-9]")
+
+    IF (_manpages)
+      FOREACH(_man ${_manpages})
+        FILE(RELATIVE_PATH _lang ${_current_mandir} ${_man})
+        GET_FILENAME_COMPONENT(_lang ${_lang} PATH)
+        GET_FILENAME_COMPONENT(_manext ${_man} EXT)
+        STRING(REGEX MATCH "[1-9]" _manext ${_manext})
+        INSTALL(FILES ${_man} DESTINATION ${CMAKE_INSTALL_FULL_MANDIR}/${_lang}/man${_manext})
+        #MESSAGE("DEBUG: install ${_man} to ${CMAKE_INSTALL_FULL_MANDIR}/${_lang}/man${_manext}")
+      ENDFOREACH(_man ${_manpages})
+    ENDIF (_manpages)
+  ENDFOREACH(_current_mandir)
+ENDMACRO(MACRO_INSTALL_MANPAGES)
+
+# vim:et ts=2 sw=2 comments=\:\#
diff --git a/ica/CMakeLists.txt b/ica/CMakeLists.txt
index 9bcdbac..eb7d32a 100644
--- a/ica/CMakeLists.txt
+++ b/ica/CMakeLists.txt
@@ -179,6 +179,9 @@ TARGET_LINK_LIBRARIES(ica ItalcCore)
 
 ADD_DEPENDENCIES(ica JavaViewer)
 
+# install man pages for ica
+MACRO_INSTALL_MANPAGES(${CMAKE_CURRENT_SOURCE_DIR}/man)
+
 INSTALL(TARGETS ica RUNTIME DESTINATION bin)
 
 IF(ITALC_BUILD_WIN32)
diff --git a/ica/helpers/CMakeLists.txt b/ica/helpers/CMakeLists.txt
index 6fc4a7c..25c5966 100644
--- a/ica/helpers/CMakeLists.txt
+++ b/ica/helpers/CMakeLists.txt
@@ -2,3 +2,6 @@ LINK_LIBRARIES(${PAM_LIBRARY})
 INCLUDE_DIRECTORIES(${PAM_INCLUDE_DIR})
 ADD_EXECUTABLE(italc_auth_helper ${CMAKE_CURRENT_SOURCE_DIR}/ItalcAuthHelper.cpp)
 INSTALL(TARGETS italc_auth_helper RUNTIME DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE SETUID GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+
+# install man pages for italc_auth_helper
+MACRO_INSTALL_MANPAGES(${CMAKE_CURRENT_SOURCE_DIR}/man)
diff --git a/ica/helpers/man/italc_auth_helper.1 b/ica/helpers/man/italc_auth_helper.1
new file mode 100644
index 0000000..dff6c81
--- /dev/null
+++ b/ica/helpers/man/italc_auth_helper.1
@@ -0,0 +1,28 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH ITALC 8 "May 18, 2012"
+.SH NAME
+italc_auth_helper \- iTALC PAM Authentication Helper
+.SH SYNOPSIS
+.B italc_auth_helper
+.SH DESCRIPTION
+.B italc_auth_helper
+is a PAM-su authentication helper for the iTALC service (called \fBica\fP).
+.PP
+.I NOTE:
+.B italc_auth_helper
+has to be installed setuid root and must be available in your system's environment $PATH.
+.
+.SH OPTIONS
+No options present.
+.PP
+.SH SEE ALSO
+.IR ica (1), italc (1), imc (1)
+.PP 
+.IR http://italc.sf.net
+.SH AUTHOR
+iTALC has been written by Tobias Doerffel. See AUTHORS for details.
+.PP
+This manual page has been written by Mike Gabriel. It was originally written for the Debian project (but may be used by others).
diff --git a/ica/ica.1 b/ica/ica.1
deleted file mode 100644
index 301b5fe..0000000
--- a/ica/ica.1
+++ /dev/null
@@ -1,70 +0,0 @@
-.\"                                      Hey, EMACS: -*- nroff -*-
-.\" First parameter, NAME, should be all caps
-.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
-.\" other parameters are allowed: see man(7), man(1)
-.TH ICA 1 "April 30, 2007"
-.\" Please adjust this date whenever revising the manpage.
-.\"
-.\" Some roff macros, for reference:
-.\" .nh        disable hyphenation
-.\" .hy        enable hyphenation
-.\" .ad l      left justify
-.\" .ad b      justify to both left and right margins
-.\" .nf        disable filling
-.\" .fi        enable filling
-.\" .br        insert line break
-.\" .sp <n>    insert n+1 empty lines
-.\" for manpage-specific macros, see man(7)
-.SH NAME
-ica \- iTALC Client Application
-.SH SYNOPSIS
-.B ica
-.RB "[options]"
-.br
-.B ica
-.RI "[options] [command]"
-.SH DESCRIPTION
-.PP
-.\" TeX users may be more comfortable with the \fB<whatever>\fP and
-.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
-.\" respectively.
-.B ICA
-is the software which needs to run on clients in order to access them using iTALC master application. It provides a VNC-server and a service-daemon which is neccessary for taking control over the client.
-
-.SH OPTIONS
-.IP "\fB\-role\fP \fIrole\fP
-.IP
-Set role under which ICA should run where \fIrole\fP has to be "teacher", "admin", "supporter" or "other". This is mainly used in combination with the \fB-createkeypair\fP option.
-.IP "\fB\-ivsport\fP \fIport\fP
-.IP
-Set port at which the iTALC-VNC-server should listen. Default: 11100
-.
-.IP "\fB\-isdport\fP \fIport\fP
-.IP
-Set port at which the iTALC-service-daemon should listen. Default: 11200
-.
-.IP \fB-noshm\fR
-.IP
-Do not use the MIT-SHM extension for the polling.
-Remote displays can be polled this way: be careful this
-can use large amounts of network bandwidth.  This is
-also of use if the local machine has a limited number
-of shm segments and \fB-onetile\fR is not sufficient.
-.PP
-\fB-onetile\fR
-.IP
-Do not use the new copy_tiles() framebuffer mechanism,
-just use 1 shm tile for polling.  Limits shm segments
-used to 3.
-.
-.IP "\fB\-createkeypair\fP \fI[private-key-file] [public-key-file]\fP
-.IP
-Create a new key pair for authentication between master and client. Until specified with \fB-role\fP the key-pair will be created for role "other". The keys either will be saved under given file-names or the default ones according to the selected role (/etc/italc/keys/private/<role>/key and /etc/italc/keys/public/<role>/key).
-.SH SEE ALSO
-.IR italc (1),
-.IR http://italc.sf.net/
-
-.SH AUTHOR
-iTALC was written by Tobias Doerffel. See AUTHORS for details.
-.PP
-This manual page was written by Tobias Doerffel <tobydox /at/ users /dot/ sf /dot/ net>, for the Debian project (but may be used by others).
diff --git a/ica/man/ica.1 b/ica/man/ica.1
new file mode 100644
index 0000000..ec911fb
--- /dev/null
+++ b/ica/man/ica.1
@@ -0,0 +1,101 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH ICA 1 "May 18, 2012"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+ica \- iTALC Client Application
+.SH SYNOPSIS
+.B ica
+.RB "[options]"
+.br
+.B ica
+.RI "[options] [command]"
+.SH DESCRIPTION
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+.B ICA
+is the software which needs to run on clients in order to access them using iTALC master application. It provides a VNC-server and a service-daemon which is neccessary for taking control over the client.
+
+.SH iTALC OPTIONS
+.IP "\fB\-role\fP \fIrole\fP
+.IP
+Set role under which ICA should run where \fIrole\fP has to be "teacher", "admin", "supporter" or "other".
+.IP "\fB\-port\fP \fIport\fP
+.IP
+Set port at which the iTALC-VNC-server should listen. Default: 11100
+.PP
+The \fB\-createkeypair\fP option has been moved to the iTALC Management Console \fBimc\fP since iTALC 2.0.0.
+
+.SH X11VNC OPTIONS
+.IP \fB-noshm\fR
+.IP
+Do not use the MIT-SHM extension for the polling.
+Remote displays can be polled this way: be careful this
+can use large amounts of network bandwidth.  This is
+also of use if the local machine has a limited number
+of shm segments and \fB-onetile\fR is not sufficient.
+.PP
+\fB-onetile\fR
+.IP
+Do not use the new copy_tiles() framebuffer mechanism,
+just use 1 shm tile for polling.  Limits shm segments
+used to 3.
+.PP
+\fB-nosel\fR
+.IP
+ Do not manage exchange of X selection/cutbuffer between VNC viewers and the X server at all.
+.PP
+\fB-nosetclipboard\fR
+.IP
+Do not set the CLIPBOARD selection for changes received from VNC clients.
+.PP
+\fB-solid\fR \fI[color]\fR
+.IP
+To improve performance, when VNC clients are connected try to change the desktop background to a solid color.  The [color] is optional: the
+default color is "cyan4".  For a different one specify the X color (rgb.txt name, e.g. "darkblue" or numerical "#RRGGBB").
+.IP
+Currently  this  option only works on GNOME, KDE3, CDE, XFCE, and classic X (i.e. with the background image on the root window).  The "gconftool-2",
+"dcop" and "xfconf-query" external commands are run for GNOME, KDE, and XFCE respectively.
+(There  is  no  color selection for XFCE.)  Other desktops won't work, (send us the corresponding commands if you find them).
+.IP
+
+.PP
+\fB-xrandr\fR \fI[mode]\fR
+.IP
+If  the display supports the XRANDR (X Resize, Rotate and Reflection) extension, and you expect XRANDR events to occur to the display while
+x11vnc is running, this options indicates x11vnc should try to respond to them (as opposed to simply crashing by assuming  the  old  screen
+size).  See the xrandr(1) manpage and run ´xrandr -q' for more info.  [mode] is optional and described below.
+.IP
+Since  watching for XRANDR events and trapping errors increases polling overhead, only use this option if XRANDR changes are expected.  For
+example on a rotatable screen PDA or laptop, or using a XRANDR-aware Desktop where you resize often.  It is  best  to  be  viewing  with  a
+vncviewer that supports the NewFBSize encoding, since it knows how to react to screen size changes.  Otherwise, LibVNCServer tries to do so
+something reasonable for viewers that cannot do this (portions of the screen may be clipped, unused, etc).
+.IP
+"mode"  defaults  to  "resize",  which means create a new, resized, framebuffer and hope all viewers can cope with the change.  "newfbsize"
+means first disconnect all viewers that do not support the NewFBSize VNC encoding, and then resize the framebuffer.  "exit"  means  disconnect
+all viewer clients, and then terminate x11vnc.
+.PP
+.SH SEE ALSO
+.IR italc (1), imc (1), italc_auth_helper (1)
+.PP
+.IR http://italc.sf.net/
+
+.SH AUTHOR
+iTALC has been written by Tobias Doerffel. See AUTHORS for details.
+.PP
+This manual page has been written by Tobias Doerffel and updated by Mike Gabriel. It was originally written for the Debian project (but may be used by others).
diff --git a/ica/src/ItalcVncServer.cpp b/ica/src/ItalcVncServer.cpp
index c63608a..7d6af28 100644
--- a/ica/src/ItalcVncServer.cpp
+++ b/ica/src/ItalcVncServer.cpp
@@ -251,7 +251,7 @@ static void runX11vnc( QStringList cmdline, int port, bool plainVnc )
 	// workaround for x11vnc when running in an NX session
 	foreach( const QString &s, QProcess::systemEnvironment() )
 	{
-		if( s.startsWith( "NXSESSIONID=" ) )
+		if( s.startsWith( "NXSESSIONID=" ) || s.startsWith( "X2GO_SESSION=" ) )
 		{
 			cmdline << "-noxdamage";
 		}
diff --git a/ima/CMakeLists.txt b/ima/CMakeLists.txt
index 06f9b73..0ddad55 100644
--- a/ima/CMakeLists.txt
+++ b/ima/CMakeLists.txt
@@ -22,8 +22,20 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src)
 ADD_EXECUTABLE(italc ${italc_UIC_out} ${italc_SOURCES} ${italc_INCLUDES} ${italc_MOC_out} ${italc_RCC_out} ${WINRC})
 TARGET_LINK_LIBRARIES(italc ItalcCore)
 
+# install man pages for ima
+MACRO_INSTALL_MANPAGES(${CMAKE_CURRENT_SOURCE_DIR}/man)
+
 INSTALL(TARGETS italc RUNTIME DESTINATION bin)
 
+IF(UNIX)
+	# installing Freedesktop icons only for UNIX
+	IF(ICOTOOL_FOUND)
+		FREEDESKTOP_INSTALL_ICONS(italc ${CMAKE_CURRENT_SOURCE_DIR}/data/italc.ico)
+	ELSE(ICOTOOL_FOUND)
+		FREEDESKTOP_INSTALL_ICONS(italc ${CMAKE_CURRENT_SOURCE_DIR}/data/italc.png)
+	ENDIF(ICOTOOL_FOUND)
+ENDIF(UNIX)
+
 IF(ITALC_BUILD_WIN32)
 	SET_TARGET_PROPERTIES(italc PROPERTIES LINK_FLAGS -mwindows)
 ENDIF(ITALC_BUILD_WIN32)
diff --git a/ima/data/italc.desktop.in b/ima/data/italc.desktop.in
index 4906d70..4a16b41 100644
--- a/ima/data/italc.desktop.in
+++ b/ima/data/italc.desktop.in
@@ -3,9 +3,10 @@ Encoding=UTF-8
 Name=iTALC
 GenericName=View and remote-control clients
 GenericName[de]=Clients überwachen und fernsteuern
+GenericName[ru]=Управление рабочими столами учеников
 Comment=Intelligent Teaching And Learning with Computers
-Icon=@prefix@/share/pixmaps/italc.png
-Exec=@prefix@/bin/italc
+Icon=italc
+Exec=@CMAKE_INSTALL_PREFIX@/bin/italc
 Type=Application
 Terminal=false
-Categories=Qt;KDE;Education;X-KDE-Edu-Teaching;
+Categories=Qt;KDE;Education;X-KDE-Edu-Teaching;RemoteAccess;
diff --git a/ima/italc.1 b/ima/italc.1
deleted file mode 100644
index 4c2133b..0000000
--- a/ima/italc.1
+++ /dev/null
@@ -1,35 +0,0 @@
-.\"                                      Hey, EMACS: -*- nroff -*-
-.\" First parameter, NAME, should be all caps
-.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
-.\" other parameters are allowed: see man(7), man(1)
-.TH ITALC 1 "February 1, 2008"
-.SH NAME
-italc \- iTALC Master Application
-.SH SYNOPSIS
-.B italc
-.SH DESCRIPTION
-.B iTALC
-is the actual software to control iTALC-clients. Using it's GUI you can remote-control, lock, shutdown/reboot computers as well as show a demo, send text-messages to users and much more.
-.
-.SH OPTIONS
-.IP "\fB\-rctrl\fP \fIhost:[port]\fP
-.IP
-Directly remote-control the specified host. You can omit port if the server is running at the default-port (11100).
-.
-.IP "\fB\-isdport\fP \fIport\fP
-.IP
-Set port to which iTALC should connect in order to contact the local iTALC-service-daemon. Default: 11200
-.
-.IP "\fB\-isdhost\fP \fIip\fP
-.IP
-Set the host to which iTALC should connect in order to contact the local iTALC-service-daemon. Default: localhost
-.
-.PP
-.SH SEE ALSO
-.IR ica (1),
-.IR http://italc.sf.net
-.SH AUTHOR
-iTALC was written by Tobias Doerffel. See AUTHORS for details.
-.PP
-This manual page was written by Steffen Joeris <steffen.joeris@skolelinux.de>
-and Tobias Doerffel <tobydox /at/ users /dot/ sf /dot/ net>, for the Debian project (but may be used by others).
diff --git a/ima/man/italc.1 b/ima/man/italc.1
new file mode 100644
index 0000000..229c347
--- /dev/null
+++ b/ima/man/italc.1
@@ -0,0 +1,32 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH ITALC 1 "May 18, 2012"
+.SH NAME
+italc \- iTALC Master Application
+.SH SYNOPSIS
+.B italc
+.SH DESCRIPTION
+.B iTALC
+is the actual software to control iTALC-clients. Using it's GUI you can remote-control, lock, shutdown/reboot computers as well as show a demo, send text-messages to users and much more.
+.
+.SH OPTIONS
+.IP "\fB\-rctrl\fP \fIhost:[port]\fP
+.IP
+Directly remote-control the specified host. You can omit port if the server is running at the default-port (11100).
+.
+.IP "\fB\-screen\fP \fI<screen-number>\fP
+.IP
+Place the remote control window on another screen if running on a multi-headed workstation.
+.
+.PP
+.SH SEE ALSO
+.IR ica (1), imc (1), italc_auth_helper(1)
+.PP
+.IR http://italc.sf.net
+.SH AUTHOR
+iTALC has been written by Tobias Doerffel. See AUTHORS for details.
+.PP
+This manual page has been written by Steffen Joeris
+and Tobias Doerffel and updated by Mike Gabriel. It was originally written for the Debian project (but may be used by others).
diff --git a/imc/CMakeLists.txt b/imc/CMakeLists.txt
index d088587..c335ef0 100644
--- a/imc/CMakeLists.txt
+++ b/imc/CMakeLists.txt
@@ -23,8 +23,20 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src)
 ADD_EXECUTABLE(imc ${imc_UIC_out} ${imc_SOURCES} ${imc_INCLUDES} ${imc_MOC_out} ${imc_RCC_out} ${WINRC})
 TARGET_LINK_LIBRARIES(imc ItalcCore)
 
+# install man pages for imc
+MACRO_INSTALL_MANPAGES(${CMAKE_CURRENT_SOURCE_DIR}/man)
+
 INSTALL(TARGETS imc RUNTIME DESTINATION bin)
 
+IF(UNIX)
+	# installing Freedesktop icons only for UNIX
+	IF(ICOTOOL_FOUND)
+		FREEDESKTOP_INSTALL_ICONS(imc ${CMAKE_CURRENT_SOURCE_DIR}/Resources/imc.ico)
+	ELSE(ICOTOOL_FOUND)
+		FREEDESKTOP_INSTALL_ICONS(imc ${CMAKE_CURRENT_SOURCE_DIR}/Resources/imc.png)
+	ENDIF(ICOTOOL_FOUND)
+ENDIF(UNIX)
+
 IF(ITALC_BUILD_WIN32)
 	SET_TARGET_PROPERTIES(imc PROPERTIES LINK_FLAGS -mwindows)
 ENDIF(ITALC_BUILD_WIN32)
diff --git a/imc/man/imc.1 b/imc/man/imc.1
new file mode 100644
index 0000000..a44acc1
--- /dev/null
+++ b/imc/man/imc.1
@@ -0,0 +1,71 @@
+.TH imc 1 "Date: 2011/16/12 10:00:00" "imc"
+.SH NAME
+imc \- is the iTALC management console to setup iTALC.
+.SH SYNOPSIS
+\fBimc\fP [\fIoptions\fP]
+.SH OVERVIEW
+
+imc\[rg], is a X11 program to modify the various settings used by italc-client and italc-master.
+
+imc is free software delivered as a ready-to-run binary distribution or as source code that you can freely use, copy, modify, and distribute. Its license is compatible with the GPL. It runs on all major operating systems.
+
+The functionality of imc is typically utilized from X11 but also from the command line.
+
+In the paragraphs below, find a short description for each command-line option.If you are just getting acquianted with imc, start the program without any options.
+.TP
+.B -ListConfig -l
+
+The current configuration with all keys and values will be listed. This will give an output like
+   ...
+   Logging/LogLevel=1
+   Network/CoreServerPort=11100
+   Network/DemoServerPort=11400
+   ...
+
+.TP
+.B -SetConfigValue -s
+
+The value of configuration property can be changed with this option.
+Examples:
+  imc -SetConfigValue Logging/LogFileDirectory C:\temp
+  imc -s Logging/LogLevel=4
+
+.TP
+.B -ApplySettings -a
+
+You can apply the settings previously saved in a settings file using this command.
+Examples:
+  imc -ApplySettings MyCustomSettings.xml
+
+.TP
+.B -ImportPublicKey -i
+
+You can import a public key file which has been exported during the installation
+of the iTALC master computer using this command or its abbreviation.
+
+You can omit the the second parameter which specifies the public key file if it
+is located in the directory from which you launch IMC. IMC will automatically
+search for a *.key.txt file. If it finds exactly one, it'll import this one.
+Examples:
+  imc -ImportPublicKey MyPublicKey.key.txt
+  imc -i
+
+.TP
+.B -createkeypair <path>
+
+creates a new key pair for the default role (teacher) with the specified "path" as base dir. If "path" is omitted 
+the path is taken from the settings file. This is used in conjunction with role. If role is omitted the default
+role is "teacher".
+
+.TP
+.B -role [supporter|teacher|admin]
+
+in connection with "createkeypair" creates a key pair for the specified role.
+
+.PP
+For more information about the imc, point your browser to file:///usr/share/doc/packages/imc or http://italc.sourceforge.net/.
+.SH SEE ALSO
+ica(1), italc(1)
+
+.SH COPYRIGHT
+\fBCopyright (C) 2004-2011 Tobias Doerffel. Additional copyrights and licenses apply to this software, see http://italc.sourceforge.net\fP
diff --git a/lib/resources/ru.qm b/lib/resources/ru.qm
index 0405f76..66d01c9 100644
--- a/lib/resources/ru.qm
+++ b/lib/resources/ru.qm
@@ -1,7 +1,7 @@
-<d!`B4;gH59KgՀe:qnڱ&(Ԕ*%}*0+Q+GJ|J.LbOjzPRD_hV"VdVv[\Z%cI4g

Mn:>9`aŹmǏ$g
5!$!S'S;>hˎiyJOT38~ʘEf-kҷ(X.^>p5%OC(Y$x5^}/=}U=b[é^xbPRq#A]@}_M,!k*vYF*}@X7yvTe^>PY3f'n`-3~92C^t6o~]6A~{TTZhT]aYtS83bW?kY)1ŧ4obUgRd<{q?=?? Jn!`Se/Sxg^#rn<tfޒy	,[7b*7
-
>ǵ@=^ogjjnd =Fq^-E-c/cq9v$NGӎ71Kg
-D!7#d@##	6# |$);)P)l6v:xrE9faչ]þmHfUȰȰ!ʰ6[tjNTrD.ED. Pls8Un
-3
>Oʥ[2Kb_iPvd~^>cnIFoÍ'@IX֚c׃z#j4'N5MQicFy0yңyyu}7}<V7u+sNN!M	7D
			,">.	=OO	?OO	?OO-	O1>	]CY	la	r	X	^-	>b	n	
+<d!`B4;gH59KgՀe:qnڱ&(Ԕ*%}*0+Q+GJ|J:LbOjzPRD_hV"VdVv[\Z1cI4g

Mn:>9`aŹmǏ$g
5!$!S'S;>hˎiyJOT38~ʘEf-kҷ(X.^>p5%OC(Y$x5^}/=}U=b[é^xbPRq#A]@}kM,!k*vYF*}@X7yvTe^>PY3f'n`-3~92C^t6o~]6A~{TTZhT]aYtS83bW?kY)1ŧ4obUgRd<{q?=?? Jn!`Se/Sxg^#rnHtfޒy		,g7b*7
+
>ǵ@=^ogjjnd IFq^-E-c/cq9v$NGӎ71Kg
+D!C#d@##	6# $);)P)l6v:xrE9faչ]þmHfUȰȰ!ʰ6[tjNTrD.ED. Pls8Un
+3
>Oʥ[2Kb_iPvd~^>cnIFoÍ'@IX֚c׃z#j4'N5MQicFy0yңy'yu}7}<V7u+sNN!M	7D
			,">.	=OO	?OO	?OO9	O1>	]CY	la	r	X	^-	>n	n	
 j	f<	1	PЧ	@~V	C$	C
	/C	9~	>;
 z
 j^e
@@ -27,7 +27,7 @@ s(V
 1"
 8|R
 v
-vq
+v}
 &^N
 ێ 
 
@@ -35,9 +35,9 @@ s(V
 Nb
 ss,
 U[
-N!!/""JC/:DjT|e34!8{sl4EL!s(5"T4(
4PCZSC̯CJ[b
d-bp٩Ƹ+	#-r?S =4
-W5!T
-Uʧ˭ʧʧ~֖
.

^E
<K

"a
"l
^8
Tn
)7 
)S<
:
A:
Ql
\{l
o(t
q2
l
e
!~~
z	
o׹
'2:T
7>
<'
ƞZ
<t
eC
yhLCcR- 
.0B:~ht=1hgr]dx1[b3)1Cc#.
=O0'd^kv~yI4	7$nu+^\ǪpW>&ni" ?@>3@0<<5AboutAboutDialog" ?@>3@0<<5 iTALCAbout iTALCAboutDialog2B>@KAuthorsAboutDialogn5@52>4 =0 40==K9 O7K: 5I5 =5 >ACI5AB2;5=.
+N!!/""JC/:DjT|e34!8{sl4EL!s(5"T4(
4\CZSC̯CJgb
d-bp٩Ƹ+	#-r?S =4
+W5!T
+Uʧ˭ʧʧ~%֖
.

^E
<K

"a
"l
^8
Tn
)7 
)S<
:
A:
Ql
\{l
o(t
q2
l
e
!~~
z	
o׹
'2:T
7>
<'
ƞZ
<t
eC
yhLCcR- 
.0B:~ht=1hgr]dx1[b3)1Cc#.
=O0'd^kv~yI4	7$nu+^\ǪpW>&ni"% ?@>3@0<<5AboutAboutDialog" ?@>3@0<<5 iTALCAbout iTALCAboutDialog2B>@KAuthorsAboutDialogn5@52>4 =0 40==K9 O7K: 5I5 =5 >ACI5AB2;5=.
 
 A;8 K 65;05B5 4>1028BL ?5@52>4 ?@>3@0<<K iTALC =0 =>2K9 O7K: 8;8 C;CGH8BL C65 ACI5AB2CNI89, ?>60;C9AB0, A2O68B5AL A @07@01>BG8:0<8 iTALC!Current language not translated yet (or native English).
 
@@ -256,7 +256,7 @@ p, li { white-space: pre-wrap; }
 Connected.RemoteControlWidgetToolBar!>548=5=85 A %1
Connecting %1RemoteControlWidgetToolBar0 25AL M:@0=
 FullscreenRemoteControlWidgetToolBar,01;>:8@>20BL ABC45=B0Lock studentRemoteControlWidgetToolBar
 KE>4QuitRemoteControlWidgetToolBar(#40;5==>5 C?@02;5=85Remote controlRemoteControlWidgetToolBar!=8<>: M:@0=0SnapshotRemoteControlWidgetToolBar. 071;>:8@>20BL ABC45=B0Unlock studentRemoteControlWidgetToolBar">;L:> >17>@	View onlyRemoteControlWidgetToolBar >:=5WindowRemoteControlWidgetToolBar
-><5=DomainRemoteLogonDialog0@>;LPasswordRemoteLogonDialog#40;5==K9 2E>4Remote logonRemoteLogonDialogFA?>;L7C9B5 ?@82545==K5 =865 ?>;O 4;O 22>40 8<5=8 ?>;L7>20B5;O, ?0@>;O 8 =5>1O70B5;L=>3> =0720=8O 4><5=0. -B0 8=D>@<0F8O 1C45B 8A?>;L7>20=0 4;O 2E>40 2 A8AB5<C(K).Use the fields below to enter the username, password and optional the domain name. These information will be used to logon the computer(s).RemoteLogonDialog <O ?>;L7>20B5;OUsernameRemoteLogonDialog>60;C9AB0, 22548B5 :><0=4K 4;O 8E 2K?>;=5=8O =0 2K1@0==KE :;85=BA:8E :><?LNB5@0E. K <>65B5 70?8A0BL =5A:>;L:> :><0=4, ?> >4=>9 2 AB@>:5.gPlease enter the commands to run on the selected client(s). You can separate multiple commands by line.RunCommandsDialog"K?>;=8BL :><0=4KRun commandsRunCommandsDialog5 2>7<>6=> A45;0BL A=8<>:, B0: :0: 48@5:B>@8O %1 =5 ACI5AB2C5B 8 =5 <>65B 1KBL A>740=0.PCould not take a snapshot as directory %1 doesn't exist and couldn't be created.Snapshot!=8<>: M:@0=0SnapshotSnapshotK <>65B5 ;53:> C?@02;OBL A=8<:0<8, 8A?>;L7CO MBC @01>GCN >1;0ABL.:Simply manage the snapshots you made using this workspace.SnapshotList!=8<:8 M:@0=0	SnapshotsSnapshotList|<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+><5=DomainRemoteLogonDialog0@>;LPasswordRemoteLogonDialog#40;5==K9 2E>4Remote logonRemoteLogonDialogFA?>;L7C9B5 ?@82545==K5 =865 ?>;O 4;O 22>40 8<5=8 ?>;L7>20B5;O, ?0@>;O 8 =5>1O70B5;L=>3> =0720=8O 4><5=0. -B0 8=D>@<0F8O 1C45B 8A?>;L7>20=0 4;O 2E>40 2 A8AB5<C(K).Use the fields below to enter the username, password and optional the domain name. These information will be used to logon the computer(s).RemoteLogonDialog <O ?>;L7>20B5;OUsernameRemoteLogonDialog>60;C9AB0, 22548B5 :><0=4K 4;O 8E 2K?>;=5=8O =0 2K1@0==KE :;85=BA:8E :><?LNB5@0E. K <>65B5 70?8A0BL =5A:>;L:> :><0=4, ?> >4=>9 2 AB@>:5.gPlease enter the commands to run on the selected client(s). You can separate multiple commands by line.RunCommandsDialog"K?>;=8BL :><0=4KRun commandsRunCommandsDialog52>7<>6=> A45;0BL A=8<>: M:@0=0, B0: :0: 48@5:B>@8O %1 =5 ACI5AB2C5B 8 =5 <>65B 1KBL A>740=0.PCould not take a snapshot as directory %1 doesn't exist and couldn't be created.Snapshot!=8<>: M:@0=0SnapshotSnapshotK <>65B5 ;53:> C?@02;OBL A=8<:0<8, 8A?>;L7CO MBC @01>GCN >1;0ABL.:Simply manage the snapshots you made using this workspace.SnapshotList!=8<:8 M:@0=0	SnapshotsSnapshotList|<html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">45AL ?5@5G8A;5=K 2A5 A45;0==K5 20<8 A=8<:8. K <>65B5 45;0BL A=8<:8, 2K1@02 A>>B25BAB2CNICN 70?8AL 2  :>=B5:AB=>< <5=N >:=0 :;85=B0. -B8<8 A=8<:0<8 <>6=> C?@02;OBL A ?><>ILN @0A?>;>65==KE =865 :=>?>:.</p></body></html>5<html><head><meta name="qrichtext" content="1" /><style type="text/css">
diff --git a/lib/resources/ru.ts b/lib/resources/ru.ts
index ecb9009..5c71bcf 100644
--- a/lib/resources/ru.ts
+++ b/lib/resources/ru.ts
@@ -1631,7 +1631,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Could not take a snapshot as directory %1 doesn&apos;t exist and couldn&apos;t be created.</source>
-        <translation type="unfinished">Не возможно сделать снимок, так как директория %1 не существует и не может быть создана.</translation>
+        <translation type="unfinished">Невозможно сделать снимок экрана, так как директория %1 не существует и не может быть создана.</translation>
     </message>
     <message>
         <source>Snapshot</source>
 
: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
: Michael Shigorin