Lotus Chat desktop
The desktop app for Lotus Chat, Lotus Guild's
Matrix client (a fork of Cinny), built
with Tauri. The web client lives in the cinny/
submodule (LotusGuild/cinny).
Download
Builds are published on this repo's releases page: https://code.lotusguild.org/LotusGuild/cinny-desktop/releases/latest
| Platform | File |
|---|---|
| Windows | LotusChat-x86_64-setup.exe (NSIS installer) |
| Debian / Ubuntu | LotusChat-x86_64.deb, install with sudo apt install ./LotusChat-x86_64.deb |
| Arch | LotusChat-x86_64.pkg.tar.zst: download it, then sudo pacman -U LotusChat-x86_64.pkg.tar.zst |
| Other Linux | LotusChat-x86_64.AppImage |
There is no macOS build at the moment.
Verify a Linux download
Each release has a SHA256SUMS.txt, signed with the same key as the updater
(below). Check the signature, then the file, then install, e.g. for Arch:
B=https://code.lotusguild.org/LotusGuild/cinny-desktop/releases/download/latest
curl -LO $B/LotusChat-x86_64.pkg.tar.zst -LO $B/SHA256SUMS.txt -LO $B/SHA256SUMS.txt.minisig
minisign -Vm SHA256SUMS.txt -P RWRZZdyii05/NUcz337A5SAbiZK+NPVDWuiL2mM5Jk1p/LfRmNfiZ/6l \
&& sha256sum -c --ignore-missing SHA256SUMS.txt \
&& sudo pacman -U ./LotusChat-x86_64.pkg.tar.zst
For Debian / Ubuntu use LotusChat-x86_64.deb and sudo apt install ./LotusChat-x86_64.deb.
minisign is in both distributions' repositories.
Updates and signatures
The app updates itself from
https://code.lotusguild.org/LotusGuild/cinny-desktop/releases/download/latest/release.json.
Updater bundles (.nsis.zip, .AppImage.tar.gz) are signed with minisign; the
.sig files sit next to them. Lotus Chat's public key (the base64-decoded
plugins.updater.pubkey in src-tauri/tauri.conf.json):
RWRZZdyii05/NUcz337A5SAbiZK+NPVDWuiL2mM5Jk1p/LfRmNfiZ/6l
To check a bundle by hand, base64-decode its .sig file and run
minisign -Vm LotusChat-x86_64-setup.nsis.zip -P RWRZZdyii05/NUcz337A5SAbiZK+NPVDWuiL2mM5Jk1p/LfRmNfiZ/6l -x <decoded.sig>.
Packages installed through apt or pacman are updated by downloading the new package from the releases page; the in-app updater says so instead of replacing files it doesn't own.
Desktop features
Beyond the web client:
- Tray: unread, call and update state; Do Not Disturb.
- Launch on login, with an optional start minimized.
- Closing the window: asks once whether to keep running in the tray or quit. A call in progress always goes to the tray.
- Taskbar / launcher: unread badge, attention flash, upload progress.
- Windows: rich notifications with Reply and Mark as read, Focus Assist sync, thumbnail toolbar (mute / deafen / end call), jump list, media keys (SMTC).
- System-wide push-to-talk and deafen keys that work while another app (a game) has focus.
- Keychain: a copy of your login is kept in the OS keychain.
- Calls: the call page runs on its own loopback origin, with WebView permissions scoped to it; where the WebView has no WebRTC (Linux WebKitGTK), "Open in browser" instead of a dead end.
- Linux: NVIDIA / Wayland rendering workarounds.
Local development
Set up Rust, Node.js and the build tools per the Tauri prerequisites, then:
git clone --recursive https://code.lotusguild.org/LotusGuild/cinny-desktop.git
cd cinny-desktop/cinny && npm ci && cd ..
npm ci
npm run tauri dev # development
npm run tauri build # release build