Now that you have aced the basics, let’s talk about the intricate details of various features of Matrix. The guide assumes that you have done some preliminary discovery of features and that you are here for specifics that may not be too intuitive.
Without prefixing a message with /html
, Matrix supports basic markdown, as in everything in the CommonMark spec. The changes are:
Aside from the above:
<del>text</del>
(without /html
), while FluffyChat uses ~~text~~
.<u>text</u>
(also without /html
), while FluffyChat uses __text__
.
/html
, and then insert one of the following lines of code at the position you desire, so it will hide the spoiler content
and, optionally, show the reason
alongside it. Note that if you want the entire message to be a spoiler and without inserting a reason, you can just prefix a message with /spoiler
without writing HTML.
<span data-mx-spoiler="reason">spoiler content</span> # with reason
<span data-mx-spoiler>spoiler content</span> # without
||reason|spoiler content||
.And, about slash commands on Element and SchildiChat on PC related to text messages:
/html
./confetti
, /fireworks
, /rainfall
, /snowfall
and /spaceinvaders
. The effect will only be triggered once for these users only./me
will cause your message to start with *
followed by your display name1./rainbow
will make the text appear in rainbow colours.
/rainbowme
./shrug
, /tableflip
, /unflip
and /lenny
will place the corresponding ASCII emote at the beginning of the message content. (This differs from Discord, where the emote is placed at the end.)You can upload files onto messages. The size limit varies by the homeserver you’re on, but most homeservers have it between 50 and 100 MB. There are no restrictions for file types, allowing some apps to offer the ability to record and send voice messages.
All files you upload onto Matrix are assigned an MXC URI, which you can use for referencing to the corresponding file. The MXC URI can be retrieved with the following steps:
content
JSON object, locate the url
attribute. The URI the starts with mxc://
is the MXC URI.If the attachment is an image, the URI allows you to do the following, at least on Element and SchildiChat:
/myroomavatar mxc://...
![alt text](mxc://...)
(You can also use <img>
tags under /html
)The attachment can be accessed on the internet by replacing the mxc://
prefix with https://$SERVER/_matrix/media/r0/download/
, where $SERVER
is the domain of any homeserver (it does not need to be in the room).
:shortcode:
to custom emotes so that they can be entered like normal emotes: Go to user settings, then "Conversations", then emoji settings. Note that embed GIFs will not animate.
Note that emotes/stickers sent from any app are visible to most clients.
Integration managers (which Element uses) are minimally used by the community; instead MSC2545 is preferred. Emote rooms are available at the #stickers-and-emojis:pixie.town
space.
Nheko, FluffyChat and Cinny supports sending emotes/stickers and managing emote/sticker packs. SchildiChat supports sending emotes.
See here if you want more details.
You may react to any message with any unicode emoji or any plaintext content2. The latter is available…
/react
in the composer;Voice/video calling is currently only supported for private messages (rooms with only 2 participants).
Currently, if you try to start a call in a room with more than 2 participants, a Jitsi Meet (not part of Matrix) widget will be displayed for all users as a temporary solution. However, work is underway to allow native voice/video calling for groups, which hopefully will be enabled by early 2022.
Matrix prides itself in technical interoperability, i.e. ability to work with other platforms. Therefore, Matrix allows you to connect your chats to another platform.
Note that encryption is not supported on most bridges. Furthermore, the following instructions apply across the Matrix federation, but private homeserver providers as well as some public homeservers operate certain bridges for the benefit of their users, in which case please inquire the relevant providers.
To bridge a Matrix room with a Discord channel, you can install matrix-appservice-discord or mautrix discord if you’re running your own homeserver3, or set up one of the free public bridges otherwise:
Matrix users will show up as webhooks on Discord, and Discord users will show up as standard users on Matrix (but you cannot DM them). There is no puppeting.
To bridge a Matrix room with a Telegram group chat, you can install mautrix telegram if you’re running your own homeserver, or use one of the free public bridges otherwise:
When a Matrix room is bridged with a Telegram group, Matrix users will be represented by the bridging bot on Telegram, while Telegram users will show up as standard users on Matrix (but you cannot DM them).
When you log into a Telegram account on a bridge, you may use it to control your own account such that you may interact with the entirety of Telegram from Matrix. This is called “puppeting” and is not supported by all bridges.
To bridge a Matrix room with a Slack channel, do the following on Element or SchildiChat on PC:
Alternatively, try:
You can join any IRC channel on these networks directly from Matrix. Matrix users will show up in their display name, suffixed with [m]
.
You can join any XMPP MUC on any instance directly from Matrix, using the Bifrost bridge provided by matrix.org or aria-net.org.
Matrix supports many other platforms, but such bridges generally require setup. If you want to bridge those platforms, or if you have performance requirements that cannot be met by existing public bridges, you may either:
Because FluffyChat’s room management capabilities are somewhat limited by design, this guide will base this section upon Element and SchildiChat on PC.
If you want to promote a public room, you can publish public addresses and/or place it on your homeserver’s room directory.
To publish an address:
:
) of your desired address and then click “Add”.Steps 1 to 3 can be done by anyone, whereas step 4 by 6 requires the user to have a power level equal to or higher than the required level for “Change main address for the room.”
A public address also allows you to link the room from a webpage.
See the official guide for general information.
The commonly-taken approach is:
#community-moderation-effort-bl:neko.dev
, but other lists are also available in the #acls:envs.net
space./devtools
in the room you want to copy ACL from.m.room.server_acl
.Integrations in Matrix include widgets and bots.
Widgets display an interactive HTML page on top of chat messages. This only works on Element and SchildiChat on PC. You can use the /addwidget
command, or the “Add widgets, bridges & bots” link in the room info sidebar. Note that individual members must opt into displaying the widget, and can choose to dismiss (“unpin”) the widget for themselves at any time. Furthermore, anyone with power level above the required level for “Modify Widgets” will be able to dismiss (“unpin”) the widget for everyone in the room.
Bots perform automated actions (like sending messages). maubot is the only well-known self-hostable bot, containing a variety of plugins. t2bot.io as well as some homeservers host certain plugins for public use.
Bridges are also bots, but some bridges need to create new accounts to serve as puppets, which should only be operated on a homeserver that you own or otherwise have permission to run such bots on.
Similar to the eponymous command in Minecraft. ↩
Unlike Instagram Direct, where doing so will actually overflow the screen (you can try it but it will involve reverse engineering), Matrix apps handle this properly by showing the first few (≈10) characters followed by ellipsis. It seems to be mostly intended to be used by bots, as seen in This Week in Matrix, but since most bots are no different from other users, humans are welcomed to use it too. ↩
If you’re running your own bridge, please manually incorporate this pull request to support parsing Discord replies. (The t2bot bridge incorporates it since December 2021.) ↩
If you want addresses or/and publicity on other homeservers, you can create accounts, join the room, and do these steps. But be nice and don’t spam. Remember, homeserver operators can remove your room from the room directory or even prevent anyone on their homeservers from joining your room. ↩ ↩2
Help improve its content by opening a Pull Request on GitHub.