FullPageOS – A RaspberryPi distro to display a full page browser on boot
github.com
github.com
For anyone interested heres a dirty bash script I had:
1. Auto Login & Disable Screen Blanking: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=66&t=18200, http://elinux.org/RPi_Debian_Auto_Login
3. Adjust Overscan and force HDMI hotplug: nano /boot/config.txt disable_overscan hdmi_force_hotplug
4. Install Chromium, Matchbox, unclutter: sudo apt-get -y install unclutter matchbox chromium-browser
5. Add a start up script:
unclutter & xset -dpms xset s off
matchbox-window-manager & while true; do sudo rm -r /etc/chromium su -c "chromium-browser --kiosk --incognito http://localhost" -s /bin/sh pi done
The script logs in and starts x with matchbox (better performance than LXDE default), opens Chromium to localhost (nginx would show a page).
I remember I added a few other things to 'sed' replace Pi config files to display a mp4 splash screen I made in AE (it looked marvelous). At one point I had a front end that could manage Wifi and do some other basic tasks. Using PHP and Nginx. Shamefully hackey.
I was inspired by Firefox OS some time ago and found that I could access various parts of the filesystem via nodeJS. My plan is to run my node app and launch Electron fullscreen when the Pi boots.
https://github.com/Lerc/notanos
There's a quick runthough in this video.
iceweasel "https://www.google.com"
...and installing something like https://addons.mozilla.org/en-us/firefox/addon/r-kiosk/Or, you can take advantage of this almost two years old bug related to full screen mode: https://bugzilla.mozilla.org/show_bug.cgi?id=1049807
It takes ~1 minute for my RPi2 to boot and start IceWeasel, but it gets the job done in the quickest way possible.
Though struggled getting Iceweasel to start in full screen from command line, afaik there no flags, one way was to close in fullscreen state or install a plugin. Further IW shows first run dialogs. Annoying if your deploying several Pis, then theres the cursor which unclutter package helps to solve. Lastly matchbox x uses less ram than LXDE which was important in my use case.
Chromium is better if you want to seamlessly deploy Pi's without spending too much time configuring them, theres a trade off somewhere - the official Chromiums package is old and IW is newer with less API.
You may want to consider wrapping your command inside the while loop in the script above. I added did this after I experienced IW and Chromiums unexpectedly closing sometimes. Helped alot.
This project does look interesting though. Last time I did this the Pi was a bit underpowered for some JavaScript heavy dashboards and the Wi-Fi was really flaky. Perhaps the Pi 3 has fixed these things but I haven't tried it.
[0] https://shutdownscanner.com/blog/posts/Raspberry-Pi-Digital-...
My goals were small size and building something very secure, and I think I pulled it off. The resulting disk image is on the order of a couple hundred megabytes, iirc (X is very big), and it does not permit interactive login by default (no ssh). It also runs the root filesystem in read-only mode. As a bonus, you get the entire Yocto ecosystem.
If you have video files or use e.g. youtube-dl and then play video back with omxplayer it's nice and smooth (although using the --loop option seems to make the video freeze after several hours/days; memory leak?). Our solution was a 2-line bash script to start a new omxplayer instance when the previous one finishes ad infinitum until you Ctrl+C, and that's run for 7 or 8 months now without a hitch.
Just a Python script with playlist support, really:
https://github.com/sapo/digital-signage-client
We eventually gave up on using Pis due to lack of decent hardware acceleration on the browser (still missing, BTW) and I then built this:
https://github.com/sapo/android-signage-client
Plenty of videos and samples at both links.
[0] https://www.riscosopen.org/content/downloads/raspberry-pi
Edit: there is a lite version at 557MB, didn't notice at first due to it having two dates in the name
It seems like a simple how-to blog post would have been more appropriate.
Here's the scripts:
https://github.com/guysoft/FullPageOS/blob/devel/src/fullpag...
https://github.com/guysoft/FullPageOS/blob/devel/src/common....
So on a windows or mac machine (or pretty much any OS that can handle an SD card in the first place), you can write the image, edit the settings on the card, then stick it in the pi & have it up and running. The methods that most of us would use to do this manually, are near impossible to preflight from an OS that doesn't support ext2/3/4.
I was just messing around with this on a Raspberry Pi 3 this morning and it works really well.
In case of server returning non-200 response, it should wait a few seconds and refresh. In case of network disconnected (especially when using wifi), same thing - refresh the page.
The periodic refresh is necessary for pages that don't refresh, but even for wallboard-designed content that stays updated, scripts break and things go wrong. The browser itself refreshing is a fail-safe. You should never have to touch these things once they're installed, and that includes doing a hard reboot.
Another nice-to-have feature: turning off the display signal at night (letting the display sleep) and turning it back on in the morning. With computer monitors this is easy, with TVs it probably needs HDMI-CEC, but seems possible.
"Opensource kiosk software to get you onto the Web"