Profanity - a simple console based XMPP chat client.
Contents
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>
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 the respective
built-in help or man pages.
Description
Profanity is a simple lightweight console based XMPP chat client. Its emphasis is on having a simple and
configurable command driven UI, see the homepage at:
<https://profanity-im.github.io>
Encryption
Profanity supports various kinds of encryption: OMEMO, OTR, PGP, OX. You can only enable one of them per
correspondent at a time.
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).
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. Is 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.
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>
Keybindings
Tab, Shift+Tab
Tab completion next, previous. Works for commands, nicks and quotes (when input line starts with
>).
ALT+1..Alt-0 or F1..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+a Jump to the next unread window.
ALT+v Mark current window for later reading with an attention flag.
ALT+m Switch between windows marked with the attention flag.
ALT+c Run external editor (see profanity-editor(1)) for current input line.
CTRL+DOWN
Store current input line in history but do not execute it.
Note: Profanity is using GNU Readline library to handle input so default configuration file ~/.inputrc
affects operation. In addition to that $XDG_CONFIG_HOME/profanity/inputrc is read after all default
keybindigs are set so one can override or add settings there. For reference, see Readline documentation:
inforeadline"CommandLineEditing""ReadlineInitFile""ReadlineInitFileSyntax" and the list of
available Profanity commands in inputwin.c. Standard Readline keybindings are supported, including C-r
for interactive history search and C-xC-r for reloading inputrc without restart.
License
Copyright (C) 2012 - 2019 James Booth <boothj5web@gmail.com>. Copyright (C) 2019 - 2023 Michael Vetter
<jubalh@iodoru.com>. 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.
Name
Profanity - a simple console based XMPP chat client.
Options
-v,--version
Show version and build information.
-h,--help
Show help on command line arguments.
-a,--accountACCOUNT
Auto connect to an account on startup, ACCOUNT must be an existing account.
-c,--config
Use an alternative config file.
-l,--logLEVEL
Set the logging level, LEVEL may be set to DEBUG, INFO (the default), WARN or ERROR.
-f,--logfile
Specify a different logfile
-t,--themeTHEME
Specify which theme to use. THEME must be one of the themes installed in
$XDG_CONFIG_HOME/profanity/themes
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.
Synopsis
profanity [-vh] [-l level] [-a account]
Terminology
There is some XMPP specific terminology that might be unknown for fresh users. We will try to describe
them here since they are often references in the help and man pages.
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 Mutli-User Chats (XEP-0045) and are also
called, groups, group chats, chatrooms or conferences. Roster The roster is your contact list. By
default displayed at the right side on the console window. See RFC6121. XEP XMPP is aa extendable
protocol. There are core features and optional features described in XMPP Extension Protocols,
short XEPs.
Using Profanity
The user guide can be found at <https://profanity-im.github.io/userguide.html>.
