diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt b/src/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt
index 4f254fa88d343124836258b0e1cfe4614d0b7b97..e73b89b0369c419d6a3f65a9ca4580572c38bd6d 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt
@@ -1,16 +1,27 @@
 package org.briarproject.briar.desktop.conversation
 
+import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.material.MaterialTheme
+import androidx.compose.material.Surface
+import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
 import org.briarproject.briar.desktop.contact.ContactList
 import org.briarproject.briar.desktop.contact.ContactListViewModel
 import org.briarproject.briar.desktop.contact.RealContactIdWrapper
-import org.briarproject.briar.desktop.ui.UiPlaceholder
+import org.briarproject.briar.desktop.ui.BriarLogo
 import org.briarproject.briar.desktop.ui.VerticalDivider
+import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n
 import org.briarproject.briar.desktop.viewmodel.viewModel
 
 @Composable
@@ -31,8 +42,29 @@ fun PrivateMessageScreen(
             if (id != null && id is RealContactIdWrapper) {
                 ConversationScreen(id.contactId)
             } else {
-                UiPlaceholder()
+                NoContactSelected()
             }
         }
     }
 }
+
+@Composable
+fun NoContactSelected() = Surface(color = MaterialTheme.colors.background) {
+    Column(
+        modifier = Modifier.padding(16.dp).fillMaxSize(),
+        verticalArrangement = Arrangement.Center,
+        horizontalAlignment = Alignment.CenterHorizontally
+    ) {
+        BriarLogo(modifier = Modifier.size(200.dp))
+        Text(
+            text = i18n("contacts.none_selected.title"),
+            modifier = Modifier.padding(PaddingValues(top = 15.dp, bottom = 5.dp)),
+            style = MaterialTheme.typography.h5
+        )
+        Text(
+            text = i18n("contacts.none_selected.hint"),
+            modifier = Modifier.padding(PaddingValues(top = 5.dp, bottom = 15.dp)),
+            style = MaterialTheme.typography.body2
+        )
+    }
+}
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/login/LoginScreen.kt b/src/main/kotlin/org/briarproject/briar/desktop/login/LoginScreen.kt
index 3beb11fbd0af019842b8f2c0c14aaf7f9984087e..b4199c0b55fc814c5dbdf7c1452de8277e3be67b 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/login/LoginScreen.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/login/LoginScreen.kt
@@ -1,14 +1,11 @@
 package org.briarproject.briar.desktop.login
 
-import androidx.compose.foundation.Image
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.foundation.text.KeyboardActions
 import androidx.compose.foundation.text.KeyboardOptions
 import androidx.compose.material.Button
@@ -21,7 +18,6 @@ import androidx.compose.runtime.remember
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.draw.clip
 import androidx.compose.ui.focus.FocusRequester
 import androidx.compose.ui.focus.focusRequester
 import androidx.compose.ui.input.key.Key
@@ -29,12 +25,12 @@ import androidx.compose.ui.input.key.KeyEventType
 import androidx.compose.ui.input.key.key
 import androidx.compose.ui.input.key.onPreviewKeyEvent
 import androidx.compose.ui.input.key.type
-import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.text.input.ImeAction
 import androidx.compose.ui.text.input.KeyboardType
 import androidx.compose.ui.text.input.PasswordVisualTransformation
 import androidx.compose.ui.unit.dp
 import org.briarproject.briar.desktop.login.LoginViewModel.LoginState.SIGNED_OUT
+import org.briarproject.briar.desktop.ui.BriarLogo
 import org.briarproject.briar.desktop.ui.Loader
 import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n
 import org.briarproject.briar.desktop.viewmodel.viewModel
@@ -93,7 +89,3 @@ fun LoginScreen(
         }
     }
 }
-
-@Composable
-fun BriarLogo(modifier: Modifier = Modifier.fillMaxWidth().clip(shape = RoundedCornerShape(400.dp))) =
-    Image(painterResource("images/logo_circle.svg"), i18n("access.logo"), modifier)
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/login/RegistrationScreen.kt b/src/main/kotlin/org/briarproject/briar/desktop/login/RegistrationScreen.kt
index 7e3251ad844ba725c5079638d39c313117f587c4..ab6058e58aaaefbe98e2eaaa0686444746c93f43 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/login/RegistrationScreen.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/login/RegistrationScreen.kt
@@ -33,6 +33,7 @@ import androidx.compose.ui.text.input.ImeAction
 import androidx.compose.ui.text.input.KeyboardType
 import androidx.compose.ui.text.input.PasswordVisualTransformation
 import androidx.compose.ui.unit.dp
+import org.briarproject.briar.desktop.ui.BriarLogo
 import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n
 import org.briarproject.briar.desktop.viewmodel.viewModel
 import java.util.Locale
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/BriarLogo.kt b/src/main/kotlin/org/briarproject/briar/desktop/ui/BriarLogo.kt
new file mode 100644
index 0000000000000000000000000000000000000000..42882a2239828a40c4e8765b672da2bf351c2e1d
--- /dev/null
+++ b/src/main/kotlin/org/briarproject/briar/desktop/ui/BriarLogo.kt
@@ -0,0 +1,12 @@
+package org.briarproject.briar.desktop.ui
+
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.painterResource
+import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n
+
+@Composable
+fun BriarLogo(modifier: Modifier = Modifier.fillMaxWidth()) =
+    Image(painterResource("images/logo_circle.svg"), i18n("access.logo"), modifier)
diff --git a/src/main/resources/strings/BriarDesktop.properties b/src/main/resources/strings/BriarDesktop.properties
index 6cc54d9c9cf5be742ab96e80adc483df1e73594e..038922edf28accb623d93fa47885caad00ec8616 100644
--- a/src/main/resources/strings/BriarDesktop.properties
+++ b/src/main/resources/strings/BriarDesktop.properties
@@ -13,6 +13,8 @@ access.logo=Briar logo
 access.swap=Icon showing errors between two contacts
 
 # Contacts
+contacts.none_selected.title=No contact selected
+contacts.none_selected.hint=Select a contact to start chatting
 contacts.card.nothing=No messages.
 contacts.dropdown.connections=Connections
 contacts.dropdown.connections.title=Connections