Kartik K. Agaram c5882d49ef | ||
---|---|---|
data.sample | ||
LICENSE.txt | ||
Manual_tests.md | ||
MemoryReferenceInfo.lua | ||
MemoryReferenceInfo.lua.0 | ||
NotoSansJP-Regular.otf | ||
README.md | ||
app.lua | ||
button.lua | ||
colorize.lua | ||
commands.lua | ||
config.sample | ||
debug.lua | ||
drawing.lua | ||
drawing_tests.lua | ||
edit.lua | ||
errors.lua | ||
file.lua | ||
geom.lua | ||
help.lua | ||
icons.lua | ||
json.lua | ||
keychord.lua | ||
log.lua | ||
log_browser.lua | ||
main.lua | ||
nativefs.lua | ||
profile.lua | ||
profiler.lua | ||
reference.md | ||
run.lua | ||
run_tests.lua | ||
search.lua | ||
select.lua | ||
source.lua | ||
source_commands.lua | ||
source_edit.lua | ||
source_file.lua | ||
source_select.lua | ||
source_tests.lua | ||
source_text.lua | ||
source_text_tests.lua | ||
source_undo.lua | ||
test.lua | ||
text.lua | ||
text_tests | ||
text_tests.lua | ||
undo.lua |
README.md
In progress. Beginnings of a possible shared wiki and discussion system for Lion Kimbro's Internet Office Hours community.
Techmeet.love started out as a private single-person note-taking system. It is now a space for the long-form asynchronous communications of a small community, and a place to experiment with and evolve new ideas for such collaborative communications.
Some features:
- Multiple views into an independent repo of plain text notes (with some line drawings).
- Notes can have arbitrary named relationships (links) to each other, resulting in a graph.
- The primary visual metaphor is an infinite 2D surface of fixed-width, non-overlapping, notes that can be operated on with an extensible set of commands.
- Commands usually (but not always) create new columns of notes. Each column is an independent visualization of a subset of notes.
- Find on surface.
- Search all notes on disk in reverse-chronological order.
- Notes can contain hyperlinks in wikiwords to other notes. Hyperlinks can't contain spaces. Clicking on a hyperlink opens the target in a new column.
- A few other things. Explore the command menu and palette along the top.
Some videos to help visualize these bullets (albeit with outdated UI):
- https://archive.org/details/akkartik-pensieve-2022-07-27 (4.5 minutes)
- https://merveilles.town/@akkartik/108766067153506592 (30 seconds)
- https://archive.org/details/akkartik-pensieve-2022-08-29 (3 minutes)
Getting started
Install LÖVE. It's just a 5MB download, open-source and
extremely well-behaved. I'll assume below that you can invoke it using the
love
command, but that might vary depending on your OS.
There's currently a few moving parts to set up:
-
Clone this repo.
git clone https://git.sr.ht/~akkartik/techmeet.love techmeet
-
Decide where to store data for the app. Say it's
$DATADIR
. -
Clone the techmeet-data repo into
$DATADIR
.git clone https://git.sr.ht/~akkartik/techmeet-data $DATADIR
Replace
$DATADIR
for yourself. -
Initialize an example layout for the 2D surface. On a POSIX system, the commands would be:
cd $DATADIR cp config.example config
Again, adjust
$DATADIR
for yourself.This is an optional step. The surface layout feels like something private to each individual and doesn't really belong in this repo. This is just a convenience to get you started.
-
Run the app while specifying
$DATADIR
:love techmeet $DATADIR
You'll only need to do this the first time. After that, running without args will remember
$DATADIR
.Your OS will likely have ways to run this command based on a global shortcut, should you so desire.
Start exploring! Key shortcuts:
ctrl+enter
will open up the command palette and give you more of a sense of your optionsctrl+e
makes the highlighted note editable. When you're done just hitctrl+e
again to freeze its contents against accidental editing. At most one note can be editable at any moment.- When a note is editable, empty lines will show a little box icon on the left margin. Click it to create a line drawing. Line drawings can only live in their own lines separate from text.
ctrl+h
when hovering over a drawing will show you the options available to you. Most operations involve holding down the mouse and making a stroke. You can also start a stroke and press and holdh
without releasing to see options available to you mid-stroke.
Keyboard shortcuts
While editing text:
ctrl+f
to find patterns within a filectrl+c
to copy,ctrl+x
to cut,ctrl+v
to pastectrl+z
to undo,ctrl+y
to redoctrl+=
to zoom in,ctrl+-
to zoom out,ctrl+0
to reset zoomalt+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+w
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.
techmeet.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
-
No support yet for Unicode graphemes spanning multiple codepoints.
-
No support yet for right-to-left languages.
-
Editing a note larger than 50KB grows sluggish (particularly during undo/redo) even when maximized.
-
If you kill the process, say by force-quitting because things things get sluggish, you can lose data.
-
Searching is slow. There's no index yet. Searching happens in the same thread as UI updates, so UI may go unresponsive with really large notes. I haven't observed this in practice.
-
Pressing keys while editing will try to always keep the text cursor on 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.
-
Touchpads can drag the mouse pointer using a light touch or a heavy click. On Linux, drags using the light touch get interrupted when a key is pressed. You'll have to press down to drag.
-
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, an editor for plain text where you can also seamlessly insert line drawings. Its immediate upstream is pensieve.love, a private note-taking app for a single individual. Updates to it can be downloaded from:
- https://git.sr.ht/~akkartik/techmeet.love
- https://tildegit.org/akkartik/techmeet.love
- https://git.merveilles.town/akkartik/techmeet.love
- https://nest.pijul.com/akkartik/techmeet.love (using the Pijul version control system)
Further forks are encouraged. If you show me your fork, I'll link to it here.
Associated tools
- https://git.sr.ht/~akkartik/techmeet-capture.love provides a blank-slate UI into the same notes directory as techmeet.love.
- https://codeberg.org/akkartik/lines2md exports lines.love files to Markdown and (non-editable) SVG.
- https://git.sr.ht/~akkartik/lines2html.love exports lines.love files to html and inline SVG.
Feedback
In particular, techmeet.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.