'\" t
.\" Title: nheko
.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 2022-01-27
.\" Manual: General Commands Manual
.\" Source: nheko 0.12.0
.\" Language: English
.\"
.TH "NHEKO" "1" "2022\-01\-27" "nheko 0\&.12\&.0" "General Commands Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nheko \- Desktop client for Matrix using Qt and C++17
.SH "SYNOPSIS"
.sp
\fBnheko\fR [\fIOPTIONS\fR]
.SH "DESCRIPTION"
.sp
The motivation behind the project is to provide a native desktop app for Matrix that feels more like a mainstream chat app (Element, Telegram etc) and less like an IRC client\&.
.SH "OPTIONS"
.PP
\fB\-h\fR, \fB\-\-help\fR
.RS 4
Displays help on commandline options\&.
.RE
.PP
\fB\-\-help\-all\fR
.RS 4
Displays help including Qt specific options\&.
.RE
.PP
\fB\-v\fR, \fB\-\-version\fR
.RS 4
Displays version information\&.
.RE
.PP
\fB\-\-debug\fR
.RS 4
Alias for
\fI\-\-log\-level trace\fR\&.
.RE
.PP
\fB\-l\fR, \fB\-\-log\-level\fR \fI\fR
.RS 4
Set the global log level, or a comma\-separated list of
\fI=\fR
pairs, or both\&. For example, to set the default log level to
\fIwarn\fR
but disable logging for the
\fIui\fR
component, pass
\fIwarn,ui=off\fR\&.
.sp
levels:
\fItrace\fR
\fIdebug\fR
\fIinfo\fR
\fIwarning\fR
\fIerror\fR
\fIcritical\fR
\fIoff\fR
.sp
components:
\fIcrypto\fR
\fIdb\fR
\fImtx\fR
\fInet\fR
\fIqml\fR
\fIui\fR
.sp
Log levels can also be set in the NHEKO_LOG_LEVEL environment variable, using the same syntax\&. It will be overridden by this command line option\&.
.RE
.PP
\fB\-L\fR, \fB\-\-log\-type\fR \fI\fR
.RS 4
Set the log output type\&. A comma\-separated list is allowed\&. The default is
\fIfile,stderr\fR\&.
.sp
types:
\fIfile\fR
\fIstderr\fR
\fInone\fR
.sp
The log type can also be set in the NHEKO_LOG_TYPE environment variable, which will be overridden by this command line option\&.
.RE
.PP
\fB\-p\fR \fI\fR, \fB\-\-profile\fR \fI\fR
.RS 4
Creates a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko\&. Use
\fIdefault\fR
to start with the default profile\&.
.RE
.PP
\fB\-C\fR, \fB\-\-compact\fR
.RS 4
Allows shrinking the database, since LMDB databases don\(cqt automatically shrink when data is deleted\&. Possibly allows some recovery on database corruption\&.
.RE
.SH "FAQ"
.SS "How do I add stickers and custom emojis?"
.sp
Stickers and custom emojis are organized in image packs\&. There is one user image pack that only your account has access to and there are room image packs that are accessible by everyone in the room they are defined in\&. You can activate a room image pack globally to use it in any room\&.
.sp
To manage image packs in nheko, go to the room settings and enter the Sticker & Emote Settings\&. You will see the Private pack (your user image pack) and can edit it there\&. The Shortcode is a unique identifier you use to select the image with and the Body is the alternate text that is displayed on clients that don\(cqt support images (like the alt tag in HTML images)\&.
.sp
If you have the necessary permissions you can create new room packs with the button at the bottom of the image pack list\&. They are the same as the user pack but you can create as many as you want and everyone in the room can use them\&. It might be a good idea to create an extra room just for your image packs to make sharing easier\&.
.SH "COMPLETERS"
.sp
Completers spawn a popup with completion candidates when you type them in the input line\&.
.PP
\fB@\fR
.RS 4
Open username completer\&.
.RE
.PP
\fB#\fR
.RS 4
Open room completer\&.
.RE
.PP
\fB:\fR
.RS 4
Open the emoji picker\&. Unicode emoji are inserted directly\&. Custom emoji will insert the HTML code for them into the input line\&. You can configure custom emoji in the room settings\&.
.RE
.SH "KEYBOARD SHORTCUTS"
.SS "Room list"
.PP
\fBCtrl\-Up/Ctrl\-Down\fR
.RS 4
Navigate within the room list\&.
.RE
.PP
\fBCtrl\-W\fR
.RS 4
Close the currently open room\&.
.RE
.PP
\fBCtrl\-K\fR
.RS 4
Search and select rooms from the room list\&.
.RE
.PP
\fBAlt\-A\fR, \fBCtrl\-Shift\-A\fR
.RS 4
Select next room with activity\&.
.RE
.SS "Timeline/Messaging"
.PP
\fBPgUp/PgDn\fR
.RS 4
Scroll timeline per page\&.
.RE
.PP
\fBAlt\-Up/Alt\-Down\fR
.RS 4
Reply to a message\&.
.RE
.PP
\fBUp/Down\fR
.RS 4
Edit a message\&.
.RE
.PP
\fBCtrl\-E\fR
.RS 4
Edit message currently selected as reply\&.
.RE
.PP
\fBAlt\-F\fR
.RS 4
Forward message currently selected as reply\&.
.RE
.PP
\fBCtrl\-P/Ctrl\-N\fR
.RS 4
Reenter previous/next message\&.
.RE
.PP
\fBCtrl\-U\fR
.RS 4
Delete everything in the input line\&.
.RE
.PP
\fBCtrl\-Left/Ctrl\-Right\fR
.RS 4
Jump one word left/right in the input line\&.
.RE
.PP
\fBShift\-Enter\fR
.RS 4
Insert line break\&.
.RE
.PP
\fBEnter\fR
.RS 4
Submit message\&.
.RE
.SH "COMMANDS"
.sp
Commands only work when they are used at the beginning of text\&.
.SS "Custom messages"
.PP
\fB/me\fR \fI\fR
.RS 4
Send a message as an emote, where your username is prefixed\&.
.RE
.PP
\fB/react\fR \fI\fR
.RS 4
Send a message as a reaction when you\(cqre replying to a message\&.
.RE
.PP
\fB/md\fR \fI\fR
.RS 4
Force Markdown when sending the current message\&.
.RE
.PP
\fB/cmark\fR \fI\fR
.RS 4
Disables most of our extensions to cmark (CommonMark), including the newline\-in\-input = newline\-in\-output behaviour, strikethrough and spoilers\&. You may still force newlines with 2 spaces or a backslash before the line ending or insert HTML elements\&.
.RE
.PP
\fB/plain\fR \fI\fR
.RS 4
Force plain text when sending the current message\&.
.RE
.PP
\fB/rainbow\fR \fI\fR
.RS 4
Send a message in rainbow colors\&.
.RE
.PP
\fB/rainbowme\fR \fI\fR
.RS 4
Send a message as a rainbow\-colored emote, where your username is prefixed\&.
.RE
.PP
\fB/notice\fR \fI\fR
.RS 4
Send a message as a notice\&.
.RE
.PP
\fB/rainbownotice\fR \fI\fR
.RS 4
Send a message as a rainbow\-colored notice\&.
.RE
.SS "Room management"
.PP
\fB/join\fR \fI\fR \fI[reason]\fR
.RS 4
Join a room\&.
\fIreason\fR
is optional\&.
.RE
.PP
\fB/knock\fR \fI\fR \fI[reason]\fR
.RS 4
Ask to join a room\&.
\fIreason\fR
is optional\&.
.RE
.PP
\fB/part\fR, \fB/leave\fR \fI[reason]\fR
.RS 4
Leave the current room\&.
\fIreason\fR
is optional\&.
.RE
.PP
\fB/invite\fR \fI\fR \fI[reason]\fR
.RS 4
Invite a user into the current room\&.
\fIreason\fR
is optional\&.
.RE
.PP
\fB/kick\fR \fI\fR \fI[reason]\fR
.RS 4
Kick a user from the current room\&.
\fIreason\fR
is optional\&.
.RE
.PP
\fB/ban\fR \fI\fR \fI[reason]\fR
.RS 4
Ban a user from the current room\&.
\fIreason\fR
is optional\&.
.RE
.PP
\fB/unban\fR \fI\fR \fI[reason]\fR
.RS 4
Unban a user\&.
\fIreason\fR
is optional\&.
.RE
.PP
\fB/redact\fR \fI\fR \fI[reason]\fR
.RS 4
Redacts all visible messages of the specified user\&. You will run into rate limits quickly\&.
.RE
.PP
\fB/redact\fR \fI\fR \fI[reason]\fR
.RS 4
Redacts a specific event\&.
.RE
.PP
\fB/roomnick\fR \fI\fR
.RS 4
Change your nickname in a single room\&.
.RE
.PP
\fB/glitch\fR \fI\fR
.RS 4
Applies a glitch effect to the given
\fImessage\fR\&. Beware that this will break mentions, HTML, and some Markdown in your message\&.
.RE
.PP
\fB/gradualglitch\fR \fI\fR
.RS 4
Applies a progressively more severe glitch effect to the
\fImessage\fR\&. Again, this will break mentions, HTML, and some Markdown\&.
.RE
.SS "Emoticons"
.PP
\fB/shrug\fR \fI[message]\fR
.RS 4
Inserts
\(a-\e_(ツ)_/\(a-
followed by an optional
\fImessage\fR\&.
.RE
.PP
\fB/fliptable\fR
.RS 4
Inserts
(╯\(de□\(de)╯︵ ┻━┻
.RE
.PP
\fB/unfliptable\fR
.RS 4
Inserts
┯━┯╭( \(Om _ \(Om╭)
.RE
.PP
\fB/sovietflip\fR
.RS 4
Inserts
ノ┬─┬ノ ︵ ( \e\eo\(deo)\e\e
.RE
.SS "User management"
.PP
\fB/ignore\fR \fI\fR
.RS 4
Ignore a user, invites from them are also rejected\&.
.RE
.PP
\fB/unignore\fR \fI\fR
.RS 4
Stops ignoring a user\&.
.RE
.SS "Advanced"
.PP
\fB/clear\-timeline\fR
.RS 4
Removes all but the most recent messages from the currently rendered timeline and then refetches it from the server; can be used to fix some cache issues\&.
.RE
.PP
\fB/reset\-state\fR
.RS 4
Fetches all the state events in the current room again; can be used to fix some cache issues\&.
.RE
.PP
\fB/rotate\-megolm\-session\fR
.RS 4
Rotates the encryption key used to send encrypted messages in a room\&.
.RE
.PP
\fB/goto\fR \fI\fR
.RS 4
\fIaddress\fR
can be one of:
.PP
\fI\fR
.RS 4
Jumps to event with the specified ID and highlights it\&.
.RE
.PP
\fI\fR
.RS 4
Jumps to the message with the specified index and highlights it\&.
.RE
.PP
\fI\fR
.RS 4
Handles Matrix URI as if you clicked on it\&.
.RE
.RE
.PP
\fB/converttodm\fR
.RS 4
Converts a room to a direct conversation\&.
.RE
.PP
\fB/converttoroom\fR
.RS 4
Converts a direct conversation to a normal room\&.
.RE
.SH "MARKDOWN EXTENSIONS"
.PP
\fBnewline (\fR\fB\en\fR\fB)\fR
.RS 4
A single newline will be turned into
instead of a space\&.
.RE
.PP
\fB~text~\fR
.RS 4
Make text strikethrough\&. HTML putput:
text
.RE
.PP
\fB||spoiler warning|text||\fR
.RS 4
Hide text and set an optional spoiler warning\&. Note that Nheko does not display the spoiler warning currently\&. HTML output:
text
.RE
.SH "ENVIRONMENT"
.PP
\fBNHEKO_ALLOW_QML_DISK_CACHE\fR
.RS 4
Nheko by default disables the qml disk cache to prevent crashes\&. This allows you to reenable it at your own risk\&.
.RE
.SH "FILES"
.PP
\fBConfiguration file\fR
.RS 4
${XDG_CONFIG_HOME:\-~/\&.config}/nheko/nheko\&.conf
.RE
.PP
\fBLog file\fR
.RS 4
${XDG_CACHE_HOME:\-~/\&.cache}/nheko/nheko/nheko\&.log
.RE
.PP
\fBDatabase\fR
.RS 4
${XDG_DATA_HOME:\-~/\&.local/share}/nheko/nheko/*/data\&.mdb
.RE
.PP
\fBMedia cache\fR
.RS 4
${XDG_CACHE_HOME:\-~/\&.cache}/nheko/nheko/media_cache
.RE
.SH "REPORTING BUGS"
.sp
Please report issues on our bug tracker at https://github\&.com/Nheko\-Reborn/nheko/issues\&.