Skald is a small, native desktop app for calm creative writing. You work in plain Markdown (.md) files, organized into projects on disk, with optional wiki-style links between notes. The UI is built with Iced and Rust.
Projects and settings live under ~/.skald/ (see Projects and storage).
- Welcome screen — Create or open a project; layout is centered and uncluttered.
- Workspace — Sidebar file tree, centered writing column, save with Ctrl+S (dirty-state tracking).
- Wiki links —
[[Target]]and[<Target>]; outgoing links and simple backlinks in a side panel (details). - Themes — Dracula and Nord presets via Iced.
- Settings — Dedicated screen for theme, font sizes, editor column width, welcome typography, and optional UI font family; changes are written to
config.toml(details). - Keyboard zoom — Ctrl+ / Ctrl− (use Cmd on macOS) adjusts editor and sidebar font sizes and persists to config without extra on-screen controls.
- Rust toolchain with Cargo (this crate uses Rust 2024 edition; use a current stable compiler that supports it).
Clone the repository, then from the project root:
cargo runRelease build:
cargo build --release
# Binary: target/release/skaldRun tests and checks:
cargo test
cargo fmt
cargo clippy -- -D warningsWith just:
just run # debug run
just check # cargo fmt --check + clippy -D warnings
just install # release binary to ~/.local/bin + Linux .desktop when on LinuxOn Linux, just install copies skald to ~/.local/bin/ and, when applicable, adds a Freedesktop entry under ~/.local/share/applications/. Ensure ~/.local/bin is on your PATH.
On Windows, just install builds the binary and runs a PowerShell script that copies skald.exe to %USERPROFILE%\.local\bin\, adds that directory to your user PATH, and creates a Start Menu shortcut.
To build a standalone installer .exe for distribution (requires Inno Setup 6):
just build-windows-installer
# Output: dist\skald-0.1.0-windows-setup.exeOn first run, Skald creates ~/.skald/config.toml with defaults. You can edit it by hand or use Settings inside the app (theme, sizes, optional font_family). Bundled typography defaults to Source Serif 4; licensing for the bundled font is described in doc/fonts.md.
Contributor-oriented notes live in doc/:
| Document | Contents |
|---|---|
| project-analysis.md | Crate layout, dependencies, data paths |
| architecture.md | App state, screens, navigation |
| iced.md | How Iced is wired in this project |
| themes-and-config.md | config.toml keys and Settings screen |
| projects-and-storage.md | ~/.skald/projects layout |
| wiki-links.md | Link syntax and resolution |
| fonts.md | Bundled font and optional family name |
- No Markdown preview or WYSIWYG (plain-text editing only).
- Link navigation uses the links panel, not in-editor clicks.
- Backlinks scan project files when you open a note — fine for small trees.
See project-analysis.md for more follow-ups.
This repository does not yet include a top-level license file for the application code. The bundled Source Serif 4 font is under the SIL Open Font License; see doc/fonts.md.