Study how a native desktop app with a system tray, unread badge, and notifications is structured using the Deno Desktop API.
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 as a reference for implementing Matrix protocol messaging and end-to-end encryption in a TypeScript or Deno project.
Requires compiling a custom unreleased Deno development branch from source using Rust, a C++ compiler, and CMake.
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.
← crowlkats on gitmyhub — every repo by this author, as a profile.
Verify against the repo before relying on details.