/chat

A Matrix chat client

Primary LanguageJava

A Matrix chat client

screenshot

Usage

  1. ./build.py (requires Java ≥ 11)
  2. make accounts/profile.json with:
    {
      "accounts": [
        {
          "type": "matrix",
          "server": "https://matrix.org", // or your homeserver
          "userid": "@example:matrix.org",
          "password": "yourPassword" // or "token": "tokenToUse"
        }
        // you can add more accounts here
      ],
      "global": {"theme": "dark"} // or "light"
    }
  3. ./run (alternatively, ./run path/to/alternateProfile.json)

keybindings

key action
up edit previous message
down edit next message (or stop editing if at last)
alt+up reply to message above current
alt+down reply to message below current
alt+click reply to currently hovered over message
esc cancel reply/edit/message
ctrl+alt+shift+del delete message currently selected for editing
ctrl+up go to room above
ctrl+down go to room below
ctrl+plus increase UI scale
ctrl+minus decrease UI scale
ctrl+shift+v paste clipboard as code block

Most of those (along with some other things) are configurable.

res/chat.dzcfg contains the defaults, and while it can be directly modified, it is preferred to make a file local.dzcfg in the root folder of the project and copy the necessary fields in.

You can reload the config with f5 (some things may not update (instead requiring a restart), but most things reload live fine).

syntax

by default, messages are interpreted as a markdown-ish thing. This default can be changed in res/chat.dzcfg `markdown = true`

/md forced *markdown*
/text forced plain text (also "/plain ..." works)
/me does something
/html <p>manually enter HTML</p>
/goto https://matrix.to/#/!foo:matrix.org/$bar // same behavior as clicking a link containing that URL
/sort // if there were federation issues and messages are shown in non-chronological order, this command will (visually, locally, temporarily) sort them.
/theme light, /theme dark // change theme
File uploading mostly works; the client can display images & gifs inline, but videos will open externally.
Right click on many things (rooms, messages, links, images, user @s, code blocks) gives more options.

_italics_
*bold*
\*text surrounded by asterisks\*
[link text](https://example.org)
---strikethrough--- (alternatively, ~~strikethrough~~)
||spoiler||
`code block`
`backticks: \` inside code block`
`` alternatively: ` in doubled backticks ``
``` that continues for any number of backticks ```
select some text and press "`" to automatically escape things as needed

```java
public static void main(String[] args) {
  System.out.println("codeblock with language");
}
```