In progress. Beginnings of a possible shared wiki and discussion system for [Lion Kimbro's Internet Office Hours](https://communitywiki.org/wiki/LionKimbro) community. Techmeet.love started out as [a private single-person note-taking system](https://git.sr.ht/~akkartik/pensieve.love). 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](http://akkartik.name/lines.html)). - 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](https://love2d.org). 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: 0. Clone this repo. ``` git clone https://git.sr.ht/~akkartik/techmeet.love techmeet ``` 1. Decide where to store data for the app. Say it's `$DATADIR`. 2. Clone the techmeet-data repo into `$DATADIR`. ``` git clone https://git.sr.ht/~akkartik/techmeet-data $DATADIR ``` Replace `$DATADIR` for yourself. 3. 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. 4. 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 options * `ctrl+e` makes the highlighted note editable. When you're done just hit `ctrl+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 hold `h` without releasing to see options available to you mid-stroke. ## 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+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](http://akkartik.name/lines.html), an editor for plain text where you can also seamlessly insert line drawings. Its immediate upstream is [pensieve.love](https://git.sr.ht/~akkartik/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 [Most appreciated.](http://akkartik.name/contact) 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.