Portron

Convert your electron application into a bootable linux-based kiosk system.

GPL-2.0 License

Stars
37

Portron is a minimalistic, Super-Slim wrapper Linux distribution for your electron application.

A One-liner will transform your electron application into an installable ISO with a super-slim linux system fine-tuned to launch your electron application in kiosk mode, and provide all network and multimedia services. The script can be used standalone, or ideally integrated into your build system to automatically generate the bootable media with the rest of your artifacts.

Portron is based on Porteus-Kiosk distributions, a famous distribution for Kiosk devices that features a modern 64bit Linux kernel and relevant video, audio, network and multimedia drivers for today's devices, as well as a rock-solid, bulletproof and slimmed down linux system.

We have further finetuned the system to play nice with electron. Features like multi-monitors, touch screens, HDMI audio, hotplugging, storage of app cache settings in memory or storage partition ... have been taken care of.

The bootable system includes graphical wizards to configure the system from a fresh run: network, screen resolution, sound, microphone, keyboard layout ... as well as an option to install the system to the Hard Disk, SD-Card or the same USB Key (persistent installation)

But all this will be done in a whisper, then your application takes over.

Portron star feature is invisibility. Besides the UI of the Wizards that are launched to change settings, configure network or install to disk, there's nothing else but your application full-screen, without any borders, distractions or possiblity to interact with the underlying OS.

A typical screen flow of your lectron app launched on a computer from power-on would be:

* The splash screen YOU provide
* Your application, fullscreen.

nothing else.
cd /directory_of_your_choice
git clone https://github.com/nebular/Portron.git .

cd Portron
./install.sh

The above command will create symbolic links on /usr/local/bin for the Portron tools

electron-tgz2iso

Likewise, that name should also be the name of your electron package. If it sounds confusing remember it boils down to a simple rule: Use the tar.gz as-is. Do not rename or change anything.

electron-tgz2iso input-1.0.0-cool.tar.gz splashscreen.jpg input-1.0.0-cool.iso

        - first parameter: Your app in .tar.gz format as provided by eletron-builder
        - second parameter: A Splash screen to be displayed while your application is loading
        - third parameter: Name of the resulting ISO file

... and that's it. You will get an ISO file that will be like 70Mb bigger than your original application. It's all self-contained, run it on a Virtual Machine to test it, or ...

dd bs=1m if=yourapplication.iso of=/dev/xxx
(set XX to your unix USB device, eg. /dev/rdisk2 or /dev/sdd, etc. Be careful, you know)

The scripts are still a little rough, and if this dependencies are not met they can fail unpredictably.

mksquashfs (debian package squashfs-tools / brew package squashfs)
mkisofs (debian package cdrtools / brew cdrtools))
isohybrid (included, compiles on installation)

Isohybrid source code is provided, as it is a very small program, you can compile it yourself with gcc if not able to install it from your repository.

Considerations

Package structure:

./portron/

    ./bin           portron command-line utilities. Here are the scripts
                    you want to use, specifically electron-tgz2iso. You
                    can also generate the electron XZM module only with
                    electron-tgz2xzm.

    ./src           Portron SDK, not needed for packaging applications. Allows to cook
                    "distro images" that are used by the tool to package your application.
                    You can have several distro images finetuned for different purposes..

    ./lib           build support files

        ./portron.default/
                Portron Distribution used by the build tool to create the ISO.
                You can create additional distributions using the Portron Development
                Tools in src/

        ./xzm.fs
                a stub for your electron application with linux libraries and
                startup scripts. You can place scripts here to be executed at
                certain stages of the system initialization: Add ports to firewall, etc...,
                or add any required library

        ./src.initrd
                source initrd. contains Portron low level startup.
This tool is tested mostly on Mac OS-X and Debian systems, but it should work in any Linux meeting the
dependencies.

Mac OSX:
    brew install squashfs-tools cdrtools gcc
    compile isohybrid in bin/isohybrid (make.sh provided, needs a basic gcc)

Linux:
    apt-get install cdrtools squashfs-tools gcc

License

(c) 2018 Rodolfo Lopez Pintor - Nebular Streams

Released under GNU GPL 2.0 Please see attached file.

Porton is based on Porteus and Porteus-Kiosk linux distributions, http://www.porteus-kiosl.org, released under GPU GPL 2.0