On Sun, 22 Jan 2006, Phil Snowberger wrote:
I was just wondering if anybody knows of a terminal emulator (e.g.
xterm) which sets the URGENT hint on a terminal bell?

If not, such a thing should exist, and perhaps I will make it so.  If
so, I want to avoid duplicating work.

thanks,
--Phil

I have a patch for rxvt-unicode which does that. It's against cvs, and attached. It may not apply perfectly cleanly (may need fuzz, but should work) since I have other local changes as well ans hand removed them from the patch.

        -Etan
Index: doc/rxvt.1.pod
===================================================================
RCS file: /schmorpforge/rxvt-unicode/doc/rxvt.1.pod,v
retrieving revision 1.102
diff -p -u -r1.102 rxvt.1.pod
--- doc/rxvt.1.pod      20 Jan 2006 18:04:32 -0000      1.102
+++ doc/rxvt.1.pod      23 Jan 2006 05:13:14 -0000
@@ -221,6 +221,11 @@ rather than the default executable file 
 
 Start as a login-shell/sub-shell; resource B<loginShell>.
 
+=item B<-ub>|B<+ub>
+
+Turn on/off setting the urgent wm_hint on receipt of a bell character; resource
+B<urgentOnBell>.
+
 =item B<-ut>|B<+ut>
 
 Compile I<utmp>: Inhibit/enable writing a utmp entry; resource
Index: src/command.C
===================================================================
RCS file: /schmorpforge/rxvt-unicode/src/command.C,v
retrieving revision 1.279
diff -p -u -r1.279 command.C
--- src/command.C       21 Jan 2006 14:25:05 -0000      1.279
+++ src/command.C       23 Jan 2006 05:13:16 -0000
@@ -1743,6 +1743,20 @@ rxvt_term::focus_in ()
           scr_recolour ();
         }
 #endif
+#ifdef URGENT_OPTION
+      if (options & Opt_urgentOnBell)
+        {
+          XWMHints *hints;
+
+          hints = XGetWMHints(display->display, parent[0]);
+
+          if (hints != NULL)
+            {
+              hints->flags&=~XUrgencyHint;
+              XSetWMHints(display->display, parent[0], hints);
+            }
+        }
+#endif
     }
 }
 
Index: src/feature.h
===================================================================
RCS file: /schmorpforge/rxvt-unicode/src/feature.h,v
retrieving revision 1.44
diff -p -u -r1.44 feature.h
--- src/feature.h       21 Jan 2006 22:26:42 -0000      1.44
+++ src/feature.h       23 Jan 2006 05:13:16 -0000
@@ -285,6 +285,11 @@
  */
 #define MAPALERT_OPTION
 
+/*
+ * Set urgent on bell
+ */
+#define URGENT_OPTION
+
 /*-----------------------------SCROLL BAR-------------------------------*/
 /*
  * Choose the rxvt style scrollbar width
Index: src/optinc.h
===================================================================
RCS file: /schmorpforge/rxvt-unicode/src/optinc.h,v
retrieving revision 1.2
diff -p -u -r1.2 optinc.h
--- src/optinc.h        18 Jan 2006 19:43:51 -0000      1.2
+++ src/optinc.h        23 Jan 2006 05:13:18 -0000
@@ -44,4 +44,8 @@
 #else
  nodef(intensityStyles)
 #endif
-
+#ifdef URGENT_OPTION
+ def(urgentOnBell,         29)
+#else
+ nodef(urgentOnBell)
+#endif
Index: src/rsinc.h
===================================================================
RCS file: /schmorpforge/rxvt-unicode/src/rsinc.h,v
retrieving revision 1.9
diff -p -u -r1.9 rsinc.h
--- src/rsinc.h 18 Jan 2006 19:43:51 -0000      1.9
+++ src/rsinc.h 23 Jan 2006 05:13:18 -0000
@@ -107,3 +109,6 @@
   def (perl_ext_2)
   def (perl_lib)
 #endif
+#ifdef URGENT_OPTION
+  def (urgentOnBell)
+#endif
Index: src/screen.C
===================================================================
RCS file: /schmorpforge/rxvt-unicode/src/screen.C,v
retrieving revision 1.248
diff -p -u -r1.248 screen.C
--- src/screen.C        22 Jan 2006 20:58:33 -0000      1.248
+++ src/screen.C        23 Jan 2006 05:13:19 -0000
@@ -1890,6 +1890,21 @@ rxvt_term::scr_bell () NOTHROW
     XMapWindow (display->display, parent[0]);
 # endif
 
+# ifdef URGENT_OPTION
+  if (OPTION (Opt_urgentOnBell))
+    {
+      XWMHints *hints;
+
+      hints = XGetWMHints(display->display, parent[0]);
+
+      if (hints != NULL)
+        {
+          hints->flags |= XUrgencyHint;
+          XSetWMHints(display->display, parent[0], hints);
+        }
+    }
+# endif
+
   if (OPTION (Opt_visualBell))
     {
       rvideo_bell = true;
Index: src/xdefaults.C
===================================================================
RCS file: /schmorpforge/rxvt-unicode/src/xdefaults.C,v
retrieving revision 1.83
diff -p -u -r1.83 xdefaults.C
--- src/xdefaults.C     21 Jan 2006 22:38:06 -0000      1.83
+++ src/xdefaults.C     23 Jan 2006 05:13:19 -0000
@@ -129,6 +129,9 @@ optList[] = {
 # if ! defined(NO_MAPALERT) && defined(MAPALERT_OPTION)
               BOOL (Rs_mapAlert, "mapAlert", NULL, Opt_mapAlert, NULL),
 # endif
+# if defined(URGENT_OPTION)
+              BOOL (Rs_urgentOnBell, "urgentOnBell", "ub", Opt_urgentOnBell, 
"set urgent hint on bell"),
+# endif
 #endif
 #ifdef META8_OPTION
               BOOL (Rs_meta8, "meta8", NULL, Opt_meta8, NULL),

Reply via email to