"Morning rituals" and Keyboard Maestro


I’d like to see if I can use Keyboard Maestro to enforce a “morning ritual”. Say for instance that I want to:

  1. Take a look at Fantastical,
  2. Take a look at my tasks in Omnifocus (maybe in a given perspective),
  3. Maybe give me a 45 min slot to do some work on my one needle-moving task,
  4. Take a look at Slack during at most 2 minutes,
  5. Read my e-mail during at most 30 minutes.
    I would like to do this in this order. Some activities have maximal duration, but may be completed in less time than the max. Some activities don’t have maximum duration. When some activity is over I need to skip to the other.

I have two main ideas to do this in KM, but none solves 100% the question:

  1. I can use a palette to define a menu of apps to activate (Fantastical, Omnifocus, Slack, Mail). It is simple. The palette gives a nice visual clue on the “ritual”. I can use ‘Pause’ to kill the current App when some maximum duration has been reached. I can invoke the palette to skip to the next app when I want. However, I could not find how to enforce an order in the palette that would not be alphabetical (of course, I can rename the actions such as ‘A - Fantastical’, ‘B - Omnifocus’, … But this is not elegant).
  2. I can use a specific macro to program the sequence of App activations. I can still use ‘Pause’ to enforce the max duration of each App when I want to. What I miss with this solution, though, would be some way to skip to the next App without always waiting for some predefined amount of time.

In one case, I enforce the sequence, but I lose the ‘skipping’ option. In the other, I am flexible with time, but I lose the order of the sequence…

Any idea?

1 Like


Not sure I quite follow, but maybe keeping a track of the app last opened in a persistent variable, and comparing against a sequential list would would help with ordering and skipping?

Many thanks for the ref on controlling to the order of macros in a palette. That is just great.
Using a persistent variable to identify the next-to-be-run app should also pretty much solve the problem associated to the second idea. I can program a macro based on a hot key that retrieves the current activated app (say Fantastical), consult the sequential list to find out the next one to be run, and activate it.
I’ll try do come up with a working macro!
Thank you!