Paginator that uses all available screen/window width
Go to file
Kartik K. Agaram 9ec6cc3c49 Merge template-live-editor 2023-04-11 21:46:17 -07:00
assets clip of broadsheet in action 2023-01-25 17:45:11 -08:00
tools include the tool that's mentioned in representation.md 2023-02-03 08:50:24 -08:00
0001-fwmanifest alter on-disk representation (manifest files) 2023-01-09 12:27:17 -08:00
0001-on clarify something in the docs 2023-04-07 18:17:58 -07:00
0002-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0002-on.initialize set up basic callbacks 2023-01-18 21:50:20 -08:00
0003-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0003-on.draw set up basic callbacks 2023-01-18 21:50:20 -08:00
0004-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0004-on.initialize set up basic callbacks 2023-01-18 21:50:20 -08:00
0005-Editors set up basic callbacks 2023-01-18 21:50:20 -08:00
0005-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0006-Editors set up basic callbacks 2023-01-18 21:50:20 -08:00
0006-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0007-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0007-on.initialize set up basic callbacks 2023-01-18 21:50:20 -08:00
0008-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0008-on.initialize set up basic callbacks 2023-01-18 21:50:20 -08:00
0009-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0009-on.draw set up basic callbacks 2023-01-18 21:50:20 -08:00
0010-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0010-on.initialize set up basic callbacks 2023-01-18 21:50:20 -08:00
0011-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0011-on.draw set up basic callbacks 2023-01-18 21:50:20 -08:00
0012-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0012-on.draw set up basic callbacks 2023-01-18 21:50:20 -08:00
0013-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0013-on.initialize set up basic callbacks 2023-01-18 21:50:20 -08:00
0014-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0014-on.keychord_press set up basic callbacks 2023-01-18 21:50:20 -08:00
0015-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0015-on.key_release set up basic callbacks 2023-01-18 21:50:20 -08:00
0016-Cursor_editor set up basic callbacks 2023-01-18 21:50:20 -08:00
0016-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0017-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0017-on.mouse_press set up basic callbacks 2023-01-18 21:50:20 -08:00
0018-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0018-on.mouse_press set up basic callbacks 2023-01-18 21:50:20 -08:00
0019-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0019-on.mouse_release set up basic callbacks 2023-01-18 21:50:20 -08:00
0020-fwmanifest set up basic callbacks 2023-01-18 21:50:20 -08:00
0020-on.mouse_press set up basic callbacks 2023-01-18 21:50:20 -08:00
0021-fwmanifest multiple columns 2023-01-18 21:53:56 -08:00
0021-on.initialize multiple columns 2023-01-18 21:53:56 -08:00
0022-fwmanifest multiple columns 2023-01-18 21:53:56 -08:00
0022-on.initialize multiple columns 2023-01-18 21:53:56 -08:00
0023-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0023-on.initialize increase/decrease font size 2023-01-18 22:14:56 -08:00
0024-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0024-on.initialize increase/decrease font size 2023-01-18 22:14:56 -08:00
0025-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0025-on.initialize increase/decrease font size 2023-01-18 22:14:56 -08:00
0026-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0026-initialize_editors increase/decrease font size 2023-01-18 22:14:56 -08:00
0027-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0027-initialize_editors increase/decrease font size 2023-01-18 22:14:56 -08:00
0028-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0028-initialize_editors increase/decrease font size 2023-01-18 22:14:56 -08:00
0029-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0029-initialize_editors increase/decrease font size 2023-01-18 22:14:56 -08:00
0030-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0030-on.keychord_press increase/decrease font size 2023-01-18 22:14:56 -08:00
0031-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0031-on.keychord_press increase/decrease font size 2023-01-18 22:14:56 -08:00
0032-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0032-initialize_editors increase/decrease font size 2023-01-18 22:14:56 -08:00
0033-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0033-on.initialize increase/decrease font size 2023-01-18 22:14:56 -08:00
0034-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0034-on.keychord_press increase/decrease font size 2023-01-18 22:14:56 -08:00
0035-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0035-initialize_editors increase/decrease font size 2023-01-18 22:14:56 -08:00
0036-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0036-on.initialize increase/decrease font size 2023-01-18 22:14:56 -08:00
0037-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0037-on.keychord_press increase/decrease font size 2023-01-18 22:14:56 -08:00
0038-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0038-on.keychord_press increase/decrease font size 2023-01-18 22:14:56 -08:00
0039-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0039-on.keychord_press increase/decrease font size 2023-01-18 22:14:56 -08:00
0040-fwmanifest increase/decrease font size 2023-01-18 22:14:56 -08:00
0040-on.keychord_press increase/decrease font size 2023-01-18 22:14:56 -08:00
0041-fwmanifest bugfix 2023-01-18 22:29:31 -08:00
0041-on.keychord_press bugfix 2023-01-18 22:29:31 -08:00
0042-fwmanifest bugfix 2023-01-18 22:29:31 -08:00
0042-on.keychord_press bugfix 2023-01-18 22:29:31 -08:00
0043-fwmanifest bugfix 2023-01-18 22:29:31 -08:00
0043-initialize_editors bugfix 2023-01-18 22:29:31 -08:00
0044-fwmanifest bugfix 2023-01-18 22:29:31 -08:00
0044-on.keychord_press bugfix 2023-01-18 22:29:31 -08:00
0045-fwmanifest bugfix 2023-01-18 22:29:31 -08:00
0045-on.keychord_press bugfix 2023-01-18 22:29:31 -08:00
0046-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0046-on.mouse_press bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0047-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0047-on.mouse_press bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0048-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0048-on.mouse_release bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0049-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0049-on.mouse_press bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0050-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0050-on.draw bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0051-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0051-on.draw bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0052-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0052-on.draw bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0053-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0053-on.draw bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0054-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0054-on.draw bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0055-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0055-on.draw bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0056-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0056-on.draw bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0057-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0057-on.mouse_press bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0058-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0058-on.mouse_press bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0059-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0059-on.mouse_release bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0060-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0060-on.draw bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0061-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0061-on.mouse_press bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0062-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0062-initialize_editors bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0063-fwmanifest bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0063-on.mouse_press bugfix: selection in editors past the leftmost one 2023-01-18 22:55:17 -08:00
0064-fwmanifest bugfix: find 2023-01-19 21:29:44 -08:00
0064-on.text_input bugfix: find 2023-01-19 21:29:44 -08:00
0065-fwmanifest bugfix: find 2023-01-19 21:29:44 -08:00
0065-on.text_input bugfix: find 2023-01-19 21:29:44 -08:00
0066-fwmanifest bugfix: find 2023-01-19 21:29:44 -08:00
0066-on.text_input bugfix: find 2023-01-19 21:29:44 -08:00
0067-fwmanifest bugfix: find 2023-01-19 21:29:44 -08:00
0067-initialize_editors bugfix: find 2023-01-19 21:29:44 -08:00
0068-fwmanifest bugfix: find 2023-01-19 21:29:44 -08:00
0068-resync_editors bugfix: find 2023-01-19 21:29:44 -08:00
0069-fwmanifest bugfix: find 2023-01-19 21:29:44 -08:00
0069-on.text_input bugfix: find 2023-01-19 21:29:44 -08:00
0070-fwmanifest bugfix: find 2023-01-19 21:29:44 -08:00
0070-resync_editors bugfix: find 2023-01-19 21:29:44 -08:00
0071-fwmanifest bugfix: find 2023-01-19 21:29:44 -08:00
0071-on.keychord_press bugfix: find 2023-01-19 21:29:44 -08:00
0072-fwmanifest bugfix: find 2023-01-19 21:29:44 -08:00
0072-on.keychord_press bugfix: find 2023-01-19 21:29:44 -08:00
0073-fwmanifest bugfix: find 2023-01-19 21:29:44 -08:00
0073-on.keychord_press bugfix: find 2023-01-19 21:29:44 -08:00
0074-fwmanifest disable all keypresses by default 2023-01-19 21:34:00 -08:00
0074-on.keychord_press disable all keypresses by default 2023-01-19 21:34:00 -08:00
0075-fwmanifest persist settings across restart 2023-01-19 21:43:02 -08:00
0075-on.save_settings persist settings across restart 2023-01-19 21:43:02 -08:00
0076-Font_height persist settings across restart 2023-01-19 21:43:02 -08:00
0076-fwmanifest persist settings across restart 2023-01-19 21:43:02 -08:00
0077-fwmanifest persist settings across restart 2023-01-19 21:43:02 -08:00
0077-on.initialize persist settings across restart 2023-01-19 21:43:02 -08:00
0078-fwmanifest persist settings across restart 2023-01-19 21:43:02 -08:00
0078-on.initialize persist settings across restart 2023-01-19 21:43:02 -08:00
0079-fwmanifest persist settings across restart 2023-01-19 21:43:02 -08:00
0079-on.load_settings persist settings across restart 2023-01-19 21:43:02 -08:00
0080-fwmanifest persist settings across restart 2023-01-19 21:43:02 -08:00
0080-on.initialize persist settings across restart 2023-01-19 21:43:02 -08:00
0081-fwmanifest persist settings across restart 2023-01-19 21:43:02 -08:00
0081-initialize_editors persist settings across restart 2023-01-19 21:43:02 -08:00
0082-fwmanifest persist settings across restart 2023-01-19 21:43:02 -08:00
0082-on.initialize persist settings across restart 2023-01-19 21:43:02 -08:00
0083-fwmanifest forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0083-on.save_settings forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0084-Font_height forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0084-fwmanifest forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0085-Filename forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0085-fwmanifest forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0086-Font_height forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0086-fwmanifest forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0087-Screen_top forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0087-fwmanifest forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0088-fwmanifest forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0088-on.save_settings forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0089-fwmanifest forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0089-on.initialize forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0090-fwmanifest forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0090-on.initialize forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0091-fwmanifest forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0091-on.load_settings forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0092-fwmanifest forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0092-on.load_settings forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0093-fwmanifest forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0093-on.initialize forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0094-fwmanifest forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0094-on.initialize forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0095-fwmanifest forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0095-on.load_settings forget cursor when filename changes 2023-01-19 21:58:00 -08:00
0096-fwmanifest show filename on window title 2023-01-19 21:59:23 -08:00
0096-initialize_editors show filename on window title 2023-01-19 21:59:23 -08:00
0097-fwmanifest update columns on resize 2023-01-19 22:04:49 -08:00
0097-on.resize update columns on resize 2023-01-19 22:04:49 -08:00
0098-fwmanifest update columns on resize 2023-01-19 22:04:49 -08:00
0098-on.resize update columns on resize 2023-01-19 22:04:49 -08:00
0099-fwmanifest bugfix 2023-01-19 22:37:43 -08:00
0099-on.keychord_press bugfix 2023-01-19 22:37:43 -08:00
0100-fwmanifest skip pages after end of file 2023-01-19 22:50:57 -08:00
0100-on.draw skip pages after end of file 2023-01-19 22:50:57 -08:00
0101-fwmanifest skip pages after end of file 2023-01-19 22:50:57 -08:00
0101-on.draw skip pages after end of file 2023-01-19 22:50:57 -08:00
0102-fwmanifest skip pages after end of file 2023-01-19 22:50:57 -08:00
0102-on.draw skip pages after end of file 2023-01-19 22:50:57 -08:00
0103-fwmanifest skip pages after end of file 2023-01-19 22:50:57 -08:00
0103-on.draw skip pages after end of file 2023-01-19 22:50:57 -08:00
0104-fwmanifest skip pages after end of file 2023-01-19 22:50:57 -08:00
0104-on.draw skip pages after end of file 2023-01-19 22:50:57 -08:00
0105-fwmanifest skip pages after end of file 2023-01-19 22:50:57 -08:00
0105-on.draw skip pages after end of file 2023-01-19 22:50:57 -08:00
0106-fwmanifest no overlap between columns 2023-01-19 23:02:05 -08:00
0106-resync_editors no overlap between columns 2023-01-19 23:02:05 -08:00
0107-fwmanifest no overlap between columns 2023-01-19 23:02:05 -08:00
0107-resync_editors no overlap between columns 2023-01-19 23:02:05 -08:00
0108-fwmanifest drop file on window to switch to it 2023-01-20 14:25:21 -08:00
0108-on.file_drop drop file on window to switch to it 2023-01-20 14:25:21 -08:00
0109-fwmanifest stop requiring a file argument 2023-01-20 14:52:00 -08:00
0109-on.initialize stop requiring a file argument 2023-01-20 14:52:00 -08:00
0110-fwmanifest stop requiring a file argument 2023-01-20 14:52:00 -08:00
0110-initialize_editors Merge template-live-editor 2023-04-02 16:57:19 -07:00
LICENSE.txt add a license 2022-05-16 18:51:28 -07:00
Manual_tests.md manual tests for the protocol with the driver 2023-04-09 10:34:24 -07:00
MemoryReferenceInfo.lua.0 remove some memory leaks from rendered fragments 2022-06-10 11:16:41 -07:00
MemoryReferenceInfo.lua.unused clean up memory leak experiments 2022-06-10 13:46:59 -07:00
README.md Merge lines.love 2023-04-09 14:14:03 -07:00
app.lua Merge text0 2023-04-11 21:45:13 -07:00
button.lua bugfix: propagate mouse press if any button would 2022-08-24 13:40:36 -07:00
conf.lua document the version of LÖVE I've been using 2023-02-07 13:37:01 -08:00
default_map include a default_map for broadsheet.love 2023-01-25 18:14:56 -08:00
edit.lua Merge template-live-editor 2023-04-08 22:03:22 -07:00
file.lua bring back everything from commit a68647ae22 2022-11-06 08:53:46 -08:00
head stop requiring a file argument 2023-01-20 14:52:00 -08:00
json.lua forgot to add json.lua 2022-05-15 14:36:25 -07:00
keychord.lua make love event names consistent 2022-12-23 18:52:28 -08:00
live.lua rename 2023-04-09 22:31:12 -07:00
main.lua Merge lines.love 2023-04-09 14:14:03 -07:00
reference.md Merge text0 2023-04-11 21:45:13 -07:00
representation.md scenarios for the on-disk representation 2023-01-25 08:27:25 -08:00
search.lua Merge text0 2023-04-02 16:50:08 -07:00
select.lua Merge lines.love 2023-04-02 09:22:32 -07:00
test.lua show another detail on test failure 2023-01-20 21:48:49 -08:00
text.lua Merge text0 2023-04-08 23:00:47 -07:00
text_tests.lua Merge text0 2023-04-02 16:50:08 -07:00
undo.lua Merge lines.love 2023-04-02 09:22:32 -07:00

README.md

A wide-screen reading app

Use all available width to read (no editing).

demo showing how the app renders text at different widths

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

To run from the terminal, pass this directory to LÖVE, optionally with a file path to edit.

$ path/to/love path/to/broadsheet.love path/to/file

Alternatively, turn it into a .love file you can double-click on:

$ zip -r /tmp/broadsheet.love *.lua

To load a file, drop it on the broadsheet.love window.

When restarting, broadsheet.love will load the file from the previous session by default.

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

making changes without restarting the app

Keyboard shortcuts

  • pgUp/pgDn to scroll
  • ctrl+f to find patterns within a file
  • 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, ctrl+c to copy selection to clipboard

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.

  • 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 the template repo for freewheeling apps. Updates to it can be downloaded from:

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

Feedback

Most appreciated.