DPI Settings in Screen preferences

It would be great if one could change the dpi of the screen, like in Windows or Linux Xorg, because on a high-res display screens gui elements are very small and unreadable. I know that this can be done by increasing the size of fonts and icons but I think a better thing to was to change the dpi of the screen.

This is actually a pretty required feature, not only because of bogus EDID info, but because of visually-impaired users that otherwise would be unable to use the system.

This would be a super cool thing to have, but it’s indeed a lot of work. Adding the setting in the Screen preflet is easy, but of course the work is in actually applying the setting everywhere. One problem is that the Be drawing API is documented to mean pixel coordinates, not point coordinates. Some other APIs are actually documented to mean virtual point coordinates, where there is a mapping between virtual points and screen pixels. Changing this in Haiku has of course great effects on existing apps, most of them would break one way or another. Then there is also a lot of work in re-writing the drawing code for UI elements such that it still looks good when scaled. Rendering code often uses tricks which work well at exactly the tested resolution. These tricks may fall apart when the rendering is scaled. So everything would need to be reviewed.

cough GSoC project cough

It requires a bit of work afaict, but it is a good request.
You should report it as a feature request in our bug tracker to get the attention.

(It might make a good Google Summer of Code project.)

Actually, this isn’t how it should work.
The DPI of your screen is an hardware property, and it is already reported as part of the EDID data (it is even shown in the screen preferences, on the screen preview).

You shouldn’t have to set the DPI yourself, this makes no sense. What we should do instead is have the default settings for font and icon sizes take this into account. The “point” unit used for fonts should change according to the DPI setting (1 pt is 1/72 inch), and everything else should scale around that.

Of course, this isn’t quite working yet, and many apps hardcode things on pixel sizes, particularly for icons. We could improve our API to help people work with points and avoid hardcoded pixel values.

Actually, a lot of hardware will return bogus wrong information in the EDID data. It is not safe to use it, at least without constraining it to a safe margin and also allowing the user to override the setting.

I would not recommend relying on the EDID data alone by default.

[quote=PulkoMandy]Actually, this isn’t how it should work.
The DPI of your screen is an hardware property, and it is already reported as part of the EDID data (it is even shown in the screen preferences, on the screen preview).

You shouldn’t have to set the DPI yourself, this makes no sense. What we should do instead is have the default settings for font and icon sizes take this into account. The “point” unit used for fonts should change according to the DPI setting (1 pt is 1/72 inch), and everything else should scale around that.

Of course, this isn’t quite working yet, and many apps hardcode things on pixel sizes, particularly for icons. We could improve our API to help people work with points and avoid hardcoded pixel values.[/quote]
Of course you’re right, my mistake. The problem occurs on laptops with high resolution (eg 1900x1200), where the gui interface elements are very small and such functionality as scaling the entire gui interface would be very handy.

We need to improve DPI handling in our app server (AGG, FreeType). I looked into it for my 13" HD screen, but it looks like it needs quite much work.