我知道 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
是的,这是可能的!
以下是使显示器的 LCD 背光变暗然后恢复到原来的状态的实现。
步骤1: 找到一种可靠地改变背光的方法[1][2]。我将在这里使用最简单的一个,但 ymmv。
/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
,但请注意,不同的显示器可能具有不同的亮度等级。我的戴尔 LCD(通过 DisplayPort-VGA 适配器连接)在这里不起作用,但我的笔记本电脑显示器可以。
进一步的步骤: 在 pidgin 等程序中安装为“声音命令”。我不知道如何在终端仿真器中执行此操作。