explaingit

hanversionovo/ohsidian

17TypeScriptAudience · developerComplexity · 5/5Setup · hard

TLDR

An unofficial port of the Obsidian note-taking app to HarmonyOS tablets and foldables, built by creating a compatibility layer that mimics Electron's API surface so unmodified Obsidian code runs natively on Huawei devices with cloud sync.

Mindmap

mindmap
  root((ohsidian))
    What it is
      Obsidian on HarmonyOS
      Electron compatibility layer
    Architecture
      C++ native adapter
      ArkTS API bridges
      JSBind connector
    Huawei features
      Account login
      Cloud sync
      Multi-window support
    Platforms
      HarmonyOS 6 tablets
      Foldable devices
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

Run Obsidian on a Huawei HarmonyOS tablet or foldable without changing any Obsidian code.

USE CASE 2

Sync Obsidian notes across Huawei devices using the built-in Huawei cloud storage integration.

USE CASE 3

Reuse the OHsidian engine module as a general Electron compatibility library for porting other Electron apps to HarmonyOS.

Tech stack

TypeScriptC++ArkTS

Getting it running

Difficulty · hard Time to first run · 1day+

Requires the HarmonyOS development environment and a supported Huawei device, README is written in Chinese.

In plain English

OHsidian is an unofficial port of the Obsidian note-taking application to HarmonyOS, the operating system Huawei uses on its PC, tablet, and foldable devices. Obsidian normally runs on a runtime called Electron, which is designed for desktop operating systems like Windows and macOS. OHsidian works by building a compatibility layer that mimics Electron's API surface, so the unmodified Obsidian application can run on HarmonyOS without any changes to Obsidian's own code. The compatibility layer has three main parts. A C++ native library called libadapter.so handles low-level system connections. Around 50 ArkTS adapters translate HarmonyOS platform APIs into the Electron-style calls Obsidian expects, covering file management, input methods, display settings, notifications, Bluetooth, battery status, biometric authentication, OCR, printing, and more. A JSBind bridge connects the JavaScript side of Obsidian to those adapters. The project is split into two HarmonyOS modules. The engine module contains all the compatibility code, packaged as a reusable static library that other HarmonyOS apps could also use. The application module contains the UI pages and entry points, including a login page for Huawei accounts, a status bar extension, and embedded window views for multi-window operation. Beyond basic compatibility, OHsidian adds Huawei-specific features. Users can log in with a Huawei account in one tap. Notes can be backed up and synced across devices using Huawei's cloud storage service. The app extends into the system status bar and supports multiple windows at once, including floating and embedded window types. There is also an auto-update mechanism: the app checks for a newer Obsidian .asar file, verifies it with RSA-SHA256 and SHA256 checksums, replaces the old package, and reloads without restarting the system-level process. The README is written in Chinese. Target devices are HarmonyOS 6 tablets and 2-in-1 foldable screens.

Copy-paste prompts

Prompt 1
I have a HarmonyOS 6 tablet and want to run Obsidian on it using OHsidian. Walk me through building and installing the app from this repository step by step.
Prompt 2
How does the OHsidian Electron compatibility layer work and which of the 50 ArkTS adapters cover the most critical Obsidian features like file management and input methods?
Prompt 3
I want to reuse the OHsidian engine module to port a different Electron-based app to HarmonyOS. What do I need to implement myself and what does the engine provide for free?
Prompt 4
How does OHsidian's auto-update system verify and apply a new Obsidian .asar file using RSA-SHA256 checksums without restarting the system process?
Open on GitHub → Explain another repo

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

Verify against the repo before relying on details.