Download the installer or the zip file from the Releases page and install/unzip it anywhere you like.
Alternatively, workspacer is available via these package managers:
winget install workspacer
choco install workspacer
scoop bucket add extras scoop install workspacer
Workspacer automatically checks for updates. However, if you are using a package manager, you should uncomment/add this line in your workspacer configuration file to disable automatic updates:
context.Branch = Branch.None;
Workspacer loads a default configuration with almost everything you’d need, but you will likely want to modify things like key bindings, widgets on the bar, workspaces, layouts, plugins or otherwise the default behavior of workspacer.
A configuration file can be generated by right clicking the
workspacer system tray icon, and selecting the option to create an example configuration in:
The file gets created in one of the two following places
Workspacer is configured in the C# language, using types and interfaces provided by workspacer itself. This means that while workspacer requires knowledge of programming to use, its configuration is extremely powerful, and allows you to modify or even replace most functionality that drives workspacer. For example, a common use case is to implement a custom layout engine (just define a class that satisfies the interface
ILayoutEngine) entirely inside the config file, and then use it to define the desired custom layout behavior, without needing to modify workspacer itself.
Workspacer’s configuration file allows for type checking and intellisense! Currently, only Visual Studio Code with the C# extension is supported. Opening the
.workspacer folder in your home directory inside Visual Studio Code with the C# extension installed will provide syntax highlighting, type checking, and autocompletion automatically because of the
#r directives at the top of the config file (so don’t remove those, or else this won’t work!).
The config page lists a few examples and tips & tricks on how to customize workspacer to your liking.
Configuring in F#
Workspacer can also be configured in F#, either by extending an existing C# configuration or replacing C# configuration entirely. F# script files (
.fsx) are supported with autocompletion in Visual Studio and Rider, as well as Visual Studio Code (using the iodine plugin). All configuration options available in C# configuration are also available for F# configuration.
To get started with F# configuration, replace the C# configuration file with the following:
#r "C:\Program Files\workspacer\workspacer.Shared.dll" #r C:\Program Files\workspacer\plugins\workspacer.FSharpConfig\workspacer.FSharpConfig.dll" using System; using workspacer; using workspacer.FSharpConfig; return FSharpConfig.Use();
With this configuration, workspacer is configured in the
setupContext function in the F# configuration script:
An example configuration, equivalent to the default C# configuration is available on github. In the F# configuration, it is important to use
#r @".." directives instead of
#r "..". Furthermore, a function
setupContext is used instead of the returned action in the C# configuration. These differences are due to the F# configuration being compiled to a
dll library, rather than running as a script directly.
The config page contains a reference of the available configuration options, as well as C# examples.
Workspacer’s default configuration makes it behave like other tiling window managers, but deviates where not possible due to limitations of the
Win32 API which prevents from freely controlling windows in the same way as an X11 tiling window manager.
The keybindings page shows the default set of keybindings.
If you run into any bugs, or want to suggest a feature, please feel free to open an issue!