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

时间:2014-11-21 01:48:30

标签: bash

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

配置文件“Last Modified”时间戳更新我是通过终端还是通过快捷键运行脚本。

我一直绞尽脑汁想要让它发挥作用。脚本已附上。

#/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))"

1 个答案:

答案 0 :(得分:0)

你能在这里加上引用:

if [ "$TOGGLE_STATE" = "$PEN_KEYWORD" ]; then

还有:     " $ TOGGLE_FILE"

full/path/here/xdotool

同样快速阅读xdotool文档给我的印象是,如果事件不是在终端中生成的,系统可能会忽略这些事件。我不确定你是否可以通过调用终端运行以" xdotool"开头的行来解决这个问题。如果是gnome-terminal,那就是:

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