Wayland (简体中文)

From ArchWiki
Jump to navigation Jump to search
翻译状态: 本文是英文页面 Wayland翻译,最后翻译时间:2013-03-30,点击这里可以查看翻译后英文页面的改动。

Wayland 是 Linux 的一个新的图形接口协议,目的是替代有 25 年历史的 X11 Server。使用 Wayland 需要更改或重新安装一部分系统中的软件。更多关于 Wayland 的信息参见 主页

警告: Wayland仍处于开发阶段,某些功能可能不完整

系统需求

目前 Wayland 只能在使用了 KMS 的系统上工作。

安装

注意: Wayland 应该已经作为gtk2gtk3的依赖安装到系统里面

如果没有,可以从 官方软件仓库 安装软件包wayland

使用

Wayland 仅仅是一个库,无法单独工作。因此使用 Wayland 需要有混合程序(weston), Weston 演示程序、Qt5 加 Wayland 插件,还可以选择使用有 Wayland 支持的 GTK+ 库。

Weston

安装

翻译状态: 本文是英文页面 Help:Reading (简体中文)翻译,最后翻译时间:2017-12-07,点击这里可以查看翻译后英文页面的改动。

因为对于GNU/Linux新用户来说,绝大多数ArchWiki包含的指南可能需要澄清,本文期望通过解释一些基本操作和术语,以避免阅读指南时的混淆,并阻止ArchWiki内容本身的重复。

ArchWiki 的组织结构

ArchWiki 上的页面大多不是要对某个话题进行面面俱到的描述;相反它们遵守 DRY 的原则,假定用户会查阅相关资料以便把不懂的部分弄懂。这些页面尽可能地提供相关的链接:比如,一个页面可以引用 ArchWiki 上的另一个页面[broken link: invalid section]外部网页,可以在线阅读的 man 手册页(1) 或者只能离线阅读man 手册页(1)

由于 ArchWiki 的组织结构, 要看懂一个页面,可能需要查阅数个相关资源。特别需要注意的是,Arch 的新用户(或者 GNU/Linux 的新用户)可能为了解决一个简单的问题而阅读许多页面;在向其他用户寻求帮助之前,一定要阅读相关资料。

一般用户还是 root 用户

有些命令是这样的:

# mkinitcpio -p linux

另外一些命令是这样的:

$ makepkg -s

