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

是的,这是可能的!

以下是使显示器的 LCD 背光变暗然后恢复到原来的状态的实现。

步骤1: 找到一种可靠地改变背光的方法[1][2]。我将在这里使用最简单的一个,但 ymmv。

/sys/class/backlight 中有内核级控件。确切的子目录名称将根据您的设置而有所不同。我在本例中使用此方法,但如果您发现另一个有效的命令,您可以跳过第二步并修改第三步中的脚本,让get_brightnessset_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 等程序中安装为“声音命令”。我不知道如何在终端仿真器中执行此操作。

相关内容