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