92 lines
3.9 KiB
Markdown
92 lines
3.9 KiB
Markdown
# snap.love: a graph drawing tool
|
|
|
|
Unlike [Graphviz](https://graphviz.org) and [PlantUML](https://plantuml.com),
|
|
this tool is for small graphs where you want complete control over layout.
|
|
Unlike PowerPoint or draw.io, this tool results generates text files that are
|
|
more amenable to version control. The catch: it's a lot more limited than all
|
|
these tools; all you can do so far is draw rectangles and edges between them.
|
|
|
|
![drawing](assets/1.gif)
|
|
|
|
You can't change the styling. Unless you modify the code. But that's easy!
|
|
This repo is an example of a [Freewheeling App](http://akkartik.name/freewheeling),
|
|
designed above all to be easy to run, easy to modify and easy to share.
|
|
|
|
## Getting started
|
|
|
|
Install [LÖVE](https://love2d.org). It's just a 5MB download, open-source and
|
|
extremely well-behaved.
|
|
|
|
[Run the app using LÖVE.](https://love2d.org/wiki/Getting_Started#Running_Games)
|
|
|
|
You'll see a single box on screen. Drag the surface or press arrow keys to pan
|
|
around. Try dragging the border of the box. You'll see an edge stick out.
|
|
Release the mouse button, and a new box (node) will pop out at the other end
|
|
of the edge. Try dragging the top-left bar for each box. They move relative to
|
|
each other. Try typing inside. The text wraps within and the box grows taller
|
|
to accomodate it. Try dragging the parallel lines to the right of a box. The
|
|
width of the box changes.
|
|
|
|
Try quitting and restarting. Your changes will still be present. By default,
|
|
snap.love writes to a file called `graph` in [a directory relative to this app](https://love2d.org/wiki/love.filesystem.getSourceBaseDirectory).
|
|
To switch to a different file, drop it on the snap.love window. You can also
|
|
pass in a filename when starting the app from the terminal.
|
|
|
|
## Hacking
|
|
|
|
To make changes to this app without restarting the app each time, download
|
|
[the driver app](https://git.sr.ht/~akkartik/driver.love). Example session:
|
|
|
|
![making changes without restarting the app](assets/2.gif)
|
|
|
|
[Some reference documentation on how to create your own apps.](reference.md)
|
|
|
|
If the app being modified by the driver lives in a .love file, your changes
|
|
will go into the [save directory](https://love2d.org/wiki/love.filesystem.getSaveDirectory).
|
|
If it lives in a directory (like this repo), your changes will go straight
|
|
into the same directory.
|
|
|
|
## Keyboard shortcuts
|
|
|
|
While editing within a node:
|
|
* `ctrl+f` to find patterns
|
|
* `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
|
|
|
|
When cursor is not in an editor:
|
|
* arrow keys pan the surface
|
|
* `shift`+arrow keys pan faster
|
|
- `pagedown` and `pageup` are aliases for `shift+down` and `shift+up` respectively
|
|
|
|
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 scrollbars yet. That stuff is hard.
|
|
|
|
## 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 [luaML.love](https://git.sr.ht/~akkartik/luaML.love),
|
|
a box model for a Lua-based markup language that models an infinite pannable,
|
|
zoomable 2D surface. Updates to it can be downloaded from:
|
|
|
|
* https://git.sr.ht/~akkartik/snap.love
|
|
* https://tildegit.org/akkartik/snap.love
|
|
* https://git.merveilles.town/akkartik/snap.love
|
|
* https://nest.pijul.com/akkartik/snap.love (using the Pijul version control system)
|
|
|
|
Further forks are encouraged. If you show me your fork, I'll link to it here.
|
|
|
|
* https://git.sr.ht/~akkartik/wardley.love - a little tool for building Wardley Maps
|
|
|
|
## Feedback
|
|
|
|
[Most appreciated.](http://akkartik.name/contact)
|