GNU bug report logs - #6563
[PATCH] 24.0.50; Set EWMH WM NAME properties

Previous Next

Package: emacs;

Reported by: James Cloos <cloos <at> jhcloos.com>

Date: Sun, 4 Jul 2010 17:20:03 UTC

Severity: normal

Tags: patch

Done: Jan Djärv <jan.h.d <at> swipnet.se>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 6563 in the body.
You can then email your comments to 6563 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org:
bug#6563; Package emacs. (Sun, 04 Jul 2010 17:20:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to James Cloos <cloos <at> jhcloos.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sun, 04 Jul 2010 17:20:03 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: James Cloos <cloos <at> jhcloos.com>
To: bug-gnu-emacs <at> gnu.org
Subject: [PATCH] 24.0.50; Set EWMH WM NAME properties
Date: Sun, 04 Jul 2010 13:18:22 -0400
When compiled with gtk+, by calling gtk_window_set_title(), Emacs sets
both the WM_NAME, WM_ICON_NAME and the _NET_WM_NAME, _NET_WM_ICON_NAME
properties.

Many current window managers prefer the _NET properties, which are
defined to always be UTF8_STRING.  Some may even lack support for
COMPOUND_TEXT.

Like the _NET_* properties which Emacs already supports, _NET_WM_NAME
and _NET_WM_ICON_NAME are specified at:

  http://specs.freedesktop.org/wm-spec/wm-spec-latest.html

The patch adds support for the _NET_WM_NAME and _NET_WM_ICON_NAME
properties to the non-gtk+ builds.

=== modified file 'src/ChangeLog'
--- src/ChangeLog	2010-07-03 14:35:54 +0000
+++ src/ChangeLog	2010-07-04 17:09:04 +0000
@@ -1,3 +1,12 @@
+2010-07-04  James Cloos  <cloos <at> jhcloos.com
+
+	* xterm.c (x_term_init): Intern the _NET_WM_NAME and
+	_NET_WM_ICON_NAME atoms.
+
+	* xfns.c (x_set_name_internal): Set the EWMH _NET_WM_NAME
+	and _NET_WM_ICON_NAME properties, too, matching what is
+	done in the gtk+ case.
+
 2010-07-03  Eli Zaretskii  <eliz <at> gnu.org>
 
 	* msdos.c (IT_set_frame_parameters): Fix setting of colors in

=== modified file 'src/xfns.c'
--- src/xfns.c	2010-07-02 12:19:29 +0000
+++ src/xfns.c	2010-07-04 16:32:36 +0000
@@ -1613,8 +1613,8 @@
 	int bytes, stringp;
         int do_free_icon_value = 0, do_free_text_value = 0;
 	Lisp_Object coding_system;
-#ifdef USE_GTK
 	Lisp_Object encoded_name;
+	Lisp_Object encoded_icon_name;
 	struct gcpro gcpro1;
 
 	/* As ENCODE_UTF_8 may cause GC and relocation of string data,
@@ -1622,7 +1622,6 @@
 	GCPRO1 (name);
 	encoded_name = ENCODE_UTF_8 (name);
 	UNGCPRO;
-#endif
 
 	coding_system = Qcompound_text;
 	/* Note: Encoding strategy
@@ -1638,7 +1637,12 @@
 	   We may also be able to use "UTF8_STRING" in text.encoding
 	   in the future which can encode all Unicode characters.
 	   But, for the moment, there's no way to know that the
-	   current window manager supports it or not.  */
+	   current window manager supports it or not.
+
+	   Either way, we also set the _NET_WM_NAME and _NET_WM_ICON_NAME
+	   properties.  Per the EWMH specification, those two properties
+	   are always UTF8_STRING.  This matches what gtk_window_set_title()
+	   does in the USE_GTK case. */
 	text.value = x_encode_text (name, coding_system, 0, &bytes, &stringp,
 				    &do_free_text_value);
 	text.encoding = (stringp ? XA_STRING
@@ -1649,6 +1653,7 @@
 	if (!STRINGP (f->icon_name))
 	  {
 	    icon = text;
+	    encoded_icon_name = encoded_name;
 	  }
 	else
 	  {
@@ -1659,6 +1664,8 @@
 			     : FRAME_X_DISPLAY_INFO (f)->Xatom_COMPOUND_TEXT);
 	    icon.format = 8;
 	    icon.nitems = bytes;
+
+	    encoded_icon_name = ENCODE_UTF_8 (f->icon_name);
 	  }
 
 #ifdef USE_GTK
