Skip to content

ivanovanatoliy/folea

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

folea

folea is a keyboard-driven, minimalist note manager for Typst notes. It is a read/navigation shell for a plain directory of .typ files: open a vault, search, jump, browse links, and read rendered Typst.

folea does not edit notes in-app. The open editor command (<C-e> by default) opens the current note in an external editor such as VS Code, Neovim, or whatever you prefer.

Screenshots

Start screen File tree
Command palette External editor

Functionality

Notes and templates

Press Ctrl+n to create a note beside the current one, or use % in the file tree to create it at the selected location. Folea adds .typ automatically and lets you start empty or choose a template from <vault>/_templates/*.typ. Create and edit template files in your external editor, and manage them from the command palette.

Rendering and search

Notes render in-app and update when their source, imports, or includes change. Compile errors keep the last successful rendering visible while showing diagnostics. Ctrl+p lists recent notes and searches vault contents, / searches the current note, and full-vault search is in the command palette.

Links and outline

Link notes with native Typst syntax such as #link("other.typ")[Other]; Folea follows these inside the vault. Press b to browse backlinks and outgoing #link, #import, and #include references, or o to jump through the heading outline.

Reading mode

Use Vim-style keys to scroll, jump, and zoom. Press s for caret navigation over rendered text; visual mode selects text for copying, while Enter or gd follows a link.

Install

Folea is under active development. GitHub Releases are manually cut from main and are not signed.

Package managers are the recommended installation method. Development packages are built from the develop branch and may contain unstable or incomplete changes. Package identifiers retain their -dev or -git suffix, but the installed application and command are always lowercase folea. Check the exact source commit with folea --build-info.

Windows

Install with Scoop. The package builds an exact develop commit locally:

scoop bucket add folea https://github.com/ivanovanatoliy/scoop-folea
scoop install folea-dev
macOS

Install the app with Homebrew. The cask builds an exact develop commit locally:

brew install --cask ivanovanatoliy/folea/folea-dev

The app uses an ad-hoc signature rather than an Apple Developer certificate or notarization.

Linux

Arch Linux, Manjaro, and EndeavourOS (AUR):

yay -S folea-git

Debian, Ubuntu, and Linux Mint (APT):

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://ivanovanatoliy.github.io/folea/repo-signing-key.asc \
  | sudo tee /etc/apt/keyrings/folea-packages.asc >/dev/null
curl -fsSL https://ivanovanatoliy.github.io/folea/apt/folea.sources \
  | sudo tee /etc/apt/sources.list.d/folea.sources >/dev/null
sudo apt update
sudo apt install folea-dev

Fedora (DNF):

sudo curl -fsSL https://ivanovanatoliy.github.io/folea/rpm/folea.repo \
  -o /etc/yum.repos.d/folea.repo
sudo dnf install folea-dev

From source

Clone the develop branch, then build and install Folea for the current user:

npm install
npm run app:install

The install script builds the unpacked app and registers it with the OS. To remove it:

npm run app:uninstall

Configuration

Global config lives in Electron's userData directory:

  • Linux: ~/.config/folea/
  • macOS: ~/Library/Application Support/folea/
  • Windows: %APPDATA%/folea/

Vault-local prefs may override global prefs key by key from <vault>/.folea/prefs.config.

prefs.config:

search.vaultCaseSensitive = false
search.inFileCaseSensitive = false
theme = dark

Editor command

editor.command opens the current note when you press <C-e>. It defaults to VS Code (code --reuse-window). %FILE% is replaced with the note path; FOLEA_EDITOR_CMD env var overrides it at runtime.

VS Code (default)
editor.command = code --reuse-window %FILE%
Neovim
editor.command = kitty -e nvim --listen %SOCK% %FILE%

%SOCK% is replaced with a vault-scoped socket path. With --listen, folea reuses an already-open nvim session — subsequent editor.open calls switch the buffer instead of opening a new window. Omit %SOCK% if you don't need session reuse.

Key bindings

keys.config:

document.scrollHalfDown <C-f>
view.toggleTree t
editor.open e

The command ID is the same ID shown in the command palette.

Default Key Bindings

All bindings are remappable via keys.config. The command ID shown in the palette is the key used for remapping.

Document (reading mode)

Key Action
j / k Scroll down / up
h / l Scroll left / right
Ctrl+d / Ctrl+u Scroll half page down / up
gg / G Jump to top / bottom
n / N Next / previous search match
: Command palette
/ In-file search
Ctrl+p Quick open note
Ctrl+b Toggle file tree
o Document outline
b Links panel
s Enter caret mode
Ctrl+e Open current note in editor
= Fit page width
+ / - Zoom in / out

File tree

Key Action
j / k Move down / up
l / h Expand / collapse
gg / G First / last item
/ Filter tree
Enter Open selected note

Caret mode (s to enter)

Key Action
h / j / k / l Move caret
{ / } Previous / next paragraph
gg / G Document start / end
v Enter visual selection
y Yank selection (in visual mode)
Enter / gd Follow link under caret
m<x> Set mark x
'<x> Jump to mark x

Development

npm install
npm run dev
npm run typecheck
npm run lint
npm test
npm run test:e2e
npm run rebuild

npm run test:e2e launches Electron through Playwright.

See Contributing before opening a pull request.

License

Apache-2.0. Bundled third-party components are attributed in NOTICE.

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

17 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors