Come visualizzare i timer per il conto alla rovescia in orari specifici della giornata?


8

Lavoro come insegnante. Ci sono alcune routine nella mia lezione, annunciate con eventi a tempo in Orage, inviate alle notifiche. Per esempio:

  • Pulire
  • Metti su le sedie

I miei studenti mi hanno chiesto di mettere un conto alla rovescia sullo schermo per avvisare quanto tempo è rimasto prima di un evento. Uso XFce, quindi potrebbe essere visualizzato su un pannello nella parte superiore dello schermo, mai coperto da elementi a schermo intero, o come un display head-up trasparente non cliccabile, sempre presente sopra ogni finestra.

Per esempio:

  • 3:10 fino alla pulizia.
  • 6:10 fino alla fine della lezione.

Non si tratta di conti alla rovescia attivati ​​manualmente, ma si verificano in orari specifici ogni giorno, ad esempio un conto alla rovescia di 10 minuti inizia alle 15:00 e termina a zero alle 15:10. Posso usare orageper attivare gli script, ma ho bisogno di un modo per visualizzare i contatori e le informazioni.

Esiste un modo per visualizzare tali timer per il conto alla rovescia sullo schermo?


2
Un widget conky con sempre in primo piano potrebbe fare il trucco
muru

1
Tutti i programmi X11 possono essere avviati e controllati da bash. E non usare un ciclo while per fare l'attesa occupata, puoi usare sleep.
ctrl-alt-delor,

Hai già considerato un lavoro cron (settimanale (lun - ven) o giornaliero) adatto? Sono sicuro che potrebbe attivare il widget conky di cui sopra iniziando il conto alla rovescia.
Nepumuk,

Non ho familiarità con come funziona.
Villaggio

@Village: come discusso nei commenti qui unix.stackexchange.com/questions/535666/… quando parli di full screente in realtà significa maximized, giusto?
Arkadiusz Drabczyk,

Risposte:


2

Con xfce4-genmon-plugin , puoi creare tu stesso un widget del pannello.

Installa il plug-in dai repository della tua distro. Quindi creare uno script che genera la visualizzazione del conto alla rovescia:

#!/usr/bin/env python3
from datetime import date, time, datetime

now = datetime.now()

def show_countdown(target, event):
    if now >= target:
        print(("{} NOW!").format(event))
        return

    time_left = target - now
    min, sec = divmod(time_left.seconds, 60)
    hrs, min = divmod(min, 60)
    print("{} in {}:{:02}:{:02}".format(event, hrs, min, sec))  

show_countdown(
    datetime.combine(date.today(), time(10, 25)),
    "Cleanup"
)
show_countdown(
    datetime.combine(date.today(), time(10, 30)),
    "Class ends"
)

Modificalo come ritieni opportuno, salvalo in un luogo discreto e concedi il permesso di esecuzione ( chmod +x). Quindi aggiungi un elemento "Monitor generico" al tuo pannello. Punta l'elemento del pannello sullo script e configura un intervallo di aggiornamento adeguato (se hai rimosso la visualizzazione dei secondi, dovresti probabilmente lasciarlo a 30 secondi per risparmiare energia / prestazioni). E il gioco è fatto.


Quindi esegue xfce4-genmon-pluginsemplicemente qualunque script sia selezionato, stampando ciò che sarebbe stato visualizzato nel terminale, ma invece sul pannello?
Villaggio

Giusto. C'è anche qualche markup di formattazione disponibile, descritto nella pagina che ho collegato.
user3840170,

4

Python con tkinteruscite il modo più semplice e veloce per creare le applicazioni GUI e del widget. La creazione di una GUI usando tkinterè un compito facile.

Devi solo usare il seguente comando per installare il tkinter

apt-get install python-tk python3-tk

Per gli utenti Fedora, utilizzare il seguente comando.

dnf install python-tkinter python3-tkinter

Questo è un semplice script per il conto alla rovescia con tkinter, sempre attivo e trasparente:

import tkinter as tk
from datetime import datetime, time

def dateDiffInSeconds(date1, date2):
    timedelta = date2 - date1
    return timedelta.days * 24 * 3600 + timedelta.seconds

def daysHoursMinutesSecondsFromSeconds(seconds):
    minutes, seconds = divmod(seconds, 60)
    hours, minutes = divmod(minutes, 60)
    days, hours = divmod(hours, 24)
    return (days, hours, minutes, seconds)

def counter_label(label):
    leaving_date = datetime.strptime('2022-01-01 01:00:00', '%Y-%m-%d %H:%M:%S')    #end time to count down
    def count():
        now = datetime.now()
        counter = daysHoursMinutesSecondsFromSeconds(dateDiffInSeconds(now, leaving_date))
        label.config(text=str("%d days, %d hours, %d minutes, %d seconds" % counter))
        label.after(1000, count)
    count()


root = tk.Tk()
root.attributes('-topmost', True)       #always on top
root.title("Counting Seconds")          #title
label = tk.Label(root, fg="dark green") #font color
label.pack()
counter_label(label)
button = tk.Button(root, text='Stop', width=25, command=root.destroy)   #stop button
button.pack()
root.wait_visibility(root)
root.wm_attributes('-alpha',0.5)    # transparent windows  0.1 - 1
root.mainloop()

