Window Groups are a runtime window-composition mechanism in io.Connect Desktop that can be controlled programmatically or by end-users. Groups define how multiple windows are physically bound together, moved and managed as one unit (move, resize, minimize/maximize, close) via a shared frame (that can have buttons, header, etc.) In io.Connect Desktop, Window grouping (or stickiness) is used to organize windows into visual groups at runtime. Window Groups exist independently and can optionally be captured by Workspaces and persist via Layouts, but they do not require either function. There are two types of window groups in io.Connect Desktop:
- Web Groups are implemented with web technologies. They are designed for extensibility and long-term support.
- Classic Groups are a deprecated WPF-based implementation.
In io.Connect Desktop 10.0+ Classic Groups can be used only on the Advanced platform mode and are primarily retained for backward compatibility and legacy requirements.
The io.Connect Desktop 9.x stream doesn’t have platform modes, thus no limitation based on mode.
Comparison
Web Groups
- Modern web-technology-based
- Designed for full UI customization of the group frame and window decorations
- Customized either by:
- CSS overrides of the default Web Group App
- Platform styles overrides to get consistent theming across Web Group App, Workspaces App, Launchpad, etc
- Building your own Web Group App using
@interopio/groups-ui-react
- New features and enhancements are developed for and focused on Web Groups
- macOS support was introduced in io.Connect Desktop 10.0. Since io.Connect runs only in default platform mode on macOS, only Web Groups are supported there.
Web Groups are the strategic direction forward in io.Connect Desktop 10.0+. New development and customization should target Web Groups, and migration from Classic Groups should be treated as a required upgrade step.
Web Groups customization
You can fully customize Web Groups by building a Web Group App via @interopio/groups-ui-react, including passing custom components and styling zones.
- Avoid rendering components “around” the
<Group />root (risk of being cut off). - The Web Group page contains HTML elements with a strict hierarchy managed internally. Don’t manipulate those directly, use the library instead.
- Note that incorrect CSS can break the web group.
- In default platform mode, web groups can use default OS system buttons (instead of the
@interopio/groups-ui-reactones). - In advanced mode, web groups can’t use the default OS system buttons; they must use the library-provided ones.
- In advanced mode - web groups show popups and menus are easy; in default mode they need to be outside.
Classic Groups
- Classic groups are deprecated as of 10.0.
- Starting with io.Connect Desktop 10.0 onwards Classic Groups are only available in the Advanced platform mode. Do not invest in new development/customization of Classic Groups as Classic Groups are going to be removed in a future version.
- Based on WPF components
- Theming/customization is limited, historically done via
themes.json - Classic Groups are not available on macOS
What type of groups is configured as default on a fresh installation?
Depending on the version and platform mode, the group type used by default (not to be confused with the Default Platform mode) in io.Connect Desktop will be different:
| Version | Platform mode | Default groups configuration |
|---|---|---|
| 10.0+ | Default (Advanced=false) |
Web Groups |
| 10.0+ | Advanced | Classic Groups |
| Pre 10.0 | N/A | Classic Groups |
We strongly recommend you migrate to Web Groups even if you decide to run the Advanced Platform mode. To do so, there’s a configuration switch depending on the version:
- In 10.0,
stickywindows.jsonis deprecated and the settings moved tosystem.jsonwhere group type is controlled viawindowManagement.group.type. - Pre 10.0, switching group implementation is done via
stickywindows.jsonwith"groupType": "Web"/"Classic".
| Product version | Configuration file | Configuration setting |
|---|---|---|
| 10.0+ | system.json |
"windowManagement": { "group": { "type": "Web" } } |
| Pre 10.0 | stickywindows.json |
{ "groupType": "Web" } |
Migration from Classic Groups to Web Groups
For migration, the system config includes a purpose-built flag:
themes.convertThemesConfigToCSS = true
This converts the theme settings for Classic Groups from themes.json into CSS variables injected into the Web Group App, to help migration now that Classic is deprecated and Web Groups are to be used.
Docs
Window Management Overview: io.Connect Desktop Documentation - Windows > Window Management > Overview
System configuration: io.Connect Desktop Documentation - Configuration > System
io.Connect Windows: io.Connect Desktop Documentation - Configuration > io.Connect Windows