Нет причин, по которым вы не можете использовать Perl в конвейере. Если предположить, что \r (не -окончания строки DOS )и программа равна:
#!/usr/bin/perl
unless( defined $previous && length $previous ){
$previous = `$_`;
redo LINE;
}
if( m/CONSTRAINT/ ){
$previous =~ s/\,\s*\n$/ \n/;
next LINE;
}
print $previous;
$previous = `$_`;
END{
print $previous;
}
Тогда cat dump.sql | perl -n program.pm | and so on
делает свое дело.
С плагином xfce4 -genmon -вы можете самостоятельно создать такой виджет панели.
Установите плагин из репозиториев вашего дистрибутива. Затем создайте скрипт, который генерирует дисплей обратного отсчета :
.#!/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"
)
Измените его по своему усмотрению, сохраните в каком-нибудь ненавязчивом месте и предоставьте ему разрешение на выполнение(chmod +x
). Затем добавьте на панель пункт «Универсальный монитор». Укажите элемент панели на свой сценарий и настройте подходящий интервал обновления (. Если вы убрали отображение секунд, вам, вероятно, следует оставить его равным 30 секундам для экономии энергии/производительности ). И вот оно.
Python с tkinter
обеспечивает самый быстрый и простой способ создания приложений и виджетов с графическим интерфейсом. Создание графического интерфейса с помощью tkinter
— простая задача.
Вам просто нужно использовать следующую команду для установкиtkinter
apt-get install python-tk python3-tk
Для пользователей Fedora используйте следующую команду.
dnf install python-tkinter python3-tkinter
Это простой скрипт для обратного отсчета с tkinter
, всегда активный и прозрачный:
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()
Существует много способов и виджетов для таймера или обратного отсчета, но, учитывая, что вы используете xfce и хотите что-то графическое на панели, вы можете попробовать xfce4 -таймер -плагин .
Однако для этого требуется xfce >= 4.6. Я не знаю, какую версию xfce вы используете, но этот плагин вполне может подойти для ваших нужд.
Плагин таймера xfce4 --позволяет вам установить обратный отсчет и будильник с параметрами повторения, если вы хотите установить его ежедневно, например,:
При желании на панели также отображается полоса обратного отсчета:
Вы можете прочитать больше о плагине по ссылке выше, но на всякий случай вот параграфы о нем и использовании:
About
This is a simple plugin that lets the user run an alarm at a specified time or at the end of a specified countdown period.
Usage
The plugin is quite simple – it displays a progressbar showing the percentage of the time elapsed. Left-clicking on the plugin area opens a menu of available alarms. After selecting one, the user can start or stop the timer by selecting “start/stop timer” entry in the same menu. New alarms are added through the preferences window. Each alarm is either a countdown or is run at a specified time. By default a simple dialog pops up at the end of the countdown. The user can choose an external command to be run as the alarm and may also choose to have this repeated a specified number of times with a given interval between repetitions.
Вы можете использовать crontab и сценарий bash, используя yad
.
Например, для уборки в 15 :10 с началом обратного отсчета в 15 :00 и окончанием занятия в 18 :10 с началом обратного отсчета в 18 :00:
Создать скрипт обратного отсчета:
#!/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
Отредактируйте crontab пользователя, имеющего доступ к дисплею (Думаю, это должен быть ваш собственный пользователь ), и адаптируйте переменную DISPLAY
, если echo $DISPLAY
в вашей оболочке отличается от: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"