$ git clone http://tcclient.ion.nu/tc_client.git
commit 8bdd983936479a8417041b145bef7d7f67f4d24c
Author: Alicia <...>
Date:   Sat Dec 17 11:30:48 2016 +0100

    tc_client-gtk: added an option to show the greenroom menu even when you're not a moderator.

diff --git a/ChangeLog b/ChangeLog
index bc4dad3..d13bc93 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -26,6 +26,7 @@ tc_client-gtk: disable the input field and the broadcast menu when in "lurker" m
 tc_client-gtk: added an option to hide join/quit/nickname notifications.
 tc_client-gtk: made the user list sorted.
 tc_client-gtk: added support for viewing and approving greenroom cameras.
+tc_client-gtk: added an option to show the greenroom menu even when you're not a moderator.
 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 15d9031..4607ce5 100644
--- a/gtkgui.glade
+++ b/gtkgui.glade
@@ -1140,6 +1140,29 @@
                             <property name="position">2</property>
                           </packing>
                         </child>
+                        <child>
+                          <object class="GtkCheckButton" id="showgreenroom">
+                            <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="label42">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Show the greenroom menu as non-moderator</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/greenroom.c b/utilities/gtk/greenroom.c
index 77c6e68..754fa3c 100644
--- a/utilities/gtk/greenroom.c
+++ b/utilities/gtk/greenroom.c
@@ -20,9 +20,6 @@
 #include <stdlib.h>
 #include <ctype.h>
 #include <sys/stat.h>
-#ifndef NO_PRCTL
-  #include <sys/prctl.h>
-#endif
 #include <glib.h>
 #include <gtk/gtk.h>
 #include <libswscale/swscale.h>
@@ -31,6 +28,10 @@
 #else
   #include <libavcore/imgutils.h>
 #endif
+#include "../compat.h"
+#ifndef NO_PRCTL
+  #include <sys/prctl.h>
+#endif
 #include "compat.h"
 #include "gui.h"
 #include "main.h"
@@ -294,7 +295,7 @@ char greenroom_gotnick(const char* id, const char* nick)
 void greenroom_join(const char* id)
 {
   // Only add greenroom menu if mod (or optionally see greenroom anyway?)
-  if(user_ismod(nickname))
+  if(user_ismod(nickname) || config_get_bool("showgreenroom"))
   {
     menuitem=gtk_menu_item_new_with_label("Greenroom");
     gtk_menu_shell_append(GTK_MENU_SHELL(gtk_builder_get_object(gui, "menubar")), menuitem);
diff --git a/utilities/gtk/gui.c b/utilities/gtk/gui.c
index e2b5256..2c01981 100644
--- a/utilities/gtk/gui.c
+++ b/utilities/gtk/gui.c
@@ -97,6 +97,8 @@ void settings_reset(GtkBuilder* gui)
   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(option), config_get_set("autoopencams")?config_get_bool("autoopencams"):1);
   option=GTK_WIDGET(gtk_builder_get_object(gui, "disablesnapshots"));
   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(option), config_get_bool("disablesnapshots"));
+  option=GTK_WIDGET(gtk_builder_get_object(gui, "showgreenroom"));
+  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(option), config_get_bool("showgreenroom"));
   // Misc/cookies
   option=GTK_WIDGET(gtk_builder_get_object(gui, "storecookiecheckbox"));
   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(option), config_get_bool("storecookies"));
@@ -175,6 +177,8 @@ void savesettings(GtkButton* button, GtkBuilder* gui)
     write(tc_client_in[1], v?"/disablesnapshots\n":"/enablesnapshots\n", v?18:17);
   }
   config_set("disablesnapshots", v?"True":"False");
+  option=GTK_WIDGET(gtk_builder_get_object(gui, "showgreenroom"));
+  config_set("showgreenroom", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(option))?"True":"False");
   // Misc/cookies
   option=GTK_WIDGET(gtk_builder_get_object(gui, "storecookiecheckbox"));
   config_set("storecookies", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(option))?"True":"False");