Sway

来自 Arch Linux 中文维基

Sway(缩写自 SirCmpwn 的 Wayland 合成器[1])是一款专为Wayland设计的合成器,旨在与i3完全兼容。根据官网显示:

Sway 是Wayland的合成器,也是 x11 的 i3 窗口管理器的替代品。它可以与您现有的 i3 配置一起工作,并支持 i3 的大部分特性以及一些附加功能

安装[编辑 | 编辑源代码]

Sway 可以通过 sway 包来进行安装。也可以使用 sway-gitAUR 安装开发版本。由于依赖关系紧密,建议在更新 sway 时始终更新 wlroots

注意: 所有专有显卡驱动程序都不受支持,包括 NVIDIA。在 NVIDIA 驱动程序版本 495 之后,需要启用内核级显示模式设置并在运行 sway 时附加 --unsupported-gpu 参数去运行。

还可以安装 swaylockswayidle 来锁定屏幕并设置 idle 管理。

默认的应用程序启动器为 dmenu,默认的终端模拟器是 foot。在启动 sway 之前,建议安装它们或在配置中设置新的启动器和终端。

启动[编辑 | 编辑源代码]

在启动 Sway 之前,它需要访问你的硬件设备,如键盘、鼠标和图形卡。这些硬件设备的集合称为一个 seat,就如 sd-login(3)中所述.

在 Arch Linux 上,Sway 可以使用以下任一方式访问您的 seat。

如果 polkit 已安装在你的系统上, Sway 应会自动访问你的seat。

又或者,如果 polkit 没有安装在你的系统上并且你想使用 seatd 来替代请将你自己添加到这个seat 用户组 并且 开机自启和启动 seatd.service,重新登录并选择以下方法之一来启动 Sway。

手动登录[编辑 | 编辑源代码]

要启动 Sway,只需在 Linux 终端输入 sway 来运行程序。

自动登录[编辑 | 编辑源代码]

