• Kernel Mode Setting (简体中文)
  • Xorg
  • Screen capture#Wayland
  • 翻译状态:本文是 Wayland 的 翻译。上次翻译日期:2020-08-08。如果英文版本有所 更改,则您可以帮助同步翻译。

    Wayland 是一个用于 混成窗口管理器 与其客户端对话的协议,也是一个实现该协议的库。GNOME 和 KDE Plasma 等一些桌面环境支持 Wayland。它还有一个混成器实现参考叫做 Weston。Xwayland 则提供了一个兼容层,来让以前的 X11 应用程序能在 Wayland 中运行。

    Contents

    • 1 系统需求
    • 2 混成器(窗户管理器)
      • 2.1 平铺式
      • 2.2 堆叠式
      • 2.3 其它类型
    • 3 显示管理器
    • 4 图形库
      • 4.1 GTK 3
      • 4.2 Qt 5
      • 4.3 Clutter
      • 4.4 SDL
      • 4.5 GLFW
      • 4.6 GLEW
      • 4.7 EFL
      • 4.8 winit
    • 5 故障排除
      • 5.1 颜色校正
      • 5.2 慢动作、图形显示故障和崩溃
      • 5.3 无法在 display: :0 打开 Electron 应用
      • 5.4 远程显示
      • 5.5 游戏、远程桌面和虚拟机窗口中的输入捕获问题
    • 6 另请参阅

    系统需求

    目前 Wayland 只能在使用了 KMS 的系统上工作。Wayland 本身并不提供图形环境;为此还需要安装混成器(比如 Weston 或 Sway),或者内置混成器的桌面环境,比如 GNOME 或 KDE。

    为了使 GPU 驱动程序和 Wayland 混成器兼容,它们必须支持相同的缓冲器 API(Buffer API)。现在主要有两种 API:GBM 和 EGLStreams.

    Buffer API GPU 驱动支持 Wayland 混成器支持 GBM 全部 (除了 NVIDIA) 全部 EGLStreams NVIDIA GNOME, KDE

    混成器(窗户管理器)

    平铺式

    • Cagebreak — Cagebreak 是一款基于 Cage 并受 Ratpoison 启发开发的 Wayland 混成器。
    https://github.com/project-repo/cagebreak || cagebreak AUR cagebreak-bin AUR
    • dwl — 是 Wayland 下的 dwm。
    https://github.com/djpohly/dwl ||
    • river — 是一款受 dwm 和 bspwm 启发开发的动态平铺 Wayland 混成器。
    https://github.com/ifreund/river || river-git AUR
    • Orbment — (曾用名 loliwm) 是一款自由无约束的 Wayland 平铺窗户管理器。
    https://github.com/Cloudef/orbment || orbment-git AUR
    • Sway — 是一款和兼容 i3 的 Wayland 窗口管理器。
    https://github.com/swaywm/sway || sway
    • Velox — 是一款基于 swc 的简单窗户管理器。它的开发同时也受 dwm 和 xmonad 启发。
    https://github.com/michaelforney/velox || velox AUR
    • waymonad — 是一款用 Haskell 编写的 Wayland 混成器,受 xmonad 启发开发。
    https://github.com/waymonad/waymonad ||

    堆叠式

    • Enlightenment — 请参阅 Enlightenment#Manually。更多信息:[1] [2]
    https://www.enlightenment.org/ || enlightenment
    • Greenfield — 是一款可以在网页浏览器中运行、并显示远程应用的 Wayland 混成器。
    https://greenfield.app/ ||
    • Grefsen — 是一款提供最精简桌面环境的 Qt/Wayland 混成器。
    https://github.com/ec1oud/grefsen ||
    • hikari — 基于 wlroots 并受 cwm 启发开发,在 FreeBSD 上开发很活跃,但也支持 Linux。
    https://hikari.acmelabs.space/ || hikari AUR
    • KDE KWin — 请参阅 KDE#Starting Plasma。
    https://userbase.kde.org/KWin || kwin
    • Liri Shell — 是 Liri 一部分,其使用 QtQuick 和 QtCompositor 为 Wayland 构建。
    https://github.com/lirios/shell || liri-shell-git AUR
    • Mutter — 请参阅 GNOME#Starting。
    https://gitlab.gnome.org/GNOME/mutter || mutter
    • Orbital — 是一款使用 Qt5 和 Weston 的混成器和 Shell(它更像是窗户管理器而非桌面环境)。目标是构建一个简单但灵活且美观的桌面。
    https://github.com/giucam/orbital ||
    • wayfire — 3D 混成器,受 Compiz 启发并基于 wlroots 开发。
    https://wayfire.org/ || wayfire AUR
    • Weston — 本身还是其它 Wayland 混成器开发的实现参考。
    https://gitlab.freedesktop.org/wayland/weston || weston
    • wio — 是一款基于 wlroots 的混成器,致力于复刻 Plan 9 的 Rio 桌面的外观和质感。
    https://wio-project.org/ ||

    其它类型

    • Cage — 显示单个全屏应用程序(就像自助取款机那样)。
    https://www.hjdskes.nl/projects/cage/ || cage
    • Maze Compositor — 使用 Qt 将窗口渲染成 3D 迷宫一样。
    https://github.com/imbavirus/mazecompositor ||
    • Motorcar — 是一款使用虚拟现实来探索 3D 窗口的 Wayland 混成器。
    https://github.com/evil0sheep/motorcar ||
    • Maynard — 基于 GTK,是 Weston 的桌面 Shell 客户端。它曾基于 weston-gtk-shell(Tiago Vignatti 的一个项目),后者已不再开发。[3][4]
    https://github.com/raspberrypi/maynard || maynard-git AUR

    上述某些混成器/窗户管理器支持 显示管理器。请检查 /usr/share/wayland-sessions/compositor.desktop 文件看它们如何启动。

    显示管理器

    下面列出的显示管理器均支持 Wayland 混成器。“类型”列指明了显示管理器是否支持在 Wayland 上运行。

    名称 类型 描述
    GDM 在 Wayland 上运行 GNOME 的显示管理器。
    greetd 登录守护程序 小巧且灵活的登录守护程序。
    LightDM 在 X11 上运行 跨桌面显示管理器。
    Ly 在控制台中运行 用 C 语言编写的 TUI 显示管理器。
    SDDM 在 X11 上 基于 QML 开发的显示管理器。
    tbsm 在控制台中运行 用纯 Bash 编写的简单 CLI 会话启动器。

    图形库

    详情请查看 官方网站。

    GTK 3

    gtk3 软件包已经提供了 Wayland 支持。GTK 会默认使用 Wayland 后端,但是可以通过修改环境变量为 GDK_BACKEND=x11 覆盖设置将其切换到 Xwayland。

    Qt 5

    要在 Qt 5 中启用 Wayland 支持,请安装 qt5-wayland 软件包。

    要搭配 Wayland 插件一起运行 Qt 5 应用程序[5],请使用 -platform waylandQT_QPA_PLATFORM=wayland 环境变量;要强制在 Wayland 会话中使用 X11,则使用 QT_QPA_PLATFORM=xcb。后者对于某些不使用系统 Qt 实现的应用(比如 zoomAUR),可能是必需的。

    像 sway 这样的一些混成器,本机运行的 Qt 程序可能会有一些功能缺失。例如,KeepassXC 会无法最小化到托盘。通过安装 qt5ct 并在程序运行前设定好 QT_QPA_PLATFORMTHEME=qt5ct 环境变量,可以解决这一问题。

    Clutter

    Clutter 工具包有 Wayland 后端支持,可以作为 Wayland 客户端运行。这一后端支持已在官方软件包 clutter 中启用。

    要在 Wayland 上运行 Clutter 应用,请设定 CLUTTER_BACKEND=wayland 环境变量。

    SDL

    要在 Wayland 上运行 SDL 应用,请设定 SDL_VIDEODRIVER=wayland 环境变量。

    注意: 很多专有游戏集成了旧版本的 SDL,导致并不支持 Wayland,而且如果设置了 SDL_VIDEODRIVER=wayland 环境变量还可能会导致游戏运行完全中断。要强制应用在 XWayland 上运行,请设定 SDL_VIDEODRIVER=x11 环境变量。

    GLFW

    要在 Wayland 后端上使用 GLFW,请安装 glfw-wayland 软件包(而不是 glfw-x11)。

    GLEW

    要在 Wayland 后端上使用 GLEW,请安装 glew-wayland 软件包(而不是 glew)。

    EFL

    EFL 已经完全支持 Wayland。要在 Wayland 上运行 EFL 应用,请参阅 Wayland 项目页面。

    winit

    Winit 是 Rust 语言中的窗口处理库。其默认使用 Wayland 后端,但是可以通过修改环境变量为 WINIT_UNIX_BACKEND=x11 覆盖设置将其切换到 Xwayland。

    故障排除

    颜色校正

    请参阅 Backlight#Color correction。

    慢动作、图形显示故障和崩溃

    Gnome-shell 用户从 X 切换到 Wayland 时可能会遇到这样的问题。根本原因之一是可能用户自己为基于 Xorg 的 gnome-shell 设置了 CLUTTER_PAINT=disable-clipped-redraws:disable-culling 变量。只需尝试将变量从 /etc/environment 或其它 rc 文件中移除,即可查看是否一切恢复正常。

    无法在 display: :0 打开 Electron 应用

    请确保没有设定 GDK_BACKEND=wayland 变量。将此变量应用到全局会使 Electron 应用中断运行。

    远程显示

    • (20200206) wlroots (sway 使用) 自 0.10 版本通过 wayvncAUR 提供了一个 VNC 后端。RDP 后端则已被移除。 [6].
    • (20180401) mutter 当前在编译时就启用了远程桌面功能,详情请参阅 [7] 和 gnome-remote-desktop。
    • FreeRDP 在 2013 年合并入了 Weston,通过编译标志 (compile flag) 启用。weston 自 6.0.0 版本启用了 FreeRDP。
    • waypipe-gitAUR 是适用于 Wayland 应用的透明代理,可通过内封装的命令在 SSH 上运行。

    游戏、远程桌面和虚拟机窗口中的输入捕获问题

    与 Xorg 相比,Wayland 并不允许独占输入设备捕获、也被称为主动捕获或显式捕获 (比如 键盘、鼠标 等设备)。相反,Wayland 依赖 Wayland 混成器传递键盘快捷键,并将指针设备限定在应用窗口中。

    输入捕获方式的变化破坏了当前应用程序的行为,意味着:

    • 热键组合和修饰符输入会被混成器捕获,并且不会发送到远程桌面和虚拟机窗口中。
    • 鼠标指针将不会被限制在应用程序的窗口中,这可能会导致视差效应,即虚拟机或远程桌面的窗口内鼠标指针的位置与主机的鼠标指针发生偏差。

    Wayland 通过为 Wayland 和 XWayland 添加协议扩展来解决此问题。为此 Wayland 混成器需要添加对这些扩展的支持。如果是本地 Wayland 客户端,其使用的部件工具集 (widget toolkits,比如 GTK,Qt) 需要支持这些插件;如果没有使用部件工具集,则需要支持应用程序本身。如果是 Xorg 应用程序,则不需要改变应用程序或者部件工具集,因为 Xwayland 的支持就足够了。

    wayland-protocols 中已经包含了这些扩展, 并由 xorg-server-xwayland[断开的链接:replaced by xorg-xwayland] 1.20 支持。

    相关的扩展有:

    • XWayland 键盘捕获协议
    • 混成器快捷键抑制协议
    • 相对指针协议
    • 指针约束协议

    支持的 Wayland 混成器有:

    • Mutter,GNOME 的混成器(窗口管理器),从 3.28 版本 开始支持
    • wlroots 支持相对指针协议和指针约束协议

    支持的部件工具集有:

    • GTK,从 3.22.18 版本开始支持。

    另请参阅

    • Fedora Wiki 上有关 Wayland 开发调试的文章
    • 光标主题
    • Arch Linux 论坛讨论(页面将持续关注 Wayland 信息 ,如有兴趣请留意)
    • Wayland 在线文档
    • 绝赞 Wayland 项目
    Retrieved from " https://wiki.archlinux.org/index.php?title=Wayland_(简体中文)&oldid=644799"
    Category:

    • X server (简体中文)

