Raspbian update: supporting different screen sizes

You may have noticed that we released a updated Raspbian software image yesterday. While the main reason for the new image was to provide support for the new Raspberry Pi 3 Model B+, the image also includes, alongside the usual set of bug fixes and minor tweaks, one significant chunk of new functionality that is worth pointing out.

Compatibility

As a software developer, one of the most awkward things to deal with is what is known as platform fragmentation: having to write code that works on all the different devices and configurations people use. In my spare time, I write applications for iOS, and this has become increasingly painful over the last few years. When I wrote my first iPhone application, it only had to work on the original iPhone, but nowadays any iOS application has to work across several models of iPhone and iPad (which all have different processors and screens), and also across the various releases of iOS. And that’s before you start to consider making your code run on Android as well…

Screenshot of clean Raspbian desktop

The good thing about developing for Raspberry Pi is that there is only a relatively small number of different models of Pi hardware. We try our best to make sure that, wherever possible, the Raspberry Pi Desktop software works on every model of Pi ever sold, and we’ve managed to do this for most of the software in the image. The only exceptions are some of the more recent applications like Chromium, which won’t run on the older ARM6 processors in the Pi 1 and the Pi Zero, and some applications that run very slowly due to needing more memory than the older platforms have.

Raspbian with different screen resolutions

But there is one area where we have no control over the hardware, and that is screen resolution. The HDMI port on the Pi supports a wide range of resolutions, and when you include the composite port and display connector as well, people can be using the desktop  on a huge number of different screen sizes.

Supporting a range of screen sizes is harder than you might think. One problem is that the Linux desktop environment is made up of a large selection of bits of software from various different developers, and not all of these support resizing. And the bits of software that do support resizing don’t all do it in the same way, so making everything resize at once can be awkward.

This is why one of the first things I did when I first started working on the desktop was to create the Appearance Settings application in order to bring a lot of the settings for things like font and icon sizes into one place. This avoids users having to tweak several configuration files whenever they wanted to change something.

Screenshot of appearance settings application in Raspbian

The Appearance Settings application was a good place to start regarding support of different screen sizes. One of the features I originally included was a button to set everything to a default value. This was really a default setting for screens of an average size, and the resulting defaults would not have worked that well on much smaller or much larger screens. Now, there is no longer a single defaults button, but a new Defaults tab with multiple options:

Screenshot of appearance settings application in Raspbian

These three options adjust font size, icon size, and various other settings to values which ought to work well on screens with a high or low resolution. (The For medium screens option has the same effect as the previous defaults button.) The results will not be perfect in all circumstances and for all applications — as mentioned above, there are many different components used to create the desktop, and some of them don’t provide any way of resizing what they draw. But using these options should set the most important parts of the desktop and installed applications, such as icons, fonts, and toolbars, to a suitable size.

Pixel doubling

We’ve added one other option for supporting high resolution screens. At the bottom of the System tab in the Raspberry Pi Configuration application, there is now an option for pixel doubling:

Screenshot of configuration application in Raspbian

We included this option to facilitate the use of the x86 version of Raspbian with ultra-high-resolution screens that have very small pixels, such as Apple’s Retina displays. When running our desktop on one of these, the tininess of the pixels made everything too small for comfortable use.

Enabling pixel doubling simply draws every pixel in the desktop as a 2×2 block of pixels on the screen, making everything exactly twice the size and resulting in a usable desktop on, for example, a MacBook Pro’s Retina display. We’ve included the option on the version of the desktop for the Pi as well, because we know that some people use their Pi with large-screen HDMI TVs.

As pixel doubling magnifies everything on the screen by a factor of two, it’s also a useful option for people with visual impairments.

How to update

As mentioned above, neither of these new functionalities is a perfect solution to dealing with different screen sizes, but we hope they will make life slightly easier for you if you’re trying to run the desktop on a small or large screen. The features are included in the new image we have just released to support the Pi 3B+. If you want to add them to your existing image, the standard upgrade from apt will do so. As shown in the video above, you can just open a terminal window and enter the following to update Raspbian:

sudo apt-get update
sudo apt-get dist-upgrade

As always, your feedback, either in comments here or on the forums, is very welcome.

62 comments

Naich avatar

