• Hey! Guest! The 39th GMC Jam will take place between November 26th, 12:00 UTC and November 30th, 12:00 UTC. Why not join in! Click here to find out more!

Windows The GM OS Project (GameMaker Operating System)

orSQUADstra

Member
Quick progress update, started reworking context menus!



The planned features:
  • Sub-context menus
  • Separators
  • Icons
  • Keyboard shortcut labels
  • Disabled options
I feel like where this is going will be a huge improvement, as the previous context menus only offered to have a list of options without the ability to create sub-context menus, icons for the options, or any of these mentioned above. This might look like a minor work for some of you, but it's the details that matters, right? :D
 

orSQUADstra

Member
Hey guys - sorry for the complete lack of progress or even information. I had to learn a lot lately and I've been pretty busy and tired. But school is over for me, and I have all summer to work on the project! :D

The project might go over a bigger overhaul, I'll try to make it faster and more efficient, also I'll try to make my own system to prevent crashing from faulty codes in Shells. The design will be similar to what has been seen in the last few updates, but now that I have made a proper blur effect (which is not static, aka it doesn't just draw the background blurred, but everything behind), I can rely on that to some extent to make the visuals even more appealing.

I'll try to post updates as frequently as possible, and make as much progress as I can within my free time that I can dedicate to keep this project going.

If the idea of me doing updates in the form of short youtube videos would sound better to you than just a plain box of text and a screenshot, I can totally do that as well.

As for everyone who's planning on making Shells, or for some who already do, this will be half good half bad. Shells will be simplified a bit, the display Shells will use a single surface that you draw on, so 0,0 is the top left corner of the window right below the titlebar. Shell programs as they are will change, you'll have much more control over how the window looks and behaves, and you'll have some more text files to specify things, but more about this a bit later when GMOS itself has progressed a bit forward.

Thank you for being patient, and I hope you still have interest in the project. ^^
 

orSQUADstra

Member
I really don't feel good for not doing anything for such a long time and having nothing to show, so I took my time today and started reworking those context menus, + reworked my blur code to make it faster, and actually dynamic. (Previously it was static, only blurred the wallpaper, now it blurs everything behind :D )

Here's the two combined:

(Note: the edges are not rounded yet, but they will be!)
 

orSQUADstra

Member
A blur effect in GM8? Well, that's a first. How'd you do that?
It's pretty simple but brilliant: I draw everything on a surface. Then I have a script that you can call in, which does the blur. All it does is setting up two surfaces, one the same size, the other half the size of the surface you want to blur. Turn texture interpolation on, and stretch the two surfaces on each other. And voila! A pretty convincing and fast blur effect :D
 

ThePC007

Member
It's pretty simple but brilliant: I draw everything on a surface. Then I have a script that you can call in, which does the blur. All it does is setting up two surfaces, one the same size, the other half the size of the surface you want to blur. Turn texture interpolation on, and stretch the two surfaces on each other. And voila! A pretty convincing and fast blur effect :D
Wow, that's amazingly simple for how awesome it looks. I swear, I could hardly tell this apart from a real blur shader. :eek:
 

ThePC007

Member
How exactly will developing apps for this thing look like? Will we be able to create windows and fill them will your premade GUI components? Will we still be able to draw things (shapes, etc.) into the windows (on some kind of surface or something)?
 

orSQUADstra

Member
How exactly will developing apps for this thing look like? Will we be able to create windows and fill them will your premade GUI components? Will we still be able to draw things (shapes, etc.) into the windows (on some kind of surface or something)?
I will include a full documentary. The main thing is, your apps are going to be folders that you name "[some folder name].shl", and the system detects it like an .exe or something. Inside the folder you'll have a create.txt, step.txt, etc, that you can write your GML code in. The OS will load it in, but firstly add the window codes automatically. The app will be drawn on a surface, so you don't need to worry about drawing at "x+..." (even though you will want to have that part for mouse_in_rectangle() and things like that)

But I'll go into deep detail in the said documentary, right when the first release of the OS is out for the public. :D
 

ThePC007

Member
I will include a full documentary. The main thing is, your apps are going to be folders that you name "[some folder name].shl", and the system detects it like an .exe or something. Inside the folder you'll have a create.txt, step.txt, etc, that you can write your GML code in. The OS will load it in, but firstly add the window codes automatically. The app will be drawn on a surface, so you don't need to worry about drawing at "x+..." (even though you will want to have that part for mouse_in_rectangle() and things like that)

But I'll go into deep detail in the said documentary, right when the first release of the OS is out for the public. :D
Wait, does that mean we'll only get one window? It'd be really cool if we got multiple windows, if only to make it easier to add pop-up windows (like a settings menu or something), rather than having to draw those into the main window itself.
 

orSQUADstra

Member
Wait, does that mean we'll only get one window? It'd be really cool if we got multiple windows, if only to make it easier to add pop-up windows (like a settings menu or something), rather than having to draw those into the main window itself.
You'll have selection lists, popup message windows, context menus, all of these pop out in front of the window, so don't worry, you have plenty to choose from! :D And in the very end, you'll be given an option "customWindow = true;", which will ignore all window codes. That means you're entirely free of doing whatever you want, but that also means you'll have to redo everything if you want an actual window (dragging, window sequence, resizing, all those). I will try to make it possible in an easy way to have multiple windows for one app though ;)
 

orSQUADstra

Member
Started experimenting with a dark theme!



Fixed some depth errors and fixed the smoothness of resizing, enhanced the buttons and what not... Still plenty to do, but I feel like I'm going in the right direction :D

Also, updated the main post ;) Just so it matches the new design
 

