Feb. 8th, 2024

xcron

Feb. 8th, 2024 18:21
henry_flower: A melancholy wolf (Default)

Знайшов dump $HOME 2008 року, який був зроблений на fbsd. Всередині побачив файла з назвою xcron. Це шелóвий скрипта, який я ув 2008 (і раніше) пускав для нагадування дій як:

% xcron 4 кофе стынет

де через 4 хвилини воно малювало X11 даялога з відповідним повідомленням.

Скрипта є настільки смішний, що заслуговує на зображення тут. Яка це була ітерація його, на жаль, залишається невідомим--про ґіта я тоді не чув, а тримати ув svn різноманітний мотлох було ліньки, тому що створювати ріпо ув svn то була Процедура. (Не пам'ятаю чи існували тоді аналоги ґітхабу для приватних ріпос; якщо і так, то грошей на них все одно не було.)

Біхолд:

xcron script from 2008

Найкращій блока--"cat all arguments", ггг

Не знаю чи може він сперечатися з шедеврами на кшталт

return (foo == "bar" ? true : false)

але мені здається що on a par з ними, так би мовити.

Скрипта, звичайно, є непридатний до сучасний лайнаксів: xmessage то була Xaw ютіліта (кінця 80х?) для створювання елементарних даялогів yes/no. Ув 2008 році користувалися нею майже ніхто, а вірогідність того що вона буде інстальована зараз є 0.

З графічними аналогами dialog(1) за цей час ліпше також не стало, їх популярність залишається дуже низька. Tk помер, байдінґами до gtk/qt ув ruby/python користуються 10 людей на планеті Земля.

Можна було би кликати термінального емулятора:

 $ xterm -fs 20 -e 'whiptail --msgbox KURWA\ BÓBR 0 0'

але по-1ше, xterm буває тільки у поціновувачів середовищ вільних від середовищ стільниці (страшно далєкі оні от народа), по-2ге, портабельного поняття діфолтний термінала не існує--ув кожному середовищі стільниці він є свій зі своїм механізмом з'ясування який саме є улюбленцем користувача. Можна тримати таблицю "éкзек'ютабл аргументи-для-зміни-шрифта", але це є забагато клопоту задля такої дрібниці.

Або:

  • ембедити маленьку C gtk4 програму (яка малює даялога) та компілювати її кожного разу перед закінченням таймера;

  • переписати скрипта на расті з використанням якогось GUI тулкіта типу Slint (який лінкується статично) та розповсюджувати байнарника;

  • писати повідомлення ув $(mktemp /tmp/XXXXXX.html) та кликати бовзера через xdg-open;

  • через D-Bus кликати метода org.freedesktop.Notifications.Notify на віддаленому об'єкті демона нотіфікацій. Кожне середовище стільниці останнього має своє, але API є стандартизований.

Варіянт 2024 з ді-басом:

#!/bin/sh

set -e
eh() { echo "$*" 1>&2; exit 1; }

command -v notify-send >/dev/null || eh no notify-send
[ $# -ge 2 ] || eh "Usage: xcron N msg ..."
sec=$1; [ "$sec" -ge 0 ] 2>&- || eh "Invalid int: $sec"; shift
summary=`ngettext "1 minute is up" "$sec minutes are up" "$sec"`

(
    sleep $((60*sec))
    notify-send -i modem -- "xcron: $summary" "$*"
) &

Page Summary

June 2025

M T W T F S S
      1
2345678
91011 12131415
16171819202122
23242526272829
30      

Expand Cut Tags

No cut tags