Raspberry Pi PySide Minimal Image | Perfect for GUIs | Updated 04/03/16

Here is an image I have created to get people quickly into creating a Python GUI on the Raspberry Pi.

- Version 0.6
- Based on my Jessie Minimal Image
- Latest Jessie kernel and user space (as of 04/03/16)
- Boots directly to Python example GUI written using PySide
- Runs bare bones Xorg
- Uses Openbox as simple small window manager
- Disabled keyboard /mouse shortcuts in Openbox
- Runs under user Pi for better security
- Boots into GUI in approx 8 seconds
- Quiet boots into GUI (no console text etc)
- Works on all Raspberry Pi's (including Pi Zero and the new Pi3)
- Includes WiFi and Bluetooth Drivers (for Pi 3)

Download Info:
Download Size: 311MB (.zip)
Image ISO Size: 869MB

Download Link:

- Download the file
- Unzip the .img file
- Burn the .img file to SD card
- Boot in Raspberry Pi (any version)
- Raspberry Pi will reboot twice initially while setting up
- You will find yourself in a very simple example GUI

root / raspberry

Tips / Info:
Run the below commands in terminal as root user to hide the mouse cursor (for touch screens)

sed -i 's/startx/startx -- -nocursor/' /etc/systemd/system/startx.service
systemctl daemon-reload

systemctl restart startx.service

Run the below commands to calibrate your touch screen

systemctl stop startx

## Do calibration ##
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_FBDEVICE=/dev/fb0

## Do Xorg calibration ##
FRAMEBUFFER=/dev/fb1 startx &

DISPLAY=:0.0 xinput_calibrator

Copy the output of the above command

nano /etc/X11/xorg.conf.d/99-calibration.conf

Paste in the copied text and save the file (Ctrl-X, Y, ENTER)
It should look something like this


Now we kill X and start our app service.

pkill x
systemctl start startx

Done :)

If your working on the GUI 'live' on the Pi, you can run the below command to restart X and the Python script

systemctl restart startx.service

I use WinSCP to have the Python file open in my favorite text editor (Sublime) so I can save it and it will be automatically uploaded.

Then I have a terminal open so I can simply run the above command to restart to see changes.

Here is a run-down of the boot procedure and where to find everything

- A systemd service runs the command 'startx' as user Pi on boot
  This service file is located /etc/systemd/system/startx.service
- Startx calls the .xinitrc file in user Pi home directory which starts an openbox-session
  This file is located /home/pi/.xinitrc
- Openbox starts and runs it's autostart file
  This file is located in /home/pi/.config/openbox/autostart
- This autostart file runs a bash script in our app folder
  This script is located /home/pi/app/start.sh
- This script runs our python script in a forever loop (in case of crashes)
  The python script is located /home/pi/app/main.py

User Pi has been given sudo privileges for one file only. This file is /home/pi/app/functions.sh
Any commands that require root privileges can be added to this file and then called from the Python script.
eg. os.system('sudo ./functions.sh reboot_system') which is used in the example.