DEV Community

Cover image for New VSCode extension that takes automation to the next level
Elio Struyf
Elio Struyf

Posted on

New VSCode extension that takes automation to the next level

Recently I switched from using Alfred over to Raycast. What convinced me of Raycast is the simplicity the tool provides, plus the ability to simply create your custom commands/scripts.

Info: I already wrote about it: Using Raycast to speed up my productivity.

The more I use Raycast, the more I want to automate. A script I created was to start up my daily development tasks:

  • Open my VSCode editor with the right project loaded
  • Open my terminal to the right folder
  • Open Microsoft Edge to the Azure Portal
  • Open Google Chrome with my application URL

These tasks typically do not take a lot of time, but automating this by one command is so easy.

Taking it to the next level

To take it to the next level, I wanted to start my commands in VSCode as well. For my project I use two terminals:

  1. Open ngrok as my application needs to be accessible remotely.
  2. Start the local development server (Next.js in my case).

Unfortunately, you can only trigger certain actions in VSCode by shortcuts. That is why I thought to create a new VSCode Remote Control extension which allows you to send commands from anywhere on your device to the running VSCode instance.

Info: Check out the extension here: VSCode Remote Control.

The extension spins up a WebSocket server. By default, it will start it on port: 3710, but is configurable from the settings.

Show me what it can do

To speed up my process, I wanted to open two terminal instances in VSCode and run my commands in each of them.

In my Raycast script, all I had to do is add the following code:

echo "{ \"command\": \"workbench.action.terminal.newWithCwd\" }" | websocat ws://localhost:3710
echo "{ \"command\": \"workbench.action.terminal.sendSequence\", \"args\": { \"text\": \"npm run ngrok\\n\" } }" | websocat ws://localhost:3710
echo "{ \"command\": \"workbench.action.terminal.split\" }" | websocat ws://localhost:3710
echo "{ \"command\": \"workbench.action.terminal.focusAtIndex2\" }" | websocat ws://localhost:3710
echo "{ \"command\": \"workbench.action.terminal.sendSequence\", \"args\": { \"text\": \"cd solutions/msteams/webapp && npm run dev\\n\" } }" | websocat ws://localhost:3710
Enter fullscreen mode Exit fullscreen mode

Important: this is not only created for Raycast. Once installed, you can run commands from anywhere on your device.

Here the result of this script:

The result of the script

Check out the VSCode extension here: VSCode Remote Control.

Top comments (4)

abhishektripathi profile image
Abhishek Tripathi

I like your setup and your pursuit of automation. Raycast looks incredibly powerful and potentially useful to many.

Here is my take on it. I use windows and I am using Keypirinha for the last many years after a long time of use of slickrun and then executor. I have also configured keypirinha to perform several operations which take advantage of command line switches available with the applications. I can quickly draft email, launch several applications in specific modes, have customized screenshots, search for files by extensions in specific directories, etc. I think it is quite useful. I wouldn't like to see a full-blown integration with tools for GitHub bug creation or things that don't fit in the realms of a command-line launcher. This makes my use case very peculiar and would be difficult to move when the tool breaks due to the changes in the service it integrates with. Having said that, it is good to invest in such productivity tools and I would look forward to learning more.

estruyf profile image
Elio Struyf

The Raycast launcher concept is something common in the macOS world with the default Spotlight integration and Alfred as a big competitor. That said, the extension itself has nothing to do with the Raycast. I just like to use the application, and it allows me to run my scripts.

If you like to use tools like Keypirinha, slickrun, ... You can achieve the same with the extension. Just providing the VSCode commands it needs to execute from these tools.

c4s4r profile image

This looks really nice, thanks for sharing!
Sadly I'm using Windows 10. Do you know something similar with a modern and stylish approach for Windows?

estruyf profile image
Elio Struyf

Think on Windows you can still run scripts from a shortcut and like @abhishektripathi mentioned, you can use tools like Keypirinha. Here is a list of alternatives for Windows: