๐ Disclaimer: No prior knowledge needed...
Raycast is a productivity tool for MacOS, and as a native app, it fits in with the Mac styling and performance that you are used to. I'll be using Raycast as an easy way to show. you how to run and access scripts.
If you use Spotlight (hit cmd
spacebar
and you'll find it), then you will be more familiar with what Raycast is. There are many tools that you can use that are similar, such as Alfred, Automator, Launchbar and others. With all of these tools, you can search your entire computer for a file, you can search for things in the browser without even opening the browser and you can add commands (Alfred calls them workflows, Raycast calls them extensions) to speed up the things that you do the most often, such as opening a particular website, starting a new email or emptying the trash (my favourite command ๐ค)
Personally, I find the Raycast UI to be much more natural for Mac and it has a strong community that can help with any questions, and I love how easy it is to install extensions, or scripts. It also is easier to extend and adapt to your personal workflows.
Also, right now it's totally free! ๐ฅณ
Hold up, what is a script?
A script is a code file that allows your computer to automate a set of instructions. This could be something relatively simple, such as opening a webpage in your default browser, or something more complex such as starting up your development environment and opening the browser as well as your IDE. Scripts run in the background - this means that they run without getting in your way, and they generally happen fast.
Writing a script is like writing a recipe for someone else to use - you give them exact ingredients and tell them what to do with those ingredients, and then they might make you a delicious meal!
Mmm...
Scripts mean that you can instruct your computer to perform a set of instructions without having to ask you for anything.
Let's start with a script that does something that we all probably do too much but that probably isn't great for our productivity - opening Twitter in your default browser!
Luckily for us, the bash
scripting language is pretty easy to remember for this script: the command word is open
, so our script is going to be pretty short! Firstly, we need to install Raycast if you haven't already got it, and type Create Script Command
as this will allow us to start coding straight away with all the metadata already set.
For this script, we are going to use Bash
. The reason for this is because it is good for smaller and less complex scripts. Soon enough, you'll be coding with Ruby
and Python
and Swift
and everything else, but for now let's get started with Bash
.
After you've filled out the form, hit cmd
+enter
and choose where you'd like to save it. I recommend saving it in a folder called 'Code' if you don't have one already. If you're really stuck, just save it on the desktop and you can sort it out later ๐ฅด
Now close Raycast for now, and go to the new file that you just made. Right-click, and go to Open With...
I need to install some fancy tool though, right?
Nope!
I'm using the built-in TextEdit Mac app, although you'll have a much better time if you have Visual Studio Code...
Ok, so we have our template, and we changed fullOutput
to silent
in the @raycast.mode
(because we don't need to see any output or data for this script).
Would you believe me if I said we were nearly done?!
Next, we are going to write the actual script... hold onto your hats... ๐งข
open https://twitter.com
Yep, it's really that easy! Congrats on writing your first script! Now, let's save it before we load it into Raycast. If, like me, you are using TextEdit for this, you'll need to change it to a 'plain text' file, under the format
header, so that we can do what we want with it.
Next, you need to make a folder. I recommend saving it on on your desktop so you always remember where you put it! โ
Now go back to your file and save it into your newly created folder. Name it anything you like, but make sure that the file ends in .sh
. If it won't let you save it with the .sh
file extension, go back and make sure that you remembered to make it a plain text file. If you aren't using TextEdit, then search for 'plain text' and the name of the text editor you are using in Google.
Now we can load it into Raycast!
๐ค Side note: As developers, we call folders on your computer directories
. If they are on your computer, then they are local directories
.
To load your script into Raycast, firstly open Raycast, then go to About, then Extensions, then click the little '+' to get to 'add script directory', find your folder, and then click open.
Ok, done!
Now we want to test our script, right?!
Go back to the root search of Raycast, and search for the title of your script! We set the @raycast.title
to 'Open Twitter', so search for Open Twitter in Raycast and then hit enter on it...
Magical...๐ช
Now, what happens if you change the URL and save the file, or if you add another open https://...
?
Suddenly, you have a way to open ALL of the web pages you need on a daily basis...at once!
Only web pages?
You can also open apps using the open
command in bash - as long as you know the path
to where the app is (usually /System/Volumes/Data/Applications/...
)
Here's an example, my 'open-Everything.sh' file. As the name suggests, this script opens everything I need for my workday!
#!/bin/bash
# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title Open Work
# @raycast.mode inline
# @raycast.description Open my workflows
#
# Optional parameters:
# @raycast.icon ๐ป
# @raycast.iconDark
#
# Credits
# @raycast.author Faye Sipiano
# @raycast.authorURL https://github.com/FSipiano
open https://twitter.com
open https://app.frontapp.com/inboxes/teammates
open https://github.com/raycast/script-commands
open https://www.notion.so/raycastapp
open https://calendar.google.com/calendar/u/0/r
open /System/Volumes/Data/Applications/iTerm.app
open /System/Volumes/Data/Applications/Slack.app
open /System/Volumes/Data/Applications/Spotify.app
code
open /System/Volumes/Data/Applications/Aware.app
open https://app.pluralsight.com/library/courses
So that's how we can speed up our workflows using Raycast and open
in bash
scripts... what if you want to take it further..? What if you wanted to open a specific repo or file to work on? For that, you can add things like ~/Developer/raycast-web
to tell it to open something in a specific place - you have given it the path (route) to get to it.
Scripting languages are cool and you can do a lot with them, but you don't need to remember how to write them...Google is your friend...
There're tonnes of workflows that you can speed up by loading scripts into Raycast. If you want inspiration or want to try out useful scripts written by the community, then head over to the community repo and see what you can find! One of my favourites is the Quit Everything command. I have it mapped to option
q
for extra drama. Obviously, I can't show you this script as my recorder would shut off, but it does what it says on the tin and it's a nice way of finishing off your workday in style ๐
I can't show you what it looks like, but it feels like this:
There are lots of scripts that you can write or download that will save you time and increase your productivity; take my usual, non-scripted, development workflow, for example:
Over 1 minute to get into my dev environment...
This is what I turned that into with the help of Raycast and a bash
script:
8 Seconds!!! I save 63 seconds with this script.... that doesn't sound like A LOT, but trust me... it is A LOT if you are loading up your dev environment multiple times a day!!
That's Raycast! I hope that has inspired you to start looking into ways to speed up your workflows - head over to the community repo and see if you can find anything you like! As I mentioned, I personally recommend the Quit All Applications script and the Empty Trash script.
If you have any questions, recommendations or comments about Raycast or any of the repos or documentation, please reach out to me either through the community Slack channel - it is literally my job as a Developer Advocate to make sure that you get the best experience, regardless of your skill level ๐
Top comments (0)