diff --git a/src/gui/ocsshareejob.cpp b/src/gui/ocsshareejob.cpp
index ced73800f..206152a6c 100644
--- a/src/gui/ocsshareejob.cpp
+++ b/src/gui/ocsshareejob.cpp
@@ -28,7 +28,8 @@ OcsShareeJob::OcsShareeJob(AccountPtr account)
 void OcsShareeJob::getSharees(const QString &search,
     const QString &itemType,
     int page,
-    int perPage)
+    int perPage,
+    bool lookup)
 {
     setVerb("GET");
 
@@ -36,6 +37,7 @@ void OcsShareeJob::getSharees(const QString &search,
     addParam(QString::fromLatin1("itemType"), itemType);
     addParam(QString::fromLatin1("page"), QString::number(page));
     addParam(QString::fromLatin1("perPage"), QString::number(perPage));
+    addParam(QString::fromLatin1("lookup"), QVariant(lookup).toString());
 
     start();
 }
diff --git a/src/gui/ocsshareejob.h b/src/gui/ocsshareejob.h
index f511f5fb8..8a21c7dae 100644
--- a/src/gui/ocsshareejob.h
+++ b/src/gui/ocsshareejob.h
@@ -38,7 +38,7 @@ public:
      *
      * @param path Path to request shares for (default all shares)
      */
-    void getSharees(const QString &search, const QString &itemType, int page = 1, int perPage = 50);
+    void getSharees(const QString &search, const QString &itemType, int page = 1, int perPage = 50, bool lookup = false);
 signals:
     /**
      * Result of the OCS request
diff --git a/src/gui/sharee.cpp b/src/gui/sharee.cpp
index a44f0d1b9..c2903f897 100644
--- a/src/gui/sharee.cpp
+++ b/src/gui/sharee.cpp
@@ -73,14 +73,14 @@ ShareeModel::ShareeModel(const AccountPtr &account, const QString &type, QObject
 {
 }
 
-void ShareeModel::fetch(const QString &search, const ShareeSet &blacklist)
+void ShareeModel::fetch(const QString &search, const ShareeSet &blacklist, LookupMode lookupMode)
 {
     _search = search;
     _shareeBlacklist = blacklist;
     auto *job = new OcsShareeJob(_account);
     connect(job, &OcsShareeJob::shareeJobFinished, this, &ShareeModel::shareesFetched);
     connect(job, &OcsJob::ocsError, this, &ShareeModel::displayErrorMessage);
-    job->getSharees(_search, _type, 1, 50);
+    job->getSharees(_search, _type, 1, 50, lookupMode == GlobalSearch ? true : false);
 }
 
 void ShareeModel::shareesFetched(const QJsonDocument &reply)
diff --git a/src/gui/sharee.h b/src/gui/sharee.h
index d776360ad..2e69552c8 100644
--- a/src/gui/sharee.h
+++ b/src/gui/sharee.h
@@ -66,10 +66,15 @@ class ShareeModel : public QAbstractListModel
 {
     Q_OBJECT
 public:
+    enum LookupMode {
+        LocalSearch = 0,
+        GlobalSearch = 1
+    };
+
     explicit ShareeModel(const AccountPtr &account, const QString &type, QObject *parent = nullptr);
 
     using ShareeSet = QVector<QSharedPointer<Sharee>>; // FIXME: make it a QSet<Sharee> when Sharee can be compared
-    void fetch(const QString &search, const ShareeSet &blacklist);
+    void fetch(const QString &search, const ShareeSet &blacklist, LookupMode lookupMode);
     int rowCount(const QModelIndex &parent = QModelIndex()) const override;
     QVariant data(const QModelIndex &index, int role) const override;
 
diff --git a/src/gui/shareusergroupwidget.cpp b/src/gui/shareusergroupwidget.cpp
index dc61f4977..0a5ea2531 100644
--- a/src/gui/shareusergroupwidget.cpp
+++ b/src/gui/shareusergroupwidget.cpp
@@ -24,7 +24,6 @@
 #include "capabilities.h"
 #include "guiutility.h"
 #include "thumbnailjob.h"
-#include "sharee.h"
 #include "sharemanager.h"
 #include "theme.h"
 
@@ -85,6 +84,16 @@ ShareUserGroupWidget::ShareUserGroupWidget(AccountPtr account,
     _completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion);
     _ui->shareeLineEdit->setCompleter(_completer);
 
+    auto searchGloballyAction = new QAction(_ui->shareeLineEdit);
+    searchGloballyAction->setIcon(QIcon(":/client/theme/magnifying-glass.svg"));
+    searchGloballyAction->setToolTip(tr("Search globally"));
+
+    connect(searchGloballyAction, &QAction::triggered, this, [this]() {
+        searchForSharees(ShareeModel::GlobalSearch);
+    });
+
+    _ui->shareeLineEdit->addAction(searchGloballyAction, QLineEdit::LeadingPosition);
+
     _manager = new ShareManager(_account, this);
     connect(_manager, &ShareManager::sharesFetched, this, &ShareUserGroupWidget::slotSharesFetched);
     connect(_manager, &ShareManager::shareCreated, this, &ShareUserGroupWidget::getShares);
@@ -104,7 +113,9 @@ ShareUserGroupWidget::ShareUserGroupWidget(AccountPtr account,
     connect(_ui->shareeLineEdit, &QLineEdit::textEdited,
         this, &ShareUserGroupWidget::slotLineEditTextEdited, Qt::QueuedConnection);
     _ui->shareeLineEdit->installEventFilter(this);
-    connect(&_completionTimer, &QTimer::timeout, this, &ShareUserGroupWidget::searchForSharees);
+    connect(&_completionTimer, &QTimer::timeout, this, [this]() {
+        searchForSharees(ShareeModel::LocalSearch);
+    });
     _completionTimer.setSingleShot(true);
     _completionTimer.setInterval(600);
 
@@ -163,9 +174,13 @@ void ShareUserGroupWidget::slotLineEditReturn()
     _completionTimer.start();
 }
 
-
-void ShareUserGroupWidget::searchForSharees()
+void ShareUserGroupWidget::searchForSharees(ShareeModel::LookupMode lookupMode)
 {
+    if (_ui->shareeLineEdit->text().isEmpty()) {
+        return;
+    }
+
+    _ui->shareeLineEdit->setEnabled(false);
     _completionTimer.stop();
     _pi_sharee.startAnimation();
     ShareeModel::ShareeSet blacklist;
@@ -178,7 +193,7 @@ void ShareUserGroupWidget::searchForSharees()
         blacklist << sw->share()->getShareWith();
     }
     _ui->errorLabel->hide();
-    _completerModel->fetch(_ui->shareeLineEdit->text(), blacklist);
+    _completerModel->fetch(_ui->shareeLineEdit->text(), blacklist, lookupMode);
 }
 
 void ShareUserGroupWidget::getShares()
@@ -246,7 +261,7 @@ void ShareUserGroupWidget::slotSharesFetched(const QList<QSharedPointer<Share>>
     scrollArea->setWidget(newViewPort);
 
     _disableCompleterActivated = false;
-    _ui->shareeLineEdit->setEnabled(true);
+    activateShareeLineEdit();
 }
 
 void ShareUserGroupWidget::slotAdjustScrollWidgetSize()
@@ -275,11 +290,14 @@ void ShareUserGroupWidget::slotPrivateLinkShare()
 
 void ShareUserGroupWidget::slotShareesReady()
 {
+    activateShareeLineEdit();
+
     _pi_sharee.stopAnimation();
     if (_completerModel->rowCount() == 0) {
         displayError(0, tr("No results for '%1'").arg(_completerModel->currentSearch()));
-        return;
     }
+
+    // if no rows are present in the model - complete() will hide the completer
     _completer->complete();
 }
 
@@ -349,7 +367,7 @@ void ShareUserGroupWidget::displayError(int code, const QString &message)
     qCWarning(lcSharing) << "Sharing error from server" << code << message;
     _ui->errorLabel->setText(message);
     _ui->errorLabel->show();
-    _ui->shareeLineEdit->setEnabled(true);
+    activateShareeLineEdit();
 }
 
 void ShareUserGroupWidget::slotPrivateLinkOpenBrowser()
@@ -389,6 +407,12 @@ void ShareUserGroupWidget::customizeStyle()
     }
 }
 
+void ShareUserGroupWidget::activateShareeLineEdit()
+{
+    _ui->shareeLineEdit->setEnabled(true);
+    _ui->shareeLineEdit->setFocus();
+}
+
 ShareUserLine::ShareUserLine(QSharedPointer<Share> share,
     SharePermissions maxSharingPermissions,
     bool isFile,
diff --git a/src/gui/shareusergroupwidget.h b/src/gui/shareusergroupwidget.h
index 3e0a99bb0..fe45d1e36 100644
--- a/src/gui/shareusergroupwidget.h
+++ b/src/gui/shareusergroupwidget.h
@@ -17,6 +17,7 @@
 
 #include "accountfwd.h"
 #include "sharepermissions.h"
+#include "sharee.h"
 #include "QProgressIndicator.h"
 #include <QDialog>
 #include <QWidget>
@@ -40,9 +41,7 @@ namespace Ui {
 class AbstractCredentials;
 class SyncResult;
 class Share;
-class Sharee;
 class ShareManager;
-class ShareeModel;
 
 /**
  * @brief The ShareDialog (user/group) class
@@ -73,7 +72,7 @@ private slots:
     void slotSharesFetched(const QList<QSharedPointer<Share>> &shares);
 
     void on_shareeLineEdit_textChanged(const QString &text);
-    void searchForSharees();
+    void searchForSharees(ShareeModel::LookupMode lookupMode);
     void slotLineEditTextEdited(const QString &text);
 
     void slotLineEditReturn();
@@ -91,6 +90,8 @@ private slots:
 private:
     void customizeStyle();
 
+    void activateShareeLineEdit();
+
     Ui::ShareUserGroupWidget *_ui;
     QScrollArea *_parentScrollArea;
     AccountPtr _account;
diff --git a/theme.qrc b/theme.qrc
index df1756d35..4ae68807b 100644
--- a/theme.qrc
+++ b/theme.qrc
@@ -163,5 +163,6 @@
         <file>theme/add.svg</file>
         <file>theme/share.svg</file>
         <file>theme/reply.svg</file>
+        <file>theme/magnifying-glass.svg</file>
     </qresource>
 </RCC>
diff --git a/theme/magnifying-glass.svg b/theme/magnifying-glass.svg
new file mode 100644
index 000000000..1e44ac175
--- /dev/null
+++ b/theme/magnifying-glass.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16" height="16" width="16"><g stroke="#000" stroke-width="2" fill="none"><ellipse rx="4" ry="4" cy="6" cx="6"/><path d="m14.3 14.25-5.65-5.65" fill="#fff"/></g></svg>