In-progress browser for a directory of text files
Go to file
Kartik K. Agaram b0ca118a7a mock-up of reply buttons
Doesn't do anything yet, just changes color.
2023-06-22 18:17:01 -07:00
assets
0000-freewheeling-start Merge template-live-editor 2023-04-16 11:30:56 -07:00
0001-on update one bit of documentation 2023-04-22 22:07:37 -07:00
0002-vx backport a few more changes from driver.love 2023-04-22 22:29:22 -07:00
0003-scale make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0004-vy backport a few more changes from driver.love 2023-04-22 22:29:22 -07:00
0005-Cursor_node make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0006-on.mouse_press mock-up of reply buttons 2023-06-22 18:17:01 -07:00
0007-on_text mock-up of reply buttons 2023-06-22 18:17:01 -07:00
0008-Viewport start rendering file picker on the surface as well 2023-06-21 22:28:56 -07:00
0009-on.code_change start rendering file picker on the surface as well 2023-06-21 22:28:56 -07:00
0010-initialize_editor mock-up of reply buttons 2023-06-22 18:17:01 -07:00
0011-box_height backport a few more changes from driver.love 2023-04-22 22:29:22 -07:00
0012-on.initialize start rendering file picker on the surface as well 2023-06-21 22:28:56 -07:00
0013-font make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0014-y_of_schema1 make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0015-line_height make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0016-schema1_of_y make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0017-on.mouse_release bugfix: panning with mouse in file picker 2023-06-22 08:14:00 -07:00
0018-on.update bugfix: panning with mouse in file picker 2023-06-22 08:14:00 -07:00
0019-B make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0021-compute_layout start rendering file picker on the surface as well 2023-06-21 22:28:56 -07:00
0022-on.text_input get rid of manifests 2023-06-18 19:08:29 -07:00
0023-on.keychord_press click on file picker to open thread 2023-06-21 22:48:47 -07:00
0024-copy_shape make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0025-add_thick_line make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0026-on.draw no menu bar for file picker 2023-06-21 22:30:25 -07:00
0027-Surface start rendering file picker on the surface as well 2023-06-21 22:28:56 -07:00
0028-A click on file picker to open thread 2023-06-21 22:48:47 -07:00
0030-update_editor_box start rendering file picker on the surface as well 2023-06-21 22:28:56 -07:00
0031-cols some helpers 2023-06-20 17:34:03 -07:00
0032-rows some helpers 2023-06-20 17:34:03 -07:00
0035-mouse_cursor make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0036-Mouse_cursor make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0037-set_mouse_cursor make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0040-Menu_background_color make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0041-Menu_border_color make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0042-Menu_command_color make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0043-Menu_highlight_color make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0044-add_hotkey_to_menu make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0052-draw_cursor make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0061-on.key_release get rid of animation and editor movement 2023-06-18 13:04:18 -07:00
0062-on.save_settings new fork: pothi 2023-06-18 11:16:58 -07:00
0072-Spawn_point make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0081-draw_menu_bar load in-memory data for a thread 2023-06-18 20:10:20 -07:00
0096-iscale make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0097-sy make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0098-sx make order of files consistent with upstream 2023-04-22 18:50:18 -07:00
0106-on.load_settings include client app name in window title 2023-06-18 22:43:27 -07:00
0110-Border_color new fork: pothi 2023-06-18 11:16:58 -07:00
0110-on.mouse_wheel_move support mouse wheel 2023-06-18 22:18:53 -07:00
0111-Files load in-memory data for a thread 2023-06-18 20:10:20 -07:00
0112-Global_state start rendering file picker on the surface as well 2023-06-21 22:28:56 -07:00
0113-draw_surface start rendering file picker on the surface as well 2023-06-21 22:28:56 -07:00
0117-open_thread start rendering file picker on the surface as well 2023-06-21 22:28:56 -07:00
0118-load_subtree mock-up of reply buttons 2023-06-22 18:17:01 -07:00
0119-load_metadata load in-memory data for a thread 2023-06-18 20:10:20 -07:00
0120-initialize_item mock-up of reply buttons 2023-06-22 18:17:01 -07:00
0121-full_path load in-memory data for a thread 2023-06-18 20:10:20 -07:00
0122-metadata_file load in-memory data for a thread 2023-06-18 20:10:20 -07:00
0123-save_dir_path load in-memory data for a thread 2023-06-18 20:10:20 -07:00
0124-Indent start rendering the initialized thread 2023-06-20 20:10:10 -07:00
0125-Width start rendering the initialized thread 2023-06-20 20:10:10 -07:00
0127-Inter_comment_spacing add some vertical space between comments 2023-06-20 22:39:45 -07:00
0128-reset_viewport start rendering file picker on the surface as well 2023-06-21 22:28:56 -07:00
0129-initialize_file_picker start rendering file picker on the surface as well 2023-06-21 22:28:56 -07:00
0130-lay_out_file_picker start rendering file picker on the surface as well 2023-06-21 22:28:56 -07:00
0131-File_picker_margin start rendering file picker on the surface as well 2023-06-21 22:28:56 -07:00
0132-in_rect click on file picker to open thread 2023-06-21 22:48:47 -07:00
0133-Reply_button_border_color start drawing 'reply' buttons under items 2023-06-21 23:28:25 -07:00
0134-Reply_button_color start drawing 'reply' buttons under items 2023-06-21 23:28:25 -07:00
0135-on_button mock-up of reply buttons 2023-06-22 18:17:01 -07:00
LICENSE.txt
Manual_tests.md bugfix: delete definition 2023-06-10 12:49:06 -07:00
MemoryReferenceInfo.lua.0
MemoryReferenceInfo.lua.unused
README.md . 2023-06-20 23:20:36 -07:00
app.lua Merge luaML.love 2023-06-05 22:43:58 -07:00
button.lua
default_map
driver.lua
edit.lua bring back autosave 2023-06-20 16:49:48 -07:00
file.lua bugfix: drawings in source editor 2023-05-30 00:02:09 -07:00
json.lua
keychord.lua rename modifier_down to key_down 2023-06-05 22:21:04 -07:00
live.lua Merge driver.love 2023-06-19 10:32:56 -07:00
main.lua Merge driver.love 2023-06-19 10:32:56 -07:00
reference.md Merge luaML.love 2023-06-07 22:43:21 -07:00
search.lua Merge luaML.love 2023-05-13 17:40:20 -07:00
select.lua Merge lines.love 2023-06-04 15:11:24 -07:00
test.lua
text.lua bring back autosave 2023-06-20 16:49:48 -07:00
text_tests desired behavior now looks good 2023-06-02 07:46:45 -07:00
text_tests.lua Merge luaML.love 2023-06-04 15:48:20 -07:00
undo.lua

