Using a custom URL handler on Windows for any scripting purpose
Similar to the macOS post on this, Windows has the option to setup a custom protocol handler. Part of this requires writing a script to target, but that is usually left for the person implementing this to worry about (custom paths and search options, etc.).
As for putting such a script into use, the main trick is to add the following entries (or similar) to the Registry:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\zettel] @="URL:Zettel Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\zettel\DefaultIcon] @="C:\\Program Files\\ZettelProtocol\\handler.exe,1" [HKEY_CLASSES_ROOT\zettel\shell] [HKEY_CLASSES_ROOT\zettel\shell\open] [HKEY_CLASSES_ROOT\zettel\shell\open\command] @="\"C:\\Program Files\\ZettelProtocol\\handler.exe\" %1"
Save the above as "zettel.reg", and update paths as needed. Then just import the file (double clicking it should do the job), and you have a new protocol available.
That's literally it, nothing else is needed. The "%1" above is the full URI that was activated (all of zettel://202005271955) so the script/program can parse this for a valid link, do whatever searching/database lookups it wants, and then can open the default editor for any file it finds.
Howdy, Stranger!
Categories
- 3K All Categories
- 152 Research & Reading
- 692 The Zettelkasten Method
- 7 Knowledge Work
- 99 Writing
- 464 Software & Gadgets
- 154 Workflows
- 729 The Archive
- 15 Plug-In Showcase
- 88 Resolved Issues
- 225 Projects Logs and Journals
- 83 Project: Zettelkasten.de
- 53 Critique my Zettel
- 171 Random
- 373 Introduce Yourselves!
Comments
That's rad! Didn't know it would be this simple!
What if you neither have a proper compiled .exe, or the knowledge to produce one yourself? Could this work with scripts? Maybe invoking a Python script? What would the call look like in that case? (On *nix, you'd just have something like
python /path/to/script %1, but I'm not sure about Windows's open commands.Also, do you have to fill in e.g.
zettel://into this line?Author at Zettelkasten.de • https://christiantietze.de/
Using a script should work just the same, you just may need full paths if python is not setup in the Windows PATH (works oddly similar to linux in that regard).
C:/Python27/python.exe /path/to/script %1or similar, that would do it. Depending on the script, it could work for both Windows and Mac, even.And the settings I have above are what I have on my computer, I just exported them as is. I can use the Run box and enter "zettel://20200528113931" and it fires my custom script (I use AutoItScript to do the work there, and it has a compile to exe feature).