Hey I am trying to figure out how to implement a GUI for my OS and I have no Idea where to start,
What I have
- I have written a bootloader and kernel in ASM "Nasm syntax"
ok, as far as I know all that I have to do is figure out how to integrate some graphics routines into my kernel and have them executed then work from there with some mouse routines for mouse support... Does that sound right?
please, any help will be greatly appriciated and I dont care if you call me a newbie because I am, lol
- GUI information - ???
RE: - GUI information - ???
Writing a GUI is a large and highly complex part of any operating system. Its size and complexity should not be underestimated.
First, read this (very recent...) posting: http://www.osdev.org/board.jsp?message=5750 . While not every one applies to every OS (depending on its philosophy), I would say it's a fairly complete list.
Once you've satisfied the dependencies for a GUI, it's time to design it. You'll want to layer it several times. On the bottom-most layer is the low-level graphics driver that takes care of changing screen modes, painting pixels to the screen, blitting pixmaps (images), etc. All the low-lever stuff. You might want to put in stuff there like drawing of lines, circles, etc., or you can put that on a higher level. It's your choice. This is almost certainly done within the kernel, or the next best thing (priviledged user-mode program).
Next you have window management. This is arguably the most demanding layer in terms of system resources, development time, etc. It also requires lots of IPC (interprocess communication), so that had better work right. This can be done within the kernel, or outside.
On top of that, you have all the stuff the user cares about: desktop, icons, window decorations, etc. That stuff is most certainly done outside the kernel.
I hope that helps,
Gnome.
(PS. On a personal note, I would recommend against putting time into a GUI for the time being... chances are you won't get it working right and you'll just get discouraged from OS development. Work on getting everything working all nice in text mode, then slap a GUI on top of that.)
First, read this (very recent...) posting: http://www.osdev.org/board.jsp?message=5750 . While not every one applies to every OS (depending on its philosophy), I would say it's a fairly complete list.
Once you've satisfied the dependencies for a GUI, it's time to design it. You'll want to layer it several times. On the bottom-most layer is the low-level graphics driver that takes care of changing screen modes, painting pixels to the screen, blitting pixmaps (images), etc. All the low-lever stuff. You might want to put in stuff there like drawing of lines, circles, etc., or you can put that on a higher level. It's your choice. This is almost certainly done within the kernel, or the next best thing (priviledged user-mode program).
Next you have window management. This is arguably the most demanding layer in terms of system resources, development time, etc. It also requires lots of IPC (interprocess communication), so that had better work right. This can be done within the kernel, or outside.
On top of that, you have all the stuff the user cares about: desktop, icons, window decorations, etc. That stuff is most certainly done outside the kernel.
I hope that helps,
Gnome.
(PS. On a personal note, I would recommend against putting time into a GUI for the time being... chances are you won't get it working right and you'll just get discouraged from OS development. Work on getting everything working all nice in text mode, then slap a GUI on top of that.)
RE: - GUI information - ???
I would probably go for the old Windows approach and just have the GUI be like any other program. This isn't the most efficient way of running a GUI but it's a start if you already have a good text mode kernel.
I would also suggest either not implementing a GUI or waiting until you have an awesome text mode interface.
I would also suggest either not implementing a GUI or waiting until you have an awesome text mode interface.
Only Human
RE: - GUI information - ???
WARNING: the following is just my humble opinion, not to be released under the "absolute truth" trademark.
NEVER start off with a GUI. Chances are that you won't complete the GUI and (since your kernel is going to depend on it too much) the kernel as well. You are likely to lose all your previous work.
My opinion is that GUI should NEVER be put into the kernel. Kernel should just provide some interfaces for quick video access (including graphics acceleration, etc.) and the GUI should be a separate program that uses this functionality. This scheme is more stable (although a bit slower).
However, it's your kernel.
NEVER start off with a GUI. Chances are that you won't complete the GUI and (since your kernel is going to depend on it too much) the kernel as well. You are likely to lose all your previous work.
My opinion is that GUI should NEVER be put into the kernel. Kernel should just provide some interfaces for quick video access (including graphics acceleration, etc.) and the GUI should be a separate program that uses this functionality. This scheme is more stable (although a bit slower).
However, it's your kernel.