I am using Tinderbox 6.4.0. I have a lot of notes which I would like to link using the keyboard. Is it not possible to link two or more notes at once in the map view? Is it not possible to do so with the keyboard? Or am I missing something.
Link to what? Another note? Each other?
Would be helpful to know a bit more about what youâre looking to do.
(Just generally: linking is a mouse-oriented activity.)
Yeah, another note. Letâs say I have four notes: A, B, C and 1. Just going by intuition Iâd want to either select A,B,C in the map view (with the mouse, if I have to), press a keyboard shortcut and tell TB (either by putting it into a search box or by selecting the note) the note â1â these notes should be linked to, or vice versa: first the source note then its new children.
Tinderbox 7 Quick Links are a handy way to add text links without using the mouse.
Being able to quickly create text links is great. But I guess you canât do either of the things I asked: 1) connect multiple notes at once to a new parent with mouse or not 2) do so with a keyboard.
Than let me ask you this: Can you link from (or to) a source note as a note link in the map view while using the keyboard?
Interesting. Sort of a âbulk-linkingâ activity.
The bit I donât get is the fragility of the process. In our mindâs eye everything is simple, but in reality less so. Iâm assuming the concept there is you select a bunch of notes and the first selected is then linked to all the others. But practically, how unambiguous is the âfirstâ selected item? (i.e. in the softwareâs rather than the mindâs eye view)
Well, the concept could be realized in a bunch of different ways. Letâs say the process is this:
- Select one or more notes in the map view
- Press a shortcut or a button in the UI
- Select one note in the map view which canât be one of those you selected in step 1
- TB links those notes selected in step 1 to itâs new source selected in step 3 (that means they are linked from the source, not the other way around, which is important, since TB seems to only know one-way links)
It might be desirable to switch step 1 and step 3. It might be prefered to enter the name of the source note instead of selecting it. Whatever is most unambiguous, I guess, would be a good heuristic to use here.
We could go into more and more detail, I guess. But as far as I can see, thi is a pretty solid description, no?
I btw. almost have a solution for the simpler task of linking one note with one source just with keyboard strokes:
- Select a note in the map view
- Press
cmd+alt+x
(open text window) - Press
cmd+shift+l
(thatâs a lower case L; link park space)
This opens the search box in map view and asks for a link from the selected source note. However, since the focus is on the text window and not on the link park spaceâs search box, we canât write into it. We can close the text window with cmd+w
, but no amount of pressing the tab
-key, nor using <
or >
letâs us focus on the search box. Clicking works, but who wants to click?
AFAICT the link park mechaism isnât enabled in tear off windows. One reason is that it isnât possible to drag links outside the current window (not possible since moving to Apple frameworks in v6.0.0). However, if the action above were to set the link part of the front window to a parked (basic/text) link, then the link park could be used to drag a link. I can still see lots of ways this could end up with an unexpected result when to the user does things different from that they imagined (all too often for this (beta tester) use.
Since you ask - me . Iâm not a touch typist, unlikely to become so, but I get by. I will generally click first. Peopleâs muscle-memories differ. The app needs to cater to both keyboard-centric and those not. All that said, I agree the general point about keyboard -based actions not working being an anoyance.
It is, in the sense that it opens the link park space search box in the main window. Screenshot:
As you can see it looks a bit wonky, maybe itâs even a bug that in this particular tear off window the above mentioned keyboard shortcut works, even though it shouldnât. Of course, Iâd rather have it work than have it removed, but if what you say is true, than I guess, this shouldnât happen. This might only be a thing in 6.4, though. I donât knowâŚ
I donât understand this. Do you mean that by selecting a certain note in the map view and pressing the shortcut, that this could be a desired behaviour, or are you suggesting that this should be the behaviour for the whole workaround (opening note window, pressing cmd+shift+l
; in theory: closing the note window and navigating via tab
or something to the link park space search box, entering $name of desired note, pressing return) I presented? In the first case this would be very nice indeed. In the second case, I admit with a heavy heart, that this would be too ambigious, I think and simply preventing the tear off window from opening up things in other windows, should be the way to go.
Of course, Iâd take what I can get and would never admit that, for clarityâs sake, option number two should be avoided.
Fair enough.
Using v7.0.2b255 (the v7.0.2 release) I canât replicate the scenario in your screen gabs following the steps described.
I thought you were proposing to park a link, then, make a selection in the view pane, drag from the link park onto any of the selected notes and all be linked.
Aha! Thatâd be an ambiguous way to go about it, indeed. No, my half-working workaround had nothing to do with that. And now that we know, that this bug has been squashed, it makes sense that you didnât know what I tried to say.
Good that it works that way in my version of the app still, since I now have hacked together a working solution:
- You need Keyboard Maestro for this.
- Download (and rename to
QuickLinkNote.kmmacros
) or create the following macro:
- As you can see, the macro is triggered by pressing
ctrl+alt+shift+l
. This assumes youâre in the map view.
Basically it takes care of pressing all those extra shortcuts and then even clicks for you.
P.S.: In bigger files it might be needed to put in pauses in between those working steps.
You can do bulk links using the linkTo action code in a stamp.
I made a stamp which was simply:
linkTo("incoming")
and it worked.
Thatâs nice! Now we only need to find a way to get/set the parameters of that function somehow. Is there a way to get the $name
of a selected note in the map view, so we can work with it? Than I could see a solution that uses a stamp for setting the source note and another for the actual linking.
Yes you can. Youâll need a note somewhere whose $Text you can use as variable storage. Letâs call that note ânamerâ
So stamp 1 is used when you have the destination note selected
$Text(namer)=$Name(this)
and stamp 2 is used while you have the origination note(s) selected
linkTo($Text(namer))
Iâm sure there are other things you can do along these lines, and @mwra can propose a more canonically elegant syntax. But, this works for me over here. Thanks @pat for the germ of the idea.
linkTo("incoming");
should create a note to the first note (by $OutlineOrder) with the $Name âincomingâ.
If you want to link to several notes (assuming unambiguous $Name) you could do linkTo("incoming;out;other")
to llink to âincomingâ, âoutâ and âotherâ. More re-usable is to put put the list in a Set or List type attribute, e.g. for example the built-in sandbox List attribute MyList
. Now the stamp is:
linkTo($MyList);
Now each stamped note looks in its own $MyList and uses the value(s) there to make link(s) as pertinent. You can use linkFrom()
, unlinkTo()
and unlinkFrom()
in the same way. See more on linkTo()
here.
I thought Iâd tie together the last two posts which got made at the same time and thus may appear in opposition. I prefer @PaulWaltersâs solution but as he suggested Iâll tweak the syntax a bit. Weâll use his âNamerâ note concept but weâll use $Path data rather than $Name to avoid wrong links when your document grows and note titles may not remain unique in the doc. Weâll also cover setting/resetting Namer values for both a single target link or multiple target links, and applying single/multiple links for all currently selected (stamped) items. Here, weâll assume âNamerâ is at root so its $Path is "/Namer"
. In the multiple target example, we use a Set-type attribute rather than a List-type, as in my earlier post as a Set automatically de-dupes avoiding accidental multiple linking (of same source/destination).
Single link target
To set the name of the target link:
Stamp name: âSet Namer singleâ.
Code: $MyString(find($Path=="/Namer")) = $Path(this);
Select all source notes and stamp to link to the note stored in Namer:
Stamp name: "Link-all single"
Code: linkTo($MyString(find($Path=="/Namer")));
Multiple link target
Ensure the Namer list is empty before adding new targets:
Stamp name: âReset Namer multipleâ.
Code: $MySet(find($Path=="/Namer")) =;
Add a single new item to the Namer target list:
Stamp name: âAdd to Namer multipleâ.
Code: $MySet(find($Path=="/Namer")) = $MySet(find($Path=="/Namer")) + $Path(this);
Select all source notes and stamp to link to each note stored in Namerâs list:
Stamp name: "Link-all multiple"
Code: linkTo($MySet(find($Path=="/Namer")));
Customisation
If you prefer to put the Namer note in a root container âCodesâ, then amend all paths in the examples above to "/Codes/Namer"
- or to whatever path you choose in your project.
To reverse the link direction, or remove links, substitute linkTo()
with linkFrom()
, unlinkTo()
or unlinkFrom()
. In all cases you can provide an optional second argument to set a link type (or limit link removal to only that link type). For example, to link using link type âexampleâ: linkTo($MyString(find($Name=="Namer")),"example"));
. If you want, you could even store the latter parameter as another String-type attribute in Namer: linkTo($MyString(find($Name=="Namer")),$MyStringB(find($Name=="Namer")));
Thanks Mark. I knew you could betterfy it
Nice work! The only thing left to do now was to set up keyboard shortcuts:
These can be set up by opening up the system preferences of os x, open the keyboard preference pane, click on the shortcuts tab, choose the app shortcuts option in the menu on the left side, pressing the button with the +
on it and in the new window selecting the tinderbox app, then entering the name of the stamp exactly as it appears in the stamps menu and finally choosing a shortcut that isnât otherwise used by neither tinderbox itself nor can it be any global shortcut and youâre good to go.
Thanks so much for your help everyone!