origin os project manager (fork of opal)
Find a file
2026-02-26 20:56:28 +00:00
assets add images 2026-02-26 20:56:28 +00:00
fpp.osl add fpp todo 2026-02-26 20:48:12 +00:00
README.md add images 2026-02-26 20:56:28 +00:00

fpp

origin os project manager (fork of opal)

additions (to opal)

include

include allows you to... well include other files that arent specified with import("name")

{
  /* ... */
  "include": ["./module.osl"]
}

icon

simple icon parameter in opal.json that sets the built osl file's icon

{
  /* ... */
  "icon": "icn code"
}

fpp also supports a file alongside opal.json called icon.icn, this will do the same thing as the parameter

Note

if there is both a parameter and icon.icn, fpp will default to the parameter

'asset' importing

fpp allows you to also include non osl files, such as js files,

lets say in the project structure

myProject
|- script.osl
\- randomScript.js

fpp allows you to do

myScript @= import("./randomScript.js")
log myScript // the contents of randomScript.js as a string

and have that be packaged alongside the .osl files,

Note

you will need __import @= import;import @= i -> (i.endsWith(".osl") ? __import(i) open(i)) in your base script.osl if you want this functionality without fpp, but isnt required to build as fpp automatically removes it

scripts system

terminal commands in opal.json that can be executed by fpp script <name>

{
  ...,
  "scripts": {
    "myScript": "echo hi!",
    "myOtherScript": [
      "echo im a command",
      "echo im another command"
    ]
  }
}

build global variable

fpp provides a build global variable with the structure:

{
  "built": true/false,
  "package": /* opal.json */
}

Note

similarly to imports, you will need build ??= { built: false, package: import("./opal.json").JsonParse() } if you are running it without fpp, and fpp does also automatically remove this.

fpp count

a basic line of code counter for projects

fpp todo

displays all the // TODO: or // FIXME (and variations), nicely formatted