[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Script simulando screensaver [e relogio ANSI]
From: |
Arkanon |
Subject: |
Re: [shell-script] Script simulando screensaver [e relogio ANSI] |
Date: |
Wed, 16 Sep 2009 10:19:11 -0300 |
2009/9/16 Valtoir Jardim <address@hidden>
> Dá uma olhada no script abaixo:
>
> http://www.vivaolinux.com.br/script/feet.sh-pseudo-screensaver-em-bash
Logo depois de enviar o email anterior para a lista eu acabei entrando
no arquivo da lista e vi o seu script. Baixei e testei. Bem
interessante. Por acaso acabamos usando ideias bem parecidas.
A diferenca eh que o seu escreve os caracteres na tela
sequencialmente, sem "concorrencia". eh o mesmo caso do meu se
"quant=1".
> Já testei fazer o que queres duplicando a linha que chama a função feet:
>
> .....
> 44 feet &
> 45 feet & <----- rodando uma "segunda instância" da
> função
> 46 read -rs -n 1
> 47 echo -e "\e[m"
> 48 setterm -reset
> 49 clear
> 50 pkill feet
>
> Mas o resultado é "meia boca", vez em quando alguns caracteres são escritos
> na posição errada. Se achares uma solução melhor, poste aqui.
Exatamente. Nesse caso voce tambem sobre o meu problema, hehe.
Um problema parecido ocorre (mas com um pouco menos de frequencia) no
meu ACk (ANSI Clock).
Ele mantem um relogio digital bem no topo a direita da tela. Mas,
eventualmente, digitando comandos ou nas saidas dos comandos (como o
ls) ele "se perde" e escreve algum caracter do relogio fora do lugar
ou da saida do comando no relogio.
Imagino que deva existir uma solucao, afinal como diz nosso guru: "nao
perguntem se eh possivel, perguntem como" ;-)
Abaixo o codigo do ACk:
[BOT]
ack()
{
lock="/tmp/ack-$$"
trap "rm -f $lock" 0 1 2 3 15
case $1 in
start)
if [ -e $lock ]
then
echo "ANSI Clock already running for PId $$"
else
touch $lock
while [ -e $lock ]
do
tput sc
tput cup 0 $[`tput cols`-8]
date +'%H:%M:%S'
tput rc
sleep 1
done &
fi
;;
stop)
rm -f $lock
sleep 1
tput sc
tput cup 0 $[`tput cols`-8]
echo " "
tput rc
# TODO: 'ack stop' apresenta na tela o codigo do loop em bg.
Como evitar isso?
;;
*)
echo -e "ANSI Clock v1.0, by Arkanon\nUsage: $FUNCNAME start|stop"
;;
esac
}
[EOT]
--
(o_ ------------------ __o
//\ address@hidden _`\<,
V_/_ --- www.lsd.org.br (_)/(_)
---------------------------------
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [shell-script] Script simulando screensaver [e relogio ANSI],
Arkanon <=