Linux Mint 18.3 Cinnamon下为Lightshot创建PrtSc快捷键的问题
解决Linux Mint Cinnamon下Lightshot自定义快捷键无效的问题
我之前也碰到过一模一样的情况——终端里能正常触发的命令,放到系统自定义快捷键里就完全没反应,核心问题其实和系统执行命令的环境有关,下面给你拆解原因和解决方案:
问题根源
- Shell解析逻辑差异:终端里运行命令时,是通过bash/zsh这类shell来解析的,能正确处理
$(...)这种命令替换语法;但Cinnamon的自定义快捷键默认是直接执行命令,不会调用shell来解析嵌套的命令结构,导致$(pgrep Lightshot)和$(xdotool search...)这些动态获取值的部分无法被正确解析,命令自然跑不起来。 - 环境变量不一致:快捷键运行时的系统PATH环境变量和终端里的不一样,有可能找不到
xdotool或者pgrep的执行路径,间接导致命令失败。
解决方法
方法一:用Shell脚本包裹命令(推荐,稳定易调试)
这种方式能彻底规避环境和解析的问题,还方便后续调试:
- 先创建一个脚本存放目录(如果没有的话):
mkdir ~/scripts
- 编辑脚本
~/scripts/lightshot_screenshot.sh,内容如下:
#!/bin/bash # 用绝对路径执行命令,避免环境变量找不到工具的问题 LIGHTSHOT_PID=$(/usr/bin/pgrep Lightshot) if [ -n "$LIGHTSHOT_PID" ]; then LIGHTSHOT_WINDOW=$(/usr/bin/xdotool search --limit 1 --all --pid "$LIGHTSHOT_PID" --name Lightshot) if [ -n "$LIGHTSHOT_WINDOW" ]; then /usr/bin/xdotool key --window "$LIGHTSHOT_WINDOW" Print else echo "$(date): Lightshot窗口未找到" >> ~/lightshot_screenshot.log fi else echo "$(date): Lightshot进程未运行" >> ~/lightshot_screenshot.log fi
- 给脚本添加执行权限:
chmod +x ~/scripts/lightshot_screenshot.sh
- 打开Cinnamon的「自定义快捷键」设置,添加新快捷键,命令栏填写脚本的绝对路径(比如
/home/vlastimil/scripts/lightshot_screenshot.sh),触发键设为PrtSc即可。
方法二:直接用bash -c包裹命令(快速临时方案)
如果不想写脚本,也可以直接在快捷键命令框里强制用bash解析整个命令,注意引号的写法:
bash -c 'xdotool key --window $(xdotool search --limit 1 --all --pid $(pgrep Lightshot) --name Lightshot) Print'
不过这种方式后续修改或调试会比较麻烦,不如脚本直观。
调试技巧
如果设置后还是没效果,可以查看脚本生成的日志文件~/lightshot_screenshot.log,里面会记录具体是进程未找到还是窗口未找到:
- 要是显示「Lightshot进程未运行」,那得检查你的开机自启设置是否生效;
- 要是显示「Lightshot窗口未找到」,可以尝试调整
xdotool search的参数,比如去掉--name Lightshot,换成--class Lightshot试试。
内容的提问来源于stack exchange,提问作者Vlastimil Burián
相关产品推荐
相关产品推荐

