我有一个启动脚本,有时在启动时运行,有时不运行(我不知道为什么)。这对我来说是个问题,因为脚本交换了键盘上的键,所以我需要在桌面加载后交换键。我编写了一个systemd服务,但它无法工作。这是我的服务档案。
# /etc/systemd/system/keySwap.service
[Unit]
Description=Swaps right Option key with Right CMD key
After=display-manager.service
[Service]
ExecStart=/home/jedrek/keyboard_keys_swapper.sh
[Install]
WantedBy=default.target在图形环境中,当我在终端中手动运行服务时,它会出错。
sudo systemctl start keySwap
sudo systemctl status keySwap
● keySwap.service - Swaps right Option key with Right CMD key
Loaded: loaded (/etc/systemd/system/keySwap.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2022-04-05 18:57:24 CEST; 4s ago
Process: 12028 ExecStart=/home/jedrek/keyboard_keys_swapper.sh (code=exited, status=1/FAILURE)
Main PID: 12028 (code=exited, status=1/FAILURE)
kwi 05 18:57:24 Home systemd[1]: Started Swaps right Option key with Right CMD key.
kwi 05 18:57:24 Home keyboard_keys_swapper.sh[12029]: xmodmap: unable to open display ''
kwi 05 18:57:24 Home keyboard_keys_swapper.sh[12030]: xmodmap: unable to open display ''
kwi 05 18:57:24 Home systemd[1]: keySwap.service: Main process exited, code=exited, status=1/FAILURE
kwi 05 18:57:24 Home systemd[1]: keySwap.service: Failed with result 'exit-code'.shell脚本只需交换键:
#!/bin/bash
xmodmap -e "keycode 108 = Super_R"
xmodmap -e "keycode 134 = ISO_Level3_Shift"我知道xmodmap需要加载图形桌面,所以我不明白为什么它不能工作。我该如何解决我的问题?
发布于 2022-04-07 18:18:21
通常,systemd服务是使用X11做任何事情的错误地方。这应该在提供登录提示之前初始化显示的脚本中完成,或者作为用户会话启动脚本的一部分完成。
此外,xmodmap似乎是更改键绑定的过时方法,因为国际化工具也会重新映射键盘,任何使用xmodmap的尝试充其量都是暂时的,因为I18n工具将在键盘更改、屏幕锁定或解锁以及用户GUI会话管理器重新初始化时更改xmodmap。
https://unix.stackexchange.com/questions/698104
复制相似问题