jabber Atom Feed

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

jabber.svg

jabber.el is an XMPP client for Emacs.

See the xmpp.org page for the full list of supported XEPs.

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.lz2026-Apr-20 188 KiB
jabber-0.10.5.0.20260418.85437.tar.lz2026-Apr-18 188 KiB
jabber-0.10.5.0.20260414.153707.tar.lz2026-Apr-14 188 KiB
jabber-0.10.5.0.20260410.155858.tar.lz2026-Apr-10 188 KiB
jabber-0.10.4.0.20260408.42932.tar.lz2026-Apr-08 187 KiB
jabber-0.10.3.0.20260407.85812.tar.lz2026-Apr-07 186 KiB
jabber-0.10.3.0.20260405.232609.tar.lz2026-Apr-06 183 KiB
jabber-0.10.2.0.20260405.121927.tar.lz2026-Apr-05 183 KiB
jabber-0.10.1.0.20260403.105946.tar.lz2026-Apr-03 183 KiB
jabber-0.10.0.0.20260402.173841.tar.lz2026-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 … …