Skip to content

For Developers

FoxLauncher is a platform that has a good deal of benefits that typical websites don't have. This page is dedicated to informing developers on the differences from typical web development.

Info

What are all these funny file names?

.flr : FoxLauncher Resource, a js file .flz : FoxLauncher Zip, a zip file containing a folder of the same name .flc : FoxLauncher Config, an xml file with config data.

Creating a .flz

An .flz will load provided it contains zip data and a config.flc file, but for usability its advised it contains a folder named the same thing as the folder.

Heres an example example .flz file tree

tab-game.zip # zip file
└── tab-game # index folder
    ├── index.html # arbitrary contents
    ├── index.js
    └── config.flc

Creating a .flc

A config.flc is searched for when installing an extension, this can be technically stored anywhere, but I advise you to put it in the index folder.

A basic config looks like this:

<?xml version="1.0" encoding="utf-8"?>
<SETTINGS>
    <NAME>A Dark Room</NAME>
    <AUTHOR>Doublespeak Games</AUTHOR>
    <REQUIREMENTS>
        <PERM>cspinline</PERM>
    </REQUIREMENTS>
</SETTINGS>
<!-- GETTING GOOD USE OUT OF THE CAPS LOCK KEY, AREN'T YOU? -->

Limits

Basically any page load request that was not initiated by the browser or the user for a page using a filesystem: url will be blocked by chrome.

Please see Tab Control.

Inline JS

When FoxLauncher is launched from an extension it is forced to comply with the extensions CSP policies, this includes many CSPs restriction of unsafe inline. We can use point-blank to get around this, but my personal suggestion is to just put the script in another file when developing for FoxLauncher.

With an XML parser someone could make a script to auto covert all html files in a folder to not use unsafe inline, but I don't feel like doing that.

Extended Privileges

Most extended privileges FoxLaunched sites have can be summed up fairly easily. If FoxLauncher is installed on an extension page, you can then access the same chrome APIs that it has access to.

Check here for the list of all chrome APIs.

Tab Control

Controlling tabs can instead be accessed by the chrome.tabs API. This API is accessible to most extensions and due to the possessive powers of FoxLauncher, if the filesystem is a child of an extension you can access the same control of an extension.

You can read the documentation for this API here developer.chrome.com/docs/extensions/reference/tabs/.

BoyKisser API

The name says it all.