Wayland (简体中文)相关推荐

  1. arm我的世界linux,Minecraft (简体中文)

    Minecraft 是一个关于击毁和放置方块的游戏.游戏一开始玩家的主要目的是搭建各种结构使自己免遭夜晚出没的怪物的攻击并生存下来,但随着游戏的进行,玩家们可以合作创造出一些不可思议的.富有想象力的东 ...

  2. linux kodi 设置中文,Kodi 19 “Matrix” 开源家庭影院发布,界面设置成简体中文

    原标题:Kodi 19 "Matrix" 开源家庭影院发布,界面设置成简体中文 备受期待的Kodi 19"Matrix"开源家庭影院/媒体中心已正式发布,这是一 ...

  3. Enlightenment E19 将完整支持 Wayland

    Enlightenment E19加入了对Wayland显示服务器的完整支持, 成为第一个完整支持Wayland的Linux桌面.Enlightenment对Wayland的支持被认为处于试验阶段,某 ...

  4. Fedora 23 将默认使用 Wayland – 多监视器支持

    Fedora 项目计划在下一个版本中使用 Wayland 作为系统的默认显示服务器,尽管现在 Wayland 还属于大规模应用开发阶段. 最近,开发者们纷纷宣布 Wayland 已获得使用多台显示器支 ...

  5. DXperience_v9.15简体中文

    最新更新的简体中文 http://smartsoft.5d6d.com/thread-2095-1-1.html 转载于:https://www.cnblogs.com/manwu2008/archi ...

  6. Crystal For Rubyists 简体中文

    Crystal :一门年轻的编程语言,语法酷似 Ruby,静态类型,编译型,高性能. "给 Ruby 同学准备的 Crystal 入门教程",这是一本非常值得 Crystal 新人 ...

  7. 树莓派 之 系统登陆及设置本地化(简体中文)

    系统登陆及设置本地化(简体中文) (如果启动停留在彩虹画面,说明 kernel.img 启动失败,建议替换或重新写入系统,信息来源 ) 用户名: pi 密码: raspberry 写入系统在Windo ...

  8. winxp ie8.0 html5,(IE8)Internet Explorer 8.0 For WinXP 简体中文正式版

    最新版本: 简体中文正式版官方网站: 微软软件大小: 16506 K软件授权: 免费软件平台: WinXP下载windows 超速版(通用)下载windows 购物版(通用)微软全新推出的最新版本网页 ...

  9. 基于wayland的linux桌面,揭开Wayland的面纱(二):Wayland应运而生

    在本篇正式开始介绍Wayland之前,让我们先回到2008年11月4日,也就是整整两年前,我当时在中文领域第一时间报道了"Wayland"的新闻:Wayland:Linux的新X ...

