Go Down

Topic: Arduino IDE window really small on High DPI Dispay? (Read 36647 times) previous topic - next topic

danieldcrrose

I have tried scaling it and everything but the window is so small I can hardly see the icons, is there a fix to this? I have a Dell XPS 15 9530. The display is 3200x1800.

mbanzi


PapaSmurf6768

Same problem here, 3200x1800 resolution on a Razer Blade. Windows 8.1.

MarkT

Edit preferences.txt for this kind of set-up (but not while the Arduino software
is running).

Look for configurations like this:
Code: [Select]
editor.window.height.default=800
editor.window.height.min=500
editor.window.height.min.macosx=450
editor.window.height.min.windows=530
editor.window.width.default=1200
editor.window.width.min=1000
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

pentius

On Linux, I just maximize the window and I have set in the Preferences a bigger font size. You only need to set the font size once though you may depending on OS maximize the window each time you start it.

DrSpawn

I try to adjust preferences.txt but no luck. One thing that really help that using external editor. Icons is really small.

pjrc

Long-term, I believe the transition to 4K displays with much higher than 100 DPI resolution is going to require a lot of work in the Arduino IDE.

The editor font can scale.  Java is responsible for rendering the menus.  But the toolbar is fixed bitmaps.  Significant programming work is going to be needed inside the IDE to truly make everything scale well to high-res 4K displays.

osman

High DPI displays are just going to get more and more common, so I hope someone is working on a plan to fix this. You should be able to display fonts based on point size and absolute size rather depending on pixels for dimensions. It's not just the toolbars which are the improper height, it is other parts of the window as well. Changing the font size only fixes the editor. I've attached a screenshot which I have scaled down so hopefully those of you on lower DPI displays can see what it looks like.


lwhitacre


Using: Windows 8 Lenovo laptop 2560x1440


Would anyone like to try to read "About Arduino" on my screen?  It comes out rendered about 1.75" wide and 1.5" high.  Good luck!

I successfully changed the font and font size in preferences.txt but this has no effect in the About dialog box.

           editor.font=Consolas,plain,28

The default fonts were one or two pixels wide.  Nearly invisible.  Thanks to another forum writer I changed to Consolas and can now read the screen without straining.


Best regards

pjrc

If anyone is working on this problem, they haven't said anything on the Arduino Developers Mail List.  There's no apparent work happening on any of the branches or commits on Arduino's github repository.

Internally, Arduino does use fixed bitmaps and pixel coordinates for some things, like the blue/green toolbar.  It would seem all those code would need to be redesigned.

westfw

Is there a github issue reported for the problem?


the-fallen

#12
Mar 14, 2015, 10:44 am Last Edit: Mar 14, 2015, 10:45 am by the-fallen
Also Swing is not yet capable of handling HighDPI Displays (i.e. read Windows Scaling value) - a problem that is not on the feature-list of the next Java Version. So it might take a long time until this is adressed by Java/Swing.


I have an 4k Display, too with the same problems mentioned above.
One solution can be (I do it that way in Java):

1: Read the current (X-)resolution of the current screen where Arduino is displayed (important not to use the absolute resolution to adress multiscreen configurations).

2: if it is higher than 1920x1080 (I only use the X-resolution) then calculate the factor
    the current resolution is higher than 1920x1080.

3: Iterate all children of JFrame and resize them (including the images used) by that factor.


It will take about 100 lines of code and it will work at least on Linux and Windows (I have no Mac to test it there).

pjrc

2: if it is higher than 1920x1080 (I only use the X-resolution) then calculate the factor
    the current resolution is higher than 1920x1080.
That decision might not be so popular with people who use 27 inch and 30 inch monitors, which display 2560x1440 and 2560x1600 resolution.  They have similar same pixel density as the smaller, more common consumer screens using 1920x1080 and 1366x768 and other low resolutions.


Quote
It will take about 100 lines of code and it will work at least on Linux and Windows
Really, only 100 lines?

You might be right, but you might also be underestimating the number of places in the Arduino IDE that have fixed pixel coordinates.

Maybe you ought to jump into this and write some of those 100 lines?  I'll be really impressed if you manage to pull it off with so little code.

the-fallen

#14
Mar 14, 2015, 07:15 pm Last Edit: Mar 14, 2015, 09:29 pm by the-fallen
I never worked with the Arduino Source. But I just downloaded CygWin and the latest code but it may take a long while until I have a clue where to start within that code.
But here is some code I used for another Project. Maybe someone more experienced with the Arduino/Processing GUI would try to implement it.


Note: this particular code is taken from a wrapper tool I wrote that loads the original software (available as jar-file) and then accesses the JFrame component (which was not protected) and iterates all child-components. The software that I loaded with this wrapper has several "specialities" (code with fixed sizes, fixed fonts, and so on) so there is a lot of code that takes care of certain UI-elements. But the general idea should be clear.
I just translated my commentary to English - I hope they are understandable.


http://pastebin.com/cnsBBxSM


For the Arduino IDE I guess the only components that need to be adressed are those in the toolbar as well as the tabs and the status bar. Everything else just scales fine or can be set (e.g. the editor's font size).
Chances to have it done within 100 lines are not that small (I hope - even if not it does not matter as long as it will work).



Go Up