initial commit

This commit is contained in:
2025-09-17 23:05:25 -04:00
commit ee78eef527
17 changed files with 610 additions and 0 deletions

134
startpage/index.js Normal file
View File

@@ -0,0 +1,134 @@
let clock = document.getElementById("clock");
let date = document.getElementById("date");
let input = document.getElementById("search-bar");
let result = document.getElementById("search-results");
/* Allow toggling between military and 12 hr time */
let military_time = false
clock.onclick = function() {
military_time = !military_time;
time();
}
function time(timeout) {
let d = new Date();
let m = d.getMinutes();
let h = d.getHours();
/* if it hasn't been set then set it here */
if (military_time) {
clock.textContent = `${("0" + h).substr(-2)}:${("0" + m).substr(-2)}`;
} else {
let hours = h % 12;
let minutes = ("0" + m).substr(-2);
hours = hours ? hours : 12;
clock.textContent = `${hours}:${minutes} ${(h >= 12 ? "PM" : "AM")}`;
}
/* set the time every second */
timeout && setTimeout(() => time(true), (60 - d.getSeconds()) * 1000);
}
let last_date;
/* Sun 31st, May */
function cal(force) {
const days = [ "Sun", "Mon", "Tue", "Wed", "Thur", "Fri", "Sat" ];
const months = [ "January", "Febuary", "March", "April", "May", "June",
"July", "August", "September", "November", "December", ];
let d = new Date();
let day = days[d.getDay()];
let day_of_month = d.getDate();
let month = months[d.getMonth()];
let day_suffix
/* get a suffix for the day of the month */
if (day_of_month > 3 && day_of_month < 21) {
day_suffix = "th";
} else if ((day_of_month / 1) % 10 == 1) {
day_suffix = "st";
} else if ((day_of_month / 1) % 10 == 2) {
day_suffix = "nd";
} else if ((day_of_month / 1) % 10 == 3) {
day_suffix = "rd";
} else {
day_suffix = "th";
}
/* check if this date has already been set before */
if (!force && last_date == `${d.getDay()}${d.getMonth()}`) {
return;
}
date.textContent = `${day} ${day_of_month}${day_suffix}, ${month}`;
/* store the last date that was set */
last_date = `${d.getDay()}${d.getMonth()}`;
}
/* show the time on the page */
time(true);
/* just incase something dumb happens the time should update when the user
* focus's the page */
window.addEventListener('focus', time);
cal();
setInterval(cal, 1000);
function shell(event) {
var env = {
path: "/startpage/root/bin/",
};
/* convert a directory such as /startpage/root/bin/ to /startpage/root/.bin
* to read static fs data.
*/
function convertPath(path) {
if (path.endsWith('/')) {
path = path.slice(0, -1);
}
const parts = path.split('/');
const hidden = '.' + parts.pop();
return parts.concat(hidden).join('/');
}
async function run(path) {
try {
const response = await fetch(convertPath(env.path));
if (!response.ok) {
throw new Error(`Failed to load file: ${response.status}`);
}
const text = await response.text();
const lines = text.split(/\r?\n/);
const matchedLine = lines.find(line => line.split(".")[0] == path);
if (!matchedLine) {
throw new Error(`${path} cannot be found in path.`);
}
const file = env.path + matchedLine;
const { cmd } = await import(file);
return await cmd(input.value, event.key);
} catch (err) {
throw err;
}
}
if (input.value == "") {
input.style.color = "white";
} else {
run(input.value.substring(0, input.value.indexOf(" ")) || input.value)
.then(res => {
result.innerHTML = res;
input.style.color = "var(--blue)";
})
.catch(err => {
input.style.color = "white";
});
}
}
input.addEventListener('keyup', shell);
shell({ key: "" });