Create cross-platform terminal applications.
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();
}
}
- Display text and colors
- Receive keyboard input
- Cross-platform
- Some restrictions apply, please see OS Limitations
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"