Better way for constraining transformation to an axis in global, local, normal orientation

I saw a few recent topics where the transformation in local and global mode and constraining to an axis is discussed.
Pressing X, Y, Z many times until I get the direction I want always bothered me. Also I don’t find the middle mouse axis constraining very useful (works only in global).
So I wrote a python tool, currently just a proof of concept.
It covers the functionality of all X, Y, Z and middle mouse button for constraining the movement and scale (in Global and Local mode) with just one hotkey.
You hold a key and click and drag anywhere in the viewport in the direction you would like to move/scale the object.
It compares the direction of your mouse movement vector to the object’s current axises and chooses the closest one.

transform_to_mouse_direction

All movement and scale here is done with just one key. By default you would need to tap X,Y,Z dozens of times.
In my opinion this is very efficient and intuitive. It saves a lot of time positioning and scaling objects/components. Does not replace the current functionality of X, Y, Z keys.

I’m not sure if this concept can help developers with the current issues, but decided to share it just in case.
Let me know what you think?

I also agree with @billrey that gizmos could have their own orientation settings. (found this in another topic :slight_smile: )
I often need to move an object in Global, but rotate it in Local orientation. And by switching gizmos move/rotate/scale they should retain their orientation settings.