Some stuff I added (or plan to add):
There's 2 types of closing however: Closing (as of setting a flag for the app to think about it closing) and Kill (forcibly end the process, regardless if it wants or not). This is so Task Manager can moderate the window manager properly.
Showcase of a tooltip in the application menu. It's rendered on top of everything

Context menus, makes a child window with these options and you can set it to change the parent windows's state or change a value in a windows's array for it to read and react to it.
Got around to finish it up...
The memory diagram was updated to show "danger zones". SmileBASIC 3 is not forgiving when your low on memory, sometimes it just throws an out of memory error even if you're just storing a 4-letter string with around 1 MB "free". The colors should be obvious; green is all good, yellow is dangerous and red is death; the session will be killed and CYMOS will panic.
Light mode works decently and: when hovering over an entry, it will show the number of milliseconds it took to run; the number is not updated often to not flicker all over. Windows should preferably be only taking 2-3 ms to run so you can squeeze around 4 apps in and it stays at solid 60FPS. If not, then it's not an issue since CYMOS is sorta good at handling inconsequent framerates and you can cap the framerate should your app be a bit complex. ;P
For these, you can interact with the logon UI to like show a progress meter or explain what the task is currently doing.
Should a task not finish in time, i.e. it might be stuck, you can choose to cancel the shutdown, skip that task and move on or wait a bit more.
Want to make function keys useful... I suck at describing things lol
The 4th key gives it away... there's a hidden string in it but you'll have to wait :P
The 5th key just shows/hides the keyboard, nothing special
Self-explanatory, this is tied to the 4th function key.
This also shows the other thing I plan to add...
- Ability to resize windows
Yes, this is it. I doubt this will be used by many apps since you need to be careful that the window size may change. Hence why that will be an opt-in through the flags and you can configure the min/max size, as per usual.
Quite a bit, sorry for taking so long and to blast out so much but it's how it is, eh?
It's definitely still in beta, I don't even have a package loader yet, but it already gives an idea as to how it works.
Return values and automation of window properties
Midori OS apps need to manually specify what they need, such as adding a close button and triggering its logic in the app's logic. I would like to introduce window flags, which the window manager will take care of without you needing to explicitly specify these except just a flag value you set in the property DEF of the app. About return values, I changed the format of the app DEF, it returns a value and also specifies how the app should react.Return code specifications
-1 or lower: App will not close when flagged to. 0: App closes immediately. 1: App can be closed. Progress data can be appended using WM_mkProgressCode() in the RETURN. It returns a value lower than -1, so it will refuse to close.Window arrays
App windows can use global values, but no longer have predefined arrays like in Midori OS, but you can create them yourself, as well as other ones. It's basically Midori's later array concept but more generalized. The main idea is that you "allocate" an array from the pool and it returns an array ID to later get the array name and use VAR() to read/write to it. The way I implement this allows you to get the first allocated array ID of the window using WM_1stArr(WID) and have the other associated array IDs inside that one, but global variables can hold them too. Example:DEF APP_TEST_ARR(WID,SX,SY,EX,EY) VAR ARRID%,ARRN$ IF ! WM_HasArray(WID) THEN '"Allocate" an integer array with 32 elements '0 - int, 1 - float, 2 - string ARRID% = WM_AllocArray(WID, 0, 32) IF ARRID%<0 THEN RETURN 0'No free array, will not continue ELSE ARRID% = WM_1stArr(WID) ENDIF ARRN$ = WM_GetArr$(ARRID%) GPUTCHR SX,SY,"ARR[5]="+STR$(VAR(ARRN$)[5]) INC VAR(ARRN$)[5] RETURN 1 'When signal sent, close immediately END
Tooltips and Context Menus



Task Manager improvements



Session saving through shutdown tasks
This is probably not useful for text editors but is for more generic things, such as the API logger or my file system. CYMOS will not immediately shut down but ensure all apps are properly closed and all needed data has been saved.

Function key integration

App Switcher

Planned to add
- A feature test, yes, no mock OS is truly one without a feature test of some kind. Here's 2 screenshots:

