Ideas about interactive GUI
Nobody III
hungryninja101 at ...9...
Tue Apr 18 20:36:54 CEST 2017
Given that we have qt5 ported, my plans with implementing GUIs have
generally involved using a qt-based component as the frontend, and using
report_ROM or a custom RPC interface to communicate with the backend. Is
there anything wrong with this approach? I get that it's not enough when
untrusted data (e.g. icons) needs to be displayed, but shouldn't this work
for most situations, provided untrusted data is processed by other
components?
On Apr 18, 2017 7:24 AM, "Boris Mulder" <boris.mulder at ...434...> wrote:
> Hi,
>
> Good to hear that you are also going to do this! For us, there is a
> clear need for a GUI system that is both dynamic and simple in use.
>
>
> This is actually very similar to what the existing menu_view already
> gives you.
>
> This configurablility would indeed be similar to menu_view.
> Another main difference is that it does not aim to replace menu_view,
> but is an overlapping component that could also handle input, and take
> actions, such as collapsing and expanding submenus. It could still use
> menu_view, fading_dialog and such parts. So instead it aims to replace
> the menu part of launcher, except that it is dynamic and generic.
> What we would like is such a menu component that could be used at many
> places; not only for a desktop environment, but also inside any
> application, or settings menu, or subsystem.
>
> It would be complete with elements such as buttons, submenus and
> dialogs, and the notion of clicking on these elements. These events
> could somehow be communicated to other elements such that the
> corresponding actions are taken.
>
> I'd advise not to use the report/ROM interface to propagate events, but
> only state. Even though one (myself included) is sometimes intuitively
> tempted to mix up events and states, it calls for trouble.
> [...]
>
> Makes sense, you are right. However, for clicking buttons in this context, it makes sense to communicate events instead of states. Perhaps using another way than reports could be useful here, such as some list of events like in Input, or a packet-stream like functionality.
>
>
> This raises the question of where does the responsibility of the menu
> end, and where do the responsibilities of the subsystem manager start?
> If we need a subsystem manager anyway, couldn't it use the menu_view(s)
> directly to implement menus?
>
> We would like to separate the menu with all its buttons from the subsystem state logic.
>
> Whenever we want an application that uses the GUI that does different
> things, we would have to import the menu management
> code into these applications. This could be done as a library with
> functions for creating buttons and menus, or as a separate component
> that can be configured and uses some IPC mechanism. In the latter case,
> more than one component can talk with the same menu, depending on the
> application programmer's needs.
> This can be made as complex or simple as is desirable. However now it is
> already quite complicated to create only a basic menu as all the
> features are very intertwined, which makes the code a bit hard to read
> and modify.
>
>
> The answer may depend on the complexity of the subsystem manager, which
> is obviously critical. Does the separation of the menu from the
> subsystem manager contribute to significantly lower the TCB of the
> subsystem manager?
>
> It does not necessarily change the TCB, but it is done for the sake of
> reusability and code readability/ease of programming. From that
> perspective we think it would be nice if these things were separated,
> and for instance the menu part could be used in another application as well.
>
>
> This leaves the question about the input focus. When using the wm, the
> focus is already defined by the window layouter via the 'focus' ROM. The
> window layouter, in turn, already consumes a 'focus_request' ROM to
> respond to externally triggered focus changes. This would be the right
> hook for the menu / subsystem manager.
>
> I've been looking into this mechanism, but so far it's not entirely
> clear to me. Do you mean that the subsystem manager could write to this
> focus_request report and the layouter would for example show/hide the
> appropriate windows automatically? If so, what about the focus_requests
> that come from the window manager?
> In short: how would that work?
>
>
> The state report generated by init already contains a 'state' attribute
> for each child. Right now, the attribute is present only if the child is
> "incomplete". We could add a value "exited" that would be presented as
> soon as the child issued a 'Parent::exit' call. Also the exit code could
> be added to the report, if needed. The subsystem manager could then
> inspect the state reports for children with this attribute value and
> remove them from the init config.
>
> This is exactly what I'm looking for in that case.
>
> Thanks,
>
> --
>
> Met vriendelijke groet / kind regards,
>
> Boris Mulder
>
> Cyber Security Labs B.V. | Gooimeer 6-31 | 1411 DD Naarden | The Netherlands+31 35 631 3253 <+31%2035%20631%203253> (office)
>
>
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> genode-main mailing list
> genode-main at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/genode-main
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.genode.org/pipermail/users/attachments/20170418/c5512c07/attachment.html>
More information about the users
mailing list