NHEKO(1)

๐Ÿ“ฆ
version 0.12.1-1 ยท 5 versions
, in fedora 43, fedora 44, nixos 26.05, nixpkgs unstable, opensuse-leap 16.0, ubuntu questing, ubuntu resolute, ubuntu stonking

๐ŸŒธ NAME ๐ŸŒธ

hey bestie, welcome to NHEKO(1), straight out of the General Commands Manual ๐Ÿ’–

nheko โ€” Desktop client for Matrix using Qt and C++17 โœจ


๐ŸŽ€ SYNOPSIS ๐ŸŽ€

nheko [OPTIONS]

๐Ÿ’… DESCRIPTION ๐Ÿ’…

okay so the whole motivation behind this project? it's to give you a native desktop app for Matrix that feels more like a mainstream chat app (Element, Telegram etc) and less like an IRC client. periodt. ๐Ÿฆ‹


โœจ OPTIONS โœจ

  • -h, --help โ€” shows you the help for the commandline options ๐Ÿซถ
  • --help-all โ€” same vibe but it also includes the Qt specific options ๐Ÿ’œ
  • -v, --version โ€” spills the version info ๐Ÿ‘‘
  • --debug โ€” literally just an alias for --log-level trace ๐Ÿ™ˆ
  • -l, --log-level <level> โ€” sets the global log level, or a comma-separated list of <component>=<level> pairs, or both. for example, if you wanna set the default log level to warn but turn logging off for the ui component, you pass warn,ui=off.
    • levels: trace debug info warning error critical off
    • components: crypto db mtx net qml ui
    • you can also set log levels in the NHEKO_LOG_LEVEL environment variable, same syntax, no cap. but this command line option overrides it. ๐Ÿ’€
  • -L, --log-type <type> โ€” sets the log output type. a comma-separated list is allowed, she's flexible like that. the default is file,stderr.
    • types: file stderr none
    • the log type can also live in the NHEKO_LOG_TYPE environment variable, and again this command line option overrides it.
  • -p <profile>, --profile <profile> โ€” makes a unique profile, which lets you log into several accounts at the same time and start multiple instances of nheko. use default to start with the default profile ๐ŸŒˆ
  • -C, --compact โ€” lets the database shrink, because LMDB databases don't automatically shrink when data is deleted (rude of them honestly). it might also possibly allow some recovery on database corruption ๐Ÿคž

๐Ÿงš FAQ ๐Ÿงš

How do I add stickers and custom emojis?

okay so stickers and custom emojis are organized in image packs ๐Ÿ“ฆ there's one user image pack that only your account has access to, and there are room image packs that everyone in the room they're defined in can access. and get this โ€” you can activate a room image pack globally to use it in any room. slay.

to manage image packs in nheko, go to the room settings and enter the Sticker & Emote Settings. you'll see the Private pack (that's your user image pack) and you can edit it right there. the Shortcode is the unique identifier you use to select the image with, and the Body is the alternate text that shows up on clients that don't support images (like the alt tag in HTML images, iykyk).

if you have the necessary permissions you can create new room packs with the button at the bottom of the image pack list ๐Ÿ’… they're the same as the user pack except you can create as many as you want and everyone in the room can use them. pro tip from the manpage itself: it might be a good idea to create an extra room just for your image packs to make sharing easier ๐ŸŽ€


๐Ÿฆ‹ COMPLETERS ๐Ÿฆ‹

completers spawn a popup with completion candidates when you type them in the input line. it's giving autocomplete but make it cute โœจ

  • @ โ€” opens the username completer ๐Ÿ’œ
  • # โ€” opens the room completer ๐Ÿ 
  • : โ€” opens the emoji picker. Unicode emoji get inserted directly. Custom emoji will insert the HTML code for them into the input line. you can configure custom emoji in the room settings ๐Ÿ“

๐Ÿ’– KEYBOARD SHORTCUTS ๐Ÿ’–

Room list

  • 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 the next room with activity ๐Ÿ”ฅ

Timeline/Messaging

  • PgUp/PgDn โ€” scroll the timeline per page ๐Ÿ“œ
  • Alt-Up/Alt-Down โ€” reply to a message ๐Ÿ’ฌ
  • Up/Down โ€” edit a message โœ๏ธ
  • Ctrl-E โ€” edit the message currently selected as reply
  • Alt-F โ€” forward the 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 a line break
  • Enter โ€” submit the message ๐Ÿš€

๐Ÿ‘‘ COMMANDS ๐Ÿ‘‘

commands only work when they're used at the beginning of text. no sneaking them in mid-sentence bestie.

Custom messages

  • /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 ๐ŸŒˆ๐Ÿ“ข

Room management

  • /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. you can alternatively kick the user you're replying to by leaving out the username ๐Ÿฅพ
  • /ban <username> [reason] โ€” ban a user from the current room. reason is optional. you can alternatively ban the user you're replying to by leaving out the username โ›”
  • /unban <username> [reason] โ€” unban a user. reason is optional. you can alternatively unban the user you're replying to by leaving out the username ๐Ÿ”“
  • /redact <username> [reason] โ€” redacts all visible messages of the specified user. heads up: you will run into rate limits quickly ๐Ÿ’€
  • /redact <eventid> [reason] โ€” redacts a specific event. you can alternatively redact the event you're replying to by specifying neither an eventid nor username
  • /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 ๐ŸŒ€

Emoticons

  • /shrug [message] โ€” inserts ยฏ\_(ใƒ„)_/ยฏ followed by an optional message ๐Ÿคท
  • /fliptable โ€” inserts (โ•ฏยฐโ–กยฐ)โ•ฏ๏ธต โ”ปโ”โ”ป ๐Ÿ˜ค
  • /unfliptable โ€” inserts โ”ฏโ”โ”ฏโ•ญ( ยบ _ ยบโ•ญ) ๐Ÿฅบ
  • /sovietflip โ€” inserts ใƒŽโ”ฌโ”€โ”ฌใƒŽ ๏ธต ( \\oยฐo)\\ โ˜ญ

User management

  • /ignore <username> โ€” ignore a user, invites from them are also rejected ๐Ÿ™…
  • /unignore <username> โ€” stops ignoring a user ๐Ÿซถ

Invite permission management

  • /blockinvites <username>|<roomid>|<servername>|all โ€” block all invites either by default ("all") or from a specific user or server or to a specific room ๐Ÿšซ
  • /allowinvites <username>|<roomid>|<servername>|all โ€” allow all invites either by default ("all") or from a specific user or server or to a specific room โœ…

Advanced

  • /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 the 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 ๐Ÿ 

๐ŸŒˆ MARKDOWN EXTENSIONS ๐ŸŒˆ

  • newline (\n) โ€” a single newline will be turned into <br> instead of a space โ†ฉ๏ธ
  • ~text~ โ€” make text strikethrough. HTML putput: <del>text</del> ~~like this~~
  • ||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> ๐Ÿ™ˆ

๐Ÿ“ ENVIRONMENT ๐Ÿ“

  • 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 ๐Ÿ’€

๐ŸŽ€ FILES ๐ŸŽ€

  • 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 ๐Ÿ–ผ๏ธ

๐Ÿซถ REPORTING BUGS ๐Ÿซถ

please report issues on our bug tracker at https://github.com/Nheko-Reborn/nheko/issues. we wanna hear it, fr fr ๐Ÿ’œ


and that's the whole page bestie โœจ this was nheko 0.12.1, dated 2022-01-27, and it lives in the NHEKO(1) manual. go forth and chat, you're the main character now ๐Ÿ‘‘๐Ÿ’–