HOWTO: Installing Custom Applications on SkyLark 4.4

I’ve wanted to add some custom applications to the DC running SkyLark (currently 4.4)… this is the process to install it so it remains after a reboot… Although Skylark is based on the OS.js platform (, its customized quite a bit.

Additionally Skylark is read only, any changes you make will be overwritten on the next reboot. To get around this, we will use the user script service to re-install the customizations after every reboot, then bounce the window manager.

This really starts the ball rolling to the creation of many custom applications that can be developed… building a “package” to drop on the system would be rather trivial. Lets add that to the TODO list :slight_smile:

Create your custom application
you can use an existing application as a template, but you will need to modify much of it so its unique. Developing the application is beyond the scope of this post, and requires more effort. (mine clearly needs some work, but wanted to document this first)

Existing applications can be found in: /usr/share/www/packages/default
copy one of these to your writable location… in my case it was /mnt/conf/bin
modify the application as required.

Create Custom Icons
you will need both 16x16 and 32x32 size icons
store these in your writable location for example /mnt/conf/bin

Create a custom packages.json
Copy the packages.json file from /usr/lib/node_modules/ui2 to your writable location… /mnt/conf/bin

modify the file adding an entry to the “www” group for your new application… Check the syntax of the file with “jq -c < packages.json” when your complete.

for my example i added the following…

"default/RACHEL": {                                                      
            "className": "ApplicationRachel",                
            "name": "RACHEL",                                                    
            "mime": null,                                                   
            "icon": "apps/RACHEL.png",                                          
            "category": "utilities",                                
            "preload": [                                                     
                    "type": "javascript",                                           
                    "src": "combined.js"                                     
                    "src": "scheme.html",                                    
                    "type": "scheme"                                        
                    "type": "stylesheet",                                    
                    "src": "combined.css"                                    
            "type": "application",                                           
            "path": "default/RACHEL",                                     
            "build": {},                                                     
            "repo": "default"      

Add a User Service Script
Create a “” script to place all the files in the proper place then restart the ui service…


cp -f /mnt/conf/bin/packages.json /usr/lib/node_modules/ui2
chmod 644 /usr/lib/node_modules/ui2/packages.json

cp -R /mnt/conf/bin/RACHEL /usr/share/www/packages/default
chmod 755 /mnt/conf/bin/RACHEL
cp -f /mnt/conf/bin/RACHEL_16x16.png /usr/share/www/themes/icons/default/16x16/apps/RACHEL.png

cp -f /mnt/conf/bin/RACHEL_32x32.png /usr/share/www/themes/icons/default/32x32/apps/RACHEL.png

/etc/init.d/S70ui2service restart

when you goto the Skylark Web UI, you will see your new application…


Chris, had no problem modifying packages.json, but where do I place the RACHEL.png, and the new I’m using WebEdit to edit and create the files, and an WS_FTPLE to wonder thru the files on the DC. Ken

Forgot this point, but I can’t change my DC to be writable with @Abhishek suggestion from last Spring:

The filesystem for external storage is mounted read-only to minimize the chances of file system corruption you could ssh in and remount it read-write temporarily:

sudo mount -o remount,rw /mnt/external

then upload via ftp and then switch it back to read-only:

sudo mount -o remount,ro /mnt/external

Place the script and icons in the /mnt/conf/bin folder…

I saw this method however I didn’t go that route as I wanted to keep the read-only capabilities and an easy way to disable it all to return it back to default…