很早以前, 我請部門內一位超級優秀的同事 Sam 寫了一個 tcl 的程式, 幫助我們 config audio 輸出時的各種開關, 包括 codec 的總類, memory 的大小, Wall 還是放水等等. 這個工具用了好多年, 在 cygwin 底下運作都沒問題, 不過上了 Linux 之後, 遠端操作 tcl 就不能正常輸出畫面了. 由於 MakeConfig 也不需要常常改, 所以這個問題就被忽略了.
這幾天為了在新的 compiler server 上建立環境, 重新把這個問題檢查了一下. 原來只要支援 Xwindow 就可以讓畫面顯示出來.
不管是遇到
Application initialization failed: no display name and no DISPLAY environment variable
Error in startup script: no display name and no SDISPLAY environment variable
Application initialization failed: couldn’t connect to display “localhost:X.0″
Can’t open display
不認識 wm title….等等, 都可以用 Xwindow 解決.
基本上 Linux 系統都會支援 X window, 讓使用者可以透過 X server 使用鍵盤、滑鼠、和顯示設備. 但是對於遠端系統, 就需要 X forwarding (轉發). 因此. 我們首先就是要確定 server 開了 X11 forwarding.
在 /etc/ssh/shhd_config 裡面要有這行:
X11Forwarding yes
我們可以用 grep X11Forwarding /etc/ssh/sshd_config 來檢查此設定. 不過需要有 root 權限才能修改.
至於遠端、自己這一方 (local terminal), 我是用 putty, 因為 putty 本身也支援 X11 forwarding, 只要把這個選項打開, 上述的問題就會從 no display name 進化成 couldn’t connect. 呃, 問題還沒解決對吧!那就是該 Xming 登場的時候了.
從 X server forward 過來的畫面 (UI), 在 Windows 系統下要畫出來, 就是靠 Xming. 它可以在這裡下載:
http://sourceforge.net/projects/xming/
其實, Cygwin 本身就可以支援 X server, 可以參考這個 link.
Cygwin/X Frequently Asked Questions
至於 Xming 的用法, 討論的人很多. 請參考下面鏈結.