Feature request list

Hi Andreas,

Thanks for your efforts.

I didnt want to open new threads each one. so here is my list

1- Disable or block swipe / scroll events while holding specific keyboard shortcut. ex. fn + option
setting can be in btt settings or will be better in trigger options
I'm planing to add gestures on windows for SWM but swipe gestures starts scroll events on windows

2- Highlight trigger on BTT interface
so i can direct user to related trigger after informal dialog box

3- Trigger over mission control / app expose option would be nice alternative to trigger over Dock / Menubar. didn't used stage manager yet maybe it can be added too

4- Option for hiding disabled features on trigger type selection list (dropdown menu on top toolbar) or setting to customization list which one will be visible/hidden
ex. i have disabled touchbar, notch bar, BTT remote but they are still on list. also i'm not using midi, magic mouse, siri remote
this one will reduce clutter, also allow faster navigation

5- Menubar>Edit>Sort triggers/actions by preset

6- Menubar>View has Open selected group / close group. but i couldnt figure out how to use groups (until i found folder icon next to + button after writing this :slight_smile: )
Menubar>Edit>Add group would be nice.

7- Position option for Window Switcher. its opening related to mouse position now, it will be nice if i can fix it to center of screen like alt+tab dialog. im on monterey so using old version of it and not knowing differences compared to ventura version. if you added to new one you can skip this

8- Dim text color of minimized windows on Window Switcher.

9- over window toolbar condition for advanced conditions. i have tried to filter but i end with almost 50+ conditions

10- Gap size option for custom move / resize windows

11- BTT cant identify my logitech m720 triathlon's thumb button (not back / forward). it works as middle button while connected with bluetooth if i connect with dongle it starts mission control. is there an alternative way to detect that button.

Also some bugs or problems

1- run applescript action has a 1 sec delay if it didnt used for a while but second use after that almost instant. is there a priority or keep in cache option. i tried run in background but i have same result

2- This one related with SWM and reported 2 times in SWM thread.

Custom Window Move / Resize action chooses wrong window. You can use latest SWM Preset to replicate

open a 2 different textedit windows (could be something else but couldnt replicate with finder)
move one window to other monitor
Select window on secondary monitor.move your mouse to primary monitor then open swm with fn+W and use one of window sizes
BTT will apply action to window placed on primary window
repeat until bug happens. its happening 1 of 10 times or lower but i seen many times

3- 3 finger over dock not %100 detected. it shows context menu instead of triggering action. I changed to another gesture (4 finger tap) then it started to work ok.

4- I can close BTT windows on script editor without problems with
tell application "System Events" to tell windows of process "BetterTouchTool" to click (buttons whose subrole is "AXCloseButton")
But if i use script with run applescript action in BTT, it cant close itself. This one started on latest versions

5- Close window under cursor not working with minimized windows on app expose. is this os limitation

6- Create variable "0" with set_persistent_string_variable then try to get with get_string_variable on script editor. it gives error on applescript but it works on floating view

Have a nice day

Just a quick note for future requests: I know it feels weird, but creating many separate topics makes it much easier for me to handle. Such long lists are hard for me to prioritize or link them with existing requests. Often times I have a few minutes to look at something and short requests allow me focus on that and fix/add it.

Also often feature requests or bugs stay open for longer times because I had to prioritize other stuff, finding them again is much easier if the title clearly describes the content.
Also other users of the forum who would be able to help for some of the points might never find it because of the generic title.

Just a few quick comments, I'll add more for your points later today!

1.) An option to enable/disable a scroll blocking mode is high on my TODO list as it has been requested many times :slight_smile: Should be added very soon.
However for gestures: have you tried to just create a set of BTT trackpad/magic mouse gestures that are only active for your webview?

2.) Good idea.

3.) Mission Control & App Expose are essentially black boxes, but there is one advanced condition property that you can use. It's called: missioncontrol_active and will be 1 if mission control or app expose are active

4.) See Disable/hide unneeded BTT sections - Feature Requests - BetterTouchTool Community (folivora.ai)

5.) Sorting is currently not possible because in most sections the order of the items has not only a visual but also functional meaning. However I agree that it would be helpful, just not sure how to implement without potentially breaking stuff.

