App groups
An app group is a set of windows, described by rules, with its own actions. Actions in a "Browsers" group run only over browser windows; actions in the reserved Global group run everywhere else, and wherever a group falls back to Global.
Each window belongs to at most one app group: the first one in the list whose rules match it. The exact rules are in Scope and fallback rules.
The page
Below the group's card, a row of tabs splits its settings. Simple mode has two:
- General: what happens in the group's windows (see What happens in these windows).
- Windows: the rules for which windows count as the group (see Rules). The Global group has no Windows tab: it applies to every window no other group owns.
Advanced mode adds four more tabs (see Advanced settings). The tab you pick stays chosen while you select other groups, so you can compare the same settings group by group. A group without that tab shows General.
The Windows tab:
| LOOK AT | COMPARE | VALUE | MATCH CASE | MATCHES? |
|---|---|---|---|---|
| Program name | is exactly | chrome.exe | ☐ | ✓ 3 open |
| Program name | is exactly | msedge.exe | ☐ | none open |
To make a group for a program:
- Select + New at the bottom of the list. A group named "New app group" appears, with no rules.
- Give it a Name.
- On the Windows tab, select + Rule and fill in the row ⑤: what to LOOK AT, how to COMPARE, the VALUE, and whether to MATCH CASE. Or drag the row's magnifier onto the program's window (see Rules).
- Check the MATCHES? column: it counts the open windows the rule matches.
- Add actions to the group on the Actions page, with the group chosen in its group list. See The Actions page.
- Apply your changes.
The quick start walks through the same task.
Rules
A rule tests one fact about the window's top-level window (the whole program window, never a button or text box inside it):
| LOOK AT | What it reads | Example VALUE |
|---|---|---|
| Program name | The program's file name | chrome.exe |
| Program path | The program's full path | C:\Program Files\Mozilla Firefox\firefox.exe |
| Window title | The text in the window's title bar | Visual Studio |
| Window class | The window's class name, a fixed name the program gives its windows | Notepad |
| COMPARE | Matches when the text… |
|---|---|
| is exactly | is exactly VALUE |
| contains | contains VALUE anywhere |
| starts with | starts with VALUE |
| ends with | ends with VALUE |
| matches wildcard | as a whole matches VALUE, where * stands for any run of characters (including none) and ? for exactly one |
| matches pattern | contains a match for the regular expression VALUE (use ^ and $ to match the whole text) |
- MATCH CASE, off by default, decides whether upper and lower case count. Off, they don't:
notepad.exealso matchesNotepad.exe, for every COMPARE choice and the same way in every language. On, the rule's VALUE is compared with exact case, matches pattern included. - Patterns use the ECMAScript regular expression rules. Lookbehind (
(?<=…)), named groups ((?<name>…)), inline flags such as(?i)and\p{…}are not supported: such a pattern shows invalid pattern in MATCHES? and never matches. Script functions use a different, larger pattern dialect, so a pattern that works in a script may not work here. - Store apps. A Program name or Program path rule matches both the app's own program
(for example
CalculatorApp.exe) andApplicationFrameHost.exe, the program that hosts its window. - A rule with no VALUE is dropped when you save.
- A group with no rules matches no window at all.
Drag to identify. Press and hold a row's magnifier, move the pointer over a window, and release. The configuration window gets out of the way while you do it, and the row's VALUE is filled from that window for the row's LOOK AT choice. Esc cancels.
MATCHES? shows, for each rule on its own, how many open windows it matches: "✓ 3 open" or "none open". It ignores the group's other rules and the groups above it.
Several rules
Once a group has two or more rules, choose ④ how they combine under A window belongs to this group when:
- All rules match: every rule must hold for the same window (the default).
- Any rule matches: one matching rule is enough.
This choice shows in Simple mode too. Advanced mode adds a note under it that explains the two choices.
Order
When a window matches more than one group, the group higher in the list owns it. The other groups are never consulted for that window, not even when the owning group has no action for what you did; only the Global group can take over then (see Fall back to Global).
- Move up and Move down ② move a group past the next app group.
- Ignore groups are always checked first. A window any enabled ignore group matches never gets an app group, wherever the groups sit. See Ignore groups.
- Global is always last and has no Move up or Move down: it is not matched by rules; it is what a window gets when no group owns it.
What happens in these windows
These switches are on the General tab; Enabled is on the group's card above the tabs.
| Setting | When on | When off |
|---|---|---|
| Enabled | The group is in use. | The group is skipped entirely, as if it weren't there: its rules match nothing, its actions never run, and the next group in the list can own the window. |
| Gestures work here | Gestures over these windows use this group. | The group still owns its windows, but no gesture uses its actions; Global's are used instead if the group falls back to Global, otherwise a draw-button press passes straight through. |
| Hotkeys work here | Hotkeys pressed while one of these windows is focused use this group. | As for gestures: Global's hotkeys if the group falls back, otherwise none. |
| Fall back to Global ③ | When this group has nothing for a gesture, hotkey or typed text, or doesn't apply in the active profile, Global's actions are tried. | Never Global's actions in these windows. |
Fall back to Global also has a switch for every group at once on the General page; both must be on. See Scope and fallback rules.
There is no switch for text expansion per group: it follows the group's rules, profile and fallback, and the master switch on the Text expansion page. See Text expansion.
Advanced mode. Pause everything while focused turns all of Input.Observer off while a window in this group has the focus, for example a game, and back on when the focus moves elsewhere. A manual Enabled switch-off from the tray always wins. See The tray icon.
The Global group
The Global group is reserved. It has no rules: it applies to every window no other group owns, and it is where groups fall back to.
- It is always the last row, marked RESERVED, and can't be deleted, duplicated or turned into an ignore group.
- Its Enabled switch turns Global off: windows no group owns then get nothing, and no group has anything to fall back to. The tray menu's Global Actions item is the same switch.
- Gestures work here and Hotkeys work here apply to Global both as a window's own group and as the group others fall back to.
- It has no Fall back to Global or Pause everything while focused of its own.
Advanced settings
Advanced mode. These tabs appear after Windows:
- Gesture regions: divide the window into a grid so one gesture can do different things in different places. See Regions.
- Before and after: a script that runs before or after every action in the group. See Before and after actions.
- Profiles and timeout, two cards:
- Only in these profiles: the profiles the group applies under. Leave it empty for every profile. In any other profile, the group still owns its windows, but they get Global's actions if the group falls back to Global, and nothing otherwise. See Profiles.
- Cancel timeout: Override the General setting for this group sets a cancel timeout (0 to 60,000 milliseconds) for gestures over these windows. Off means the General page's value applies. See Drawing a gesture.
- Exclusion zones: zones that apply only to windows in this group, on top of the zones for every window. See Exclusion zones.
Simple mode hides six settings on an ordinary group: Gesture regions, Before and after, Only in these profiles, Cancel timeout, Pause everything while focused and Exclusion zones. On the Global group it hides four: the first four of these. Simple mode never changes their values: they keep working while hidden. The banner at the bottom of the page counts them, names them, and says when one holds a value other than its default. Show advanced on the banner switches to Advanced mode.
Problems the page reports
Banners under the group card, above the tabs, point out problems with the selected group. Problems of the same kind share one banner: its title once, a count ahead of it, and one line per problem. A banner with more than four lines shows the first three; Show all lists the rest, and Show fewer folds them away again. The same holds for the problem banners on the Actions, Ignore groups, Text expansion and Exclusion zones pages.
| Banner | What it means | What to do |
|---|---|---|
| Two gestures in this group can't be told apart | Two actions have a trigger that the same stroke satisfies. The one declared first always wins; the other never runs for that gesture. | Change one trigger (another gesture, modifier, button or region), or reorder the actions on the Actions page. |
| A stroke here can run the wrong action | A shape drawn over these windows scores closest to another shape in scope, and runs that shape's action. See How a stroke is matched. | Add do-nothing action, or raise the match threshold. When the banner lists several strokes, each line has its own Add do-nothing action link, and Add do-nothing actions for all adds one for every stroke listed. |
| This group matches no windows | It has no rules. | Add a rule. |
| A rule has no value | It is dropped when you save. | Fill in VALUE or remove the row. |
| Another group already has these rules | A group checked first has the same rules, so no window ever reaches this one. | Change the rules, or the order. |
| Outside its profiles its windows get nothing | The group is limited to some profiles and doesn't fall back to Global. | Turn on Fall back to Global, or accept it. |
| A gesture can never match | Regions are on, and a gesture trigger has no region cell. | Choose cells for the trigger. See Regions. |
| A gesture points outside the grid | A trigger names a cell the current grid doesn't have. | Choose cells again for that trigger. |
A disabled group, or one with Gestures work here off, reports no gesture problems.
Adding, copying and removing groups
- + New adds an empty group at the end of the app groups.
- The duplicate button beside + New copies the selected group, everything included, and places the copy right below it. Until you change the copy's rules, the original owns every window the copy would, so the copy shows Another group already has these rules.
- A row's delete button removes a group after a confirmation that says how many of its actions are deleted with it.
- Convert to ignore group… turns the group into an ignore group. The confirmation lists what is removed: its actions, regions, before and after scripts, cancel timeout and exclusion zones. The group then appears on the Ignore groups page. See Ignore groups.