Immagine


Uso fluxboxe questa soluzione non funziona per me. Una finestra intitolata Counting secondsappare nell'angolo in alto a sinistra ma è bloccata da finestre a schermo intero. Ad esempio, premere F11 in Firefox o Evince e notare che la finestra non è visibile.
Arkadiusz Drabczyk,

Ho corso xfce4all'interno Xephyre tkinterWindows è bloccato anche dalle app a schermo intero. Quindi penso che questa risposta sia sbagliata e non risponda alla domanda di OP.
Arkadiusz Drabczyk,

Se premi f11 in firefox non puoi vedere altre cose nemmeno xfce clock e altri plugin xfce. quindi anche tutte le altre risposte sono sbagliate. penso che a schermo intero lei / lui significhi finestre massimizzate perché lei / lui ha detto "questo potrebbe essere visualizzato su un pannello nella parte superiore dello schermo", @Arkadiusz Drabczyk
Rasool Ziafaty,

i think by full screen she/he means maximized windows- Penso anche questo, ma in tal caso la questione dovrebbe essere riformulata.
Arkadiusz Drabczyk,

Sì, deve essere visibile anche quando una finestra è a schermo intero, quindi è un livello trasparente o su un pannello, ma alcune impostazioni devono essere modificate in modo che il pannello sia sempre visibile e non coperto dalle app a schermo intero se una soluzione che utilizza il pannello viene utilizzato.
Villaggio

2

Esistono molti modi e widget per avere un timer o un conto alla rovescia, ma considerando che stai usando xfce e vuoi qualcosa di grafico sul pannello, potresti provare xfce4-timer-plugin .

Tuttavia richiede xfce> = 4.6. Non so quale versione di xfce stai utilizzando, ma questo plugin potrebbe benissimo funzionare per le tue esigenze.

Il plugin xfce4-timer ti consente di impostare un conto alla rovescia e un allarme con opzioni di ripetizione se desideri impostarlo quotidianamente, ad esempio:

inserisci qui la descrizione dell'immagine

Visualizza anche una barra del conto alla rovescia nel pannello se si desidera:

Conto alla rovescia in esecuzione: inserisci qui la descrizione dell'immagine

Conto alla rovescia vuoto: inserisci qui la descrizione dell'immagine

Puoi leggere di più sul plugin nel link sopra, ma, ecco i paragrafi su e utilizzo nel caso in cui:

Di

Questo è un semplice plug-in che consente all'utente di eseguire un allarme a un'ora specificata o alla fine di un periodo di conto alla rovescia specificato.

uso

Il plug-in è piuttosto semplice: mostra una barra di avanzamento che mostra la percentuale del tempo trascorso. Facendo clic con il pulsante sinistro del mouse nell'area del plug-in si apre un menu di allarmi disponibili. Dopo averne selezionato uno, l'utente può avviare o arrestare il timer selezionando la voce "avvio / arresto timer" nello stesso menu. Nuovi allarmi vengono aggiunti attraverso la finestra delle preferenze. Ogni allarme è un conto alla rovescia o viene eseguito in un momento specifico. Per impostazione predefinita, viene visualizzata una semplice finestra di dialogo alla fine del conto alla rovescia. L'utente può scegliere un comando esterno da eseguire come allarme e può anche scegliere di farlo ripetere un determinato numero di volte con un determinato intervallo tra le ripetizioni.


Questa app consente di impostare un timer per il conto alla rovescia per l'avvio automatico in un determinato momento? C'è un modo per cambiare l'aspetto dalla barra a un timer di conteggio poiché la barra non è molto facile da vedere?
Villaggio

Sembra che l'allarme sia programmabile, ma il conto alla rovescia consente solo una durata. Per quanto ne so, non esiste alcuna opzione per cambiare la barra. Puoi usare i widget di Gnome in XFCE per es.?.
Leone,

@Village se modifico questo plugin timer per farlo gestire l'avvio automatico in un determinato momento, ne varrebbe la pena? Qual è la tua distribuzione e la versione di xfce?
Intika,

I due problemi con l'app timer sono molto difficili da vedere poiché la barra piccola è troppo piccola, quindi un conto alla rovescia è migliore e non si avvia automaticamente.
Villaggio

1

È possibile utilizzare crontab e utilizzare uno script bash yad.

Ad esempio, per una pulizia alle 15:10, con il conto alla rovescia che inizia alle 15:00 e la fine della lezione alle 18:10 con il conto alla rovescia che inizia alle 18:00:

Crea uno script per il conto alla rovescia:

#!/bin/bash
export max=$1
export action=$2
for i in `seq $max`
do
  echo "$[i* 100/max]"
  echo "#${action} in $[max-i] second" 
  sleep 1
done | yad --on-top --progress --no-buttons --auto-close

Modifica il crontab dell'utente che ha accesso al display (suppongo che dovrebbe essere il tuo utente) e adatta la DISPLAYvariabile se echo $DISPLAYnella tua shell è diversa da :0:

crontab -e

0 15 * * *  DISPLAY=:0 /path/to/script.sh 600 Cleanup
0 18 * * *  DISPLAY=:0 /path/to/script.sh 600 "End of Class"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.