Eu não faço nada exatamente assim, mas você pode usar a ferramenta de linha de comando notificar-enviar para ter pop-ups na área de trabalho. No Ubuntu o pacote é libnotify-bin. Por exemplo:
notify-send -u normal -t 10000 -i info 'hw' 'Hello world'
Eu sei que existe um sino visual no Vim que faz toda a tela piscar em vez de apitar. Vários programas de terminal também possuem o mesmo recurso.
Estou procurando por um tipo similar de campainha visual que piscará todas as minhas telas, em todos os meus desktops virtuais, em X. Eu só tenho fones de ouvido no trabalho e meu alto-falante do PC é muito silencioso, então eu precisa de algum outro método de notificação que definitivamente vai chamar minha atenção.
Alguém sabe se existe?
Eu não faço nada exatamente assim, mas você pode usar a ferramenta de linha de comando notificar-enviar para ter pop-ups na área de trabalho. No Ubuntu o pacote é libnotify-bin. Por exemplo:
notify-send -u normal -t 10000 -i info 'hw' 'Hello world'
Eu tive o mesmo problema, então escrevi um programa para isso:
Para executar:
$ git clone https://github.com/rianhunter/xvisbell.git
$ cd xvisbell
$ make
$ xset b on
$ xset b 100
$ ./xvisbell &
$ xkbbell # test
Espero que ajude.
Você não especificou o GNOME ou o KDE, mas o KDE 4.2 tem suporte embutido para isso. Se você olhar em Configurações do sistema > Acessibilidade, você pode ligar o sino visual lá. O KDE também permite personalizar ações para várias notificações do sistema que vão além dos sons. Por exemplo, você pode mostrar um pop-up, executar um comando, marcar uma entrada na barra de tarefas, etc. Isso fica em Configurações do sistema > Notificações do sistema.
Sim, isso é possível!
O que se segue é uma implementação que escurece a luz de fundo do LCD do seu monitor e depois a leva de volta para onde estava.
Etapa um: encontre uma maneira de alterar de forma confiável sua luz de fundo [1] [2] . Vou usar o mais simples aqui, mas ymmv.
Existem controles no nível do kernel (?) em / sys / class / backlight. O nome do subdiretório exato varia de acordo com sua configuração. Estou usando esse método neste exemplo, mas se você encontrar outro comando que funcione, ignore a etapa dois e altere o script na etapa três para que as funções get_brightness
e set_brightness
usem o método escolhido.
Isso fornecerá seu nível de brilho atual
cat /sys/class/backlight/intel_backlight/brightness
Agora tente alterá-lo:
export BRIGHTNESS=/sys/class/backlight/intel_backlight/brightness
echo 50 |sudo tee $BRIGHTNESS; sleep 1; echo 80 |sudo tee $BRIGHTNESS
Isso deve deixar sua tela mais escura por um segundo e, em seguida, levá-la ao nível 80 (use o valor que você obteve anteriormente ou o seu monitor pode estar muito escuro). Eu os agrupei no mesmo comando para que você não fique preso a uma tela muito escura. Neste teste, estamos agindo como raiz. Nós teremos acesso para sua própria conta em seguida. (Pare aqui se não funcionar!)
Etapa dois: tenha acesso à sua conta:
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
(Note, isso pode não sobreviver à reinicialização. Eu voltarei e revisarei isso se for esse o caso, mas eu só reinicio ~ trimestralmente, então fique comigo.)
Etapa três: escreva um script como o seguinte:
#!/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
Você deve ser bom para ir. Salve isso como /usr/local/bin/visual-bell
e torne-o executável ( chmod +x visual-bell
), então você pode executá-lo. Esse script piscará o número de vezes especificado (o padrão é um), então você pode executar visual-bell 3
para piscar três vezes.
Você pode, teoricamente, piscar vários monitores se usar /sys/class/backlight/*/brightness
, mas tenha em mente que diferentes monitores podem ter diferentes escalas de brilho. Meu Dell LCD (conectado por meio de um adaptador DisplayPort-VGA) não funciona aqui, embora a tela do meu laptop funcione.
Etapas adicionais: Instale como o "comando de som" em programas como o pidgin. Eu não sei como fazer isso em emuladores de terminal.
Dependendo do que você precisa, há também xmessage
- é antigo, é feio, mas está incluído no X. Ele não pisca na tela, mas ele exibe uma mensagem e você pode especificar quais botões estão nele (qual você pressiona é retornado no status de saída) se isso é importante.
Dependendo da natureza do evento e do ambiente de área de trabalho que você está usando, o Specto pode funcionar para você.
Mantenha a simplicidade - tente isto:
xrefresh -solid green
Sinta-se à vontade para repetir o comando várias vezes (talvez até usando cores diferentes) para tornar seu visual mais impressionante ...; -)
Estou surpreso que ninguém tenha mencionado personagens ansiosos. Que tal isso (talvez uma das soluções mais limpas para um sino visual):
printf "\x1b[?5h"; sleep .1; printf "\x1b[?5l"
e pronto. :)
se você quiser fazer um pequeno método, basta colocar o seguinte em seu bashrc / zshrc / whateverrc:
vflash(){
printf "\x1b[?5h";
sleep .1;
printf "\x1b[?5l"
}
Agora, o seu terminal irá piscar quando você colocá-lo no final ou comandos longos ... como sudo pacman -Syu; vflash
; %código%; etc.
Se você quiser que continue piscando você (muweheheh):
flasher () {
while :; do
printf "\x1b[?5h";
sleep 0.1;
printf "\x1b[?5l";
## for bash
read -s -n1 -t1 && break;
## for zsh
# read -s -k1 -t1 && break;
done;
}
NOTA1: Isso não funciona no tmux ou na tela. : '(
NOTA2: Esta informação foi recuperada de Wikipedia: Ansi Escape Codes e modificada. Leia! É uma coisa boa; Eu prometo. :)
NOTE3: Os códigos de escape ansi usados são sudo apt-get update && sudo apt-get dist-upgrade; vflash
. Na maioria dos SOs baseados em linux, você pode usar \x1b
, mas eu sempre acabo usando \e
porque ele também funciona no OS X (embora eu não use o OS X e nunca o faça).
Uma ferramenta chamada xcalib
pode inverter o vídeo. Invertendo duas vezes atinge o efeito de sino visual. Aqui está o pequeno trecho de código para fazer isso.
for i in 1 2; do
sleep 0.1
xcalib -alter -invert
done