web-dev-qa-db-ja.com

Xbindkeysが初めてアプリケーションを正しく起動する

~/.xbindkeysrcに次の行を入れると、GNOMEはアプリケーションvlcを正しく起動します。

"vlc"
   XF86Calculator

問題は、シェルスクリプトを実行したいことです。以下を~/.xbindkeysrcに入れると、GNOMEはスクリプトを起動せず、電卓を起動します。

"/home/menteith/bin/audio.sh"
   XF86Calculator

何故ですか?スクリプトは実行可能であり、コマンドラインから実行したときに期待どおりに機能します。

[〜#〜] update [〜#〜] @PRATAPのおかげで、~/.xbindkeysrc(つまり、bashスクリプトではない)でコンパイルされたプログラムを使用し、XF86Calculatorボタンを初めて押すと、プログラムを起動しますが、XF86Calculatorボタンを2回目に押すと、代わりに電卓が起動します。

更新2

おかげで、@ Raffa私はさらに別の解決策を試しました。私は簡単なCプログラムを書きました:

#include <stdio.h>
#include <stdlib.h>

int main() {
  puts("Starting now:");
  system("killall -s1 xbindkeys; /home/menteith/bin/audio");
  return 0;
}

xbindkeysを終了してラッパーを実行し、ラッパーがスクリプトを実行します。ただし、それでも機能しません。 2回目以降はcalculatorが起動されます。

アップデートモニターからのオーディオ(HDMI)とPCからのオーディオを切り替えるスクリプト。

#!/usr/bin/env bash

output=$(pactl list cards |grep 'Active Profile:' | cut -d ':' -f 3)

if [ $output == "analog-stereo" ]; then
    out="hdmi-stereo"
else
    out="analog-stereo"
fi

echo test
# Set the choosen card profile as sink
pactl set-card-profile "alsa_card.pci-0000_00_1f.3" "output:${out}"


# Set the default sink to the new one
pacmd set-default-sink "alsa_card.pci-0000_00_1f.3.${out}" &> /dev/null

# Redirect the existing inputs to the new sink
for i in $(pacmd list-sink-inputs | grep index | awk '{print $2}'); do
    pacmd move-sink-input "$i" "alsa_card.pci-0000_00_1f.3.${out}" &> /dev/null
done
2
menteith

ステップ#One:

まず:最初にファイルをクリアして~/.xbindkeysrcファイルを変更し、次のコードをコピーしてファイルに貼り付け、Key_Nameを実際のファイルに置き換えますキー名は次のようになります。

"sh /home/menteith/bin/audio.sh && killall -s1 xbindkeys"
Key_Name

2番目:ターミナルで次のコマンドを実行してxbindkeysを再起動します。

killall -s1 xbindkeys

最後に:設定されたキーを試し、期待どおりに機能するかどうかを確認します。


ステップ#2:

以下の画像のようにKeyboard Shortcutsでシステム設定を確認してください:

enter image description here

ここでLaunch Calculator用に構成されたホットキーがある場合、それを無効にする必要があります。それ以外の場合は、xbindkeysを妨害し、ホットキープレスをキャプチャして、スクリプトが実行されずに電卓が実行されるのを防ぎます。


ステップ#3:

もう1つの調査場所は/usr/share/X11/xkb/symbols/pcファイルです。

まず:ターミナルで次のコマンドを実行して、geditエディターでファイルを開きます。

Sudo nano /usr/share/X11/xkb/symbols/pc

2番目に:XF86Calculatorを含む行を探します。次のようになります。

key  <Key_Name> {   [XF86Calculator]    };

この行の前に//を追加して、この行をコメント化します。

//key  <Key_Name> { [XF86Calculator]    };

<Key_Name>Key_Nameをメモして、ファイルを保存して閉じます。

3番目:~/.xbindkeysrcファイルを編集し、XF86CalculatorをステップKey_Nameに置き換えます2番目に上記。次のようになります。

"sh /home/menteith/bin/audio.sh && killall -s1 xbindkeys"
Key_Name

ファイルを保存して閉じます。

4番目:端末で次のコマンドを実行して、xkb設定キャッシュをクリアします。

Sudo rm -rf /var/lib/xkb/*

5番目:システムを再起動して新しいxkb構成をアクティブにするか、ターミナルで次のコマンドを使用してxkbマップレイアウトを設定することにより、新しいxkb構成をリロードします。

setxkbmap -layout us

最後に:ターミナルで次のコマンドを実行してxbindkeysを開始します。

xbindkeys -f ~/.xbindkeysrc

次に、ホットキーを試してください。何も起こらない場合は、ターミナルで次のコマンドを実行してxbindkeysを再起動します。

killall -s1 xbindkeys

次に、もう一度ホットキーを試して、期待どおりに機能するかどうかを確認します。

ベストオブラック

1
Raffa

回避策

Ubuntu 19.10で試してみました

の内容 myscript.shファイル。

#!/bin/bash

notify-send "Script Ran Successfully"

の内容 .xbindkeysrcファイル。

"/bin/bash $HOME/myscript.sh"
XF86Calculator

ログインすると、

実行xbindkeys --poll-rc。キーXF86Calculatorがスクリプトを実行する必要があります。

--poll-rcオプションのリファレンス https://wiki.archlinux.org/index.php/Xbindkeys とこのリンク https:// askubuntu。 com/a/1126410/739431

enter image description here

1
PRATAP