Awesome
matrix-tui
A terminal based Matrix client, WIP. Abandoned, not likely to be worked on in the near future... :/
Click the below image to view an asciinema
demo:
TODO
- UI
- Login
- Register
- Autocomplete Usernames
- Typing Indicators
- Indicators For Unread Messages
- Treeview
- Navigation (Including Nested Spaces)
- Calculate Orphaned Rooms For Root
- Bottom Status Bar For Traversing Space Path
- Group Rooms
- DMs
- Invites
- Spaces
- Maintaining State Of Rooms
- (Un)Orphaning Of Rooms
- DM converted to Room / Room converted to DM
- Invite Accepted
- Room Joined
- Room Left / Space Left, Orphaning All Rooms Under It
- Room Topic Changed
- Room Name Changed
- Fuzzy Search For Rooms
- Message Buffer
- Word Wrap
- HTML Rendering
- Markdown
- Syntax Highlighting Code
- Interactive / Clickable Elements
- Horizontally Scrollable Code Blocks
- Clickable URLs / Hyperlinks
- Rooms
- Sending Messages
- Plaintext
- Markdown
- Mentioning Users
- Replies
- Editing Messages
- Display Topic
- Joining (Invites or by ID)
- Pagination
- Reactions
- Sending Messages
- Write Tests
Pre-requisites
The above can be installed through your distribution's package manager. The corresponding package names are usually suffixed with -dev
, such as libcurl-dev
depending on your distribution.
A few dependencies are bundled:
-
libmatrix - Library for interacting with matrix APIs.
-
stb - Data structures from
stb_ds.h
-
termbox-widgets - Widgets for termbox such as input fields and trees.
-
termbox2 - The terminal rendering library
Make sure to run git submodule update --remote --init --depth=1 -f
to clone them.
Building
- Run
meson . build
andninja -C build
to build the project. The binary will be stored atbuild/matrix-tui
Architecture
...
Contributing
Contributions are always welcome, the following points should be kept in mind:
-
Pass
-Db_sanitize=address,undefined
tomeson
to enable sanitizers which help in finding memory leaks or undefined behaviour. -
Before submitting a PR, format the code with
ninja -C build clang-format
which runsclang-format
.