Conditionally Remap ⌘T in Things

date_time
ui_control

#1

As you certainly have noticed, after an endless time of waiting Things 3 has been released a couple of weeks ago.

And, as a sidenote, Things 3 is probably one of the greatest apps ever written (macOS and iOS), and certainly the best general-purpose task management app. [1]

One thing was bugging me:

With T you can assign the start date ‘today’ to any to-do item. But the ⌘T shortcut is completely functionless if the to-do is already set to ‘today’.

Well, it happens that one of my most frequent actions on ‘today’ items is: setting them to ‘tomorrow’ :wink:

I can do this with the ] shortcut, which is equivalent to start date += 1 day. But, why not use the T-shortcut slot to do it? The mnemonics are already perfect…

So, here a tiny macro that does only one thing: If you hit T on an item that is in the Today list it will set the start date to ‘tomorrow’. (If you hit ⌘T on an item that is not in the Today list, then the shortcut will behave as usual and set it to ‘today’.)

Conditionally Remap Cmd-T (ver 1.1).kmmacros (3.5 KB)


Update 2017-06-25, ver 1.1

I changed the date test script slightly:

Now the ⌘T-defer-to-tomorrow will also work if the activation date of the selected to-do is before today. That is, it also works with to-dos that are camping in your Today box not only since this morning. I know, in real live such a thing would never happen :rolling_eyes: but now the ⌘T-defer consistently works on all ‘today’ items where ⌃] would work too.

I have updated the original download link to the new version.


[1] Concerning the second to last part of that phrase some folks may say I’m exaggerating a little bit. But I don’t think this is true.


Shortcuts only when launchbar input is active (not when application is active)
#2

Very nice solution and thank you for sharing!


#3

I have updated the macro. Changes see original post.


#4

Excellent!


#5

Thanks for the reference/recommendation, Tom.

I took a close look at Things 3, and it is indeed impressive.

Since Closure of all IQTell services is imminent, I am definitely in the market for a replacement project/task mgt system.

However, after spending several hours this evening, I am now favoring OmniFocus. It seems very powerful and flexible to me, as well as offering great support for AppleScript and Evernote, and many other apps. See Tools & Services - Inside OmniFocus.

The AppleScript support is very extensive. There have been several 3rd parties that built/published scripts and script libraries for OmniFocus, which makes it very easy to automate.

So, for me, the ease of automation, AppleScript, and Evernote support provided by OmniFocus put it at the top of my list.

Sorry for a bit off-topic post here.


#6

No problem, JM, I was already awaiting your comment, and, I was 99% sure that you are an OmniFocus guy :wink:

The web is full with comparisons OmniFocus vs Things, it almost reminds me of Vim vs Emacs. [1]
But, since these comparisons are largely based on Things 2, let me add some points:

Outliner or to-do manager?

Things is a to-do manager with focus on every-day usability. OmniFocus – historically as well as in its current implementation – is an outliner with tacked-on to-do-manager functionality.

This means two things:

  • With OmniFocus you get an excellent outliner and a not so great to-do manager in one, convenient package.

  • With Things you get an excellent to-do manager and (almost) no outliner. [2]

Well, almost everybody needs an outliner and a to-do manager at some point in his life. So the OmniFocus package is certainly attractive.

However I prefer the UNIX-like approach: Make each program do one thing well.

When I need deeply nested tasks (outlines) I have TaskPaper for this. So, it’s a no-brainer:

My everyday stuff, including my work projects, goes into Things. If some of the work projects need a nested outline I create a TaskPaper document in the root of the project folder and link it to the project in Things. [3]

That’s Best of both worlds: I have a handy overview in Things and the very details are tacked away in the TaskPaper document. The TaskPaper document is a plain-text file which means it is by far more flexible than any OmniFocus file ever could be. (For example I can add it to my BBEdit project and also edit it with BBEdit.)

The tags issue

OmniFocus has a severe problem, which was one of the main points that forced me to abandon it: No tags.

In OmniFocus you can assign a so-called context to a task. But you can assign exactly one context, not more. So, that is, these contexts definitely are not tags. The whole point of tags is that each item can have multiple tags. Otherwise you could as well use a stupid folder hierarchy. Ah, OK, OmniFocus allows folders; well great then :wink:

No, seriously, this “one context for one task” thing is a quasi-religious relict from dogmatic GTD times. (GTD doesn’t allow more than one context.) And I promise you, more sooner than later, they will introduce tags as it should have been since ages.

Tags in Things

Just a word on tags in Things, because this is something that could easily escape you if you tested Things only for a couple of hours:

Tags in Things are hierarchical. Not many apps have truly hierarchical tags, so there is a chance that you might not immediately grab what this means:

You know Apple’s Finder tags. They are not hierarchical; they cannot replace folder structures.

Things doesn’t rely on a folder structure (besides projects), but its tags are hierarchical. For example you can create a tag structure like this:

Home: 
           Garden: 
                    Flowers
                    Trees
           Garage:
                    Car
                    Bike

Now if you filter the view with “Home” you’ll see everything that is tagged with “Home” or a tag under “Home” (e.g. an item that is tagged only with “Car”), if you filter for “Garden” you’ll see also the things tagged only with “Flowers” or “Trees” (and the things tagged only with “Garden”).

With non-hierarchical tags you would have to explicitly attach the tags “Home” and “Garden” and “Trees” to an item to make it appear when the “Home” or the “Garden” or the “Trees” filter is active.

And, of course, once filtered for “Garden” you can further narrow down the filter.

