I created a small, pocket computer from Raspberry Pi 3 and small 4" display with resolution 480x320. It is very hard to do anything on such small screen, so I've been wondering, if there's a way to virtually enlarge screen resolution, such that if mouse pointer approaches one of its edges, screen scrolls. This is purely software feature, so shouldn't depend on the screen itself. Is it possible?

  • Hi @Spook, what do you mean by saying "screen scrolls". What would scrolling have to do with screen resolution? Shouldn't it be, for example, that if the mouse approaches an application, or you double tap something, you zoom in? If you have an example of what you want to achieve (something done in some other project unrelated to the RPi) it might be easier to give you a suggestion.
    – David
    Mar 24 '19 at 21:20
  • 1
    @David, imagine, that we set virtual resolution to 1920x1080. Screen has physical resolution of 480x320, so displays only left-top rectangle of the bigger screen. Now when I move mouse to right edge of the screen, the view "scrolls", so that I see part more to the right. Applications thinks, that we have FullHD resolution, but at the moment only part of it is displayed on the screen. On Windows press Win+Num Plus - Windows zooms image in and you can scroll by moving mouse. I want to achieve the same, but with bigger resolution, not zoom.
    – Spook
    Mar 24 '19 at 21:45
  • I understand now. What screen are you using? Is it HDMI?
    – David
    Mar 24 '19 at 21:48
  • @David, no, GPIO (SPI).
    – Spook
    Mar 25 '19 at 7:27

This feature is called "viewport panning" and it can be enabled using xrandr:

xrandr --output default --mode 800x600 --fb 1280x1024 --panning 1280x1024

You still need a framebuffer large enough to fit the whole virtual screen, so you might need to set framebuffer_width and framebuffer_height in config.txt.

If your screen comes with a custom driver, this will only work if the driver implements RandR extensions.


There are a couple of questions online regarding how to dynamically change your RPi's screen resolution. Here's an explanation on changing your screen's resolution without rebooting your RPi. This explains how to zoom out to fit the entire display on your screen.

To understand the different HDMI output formats check the official documentation on the video options in the config.txt file. Here you can find additional information about this file.

You will probably want to run a script that changes these configurations without the need to reboot your RPi. Once you test out your script, you can configure your RPi to run it in the background every time you boot it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.