日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Cygwin系列(十三):折騰X | silaoA的博客

 看見(jiàn)就非常 2022-02-24

本文共2000余字,預(yù)計(jì)閱讀時(shí)間8分鐘,本文同步發(fā)布于知乎專(zhuān)欄和微信公眾號(hào)平臺(tái)。
關(guān)注學(xué)習(xí)了解更多的Cygwin、Linux技術(shù)。

本篇因各種各樣的事情拖了好久。

大多數(shù)情況下,我們用Linux系統(tǒng),是為了發(fā)揮命令行程序高效的威力,通過(guò)終端遠(yuǎn)程連接過(guò)去,一個(gè)黑框框里干完所有的活。但是,偶爾也需要運(yùn)行一下圖形界面程序,比如Web瀏覽器、Oracle安裝程序等。而Linux系統(tǒng)主機(jī)通常做服務(wù)用,不會(huì)在圖形支持方面堆很高的配置,這時(shí)我們可以利用X11的特性,在遠(yuǎn)端(Linux主機(jī))運(yùn)行X Client,但讓安裝了X Server的本地主機(jī)(如Windows主機(jī))負(fù)責(zé)顯示程序界面和交互。

Windows上的X Server

本文就是要在本地Windows主機(jī)上折騰一下X Window System。Windows自身的圖形界面是內(nèi)核不可分割的一部分,其實(shí)現(xiàn)不遵從X規(guī)范,X規(guī)范也主要面向UNIX、Linux等符合POSIX標(biāo)準(zhǔn)的系統(tǒng)。那么在Windows上怎么用上X Window System,尤其最關(guān)鍵的X Server?基于XFree86、X.Org Server,有開(kāi)發(fā)者將其移植到了Windows系統(tǒng)中,比較有影響力的有Cygwin/XXming、vcXsrvMobaXterm、Xmanager等。

Cygwin/X

Cygwin/X是整個(gè)Cygwin項(xiàng)目的一部分,是X Window System在Windows系統(tǒng)上的移植實(shí)現(xiàn),自由開(kāi)源,初期基于XFree86,后來(lái)也換到X.Org ServerCygwin/X在Cygwin環(huán)境中構(gòu)建,依賴(lài)Cygwin項(xiàng)目的UNIX模擬層(cygwin1.dll)而運(yùn)行。
Cygwin/X中的X Server名為XWin。

本文刻意將X Client和X Server分散在兩套系統(tǒng)中,不打算用Cygwin/X。

Xming

Xming基于Cygwin/X,最重要的區(qū)別是它用MinGW交叉工具鏈重新構(gòu)建,可以“原生”地運(yùn)行于Windows系統(tǒng)中,脫離了對(duì)Cygwin項(xiàng)目的UNIX模擬層(cygwin1.dll)的依賴(lài),全稱(chēng)叫“Xming X Server for Windows”。Xming舊版本采用GPL授權(quán),代碼托管地址 https:///projects/xming上,最近為2016年8月發(fā)布的6.9.0.31,新的版本已停止GPL授權(quán)。新版的主頁(yè) http://www./XmingNotes,是一個(gè)開(kāi)發(fā)者個(gè)人網(wǎng)站,作者期望給予項(xiàng)目捐贈(zèng)才允許下載新版本。

Xming十分小巧,完全安裝也僅占約9MB空間。
xming界面xming界面

vcXsrv

vcXsrv基于X.Org Server,另有說(shuō)法是基于Xming的老版本,因Xming新版本已停止GPL授權(quán),vcXsrv圖標(biāo)及關(guān)閉提示等多處與Xming相同。vcXsrv最大特點(diǎn)是,它是切換到Windows本地使用Visual C++ 或 Visual Studio構(gòu)建,自由開(kāi)源,開(kāi)發(fā)活躍,代碼托管地址 https:///projects/vcxsrv。

vcXsrv全部安裝約占71MB空間,還包含了xcalc、xclock 2個(gè)經(jīng)典的X客戶(hù)端程序。vcXsrv配置文件名為.XWinrc,看起來(lái)與Xming、Cygwin/X聯(lián)系密切。
vcxsrv界面vcxsrv界面

MobaXterm

MobaXterm字面意思是一個(gè)圖形化的ssh客戶(hù)端,支持多標(biāo)簽頁(yè),事實(shí)上它還集成了一個(gè)X Server(基于X.Org Server),同時(shí)還集成了精簡(jiǎn)的Cygwin環(huán)境和基本的命令程序。MobaXterm為商業(yè)軟件,Home Edition不收費(fèi),Professional Edition收費(fèi),詳見(jiàn)https://mobaxterm.

Xmanager

Xmanager是Xmanager公司多個(gè)軟件產(chǎn)品的合集,包括Xshell、XftpXmanager PCX Server等,其中Xmanager PCX Server為Windows平臺(tái)的一個(gè)X Server,為商業(yè)軟件,詳見(jiàn)http://www.

介紹了這么多Windows平臺(tái)的X Server,本文覺(jué)得選擇輕量、開(kāi)源的Xming試玩。

試玩Xming

step1:開(kāi)啟 Xming Server

Xming附帶了一個(gè)XLaunch指引程序,用于簡(jiǎn)化啟用Xming過(guò)程,說(shuō)白了就是通過(guò)圖形界面指引讓用戶(hù)省掉了記憶各種參數(shù)選項(xiàng)用法。基本上按照默認(rèn)選下一步即可,最后一步可以把配置保存起來(lái)。
選擇窗口模式——多窗口選擇窗口模式——多窗口
選擇啟動(dòng)方式——不需要啟動(dòng)X Client選擇啟動(dòng)方式——不需要啟動(dòng)X Client
附加配置附加配置
完成配置并保存完成配置并保存

