πŸ“š node [[wikilinks everywhere]]

[[2021-04-14]]

The plan is to get in at least two pomodoros in this to advance it somehow in the direction of a prototype. Will try to build on [[agora ext]].

Developed by [[@evan]] Boehs, [[unlicense]]d, powered by [[flancia]]

Wikilinks everywhere is a chrome extension that brings [[wikilinks]], and through it the [[internet]], to life. It can be installed on a large number of browsers and services, and will intelligently determine where [[broken]] wikilinks should go to based on your settings.

Sources

You can order or disable any of these sources at will. When a wikilink (regardless of if it is properly linked already) is detected the extension will go through these sources in that order you provided. The default order is explained below.

Options

Global

  • Error codes:
    • Comma separated HTTP status codes
    • Supports nxx
    • Default: 4xx, 5xx

Source specific

  • Ignore errors
    • Checkbox
    • Should error cases be ignored?
    • Default: Unchecked

Actual sources

Note: The last source is the catchall, no matter what it will ignore errors and faithfully complete the link. This means do nothing has importance. Don't remove or reorder

Existing

If a existing link is already present do nothing

Note: the only difference between the existing source and others is it changes nothing in the browser. By default, if the existing link resolves to global.error, it will move on to the sources below and consider replacing it with them

Note: this might have made no sense. Don't mess with it, probably, it exists for a reason

Prefix

Things like WP:link for wikipedia, or AG:link for [[anagora]], the schema looks like PREFIX:page.

Options

  • Prefixes
    • A table of prefixes and the corresponding url
      • use {page} to have the provided back link, so with the WP prefix the url would be wikipedia.org/wiki/{page}/
      • DON'T INCLUDE THE : IN THE PREFIX

[[IWLEP]]

The user's [[IWLEP]] rules. See the IWLEP page for that config, but it is it looks a lot like your config, instead made by the author of the backlink. Don't worry, it can't be faked *unless the user gets hacked but lots worse things could happen.

Unprefixed

Iterates through all the listed urls in your order until one does not error, or all error.

{page} is the value between the brackets

Options

Nothing

What does it say on the tin?

Concerns

Bandwidth

We use an extraordinarily large amount of bandwidth, and there is not much that we can do. That being said, the whole web is obese so I highly doubt we end up using more than 0.2 of the bandwidth of a standard blog (~1Kb a page so ~15kb a wikilink so ~150kb a page). Below is what we tried

βœ”οΈ Request methods

There is no STATUS request so we had to make due with HEAD. This will only fetch the part of the website that has the page name and useful information. It does not get the page contents, saving bucket loads of bandwidth.

πŸ‘·β€β™€οΈ Local catch

Once implemented we will store the last 1000 pages we checked, so if a wikilink is frequencintly used it will only be loaded once

❌ Catch server

This means storing the status code of every website we checked. I don't really like the idea of storing personal information like that.

Ratelimits

By

Browsers

  • Powercord πŸ”Œ (Discord) Plugin
  • Chrome
  • FireFox πŸ”₯🦊
pull color="#b51f08"> <title>500 Internal Error wtf.
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
    <div class="vertical-center-row">
        <h1>500 Internal Error <small>wtf.</small></h1>
    </div>
</div>
β₯… node [[wikilinks_everywhere]] pulled by Agora

[[Agora]] has this idea of having [[pull" title="[[https://anagora.org/wikilinks-everywhere | wikilinks everywhere]]" class="wikilink">wikilinks everywhere]]. And they actually write them everywhere.

The basic idea is as follow. Surround words with square brackets (as you would in marked up text) in places where you are not supposed to, like social networks. Look at [[all the toots by @flancian]] and how he surrounds every second word with them. You gotta follow the links somehow. You can copy and paste them to Agora, or you can get [[pull" title="[[https://anagora.org/agora-ext | an extension]]" class="wikilink">an extension]] for your browser.

= My implementation I don't use Firefox, so gotta make something up. I did this in ten minutes. The workflow is as follows:

*. Select text anywhere *. Press the hotkey (one key hotkey would be perfect) or select the action from the context menu *. An An [[Agora]] hypha with such name will be opened in a browser

If you have a Mac, you can recreate it by following these steps:

*. Open Automator. On Monterey, it is replaces with something else. Dunno, open the replacement. *. Create a new document. Type = //Service// | //БыстроС дСйствиС//. *. Make the service accept text from any program somewhere in the dropdowns above. It's the default option afaik. *. Add shell element. Find it in the menu to left. In Russian, it's called //Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ shell-скрипт//, in English it might be called //Execute shell script//. *. Paste this code: {

HYPHA_NAME="$(cat /dev/stdin | sed -e's/.*\[\[//' -e's/\]\].*//' -e's/ /-/g'"
URL="https://anagora.org/$HYPHA_NAME" <button class="pull-url" value="https://anagora.org/$HYPHA_NAME"">pull</button>
open "$URL"

} *. Save.

Now, this service shall be available in both context menu and menu bar whenever you //select// text. You might also want to bind it to a hotkey. It can be done in the hotkey settings. You service shall appear there somewhere. I've bound the service to ⌘§.

Test it on the text below. [[https://anagora.org/melanocarpa]] should be opened:

[[melanocarpa]]

= Possible X11 implementation Just links and ideas for a possible implementor:

=> https://stackoverflow.com/questions/3983354/getting-selected-text-in-current-window | Get selected text like that => https://wiki.archlinux.org/title/Xbindkeys | Bind hotkeys with xbindkeys or whatever

And replace open with xdg-open.

πŸ“– stoas
β₯± context
β₯… related node [[wikilinks_everywhere]]