How to Save Time with Alfred, Stream Deck, and Apple Shortcuts

Most people automate parts of their job because they find it boring. I did it because I have four kids. 

One of the best ways I’ve found to have a good work-life balance is to start the day early – really early. Automattic has no set hours or expectation that you’re online from 9 to 5. So when I first started here, I decided to start my day at 6 am, before the kids got up. That way, I could finish work early and be with them when they got home from school.

But getting up at 6 am has some downsides, and I needed something besides large amounts of caffeine to get my day started. That something was automation!

I recently decided to update and revamp my workflow automation, and document it here in case others find it useful.

Please share your own automation hacks in the comments! I’d love to hear what you are doing to make your work easier.

Part I: Alfred

Alfred for Mac is a great tool to help automate your day. It lets you use hotkeys, keywords, and text expansion to improve your productivity. 

But where it really shines is in terms of automation. Alfred Powerpack (a paid upgrade) includes Workflows. Workflows let you automate repetitive tasks, and link them together in unique ways.

Screenshot from the Alfred website.

At Automattic, a number of teams use shared Alfred workflows to automate their tasks.

Start-of-Day Workflow

My most-used workflow is a personal one – my start-of-day workflow. With a single input, I can set up my computer when I start in the morning. 

This workflow opens all the tabs I need in my browser, and opens all my apps. At the same time, the workflow runs some commands including one that updates Homebrew, a package manager for macOS,  one that updates node, npm and all my node gems, and one that updates Oh My Zsh, a framework for managing the Z shell (zsh) configuration. At the end it sends me a “hello!” notification on my computer, then a second notification in Slack via an incoming webhook. All of this happens while I make coffee. Priorities!

How does this work?

My start-of-day workflow in the Alfred App. 

I use an external trigger to get this workflow started (more on that later), but this could also be a keyboard shortcut or an Alfred prompt.

This opens up all the tabs I need on a daily basis (my mail, my team’s shared P2 workspace, etc.) in the browser. I also get my project management tools in the browser. This is currently a GitHub project board, but it could just as easily be Asana, Jira or Trello.

I also get a set of apps to open. I change these up fairly often, but for right now I’ve added Slack, iTerm2, Things, Craft, Bear, Spotify and my Apple calendar to the workflow. Adding apps is a drag-and-drop operation, so it’s easy to change which apps are opened.

Next, I run a few terminal commands. These update Homebrew, Oh My Zsh, node, and npm. They also run some maintenance scripts. 

If you want Alfred to use iTerm2, instead of the default terminal, you’ll need to tell Alfred. Get the script, and add it as below.

How to use iTerm with Alfred. 

I usually start this automation from the top floor of my house and then go make coffee, one floor down. So I’ve programmed a webhook to send me a cheerful message on Slack as a direct message. I get a notification on my phone while I’m in the kitchen making coffee.

If you want, you can even use Alfred Remote (paid) and create a button on your phone to start your workflows. If you have a Mac with a touchbar, you can use an app like BetterTouchTool (paid) and create a global touch bar button to do the same thing.

If you want to integrate a Slack notification, you’ll need to do this as a Slack app. You used to be able to create an incoming webhook in Slack, grab the needed url, and put it in the last action inside of a curl payload. There’s a tutorial here. But the Slack app method is a newer way to do something similar.

As the last step in this workflow, I get a notification on my computer. This could include an audio alert sound or even Spotify playlist, but I like peace and quiet, so my notifications are silent.

End-of-Day Workflow

My end-of-day workflow is the simplest – it just closes every app, no customization required. That means that it also closes every tab in my browser. You could add a System Command to shut down your computer for you as well. I like this workflow because when my work day is over, it’s done! I’m not tempted to check that open pull request one last time.

My end-of-day workflow in the Alfred App. 

Development Workflow

I have a third workflow that sets things up specifically for development work.

This one starts again with an external trigger. Next, it opens up a number of development tools. In this case, I’m opening up Docker Desktop, IntelliJ IDEA, DataGrip, etc. It also opens up my project management tools, my GitHub repos, a couple of important Looker pages, and a series of internal company tools. This might include something like Hue or TeamCity, depending on what I’m working on. At the end, I get a notification – but again, this could include sound or music.

