github nklmilojevic/sofka v0.15.1
v0.15.1: Configurable :notify delivery

latest releases: v0.28.3, v0.28.2, v0.28.1...
one month ago

v0.15.1 makes :notify delivery configurable. The bell and desktop-notification protocol live in a new [notify] config section, with osc777 (the form Ghostty recommends) as the default and osc9 for terminals that speak only that.

Added

Configurable :notify delivery (#122)

:notify previously hardcoded a terminal bell plus an OSC 9 desktop notification. A new [notify] section lets you pick both pieces:

[notify]
bell = true         # ring the terminal bell
desktop = "osc777"  # "osc777" | "osc9" | "both" | "off"
  • osc777 (default) — rxvt-style notify;title;body. Renders with a proper "sofka" title in Ghostty (which recommends this form), kitty, WezTerm, foot, and urxvt.
  • osc9 — iTerm2-style body-only. For iTerm2 and Windows Terminal, which speak only that; also understood by Ghostty, kitty, WezTerm, and foot. iTerm2 and Windows Terminal users need desktop = "osc9" to keep desktop notifications — called out in the README.
  • both — emit OSC 9 and OSC 777 together. Pick this on purpose: terminals that speak several (Ghostty, kitty, WezTerm, foot) would otherwise show duplicate notifications, which is why one protocol is the default.
  • off — flash only, no bell, no escape sequence.

Other niceties the change brought along:

  • OSC sequences are now BEL-terminated to match every terminal's documented examples; the previous ST terminator worked in most but not all.
  • Control characters are stripped from object-derived text so log content can't smuggle escape sequences into the terminal.
  • Unknown desktop values warn at config load (:config) and behave as the default — the section re-applies on :reload and per-context on context switches like every other config section.
  • Sequence building is a pure function (notification_sequence) with unit tests that pin the exact emitted bytes per protocol.

Full Changelog: v0.15.0...v0.15.1

Don't miss a new sofka release

NewReleases is sending notifications on new releases.