Re: [Simplygnustep-discuss] Basics of NuVu
Status: Alpha
Brought to you by:
cehardin
From: <ceh...@ma...> - 2003-04-14 07:51:21
|
VNC, or a similar protocol, such as RDP, can be put right in there. =20 the idea is not to make a new protocol, but to allow existing protocols=20= to be plugged in. Really though, I'm not gonna worry about the remote=20= stuff for a while., gotta get it working locally first. the=20 infrastructure is built right in though, for the future. For low level client stuff, i think libart and freetype are about the=20 best you can get. The server is too specific to use any other code bases. My original=20 idea was to use directFB, but it's scope is way beyond that of a=20 lightweight window manager. Chad On Sunday, Apr 13, 2003, at 21:07 Pacific/Honolulu, Peter-Henry Mander=20= wrote: > Hi Chad, > > It look to me as if the remote display design is broadly similar to=20 > VNC (http://www.uk.research.att.com/vnc/). Are areas of the client=20 > windows squirted across the network to the server? Maybe VNC could be=20= > a source of inspiration? > > Btw. I had a cursory look at SDL, Simple DirectMedia Layer=20 > (http://www.libsdl.org), and that may inspire some lower level=20 > graphics stuff in NuVu clients, but I think it won't really help much=20= > at the server end. > > Pete. > > ceh...@ma... wrote: >> Here is alittle paper i worte about NuVu. it is very rough but gets=20= >> the basis idea across. There are many more details for NuVu than=20 >> presented here. please tell me what you think and give me feedback.=20= >> If you want to go into more detail please ask. your responses will=20 >> help me to refine the paper and pt it into more detail. Here it is: >> *NuVu System >> /Introduction >> /*The NuVu system is based on the concept of the lightweight window=20= >> manager. Traditional windowing systems, such as X11, are heavyweight.=20= >> What differentiates the two? Heavyweight windowing systems work on=20 >> the principle of sending drawing commands from the client to the=20 >> server. The server does the actual drawing of images, shapes, fonts,=20= >> etc. In a lightweight windowing system, the clients are responsible=20= >> for drawing their contents, they then notify the server that they are=20= >> ready to be drawn and the server then puts the image of the window=20 >> onto the display device. This means that in a lightweight windowing=20= >> system the server has no responsibilities to conduct complicated=20 >> drawings of fonts, shapes, clippings, etc. Since it is the client who=20= >> does the complicated drawing, and clients are separate processes, the=20= >> drawing code is split up and drawing code is not blocked between=20 >> programs. There is an advantage with SMP systems since the most=20 >> processor intensive code, that of the GUI, is split among many=20 >> processes, which can be run on separate processors at the same time. >> The NuVu system is built from the ground up to use 32bit colors,=20 >> including alpha transparency. Each pixel has 8 bit red, green, blue,=20= >> and alpha components. The windows themselves also have an 8bit alpha=20= >> value. This means that individual pixels in a window can be=20 >> semi-transparent or transparent. Adjusting the windows alpha value=20 >> affects the transparency of each individual pixel as well. >> */NuVu Server >> /Introduction >> *The NuVu server is written in C++ and uses the UNIX SysV services to=20= >> interact with the clients. It creates private IPC channels for the=20 >> client and server to communicate with one another. It also creates=20 >> private shared memory areas which the client draws to. The server=20 >> also has access to this shared memory and uses it to blit the images=20= >> of the client=92s windows to the display device. >> The NuVu server abstracts the display and input hardware. It is=20 >> capable of dynamically finding and using keyboards and mice without=20= >> complicated configuration files. Multiple mice and keyboards can be=20= >> used at the same time, with different key layouts even. It also=20 >> abstracts the video display device to such a degree that it is=20 >> possible to suspend users sessions and switch to a new user=92s = session=20 >> (known in the windows world as =93Fast User Switching=94. This=20 >> abstraction can be used for other purposes as well, such as remote=20 >> displays or miniaturized user sessions. For example, the class which=20= >> abstract frame buffers =93NVFrameBuffer=94 can be sub classed to, = let=92s=20 >> say, NVRDPFrameBuffer (Remote Desktop Protocol) without special code=20= >> in the server in the client. Another possibility is something like a=20= >> NVMiniFrameBuffer. Such a class can masquerade as a normal frame=20 >> buffer, but really present a miniaturized version onto the screen.=20 >> For example, the login screen can have mini, active, sessions of many=20= >> users displayed on one screen. Of course, this high level of=20 >> abstraction also allows for easy dynamic screen resolution and color=20= >> depth changes. >> Even though there is ahigh level of abstraction within the classes of=20= >> the server, drawing speed is not compromised. This is because the=20 >> most critical pieces of code are inlined methods. There are plans to=20= >> include vector assembly instructions (MMX, etc) in these critical=20 >> pieces as well. >> */NuVu Client library >> /Introduction >> *The NuVu client library will be a set of stubs used to communicate=20= >> with the server, written in plain C. Just like the server, it will=20 >> not contain any code for drawing shapes, fonts etc. It only provides=20= >> convenient functions for interacting with the server. The actual code=20= >> to draw shapes, fonts, etc will reside in other libraries. Most=20 >> likely two of these will be libart and freetype. >> */Conclusion >> /*NuVu is a fresh system design, built to be used the way users=20 >> expect, without complicated configuration files. It automatically=20 >> detects USB input devices and provides an abstraction of them, both=20= >> internally in the server and to the clients. It separates the=20 >> complicated drawing code into separate processes to improve=20 >> responsiveness and take advantage of SMP systems. It is also very=20 >> extensible, it can be used for both remote and local displays with=20 >> minimal impact in the server code and next to none in the client lib. > > > |