桌面快捷方式适用于 bash 脚本但不适用于实际脚本?

桌面快捷方式适用于 bash 脚本但不适用于实际脚本?

我需要创建一个可以绑定到键盘快捷键的脚本。如果 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

相关内容