Part II: Apple Shortcuts

I’m a huge fan of automation, so I added even more using the Apple Shortcuts app. This tool comes with some built-in shortcuts. Third-party apps (like Evernote and Bear App) also have some pre-built shortcuts that you can add. 

Some of the Apple Shortcuts I have installed. 

I use the shortcuts that Bear app provides and I organized a couple to use with Craft app. I’ve also built/customized my own. I use these shortcuts to do things like automate my standups, and meeting notes.

The advantage of using Apple shortcuts is that whatever shortcuts you create can be triggered using AppleScript or a keyboard shortcut.

If you want to make this even easier, you can use something like Shortery. Shortery makes building shortcuts a little easier, but it also lets you execute them automatically, instead of manually.

Part III: Stream Deck

As a third step, I bought myself the Elgato Stream Deck

This is basically a multi-function keyboard. It’s a great tool for folks doing podcasts and Twitch streaming, two things I do not do. It’s also great for automation.

The goldilocks of Stream Decks – not too large, not too small, but just the right size.

I have the Stream Deck MK.2 which has 15 keys, but you can add profiles, pages, and folders to extend this out into 132 possible different functions.

There is also a Stream Deck XL with 32 buttons, a Stream Deck Mini with just six buttons, and a Stream Deck+ which has eight buttons, plus a touch bar and some dials. These all look great, but I am very happy with the Stream Deck MK.2. It’s small enough to be unobtrusive, but not so small that I find I’m limited in terms of what I can do with it.

Screenshot from the Stream Deck website.

My basic setup includes some general buttons. I’ve used cute icons for these but you can use very serious business-like ones, or make your own. The button icons can also be animated gifs.

I use these buttons to run my Alfred workflows and my Apple Shortcuts. That means that instead of using a keyboard shortcut to trigger my start-of-day workflow I can just push a button.

Even without Alfred, the Stream Deck allows you to chain multiple actions together – but I find Alfred gives you a lot more flexibility.

I’ve integrated a Slack app into my setup that lets me update my Slack status with a button. I can use this if I’m in a meeting, for example, or if there are noisy kids nearby. 

How I’ve customized my Stream Deck using the Stream Deck app from Elgato. 

I also use Stream Deck profiles that are triggered when you use specific apps. 

I have a Stream Deck profile that lets me manage Zoom calls. This lets me do things in Zoom like mute myself, stop my video, or exit the call in a single click. I’ve also added the “In a meeting” Slack status update here. And finally, I have links to the Google Docs meeting agendas I use most often.

If you prefer a different tool for conferencing this is also an option. I prefer Around, but it’s a bit more limited in what is possible to automate. Still, anything that has a URL, or a key combo, or that can be put in a Shortcut, can be added to the Stream Deck. 

I’m currently working on a third profile that lets me use the Stream Deck with GitHub to monitor things like GitHub notifications and pull requests. But let’s call that a work in progress!

The Stream Deck lets you add additional automations including home automation, various sound and image editing automations, and gaming automation. You can also add a pedal or the Stream Deck mobile app and keep your hands even more free.

The easiest way to start the day.

I was able to do what I wanted using just the tools mentioned here. But if you need more power, you can use Shortery or Keyboard Maestro to add capabilities that Shortcuts and Alfred might not be able to. Raycast is another option, similar to Alfred, that turns complex operations into keyboard shortcuts. Or, hey, you can also just program something.

Different teams at Automattic employ Raycast, Alfred, and custom Python programming to build shared automation tools that anyone at the company can use.

Anything Missing?

I’m curious about any of the automation you might be using! Are you using any of these same tools? Let me know in the comments.

Related Reading

2 thoughts on “How to Save Time with Alfred, Stream Deck, and Apple Shortcuts

  1. A (possibly) cheaper alternative to the Stream Deck if you have an old smart phone or tablet laying around is Touch Portal. It’s more flexible from a layout perspective as you can decide how many “buttons” you want on your screen.
    I’m using it with an old iPhone 6 with a defunct battery. It’s always plugged in and never goes into auto-lock when the app is running. It’s one of the best uses I’ve found for an old but still functional device.

    https://www.touch-portal.com/

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s