179 lines
6.3 KiB
Markdown
179 lines
6.3 KiB
Markdown
---
|
|
title: Projects
|
|
---
|
|
|
|
<h1>Projects</h1>
|
|
|
|
<!--toc:start-->
|
|
|
|
- [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)
|
|
|
|
<!--toc:end-->
|
|
|
|
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)
|
|
|
|

|
|
|
|
## 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.
|