1. Install Profanity

sudo pacman -S profanity

If you want OMEMO (end-to-end encryption) support too:

sudo pacman -S profanity
# omemo support is usually bundled if built with the right deps; check:
profanity --version

(If your build lacks OMEMO/PGP, you can rebuild from the AUR with the needed USE flags, but the repo package normally works fine.)

2. Get an XMPP account

You need a JID (Jabber ID), like you@example.org. If you don’t have one, pick a public server such as conversations.im, movim.eu, or xmpp.jp, and register — either via their website or from Profanity itself:

profanity
/account add myaccount
/account set myaccount jid you@example.org

If the server supports in-band registration, some clients can register directly; otherwise sign up on the provider’s site first.

3. Connect

Launch Profanity:

profanity

Then inside the client:

/connect you@example.org

It’ll prompt for your password (or you can store it securely):

/account set myaccount password yourpassword
/account set myaccount server example.org
/connect you@example.org

To auto-connect on startup:

/account set myaccount autoconnect on

4. Joining chat rooms (MUC — Multi-User Chat)

XMPP’s “communities/group chats” are called MUCs. To join one:

/join room@conference.example.org

For example, a public tech chat might be:

/join xmpp@conference.movim.eu

You can set a nickname when joining:

/join room@conference.example.org/YourNick

To find public rooms, many servers run a directory service — try:

/disco search conference.example.org

or browse via a service like search.jabber.network in a browser first to find room JIDs, then join them from Profanity.

5. Basic chat commands

Action Command
List joined rooms /rooms
Switch between open chats Alt+1, Alt+2, etc., or /win N
Send a message just type and hit Enter (while a room/chat is focused)
Private message a user in a room /msg room@conference.example.org/Nick hello
Leave a room /leave
Add a contact /roster add friend@example.org
See your roster /roster
Start 1:1 chat /msg friend@example.org
Enable encryption (OMEMO) /omemo start friend@example.org
Show help /help

6. Quality-of-life config

Inside Profanity:

/theme load default
/notify message on
/titlebar show on
/inpblock timeout 500

To edit config directly:

$EDITOR ~/.config/profanity/profrc

7. Alternative: Poezio

If you want something more IRC-like in feel, poezio is another solid CLI XMPP client, also in the Arch repos:

sudo pacman -S poezio

It uses a similar /join, /list, /msg-style command set and is particularly good if you’re coming from IRC and want MUCs to feel familiar.


A couple of practical notes:

  • Some public MUC directories are unreliable — asking in an existing community (e.g., a project’s XMPP room linked from its website) is often the easiest way to find active rooms.
  • If you’re joining rooms tied to a specific project (many FOSS projects run XMPP rooms alongside Matrix/IRC), check that project’s contact/community page for the exact room JID.

Want me to also cover setting up OMEMO encryption keys/fingerprint verification, or scripting XMPP messages (e.g., via sendxmpp or a bot) for automation?