Skip to content

Repository files navigation

Prism

A keyboard-driven markdown vault reader

Built with Tauri 2 + React + Rust

BuildReleaseLicense: MITPlatform


Prism is a fast, minimal desktop app for reading and navigating markdown vaults. It stays out of the way as an always-on-top sidebar with vim-style keybindings, fuzzy search, wiki-style linking, and a Lua plugin system.

It reads your existing Obsidian, Logseq, or plain-markdown vault. It doesn't write to it unless you ask.

Install

Download the latest release from GitHub Releases.

PlatformFormatInstall
macOS.dmgOpen and drag to Applications
Windows.msiRun the installer
Linux (Debian/Ubuntu).debsudo dpkg -i Prism_*.deb
Linux (other).AppImagechmod +x Prism_*.AppImage && ./Prism_*.AppImage

Linux (Wayland + Nvidia): Set WEBKIT_DISABLE_DMABUF_RENDERER=1 if you see rendering issues.

Build from Source

Requires Rust (stable) and Node.js (v18+).

git clone https://github.com/nullslate/prism.git
cd prism
npm install
npm run tauri build

Development mode with hot reload:

npm run tauri dev

Features

FeatureDescription
Fuzzy searchFile names, paths, and content ranked by score (Ctrl+F)
Wiki links[[note]], [[path/note]], [[note|display text]], [[note#heading]] with autocomplete
TagsExtracted from frontmatter and inline #tags, filterable (Ctrl+T)
Quick captureAppend timestamped bullets to your inbox (Ctrl+.)
Vault searchFull-text search with line-number context (Ctrl+S)
Link graphText-based interactive graph explorer (Ctrl+G)
Daily notesCreate/open today's note from the command palette
TemplatesCreate notes from templates with {{date}}, {{title}} variable expansion
File browserFull-screen keyboard-driven file tree with j/k nav, expand/collapse folders
Vim keybindingsj/k scroll, gg/G top/bottom, / search, n open editor
TodosToggle, create, and wrap todos with vim-style shortcuts in editor
TransclusionHover [[wiki links]] to preview the target note inline
Editor handoffPress n to open in your $EDITOR, auto-reload on return
PluginsLua scripting + React UI extensions
Themes14 built-in themes (dark + light) with live preview picker + custom TOML themes
Global hotkeyToggle window from any app (Ctrl+Space, configurable)
Command paletteCtrl+K for everything

Configuration

Config lives at ~/.config/prism/config.toml (created on first launch):

vault = "~/obsidian"editor = "nvim"terminal = "alacritty"theme = "catppuccin-mocha"inbox = "inbox.md"hotkey = "ctrl+space"
[window]
width = 420height = 700position = "top-right"always_on_top = true

Open your config from within Prism: Ctrl+K > "Open Config".

Shortcuts

All keyboard shortcuts are configurable. Override defaults in config:

[shortcuts.global]
find-file = "ctrl+p"
[shortcuts.render]
quit = "ctrl+q"

Per-vault overrides via .prism.toml in your vault root. Set a value to "" to disable.

Themes

Custom themes: ~/.config/prism/themes/{name}.toml

[colors]
bg = "#1a1b26"fg = "#c0caf5"accent = "#7aa2f7"border = "#3b4261"sidebar_bg = "#16161e"heading = "#bb9af7"code_bg = "#1a1b26"selection = "#283457"syntax_keyword = "#9d7cd8"syntax_string = "#9ece6a"syntax_comment = "#565f89"syntax_function = "#7aa2f7"syntax_number = "#ff9e64"syntax_operator = "#89ddff"syntax_type = "#2ac3de"syntax_variable = "#c0caf5"

Then set theme = "{name}" in config.

Keybindings

Global (always active)
KeyAction
Ctrl+FFuzzy file finder
Ctrl+KCommand palette
Ctrl+BToggle sidebar
Ctrl+NNew file
Ctrl+TFilter by tag
Ctrl+.Quick capture
Ctrl+GLink graph
Ctrl+SSearch vault
Ctrl+Shift+TTheme picker
Ctrl+SpaceToggle window (global)
EscapeClose overlay
Render mode (reading)
KeyAction
j / kScroll down / up
Ctrl+D / Ctrl+UHalf-page down / up
ggScroll to top
GScroll to bottom
nOpen editor
/Search in file
ddTrash file (press twice)
1-9Open favorite
qQuit
File browser (sidebar)
KeyAction
j / kMove cursor down / up
o / EnterOpen file or toggle folder
hCollapse folder or jump to parent
lExpand folder
SpaceToggle folder
g / GJump to top / bottom
ddTrash file (press twice)
RRename file
q / EscapeClose browser
Editor mode (CodeMirror + Vim)
KeyAction
:wSave
:qExit editor
:wqSave and exit
Space yYank selection
Space yyYank line
Space ttToggle todo checkbox
Space tnInsert new todo
Space taWrap line as todo
[[Wiki link autocomplete

Plugins

Prism supports Lua scripts and React UI extensions.

[[plugins]]
name = "word-count"path = "~/.config/prism/plugins/word-count"
[[plugins]]
name = "daily-summary"git = "https://github.com/someone/prism-daily-summary"
[plugins.opts]
template = "## {{date}}"

Plugins can register commands, add status bar items, listen to events (file:pre-render, file:opened, etc.), transform content before rendering, and add sidebar panels.

Each plugin has a plugin.toml manifest and an init.lua entry point. See test-plugins/hello-world/ for a working example.

Plugin authors can use @prism/plugin-sdk for themed React components.

Project Structure

prism/
├── src-tauri/ # Rust backend
│ └── src/
│ ├── lib.rs # App entry, plugin init, global hotkey
│ ├── config.rs # TOML config
│ ├── watcher.rs # File system watcher
│ ├── theme.rs # Theme loading
│ ├── commands/ # Tauri IPC commands
│ └── plugins/ # Plugin manager, Lua runtime, event bus
├── src/ # React frontend
│ ├── routes/ # Main view
│ ├── components/ # UI components
│ ├── hooks/ # State and shortcuts
│ └── lib/ # Tauri bindings, types, plugin loader
├── packages/
│ └── plugin-sdk/ # @prism/plugin-sdk
└── test-plugins/ # Example plugins

License

MIT

About

A keyboard-driven markdown vault reader

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages