diff --git a/scribus/actionsearch.cpp b/scribus/actionsearch.cpp
index 4eca79ba2..df46ad010 100644
--- a/scribus/actionsearch.cpp
+++ b/scribus/actionsearch.cpp
@@ -15,6 +15,7 @@
 #include <QMenuBar>
 #include <QMenu>
 #include <QStringList>
+#include <QRegularExpression>
 
 ActionSearch::ActionSearch(QMenuBar *menuBar)
 	: menuBar{menuBar}
@@ -57,6 +58,11 @@ void ActionSearch::readMenuActions(QMenu* menu)
 	}
 	QString menuName(menus.join(" > "));
 
+	// recent document tend to have a long path: we will try to shorten it a bit
+	const bool isRecentDocument =
+		menus.last() == QObject::tr("Open &Recent").replace("&", "") ||
+		menus.last() == QObject::tr("&Recent Scripts").replace("&", "");
+
 	for (auto action: menu->actions())
 	{
 		if (action->menu() != nullptr)
@@ -69,6 +75,17 @@ void ActionSearch::readMenuActions(QMenu* menu)
 		if (actionName.isEmpty() || !action->isEnabled())
 			continue;
 
+		if (isRecentDocument)
+		{
+			// Paths can be long: replace /home/.../ by ~
+			actionName = actionName.replace(QRegularExpression("/home/[^/]+/"), "~/");
+			// If the actionName is still longer than 50 chars remove chars from the middle
+			// and replace them with an ellipse sign.
+			if (actionName.length() > 50) {
+				actionName = actionName.left(25) + "…" + actionName.right(25);
+			}
+		}
+
 		// TODO: we might want to have a multilevel menuName
 		if (!menuName.isEmpty())
 			actionName += " (" + menuName +")";
