Bagaimana cara menampilkan penghitung waktu mundur pada waktu tertentu dalam sehari?

8

Saya bekerja sebagai guru. Ada rutinitas tertentu dalam pelajaran saya, diumumkan dengan acara waktunya di Orage, dikirim ke notifikasi. Misalnya:

  • Membersihkan
  • Pasang Kursi

Murid-murid saya meminta saya meletakkan jam hitung mundur di layar untuk memperingatkan berapa banyak waktu yang tersisa sampai suatu peristiwa. Saya menggunakan XFce, jadi ini bisa ditampilkan pada panel di bagian atas layar, tidak pernah ditutupi oleh item layar penuh, atau sebagai tampilan head-up transparan yang tidak dapat diklik yang selalu ada di atas setiap jendela.

Misalnya:

  • 3:10 sampai pembersihan.
  • 6:10 sampai akhir kelas.

Ini bukan hitung mundur yang diaktifkan secara manual, tetapi terjadi pada waktu tertentu setiap hari, misalnya hitung mundur 10 menit dimulai pukul 3:00 sore dan berakhir pada nol pada jam 3:10 siang. Saya dapat menggunakan orageuntuk mengaktifkan skrip, tetapi perlu beberapa cara untuk menampilkan penghitung dan informasi.

Apakah ada cara untuk menampilkan penghitung waktu mundur seperti itu di layar?

Desa
sumber
2
Widget kerucut dengan selalu di atas mungkin melakukan trik
muru
1
Semua program X11 dapat dimulai, dan dikendalikan dari bash. Dan jangan gunakan loop sementara untuk menunggu sibuk, Anda dapat menggunakan sleep.
ctrl-alt-delor
Apakah Anda sudah mempertimbangkan pekerjaan cron (mingguan (Senin - Jumat) atau harian) mungkin cocok? Saya yakin itu bisa mengaktifkan widget kerucut yang disebutkan di atas mulai menghitung mundur.
Nepumuk
Saya tidak terbiasa dengan cara kerjanya.
Desa
@ Desa: Seperti yang dibahas dalam komentar di sini, unix.stackexchange.com/questions/535666/… ketika Anda berbicara tentang full screenAnda yang sebenarnya Anda maksudkan maximized, bukan?
Arkadiusz Drabczyk

Jawaban:

2

Dengan xfce4-genmon-plugin , Anda dapat membuat sendiri widget panel tersebut.

Instal plugin dari repositori distro Anda. Kemudian buat skrip yang menghasilkan tampilan hitung mundur:

#!/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"
)

Ubah sesuai keinginan Anda, simpan di tempat yang tidak mencolok dan berikan izin eksekusi ( chmod +x). Kemudian tambahkan item "Monitor generik" ke panel Anda. Arahkan item panel ke skrip Anda dan konfigurasikan interval penyegaran yang sesuai (jika Anda menghapus tampilan detik, Anda mungkin harus membiarkannya pada 30 detik untuk menghemat daya / kinerja). Dan begitulah.

pengguna3840170
sumber
Jadi apakah xfce4-genmon-pluginhanya menjalankan skrip apa pun yang dipilih, mencetak apa yang akan ditampilkan di terminal, tetapi pada panel?
Desa
Betul. Ada juga beberapa pemformatan markup, dijelaskan pada halaman yang saya tautkan.
user3840170
4

Python dengan tkinteroutput cara tercepat dan termudah untuk membuat aplikasi GUI dan widget. Membuat GUI menggunakan tkinteradalah tugas yang mudah.

Anda hanya perlu menggunakan perintah berikut untuk menginstal tkinter

apt-get install python-tk python3-tk

Untuk pengguna Fedora, gunakan perintah berikut.

dnf install python-tkinter python3-tkinter

Ini adalah skrip sederhana untuk hitung mundur dengan tkinter, selalu aktif dan transparan:

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()

Gambar

