shell-script-pt
[Top][All Lists]
Advanced

[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  (_)/(_)
---------------------------------


reply via email to

[Prev in Thread] Current Thread [Next in Thread]