man(1)
π man(1) β the profanity(1) page, bestie edition π
okay so you opened man 1 man expecting the manual pager and instead you got Profanity, an XMPP chat client, and honestly? slay. this is her page. manual section 1, name man, and we're gonna walk through every single thing because i refuse to let you skim. π
β¨ NAME β¨
Profanity β a simple console based XMPP chat client. that's the whole vibe. cute, terminal-native, no GUI nonsense. π
πΈ SYNOPSIS πΈ
profanity [-vh] [-l level] [-a account]
look at her. tiny. efficient. a whole chat client in one line. π¦
π DESCRIPTION π
Profanity is a simple, lightweight, console based XMPP chat client. her whole personality is a simple and configurable, command driven UI β you type, she does. no menus, no clicking, just vibes and slash commands.
the homepage lives at:
<https://profanity-im.github.io>
go. look. it's giving: functional. π₯
π OPTIONS π
-v,--versionβ show version and build information. she'll tell you exactly who she is.-h,--helpβ show help on command line arguments. the classic cry for guidance, but make it terminal.-a,--account ACCOUNTβ auto connect to an account on startup.ACCOUNTmust be an existing account, bestie β no inventing people. π-c,--configβ use an alternative config file.-l,--log LEVELβ set the logging level.LEVELmay be set toDEBUG,INFO(the default),WARNorERROR.-f,--logfileβ specify a different logfile. no full stop in the original description, i'm just saying. π-r,--cmdβ specify the commands that should be run right after starting up. this can be given multiple times, e.g.
profanity --cmd /foo --cmd "/sleep 10" --cmd /quit
-t,--theme THEMEβ specify which theme to use.THEMEmust be one of the themes installed in$XDG_CONFIG_HOME/profanity/themes. a whole wardrobe, main character energy. π
π KEYBINDINGS π
the muscle memory section. learn these and you ascend. β
Tab,Shift+Tabβ tab completion next, previous. works for commands, nicks and quotes (when the input line starts with>).ALT+1..Alt-0orF1..F10β choose window 1..10.ALT+q..Alt-p(in QWERTY layout) β choose window 11..20.ALT+LEFTβ choose previous chat window.ALT+RIGHTβ choose next chat window.PAGEUPβ page the active window up.PAGEDOWNβ page the active window down.ALT+PAGEUPβ page the occupants or roster panel up.ALT+PAGEDOWNβ page the occupants or roster panel down.ALT+UPorALT+WHEELUPβ scroll up. Note: limited support for scrolling with mouse wheel β please, get in touch with devs if you know how to add support for other terminals. (yes, that's a real open invitation, she's asking nicely π₯Ί)ALT+DOWNorALT+WHEELDOWNβ scroll down. see note above.ALT+aβ jump to the next unread window.ALT+vβ mark the current window for later reading with an attention flag.ALT+mβ switch between windows marked with the attention flag.ALT+ENTERβ add a newline character without sending a message/command. the "let me finish my thought" key. πALT+cβ run external editor (seeprofanity-editor(1)) for the current input line.CTRL+DOWNβ store the current input line in history but do not execute it.
Note: Profanity is using the GNU Readline library to handle input, so the default configuration file~/.inputrcaffects operation. In addition to that,$XDG_CONFIG_HOME/profanity/inputrcis read after all default keybindings are set, so one can override or add settings there. For reference, see the Readline documentation:info readline "Command Line Editing" "Readline Init File" "Readline Init File Syntax"and the list of available Profanity commands ininputwin.c. Standard Readline keybindings are supported, including C-r for interactive history search and C-x C-r for reloading inputrc without a restart. no cap, that last one is a gift. π
π USING PROFANITY π
step one, bestie: connect to an XMPP server. the /connect and /account commands can be used to set up the XMPP accounts within profanity (see profanity-connect(1) and profanity-account(1)) with an existing XMPP account. the /register command can be used to register an account on a server β profanity-register(1). use the /help commands connection command in profanity to display more commands for managing your connection. β¨
the roster is your address book. by default, your roster will be shown in "window 1", which is the profanity /console. it's possible to /roster hide and to /roster show the address book in the profanity console. buddies can be added via /roster add JID.
to see the online status of your contacts, the /sub command can be used to manage subscriptions to the presence of contacts. /sub request will send a request. /sub allow is used to approve a contact's subscription request. use /help commands roster to get a list of commands which can be used to manage your roster.
open chat windows can be shown by the /wins command. jumping to a window can be done via /win NUMBER or /win JID. profanity supports autocompletion with the TAB key. the /msg command can be used to start a chat with your contact. groupchats can be joined with the /join command or managed within the account's bookmark.
if the group chat is stored in the bookmarks, the group chat can be set to auto-join. if the auto-join is switched off, use /bookmark join to join the group chat. the /sendfile and /url commands can be used to share and download files. enter > and press the Tab key to quote an existing message in the chat window. genuinely iconic behaviour. π₯
the user guide can be found at <https://profanity-im.github.io/userguide.html>.
π ENCRYPTION π
Profanity supports various kinds of encryption: OMEMO, OTR, PGP, OX. you can only enable one of them per correspondent at a time β she's monogamous with your crypto, periodt.
- OMEMO β
OMEMO(/omemo) is defined in XEP-0384. it uses an implementation of the Signal protocol for key management and to synchronize messages among different clients. it works even when other clients are offline. and offers Perfect Forward Secrecy and Plausible deniability. servers need to support PEP (XEP-0163). we implement the "siacs" version of OMEMO, version 0.3.0, which is currently the widest adopted option. OMEMO is the only encryption option in Profanity that also supports encryption for MUCs (XEP-0045) and file transfer via HTTP upload (XEP-0363). she's the it-girl, fr fr. π - OTR β
OTR(/otr) is defined in XEP-0364. it uses a combination of the AES symmetric-key algorithm, the DiffieβHellman key exchange, and the SHA-1 hash function. it offers deniable authentication and Perfect Forward Secrecy. to initialize a session both clients need to be online at the same time. a session is between two clients, so multiclient chats are not working β which is a feature not a bug. OTR does by design not work for MUCs. - OpenPGP β
OpenPGP(/pgp) is defined in XEP-0027. it uses a public and secret key. it is also known as Legacy OpenPGP and has been deprecated. it doesn't provide protection against replay attacks. MUCs and file transfer via HTTP upload are not specified and thus not supported. deprecated means deprecated, bestie, i'm not sugarcoating that. β οΈ - OX β
OX(/ox) is defined in XEP-0373 and XEP-0374. it's a more modern way to use OpenPGP on XMPP and tries to fix the shortcomings of legacy XEP-0027. servers need to support PEP (XEP-0163). MUCs and file transfer via HTTP upload are not specified and thus not supported.
π DETAILS π
for more details, read the relevant XEPs and look at the overview at <https://wiki.xmpp.org/web/XMPP_E2E_Security>. homework, but the fun kind. π§
π¦ TERMINOLOGY π¦
there's some XMPP specific terminology that might be unknown for fresh users. we'll try to describe it here, since these terms are often referenced in the help and man pages. (the original says "references" β i said what i said. π)
- JID β stands for Jabber ID. it refers to an XMPP address. historically, XMPP was also known as Jabber.
- MAM β stands for Message Archive Management (XEP-0313) and describes the ability to store messages on the server and retrieve them later.
- MUC β stands for Multi-User Chats (XEP-0045) and they're also called groups, group chats, chatrooms or conferences.
- Roster β the roster is your contact list. by default displayed on the right side of the console window. see RFC6121.
- XEP β XMPP is an extendable protocol. there are core features and optional features described in XMPP Extension Protocols, short XEPs.
there are various kinds of messages.
1:1 messages are regular messages from one party to another party, from one JID to the other JID. often you have the other party added to your roster.
MUC messages are messages from one party to a group chat.
MUC PM (MUC private message) are messages from one party to another party which are in the same group chat. you might not have the JID of this person in your roster, or don't know their JID at all. communication is done over the MUC via the nick. only the two parties can see the message. in the Android client Conversations this is displayed as "whispering". if a user leaves a MUC, another user can join the MUC with the same nick unless the nick is registered. which often isn't the case. sneaky little loophole, ngl. π
π« SEE ALSO π«
Profanity itself has a lot of built-in help. check the /help command for more information. type /help help for information on how to use help itself. Profanity ships with one man page for each built-in command, e.g. there is profanity-account(1) for /account. recursion, but make it documentation. π
βοΈ CONFIGURATION βοΈ
configuration for Profanity is stored in $XDG_CONFIG_HOME/profanity/profrc. details on commands for configuring Profanity can be found at <https://profanity-im.github.io/reference.html> or in the respective built-in help or man pages.
π BUGS π
bugs can either be reported by raising an issue at the GitHub issue tracker:
<https://github.com/profanity-im/profanity/issues>
or to the mailing list at:
<https://lists.posteo.de/listinfo/profanity>
found a bug? tell her. she wants to know. she'll fix it. π
π LICENSE π
Copyright (C) 2012 - 2019 James Booth <boothj5web@gmail.com>. Copyright (C) 2019 - 2026 Michael Vetter <jubalh@iodoru.org>. License GPLv3+: GNU GPL version 3 or later <https://www.gnu.org/licenses/gpl.html>. This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. read that again. NO WARRANTY. dramatic but true. π
π AUTHORS/CREDITS π
Profanity was created by James Booth <boothj5web@gmail.com> with many contributions from others. see the full list at: <https://github.com/profanity-im/profanity/graphs/contributors>. a whole squad. a community. we love to see it. π«Ά
aaand that's the page, bestie. this was Profanity version 0.18.2, dated 2026-06-08, and you read the man(1) page for it. now go /connect to something and be somebody's favorite contact. mwah. πβ¨π
π¦ where this page comes from
- ubuntu stonking: profanity 0.18.2-1 Β· GPL-3.0-or-later WITH OpenSSL exception
- ubuntu stonking: profanity-light 0.18.2-1 Β· GPL-3.0-or-later WITH OpenSSL exception
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms