matrix-tui
matrix-tui copied to clipboard
(WIP) A terminal based Matrix client
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
- [x] Login
- [ ] Register
- [ ] Autocomplete Usernames
- [ ] Typing Indicators
- [ ] Indicators For Unread Messages
- [ ] Treeview
- [x] Navigation (Including Nested Spaces)
- [x] Calculate Orphaned Rooms For Root
- [ ] Bottom Status Bar For Traversing Space Path
- [ ] Group Rooms
- [ ] DMs
- [ ] Invites
- [x] Spaces
- [ ] Maintaining State Of Rooms
- [x] (Un)Orphaning Of Rooms
- [ ] DM converted to Room / Room converted to DM
- [ ] Invite Accepted
- [x] Room Joined
- [ ] Room Left / Space Left, Orphaning All Rooms Under It
- [ ] Room Topic Changed
- [ ] Room Name Changed
- [ ] Fuzzy Search For Rooms
- [ ] Message Buffer
- [x] Word Wrap
- [ ] HTML Rendering
- [ ] Markdown
- [ ] Syntax Highlighting Code
- [ ] Interactive / Clickable Elements
- [ ] Horizontally Scrollable Code Blocks
- [ ] Clickable URLs / Hyperlinks
- [ ] Rooms
- [ ] Sending Messages
- [x] 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 . buildandninja -C buildto 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,undefinedtomesonto enable sanitizers which help in finding memory leaks or undefined behaviour. -
Before submitting a PR, format the code with
ninja -C build clang-formatwhich runsclang-format.
