#窗口管理器 #sway #wayland #swaywm

bin+lib swtchr

为 Sway 窗口管理器设计的 Gnome 风格窗口切换器

2 个版本

0.1.2 2024 年 3 月 20 日
0.1.1 2024 年 3 月 16 日

#1323命令行工具

MIT 许可证

1MB
1K SLoC

Tests Workflow Status (main)

swtchr

A screenshot of the swtchr window switcher over a Sway desktop

一个漂亮的 Gnome 风格窗口切换器,适用于 Sway 窗口管理器。

默认情况下,您可以使用 <Super>Tab<Super><Shift>Tab 在按访问时间排序的窗口列表中前后翻页。

安装

您可以在 发行页面 上找到预构建的二进制文件,或者您可以从源代码构建。

要从源代码构建,您需要安装以下系统依赖项

然后 安装 Rust 并运行此命令(您不需要克隆仓库)

cargo install swtchr

这将安装 swtchrswtchrd 二进制文件到 ~/.cargo/bin/

入门

要开始使用,将这些命令添加到您的 Sway 配置中,通常位于 ~/.config/sway/config。替换您安装 swtchrswtchrd 二进制文件的路径。

# Start the swtchr daemon.
exec_always ~/.cargo/bin/swtchrd

# Set up keybinds to open the window switcher.
bindsym $mod+Tab mode swtchr; exec ~/.cargo/bin/swtchr
bindsym $mod+Shift+Tab mode swtchr; exec ~/.cargo/bin/swtchr

# This is important! More information below.
mode swtchr bindsym Backspace mode default

请参阅 配置 swtchr 了解如何自定义行为和快捷键。

请参阅 自定义外观 了解如何自定义外观。

请参阅 Sway 快捷键 了解 mode swtchr 部分的工作原理。

请参阅 使用 systemd 了解如何通过 systemd 服务而不是通过您的 Sway 配置来启动 swtchr 守护进程。

请参阅 食谱 了解如何配置 swtchr 的不同示例。

配置 swtchr

您可以在 ~/.config/swtchr/swtchr.toml 中配置 swtchr 的行为和快捷键。首次启动 swtchr 守护进程时,将生成一个具有合理默认值的示例配置文件。

示例配置文件中的注释记录了每个选项的作用。您可以在 src/swtchr.toml 中找到它。

swtchr 将在这些位置中查找 swtchr.toml 文件

  1. $XDG_CONFIG_HOME/swtchr/swtchr.toml
  2. ~/.config/swtchr/swtchr.toml

自定义外观

您可以使用 GTK CSS 自定义窗口切换器的样式。只需将 CSS 文件拖放到这里

~/.config/swtchr/style.css

您可以查看默认样式表 src/style.css 作为示例。

此外,您还可以打开交互式 GTK 调试器来检查对象,查看它们的 CSS 类,并实时应用 CSS 样式

env GTK_DEBUG=interactive swtchrd

swtchr 将在这些位置查找 style.css 文件

  1. $XDG_CONFIG_HOME/swtchr/style.css
  2. ~/.config/swtchr/style.css

Sway 键绑定

您需要配置 Sway 配置中的键绑定来打开窗口切换器。所有其他 swtchr 键绑定都在 swtchr 配置文件 中配置。

让我们分解在 入门 中设置的 Sway 键绑定

bindsym $mod+Tab mode swtchr; exec ~/.cargo/bin/swtchr
bindsym $mod+Shift+Tab mode swtchr; exec ~/.cargo/bin/swtchr

我们使用 <Super>Tab 既可以打开窗口切换器,也可以在它打开时切换窗口。为了防止 Sway 在窗口切换器打开后消耗这些按键,我们需要更改 Sway 绑定模式。当窗口切换器关闭时,swtchr 将自动将您的绑定模式切换回 default

mod swtchr bindsym Backspace mode default

Sway 只允许您更改绑定模式,如果您已配置一个键绑定以返回到 default 模式,因此您还需要此行。如果 swtchr 守护进程在切换回 default 模式之前崩溃,您可能需要使用此键绑定。

使用 systemd

而不是通过 Sway 配置中的 exec_always 命令启动 swtchr 守护进程,您可能想使用 systemd 服务。这启用了故障重启行为,并使检查日志变得更容易。

etc/swtchrd.service 中提供了一个示例 systemd 单元文件。更新 ExecStart= 行以匹配您安装 swtchrd 二进制文件的路径,然后将其放在这里

~/.config/systemd/user/swtchrd.service

从那里,您可以使用此命令启动 swtchr 守护进程,并在您登录 Sway 会话时配置它自动启动

systemctl --user enable --now swtchrd.service

如果您的发行版没有将 Sway 与 sway-session.target 一起打包,请查看有关如何自行处理的这些文档

配方

默认情况下,swtchr 仅在您释放 <Super>Tab / <Super><Shift>Tab 时将焦点切换到选定的窗口。您可以选择启用“窥视”以在切换器中循环窗口时立即切换窗口焦点。

# swtchr.toml

[keymap]

#next = "<Super>Tab"
peek_next = "<Super>Tab"

#prev = "<Super><Shift>Tab"
peek_prev = "<Super><Shift>Tab"

您可以通过配置 swtchr 的单独键绑定来代替在释放 <Super>Tab / <Super><Shift>Tab 时切换窗口焦点和关闭窗口切换器,即 a) 切换到选定的窗口或 b) 关闭窗口切换器。

# swtchr.toml

dismiss_on_release = false
select_on_release = false

[keymap]

dismiss = "Escape"
select = "Return"

依赖项

~26MB
~563K SLoC