homesciter

Sciter is an embeddable HTML/CSS/scripting engine aimed to be used as an UI layer of modern desktop applications.

Sciter brings stack of web technologies to desktop application development therefore web designers and web developers can reuse their experience in application design.

Consider Sciter for

  • Applications that have dynamic UI - whole UI or its parts are getting composed in real time. UI update can be made as direct DOM manipulation, template instantiation or buil-in PHP style template processing for UI.
  • Applications that have dynamic lifecycle - frequent functionality and UI design updates.  HTML/CSS resources can be parts of executable itself or can be downloaded (for example partially) from  your company's web server (HTTP). Pretty much as in ordinary Web browser.
  • Application that require controlled network traffic. All requests for external resources are passed to host application by SCN_LOAD_DATA notifications. You can use your own resource loaders or delegate their loading to built-in HTTP client.
  • Applications that require UI theming and styling and to be "good desktop citizens" at the same time - use OS themes of user's choice when needed.
  • Applications that require non-trivial user input methods. Sciter provides extended set of input and yet customizable elements (controls) out of the box.

Supported platforms:

  • Windows:
    • Windows Vista, Windows 7 and Windows 8.X - Sciter uses hardware accelerated Direct2D graphics.
    • Windows XP - Sciter uses GDI+ graphics layer.
  • Mac OS X - Sciter uses standard Core Foundation and Graphics primitives.
  • Linux OS family (Ubuntu, Steam OS, etc.)  - Sciter uses stock GTK+/Cairo primitives.

Architecture

Internally Sciter contains (is made of) following modules:

  • Compact and fast HTML/CSS rendering engine. CSS (Cascading Style Sheets) is pretty much at CSS2 level with some parts of CSS3 (like transorm and transitions support) and custom features designed specifically for desktop UI use cases (the flow and flex units for example).
  • TIScript scripting engine that is an extended version of JavaScript. It has real classes and namespaces while keeping flexibility of JavaScript. The engine contains
    • Compiler that compiles source to bytecodes.
    • VM (virtual machine) that executes these bytecodes.
    • Runtime - set of native classes and functions - superset of standard JavaScript runtime.
    • Sciter SDK contains tiscript.exe - standalone TIScript compiler and interpreter that you can use to compile your scripts and so to include bytecodes in your application as resources.
  • DOM API module that contains lightweight yet practical DOM model available in script and in native code. You can think as Sciter has prototype.js, AJAX and popular parts of jQuery implemented natively.
  • Popup and detached windows module. If needed you can make some DOM elements to be presented as popup windows so to be styled and rendered in the same way as menus and other popovers used by Windows desktop.
  • Dialog windows module. You can define your dialogs as HTML/CSS resources. Dynamic if needed. You also can use system FileOpen/Save, SelectPrinter dialogs.
  • Here is the list of some bult-in behaviors that come out of the box with Sciter:
    • Input elements:
      • single and multy line text inputs;
      • masked text input;
      • numeric and currency inputs;
      • date, time and calendar input elements;
      • vertical and horizontal sliders;
      • scrollbars as standalone input elements;
    • Output elements:
      • progress element;
      • shell icon behavior - allows to render icons of file types using OS mechanisms.
    • <form>s that can be submitted to Web servers together with inline/pasted images.
  • Graphics implementation that is exposed to script uses immediate mode drawing: To draw on element's "surface" you provide paintBackground(graphics), paintContent(graphics) and/or paintForeground(graphics) methods. These paint**** methods are called at the same time and on the same rendering target as native drawing methods.
    All graphics primitives like graphics.drawLine() or graphics.drawImage() are translated directly into corresponding Direct2D methods so are subjects of hardware acceleration.

Sciter engine and SDK download

  • Sciter SDK , it includes 32bit and 64bit versions of the engine and all needed .h and .lib files you will need to start using Sciter in your application.

Documentation

Sciter v.1 - previous version of Sciter engine is still available here and still supported.

Sciter

License and prices, source code access

Sciter v.3 SDK

Log file

DOM classes and objects

TIScript:

CSS: