Wayland 是一个开源软件产品,它是从头开始设计的,用作X Window系统的直接替代品,目前在所有Linux中占99.9%。基于操作系统。
该项目包括名为Wayland的主显示服务器,以及名为Weston的合成器。虽然Wayland本身并不是一个X11服务器,但它已被设计为一个合成器协议,以便与像Weston这样可以作为X客户端运行的客户交谈。
Wayland可以作为独立的显示服务器运行在KMS(内核模式设置)和evdev输入设备之上,作为Wayland客户端,或作为X Window系统的传统应用程序运行。此外,Weston可以在KMS下运行,也可以作为X11客户端运行,适用于移动或嵌入式设备。
这款突破性的下一代显示服务器的其他可能客户端可以是另一台显示服务器,X11服务器(全屏或无根)或任何其他标准应用程序。还可以使用Wayland的C库实现。
虽然Wayland为显示服务器提供了正常运行所需的所有组件,但Weston compositor带有各种演示客户端,可供开发人员用作构建复杂客户端的示例。
众所周知且广泛使用的GNOME和KDE等离子桌面环境很可能是第一个被移植到下一代Wayland显示服务器的环境。但是,所有Linux应用程序开发人员可能需要几年时间才能将其应用程序迁移(读取:端口)到Wayland。
Linux发行版和应用程序开发人员可以在项目主页上找到有关如何将其应用程序和操作系统移植到Wayland的详细文档(参见上文)。最终用户今天可以使用基于RebeccaBlackOS Linux的操作系统测试Wayland。
此版本中的新功能:
- 核心协议文档已经收到了许多改进,以提高其清晰度和一致性。与此同时,协议文档的许多空白区域已经充实。
- 新的wl_display_add_protocol记录器API提供了一种新的交互方式来调试请求;这是用于检查客户端及其资源的新API。这类似于使用WAYLAND_DEBUG = 1,但更强大,因为它允许运行时查看日志数据,例如通过UI视图。
- 协议XML扫描程序如何处理协议标头中的版本标识已有所改进。当合成器和客户端支持不同版本的协议时,这可以实现更好的检测和回退处理。
- 除了这些用户可见的更改外,Wayland 1.12还进行了各种其他代码重构和改进。
- Weston的内部代码已经重组为一个新的软件库libweston。这旨在供其他想要更轻松地利用Weston内部功能的合成者努力使用。 Weston自己的合成器现在是这个库的用户。
- 同样,另一个名为libweston-desktop的新库提供了与实现桌面隐喻风格的图形界面的合成器相关的附加功能。此库API是围绕xdg_shell功能设计的,用于处理弹出窗口,窗口状态以及与Xwayland的接口。
- libweston和libweston-desktop都应该被视为不稳定的库(即它们的API可能会发生变化)。已采用版本控制方案进行ABI供应,以实现中断的编译时检测。换句话说,这使用户能够在安装时检测其包装系统中的不兼容性,而不是在他们尝试实际使用该软件时。该系统不仅可以帮助发布Weston组件,还可以在使用库的开发快照时标记不一致,帮助开发人员避免因不一致而导致的问题。
- 在Weston合成器中实现了对xdg_shell协议的新版本6的支持,并且所有客户端都移植到它。有关所包含更改的详细信息,请参阅wayland-protocols 1.7发行说明。
- 使用wp_pointer_constraints协议为Weston实现指针锁定和限制API,以允许客户端定义窗口区域以限制指针。这些地区可能是不规则的;例如,包括客户以证明对H形区域的限制。还引入了一个相对指针协议(使用wl_relative_pointer),它允许客户端继续接收指针移动增量,即使指针的绝对位置被剪切到例如监视器的边缘。
- Raspberry Pi后端(rpi-backend)和渲染器已被删除。此代码依赖于专有的驱动程序堆栈,并证明在Weston中无法维护。
- 包括其他一些功能,构建改进,错误修复,代码重构,销毁过程的改进等。
版本中的新功能:
- 核心协议文档已经收到许多改进,以提高其清晰度和一致性。与此同时,协议文档的许多空白区域已经充实。
- 新的wl_display_add_protocol记录器API提供了一种新的交互方式来调试请求;这是用于检查客户端及其资源的新API。这类似于使用WAYLAND_DEBUG = 1,但更强大,因为它允许运行时查看日志数据,例如通过UI视图。
- 协议XML扫描程序如何处理协议标头中的版本标识已有所改进。当合成器和客户端支持不同版本的协议时,这可以实现更好的检测和回退处理。
- 除了这些用户可见的更改外,Wayland 1.12还进行了各种其他代码重构和改进。
- Weston的内部代码已经重组为一个新的软件库libweston。这旨在供其他想要更轻松地利用Weston内部功能的合成者努力使用。 Weston自己的合成器现在是这个库的用户。
- 同样,另一个名为libweston-desktop的新库提供了与实现桌面隐喻风格的图形界面的合成器相关的附加功能。此库API是围绕xdg_shell功能设计的,用于处理弹出窗口,窗口状态以及与Xwayland的接口。
- libweston和libweston-desktop都应该被视为不稳定的库(即它们的API可能会发生变化)。已采用版本控制方案进行ABI供应,以实现中断的编译时检测。换句话说,这使用户能够在安装时检测其包装系统中的不兼容性,而不是在他们尝试实际使用该软件时。该系统不仅可以帮助发布Weston组件,还可以在使用库的开发快照时标记不一致,帮助开发人员避免因不一致而导致的问题。
- 在Weston合成器中实现了对xdg_shell协议的新版本6的支持,并且所有客户端都移植到它。有关所包含更改的详细信息,请参阅wayland-protocols 1.7发行说明。
- 使用wp_pointer_constraints协议为Weston实现指针锁定和限制API,以允许客户端定义窗口区域以限制指针。这些地区可能是不规则的;例如,包括客户以证明对H形区域的限制。还引入了一个相对指针协议(使用wl_relative_pointer),它允许客户端继续接收指针移动增量,即使指针的绝对位置被剪切到例如监视器的边缘。
- Raspberry Pi后端(rpi-backend)和渲染器已被删除。此代码依赖于专有的驱动程序堆栈,并证明在Weston中无法维护。
- 包括其他一些功能,构建改进,错误修复,代码重构,销毁过程的改进等。
版本1.9.0中的新功能:
- Bryce Harrington(20):
- configure.ac:bump version to 1.8.90
- 复制:更新为MIT Expat许可证而非MIT X许可证
- 贡献:指定使用MIT Expat获取新代码文件
- 测试:将样板从MIT X11许可证更新为MIT Expat许可证
- socket-test:修复多行注释风格
- test-runner:为.h添加版权样板,与.c 相同
- src:将样板从MIT X11许可证更新为MIT Expat许可证
- wayland-server:修复多行注释风格
- protocol:将样板从MIT X11许可证更新为MIT Expat许可证
- cursor:将样板从MIT X11许可证更新为MIT Expat许可证
- cursor-data.h:将SuSE许可代码从X11更改为Expat
- xcursor:将keithp许可代码从X11更改为Expat许可证
- publican:将麻省理工学院“X11”的文档许可证更新为MIT“Expat”样式
- cursor:将打印的许可证从MIT“X11”更新为MIT“Expat”
- tests:不要在assert() 中增加变量
- gitignore:忽略一些dist生成的文件
- configure.ac:使用版本1.8.91获取alpha版本
- configure.ac:针对测试版发布到版本1.8.92
- configure.ac:RC1版本的版本1.8.93版本
- configure.ac:正式版本升级至1.9.0版
- Derek Foreman(9):
- docs:删除并忽略doc / doxygen_sqlite3.db
- build:将AM_CFLAGS和AM_CPPFLAGS移到Makefile.am的顶部
- build:停止将FFI_CFLAGS置于AM_CFLAGS
- build:允许禁用Wayland库的构建
- build:在不构建库时构建libwayland_util的子集
- build:除非我们正在构建库,否则不要依赖于libffi
- build:在所有地方使用AM_CFLAGS而不是GCC_CFLAGS
- 化妆品:event-loop.c中的免费空白更改
- build:Build libwayland-private
- Dima Ryazanov(1):
- client:要求设置WAYLAND_DISPLAY
- Elvis Lee(1):
- wayland-client:修复queue_release不要调用proxy_destroy
- Marek Chalupa(5):
- fixed-benchmark:删除main 中未使用的参数
- scanner:重构创建对象
- 扫描仪:摆脱泄漏
- scanner:使用zxalloc
- scanner:检查版本的完整性
- Pekka Paalanen(1):
- 还原“客户端:要求设置WAYLAND_DISPLAY”
- Peter Hutterer(2):
- doc:将项目特定的doxygen设置移动到doxygen文件的末尾
- doc:删除默认的doxygen标签
- Ross Burton(1):
- 构建:始终构建wayland-scanner
版本1.8.1中的新功能:
- Bryce Harrington(2):
- publish-doc:将用于发布文档的脚本添加到网站
- configure.ac:正式版本升级至1.8.0版
- Giulio Camuffo(1):
- scanner:不发出外部类型的外部声明
- Bill Spitzak(1):
- config:使用简单的regexp语法获取点版本
- Bryce Harrington(11):
- configure.ac:bump version to 1.7.90
- 客户:修复拼写错误
- 拼写修正(化妆品)
- 测试:评论中的错误
- configure.ac:针对alpha版本推出版本1.7.91
- configure.ac:RC1版本的版本1.7.92
- gitignore:忽略最近添加的header-test
- gitignore:批量忽略所有* -test文件
- configure.ac:RC2版本的版本1.7.93版本
- publish-doc:将用于发布文档的脚本添加到网站
- configure.ac:正式版本升级至1.8.0版
- Derek Foreman(1):
- cursor:添加wl_cursor_frame_and_duration
- Emmanuel Gil Peyrot(1):
- cursor:释放图像链接的数组
- Giulio Camuffo(5):
- 引入新标题wayland-client-core.h和wayland-server-core.h
- wayland-egl:添加核心标题
- scanner:添加新的--include-core-only选项
- 测试:添加标题测试
- scanner:不发出外部类型的外部声明
- 硬化(1):
- wayland.xml:修正了拼写错误
- Jonas Adahl(2):
- 协议:更改地下放置计划的措辞
- scanner:空枚举失败
- Jussi Pakkanen(1):
- 添加对在wayland-scanner中直接读取和写入文件的支持。
- Marek Chalupa(2):
- 服务器:提供更准确的错误消息
- 协议:添加更好的描述wl_pointer.release
- Michael Vetter(1):
- 删除尾随空格
- Pekka Paalanen(1):
- scanner:简化getopt逻辑
版本1.7.0 / 1.8.0 RC2中
什么是新:
- 韦兰:
- gitignore:忽略最近添加的header-test
- gitignore:批量忽略所有* -test文件
- configure.ac:RC2版本的版本1.7.93版本
- 测试:添加标题测试
- 韦斯顿:
- release:列出一些为本地libinput设置的lib路径
- 释放:untabify
- configure:警告cairo-gl和cairo-glesv2存在风险
- compositor-drm:minor sp。修复
- 编辑:写入失败时发出警告
- 测试:添加系统调用的错误处理
- tests:为输出和引用文件名添加客户端帮助程序例程
- 测试:添加xmalloc帮助函数
- 测试:添加表面检查
- 测试:支持--config以启用测试以覆盖配置默认值
- 协议:添加测试屏幕截图功能
- 测试:为weston-test添加屏幕截图记录功能
- 测试:在weston-test中处理截图完成事件
- 测试:为weston测试屏幕截图功能添加内部测试
- 测试:添加write_surface_as_png()helper
- 测试:添加create_screenshot_surface()
- 测试:添加load_surface_from_png()
- 测试:添加check_surfaces_geometry()
- 测试:添加capture_screenshot_of_output()
- 测试:修复路径/文件名例程的代码样式
- 测试:检查PNG文件的步幅是否符合我们的内部假设
- 测试:清理空白
- gitignore:忽略生成的标题测试文件
- 测试:丢弃冗余调试输出
- 发布:为版本名称和号码添加vars
- configure.ac:RC2版本的版本1.7.93版本
- compositor-drm:清理尾随空格
- RDP合成器:强制执行证书和密钥
- gl-renderer:在创建函数 中列出可接受的格式
- compositor-drm:将ARGB回退传递给gl创建XRGB格式的函数
- gl-renderer:使错误记录更好
- 测试:设置参考图像环境变量
- tests / internal-screenshot:修复测试,因此它不期望外壳表面
- exposay:如果没有指针,请不要崩溃
- desktop-shell:在淡出后销毁空闲处理程序中的表面
- internal-screenshot-test:让distcheck传递
- compositor-wayland:更优雅地处理窗口关闭事件
- compositor-wayland:代码清理
- xdg-shell:澄清app ID的含义并举例
- xdg-shell:弹出表面和表面吸气剂时的文档错误情况
- xdg-shell:有关ping事件的文档职责
- xdg-shell:记录set_maximized和unsetmaximized requests
- compositor-drm:禁用硬件游标
- desktop-shell:不要用启动“无”黑名单
版本1.7.0中的
新内容:
- Wayland协议可能被认为是“完成”,但这并不意味着没有工作要做。此版本重点关注Wayland文档的重大改进,对测试套件的微小改进,以及代码本身的一些零散错误修正。
- Wayland的开发者文档由三个不同的部分组成。首先是手写的散文,其中包括图表和一切的高级描述。其次是协议文档,它是从协议定义中机械生成的,更像是参考手册。第三是代码文档,它也是由库源代码本身机械生成的。
- 我们已将书面散文从由publican生成到xmlto。 xmlto提供相同的功能,并且可以更广泛地使用。 Publican的优势在于其更好的样式表,但我们将这些样式移植到xmlto上,并在我们使用它时对其进行抛光。开发人员文档中的架构图现在通过graphviz进行机械生成 - 这既改善了它的外观,又使其更容易维护。
- 对于协议文档,定义了最近添加的wl_surface角色概念并给出了几个示例。现在记录了wl_display_destroy和wl_display_add_socket,并澄清了线程的某些方面。它也进行了重组,删除了已弃用的函数并修复了所有验证错误。
- 由于对xslt文件进行了大量的抛光工作,并且对代码注释进行了标记改进,因此自动生成的代码文档现在更漂亮了。
- 协议文档内容收紧:我们删除了长期弃用的函数,隐藏了wl_map等私有功能,并使用他们修改的对象更准确地重新分类了函数。
- 测试和客户端中的许多潜在内存和事件泄漏已被清除,现在测试套件基础结构强制执行泄漏检查。泄漏检查也会添加到示例客户端。
- 现在,测试套件可以设置测试完成的超时时间。可以通过设置环境变量WAYLAND_TEST_NO_TIMEOUTS来关闭超时。为了保持一致性,NO_ASSERT_LEAK_CHECK现在称为WAYLAND_TEST_NO_LEAK_CHECK。连接调试器时,都会禁用超时和泄漏检查。
- 有一个新的C ++编译测试;尽管Wayland和Weston都在C语言中,但我们希望确保Wayland可以与用C ++编写的合成器链接,而不会导致基本的编译失败。
- 除了测试和文档之外,代码库本身也有一些变化。值得注意的是,客户端侦听队列增加到128,允许同时连接多个客户端而不会出现连接拒绝错误。一些跨平台的修复程序,例如带有sendmsg()用法的FreeBSD错误,已得到解决。其余的修复可以改善各个地方的错误检查和处理。
版本1.7.0 RC2中的新功能:
- 韦兰:
- configure.ac:如果pkg-config找不到expat,则回退到旧的检测代码
- doc:填写Surfaces的高级描述
- 测试:当启用Yama LSM时,在完整性测试中修复失败(*超时*)
- test-runner:等待具体的pid
- 韦斯顿:
- 发布:调整文档以更好地匹配实际工作流程
- screenshooter:删除无用的演员
- desktop-shell:删除不必要的类型转换
- compositor-x11:将x11窗口移近空闲处理程序
- xwm:删除weston_wm_destroy 中的create surface listener
- 修复X11合成器中的“后退”,“前进”和其他特殊鼠标按钮。
- xwm:支持最大化xwayland windows
- libinput:只转发第一个和最后一个按下并释放一个按钮
- libinput:只转发第一个和最后一个按键并释放一个键
- desktop-shell:如果在xdg_surface上调用get_xdg_surface则失败
- ivi-shell:在转换中发生多点触摸时发生SEGV
1.6.1版中
什么是新:
- doc:修正了一个拼写错误
- 删除无用的分号
- 自述文件:微小的化妆品改变
- doc:修正语法和拼写错误
- scanner,客户端:使用strtol函数时添加了更多错误检查
- scanner:改进XML解析错误报告
- scanner:删除迷路新行
- client:read_events在错误后返回-1
- 测试:修复内存泄漏
- connection:修复FreeBSD上的sendmsg()
- event-loop.c:对dupfd() 使用正确的操作系统抽象功能
- wayland-server:如果来自客户端的读取给出0长度 ,则中止
- connection:如果侦听器函数为NULL则中止
- doc:为wl_display_destroy和wl_display_add_socket函数添加了API文档
版本1.7.0 Alpha 1中的
新功能:
- doc:标记一些代码示例
- doc:主要使用apply-templates而不是value-of
- doc:将doxygen标签转换为空格
- 连接:在wl_connection_destroy 中保持fd打开
- doc:make代码更改时重建doxygen输出
- doc:保留空格
- doc:保留Doxygen生成的链接
- doc:如果缺少doxygen简要描述,请不要打印破折号
- doc:从doxygen输出中删除了一些不必要的嵌套列表
- doc:在doxygen评论中添加了示例代码周围的代码标记
- v4 doc:对不存在的函数的固定引用
- doc:修正了一个拼写错误
- doc:当引用文本附加到 的主题时删除了引用
- doc:从wl_list代码示例中删除了额外的缩进
- doc:删除了多余的依赖
- doc:删除对wayland对象的重复描述
- doc:fix doxygen-> man命令行
- doc:将libwayland-client和-server拆分为不同的页面
- doc:fix for parallel make
- doc:更容易添加新的doxygen页面
- fixup doc:更容易添加新的doxygen页面
- doc:减少docbook输入的验证错误
- doc:从链接名称 中删除了“interface”一词
- doc:doxygen输出中的每个类都是一个部分
- doc:文档结构和联合以及类
- doc:从doxygen工作制作逐项列表
- 不记录缺席参数。
- configure.ac:alpha版本的版本升级为1.6.91
- 删除无用的分号。
- 自述文件:微小的化妆品改变
- cosmetic:将一些函数返回从int转换为bool
- doc:修正语法和拼写错误
- scanner,客户端:使用strtol函数时添加了更多错误检查
- 服务器:将侦听队列增加到128
- doc:删除了多余的xslt输出元素。
- doc:通过定义的make变量调用doxygen。
- doc:为doxygen 1.6.0 +添加配置检查。
- doc:一般makefile清理。
- doc:Minor makefile cleanup。
- scanner:改进XML解析错误报告
- scanner:删除迷路新行
- 测试:使用我们自己的XDG_RUNTIME_DIR进行测试
- 测试:添加超时
- 测试:添加test_usleep和test_sleep函数
- 测试:添加超时测试
- 测试:在display-test中使用test_set_timeout
- queue-test:put back timeout
- 测试:不要打印' '字符
- client:read_events在错误后返回-1
- 测试:重命名env vars for tests
- test-runner:在每个测试用例后打印分隔线
- 测试:在终端上打印时使用颜色
- 测试:检测是否附加了调试器
- tests:split queue-test testcases
- 测试:修复内存泄漏
- 客户:更新过时的评论
- 客户:更新有关线程的文档
- gitignore:adpat to scanner和协议路径更改
- configure.ac:bump version to 1.6.90
- protocol:定义wl_surface角色的概念
- protocol:wl_pointer.set_cursor给出一个角色
- 协议:wl_data_device.start_drag可以发挥作用
- protocol:wl_subcompositor.get_subsurface赋予角色
- protocol:wl_shell.get_shell_surface赋予角色
- 协议:定义角色重新分配的错误代码
- doc:用xmlto 替换publican
- connection:修复FreeBSD上的sendmsg()
- event-loop.c:对dupfd() 使用正确的操作系统抽象功能
- wayland-server:如果来自客户端的读取给出0长度 ,则中止
- queue-test:添加另一个断言
- connection:如果侦听器函数为NULL则中止
- scanner.c:使用WL_PRINTF代替__attribute __((格式(printf)))
- doc:为wl_display_destroy和wl_display_add_socket函数添加了API文档。
- 协议:向wl_data_device接口添加了析构函数
版本1.6.0中的新功能:
- 韦兰:
- 将错误枚举添加到wl_surface。
- 将键盘重复信息添加到wl_keyboard协议。
- 在libwayland-client中处理添加的错误:当协议错误发生时,程序可以查询有关错误的更详细信息。这对于确保正确错误的测试非常有用。
- libwayland-server中的新wl_display_add_socket_auto():自动查找空闲套接字名称。
- 许多对'make check'套件添加了测试,包括更容易测试服务器 - 客户端交互的框架。
- 线程和阻止相关的错误修复。
- 添加wl_display_roundtrip_queue():阻止自定义队列的往返。
- 停止公开wl_display全局。结果是对全局的绑定会引发错误,并且没有正确使用它。
- 韦斯顿:
- Xdg-shell协议更改。是的,我们从1.5.0开始再次破坏它。
- 添加weston_layer屏蔽机制。
- DRM-backend:从内核中获取游标大小
- 键盘重复率支持,从合成器发送到客户端,可配置。
- 使用wl_display_add_socket_auto():在Weston下运行Weston时不再需要指定套接字,它现在可以正常工作。
- 默认情况下使用libinput。非libinput输入后端现在仍在那里,但它将被删除1.7。
- 一些桌面shell配置位。
- 'make distcheck'实际上可以在没有自定义调整的情况下工作OOTB(现在禁用xwayland测试for distcheck)。
- 退出Weston,如果weston-desktop-shell过早死亡。应该有助于解决一类“黑屏”问题。
- 在DRM和fbdev后端启动时强制启用numlock的选项。
- 当然有很多错误修复。
版本1.6.0 RC2中的新功能:
- 触摸板:当半固定垫上的nfingers改变时重置运动历史记录
- litest-alps-semi-mt:修复编译器警告
- build:symbol ck_assert_ptr_ne需要check-0.9.10
- test:仅使用一个测试设备进行某些udev和路径测试
- test:删除 时从上下文中删除测试设备
- test:多次启用事件时不要失败
- evdev:让调度实例设置自己的功能
- evdev:使用帮助程序从按键分隔按钮
- evdev:如果从未按下按键,则忽略按键/按钮释放事件
- evdev:跟踪每台设备的按键/按键次数
- evdev:删除设备时仍然按下按键/按钮
- 触摸板:仅按下按键FSM按下按键盘按钮
- configure.ac:libinput 0.6
- 测试:使用litest_touch_ functions时自动更新BTN_TOOL_ *
- 记录指针事件的增量加速
- evdev:如果我们伪造决议 ,请不要返回宽度/高度
- 测试:添加一个半山阿尔卑斯山测试设备
- 触摸板:将顶级软件按钮区域增加到15%
- 使用-no-install代替-static进行本地noinst链接
- 禁用静态库
- evdev:libevdev_new_from_fd失败时插件内存泄漏
- 如果libinput_add_fd()失败,请不要关闭fd
- 触控板:标记故意开关盒坠落
- ARRAY_FOR_EACH() 的交换条件
- 触摸板:沉默关于未初始化使用的封面警告
- 修复doxygen参考
- test:添加帮助以等待特定事件
- 测试:添加通用的单点触控设备
- udev:使用evdev_device_calibrate()而不是手动编写矩阵
- evdev:constify evdev_device_calibrate
- evdev:将校准应用于多点触控值
- util:添加几个3x3矩阵辅助函数
- evdev:切换到规范化的转换矩阵
- udev:删除WL_CALIBRATION,替换为LIBINPUT_CALIBRATION_MATRIX
- 测试:添加触摸校准测试
- 将校准更改为配置选项
- evdev:将LIBINPUT_CALIBRATION_MATRIX加载为默认矩阵
- test:修复litest_wait_for_event_of_type() 中的无限循环
- test:使用环境变量检查详细程度
- 正确记录LIBINPUT_CALIBRATION_MATRIX
- 记录我们支持的静态udev配置选项
评论没有发现