首页
/ LabWC 0.8.3 版本发布:Wayland 合成器的重要更新

LabWC 0.8.3 版本发布:Wayland 合成器的重要更新

2025-06-25 23:27:28作者:俞予舒Fleming

LabWC 是一个轻量级、受 Openbox 启发的 Wayland 合成器,专注于提供简洁高效的窗口管理体验。作为 Wayland 生态系统中的重要组件,LabWC 通过模拟 Openbox 的行为和配置方式,为从 X11 迁移到 Wayland 的用户提供了熟悉的操作环境。

近日,LabWC 发布了 0.8.3 版本,这是一个集稳定性改进、新功能增强和性能优化于一体的重要更新。本次更新不仅引入了备受期待的 ext-workspace 协议支持,还带来了菜单系统的重要改进,同时解决了大量用户体验和系统稳定性方面的问题。

核心功能增强

ext-workspace 协议支持

ext-workspace 协议的加入是本次更新的亮点之一。这一协议扩展了 Wayland 的工作区管理能力,允许客户端程序(如面板和任务栏)更好地与合成器的工作区功能交互。需要注意的是,这一变化会导致 xfce4-panel 4.20.0 版本不兼容,建议用户升级到 4.20.1 或更高版本。

菜单系统全面升级

LabWC 0.8.3 对菜单系统进行了多项重要改进:

  1. 图标支持:现在可以在菜单中显示图标,通过在配置文件中设置 <menu><showIcons>yes</showIcons> 即可启用这一功能。

  2. 动态根菜单:支持顶层管道菜单(pipemenus),允许动态生成菜单内容。例如,可以使用 labwc-menu-generator -p -I 这样的命令来生成动态菜单。

  3. 菜单定位算法优化:改进了使用 xdg-positioner 时的菜单定位算法,使菜单弹出位置更加智能合理。

用户体验改进

窗口管理增强

  • 新增了 <resize><cornerRange><resize><minimumArea> 配置选项,让窗口调整大小的行为更加可定制。
  • 修复了 SSD(服务器端装饰)边距在 MoveTo 动作中的计算问题,使窗口移动更加精确。
  • 改善了窗口切换器(Alt+Tab)的行为,使其更接近 Openbox 的操作逻辑,并新增了 Alt+Shift+Tab 作为默认快捷键来反向切换窗口。

图标和主题系统

  • 增加了 <theme><fallbackAppIcon> 配置选项,用于指定当应用程序图标查找失败时使用的备用图标。
  • 现在除了传统的 'openbox-3' 目录外,LabWC 还会查找 'labwc' 目录下的主题资源。
  • 修复了服务器端装饰标题栏中窗口图标的动态查找问题,支持不同输出设备的缩放比例。

输出管理

新增了 <core><autoEnableOutputs> 配置选项,允许用户禁用自动启用输出的功能。这对于希望使用 kanshi 等工具进行更精细输出控制的用户特别有用,可以避免在电源管理期间断开并重新连接的显示器被自动重新启用。

底层优化与稳定性

内存和资源管理

  • 修复了多处潜在的内存泄漏问题,特别是在图像缓存、菜单系统和输出管理方面。
  • 改进了图像缩放和渲染逻辑,修复了非正方形矩形中渲染大图像时的缩放问题。
  • 优化了场景缓冲区的管理,减少了不必要的渲染操作。

输入系统改进

  • 修复了虚拟键盘的修饰键状态处理问题,改进了与 wayvnc 等远程桌面解决方案的兼容性。
  • 改进了 IME(输入法)支持,修复了在 Firefox 中使用 Fcitx5 输入法时 Ctrl 键卡住的问题。
  • 现在会始终发送修饰键释放事件,解决了 Blender 和 wlfreerdp 等应用程序中修饰键卡住的问题。

其他重要修复

  • 修复了 PNG 文件处理中的崩溃问题,现在能正确处理非 ARGB32 格式的 PNG 文件。
  • 改进了光标焦点管理,修复了弹出窗口关闭后光标焦点不会立即回到主窗口的问题。
  • 修复了配置重载时的各种问题,包括键盘重复设置的清理和图像缓存的管理。

开发者视角的变化

从开发者角度看,0.8.3 版本对代码结构进行了多项优化:

  1. 重构了菜单系统的代码结构,使其更加模块化和可维护。
  2. 改进了场景缓冲区的架构设计,现在所有缩放场景缓冲区都存储在一个统一的列表中。
  3. 优化了服务器端装饰的按钮渲染逻辑。
  4. 引入了更严格的输入状态检查,防止在窗口切换或菜单操作期间产生冲突的输入事件。

总结

LabWC 0.8.3 版本标志着该项目在 Wayland 合成器领域的进一步成熟。通过引入 ext-workspace 协议支持和全面的菜单系统改进,LabWC 增强了与现代 Wayland 生态系统的集成能力。同时,大量的稳定性修复和性能优化使得这个轻量级合成器更加可靠和高效。

对于现有用户,建议关注配置文件中新增的选项,特别是与输出管理、窗口调整和菜单显示相关的设置。对于考虑从 X11/Openbox 迁移到 Wayland 的用户,0.8.3 版本提供了更加完善和稳定的体验,是尝试 LabWC 的好时机。

登录后查看全文
热门项目推荐

项目优选

收起
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
51
15
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
137
217
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
653
436
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
98
153
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
111
253
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
301
1.03 K
MateChatMateChat
前端智能化场景解决方案UI库,轻松构建你的AI应用,我们将持续完善更新,欢迎你的使用与建议。 官网地址:https://matechat.gitcode.com
701
97
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
361
351
carboncarbon
轻量级、语义化、对开发者友好的 golang 时间处理库
Go
8
2
RuoYi-Cloud-Vue3RuoYi-Cloud-Vue3
🎉 基于Spring Boot、Spring Cloud & Alibaba、Vue3 & Vite、Element Plus的分布式前后端分离微服务架构权限管理系统
Vue
116
81