
Я знаю, что в 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. Я не знаю, как это сделать в эмуляторах терминала.