corundum
Corundum adalah clipboard manager dan vault yang berjalan di system tray (headless).
Layer
Tiga modul utama yang dipisah berdasarkan tugas:
+-------------------------------------------------------+
| CLI |
| (Antarmuka & Tray) |
+---------------------------+---------------------------+
| IPC (Socket / Pipe)
+---------------------------v---------------------------+
| daemon |
| (Logika, SQLite/SQLCipher) |
+---------------------------+---------------------------+
| FFI / C-Bindings
+---------------------------v---------------------------+
| hook |
| (Komunikasi & Input) |
+-------------------------------------------------------+
1. corundum-hook
Pustaka dinamis (.dll, .so, atau .dylib).
- Fungsi: Menangani komunikasi dengan sistem operasi (OS hook) dan manipulasi papan klip aktif.
- Manajemen Memori: Alokasi memori manual via alokator bawaan.
- Kompilasi: Kompilasi bersyarat (
@import("builtin")) untuk Windows API, macOS Cocoa, dan Linux (X11/Wayland).
2. corundum-daemon
Berkas biner eksekusi utama yang berjalan di latar belakang / RAM.
- Fungsi: Menjembatani C-Bindings dengan logika dan pengolahan data teks.
- Penyimpanan: SQLite terenkripsi via SQLCipher (
.db). - Konkurensi: Pemrosesan antrean masukan papan klip secara non-blocking via Fiber.
- IPC (Komunikasi Antar Proses): Unix Domain Socket (macOS/Linux) atau Named Pipes (Windows).
3. corundum-cli
Skrip antarmuka ringan.
- Fungsi: Klien IPC dan manajer System Tray.
- Dependensi: Terminal CLI bawaan OS dan penyaring terminal (seperti FZF).
- Arsitektur: Stateless (semua status dikelola daemon).
🔄 Flow
1. Lapisan Bawah (hook)
- Perekaman Papan Klip: Mengaitkan ke API sistem operasi (Windows API, macOS NSPasteboard, Linux X11/Wayland).
- Penyaringan Keamanan: Memeriksa flag pengecualian dari aplikasi pengelola kata sandi.
- Pengiriman Data: Meneruskan data teks mentah ke lapisan Middleware melalui FFI.
- Input: Memanggil API sistem operasi untuk penekanan tombol (
Ctrl+V) atau manipulasi buffer.
2. Lapisan Tengah (daemon)
- Penerimaan Data: Menerima data masukan secara konkuren.
- Enkripsi: Mengambil kunci dari brankas OS dan mengenkripsi teks via SQLCipher.
- Penyimpanan: Menyimpan data terenkripsi ke basis data SQLite lokal.
- Server Soket: Membuka Unix Domain Socket atau Named Pipe untuk melayani kueri pencarian.
3. Lapisan Atas (cli)
- Pendengar Pintasan: Memantau pintasan papan kekunci global dari latar belakang (tray).
- Interaksi Terminal: Membuka antarmuka pencarian terminal (seperti FZF) yang terhubung ke soket.
- Output: Mengirim ID teks terpilih ke daemon untuk didekripsi dan diteruskan ke modul hook agar ditempelkan (paste).
🔒 Skema Keamanan Brankas (Secure Vault)
Kunci dekripsi basis data corundum tidak pernah disimpan dalam bentuk teks biasa. Kunci tersebut dibuat secara acak saat instalasi pertama, diserahkan kepada Keyring/Credential Manager bawaan sistem operasi, dan hanya bisa diminta kembali oleh proses corundum yang memiliki izin sah.
⚙️ Build
1. Prasyarat
- Zig: Versi 0.11.0 atau yang lebih baru (untuk membangun
corundum-hook). - Crystal: Versi 1.10.0 atau yang lebih baru (untuk membangun
corundum-daemon). - Ruby: Versi 3.0 atau yang lebih baru (untuk antarmuka terminal).
2. Modul Hook
cd corundum-hook
zig build -Doptimize=ReleaseSafe
Pustaka dinamis (berkas .so, .dll, atau .dylib) akan dihasilkan di dalam map zig-out/lib/. Pustaka ini harus berada di (path) yang sama dengan eksekusi daemon agar pengikatan C (C-Binding) berhasil dimuat.
3. Daemon
cd corundum-daemon
shards install
crystal build src/main.cr --release -o corundum-daemon
4. Klien
Skrip CLI dapat langsung dijalankan untuk berinteraksi dengan daemon:
ruby corundum-cli/bin/corundum start
Kemudian, dari terminal lain:
ruby corundum-cli/bin/corundum cari
corundum
- 0
- 0
- 0
- 0
- 0
- about 4 hours ago
- August 1, 2026
MIT License
Sat, 01 Aug 2026 16:05:58 GMT