5个版本
0.3.2 | 2023年9月27日 |
---|---|
0.3.1 | 2023年9月27日 |
0.3.0 | 2023年9月27日 |
0.2.2 | 2023年9月26日 |
0.2.1 | 2023年9月26日 |
#500 in GUI
每月115次下载
24KB
337 行
swaywm-alttab
一个工具,将堆叠窗口管理器(在Windows、Mac、KDE、GNOME等中使用)中的熟悉Alt-Tab快捷键带到Linux上的Sway WM工作空间
安装
使用cargo安装二进制crate
cargo install --git https://github.com/ar7eniyan/swaywm-alttab
swaywm-alttab
二进制文件将位于~/.cargo/bin
,如果需要,请将其添加到PATH
待办事项:制作AUR包。
配置
为了使用此程序,您需要找到键盘的输入设备文件。输入设备文件由Linux内核放置在/dev/input/eventN
。有一些工具可以显示可用的输入设备:例如sudo evtest
或sudo libinput debug-events
。不使用任何第三方软件,可以通过cat /proc/bus/input/devices
找到输入设备的名称和其他属性。
设置键盘输入/输出权限
为了使swaywm-alttab
能够作为非特权用户正确访问输入设备和uinput内核设备,应执行以下步骤
- 为
/dev/input/
和/dev/uinput
创建udev规则/etc/udev/rules.d/72-swaywm-alttab-input.rules
:
待办事项:这会在系统上造成安全风险吗?KERNEL=="uinput", MODE="0660", TAG+="uaccess" SUBSYSTEM=="input", MODE="0660", TAG+="uaccess"
- 创建
uinput
内核模块以在启动时加载(在Arch上至少不会自动加载)/etc/modules-load.d/uinput.conf
:uinput
- 重启或运行以下命令
# Reload udev rules sudo udevadm trigger sudo udevadm control --reload # Load uinput kernel module sudo modprobe uinput
用法
找到键盘的/dev/input/eventN
路径并设置权限后,在终端中启动工具以检查是否一切正常。将输入设备路径作为参数传递,将N
替换为您的实际设备编号
~/.cargo/bin/swaywm-alttab /dev/input/eventN
实际的快捷键不是Alt+Tab,而是(LMeta|RMeta)+Tab
,遵循Sway默认使用Meta键进行导航。关注不同的工作空间,以便工具开始跟踪它们,然后按键组合以查看它是否正常工作。
在 sway 启动时运行 swaywm-alttab
,请将以下行添加到 ~/.config/sway/config
exec ~/.cargo/bin/swaywm-alttab /dev/input/eventN
自定义快捷键
默认快捷键为 (LMeta|RMeta)+Tab
,请记住。但如果您愿意,您可以使用 --modifiers
和 --trigger
选项来配置任何键组合。例如,如果使用提到的选项重复配置,默认设置将如下所示:swaywm-alttab --modifiers KEY_LEFTMETA KEY_RIGHTMETA --trigger KEY_TAB <input device>
。支持的关键名称(如 KEY_TAB
等)列在 这里,并且是从 Linux API 代码 中的 EV_KEY
键盘码名称。应用程序支持设置 1 或 2 个修饰键,如果您需要更改它,则恰好需要一个触发键。
要使用 Alt+Tab 快捷键而不是 Meta+Tab(如大多数平台上的情况),请按如下方式运行应用程序
~/.cargo/bin/swaywm-alttab <input device> --modifiers KEY_LEFTALT
警告:传递 --modifiers
选项时请小心,因为它最多可以接受两个值,这可能导致错误地将路径解析为键名
~/.cargo/bin/swaywm-alttab --modifiers KEY_LEFTALT <input device>
error: invalid value '<input device>' for '--modifiers <MODIFIERS>...': no such key code
调试
要启用日志记录,请将环境变量 RUST_LOG 设置为以下值之一:error、warn、info、debug、trace。默认日志级别是 info。有关更复杂的选择器,请参阅 env_logger 的文档。
进一步开发
- 找到一种更方便的方法来切换工作空间(理想情况下,通过其 con_id)
- 使键组合可配置
- 如果可能,实现输入设备自动检测
- 添加类似于 sov 的工作空间概览 UI
许可证:GNU GPLv3,请参阅 COPYING
Copyright (C) 2023 Arseniy Kuznetsov
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
依赖项
约 5–7.5MB
约 140K SLoC