我有一个脚本可以重新映射我的键盘。它在登录时按预期执行,但在恢复时不起作用。命令是xmodmap .Xmodmap
或带有完整路径:/usr/bin/xmodmap /home/arash/.Xmodmap
。
我使用了 Ubuntu 的启动应用程序流程,对于恢复,我遵循这通过添加 bash 脚本到/lib/systemd/system-sleep
:
#!/bin/sh
case $1/$2 in
pre/*)
echo "Going to $2..."
exit 0
;;
post/*)
echo "Waking up from $2..."
/usr/bin/xmodmap /home/arash/.Xmodmap
;;
esac
并使其可执行sudo chmod x+a
。
由于某种原因,它不起作用,我只能在日志中看到以下消息:
/lib/systemd/system-sleep/key_corrector.sh 失败,退出状态为 1。
通过搜索,我遇到了一些类似的情况,(例如这或者这),但它们都没有提供任何帮助。我愿意接受任何能一劳永逸地解决这个问题的想法!
更多信息:
- 我正在使用 Ubuntu 18.04。
- 它曾经能用一段时间。但我相信过了一段时间后
autoremove
它就坏了。 - 我几乎是个菜鸟,更喜欢最简单的答案。bash 脚本或位置中是否存在任何错误
更新:
所有这些方法的组合对我来说都很有效只要我不重启。不过,我不确定为什么以前没有,现在又为什么会这样。不过,仅供参考,这是我做的:
基于这key_corrector.service
,我制作了一个包含以下内容的服务:
[Unit]
Description=Corrects the key hopefully...
After=sleep.target
StopWhenUnneeded=yes
[Service]
Type=oneshot
User=arash
RemainAfterExit=yes
ExecStop=/home/arash/k.sh
[Install]
WantedBy=sleep.target
并通过以下方式激活它
sudo systemctl enable key_corrector
请注意,我必须User
按照该答案的最后一条评论所示添加服务。此外,如所述这里必须k.sh
通过以下方式使脚本(在我的情况下)可执行:
sudo chmod +x /home/arash/k.sh
最后,k.sh
我不得不将 设置DISPLAY
为零。此 bash 文件的完整污染如下:
#!/bin/sh
DISPLAY=:0.0 ; export DISPLAY
/usr/bin/xmodmap /home/arash/.Xmodmap
参照这答案也是如此,我使用了每个命令的绝对路径。