4.2 KiB
Sunstone
A native Linux desktop nostr client — GTK4 + libadwaita, written in Rust on rust-nostr.
Follows feed, long-form articles, live streams, video, DMs, groups, calendar, and zaps. Outbox (gossip) model on by default.
Status: Im still adding things as I see fit. Most things should be stable. There will be bugs and Ill try not to break shit with updates. I want add music notes and expand on that side of things.
Features
Login
- Local
nsec, stored NIP-49 encrypted (ncryptsec) behind a passphrase - NIP-46 remote signer (bunker) support
Feed & posting
- Following feed + browse any relay; NIP-65 relay lists with gossip/outbox routing
- Notes, replies and threads.
- Quote reposts and reposts (NIP-18); reactions incl. NIP-30 custom emoji (NIP-25)
- Polls (NIP-88)
- Content warnings (NIP-36), deletions (NIP-09).
- Live note preview, broadcast to relays, seen-on-relays, and copy raw JSON
Articles — long-form (NIP-23): discovery (Following / second-degree Network / Tags), in-app reader + distraction-free full page, a markdown split-pane editor with system spellcheck, and your published + draft library.
Media & live
- Live streams with HLS playback + NIP-53 chat; adaptive quality, audio-only mode
- Video (NIP-71); inline feed video; picture-in-picture
Zaps — NIP-57 lightning zaps over a NIP-47 (NWC) wallet.
Messaging & groups — NIP-17 DMs and NIP-29 relay groups.
Calendar — NIP-52 events with RSVP.
Organize — NIP-51 bookmarks, NIP-37 encrypted drafts, time-sectioned and grouped notifications (replies / mentions / reactions / reposts / zaps / poll votes).
Proxy — relay and media traffic can be routed through a SOCKS5/Tor proxy. I plan on adding internal TOR and I2P support soon.
Install
Download a prebuilt package for your distro from the Releases page, then install the downloaded file — or build from source.
Flatpak (any distro)
Add Flathub once (for the shared GNOME runtime), then install the downloaded bundle:
flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user sunstone.flatpak
flatpak run dev.sunstone.Sunstone
Debian / Ubuntu (.deb)
sudo apt install ./sunstone_0.1.0-1_amd64.deb
Arch Linux
sudo pacman -U sunstone-0.1.0-1-x86_64.pkg.tar.zst
Or build it yourself:
cd packaging/arch
makepkg -si
From source
Install the toolchain + dev libraries, then cargo build --release. The binary
lands at target/release/sunstone.
Debian/Ubuntu (trixie+):
sudo apt install build-essential pkg-config libssl-dev \
libgtk-4-dev libadwaita-1-dev libspelling-1-dev \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-libav \
gstreamer1.0-gtk4
cargo build --release
Arch:
sudo pacman -S --needed base-devel rust pkgconf openssl \
gtk4 libadwaita libspelling gstreamer gst-plugins-base \
gst-plugins-good gst-plugins-bad gst-plugin-gtk4 gst-libav
cargo build --release
Configuration
| What | Path |
|---|---|
| Settings, encrypted identity, bunker | ~/.config/sunstone/ |
| Event cache (LMDB), media cache, dead-relay list | ~/.local/share/sunstone/ |
(Under Flatpak these live in ~/.var/app/dev.sunstone.Sunstone/.)
Useful environment variables:
RUST_LOG— e.g.RUST_LOG=sunstone_gtk=info,sunstone_core=infoSUNSTONE_HW_DECODE=1— opt into hardware video decode (VA-API/NVDEC) where stableSUNSTONE_SW_DECODE=1— force software video decode
Building & hacking
cargo build # workspace
cargo test # core unit tests
cargo run # launch (debug)
Two crates: sunstone-core (nostr/relay/data layer) and sunstone-gtk
(GTK4/relm4 UI, binary sunstone).
Packaging recipes (Flatpak manifest, Arch PKGBUILD, local build helper) live
in packaging/.
License
MIT © enki