与 X 类似,可以通过将以下内容添加到 shell 初始化文件来启动 Sway(请参阅 命令行 shell#登录 shell英语Command-line_shell#Login_shell):

if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
  exec sway
fi

有关更多详细信息,请参阅 Xinit#登录时自动启动_X

选择显示管理器[编辑 | 编辑源代码]

注意: Sway 官方不支持显示管理器。[2]

Sway 会话位于 /usr/share/wayland-sessions/sway.desktop。 它可以被 GDMSDDM等现代显示管理器自动识别。

也可以使用systemd 用户服务作为一个显示管理器去运行 sway

您还可以使用基于文本的会话管理器,请参阅 显示管理器#控制台

配置[编辑 | 编辑源代码]

如果您已经在使用i3,则可以将i3配置文件复制到~/.config/sway/config ,并且它开箱即用。否则,请将位于 /etc/sway/config 的示例配置文件复制到 ~/.config/sway/config。 有关配置的信息,请参见 sway(5)

键盘映射[编辑 | 编辑源代码]

默认情况下,sway 从 US QWERTY 键盘映射开始。配置每个输入:

~/.config/sway/config
input * {
    xkb_layout "us,de,ru"
    xkb_variant "colemak,,typewriter"
    xkb_options "grp:win_space_toggle"
}

input <identifier> xkb_model "pc101"

更多细节请查看 xkeyboard-config(7)sway-input(5).

在启动sway时,键盘映射也可以使用环境变量进行配置(XKB_DEFAULT_LAYOUTXKB_DEFAULT_VARIANT,等)。配置选项优先于环境变量

打字延迟和速率[编辑 | 编辑源代码]

要更改类型延迟和速度,您可以在input分区添加以下行:

~/.config/sway/config
input <identifier> repeat_delay 300
input <identifier> repeat_rate 30

状态栏[编辑 | 编辑源代码]

Sway 附带了一个默认状态栏,其形式为 swaybar ,可在纯 Wayland 环境中运行。swaybar 可以调用 shell 脚本或其他程序来在状态栏中显示信息。有关详细信息,请参略 sway-bar(5)swaybar-protocol(7)

提示:waybar是一个包含(swaybar)的替代方案。

安装 i3status 是在 Wayland 下获取实用的默认状态栏的一个选项。您所要做的就是在 sway 配置的末尾添加以下代码段:

~/.config/sway/config
bar {
    status_command i3status
}

如果要为 i3status 启用色彩输出,则需要在 i3status 配置中调整以下部分:

~/.config/i3status/config
general {
    colors = true
    interval = 5
}

壁纸[编辑 | 编辑源代码]

在sway中显示壁纸由专用程序处理,该程序单独打包为 swaybg。它是运行输出命令所必需的。 以下行可以附加在 sway 配置的末尾,他会在在所有显示器上设置背景图像(输出与名称 "*"匹配):

~/.config/sway/config
output "*" bg /path/to/image fill

当然,您必须根据壁纸替换文件名和路径。

如果只需要纯色背景,可以按如下方式设置:

output * bg #000000 solid_color

您可以使用 azoteAUR 作为 GTK3 前端来运行 swaybg。

输入设备[编辑 | 编辑源代码]

可以调整特定的输入设备配置。例如,若要为所有触摸板启用点击以单击和自然滚动,请执行以下操作:

~/.config/sway/config
input type:touchpad {
    tap enabled
    natural_scroll enabled
}

要为特定触摸板设置配置,请使用 swaymsg -t get_inputs 获取设备标识符并用它来代替 type:touchpad

注意: 来自于 swaymsg -t get_inputs 命令的输出可能包含“\”来转义“/”等符号(e.g. "2:14:ETPS\/2_Elantech_Touchpad")。 这些需要删除。

更多文档和选项,如加速曲线或完全禁用输入,可以参照sway-input(5).

HiDPI[编辑 | 编辑源代码]

使用 output 命令在你的配置文件中设置显示比例因子。 比例因子可以是分数,但对于 HiDPI 屏幕,它通常为 2。

~/.config/sway/config
output <name> scale <factor>

您可以使用以下命令找到您的显示名称:

$ swaymsg -t get_outputs

自定义键绑定[编辑 | 编辑源代码]

键盘上的特殊键 可用于执行命令,例如控制音量、监视亮度或媒体播放器:

~/.config/sway/config
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
bindsym XF86MonBrightnessUp exec brightnessctl set 5%+
bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous
bindsym XF86Search exec $menu

有关详细信息和替代实用程序,请参阅 PulseAudio键盘音量控制ALSA键盘控制音量背光实用程序MPRIS。 要允许在锁屏处于活动状态时执行键绑定,请将 --locked 参数添加到 bindsym。

bindsym --locked XF86AudioPlay exec playerctl play-pause
提示:wevAUR 是一个工具,它提供类似于 xorg-xev的功能,但在Wayland上。
注意: Systemd 处理一些特殊键,如电源键和盖子打开和关闭事件。这些可能会干扰在 sway 中配置的那些。请参阅loginctl(1)logind.conf(5) 以获取有关如何在systemd中配置它们的详细信息。

Graphical indicator bars[编辑 | 编辑源代码]

通常希望在调整某些百分比值设置(如亮度或音量)的当前级别由图形栏指示。在 Sway 中提供此工具的一个不错的选择是wobAUR (或者 wob-gitAUR),它提供了流行的 X 工具 xobAUR 的功能子集,但作为实现层壳协议的本机 Wayland 实用程序。有关使用示例,请参阅项目网站

Overview of workspaces[编辑 | 编辑源代码]

如果您正在使用很多带有许多窗口的工作区,并且无法再跟踪位置,那么 sovAUR 可以派上用场。 它是一个叠加层,显示所有工作区的架构,以使 sway 导航更容易。它显示程序名称,窗口标题,支持多输出设置。有关详细信息,请参阅 项目网站

空闲管理[编辑 | 编辑源代码]

Sway 有一个名为 swayidle 的专用空闲管理守护程序来处理空闲会话。有不同的方法来启动和参数化守护程序。最简单的方法是使用 sway 本身的配置。 swayidle 接受大量参数来配置事件timeout (又名 空闲), resume (从睡眠中恢复), before-sleep etc。参见 swayidle(1)了解更多细节和事件的进一步解释。然后,可以为每个事件分配一个操作。要为一个事件分配多个操作,只需重复触发器即可。

根据以下说明 swayidle 可在 30 分钟后锁定屏幕,并在 5 秒后将其关闭:

~/.config/sway/config
exec swayidle -w \
	timeout 1800 'swaylock -f' \
	timeout 1805 'swaymsg "output * dpms off"' \
	resume 'swaymsg "output * dpms on"'

要更快地关闭锁定屏幕,例如在10秒后,请为锁定管理器设置进程列表,并相应地执行 swaymsg "output * dpms off" ,如下所示:

timeout 10 'if pgrep -x swaylock; then swaymsg "output * dpms off"; fi'

要在挂起和暂停任何播放媒体之前锁定屏幕,请将以下说明修改为 swayidle 命令:

before-sleep 'playerctl pause'
before-sleep 'swaylock'
注意: Systemd 也处理一些空闲事件,这些事件可能与在 sway 中配置的事件冲突。请参阅 loginctl(1) and logind.conf(5) 以获取有关如何配置它们的详细信息。

浮动窗口[编辑 | 编辑源代码]

要启用浮动窗口或窗口分配,请打开应用程序,然后使用 app_idclassinstancetitle 属性来启用浮动窗口/窗口分配。以下命令将列出所有打开的窗口的属性。

$ swaymsg -t get_tree

只获取所有打开的窗口的 app_id,请使用:

$ swaymsg -t get_tree | grep "app_id"

只获得当前选中窗口的 app_id,请使用:

$ swaymsg -t get_tree | jq -r '..|try select(.focused == true)'

如果某些窗口的app_id为 null,则可能必须使用 class 和/或 instance 属性来启用浮动模式/窗口分配。您可以搜索输出并为窗口创建细粒度规则。

~/.config/sway/config
for_window [app_id="galculator"] floating enable
assign [class="firefox"] -> 3
assign [class="^Urxvt$" instance="^htop$"] -> 9

这类似于使用 xorg-xprop 去查找 class 或者 wm_name 属性,在 X11 中。

使用多个监视器时,浮动暂存器窗口可能会变得太大,覆盖多个监视器。以下命令将浮动窗口居中并调整为当前监视器大小的 80%:

$ swaymsg move position center; swaymsg resize set 80ppt 80ppt

剪贴板[编辑 | 编辑源代码]

本文或本章节可能需要合并到Clipboard

附注: 不针对与 Sway。(在 Talk:Sway 中讨论)

默认情况下,每当窗口关闭时,剪贴板都会被清空。这可能是一个令人惊讶的默认行为。

必须安装“剪贴板管理器”才能使剪贴板的内容在窗口之间共享

举一个针对于 Wayland 而设计的剪贴板管理器clipman,它可以通过clipmanAURclipman-gitAUR进行安装。

如果要在 Sway 中使用 clipman , 请将以下行添加到配置文件中:

~/.config/sway/config
exec wl-paste -t text --watch clipman store --no-persist

Xresources[编辑 | 编辑源代码]

在 Sway 中使用 ~/.Xresources 需要把他拷贝到~/.Xdefaults

XWayland[编辑 | 编辑源代码]

请参阅 Wayland#XWayland 了解详细信息和可用软件包的概述。

默认情况下,XWayland 默认是启用状态。

如果要完全禁用 XWayland 并运行“纯”Wayland 会话,请设置以下内容以停用 XWayland 的使用:

~/.config/sway/config
xwayland disable
注意: 一些程序需要特殊的环境变量或配置选项才能在Wayland下本机运行,而其他程序(包括大多数专有应用程序)根本不支持Wayland。目前,建议将 XWayland 保持打开状态,以便可以使用旧版应用程序。

使用另一个wlroots渲染器[编辑 | 编辑源代码]

您可以通过指定WLR_RENDERER环境变量来使用另一个 wlroots 渲染器。 可用列表位于wlroots 文档.

提示和技巧[编辑 | 编辑源代码]

初始化启用 CapsLock/NumLock[编辑 | 编辑源代码]

默认情况下,sway 会在初始化启动时禁用 CapsLockNumLock 键。 要改为在启动时启用它们,请将键盘的 xkb_capslock 和/或 xkb_numlock 输入配置设置为 enable。例如,若要在所有键盘上执行此操作,请将以下行添加到 sway 配置中:

~/.config/sway/config
input * xkb_capslock enable
input * xkb_numlock enable

在任何情况下,都可以通过按键盘上的相关键来切换 CapsLockNumLock 状态。

注意: 使用通配符标识符启用这些可能会导致 Firefox 在重新加载您的 sway 配置文件时崩溃: Bugzilla 1652820,请尝试改为指定键盘

当前键盘布局[编辑 | 编辑源代码]

可以按如下方式检索当前键盘布局,其中 kbd_identifier 需要替换为键盘的标识符:

$ swaymsg -t get_inputs | jq -r '.[] | select(.identifier == "kbd_identifier") | .xkb_active_layout_name'

组合键[编辑 | 编辑源代码]

设置 PrintScreen 作为 compose key:

$ swaymsg 'input * xkb_options compose:prsc'

组合键的组合也可以在 XCompose 文件中配置,需要重新启动应用程序才能使此更改生效。

这篇文章的某些内容需要扩充。

原因: Explain what the following tip means (why is it useful). (在 Talk:Sway 中讨论)

您可以在 /usr/include/X11/keysymdef.h 中查找键名,或者使用类似于 xev(1) 的调试工具: xkbcli-interactive-wayland(1)(位于 /usr/lib/xkbcommon/)。

背光切换[编辑 | 编辑源代码]

若要使用键(例如Pause)关闭(和打开)显示器,请在 Swayconfig 中绑定以下脚本:

#!/bin/sh
read lcd < /tmp/lcd
    if [ "$lcd" -eq "0" ]; then
        swaymsg "output * dpms on"
        echo 1 > /tmp/lcd
    else
        swaymsg "output * dpms off"
        echo 0 > /tmp/lcd
    fi

屏幕捕获和屏幕共享[编辑 | 编辑源代码]

请查看 屏幕捕获#Wayland.

色温调节[编辑 | 编辑源代码]

请查看 背光#Wayland.

用键盘控制swaynag[编辑 | 编辑源代码]

Swaynag 是 sway 附带的默认警告/提示程序,仅支持用户与鼠标交互。诸如swaynagmodeAUR 之类的帮助程序可用于通过键盘快捷键启用交互。

Swaynagmode 的工作原理是首先启动 swaynag,然后侦听触发操作的信号,例如选择下一步按钮、消除提示或接受所选按钮。这些信号是通过启动带有控制参数的 swaynagmode 脚本本身的另一个实例 swaynagmode --select rightswaynagmode --confirm来发送的。

默认情况下,Swaynagmode在 sway初始化时触发 mode nag , 再退出时回复 default 。 这样,您就可以在 sway 配置中轻松定义键绑定:

~/.config/sway/config
set $nag exec swaynagmode
mode "nag" {
  bindsym {
    Ctrl+d    mode "default"

    Ctrl+c    $nag --exit
    q         $nag --exit
    Escape    $nag --exit

    Return    $nag --confirm

    Tab       $nag --select prev
    Shift+Tab $nag --select next

    Left      $nag --select next
    Right     $nag --select prev

    Up        $nag --select next
    Down      $nag --select prev
  }
}

请注意,从 sway 版本 1.2 开始,模式名称区分大小写。

您可以将 sway 配置为使用 swaynagmode 和配置命令 swaynag_command swaynagmode.

更改光标主题和大小[编辑 | 编辑源代码]

要设置 光标主题 和大小:

~/.config/sway/config
seat seat0 xcursor_theme my_cursor_theme my_cursor_size

其中 my_cursor_theme 可以设置为或替换为特定值 ,如 default, Adwaita 或者 Simple-and-Soft,以及 my_cursor_size值如 48.

您可以使用 echo $XCURSOR_SIZEecho $XCURSOR_THEME去检查它们的值。

Note that you need to restart the application to see the changes.

注意: Wayland 使用客户端光标。应用程序可能不会评估$XCURSOR_SIZE$XCURSOR_THEME的值。

使用 systemd 管理特定于 Sway 的守护程序[编辑 | 编辑源代码]

Systemd 提供了一个 graphical-session.target 用户单元,每当任何图形会话正在运行时,无论是Xorg还是Wayland,它都是活跃的。应该在所有图形环境中运行的用户服务可以绑定到该 target, 它还允许将特定于窗口管理器的目标绑定到 graphical-session.target 去启动和停止仅在该窗口管理器下运行的服务。请参阅systemd.special(7)

用户可能希望仅在当前窗口管理器为 Sway 时才启动某些服务/守护程序(如 swayidlekanshi),并且他们可能还希望这些服务在 Sway 停止时停止。此外,运行 systemd-oomd.service(8) 的用户可能希望将服务放在单独的 cgroup 中,以便单个内存密集型服务不会关闭整个 Sway 会话(请参阅 Fedora bug 报告)。

部分或全部此功能由 Arch Sway 程序包提供。例如,社区中的 sway 包提供 sway-session.target 文件,而 swaysway-gitAUR 都为/etc/sway/config.d/目录提供一个 50-systemd-user.conf 插入文件。如果 Sway config 文件包含 include /etc/sway/config.d/*则此文件将所需的环境变量导入到 systemd 用户会话和 dbus 中。

如果您打算使用下面描述的 roll-your-own 方法或使用专业包(如sway-systemd-gitAURsway-services-gitAUR)来提供功能,则应考虑删除提供相同功能的文件。

此功能可以在一个 roll-your-own 基础上通过创建一个 sway-session.target 并让那些守护进程/服务通过sway-session.target进行提供。 此 systemd 目标应该是用户目标(请参见 systemd/用户)。 例如:

~/.config/systemd/user/sway-session.target
[Unit]
Description=Sway compositor session
Documentation=man:systemd.special
BindsTo=graphical-session.target
Wants=graphical-session-pre.target
After=graphical-session-pre.target

然后,将以下行添加到 Sway 的配置文件中(例如,将该行追加到 ~/.config/sway/config或将新文件添加到 /etc/sway/config.d/):

~/.config/sway/config
...
...
...
exec_always "systemctl --user import-environment; systemctl --user start sway-session.target"

当上述行在配置文件中, 每当 Sway 启动,他也会运行 sway-session.target.

最后,将所需的服务链接到 sway-session.target。例如,添加 kanshi (或者 kanshi-gitAUR) 服务:

~/.config/systemd/user/kanshi.service
[Unit]
Description=Dynamic output configuration for Wayland compositors
Documentation=https://sr.ht/~emersion/kanshi
BindsTo=sway-session.target

[Service]
Type=simple
ExecStart=/usr/bin/kanshi

[Install]
WantedBy=sway-session.target

当这个 用户单元启用 时,它仅在 Sway 运行时激活,并在 Sway 停止时停用。

sway-session.target文件的创建和环境的导入也可以通过安装sway-systemd-gitAUR来完成。除了将服务分离到 cgroup 中之外,sway-systemd 还将每个 GUI 应用程序放在自己的 cgroup 中。这样就可以对单个应用程序施加每组资源约束。请参阅 sway-systemd README

更改屏幕分辨率[编辑 | 编辑源代码]

您可以使用图形程序 wdisplaysAUR 或终端程序 wlr-randrAUR 来更改分辨率、旋转和排列显示。

创建无外设输出[编辑 | 编辑源代码]

创建与物理 video 接口(HEADLESS-1, HEADLESS-2等), 无关的输出:

$ swaymsg create_output

打印新输出的说明:

$ swaymsg -pt get_outputs | grep -A 10 HEADLESS

使用 output 命令来配置新的输出,例如:

~/.config/sway/config
output HEADLESS-1 {
pos 1920,0
mode 1280x720@75Hz
}

疑难解答[编辑 | 编辑源代码]

应用程序启动器[编辑 | 编辑源代码]

提示:Sway 的 wiki 还包含 已知应用程序启动器的列表.

i3-dmenu-desktop, dmenu, 和 rofi 在 Sway 中都运行得相对较好,但都在 XWayland 下运行,并且都存在相同的问题,如果将光标移动到本机 Wayland 窗口,它们可能会变得无响应。此问题的原因是 Wayland 客户端/窗口无法访问输入设备,除非它们具有屏幕焦点。XWayland 服务器本身就是 Wayland 合成器的客户端,因此其 XWayland 客户端之一必须具有焦点才能访问用户输入。但是,一旦其某个客户端具有焦点,它就可以收集输入,并通过 X11 协议将其提供给所有 XWayland 客户端。因此,将光标移动到 XWayland 窗口并按 Esc 键应该可以解决此问题,有时运行 pkill 也可以。

bemenu 是一个原生的 Wayland dmenu 替代品,可以选择与 j4-dmenu-desktop 结合使用,为启动桌面文件提供 Wayland-native 组合(如 i3-dmenu-desktop):

j4-dmenu-desktop --dmenu='bemenu -i --nb "#3f3f3f" --nf "#dcdccc" --fn "pango:DejaVu Sans Mono 12"' --term='termite'

如果选择不禁用 XWayland,则可能需要将 BEMENU_BACKEND 环境变量设置为“wayland”。

您还可以使用浮动终端和 fzf 构建自己的终端,如 GitHub issue中所述。

plasma-workspace 软件包提供的 krunner 应用也可以作为启动器,提供XWayland和本机Wayland支持。

rofi-lbonn-wayland-gitAURrofi 的一个分支,可以在 Wayland 中工作,如果你需要在 X11 会话中启动它,它也有一个 -x11标志

wofi 是一个命令启动器,它提供了一些与rofi相同的功能,但在Wayland下运行。wofi缺少rofi的一些功能,如SSH模式和窗口切换模式。它基于 wlroots 库,并使用GTK3进行渲染。它与 sway 配合得很好。

虚拟化[编辑 | 编辑源代码]

Sway 可以与 VirtualBoxVMware ESXi 一起使用。

要使Sway在 QEMU 中工作,必须使用 -vga qxl 参数启动QEMU。另见 QEMU#qxl

无法从 tty 启动 Sway[编辑 | 编辑源代码]

对于 ESXi, 您需要在 Hardware Configuration > Video card settings 下启用3D支持。另见 VMware#Enable 3D graphics on Intel, Optimus and AMD

无可见光标[编辑 | 编辑源代码]

当使用某些图形驱动程序(例如VMSVGA图形控制器或专有的 NVIDIA 驱动程序)时,光标可能会变得不可见。以通过使用软件光标来解决此问题,具体讨论可以参考 [3] 中的相关内容:

$ export WLR_NO_HARDWARE_CURSORS=1

未检测到 Sway socket[编辑 | 编辑源代码]

使用 swaymsg 参数,例如 swaymsg -t get_outputs,有时会返回以下消息:

sway socket not detected.
ERROR: Unable to connect to

当在终端多路复用器(如 gnu 屏幕或 tmux)内运行时。这意味着swaymsg 无法连接到 SWAYSOCK 中提供的套接字。

要查看 SWAYSOCK 的当前值,输入:

$ env | grep -F "SWAYSOCK"
SWAYSOCK=/run/user/1000/sway-ipc.1000.4981.sock

要解决这个问题,您可以尝试基于正在运行的晃动过程连接到一个套接字:

$ export SWAYSOCK=/run/user/$(id -u)/sway-ipc.$(id -u).$(pgrep -x sway).sock

若要避免此错误,请在多路复用器之外运行该命令。

无法获取 socket 路径[编辑 | 编辑源代码]

swaymsg -t 命令请求在tty上的消息可能会返回以下消息:

Unable to retrieve socket path

SWAYSOCK 环境变量在启动Sway后设置,因此解决此错误的一个方法是在Sway内部的终端中请求 swaymsg -t [message]

按键设置和键盘布局[编辑 | 编辑源代码]

默认情况下,如果你使用多个键盘布局,例如 input * xkb_layout "us,ru",在切换到某个次要布局时可能会导致绑定失效。

感谢 https://github.com/swaywm/sway/pull/3058 ,你只需要在敏感的 bindsym 行中添加 --to-code 键,就像这样:

bindsym --to-code {
  $mod+$left focus left
  $mod+$down focus down
  $mod+$up focus up
  $mod+$right focus right
}

或者你可以创建一个变量 set $mybind bindsym --to-code,然后将所有的 bindsym 实例替换为 $mybind,就像这样: $mybind $mod+w thing

Java 应用[编辑 | 编辑源代码]

当打开一些基于Java的应用程序时,例如JetBrains的编辑器如IntelliJ、CLion或PyCharm,可能会显示空白屏幕。为了解决这个问题,可以设置环境变量 _JAVA_AWT_WM_NONREPARENTING 为1来启动应用程序。

如果你从像 rofidmenu 这样的启动器中启动应用程序,你可能希望修改应用程序的桌面入口,如 Desktop entries#Modify environment variables 所示。

在OpenJDK 11和Sway 1.5中,已经修复了一些 Java 应用程序的问题。然而,对于某些应用程序,需要进行额外的配置才能使用更新版本的 OpenJDK。对于 Android Studio 来说,你需要设置 STUDIO_JDK=/usr/lib/jvm/java-11-openjdk/[4]

边框上的滚动[编辑 | 编辑源代码]

如果在应用程序边框上使用鼠标滚轮导致Sway崩溃,您可以为 app_id(例如Firefox)使用border none 来禁用边框。

程序无法打开显示[编辑 | 编辑源代码]

如果一个程序在出现“无法打开显示”错误消息时崩溃,那么您正在使用的程序很可能是 X11程序。你可以使用 XWayland 兼容层在韦兰下运行 x11程序,详见 #XWayland

参见[编辑 | 编辑源代码]