jabber 
- Description
- XMPP/Jabber client
- Latest
- jabber-0.10.9.0.20260516.32909.tar (.sig), 2026-May-16, 1.06 MiB
- Maintainer
- Thanos Apollo <public@thanosapollo.org>
- Website
- https://codeberg.org/emacs-jabber/emacs-jabber
- 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
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. Build
dependencies: a C compiler, pkg-config, and libmbedtls.
On first use of OMEMO, Emacs offers to fetch picomemo and build
jabber-omemo-core in place. This works for all install methods
(git clone, package-vc, and NonGNU ELPA) provided the install
directory is writable and the build dependencies are present.
If you prefer to build manually:
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.
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
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. 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://codeberg.org/emacs-jabber/emacs-jabber/issues/%s")
("#guix%irc\\.libera.chat@irc\\.biboumi-gateway\\.example"
"\\(#\\([0-9]+\\)\\)"
"https://codeberg.org/guix/guix/issues/%s")))
5. Basic commands
- Use
M-x jabber-rosterorC-x C-j C-rto get started.
Old versions
| jabber-0.10.9.0.20260515.183702.tar.lz | 2026-May-15 | 184 KiB |
| jabber-0.10.9.0.20260514.224355.tar.lz | 2026-May-15 | 186 KiB |
| jabber-0.10.8.0.20260514.170538.tar.lz | 2026-May-14 | 186 KiB |
| jabber-0.10.8.0.20260513.160127.tar.lz | 2026-May-13 | 185 KiB |
| jabber-0.10.7.0.20260509.192638.tar.lz | 2026-May-09 | 191 KiB |
| jabber-0.10.6.0.20260504.5110.tar.lz | 2026-May-04 | 190 KiB |
| jabber-0.10.5.0.20260423.192938.tar.lz | 2026-Apr-23 | 189 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.0.0.20260402.173841.tar.lz | 2026-Apr-02 | 180 KiB |
News
1. [0.10.9]
1.1. Fixes
- Styling face leak on message send
- Modeline presence hook name
- SRV weighted-select entry duplication
1.2. Added
bug-reference-modeauto-setup for chat buffers- Android picomemo compilation
- Presence status in completing-read annotations
- Per-account roster scoping
2. [0.10.8]
2.1. Changed
- Roster replaced with keymap-popup interface
- Dissolved jabber-menu.el into home modules
2.2. Improved
- Improved test suite
3. [0.10.7]
3.1. Fixes
- SM: Fixed silent message loss on ack stall with watchdog recovery
- SM: IQ stanzas bypass back-pressure gate
3.2. Improved
- Keymap-popup menus show dynamic values with faces
4. [0.10.6]
4.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)
5. [0.10.5]
5.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
5.2. Improved
- ELPA users guided to clone and build OMEMO module manually
- README documents OMEMO build for ELPA and package-vc users
5.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
6. [0.10.4]
6.1. Fixes
- OMEMO module install path autodetected for ELPA layout
(build no longer fails when
lisp/subdirectory is absent)
6.2. Internal
- Silenced native-comp warnings in jabber-message-reply and jabber-moderation
7. [0.10.3]
7.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
7.2. Internal
- MAM decoupled from display via hooks
- Chat backlog loaded from local DB instead of MAM
- Removed legacy SSL connection method
8. [0.10.2]
8.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
9. [0.10.1]
9.1. New XEP implementations
- XEP-0163 Personal Eventing Protocol
- XEP-0368 SRV Records for XMPP over TLS (Direct TLS)
9.2. Features
- Idle time support for Windows
- Deduplicated JID completion with annotated candidates
9.3. Fixes
- PubSub node handler duplicate registration on repeated loads
- OpenPGP key refetch skipped when key already in local keyring
9.4. Compliance
- Achieves Advanced Core compliance (XEP-0479 Compliance Suites 2023)
10. [0.10.0]
10.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)
10.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
… …