6.) Good idea

7.) Already added for Ventura :slight_smile: (In general the ventura window switcher is completely different than the old one with tons of new functionality, the old one will unfortunately not be developed further) . I highly recommend to upgrade to Ventura as BTT will make use of lots of the new SwiftUI features in the near future :slight_smile:

8.) See 7

9.) Unfortunately every app can style and implement toolbars however they like, thus a universal way to recognize that is hard and might never cover all cases. Maybe I can add a variable that covers most common cases, so you just need to add additional specific conditions you need.

10.) Can you elaborate? I think you can already do that with the custom move / resize action, but probably I'm missing osmething.

11.) Logitech has their own (mostly undocumented) device protocol, but I'm currently working on fully supporting all features of all Logitech mice via GitHub - libratbag/libratbag: A DBus daemon to configure input devices, mainly high-end and gaming mice This is a massive feature , but the next BTT alpha will already have a way to recognize your buttons via a new feature called "Generic Devices"

Currently the easiest way is to assign a keyboard shortcut via the logitech software, then catch that shortcut in BTT.

Problems:

1.) macOS needs to compile the text you enter for Apple Scripts before running them. BTT caches the compiled versions, but if for some reason the BTT Apple Script runner crashes or you restart BTT, the compiled versions will be gone. You could get around this by creating a compiled scpt file via Apple Script Editor and calling this from BTT, they might be slightly faster.

2.) There might have been some improvements with the latest alpha for this (or maybe with the version I'm currently running locally - I'm not sure if I have already released this).
There might be more work necessary

3.) This might be because the system somehow catches a right click before BTT can recognize the three finger tap. You could try to add a right click with the dock condition in the "normal mouse" section in BTT

4.) Weird, I'll look into this.

5.) It's a system limitation, but I could workaround it by first activating the window, then closing it.

6.) I'll look into this

@Andreas_Hegenberg

thanks for detailed answer

1- here is my action
trigger: 2 finger Swipe down + fn + cmd
action: Activate/Bring to front window under cursor > minimize window under cursor

my problem is safari window starts scrolling before action triggered. also if there is a window back of safari window it starts scrolling to because scrolling event not ended

as a seperate topic, if scrolling event value is too high or its constantly repeating freezeing webview. im on 2017 touchbar macbook pro

2- Great

3- didnt saw missioncontrol_active before. i will check that

4- i understand your concern

5- not sure how listing works in BTT. actually it can be global rule. it will disables custom ordering then sorts items by presets first then sorts sub items by name. i would prefer that. if user tries to custom ordering reindex items order

6- Great

7-8- Its nice but i have to wait until last version of ventura is out. many times i got problems with first releases

9- Great

10- I want to use function of BTT Settings > Window Snapping & Moving > Appearance > Empty Space between edges in Custom Move / Resize Windows action

my function on SWM

o=async(x,y,w,h)=>{b()

FC&&FS("E")

setTimeout(e=>{

callBTT('trigger_action',{json:JS({BTTPredefinedActionType:251,BTTActionMoveResizeConfig:JS({

BTTActiveOrHoveredWindow:0,

BTTScreenOrigin:((x=="A")?y:1),

BTTDirectionToMove:0,

BTTScreensToMove:-1,

BTTOriginToUse:((x=="A")?y:1),

BTTOriginDisplay:0,

BTTUseVisibleFrame:1,

BTTCareForStageManager:1,

BTTChangeXOrigin:((x=="A")?((w=="v")?0:1):1),

BTTChangeXOriginRelative:((x=="A")?0:1),

BTTNewXRelative:((x=="A")?1:x),

BTTChangeYOrigin:((x=="A")?((w=="h")?0:1):1),

BTTChangeYOriginRelative:((x=="A")?0:1),

BTTNewYRelative:((x=="A")?1:(-1*y)),

BTTChangeWindowWidth:((x=="A")?0:1),

BTTChangeWidthRelative:1,

BTTNewWindowWidthRelative:((x=="A")?0:w),

BTTChangeWindowHeight:((x=="A")?0:1),

BTTChangeHeightRelative:1,

BTTNewWindowHeightRelative:((x=="A")?0:h)

})})})

},FC?450:0)

setTimeout(e=>{GV&&GF()},FC?500:0)

}

