You may be familiar with OmniOutliner’s Copy Link function. When you select a row in an OmniOutliner document and use this OmniOutliner command, you get a link, like this: omnioutliner:///open?row=lAgiZr2AgMn. These links are great because they bring you to the specific row in the document. But they only work if the document from which the link was copied is currently open.
Hookmark extends OmniOutliner’s deep linking functionality, enabling you to create deep links that
do not require the file to be open,
are robust, meaning the links continue to work even if you move the files around!
All you need to do is
select a row in the OmniOutliner document,
invoke Hookmark’s Copy Link command.
The link you create will automatically be deep, like this one. If you inspect that link you’ll see that Hookmark has embedded rowid=lAgiZr2AgMn in the URL. (That’s the row ID provided by OmniOutliner that we mentioned above.)
Deep links are very convenient for long and deep outlines. The bigger purpose here is to help users focus their attention to the precise information they require, without needing to search (or use Finder to navigate).
software update
This update was released as software integration v. 273. Simply use the Check for App Updates and Update Scripts... to get that. Or enable automatic software updates in Hookmark.
Bike
We expect to soon release robust deep-linking to Bike documents too.
Hi @LucB this doesn’t work (deep linking) for me, am using 5.1.2 (5440) script version 275.
Example link (after selecting row or clicking in row and using copy link).
hook://file/M8s3ffEPH?p=aUNsb3VkfmNvbX5vbW5pZ3JvdXB+T21uaU91dGxpbmVyL0RvY3VtZW50cw==&n=PWC%20Notes%2Eooutline
It simply opens document when using the link and has no row identifier.
Latest MacOS Version 13.3.1 (a) (22E772610a)
Omnioutliner version 5.11.1 (v215.0.2)
When I am looking in preferences in hook, and in the script tab, if i select only “Show only installed apps”, neither OO4 or OO5 show up.
Is it possible that you previously overrode the OmniOutliner Pro “Get Address” script in Script Editor?
oops! I just noticed the integration seems to be for stand alone OmniOutliner Pro only at the moment. (Only OmniOutliner Pro has AppleScript).
Are you using OmniOutliner from App Store or stand alone?
If you are using Hookmark Pro, you can add the script in Script Editor by clicking the “+” button and selecting your OmniOutliner Pro app. Then you can copy the Get Address and Open Item scripts from the standalone version and paste them into your new OmniOutliner Pro entry.
Deep linking doesn’t work for me either – at least not reliably. (I’m using OmniOutliner 5.11.1 (v215.0.2) - the stand-alone, not the App Store version)
If I create a link to a row in OmniOutliner, then quit OmniOutliner and trigger that link, OmniOutliner opens a blank new outline. If I close that and click on the link again, it works correctly - the desired outline is opened and focus is on the specific row to which I linked. (If I don’t close the blank new outline, clicking on the link takes me back to that blank outline again and again.)
Hi LucB I have the app store pro version. I don’t think i have adjusted the script in the editor. I tried adding OO5 with the + button but that broke all linking even at file level. So I have deleted that and restarted computer and it works on a file level again.
So the app store pro version doesn’t deep link with Hook is that correct?
Thanks for reporting this. This is different from @Relax’s issue (which was simply that we didn’t upload the script for App Store version).
I’m able to reproduce an issue: when there is an Untitled (unsaved) OmniOutliner document, clicking on a deep link does not work reliably. We’ll look into that. For now the work around is to ensure there is no unsaved OmniOutliner document when a deep OmniOutliner link is used.
I have the 276, and my app store version is listed in the scripts tab, but deep linking still not working. It opens the file OK, but doesn’t go to row. Here is a sample link that has been generated by the copy link command after selecting row.
Could you please check Hookmark Preferences->Script->OmniOutliner5-MacAppStore, see if it is modified? If “Reset to Default” button is enabled, it has been modified. If yes, please click on Reset to Default button.
Or do you have multiple version of Hookmark on your machine?
Thanks bchend, all seems good now, I was a bit confused as testing in long outline, and it did not scroll to selected row. I see it does highlight that row, but still have to find it, but command-shift-focus (in omnioutliner) would probably work to find it. Many thanks for the new scripts.
How would one NOT deeplink? What if I want to create a link that just opens the file and does NOT jump to a specific Omnioutliner row? Sometimes I want the deeplink, sometimes I do not. In the instructions you indicate that a deeplink will be created any time a row is selected. But to the best of my knowledge a row is always selected in outliner. Also: similar to what Relax said/implied, it would be great if the doc auto-scrolled to the highlighted row. Thanks!
Welcome to the Hookmark Forum , @Joe12 . thanks for asking.
If you click outside a row, at bottom of doc, you get a document-wide link (no rowid parameter)
Agreed, we’ll look into that.
We plan to introduce Copy Selection and Link for compatible outliners. That would be like Copy Selection and Link – Hookmark for PDFs. Currently Hookmark’s Hookmark’s Copy Link in context of Bike yields row name. It might make more sense to separate the two.
apply this link: omnioutliner:///open?row=n7KeKGaN07_ = omnioutliner:///open?row=n7KeKGaN07_
And let us know if it works. That will tell us whether the equivalent OmniOutliner link is handled properly by OmniOutliner.
Also might be a good idea to compare the link created by Hookmark’s Copy Link command and OmniOutliner’s Copy Link command to make sure the rowID parameters are identical.
(If one deletes a row with the target ID there’ll be nothing to scroll to, of course.)
I may obviously be missing something, but I see no way to “click outside a row.” Everything in outliner is a row. Scrolling to the bottom works, but in a long doc, it means I have to take my hands off the keyboard, scroll all the way to the bottom, then make my Hook. It also means I have to remember where I was, then scroll back up and find that row. Overall, it slows me down quite a bit. Would love a simple option to make one of two types of “Hooks”: a deep-link hook, or a “regular” hook that just opens the doc and doesn’t attempt to highlight a row (or change which row is already highlighted). Worst case, if both link types can’t be supported, then I’d like a way to revert back to the previous no-deep-link approach. (I use Hook links between outliner docs constantly, so the addition of deeplinks seems to hold great promise; but if I can’t also quickly create “regular” links then I run the risk of a) slowing down my workflow and/or b) inadvertently creating a deeplink then getting lost when all I really wanted to do was open the document or bring it to the foreground). Great work on Hook, btw. It changed my life for the better when I discovered it!