gnu-screen
v1.0.14
Published
GNU-Screen session module handler for NodeJs
Downloads
4
Maintainers
Readme
What is this ?
This was build to handle and manage minecraft servers first, but actually only use Linux so if you have another OS you may have some bugs.
Table of Contents
Required
- NodeJs: 12.16.0
- GNU-Screen: 4.08.00
Installation
First make sure you have gnu-screen installed:
$ apt-get install screen
To run this project, install it locally using npm:
$ npm i gnu-screen
Functions
getAll()
Return all available Screens.
Screen
Create a representation of gnu-screen session : Screen(id, mode="")
.
If you want to save logs change mode to 's'
.
Extend events.EventEmitter.
Events:
close
When screen is closed.stdout
String
When something new is append in logFile.
Methods:
Screen.exist()
Check if screen's session is running.Screen.setup()
Fetch self variable with running session.Screen.setRule(...rules)
Rules to apply in screen session.Screen.write(...stdins)
Write something in screen session.Screen.setStdout(state)
Watch over logFile to callstdout
Event.Screen.logFile()
Return logFile.Screen.run(stdin=null)
Connect/create to screen session.Screen.close()
Close screen session.Screen.kill(signal="SIGKILL")
Kill screen session.
KeyValues:
Screen.id
String | null
Screen session's id.Screen.logFilePath
String | null
Path of logFile is there one.Screen.pid
Int | null
Pid of screen session if is running.Screen.date
String | null
Date of screen session if is running.Screen.state
String | null
State of screen session if is running.
Exemple
const SC = require("gnu-screen")
// Generate 10 screens session
for (n = 0; n < 10; n++) {
scr = new SC.Screen(id=`test n°${n}`);
console.log(scr);
scr.run();
}
// Find and close the 10 screens session
SC.getAll().forEach((scr) => {
console.log(scr);
scr.close();
})
// Create and start a screen session
test = new SC.Screen(id="final test", mode="s");
test.run();
console.log(test);
// Allow "stdout" event
test.setStdout()
// Close the screen session
function close() {
test.close();
if (!test.pid) {
console.log("Closed final test's screen session");
} else {
test.kill();
console.log("Killed test's screen session");
}
//self kill
process.exit();
}
// Get stdout from screen session
test.on("stdout", log => {
console.log("stdout:", log);
if (log.includes("!close")) {
close();
}
});
// Pipe input to the screen session
process.stdin.on('data', (stdin) => test.write(stdin));
// Capture Ctrl + C to close screen session
process.on('SIGINT', () => close());