Skip to content

Commit

Permalink
MSYS2/Cygwin: Always use X over IP to serve Xvfb.exe, too #123
Browse files Browse the repository at this point in the history
  • Loading branch information
mviereck committed Feb 4, 2019
1 parent 700a7e2 commit 2eae875
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 24 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ Project website: https://github.com/mviereck/x11docker
[(#87)](https://github.com/mviereck/x11docker/issues/87)
- `--xvfb` in Cygwin: Removed `-nolisten local` in X command.
[(#123)](https://github.com/mviereck/x11docker/issues/123)
- MSYS2/Cygwin: Always use X over IP to serve e.g. `Xvfb.exe`, too.
[(#123)](https://github.com/mviereck/x11docker/issues/123)

## [5.3.3](https://github.com/mviereck/x11docker/releases/tag/v5.3.3) - 2018-11-17
### Added
Expand Down
74 changes: 50 additions & 24 deletions x11docker
Original file line number Diff line number Diff line change
Expand Up @@ -2232,22 +2232,42 @@ check_newxenv() { # find free display, create $Newxenv
}
done

# X over IP/TCP
[ "$Xoverip" ] || case $Xserver in
--vcxsrv|--xwin) Xoverip="yes" ;;
*) Xoverip="no" ;;
esac
case $Winsubsystem in
MSYS2|CYGWIN) Xoverip="yes" ;;
esac

# set $Newdisplay (DISPLAY of container) and $Newxsocket
case $Xserver in
--hostdisplay)
Newdisplay=$Hostdisplay
Newdisplaynumber=$(echo $Newdisplay | cut -d: -f2 | cut -d. -f1)
[ -e "$Hostxsocket" ] && Newxsocket=$Hostxsocket || Newxsocket=
;;
--vcxsrv|--xwin)
Newdisplay="$Hostip:$Newdisplaynumber"
;;
*)
Newdisplay=":$Newdisplaynumber"
Newxsocket="/tmp/.X11-unix/X$Newdisplaynumber"
Newxlock="/tmp/.X$Newdisplaynumber-lock"
[ -n "$(find $Newxsocket $Newxlock 2>/dev/null)" ] && error "Display $Newdisplay is already in use."
case $Xoverip in
yes) Newdisplay="$Hostip:$Newdisplaynumber" ;;
no)
Newdisplay=":$Newdisplaynumber"
Newxsocket="/tmp/.X11-unix/X$Newdisplaynumber"
Newxlock="/tmp/.X$Newdisplaynumber-lock"
[ -n "$(find $Newxsocket $Newxlock 2>/dev/null)" ] && error "Display $Newdisplay is already in use."
;;
esac
;;
# --vcxsrv|--xwin)
# Newdisplay="$Hostip:$Newdisplaynumber"
# ;;
# *)
# Newdisplay=":$Newdisplaynumber"
# Newxsocket="/tmp/.X11-unix/X$Newdisplaynumber"
# Newxlock="/tmp/.X$Newdisplaynumber-lock"
# [ -n "$(find $Newxsocket $Newxlock 2>/dev/null)" ] && error "Display $Newdisplay is already in use."
# ;;
esac
# set $Newwaylandsocket
case $Xserver in
Expand Down Expand Up @@ -2551,11 +2571,16 @@ create_xcommand() { # create command to start X server and/or Waylan
-ac" ;;
esac

# X over TCP
case $Xserver in
--vcxsrv|--xwin) Xserveroptions="$Xserveroptions \\
# X over IP/TCP
case $Xoverip in
yes)
case $Xserver in
--nxagent) ;;
*) Xserveroptions="$Xserveroptions \\
-listen tcp" ;;
*) Xserveroptions="$Xserveroptions \\
esac
;;
no) Xserveroptions="$Xserveroptions \\
-nolisten tcp" ;;
esac

Expand Down Expand Up @@ -2747,29 +2772,29 @@ $(tail "$Compositorlogfile")"
Xserveroptions="$Xserveroptions \\
-verbose" # make X verbose
[ "$Hosttty" = "yes" ] && Xserveroptions="$Xserveroptions -keeptty"
Xcommand="$(command -v Xorg) $Newdisplay vt$Newxvt \\
Xcommand="$(command -v Xorg) :$Newdisplaynumber vt$Newxvt \\
$Xserveroptions"
;;

--xpra)
case $Xpravfb in
Xvfb) Xcommand="$(command -v Xvfb) $Newdisplay -screen 0 ${Maxxaxis}x${Maxyaxis}x24 \\
Xvfb) Xcommand="$(command -v Xvfb) :$Newdisplaynumber -screen 0 ${Maxxaxis}x${Maxyaxis}x24 \\
$Xserveroptions" ;;
Xdummy) Xcommand="$Xorgwrapper $Newdisplay vt${Newxvt:-128} \\
Xdummy) Xcommand="$Xorgwrapper :$Newdisplaynumber vt${Newxvt:-128} \\
-config $Xdummyconf \\
$Xserveroptions" ;;
esac
;;

--xdummy)
Xcommand="$Xorgwrapper $Newdisplay \\
Xcommand="$Xorgwrapper :$Newdisplaynumber \\
-config $Xdummyconf \\
$Xserveroptions"
[ "$Winsubsystem" ] || Xcommand="$Xcommand vt${Newxvt:-128}"
;;

