Есть ли в Linux визуальный звонок, работающий в X?

Есть ли в Linux визуальный звонок, работающий в X?

Я знаю, что в Vim есть визуальный звонок, который заставляет весь экран мигать, а не пищать. Несколько терминальных программ также имеют такую ​​же функцию.

Я ищу подобный тип визуального звонка, который будет мигать на всех моих экранах, на всех моих виртуальных рабочих столах, в X. У меня на работе только наушники, а динамик моего ПК слишком тихий, поэтому мне нужен какой-то другой метод уведомления, который определенно привлечет мое внимание.

Кто-нибудь знает, существует ли он?

решение1

Я не знаю ничего похожего, но вы можете использовать командную строку notify-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

В зависимости от того, что вам нужно, есть еще xmessage— он старый, он уродливый, но он включен в X. Он не мигает экраном, но он выводит сообщение, и вы можете указать, какие кнопки на нем находятся (какую из них вы нажмете, возвращается в статусе выхода), если это важно.

решение4

Да, это возможно!

Ниже приведена реализация, которая затемняет подсветку ЖК-дисплея монитора, а затем возвращает ее к прежнему уровню.

Первый шаг: найдите способ надежно изменить подсветку[1][2]. Я воспользуюсь самым простым вариантом, но мммв.

В /sys/class/backlight есть элементы управления уровня ядра(?). Точное имя подкаталога будет зависеть от вашей настройки. Я использую этот метод в этом примере, но если вы найдете другую работающую команду, вы можете пропустить шаг два и изменить скрипт на шаге три, чтобы функции 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

Это должно сделать ваш экран темнее на одну секунду, а затем довести его до уровня 80 (используйте значение, которое вы получили ранее, иначе ваш дисплей может быть слишком темным). Я объединил их в одну команду, чтобы вы не застряли со слишком темным экраном. В этом тесте мы действуем как root. Далее мы получим доступ для вашей учетной записи. (Остановитесь здесь, если это не сработает!)

Шаг второй:получить доступ для своей учетной записи:

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

(Обратите внимание, что перезагрузка может не сохраниться. Я вернусь и исправлю это, если это так, но я перезагружаюсь только раз в квартал, так что наберитесь терпения.)

Шаг третий:напишите сценарий, подобный следующему:

#!/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и сделайте исполняемым ( chmod +x visual-bell), затем вы можете запустить его. Этот скрипт будет мигать указанное количество раз (по умолчанию один), так что вы можете запустить его, visual-bell 3чтобы мигнуть три раза.

Теоретически вы можете мигать несколькими мониторами, если используете, /sys/class/backlight/*/brightnessно будьте осторожны, так как разные мониторы могут иметь разные шкалы яркости. Мой Dell LCD (подключенный через адаптер DisplayPort-VGA) здесь не работает, хотя дисплей моего ноутбука работает.

Дальнейшие шаги: Установить как "звуковую команду" в программах типа pidgin. Я не знаю, как это сделать в эмуляторах терминала.

Связанный контент