asopi tech
asopi techOSS Developer

Nim Desktop Framework

Nimino

軽く、薄く、OSに素直に。

Nimをホスト言語に、OS公式APIへの薄いFFIでネイティブWindowとWebViewを扱う、軽量なクロスプラットフォームWeb UIデスクトップアプリ基盤。Tauriの軽量アーキテクチャとPakeの「URLからアプリ生成」を参考に、Nimの言語特性で再設計しています。

NimでつくるTauri風の軽量WebViewデスクトップ基盤。nimino-packでURLから配布物を生成、Chromium非同梱。

NimIn Development
同梱ランタイム
0
初期ターゲット
Windows / Linux / WSL

Key points

  • Win32+WebView2 / GTK+WebKitGTKへ直接接続する薄いネイティブ層
  • Chromium非同梱 — WebView2 EvergreenとシステムWebKitGTKを利用
  • nimino-packがURLまたはマニフェストから配布物を生成
nimdesktopwebview

Challenge

デスクトップアプリは重すぎる

Electron系はChromium同梱でアプリが数百MBに。既存のWebViewラッパーは抽象層が厚く、OSの細部に手が届きにくい。

  • Chromium・Node.js同梱でバイナリが肥大化し、メモリ消費も大きい
  • 汎用WebViewラッパーは抽象層が厚く、トレイ・通知・ダイアログ等OSの細部に届きにくい
  • WSLで開発するNimプロセスとWindows GUIの間に分断がある

Niminoは、Nimをホスト言語に、OS公式APIへの薄いFFIでネイティブWindowとWebViewを扱う軽量なクロスプラットフォームデスクトップアプリ基盤です。Tauriの「OS標準WebViewで軽量に」という思想と、Pakeの「URLから1コマンドでアプリ生成」という体験を参考に、ElectronやCEFのような重いランタイムを一切同梱しない構成をNimで実現します。

現在はAsopitech Laboのインキュベーションプロジェクトとして、Windows・ネイティブLinux・WSLを初期ターゲットに開発中です。GitHub Issuesでバグ報告や機能リクエストを受け付けています。

OS標準WebView + 薄いFFIという選択

NiminoはChromiumを同梱せず、WindowsはWebView2 Evergreen Runtime、LinuxはシステムのWebKitGTKを前提に、Win32/GTKへ直接FFIで接続します。ElectronやTauri、CEFといった既存ラッパーに依存せず、Nimの薄い層だけでネイティブWindowとWebViewを制御します。

  • Win32+WebView2、GTK+WebKitGTKを直接利用 — 中間フレームワーク不使用
  • Pake風の`nimino-pack`がURL/マニフェストからアプリと配布物を生成
  • WSLのNimプロセスをWindows GUIホストへ認証付きIPCで接続
Chromium同梱
なし
コンポーネント
4

Capabilities

3つのレイヤー

薄いネイティブ層、アプリ基盤、パッケージングを分離した設計。

薄いネイティブ層

nimino-native

  • Win32 + WebView2を直接利用
  • GTK + WebKitGTKを直接利用
  • Window・WebView・低水準イベント・Capability照会に限定

アプリ基盤

nimino-core

  • ライフサイクル・RPC・プロファイル管理
  • ナビゲーション・権限・ダウンロードポリシー
  • ローカルアセット境界、トレイ・通知・OSファイルダイアログ

パッケージング

nimino-pack

  • URLまたはマニフェストからアプリ生成(Pake風)
  • Debian/RPM・AppImage・Flatpak・NSIS setupを生成
  • CycloneDX SBOMを同時生成

Components

4つのコンポーネント

役割を明確に分離した4モジュール構成。

nimino-native

Win32+WebView2、GTK+WebKitGTKを直接利用する薄いWindow/WebView層

nimino-core

アプリライフサイクル、RPC、プロファイル、各種ポリシーを提供するアプリ基盤

nimino-wsl

WSLのNimプロセスとWindows GUIホストを認証付きIPCで接続するアダプター

nimino-pack

URLまたはマニフェストからアプリと配布物を生成するCLI

Tech Stack

技術スタック

Nimの薄いFFIとOS標準コンポーネントで構成。

ホスト言語

Nim

Nim 2.x + NimbleC FFIによるOS API直接呼び出しDocker開発コンテナ + Makefile固定手順

OS統合

OS標準WebView

Windows: Win32 + WebView2 Evergreen RuntimeLinux: GTK + WebKitGTK(システム標準)WSL: Windows側ホストと認証付きIPC

使わないもの

依存を持たない設計

Electron / Tauri / CEF / Qt WebEngine 不使用webview/webview / WRY / TAO 不使用Node.jsランタイムの必須化なし

Status

開発状況

M0〜M4のプロファイル、権限・ナビゲーションポリシー、トレイ・通知、OSファイルダイアログ、Linux/Windows向け配布物生成までを実装済み。macOS対応、署名済みMSI、Flatpak実ビルドなどは今後の課題です。Asopitech Laboのインキュベーションプロジェクトとして開発中。

公開リソース

最新の資料・コード・コミュニティ導線をまとめています。

Get Involved

開発に参加する

Niminoはオープンソース(MIT)で開発中です。GitHubでスターを付けて進捗を追跡してください。