explaingit

crowlkats/deno-desktop-matrix-client

13TypeScriptAudience · developerComplexity · 5/5Setup · hard

TLDR

A demo desktop Matrix chat client built with Deno Desktop, showing end-to-end encrypted messaging, system tray, and native notifications, but requires compiling an unreleased branch of Deno from source to run.

Mindmap

mindmap
  root((repo))
    What It Does
      Matrix chat client demo
      Deno Desktop showcase
      Native desktop features
    Chat Features
      Room list and history
      Markdown formatting
      End-to-end encryption
    Desktop Features
      System tray icon
      Unread badge
      Native notifications
    Architecture
      Deno backend process
      Chromium UI window
      Separate test layers
    Setup
      Compile Deno source
      Rust and C++ needed
      Dev branch only
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Study how a native desktop app with a system tray, unread badge, and notifications is structured using the Deno Desktop API.

USE CASE 2

See how to separate Deno backend logic from a browser-rendered UI in a desktop application so the business logic is testable without opening windows.

USE CASE 3

Use as a reference for implementing Matrix protocol messaging and end-to-end encryption in a TypeScript or Deno project.

Tech stack

TypeScriptDenoRustC++CMake

Getting it running

Difficulty · hard Time to first run · 1day+

Requires compiling a custom unreleased Deno development branch from source using Rust, a C++ compiler, and CMake.

In plain English

This repository is a demonstration desktop chat client for the Matrix messaging protocol. Matrix is an open standard for real-time communication, similar in concept to Slack or Discord but designed to be decentralized. The client lets you log in, see your list of rooms, read the conversation history, and send messages, with support for markdown formatting and end-to-end encryption. The project serves as a showcase for an experimental technology called deno desktop, which is a way to build native desktop applications using the Deno JavaScript runtime combined with a built-in Chromium browser window. The chat logic runs in the Deno process on your computer, while the visible user interface is rendered inside an embedded web browser view. This separation means the part of the code that talks to the Matrix server is entirely separate from the visual layer and can be tested without opening any windows. Desktop-specific features include a system tray icon with a popover menu that lists unread rooms, a badge on the dock or taskbar showing total unread count, a native menu bar with keyboard shortcuts for common actions, and notifications that appear when new messages arrive in rooms you are not currently viewing. Closing the window hides the app to the tray rather than quitting it. A significant caveat is that deno desktop does not exist in any publicly released version of Deno. To run or build this project, you must first compile a special development branch of Deno from its source code, which requires Rust, a C++ compiler, CMake, and other build tools. This is not a quick setup and the README describes it as something that only exists on an in-development branch. The project is explicitly a demo of what is technically possible with deno desktop rather than a finished product intended for everyday use. Encryption works when running the app in development mode but has a known limitation in compiled builds, where the crypto library loader does not get the correct configuration flag. Keys are stored only for the current session, so messages sent before you logged in on a given device may not be decryptable.

Copy-paste prompts

Prompt 1
I want to run the Deno Desktop Matrix client. Walk me through cloning the special Deno development branch, installing Rust and the required C++ tools, compiling Deno from source, and then running the client against my Matrix account.
Prompt 2
I want to understand how the Matrix chat logic in this project stays separate from the Chromium UI window. Show me how the Deno process and the browser view communicate, and how I would write a test for the Matrix logic without launching a window.
Prompt 3
I want to add a new desktop feature to this client that shows a notification when I am mentioned by name in a room I am not currently viewing. Where does the notification logic live, and how does it hook into the Matrix event stream?
Open on GitHub → Explain another repo

← crowlkats on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.