native widget support

On the (upcoming) macOS version 14 (Sonoma) you will soon have the option to use these widgets as part of the native widget support (this will be supported starting with BetterTouchTool 4.300).

Has this announcement already been implemented? The current version number is above 4.30, but I'm a bit puzzled about how to setup the whole thing.

Sorry, updated the docs :sweat_smile:
Should come some time in November!

1 Like

Hi. It's May 2024. Has this been implemented.

And which docs are updated? On the website it still says "*On the (upcoming) macOS version 14 (Sonoma) you will soon have the option to use these widgets as part of the native widget support"

I started working on native widgets, but they came with so many limitations compared to the floating menus, so I paused development for now. Maybe the next macOS version will allow me to offer all floating menu features in native widgets.

Currently the recommended way is to configure a floating menu and set the window level/z-index to desktop

Oh darn. I've been waiting with excitement.

So then is there a way to easily grey out the desktop widget when it's not hovered on the z-index (desktop)? I was hoping design parameters would do it like setting the background colour or 'shadow' options but this only alters behind the menu item. I have a web item and I don't want to redesign every page. I'm looking for an option that would 'curtain' the menu to a grey-ed out and opaque. Something like a foreground colour black and opacity to 20%.

I'm not interested in re-sizing on hover, I'm just trying to match the system widgets.

especially web items are unfortunately not allowed by apple for the native widgets ;-(

So this might not be a perfect solution, but you can run any sort of Java Script in your webview item. With Java Script you can easily activate some CSS filters for your page. For example this java script would make a site grayscale:

document.body.style.filter = "grayscale(100%)";

and this would make it colorful again:

document.body.style.filter = "none";

Now you'd want to run the first script when desktop is not active and the second when when desktop becomes active. To achieve this I tried using this simple conditional activation group:

After defining that activation group you can use the "CAG Activated" and "CAG Deactivated" triggers:

A bit hard to setup, but might work OK

1 Like