If you are changing from one pixel to 4 pixels, is this not pixel quadrupling?

James W. Williams avatar

Technically, yes, but it’s conventionally called doubling, as the x and y pixel counts are both doubled.

Marek Staněk avatar

The terminus-technicus is pixel doubling, because the size is doubled in every direction. Pixel quadrupling would be the right term in the context of pixel area, which is not the case, because screen resolution is designated in numbers of pixel per direction, not of their area.

Dutra de Lacerda avatar

Actually, it’s Resolution reduction, relative to each dimension.
Since it ‘sounds’ wrong to speak of reduction (though needed),
the inverse reference of results is used (with equivocations).

The Art of ‘Communication’ assumes lesser-meaning and
emotional value to be delivered. It’s common practice in
every media. Who has not noticed highlight equivocations?

People are assumed not to notice, just needing to be happy.
Double is good… More close to the intention, not with facts.
Everyone not looking, without negative words, is happier.

… Admirable New World!

James W. Williams avatar

Sorry if this is a duplicate, the first attempt didn’t seem to post.

Can you say what the nominal values are for “large”, “medium” and “small” screens? I run my Pixel desktop on a 1920×1080 monitor. That would be a “large” screen, I presume. I’m eager to try the “small” setting on the official touchscreen, which has rather low resolution.

AndrewS avatar
Simon Long avatar

I’ve been deliberately vague about that! I’m not setting any hard and fast rules for which preset people should use – they are literally meant to be “large”, “medium” and “small”, and I’d expect people to try them all and see which one they prefer.

Leaving aside anything else, there are multiple variables – how many pixels your screen has, how big the screen is, how far away you sit, and how good your eyesight is! All of these affect which setting you might prefer. With a regular size (22-24″) monitor running at 1080p, the medium setting is the one I use.

James W. Williams avatar

Thanks, I thought the lack of specific screen resolutions might be deliberate. I have a couple of 7″ screens with 1280×800 resolution, which can be hard to read. I’ll give all the options a try.

Stewart Watkiss avatar

Good work! That is really useful.

Any chance of a simple way to change the orientation of the display in a future update? Useful when you need the HDMI cable to come out of the top / bottom depending upon the installation.

AndrewS avatar

Have a look at the display_hdmi_rotate option in https://www.raspberrypi.org/documentation/configuration/config-txt/video.md

Stewart Watkiss avatar

I’m aware it’s possible through hand editing the config file, but I am hoping it will make a future version of the raspi-config tool.

AndrewS avatar

There’s lots of config.txt settings which _could_ be added to raspi-config. It’s Simon’s responsibility to work out which settings would be useful to the most people, while still keeping the application easy-to-use and not making it overwhelming for beginners ;-)

Brian Taylor avatar

A few things I hope you can fix!

I try to watch YouTube video on chromium and it keeps freezing the pi to the point where my only option is to unplug the pi to reset it. I heard there is a reset pin, but I’m not sure how much safer it is compared to unplugging it..

The other issue is how to find apps for the pi…

It would be much easier if you follow the same example as Apple and Android with their app store, where you can actually see what is available.

As it is now, finding anything is a shot in the dark.

Simon Long avatar

YouTube on Chromium works fine in our pre-release testing, at least on a Pi 3. YouTube under Chromium will probably struggle on older Pis – it might be ok on a Pi 2, but I’d be quite surprised if it was even usable on a Pi 0 or Pi 1.

As for apps – go into Preferences under the Main Menu, launch “Add/Remove Programs”, and browse – there are several thousand in there, so that should keep you busy for a while…

Brian Taylor avatar

Thanks Simon. I’m using the Pi 3B+ v1.2 with the latest software updates.

I had a friend help me make a desktop icon that runs both
sudo apt-get update
sudo apt-get dist-upgrade
Which I do every day.

I’m not sure which version of raspbian I’m using, but it is what ever one it upgraded to when I installed the Arduino IDE app. (And yes guys, you can program Arduino on the pi!)

After watching 5 or more YouTube videos in a row on a 60 inch screen, chromium starts getting slow, the voices out of sync and eventually the chromium (kill process) window appears. At that time the mouse is almost completely unresponsive or the pi is frozen.

Is this a software issue, or is it possible that the pi is overheating?

