Using Workspaces
Workspaces is a versatile program with that is designed to facilitate the starting up and shutting down of programs for different workspaces. This tutorial will cover the installation of Workspaces, setting preferences, installing plugins, creating workspaces and resources to optimize context switching, and using Workspaces to achieve the best results.
Installing Workspaces
The Workspaces Website is a great place to download the application for trying out this tutorial. It gives a 30 day trial period where you can try out the application and all of it's features. It is more than enough time to really get used to the program and how it works.
If you are certain you wish to use it, you may purchase it from the MacApp Store. This option does not provide a trial period, however, as it is updated on the app store, it will also be updated on your computer.
SetApp is an annual subscription-based platform that provides access to over 240 macOS applications, including Workspaces. With one yearly fee, users can enjoy the convenience of having a wide range of programs at their disposal, making the macOS computer experience more efficient and cost-effective. SetApp will ensure that your system is running optimally by automatically updating the programs to their latest version.
Overview of Workspaces
When Workspaces is loaded and launched on your computer, it adds an icon the shape of a wrench to the menubar.
Clicking on the icon will bring the main application window to the center of the current screen, or to the last location that the window was moved to.
This main application window displays a list of workspaces, with a command line at the top. The command line is automatically selected, allowing users to type in a workspace to open or resource to launch. Additionally, clicking on a workspace will open the associated resources list. Pressing Start
will launch the resources that have been marked to launch upon starting.
The command line allows the use of special commands prefixed with the :
(colon), such as: quit, edit, preferences, new, help, about, start, sort, archive, and unarchive. Additionally, plugins can add to this list of actions. These command line actions are intuitive and highly beneficial once mastered.
To begin, configure your preferences for using the program. Click the circle with three dots at the lower right of the window to open the application menu. Select Settings...
to open the settings screen.
The top row of the preferences contains five sections. By default, the General
preferences are displayed, where the application can be configured to open automatically, the appearance can be set to either light, dark, or the current system preference, the workspace to open on application start can be specified, and the default terminal and file manager to use can be selected.
The Editor
preferences allows the setting of the editor window to be above everything or not. It's best to keep it always on top because it will the be above the application window. If it's not set to be on top, the applicaton window will block the editor window until you dismiss the application window.
When adding resources to a workspace, it can be set to be opened by default automatically with the second option checked. This makes adding default launching resources easy to create. But, it might be in the way if most resources aren't being launched upon opening a workspace. It all depends on individual use patterns.
The last option allows for a hotkey to open the editor window for the currently open workspace. This can be very handy when working in a workspace and realizing more resources should be added for that workspace.
The Search
preferences allow the user to customize the appearance of the main application window, commonly known as the search window due to its primary purpose. This is the main area where most of the program's activities occur.
Users can select between Full
or Minimalistic
mode; Full
displays all available options in the user interface, while Minimalistic
only displays items that are not easily accessible through keyboard shortcuts.
The sorting order for workspaces in the window can be set to Don't Sort
, By Name
, By Mostly Used
, or By Recently Used
. Selecting Don't Sort
will display the workspaces in the order they were created.
The Behavior
section allows the setting of three types of behaviors: Close after launching a resource manually, Open workspace with a single mouse click, and Open resource with a single mouse click. All of these are straightforward and easy to understand. When configuring workspaces in Workspaces, it is recommended to not select the first option in order to keep the window open and make further modifications when testing a new workspace.
The next section is Open or Hide
, which enables you to assign a hotkey for opening or hiding the Workspaces main window. This is a very useful feature and should be configured. Once it is set up, use it regularly to open and close the window to develop muscle memory for it.
The Plugins
section of Workspaces allows for the configuration of its five plugins: AddResources, ScriptRunner, QuitApps, PlayMusic, and Keystroke. To obtain a plugin, simply click on the Get Plugins
text at the lower right of the dialog, which will open the system configured web browser to the download page. After downloading the desired plugins, unzip each one and press the +
text at the bottom left corner of the dialog to select the plugins to install in the Open File dialog. To remove a plugin, select it from the list and press the -
text.
The circle with the three dots allows the plugin to be configured. Currently, only the ScriptRunner and QuitApps are configurable.
AddResources Plugin
The AddResources
plugin adds the add
command in the command line of the search window. This allows the adding of resources to a workspace much faster. When :add
is typed in the command line with a space, a list of options is given: add apps, add chrome, add finder, and add safari.
The 'Add Apps' feature enables the selection of one or more currently open applications to be added to the current workspace. This plugin doesn't have anything to setup in preferences.
The :add
other options enable the installation of the current window of the specific application as a resource in the current workspace. For example, if Safari is open to the Apptorium website, a resource to open that site will be added to the workspace. This feature is an efficient way to set up browser locations or Finder folders for each workspace.
ScriptRunner Plugin
The ScriptRunner
allows the running of a shell script routine. This can do anything that a shell script can do. But, the path for searching for commands needs to be setup first. To do that, open the preferences for ScriptRunner
:
The input for Set $PATH to:
needs to be set for the different paths used for your script. You can always go to a terminal and execute env | grep "PATH"
and copy the text after the =
sign for PATH
and paste it in to this input.
The section Default script options:
allows for the customization of when to show results, show notifications, and a default timeout, depending on the user's needs. The show results and show notifications can be set to: always, On errors, or never. During the development of the script, the always setting is highly recommended; otherwise, the On error setting is likely sufficient.
QuitApps Plugin
The QuitApps
plugin is a great tool for streamlining your system and ensuring that unnecessary applications are not running in the background. It allows you to set up a default configuration of applications to quit when leaving a workspace, and automatically populates the QuitApps
resource with these applications. This helps to keep your system running as efficiently as possible.
PlayMusic Plugin
The PlayMusic
plugin enables users to select from preconfigured playlists on the Music program and play music while running a workspace. Depending on the user's preference, the plugin can be set to Pause
to turn off music playing. This plugin doesn't have anything to setup in preferences.
Keystroke Plugin
The Keystroke
plugin causes a particular Keystroke to be simulated when the resource is launched. This plugin doesn't have anything to setup in preferences.
The last preference is call Data
. In this dialog, the user can inport data from 1.5 version of Workspaces or simply open the folder that contains Workspaces data file. If you are restoring data file that was previously saved, make sure the program is completely closed before moving the data files.
Creating a workspace
The heart of Workspaces is the workspace. Each workspace represents a state of the computer for the type of work. The workspaces can be named anything, just be fairly discriptive.
In the main workspaces window, a list of workspaces is presented. To initiate a workspace, press ⌘↩ or select the workspace, press Enter, and then press Start
button on the upper right of the workspace screen. To create a new workspace, simply press the Edit
text in the upper right corner or use the hotkey assigned in the General
preferences section.
In the Edit
window, new workspaces can be created by pressing +
in the lower left corner under the list of workspaces already created. This creates a new workspace with the name New Workspace
highlighted; simply type the desired name of the workspace. The next column contains a list of resources for the currently highlighted workspace.
By clicking the +
under that column allows for the addition of different resources, such as files, folders, websites, e-mails, applications, terminals, URLs, actions, or shortcuts. It should be noted that the Website and URL options are not redundant; Website allows for the selection of a browser to use, while URL only opens with the system-configured browser. A separator can be added between resources to better organize the layout of the resources.
If an Actions
is added, a list of possible actions from plugins is shown. This is the main function of plugins.
If a Shortcuts
is added, a list of Shortcuts defined by the Shortcuts program is shown. Just select the Shortcut needed and it will be added as a resource for that workspace.
Default Workspace
Since the interface has been fully described, create a workspace named Default
. This workspace should launch all necessary programs when the computer is started. Once the workspace has been created, set it to Launch on Startup
in the General Preferences. This will ensure that all resources in the workspace are launched each time Workspaces is opened. If Workspaces is set to open on login, it will launch each resource in the Default workspace each time you reboot the system.
Next, populate the workspace by pressing the +
button and adding the resources to run. Applications are beneficial, however, a default website opening to a news site could be advantageous. Additionally, a Shortcut or a ScriptRunner can be added to position the windows and perform other default activities that are useful.
Writing Workspace
Create a workspace titled Writing
to setup the computer for tech writing. Include a text processing program, such as Yank Note, and an outline manager program, such as Bike. This may need to be modified to the programs that are best suited for the task.
To add Shortcuts for the layout, you can see it in detail in the tutorial Using Shortcuts. But, this can also be done using a ScriptRunner
resource.
In order to run the script when the workspace is started, the Launch
attribute at the bottom should be set to on start
. To ensure the script arranges application windows that are being launched, click on the immediately
text and change it to with delay
, setting the time to 5 s
. This can be tested and adjusted to the minimum time necessary for waiting on the applications to launch. This time period will depend on the computer being used and the application launching taking time to settle down. To create the script to be ran, press the Edit
button.
The ScriptRunner
editor window is minimalistic, with a side ways triangle button to run the script. The circle with three dots sets the preferences, as previously outlined in the tutorial, and the values set in the preferences will appear here and can be modified for each script. Underneath the title bar is the editor, where the shell script for the user's default shell is written and edited. The script needed is:
hs -c "setWritingWindows()"
This script depends on Hammerspoon to move the windows into position. The easiest way to install Hammerspoon is with Homebrew. Install Homebrew and run the command:
brew install Hammerspoon
The Hammerspoon install needs to create a cli in your home directory in order to use it. By running the commands:
mkdir ~/bin
ln -s /Applications/Hammerspoon.app/Contents/Frameworks/hs/hs ~/bin/hs
In the ScriptRunner
preferences, add the ~/bin
directory to the PATH line. To configure Hammerspoon to position the windows, edit the Lua script located at $HOME/.hammerspoon/init.lua
and include the contents as follows:
--
-- Function: setSize
--
-- Description: Resize the current window by pixels and optionally
-- set the position.
--
function setSize( width, height, x, y )
local win = hs.window.focusedWindow()
local f = win:frame()
saved.win = win
saved.winframe = saved.win:frame()
f.w = width
f.h = height
if x ~= nil then
f.x = x
end
if y ~= nil then
f.y = y
end
win:setFrame(f)
end
--
-- Function: focus
--
-- Description: This function will unminimize the given app and focus it.
--
function focus( app )
hs.appfinder.appFromName( app ):activate()
end
--
-- Function: SetWRitingWindows
--
-- Description: Set the size and position of the windows for doing Tech Writing.
--
function SetWritingWindows()
focus("Bike")
setSize(567,1003,1134,0)
focus("Yank Note")
setSize(1134,1003,0,0)
end
Once you have restarted Hammerspoon, your ScriptRunner
script should be operational. To ensure this, please make sure that the location of the Hammerspoon cli (hs) is included in the PATH statement in the preferences, as previously mentioned in the tutorial. Hammerspoon and Workspaces can be combined to create powerful workflow improvements. The only limit is your imagination.
Programming Workspace
I like to program using Neovim. This is a terminal editor that is very fast and very versatile. So, to create a workspace for working on a program, create the EmailIt workspace (that is the name of the workspace I'm working on). Then add a terminal resource with the path set to the directory of the workspace by dragging the folder from Finder to the resource. This will launch the terminal set to that path.
Next, create a ScriptRunner
resource to run this command line:
cd ~/<path to project directory>
wails build
This project is a Wails project that this script will compile. The <path to workspace directory>
has to be set to the proper path. The ScriptRunner
scripts know nothing about where the projects are located. Therefore, the script has to first go to that location on the harddrive. Then it compiles the program. Set this script to always show the output so that you can watch and know when it is finished.
Next, add a QuitApps
resource and set it to close the iTerm application and the EmailIt program. Then set it to Launch on finish
.
Create an application launcher for the program that does not automatically launch, and add descriptive separators to enhance the visual appeal. The workspace should appear as follows:
Working With a Workspace
Now that the programming workspace is setup, let's go through a typical session. First press the hotkey to bring up the workspace window. On my system it's ⌃-⌥-⌘-↓. In the command line, type :start EmailIt
and press ↩. The terminal will launch and move into position, but the compiling and launching of the program didn't run. That's because they are set to manual
and only run when selected.
Once some programming has been done, open the workspace window again and type build EmailIt
. The resource will appear in the list highlighted with just the bui
. Press the ↩ key and the building script will run showing the results of building in a window. When done, you can launch it just by typing emailit
, ↓ once, and ↩ (of course, your workspace names will be different).
When transitioning to a different workspace, the QuitApps
will close the terminal and program. This provides a convenient way to keep the computer organized.
Making workspace Notes
In the workspace view of the program, the icon in the lower left corner toggles the notes sidebar to the workspace. This is very handy way to keep up with things to do in the workspace.
It uses the same markdown approach that Side Notes uses. The check boxes in the picture above are done with square brackets with a space in the middle (ie: [ ]
). When you click on it, it will toggle between checked and unchecked states. By clicking on the Aa
at the bottom right corner of the notes area, you can see the list of markdown syntax to insert to the current cursor location.
If you need more notes, you can use Side Notes with Workspaces by dragging a Side Notes folder to the resource area of a workspace in the workspace editor. When you launch that resource, the notes in Side Notes is opened.
Other Ideas
workspaces can be created to store URLs, applications, and files that are frequently used. The workspace window provides an easy way to launch them by using the command line in the window.
Automation
Workspaces can be automated by external programs very easily. In the workspace editor, right click on the workspace name and select the Copy URL
menu entry.
This will copy an URI for the workspace that can be used to start the workspace. The file manager that I use is called Modal File Manager. It has an extension call workspace Manager that will run a script when I enter the workspace directory in Modal File Manager. In this script, I place this line:
open workspaces://start/255F71B7-81C6-43E9-B9C7-D89583F14201
By navigating to the workspace directory in Modal File Manager, the workspace resources are automatically launched and the workspace is set as the active workspace. This automation saves time, as I no longer need to manually launch the workspace when working on it.
Conclusion
Workspaces is a powerful application that offers users a comprehensive solution for organizing and managing their workspaces and resources. With its user-friendly interface, Workspaces is a valuable tool for enhancing productivity and organization.