nheko - Desktop client for Matrix using Qt and C++17
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.
-h, --help
Displays help on commandline options.
--help-all
Displays help including Qt specific options.
-v, --version
Displays version information.
--debug
Alias for --log-level trace.
-l, --log-level <level>
Set the global log level, or a comma-separated list of
<component>=<level> pairs, or both. For example, to set the
default log level to
warn but disable logging for the
ui
component, pass
warn,ui=off.
levels: trace debug info warning
error critical off
components: crypto db mtx net
qml ui
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.
-L, --log-type <type>
Set the log output type. A comma-separated list is
allowed. The default is
file,stderr.
types: file stderr none
The log type can also be set in the NHEKO_LOG_TYPE environment
variable, which will be overridden by this command line option.
-p <profile>, --profile
<profile>
Creates a unique profile, which allows you to log into
several accounts at the same time and start multiple instances of nheko. Use
default to start with the default profile.
-C, --compact
Allows shrinking the database, since LMDB databases
don’t automatically shrink when data is deleted. Possibly allows some
recovery on database corruption.
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.
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’t support images (like the alt tag in
HTML images).
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.
Completers spawn a popup with completion candidates when you type
them in the input line.
@
Open username completer.
#
Open room completer.
:
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.
Ctrl-Up/Ctrl-Down
Navigate within the room list.
Ctrl-W
Close the currently open room.
Ctrl-K
Search and select rooms from the room list.
Alt-A, Ctrl-Shift-A
Select next room with activity.
PgUp/PgDn
Scroll timeline per page.
Alt-Up/Alt-Down
Reply to a message.
Up/Down
Edit a message.
Ctrl-E
Edit message currently selected as reply.
Alt-F
Forward message currently selected as reply.
Ctrl-P/Ctrl-N
Reenter previous/next message.
Ctrl-U
Delete everything in the input line.
Ctrl-Left/Ctrl-Right
Jump one word left/right in the input line.
Shift-Enter
Insert line break.
Enter
Submit message.
Commands only work when they are used at the beginning of
text.
/me <message>
Send a message as an emote, where your username is
prefixed.
/react <text>
Send a message as a reaction when you’re replying
to a message.
/md <message>
Force Markdown when sending the current message.
/cmark <message>
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.
/plain <message>
Force plain text when sending the current message.
/rainbow <message>
Send a message in rainbow colors.
/rainbowme <message>
Send a message as a rainbow-colored emote, where your
username is prefixed.
/notice <message>
Send a message as a notice.
/rainbownotice <notice>
Send a message as a rainbow-colored notice.
/join <roomname> [reason]
Join a room. reason is optional.
/knock <roomname> [reason]
Ask to join a room. reason is optional.
/part, /leave [reason]
Leave the current room. reason is optional.
/invite <username> [reason]
Invite a user into the current room. reason is
optional.
/kick <username> [reason]
Kick a user from the current room. reason is
optional.
/ban <username> [reason]
Ban a user from the current room. reason is
optional.
/unban <username> [reason]
Unban a user. reason is optional.
/redact <username> [reason]
Redacts all visible messages of the specified user. You
will run into rate limits quickly.
/redact <eventid> [reason]
Redacts a specific event.
/roomnick <roomname>
Change your nickname in a single room.
/glitch <message>
Applies a glitch effect to the given message.
Beware that this will break mentions, HTML, and some Markdown in your
message.
/gradualglitch <message>
Applies a progressively more severe glitch effect to the
message. Again, this will break mentions, HTML, and some
Markdown.
/shrug [message]
Inserts ¯\_(ツ)_/¯ followed by an
optional message.
/fliptable
Inserts
(╯°□°)╯︵
┻━┻
/unfliptable
Inserts ┯━┯╭( º _
º╭)
/sovietflip
Inserts ノ┬─┬ノ ︵
( \\o°o)\\
/ignore <username>
Ignore a user, invites from them are also rejected.
/unignore <username>
Stops ignoring a user.
/clear-timeline
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.
/reset-state
Fetches all the state events in the current room again;
can be used to fix some cache issues.
/rotate-megolm-session
Rotates the encryption key used to send encrypted
messages in a room.
/goto <address>
address can be one of:
<event ID>
Jumps to event with the specified ID and highlights
it.
<message index>
Jumps to the message with the specified index and
highlights it.
<Matrix URI>
Handles Matrix URI as if you clicked on it.
/converttodm
Converts a room to a direct conversation.
/converttoroom
Converts a direct conversation to a normal room.
newline (\n)
A single newline will be turned into <br> instead
of a space.
~text~
Make text strikethrough. HTML putput:
<del>text</del>
||spoiler warning|text||
Hide text and set an optional spoiler warning. Note that
Nheko does not display the spoiler warning currently. HTML output: <span
data-mx-spoiler="spoiler">text</span>
NHEKO_ALLOW_QML_DISK_CACHE
Nheko by default disables the qml disk cache to prevent
crashes. This allows you to reenable it at your own risk.
Configuration file
${XDG_CONFIG_HOME:-~/.config}/nheko/nheko.conf
Log file
${XDG_CACHE_HOME:-~/.cache}/nheko/nheko/nheko.log
Database
${XDG_DATA_HOME:-~/.local/share}/nheko/nheko/*/data.mdb
Media cache
${XDG_CACHE_HOME:-~/.cache}/nheko/nheko/media_cache