GitTop is a lightweight cross-platform desktop client for GitHub notifications. The point is simple: checking GitHub notifications should not require keeping a browser open all day.

It is written in Rust with Iced, uses OpenGL as the GPU helper, and is intentionally small. Current builds sit around 5-15 MB RAM while active and roughly 1-2 MB in tray mode depending on platform state. The project is around the 0.5 line; most of the hard work is platform behavior, packaging, and keeping the app small enough to justify existing.

Shape

The default mode is intentionally small: poll notifications, show enough state, stay out of the way. Power Mode adds in-app notification viewing and rules for priority/noise filtering, but the baseline still has to justify running all day.

Multi-account support and the rule engine are part of that. The app should be able to hide noisy notification types without hiding the work that actually needs attention.

Design Notes

The interesting parts are mostly platform-specific: notification behavior, keyring storage, refocus behavior, tray behavior, startup behavior, and making sure the application stays boring when the network or API does not.

Linux and Windows do not share as much code as people usually want to believe. Linux refocus is handled through IPC. Linux tray mode behaves more like a daemon than a normal foreground program. Credential handling goes through platform-specific stores via keyring-core. The shared code is the part that should be shared; the rest is better off being honest.

GitTop’s runtime model follows that split. Windows and macOS use the normal iced::application path. Linux uses iced::daemon, because tray-only behavior on Wayland is closer to closing and recreating windows than hiding them.

Notifications go through native systems: WinRT toasts on Windows, DBus notifications on Linux, and Notification Center on macOS. Memory trimming is platform-specific too: EmptyWorkingSet() on Windows and malloc_trim() on glibc Linux.

Packaging

GitTop ships through a broad release matrix: Windows installer/archive, winget, Chocolatey, Scoop, Flatpak bundles, AUR, COPR, and VUP for Void Linux. Releases cover multiple architecture/libc targets where it matters, including GNU/musl Linux builds.