I was hoping to find a YouTube app for the pi..

Simon Long avatar

It’s possible the Pi is overheating, but I’d have said it was unlikely – do you get the thermometer icon in the top right of the screen? If not, then the Pi should be fine.

The size of the screen makes no difference – but are you watching in full-screen mode? That does put quite a load on the Pi, as it has to rescale every frame of video. If you are watching in full-screen mode, try watching the videos in the normal Chromium window and see if that makes a difference. I’ve certainly run extended sessions of YouTube in the standard Chromium window on a Pi 3+ with no issues, but full-screen can cause problems.

Karsten Johansson avatar

I generally watch Youtube vids using the cinematic view instead of full screen. That seems to do the trick admirably. Make sure you have adblock plus or something like that, as well. The background loading of ads kills performance at just about any resolution.

Incidentally, I’ve discovered some local videos only work if you do mplayer -vo x11. It doesn’t fill the screen all the way, but it does play smoothly. I wish I knew how to do that with VLC, and with Chromium for that matter.

Also, the previous comment about it probably not working on Pi Zero… correct. I just tried that a week ago and youtube will barely even load before you give up and hard reboot.

AndrewS avatar

There *used* to be an “app store” https://www.raspberrypi.org/blog/introducing-the-pi-store/ but it’s been discontinued.

Jack Burton avatar

just updated my pi2 B v1,,,with Pi original 7″ touch screen ,and for me it worked on medium size setting ,samll setting the icons were just to small

Ed avatar

Very useful for RPD on retina screens! But I don’t see what it could do for Raspbian on RPi with “large-screen HDMI TVs”; isn’t the maximum resolution 1920×1080 anyway? So especially on large screens, that’s not high but low resolution already, no need for pixel doubling. Right?

Simon Long avatar

As I’ve mentioned above, these options are not specifically aimed for particular types of screen; they are just designed to enable users to find a more usable setting than the default if they are using a Pi in some fashion other than as a standard desktop computer. To be honest, if using a large-screen HDMI TV, the best option is probably the one which uses larger icons and fonts to make it more readable at a distance – you tend to sit a lot further away from a TV than you do a monitor. I wouldn’t recommend pixel doubling in that use case, but there may well be people – particularly those with visual impairments – for which it is useful with a large screen TV.

AndrewS avatar

Simon – given that you can’t tell what mix of resolutions and screen sizes people might end up using (e.g. large screen with high resolution, large screen with low resolution, small screen with low resolution, small screen with high resolution) I wonder if maybe changing the buttons to “large fonts”, “medium fonts” & “small fonts” might be easier to understand than “for large/medium/small screens”? *shrug*

Simon Long avatar

I did consider numerous alternative labels, but the trouble with the one you suggest is that it is misleading, as the changes affect a lot more aspects of the design than just the fonts; if you want to change the font size, you use the system font box on the previous tab.

I’ll be the first to admit the labels aren’t perfect, but they were the best option I could come up with after several days of pondering!

fanoush avatar

Well, more correct is to talk about pixel density (dpi, ppi). “For high/medium/low density screen” would be similar to current labels but more correct. But simple labels like “large size/medium size/small size” would do too.

DieReineGier avatar

Maybe something along the lines of
“Make Icons Great Again”?

SCNR

MW avatar

“x86 version of Raspbian”

That is not correct it is x86 Debian Stretch with RPD, Raspbian is a re-spin of ARMHF Debian…

Simon Long avatar

Yes, oddly enough I know that, being the person who built it…

However, it’s hardly a catchy title, and I really can’t be bothered to type it all out every time. It may not be strictly technically accurate, but most people know exactly what is meant by “the x86 version of Raspbian” – particularly when it is accompanied by a link to the relevant blog post.

MW avatar

The Forum Moderators have moved a ton of posts because the Poster is stating x86 Raspbian and therefore not posting in the correct section. Also generally also trying to wean of Pixel !

Therefore I feel that your use of the x86 Raspbian is not helpful.

I appreciate that you have done great job of RPD and amazed what you have achieved in the last couple of years, for that I give you 100 out of 10…

SOCSBC avatar

Simon,

