$ git clone http://tcclient.ion.nu/tc_client.git
commit b60718165b44d86aa79ab5c8c4747b070aeb2a75
Author: Alicia <...>
Date:   Fri Dec 9 13:38:13 2016 +0100

    tc_client-gtk: added an option to hide join/quit/nickname notifications.

diff --git a/ChangeLog b/ChangeLog
index 056db41..a31f5b1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -22,6 +22,7 @@ tc_client-gtk: tweaks for windows compatibility.
 tc_client-gtk: bugfix: hiding your own camera caused a segfault.
 tc_client-gtk: added an icon to mark moderators in the user list.
 tc_client-gtk: disable the input field and the broadcast menu when in "lurker" mode.
+tc_client-gtk: added an option to hide join/quit/nickname notifications.
 dist/appimage.sh: fix audio in appimages by building ffmpeg with support for nellymoser and speex, and depending on the system's libao and libpulse instead of including it in the appimage.
 libcamera(escapi): handle failure to open camera more gracefully.
 irchack: pass along "<user> cammed up" notifications.
diff --git a/gtkgui.glade b/gtkgui.glade
index a6dfe1b..91eb617 100644
--- a/gtkgui.glade
+++ b/gtkgui.glade
@@ -687,6 +687,29 @@
                             <property name="position">2</property>
                           </packing>
                         </child>
+                        <child>
+                          <object class="GtkCheckButton" id="hidenotifications">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="xalign">0</property>
+                            <property name="draw_indicator">True</property>
+                            <child>
+                              <object class="GtkLabel" id="label38">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Hide join/quit/nickname notifications</property>
+                                <property name="wrap">True</property>
+                                <property name="wrap_mode">word-char</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
                       </object>
                     </child>
                   </object>
diff --git a/utilities/gtk/camviewer.c b/utilities/gtk/camviewer.c
index b17d68f..d05b45a 100644
--- a/utilities/gtk/camviewer.c
+++ b/utilities/gtk/camviewer.c
@@ -439,7 +439,10 @@ gboolean handledata(GIOChannel* iochannel, GIOCondition condition, gpointer x)
     }
     if(config_get_bool("enable_logging")){logger_write(buf, channel, pm);}
     // Insert new content
-    printchat(buf, color, 8, pm);
+    if(space[-1]==':' || !config_get_bool("hide_notifications"))
+    {
+      printchat(buf, color, 8, pm);
+    }
     pm_highlight(pm);
     free(pm);
     if(space[-1]!=':') // Not a message
diff --git a/utilities/gtk/gui.c b/utilities/gtk/gui.c
index c4b12d0..8328a76 100644
--- a/utilities/gtk/gui.c
+++ b/utilities/gtk/gui.c
@@ -67,6 +67,8 @@ void settings_reset(GtkBuilder* gui)
   }
   option=GTK_WIDGET(gtk_builder_get_object(gui, "bluelinks"));
   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(option), config_get_bool("blue_links"));
+  option=GTK_WIDGET(gtk_builder_get_object(gui, "hidenotifications"));
+  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(option), config_get_bool("hide_notifications"));
   // Sound
   option=GTK_WIDGET(gtk_builder_get_object(gui, "soundradio_cmd"));
   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(option), config_get_bool("soundradio_cmd"));
@@ -132,6 +134,8 @@ void savesettings(GtkButton* button, GtkBuilder* gui)
   }
   option=GTK_WIDGET(gtk_builder_get_object(gui, "bluelinks"));
   config_set("blue_links", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(option))?"True":"False");
+  option=GTK_WIDGET(gtk_builder_get_object(gui, "hidenotifications"));
+  config_set("hide_notifications", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(option))?"True":"False");
   // Sound
   GtkWidget* soundcmd=GTK_WIDGET(gtk_builder_get_object(gui, "soundcmd"));
   config_set("soundcmd", gtk_entry_get_text(GTK_ENTRY(soundcmd)));