On Friday, 28 January 2022, at 6:22 AM, ori wrote:
> It'd probably make sense to generalize: 'service=foo'
in plan9.ini could run /bin/^$foo^rc.

This is an excerpt for one experimental gdi from profile

...
ramfs
font = /lib/font/bit/lucida/unicode.10.font
upas/fs
fn cd { builtin cd $* && awd }  # for acme
service=kiosk
case kiosk
echo -n accelerated > '#m/mousectl'
echo -n 'res 3' > '#m/mousectl'
prompt=('term% ' '      ')
fn term%{ $* }
#       cat /sys/lib/kbmap/de > /dev/kbmap
exec /usr/glenda/proj/gdi/gdi
# exec rio -f /lib/font/bit/lucida/unicode.10.font
case terminal
plumber
echo -n accelerated > '#m/mousectl'
echo -n 'res 3' > '#m/mousectl'
prompt=('term% ' '      ')
fn term%{ $* }
exec rio -f /lib/font/bit/lucida/unicode.10.font
#       exec /usr/glenda/proj/gdi/gdi
...

I defined kiosk as a service target inside profile and by editing profile 
before starting I can switch between the new window system and rio both can run 
inside each other. By defining well known targets like kiosk or desktop aso the 
compilation would get easier and due to the existing environment variable the 
running main window system would be known to client apps (even if not 
necessary)On Friday, 28 January 2022, at 6:22 AM, ori wrote:

> Why would another layer be help?

Libmemdraw is not very fast, and profiling+optimization
will be needed to solve that, but I'm not sure what an
additional layer is supposed to do there.

The extra layer would make sharing of the optimized framebuffer device usable 
for both window managers directly using this fbdev and also for devdraw 
(memlayer, memdraw). In last instance devdraw does also render to the graphics 
memory so this layer would be shared by both. This extra layer would make sure 
that only one application has direct access to the framebuffer while the other 
gets multiplexed. I did the multiplexing in my window manager for rio so its 
possible to run my window manager inside rio and vice versa. The alternative 
would be a parallel fbdev with the risk that both devdraw as well as this dev 
driver try to write concurently to the video memory. The changes to memlayer 
memdraw devdraw would be minimalistic but are not really necessary. Those 
changes would make both window systems benefit by a shared code base and 
improvements in this code base while totally transparent for any application 
running on the system.


On Friday, 28 January 2022, at 6:22 AM, ori wrote:
> Sure.  It fits -- same place as kbdfs -- but someone
needs to come up with the event encoding, write the
'touchfs', and implement the readers that toss events
down channels.

Nothing insurmountable, just needs someone who cares
about it to roll up their sleeves and write code.

if(initdraw(nil, nil, argv0) < 0)
sysfatal("%s: %r", argv0);
if((mctl = initmouse(nil, screen)) == nil)
sysfatal("%s: %r", argv0);
if((kctl = initkeyboard(nil)) == nil)
sysfatal("%s: %r", argv0);
pixi_init() ;
test_fb () ;
draw_fb () ;
enum{MOUSE, RESIZE, KEYBD, NONE};
Alt alts[4] = {
{mctl->c, &mouse, CHANRCV},
{mctl->resizec, &resize, CHANRCV},
{kctl->c, &r, CHANRCV},
{nil, nil, CHANEND},
};

Currently I'm doing things for event handling like in a rio app and it works 
but the code could be simplified by a notification layer which we can define 
all together.

To make things more clear :

I have a working kiosk and an experimental window system but those can be 
improved and I would prefer making those things a general well documented part 
of the system. The more people experiment with such an enhancement the more it 
evolves and the less bugs will remain. I have ideas and I'm sure others also 
have ideas so it would be best to share opinions and learn from each other. I 
don't like forking a project when I like its progress as I do regarding 9front 
legacy9.

------------------------------------------
9fans: 9fans
Permalink: 
https://9fans.topicbox.com/groups/9fans/T2518f9e4fc10ed03-M5b9c63bb91f21f3264e973ff
Delivery options: https://9fans.topicbox.com/groups/9fans/subscription

Reply via email to