#键盘快捷键 #Linux #Wayland #窗口管理器 #键盘输入

app swaywm-alttab

一个工具,将熟悉的Alt-Tab快捷键带到Linux上的Sway WM工作空间

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

Download history 1/week @ 2024-03-21 15/week @ 2024-03-28 1/week @ 2024-04-04 100/week @ 2024-06-06 15/week @ 2024-06-13

每月115次下载

GPL-3.0或更高版本

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 evtestsudo 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