I've tried and this patch is able to detach all the virtual console after we 
launch the qemu. However, I think we need to filter out other terminal that are 
not related to view such as compatmonitor(), serial and parallel. 

Also, I think we can have the detach specific to virtio-pci view without the 
need to have new parameters.

> -----Original Message-----
> From: Kim, Dongwon <dongwon....@intel.com>
> Sent: Wednesday, July 21, 2021 6:17 AM
> To: Thomas Huth <th...@redhat.com>
> Cc: qemu-devel@nongnu.org; Romli, Khairul Anuar
> <khairul.anuar.ro...@intel.com>
> Subject: Re: [PATCH 1/2] ui/gtk: detach_all option for making all VCs
> detached upon starting
> 
> On Tue, Jul 20, 2021 at 03:42:16PM +0200, Thomas Huth wrote:
> > On 19/07/2021 23.41, Dongwon Kim wrote:
> > > With "detach-all=on" for display, all VCs are detached from the
> beginning.
> > > This is useful when there are multiple displays assigned to a guest OS.
> >
> > Can you elaborate? (i.e. why is it useful? Do you just want to avoid
> > having multiple things opened at startup? Or is there a different
> > reason?)
> Hi,
> 
> The original motivation is related to an use-case with a guest with multi-
> displays. In that use case, we wanted to have all guest displays placed side 
> by
> side from beginning. Virtual consoles other than guest displays (e.g. virtio-
> gpu-pci) are not actually needed but I found doing "detach-all" is the 
> simplest
> way.
> 
> >
> > > Signed-off-by: Dongwon Kim <dongwon....@intel.com>
> > > Signed-off-by: Khairul Anuar Romli <khairul.anuar.ro...@intel.com>
> > > ---
> > >   qapi/ui.json | 4 +++-
> > >   ui/gtk.c     | 7 +++++++
> > >   2 files changed, 10 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/qapi/ui.json b/qapi/ui.json index
> > > 1052ca9c38..ff14bb2f46 100644
> > > --- a/qapi/ui.json
> > > +++ b/qapi/ui.json
> > > @@ -1141,6 +1141,7 @@
> > >   # @show-cursor:   Force showing the mouse cursor (default: off).
> > >   #                 (since: 5.0)
> > >   # @gl:            Enable OpenGL support (default: off).
> > > +# @detach-all:    Detatch all VirtualConsoles from beginning (default:
> off).
> >
> > Needs a comment à la "(since: 6.2)" at the end (like the one after
> > "show-cursor" some lines earlier.
> >
> > >   #
> > >   # Since: 2.12
> > >   #
> > > @@ -1150,7 +1151,8 @@
> > >                   '*full-screen'   : 'bool',
> > >                   '*window-close'  : 'bool',
> > >                   '*show-cursor'   : 'bool',
> > > -                '*gl'            : 'DisplayGLMode' },
> > > +                '*gl'            : 'DisplayGLMode',
> > > +                '*detach-all'    : 'bool' },
> >
> > If this is for GTK only, shouldn't this rather go into DisplayGTK instead?
> > Or will this be also useful for other display types later?
> 
> This option might not be that useful for other use cases.. but at the same
> time, I'm pretty sure this will work universally (won't break
> anything..) but for now, I think it's good idea to limit this to GTK.
> 
> -DW
> 
> >
> >  Thomas
> >
> >
> > >     'discriminator' : 'type',
> > >     'data'    : { 'gtk'            : 'DisplayGTK',
> > >                   'curses'         : 'DisplayCurses',
> > > diff --git a/ui/gtk.c b/ui/gtk.c
> > > index ce885d2ca3..a07e5a049e 100644
> > > --- a/ui/gtk.c
> > > +++ b/ui/gtk.c
> > > @@ -2211,6 +2211,7 @@ static void gtk_display_init(DisplayState *ds,
> DisplayOptions *opts)
> > >       GdkDisplay *window_display;
> > >       GtkIconTheme *theme;
> > >       char *dir;
> > > +    int i;
> > >       if (!gtkinit) {
> > >           fprintf(stderr, "gtk initialization failed\n"); @@ -2290,6
> > > +2291,12 @@ static void gtk_display_init(DisplayState *ds,
> DisplayOptions *opts)
> > >           gtk_menu_item_activate(GTK_MENU_ITEM(s-
> >grab_on_hover_item));
> > >       }
> > >       gd_clipboard_init(s);
> > > +
> > > +    if (opts->detach_all) {

> > > +        for (i = 0; i < s->nb_vcs - 1; i++) {

[Romli, Khairul Anuar]  We can a conditional check here to only detech 
virtio-pci view rather than "everything". Also, we may want to consider not to 
detach the primary view and keep it remain in qemu primary window.

> > > +            gtk_menu_item_activate(GTK_MENU_ITEM(s->untabify_item));
> > > +        }
> > > +    }
> > >   }
> > >   static void early_gtk_display_init(DisplayOptions *opts)
> > >
> >

Reply via email to