This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

retry: Problem transfering X11 cut/copy buffer to windows and back



-------- Original Message --------
Subject: 	Problem transfering X11 cut/copy buffer to windows and back
Date: 	Sun, 25 Aug 2019 11:51:18 -0700



Starting a few days ago, after an update to cygwin,
I'm finding it impossible to transfer
my xselection from cygwin X to any Win application or vice versa.

I've tried multpile Windows apps (Windows 7 SP1 x64)
and multiple X apps and no go.

I first noticed it in gvim -- which I run on my linux box
and display via 'X' locally.

The only thing I noticed w/X,u has been a checkmarked value about
Clipboard may use primary selection (which is checked, though I tried both
ways).

My cygwin start script is the same as it has been since
Mar23, 2018 and is below.

Having to write things out ot files is royal pain, so any ideas
would be very appreciated.

Thanks much!

Linda

Had my cygcheck.out attached, but if this gets through
perhaps such isn't allowed?


----startxwin.sh---
#!/bin/bash
# (c) LA Walsh 2004-2014, licenced under GPLv2
#export DISPLAY=:0
#export XAPPLRESDIR=/usr/X11R6/lib/X11/app-defaults
#export XCMSDB=/usr/X11R6/lib/X11/Xcms.txt
#export XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB
#export XNLSPATH=/usr/X11R6/lib/X11/locale
#unexport XAPPLRESDIR XCMSDB XKEYSYMDB XNLSPATH

# see cygwin Xwin for more option examples
# relevant ops:
# -multiwindow = use windows manage; not w/(-rootless|-fullscreen)
# -clipboard = use built-in version (integrated w/windows)
# -unixkill = Enable Ctrl-Alt-BS as X-server shutdown cmnd
# -nowinkill = Disable Alt+F4 as a server shutdown key combination.
# -trayicon = (default) windows tray icon enabled
#set -x
export LIBGL_USE_WGL=1
mount -c /
export PATH=/bin:$(/bin/cygpath "$USERPROFILE")/bin:$PATH #ensure our
bin is 1st
shopt -s expand_aliases extglob
alias my=declare int=my\ -i  sub=function array=my\ -a
alias xset=$(type -P xset);
alias notify=$(type -P notifu)

my HKLM='HKEY_LOCAL_MACHINE' MsWinNT='SOFTWARE/Microsoft/Windows NT'
my DPI_Px='FontDPI/LogPixels' proc_reg='/proc/registry'
my pixels_key="$HKLM/$MsWinNT/CurrentVersion/$DPI_Px"
my pixels_path="$proc_reg/$pixels_key"

export DISPLAY="${DISPLAY:-":0"}"

sub xup {
  local stat
  read -t .1 stat <<<$(xset q >&/dev/null; echo $?)   &&
        return $stat
  ((-1)) 
}

Xwin_pids() {
  ( cd /proc  && for exe in [0-9]*/exename; do
      read ln<"$exe"
      ((${#ln})) && [[ $ln =~ Xwin ]] && printf "%d %s\n" "${i%/*}" "$ln"
    done
  )
}


Xwin_running() {
  my nam; int pid
  read pid nam< <(Xwin_pids)
  return $((!pid))
}

kill_Xwin() {
  array sigs=(TERM TERM KILL) # try 2 TERMs then KILL upto maxsigs
  int pd; my pg
  int maxsigs=3 lastsig=${#sigs[*]}
  while ((maxsigs)) && read pd pg; do
    ((pd)) && kill -${sigs[--maxsigs>lastsig ? lastsig : maxsigs]} $pd
    sleep 1
  done < <(Xwin_pids)
}

tidy_old_Xwin() {
  rm -fr /tmp/.X11-unix
}

function ord() { printf "%d" "'$1" ; }

sub get_dpi {
  my dw=""; read -d '' dw< <(<"$pixels_path" cat)
  int dpi=$(ord "$dw")
  # check for insane values
  ((dpi<50||dpi>>400)) && dpi=107
  printf ${1:+-v $1} "%d\n" $dpi
}



sub get_fontpath {
  printf "%s"
"/usr/share/fonts/TTF,/usr/share/fonts/Type1,/usr/share/fonts/misc,/usr/share/fonts/100dpi,built-ins,/windows/fonts"
}

sub start_XWin {
  my fontpath=$(get_fontpath)
  int dpi=$(get_dpi)
  cmd="/bin/run /bin/XWin  ${dpi:+-dpi $dpi}   -listen tcp +iglx -wgl
-compositealpha -compositewm -lesspointer -clipboard  -ac -unixkill
-nowinkill -multiwindow -wm -ardelay 150 -arinterval 30 +bs
-nomultimonitors -noreset -fp \"$fontpath\" "
  echo cmd="$cmd"
  $cmd
}

sub start_syslogd {
  cygrunsrv -n -O -S syslogd
}

sub start_cygserver {
  cygrunsrv -n -O -S -d messagebus cygserver
}

sub start_msgbus {
  cygrunsrv -n -O -S -d syslogd messagebus
}

sub start_sess_dbus {
  /bin/run /bin/dbus-launch --exit_with_session ~/.Xsession
}


sub _in {
  local x=${1:?};shift
  for ((;$#>0;)); do [[ $x == $1 ]] && return 0;shift; done
  return 1
}


int tries=3

if Xwin_running && xup; then
  notify /t info /m "Xserver already running and ready" /d 5000
else
  #echo "No Xserver detected"
 
  tidy_old_Xwin

  while ((1)); do
    start_cygserver
    start_XWin
    sleep 1
 
    for ((i=0;i<5;++i)); do
      xup && break 2
      sleep 1
    done

    if ((--tries<=0)); then
      m="^GEXITING: Timeout Waiting for Xserver Startup!!"
      echo "$m"
      notify /t error /m "$m"
      exit 1;
    fi
  done
  start_sess_dbus
  #start_dbus || { m="^GError Starting Dbus"; echo "$m"; notify /t error
/m "$m"; }
fi

# vim: ts=2:sw=2





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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]