betterScale - a better way to scale on x11 (gnome/budgie)

For those that are interested. I basically wrapped up xrandr & the experimental GDK WindowScalingFactor feature so that people don’t have to decipher how to make it work well. You run the script, select the scale you want and it is that simple.

Screenshot of betterScale

This thread below was an earlier attempt, but betterScale will soon make it irrelevant because I will be implementing xeventbind in a future release and all the stuff I said in this thread will simply be convoluted and needlessly complicated in comparison.

Congrats!

We have an opportunity… yes that dreadful management word

Budgie will have its own budgie-control-center which is a fork of gnome-control-center with all the gnome specific bits removed.

What we could do is pull in the Canonical specific scaling patch to make it show in the Displays tab.

We could then replace the bit that calls out with xrandr with a callout to your script.

Obviously that is hi-level stuff … but if you can imagine your script that has a bunch of parameters fulfilled from the revised tab. From memory scaling percentage and I am guessing monitor id. Maybe a bunch of other stuff. The script will need to cope with 100% which effectively means to return to the status quo.

If you would like to work together then let me know. I am tidying up the fork at the moment and I hope to have a jammy compatible version soon to start working from.

That sounds great! I am working on bringing in multi monitor support and will hopefully have that done some time this week. I will have to ask the user how many rows and columns they plan to have then have them decide each monitor position.

I plan to just lay things out in a grid, if they want to tweak it beyond that then I guess there can be some sort of nudge option, but initially I just want to lay things out in a grid & left, right, center (left to right numerically - if multiple centers).

And yes, already worked out how to use gxmessage to let users definitively know which monitor is which in a similar fashion as what Windows does when a user clicks on “Identify monitors”.

I will definitely work on modularizing it all into separate functions and params so that a GUI can make calls to it more easily.

@fossfreedom Added autorandr… such an amazing tool, it saves, loads, and auto re-applies x11 xrandr settings all on its own and very reliably so. Definitely a big help and time saver. Still need to add the ability to accept args and multi-monitor.

I may also write a system tray app to allow users to quickly change resolutions (scaled or not), much like the free tool RDM for macOS users, SwitchResX (commerical macOS app) or Ultramon (commercial app for Windows).

Really am quite happy with this development and finding autorandr… I would love to be able to give family and friends laptops or desktops with linux pre-installed, but one of the reasons I haven’t is because I never felt like I had a good enough handle on being able to set the exact resolution, or the person I would give it to any ways. Everyone has their own preference and I felt like Windows or macOS would work better for the most average users for that reason alone.

If things look or feel off in some way, even due to a screen resolution issue then that to me would be enough to prevent new users from taking it seriously.

Just had the thought of still combining xeventbind with autorandr - if a new monitor is attached then maybe track whether or not a 2nd monitor refresh occurs on a setup that does not have a saved profile in autorandr. I feel like that would be an indicator that the user repositioned or changed the initial setting for that monitor and they may want to save that as a profile that can or will be remembered.

It’s a thought any ways. I don’t want to bother users with a popup on an initial event for a new monitor - if it already gets handled correctly on the first try then apparently there is no need to save that config in the first place.

Might be possible to fork autorandr as well and let it handle it all.