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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Screensaver em bash


From: Julio C. Neves
Subject: Re: [shell-script] Screensaver em bash
Date: Thu, 10 May 2007 11:45:47 -0300

Aê Valtoir,
gostei do "pisa-na-fulô" :) Muito criativo.

Já que vc está fazendo uma nova versão, que tal substituir o sleep $delay
por um read -n1 -t$qqcoisa && { clear; exit; }. Desta forma, o programa
terminaria qdo vc usasse qq tecla e não somente o ctrl+c.

Como os espaços de tempo são curtos e o read -t não aceita fração de
segundo, é provável que vc precise faser um loop (e randomicamente variando
a qtd de vezes do loop) que no seu interior teria somente:

read -n1 -t0 && { clear; exit; }

Não tenho certeza se o valor ficaria no buffer de leitura, mas acho que vale
a pena testar.

Abração,
Julio
:wq


Em 09/05/07, Valtoir S. Jardim <address@hidden> escreveu:
>
>
> Olá, pessoal.
>
> Sou cadastrado na lista há bastante tempo, mas não costumo participar e,
> para falar a verdade, sequer tenho tido tempo de ler as mensagens. Mas no
> final de semana passado resolvi terminar um pseudo screensaver em bash,
> que já tinha começado e não dava jeito de terminar. Na verdade já tenho
> uma outra versão do mesmo script, completamente reescrita e que achei bem
> melhor (e menor também), mas tenho que revisar uns detalhes. Quando
> estiver ok, publico para saber a opinião de vocês.
>
> Como podem ver, substituí os caracteres em branco da identação por "~".
> Nada que um "sed -i 's/~/ /g' pes.sh" não resolva. Segue o script :
>
> --------- pes.sh -----------------
>
> #!/bin/bash
> # autor: Valtoir dos Santos Jardim
> # e-mail: valtoirjardim at gmail dot com
> # blog: valtoir.blogspot.com
> # data: 2007-05-05
> # versao: 0.1
> trap "clear; setterm -reset; exit" 2
> colors=(31 32 33 34 35 36 37)
> signal=( + - )
> while getopts "hc:" opt; do
> ~~~case $opt in
> ~~~~~~h) echo -e "\nUso: pes.sh -h | -c <caractere>"
> ~~~~~~~~~echo -e "\nParametros:"
> ~~~~~~~~~echo -e " -h: Mostra essa (grande) ajuda"
> ~~~~~~~~~echo -e " -c <caractere>: Limpa a tela e define caractere de
> preenchimento"
> ~~~~~~~~~echo -e "\nExemplo:"
> ~~~~~~~~~echo -e " pes.sh -c#\n"
> ~~~~~~~~~exit;;
> ~~~~~~c) clear;
> ~~~~~~~~~for i in $(seq 0 `tput lines`); do
> ~~~~~~~~~~~~for w in $(seq 1 `tput cols`); do
> ~~~~~~~~~~~~~~~~echo -e "$OPTARG\c"
> ~~~~~~~~~~~~done;
> ~~~~~~~~~~~~tput cup $i;
> ~~~~~~~~~done;;
> ~~~~~~?) exit -1;
> ~~~esac
> done
> setterm -cursor off -bold on
> while :; do
> ~~~moreorless=$((RANDOM%2))
> ~~~color=${colors[$(($RANDOM%${#colors[*]}))]}
> ~~~delay=.$(((RANDOM%8)+4))
> ~~~left_foot=$(($RANDOM%$((`tput cols` - 13))))
> ~~~right_foot=$(($left_foot + 8))
> ~~~lines=$(($(tput lines) - 5))
> ~~~[ "$moreorless" == "1" ] && {
> ~~~~~~tput cup $((lines + 5)) $left_foot
> ~~~~~~echo -e "\e[$color;1m.oooO\c\e[m"
> ~~~}
> ~~~for line in `seq $((($lines ${signal[$moreorless]} 1))) -10 5`; do
> ~~~~~~sleep $delay
> ~~~~~~tput cup $((line++)) $right_foot
> ~~~~~~echo -e "\e[$color;1mOooo.\e[m"
> ~~~~~~tput cup $((line++)) $right_foot
> ~~~~~~echo -e "\e[$color;1m( )\e[m"
> ~~~~~~tput cup $((line++)) $((right_foot + 1))
> ~~~~~~echo -e "\e[$color;1m) /\e[m"
> ~~~~~~tput cup $((line++)) $right_foot
> ~~~~~~echo -e "\e[$color;1m(_/\c\e[m"
> ~~~~~~sleep $delay
> ~~~~~~tput cup $((line - 9)) $left_foot
> ~~~~~~echo -e "\e[$color;1m.oooO\e[m"
> ~~~~~~tput cup $((line - 8)) $left_foot
> ~~~~~~echo -e "\e[$color;1m( )\e[m"
> ~~~~~~tput cup $((line - 7)) $((left_foot + 1))
> ~~~~~~echo -e "\e[$color;1m\ (\e[m"
> ~~~~~~tput cup $((line - 6)) $((left_foot + 2))
> ~~~~~~echo -e "\e[$color;1m\_)\e[m"
> ~~~done
> ~~~sleep $delay
> ~~~[ $((line -14)) -lt 0 ] || {
> ~~~~~~tput cup $((line - 14)) $right_foot
> ~~~~~~echo -e "\e[$color;1mOooo.\e[m"
> ~~~}
> ~~~[ $((line -13)) -lt 0 ] || {
> ~~~~~~tput cup $((line - 13)) $right_foot
> ~~~~~~echo -e "\e[$color;1m( )\e[m"
> ~~~}
> ~~~[ $((line -12)) -lt 0 ] || {
> ~~~~~~tput cup $((line - 12)) $((right_foot + 1))
> ~~~~~~echo -e "\e[$color;1m) /\e[m"
> ~~~}
> ~~~[ $((line -11)) -lt 0 ] || {
> ~~~~~~tput cup $((line - 11)) $right_foot
> ~~~~~~echo -e "\e[$color;1m(_/\e[m"
> ~~~}
> ~~~sleep $delay
> ~~~[ $((line -18)) -lt 0 ] || {
> ~~~~~~tput cup $((line - 18)) $left_foot
> ~~~~~~echo -e "\e[$color;1m( )\e[m"
> ~~~}
> ~~~[ $((line -17)) -lt 0 ] || {
> ~~~~~~tput cup $((line - 17)) $((left_foot + 1))
> ~~~~~~echo -e "\e[$color;1m\ (\e[m"
> ~~~}
> ~~~[ $((line -16)) -lt 0 ] || {
> ~~~~~~tput cup $((line - 16)) $((left_foot + 2))
> ~~~~~~echo -e "\e[$color;1m\_)\e[m"
> ~~~}
> done
>
> T+
>
> Valtoir
>
>  
>



-- 
Abraços,
Julio
http://www.julioneves.com - Um livro sobre Bash completo e on-line
:wq


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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