A slate to write and draw on, then export to html
# A slate to write and draw on, then export to html

[![0 dependencies!]https://0dependencies.dev/0dependencies.svg]https://0dependencies.dev

Write or draw as much as you like, but only to a single scratch space.
Designed for a tablet device, but usable anywhere.

Screenshot:

![screenshot]assets/etch.jpg

When you're done, export to html and clear the slate.

Feel free to quit any time. The scratch space is preserved across restarts.

etch.love is a compatible fork of [lines.love]http://akkartik.name/lines.html,
an editor for plain text where you can also seamlessly insert line drawings.
Designed above all to be easy to modify and give you early warning if your
modifications break something.

## Getting started

Install [LÖVE]https://love2d.org. It's just a 5MB download, open-source and
extremely well-behaved.

To run from the terminal, [pass this directory to LÖVE]https://love2d.org/wiki/Getting_Started#Running_Games.

Alternatively, turn it into a .love file you can double-click on:
```
$ zip -r /tmp/lines.love *.lua
```

Html files are saved in [the directory containing this app]https://love2d.org/wiki/love.filesystem.getSourceBaseDirectory.

## 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
* `ctrl+e` to modify the sources

For shortcuts while editing drawings, consult the online help. Either:
* hover on a drawing and hit `ctrl+h`, or
* click on a drawing to start a stroke and then press and hold `h` to see your
  options at any point during a stroke.

etch.love has been 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

* Drawing doesn't work yet on some (anecdotally Android) mobile devices.

* No support yet for Unicode graphemes spanning multiple codepoints.

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

* The text cursor will always stay on the screen. This can have some strange
  implications:

    * A long series of drawings will get silently skipped when you hit
      page-down, until a line of text can be showed on screen.
    * If there's no line of text at the top of the file, you may not be able
      to scroll back up to the top with page-up.

  So far this app isn't really designed for drawing-heavy files. For now I'm
  targeting mostly-text files with a few drawings mixed in.

* No clipping yet for drawings. In particular, circles/squares/rectangles and
  point labels can overflow a drawing.

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

## Mirrors and Forks

This repo is a fork of [lines.love]http://akkartik.name/lines.html, an
editor for plain text where you can also seamlessly insert line drawings.
Its immediate upstream is [lines-mobile.love]https://git.sr.ht/~akkartik/lines-mobile.love,
a version for Android and iOS devices.
Updates to it can be downloaded from:

* https://git.sr.ht/~akkartik/etch.love
* https://tildegit.org/akkartik/etch.love
* https://git.merveilles.town/akkartik/etch.love
* https://nest.pijul.com/akkartik/etch.love (using the Pijul version control system)

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

## Feedback

[Most appreciated.]http://akkartik.name/contact Messages, PRs, patches,
forks, it's all good.