17 May 2016 Finally put together page_html

Note it uses a trick to avoid colliding the html-element-ids but 10/62 of the time it started with a number. Hence i didn’t notice, i have fixed this in 0.0.3

Finally put together page_html, so that linux/unix users don’t have to gather the whole bunch git repos of and configure lua to load it properly. I also fixed some annoyances.

It has userscripts talking to the server. One main one is commands.user.js, which is a commands panel that can be brought up with Control-“;”. The below also represents the features it brings:

  • Bookmarks, using bm in the command interface userscript. Has a searchable listing in: http://localhost:9090/bookmarks

    Entries can be deleted/altered there aswel. No entering new ones there yet.

  • Browsing history. Has a searching history: http://localhost:9090/history.

  • The userscripts that implement the history/commands can be obtained in http://localhost:9090/userscripts.

    They've been tested with firefox on [Greasemonkey](http://greasespot.net/).

  • Mirroring using document.innerHTML, crude, but then javascript doesn’t seem to have good options here. Runs all the time the corresponding userscript is enabled.

  • mirror mirrors manually in another way;

    `wget --convert-links -P "%s" -e robots=off --user-agent=one_page_plz -p "%s"`

    Not only more complete, but also not overwritten every time you go there.

  • vid command runs mpv(if that exists) on the hovered/current uri.

    It doubles as command to mirror images and pdfs. Saves having to organize those files when you download them. Viewing them with pdf.js, you can also bookmark them.

  • syms allows for easily getting a html symbol in your clipboard.

  • qm and gqm do quickmarks, not nearly good enough yet, the list doesn’t traverse easily enough, and needs to be easy way to “delete-and-go” for quickmark functionality.

  • values is an interface for changing what’s in GM_getValue etc. Add extra ;tor=true;, and mirroring should use TOR, can see os.execute in stdout. (some of echo/mkdir are filtered out)

It has keyboard(arrow) navigation everywhere. Control-arrows moves around.

Some screenshots

Note that it shows SQL, it can also run it. (Note: that may be a security concern, defaultly turned it off in lua)

But you can just throw in search terms in the input above. Something like tags:something should also work.

Getting it

The file is at ojasper.nl/data/data/page_html_set.lua.0.0.3.tar.gz, contains instructions. Basically run one of the shellscripts from its own directory.

Windows isn’t particularly supported, suspect it is a matter of the correct lua-socket .DLL being loadable, and then running lua with packages available, but i am not sure.(careful with which .DLLs you trust)

for those with Arch Linux, there is an PKGBUILD. With that, running page_html.lua defaultly it runs on port 9090 that can be specified, but then you have to update the userscripts manually read the right port aswel.

Once running, http://localhost:9090/userscripts contains the userscripts, Greasemonkey can load them by just visiting the files. Haven’t tested other userscript implementations.

The PKGBUILD does not follow etiquette properly. It just writes down /usr/bin/page_html.lua with a package.path loading the lua from /usr/local/share/page_html.lua/ which just contains the same as the tar.gz. In the future PKGBUILDs should be done better. (afaics, its not particularly bothersome to anyone?)


There is some room for it;

  • ~/.page_html/assets/$PAGE_NAME/assets/ can contain extra assets for said page.
    • userscripts/cmds_list.js is “the list”, of commands for the panel. Very raw way of adding things, though.
  • ~/.page_html/lua/ is looked in first; you can replace lua files, particularly:

    • page_html.util.exec_allowed patterns controlling limitations on os.execute.
    • page_html.apps.util.cmds contains the commands avaiable from util.

      However, no way to readily add any to the command-interface yet (though you could modify)

    • page_html.apps.util.mirror_image_detect recognizes files for downloading-as-local mirror.
    • run where lua enters.

Nice modifications can be sent as pull-requests.

Not quite there yet

There are many things that should be improved.. Like:

  • No private browsing detection. Recently made easy, hopefully.

  • Command-panel:
    • Doesn’t keep out external CSS.
    • Placing not perfect, and not movable or any such.
    • Should be easier to add your own commands.
  • Mirrorer only keeps automatic/manual mirroring separate. A more wholesome approach would be better. Also viewing it, would be nice to just essentially browse the directories.

  • Server itself should provide more docs.

Those things probably most directly affect experience but then the below are important too.

  • Alt_require to narrow down what lua packages are able to do.

  • Use page_html.util.exec less.(at least it all goes through there now)

  • The Formulator thing generating lua seems to work fine, I have a much better way to do all the database stuff.

Hardly exhaustive, of course!

Scratching the surface

Finally, there are more tools a browser can have, and these could clearly be far more customizable. It is a ghost of the functionality i want to have. I want the bookmarks to be sharable to different levels from between-friends to completely public. And preferably not with a single way of transferring the data.

I have been thinking about a overarching approach to fit that into. Applying it seemed like waiting too long to release it, but fixing the things ignores the new approach, so just got rid of annoyances and did the low-hanging fruits.

The new approach is an evolution of the idea in the previous post. I’ll post about it later, that’ll discuss from square one.

Other Blog Posts