Fish Extensible Text Editor Written In Fish

Digit 0146345b78 fin tidier version bump 1.012.042 to 1.013 1 mese fa
INSTALL.md e5f44cdd08 fin space 1 mese fa
LICENSE 6eac41dd9a Initial commit 2 mesi fa
README.md 4fd658bc8d fin version bump 1.012.042 to 1.013 1 mese fa
SIZES.md e407b20c76 fin funsize 1 mese fa
fin 0146345b78 fin tidier version bump 1.012.042 to 1.013 1 mese fa
fin.1 437a13b5a7 fin doc 1 mese fa
fin.desktop 5f6bdb881e fin iconic 1 mese fa
fin.png 5f6bdb881e fin iconic 1 mese fa
finsfirstscreenshot.png 58db7deb1a fin colour 1 mese fa
install.fish 4b934a5683 fin installers 2 mesi fa
makefile 4b934a5683 fin installers 2 mesi fa

README.md

fin logo, orange fin ambiguous if dorsal, pelvic or caudal, on a purple background

fin

Fish Extensible Text Editor Written In Fish

"Started on a whim. Is actually usable."

[!CAUTION] This project is still in its infancy, past proof-of-concept, still needs a lot of shake-down, a lot of human eye and hand on it to clean up the LLM slime still scattered around, a lot of refactoring still to do, documentation and accoutriments out of sync, still to stabilise on a clear core base, etc, . Manage your expectations accordingly.

fin's first screenshot, wearing nztt font at 18 pixels, newly in colour, in st suckless's simple terminal

Statsheet:

License: GNU GPL 3

Author(s): Digit (Directing Claude Sonnet 4.0)

Version: 1.013

Lines of code: 524

Features:

  • Open
  • Save
  • Quit
  • Cursor keys
  • Backspace
  • Enter
  • Line wrap
  • Cursor (inverse colour)
  • Colour Status bar
  • * Line number
  • * Column number
  • * Keybind Help
  • * Version
  • cursor scrolling
  • page up / page down
  • paste selection
  • paste clipboard
  • ... and nothing much else (yet).

Dependencies:

Core requirements:

  • Fish shell (2.3.0+)
  • awk (POSIX awk, gawk, mawk, or BusyBox awk)
  • coreutils: head, tail, wc, cp, mv, cat (GNU coreutils, BusyBox, or BSD variants)
  • Terminal utilities: tput, stty, clear (usually part of ncurses)
  • od (octal dump - usually part of coreutils or util-linux)
  • mktemp (for safe temporary file creation)

Clipboard integration:

  • xsel (for X11 clipboard/primary selection access)

Alternative implementations:

  • awk is widely available - works with any POSIX-compliant awk implementation
  • xsel could potentially be replaced with xclip, wl-clipboard (Wayland), or pbcopy/pbpaste (macOS)
  • Most Unix-like systems (Linux, macOS, FreeBSD, etc.)

a fun little video (from an early version fin1.005 iirc) that doesnt show it off much because there's not much to show yet:

https://youtu.be/dhJaNQi8400

https://peertube.wtf/w/6pW6NUtWEdHoDa6DR3zm4u

About fin's beginning:

Written by Digit, with a lot of "help" from Claude Sonnet 4 LLM, with a lot of hand-holding, over 35 sub versions from 0.000 to 0.035 to get to proof of concept initial feature completeness without bugs, to version bump to 1.000.

All started on a whim, realising fish is capable of this, and, knowing I'm slow to take to elisp or lua for extending emacs and nvim, while fish is the language I know best... and it's a nice idea that my text editor is written and extensible in the same language as my shell.

About fin's future:

Can fin join the hallowed few laudible text-editors?

Unique positioning advantages:

  • Only text editor in Fish - fills a completely empty niche
  • Ultra-minimal core - easier to understand/modify than vim/emacs
  • Unix philosophy - leverages existing tools instead of reinventing
  • Easy extensibility - Fish functions are much more approachable than vimscript or elisp or lua

What could push it into the notable category:

  • Fish community adoption - Fish users might love having a native editor
  • Educational value - great for teaching how editors work (unlike vim's complexity)
  • Customization ease - if adding features is as simple as writing Fish functions
  • Performance niche - might be faster than Electron-based editors for simple tasks

The combination of uniqueness + solid engineering + clear vision could absolutely get it there.

License

fin is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

fin is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with fin. If not, see http://www.gnu.org/licenses/.