--- title: Projects draft: true --- - [Static Site Builder](#static-site-builder) - [Libraries](#libraries) - [Typst](#typst) - [Utilities](#utilities) - [System Maintenance](#system-maintenance) - [Email](#email) - [Desktop](#desktop) - [Keyboard](#keyboard) - [Ashen](#ashen) - [Plugins](#plugins) - [Kakoune](#kakoune) - [Fish](#fish) - [Helix](#helix) - [Neovim](#neovim) I really enjoy programming, especially writing simple utilities to solve common problems. Here, I list project I've written on my own time. For my academic work, please see the [research](/research) section. ## Static Site Builder [zona](https://git.sr.ht/~ficd/zona) - Static site builder written in Python and optimized for lightweight blogs following minimalist design principles. - Support for templates, declarative metadata, and configuration files. - Interprets inline image "alt text" as Markdown, rendered as an image tag. - In active development, plans for many more features. - Used to build this website. ## Libraries ### Typst - [typpres](https://git.sr.ht/~ficd/typpres) - Provides functions to make creating slideshows with [polylux](https://github.com/polylux-typ/polylux) more convenient. - [reflib](https://git.sr.ht/~ficd/reflib) - Provides functions to make typesetting label references more convenient. ## Utilities ### System Maintenance - [AutoYADM](https://git.sr.ht/~ficd/autoyadm) - Shell utility to automate managing dot files with [yadm](https://yadm.io/). - Intelligently auto-tracks newly created children of tracked subdirectories. - Consists of two Bash scripts; very lightweight. - Fish port in the works. - I use this daily to keep my [dotfiles](https://git.sr.ht/~ficd/dotfiles) in sync. ### Email - [Email Parser](https://github.com/ficcdaf/tree-sitter-mail) - Forked and maintains a Tree-sitter parser for `mail` files. - Extended formal grammar definitions, supporting additional syntax elements & fixing critical bugs. - Wrote highlight and text object queries implementing `mail` support for Helix; contributed the feature upstream. - Currently researching how to leverage the parser to contribute `mail` support to the Harper grammar checker. - [Email Formatter](https://git.sr.ht/~ficd/mail-utils) - Wrote a lightweight email formatter in Python, intended to format outgoing plaintext emails. - Wraps paragraphs at specified column width. - Automatically reflows uneven paragraphs. - Preserves long words, quoted lines, indented lines, lists, code blocks, and signature blocks. - Custom heuristic for preserving two-line signoffs. ### Desktop [Repository](https://git.sr.ht/~ficd/wayland-utils) - Screen Recording Utility - Niri Window Status - Python server that integrates with Niri to provide a live indicator of windows open on active workspaces. - Designed for use with Waybar and similar software. - Niri Window Picker - Simple Python script that spawns a fuzzy picker allowing users to fuzzily select an open window to switch focus to. ## Keyboard - Self-built wireless [corne](https://github.com/foostan/crkbd) keyboard. - [Colemak-DH](https://colemakmods.github.io/mod-dh/) (non-QWERTY, ergonomic layout). - [Custom columnar split layout](https://github.com/ficcdaf/zmk-config) leveraging overloaded modifiers and layers to maximize efficiency. - Custom [ANSI layout](https://github.com/ficcdaf/scripts/tree/main/keyd) intended to make my ThinkPad internal keyboard as ergonomic as possible without conflicting with external keyboards. ## Ashen [Ashen](https://sr.ht/~ficd/ashen) - Original color scheme designed by me. - Carefully tuned to fill a particular niche. - Opinionated, clean, muted, and dark. - Active user base, receives contributions. - Ported to a wide variety of software, including (but not limited to): - Helix (text editor). - Terminal emulators (Most popular emulators covered) - Firefox - CLI tools (eza, bat) - TUI tools (lazygit, yazi) ![](https://git.sr.ht/~ficd/ashen/blob/HEAD/helix/preview_wide.png) ## Plugins ### Kakoune - [kak-wrap-nav](https://git.sr.ht/~ficd/kak-wrap-nav) - Implementation of Vim's `gj/gk` (visual vertical navigation) for Kakoune. - Contains 1:1 implementation of Kakoune's visual wrapping algorithm in Go (needed to calculate offsets for visual navigation) - **Work in progress.** - [kak-autospell](https://git.sr.ht/~ficd/kak-autospell) - Automatically refreshes and clears spellchecker highlighting. - Provides convenience mappings for using built-in spellchecker. - [kak-ashen](https://git.sr.ht/~ficd/kak-ashen) - Official implementation of [Ashen](https://sr.ht/~ficd/ashen) for Kakoune. - Features toggle-able mode-indicating dynamic cursor with optional EOL variants. - Additional tree-sitter support, including Helix capture groups. - `kakoune-lsp` support. - [kak-title-bar](https://git.sr.ht/~ficd/kak-title-bar) - Asynchronously renders a bufferlist as the terminal's window title for tight integration with the window manager. - Indicates buffer modified states and active buffer. ### Fish - [jrnl.fish](https://git.sr.ht/jrnl.fish) - Small utility for managing daily journal entries. - Template support. - [smartcd.fish](https://git.sr.ht/smartcd.fish) - Adds contextual smart behavior to the `cd` command. - Fisher (contribution) - Added support for sourcehut plugins and fixed a critical issue with unsafe tilde path expansion. - [PR](https://github.com/jorgebucaran/fisher/pull/802) ### Helix > Mandatory caveat: Helix does _not_ have a plugin system! However, it _does_ > allow your to invoke shell commands, making it possible to implement some very > hacky functionality. - [hx-typ-zathura](https://git.sr.ht/~ficd/dotfiles/blob/main/.config/helix/scripts/hx-typ-zathura.fish) - Easily open a PDF preview of your current Typst file in Zathura. - [justfile formatter](https://git.sr.ht/~ficd/dotfiles/blob/main/.config/helix/scripts/format_just.fish) - Workaround for formatting justfiles without any dependencies. ### Neovim - [Academic.nvim](https://github.com/ficcdaf/academic.nvim) - Neovim plugin. - Automatically installs and configures an Academic English spelling dictionary. - Minimal performance overhead. - [Ashen.nvim](https://github.com/ficcdaf/ashen.nvim) - Implementation of Ashen for Neovim. - Supports numerous plugin integrations.