From nobody Mon May 6 20:25:52 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 154712195367965.9357655663008; Thu, 10 Jan 2019 04:05:53 -0800 (PST) Received: from localhost ([127.0.0.1]:52794 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghZ5p-0004Eh-8z for importer@patchew.org; Thu, 10 Jan 2019 07:05:49 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49248) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghZ1N-0000qW-0e for qemu-devel@nongnu.org; Thu, 10 Jan 2019 07:01:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ghZ16-0008IJ-6N for qemu-devel@nongnu.org; Thu, 10 Jan 2019 07:01:12 -0500 Received: from mx1.redhat.com ([209.132.183.28]:34098) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ghZ15-0008Em-El for qemu-devel@nongnu.org; Thu, 10 Jan 2019 07:00:56 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 88039C057F37 for ; Thu, 10 Jan 2019 12:00:53 +0000 (UTC) Received: from dhcp-16-175.lcy.redhat.com (unknown [10.42.16.175]) by smtp.corp.redhat.com (Postfix) with ESMTP id 47221600C8; Thu, 10 Jan 2019 12:00:52 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Date: Thu, 10 Jan 2019 12:00:45 +0000 Message-Id: <20190110120047.25369-2-berrange@redhat.com> In-Reply-To: <20190110120047.25369-1-berrange@redhat.com> References: <20190110120047.25369-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Thu, 10 Jan 2019 12:00:53 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 1/3] ui: install logo icons to $prefix/share/icons X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" QEMU currently installs loogs to $prefix/share/qemu/ which means no GUI toolkit or applications can find them by default. The accepted standards for desktop applications declare that application logos / icons should be installed under $prefix/share/icons, so use this directory location. Pre-rendered icons are provided at the standard sizes expected for GUI applications, along with the scalable SVG, to ensure maximum portability. The PNGs are rendered from the SVG using inkscape, however, this is not wired up into the default make rules to avoid requiring inkscape as a mandatory tool in build systems / developer workstations.. Signed-off-by: Daniel P. Berrang=C3=A9 --- Makefile | 13 ++++++++++++- configure | 2 ++ pc-bios/qemu-icon.bmp | Bin 630 -> 0 bytes ui/gtk.c | 17 +++++------------ ui/icons/Makefile | 13 +++++++++++++ .../qemu_logo_no_text.svg =3D> ui/icons/qemu.svg | 0 ui/icons/qemu_128x128.png | Bin 0 -> 8286 bytes ui/icons/qemu_16x16.png | Bin 0 -> 765 bytes ui/icons/qemu_24x24.png | Bin 0 -> 1201 bytes ui/icons/qemu_256x256.png | Bin 0 -> 17572 bytes ui/icons/qemu_32x32.bmp | Bin 0 -> 4234 bytes ui/icons/qemu_32x32.png | Bin 0 -> 1696 bytes ui/icons/qemu_48x48.png | Bin 0 -> 2694 bytes ui/icons/qemu_512x512.png | Bin 0 -> 38007 bytes ui/icons/qemu_64x64.png | Bin 0 -> 3807 bytes ui/sdl2.c | 16 ++++++---------- 16 files changed, 38 insertions(+), 23 deletions(-) delete mode 100644 pc-bios/qemu-icon.bmp create mode 100644 ui/icons/Makefile rename pc-bios/qemu_logo_no_text.svg =3D> ui/icons/qemu.svg (100%) create mode 100644 ui/icons/qemu_128x128.png create mode 100644 ui/icons/qemu_16x16.png create mode 100644 ui/icons/qemu_24x24.png create mode 100644 ui/icons/qemu_256x256.png create mode 100644 ui/icons/qemu_32x32.bmp create mode 100644 ui/icons/qemu_32x32.png create mode 100644 ui/icons/qemu_48x48.png create mode 100644 ui/icons/qemu_512x512.png create mode 100644 ui/icons/qemu_64x64.png diff --git a/Makefile b/Makefile index dd53965f77..6dd82f2eb8 100644 --- a/Makefile +++ b/Makefile @@ -666,7 +666,6 @@ pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom \ efi-e1000.rom efi-eepro100.rom efi-ne2k_pci.rom \ efi-pcnet.rom efi-rtl8139.rom efi-virtio.rom \ efi-e1000e.rom efi-vmxnet3.rom \ -qemu-icon.bmp qemu_logo_no_text.svg \ bamboo.dtb canyonlands.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb \ multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin \ s390-ccw.img s390-netboot.img \ @@ -719,6 +718,7 @@ ifneq (,$(findstring qemu-ga,$(TOOLS))) endif endif =20 +ICON_SIZES=3D16x16 24x24 32x32 48x48 64x64 128x128 256x256 512x512 =20 install: all $(if $(BUILD_DOCS),install-doc) install-datadir install-local= statedir ifneq ($(TOOLS),) @@ -740,6 +740,17 @@ ifneq ($(BLOBS),) $(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(qemu_datadir)"; \ done endif + for s in $(ICON_SIZES); do \ + mkdir -p "$(DESTDIR)/$(qemu_icondir)/hicolor/$${s}/apps"; \ + $(INSTALL_DATA) $(SRC_PATH)/ui/icons/qemu_$${s}.png \ + "$(DESTDIR)/$(qemu_icondir)/hicolor/$${s}/apps/qemu.png"; \ + done; \ + mkdir -p "$(DESTDIR)/$(qemu_icondir)/hicolor/32x32/apps"; \ + $(INSTALL_DATA) $(SRC_PATH)/ui/icons/qemu_32x32.bmp \ + "$(DESTDIR)/$(qemu_icondir)/hicolor/32x32/apps/qemu.bmp"; \ + mkdir -p "$(DESTDIR)/$(qemu_icondir)/hicolor/scalable/apps"; \ + $(INSTALL_DATA) $(SRC_PATH)/ui/icons/qemu.svg \ + "$(DESTDIR)/$(qemu_icondir)/hicolor/scalable/apps/qemu.svg" ifdef CONFIG_GTK $(MAKE) -C po $@ endif diff --git a/configure b/configure index 8049b71eef..c1e1e05b5a 100755 --- a/configure +++ b/configure @@ -5761,6 +5761,7 @@ qemu_confdir=3D$sysconfdir$confsuffix qemu_moddir=3D$libdir$confsuffix qemu_datadir=3D$datadir$confsuffix qemu_localedir=3D"$datadir/locale" +qemu_icondir=3D"$datadir/icons" =20 # We can only support ivshmem if we have eventfd if [ "$eventfd" =3D "yes" ]; then @@ -6227,6 +6228,7 @@ if test "$mingw32" =3D "no" ; then fi echo "qemu_helperdir=3D$libexecdir" >> $config_host_mak echo "qemu_localedir=3D$qemu_localedir" >> $config_host_mak +echo "qemu_icondir=3D$qemu_icondir" >> $config_host_mak echo "libs_softmmu=3D$libs_softmmu" >> $config_host_mak echo "GIT=3D$git" >> $config_host_mak echo "GIT_SUBMODULES=3D$git_submodules" >> $config_host_mak diff --git a/pc-bios/qemu-icon.bmp b/pc-bios/qemu-icon.bmp deleted file mode 100644 index 72d9a2f561ecbb61e49e75540debf189ee67cdb5..000000000000000000000000000= 0000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmZ|ML1@!Z7zgmL>6nKq_KmVSmti*)gn{m0yeXRmMqy5|CLRZ(xt6igC%FvW!4&jR z5Y{I>2opv>2uSg!3<82qBHKlfV8S|jvNTZCfv5Vts7F6|kN5k(@FnECcD<@VQdQc| z(<=3DO3DHx&C|Ld*y3DW5_OkcbU2yF< zRmf(uu(IKUNUF)$t`Iq0pO9?i4*)W&wHE+I>C^P;Hb9rc8u6q2k~z7-F=3DBn64w;*Y zQ{*uKW#-(i85y*MXdZy_Cf2U@+J&Uub5M5TZ^o4kNWq9`>=3DOgc zKn$Z^Aya#%?DT^zql7YOLvb_H4^c~uVXx47bRk4Etvj3}y3woSV{w3*B~3win40Vd zbZrs2jc)Jka)?`&W$C(nz>Qun2e_7)5*wrLRDkQ`A37Dsusem@()Xkn(d|6N?Hgok zz$mcYubapdmj^7T+t{ijKO^rgYiL}uvDmOH?2k*@ZH~JlUtvcS7%S9*zZBvzXXE73 z-0sSw|_Q;2(>g6~MMdTMe*`VzE`BkE*SA1$vR()@ALR!3A+8Z**adJxuX^y8z Z&cg*cELjbvI!`?IkCZfh^+R$cegj&c0K5PI diff --git a/ui/gtk.c b/ui/gtk.c index 579990b865..ec63befa16 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -2214,8 +2214,8 @@ static void gtk_display_init(DisplayState *ds, Displa= yOptions *opts) VirtualConsole *vc; =20 GtkDisplayState *s =3D g_malloc0(sizeof(*s)); - char *filename; GdkDisplay *window_display; + GtkIconTheme *theme; =20 if (!gtkinit) { fprintf(stderr, "gtk initialization failed\n"); @@ -2224,6 +2224,9 @@ static void gtk_display_init(DisplayState *ds, Displa= yOptions *opts) assert(opts->type =3D=3D DISPLAY_TYPE_GTK); s->opts =3D opts; =20 + theme =3D gtk_icon_theme_get_default(); + gtk_icon_theme_prepend_search_path(theme, CONFIG_QEMU_ICONDIR); + s->window =3D gtk_window_new(GTK_WINDOW_TOPLEVEL); s->vbox =3D gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); s->notebook =3D gtk_notebook_new(); @@ -2248,17 +2251,7 @@ static void gtk_display_init(DisplayState *ds, Displ= ayOptions *opts) qemu_add_mouse_mode_change_notifier(&s->mouse_mode_notifier); qemu_add_vm_change_state_handler(gd_change_runstate, s); =20 - filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, "qemu_logo_no_text.sv= g"); - if (filename) { - GError *error =3D NULL; - GdkPixbuf *pixbuf =3D gdk_pixbuf_new_from_file(filename, &error); - if (pixbuf) { - gtk_window_set_icon(GTK_WINDOW(s->window), pixbuf); - } else { - g_error_free(error); - } - g_free(filename); - } + gtk_window_set_icon_name(GTK_WINDOW(s->window), "qemu"); =20 gd_create_menus(s); =20 diff --git a/ui/icons/Makefile b/ui/icons/Makefile new file mode 100644 index 0000000000..20bd64ccce --- /dev/null +++ b/ui/icons/Makefile @@ -0,0 +1,13 @@ + +# Regenerate bitmaps from the SVG using inkscape CLI export +# and ImageMagick. Don't use ImageMagick for the initial +# SVG conversion, since it merely calls inkscape, but uses +# 96 DPI res resulting in poor quality output. + +regenerate: + for s in 16 24 32 48 64 128 256 512; \ + do \ + inkscape --without-gui --export-png=3Dqemu_$${s}x$${s}.png \ + --export-width=3D$$s --export-height=3D$$s qemu.svg ; \ + done + convert qemu_32x32.png qemu_32x32.bmp diff --git a/pc-bios/qemu_logo_no_text.svg b/ui/icons/qemu.svg similarity index 100% rename from pc-bios/qemu_logo_no_text.svg rename to ui/icons/qemu.svg diff --git a/ui/icons/qemu_128x128.png b/ui/icons/qemu_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..96831807ba873c9257c1985f43c= 7618df9128286 GIT binary patch literal 8286 zcmV-kAfexhP)Qb%U)h&7EdrqCMzV}zRZq@zW-*%T0{O5xJ<^qd=3DdB7Z? z5vT*If$2agpaK=3D6*TjL5(W7VdI0Cc-ZNNTY*XXY-%wrS=3DVxlV$0UCgFMvpUrQ#sbK zcGw%wsWGKT{s6E8co*0VYyu92tnZ}4@yGxrzzX1E;8Ng3C!&Q57b*)EE)>np%}V;1 zHf@?HFE3~6)TyGRq=3De$)V&d^QM~@zr$z)RY_xH=3DTwl>+?+N!sOit@^fY+w?>t z;l&g!z)Qdj!0VV&X1)Nb_Qq$J_mde zXu{I_N=3Dr+*#u9iJo8L)?b@};0|yQm zIIEUE;A!A-U}xC-6bh4-0nP>P0WQN<$L8i{v3m9DqML8NS*@w5nUKn*VHgG*Hf%^e z@x&7&fB3^6Ms!`bW?PwJ6YwbTJd@0boJ3cWK2<% zf>+KDd-v|ufBDN_CLVwM@sUxR!AUB-5Bvl0tV8~UV6rg4#lVA@R(uAQEnB9nS+l0- z;)^ei6~0>G(b3VNKk~>U!%sf>XhGeHXYXW(IAIA8T}!$dH^ zO5ia}3qJ$(_4VQ>Klw?~x#yniEAEA%q4u?rs-B;b9*cLQmsWwIdS9Q%Mz`b0kt4>M zHERZ6eDTH9Xp)m^*axfuUM*C;ps);}0{3DXdE*-Rth3Hi9((Mu;<~yz-#V#-hne!u zzlf^0pQP{HuS>nMo}#XgM9HD|C~M!0QCvy)rQer>r(RQVL(7e^q?A1V_~VI(9(pKl z7>1i|U;zIQ(;g~_G$<4U%m$tSmOI_^=3D9_PhJ@CK-MXIX0)<+%cV#c%gi?a5&P*MTj zjSzHR{C#E~s6%Zs9X{~IK07m=3D)6C`V?Tf{YdWm*H7_b`s>3S6)fpefQl%0|Nur zV3M67b^%|<3_Ir)g*xzZCVgiP%U#RXhI_ z?#@D?Z}D}qa?fi*9XvdiEY(tmXPzeGO=3DmOI{3$s+V=3D)9YG^0=3D*J9qBXR+moqr)0Ka#9UH2Yv`-M42M1S3U~GwCsNY zT<>}yQpY?t03x1FPX~Gc`Ic9ybBqabG~5|m1SL)pR{Oi zZ`Z&4bzn7cG@JXl zA?oPbbj*>k6}I#-2Dtd*i(}vZ_P2|`w2ZwD42|ZOz9Xg{cvC3ah)|OQ5m(n6Lh6+E z?h&=3DS{wT_i>=3Dc953uUT!>aqHP^m_)+=3DL1<&Q=3D=3D?ev`AgQetmK@&DvS4=3Dd*!Tz;= nP* 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 L24Y`B^ZxN4*#rg} literal 0 HcmV?d00001 diff --git a/ui/icons/qemu_32x32.png b/ui/icons/qemu_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..b746096cf8104bccfda8259ee2f= 75de1bab2e0e5 GIT binary patch literal 1696 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 AvH$=3D8 literal 0 HcmV?d00001 diff --git a/ui/icons/qemu_512x512.png b/ui/icons/qemu_512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..86aaa6395fc91271562db2b075d= dd8e889531680 GIT binary patch literal 38007 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�n3js~p;vo;WM6A6F$251@w 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 P00000NkvXXu0mjf?B&HP literal 0 HcmV?d00001 diff --git a/ui/icons/qemu_64x64.png b/ui/icons/qemu_64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..e00c8b4c9be88a89b091bb96790= 0d18e97d9011b GIT binary patch literal 3807 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 V>^nknkV*gm002ovPDHLkV1gxkF)RQ8 literal 0 HcmV?d00001 diff --git a/ui/sdl2.c b/ui/sdl2.c index a10b6e3a08..4c0d5db473 100644 --- a/ui/sdl2.c +++ b/ui/sdl2.c @@ -762,7 +762,6 @@ static void sdl2_display_early_init(DisplayOptions *o) static void sdl2_display_init(DisplayState *ds, DisplayOptions *o) { uint8_t data =3D 0; - char *filename; int i; SDL_SysWMinfo info; =20 @@ -837,15 +836,12 @@ static void sdl2_display_init(DisplayState *ds, Displ= ayOptions *o) } =20 /* Load a 32x32x4 image. White pixels are transparent. */ - filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, "qemu-icon.bmp"); - if (filename) { - SDL_Surface *image =3D SDL_LoadBMP(filename); - if (image) { - uint32_t colorkey =3D SDL_MapRGB(image->format, 255, 255, 255); - SDL_SetColorKey(image, SDL_TRUE, colorkey); - SDL_SetWindowIcon(sdl2_console[0].real_window, image); - } - g_free(filename); + SDL_Surface *image =3D SDL_LoadBMP(CONFIG_QEMU_ICONDIR + "/hicolor/32x32/apps/qemu.bmp"); + if (image) { + uint32_t colorkey =3D SDL_MapRGB(image->format, 255, 255, 255); + SDL_SetColorKey(image, SDL_TRUE, colorkey); + SDL_SetWindowIcon(sdl2_console[0].real_window, image); } =20 gui_grab =3D 0; --=20 2.19.2 From nobody Mon May 6 20:25:52 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1547121804144283.4281002839334; Thu, 10 Jan 2019 04:03:24 -0800 (PST) Received: from localhost ([127.0.0.1]:52184 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghZ3T-00020f-4d for importer@patchew.org; Thu, 10 Jan 2019 07:03:23 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49132) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghZ1B-0000hw-RK for qemu-devel@nongnu.org; Thu, 10 Jan 2019 07:01:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ghZ15-0008Hq-OQ for qemu-devel@nongnu.org; Thu, 10 Jan 2019 07:01:01 -0500 Received: from mx1.redhat.com ([209.132.183.28]:45284) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ghZ15-0008Ga-Ad for qemu-devel@nongnu.org; Thu, 10 Jan 2019 07:00:55 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 760AD2C9779 for ; Thu, 10 Jan 2019 12:00:54 +0000 (UTC) Received: from dhcp-16-175.lcy.redhat.com (unknown [10.42.16.175]) by smtp.corp.redhat.com (Postfix) with ESMTP id BB6EA600C8; Thu, 10 Jan 2019 12:00:53 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Date: Thu, 10 Jan 2019 12:00:46 +0000 Message-Id: <20190110120047.25369-3-berrange@redhat.com> In-Reply-To: <20190110120047.25369-1-berrange@redhat.com> References: <20190110120047.25369-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Thu, 10 Jan 2019 12:00:54 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 2/3] ui: fix icon display for GTK frontend under GNOME Shell with Wayland X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" The icon associated with a GtkWindow is just a hint to window managers and not all of them will honour it. Some will instead want to show the icon listed by the .desktop file. The desktop file is located based on the application ID, which is set using g_set_prgname. QEMU has not historically provided a desktop file or set its app ID, so it got a broken icon in GNOME shell, which is now fixed. Signed-off-by: Daniel P. Berrang=C3=A9 --- Makefile | 3 +++ configure | 2 ++ ui/gtk.c | 1 + ui/qemu.desktop | 8 ++++++++ 4 files changed, 14 insertions(+) create mode 100644 ui/qemu.desktop diff --git a/Makefile b/Makefile index 6dd82f2eb8..f12e935c46 100644 --- a/Makefile +++ b/Makefile @@ -751,6 +751,9 @@ endif mkdir -p "$(DESTDIR)/$(qemu_icondir)/hicolor/scalable/apps"; \ $(INSTALL_DATA) $(SRC_PATH)/ui/icons/qemu.svg \ "$(DESTDIR)/$(qemu_icondir)/hicolor/scalable/apps/qemu.svg" + mkdir -p "$(DESTDIR)/$(qemu_desktopdir)" + $(INSTALL_DATA) $(SRC_PATH)/ui/qemu.desktop \ + "$(DESTDIR)/$(qemu_desktopdir)/qemu.desktop" ifdef CONFIG_GTK $(MAKE) -C po $@ endif diff --git a/configure b/configure index c1e1e05b5a..97918ba09c 100755 --- a/configure +++ b/configure @@ -5762,6 +5762,7 @@ qemu_moddir=3D$libdir$confsuffix qemu_datadir=3D$datadir$confsuffix qemu_localedir=3D"$datadir/locale" qemu_icondir=3D"$datadir/icons" +qemu_desktopdir=3D"$datadir/applications" =20 # We can only support ivshmem if we have eventfd if [ "$eventfd" =3D "yes" ]; then @@ -6229,6 +6230,7 @@ fi echo "qemu_helperdir=3D$libexecdir" >> $config_host_mak echo "qemu_localedir=3D$qemu_localedir" >> $config_host_mak echo "qemu_icondir=3D$qemu_icondir" >> $config_host_mak +echo "qemu_desktopdir=3D$qemu_desktopdir" >> $config_host_mak echo "libs_softmmu=3D$libs_softmmu" >> $config_host_mak echo "GIT=3D$git" >> $config_host_mak echo "GIT_SUBMODULES=3D$git_submodules" >> $config_host_mak diff --git a/ui/gtk.c b/ui/gtk.c index ec63befa16..87c0e33d2a 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -2226,6 +2226,7 @@ static void gtk_display_init(DisplayState *ds, Displa= yOptions *opts) =20 theme =3D gtk_icon_theme_get_default(); gtk_icon_theme_prepend_search_path(theme, CONFIG_QEMU_ICONDIR); + g_set_prgname("qemu"); =20 s->window =3D gtk_window_new(GTK_WINDOW_TOPLEVEL); s->vbox =3D gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); diff --git a/ui/qemu.desktop b/ui/qemu.desktop new file mode 100644 index 0000000000..20f09f56be --- /dev/null +++ b/ui/qemu.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Version=3D1.0 +Name=3DQEMU +Icon=3Dqemu +Type=3DApplication +Terminal=3Dfalse +Keywords=3DEmulators;Virtualization;KVM; +NoDisplay=3Dtrue --=20 2.19.2 From nobody Mon May 6 20:25:52 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1547121797711498.21094428289723; Thu, 10 Jan 2019 04:03:17 -0800 (PST) Received: from localhost ([127.0.0.1]:52118 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghZ3F-0001po-IJ for importer@patchew.org; Thu, 10 Jan 2019 07:03:09 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49075) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghZ18-0000dJ-D1 for qemu-devel@nongnu.org; Thu, 10 Jan 2019 07:00:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ghZ16-0008Id-R7 for qemu-devel@nongnu.org; Thu, 10 Jan 2019 07:00:58 -0500 Received: from mx1.redhat.com ([209.132.183.28]:41480) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ghZ16-0008I9-Hh for qemu-devel@nongnu.org; Thu, 10 Jan 2019 07:00:56 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7F0E1C049DFC for ; Thu, 10 Jan 2019 12:00:55 +0000 (UTC) Received: from dhcp-16-175.lcy.redhat.com (unknown [10.42.16.175]) by smtp.corp.redhat.com (Postfix) with ESMTP id AE846600C8; Thu, 10 Jan 2019 12:00:54 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Date: Thu, 10 Jan 2019 12:00:47 +0000 Message-Id: <20190110120047.25369-4-berrange@redhat.com> In-Reply-To: <20190110120047.25369-1-berrange@redhat.com> References: <20190110120047.25369-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 10 Jan 2019 12:00:55 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 3/3] sdl: add support for high resolution window icon X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Modern desktop environments can render icons at very large sizes, especially with high DPI screens. Providing a 32x32 pixel bitmap is nowhere near sufficient anymore. When displayed in GNOME shell the QEMU icon looks awful, having been scaled up to at least x4 its base size. This is compounded by the fact that the BMP file doesn't do transparency, so while we've removed white pixels, we still have anti-aliased nearly-white pixels which make the logo look appalling on black backgrounds. Loading a high resolution PNG icon addresses both problems, but requires use of the extra SDL2_image library. Signed-off-by: Daniel P. Berrang=C3=A9 --- configure | 43 +++++++++++++++++++++++++++++++++++++++++++ include/ui/sdl2.h | 3 +++ ui/sdl2.c | 18 ++++++++++++------ 3 files changed, 58 insertions(+), 6 deletions(-) diff --git a/configure b/configure index 97918ba09c..880b38bd45 100755 --- a/configure +++ b/configure @@ -346,6 +346,7 @@ fdt=3D"" netmap=3D"no" sdl=3D"" sdlabi=3D"" +sdl_image=3D"" virtfs=3D"" mpath=3D"" vnc=3D"yes" @@ -1046,6 +1047,10 @@ for opt do ;; --with-sdlabi=3D*) sdlabi=3D"$optarg" ;; + --disable-sdl-image) sdl_image=3D"no" + ;; + --enable-sdl-image) sdl_image=3D"yes" + ;; --disable-qom-cast-debug) qom_cast_debug=3D"no" ;; --enable-qom-cast-debug) qom_cast_debug=3D"yes" @@ -1714,6 +1719,7 @@ disabled with --disable-FEATURE, default is enabled i= f available: gcrypt libgcrypt cryptography support sdl SDL UI --with-sdlabi select preferred SDL ABI 1.2 or 2.0 + sdl_image SDL Image support for icons gtk gtk UI vte vte support for the gtk UI curses curses UI @@ -3018,10 +3024,43 @@ EOF fi # sdl compile test } =20 +sdl_image_probe () +{ + if test "$sdl_image" !=3D "no" ; then + if $pkg_config SDL2_image --exists; then + if test "$static" =3D "yes"; then + sdl_image_libs=3D$($pkg_config SDL2_image --libs --static = 2>/dev/null) + else + sdl_image_libs=3D$($pkg_config SDL2_image --libs 2>/dev/nu= ll) + fi + sdl_image_cflags=3D$($pkg_config SDL2_image --cflags 2>/dev/nu= ll) + sdl_image=3Dyes + + sdl_cflags=3D"$sdl_cflags $sdl_image_cflags" + sdl_libs=3D"$sdl_libs $sdl_image_libs" + else + if test "$sdl_image" =3D "yes" ; then + feature_not_found "sdl_image" "Install SDL Image devel" + else + sdl_image=3Dno + fi + fi + fi +} + if test "$sdl" !=3D "no" ; then sdl_probe fi =20 +if test "$sdl" =3D "yes" ; then + sdl_image_probe +else + if test "$sdl_image" =3D "yes"; then + echo "warning: SDL Image requested, but SDL is not available, disablin= g" + fi + sdl_image=3Dno +fi + if test "$sdl" =3D "yes" ; then cat > $TMPC < @@ -6045,6 +6084,7 @@ if test "$darwin" =3D "yes" ; then echo "Cocoa support $cocoa" fi echo "SDL support $sdl $(echo_version $sdl $sdlversion)" +echo "SDL image support $sdl_image" echo "GTK support $gtk $(echo_version $gtk $gtk_version)" echo "GTK GL support $gtk_gl" echo "VTE support $vte $(echo_version $vte $vteversion)" @@ -6385,6 +6425,9 @@ if test "$sdl" =3D "yes" ; then echo "CONFIG_SDLABI=3D$sdlabi" >> $config_host_mak echo "SDL_CFLAGS=3D$sdl_cflags" >> $config_host_mak echo "SDL_LIBS=3D$sdl_libs" >> $config_host_mak + if test "$sdl_image" =3D "yes" ; then + echo "CONFIG_SDL_IMAGE=3Dy" >> $config_host_mak + fi fi if test "$cocoa" =3D "yes" ; then echo "CONFIG_COCOA=3Dy" >> $config_host_mak diff --git a/include/ui/sdl2.h b/include/ui/sdl2.h index f43eecdbd6..f6db642b65 100644 --- a/include/ui/sdl2.h +++ b/include/ui/sdl2.h @@ -6,6 +6,9 @@ =20 #include #include +#ifdef CONFIG_SDL_IMAGE +# include +#endif =20 #ifdef CONFIG_OPENGL # include "ui/egl-helpers.h" diff --git a/ui/sdl2.c b/ui/sdl2.c index 4c0d5db473..cde7feba91 100644 --- a/ui/sdl2.c +++ b/ui/sdl2.c @@ -764,6 +764,7 @@ static void sdl2_display_init(DisplayState *ds, Display= Options *o) uint8_t data =3D 0; int i; SDL_SysWMinfo info; + SDL_Surface *icon =3D NULL; =20 assert(o->type =3D=3D DISPLAY_TYPE_SDL); =20 @@ -835,13 +836,18 @@ static void sdl2_display_init(DisplayState *ds, Displ= ayOptions *o) #endif } =20 +#ifdef CONFIG_SDL_IMAGE + icon =3D IMG_Load(CONFIG_QEMU_ICONDIR "/hicolor/128x128/apps/qemu.png"= ); +#else /* Load a 32x32x4 image. White pixels are transparent. */ - SDL_Surface *image =3D SDL_LoadBMP(CONFIG_QEMU_ICONDIR - "/hicolor/32x32/apps/qemu.bmp"); - if (image) { - uint32_t colorkey =3D SDL_MapRGB(image->format, 255, 255, 255); - SDL_SetColorKey(image, SDL_TRUE, colorkey); - SDL_SetWindowIcon(sdl2_console[0].real_window, image); + icon =3D SDL_LoadBMP(CONFIG_QEMU_ICONDIR "/hicolor/32x32/apps/qemu.bmp= "); + if (icon) { + uint32_t colorkey =3D SDL_MapRGB(icon->format, 255, 255, 255); + SDL_SetColorKey(icon, SDL_TRUE, colorkey); + } +#endif + if (icon) { + SDL_SetWindowIcon(sdl2_console[0].real_window, icon); } =20 gui_grab =3D 0; --=20 2.19.2