Rasool Ziafaty
sumber
Saya menggunakan fluxboxdan solusi ini tidak berfungsi untuk saya. Jendela berjudul Counting secondsmuncul di sudut kiri atas tetapi diblokir oleh jendela layar penuh. Misalnya, tekan F11 di Firefox atau Evince dan perhatikan bahwa jendelanya tidak terlihat.
Arkadiusz Drabczyk
Saya sudah menjalankan xfce4di dalam Xephyrdan tkinterwindows diblokir oleh aplikasi layar penuh juga. Jadi saya pikir jawaban ini salah dan tidak menjawab pertanyaan OP.
Arkadiusz Drabczyk
Jika Anda menekan f11 di firefox Anda tidak dapat melihat hal-hal lain bahkan xfce clock dan plugin xfce lainnya. jadi semua jawaban lain juga salah. Saya pikir dengan layar penuh dia berarti jendela yang dimaksimalkan karena dia berkata 'ini bisa ditampilkan pada panel di bagian atas layar,' @Arkadiusz Drabczyk
Rasool Ziafaty
i think by full screen she/he means maximized windows- Saya pikir itu juga tetapi dalam kasus itu pertanyaannya harus diulang.
Arkadiusz Drabczyk
Ya, itu harus terlihat bahkan ketika jendela layar penuh, jadi itu adalah lapisan transparan atau pada panel, tetapi beberapa pengaturan harus diubah sehingga panel selalu terlihat dan tidak tercakup oleh aplikasi layar penuh jika solusi menggunakan panel digunakan.
Desa
2

Ada banyak cara dan widget untuk memiliki penghitung waktu atau hitungan mundur, tetapi mengingat Anda menggunakan xfce dan ingin sesuatu yang grafis pada panel, Anda mungkin ingin mencoba xfce4-timer-plugin .

Itu membutuhkan xfce> = 4.6. Saya tidak tahu versi xfce mana yang Anda jalankan, tetapi plugin ini mungkin bisa digunakan untuk kebutuhan Anda.

Plugin xfce4-timer-memungkinkan Anda untuk mengatur hitungan mundur dan alarm dengan opsi berulang jika Anda ingin mengaturnya setiap hari misalnya ,:

masukkan deskripsi gambar di sini

Ini juga menampilkan bilah hitung mundur di panel jika Anda ingin:

Hitung mundur berjalan: masukkan deskripsi gambar di sini

Countdown kosong: masukkan deskripsi gambar di sini

Anda dapat membaca lebih lanjut tentang plugin di tautan di atas, tetapi, berikut adalah paragraf tentang dan penggunaan untuk berjaga-jaga:

Tentang

Ini adalah plugin sederhana yang memungkinkan pengguna menjalankan alarm pada waktu yang ditentukan atau pada akhir periode hitung mundur yang ditentukan.

Pemakaian

Plugin ini cukup sederhana - ini menampilkan progressbar yang menunjukkan persentase waktu yang berlalu. Mengklik kiri pada area plugin membuka menu alarm yang tersedia. Setelah memilih satu, pengguna dapat memulai atau menghentikan timer dengan memilih entri “start / stop timer” di menu yang sama. Alarm baru ditambahkan melalui jendela preferensi. Setiap alarm adalah hitungan mundur atau dijalankan pada waktu yang ditentukan. Secara default, dialog sederhana muncul di akhir hitungan mundur. Pengguna dapat memilih perintah eksternal untuk dijalankan sebagai alarm dan juga dapat memilih untuk mengulangi ini beberapa kali dengan interval yang diberikan di antara pengulangan.

Leo
sumber
Apakah aplikasi ini memungkinkan pengaturan penghitung waktu mundur dimulai secara otomatis pada waktu tertentu? Apakah ada cara untuk mengubah tampilan dari bilah menjadi penghitung waktu karena bilah tidak mudah dilihat?
Desa
Tampaknya alarm dapat diprogram, tetapi hitungan mundur hanya memungkinkan untuk durasi. Sejauh yang saya tahu, tidak ada opsi untuk mengubah bilah. Bisakah Anda menggunakan widget Gnome di XFCE untuk mis.?
Leo
@Village jika saya mengedit plugin penghitung waktu ini untuk membuatnya menangani startup otomatis pada waktu tertentu, apakah itu layak untuk hadiah ?, apa distro Anda dan versi xfce?
intika
Dua masalah dengan aplikasi penghitung waktu adalah sangat sulit untuk melihat karena bilah kecil terlalu kecil, sehingga jam hitung mundur lebih baik, dan itu tidak dimulai secara otomatis.
Desa
1

Anda bisa menggunakan crontab, dan skrip bash menggunakan yad.

Misalnya, untuk pembersihan pukul 15:10, dengan hitung mundur mulai pukul 15:00, dan akhir kelas pukul 18:10 dengan hitung mundur mulai pukul 18:00:

Buat skrip untuk hitung mundur:

#!/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

Edit crontab pengguna yang memiliki akses ke tampilan (saya kira itu harus Anda sendiri), dan sesuaikan DISPLAYvariabel jika echo $DISPLAYdi shell Anda berbeda dari :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"
Saïmonn
sumber