A native Delta Chat client for GNOME — decentralized, encrypted chat over email.
Parla is a lightweight, native Vala + GTK4 + libadwaita app that talks to deltachat-rpc-server over JSON-RPC. It is designed for GNOME and follows its desktop conventions, while also running on Linux, Windows, and macOS.
Download a package from the Parla releases page. It provides Linux packages (.deb, Flatpak, and AppImage), macOS .dmg images, and a Windows .zip archive. On Windows, extract the archive and start parla.exe; on macOS, open the disk image and move Parla to Applications.
On first launch, follow the profile setup to choose a display name and a chatmail relay. The relay creates an email address and password for you, while Parla generates your encryption keys on your device. You can also redeem an invitation code or import a second device instead. Then use New chat or New group to start talking and share an invite link or QR code with others.
Want to build it yourself? See Build below.
- Stickers that are yours to keep — send stickers, collect received stickers, and organize them in local packs. Animated stickers can be paused or disabled when you want to save resources.
- A useful media gallery — each chat has a browsable gallery for images, stickers, files, audio, video, and shared Webxdc apps, with quick access back to the original message.
- Webxdc mini-apps — run and manage offline web apps shared in chats. This is experimental and available on supported Linux and macOS builds; see Webxdc apps for security and platform details.
- Choose the conversation layout — use familiar bubbles, compact IRC-style lines, or workspace rows. The split view adapts to narrow and phone-sized windows, where the sidebar becomes a single-pane navigation view.
- Keyboard-first when you want it — quickly switch chats, create conversations, search, navigate, and focus the composer without leaving the keyboard.
- Desktop-aware — configurable notifications, a tray icon for keeping Parla available in the background, and support for multiple accounts.
- Rich compose bar — multi-line text, file attachments via picker or drag-and-drop, paste images or files straight from the clipboard.
- Reply, edit, delete, forward — full message actions via right-click; delete-for-self or delete-for-everyone on your own messages.
- Emoji reactions — quick-pick 👍 ❤️ 😂 😮 😢 👎 shown as badges on the message.
- Pinned messages — pin any message in a chat; a pinned-messages bar at the top of the conversation lets you jump back to them.
- Reply previews — quoted sender and text preview (capped at 3 lines) above the compose entry and inside bubbles.
- Inline image previews with a full-screen viewer (click to open, right-click to save, Escape to close).
- Sticker packs — send stickers, collect received ones, and manage your own local packs.
- Voice-message transcription — transcribe downloaded voice messages locally with the Whisper command-line tool when it is installed; results stay in memory and are not sent or saved with the message.
- Optional Markdown rendering — bold, italic,
strikethrough,inline code, fenced code blocks, headings, tables, and auto-linkified URLs. - In-chat search (Ctrl+F, Command+F on macOS) with real-time filtering and highlight.
- Save attachments to disk from the message context menu.
- Adaptive split-view sidebar + conversation, collapsing to a single pane on narrow windows with a back button.
- Chat list with avatars, unread dots and badges, last-message preview, smart timestamps (time / weekday / date), pinned indicator and muted styling.
- Pin, mute, delete chats from the sidebar context menu; view chat info (members, avatar, type) in a dedicated dialog.
- Contact requests surfaced with their own badge.
- Sidebar search to filter chats by name.
- Quick switcher fuzzy chat search, Enter to open the top match.
- New 1:1 chat via contact picker, and new group with name, avatar and member selection.
- Per-chat media gallery for images, stickers, files, audio, video, and Webxdc attachments.
- Private Parla account store in Parla's XDG data directory.
- Auto-discovery of standalone
deltachat-rpc-serverfrom the Parla bundle, distro packages,$PATH,~/.local/bin, and~/.cargo/bin. - Multi-account switching from the settings dialog.
- My Profile dialog to edit display name, status and avatar.
- End-to-end encryption via Autocrypt, handled by the Delta Chat core.
- Double-click action on a message: Reply / React ❤️ / React 👍 / Open profile / None.
- Choose whether Markdown is rendered, stripped, or shown as-is.
- Toggle Shift+Enter vs Enter to send.
- Toggle desktop notifications for incoming messages when the window is unfocused.
- Choose bubble, compact IRC, or workspace message layouts, and configure the tray icon for background use.
- Choose the JSON-RPC server source: Parla/system auto-discovery or a custom binary.
| Action | Other platforms | macOS |
|---|---|---|
| New chat | Ctrl+N |
Command+N |
| New group | Ctrl+G |
Command+G |
| New channel | Ctrl+Shift+G |
Command+Shift+G |
| Quick chat switcher | Ctrl+K |
Command+K |
| Account menu | Ctrl+Shift+A |
Command+Shift+A |
| Next conversation | Ctrl+Page Down |
Command+Page Down |
| Previous conversation | Ctrl+Page Up |
Command+Page Up |
| Search in conversation | Ctrl+F |
Command+F |
| Open chat info | Ctrl+I |
Command+I |
| Focus compose entry | Esc |
Esc |
| Refresh | Ctrl+R |
Command+R |
| Toggle sidebar | Ctrl+S |
Command+S |
| Compact sidebar | Ctrl+Shift+S |
Command+Shift+S |
| Settings | Ctrl+, |
Command+, |
| Close window | Ctrl+W |
Command+W |
| Quit | Ctrl+Q |
Command+Q |
| Close dialog / viewer / search | Esc |
Esc |
# Install dependencies (Ubuntu)
sudo apt install valac meson libgtk-4-dev libadwaita-1-dev libjson-glib-dev
# Webxdc builds additionally need WebKitGTK (Ubuntu)
sudo apt install libwebkitgtk-6.0-dev
# Install the RPC backend for source builds
pip install deltachat-rpc-server
# Or: cargo install --git https://github.com/chatmail/core/ deltachat-rpc-server
# Build & run
make runOther distros
Fedora: sudo dnf install vala meson gtk4-devel libadwaita-devel json-glib-devel
Arch: sudo pacman -S vala meson gtk4 libadwaita json-glib
Flatpak: flatpak install io.github.trufae.Parla.flatpak
AppImage: make appimage
macOS
brew install meson ninja vala pkgconf gtk4 libadwaita json-glib librsvg webp-pixbuf-loader glib-networking adwaita-icon-theme
# Install the RPC backend for source builds.
pip install deltachat-rpc-server
# Or: cargo install --git https://github.com/chatmail/core/ deltachat-rpc-server
make run # builds and runs dist/macos/Parla.app
make app # creates dist/macos/Parla.app
make macos # creates Parla-<version>-<arch>.zipmake app bundles Homebrew GTK/libadwaita libraries. The RPC backend is not
bundled by default; set PARLA_BUNDLE_RPC_SERVER=/absolute/path/to/deltachat-rpc-server
only for a local bundle that should include a specific backend binary.
Windows
Build inside an MSYS2 UCRT64 shell:
pacman -S zip mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-meson \
mingw-w64-ucrt-x86_64-vala mingw-w64-ucrt-x86_64-gtk4 \
mingw-w64-ucrt-x86_64-libadwaita mingw-w64-ucrt-x86_64-json-glib \
mingw-w64-ucrt-x86_64-glib-networking mingw-w64-ucrt-x86_64-adwaita-icon-theme \
mingw-w64-ucrt-x86_64-librsvg mingw-w64-ucrt-x86_64-webp-pixbuf-loader \
mingw-w64-ucrt-x86_64-ntldd
bash scripts/windows/bundle.sh # creates dist/windows/parla-<version>-windows-<arch>.zipThe script builds with meson and bundles the GTK/libadwaita runtime (DLLs, GSettings schemas, icon themes, pixbuf loaders, TLS module) into a self-contained folder, then zips it. CI publishes this zip for every release.
See docs/rpc-server.md for how Parla finds the JSON-RPC server and how to package it for Flatpak or distro packages.
Webxdc apps are small offline web apps attached to Delta Chat messages. Support is experimental and disabled at build time by default because embedding a browser engine adds a large dependency and a significant attack surface. It can also be disabled at runtime under Settings → Advanced → Webxdc apps.
That settings section also controls Internet access, WebAssembly, WebGL, and WebKitGTK hardware acceleration for mini-apps. These capabilities are disabled by default, and a Use safest button restores all safe defaults. Direct Internet access is marked unsafe because standard Webxdc apps are expected to remain offline; the macOS WebGL restriction is best-effort because WKWebView offers no public hard-disable API.
Platform support currently is:
- Linux: WebKitGTK 6.0. Supported by native and Flatpak builds. The AppImage does not bundle WebKitGTK and therefore has no Webxdc support.
- macOS: the system WebKit framework; no extra web-engine package is needed.
- Windows: not supported yet; Windows builds use the Webxdc stub.
To build and run it from the source tree:
# Ubuntu/Debian build dependency
sudo apt install libwebkitgtk-6.0-dev
make run WITH_WEBXDC=1
# Or with Meson directly:
meson setup builddir -Dwebxdc=true
meson compile -C builddirWebxdc attachments contain untrusted JavaScript, so Parla deliberately does
not fall back to running them without the web-engine sandbox. On Linux,
WebKitGTK uses bubblewrap and unprivileged user namespaces for that sandbox.
Ubuntu 24.04 and newer may restrict those namespaces through AppArmor; without
an application policy WebKitGTK can fail with bwrap: setting up uid map: Permission denied.
A native Webxdc install handles this automatically. The generated policy is attached to the actual installed binary path, is installed only when AppArmor is active, and is loaded as part of the install:
sudo make install WITH_WEBXDC=1Staged native package installs include the profile without loading it on the
build host; package lifecycle scripts load it only where the Ubuntu
restriction is active. Direct installs on systems without that restriction do
not install the policy.
Running make run WITH_WEBXDC=1 directly from a build directory is not covered
by the installed-binary policy on restricted Ubuntu systems; install the
binary first and run the installed parla executable. Parla detects this
specific unsafe host state and refuses to launch the app with an error instead
of disabling the WebKit sandbox or allowing WebKitGTK to abort. Flatpak uses
its own sandbox and does not install a host AppArmor profile.
See docs/webxdc.md for the implementation, security boundaries, and currently exposed JavaScript API.
Parla is single-instance and can run as a background service on Linux:
parla --background starts it without a window (e.g. for session
autostart) and parla --show presents the window of the running
instance. See docs/background.md.
Early-stage project — contributions welcome! Open areas: Flatpak packaging, theming, richer notifications, accessibility polish, and more message types.
GPLv3 — see LICENSE.
Built on Delta Chat, GNOME and libadwaita.