by Devin Yang , 5 years ago

前言

今天來跟大家談談X,不是iPhone X,也不是X戰警哦 ,而是X Window System,
他是目前Linux系統主要的圖形化界面顯示元件。
由於他非常易於擴充及模組化,打從1986年建立,就一直使用至今。
X Window系統採用為Client / Server的架構,他把應用程式顯示拆分為兩個部份,
X Windows的應用程式通常我們稱為X Client,而顯示則是大家所熟知的X Server
X client與X server透過X協定(X protocol)溝通, 這是一個異步的網路通訊協定。

因為X protocol把作業系統個別特有的細項及硬體給隱藏了,
也就是說X Clinet可以在任何的作業系統上執行,並且顯示於另一台執行X Server的作業系統上。

即使在同一台電腦上,X Clients 及 X Server 也都依然使用X protocol(X協定)進行溝通。不過這裡並非使用TCP/IP,
取而代之是使用一個極高速的Unix domain socket。通常就是這個/tmp/.X11-unix/X0的socket檔。

本文的影片中,我將執行Linux上的X Client應用程式,並顯示於Mac Os上。

X Security (關於安全)

要顯示一個X client在一台遠端的主機上,這個server必需要授權給你的station。
我們可以透過xhost或xauth進行。
Host-based: 主機安全會使用xhost指令。
User-based: Xauthority使用每個使用者家目錄下的.xauthority設定。

下方這個影片中,我將介紹如執行Container內的X client,經由socket,將畫面顯示於我們的Mac OS主機上,
另外也會操作透過ssh公鑰驗證的方式,加上-Y參數,啟動X11轉發,
將遠端的X client執行結果,用圖形化方式,顯示在我們自己的Mac OS上。

由於Mac OS Leopard版之後,Apple已不在內建X11,要求大家使用open source的XQuartz,
所以如果您想在Mac OS上,顯示X client的畫面,記得先安裝Mac OS專用的X11 server:
https://www.xquartz.org/index.html

實際影片Demo:


Docker GUI環境簡易測試(2021 update):
#直接停用access control
xhost +

#一行搞定
X=/tmp/.X11-unix/X0 \
docker run --rm  -v $X:$X -e DISPLAY=host.docker.internal:0 -ti fedora bash

#直接安裝個xeyes測試
yum install -y xeyes

#然後執行xeyes,您的電腦應該就能看到眼睛了。

Tags: linux docker

Devin Yang

有什麼建議或想法,歡迎提出來哦

No Comment

Post your comment

Login is required to leave comments

Similar Stories


cwebp

加速網站載入速度cwebp轉圖

我的網站中有很多背景圖下載下來太大了,需要瘦身,這工具不錯。在ubunut的環境apt install webp就可以安裝囉。

laravel

如何使用Laravel的Validator自訂錯誤訊息

我們通常開發Laravel時,有時會進行欄位驗證,但使用Validator預設的訊息是英文的。 但當然想要有更精確顯示中文訊息顯示, 本文介紹,我如何使用Laravel的Validator自訂中文的訊息。

Laravel linux

我的行動電腦,安裝Laravel 8在Sony xperia 5 II上

這是我的第一隻Android手機,試裝Laravel完全沒問題耶,基本上我裝了vim及mariadb。 執行sshd後,可以透過8022登入哦,完全是一台行動電腦了:p。 我使用的軟體是Termux...