Erro Xt: não é possível abrir a tela, se estiver usando DISPLAY padrão

visão global

Estou tentando fazer o XQuartz funcionar no OSX para que eu possa fazer o encaminhamento do X11 via Docker. estou seguindoas instruções aqui. Acredito que minha pergunta possa ser respondida apenas pela primeira parte, mas por precaução (para evitar o problema XY), forneci a segunda parte também.

Instalação

Eu o instalei via homebrew, viabrew cask install xquartz. Então euopen -a XQuartz para iniciá-lo.

Xterms locais

Testando, se eu tentar abrir umxterm, não funciona:

MacBook-Pro:opencv-gui csaftoiu$ xterm
xterm: Xt error: Can't open display: /private/tmp/com.apple.launchd.3wncZULdXC/org.macosforge.xquartz:0

O pseudo-arquivo existe, no entanto:

MacBook-Pro:opencv-gui csaftoiu$ echo $DISPLAY
/private/tmp/com.apple.launchd.3wncZULdXC/org.macosforge.xquartz:0
MacBook-Pro:opencv-gui csaftoiu$ ls -alh $DISPLAY
srw-rw-rw-  1 csaftoiu  wheel     0B May  6 21:12 /private/tmp/com.apple.launchd.3wncZULdXC/org.macosforge.xquartz:0

I pode abra um xterm via XQuartz. Então:

bash-3.2$ echo $DISPLAY
:0

Esse valor também funciona a partir de um OSX comum:

$ DISPLAY=:0 xterm
# opens xterm, waits for it to finish
$

No entanto, o seguinte não funciona, não sei por que, com base ema resposta aqui:

xterm: Xt error: Can't open display: localhost:0
MacBook-Pro:opencv-gui csaftoiu$ DISPLAY=127.0.0.1:0 xterm
xterm: Xt error: Can't open display: 127.0.0.1:0
MacBook-Pro:opencv-gui csaftoiu$ DISPLAY=`ipconfig getifaddr en0`:0 xterm
xterm: Xt error: Can't open display: 192.168.1.15:0

Observe quexinit funciona por algum motivo:

$ xinit

xinit: XFree86_VT property unexpectedly has 0 items instead of 1
# opens xterm, waits for it to finish
xinit: connection to X server lost

waiting for X server to shut down
Pergunta 1: O que o XQuartz está realmente ouvindo?Docker Forwarding com socat

De qualquer forma, seguindo em frente, essesocat comando não funciona:

MacBook-Pro:opencv-gui csaftoiu$ socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"

Executando isso, de outra janela eu faço:

MacBook-Pro:opencv-gui csaftoiu$ docker run --rm -it -e DISPLAY=`ipconfig getifaddr en0`:0 ubuntu:14.04 bash
root@912eec31b8cb:/# apt-get update && apt-get install xterm
... such install, wow ...
root@912eec31b8cb:/# xterm
Warning: This program is an suid-root program or is being run by the root user.
The full text of the error or warning message cannot be safely formatted
in this environment. You may get a more descriptive message by running the
program as a non-root user or by removing the suid bit on the executable.
xterm: Xt error: Can't open display: %s
root@912eec31b8cb:/# echo $DISPLAY
192.168.1.15:0

Desocat janela eu recebo:

2016/06/14 21:08:15 socat[24289] E connect(5, LEN=68 AF=1 "/private/tmp/com.apple.launchd.3wncZULdXC/org.macosforge.xquartz:0", 68): Connection refused

Também não posso usar a variável DISPLAY que funciona:

MacBook-Pro:opencv-gui csaftoiu$ socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\":0\"
2016/06/14 21:09:43 socat[24309] E connect(5, LEN=4 AF=1 ":0", 4): No such file or directory

Agora, este não é um IP do UNIX-CLIENT. Mas eu não seio que DISPLAY=:0 está se conectando a. Certamente não é a porta 6000, já que é a porta em que costumava ouvir. Se eu mudar para6005, para encaminhar para6000e torne o DISPLAY do contêiner do Docker$(ipconfig getifaddr en0):5 em vez disso, é claro que a conexão é recusada:

$ socat TCP-LISTEN:6005,reuseaddr,fork TCP:localhost:6000
2016/06/14 21:20:32 socat[25379] E connect(8, LEN=16 AF=2 127.0.0.1:6000, 16): Connection refused
Pergunta 2: Como proceder a partir daqui?

questionAnswers(3)

yourAnswerToTheQuestion