-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add required features to port a basic windowing system #94
Comments
After you get Microwindows and FreeType 2.10.4 (or later, that's the last version I happened to test) available on a Fiwix distribution, let me know if you need help with discussion, design or coding for the remaining items! |
Some questions:
Looks like FreeType was compiled without Bzip2 support but the build log detected correctly the
Any idea? |
No, the fonts required for Microwindows are in its src/fonts/truetype directory. Depending on your configuration, some of these might want to be copied elsewhere, but by default that path is built in to the Microwindows demos.
Try changing the |
Argh!, no, this resulted in even more errors because the PNG library needs the I managed to solve it by adding My fault, I should have checked first the dependencies of FreeType in the Libtool file
Anyway :-) Now I have a bigger |
Yes, but shared libraries are not supported with the current Newlib configuration.
This is what I get:
And this is the contents of that directory:
Yes, they look nice. Thanks!. |
Since we got sockets working on Fiwix, you should be able to use The FreeType font support looks great on Fiwix!! :) |
See the text poking through just to the left of the demo-aafont window you posted, as well as the black box cursor below it? That's the "The kernel doesn't remove the fbcon cursor when calling ioctl(ttyfd, KDSETMODE, KD_GRAPHICS)" issue. In Linux, console text output is also inhibited from display in graphics mode (but not inhibited from being placed in the console text buffer), not just the cursor. The ioctl's for those are in the driver/scr_fiwix.c screen driver, controlled by if HAVE_TEXTMODE, which in turn is enabled in config file |
That clears it up, thanks.
Alright, I'll include this step into the list as part of required things to work.
Yes it does! :-)
Yes, I fixed the cursor problem in the kernel but I didn't see any change when executing the test programs. Then, I saw that the file Now I read your comment about Talking about the SVGAlib, it is possible that Microwindows uses this library instead of the frame buffer?. The majority of old PCs don't has VESA BIOS extensions and cannot use the frame buffer, but they work with SVGAlib as Linux did in the 90s. FiwixOS already comes with the SVGAlib and with the program
This is interesting, I'll also check that. |
No, you should set HAVETEXTMODE=Y and VTSWITCH=Y in config. The former handles the text/graphics ioctls and the latter deals with switching between graphics and text mode while running.
There's an old SVGA screen driver for Microwindows in drivers/deprecated/scr_svga.c, that hasn't been compiled or tested in a while. I'll leave it to you if you want to jump into that. The problem with most older PCs is the hardware and CPUs are such that the graphics resolution is low and they're usually quite slow - meaning no one uses them anymore. I recommend staying with framebuffer but you're welcome to read up the Microwindows docs on screen drivers and play with getting it working again. |
I've set HAVETEXTMODE=Y in the config file (I'll test VTSWITCH option later) and then I rebuild all Microwindows, but I still see the cursor blinking. I think this line is overwriting the setting: What do you think? |
Yes, sorry, that should be removed. I wrote the screen driver for Fiwix kind of quickly and don't remember everything at the moment :) I am glad you're now starting to work on this and look forward to seeing all this work well on Fiwix! |
Yes, it works now! simplescreenrecorder-2024-08-26_18.34.22.mp4As you can see the previous screen is also restored on exit.
I've been working on rewriting the I/O block layer and the buffer cache lately and that required a lot of attention. Now it seems pretty stable but I'm still doing some testings, but now I have a little more of spare time to dedicate it to other interesting things. ;-) |
@ghaerr, I think I don't understand how Nano-X works. I've compiled Microwindows with Then, I tried to execute In the other hand I mean, I don't know how to get a working window manager to have a better graphical experience, you know. |
Hello @mikaku, The way Nano-X works when using LINK_APP_INTO_SERVER=N, which is recommended, is that each application connects using a UNIX socket to the server and issues drawing commands to it. The window manager is built into the nano-X binary to make things simpler. The reason Running Look at the other programs in the bin directory and try running them, such as After you've started the server, you can run (from another terminal or watever) other clients directly and they'll connect to the server - you don't need to execute I think there are also a number of shell scripts in the scripts/ directory that run multiple clients for demo purposes. In general, Nano-X is not supposed to be a complete desktop environment, but rather a toolset for creating graphical applications using an X11-like (or Win32) API. 'I hope that helps. Thank you! |
Yes, that helped me a lot. |
Now that Fiwix has UNIX sockets I'd like to explore the path to add support for a light windowing system like Microwindows or Nano-X. Some comments from @ghaerr in #78 will help a lot to summarize the features needed to port his amazing Microwindows system, which is simple enough to run with UNIX sockets. Other bloated windowing systems like X11 might require a TCP/IP stack which the kernel lacks at the moment.
So, I've created this issue to help to track all the features that @ghaerr summarized:
/dev/mouse
->/dev/psaux
). Meanwhile and for testing under QEMU, use the following line:-chardev msmouse,id=chardev1 -device isa-serial,chardev=chardev1,id=serial1
.LINK_APP_INTO_SERVER = N
), to allow multiple simultaneous connections (clients), like X11, and also avoid linking the entire nano-X server into each executable. @ghaerr said "IIRC there was still a bug where on occasion the client and server would get de-synced. This would be a good time to play with that and see if you can duplicate the problem and fix it in Fiwix."ioctl
s -IO_FB_ADDR
,IO_FB_XRES
,IO_FB_YRES
.ioctl
to fb driver to map framebuffer address to process and return virtual address.ioctl
s to return width, height, format and stride of framebuffer.The text was updated successfully, but these errors were encountered: