feat(vertical): display date in ISO

Update doc.
This commit is contained in:
Johann Dreo 2025-01-17 16:02:53 +01:00
commit f9ce1ef3d5
2 changed files with 43 additions and 11 deletions

View file

@ -25,12 +25,36 @@ Usage
Command arguments
-----------------
> usage: clibard.py [-h] [-l {h,v,horizontal,vertical}] [--test NB_ITEMS] [--send NB_ITEMS]
> usage: clibard.py [-h] [-l {h,v,horizontal,vertical}] [--test NB_ITEMS]
> [--send NB_ITEMS]
>
> options:
> -h, --help show this help message and exit
> -l {h,v,horizontal,vertical}, --layout {h,v,horizontal,vertical}
> How to display notifications. `horizontal` = as many of the last notifications that fit on a single line, clear out the old ones. `vertical` = keep
> printing new notifications on new lines.
> How to display notifications. `horizontal` = as many of
> the last notifications that fit on a single line, clear
> out the old ones. `vertical` = keep printing new
> notifications on new lines.
> --test NB_ITEMS Print NB_ITEMS fake notifications and quit.
> --send NB_ITEMS Send NB_ITEMS fake notifications on the D-Bus and quit.
Display
-------
Each notification is displayed as a colored block made of up to four segments,
showing in order:
1. the *date*,
2. the *application* having issued the notification,
3. the *summary* of the notification (e.g. chat systems usually display the user, here),
4. the *body* of the message.
The color of the notification block's application and summary depends
on the *urgency* of the notification:
- *low* in green,
- *normal* in blue,
- *critical* in orange,
- *unknown* in light purple.
Signaling
@ -43,7 +67,8 @@ SIGUSR1 will refresh the display, SIGUSR2 will erase any notification in the
cache and clear the display (if it can).
Note that with the horizontal layout, refreshing the display actually changes
the display. Erasing the cache will remove any on-screen notification.
the display. Erasing the cache will remove any on-screen notification
if you use the horizontal layout.
With the vertical layout, this does nothing on the display.
@ -51,16 +76,25 @@ Layouts
=======
The default layout is the horizontal one.
Horizontal
----------
This will display on a single line, and overwrite it as soon as an update is
received.
Dates are given in a "natural" human-readable way.
When refreshing its display in the horizontal layout, the displayed dates will
be refreshed as well.
However, it does not show all the cached notifications, but only the few last
ones that can fit the current width of the terminal.
Vertical
--------
The vertical layout simply prints a new line as soon as the CLI bard receive
a notification. The display cannot be cleared nor refreshed.
Most notably, the dates of notifications will all be "now".
However, the terminal does display all the received notifications, if you can
scroll back enough.
Most notably, date is displayed in the ISO-8601 format, down to the minute.
However, your terminal should retain all the received notifications,
if you can scroll back enough.

View file

@ -212,7 +212,6 @@ class MessageLine(Message):
body = " ".join(self.body.split())
self.print_segment("body", body, console)
self.print_segment("none", "", console)
console.print("", end="\n")
console.print(end, end="")
return len(hdate) + len(self.app) + len(self.summary) + len(self.body) + 6
@ -220,10 +219,9 @@ class MessageLine(Message):
class MessageParagraph(Message):
def print_on(self, console = None, end = ""):
hdate = humanize.naturaltime(self.date)
hdate = self.date.strftime("%Y-%m-%d %H:%M")
if console != None:
# console.print(" ", end="")
# self.print_segment("date", hdate, console)
self.print_segment("date", hdate, console)
self.print_segment(self.urgency, self.app, console, prefix = "bold")
self.print_segment(f"summary_{self.urgency}", self.summary, console, prefix = "bold")
self.print_segment("none", "", console)