![桌面快捷方式适用于 bash 脚本但不适用于实际脚本?](https://linux22.com/image/138353/%E6%A1%8C%E9%9D%A2%E5%BF%AB%E6%8D%B7%E6%96%B9%E5%BC%8F%E9%80%82%E7%94%A8%E4%BA%8E%20bash%20%E8%84%9A%E6%9C%AC%E4%BD%86%E4%B8%8D%E9%80%82%E7%94%A8%E4%BA%8E%E5%AE%9E%E9%99%85%E8%84%9A%E6%9C%AC%EF%BC%9F.png)
我需要创建一个可以绑定到键盘快捷键的脚本。如果 Mozilla 实例未打开,该脚本将打开该实例;如果打开,则该脚本将最小化或最大化窗口。有点像下拉终端。
当我从桌面快捷方式打开脚本时,该脚本正在工作,但如果我通过单击脚本直接打开脚本或将其宏到键盘快捷键,则它不会按预期工作。它只打开mozilla,但不最小化或最大化
#!/bin/bash
touch memory.txt
myvar="$( xdotool search Mozilla )"
status="$(grep [0-1] memory.txt)"
run=0
if [ $(grep -c [0-9] <<< $myvar) -gt 0 ]
then
pwd
else
(firefox &)
fi
if [ $status = 0 ]
then
$(xdotool windowminimize $myvar)
echo -n "1" > memory.txt
run=1
fi
if [ $status = 1 ] && [ $run -eq 0 ]
then
$(wmctrl -ia $myvar)
echo -n "0" > memory.txt
fi
exit
答案1
- 什么桌面环境你正在用吗?
- 您如何定义键绑定?通过脚本或 gui 或 cli 工具?
关于您的脚本,请务必在快捷方式管理器中定义脚本的完整路径。不要使用,~
因为它不会被图形 shell 解释。另外,请务必将脚本设置为可执行。
这是一个脚本,我用它来完成与您相同的事情:(我将它用于不同的应用程序,因此我更改了下面的代码来表示“firefox”以匹配您的问题。)注意:我正在使用GNOME 3.28.2 和 xdotool 3.20160805.1
#!/bin/bash
wid=$(xdotool search --onlyvisible --name 'firefox')
if test "$wid" = "" ; then exec firefox &
fi
actual=$(xdotool getactivewindow)
if test $wid = $actual ; then xdotool windowminimize $wid
else xdotool windowactivate $wid
fi
##EOF