Hierarchical tags mean inherited tags. And this is so absolutely great, especially for a crowded to-do management program, that I never would want to miss it. It’s a mystery to me how the OmniFocus user can maintain a structured overview with just one “context” per item…


OK, I hadn’t planned to write so much, so I just stop here.

One last thing:

Have you discovered the “Quick Find” of Things 3? You can just start typing away (without any modifier or so):
type the starting letters of a tag, type a word of any note of any to-do, or whatever, and you’ll be presented with a live search result, which – of course – distinguishes between found tags and found text. (Not to be confounded with Filtering!)



[1] BTW, I was also an OmniFocus user many years ago, and for some time I even used both programs…

[2] With Things 3 they added a check-list functionality and the “headings”, which both are very useful on their own, but it’s a different thing than OmniFocus’ outlining capabilities.

[3] This works great because when you drag a file into a Notes field of a Things to-do Things creates a bookmark (aka Finder alias). It does not just create a stupid, easily breakable symlink. A bookmark/alias is much more robust, it continues to work even when you move the target file. I was very pleasantly surprised when I discovered this.


#7

Have you seen this:
How to Tag tasks in OmniFocus

Should I move our Things vs OmniFocus discussion to a new topic?


#8

I would leave it here for the moment, unless there will be more follow-ups


#9

Sorry, Tom, but I think that is a gross mischaracterization of OmniFocus.

An “outliner” is a text tool to allow you to create an outline, albeit a very sophisticated outline (with folding etc), but still just text.
OmniFocus is nothing like that. It is a full-blown project/task manager.

The latest version of OmniFocus makes it VERY easy to capture simple “to-do” tasks from a variety of sources. See The OmniFocus Video Field Guide – Capture.

Again, I completely disagree. It is NOT a “severe problem”.
Why? Because …

  1. OF (OmniFocus) is a project/task manager, NOT a knowledge base system. So I don’t need a multitude of tags to find the project/task of interest.
  • OF has excellent search, including macOS Spotlight search. So I should be able to find whatever I need.
  • And even if I do need tags, looks like there is a solution here: How to Tag tasks in OmniFocus.
  • I use Evernote extensively, and any OF projects or tasks that I need a general reference to, I’ll just add a note in EN with the appropriate EN Tags.

Finally, I see the appeal in the aesthetics of Things 3 – it is beautiful.
However, for me, functionality far outweighs form.
If all I needed was a light-weight to-do manager, then Things 3 would probably be higher on my list. :wink:

IMO, OmniFocus 2.x seems like a more professional project management tool than does Things 3.

###Big Caveat
At this point, I have NOT used either Things 3 nor OmniFocus 2.x.
My assessment could definitely change after I do.
I plan on downloading the free trial of OmniFocus Pro tomorrow.
Let the games begin! LOL

Tom, thanks for engaging in this discussion, and challenging my assertions.


#10

You’re welcome :slight_smile:


#11

Hey Tom, hey everyone!

This Macro is perfect! I was trying to build something like this myself—what I came up with was basically KM simulating CMD-S, then pasting "tomorrow" and then simulating "return". Your solution is obviously much better!

I have a huge problem however: I created a Macro Group for Things, as the Macro is obviously only intended for use within the application:

43

When I try to use it though, the Macro doesn't fire. It seems like KM is "unaware" that Things is actually running and the frontmost window. When I move the Macro to the Global Macro Group, it works.

As a test, I created a Macro with an If/Else Action based on whether Things is at the front, and in that case, the If/Else action does recognize whether it is or isn't in front:

28

So I'm at a loss for why it doesn't seem to "see" that Things is at the front based on the rule for the Macro Group.

Any ideas what might be going on here? I'm using Things 3.7.1 and Keyboard Maestro 8.2.4 on High Sierra (macOS 10.13.6).


#12

Hmm. I also have my macro in a Things group, and my group setting looks exactly like yours (according to your screenshot). And here it works.

I'm using Things 3.7.1 and Keyboard Maestro 8.2.4 on High Sierra (macOS 10.13.6).

I have exactly the same setup. So, ATM, I don’t know why it doesn’t work on your machine.

Try reselecting the Things app in the group setting. (Under “Available in these applications”, where you see the green Plus and the red Minus, click the Minus, then reselect the Things app.)
And restart KM Engine, if not already done.


#13

Applications are generally remembered first and foremost by their path, so it is possible you have (or had) Things at two different paths and the macro group is pointed at the other (non-running) version.

Usually you can see this if the correct version of Things is running and you select the application popup menu in the group and it will show two Things twice.


#14

Once I had a this problem, not with Things but another app I don’t remember. The path was definitly the same (/Applications/<AlwaysTheSameAppName>). But the app has seen updates at the time where the problem occurred, IIRC.

Maybe a plist issue? I don’t know if KM reads the plist. (You said “first and foremost by their path”.)


#15

It is Path first, and Bundle ID second (if the application cannot be found at the previous path then Keyboard Maestro will look up the application based on the Bundle ID)


#16

Thanks for your suggestions everyone. I'm not exactly sure what fixed it, but I recreated the group (even though I thought I had tried that already) and it now works as expected.


#17

Last week I’ve seen a very similar problem:

I exported a Safari group with a couple of macros for a friend, but it just didn’t work on his computer. (Macros didn’t trigger, though all conditions were positive.) Engine restart, Mac restart didn’t help.

He cleared the application in the Group conditions and then reselected Safari, but it didn’t help either. Finally, he recreated the group on his computer and it works since then.


#18

Thanks for this macro! Excellent.