翻譯|行業(yè)資訊|編輯:龔雪|2023-11-15 10:50:37.947|閱讀 90 次
概述:對于IntelliJ IDE的 Linux 用戶來說,對Wayland顯示服務(wù)器協(xié)議的支持無意是一個利好消息!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
對于基于IntelliJ IDE的Linux用戶來說,一項令人期待的進步即將到來 – 對 Wayland 顯示服務(wù)器協(xié)議的支持。 這項更新將帶來許多好處,包括解決古老的分數(shù)縮放問題以及在與適用于 Linux 的 Windows 子系統(tǒng) (WSLg)(在底層運行 Wayland 服務(wù)器)一起使用時提升桌面集成。雖然 Wayland 支持還遠未完成,但現(xiàn)有功能已可供在 Wayland 上運行一些 Java Swing 和 AWT 應(yīng)用程序。
在本文中,我們將深入研究這些進步,并探討這種新穎的顯示服務(wù)器方式帶來的一些技術(shù)挑戰(zhàn)。
Jetbrains技術(shù)交流群(QQ):786598704 歡迎一起進群討論
Wayland是一種現(xiàn)代顯示服務(wù)器協(xié)議,旨在為圖形環(huán)境提供更高效、更安全、適應(yīng)性更強的架構(gòu)來取代X Window系統(tǒng)。 它在許多重要領(lǐng)域帶來新的范式,例如:
XWayland 為不(尚未)直接與 Wayland 通信的圖形應(yīng)用程序提供了一條過渡路徑,XWayland 是在 Wayland 會話之上運行的 X11 實現(xiàn),這是所有 Java 應(yīng)用程序(包括所有 JetBrains 基于 IntelliJ 的 IDE)顯示 UI 并獲取鼠標和鍵盤輸入的方式。
拖放、窗口切換和彈出菜單存在問題,例如,無法在窗口范圍之外截圖, 部分問題甚至可以在 XWayland 框架內(nèi)得到解決(有些問題實際上在最新 OpenJDK 中得到了解決)。
也許 XWayland 最緊迫的問題是縮放, 啟用分數(shù)縮放后,“遺留”X11 應(yīng)用程序渲染低于顯示器的分辨率,然后由 Wayland 放大,這會使任何文本都明顯模糊。 原因是應(yīng)用程序沒有任何方法可以告訴 X 服務(wù)器它是“HiDPI 感知型”應(yīng)用程序,因此服務(wù)器必須假設(shè)最壞的情況,并通過縮放窗口像素來提供“幫助”。 不過Wayland 確實能夠告訴服務(wù)器窗口的縮放比例,因此只要切換到使用 Wayland,這就不再是問題。
然而使 Java 對 Wayland 原生化說起來容易做起來難,就 JDK 而言,這相當于創(chuàng)建一個新的 Toolkit,它幾乎是與 GUI 相關(guān)的所有內(nèi)容的發(fā)源地。這包括圖形、鼠標指針處理、按鍵轉(zhuǎn)換、啟動屏幕顯示和輸入方法提供 – 這些都必須從頭開始實現(xiàn)。例如,X11 工具包大約有 50,000 行 Java 和 20,000 行原生代碼,其中只有一小部分可以在 Wayland 中重用。
從非常概括的角度來看,任務(wù)非常簡單:API (Wayland) 和另一個 API (Java) 需要互相轉(zhuǎn)換。 Wayland 有 wl_keyboard:event:key 用于按鍵,Java 有 KeyEvent。 Java 有 SurfaceData 類來存儲窗口的像素,Wayland 有 wl_buffer等,不過這些 API 的詳細信息有很大不同。舉個簡單的例子,長時間按下一個鍵時,Wayland 服務(wù)器不會生成個別鍵盤事件,您只會得到一個。 然而在這種情況下,Java 桌面子系統(tǒng)的其余部分期望定期接收 KeyEvent 報告,并且工具包有責任做出此類安排。
從積極的一面來看,并不是要先實現(xiàn)所有東西才能啟動一個簡單的程序, 例如Swing 應(yīng)用程序不依賴于 AWT UI 元素。這讓您能夠靈活確定優(yōu)先級,首先交付重要的功能,將其他功能留給以后。
另一個幸運之處在于 Java 圖形子系統(tǒng)的巧妙設(shè)計,它從不依賴于 X11 繪圖基元。 這使得在 Wayland 上快速運行基于軟件的渲染成為可能,并且?guī)缀醪恍枰薷钠脚_無關(guān)的通用代碼。
Wayland 工具包的開發(fā)始于與 Oracle 桌面團隊的共同工作 ,代碼基于 。 截至 2023 年 8 月,工具包提供:
未來幾個月的當務(wù)之急是:
更詳細的進度報告可參見項目的 wiki:(定期更新)。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)