linux目前主要是作为服务器,它的桌面还是不行,目前有如下问题:
- 输入系统碎片化: libinput/evdev
- 显示服务器问题很多: X11有安全漏洞,Wayland不够稳定
- 包管理工具不统一,而且包管理工具不支持隔离沙箱能力,这就导致了:
- 使用包管理工具卸载软件时容易卸载掉多个软件共同依赖的软件包
- 无法解决多个软件依赖同一个包的不同版本的问题
- 像apt、yum、firewalld等依赖python,一旦升级了python版本,或者卸载了python,就会导致系统异常。
虽然linux桌面一言难尽,但是这不影响linux作为自己的主操作系统,因为linux中运行windows或者mac的虚拟机性能损耗极低,但是windows或者mac中运行linux虚拟机性能损耗极大。
概念:
- opengl/vulkan: 定义如何绘制三角形、纹理、光照等,但不关心图像如何显示到屏幕。
- 开源实现: dioxus->wgpu->[vulkan/opengl前端,例如ash和glow和mesa3d前端api]->[vulkan/opengl后端,例如mesa3d后端api]->mesa3d驱动->gpu硬件
- mesa3d驱动:硬件驱动模块(如 Intel i965、AMD RadeonSI)
- mesa3d-api:OpenGL/Vulkan API 的底层实现,包括前端实现,和后端实现。
- X11/Wayland: 决定窗口如何排列、输入如何传递,以及最终图像如何呈现给用户。
X11为何被诟病
X11采用客户端-服务器模型,应用程序(客户端)需通过X服务器中转图形渲染和输入事件,导致额外的通信开销。
X11早期强调远程图形显示,但现代场景更多依赖本地高性能渲染,其网络支持反而成为负担。
Wayland相对于古老的X11来说最大的提升是,Gtk/Qt 这些图形库进行图形绘制时,不用像X11那样发送绘制消息到XServer来进行绘制,而是由Client自己进行图形绘制,Wayland只用担任图层混合器的作用。
这样不但减少了X Client和X Server之间不必要的通讯,而且因为由Client自己进行渲染,所以很多画面撕裂和闪屏的现象从原理上就避免了。
X11和VNC的区别
X11: 基于X Window System协议(第11版),采用客户端-服务器模型
- X Server运行在本地,负责管理显示硬件和输入设备
- X Client运行在远程,处理应用程序逻辑
- 通过SSH隧道(X11 Forwarding)实现加密传输,仅传输图形指令(如绘图命令),而非完整屏幕图像,因此带宽占用较低
VNC: 基于RFB(Remote FrameBuffer)协议,传输的是屏幕像素级截图。
- VNC Server运行在远程机器上,直接捕获桌面画面并压缩后发送给客户端
- 提供完整的远程桌面环境,用户操作如同直接控制远程主机
gnome为何被诟病
GNOME 3 的插件(扩展)主要基于 JavaScript 和 GJS(GNOME JavaScript 引擎),通过修改 GNOME Shell 的运行时对象(如 MetaWindow、St 等)来实现功能。
GNOME 3 早期版本的官方扩展 API 功能有限,许多高级定制(如修改工作区行为、调整窗口动画)只能通过直接操作内部对象实现。
GNOME Shell 每次升级可能重构内部对象(如重命名属性或调整继承关系),导致依赖这些属性的插件崩溃。
根本问题是 API功能有限,并且没有限制对GNOME Shell 的运行时对象的访问。
不通过插件API接口,而是通过对象的属性来编写的插件,导致只要 Gnome3 的核心代码一改变,或者属性链中的任一一个变量发生了变化,Gnome3插件就失效了。
本文发表于 0001-01-01,最后修改于 0001-01-01。
本站永久域名「 jiavvc.top 」,也可搜索「 后浪笔记一零二四 」找到我。