retry: Problem transfering X11 cut/copy buffer to windows and back
L A Walsh
cygwin@tlinx.org
Mon Aug 26 03:25:00 GMT 2019
-------- 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
More information about the Cygwin
mailing list