Nicholas' OS
- 3 Devlogs
- 7 Total hours
This is my very own web-based OS, with a terminal app as my personal website, a web app installer, and a file viewer!
This is my very own web-based OS, with a terminal app as my personal website, a web app installer, and a file viewer!
In this devlog, I have created an app installer that installs a website as an app, much like how a web app works. However, this function only works for URLs that allow embedding.
I have also solved a bug where apps dragged past the viewport creates a scrollable viewport by adding this:
overflow-y: hidden;
overflow-x: hidden;
I’ll be shipping it soon! Try my OS out at https://nicholas1023.github.io/Nicholas-OS/!
Here’s a demo video of the installer installing hackclub.com as an app!
I’ve added a file viewer and terminal app to my operating system!
I had issues making a window come to the front when clicked or move. Initially, I was using .style.zIndex++, but it did not seem to work when a window was clicked multiple times. To solve this, I changed all the z-index of all windows when one is clicked, to ensure all of the values sync.
The buttons on the top bar are currently text-based, so I’ll be creating icons for them, and to declutter the buttons top bar on apps.
Next, I will be making the windows draggable, and creating icons for the apps.
I’ll also be improving the loading screen, which currently only consists of the following code.
<div id="boot">
<div style="text-align: center;">
<h1>Nicholas' Operating System</h1>
<p id="loading">Loading...</p>
</div>
</div>
When creating the window functions, which manages maximise, minimise and close buttons, it did not seem to work. I realised later that the function name was actually overwriting a built-in function as it was initially named close()! In the end I renamed it to closeW(), where W stands for window.
I also faced issues with the height of the <main>. Initially, the height of main was set to 100%, which failed to work. After some searches online, I tried replacing 100% with 100dvh, which worked perfectly!