The branch, master has been updated via b022803cb5b4dc10c740c52bd5845f9a52b7d9b9 (commit) from ccdd4364d44b187c1f5cd24b4f1c2aa487110cac (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit b022803cb5b4dc10c740c52bd5845f9a52b7d9b9 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Sun May 27 15:41:59 2012 +0200 Make x2gosetkeyboard set the client-side keyboard on sessino start and resume. ----------------------------------------------------------------------- Summary of changes: debian/changelog | 2 ++ x2goserver/bin/x2goresume-session | 15 +++++++++------ x2goserver/bin/x2goruncommand | 2 ++ x2goserver/bin/x2gosetkeyboard | 28 ++++++++++++++++++++++++---- x2goserver/bin/x2gostartagent | 10 +++++----- 5 files changed, 42 insertions(+), 15 deletions(-) The diff of changes is: diff --git a/debian/changelog b/debian/changelog index 107a2a2..9522e79 100644 --- a/debian/changelog +++ b/debian/changelog @@ -20,6 +20,8 @@ x2goserver (3.1.1.1-0~x2go1) UNRELEASED; urgency=low in X2Go session cache directory. - Add support for client-side keyboard detection. Moved script x2gosetkeyboard from x2goserver-pyhoca into x2goserver package. + - Make x2gosetkeyboard set the client-side keyboard on sessino start and + resume. -- Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Wed, 04 Apr 2012 11:44:14 +0200 diff --git a/x2goserver/bin/x2goresume-session b/x2goserver/bin/x2goresume-session index a0b299a..cdb5af2 100755 --- a/x2goserver/bin/x2goresume-session +++ b/x2goserver/bin/x2goresume-session @@ -152,6 +152,9 @@ echo "$NEWOPTIONS" >"${SESSION_DIR}/options" # run x2goserver-extensions for pre-resume x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" pre-resume || true +# clear old keyboard file +rm -Rf $SESSION_DIR/keyboard + kill -HUP $X2GO_AGENT_PID &>/dev/null && { $X2GO_LIB_PATH/x2gosyslog "$0" "notice" "client $X2GO_CLIENT has successfully resumed session with ID $SESSION_NAME" @@ -171,12 +174,6 @@ kill -HUP $X2GO_AGENT_PID &>/dev/null && { #done (sleep 1; $X2GO_LIB_PATH/x2goresume "$X2GO_CLIENT" "$SESSION_NAME" "$GR_PORT" "$SOUND_PORT" "$FS_PORT" > /dev/null;) - # set client-side keyboard model, type, variant, etc. - if [ "$X2GO_SET_KBD" != "0" ]; then - X2GO_DISPLAY=$(echo $X2GO_SESSION | cut -d"-" -f2) - (sleep 1; DISPLAY=:$X2GO_DISPLAY.0 x2gosetkeyboard;) - fi - # resume x2godesktopsharing, if it has been in use before the session got suspended x2gofeature X2GO_DESKTOPSHARING &>/dev/null && x2goresume-desktopsharing "$SESSION_NAME" || true @@ -201,3 +198,9 @@ echo "gr_port=$GR_PORT" echo "sound_port=$SOUND_PORT" echo "fs_port=$FS_PORT" +# set client-side keyboard model, type, variant, etc. +if [ "$X2GO_SET_KBD" == "0" ]; then + X2GO_DISPLAY=$(echo $SESSION_NAME | cut -d"-" -f2) + export DISPLAY=:$X2GO_DISPLAY.0 + x2gosetkeyboard "$SESSION_NAME" >/dev/null 2>/dev/null & +fi diff --git a/x2goserver/bin/x2goruncommand b/x2goserver/bin/x2goruncommand index 541326d..012f713 100755 --- a/x2goserver/bin/x2goruncommand +++ b/x2goserver/bin/x2goruncommand @@ -200,6 +200,8 @@ sucessful_run=false if [ "$EXEC" != "" ] && [ -x $EXEC ]; then $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "running command $EXEC" + x2gosetkeyboard >/dev/null 2>/dev/null & + x2gofeature X2GO_XSESSION &>/dev/null && [ "x$X2GO_SESS_TYPE" = "xD" ] && { STARTUP="$cmd$args" $X2GO_LIB_PATH/x2gosyslog "$0" "notice" "launching session with Xsession-x2go mechanism, using STARTUP=\"$STARTUP\"" diff --git a/x2goserver/bin/x2gosetkeyboard b/x2goserver/bin/x2gosetkeyboard index 6ca357e..710daa9 100755 --- a/x2goserver/bin/x2gosetkeyboard +++ b/x2goserver/bin/x2gosetkeyboard @@ -17,23 +17,41 @@ # Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # +# Copyright (C) 2011-2012 Mike Gabriel <mike.gabriel@das-netzwerkteam.de> # Copyright (C) 2011-2012 Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de> # Copyright (C) 2011-2012 Heinz-Markus Graesing <heinz-m.graesing@obviously-nice.de> -set -e - X2GO_LIB_PATH=`echo -n \$(x2gobasepath)/lib/x2go` $X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@" +SESSION_NAME=${1:-$X2GO_SESSION} + # set up paths X2GO_SESSION_ROOT=${HOME}/.x2go -X2GO_SESSION_DIR=${X2GO_SESSION_ROOT}/C-${X2GO_SESSION} +X2GO_SESSION_DIR=${X2GO_SESSION_ROOT}/C-${SESSION_NAME} # client keyboard configuration X2GO_CLIENT_KBD_FILE=${X2GO_SESSION_DIR}/keyboard -test -f ${X2GO_CLIENT_KBD_FILE} || exit 0 +# if there is a directory at the location of the keyboard file, we consider this as blocking this script +if [ -d ${X2GO_CLIENT_KBD_FILE} ]; then + $X2GO_LIB_PATH/x2gosyslog "$0" "info" "${X2GO_CLIENT_KBD_FILE} is blocked, not setting keyboard parameters from client-side settings" + rm -Rf ${X2GO_CLIENT_KBD_FILE} + exit 0 +fi + +# wait for the keyboard file to appear +i=0 +while ! [ -f ${X2GO_CLIENT_KBD_FILE} ] && [ $i -lt 30 ]; do + $X2GO_LIB_PATH/x2gosyslog "$0" "info" "Waiting for ${X2GO_CLIENT_KBD_FILE} to appear" + sleep 1 + i=$((i+1)) +done +if ! [ -f ${X2GO_CLIENT_KBD_FILE} ]; then + $X2GO_LIB_PATH/x2gosyslog "$0" "warning" "${X2GO_CLIENT_KBD_FILE} did not appear within 30s after agent startup" + exit 0 +fi read_keyboard_file() { @@ -63,5 +81,7 @@ update_keymap() { } ### main ### +$X2GO_LIB_PATH/x2gosyslog "$0" "notice" "Setting X keyboard according to ${X2GO_CLIENT_KBD_FILE}" read_keyboard_file update_keymap + diff --git a/x2goserver/bin/x2gostartagent b/x2goserver/bin/x2gostartagent index dfbf017..90b82b1 100755 --- a/x2goserver/bin/x2gostartagent +++ b/x2goserver/bin/x2gostartagent @@ -251,11 +251,6 @@ if [ "$X2GO_STYPE" == "S" ]; then x2goagent -nolisten tcp $X2GODPIOPTION_ -$SESSION_TYPE -auth "$XAUTHORITY" -shadow $SHADOW_DESKTOP -shadowmode $SHADOW_MODE -geometry ${X2GO_GEOMETRY} -name "${SESSION_WINDOW_TITLE}" "${NX_AGENT}" 2>"${SESSION_DIR}/session.log" & else x2goagent -nolisten tcp $X2GODPIOPTION_ $XDMCPOPT -$SESSION_TYPE $NOEXITPARAM -auth "$XAUTHORITY" -geometry ${X2GO_GEOMETRY} -name "${SESSION_WINDOW_TITLE}" "${NX_AGENT}" 2>"${SESSION_DIR}/session.log" & - - # if we do not enforce a special keybaord type/layout/variant, use the one detected on the client-side - if [ "$X2GO_SET_KBD" != "0" ]; then - (sleep 1; x2gosetkeyboard;) - fi fi X2GO_AGENT_PID=$! @@ -278,6 +273,11 @@ X2GO_SND_PORT=1024 $X2GO_LIB_PATH/x2gocreatesession "$X2GO_COOKIE" "$X2GO_AGENT_PID" "$X2GO_CLIENT" "$GR_PORT" "$SOUND_PORT" "$FS_PORT" "$SESSION_NAME" > /dev/null +if [ "$X2GO_SET_KBD" != "0" ]; then + $X2GO_LIB_PATH/x2gosyslog "$0" "info" "blocking creation of agent's keyboard file ${SESSION_DIR}/keyboard as requested by session startup command" + mkdir -p ${SESSION_DIR}/keyboard +fi + echo $X2GO_PORT echo $X2GO_COOKIE echo $X2GO_AGENT_PID hooks/post-receive -- x2goserver.git (X2Go Server) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "x2goserver.git" (X2Go Server).