最終的效果,和下面的命令等效。

1
D:\Program Files (x86)\Xming\Xming.exe :0 -clipboard -multiwindow

step2:?jiǎn)?dòng)X Client

Cygwin中X11應(yīng)用程序很多,以最簡(jiǎn)單的示例程序xeyes為例。首先需要通過(guò)Cygwin的包管理器setup程序或者apt-cyg命令安裝xeyes,安裝過(guò)程可以參考Cygwin系列(七):Cygwin軟件包管理相關(guān)配置Cygwin系列(八):命令行軟件包管理器apt-cyg
Cygwin軟件倉(cāng)庫(kù)擁有大量X11軟件包Cygwin軟件倉(cāng)庫(kù)擁有大量X11軟件包

接下來(lái),開(kāi)啟終端連到Cygwin shell,運(yùn)行xeyes,毫不意外地,出。。。錯(cuò)。。。了。。。這是因?yàn)椋?code>xeyes并不知道負(fù)責(zé)顯示的X Server在哪里,這需要用戶(hù)指定,看下一步。

1
2
$ xeyes
Error: cannot open display

step3:配置X應(yīng)用程序

這一步就是要告知X應(yīng)用程序,負(fù)責(zé)顯示的X Server在哪里。老規(guī)矩先看xeyes程序用法,發(fā)現(xiàn)第一個(gè)選項(xiàng)-display就是指定X Server的顯示器(display就湊合著這么翻譯吧),其他還一些選項(xiàng)比如程序界面尺寸、前景色/背景色啥的。

1
2
3
4
5
6
7
8
9
$ xeyes --help
usage: xeyes
[-display [{host}]:[{vs}]]
[-geometry [{width}][x{height}][{+-}{xoff}[{+-}{yoff}]]]
[-fg {color}] [-bg {color}] [-bd {color}] [-bw {pixels}]
[-shape | +shape] [-outline {color}] [-center {color}]
[-backing {backing-store}] [-distance]
[-render | +render]
[-present | +present]

-display選項(xiàng)值由兩部分組成,中間是冒號(hào)隔開(kāi):

  • host,X Server所在的主機(jī)名或IP地址,與X Client屬同一個(gè)主機(jī)的話可為空;
  • vs,顯示器序號(hào)及屏幕序號(hào),前面啟動(dòng)Xming時(shí)配置了顯示器序號(hào)為0,一個(gè)顯示器可能存在多個(gè)屏幕,但通常只有一個(gè)屏幕,屏幕序號(hào)為0,故vs的值為0.0。
    再看xeyes -display :0.0效果,成功。鼠標(biāo)移動(dòng),一對(duì)眼睛跟著轉(zhuǎn)動(dòng)。
    xeyes -display :0.0xeyes -display :0.0

程序那么多,如果運(yùn)行每個(gè)X Client程序都寫(xiě)這么長(zhǎng)的命令有點(diǎn)麻煩。好在shell支持DISPLAY環(huán)境變量,和上邊-display選項(xiàng)意義一致。如果定義了DISPLAY環(huán)境變量,-display選項(xiàng)就可以跳過(guò)了。在.bashrc中寫(xiě)入如下一行,定義DISPLAY環(huán)境變量,重啟Cygwin shell。

1
2
export DISPLAY=:0.0 
# export DISPLAY=localhost:0.0 # 等效

這次運(yùn)行xeyes不加任何參數(shù),效果如下。
xeyes顯示界面xeyes顯示界面

其他話題:X11轉(zhuǎn)發(fā)

X Client和X Server的直接通信是不加密的,我們通過(guò)終端經(jīng)由ssh遠(yuǎn)程登錄Linux主機(jī)時(shí),可以順手利用ssh的X11轉(zhuǎn)發(fā)(X11 Forwarding)功能,可以減小對(duì)配置的修改,也使得運(yùn)行X Client程序更加安全。遠(yuǎn)端主機(jī)上X Client程序的繪圖請(qǐng)求數(shù)據(jù),也會(huì)被ssh服務(wù)器一并轉(zhuǎn)發(fā)回來(lái),ssh客戶(hù)端根據(jù)配置的顯示器,再交給指定的X Server處理。遠(yuǎn)端主機(jī)并不需要定義或修改DISPLAY環(huán)境變量,盡可能降低對(duì)其他用戶(hù)、其他程序的影響。

在ssh客戶(hù)端和服務(wù)端,均需要設(shè)置“X11Forwarding yes”,ssh客戶(hù)端還需要指定 x display,同遠(yuǎn)端主機(jī)DISPLAY環(huán)境變量意義一致。圖形界面的ssh客戶(hù)端,設(shè)置操作更為簡(jiǎn)單。
putty中設(shè)置X11轉(zhuǎn)發(fā)putty中設(shè)置X11轉(zhuǎn)發(fā)

總結(jié)

xeyes程序跑通了以后,Cygwin中其他X應(yīng)用程序都是一樣的過(guò)程,WSL2中的X應(yīng)用程序也可以和Xming配合著跑,甚至把GTK、KDE這樣的桌面環(huán)境也可以都跑起來(lái)。WSLg更進(jìn)一步,專(zhuān)門(mén)做了一套“WSLg System Distro”專(zhuān)門(mén)跑X Server,把X應(yīng)用程序的圖形窗口“無(wú)縫”地集成到Windows桌面環(huán)境,詳見(jiàn)WSLg:為WSL增光添彩。

參考

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多