@@ -1666,9 +1673,21 @@
                               (char *) SDATA (encoded_name));
 #else /* not USE_GTK */
 	XSetWMName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &text);
+	XChangeProperty (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
+			 FRAME_X_DISPLAY_INFO (f)->Xatom_net_wm_name,
+			 FRAME_X_DISPLAY_INFO (f)->Xatom_UTF8_STRING,
+			 8, PropModeReplace,
+			 (char *) SDATA (encoded_name),
+			 SBYTES (encoded_name));
 #endif /* not USE_GTK */
 
 	XSetWMIconName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &icon);
+	XChangeProperty (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
+			 FRAME_X_DISPLAY_INFO (f)->Xatom_net_wm_icon_name,
+			 FRAME_X_DISPLAY_INFO (f)->Xatom_UTF8_STRING,
+			 8, PropModeReplace,
+			 (char *) SDATA (encoded_icon_name),
+			 SBYTES (encoded_icon_name));
 
 	if (do_free_icon_value)
 	  xfree (icon.value);

=== modified file 'src/xterm.c'
--- src/xterm.c	2010-07-02 12:19:29 +0000
+++ src/xterm.c	2010-07-04 16:32:36 +0000
@@ -10493,6 +10493,10 @@
     = XInternAtom (dpyinfo->display, "_NET_WM_WINDOW_TYPE", False);
   dpyinfo->Xatom_net_window_type_tooltip
     = XInternAtom (dpyinfo->display, "_NET_WM_WINDOW_TYPE_TOOLTIP", False);
+  dpyinfo->Xatom_net_wm_icon_name
+    = XInternAtom (dpyinfo->display, "_NET_WM_ICON_NAME", False);
+  dpyinfo->Xatom_net_wm_name
+    = XInternAtom (dpyinfo->display, "_NET_WM_NAME", False);
   
   dpyinfo->cut_buffers_initialized = 0;
 





Reply sent to Jan Djärv <jan.h.d <at> swipnet.se>:
You have taken responsibility. (Mon, 05 Jul 2010 10:32:02 GMT) Full text and rfc822 format available.

Notification sent to James Cloos <cloos <at> jhcloos.com>:
bug acknowledged by developer. (Mon, 05 Jul 2010 10:32:02 GMT) Full text and rfc822 format available.

Message #10 received at 6563-done <at> debbugs.gnu.org (full text, mbox):

From: Jan Djärv <jan.h.d <at> swipnet.se>
To: James Cloos <cloos <at> jhcloos.com>
Cc: 6563-done <at> debbugs.gnu.org
Subject: Re: bug#6563: [PATCH] 24.0.50; Set EWMH WM NAME properties
Date: Mon, 05 Jul 2010 12:31:31 +0200
Applied, thanks.

	Jan D.


