diff --git a/src/psichatdlg.cpp b/src/psichatdlg.cpp
index ac1ddea..59c0d0d 100644
--- a/src/psichatdlg.cpp
+++ b/src/psichatdlg.cpp
@@ -40,6 +40,7 @@
 #include "jidutil.h"
 #include "textutil.h"
 #include "xmpp_tasks.h"
+#include "pluginmanager.h"
 #include "lastactivitytask.h"
 
 
@@ -326,6 +327,12 @@ void PsiChatDlg::initToolButtons()
 
 	act_compact_ = new IconAction(tr("Toggle Compact/Full Size"), "psi/compact", tr("Toggle Compact/Full Size"), 0, this);
 	connect(act_compact_, SIGNAL(triggered()), SLOT(toggleSmallChat()));
+
+#ifdef PSI_PLUGINS
+    act_plugins_ = PluginManager::instance()->getChatDlgMenuEntries(this,
+                                                                    account(),
+                                                                    jid().full());
+#endif
 }
 
 void PsiChatDlg::initToolBar()
@@ -344,6 +351,13 @@ void PsiChatDlg::initToolBar()
 	if (account()->voiceCaller()) {
 		ui_.toolbar->addAction(act_voice_);
 	}
+#ifdef PSI_PLUGINS
+    foreach (QAction* i, act_plugins_ )
+    {
+        ui_.toolbar->addAction(i);
+    }
+#endif
+
 }
 
 void PsiChatDlg::contextMenuEvent(QContextMenuEvent *)
@@ -501,6 +515,13 @@ void PsiChatDlg::buildMenu()
 
 	pm_settings_->addAction(act_info_);
 	pm_settings_->addAction(act_history_);
+#ifdef PSI_PLUGINS
+    foreach (QAction* a, act_plugins_)
+    {
+        pm_settings_->insertSeparator();
+        pm_settings_->addAction(a);
+    }
+#endif
 }
 
 void PsiChatDlg::updateCounter()