Thank you for “the x86 version of Raspbian”. I’m in love with it, and carry it, daily, on my keychain. The built-in persistence feature is brilliant. I’m assuming you’re part of Raspian.org? If not, please let me know if you’ve got a Patreon, etc. so that I can “tip” you. I really enjoy the desktop version of Debian with RPD, and would like to show my appreciation.

Simon Long avatar

Thank you for your kind words! I work for Raspberry Pi themselves, rather than Raspbian.org, and they already pay me for my work, so much as I appreciate your offer of a tip, it’s really not necessary – it’s enough to know that people are using and enjoying what I create, so many thanks for that.

Anna Graham avatar

I’d love to run a 4k monitor at native resolution, even at a slow refresh rate, for showing big crisp detailed photos. Supported?

Kaloyan Mokrenov avatar

hi simon, were there new screen resolution options added? would love to see my pi 3 able to make use of the full estate of my ultrawide (21:9) monitor, should i be looking for something like that in the future or us it too much to ask from the hardware?

Simon Long avatar

We didn’t add any new HDMI resolutions; those are supported in the hardware and haven’t changed for some time.

Elfen avatar

Need to download and try it out.

Heimo Wissing avatar

The system seems well maintained!
Going through release notes I miss a bugfix for I2C clock stretching and a solution for reliable small UART use.

Hope its on the TODO list for the near future.

Diego avatar

Thanks for the effort to improve and maintain Raspbian, i have a request to make to you, could you improve the interface used to render the video files omxplayer under VLC or terminal please?, it’s awkward, in my opinion rather ugly and puts all the video files in full screen by default, which prevents me from making another things while watching a video. Thank you very much, greetings.

James Hughes avatar

It’s something that has been thought about for a while, but we have an huge dev program, and this isn’t at the top of the list.

Simon Long avatar

A nicer multimedia player is on the “to-do” list (and has been for at least three years now). I can’t say when we will finally get it done – there are so many other things that need doing – but it will happen at some point.

Diego avatar

Thanks for the response, James Hughes and Simon Long, i know that you have a lot of work, regards!

David avatar

I noticed a bug (2018-03-13-raspbian-stretch-lite), confirmed and reproduced… if you prepare wifi credentials beforehand in the image: https://raspberrypi.stackexchange.com/a/57023 and then boot RPi without ethernet cable, expecting it to connect to your wifi, you may be surprised… if won’t and wlan0 will deactivate (not showing in ifconfig output), you fix this by:

$ rfkill list all

0: phy0: Wireless LAN
Soft blocked: yes
Hard blocked: no
1: hci0: Bluetooth
Soft blocked: no
Hard blocked: no

$ sudo rfkill unblock all

I checked and this doesn’t happen on previous Raspberry model (3B).

If you boot with ethernet cable plugged in the first time (but negating the benefit of prepared credentials), wlan0 doesn’t deactivate (problem is not present).

James Hughes avatar

Probably best to report on github or on the forums.

Brett avatar

Hi, I’ve done the update and as best I can tell it worked fine (kernel version matches the latest release and all programs are still working). However, when I plug the card into my Pi3+ it doesn’t get past the rainbow screen. On the FB post it was suggested to run sudo rpi-update. I did that and it did some updates but the problem still persists. Any ideas? Thanks

Simon Long avatar

It sounds like something in your system failed to update properly. I’ve just done a sudo apt-get update followed by a sudo apt-get dist-upgrade on the December 17 Raspbian image (which had no support for 3+), stuck the card in a 3+ and it booted fine.

I’d suggest trying another sudo apt-get update / sudo apt-get dist-upgrade with your card in the Pi 3, and watch the update process to make sure all the updates happen. You are using a Stretch image and not a Jessie one, btw?

Brett avatar

Thanks Simon,
Yep definitely on Stretch. Ok will try again but I suspect I’ll just have to do a full reinstall on a new card to get it going properly (not the end of the world).
Cheers,
Brett

Drew avatar

Help ! I just upgraded – set the default to large screen and now the taskbar has disappeared on my LG 50” HD TV – tried changing the defaults with right mouse but cannot access the taskbar so no command line access or ability to shutdown my Pi …… :S and suggestions appreciated

Simon Long avatar

