Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A multimedia sketchpad

License

NotificationsYou must be signed in to change notification settings

JohnEarnest/Decker

Repository files navigation

Decker is a multimedia platform for creating and sharing interactive documents, with sound, images, hypertext, and scripted behavior.

Decker, complete with toolbars

You can learn more about Decker onmy website, on thecommunity forum, or you can just dive in andtry it online. Periodic binary releases of Decker for MacOS and Windows are available onItch.io.

If you're interested inLil, Decker's scripting language, you can access documentation and play with it in your browser attrylil.

Web-Decker

Decker is available asa web application (written in vanilla JavaScript) which is distributed as a single freestanding HTML file. Web-Decker can be built with amake script. The test suite usesNode.js:

make testjsmake web-deckermake runweb      # (optional) open in your default browser

Native-Decker

Decker is also available as a native application, written in C. Building Native-Decker from source requires:

  • a c compiler and libc
  • thexxd utility (standard with MacOS and most *nix distros)
  • SDL2
  • SDL2_image

On MacOS, BSD, or Linux, fetch the appropriate SDL2 packages and then build withmake. This has also been reported to build and run successfully under WSL:

brew install sdl2 sdl2_image                                   # MacOS/Homebrewsudo apt install libsdl2-2.0-0 libsdl2-dev libsdl2-image-dev   # Debiannix-shell                                                      # Nixmake lilt            # (optional) command-line toolsmake docs            # (optional) build documentation (requires Lilt)make decker          # build decker itselfmake test            # (optional) regression test suitesudo make install    # (optional) install lilt, decker, and lil syntax profiles

If SDL2 is not available, Native-Decker can also be built withreduced functionality against SDL1.2 and a corresponding version ofSDL_image. This compatibility shim is presently designed with theOLPC XO-4 and its default Fedora 18 OS image in mind; expect to do some tinkering with the makefile for other platforms:

sudo yum install SDL-devel SDL_image-develmake decker

Lilt

Decker's scripting language,Lil, is available as a standalone interpreter, with extended IO functionality to make it suitable for general-purpose programming and scripting: this package is calledLilt. Lilt only requires libc andxxd to build from source:

make lilt

Lilt can be used to programmatically create, inspect, and manipulate decks, as well as package them as Web-Decker self-executing documents:

$ lilt d:read["examples/decks/color.deck"]<deck> d.card:d.cards.colhex<card> d.card.widgets.hex.text:"FFAA00""FFAA00" d.card.widgets.hex.event["change"]0 d.card.widgets.rgb.text"16755200" write["color.html" d]1

You can build Lilt againstCosmopolitan Libc, producing a single binary that will run on most popular operating systems:

$ ./apelilt.shsuccessfully compiled lilt.comrunning tests against ./lilt.com...all interpreter tests passed.all dom tests passed.all roundtrip tests passed.$ sh ./lilt.com  range 10(0,1,2,3,4,5,6,7,8,9)

The Danger Zone

Decker normally sandboxes the execution of scripts within decks to prevent low-level access to the host computer and ensure parity between the capabilities of Web-Decker and Native-Decker. Both implementations offer opt-in APIs for performing more "dangerous" or non-portable operations calledThe Danger Zone.

When building Native-Decker from source, you can enableThe Danger Zone by defining theDANGER_ZONE preprocessor flag:

FLAGS:=$(FLAGS) -DDANGER_ZONE

A "dangerous" build of Native-Decker can export "dangerous" Web-Decker builds. You can also temporarily enableThe Danger Zone for Web-Decker by calling theendanger() function from your browser's JavaScript console or modifying theDANGEROUS=0 constant in the .html file toDANGEROUS=1.The Forbidden Library offers a suite of bindings for useful JavaScript APIs based on this interface.

Contributing

The Decker project is released under the MIT license. Any contributions to this repository are understood to fall under the same license.

  • Bug fixes and typo corrections are always welcome.
  • Bug reports must include simple steps for reproduction and clearly indicate the OS and/or web browser where the bug arises.
  • PRs should match the style of existing code.
  • PRs should be as small as possible, and must not contain bundled unrelated changes.
  • PRs must include updates forboth the C and JavaScript versions of Decker (or its associated tools) whenever relevant.
  • PRs must include updates for documentation (see: thedocs directory) wherever relevant.
  • PRs must pass the entire test suite (see:make test/make testjs).
  • PRsmust not incorporateany material generated by or with the assistance ofany so-called "generative AI" tool or language model. Place your trash in an appropriate receptacle.
  • When modifying the JavaScript version of Decker,please test your changes in multiple web browsers and avoid using bleeding-edge features. As a rule of thumb, if it didn't exist 5 years ago, don't use it now. If itonly works in Chrome, it's better not to do it at all.
  • When modifying the C version of Decker, avoid generating warnings anddo not use compiler-specific features such as GCC extensions.

Please refrain from submitting Pull Requests to this repository containing new features without first discussing their inclusion in an Issue. Decker is intended to be small, simple, and cozy. There are an infinite number of features that could potentially be added, but creative constraints are also valuable. If you have a differing vision, feel empowered to explore it in your own fork of the project- that's what permissive licenses are for.


[8]ページ先頭

©2009-2025 Movatter.jp