I’m a big fan of Agenda, and use it to store a daily journal for myself. Recently, I was inspired by Iconfactory’s Tot application’s widget design, and thought it would be cool to do something similar for my Agenda entries.
Thanks to WidgetPack, the Shortcuts app with actions that build widgets, this is possible!
My Agenda Widget Shortcut builds an Agenda widget that works alongside daily journal entries. Using an Agenda note with the title EEEE MMMM d, yyyy, the Shortcut generates a widget where top title is the current day of the week, and the “body” of the widget text is comprised of today’s date and the third line of text from my Agenda journal entry from today (the first line is the title, the second line is blank, the third is where content starts).
The widget, when tapped, will open the Agenda note, having used its identifier and the Agenda URL scheme to craft the URL linked to in the widget.
That reminds me: I should highlight that getting note content is using Agenda's newer Shortcuts actions and not a URL scheme! The bonus? This can be automated and run in the background without calling Agenda to the forefront. 🎉 The possible catch is that means this does require iOS 16.
It's probably also worth noting that, because I used relative sizing for the shape elements here, this looks nice as a small or medium widget, but is not intended for the large size. There wouldn't be content enough to fill it, anyway. 😂
I recently had the enormous pleasure of being able to return to Learn OmniFocus, joining Tim Stringer to share some moves about using iOS Shortcuts with OmniFocus . We also went through ways to use this to customize Home Screens with widgets, with particular thanks to great apps that augment Shortcuts capabilities:
Tim has made a sample version of the video freely available to all, so I've added it here below, and is sharing the Shortcuts I built as part of his page highlighting this video/event.
Now in OmniFocus: Opens the Morning, Afternoon, Evening, or Weekend perspective in OmniFocus based on the day of the week and the time of day.
Now in OmniFocus Widget: An adaptation of the Now in OmniFocus Shortcut that displays tasks in a Widget, with some help from WidgetPack.
OmniFocus Charty Ring: This Shortcut makes use of Charty to display a graphical representation of your daily progress.
Add to OF List: Allows you to add a task, complete with notes, to a predefined list (project) in OmniFocus. Using this Shortcut eliminates the overhead of manually adding actions to projects and promotes consistency. This Shortcut leverages Toolbox Pro to create an attractive and functional menu.
Learn OmniFocus subscribers get a full-length video with more detail and context. If you're an OmniFocus user and haven't yet checked out the Learn OmniFocus resources, I highly recommend it.
One thought really stuck with me: that this screen was designed around OmniFocus as a data source. This makes sense, since I use OmniFocus, and it's my screen, but what about others?
For those who use Reminders or Reminders-based apps like GoodTask, I have made an updated WidgetPack widget and an updated Charty rings widget.
Now, of course I also had to fiddle with it, because I’m me, but here are some thoughts:
Yes, my first cut had more functionality, but I was finding too many aspects distracting, so I have distilled the content more: actions and events only
Having events on my front page (courtesy of a more compressed heading) is really useful
Speaking of the header, it is now linked to the Shortcut to refresh widget content
Toolbox Pro actions make each Reminder shown link back to themselves in the Reminders app
The heading above actions (GET TO IT) links to the Shortcut to refresh the Charty ring widget (though the latest beta allows the widget to run a shortcut!)
That context out of the way, the things you would need to have these widgets work:
Update: The links for the Get To It and Dashboard widgets have been updated with fixes (addressed an error if no matching OF tasks in Get To It and changed iconography alignment for calendar events in Dashboard). Enjoy!
Home Screen fever calmed down a bit as iOS 14 wove its way in to my every day. I had settled in to my routines and was living my best widget life.
After playing with the colours of Charty and placing it in the middle of my Home Screen, I thought, "Huh. That screen looks like part of an app." So I opened up WidgetPack and worked more on creating a header widget to lead my screen with, and a revamped widget with OmniFocus actions.
I figured if I can visualize and list my actions, what else could I do? I needed ways to not just see things, but an interface to do things. That led me to adding buttons to the header widget, and then more buttons to run the Shortcuts to refresh the data of these widgets.
Saddened that I couldn't have a calendar widget that suited my needs and aesthetic, I started imagining a second screen that would show upcoming events, as well as counts of and access to more things.
I'm really happy with the result, both in form and in function.
To break it all down, the rest of this post will go widget by widget, sharing just how each is built and what all each does, and giving you the tools to do this, too. Hopefully, this can help you either customize a similar experience, or just plain implement what I've made. Enjoy!
Overall
This was pretty purpose built for me, so substitutions and edits of what I share here may/will be needed. The apps I use to make the widgets are:
I'll also note that my intent, like I said, was for this screen to feel like an app. As such, I employed a black wallpaper and designed the widgets as white on black. A white Home Screen, even with the intent to feel app-like just felt like too much.
Header Widget
Obviously, this WidgetPack widget shares the day and date, which I had originally pegged WidgetSmith to do, but I wanted to add functions, which is what those four circles are:
Add new item to OmniFocus
Start new draft in Drafts
Refresh the OmniFocus Get To It widget below
Refresh the Charty chart
To make sure it's current, the Shortcut has an automation to run every day at 00:00, which I highly recommend.
I use a Toolbox Pro action here to return home at the end of the flow (this is true for each of these Shortcuts, actually), just so that if I run it, I end up back at it, but this is optional (though you should still support Toolbox Pro for many reasons).
Charty Omni Rings Widget
This is the crown jewel of the design, and creates three rings with Charty to show progress based on tasks in OmniFocus:
[tasks completed today with a due date before 11:59pm] / ([available tasks today with a due date before 11:59pm] + [tasks completed today with a due date before 11:59pm])
This is a great visual of my day and its state. One gotcha, though, is that this is a beta, and so doesn't handle zero values elegantly yet. For example, if you have zero flagged tasks, it substitues 100 for the denominator and reports 0/100 complete. I think I'd like to see a closed ring for 0/0 done, but we'll see how this develops.
The Shortcut does require a particular colour scheme, and I've linked to it below.
For the widget, I chose to set the left background to 000000 for both light and dark, and the right to 0F0F10. I turn off the title and legend, and the chart takes care of the rest.
To keep the chart current, one might want an automation set to run the Shortcut on particular intervals or events. I tried doing it each time OmniFocus is closed, but I trigger many Shortcuts from OmniFocus tasks (as URL schemes), and found that exiting OF to run one Shortcut but automation trying to run another produced less desirable effects.
Like the Charty widget above it, this grabs available actions that are either due, flagged, or forecast-tagged, but then colours the checkbox indicator for each accordingly to match the Charty colour scheme.
Each action in the widget links to its OmniFocus task, and if there are more tasks that can be shown, the "and x more" line links to a particular perspective.
Unlike other iterations, I specifically designed this widget in these colours, or responding to light/dark mode. I have an aesthetic I wanted, and so that's baked in, but it would be possible to edit this otherwise.
Again, an automation to keep this up to date isn't a bad idea, but of course, the Header Widget has a button to refresh it.
Dashboard Widget
I fiddled with this for an awfully long time, but the genesis of this was thinking that if I can count some things with the Charty chart, what else might I count?
As set up (please edit to your needs!), this WidgetPack widget shows:
Number of Inbox items in OmniFocus (and links to the OmniFocus Inbox)
Number of available OmniFocus actions tagged with my Waiting tag (and links to my Waiting Perspective)
Number of available OmniFocus actions tagged with a People tag (and links to my People Perspective)
Number of drafts in my Drafts Inbox (and links to the search of my Inbox in Drafts)
After being able to see those counts. I thought about the buttons I did for the Header widget, and figured this was a good way for me to add more functionality. The buttons:
Run my Today Shortcut (that links to today's journal entry in Agenda)
Run the Dashboard Shortcut (to refresh the widget's contents)
Run the Charty Omni Week Widget (to refresh the chart below)
Phew.
Lastly, I struggled with the best way to see calendar events. I don't like the design of the stock Calendar widget, and it can't be forced in to dark mode to match the rest, so what the heck, I made my own.
Events are shown for the calendar day the Shortcut is run on, but only ones that have not yet occurred/started. As with OmniFocus tasks, each event in the widget links to its event in Calendar (by way of a separate Shortcut, since the Calendar doesn't have a lovely URL scheme of its own). If no events remain, the widget will say so (with a moon, because moons are relaxing).
I've shared this before, but I wanted to have this on my screen as a clear visual of my accomplishments. This Charty-based widget shows the count of OmniFocus tasks completed today and on the six days prior to today, giving me a sense of my wins.
As with the Charty Omni Rings widget, I set the background to 000000 and I hide the Y axis (relativism is more important to me than absolute numbers, YMMV).
Conclusion
And that really is all it! If you've read this far, holy smokes. Thank you. I hope there is material here that you find useful or can adapt to your needs.
I'd love to hear what you think, so feel free to drop a comment here.
Update: just fixed a minor bug in refresh for Flagged and Forecast-Tagged widgets - links updated below!
Thank you everyone for the tremendous support of my first cut at making widgets for OmniFocus with WidgetPack! I know I am finding them super helpful.
After spending some time using them, learning more about WidgetPack, and agonizing over design decisions (padding and spacing matters), I have made new versions of the widgets with better utility and visual appeal.
Here’s what’s new:
any OF task displayed actually links to that task inside OF so that you could see its notes, edit it, mark it complete, drop it or whatever
the design specifically only shows a maximum of four actions (this was brutal, but necessary to allow for space for longer task names and still look good)
a count of relevant undisplayed tasks is shown at the bottom of the widget, linked to the relevant perspective (Forecast Today for the due and forecast-tagged widgets, and Flagged for the flagged widget)
a colour-coordinated button has been added to each widget to drive right to adding a new task in OF (like quick entry, not automatically assuming a due date or flagged state)
a colour-coordinated refresh button to run the shortcut that makes it to update widget contents
dark mode support, so that the widget respects system state of dark mode
as referred to above, optimized spacing, layout, and sizing of elements
comments in the top section to enable anyone to (fairly easily?) customize the widget with choices for the accent colour, title, SF symbol, and link to open OF with
These have all really been oriented for large size widgets which I think makes sense, based on the amount of content. Running a shortcut here will create the widget in WidgetPack, so adding a WidgetPack widget to your screen and then editing it to point at the widget you’ve made will do the trick.
I’ll admit that the shortcuts take a bit of time to run, but I don’t know if it’s worth putting in a lot of work to try to optimize; I know the Omni Team is working hard on real native widgets that would be, I’m sure, much more efficient than these.
Hope you enjoy, please keep sharing feedback and thoughts!
Maybe I'm impatient, but I just love OmniFocus as my task management system, but am also finding my way of interacting with my phone deeply changed by iOS 14 and widgets.
I tweeted last week about this: Shortcuts (though that was iOS 13) and widgets let me get at expose functions and content of apps in ways that make me think less about the app itself, and more about the discrete and specific ways I benefit from them. Everything becomes a service.
I'm spending less time "in apps" and way more time just at my home screens. Do I care about what the weather app says in totality, or do I just need to know the temperature outside right now? Do I need to see my calendar, or do I just need to know what's up next and when? Do I need to see my task management system, or do I just need the list of things due today?
This shift is very powerful.
I was referred to WidgetPack, which reminds me a bit of Charty in its conceit: a set of iOS Shortcuts actions to capture, arrange, and format content in to a widget. Given that I love me my shortcuts, this was the solution I needed for bringing the value of widgets to the power of OmniFocus.
Here's my Home Screen:
The stack of large widgets require WidgetPack, and are built with these Shortcuts:
For bonus marks, each of these widgets links to OmniFocus perspectives when tapped: the Today Forecast view for Due and Tagged, and the Flagged perspective for Flagged. Naturally.
I am loving using the iOS 14 widgets to keep a clear eye on my day, and with Charty and its (beta) widgets and data views, I have been able to craft iOS Shortcuts that display really useful data on my homescreen.
I have two charts that I love, each drawing on my OmniFocus data to quickly display useful things:
OmniDay: this uses the data view to give me a list of counts of actions I need to be on top of. The Shortcut that generates this chart can be downloaded here.
🚀 Action, a total of:
⏰ Due actions available
🎏 Flagged actions available
⭐️ Forecast-tagged actions available
☑️ Completed items today
OmniWeek: this graphs a chart of actions completed today (☆), and in the six previous days leading up to today. The Shortcut that generates this chart can be downloaded here.
With these charts generated, it’s a matter of adding the Charty widgets to a home screen. For bonus marks, I made a third Shortcut called “Refresh Charts”, which just runs the two shortcuts above. I added it as a widget in a stack “behind” the OmniDay data, ensuring I can always quickly update the views.
I hope someone finds this useful and enjoys! Would love to hear what folks think.