最新文章

  1. 【学习笔记】cookie、session、token和分布式session
  2. 《java基础知识》Java变量作用域
  3. ddd 企业应用架构模式_灵魂拷问:用了DDD分包就是落地了领域驱动设计吗?谈谈DDD本质...
  4. WAMP显示错误“MSVCR100.dll”缺少安装时
  5. 小箭头的写法,z-index在ie7显示混乱问题
  6. Robo 可视化mongoDb的操作
  7. 压缩软件能否加上忽略某些目录的功能
  8. linux源码分析汇总
  9. 【Linux网络配置】
  10. u盘在计算机打不开,别的电脑能打开u盘自己的怎么打不开解决方法
  11. 构造地质学类毕业论文文献包含哪些?
  12. gis 数据框裁剪_【计算摄影】计算机如何学会自动裁剪图片(自动构图)?
  13. 02_制定自己的学习计划
  14. android tf卡及u盘_android8.1系统修改第三方app无法读写U盘或者内部SD卡的问题
  15. 机器学习-57-Unsupervised Learning-09-More about Auto-Encoder(无监督学习之更多有关自编码器的介绍)
  16. 内存的分配和回收实验(首次适配、下次适配、最佳适配、最坏适配)
  17. [Windows]系统超级管理员权限获取,支持Windows10,11
  18. ORA-64203: 目标缓冲区太小, 无法容纳字符集转换之后的 CLOB 数据。
  19. 加载cad菜单(.mns .mnu .cuix文件)
  20. Python查看已安装库的版本

热门文章

  1. linux打开80端口及80端口占用解决办法
  2. java使用 openoffice+swftools+flexpaper 在window下完成简单的文件预览
  3. MVC 简介,MVC数据库
  4. JavaScript 高级
  5. 数据可视化~matplotlib阶梯图,直方图
  6. 微信小程序上传文件功能实现
  7. 正点原子阿波罗STM32F429开发板资料发布,采用底板+核心板
  8. 国内外视频编解码标准体系-3GPP 5G标准进程
  9. Python基础班开班典礼
  10. Reshaper介绍