Linux には X で動作するビジュアルベルがありますか?

Linux には X で動作するビジュアルベルがありますか?

Vim には、ビープ音を鳴らす代わりに画面全体を点滅させるビジュアルベルというものがあることは知っています。いくつかのターミナル プログラムにも同じ機能があります。

私は、X のすべての仮想デスクトップ上のすべての画面を点滅させる、同様のタイプのビジュアルベルを探しています。職場ではヘッドフォンしか持っていないし、PC のスピーカーは小さすぎるので、確実に注意を引く他の通知方法が必要です。

それが存在するかどうか知っている人はいますか?

答え1

まったく同じものはありませんが、コマンドライン ツールの notification-send を使用してデスクトップにポップアップを表示できます。Ubuntu では、パッケージは libnotify-bin です。例:

notify-send -u normal -t 10000 -i info 'hw' 'Hello world'

答え2

私も同じ問題を抱えていたので、これを解決するプログラムを書きました:

https://github.com/rianhunter/xvisbell

走る:

$ git clone https://github.com/rianhunter/xvisbell.git
$ cd xvisbell
$ make
$ xset b on
$ xset b 100
$ ./xvisbell &
$ xkbbell # test

お役に立てれば幸いです。

答え3

必要なものに応じて、古いし、見苦しいですが、X に含まれているものもありますxmessage。画面は点滅しませんが、メッセージがポップアップ表示され、重要な場合は、そのボタンを指定できます (どのボタンを押したかが終了ステータスで返されます)。

答え4

はい、可能です!

以下は、モニターの LCD バックライトを暗くしてから、元の位置に戻す実装です。

第一歩: バックライトを確実に変更する方法を見つける[1][2]ここでは最も単純なものを使用しますが、状況によって異なります。

/sys/class/backlight にはカーネル(?) レベルのコントロールがあります。正確なサブディレクトリ名は設定によって異なります。この例ではこの方法を使用していますが、別のコマンドが機能する場合は、手順 2 をスキップし、手順 3 のスクリプトを変更して、およびget_brightness関数set_brightnessが選択した方法を使用するようにすることができます。

これにより、現在明るさレベル

cat /sys/class/backlight/intel_backlight/brightness

では、変更してみましょう:

export BRIGHTNESS=/sys/class/backlight/intel_backlight/brightness
echo 50 |sudo tee $BRIGHTNESS; sleep 1; echo 80 |sudo tee $BRIGHTNESS

これにより、画面が 1 秒間暗くなり、その後レベル 80 になります (先ほど取得した値を使用してください。そうしないと、ディスプレイが暗すぎる可能性があります)。画面が暗すぎるという問題に悩まされることがないように、これらを同じコマンドにまとめました。このテストでは、root として操作します。次に、自分のアカウントにアクセスします (うまくいかない場合はここで停止してください)。

ステップ2:自分のアカウントにアクセスします:

sudo chmod g+w /sys/class/backlight/intel_backlight/brightness
sudo chgrp video /sys/class/backlight/intel_backlight/brightness
sudo usermod -a -G video my_username

(注意: これは再起動すると消えてしまう可能性があります。その場合は戻ってきて修正しますが、再起動は四半期に一度しか行わないので、しばらくお待ちください。)

ステップ3:次のようなスクリプトを記述します。

#!/bin/sh
help() { cat <</help
Blink/flash the whole X display (on one LCD monitor)
Usage: visual-bell [BLINK_COUNT]
0.2+20140327 Copyright (c) 2010+ by Adam Katz <www.khopis.com/scripts>, LGPL 2+
/help
}

SLEEP_TIME=0.03
BRIGHTNESS=/sys/class/backlight/intel_backlight/brightness

get_brightness() {
  cat $BRIGHTNESS
}

set_brightness() {
  echo $1 > $BRIGHTNESS
}

COUNT=${1:-1}  # read count from first argument (default to one blink)
# if the argument wasn't a number greater than zero, show help and exit
if ! [ "$COUNT" -gt 0 ] 2>/dev/null; then
  help
  exit 1
fi

LEVEL=`get_brightness`

while [ $COUNT -gt 0 ]; do

  set_brightness 0        # blacken the screen
  sleep $SLEEP_TIME
  set_brightness $LEVEL   # revert the screen to previous brightness
  sleep $SLEEP_TIME

  COUNT=$((COUNT-1))      # decrement counter

done

これで準備完了です。これを名前をつけて保存し/usr/local/bin/visual-bell、実行可能ファイル ( ) にして実行します。このスクリプトは指定された回数 (デフォルトは 1 回) 点滅するので、 を実行して3 回点滅させるchmod +x visual-bellことができます。visual-bell 3

理論的には、複数のモニターを点滅させることは可能です/sys/class/backlight/*/brightnessが、モニターによって明るさのスケールが異なる場合があることに注意してください。私の Dell LCD (DisplayPort-VGA アダプター経由で接続) はここでは機能しませんが、ラップトップ ディスプレイは機能します。

次のステップ: pidgin などのプログラムに「サウンド コマンド」としてインストールします。ターミナル エミュレータでこれを行う方法がわかりません。

関連情報