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.
-EtanIndex: 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),