jabber 
- Description
- XMPP/Jabber client
- Latest
- jabber-0.10.5.0.20260423.192938.tar (.sig), 2026-Apr-23, 1.09 MiB
- Maintainer
- Thanos Apollo <public@thanosapollo.org>
- Website
- https://git.thanosapollo.org/emacs-jabber
- Browse ELPA's repository
- CGit or Gitweb
- All Dependencies
- fsm (.tar)
- Badge
To install this package from Emacs, use package-install or list-packages.
Full description
1. About
2. Requirements
- Emacs 29.1 or later, compiled with dynamic module support
2.1. OMEMO encryption (optional)
OMEMO end-to-end encryption requires building a native C module. You
need a C compiler, pkg-config, and libmbedtls (development
headers).
If you installed from source (:vc or git clone), Emacs will offer
to fetch the picomemo dependency and build the module on first load.
If you installed from ELPA, clone the repository and build manually:
git clone https://git.thanosapollo.org/emacs-jabber/ cd emacs-jabber make module
Then copy the resulting jabber-omemo-core.so (or .dylib on
macOS) into your ELPA package directory, which is already on
load-path:
cp lisp/jabber-omemo-core.so ~/.emacs.d/elpa/jabber-VERSION/
3. Installation
jabber.el is available via NonGNU ELPA.
You can install it via M-x package-install RET jabber
3.1. package-vc (Emacs 30+)
(use-package jabber
:ensure nil
:vc (:url "https://git.thanosapollo.org/emacs-jabber/"
:branch "master"
:rev :newest
:lisp-dir "lisp")
:custom
(jabber-account-list '(("user@example.org")))
:config
(jabber-modeline-mode 1)
:bind-keymap (("C-x C-j" . jabber-global-keymap))
:hook (kill-emacs . jabber-disconnect))
3.2. GNU Guix
The repository ships a guix.scm that builds straight from the
current working tree, so you never need to update hashes or pin a
commit. Whatever is checked out is what gets installed. Picomemo is
fetched as a pinned input by guix.scm, so the optional OMEMO
submodule does not need to be initialised.
git clone https://git.thanosapollo.org/emacs-jabber/ cd emacs-jabber
One-shot install into your user profile:
guix package -f guix.scm
A development shell with all build dependencies:
guix shell -D -f guix.scm
To use emacs-jabber from a Guix Home configuration, load the
package definition and reference it from your services:
(use-modules (gnu home)
(gnu home services)
(gnu home services guix)
(gnu services)
(guix channels)
(guix gexp))
(define emacs-jabber-git
(load "/path/to/emacs-jabber/guix.scm"))
(home-environment
(packages (list emacs-jabber-git)))
Re-run guix home reconfigure after pulling new commits and the
package will be rebuilt from the updated checkout.
4. Configuration
Accounts are configured via jabber-account-list. The simplest form
uses auth-source ~/.authinfo.gpg for passwords:
(setq jabber-account-list '(("user@example.org")
("second@account.org")))
With pass (password-store):
(setq jabber-account-list
`(("user@example.org"
(:password . ,(auth-source-pass-get 'secret "xmpp/example.org/user")))))
5. Basic commands
| Key | Command |
|---|---|
M-x jabber-connect |
Connect (prompts for account) |
C-x C-j C-c |
Connect all accounts |
C-x C-j C-d |
Disconnect |
C-x C-j C-r |
Open roster buffer |
C-x C-j C-j |
Start or switch to a chat |
C-x C-j C-m |
Join/switch to a MUC (groupchat) |
C-x C-j C-b |
Switch to a chat buffer |
Old versions
| jabber-0.10.5.0.20260420.31558.tar.lz | 2026-Apr-20 | 188 KiB |
| jabber-0.10.5.0.20260418.85437.tar.lz | 2026-Apr-18 | 188 KiB |
| jabber-0.10.5.0.20260414.153707.tar.lz | 2026-Apr-14 | 188 KiB |
| jabber-0.10.5.0.20260410.155858.tar.lz | 2026-Apr-10 | 188 KiB |
| jabber-0.10.4.0.20260408.42932.tar.lz | 2026-Apr-08 | 187 KiB |
| jabber-0.10.3.0.20260407.85812.tar.lz | 2026-Apr-07 | 186 KiB |
| jabber-0.10.3.0.20260405.232609.tar.lz | 2026-Apr-06 | 183 KiB |
| jabber-0.10.2.0.20260405.121927.tar.lz | 2026-Apr-05 | 183 KiB |
| jabber-0.10.1.0.20260403.105946.tar.lz | 2026-Apr-03 | 183 KiB |
| jabber-0.10.0.0.20260402.173841.tar.lz | 2026-Apr-02 | 180 KiB |
News
1. [0.10.5]
1.1. Fixes
- OMEMO JIT build prompt now discloses network fetch from github.com
- OMEMO module no longer auto-fetches in batch mode (Emacs network policy)
- OMEMO module init hardened: graceful degradation without module support, nil-safe path resolution, single prompt per session
- Use gmake on BSD for OMEMO module build
1.2. Improved
- ELPA users guided to clone and build OMEMO module manually
- README documents OMEMO build for ELPA and package-vc users
1.3. Internal
- Fixed native-comp warnings (declare-function for jabber-chain-add, jabber-process-ping, ewoc-data, encode-hex-string, auth-source-search)
- Added make lint-native-comp target
- Added ;;; Commentary: and ;;; Code: sections to 30 legacy files
2. [0.10.4]
2.1. Fixes
- OMEMO module install path autodetected for ELPA layout
(build no longer fails when
lisp/subdirectory is absent)
2.2. Internal
- Silenced native-comp warnings in jabber-message-reply and jabber-moderation
3. [0.10.3]
3.1. Fixes
- OMEMO JIT build finds source path in ELPA installs
- Picomemo fallback clone for ELPA tarballs (submodule not populated)
- History import no longer stores empty account string
- Exclude picomemo test/example files from ELPA tarball
3.2. Internal
- MAM decoupled from display via hooks
- Chat backlog loaded from local DB instead of MAM
- Removed legacy SSL connection method
4. [0.10.2]
4.1. Fixes
- OMEMO module now optional: graceful degradation when native module is absent
- D-Bus notifications guard for Windows: no longer kills alert chain
- Roster refresh crash with multiple windows
- OMEMO trust commands guard without native module
5. [0.10.1]
5.1. New XEP implementations
- XEP-0163 Personal Eventing Protocol
- XEP-0368 SRV Records for XMPP over TLS (Direct TLS)
5.2. Features
- Idle time support for Windows
- Deduplicated JID completion with annotated candidates
5.3. Fixes
- PubSub node handler duplicate registration on repeated loads
- OpenPGP key refetch skipped when key already in local keyring
5.4. Compliance
- Achieves Advanced Core compliance (XEP-0479 Compliance Suites 2023)
6. [0.10.0]
6.1. Breaking changes
- Minimum Emacs version raised to 29.1
- Flat-file message history replaced with SQLite (
jabber-db.el) - Many obsolete modules removed (see commit history for full list)
6.2. New XEP implementations
- XEP-0060 Publish-Subscribe
- XEP-0184 Delivery Receipts and XEP-0333 Chat Markers
- XEP-0191 Blocking Command
- XEP-0198 Stream Management with resume
- XEP-0249 Direct MUC Invitations
- XEP-0280 Message Carbons
- XEP-0308 Last Message Correction
- XEP-0313 Message Archive Management
- XEP-0352 Client State Indication
- XEP-0373 OpenPGP for XMPP
- XEP-0384 OMEMO 0.3 encryption (requires native module build)
- XEP-0393 Message Styling
- XEP-0402 PEP Native Bookmarks
- XEP-0410 MUC Self-Ping
- XEP-0424/0425 Message Retraction and Moderation
- XEP-0454 OMEMO Media Sharing
- XEP-0461 Message Replies
6.3. Features
- SQLite message storage with full-text search
- Inline image display and encrypted media (aesgcm://)
- Typing indicators, delivery receipts, and read markers in chat buffers
- Encryption indicator in header line (OMEMO, OpenPGP, plaintext)
- Message correction, reply, retraction
- Stream Management with automatic resume on reconnect
- Disco-prioritized MUC autojoin (smallest rooms first)
- Room preservation and self-ping across reconnect
- MUC notification filtering (
all,mentions,nil) - OMEMO trust management UI and device management
- Modernized roster display
- Unified modeline with activity tracking
- Auto-reconnect enabled by default
6.4. Security
- CVE-2017-5589: Message Carbons validates sender JID to prevent spoofed carbon copies
- Receipt handling guards against MAM replay
- OMEMO trust filtering at encrypt time
7. [0.9.0]
:PROPERTIES: :CUSTOMID: v0.9.0 … …