diff --git a/config.toml b/config.toml
index 61f7d5f..0ba7103 100644
--- a/config.toml
+++ b/config.toml
@@ -16,7 +16,7 @@ smart_punctuation = true
git = "https://git.filiprojek.cz/fr/website"
nav_items = [
{name="Home", path="/"},
- {name="About", path="/about"},
- {name="Projects", path="/projects/"},
+ #{name="About", path="/about"},
+ #{name="Projects", path="/projects/"},
]
diff --git a/content/console.md b/content/console.md
new file mode 100644
index 0000000..262408e
--- /dev/null
+++ b/content/console.md
@@ -0,0 +1,4 @@
++++
+title = "Console"
+template = "console.html"
++++
diff --git a/sass/console.scss b/sass/console.scss
new file mode 100644
index 0000000..38c3a00
--- /dev/null
+++ b/sass/console.scss
@@ -0,0 +1,5 @@
+.console {
+ background: gray;
+ width: 80vw;
+ min-height: 20vh;
+}
diff --git a/static/js/console.js b/static/js/console.js
new file mode 100644
index 0000000..56bd92a
--- /dev/null
+++ b/static/js/console.js
@@ -0,0 +1,107 @@
+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
diff --git a/templates/console.html b/templates/console.html
new file mode 100644
index 0000000..cd10a87
--- /dev/null
+++ b/templates/console.html
@@ -0,0 +1,12 @@
+{% extends "base.html" %}
+
+{% block styles %}
+
+{% endblock styles %}
+
+{% block content %}
+
+
+
+{% endblock content %}