~akkartik/notebook.love

Experimental notebook UI
939e6eb3 — Kartik K. Agaram a day ago
debug UI has gone stale, drop it
7be5e606 — Kartik K. Agaram a day ago
bugfix
498fbe83 — Kartik K. Agaram 2 days ago
bugfix

refs

main
browse  log 

clone

read-only
https://git.sr.ht/~akkartik/notebook.love
read/write
git@git.sr.ht:~akkartik/notebook.love

You can also use your local clone with git send-email.

#Experimental notebook UI

0 dependencies!

30-second video (no audio)

I'm aiming roughly in the direction of Jonathan Edwards's Subtext 1 and Kragen Sitaker's Bicicleta (1 2).

Design principles:

  • Everything is always editable.
  • Markup for controlling behavior is never hidden.

The bulk of the new code is in rects.lua.

Current syntax:

  • Unindented lines are prose, indented lines are code (which does nothing so far, but still renders fractions from the immediate upstream of this fork)
  • Prose lines support named blanks using [...|...] syntax which gets rendered as 2 lines with the lower line (the name or definition of the blank) in a more subtle color.
  • Prose lines support inline styling using <...|...> syntax, where you can currently specify fg (foreground color) or bg (background color). For example, <heat|fg=1,0,0>. Colors are triples of 3 numbers between 0 and 1, separated by commas. Use spaces only to separate fg and bg, thus: <heat|fg=1,0,0 bg=0,0,1>.
  • Prose lines support styling --- sections that partition a document. Styling directives are the same as in inline styles, so just fg and bg so far.

Here are some videos from upstream that also help illustrate interactions here. In particular, left/right arrows can now move the cursor up and down between two lines on screen.

Mouse clicks should be fairly intuitive.

#Getting started

Install LÖVE. It's just a 5MB download, open-source and extremely well-behaved.

To run from the terminal, pass this directory to LÖVE, optionally with a file path to edit.

Alternatively, turn it into a .love file you can double-click on:

$ zip -r /tmp/notebook.love *.lua

By default, notebook.love reads/writes the file lines.txt in a directory relative to this app.

To open a different file, drop it on the notebook.love window.

#Keyboard shortcuts

While editing text:

  • ctrl+f to find patterns within a file
  • ctrl+c to copy, ctrl+x to cut, ctrl+v to paste
  • ctrl+z to undo, ctrl+y to redo
  • ctrl+= to zoom in, ctrl+- to zoom out, ctrl+0 to reset zoom
  • alt+right/alt+left to jump to the next/previous word, respectively
  • mouse drag or shift + movement to select text, ctrl+a to select all

Exclusively tested so far with a US keyboard layout. If you use a different layout, please let me know if things worked, or if you found anything amiss: http://akkartik.name/contact

#Known issues

  • No support yet for Unicode graphemes spanning multiple codepoints.

  • No support yet for right-to-left languages.

  • If you ever see a crash when clicking on the mouse, it might be because a mouse press and release need to happen in separate frames. Try pressing and releasing more slowly and let me know if that helps or not. This is klunky, sorry.

  • Can't scroll while selecting text with mouse.

  • No scrollbars yet. That stuff is hard.

#Mirrors and Forks

This repo is a fork of lines.love. Its immediate upstream is text2.love, an embeddable text editor widget which provides features like word-wrap, unlimited undo in 1200 lines of code. Updates to it can be downloaded from the following mirrors:

Further forks are encouraged. If you show me your fork, I'll link to it here.

#Feedback

Most appreciated. Messages, PRs, patches, forks, it's all good.