--xvfb)
Xcommand="$(command -v Xvfb) $Newdisplay -screen 0 ${Screensize}x24 \\
Xcommand="$(command -v Xvfb) :$Newdisplaynumber -screen 0 ${Screensize}x24 \\
$Xserveroptions" ### FIXME: hardcoded setting of depth 24. Could be better?
;;

Expand All @@ -2779,12 +2804,12 @@ $(tail "$Compositorlogfile")"
no) for ((Count=0 ; Count<$Outputcount ; Count++)) ; do Xephyroptions="$Xephyroptions -screen $Screensize" ; done ;;
esac
#[ "$Xephyrglamor" = "yes" ] && Xephyroptions="$Xephyroptions -glamor" # deprecated option '--glamor'
Xcommand="$(command -v Xephyr) $Newdisplay $Xephyroptions \\
Xcommand="$(command -v Xephyr) :$Newdisplaynumber $Xephyroptions \\
$Xserveroptions"

# Fallback: Xnest
command -v Xephyr >/dev/null || {
Xcommand="$(command -v Xnest) $Newdisplay -geometry $Screensize -scrns $Outputcount \\
Xcommand="$(command -v Xnest) :$Newdisplaynumber -geometry $Screensize -scrns $Outputcount \\
-name '$Imagename on $Newdisplay' \\
$Xserveroptions "
note "Xephyr not found. Fallback: using Xnest.
Expand All @@ -2795,12 +2820,12 @@ $(tail "$Compositorlogfile")"
;;

--xwayland)
Xcommand="$(command -v Xwayland) $Newdisplay \\
Xcommand="$(command -v Xwayland) :$Newdisplaynumber \\
$Xserveroptions"
;;

--xpra-xwayland|--xdummy-xwayland)
Xcommand="$(command -v Xwayland) $Newdisplay \\
Xcommand="$(command -v Xwayland) :$Newdisplaynumber \\
$Xserveroptions"
[ "$Desktopmode" = "no" ] && [ "$Xserver" = "--xpra-xwayland" ] && Xcommand="$Xcommand \\
-rootless"
Expand Down Expand Up @@ -2831,7 +2856,7 @@ $(tail "$Compositorlogfile")"
;;

--weston|--weston-xwayland)
[ "$Xserver" = "--weston-xwayland" ] && Xcommand="$(command -v Xwayland) $Newdisplay \\
[ "$Xserver" = "--weston-xwayland" ] && Xcommand="$(command -v Xwayland) :$Newdisplaynumber \\
$Xserveroptions"
Compositorcommand="weston --socket=$Newwaylandsocket"
[ -n "$Westonoutput" ] && for ((Count=1 ; Count<=$Outputcount ; Count++)) ; do
Expand Down Expand Up @@ -2865,7 +2890,7 @@ mode=$Screensize
;;

--kwin-xwayland)
Xcommand="$(command -v Xwayland) $Newdisplay \\
Xcommand="$(command -v Xwayland) :$Newdisplaynumber \\
$Xserveroptions"
Compositorcommand="kwin_wayland --xwayland --socket=$Newwaylandsocket --width=$Xaxis --height=$Yaxis"
[ "$Outputcount" = "1" ] || Compositorcommand="$Compositorcommand --output-count=$Outputcount"
Expand Down Expand Up @@ -2898,7 +2923,7 @@ mode=$Screensize
"no") Nxagentoptions="$Nxagentoptions -R" ;; # rootless mode, similar to xpra
esac
export NXAGENT_KEYSTROKEFILE="$Cachefolder/nx_keys"
Xcommand="$(command -v nxagent) $Newdisplay $Xserveroptions $Nxagentoptions \\
Xcommand="$(command -v nxagent) :$Newdisplaynumber $Xserveroptions $Nxagentoptions \\
-keystrokefile $NXAGENT_KEYSTROKEFILE"
# Xcommand="$(echo $Xcommand | sed 's/+extension Composite.*//')"
# create file for additional nxagent options
Expand Down Expand Up @@ -6339,10 +6364,11 @@ declare_variables() { # declare global variables
Xprarelease="" # release number from $Xpraversion
Xephyrglamor="yes" # former option '--glamor': enable Xephyr glamor 2D acceleration (deprecated, now always yes)
Xfishtank="no" # option --xfishtank: fish tank on new X server
Xtest="" # enable extension Xtest yes/no. If empty, yes for --xpra/--xdummy/--xvfb, otherwise no
Xkblayout="" # option '--keymap': Layout for keymap, compare /usr/share/X11/xkb/symbols
Xtest="" # enable extension Xtest yes/no. If empty, yes for --xpra/--xdummy/--xvfb, otherwise no
Xcomposite="" # +extension COMPOSITE yes/no
Xauthexe="xauth" # either 'xauth' or 'xauth.exe'
Xoverip="" # Connect to X over TCP yes/no

# Main options influencing --auto
Autochooseserver="yes" # option '--auto': automatically choose X server (default)
Expand Down

0 comments on commit 2eae875

Please sign in to comment.