Mostra uma caixa de diálogo após um período de inatividade

4

Em breve, terei que migrar todo um laboratório de informática (cerca de 50 PCs) do Windows 7 para o Ubuntu 14.04 LTS. Como é uma universidade, 99% do tempo (se não 100%) será usado pelos alunos. Não existe um banco de dados central de contas de usuário e credenciais, então cada PC terá apenas duas contas, admin e guest , com a última configurada para autologin (além de alguma customização como por este tutorial ).

Quando os PCs estão ligados e a conta de convidado faz o login na automaticcaly, a primeira coisa mostrada depois que o gerenciador de janelas é carregado é esta caixa de diálogo:

No entanto, existem dois problemas:

  1. A primeira pessoa que se senta no computador às 9h verá a caixa de diálogo, clique em OK, use o PC, saia, não termine a sessão ou bloqueie a tela (porque os usuários) e o segundo usuário em diante não veja a mensagem
  2. Há mais informações relevantes que gostaria de transmitir aos usuários do laboratório (regras de laboratório, etc.).

Então, com esse cenário em mente, o que eu quero alcançar é ter uma caixa de diálogo muito semelhante a essa (mas com um texto diferente, definido por mim) para aparecer sempre que um computador não for usado, digamos, 15 minutos. (Para o propósito desta questão, vamos supor que "não usado" significa nenhuma atividade de teclado ou mouse).

Eu fui direcionado para Como o ubuntu determina a inatividade antes de suspender? e Como um script pode detectar o tempo ocioso de um usuário? e use scripts ruby ou sheel, mas não sei codificar.

Existe uma maneira mais simples de conseguir o que eu preciso?

    
por That Brazilian Guy 13.08.2014 / 20:36

3 respostas

5

Use xautolock

xautolock -time 15 -locker notify-send -t time "Title" "message_here" -i "path/to/icon"

ou use o zenity ou qualquer outro diálogo que você desejar.

Veja o link

Edit: Após a edição da pergunta, o OP foi zenity

xautolock -time 15 -locker "zenity --text='<text here>' --warning"
    
por Panther 13.08.2014 / 21:08
3

Se você executar o seguinte script em segundo plano, ele verificará o tempo ocioso a cada 5 segundos. Se o tempo ocioso exceder um determinado período de tempo (em minutos), uma mensagem aparecerá, definida em um arquivo de texto. (através de uma janela Zenity).

#!/usr/bin/env python3

import subprocess
import time
#########################################
t=15
textfile = "/path/to/message_textfile"
#########################################

with open(textfile, "r") as text:
    message = text.read()

while 1!=0:
    get_idle = subprocess.Popen(["xprintidle"], stdout=subprocess.PIPE)
    result = get_idle.communicate()[0].decode("utf-8")
    if int(result)/60000>t:
        if warning_given == "yes":
            pass
        else:   
            subprocess.Popen(["zenity", "--warning",  "--no-wrap", "--text="+message,  ])
            warning_given = "yes"
    else:
        warning_given = "no"

    time.sleep(5)

Como usar

  • instale xprintidle :

    sudo apt-get install xprintidle
    
  • Copie o script em um arquivo vazio, defina o tempo ocioso ( t ) em minutos e defina o caminho para o arquivo de texto que contém o texto da mensagem. Salve como set_warning.py

  • Execute-o pelo comando

    python3 /path/to/set_warning.py
    

Notas

  • Por conveniência (e para ter controle sobre o layout do texto), o texto é retirado de um arquivo de texto externo. Devoluções, etc. serão copiado exatamente do arquivo de texto para sua mensagem. Desde o A opção --no-wrap do zenity é usada, você precisa para usar o retorna, ou sua mensagem será excessivamente ampla.
  • A maneira como a mensagem aparece pode ser "ajustada" com outras opções do zenity.
por Jacob Vlijm 15.08.2014 / 10:21
1

Veja o que acabei fazendo:

xautolock -time 15 -locker "zenity --text='<text here>' --warning"

Eu adicionei essa linha como uma entrada nos aplicativos de sessão da conta que está vinculada a /etc/guest-session/skel , para que ela seja executada toda vez que a sessão de convidado começar.

    
por That Brazilian Guy 15.08.2014 / 16:35

Tags