Skip to content

Releases

khat v0.1.0

Choose a tag to compare

@kodejeet kodejeet released this 28 Oct 02:36

Native, minimal Gmail notifications for GNOME — one C++/Qt 6 binary, no Electron, no browser processes.

Highlights

  • Instant on demand — checks read Gmail's incremental history feed, so a manual check surfaces fresh mail immediately; the background schedule stays quiet (default 3 h, configurable 5 min–24 h)
  • Multi-account — authorize several Gmail accounts; notifications show sender, subject, and a preview, and open that exact message on click
  • Privacy-first — read-only gmail.readonly scope, OAuth tokens in the GNOME Keyring, metadata only (no bodies or attachments), no telemetry
  • Per-user install without root — install.sh builds and installs to ~/.local, sets up the systemd user service, desktop entry, icons, and the khat(1) manual page
  • Sensible CLI — --settings / --background (detaches) / --check-now / --exit; Ctrl+Q quits from the settings window
  • System-aware — single-instance socket, suspend/resume handling, macOS-style rounded icon

Install

curl -fsSL https://github.com/kodejeet/khat/raw/main/install.sh | bash

Requirements: Ubuntu 24.10 or newer (Qt 6.5+), GNOME (Wayland or X11). See docs/installation.md for manual builds and docs/google-oauth-setup.md for the one-time Google Cloud setup (~5 minutes).

Notes

  • While your Google Cloud project is in Testing mode, Google expires the OAuth consent every 7 days — reauthorize weekly, or publish the app for production
  • Source archives (Source code (zip/tar.gz)) are generated automatically by GitHub for this tag; no prebuilt binaries are shipped — the one-curl install builds from source on your machine
  • GNOME's Do Not Disturb intentionally silences khat's notifications (normal urgency, never critical)

Known limitations

  • Baseline behavior: the first check after adding an account marks existing mail as seen instead of notifying about old messages
  • Google search/listing quirks are handled with a 24-hour overlap window and per-account history cursors; an aged-out cursor falls back to a fresh baseline automatically

License: GPL-3.0-or-later