It does not happen often I write an article about a tool, but this time, I felt this tool deserved some extra attention.
Many people use Alfred, and I have been using Alfred since I had my first Macbook. The biggest advantage of these applications is that you can quickly search your apps or execute tasks. What differentiates Raycast is that it is free, and it is straightforward to add custom scripts. You can write these scripts in
nodejs, and more.
Important: They listen to feedback. I submitted feedback about the font size. In my opinion, it was a bit too small. In less than a week, the Raycast team released an update with this functionality implemented. Not only that, the team even sent an email thanking me for the feedback. ❤️
It all started with an order on Pimp Your Own Device. There was a bug in the search React I wrote for the site. Luckily, the person who wanted to place an order was so nice to send us a message.
We talked a bit, and I saw she was working at Raycast, so I asked what it was. That is how it got me interested in testing out the product. I removed Alfred and installed Raycast instead.
Apart from searching your applications, the most significant productivity boost it will give you is the custom scripts you can add. For sure, you will have many manual tasks you have to do daily to start your work.
Info: Follow the steps in the following repository to get started with custom script creation for Raycast: Raycast Script Commands.
For instance, what I do frequently is open the Azure Portal. As I have various accounts, I always need to open the correct browser with the right profile.
My first improvement would be to create a script to open the portal in the right browser and profile.
#!/bin/bash # Required parameters: # @raycast.schemaVersion 1 # @raycast.title Open Azure Portal (personal) # @raycast.mode silent # Optional parameters: # @raycast.icon 🚀 # @raycast.packageName estruyf.azure.portal # Documentation: # @raycast.author Elio Struyf hs=`hostname` if [[ $hs == "ninja.local" ]] then open -a "Google Chrome" 'https://portal.azure.com' --args --profile-directory=Default else echo "Implementation for second machine" fi
Info: The script is simple. In my case, I check my hostname to know where I am running the script as I work on two machines.
That is not it. Another improvement that makes things even quicker is to get my development flow started just by running the script. Why? In my case, when I am developing for a Microsoft Teams project, I need to open:
- Browser with the right profile for Microsoft Teams
- Browser with the right profile for the Azure Profile (another account)
- Visual Studio Code with the project
- Terminal opened in the project folder
The script for this looks as follows:
#!/bin/bash # Required parameters: # @raycast.schemaVersion 1 # @raycast.title Open Squarl project # @raycast.mode silent # Optional parameters: # @raycast.icon 🚀 # @raycast.packageName estruyf.code.squarl # Documentation: # @raycast.author Elio Struyf hs=`hostname` if [[ $hs == "ninja.local" ]] then code ~/<path-to-project> hyper ~/<path-to-project> open -a "Google Chrome Canary" 'https://teams.microsoft.com/' --args --profile-directory="Profile 9" open -a "Google Chrome" 'https://portal.azure.com' --args --profile-directory=Default else echo "Implementation for second machine" fi
Now I can just run my command, and it will automatically open all these instances.
One more, for my blog, I place all the images in a
year/month folder. This structure is still leftover from the WordPress days. I just kept the format. Each time I write an article like this one and want to add an image, I have to open that particular folder. With a custom script, I can now quickly open that folder, and if it does not exist, it will be created. Great for when we started a new month.
#!/bin/bash # Required parameters: # @raycast.schemaVersion 1 # @raycast.title Open blog screenshots # @raycast.mode silent # Optional parameters: # @raycast.icon 🏙 # @raycast.packageName estruyf.code.squarl # Documentation: # @raycast.author Elio Struyf crntYear=$(date +'%Y') crntMonth=$(date +'%m') monthDir=~/blog/web-eliostruyf-hugo/static/uploads/$crntYear/$crntMonth [ ! -d "$monthDir" ] && mkdir -p "$monthDir" open $monthDir
Tip: For the icon, you can add a base64 encoded image. That way, you do not have to link it to a local or online file.
I hope Raycast will improve your flow as well. Article first published on eliostruyf.com