const c = document.querySelector(".console") const ps1 = "[fr@website ~]$ " const motd = "Welcome to my website!
You can use `help` for more informations :)" let line = ""; function exec(command) { switch (command[0]) { case "help": line = "help
author
contact
clear
echo" break; case "author": line = "Filip Rojek, 2023" break case "contact": line = "Filip Rojek <filip@filiprojek.cz>
web: www.filiprojek.cz
telegram: @filiprojek" break case "clear": write("000ctrll") return false case "echo": line = "" command.forEach((cmd, i) => { if (i === 0) return line += cmd + " " }); line = line.substring(0, line.length - 1) // remove last space break default: line = "frsh: " + command[0] + ": command not found" break; } return line } function write(key, payload) { switch(key) { case "Enter": command = c.lastChild.textContent.replace(ps1, "") command = command.split(" "); let out = exec(command) if(out !== false) { line = document.createElement("p") line.innerHTML += out line.innerHTML += "
" c.appendChild(line) line = document.createElement("p") line.innerHTML += ps1 c.appendChild(line) } command = "" break case "000ctrll": c.innerHTML = "" if(payload == motd) c.innerHTML = motd line = document.createElement("p") line.innerHTML += ps1 c.appendChild(line) break case "000backspace": if(c.lastChild.textContent.slice(0, -1) !== ps1.slice(0, -1)) { c.lastChild.innerHTML = c.lastChild.textContent.slice(0, -1) } break default: c.lastChild.innerHTML += key } } function customCtrlShortcuts(plusKey) { document.addEventListener("keydown", e => { if(e.ctrlKey && e.key == plusKey) { e.preventDefault() write("000ctrl"+plusKey) } }) } // On load init the terminal window.addEventListener("load", () => { write("000ctrll", motd) if (navigator.userAgent.toLowerCase().includes("mobile")) { const mi = document.querySelector(".mobile-input") mi.style="opacity: 0; width: 0; height: 0" c.addEventListener("click", e => { mi.focus() }) } }) // Capture the keypress window.addEventListener("keypress", e => { e.preventDefault() write(e.key) }) window.addEventListener("keydown", e => { if(e.key == "Backspace") { e.preventDefault() write("000backspace") } }) // Register custom ctrl shortcuts customCtrlShortcuts("l") // ctrl + l customCtrlShortcuts("c") // ctrl + c