井号(#)表示命令要以 root 权限执行,而美元符号($)表示命令用一般用户权限执行。

注意: sudo -i 可以进入 root 终端,在普通终端中使用sudo command也能让command以 root 权限执行,但是这个方式不支持 重定向替代。详情参阅sudo.

注意有时候 # 表示文件中的注释:

# This alias makes ls colorize the listing
alias ls='ls --color=auto'

在这个例子中,上下文表明这不是命令,而是需要加入到文件的一部分。在这种情况下,井号表示一个“注释”。注释是解释性的文字,它不会被执行。Bash 脚本的注释符号和 root 的命令提示符相同。

此外,通常包含大写字母的文字都是注释,而 Unix 命令通常是简短的缩写(例如,“Copy”被缩写成“cp”)。

当然,大部分文章都会指明这一点:

~/path/to/file 添加:

# This alias makes ls colorize the listing
alias ls='ls --color=auto

添加、创建、编辑文件

当提到“添加”(append to、add to)、“创建”(create)、“编辑”(edit)一个或几个文件,这就表示你应该用以下的某种方法。

推荐使用文本编辑器来创建或修改多行的文件,例如用 nano 命令来编辑文件 /etc/bash.bashrc

# nano /etc/bash.bashrc

要创建包含简短文本的文件或者覆盖已有的文件,输出重定向是最简单的。下面的命令演示了如何用文本 myhostname 创建或覆盖 /etc/hostname

# echo myhostname > /etc/hostname

输出重定向也可以用来向一个文件追加(append)文本。下面的命令演示了如何向 /etc/pacman.conf 追加文本 [custom-repo]

# echo "[custom-repo]" >> /etc/pacman.conf

要创建 目录,用 mkdir 命令:

# mkdir /mnt/boot

添加可执行权限

在创建文件之后,如果这是一个要运行的脚本(手动运行或被其他程序调用),就需要把他设为“可执行”:

$ chmod +x script

参阅 chmod文件管理器等应用程序可能会提供一个图形界面完成相同的事情。

Source

有些程序,特别是命令行 shell,使用脚本来进行配置:修改配置文件之后,需要使用“source”命令来应用变更。以 bash 为例,执行以下命令(也可以把 source 换成 .):

$ source ~/.bashrc

当 ArchWiki 建议修改某些配置文件时,它一般不会明确提醒你“source”这个文件,只有某些情况下会给出到本节的链接。

安装软件包

绝大部分文章仅是给出软件包的名字,不会列出详细的软件包安装命令。

下面介绍一下通用的软件包安装方式。

官方软件包

如果软件包位于 官方软件仓库,安装指令是下面这样:

Install the foobar package.

这意味着需要执行:

# pacman -S foobar

pacman 包含了 Arch 软件包管理的详细内容。

Arch 用户仓库(AUR)

如果软件包来自AUR,你会看到下面内容:

Install the foobarAUR package.

这意味这您需要打开foobarAUR 链接,下载 PKGBUILD,解压,验证内容,然后在文件目录执行:

$ makepkg -sri
注意: 从 AUR 或Arch 构建系统构建软件包需要安装 base-devel 包组。

Arch User Repository (简体中文) 包含了 AUR 软件包的详细信息。

控制 systemd 单元

绝大部分文章仅仅要求你“启动”(start)、“启用”(enable)、“停止”(stop)、“重启”(restart)systemd 单元(例如:服务),不会列出详细的命令。你会看见类似这样的说明:

启动 example.service.

这意味着你需要执行

# systemctl start example.service

启动 链接到 systemd 页面,systemd 页面包含了管理 systemd 单元的详细介绍。

全局配置和用户配置

请记住,GNU/Linux 有两种类型的配置。“全局”配置影响所有用户。全局配置文件一般位于 /etc 目录,修改它们需要 root 权限。例如,要修改所有用户的 Bash 设置,修改 /etc/bash.bashrc 文件。

“用户”配置仅影响一个用户。文件名以 . 开头的文件(dotfiles,例如 ~/.bashrc)是用户配置文件。每个用户都可以定义他们自己的设置(别名、函数、命令提示符等)而不影响其他用户。

注意: ~/$HOME 是用户主目录的简写,一般是 /home/用户名/

Shell 通用配置文件

Bash 和其他与 Bourne shell 兼容的 shell(如 Zsh (简体中文)),会根据是 “login shell” 还是 “interactive shell” 来执行相应的配置文件。参阅 Bash (简体中文)#配置Zsh (简体中文)#配置文件介绍

示例代码中的伪变量

一些代码块包含“伪变量”,顾名思义,这不是代码中使用的真正的变量。它们只是代码中的占位符,需要在执行或解释之前根据特定的系统配置进行手动替换。Bash (简体中文)Zsh (简体中文) 这类终端提供 Tab 补全功能以补全 systemctl 之类的命令。

根据 Help:Style/Formatting and punctuation,伪变量使用斜体。例如:

  • ip link 命令输出的网卡名称,启动 dhcpcd@interface_name.service

在这里,伪变量 interface_name 是一个 systemd 模板单元的占位符。所有的 systemd 模板单元(带有 @ 标记)都需要特定系统的名称作为参数。参阅 Systemd (简体中文)#使用单元

  • 以 root 运行命令 dd if=data_source of=/dev/sdX bs=sector_size count=sector_number seek=partitions_start_sector 用特定参数来清空一个分区。

在这里,伪变量表示该参数需要被替换。具体怎么替换在 Securely wipe disk#Calculate blocks to wipe manually 有详细描述。

警告: 不要执行上面的 dd 命令,这个命令会清除硬盘上的相应扇区。——译者注

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Mention other examples, ideally from other device categories (e.g. storage), with links to background articles. The examples are meant to avoid duplicating existing explanations in other articles. (Discuss in Talk:Wayland (简体中文)#)

在配置文件中,如果直接将带伪变量的代码粘贴进去,可能会导致程序出错。

省略

省略号(...)一般不是文件内容或命令输出的一部分,它们代表和主题关系不大的文字。

例如,HOOKS="... encrypt ... filesystems ..." 或者:

/etc/X11/xorg.conf.d/50-synaptics.conf
Section "InputClass"
    ...
    Option      "CircularScrolling"          "on"
    Option      "CircScrollTrigger"          "0"
    ...
EndSection

请注意,在少数情况下,省略号可能是代码的一部分。细心的用户很容易根据上下文来辨别。 weston

使用

安装完了 Wayland 及它所依赖的包之后,就可以开始试用了。切换到终端,运行:

 $ weston-launch
Note: 要运行 Westron,用户必须属于 video 组;不要以 root 执行此命令,否则 VT 可能冻结。
Note: If you get an LLVM assertion failure, you need to rebuild mesa without Gallium LLVM until this problem is fixed. This may imply disabling some drivers which require LLVM.

如果 nouveau 驱动有问题,可以尝试运行:

 $ export EGL_DRIVER=/usr/lib/egl/egl_gallium.so

可以在 X 会话中运行 Weston:

$ weston

接下来你就可以在 TTY 下打开 wayland 的终端:

$ weston-terminal

在屏幕上移动一朵花儿,用以测试帧控制功能:

$ weston-flower 

在 Wayland 上运行 glxgears 程序:

$ weston-gears 

显示图片:

$ weston-image image1.jpg image2.jpg...

显示 PDF 文件:

$ weston-view doc1.pdf doc2.pdf...

配置

键盘布局,模块的选择,UI的修改的示例配置文件,请参阅man weston.ini

~/.config/weston.ini
[core]
### uncomment this line for xwayland support ###
#modules=xwayland.so

[shell]
background-image=/usr/share/backgrounds/gnome/Aqua.jpg
background-color=0xff002244
panel-color=0x90ff0000
locking=true
animation=zoom
#binding-modifier=ctrl
#num-workspaces=6
### for cursor themes install xcursor-themes pkg from Extra. ###
#cursor-theme=whiteglass
#cursor-size=24

### tablet options ###
#lockscreen-icon=/usr/share/icons/gnome/256x256/actions/lock.png
#lockscreen=/usr/share/backgrounds/gnome/Garden.jpg
#homescreen=/usr/share/backgrounds/gnome/Blinds.jpg
#animation=fade

[keyboard]
keymap_rules=evdev
#keymap_layout=gb
#keymap_options=caps:ctrl_modifier,shift:both_capslock_cancel
### keymap_options from /usr/share/X11/xkb/rules/base.lst ###


[terminal]
#font=DroidSansMono
#font-size=14



[launcher]
icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
path=/usr/bin/gnome-terminal

[launcher]
icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
path=/usr/bin/weston-terminal

[launcher]
icon=/usr/share/icons/hicolor/24x24/apps/firefox.png
path=/usr/bin/firefox

[launcher]
icon=/usr/share/icons/gnome/24x24/apps/arts.png
path=./clients/flower

[screensaver]
# Uncomment path to disable screensaver
path=/usr/libexec/weston-screensaver
duration=600

[input-method]
path=/usr/libexec/weston-keyboard

###  for Laptop displays  ###
#[output]
#name=LVDS1
#mode=1680x1050
#transform=90

#[output]
#name=VGA1
# The following sets the mode with a modeline, you can get modelines for your preffered resolutions using the cvt utility
#mode=173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
#transform=flipped

#[output]
#name=X1
#mode=1024x768
#transform=flipped-270

简单的 weston.ini :

~/.config/weston.ini
[core]
modules=xwayland.so

[keyboard]
keymap_layout=gb

[launcher]
icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
path=/usr/bin/weston-terminal

[launcher]
icon=/usr/share/icons/hicolor/24x24/apps/firefox.png
path=/usr/bin/firefox


[output]
name=LVDS1
mode=1680x1050
transform=90

XWayland

你可以在官方的 extra 库中找到xorg-server-xwayland包.

When you want to run an X application from within Weston, it spins up Xwayland to service the request. The following configuration file is required:

~/.config/weston.ini
[core]
modules=xwayland.so

视频录制

Weston has build-in screencast recording which can be started and stopped by pressing the Super + R key combination. Screencasts are saved to the file capture.wcap in the current working directory of Weston.

The WCAP format is a lossless video format specific to Weston, which only records the difference in frames. To be able to play the recorded screencast, the WCAP file will need to be converted to a format which a media player can understand.

To convert the file to webm, execute:

$ wcap-decode capture.wcap --yuv4mpeg2 | vpxenc --target-bitrate=1024 --best -t 4 -o foo.webm -

To convert the file to ogv, execute:

$ wcap-decode capture.wcap --yuv4mpeg2 | theora_encode - -o cap.ogv

高DPI显示器

Use

~/.config/weston.ini

[output]
name=...
scale=2

for "retina" or "HiDPI" displays.

图形库

官方资料上查看详细信息

GTK+ 3

[extra]软件仓库中的gtk3 已经提供了 Wayland 支持.

GTK+ 3.0 开始,GTK+ 可以在运行时同时支持多个后端,和 Qt 一样进行切换。

Wayland 和 X 后端都启用时,GTK+ 默认会使用 X11。可以通过把GDK_BACKEND环境变量设为wayland来改变这一规则。

如果出现 segment faults,删除libcanberra。0.31.0 之后的版本已经修复了这个问题。 链接

Qt5

安装

AUR 安装 qt5-base-gitAUR,然后编译插件 qt5-wayland-gitAUR.

要使用 wayland 插件运行程序,需要将 QT_QPA_PLATFORM 环境变量设置为 waylandgl。

$ export QT_QPA_PLATFORM=waylandgl
$ ./binaryname

Clutter

Clutter 工具包有 Wayland 后端支持,可以作为 Wayland 程式运行。这一后端支持已经存在于开发主分支中main repo,可以以 --with-flavour=wayland来加以配置

SDL

Benjamin Franzke 将 SDL 移植到 Wayland 上, 可以从freedesktop.org sdl-wayland repo处获得。Andre Heider 接着 Benjamin Franzke 的工作进行开发,代码在libsdl 的 wayland 分支

GLFW

Experimental wayland support is now in GLFW 3.1 and can be enabled with a CMake option at compile time. You can also install the package glfw3-gitAUR from the AUR and add -DGLFW_USE_WAYLAND=ON to the CMake flags.


EFL

EFL 已经完全支持 Wayland。请参考这里获取更多细节。

窗口管理器和桌面 shell

Name Type Description
GNOME Compositing 参见 GNOME#Starting GNOME.
Hawaii (Unclear) 参见 Hawaii.
sway Tiling Sway is an i3-compatible window manager for Wayland.
KDE Compositing KDE 4.11 added support for KWin under Wayland system compositor. Since KDE 5.3 KWin is also able to be run nested and can start an Xwayland server to support X11 clients under Wayland. Support for Wayland clients is planned for KDE 5.4.
Orbment Tiling orbment (previously loliwm) is a tiling WM for Wayland.
Velox Tiling velox is a simple window manager based on swc. It is inspired by dwm and xmonad.
Orbital Compositing Orbital is a Wayland compositor and shell, using Qt5 and Weston. The goal of the project is to build a simple yet flexible and good looking Wayland desktop. It is not a full fledged DE but rather the analogue of a WM in the X11 world, such as Awesome or Fluxbox.
Papyros Shell (Unclear) Papyros Shell is the desktop shell for Papyros, built using QtQuick and QtCompositor as a compositor for Wayland.
Maynard (Unclear) Maynard is a desktop shell client for Weston based on GTK. It was based on weston-gtk-shell, a project by Tiago Vignatti.
Motorcar (Unclear) Motorcar is a wayland compositor to explore 3D windowing.

问题解决

更多信息

forum discussion 页面将持续关注 Wayland 信息 ,如有兴趣请留意。