if there is an object for Empty Space between edges it will be great. im using a separate function in current release

Function

GF=i=>{AS(`

use scripting additions

tell app "System Events" to tell window 1 of (process (short name of (info for (path to "egfp"))))

set {{sX,sY},{pX,pY},gap} to {size,position,+GS+}

set {size,position} to {{sX - gap - gap, sY - gap - gap},{pX + gap, pY + gap}}

end tell

`)}

11- great, im waiting for that. i will report results

12- i forgot this one to add. as an addition to requests can we use screen percentages instead of pixels for webviews. i want to add a bacground overlay that highlights target window size while user hover buttons on SWM. Percentages important for multi monitor support

Problems

1- i will try this. please correct me if im wrong, is calling scpt file is faster compared to inserting applescript

2- i guess this one fixed i tried 50 times. didnt saw an issue. report back if i see again

3- context menu not shows if i dont have a trigger for 3 finger tap. Like a i said 4 finger tip taps or even 3 finger tip tap dont have same issue. its only for 3 finger tap. middle click works without problems for normal mouse

4-5-6 thanks

Unfortunately I can't just add a global option for changing ordering. A whole lot of BTT's logic depends on the order of the items, changing this is not feasible. Maybe I could add a "view only" mode, where you can sort but not add new triggers. (Of course if you know what you are doing you can manually sort you triggers by dragging them around)

I think I still don't understand the gap thing :slight_smile: The custom move resize is a completely manual process for positioning windows, you could add any gap you'd like - isn't a gap just a different specific position & size? In contrast, window snapping does everything automatically, thus needs that option.

Sort thing not a priority ofc i can live without that :slight_smile:

i just want resize window without a second action / function.
if i can add a "BTTEmptySpaceBetweenEdges:20" like object to json this would be great.
BTT calculates window size then subtracts 20px from size then applies to window

without it i have to resize window with screen percentages then i resize window to 20px smaller version.So user sees window with full size then sees a smaller version. adding that object will remove 2 step resize. or there is a alternative way

i guess you skip this one

can we use screen percentages instead of pixels for webviews. i want to add a bacground overlay that highlights target window size while user hover buttons on SWM. Percentages important for multi monitor support

its also important for future versions of SWM

Could you use something like this?

async function doResize() {

let mouseScreenWidth = await callBTT('get_number_variable', {variableName: 'mouse_screen_width'});
let mouseScreenHeight = await callBTT('get_number_variable', {variableName: 'mouse_screen_height'});

let mouseScreenX = await callBTT('get_number_variable', {variableName: 'mouse_screen_x'});
let mouseScreenY = await callBTT('get_number_variable', {variableName: 'mouse_screen_y'});

callBTT('resize_webview', {
"x": mouseScreenX + mouseScreenWidth*0.05,
"y": mouseScreenY + mouseScreenHeight*0.05, 
"width" :mouseScreenWidth*0.9, 
"height": mouseScreenHeight*0.9
});

}

This should already work right now (x and y are also supported variables for the resize_webview function). There is also the focused_screen_XXX variables in case you want to focused screen instead

i noted this one, looks like it will do job, i'm planing to add that feature 2-3 months later after adding few more features. is there a documentation or list for that variables. didnt know i can use them like this way

also is there one for visible frame, i have to subtract dock & menubar from webview

gap / leave space feature works on wip version of SWM with a small glitch. just suggested a feature btw :slight_smile:

1 Like

This is pretty new, but all variables in the advanced trigger conditions can be queried like this.(And with the next alpha also the conditional activation group variables)

//edit: added mouse_screen_visible_frame_XXX to the next version

looks really handy

fullscreen_active is nice for SWM, currently using applescript to get value. i will try this for next release. but its value changes for short time while i move cursor between windows. it changes to some times 1 and 140703128616960. im not on full screen. but it stays as 1 while focused window in full screen

also missioncontrol_active:140703128616960 still shows while mission control is active. am i missing something. im on multi monitor setup

