diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp
index 6d67e6f22ed1e8c2819dfe1ee7bf1f1d2b82d406..656ddab07557aed26909bea7664fcd2dacfb594a 100644
--- a/src/ChatPage.cpp
+++ b/src/ChatPage.cpp
@@ -691,13 +691,20 @@ ChatPage::sendNotifications(const mtx::responses::Notifications &res)
                                           this,
                                           [this, room_id, event_id, item, user_id, info](
                                             QPixmap image) {
+                                                  bool isEmote = false;
+                                                  auto ev      = cache::client()->getEvent(
+                                                    room_id.toStdString(), event_id);
+                                                  if (ev && mtx::accessors::msg_type(ev->data) ==
+                                                              mtx::events::MessageType::Emote)
+                                                          isEmote = true;
                                                   notificationsManager.postNotification(
                                                     room_id,
                                                     QString::fromStdString(event_id),
                                                     QString::fromStdString(info.name),
                                                     cache::displayName(room_id, user_id),
                                                     utils::event_body(item.event),
-                                                    image.toImage());
+                                                    image.toImage(),
+                                                    isEmote);
                                           });
                                 }
                         }
diff --git a/src/notifications/Manager.h b/src/notifications/Manager.h
index 2b869efc51b2fb358808e5fd3440516309f01a74..46f398d71e147946e935d757336064fd37f539c2 100644
--- a/src/notifications/Manager.h
+++ b/src/notifications/Manager.h
@@ -32,7 +32,8 @@ public:
                               const QString &roomName,
                               const QString &senderName,
                               const QString &text,
-                              const QImage &icon);
+                              const QImage &icon,
+                              const bool &isEmoteMsg = false);
 
 signals:
         void notificationClicked(const QString roomId, const QString eventId);
diff --git a/src/notifications/ManagerLinux.cpp b/src/notifications/ManagerLinux.cpp
index 8f7261e64e9a274139be4e594f95397639517360..7dbf663d9b356c27712e33e110b626e60eb2dcac 100644
--- a/src/notifications/ManagerLinux.cpp
+++ b/src/notifications/ManagerLinux.cpp
@@ -50,17 +50,23 @@ NotificationsManager::postNotification(const QString &roomid,
                                        const QString &roomname,
                                        const QString &sender,
                                        const QString &text,
-                                       const QImage &icon)
+                                       const QImage &icon,
+                                       const bool &isEmoteMessage)
 {
         QVariantMap hints;
         hints["image-data"] = icon;
         hints["sound-name"] = "message-new-instant";
         QList<QVariant> argumentList;
-        argumentList << "nheko";              // app_name
-        argumentList << (uint)0;              // replace_id
-        argumentList << "";                   // app_icon
-        argumentList << roomname;             // summary
-        argumentList << sender + ": " + text; // body
+        argumentList << "nheko";  // app_name
+        argumentList << (uint)0;  // replace_id
+        argumentList << "";       // app_icon
+        argumentList << roomname; // summary
+
+        // body
+        if (isEmoteMessage)
+                argumentList << "* " + sender + " " + text;
+        else
+                argumentList << sender + ": " + text;
         // The list of actions has always the action name and then a localized version of that
         // action. Currently we just use an empty string for that.
         // TODO(Nico): Look into what to actually put there.
diff --git a/src/notifications/ManagerMac.mm b/src/notifications/ManagerMac.mm
index c09e894c841c48240ae7eb6d5a7407792500e2f0..e21cc9040e52cf6905f4899766c6ec730feacd12 100644
--- a/src/notifications/ManagerMac.mm
+++ b/src/notifications/ManagerMac.mm
@@ -19,7 +19,8 @@ NotificationsManager::postNotification(
                 const QString &roomName,
                 const QString &senderName,
                 const QString &text,
-                const QImage &icon)
+                const QImage &icon,
+                const bool &isEmoteMessage)
 {
     Q_UNUSED(roomId);
     Q_UNUSED(eventId);
@@ -29,7 +30,10 @@ NotificationsManager::postNotification(
 
     notif.title           = roomName.toNSString();
     notif.subtitle        = QString("%1 sent a message").arg(senderName).toNSString();
-    notif.informativeText = text.toNSString();
+    if (isEmoteMessage)
+            notif.informativeText = QString("* ").append(senderName).append(" ").append(text).toNSString();
+    else
+            notif.informativeText = text.toNSString();
     notif.soundName       = NSUserNotificationDefaultSoundName;
 
     [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification: notif];
diff --git a/src/notifications/ManagerWin.cpp b/src/notifications/ManagerWin.cpp
index cc61c6455e7f6319fae08b970bd0a09403eefd32..43e6517b017961aaf4525d1544bed59ee824c0b2 100644
--- a/src/notifications/ManagerWin.cpp
+++ b/src/notifications/ManagerWin.cpp
@@ -37,7 +37,8 @@ NotificationsManager::postNotification(const QString &room_id,
                                        const QString &room_name,
                                        const QString &sender,
                                        const QString &text,
-                                       const QImage &icon)
+                                       const QImage &icon,
+                                       const bool &isEmoteMessage)
 {
         Q_UNUSED(room_id)
         Q_UNUSED(event_id)
@@ -53,7 +54,13 @@ NotificationsManager::postNotification(const QString &room_id,
         else
                 templ.setTextField(QString("%1").arg(sender).toStdWString(),
                                    WinToastTemplate::FirstLine);
-        templ.setTextField(QString("%1").arg(text).toStdWString(), WinToastTemplate::SecondLine);
+        if (isEmoteMessage)
+                templ.setTextField(
+                  QString("* ").append(sender).append(" ").append(text).toStdWString(),
+                  WinToastTemplate::SecondLine);
+        else
+                templ.setTextField(QString("%1").arg(text).toStdWString(),
+                                   WinToastTemplate::SecondLine);
         // TODO: implement room or user avatar
         // templ.setImagePath(L"C:/example.png");