public inbox for cygwin-xfree@sourceware.org
help / color / mirror / Atom feed
* x-app-open - open remote X app windows on Windows desktop with Cygwin
@ 2013-11-11 13:12 Marko Myllynen
  0 siblings, 0 replies; only message in thread
From: Marko Myllynen @ 2013-11-11 13:12 UTC (permalink / raw)
  To: cygwin-xfree

[-- Attachment #1: Type: text/plain, Size: 1757 bytes --]

Hi,

FWIW, I've written the attached script to facilitate launching remote X
applications on Windows desktop with Cygwin. I presume for most people
on this list it does not provide anything new but its target audience is
rather people who are not very familiar with Cygwin, Linux, X, or SSH
and prefer using Windows, allowing them easily to run remote X
applications just by clicking a desktop icon. In short, the script will
start XWin and setup SSH keys with minimal user intervention allowing
easy but secure use of remote X applications on Windows desktop.

The complete installation instructions are as follows, this is a
copy/paste from the script, after that one just needs to click on the
newly created icon:

# Installation instructions for Cygwin and this script:
#
# 1) Install from http://www.cygwin.com/ using 32 or 64-bit setup*.exe
# 2) During installation, select at least these additional packages:
#
# keychain openssh psmisc xorg-server xterm
#
# 3) Place this script in C:\cygwin\bin
# 4) Create a shortcut on Windows desktop with
#    a) "Start in" being the bin path 3) above
#    b) "Target" being
#
# C:\cygwin\bin\run.exe -p /bin /bin/sh -c "/bin/x-app-open host
application"
#
# In case a user name needs to be specified use the form user@host.
#

I'm not a Cygwin packager and not planning to become one but if someone
sees this valuable, creating an x-app-open Cygwin package with proper
dependencies would allow making the second step above a bit more
straightforward. But even by itself the script, now available in the
list archives, has been helpful.

Wrt to technical details, there might be a corner case or two when XWin
is left behind but otherwise I'm not aware of any major issues with it.

Thanks,

-- 
Marko Myllynen

[-- Attachment #2: x-app-open --]
[-- Type: text/plain, Size: 2728 bytes --]

#!/bin/sh
#
# x-app-open - open remote X app windows on Windows desktop with Cygwin
#
# Copyright (C) 2013 Marko Myllynen <myllynen@redhat.com>
# This program is free software; it is released under the GPLv3.
#
# Installation instructions for Cygwin and this script:
#
# 1) Install from http://www.cygwin.com/ using 32 or 64-bit setup*.exe
# 2) During installation, select at least these additional packages:
#
# keychain openssh psmisc xorg-server xterm
#
# 3) Place this script in C:\cygwin\bin
# 4) Create a shortcut on Windows desktop with
#    a) "Start in" being the bin path 3) above
#    b) "Target" being
#
# C:\cygwin\bin\run.exe -p /bin /bin/sh -c "/bin/x-app-open host application"
#
# In case a user name needs to be specified use the form user@host.
#

SSH_OPTS="-oBatchMode=yes -oConnectTimeout=20 -oStrictHostKeyChecking=no"

# Launch XWin if not there already
XPID=$(ps -ef | grep /bin/XWin | grep -v grep | awk '{print $2}')
if [ "$XPID" = "" ]; then
  run cygstart --hide /bin/XWin :0 -clipboard -multiwindow
  XPID=$(ps -ef | grep /bin/XWin | grep -v grep | awk '{print $2}')
fi
export DISPLAY=$HOSTNAME:0

# Setup SSH keys if needed
while [ ! -f "$HOME/.ssh/id_rsa" ]; do
  xterm +tb -T "Setting up SSH keys..." -e \
    "echo Generating SSH keys, enter a new passphrase, at least 5 characters.;\
      ssh-keygen -f \"$HOME/.ssh/id_rsa\" > /dev/null; \
        echo Copying SSH public key to the remote host...; \
          ssh-copy-id -i \"$HOME/.ssh/id_rsa.pub\" \
            -oStrictHostKeyChecking=no $1 2>&1 | grep -v INFO"
done

# Add SSH keys to ssh-agent with keychain if needed
[[ -f "$HOME/.keychain/$HOSTNAME-sh" ]] && \
  . "$HOME/.keychain/$HOSTNAME-sh" > /dev/null 2>&1
ssh-add -l 2>/dev/null | grep -q "$HOME/.ssh/id_rsa"
if [ $? -ne 0 ]; then
  cygstart --hide xterm +tb -T '"Loading SSH keys..."' -e "keychain -q \"$HOME/.ssh/id_rsa\""
  sleep 3
  while true; do
    sleep 1
    pstree -aA | grep -q -- "[-]xterm +tb -T Loading SSH keys..." || break
  done
  [[ -f "$HOME/.keychain/$HOSTNAME-sh" ]] && \
    . "$HOME/.keychain/$HOSTNAME-sh" > /dev/null 2>&1
fi

# Do the actual work
ssh $SSH_OPTS -X $1 "${@:2}" > /dev/null 2>&1
if [ $? -eq 255 ]; then
  # Connection failed, perhaps a new host, try to copy the key
  xterm +tb -T "Setting up SSH keys..." -e \
    "echo Copying SSH public key to the remote host...; \
      ssh-copy-id -i \"$HOME/.ssh/id_rsa.pub\" \
        -oStrictHostKeyChecking=no $1 2>&1 | grep -v INFO"
  ssh $SSH_OPTS -X $1 "${@:2}" > /dev/null 2>&1
fi

# Terminate XWin if no active connections left
sleep 1
sessions=$(pstree -aA | grep "[s]h $0" | wc -l)
if [ $sessions -le 2 ]; then
  /bin/kill $XPID > /dev/null 2>&1 ; /bin/kill -f $XPID > /dev/null 2>&1
fi


[-- Attachment #3: Type: text/plain, Size: 223 bytes --]

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://x.cygwin.com/docs/
FAQ:                   http://x.cygwin.com/docs/faq/

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2013-11-11 13:12 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-11 13:12 x-app-open - open remote X app windows on Windows desktop with Cygwin Marko Myllynen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).