orSQUADstra

Member
Going to assume this project is deprecated?
It's on ice at the moment. School started, I have a surgery coming up soon, and also have a game project going on that I'd like to finish first..
Sorry if it's a bit of a disappointment, but I'll get back to this project sooner or later, it's just not really all that much of a priority at the moment.
 

Liam Jacobs

Member
Just out of curiosity:

If the project remains on ice indefinitely, with no future plans to release - why not release a (semi?) functional version of it? Or possibly even the source?
It's one of the best looking GUI projects I've seen made with GM, so it'd be a shame to see all of this hard work go to waste :).
 

orSQUADstra

Member
Just out of curiosity:

If the project remains on ice indefinitely, with no future plans to release - why not release a (semi?) functional version of it? Or possibly even the source?
It's one of the best looking GUI projects I've seen made with GM, so it'd be a shame to see all of this hard work go to waste :).
I have 2 different project files, the new design is a new project from scratch but it's very messy and barely has any functionality, the old one works pretty well but would still need some polishing. Plus they're both .gmk files, I think GMS 1.4 can import that but GMS 2 can't.
Anyway I'll try to work on the older one, patch a few things up and probably release an .exe, but if nothing then I might as well just give out the .gmk files
 

orSQUADstra

Member
Sooo I've been thinking of moving this project over to GMS 2. That has a few pros and cons though. For one, the performance will be better than what I'm having right now, and I should be able to have some nice effects made more efficiently and easier than in GM8, on the other hand, there's no execute_string() command, which is what this whole thing is based around (at least, the reading of third party programs). So I'll have to find a workaround for that xD But it might be for the better. I'll look into it a bit later
 

Bearman_18

Member
So hi! I just found this project, and I want you to know that I totally support it, and would certainly use it! It looks very quality. especially for being made with gm8!
Interestingly, the Wikipedia definition of SubOS says they were mostly made by the gamemaker community. I was amused, because I had no idea what it meant at first, and gm was immediately brought up.
 

orSQUADstra

Member
So just for the fun I might be sticking with GM8 for now. Anyway, worked on it a bit more and fixed some glitches in the new design:


Basically, windows actually use surfaces now (previously they didn't in the old design, it's all new code now), but I messed something up and buttons wouldn't be in the surface. I fixed it now though, and it's easier than ever to use with a few simple scripts: var = button_create(x,y,width,height,text), button_destroy(var), button_clicked(var), draw_get_button(var) - but more on that later for the ones who might want to make third party programs for the OS

I'll update this thread when enough functionality is stable and finalized:
 

Mool

Member
Why do u not use
Code:
gml_pragma("global", "myshellText");
Edit: i see gml_pragma("global", "myshellText"); the code need to be know at compile time
 
Last edited:

orSQUADstra

Member
So, I'll continue working on this project after I get some more free time, I'm busy learning and dealing with other stuff right now. But in the meantime, I'd love to get some feedback on which concept you all would like more!



I can also include more than one of these, and slide it into the system settings :D
 

orSQUADstra

Member
A bit of progress, you can see the new taskbar (based on the B option from my previous post, as it was the most popular after asking around in other places as well), and a new textbox with much more functionality over what the previous versions had (previously, you could put the cursor anywhere in the text but that was it. Now, you can actually select part of the text, use your arrow keys to move back/forth, and ctrl + c / v / x works as you would expect. It's using the clipboard of Windows, so it also means you can copy text in Windows and paste it in GM OS, and vice versa.

 

ThePC007

Member
The taskbars do look similar enough to make all of them and add an option to choose your favorite style. In fact, it'd be great to have something like in XFCE where you can move the taskbars around and have settings where you can choose them to use the full width of the monitor or the minimum width required to fit all their elements. (It also allows you to have multiple taskbars with different contents and what not, but that might be a little overkill.)

Looks good btw.
 

orSQUADstra

Member
So, I've been progressing nicely with this, also reworked my blur script so I can now blur a surface within the surface. Using that effect, I made an image viewer, and now I started reworking the File Manager as well. If you look back at the older posts in this thread, you can see how the older version was and compare them :D


Also, something that the previous versions were completely lacking: smooth animations
 
Top