ELPA Logo NonGNU-devel ELPA: jabber

jabber Atom Feed

Description
XMPP/Jabber client
Latest
jabber.tar (.sig), 2026-Sep-08, 1.89 MiB
Maintainer
Thanos Apollo <public@thanosapollo.org>
Other versions:
release version
Website
https://git.thanosapollo.org/emacs-jabber/about/
ELPA's Repository
CGit or Gitweb
All Dependencies
fsm (.tar)
keymap-popup (.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
  • fsm 0.2.0 or later
  • keymap-popup 0.2 or later

2.1. OMEMO encryption (optional)

OMEMO end-to-end encryption uses a native C module built from the vendored picomemo source. Build dependencies: a C compiler, pkg-config, and Mbed TLS 3.0 or later (mbedcrypto).

Build the module from the ELPA package directory:

cd /path/to/elpa/jabber-VERSION
make module

The resulting jabber-omemo-core.so (or .dylib on macOS) lands beside the Elisp files and is loaded automatically. If the module is missing, OMEMO use signals OMEMO module not compiled.

3. Installation

jabber.el is available via NonGNU ELPA. That is the only supported install path.

(use-package jabber
  :ensure t
  :config
  (setq jabber-account-list
        `(("user@example.org"
           (:password . ,(auth-source-pass-get 'secret "xmpp/example.org")))))
  (jabber-modeline-mode 1)
  :bind-keymap (("C-x C-j" . jabber-global-keymap))
  :hook (kill-emacs . jabber-disconnect))

4. Configuration

4.1. Authentication

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")))

4.2. SOCKS5 proxy

An account can connect through an unauthenticated SOCKS5 proxy:

(setq jabber-account-list
      '(("user@example.org"
         (:proxy . (:type socks5 :host "127.0.0.1" :port 9050)))))

The destination hostname is sent to the proxy rather than resolved locally. Proxy connections bypass SRV lookup and use the JID domain on port 5222, or :network-server and :port when those are configured. STARTTLS is supported. Direct TLS discovery, proxy authentication, and other proxy protocols are not supported for proxied accounts.

4.3. Bug references

(add-hook 'jabber-chat-mode-hook #'bug-reference-mode)

;; Customize references
(setq jabber-bug-reference-alist
      '(("jabber-el@conference\\.hmm\\.st"
         "\\(#\\([0-9]+\\)\\)"
         "https://todos.thanosapollo.org/r/emacs-jabber/%s")))

5. Basic commands

  • Use M-x jabber-roster or C-x C-j C-r to get started.

Old versions

jabber-0.14.0.0.20260907.4.tar.lz2026-Sep-08 316 KiB
jabber-0.14.0.0.20260907.4.tar2026-Sep-081.89 MiB
jabber-0.14.0.0.20260905.0.tar.lz2026-Sep-05 316 KiB
jabber-0.13.2.0.20260901.5.tar.lz2026-Sep-03 305 KiB
jabber-0.13.2.0.20260901.4.tar.lz2026-Sep-01 305 KiB
jabber-0.13.2.0.20260831.3.tar.lz2026-Aug-31 305 KiB
jabber-0.13.1.0.20260824.8.tar.lz2026-Aug-24 300 KiB
jabber-0.13.0.0.20260806.3.tar.lz2026-Aug-06 298 KiB
jabber-0.12.5.0.20260802.22.tar.lz2026-Aug-02 297 KiB
jabber-0.12.5.0.20260801.12.tar.lz2026-Aug-01 294 KiB
jabber-0.11.1.0.20260702.1.tar.lz2026-Jul-02 250 KiB
jabber-0.10.10.0.20260612.57.tar.lz2026-Jun-12 199 KiB

News

1. [0.14.0]

1.1. Fixes

  • Restore broadcast presence after connection. A room-recovery check rejected presence without a recipient, leaving the client unavailable to the server: contacts appeared offline and incoming messages could require archive sync

2. [0.13.3]

2.1. Added

  • Automatically preview shared links locally when URL expansion is enabled

2.2. Fixes

  • Reconnect failed transports after wake and check keepalive responses for new and resumed sessions
  • Preserve Stream Management replay order, validate handled counts, and ignore stale transport input and lifecycle callbacks
  • Preserve room recovery state, encrypted messages, and local echoes across reconnects, including nickname and credential ownership
  • Propagate picomemo encryption errors instead of reporting success
  • Restore serialized picomemo stores after refilling prekeys
  • Fix compiler dependencies and check every library with isolated byte and native compilation, including regression tests for compiler failures
  • Cancel orphaned Stream Management timers and bind callbacks to their owning connection state
  • Retire stale Stream Management requests during TLS negotiation
  • Fix OMEMO random generation and shared-module linking on OpenBSD

3. [0.13.2]

3.1. Added

  • Navigate previously sent chat input
  • Reset an individual OMEMO peer-device session from the trust buffer

3.2. Fixes

  • Persist OMEMO heartbeat ratchets before sending, preventing key reuse after restart
  • Preserve OMEMO trust while rebuilding sessions and reject changed device identities
  • Clear OMEMO session state atomically and wipe temporary store secrets
  • Preserve exact OMEMO cryptographic bytes in SQLite
  • Harden STARTTLS negotiation against malformed, premature, and stale replies
  • Skip queued real-time text sends after their chat session has ended
  • Handle MUC author retractions

4. [0.13.1]

4.1. Fixes

  • Correct outgoing MUC message-correction target lookup
  • Keep global Jabber menu bindings available during package loading
  • Preserve chat message bodies after live source reloads

5. [0.13.0]

5.1. Added

  • XEP-0201 message threads with persistent sessions, local titles, child threads, and account-scoped routing
  • XEP-0004 forms for MUC configuration and ad-hoc commands
  • Unauthenticated SOCKS5 account :proxy support; destination names are resolved by the proxy, and authentication and other proxy protocols are not supported

5.2. Changed

  • Chat-state notifications follow their owning message-thread session
  • Thread buffer labels and headers show root-message previews
  • Test loading no longer depends on generated autoloads and prefers newer source files over stale byte-code
  • Compose, registration, search, and vCard editing use text-first buffers and grouped command menus instead of widget.el
  • Added contribution instructions

5.3. Fixes

  • Live MUC reactions use the correct account-scoped room buffer
  • Replayed empty OMEMO messages stay hidden
  • Delivery-receipt status follows the latest message
  • Autoaway applies the configured away and extended-away priorities
  • MUC mentions treat nicknames literally
  • Direct invitations and transient reconnects preserve per-account room passwords in memory; explicit leave clears that session state

6. [0.12.5]

6.1. Fixes

  • Stop archived OMEMO failures from flooding *Messages*
  • Preserve unsent messages across connection recovery
  • Improve privacy and interoperability for receipts, blocking, bookmarks, MAM, and reactions

7. [0.12.4]

7.1. Added

  • Debian package build and installed-package tests to release checks

7.2. Changed

  • Hardened OMEMO message corrections and real-time text handling

7.3. Fixes

  • Reproducible autoload generation for Debian packages
  • Load Org faces before rendering styled messages

8. [0.12.3]

8.1. Added

  • Distinct theme-aware nickname colors in group chats
  • Save images that Emacs cannot display

… …