aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@openbsd.org>2011-07-03 19:07:54 +0000
committerNicholas Marriott <nicm@openbsd.org>2011-07-03 19:07:54 +0000
commitf12158bc258c9d1e1d64d55c436b5a94adabd3e8 (patch)
treefe08504531815eb8dc8b691b424dd60c717f4d1b
parent94f86edfee9480b0e35af8adc2e4371b3caa3bca (diff)
downloadrtmux-f12158bc258c9d1e1d64d55c436b5a94adabd3e8.tar.gz
rtmux-f12158bc258c9d1e1d64d55c436b5a94adabd3e8.tar.bz2
rtmux-f12158bc258c9d1e1d64d55c436b5a94adabd3e8.zip
Add an option to trigger the terminal bell when there is an alert, from
Marco Beck.
-rw-r--r--options-table.c5
-rw-r--r--server-window.c22
-rw-r--r--tmux.15
3 files changed, 32 insertions, 0 deletions
diff --git a/options-table.c b/options-table.c
index 4b2f40bc..4a385051 100644
--- a/options-table.c
+++ b/options-table.c
@@ -98,6 +98,11 @@ const struct options_table_entry session_options_table[] = {
.default_num = BELL_ANY
},
+ { .name = "bell-on-alert",
+ .type = OPTIONS_TABLE_FLAG,
+ .default_num = 0
+ },
+
{ .name = "default-command",
.type = OPTIONS_TABLE_STRING,
.default_str = ""
diff --git a/server-window.c b/server-window.c
index b081355c..b444982d 100644
--- a/server-window.c
+++ b/server-window.c
@@ -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);
+ }
+}
diff --git a/tmux.1 b/tmux.1
index 60d900a3..69ea5819 100644
--- a/tmux.1
+++ b/tmux.1
@@ -1779,6 +1779,11 @@ window of that session,
means all bells are ignored and
.Ic current
means only bell in windows other than the current window are ignored.
+.It Xo Ic bell-on-alert
+.Op Ic on | off
+.Xc
+If on, ring the terminal bell when an activity, content or silence alert
+occurs.
.It Ic default-command Ar shell-command
Set the command used for new windows (if not specified when the window is
created) to