a cross platform ntfy desktop client using gpui
ntfy gpui rust
Rust 92%
4%
Python 2%
Nix <1%
JavaScript <1%
Inno Setup <1%
Shell <1%

README.md

ntfy desktop #

A small Rust + GPUI desktop client for ntfy.

Features #

  • Low resource usage (I've measured about 35MB with the window closed).
  • Cross-server unified topic list.
  • Multiple servers with public, access token, or password login.
  • Subscribe/unsubscribe to topics and read messages with deduplication.
  • Automatic server reconnection with online indicators.
  • Mute topics for 5 minutes, 15 minutes, 1 hour, 8 hours, or indefinitely.
  • Nicknames for accounts and topics.
  • Tray icon (with minor customization) so it can run in the background.
  • Credentials saved to the OS keyring.

Download #

Get the latest release here.

Build from source #

Use a current stable Rust toolchain (1.90 or later). Run the commands below from the repository directory.

Nix development shell #

flake.nix provides all of the development dependencies needed. It supports x86_64 and aarch64 on Linux and macOS. On macOS, the Xcode Command Line Tools are still needed.

Enter the shell with nix develop.

Linux #

Dependencies (Debian/Ubuntu package names, adapt for your distro if needed):

  • build-essential
  • clang
  • libclang-dev
  • pkg-config
  • libasound2-dev
  • libfontconfig1-dev
  • libxkbcommon-dev
  • libxkbcommon-x11-dev
  • libwayland-dev
  • libx11-xcb-dev
  • libvulkan-dev
  • libssl-dev
  • libdbus-1-dev

Build with:

cargo build --locked --release
./target/release/ntfy-gpui

Supports Wayland and X11. Your desktop needs a tray host (i.e. GNOME needs the AppIndicator extension). Saving credentials requires an unlocked Secret Service provider, like GNOME Keyring or KWallet.

For building Linux binaries on macOS, see cross-compilation notes.

macOS #

Dependencies:

  • Xcode Command Line Tools.

Build with:

sh scripts/bundle-macos.sh release
open dist/ntfy.app

Notifications require the app bundle. For a debug build, omit release from the bundle command.

Windows #

I haven't personally tested this on Windows, but this will probably work.

Dependencies:

  • The MSVC Rust toolchain.
  • Visual Studio w/ C++ build tools and the Windows SDK.
  • Inno Setup 6 (for the installer).

Build with:

cargo build --locked --release

To build an installer:

iscc packaging\windows\ntfy.iss

The installer makes a Start Menu shortcut and the notification identity dev.ntfy-gpui.desktop. Notification click-to-open is not implemented.