Tuesday, February 4, 2020

Roberto Alsina: XRandRoll: a new program to configure displays

TL; DR: I wrote a experimental tool to support X display configurations which I think is, or at least will be, better than others, and you can check it out at https://github.com/ralsina/xrandroll

Now the real post:

I have been using a dual monitor configuration for a little while. However it's a slightly special one.

  • One monitor is a normal samsung 27" 1080P monitor. But it's in a monitor stand that allows it to rotate. So it's either horizontal or vertical.

  • The other monitor is the laptop's. BUT ... it's a 2-in-1 so it can be in "normal" or "tent" or "tablet" positions. And when it changes position it reconfigures itself automatically using KDE's awesome support for it. So it can be in 4 different orientations.

So, if you are counting, that gives me 8 different possible monitor configurations.

Also, another thing is that while both screens have the same resolution, they have very different physical dimensions. Display configuration tools usually don't care for that (maybe with good reason!)

So, I wanted to experiment with how a tool would work that:

  • Looked / worked more or less like current tools

  • Allowed a little more flexibility

  • Did some fancy scale things with physical dimensions

  • Tried to support xrandr features that are ignored by most tools

  • Got its configuration from xrandr itself.

  • Applied its configuration via xrandr

  • Did screen mirroring better (say: exact mirroring when monitors are not the same mode? It does that)

So, xrandroll starts with several "philosophical" opinions in place.

In principle, it stores no configuration. It should obtain the state from xrandr. So it starts with a real reflection of your system as it exists.

It allows more display scaling flexibility. Independent scales per axis! A widget that does all the silly calculations to make things the same size!

It sort of does what I want now? In a prototypey-this-code-needs-to-be-rewritten way?

For the future, I intend to add capability to monitor your monitors (heh) and refresh itself if, for example, you plug in a monitor to your computer with xrandroll running. Also, some sort of service that configures monitors automatically as they are added / removed.

So, it may be worth taking a look at it. If you find bugs (there are bound to be dozens) you can file a bug attaching your xrandr output and I can debug them!

Interaction, UX, etc are still a WIP and subject to change. Experiments are being made. But it should be unable to destroy your system! You can probably even go back to whatever working config you had by clicking "Reset"!

Have fun and keep me posted.



from Planet Python
via read more

No comments:

Post a Comment

TestDriven.io: Working with Static and Media Files in Django

This article looks at how to work with static and media files in a Django project, locally and in production. from Planet Python via read...