jabber Atom Feed

Description
XMPP/Jabber client
Latest
jabber-0.12.5.0.20260731.9.tar (.sig), 2026-Jul-31, 1.68 MiB
Maintainer
Thanos Apollo <public@thanosapollo.org>
Website
https://git.thanosapollo.org/emacs-jabber/about/
Browse 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

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 manually from the jabber source or ELPA/package directory:

cd /path/to/jabber-source-or-elpa-dir
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.

You can install it via M-x package-install RET jabber

3.1. package-vc (Emacs 30+)

Emacs honors package-vc build commands such as :make only when package-vc-allow-build-commands allows the package.

(setq package-vc-allow-build-commands '(jabber))

(use-package jabber
  :ensure nil
  :vc (:url "https://git.thanosapollo.org/emacs-jabber"
            :branch "master"
            :rev :newest
            :lisp-dir "lisp"
            :doc "README.org"
            :make "module")
  :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. straight.el

(use-package jabber
  :straight `(jabber
              :type git
              :host nil
              :repo "https://git.thanosapollo.org/emacs-jabber"
              :branch "master"
              :files ("lisp/*.el"
                      "lisp/jabber-omemo-core.so"
                      "lisp/jabber-omemo-core.dylib")
              :pre-build ,(pcase system-type
                            ('berkeley-unix '(("gmake" "module" "CC=clang")))
                            ('darwin '(("make" "module" "CC=clang")))
                            (_ '(("make" "module")))))
  :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.3. Nix

The repository ships a flake.nix with Emacs, test, lint, and native-module build dependencies.

make test
make module

To enter the same environment manually:

nix develop

To run the isolated Nix checks:

nix flake check

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

With pass (password-store):

(setq jabber-account-list
      `(("user@example.org"
         (:password . ,(auth-source-pass-get 'secret "xmpp/example.org/user")))))

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.12.5.0.20260730.5.tar.lz2026-Jul-30 282 KiB
jabber-0.12.5.0.20260729.2.tar.lz2026-Jul-29 280 KiB
jabber-0.12.5.0.20260728.0.tar.lz2026-Jul-28 274 KiB
jabber-0.12.4.0.20260726.0.tar.lz2026-Jul-26 273 KiB
jabber-0.12.3.0.20260726.3.tar.lz2026-Jul-26 272 KiB
jabber-0.12.2.0.20260725.9.tar.lz2026-Jul-25 266 KiB
jabber-0.12.1.0.20260713.30.tar.lz2026-Jul-13 262 KiB
jabber-0.12.0.0.20260710.29.tar.lz2026-Jul-10 261 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.12.5]

1.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

2. [0.12.4]

2.1. Added

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

2.2. Changed

  • Hardened OMEMO message corrections and real-time text handling

2.3. Fixes

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

3. [0.12.3]

3.1. Added

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

3.2. Fixes

  • More reliable keepalive monitoring with multiple accounts
  • Nickname completion works with custom delimiters

4. [0.12.2]

4.1. Added

  • Open chats from desktop notifications

4.2. Fixes

  • More reliable encrypted chats during session migration and out-of-order delivery

5. [0.12.1]

5.1. Added

  • Press RET on a reply to jump to the original message
  • Replies show and preserve more context, including after reloading a chat

5.2. Fixes

  • More reliable encrypted chats after reconnects and out-of-order messages
  • Safer inline image display, with manual loading available by pressing RET on an image URL
  • Manual image sizes are preserved when chats are redrawn

6. [0.12.0]

6.1. Added

  • Fontified fenced code blocks in chats
  • Inline reply context when messages do not include fallback quotes

6.2. Changed

  • More reliable encrypted chats after reconnects, archive catchup, and replayed messages
  • Improved reply and correction handling

6.3. Fixes

  • Failed encrypted message corrections no longer replace the original message
  • Reply quotes and corrected replies preserve their context more consistently

7. [0.11.1]

7.1. Added

  • See who reacted to a message via help-echo
  • Help-echo for the item at point now shows automatically

7.2. Fixes

  • Stop repeated error stanzas from spamming and reopening chat buffers
  • Preserve scroll position when a chat buffer refreshes

8. [0.11.0]

8.1. Added

  • Message reactions and MUC typing indicators
  • Nix flake development environment

8.2. Changed

  • OMEMO native module setup no longer auto-builds or auto-fetches sources

8.3. Fixes

  • Avoid Prosody disconnects by sending CSI only when the server advertises it
  • Recreate missing chat and MUC buffers from unread activity
  • Stop emitting malformed presence and vCard stanzas with nil children
  • Improve HTTP upload, message archive, reactions, receipts, and chat buffer reliability

9. [0.10.10]

9.1. Added

  • Roster contact popup can edit contact name and groups
  • Roster account picker can clear scoped view with “All accounts”
  • Chat operations menu exposes MUC actions from room buffers

9.2. Fixes

  • Suppress alerts for self-sent carbons and own MUC messages

10. [0.10.9]

10.1. Fixes

  • Styling face leak on message send
  • Modeline presence hook name
  • SRV weighted-select entry duplication

10.2. Added

  • bug-reference-mode auto-setup for chat buffers
  • Android picomemo compilation
  • Presence status in completing-read annotations
  • Per-account roster scoping

11. [0.10.8]

11.1. Changed

  • Roster replaced with keymap-popup interface
  • Dissolved jabber-menu.el into home modules

11.2. Improved

  • Improved test suite

12. [0.10.7]

12.1. Fixes

  • SM: Fixed silent message loss on ack stall with watchdog recovery
  • SM: IQ stanzas bypass back-pressure gate

12.2. Improved

  • Keymap-popup menus show dynamic values with faces

13. [0.10.6]

13.1. Changed

  • Replaced transient.el with keymap-popup.el for all menus
  • Roster, bookmarks, and OMEMO trust mode maps now double as popup keymaps, eliminating duplicate key definitions
  • Chat operations menu shows context-appropriate entries (1:1 vs MUC)
  • New dependency: keymap-popup (GNU ELPA)

14. [0.10.5]

… …