scone icon indicating copy to clipboard operation
scone copied to clipboard

๐Ÿž Make portable terminal applications

scone ยท build status license

Create cross-platform terminal applications.

Example

import scone;

void main() {
  frame.title("example");
  frame.size(33, 20);

  bool run = true;
  while(run) {
    foreach(input; input.keyboard) {
      // if CTRL+C is pressed
      if(input.key == SK.c && input.hasControlKey(SCK.ctrl)) {
        run = false;
      }
    }

    frame.write(
      12, 9,
      TextStyle().fg(Color.yellow), "Hello ", // white foreground text (chainable pattern)
      TextStyle().fg(Color.red).bg(Color.white), "World" // red foreground, white background
    );
    frame.print();
  }
}

win mac

Features

  • Display text and colors
  • Receive keyboard input
  • Cross-platform

Simple cross-platform chart

output Windows POSIX
text โœ“ โœ“
emoji โœ“
ansi-color โœ“ โœ“
rgb-color โœ“
high performance output โœ“
input Windows POSIX
input detection โœ“ โœ“
reliable โœ“ *
control keys โœ“ **
key release detection โœ“

* Input is converted from arbitrary number sequences (may differ from system to system) to an input event. Basic ASCII should work no matter what system, however special keys like the up-arrow or function keys can vary drastically.

** Only registers the last pressed control key.

Install with dub

Note: 3.0.0 is not yet available.

/// dub.json
"dependencies": {
    "scone": "~>3.0.0",
    ...
}
/// dub.sdl
dependency "scone" version="~>3.0.0"