Ctrl-Alt-T will open a terminal window even if the taskbar is gone. Then try entering “lxpanel -p LXDE-pi” in the terminal to relaunch the taskbar and see if any error messages come up.

Drew avatar

Thanks Simon that seemed to sort it :)

Jim Manley avatar

Thanks very much for this latest update, which has become a Springtime rite for years now, often most pleasantly accompanied by new hardware, as is the case this year. I’m hoping the new resolutions will be helpful for very small touchscreens, such as 2.7-inch models offered by texy, Adafruit, et al. I realize that it may not help with dialogs that are fixed-size and all options and OK buttons can’t be seen, let alone be pressed or otherwise interacted with appropriately. Of course, you want to perform as much configuration as possible on a larger display and then boot with the smaller display, but sometimes dialogs pop up unexpectedly and not having to connect a bigger display is very convenient, when possible.

The PoE option and speed boost are also very much appreciated, as are USB and network boot now being supported by default without needing to do OTP bit burns. Support for the latest-and-greatest WiFi speeds and bands, as well as BT 4.2, are also great.

As we say in the Navy, Bravo Zulu to all involved!
All the Best,
Jim

Simon Long avatar

Choosing the “small screens” option should resize any dialog box drawn by a GTK application, as the smaller font causes all widgets to be drawn smaller. (GTK appears to size widgets based on system font size.) So it ought to help somewhat even with fixed-size dialogs.

Ed avatar

Siamon
Good morning I’m a new PI user, no background in programming, my Pi is the 3B model, software installed and running, I’m a member of the Ham Radio community, so small and portable is a good thing. I’m looking for a easy way to switch between a 3.5 in touch screen and the HMDI connector. I’ve read and downloaded some information on creating a desktop icon to select between these two. So my question is could that option be added to a future update to the software? Would benefit us older windows users.
Thanks for your time
Ed

James Hughes avatar

Best to ask this sort of question on the forums, loads more people ready to answer you there!

Alejandro avatar

Noobi working on this platform. Would you know if the OS would support Citrix Receiver, not sure exactly what OS to choose TX
https://www.citrix.com/downloads/citrix-receiver/linux/receiver-for-linux-latest.html

Simon Long avatar

It looks as if Receiver has an ARM HF (hard float) build available from https://www.citrix.co.uk/downloads/citrix-receiver/linux/receiver-for-linux-latest.html, so there’s a good chance it would work on Raspbian. We’ve not tried it, though, and I don’t know if Pi would have enough processing power to run it well – the best think to do is to try it!

Rookie 3B+ avatar

Just started my pi3 B+ with original 7″ touch screen and was foolish enough to enable “Pixel doubling”. Now can’t disable it because menu is “outside of screen” – unreachable. So my RasPi is now out of order… damn

Steven Jackson avatar

Foolishly, I turned on Pixel doubling and now can’t scroll to the bottom of the screen to turn it off.

How do I change back and/or scroll?

Steve

Steven Jackson avatar

Hmmm, fixed it by blind tabbing to the correct field. I hope there is a more eloquent solution.

Derek Chandler avatar

So I bought a RPI 3 B+, an official 7” LCD screen and official screen case, and downloaded the latest version of Noobs and installed Raspian. And still the screen is upside down!

Why?

Simon Long avatar

We don’t manufacture or sell an “official” screen case, so I suggest you take that up with whoever made the one you bought – they have presumably printed the logo on upside-down…

anitha avatar

How can we install different fonts in RSPI , since we are facing a problem with fonts .
For example, if files contains different language such as kannada,tamil,hindi etc the file contents are not displayed.
so, please any one suggest some solution for this problem.

rab avatar

Love the three screen size defaults. In my case, I use the pi on several monitors and use the screen defaults option to make it easier to see on each.

One thing that would be helpful would be the ability to personalize those screen defaults. So, for example, if I like to see the menu bar on the top for large screens and at the bottom of small screens, I would like to set the “default” to my personalized default.

In other words, I would like to be able to create my own set of default screen appearances for specific monitors.

Is there a way to do that, already?

Thanks for the great products.

Simon Long avatar

There’s no way to do it at present – the presets are hard-coded into the application – but I have considered making them values which are loaded from a configuration file, which could be edited by the user. I’ll look into doing that for a future release.

Comments are closed