Bash 脚本在命令行中正常运行,但不能通过快捷键(Xournal、xdool)运行

Bash 脚本在命令行中正常运行,但不能通过快捷键(Xournal、xdool)运行,bash,Bash,我正在写一个小脚本,允许我在Xournal的笔CTRL+SHIFT+p和高亮CTRL+SHIFT+H之间切换。我编写了一个脚本,使用配置文件记录手写笔的最后一个状态,读取该状态,并将其更改为备用手写笔状态;所有这些都可以映射到一个键。我已经在终端中使用命令行对这个脚本进行了彻底的测试,效果很好。但是,当我指定一个快捷键来触发脚本时,切换不起作用 无论是通过终端还是通过快捷键运行脚本,配置文件Last Modified timestamp都会更新 我一直在绞尽脑汁想办法让它发挥作用。脚本附在后面

我正在写一个小脚本,允许我在Xournal的笔CTRL+SHIFT+p和高亮CTRL+SHIFT+H之间切换。我编写了一个脚本,使用配置文件记录手写笔的最后一个状态,读取该状态,并将其更改为备用手写笔状态;所有这些都可以映射到一个键。我已经在终端中使用命令行对这个脚本进行了彻底的测试,效果很好。但是,当我指定一个快捷键来触发脚本时,切换不起作用

无论是通过终端还是通过快捷键运行脚本,配置文件Last Modified timestamp都会更新

我一直在绞尽脑汁想办法让它发挥作用。脚本附在后面

#/bin/bash
# Script to make stylus tips toggle between pen and highlighter as well as color

TOGGLE_FILE=/home/mustafa/bin/toggle.config
source $TOGGLE_FILE
HIGHLIGHTER_KEYWORD="hi"
PEN_KEYWORD="pen"

# Conditions to switch toggle state from highligther to pen or vice versa
if [ $TOGGLE_STATE = $PEN_KEYWORD ]; then
    xdotool key "control+shift+H"
    TOGGLE_STATE=$HIGHLIGHTER_KEYWORD
else
    xdotool key "control+shift+P"
    TOGGLE_STATE=$PEN_KEYWORD
fi

# Replaces the toggle file with new toggle state
echo "TOGGLE_STATE=\"$TOGGLE_STATE\"" > $TOGGLE_FILE
notify-send "$(echo $(cat $TOGGLE_FILE))"

您能在这里添加报价吗:

if [ "$TOGGLE_STATE" = "$PEN_KEYWORD" ]; then
而且: $TOGGLE\u文件

full/path/here/xdotool
另外,快速阅读xdotool文档给我的印象是,如果事件不是在终端中生成的,系统可能会忽略它们。我不确定是否可以通过调用一个终端来运行从xdool开始的行来绕过这个问题。如果是gnome终端,则为:

gnome-terminal -e 'what-ever-command'

考虑为你正在使用的操作系统和硬件平台添加一个标签…分配一个快捷键,可以是从Atari到Cray的任何东西;-祝你好运。快捷方式的详细信息?调用脚本的是ctrl+alt+backspace。脚本在~/bin中。你浪费了两个进程和一个磁盘往返$echo$cat文件,其中echo完全是浪费,cat可以简单地替换为你刚才写入文件的值。我这样做了,它的行为也一样。使用快捷键时不会切换,而使用命令行时会切换。