Gibt es in Linux eine visuelle Klingel, die unter X funktioniert?

Gibt es in Linux eine visuelle Klingel, die unter X funktioniert?

Ich weiß, dass es in Vim so etwas wie eine visuelle Glocke gibt, die den gesamten Bildschirm blinken lässt, anstatt zu piepen. Mehrere Terminalprogramme haben auch diese Funktion.

Ich bin auf der Suche nach einer ähnlichen Art visueller Glocke, die alle meine Bildschirme auf allen meinen virtuellen Desktops in X aufblinken lässt. Ich habe bei der Arbeit nur Kopfhörer und mein PC-Lautsprecher ist zu leise, also brauche ich eine andere Benachrichtigungsmethode, die definitiv meine Aufmerksamkeit erregt.

Weiß jemand, ob es das gibt?

Antwort1

Ich weiß nichts Genaues darüber, aber Sie können das Befehlszeilentool notify-send verwenden, um Popups auf dem Desktop anzuzeigen. In Ubuntu heißt das Paket libnotify-bin. Beispiel:

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

Antwort2

Ich hatte das gleiche Problem und habe deshalb ein Programm dafür geschrieben:

https://github.com/rianhunter/xvisbell

Laufen:

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

Hoffentlich hilft das.

Antwort3

Je nachdem, was Sie brauchen, gibt es auch xmessage– es ist alt, es ist hässlich, aber es ist in X enthalten. Es lässt den Bildschirm nicht blinken, aber es wird eine Meldung eingeblendet und Sie können angeben, welche Schaltflächen darauf sind (welche Schaltfläche Sie drücken, wird im Beendigungsstatus zurückgegeben), wenn das wichtig ist.

Antwort4

Ja, das ist möglich!

Nachfolgend sehen Sie eine Implementierung, die die LCD-Hintergrundbeleuchtung Ihres Monitors dimmt und dann wieder auf den ursprünglichen Wert zurückbringt.

Schritt eins: Finden Sie einen Weg, Ihre Hintergrundbeleuchtung zuverlässig zu ändern[1][2]. Ich verwende hier die einfachste, aber Ihre Erfahrung kann unterschiedlich sein.

In /sys/class/backlight gibt es Steuerelemente auf Kernel(?)-Ebene. Der genaue Unterverzeichnisname hängt von Ihrer Konfiguration ab. Ich verwende in diesem Beispiel diese Methode, aber wenn Sie einen anderen Befehl finden, der funktioniert, können Sie Schritt zwei überspringen und das Skript in Schritt drei ändern, damit die get_brightnessFunktionen set_brightnessIhre gewählte Methode verwenden.

Damit erhalten Sie IhreaktuellHelligkeitsstufe

cat /sys/class/backlight/intel_backlight/brightness

Versuchen Sie nun, es zu ändern:

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

Dadurch sollte Ihr Bildschirm für eine Sekunde dunkler werden und dann auf Stufe 80 gebracht werden (verwenden Sie den Wert, den Sie zuvor erhalten haben, sonst ist Ihr Bildschirm möglicherweise zu dunkel). Ich habe sie in demselben Befehl gebündelt, damit Sie nicht mit einem zu dunklen Bildschirm stecken bleiben. In diesem Test fungieren wir als Root. Als Nächstes erhalten wir Zugriff für Ihr eigenes Konto. (Hören Sie hier auf, wenn es nicht funktioniert!)

Schritt zwei:Erhalten Sie Zugang für Ihr eigenes Konto:

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

(Beachten Sie, dass dies einen Neustart möglicherweise nicht übersteht. Wenn dies der Fall ist, werde ich darauf zurückkommen und es überarbeiten, aber ich starte nur ungefähr vierteljährlich neu, also haben Sie bitte Geduld mit mir.)

Schritt drei:Schreiben Sie ein Skript wie das folgende:

#!/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

Sie sollten startklar sein. Speichern Sie es unter /usr/local/bin/visual-bellund machen Sie es ausführbar ( chmod +x visual-bell), dann können Sie es ausführen. Dieses Skript blinkt die angegebene Anzahl von Malen (standardmäßig einmal), Sie können es also ausführen, visual-bell 3um dreimal zu blinken.

Theoretisch können Sie mehrere Monitore blinken lassen, wenn Sie sie verwenden /sys/class/backlight/*/brightness, aber beachten Sie, dass verschiedene Monitore unterschiedliche Helligkeitsskalen haben können. Mein Dell-LCD (über einen DisplayPort-VGA-Adapter angeschlossen) funktioniert hier nicht, mein Laptop-Display jedoch schon.

Weitere Schritte: Als „Soundbefehl“ in Programmen wie Pidgin installieren. Ich weiß nicht, wie das in Terminalemulatoren geht.

verwandte Informationen