From nobody Sun Feb 8 13:53:42 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1657583322; cv=none; d=zohomail.com; s=zohoarc; b=XhkIa3mMYMMTObNcl+UFIPK7m5xRNQYeN8wydjYDz7IdE5gYyS0/VEcxc1UIobcITnxEkK+0YGKnbygUKUMjkK7ZIKAb5+1xXyrI7YG06WKerk3PRXne4owvu2FVhF3ZCeGQyynER0Yq1Jbp0wJu/zxI4mJLF/Zg5sTIQHvvpho= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1657583322; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=vPi6dEhJR35QBXLjHIloxqWRLTpHSZquh2cPzVuzsxc=; b=P0SmNXlC0z1RmRhSTaPqJHki4YxxPe/u5I9AE9Z8ANpmdgP3IVuZ1gAv+Bg/XmzUgI9d57mzokiXkQqvKcPu6zGOY2wbj8sVeTwsaR5DzcvNdr9xp+wgXq2q6RB48nTQLlgfTROc18acOsH+ylQdBXLlxf/tsudd783N1uWS22s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1657583322019863.8658418279663; Mon, 11 Jul 2022 16:48:42 -0700 (PDT) Received: from localhost ([::1]:49662 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oB38p-0003jW-DN for importer@patchew.org; Mon, 11 Jul 2022 19:48:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42384) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oB37X-0002JF-M1 for qemu-devel@nongnu.org; Mon, 11 Jul 2022 19:47:19 -0400 Received: from mga18.intel.com ([134.134.136.126]:53561) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oB37V-0003wO-AJ for qemu-devel@nongnu.org; Mon, 11 Jul 2022 19:47:19 -0400 Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2022 16:47:14 -0700 Received: from dongwonk-z390-aorus-ultra-intel-gfx.fm.intel.com ([10.105.129.122]) by orsmga006.jf.intel.com with ESMTP; 11 Jul 2022 16:47:13 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1657583237; x=1689119237; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=rrvkFibwtSja6tUWtIKnzKcepxwB2SK4YYB003k9gbE=; b=dTYES8r+zJ2itI/liBsOjMuhOBPE2K9bOLEiIcpXW1Nhj0gmEEQ8+Qjf XOGbKGhV2ymi7TXEgdiPB1uuD7ADJakkHzTl+C0bUYciu6kR8oDEEvsZn noUhzeuEbGKZPGFSrK947n/0nQR0ttpaFnrNtY2CPjZrQotldXs+YIa7h 015tdvf58suUixTKf/YwHa2hSLU+NHVKCrTbUScHN9J0PPsOh2+P+JNEI skTNXkwF+si2Jit6Sqjq4LFOEjd/9hweWgYVcbVjZ9NAXGfOXF+3ie/CB 4/ofxMGMk0q238FBBlk+lOzsIxWj9SHSzblnT573JMSHtbtudoGDiB3vU g==; X-IronPort-AV: E=McAfee;i="6400,9594,10405"; a="267836261" X-IronPort-AV: E=Sophos;i="5.92,264,1650956400"; d="scan'208";a="267836261" X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,264,1650956400"; d="scan'208";a="569972998" From: Dongwon Kim To: qemu-devel@nongnu.org Cc: armbru@redhat.com, berrange@redhat.com, kraxel@redhat.com, pbonzini@redhat.com, f4bug@amsat.org, vivek.kasireddy@intel.com, Dongwon Kim Subject: [PATCH v4 1/2] ui/gtk: detach VCs for additional guest displays Date: Mon, 11 Jul 2022 16:39:58 -0700 Message-Id: <20220711233959.32219-2-dongwon.kim@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20220711233959.32219-1-dongwon.kim@intel.com> References: <20220711233959.32219-1-dongwon.kim@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=dongwon.kim@intel.com; helo=mga18.intel.com X-Spam_score_int: -21 X-Spam_score: -2.2 X-Spam_bar: -- X-Spam_report: (-2.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.082, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1657583324175100001 Detaching any addtional guest displays in case multiple displays are assigned to the guest OS (e.g. max_outputs=3Dn) so that all of them are visible upon lauching. Cc: Daniel P. Berrang=C3=A9 Cc: Markus Armbruster Cc: Philippe Mathieu-Daud=C3=A9 Cc: Paolo Bonzini Cc: Gerd Hoffmann Cc: Vivek Kasireddy Signed-off-by: Dongwon Kim --- ui/gtk.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ui/gtk.c b/ui/gtk.c index 2a791dd2aa..e6878c3209 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -1361,6 +1361,11 @@ static void gd_menu_untabify(GtkMenuItem *item, void= *opaque) =20 g_signal_connect(vc->window, "delete-event", G_CALLBACK(gd_tab_window_close), vc); + + gtk_window_set_default_size(GTK_WINDOW(vc->window), + surface_width(vc->gfx.ds), + surface_height(vc->gfx.ds)); + gtk_widget_show_all(vc->window); =20 if (qemu_console_is_graphic(vc->gfx.dcl.con)) { @@ -2311,6 +2316,7 @@ static void gtk_display_init(DisplayState *ds, Displa= yOptions *opts) GtkDisplayState *s =3D g_malloc0(sizeof(*s)); GdkDisplay *window_display; GtkIconTheme *theme; + int i; char *dir; =20 if (!gtkinit) { @@ -2381,7 +2387,12 @@ static void gtk_display_init(DisplayState *ds, Displ= ayOptions *opts) gtk_widget_set_sensitive(s->copy_item, vc && vc->type =3D=3D GD_VC_VTE); #endif - + for (i =3D 1; i < s->nb_vcs; i++) { + if (vc->type =3D=3D GD_VC_GFX && + qemu_console_is_graphic(s->vc[i].gfx.dcl.con)) { + gtk_menu_item_activate(GTK_MENU_ITEM(s->untabify_item)); + } + } if (opts->has_full_screen && opts->full_screen) { gtk_menu_item_activate(GTK_MENU_ITEM(s->full_screen_item)); --=20 2.30.2 From nobody Sun Feb 8 13:53:42 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1657583450; cv=none; d=zohomail.com; s=zohoarc; b=iG94brOvNYn5nVj3/cSArSJCCVTtwwSyjcuhMe74tmADwL1tX8ix7nCU/q3/mzCPyB4phrH7VTIiHMuyk1TwqQoBJzGyWRFTs+dVfD5RLWfWQxHvtPBqkvbiuLXAr4zv4AhNTqNuUj6iyAxQ+oDwmG0gKmqcJgUzmWyfh/GyGyk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1657583450; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=14oIMYDvRPFDBH0xT0EV7U5o4HmSCEw1C89xxxC2sUw=; b=iuxgS7RuXl/uw8S590Da8w4MvuxPOcwii4mTR971nl8ZlSHP9KDpPDq+GPJCcMKQaUG7jnNyKZp5qga2ziEfg/VecNgt9r1E/moVFbDwY4J0ey2wv973+4VCwbGHp0kmmGxDebAViZ+/3FsPq6JWYU4AfFglB5Po0BCC9CR4YAI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1657583449994541.4449517408783; Mon, 11 Jul 2022 16:50:49 -0700 (PDT) Received: from localhost ([::1]:52912 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oB3Au-0005wl-If for importer@patchew.org; Mon, 11 Jul 2022 19:50:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42398) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oB37Y-0002Ks-Le for qemu-devel@nongnu.org; Mon, 11 Jul 2022 19:47:20 -0400 Received: from mga18.intel.com ([134.134.136.126]:53563) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oB37W-0003wX-EB for qemu-devel@nongnu.org; Mon, 11 Jul 2022 19:47:20 -0400 Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2022 16:47:16 -0700 Received: from dongwonk-z390-aorus-ultra-intel-gfx.fm.intel.com ([10.105.129.122]) by orsmga006.jf.intel.com with ESMTP; 11 Jul 2022 16:47:16 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1657583238; x=1689119238; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=V+7PTKQ8m4pcVDRJPFwCzzAfBycw9fEs+LjqDgV0ybU=; b=DqtNqYsZY8F+7HfGpJuu+YLt6GrJrpsaClXfJ1v2z8FNRVgUsBVrlm+a LrEQYTWgH7Hk/6Qp4S971Nxbf67pLEjowB9aPQz5a/LKStkIYOVi+W1Jp iiwgGTXvY0jonnzPzFmDLvEesB1jaEt6oB3vEeDd1co21jKEgLGnVSz4I sKO9Qbb0kYqUEfsb2L6u31plg35N8vJvOf2Cpvz4Q24tB5jRcfTXoJvaz FvQIZ1qPpo6Arx5LwnuYtA2iEmHQ3cpMdZ4KabKJAc4YUcfD3HvhlzrGG qbPSRQkXivE92SEXtGIF1N6oI9aHdrYKnFQ2KtQVdwSbrRPuwgELF2S3a A==; X-IronPort-AV: E=McAfee;i="6400,9594,10405"; a="267836263" X-IronPort-AV: E=Sophos;i="5.92,264,1650956400"; d="scan'208";a="267836263" X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,264,1650956400"; d="scan'208";a="569973005" From: Dongwon Kim To: qemu-devel@nongnu.org Cc: armbru@redhat.com, berrange@redhat.com, kraxel@redhat.com, pbonzini@redhat.com, f4bug@amsat.org, vivek.kasireddy@intel.com, Dongwon Kim Subject: [PATCH v4 2/2] ui/gtk: a new array param monitor to specify the target displays Date: Mon, 11 Jul 2022 16:39:59 -0700 Message-Id: <20220711233959.32219-3-dongwon.kim@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20220711233959.32219-1-dongwon.kim@intel.com> References: <20220711233959.32219-1-dongwon.kim@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=dongwon.kim@intel.com; helo=mga18.intel.com X-Spam_score_int: -21 X-Spam_score: -2.2 X-Spam_bar: -- X-Spam_report: (-2.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.082, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1657583450786100001 New integer array parameter, 'monitor' is for specifying the target monitors where individual GTK windows are placed upon launching. Monitor numbers in the array are associated with virtual consoles in the order of [VC0, VC1, VC2 ... VCn]. Every GTK window containing each VC will be placed in the region of corresponding monitors. Usage: -display gtk,monitor.=3D,.. ex)-display gtk,monitor.0=3D1,monitor.1=3D0 Cc: Daniel P. Berrang=C3=A9 Cc: Markus Armbruster Cc: Philippe Mathieu-Daud=C3=A9 Cc: Paolo Bonzini Cc: Gerd Hoffmann Cc: Vivek Kasireddy Signed-off-by: Dongwon Kim --- qapi/ui.json | 9 ++++++++- qemu-options.hx | 3 ++- ui/gtk.c | 30 ++++++++++++++++++++++++++++-- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/qapi/ui.json b/qapi/ui.json index 413371d5e8..ee0f9244ef 100644 --- a/qapi/ui.json +++ b/qapi/ui.json @@ -1195,12 +1195,19 @@ # assuming the guest will resize the display to match # the window size then. Otherwise it defaults to "off". # Since 3.1 +# @monitor: Array of numbers, each of which represents physical +# monitor where GTK window containing a given VC will be +# placed. Each monitor number in the array will be +# associated with a virtual console starting from VC0. +# +# since 7.1 # # Since: 2.12 ## { 'struct' : 'DisplayGTK', 'data' : { '*grab-on-hover' : 'bool', - '*zoom-to-fit' : 'bool' } } + '*zoom-to-fit' : 'bool', + '*monitor' : ['uint16'] } } =20 ## # @DisplayEGLHeadless: diff --git a/qemu-options.hx b/qemu-options.hx index 377d22fbd8..aabdfb0636 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -1938,7 +1938,8 @@ DEF("display", HAS_ARG, QEMU_OPTION_display, #endif #if defined(CONFIG_GTK) "-display gtk[,full-screen=3Don|off][,gl=3Don|off][,grab-on-hover=3Don= |off]\n" - " [,show-cursor=3Don|off][,window-close=3Don|off]\n" + " [,monitor.=3D][,show-cursor=3Do= n|off]" + " [,window-close=3Don|off]\n" #endif #if defined(CONFIG_VNC) "-display vnc=3D[,]\n" diff --git a/ui/gtk.c b/ui/gtk.c index e6878c3209..598ab4970f 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -2316,6 +2316,10 @@ static void gtk_display_init(DisplayState *ds, Displ= ayOptions *opts) GtkDisplayState *s =3D g_malloc0(sizeof(*s)); GdkDisplay *window_display; GtkIconTheme *theme; + GtkWidget *win; + GdkRectangle dest; + uint16List *mon; + int n_mon; int i; char *dir; =20 @@ -2393,10 +2397,32 @@ static void gtk_display_init(DisplayState *ds, Disp= layOptions *opts) gtk_menu_item_activate(GTK_MENU_ITEM(s->untabify_item)); } } - if (opts->has_full_screen && - opts->full_screen) { + + if (opts->u.gtk.has_monitor) { + i =3D 0; + n_mon =3D gdk_display_get_n_monitors(window_display); + for (mon =3D opts->u.gtk.monitor; mon; mon =3D mon->next) { + if (mon->value < n_mon && i < s->nb_vcs) { + win =3D s->vc[i].window ? s->vc[i].window : s->window; + if (opts->full_screen) { + gtk_window_fullscreen_on_monitor( + GTK_WINDOW(win), + gdk_display_get_default_screen(window_display), + mon->value); + } else { + gdk_monitor_get_geometry( + gdk_display_get_monitor(window_display, mon->value= ), + &dest); + gtk_window_move(GTK_WINDOW(win), + dest.x, dest.y); + } + i++; + } + } + } else if (opts->full_screen) { gtk_menu_item_activate(GTK_MENU_ITEM(s->full_screen_item)); } + if (opts->u.gtk.has_grab_on_hover && opts->u.gtk.grab_on_hover) { gtk_menu_item_activate(GTK_MENU_ITEM(s->grab_on_hover_item)); --=20 2.30.2