Descanso de Tela para Terminal

Buenas!

Galera, estou tentando criar um script que, após X minutos sem interação com o terminal, ele rode um outro programa - no caso, cmatrix - para simular um “descanso de tela”.

O meu script atual está dessa forma:

#!/bin/bash

# Função que aguarda a inatividade por um certo tempo
wait_for_inactivity() {
    local wait_time=$1
    local last_activity=$(date +%s)

    while true; do
        # Calcula o tempo desde a última atividade
        local current_time=$(date +%s)
        local time_diff=$((current_time - last_activity))

        # Se não houver atividade por $wait_time segundos, sai do loop
        if [ "$time_diff" -ge "$wait_time" ]; then
            break
        fi

        # Aguarda um segundo e verifica novamente
        sleep 1
    done
}

# Chama a função para aguardar 40 segundos de inatividade
wait_for_inactivity 40

# Executa o comando cmatrix após 40 segundos de inatividade
cmatrix

Mas, infelizmente, o cmatrix não é exibido na saída do terminal quando o script é executado em segundo plano. Alguém tem alguma ideia de como posso resolver isso? Ou outra forma de chegar no mesmo resultado?

2 curtidas

Salve Gabriel, tudo bem? Achei muito criativo :slight_smile:

Não sei o quanto vou ajudar, mas testei meio por cima aqui, e em tese se você colocar o script para rodar através do .bashrc na sua home, jogando ele para background ele funciona:

/bin/bash /home/diolinux/tela.sh &

Mas tem algumas questões, por exemplo, ele executou no tempo certinho (eu defini para 10 segundos para ser mais rápido), uma vez que roda, nenhum keystroke para a animação, a não ser um control+c, o que faz o script parar e não ser executado novamente.

Provavelmente tem formas melhores de fazer isso, estou curioso para ver o que a comunidade tem a dizer. Boa sorte! :slight_smile:

@Dio, um prazer enorme receber uma resposta sua! :slight_smile:

Sim, a saída do cmatrix fica sendo executada também em segundo plano. Eu estou procurando por soluções ainda, como o uso de screen, por exemplo.

Vamos ver o que a galera pode sugerir também!

1 curtida