On 2012-02-27 00:46, Anthony Liguori wrote: > I realize UIs are the third rail of QEMU development, but over the years I've > gotten a lot of feedback from users about our UI. I think everyone struggles > with the SDL interface and its lack of discoverability but it's worse than I > think most people realize for users that rely on accessibility tools. > > The two pieces of feedback I've gotten the most re: accessibility are the lack > of QEMU's enablement for screen readers and the lack of configurable > accelerators. > > Since we render our own terminal using a fixed sized font, we don't respect > system font settings which means we ignore if the user has configured large > print. > > We also don't integrate at all with screen readers which means that for blind > users, the virtual consoles may as well not even exist. > > We also don't allow any type of configuration of accelerators. For users with > limited dexterity (this is actually more common than you would think), they may > use an input device that only inputs one key at a time. Holding down two keys > at once is not possible for these users. > > These are solved problems though and while we could reinvent all of this > ourselves with SDL, we would be crazy if we did. Modern toolkits, like GTK, > solve these problems. > > By using GTK, we can leverage VteTerminal for screen reader integration and font > configuration. We can also use GTK's accelerator support to make accelerators > configurable (Gnome provides a global accelerator configuration interface). > > I'm not attempting to make a pretty desktop virtualization UI. Maybe we'll go > there eventually but that's not what this series is about. > > This is just attempting to use a richer toolkit such that we can enable basic > accessibility support. As a consequence, the UI is much more usable even for a > user without accessibility requirements so it's a win-win. > > Also available at: > > https://github.com/aliguori/qemu/tree/gtk.2 > > --- > v1 -> v2 > - Add internationalization support. I don't actually speak any other languages > so I added a placeholder for a German translation. This can be tested with > LANGUAGE=de_DE.UTF-8 qemu-system-x86_64 > - Fixed the terminal size for VteTerminal widgets. I think the behavior makes > sense now. > - Fixed lots of issues raised in review comments (see individual patches) > > Known Issues: > - I saw the X crash once. I think it has to do with widget sizes. I need to > work harder to reproduce. > - I've not recreated the reported memory leak yet. > - I haven't added backwards compatibility code for older VteTerminal widgets > yet. Looks quite nice but still has some rough edges: - full screen doesn't work, at least here - lacking support for auto-grabbing in absolute mouse mode - unscaling (ctrl-alt-u) is lacking - window not resizable (except in broken full-screen mode) Will see if I find some time to look into this. Is this also working properly under Windows? Otherwise we probably can't deprecate SDL - or would have to provide a native Windows GUI. As we have a menu now, I would suggest to add some handy monitor commands there as well, like reset or powerdown. Jan