#keyboard-layout #sway #save #file #i3status #xkb-layout #xkb-active-layout

app klavaro

在Sway中打印当前xkb_layout

3个版本 (稳定版)

1.0.1 2022年9月19日
1.0.0 2022年3月28日
0.1.0 2022年3月28日

#674 in 硬件支持

GPL-3.0-or-later

16KB
63

klavaro

将当前键盘布局(xkb_active_layout)保存到Sway上的文件。与i3status一起使用很有用。

$ klavaro --help
Print the current xkb_layout in sway.
The default output file is `/tmp/.xkb_lingvo'
USAGE:
    klavaro [OUTPUT_FILE]

安装

本地

安装到 $HOME/.cargo/bin/klavaro

cargo install klavaro

全局

安装到 /usr/local/bin/klavaro

sudo -E cargo install --root /usr/local klavaro

i3status

您可以在i3status中以这种方式打印当前Sway键盘布局

~/.i3status.conf
order += "read_file keyboard"

read_file keyboard {
        path = "/tmp/.xkb_lingvo"
        color_good = "#FFFFFF"
}

但是,klavaro程序必须已经运行,这可以通过以下方式通过systemd用户服务来实现。

SystemD用户服务

由于sway是一个用户进程,因此必须使用systemd 用户服务来成功获取SWAYSOCK

这是所需的service文件

/etc/systemd/user/klavaro.service
[Unit]
Description=klavaro

[Service]
Type=simple
ExecStart=/usr/local/bin/klavaro
Restart=always
RestartSec=1s

[Install]
WantedBy=multi-user.target

然后可以启动服务

systemctl --user enable klavaro # Schedule klavaro on startup.
systemctl --user start klavaro  # Start klavaro immediately.

swaymsg

这基本上等同于(但比它muuch更高效)

swaymsg -r -t subscribe -m '["input"]' \
   | jq '.input.xkb_active_layout_name'

并将结果保存到文件中。

依赖项

~0.8–1.7MB
~37K SLoC