README.md

In progress. Browse a directory of articles like Kragen Sitaker's dercuano.

My tentative goal is to be able to post comments on articles, send updates around using git, and browse comments from all commenters in line with articles. It's unclear whether it will be economical to support editing articles. My priority is a commenting experience rather than a CMS for the author(s) of articles.

Status: you can read articles. There's a 'comment' button, but it doesn't do anything yet.

The name: 'pothi' is Sanskrit for 'book', often a loose-bound collection of palm leaf manuscripts.

pothi.love is a "freewheeling" app that you can read and modify the source code for as it runs. Designed above all to be easy to modify and give you early warning if your modifications break something.

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.

Run this app from the terminal, passing its directory to LÖVE. pothi.love will print the path where it expects to find articles. Quit, create a folder called data/ under this path, put text files there. Restart.

For example, I created the data/ dir using these commands on my machine:

cd ~/.local/share/love/pothi
git clone http://canonical.org/~kragen/sw/pavnotes2.git data

And now I can see the files when I restart:

love ~/pothi

The app will open to a directory view by default (though there's no scrolling or filtering yet, sorry..). Click on any filename to read it.

Hacking

To modify it live without restarting the app each time, download the driver app. Here's an example session using a different app:

making changes without restarting the app

Some reference documentation on how to create your own apps.

To publish your changes:

  • delete all files with a numeric prefix from the repo, and then
  • move all files with a numeric prefix from the save directory to the repo.

Keyboard shortcuts

While reading a single file:

  • ctrl+o to switch to a different file

  • ctrl+f to search for strings

  • ctrl+= to zoom in, ctrl+- to zoom out, ctrl+0 to reset zoom

  • mouse drag or shift + movement to select text, ctrl+a to select all

  • mouse drag and 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

  • Both freewheeling apps and the driver for them currently benefit from being launched in terminal windows rather than by being clicked on in a desktop OS. See the driver app for details.

  • No support yet for Unicode graphemes spanning multiple codepoints.

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

  • Undo/redo may be sluggish in editor windows containing large files. Large files may grow sluggish in other ways.

  • If you kill the process, say by force-quitting because things things get sluggish, you can lose data.

  • 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 text.love, a version without support for line drawings. 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.