What does your OS look like? (Screen Shots..)
Re: What does your OS look like? (Screen Shots..)
Did some work on my GUI. Within the past year or so, I have added desktop icons as well as a few other enhancements.
Most recently, added a list of all devices found.
It needs work. The list does show a sub-list item under a main-list item (see FDC: and then the FDD: lines or the USB lines for example), displays the "linked" lines, but doesn't know that the next item isn't a part of this set.
See below what I want it to be, eventually:
The icon and the drawing of the (dotted) lines are an easy addition, but I need to add code so that the list knows what items are sub-items and who the parent item is. The little minus (and plus) button to the left is a simple thing to add as it is an actual button object that can be requested for its state (0 or 1). It is the parent and child list items I need to add code for.
Also, right now I show what is attached to a specific port on the USB (root) hub, and then I show it again later since it is still a device. I need to work with it a little so it doesn't show it twice, the last two lines, for example. The second to the last line is the actual root hub already shown, while the last line is the flash drive connected to the first port, again, already shown.
(The numbers at the end of some of the lines are there for my debugging purposes)
One other note, this shows me that I forgot to go back to my HUB code and mark an unused port (disconnected port) as disconnected instead of "unknown"... :-)
Anyway, just thought I would share.
Ben
- http://www.fysnet.net/osdesign_book_series.htm
Most recently, added a list of all devices found.
It needs work. The list does show a sub-list item under a main-list item (see FDC: and then the FDD: lines or the USB lines for example), displays the "linked" lines, but doesn't know that the next item isn't a part of this set.
See below what I want it to be, eventually:
The icon and the drawing of the (dotted) lines are an easy addition, but I need to add code so that the list knows what items are sub-items and who the parent item is. The little minus (and plus) button to the left is a simple thing to add as it is an actual button object that can be requested for its state (0 or 1). It is the parent and child list items I need to add code for.
Also, right now I show what is attached to a specific port on the USB (root) hub, and then I show it again later since it is still a device. I need to work with it a little so it doesn't show it twice, the last two lines, for example. The second to the last line is the actual root hub already shown, while the last line is the flash drive connected to the first port, again, already shown.
(The numbers at the end of some of the lines are there for my debugging purposes)
One other note, this shows me that I forgot to go back to my HUB code and mark an unused port (disconnected port) as disconnected instead of "unknown"... :-)
Anyway, just thought I would share.
Ben
- http://www.fysnet.net/osdesign_book_series.htm
Re: What does your OS look like? (Screen Shots..)
I got syntax highlighting to work in my custom-made text editor in Glidix!
Re: What does your OS look like? (Screen Shots..)
Getting back to this project. Let's see how it lasts :P
Overhauling everything from scratch. Probably most obvious difference is that the taskbar is gone... I just have no idea what to fill it with. Using the keyboard will be a must anyway, may as well use keyboard shortcuts (this is a toy OS, I don't expect perfect usability). Not any weird stuff, just the same kind of shortcuts modern OSes use (like alt+tab to switch or alt+F4 to quit).
Before anybody rushes to download, none of this is in the GitHub repo yet, in fact I may make a new repo for this since it's essentially a full rewrite (even the name changed).
The calculator, now looking a bit fancier. Despite the looks, decided to ditch the old calculator-style input and let the user enter the whole calculation since honestly I think it brings up less problems in the long term — it's both more useful and also avoids the plethora of edge cases actual calculators have (which do things that way only due to limited hardware). Of course if the entered text is too long it will scroll.
Also, the solar panel is there because I couldn't think what to fill the gap with. If I come up with something (that I'm actually willing to implement) it'll take its place.
Some random screenshot of a terminal, since again I implemented it early so I could test keyboard input. Enjoy the useless commands.
Overhauling everything from scratch. Probably most obvious difference is that the taskbar is gone... I just have no idea what to fill it with. Using the keyboard will be a must anyway, may as well use keyboard shortcuts (this is a toy OS, I don't expect perfect usability). Not any weird stuff, just the same kind of shortcuts modern OSes use (like alt+tab to switch or alt+F4 to quit).
Before anybody rushes to download, none of this is in the GitHub repo yet, in fact I may make a new repo for this since it's essentially a full rewrite (even the name changed).
The calculator, now looking a bit fancier. Despite the looks, decided to ditch the old calculator-style input and let the user enter the whole calculation since honestly I think it brings up less problems in the long term — it's both more useful and also avoids the plethora of edge cases actual calculators have (which do things that way only due to limited hardware). Of course if the entered text is too long it will scroll.
Also, the solar panel is there because I couldn't think what to fill the gap with. If I come up with something (that I'm actually willing to implement) it'll take its place.
Some random screenshot of a terminal, since again I implemented it early so I could test keyboard input. Enjoy the useless commands.
Re: What does your OS look like? (Screen Shots..)
Hi mariuszp... I wanted to try running Glidix, but you have no binary releases, so I thought I'd try building from source, but your build scripts are very confusing, and they want me to build a toolchain as root? What's up with that?mariuszp wrote:I got syntax highlighting to work in my custom-made text editor in Glidix!
e: I got the toolchain built and added to my PATH without running it all as root, but further into the build it looks like libgpm is failing to find libc when linking a shared object. Everything before that seems to have worked, and there is a libc.so here, it just wasn't installed anywhere?
Code: Select all
x86_64-glidix-gcc obj/src/install.o obj/src/decoder.o obj/src/context.o -o libgpm.so -shared -ggdb
/home/mujin/Downloads/glidix-sysroot/usr/bin/../lib/gcc/x86_64-glidix/6.2.0/../../../../x86_64-glidix/bin/ld: cannot find -lc
Re: What does your OS look like? (Screen Shots..)
I should probably write instructions on how to build somewhere.klange wrote:Hi mariuszp... I wanted to try running Glidix, but you have no binary releases, so I thought I'd try building from source, but your build scripts are very confusing, and they want me to build a toolchain as root? What's up with that?mariuszp wrote:I got syntax highlighting to work in my custom-made text editor in Glidix!
e: I got the toolchain built and added to my PATH without running it all as root, but further into the build it looks like libgpm is failing to find libc when linking a shared object. Everything before that seems to have worked, and there is a libc.so here, it just wasn't installed anywhere?
e: It also looks like you're installing gcc+binutils into the path they use for a sysroot?Code: Select all
x86_64-glidix-gcc obj/src/install.o obj/src/decoder.o obj/src/context.o -o libgpm.so -shared -ggdb /home/mujin/Downloads/glidix-sysroot/usr/bin/../lib/gcc/x86_64-glidix/6.2.0/../../../../x86_64-glidix/bin/ld: cannot find -lc
If you have the cross-compiler already in the PATH, then you should configure in a separate directory, as follows:
Code: Select all
../glidix/configure --sysroot=<WHATEVER> --iso
Code: Select all
make libc
sudo make install-libc
With the --iso option passed, the end result is an ISO image, glidix.iso.
I put the last nightly build up on my site, just for you!!! Here's a TEMPORARY link:
https://madd-games.org/glidix-10sep2018.iso
(I will soon start posting regular builds)
Re: What does your OS look like? (Screen Shots..)
A common complaint / critique about my UI has been that the decoration theme did not adjust when a window was fullscreen, leaving a gap around the edges where the shadow is drawn. This required a bit of rethinking in the decorator library, but it's finally fixed:
Re: What does your OS look like? (Screen Shots..)
Okay, after a re-write of the GUI_LIST object, a list can now have groups, a group containing individual list elements, with these list elements having child groups.
Notice that the FDC, ATA, and USB list elements, each have a child group listing of one or more elements each. Click on the minus sign to hide the children, shown in the window beneath it with a plus button to show these children again. i.e.: Collapse or Expand.
A group is completely independent of another group of elements so that more than one element can point to a single group, each child group shown (the same physical group of elements) updated when one is changed, so is the other listing shown.
The dotted lines I mentioned before are being drawn, the code is there (as shown below):
But they are not visible due to the fact that the placement of these lines is on the LIST object instead of the ELEMENT object and is not getting pushed to the "dirty" RECT. If I manually mark that RECT as dirty, the LIST object thinks its dirty and overwrites them anyway. This is shown below.
The pink area (added after the fact) is the LIST object, while the white areas are the ELEMENT objects within the list. I will need to "back peddle" the drawing of these dotted lines so that they remain visible.
However, now with the groups, the LIST object now knows when a group ends compared to my previous post where it did not.
Along with this, I noticed that I now need to write a little bit of code to make sure that I can only have one "application name" running at the same time. i.e.: Don't let the user have more than one of these apps open. Should be quite simple to implement, though I didn't think about it until I tried it. :-)
Ben
- http://www.fysnet.net/osdesign_book_series.htm
Notice that the FDC, ATA, and USB list elements, each have a child group listing of one or more elements each. Click on the minus sign to hide the children, shown in the window beneath it with a plus button to show these children again. i.e.: Collapse or Expand.
A group is completely independent of another group of elements so that more than one element can point to a single group, each child group shown (the same physical group of elements) updated when one is changed, so is the other listing shown.
The dotted lines I mentioned before are being drawn, the code is there (as shown below):
But they are not visible due to the fact that the placement of these lines is on the LIST object instead of the ELEMENT object and is not getting pushed to the "dirty" RECT. If I manually mark that RECT as dirty, the LIST object thinks its dirty and overwrites them anyway. This is shown below.
The pink area (added after the fact) is the LIST object, while the white areas are the ELEMENT objects within the list. I will need to "back peddle" the drawing of these dotted lines so that they remain visible.
However, now with the groups, the LIST object now knows when a group ends compared to my previous post where it did not.
Along with this, I noticed that I now need to write a little bit of code to make sure that I can only have one "application name" running at the same time. i.e.: Don't let the user have more than one of these apps open. Should be quite simple to implement, though I didn't think about it until I tried it. :-)
Ben
- http://www.fysnet.net/osdesign_book_series.htm
Re: What does your OS look like? (Screen Shots..)
I've been trying to design how my "System Options" program will look.
I'm finding prototyping interface designs to be fairly easy, thanks to my simple UI markup language.
For example, the code for the "Regional settings" page looks like:
I'm finding prototyping interface designs to be fairly easy, thanks to my simple UI markup language.
For example, the code for the "Regional settings" page looks like:
Code: Select all
[pane optionsRegionalSettingsPane]
contents = {
[fill] scrollPane {
[fill] optionsPage {
[h_fill] heading "Regional settings" ;;
section "Layout" ;; optionsBox {
; [left] command "commandRightToLeftLayout"
} ;;
section "Number formatting" ;; optionsBox {
[right] label "Decimal symbol" ; textbox "." ;;
[right] label "Digits after decimal" ; textbox "2" ;;
[right] label "Digit grouping symbol" ; textbox "," ;;
[right] label "Digits per group" ; textbox "3" ;;
[right] label "Negative sign" ; textbox "-" ;;
[right] label "Standard digits" ; textbox "0123456789" ;;
[right] label "Currency symbol" ; textbox "$" ;;
[right] label "Example:" ; label "-1,234,567.89"
} ;;
section "Date and time" ;; optionsBox {
[right] label "Time format" ; textbox "hh:mm" ;;
[right] label "Long date format" ; textbox "DD MM YYYY" ;;
[right] label "Short date format" ; textbox "yyyy/mm/dd" ;;
[right] label "AM suffix" ; textbox "AM" ;;
[right] label "PM suffix" ; textbox "PM" ;;
; [left] command "commandUse24HourClock"
} ;;
section "Language and input" ;; optionsBox {
[right] label "System language" ; textbox "English" ;;
[right] label "Keyboard layout" ; textbox "English (US)"
}
}
}
};
- AndrewAPrice
- Member
- Posts: 2300
- Joined: Mon Jun 05, 2006 11:00 pm
- Location: USA (and Australia)
Re: What does your OS look like? (Screen Shots..)
That's a nice markup language you have, nakst.
I'm not at that level yet, but anytime I've attempted to make a templating system it often results in me wanting to make it so complicated that I figure I ought to just build a nice set of helper builder utils in modern C++17 to do it instead.
I've been thinking about entity component systems, which are extremely popular in the video game industry (tools like Unity), and how you could build a general applications framework around an ECS.
I'm not at that level yet, but anytime I've attempted to make a templating system it often results in me wanting to make it so complicated that I figure I ought to just build a nice set of helper builder utils in modern C++17 to do it instead.
I've been thinking about entity component systems, which are extremely popular in the video game industry (tools like Unity), and how you could build a general applications framework around an ECS.
My OS is Perception.
Re: What does your OS look like? (Screen Shots..)
My C library has reached a point where I can start bringing back third-party libraries as optional extensions, so I'm working to make freetype available for rendering text. Here's what my terminal looks like with the three text backends (freetype, native SDF-based renderer, and bitmap):
Next step for this is to get the rest of the text rendering into a state where it can use Freetype - menus, window decorations, panel.
Next step for this is to get the rest of the text rendering into a state where it can use Freetype - menus, window decorations, panel.
Re: What does your OS look like? (Screen Shots..)
Taking down GitHub link from my signature until the new project is up, I don't want to cause confusion. The current stuff is still too green to release for my tastes, hence why I haven't linked to that yet.
Anyway, WIP of the file manager (with a fake directory listing, though the list per-se does indeed work), yeah I know it's cutting text in the middle of anything but given the small space available I decided it was a better option for this particular case (for e.g. a text editor I'd make it break only at spaces instead):
Also a WIP of the settings screen (I'll probably need to split it down into subscreens when I start adding stuff for each peripheral):
Also huh, would it be cheating if I include a game? I mean, it's fullscreen and the cursor got tucked away to the side (whoops - you can spot a faint black line to the right if you pay attention), but it isn't obvious it's running on top of that OS. The kernel is the one providing the timing, drawing and input routines though:
Also I totally didn't steal the idea of a snake game from somebody else's OS project here (honestly I can't even remember the name of said project lol). Planning to include a few more though (besides the obvious Solitaire).
Anyway, WIP of the file manager (with a fake directory listing, though the list per-se does indeed work), yeah I know it's cutting text in the middle of anything but given the small space available I decided it was a better option for this particular case (for e.g. a text editor I'd make it break only at spaces instead):
Also a WIP of the settings screen (I'll probably need to split it down into subscreens when I start adding stuff for each peripheral):
Also huh, would it be cheating if I include a game? I mean, it's fullscreen and the cursor got tucked away to the side (whoops - you can spot a faint black line to the right if you pay attention), but it isn't obvious it's running on top of that OS. The kernel is the one providing the timing, drawing and input routines though:
Also I totally didn't steal the idea of a snake game from somebody else's OS project here (honestly I can't even remember the name of said project lol). Planning to include a few more though (besides the obvious Solitaire).
Re: What does your OS look like? (Screen Shots..)
Finally implemented stack backtracing. Should have done this a lot earlier, it makes debugging a lot easier.
My blog: http://www.rivencove.com/
- AndrewAPrice
- Member
- Posts: 2300
- Joined: Mon Jun 05, 2006 11:00 pm
- Location: USA (and Australia)
Re: What does your OS look like? (Screen Shots..)
@Sik that looks awesome!
Are you making an OS for the Motorola 68k? (Curious after seeing your file extension.)
Are you making an OS for the Motorola 68k? (Curious after seeing your file extension.)
My OS is Perception.
Re: What does your OS look like? (Screen Shots..)
Mega Drive (and yeah, 7.67MHz 68000).
Something I noticed is that the file manager there emulated at half the speed still feels more responsive than a lot of modern software (and that's considering it takes a few frames to render all filenames since they're in a variable width font and hence need to be software rendered, not to mention the video routines are far from optimal…). I get that this thing is single tasking and running on a much lower resolution but it's pretty sad, honestly :/
EDIT: also I just noticed you guessed it for the wrong reasons (the mock-up folder consists of the kind of files I'm bound to have in a Mega Drive game), I like to use the ".68k" extension for 68000 asm files (and ".z80" for Z80 asm files). What would be the executable files for this OS are the ones with ".mega" extension.
Something I noticed is that the file manager there emulated at half the speed still feels more responsive than a lot of modern software (and that's considering it takes a few frames to render all filenames since they're in a variable width font and hence need to be software rendered, not to mention the video routines are far from optimal…). I get that this thing is single tasking and running on a much lower resolution but it's pretty sad, honestly :/
EDIT: also I just noticed you guessed it for the wrong reasons (the mock-up folder consists of the kind of files I'm bound to have in a Mega Drive game), I like to use the ".68k" extension for 68000 asm files (and ".z80" for Z80 asm files). What would be the executable files for this OS are the ones with ".mega" extension.
Re: What does your OS look like? (Screen Shots..)
I spent some time figuring out how to use the VMware backdoor interface to automatically set the display resolution as the window changes size (similar to the feature in VirtualBox that does the same thing):
I wrote up an article that should be easier to understand than the sample code that VMware provides: VMware tools on the wiki
I was very surprised to see that VMware had provided sample code for their SVGA interface. They even have samples for some of the more advanced features, which I need to look into. Some parts of their API are rather obtuse, though - I think I've implemented cleaner approaches in mine, and hopefully they're easier to understand.
I wrote up an article that should be easier to understand than the sample code that VMware provides: VMware tools on the wiki
I was very surprised to see that VMware had provided sample code for their SVGA interface. They even have samples for some of the more advanced features, which I need to look into. Some parts of their API are rather obtuse, though - I think I've implemented cleaner approaches in mine, and hopefully they're easier to understand.