Idea: Theia-based Matrix Client

Hi. I have an idea, and I’m looking for some Theia experts to weigh in on its feasibility.

I am imagining a Matrix client (https://matrix.org) built as a Theia-based product (or as a VSCode-based extension targetting Theia).

I’m imagining:

  • multi-modal,
    • tab per-room
    • tabs can be torn out into separate windows/side-by-side like standard tabs
    • the “has pending changes” sigil in the tab could be used to convey room status/needs attention
  • left hand panels:
    • the default treeview would load the user’s rooms
      • each tree view entry would be taller than usual, so the room icon can be displayed
      • OR, the default treeview is used, and instead of using room icons, we just use the “file icon” to convey the room status (unread count, etc)
    • a non-default treeview could allow client-side room groupings
    • maybe 1:1 chats can optionally be split out as a separate panel for niceness
  • right hand panels:
    • current room info panel (shows the room user info for the active tab)
    • current room user panel
    • current room attachment list
  • tab contents:
    • some sort of “virtual document” that takes up all of the viewport, showing a rendered markdown->HTML view of the Matrix room chat log
    • somehow at the bottom there is a small regular composition window allowing the user to type markdown to send to the chat room
    • down the line, it would be nice to show where people have read-up-to, maybe this could leverage the per-line gutter icons?

None of the current Matrix clients seem to be properly multi-modal. And it seems like the VSCode/Theia UI components are 80% of what would be needed for a feature-full client (though I don’t know how flexible these are, whenever custom UI is needed).

I feel like this client could be positioned as a power-user client, and could itself then be extendable easily. (It might be neat to build administrative/moderation tools for Matrix as further extensions, etc)

Some random questions:

  • Does this make sense at first glance, or is it too weird of an idea? I’m making a lot of assumptions and don’t have experience with VSCode extension APIs, let alone Theia’s.
  • Are Theia UI components flexible enough?
    • could I make a TreeView component that has taller entries with larger icons?
    • could I make a “Tab view” that has a display port and a composition window at the bottom?
  • Are other folks shipping “non-IDE” projects using Theia, but leveraging the extension model? Presumably using the electron shell?
  • Would I be better off just utilizing the UI component library that Theia uses, and starting from scratch?

This one is extra random:

  • Since Theia runs in a browser already, without additional Electron APIs, is there a hope that Theia can run in a non-Electron webview, and possibly get better performance?
  • Is there live-chat anywhere, or just Discord? Maybe a Matrix room? :wink:

Thanks!