Emacs: tmr version 1.2.0

TMR provides facilities for setting timers using a convenient notation. Lots of commands are available to operate on timers, while there also exists a tabulated view to display all timers in a nice grid.

Below are the release notes.


Version 1.2.0 on 2025-10-06

This release introduces several quality-of-life refinements to an already stable and featureful package.

Timers can now appear on the modeline

The new minor mode tmr-mode-line-mode controls whether running timers are displayed on the mode line. More specifically, they are displayed in the global-mode-string, which can also be set in the tab-bar-mode (this way the information appears in one place instead of all the mode lines, assuming default settings).

The exact format of a timer on display is controlled by the user option tmr-mode-line-format. The number of timers is set with the option tmr-mode-line-max-timers. The separator between multiple timers is tmr-mode-line-separator. The length of each timer’s optional description is subject to tmr-mode-line-max-desc-length. While the entire indicator can have a prefix, per tmr-mode-line-prefix.

Thanks to Steven Allen for contributing the original version of this feature in pull request 2: https://github.com/protesilaos/tmr/pull/2. Steven has assigned copyright to the Free Software Foundation. Further changes by me, such as to make the timers on the mode line clickable (which produces a tabulated view, per tmr-tabulated-view).

Notifications for more operating systems

Timers can optionally trigger a system notification, via the abnormal hook tmr-timer-finished-functions. The relevant function is tmr-notification-notify. It used to only support Linux. Now it is extended to handle Android, Windows, and Haiku.

Thanks to Lucas Quintana for the contribution in pull request 10: https://github.com/protesilaos/tmr/pull/10. Lucas has assigned copyright to the Free Software Foundation.

The tabulated timers have a “duration” column

The tmr-tabulated-view command (alias tmr-list-timers) now includes a “duration” column, in addition to all the other informative data on display.

[ Remember that the tabulated view can be used to create, duplicate, edit, etc. the timers. ]

Thanks to jpg for suggesting this in issue 11: https://github.com/protesilaos/tmr/issues/11.

Miscellaneous

  • System notifications specify the :app-icon of Emacs. It will be displayed, if the underlying software supports it (I see it on Linux, anyway).

  • The option to play the tmr-sound-file via the abnormal hook tmr-timer-finished-functions is redone to not rely on the system shell (implicitly bash). This way, users who use exotic shell alternatives will not run into any trouble. This is done in response to a relevant problem that g-gundam was facing with the nushell: https://github.com/protesilaos/tmr/pull/7.

  • The function tmr-notification-notify is better at informing the user that it has produced the warning about the lack of DBUS support. Before, the notification did not identity itself as belonging to the tmr package.

  • The function tmr-running-timers-p is now available as a standalone function to do what was done before inside other functions. This is useful for anyone writing custom code on top of tmr. Thanks to Eugene Mikhaylov for suggesting the idea in issue 9: https://github.com/protesilaos/tmr/issues/9.

  • The manual is updated to include whatever necessary from the aforementioned.