web-dev-qa-db-ja.com

Bashスクリプトはキーボードショートカットでは実行できません

/home/username/にこのスクリプトがあります

そして、次のコードでターミナルを介して実行できます

./script.sh

または

sh script.sh

動作します(実行許可があります)

しかし、キーボードショートカットに割り当てることはできません。キーボードショートカットの「カスタムショートカット」タブでショートカットを追加しています。また、xbindkeysも試しました。

私が今まで試したのは(ショートカットキーのコマンドに追加したものです)

bash "/script.sh"
bash "./script.sh"
bash "home/username/script.sh"
home/username/script.sh
sh "/script.sh"
"/script.sh"
/script.sh
gnome-terminal "/home/username/script.sh

そして、私が覚えていないことをもっとたくさん。

誰でも問題を伝えることができますか?

4
afedersin

キーボードショートカットにスクリプトを追加するには:

  1. nlessスクリプトは$PATH~/binなど)にあり、スクリプトにフルパスを使用し、~は使用しないでくださいまたは相対パス。
  2. フルパスを使用する場合は、(常に)スラッシュで開始します。例:

    sh /home/username/script.sh
    

    あなたの例はそうではありません:)

  3. スクリプトが実行可能な場合、justがフルパスになります:

    /home/username/script.sh
    

    そうでない場合は、前述の言語を使用します。例:

    sh /home/username/script.sh
    

あなたの例の問題は何ですか

あなたが示す試みでは、間違ったパスを使用します(home/some_dirはスラッシュなしの有効なディレクトリではありません)、別のパスを使用してから意味する(/script.shはルートディレクトリを参照します)または相対パスを使用します。それらはどれもショートカットキーからは機能しません。

ちなみに、同じ規則がスタートアップアプリケーションに適用されます。



編集

この場合の追加の問題:

特定のケース;スクリプトでxdotoolコマンドを使用する

コメントから、実行するスクリプトはxdotoolコマンドを使用し、キーを押していることがわかりました。

#!/bin/bash
xdotool keydown Super key w
sleep 0.5 
xdotool keyup Super 

キーを仮想的に押すfromショートカットキーの組み合わせは、実際には常にキーの衝突につながります。これは、物理的にを押すキーが、仮想的にを押します。

何をすべきか

この問題を回避する1つの方法は、指にキーを「残す」時間を与えて、実際のキーストロークが仮想キーストロークと組み合わされるのを避けることです。それでも、押した後にショートカットを解除する必要があります。スクリプトは次のようになります。

#!/bin/bash
# here we add a little break to give your fingers 
# the opportunity to release the keys
sleep 0.5
xdotool keydown Super key w
sleep 0.5 
xdotool keyup Super

注意

それでも問題が解決しない場合は、4行目の時間を増やしてください(ショートカットキーを短く押すだけです)

4
Jacob Vlijm