文章摘要
Phoenix是一个用Zig语言从头编写的现代X服务器,旨在替代Xorg服务器。目前处于开发阶段,仅支持嵌套运行简单图形应用。其目标是简化X11协议,仅支持现代应用和硬件,并通过Zig语言特性提升安全性,默认隔离应用间的交互。
文章总结
凤凰X服务器:用Zig语言重写的现代X11服务端
项目概述
Phoenix是一个用Zig语言从零开发的X服务器(非Xorg分支),旨在为Xorg提供现代化替代方案。该项目目前处于开发阶段,支持在现有X服务器中以嵌套模式运行支持GLX/EGL/Vulkan的应用程序。
核心目标
精简架构:
- 仅支持近20年现代应用所需的X11协议子集
- 仅兼容近15年支持Linux DRM/Mesa GBM的硬件
- 采用类似Wayland合成器的工作模式
安全增强:
- 自动解析协议消息
- 利用Zig语言的
ReleaseSafe选项捕获越界等非法行为 - 默认应用隔离机制,需授权才能跨应用交互
- 全局快捷键需配合修饰键使用
现代技术支持:
- 多显示器独立刷新率/VRR支持
- HDR显示技术
- 默认启用无撕裂的内建合成器
协议扩展:
- 开发新标准(如每显示器DPI属性)
- 按需扩展X11协议(如HDR支持)
- 未来可能原生支持Wayland或通过桥接方案兼容
技术特性
- 字符串编码:默认使用UTF-8(原X11协议使用ISO Latin-1)
- 嵌套支持:可在X11/Wayland下硬件加速运行,便于调试开发
- 图形处理:合成器可根据外置合成器/全屏应用自动禁用
非目标范畴
- 不追求完全替代Xorg(保留对旧协议/硬件的支持)
- 不支持多X11屏幕(但支持多显示器)
- 不实现GrabServer功能
- 暂不支持字节序交换的客户端/服务端
- 不提供间接GLX远程渲染
构建安装
```bash
安装
zig build -Doptimize=ReleaseSafe sudo zig build install -p /usr/local -Doptimize=ReleaseSafe
开发构建
zig build # 生成debug版本 zig build run # 构建并运行
协议文档生成
zig build -Dgenerate-docs=true ```
依赖环境
- Zig 0.14.1
- 嵌套模式依赖:xcb(X11)、wayland-client/wayland-egl(Wayland)
- 独立运行依赖:libdrm/gbm(暂未支持)
- 图形支持:libglvnd(OpenGL/EGL)
(注:原文中关于卸载方式、协议差异等次要细节已适当精简,保留了核心技术特性和项目目标)
评论总结
以下是评论内容的总结:
关于项目定位与兼容性
- 有评论质疑项目放弃X11绘图操作和XRender支持的意义(评论5):
"If you are not going to implement X11 drawing ops and XRender... what's even the point?"
"Any 'modern' program that only does client-side rendering already supports Wayland." - 也有观点认为这种"类Wayland"的X服务器设计合理(评论6):
"Pretty interesting approach to make an X server that is essentially 'Wayland-like'"
"a fairly reasonable set of choices"
- 有评论质疑项目放弃X11绘图操作和XRender支持的意义(评论5):
与其他项目的关系
- 被拿来与XLibre(X11活跃分支)比较(评论3):
"XLibre is trying to advance the existing implementation... whereas Phoenix is writing a new server from scratch" - 有用户提到Zig语言的X11客户端库zigx(评论9):
"Compared to libX11, it avoids dynamic dependencies, uses less memory"
- 被拿来与XLibre(X11活跃分支)比较(评论3):
功能需求讨论
- 多显示器支持被列为非目标引发担忧(评论8):
"Would that prevent its usage with window managers which support virtual desktops?" - 关于垂直同步与合成器的技术讨论(评论1):
"why would vsync being enabled mean that the desktop compositor needs to stick around"
- 多显示器支持被列为非目标引发担忧(评论8):
命名混淆问题
- 有用户指出项目名称易产生歧义(评论4):
"First my mind went to Phoenix (elixir framework), then to X (twitter)"
- 有用户指出项目名称易产生歧义(评论4):
社区反响
- 支持者认为这是X11现代化的正确方向(评论10/7):
"I’d prefer to see from X preservationists"(评论10)
"An X11 rewrite with some security baked in is an awesome approach"(评论7) - 也有幽默回应(评论11):
"It's christmas and not april fools!"
- 支持者认为这是X11现代化的正确方向(评论10/7):
开发细节
- 关于Zig构建模式的说明(评论12):
"the author of Phoenix wants to choose ReleaseSafe as the official release mode"
- 关于Zig构建模式的说明(评论12):
(注:所有评论均无评分信息,因此未体现认可度差异)