diff --git a/Core/FormBrowser.cs b/Core/FormBrowser.cs
index 5fd949bf..810cdc34 100644
--- a/Core/FormBrowser.cs
+++ b/Core/FormBrowser.cs
@@ -24,7 +24,7 @@ public FormBrowser(){
 
             bridge = new TweetDeckBridge(this);
 
-            browser = new ChromiumWebBrowser("https://tweetdeck.twitter.com/");
+            browser = new ChromiumWebBrowser("https://tweetdeck.twitter.com/"){ MenuHandler = new ContextMenuHandler(this) };
             browser.LoadingStateChanged += Browser_LoadingStateChanged;
             browser.RegisterJsObject("$TD",bridge);
 
@@ -78,5 +78,15 @@ private void FormBrowser_WindowStateChanged(object sender, EventArgs e){
             Config.IsMaximized = WindowState != FormWindowState.Normal;
             FormBrowser_ResizeEnd(sender,e);
         }
+
+        // callback handlers
+
+        public void OpenSettings(){
+            // TODO
+        }
+
+        public void OpenAbout(){
+            // TODO
+        }
     }
 }
diff --git a/Core/Handling/ContextMenuHandler.cs b/Core/Handling/ContextMenuHandler.cs
new file mode 100644
index 00000000..01e3fc4e
--- /dev/null
+++ b/Core/Handling/ContextMenuHandler.cs
@@ -0,0 +1,51 @@
+using CefSharp;
+
+namespace TweetDick.Core.Handling{
+    class ContextMenuHandler : IContextMenuHandler{
+        private const int MenuSettings = 26500;
+        private const int MenuAbout = 26501;
+
+        private readonly FormBrowser form;
+
+        public ContextMenuHandler(FormBrowser form){
+            this.form = form;
+        }
+
+        public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model){
+            model.Remove(CefMenuCommand.Back);
+            model.Remove(CefMenuCommand.Forward);
+            model.Remove(CefMenuCommand.Print);
+            model.Remove(CefMenuCommand.ViewSource);
+
+            if (model.Count > 0 && model.GetTypeAt(model.Count-1) == MenuItemType.Separator){
+                model.RemoveAt(model.Count-1);
+            }
+            
+            model.AddItem(CefMenuCommand.Reload,"Reload");
+            model.AddSeparator();
+            model.AddItem((CefMenuCommand)MenuSettings,"Settings");
+            model.AddSeparator();
+            model.AddItem((CefMenuCommand)MenuAbout,"About TweetDick");
+        }
+
+        public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags){
+            switch((int)commandId){
+                case MenuSettings:
+                    form.OpenSettings();
+                    return true;
+
+                case MenuAbout:
+                    form.OpenAbout();
+                    return true;
+            }
+
+            return false;
+        }
+
+        public void OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame){}
+
+        public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback){
+            return false;
+        }
+    }
+}
diff --git a/Core/Handling/TweetDeckBridge.cs b/Core/Handling/TweetDeckBridge.cs
index e7b56ce0..63303092 100644
--- a/Core/Handling/TweetDeckBridge.cs
+++ b/Core/Handling/TweetDeckBridge.cs
@@ -1,6 +1,4 @@
-using System.Windows.Forms;
-
-namespace TweetDick.Core.Handling{
+namespace TweetDick.Core.Handling{
     class TweetDeckBridge{
         private readonly FormBrowser form;
 
@@ -9,7 +7,7 @@ public TweetDeckBridge(FormBrowser form){
         }
 
         public void OpenSettingsMenu(){
-            MessageBox.Show("Settings");
+            form.OpenSettings();
         }
 
         public void Log(string data){
diff --git a/Resources/code.js b/Resources/code.js
index 59a9fb56..1ff621c3 100644
--- a/Resources/code.js
+++ b/Resources/code.js
@@ -8,6 +8,27 @@
   // Function: Initializes TweetDick events. Called after the website app is loaded.
   //
   var initializeTweetDick = function(){
+    $("[data-action='settings-menu']").click(function(){
+      setTimeout(function(){
+        var menu = $(".js-dropdown-content").children("ul").first();
+        if (menu.length == 0)return;
+        
+        menu.children(".drp-h-divider").last().after('<li class="is-selectable" data-tweetdick><a href="#" data-action>TweetDick</a></li><li class="drp-h-divider"></li>');
+        
+        var tweetDickBtn = menu.children("[data-tweetdick]");
+        
+        tweetDickBtn.on("click","a",function(){
+          $TD.openSettingsMenu();
+        });
+        
+        tweetDickBtn.hover(function(){
+          $(this).addClass("is-selected");
+        },function(){
+          $(this).removeClass("is-selected");
+        });
+      },0);
+    });
+    
     isInitialized = true;
   };
   
diff --git a/TweetDick.csproj b/TweetDick.csproj
index 846b3508..8197786b 100644
--- a/TweetDick.csproj
+++ b/TweetDick.csproj
@@ -79,6 +79,7 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Configuration\UserConfig.cs" />
+    <Compile Include="Core\Handling\ContextMenuHandler.cs" />
     <Compile Include="Core\FormBrowser.cs">
       <SubType>Form</SubType>
     </Compile>