Improved UX for 'conditional activation groups' (Copy app conditions, convert to group, merge with existing group)

I haven't explored much into conditional activation groups, but recently figured that I am manually duplicating a number of triggers/etc across different apps that I consider 'similar (eg. different chat apps), and it would probably make more sense to just create a 'group' that combines those apps into a single place that I define the triggers. From a quick skim the closest/best feature for that seems to be 'conditional activation groups'.

The default UI for this presents the 'Edit Conditions for Group' view, and shows options for 'Window Name' and 'App Name', as well as the 'Current Condition Values' section that updates with details to assist me filling things out:

This is useful, and I can absolutely go and manually find the details for all of the apps and add them in here.

But, given I have existing apps configured in BTT, I thought there might be a way I could just copy the same details that BTT was using to identify that app directly from my config, and then paste them into this activation group.

The first thing I thought to try was to right click on one of the existing apps configured in the left hand list of apps in BTT, and was hoping to find a menu option for copying the 'App Name' or 'App Bundle Identifier' or similar combination of details that BTT is using under-the-hood to detect that specific app; but unfortunately that isn't currently an option. It could even work to use the existing 'Copy Conditional Activation Group Conditions' option here, though it would obviously end up 'generating' the necessary conditions, rather than reading them from it's underlying group (which doesn't exist):

image

Another option that I thought might be useful on this right-click menu is a 'Convert to Conditional Activation Group' option (with an appropriate warning/confirmation alert stating that once converted, it probably can't be converted back). I would basically see this feature converting the standard app config into an equivalently configured conditional activation group, with the necessary conditions pre-filled, and all of the existing triggers/etc still present. The current workaround for this is just to create a new conditional activation group, copy all of the relevant triggers across to it, etc.

Then, continuing on from this idea, I thought it might be useful to have another right-click menu option that allows you to merge an existing app config into a conditional activation group, chosen from a list of currently existing ones (again, with an appropriate warning/confirmation alert stating that once converted, it probably can't be converted back). I would see this feature as adding the necessary conditions for that app to the existing conditional activation group, and then merging all of the triggers/etc into it as well.

Further from that last ability to 'merge existing apps into a conditional activation group' on a 1 by 1 basis; it would then be cool if we could select multiple currently configured apps in the left hand list, and either convert them all into a single 'conditional activation group', or add them all to an existing 'conditional activation group'.


So in the end, the right-click menu options would end up being something like:

With a single app selected, and no existing 'conditional activation groups':

  • Copy Conditional Activation Group Conditions
  • Convert to Conditional Activation Group
  • Merge with existing Conditional Activation Group

With a single app selected, and existing 'conditional activation groups':

  • Copy Conditional Activation Group Conditions
  • Convert to Conditional Activation Group
  • Merge with existing Conditional Activation Group
    • Existing Group 1
    • Existing Group N

With multiple apps selected, and no existing 'conditional activation groups':

  • Copy Conditional Activation Group Conditions
  • Convert selected to Conditional Activation Group
  • Merge selected with existing Conditional Activation Group

With multiple apps selected, and existing 'conditional activation groups':

  • Copy Conditional Activation Group Conditions
  • Convert selected to Conditional Activation Group
  • Merge selected with existing Conditional Activation Group
    • Existing Group 1
    • Existing Group N

It would also be cool if right-clicking on a 'conditional activation group' in the left hand list of apps/groups also gave us a shortcut directly to 'Edit Conditions for Group' (which I know we currently have access to from the 'main' settings of the group on the right-hand settings list.. but I always end up trying to right click to edit it first, before remembering to go to the 'main group settings' to do it):

image

I can see that if I use 'Copy App & All Triggers', and then paste it into a text editor, I can extract some of the details that I would then be able to use in 'Edit Conditions for Group':

image

Directly relevant/obvious are the 'App Bundle Identifier', 'App Name', and 'App Process Name'; though it isn't immediately clear to me what 'App Process Match Mode' means, and how that would relate to what settings I would use in 'Edit Conditions for Group':

[
  {
    "BTTAppBundleIdentifier" : "com.facebook.archon",
    "BTTAppName" : "Messenger",
    "BTTAppAutoInvertIcon" : 1,
    "BTTAppProcessMatchMode" : 2,
    "BTTAppProcessName" : "Messenger",
    "BTTTriggers" : [

..snip..


I'm also not currently sure if there is a way to create 'nested groups' of conditions within the 'Edit Conditions for Group' dialog, though it would be awesome if it was possible.

eg. If I wanted to create something like:

(BundleIdentifier == 'com.facebook.archon' && AppName == 'Messenger')
OR
(BundleIdentifier == 'com.example.foo' && AppName == 'Foo')

Another thought I just had is that perhaps some additional 'higher level' UI could be added to make this 'group multiple apps together' as simple to configure as the current 'add single app' is (even if it uses the same underlying fundamentals as a conditional activation group). That way the 'complexities' of the 'implementation details' of grouping multiple apps together could be 'hidden away' from the user, making the UX simpler in the process.

That said, this may be overkill given that the existing 'conditional activation group' feature seems to support this use case (even if it is harder for a new user to make use of to do it); especially if some of the earlier UX tweaks/improvements are added to make it easier to convert existing apps into conditional activation groups.