thanks for visible frame. good to have that one

Mhh this might be a < ventura issue, doesn't seem to be happening here.

i added this line to SWM
alert(await callBTT('get_number_variable',{variableName:'fullscreen_active'}))
but always returns false. it shows correct value in BTT

is there another way to access showing advanced conditions & ui element viewer popup
would be nice if i can see like a popup window like menubar > view > show live view

you will neeed the current alpha version for this to work

there is no other way to show these (for now)

already on latest alpha, maybe it gets webview as focused window
i have an similar issue with webview before. i was tried to use custom move / resize window function with resize window related to self X,Y but action tried to resize webview instead of focused window

i launched applescript before loading swm window to fix this

tell me
set_persistent_number_variable "SWM-FS" to (get_number_variable "fullscreen_active")
end tell

then i get value from webview

await callBTT('get_number_variable',{variableName:'SWM-FS'}

not sure is there a gain with this, i will try for a while

are you planning to create a action for variables, do you think will it increase performance compared to getting/setting them compared to applescript

I think I can change the full screen detection to check if the current window is on a "full-screen-space" then it should work even if the webview is the focused one.

What do you mean by action for variables?

if it bypass webview i can use it for SWM

here is a quick mockup

input box can be use for updating triggers etc

you would still need java script to get the value into the webview or not?
There is already an action for setting variables, but I think getting doesn't make sense as it would just add another indirection.

tried Assign value action but it works only with static values
my point is on previous backup you can use all variables in same action
update_trigger etc. i guess there is no action for this

maybe its an unnecessary example, you can sync

BTTInternalNightShiftState with SystemDoNotDisturbState

or many possibilities for new variables

here is what i use for SWM
i update trigger because i routed keyboard trigger and minimize button click trigger to same webview action. it changes popup position related to used trigger
then i added full screen check ( i checked this value with applescript in webview html in previous versions with tell app "System Events" to tell window 1 of (process 1 where frontmost is true) to return value of attribute "AXFullScreen")
then i launch SWM

i dont know much about how btt works in background, my guess using built in actions will make this faster, ofc you know better

yes i have to use call functions to get full screen status anyways

i use callBTT('get_number_variable',{variableName:'SWM-FS'} in current method

if i can get correct result with callBTT('get_number_variable',{variableName:'fullscreen_active'} i will use it and will delete set_persistent_number_variable "SWM-FS" to (get_number_variable "fullscreen_active") lines from pre launch applescript

also can you add a variable for hovered dock item's name or its AXurl or its path will be better, i can find ui element with mouse position for next version Enhanced dock but i have to also check dock orientation for that. some apps has different display names compared to process or .app names also using spothlight index to get correct path of app. next version of Enhanced dock has big update with 50+ changes but still has performance issues

the apple script actions add some overhead, if you can replace them with the "run real javascript" action that should be faster (and the next BTT version should further significantly improve the Java Script performance)

Apple has improved the webview performance on Ventura a bit, but not sure whether that would affect you.

updated them to this, i tried json.stringify method but btt crashed probably i did something wrong. so i stringified json copied from btt. feels snappier :slight_smile: i keep this for future versions

c=async(i)=>{
callBTT('update_trigger',{uuid:'SWMFLOAT-5416-4806-A04E-88E117D32D34',json:"{\"BTTActionFloatingHTMLConfig\":\"{\\\"BTTSize\\\":\\\"{280, 160}\\\",\\\"BTTFrameOrigin\\\":\\\"{-130, -100}\\\",\\\"BTTUseFixedPosition\\\":1,\\\"BTTCloseOnOutsideClick\\\":1,\\\"BTTRelativeTo\\\":1,\\\"BTTCloseOnOutsideClick\\\":1}\"}"})
callBTT('set_persistent_number_variable',{variable_name:'SWM-FS',to:(await callBTT('get_number_variable',{variable_name:"fullscreen_active"}))})
}
c()
callBTT('trigger_named',{trigger_name:"swmfloat"})
returnToBTT(1)

What do you think about dock related variables

btw really thanks for your support

edit i found how i get hovered item details after i write
callBTT("get_string_variable",{variableName: "hovered_element_details"})