¿Existe una campana visual en Linux que funcione en X?

¿Existe una campana visual en Linux que funcione en X?

Sé que existe una campana visual en Vim que hace que toda la pantalla parpadee en lugar de emitir un pitido. Varios programas de terminal también tienen la misma característica.

Estoy buscando un tipo similar de campana visual que haga parpadear todas mis pantallas, en todos mis escritorios virtuales, en X. Solo tengo auriculares en el trabajo y el altavoz de mi PC es demasiado silencioso, así que necesito otro método de notificación que definitivamente llamará mi atención.

¿Alguien sabe si existe?

Respuesta1

No sé nada exactamente así, pero puedes usar la herramienta de línea de comando notificar-enviar para tener ventanas emergentes en el escritorio. En Ubuntu el paquete es libnotify-bin. Por ejemplo:

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

Respuesta2

Tuve el mismo problema así que escribí un programa para esto:

https://github.com/rianhunter/xvisbell

Correr:

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

Espero que ayude.

Respuesta3

Dependiendo de lo que necesites, también lo hay xmessage: es viejo, es feo, pero está incluido con X. No parpadea la pantalla, pero mostrará un mensaje y podrás especificar qué botones hay en él (cuál presiona vuelve al estado de salida) si eso es importante.

Respuesta4

¡Sí, esto es posible!

La siguiente es una implementación que atenúa la luz de fondo del LCD de su monitor y luego la devuelve a donde estaba.

Paso uno: encuentre una manera de alterar de manera confiable la luz de fondo[1][2]. Usaré el más simple aquí pero mmv.

Hay controles a nivel de kernel(?) en /sys/class/backlight. El nombre exacto del subdirectorio variará según su configuración. Estoy usando este método en este ejemplo, pero si encuentra otro comando que funcione, puede omitir el paso dos y modificar el script en el paso tres para que las funciones get_brightnessy set_brightnessutilicen el método elegido.

Esto te dará tuactualnivel de brillo

cat /sys/class/backlight/intel_backlight/brightness

Ahora intenta cambiarlo:

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

Esto debería oscurecer la pantalla durante un segundo y luego llevarla al nivel 80 (use el valor que obtuvo anteriormente o la pantalla podría estar demasiado oscura). Los he agrupado en el mismo comando para que no te quedes atascado con una pantalla demasiado oscura. En esta prueba, actuamos como root. A continuación obtendremos acceso para su propia cuenta. (¡Deténgase aquí si no funciona!)

Segundo paso:obtenga acceso para su propia cuenta:

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

(Tenga en cuenta que es posible que esto no sobreviva al reinicio. Volveré y revisaré esto si ese es el caso, pero solo reinicio ~trimestralmente, así que tengan paciencia).

Paso tres:escribe un script como el siguiente:

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

Usted debe ser bueno para ir. Guárdelo como /usr/local/bin/visual-belly hágalo ejecutable ( chmod +x visual-bell), luego podrá ejecutarlo. Este script parpadeará la cantidad de veces indicada (el valor predeterminado es una), por lo que puede ejecutarlo visual-bell 3para parpadear tres veces.

En teoría, puedes hacer parpadear varios monitores si los usas /sys/class/backlight/*/brightness, pero ten en cuenta que diferentes monitores pueden tener diferentes escalas de brillo. Mi pantalla LCD de Dell (conectada mediante un adaptador DisplayPort-VGA) no funciona aquí, aunque la pantalla de mi computadora portátil sí.

Pasos adicionales: Instalar como "comando de sonido" en programas como pidgin. No sé cómo hacer esto en emuladores de terminal.

información relacionada