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.

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.

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.

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).

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.

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).