デスクトップショートカットは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ツールを介して?

スクリプトに関しては、ショートカットマネージャでスクリプトのフルパスを定義する必要があります。~グラフィックシェルでは解釈されないため、使用しないでください。また、スクリプトを実行可能にします。

以下はあなたと同じことをするために使用するスクリプトです。 (私はこのスクリプトを他のアプリケーションで使用しているので、あなたの質問と一致するように以下のコードを「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

関連情報