Seven's blog

你不会找到路,除非你敢于迷路

0%

wine 应用程序全局快捷键无效的解决方案

前言

在 Ubuntu 下我们经常会使用 Wine 或者 Crossover 运行 Windows 应用程序. 当应用程序切换到后台时, 是无法响应预设的全局快捷键的. 比如”打开微信”的快捷键 ctrl + alt + w 在这种情况下就无法响应.

我们可以借助一个小工具 xdotool 来解决这个问题.

注:

  • 此方法在 Ubuntu 17, 18, 19 全系列测试通过, 其他平台未作测试, 理论通用;
  • 本文以 “打开微信” 快捷键为例, 其他应用以此类推;

方法

1. 安装 xdotool

直接在命令行运行以下命令即可:

1
sudo apt install --no-install-recommends xdotool

2. 编写 xdotool 脚本

*思路: Wine 应用在后台无法接收到快捷键状态, 此时借助 xdotool 向 Wine 应用发送模拟按键信息即可. *

在合适的位置新建一个脚本文件 “open_wechat.sh”, 写入以下内容:

1
2
3
4
#!/bin/sh
#在当前运行的应用中找到名为WeChat.exe的应用程序,并向它发送按键事件"ctrl+alt+W"
#WeChat的可执行文件名为WeChat.exe,如果是其它应用程序就修改成其它应用程序的可执行文件名, 应用名称大小写敏感, 一个字母都不能错!
xdotool key --window $(xdotool search --limit 1 --all --pid $(pgrep WeChat.exe)) "ctrl+alt+W"

赋予脚本可执行权限:

1
chmod +x open_wechat.sh

如果此时你的微信正好运行在后台, 执行这个脚本就可以把它召唤到前台. 如果没有, 请检查脚本是否有错误.

3. 设置快捷键

图形界面依次打开 “设置” -> “设备” -> “键盘”, 点击列表最底部的 “+” 号添加自定义快捷键.

快捷键设置

  • 名称随便, 填写 “打开微信” 即可;
  • 命令填写刚才编写的脚本的全路径;
  • 快捷键设置自己想用的快捷键即可, 建议于应用内部快捷键相同;
  • 最后点击”添加”即可.

4. 验证

到这里已经设置成功了, 打开微信, 切换到后台, 然后按下刚才设置的快捷键就能召唤应用至前台. 如果不能, 请检查自己前面的设置是否有误.

后记

其他应用以此类推, 还是那句话, 之后的事情对于敢玩 Ubuntu 的你只能是小菜一碟了, 加油!

Q&A

  1. 如何获取 Wine 应用名称?

    先启动目标应用, 然后使用 ps 命令查看即可, 运行:

    1
    ps aux | grep wine

    从中查找自己的应用名称.

致谢

这个方法是一个 QQ 交流群中名为 “简单” 得大佬教给我的, 略加整理, 发布至此. 感谢大佬的贡献.

微信公众号
扫码关注, 一起进步!