summaryrefslogtreecommitdiffstats
path: root/usr.bin/tmux/server-window.c
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2011-07-03 19:07:54 +0000
committernicm <nicm@openbsd.org>2011-07-03 19:07:54 +0000
commitf65c2e10064110532fea9a01e46ca496052e7b47 (patch)
treeed5dc17bd92e5984ea3f6d1895bdd782fd669490 /usr.bin/tmux/server-window.c
parentreduce kernel compile time dramatically (diff)
downloadwireguard-openbsd-f65c2e10064110532fea9a01e46ca496052e7b47.tar.xz
wireguard-openbsd-f65c2e10064110532fea9a01e46ca496052e7b47.zip
Add an option to trigger the terminal bell when there is an alert, from
Marco Beck.
Diffstat (limited to 'usr.bin/tmux/server-window.c')
-rw-r--r--usr.bin/tmux/server-window.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/usr.bin/tmux/server-window.c b/usr.bin/tmux/server-window.c
index f7b08e22e30..d89e0d482e8 100644
--- a/usr.bin/tmux/server-window.c
+++ b/usr.bin/tmux/server-window.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: server-window.c,v 1.20 2011/01/26 02:55:34 nicm Exp $ */
+/* $OpenBSD: server-window.c,v 1.21 2011/07/03 19:07:54 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -28,6 +28,7 @@ int server_window_check_activity(struct session *, struct winlink *);
int server_window_check_silence(struct session *, struct winlink *);
int server_window_check_content(
struct session *, struct winlink *, struct window_pane *);
+void ring_bell(struct session *);
/* Window functions that need to happen every loop. */
void
@@ -134,6 +135,8 @@ server_window_check_activity(struct session *s, struct winlink *wl)
if (!options_get_number(&w->options, "monitor-activity"))
return (0);
+ if (options_get_number(&s->options, "bell-on-alert"))
+ ring_bell(s);
wl->flags |= WINLINK_ACTIVITY;
if (options_get_number(&s->options, "visual-activity")) {
@@ -183,6 +186,9 @@ server_window_check_silence(struct session *s, struct winlink *wl)
timer_difference = timer.tv_sec - w->silence_timer.tv_sec;
if (timer_difference <= silence_interval)
return (0);
+
+ if (options_get_number(&s->options, "bell-on-alert"))
+ ring_bell(s);
wl->flags |= WINLINK_SILENCE;
if (options_get_number(&s->options, "visual-silence")) {
@@ -221,6 +227,8 @@ server_window_check_content(
return (0);
xfree(found);
+ if (options_get_number(&s->options, "bell-on-alert"))
+ ring_bell(s);
wl->flags |= WINLINK_CONTENT;
if (options_get_number(&s->options, "visual-content")) {
@@ -235,3 +243,17 @@ server_window_check_content(
return (1);
}
+
+/* Ring terminal bell. */
+void
+ring_bell(struct session *s)
+{
+ struct client *c;
+ u_int i;
+
+ for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
+ c = ARRAY_ITEM(&clients, i);
+ if (c != NULL && c->session == s)
+ tty_putcode(&c->tty, TTYC_BEL);
+ }
+}