wsl使用可视化界面_通过 VcXsrv 在 WSL2 上使用图形化界面(xfce4)
當然網絡上已經有很多相關教程了,但是對于我的情況那些方法都不完全正確以至于我不能使用圖形化界面。所以如果你查了很多方法也不能使用的話可以看看這篇。
這是我的系統參數。
開門見山
啟動 VcXsrv
在 Windows 上下載 VcXsrv 并安裝。
運行,第一步的設置窗口狀態怎么選關系不大,我一般是用 One large window ,默認的 Multiple windows 在多屏情況下顯示會有一些問題。然后 Display number 可以用默認的 -1 ,或者設置成 0 (當然也可以是其他的數字,具體內容后面解釋)。
下一步,選擇 Start no client 。
下一步,選項全部勾上,Additional parameters 不用管。
點下一步,點完成,這時候會出現一個黑色的窗口,這樣 VcXsrv 就啟動好了。
WSL 啟動桌面程序
首先下載 xfce4 ,sudo apt install xfce4 。
然后在 .bashrc 文件末尾中添加一句 export DISPLAY=xx.xx.xx.xx:0 ,其中的 xx.xx.xx.xx 是 VcXsrv 所在主機的 IP 地址,即在 Windows 的 cmd 或 powershell 中執行 ipconfig 里的以太網適配器的 IPv4 地址。
比如我的是 10.32.223.175 ,所以我要在 .bashrc 中添加 export DISPLAY=10.32.223.175:0 。
然后 source .bashrc 或者重新進入 wsl 終端。
然后執行 startxfce4 ,如果正常的話,之前 VcXsrv 的黑色窗口就會顯示 xfce4 的桌面了,并且 wsl 終端會輸出 xfce4 的日志。
發生了什么
整個過程中比較重要的概念是 Display number 和環境變量 $DISPLAY 。在 VcXsrv 中設置的 Display number 就是 $DISPLAY 中的分號后面的那個數字。當然,如果 VcXsrv 使用默認的 Display number (-1)就是讓 VcXsrv 自動設置這個數字,在當前情況下用默認設置也是可以的。
當啟動好 VcXsrv 后就相當于在 Windows 上啟動了一個虛擬顯示器,然后 WSL 的桌面程序需要連接上這個虛擬顯示器才能正常顯示。Linux 就是通過 $DISPLAY 這個環境變量來尋找目標顯示器。網絡上有很多 wsl 連接 VcXsrv 的教程的方法是將 $DISPLAY 設置成 :0.0 ,這貌似在 WSL1 上是可行的,但是在 WSL2 上就行不通了。(但是如果用 xrdp 來使用圖形界面使用這個設置就是可以的,因為 xrdp 是運行在 wsl 的 Linux 上的,而且 :0.0 的意思其實就是 localhost:0.0 。至于為什么是 0.0 ,是因為這兩個數字分別代表 Display 和 Screen,即 D.S 。 0.0 的意思是 0 號 Display 的 0 號 Screen 。至于更詳細的解釋可以在 Linux 中執行 man X 來查看。)
網絡上另外還有一個方法是將 $DISPLAY 設置成 $(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 ,這個值是 /etc/resolv.conf 中的 nameserver 的 IP 。不知道為什么這個方法在我的機子上也行不通(可能是因為別人的 wsl2 的 nameserver 的 IP 和 Windows 的 IP 是一樣的?)。
而 $DISPLAY 的本質是為了告訴 Linux 的圖形程序 X server 的地址和 Display number。所以將地址設置成 VcXsrv 所在主機的 IP 地址那應該是沒問題的。如果執行 startxfce4 還是連接不上,并顯示 xrdb: Connection timed out 那么檢查下 IP 能否 ping 通,以及可能要設置下 WIndows 的防火墻規則。
其他
為什么設置的最后一步要全點上勾。
最后一個勾是 Disable access control ,這是允許所有客戶程序都能連接這個 VcXsrv。有的教程說要在最后一步的 Additional parameters fo VcXsrv 中加上 -ac 這個參數,但其實這個參數應該和勾上 Disable access control 的作用是一樣的。因為 -ac 的解釋就是 disable access control restrictions 。
如果不把 export 寫在 .bashrc 中會怎么樣
如果只在終端里設置 $DISPLAY 的值其實也能運行,但是這樣在圖形界面中運行一些圖形程序的時候可能就會出問題了。因為只在終端執行 export ... 那么環境變量只會在這個終端有用,如果退出終端或者打開新的終端 $DISPLAY 的值就沒了,所以要放在 .bashrc 中。當然用其他永久設置環境的方法也是可以的。
總結
以上是生活随笔為你收集整理的wsl使用可视化界面_通过 VcXsrv 在 WSL2 上使用图形化界面(xfce4)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么叫缺位_一位父亲能够给予孩子的最好礼
- 下一篇: c++二进制文件java读取int_吃透