diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 4636c6736150879b73236a74ad5cc98c5408f383..3f73eaf1e76889d061b6f26c1cdb4d8c7c4118ab 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -2880,12 +2880,31 @@ void GitClient::launchGitK(const QString &workingDirectory, const QString &fileN
     QDir foundBinDir(binaryInfo.dir());
     const bool foundBinDirIsCmdDir = foundBinDir.dirName() == QLatin1String("cmd");
     QProcessEnvironment env = processEnvironment();
-    if (tryLauchingGitK(env, workingDirectory, fileName, foundBinDir.path(), foundBinDirIsCmdDir))
+    if (tryLauchingGitK(env, workingDirectory, fileName, foundBinDir.path()))
         return;
-    if (!foundBinDirIsCmdDir)
+
+    QString gitkPath = foundBinDir.path() + QLatin1String("/gitk");
+    VcsBase::VcsBaseOutputWindow::instance()->appendSilently(msgCannotLaunch(gitkPath));
+
+    if (foundBinDirIsCmdDir) {
+        foundBinDir.cdUp();
+        if (tryLauchingGitK(env, workingDirectory, fileName,
+                            foundBinDir.path() + QLatin1String("/bin"))) {
+            return;
+        }
+        gitkPath = foundBinDir.path() + QLatin1String("/gitk");
+        VcsBase::VcsBaseOutputWindow::instance()->appendSilently(msgCannotLaunch(gitkPath));
+    }
+
+    Utils::Environment sysEnv = Utils::Environment::systemEnvironment();
+    const QString exec = sysEnv.searchInPath(QLatin1String("gitk"));
+
+    if (!exec.isEmpty() && tryLauchingGitK(env, workingDirectory, fileName,
+                                           QFileInfo(exec).absolutePath())) {
         return;
-    foundBinDir.cdUp();
-    tryLauchingGitK(env, workingDirectory, fileName, foundBinDir.path() + QLatin1String("/bin"), false);
+    }
+
+    VcsBase::VcsBaseOutputWindow::instance()->appendError(msgCannotLaunch(QLatin1String("gitk")));
 }
 
 void GitClient::launchRepositoryBrowser(const QString &workingDirectory)
@@ -2898,8 +2917,7 @@ void GitClient::launchRepositoryBrowser(const QString &workingDirectory)
 bool GitClient::tryLauchingGitK(const QProcessEnvironment &env,
                                 const QString &workingDirectory,
                                 const QString &fileName,
-                                const QString &gitBinDirectory,
-                                bool silent)
+                                const QString &gitBinDirectory)
 {
     QString binary = gitBinDirectory + QLatin1String("/gitk");
     QStringList arguments;
@@ -2934,12 +2952,7 @@ bool GitClient::tryLauchingGitK(const QProcessEnvironment &env,
     } else {
         success = QProcess::startDetached(binary, arguments, workingDirectory);
     }
-    if (!success) {
-        if (silent)
-            outwin->appendSilently(msgCannotLaunch(binary));
-        else
-            outwin->appendError(msgCannotLaunch(binary));
-    }
+
     return success;
 }
 
diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h
index 6d5593df4c41d0426fa853a44232861341afcb71..5e8131925b1f811113fc702e9181fc083b1d0a87 100644
--- a/src/plugins/git/gitclient.h
+++ b/src/plugins/git/gitclient.h
@@ -410,8 +410,7 @@ private:
     bool tryLauchingGitK(const QProcessEnvironment &env,
                          const QString &workingDirectory,
                          const QString &fileName,
-                         const QString &gitBinDirectory,
-                         bool silent);
+                         const QString &gitBinDirectory);
     bool cleanList(const QString &workingDirectory, const QString &flag, QStringList *files, QString *errorMessage);
 
     mutable QString m_gitVersionForBinary;