James Cloos skrev 2010-07-04 19.18:
> When compiled with gtk+, by calling gtk_window_set_title(), Emacs sets
> both the WM_NAME, WM_ICON_NAME and the _NET_WM_NAME, _NET_WM_ICON_NAME
> properties.
>
> Many current window managers prefer the _NET properties, which are
> defined to always be UTF8_STRING.  Some may even lack support for
> COMPOUND_TEXT.
>
> Like the _NET_* properties which Emacs already supports, _NET_WM_NAME
> and _NET_WM_ICON_NAME are specified at:
>
>    http://specs.freedesktop.org/wm-spec/wm-spec-latest.html
>
> The patch adds support for the _NET_WM_NAME and _NET_WM_ICON_NAME
> properties to the non-gtk+ builds.
>
> === modified file 'src/ChangeLog'
> --- src/ChangeLog	2010-07-03 14:35:54 +0000
> +++ src/ChangeLog	2010-07-04 17:09:04 +0000
> @@ -1,3 +1,12 @@
> +2010-07-04  James Cloos<cloos <at> jhcloos.com
> +
> +	* xterm.c (x_term_init): Intern the _NET_WM_NAME and
> +	_NET_WM_ICON_NAME atoms.
> +
> +	* xfns.c (x_set_name_internal): Set the EWMH _NET_WM_NAME
> +	and _NET_WM_ICON_NAME properties, too, matching what is
> +	done in the gtk+ case.
> +
>   2010-07-03  Eli Zaretskii<eliz <at> gnu.org>
>
>   	* msdos.c (IT_set_frame_parameters): Fix setting of colors in
>
> === modified file 'src/xfns.c'
> --- src/xfns.c	2010-07-02 12:19:29 +0000
> +++ src/xfns.c	2010-07-04 16:32:36 +0000
> @@ -1613,8 +1613,8 @@
>   	int bytes, stringp;
>           int do_free_icon_value = 0, do_free_text_value = 0;
>   	Lisp_Object coding_system;
> -#ifdef USE_GTK
>   	Lisp_Object encoded_name;
> +	Lisp_Object encoded_icon_name;
>   	struct gcpro gcpro1;
>
>   	/* As ENCODE_UTF_8 may cause GC and relocation of string data,
> @@ -1622,7 +1622,6 @@
>   	GCPRO1 (name);
>   	encoded_name = ENCODE_UTF_8 (name);
>   	UNGCPRO;
> -#endif
>
>   	coding_system = Qcompound_text;
>   	/* Note: Encoding strategy
> @@ -1638,7 +1637,12 @@
>   	   We may also be able to use "UTF8_STRING" in text.encoding
>   	   in the future which can encode all Unicode characters.
>   	   But, for the moment, there's no way to know that the
> -	   current window manager supports it or not.  */
> +	   current window manager supports it or not.
> +
> +	   Either way, we also set the _NET_WM_NAME and _NET_WM_ICON_NAME
> +	   properties.  Per the EWMH specification, those two properties
> +	   are always UTF8_STRING.  This matches what gtk_window_set_title()
> +	   does in the USE_GTK case. */
>   	text.value = x_encode_text (name, coding_system, 0,&bytes,&stringp,
>   				&do_free_text_value);
>   	text.encoding = (stringp ? XA_STRING
> @@ -1649,6 +1653,7 @@
>   	if (!STRINGP (f->icon_name))
>   	  {
>   	    icon = text;
> +	    encoded_icon_name = encoded_name;
>   	  }
>   	else
>   	  {
> @@ -1659,6 +1664,8 @@
>   			     : FRAME_X_DISPLAY_INFO (f)->Xatom_COMPOUND_TEXT);
>   	    icon.format = 8;
>   	    icon.nitems = bytes;
> +
> +	    encoded_icon_name = ENCODE_UTF_8 (f->icon_name);
>   	  }
>
>   #ifdef USE_GTK
> @@ -1666,9 +1673,21 @@
>                                 (char *) SDATA (encoded_name));
>   #else /* not USE_GTK */
>   	XSetWMName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),&text);
> +	XChangeProperty (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
> +			 FRAME_X_DISPLAY_INFO (f)->Xatom_net_wm_name,
> +			 FRAME_X_DISPLAY_INFO (f)->Xatom_UTF8_STRING,
> +			 8, PropModeReplace,
> +			 (char *) SDATA (encoded_name),
> +			 SBYTES (encoded_name));
>   #endif /* not USE_GTK */
>
>   	XSetWMIconName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),&icon);
> +	XChangeProperty (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
> +			 FRAME_X_DISPLAY_INFO (f)->Xatom_net_wm_icon_name,
> +			 FRAME_X_DISPLAY_INFO (f)->Xatom_UTF8_STRING,
> +			 8, PropModeReplace,
> +			 (char *) SDATA (encoded_icon_name),
> +			 SBYTES (encoded_icon_name));
>
>   	if (do_free_icon_value)
>   	  xfree (icon.value);
>
> === modified file 'src/xterm.c'
> --- src/xterm.c	2010-07-02 12:19:29 +0000
> +++ src/xterm.c	2010-07-04 16:32:36 +0000
> @@ -10493,6 +10493,10 @@
>       = XInternAtom (dpyinfo->display, "_NET_WM_WINDOW_TYPE", False);
>     dpyinfo->Xatom_net_window_type_tooltip
>       = XInternAtom (dpyinfo->display, "_NET_WM_WINDOW_TYPE_TOOLTIP", False);
> +  dpyinfo->Xatom_net_wm_icon_name
> +    = XInternAtom (dpyinfo->display, "_NET_WM_ICON_NAME", False);
> +  dpyinfo->Xatom_net_wm_name
> +    = XInternAtom (dpyinfo->display, "_NET_WM_NAME", False);
>
>     dpyinfo->cut_buffers_initialized = 0;
>
>
>
>




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 02 Aug 2010 11:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 15 years and 17 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.