gex*_*ide 8 startup suspend xmodmap
我正在使用 Ubuntu 14.04。
我有一个自定义的 Xmodmap 键盘布局。但是,当我在暂停后恢复时,布局消失了。
我已经尝试了这个问题的答案中提到的所有内容: 如何在登录时设置 Xmodmap?
使用 .xinitrc 或在启动应用程序中添加命令都不起作用。好吧,它们在通常重新启动后确实可以工作,但在挂起之后就不行了。
有没有一个文件,无论是重启还是从挂起恢复,登录后总是执行?
@i08in https://askubuntu.com/a/92235/72576似乎可以完成这项工作。
这就是我在 Debian jessie、KDE 上的最终结果。
/etc/pm/sleep.d/20_xmodmap.sh
case "${1}" in
resume|thaw)
su $USER -c "sleep 3; /usr/bin/xmodmap /home/$USER/.Xmodmap" &
;;
esac
Run Code Online (Sandbox Code Playgroud)
注意:一开始它可能看起来不起作用,但请等待一分钟左右。X 似乎有一些东西导致了这种延迟,尽管我还没有足够关心去检查它......有关更多信息,请参阅https://superuser.com/q/626769/185360 。
小智 0
所有这些都是废话代码。你们真的对 XAUTHORITY 和 DISPLAY 没有任何问题吗?我不相信。所以这是真正有效的解决方案(记住将 $USER 替换为您的用户名):
步骤 1. 使用映射生成“.Xmodmap”文件,在我的例子中是:
keycode 96 = XF86AudioLowerVolume
keycode 95 = XF86AudioMute
keycode 76 = XF86AudioNext
keycode 75 = XF86AudioPlay
keycode 74 = XF86AudioPrev
Run Code Online (Sandbox Code Playgroud)
并将其放在 /home/$USER/.Xmodmap 路径下
步骤 2. 创建启动应用程序首选项(从超级按钮搜索菜单转到启动应用程序首选项)并添加以下内容:
Name: xmodmap
Command: /bin/bash -c "sleep 7 && xmodmap ~/.Xmodmap"
Comment:
Run Code Online (Sandbox Code Playgroud)
并保存。并关闭启动应用程序首选项
步骤 3. 现在转到 /usr/lib/systemd/system-sleep 文件夹,如下所示:
cd /usr/lib/systemd/system-sleep
Run Code Online (Sandbox Code Playgroud)
步骤4.创建一个名为“xkeyboard.sh”的文件,你可以这样做(需要sudo权限):
sudo touch xkeyboard.sh
Run Code Online (Sandbox Code Playgroud)
步骤5.现在获取您的$XAUTHORITY变量值,您可以这样做:
echo $XAUTHORITY
Run Code Online (Sandbox Code Playgroud)
就我而言,它返回了以下内容:
/run/user/1000/gdm/Xauthority
Run Code Online (Sandbox Code Playgroud)
把它写在某处
步骤6.打开新创建的文件进行编辑,你可以这样做:
sudo nano xkeyboard.sh
Run Code Online (Sandbox Code Playgroud)
第7步:粘贴此代码。确保将 $USER 替换为您的用户名,将 $XAUTH 替换为您之前记下的变量:
#!/bin/bash
echo "Running xkeyboard.sh with argument: $1" >> /tmp/xkeyboard.log
if [ "${1}" == "pre" ]; then
echo "pre" >> /tmp/xkeyboard.log
# Nothing to do for pre-sleep
elif [ "${1}" == "post" ]; then
echo "post" >> /tmp/xkeyboard.log
export DISPLAY=:0 # Set the DISPLAY variable
export XAUTHORITY=$XAUTH
/bin/bash -c "sleep 7 && xmodmap home/$USER/.Xmodmap" >> /tmp/xkeyboard.log 2>&1
fi
Run Code Online (Sandbox Code Playgroud)
在此代码中,我已将日志记录添加到 /tmp/xkeyboard.log 文件,因此如果键盘映射不起作用,您可以去那里检查发生了什么问题。
归档时间: |
|
查看次数: |
2054 次 |
最近记录: |