服务重启动太快了, 试下Restart=on-failure
另外你都设置User是root了就不要画蛇添足用sudo啊……
参考:Systemd Restart=always is not honored - Unix & Linux Stack Exchange
服务重启动太快了, 试下Restart=on-failure
另外你都设置User是root了就不要画蛇添足用sudo啊……
参考:Systemd Restart=always is not honored - Unix & Linux Stack Exchange
好的,我试试.非常感谢
我也试过systemd的方式,没成功。现在就是直接扔到了.xinitrc,反正终端界面也用不到。然后在visudo里面加入 xxx ALL=NOPASSWD:/home/xxx/bin/xkeysnail,这样的话sudo启动不需要密码。
大家现在使用xkeysnail一般都是做什么用呢,原来的keysnail和firefox结合在一起,感觉很强大。可惜现在不能使用了。我现在也是使用xkeysnail简单的进行一些按键的设定,感觉使用的频率不怎么大。或许这个插件还有什么我没有发现的很强大的功能?
我也是才发现xkeysnail.
看github上面的介绍, 就是一个全局的键盘映射工具. 切换软件时能用同一套快捷键.
我相信开发这个软件的人的初衷,也是想全局化emacs快捷键.
macos 保留了unix里面的快捷键,我不知道linux为什么没有保留下来?我一直很郁闷, 直到看到xkeysnail.
我也非常期待大神的 EAF. 我觉得这个才是解决全键盘操作的正确打开方式.
自成体系,各行其是,是谓“自由之代价”。
欲得自由之权利,必亲陷其中,千转百回,名曰“折腾”。
放弃应有之权利,择人代其行事,是谓“权利之让渡”。
所以,开发者其实是。。。代理人?
你可以试试 surfingkeys 我一直在chromium用的 比vimium好用很多
知道两个键盘如何同时生效吗?我现在笔记本一个自带的键盘,还有一个外接键盘。设置好xkeysnail后,发现在外接键盘上不能生效。我尝试按照网上的教程禁用笔记本上自带的键盘,但是还是禁止不了。不知道为什么。
我参照这个网页也试了一下,出现了下面这种错误,请问该如何解决?
❯ cd ~/.config/systemd/user/
❯ ls
xkeysnail.service
❯ systemctl --user enable xkeysnail
Failed to enable unit: Unit file /home/hcj/.config/systemd/user/default.target.wants/xkeysnail.service does not exist.
❯ sudo systemctl --user enable xkeysnail
[sudo] hcj 的密码:
Failed to connect to bus: 没有那个文件或目录
❯ groups
sys network power lp input wheel autologin hcj uinput
yay -S xkeysnail-git
sudo groupadd uinput
sudo useradd -G input,uinput xkeysnail -s /sbin/nologin
input.rules 文件内容如下
KERNEL=="event*", NAME="input/%k", MODE="660", GROUP="input"
uinput.rules 文件内容如下
KERNEL=="uinput", GROUP="uinput"
su root
sudo udevadm control --reload-rules && udevadm trigger
sudo vim /etc/systemd/system/xkeysnail.service
内容如下
[Unit]
Description=xkeysnail
Requires = display-manager.service
After = display-manager.service
[Service]
user=root
KillMode=process
ExecStartPre=/usr/bin/xhost +SI:localuser:root
#修改为自己的配置文件路径
ExecStart=/usr/bin/xkeysnail --quiet ~/config.py
Type=simple
Restart=always
RestartSec=10
# Update DISPLAY to be the same as `echo $DISPLAY` on your graphical terminal.
Environment=DISPLAY=:0
[Install]
WantedBy=default.target
sudo systemctl start xkeysnail #开启服务
sudo systemctl status xkeysnail #查看服务状态
sudo systemctl enable xkeysnail #设置服务自启动
# xhost启动问题
##安装xhost
-yay -S xorg-xhost
##设置xhost自启动
系统设置——开机和关机——自动启动
- /usr/bin/xhost +SI:localuser:root
谢谢,昨天权限问题没有调整好,按照这个解决了
在 xkeysnail-macos 里面,找到了更简单的配置,只需配置一个自启动服务。
sudo vim /etc/systemd/system/xkeysnail.service
内容如下
[Unit]
Description=xkeysnail
[Service]
Type=simple
KillMode=process
#修改为自己的配置文件路径
ExecStart=/usr/bin/sudo /usr/bin/xkeysnail --quiet ~/config.py
ExecStop=/usr/bin/sudo /usr/bin/killall xkeysnail
Restart=on-failure
RestartSec=3
Environment=DISPLAY=:0
[Install]
WantedBy=graphical.target
sudo systemctl start xkeysnail #开启服务
sudo systemctl status xkeysnail #查看服务状态
sudo systemctl enable xkeysnail #设置服务自启动
赞,前置步骤都可以省略了吗,是因为改到了 graphical.target ?还有 xhost 呢?
之前我试过 ExecStartPre 的方法不行,于是把 xhost +SI:localuser:root & 放在了 .xinitrc
建议看下这里的配置,都写清楚了。
文档已经看过了,疑惑在于为什么他的配置可以简化至此,粗查了 systemd 的 graphical.target 还没有得到答案
不好意思一下问了太多问题,我还是等回家摸到电脑自己试试吧
你自己先试下,我也不是很懂😄️。
我说下我自己的理解:
xkeysnail
需要监听输入事件做映射,只有root用户才有监听输入的权限。而在 service
里面应该是不好拿到 root
权限。
xkeysnail
用户,并指定给该用户监听输入的权限。用该用户启动 xkeysnail
。(第一种配置就是这么干的,配置比较麻烦)xhost
命令:X服务器的访问控制工具。 xhost +SI:localuser:root
允许 root
用户访问正在执行的X服务。这样 service
中就可以 sudo
拿到 root
权限,执行 xkeysnail
。(配置比较简单,但是 root 运行程序有风险)谢谢!终于弄明白了,配置也试过了。之前我裸眼对比,没注意到后面到配置加了 sudo
service 的自启动方式, 在我电脑上用着偶尔会崩掉. 于是 翻了一下 issues. 发现了更简单的获取 sudo 权限的方式 https://github.com/mooz/xkeysnail/issues/64
sudo groupadd -f uinput
sudo gpasswd -a $USER uinput
cat <<EOF | sudo tee /etc/udev/rules.d/70-xkeysnail.rules
KERNEL=="uinput", GROUP="uinput", MODE="0660", OPTIONS+="static_node=uinput"
KERNEL=="event[0-9]*", GROUP="uinput", MODE="0660"
EOF
##修改为自己的配置文件路径
xkeysnail --quiet ~/config.py
请教一下,xkeysnail
能否改变 Capslock 按键的行为:
之所以有这个需求,是因为我在 Mac 和 Windows 通过 karabiner 和 AHK 已经实现了这个需求,希望 Arch Linux 下也能统一输入法切换的体验。