You are browsing as a guest. Sign up (or log in) to start making projects!

OwOS

  • 6 Devlogs
  • 11 Total hours

This is my very own OS that can be run in the web!

Open comments for this post

2h 28m 25s logged

my final devlog of Stardance

i’m turning 19 in a few hours so this is my last thingy :3

brave browser ate my cursor so i can’t really see where i’m clicking lol


completed BaSL integration: the window now scrolls automatically + i’ve improved the UX with a Send and Terminate button

moved enter key handling to JavaScript because for some reason, .NET doesn’t get the input value before you press enter (so the input was percieved as empty on keydown)


updated Nowotes with new file dialogs

took a bit to refactor the code, i wanted a common component that does most stuff

the SaveFileDialog and OpenFileDialog have only a few lines of code thanks to this

the dialogs don’t look amazing, yeah, but you can tell directories apart by their trailing slash

you can use the input field similarly to actual file dialogs:

  • enter a directory in the current one
  • go to a directory by specifying its full path
  • open/save by providing a filename with no trailing slash, no .. (idk if the .. check works tbh)

added an analog clock cuz i didn’t want to deal with window maximizing

tiny detail: usename is now in the meta menu, which looks similar to how KDE handles it


fixed file system restoration by using the location origin instad of the href

fixed task manager buttons not being able to minimize their respective window

0
0
9
Open comments for this post

2h 55m 57s logged

BaSL integration almost complete

terminal :333

i’ve added my very basic Bash-like shell project as a program!
since BaSL written in .NET, i can “just reference it,” and it works
(not every package works out of the box in Blazor WebAssembly)

on the left you can see the version without escape sequence parsing

on the right, it parsed the output properly

currently, it only supports setting/resetting bold mode and 8 types of foregrounds (black, red, green, yellow, blue, magenta, cyan, white)

for some reason, using an inline <pre> tag sometimes inserts a newline even though it’s not in the content string… idk 😭


the other feature i added in these 3 hours was cache-based file storage (yes, the Cache API)
it only saves files in the /home/user directory
the files will be loaded on startup

since there’s no filesystem watcher in BaSL, saving has to be manually triggered either via the terminal or from the meta menu

i’ve still yet to make it so concurrent sync operations cannot occur
it would also be nice to have sync -f so it rewrites the whole cache (mode changes are not detected yet)

for some reason, IJSStreamReference didn’t marshal properly in an object, so i tried use byte[] from an Uint8Array which also didn’t work… string it is, hopefully it doesn’t mess up binary content

gotta integrate the file system with Nowotes

0
0
15
Ship #1

this is a simple “operating system” that runs in your browser!
made with Blazor (cuz i like seeing sharp ahaha) which complicated some things, but it could be worse


right now it includes the following:

  • date and time
  • a notepad that uses localStorage to save data (you can open multiple of them at once)
  • meta menu (“start menu,” useful when the icons are covered)
  • an image of 4 FLIRTs :3 (you need to open the “file”)
  • task manager (taskbar) that is very slightly buggy but it lets you restore windows that had been minimized

making the task manager was a bit of a headache due to the unpredictable nature of C# delegates
it works for bringing a window to the front

i used the <dialog> HTML element in several places because i didn’t want to reinvent the wheel (not a lot of people know about this somehow), though handling interactions outside of the area of non-modal dialogs is something i’ll have to look into later
dialog sizes should be restricted but ugh

Try project → See source code →
Open comments for this post

3h 9m 28s logged

i had a look at the guide, and decided that i don’t want to use z-index
instead, i use ObservableCollection.Move to bring a window to the front
window state stays intact because i specify @key
changing the window order has a slight side effect: the task manager (taskbar) is also reordered; ordering by Id fixes this issue (IDs are v7 Guids which start with a timestamp)


the welcome screen is now more descriptive


implemented the meta menu (start menu), it’s pretty simple atm, only includes desktop programs


the task manger now shows which window is focused (topmost and not minimized)


added a notepad with a simple textarea element
it saves data to localStorage


code is horrible but does it matter? x3

deployed to GitHub Pages, hopefully this will qualify for the mission

0
0
31
Open comments for this post

1h 37m 19s logged

genuinely forgot some of the things i’ve done, probably styling


anyways, now you can open windows and close them properly!
i’ll be adding a few more desktop icons and apps

finally figured out the architecture i like
the WindowManager has an ObservableCollection, so it’ll notify other components if a window is added or removed automatically

the task manager (taskbar for losedows users) needs to be updated a second time because the window’s init method (which sets the title) only gets called the “next frame” (in Unity terms at least, idk how to say it lol)

gonna need a to add minimizing windows, and a “start menu”

i was also thinking of creating a simple notepad that saves content to local storage

0
0
19
Open comments for this post

32m 8s logged

was debating whether to use js interop to do window dragging, but plain JS is enough
layouts turned out to be wrong for windows, so i created a simple Window base component instead
window dragging now works
also added a date display

0
0
4
Open comments for this post

30m 9s logged

finally got something working, creating an OS using Blazor (yes, it will be painful)
i spent a lot of time trying to think about how to even start, then removing default assets, doing some basic styling
there is now a very basic taskbar with a working clock

0
0
4

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…