diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/ErrorScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/ErrorScreen.kt
index adf541b9120046b5674a6e68756611baab2b4c4d..09c36ab1112e9127cb73a963b2189b44d8f3d479 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/ErrorScreen.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/ErrorScreen.kt
@@ -140,6 +140,6 @@ fun ErrorScreen(
         onClick = onShowAbout,
         modifier = Modifier.align(Alignment.BottomStart)
     ) {
-        Icon(Icons.Filled.Info, i18n("access.about_briar_desktop"))
+        Icon(Icons.Filled.Info, i18n("access.mode.about"))
     }
 }
diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/StartupScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/StartupScreen.kt
index e03d14f2835de651b5392cd962f0a0248c59261f..089cf83049e8f646104ab75fc5d0c058b5ba6cc4 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/StartupScreen.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/StartupScreen.kt
@@ -83,7 +83,7 @@ fun StartupScreenScaffold(
         onClick = onShowAbout,
         modifier = Modifier.align(Alignment.BottomStart)
     ) {
-        Icon(Icons.Filled.Info, i18n("access.about_briar_desktop"))
+        Icon(Icons.Filled.Info, i18n("access.mode.about"))
     }
 }
 
diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/navigation/BriarSidebar.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/navigation/BriarSidebar.kt
index fe080e6eade164bfb2f7089b6dd4e1b83a62c82d..418a6a339d411d4a2021247b757d0a59d25f2ec3 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/navigation/BriarSidebar.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/navigation/BriarSidebar.kt
@@ -29,14 +29,6 @@ import androidx.compose.material.Icon
 import androidx.compose.material.IconButton
 import androidx.compose.material.MaterialTheme
 import androidx.compose.material.Surface
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.ChromeReaderMode
-import androidx.compose.material.icons.filled.Contacts
-import androidx.compose.material.icons.filled.Forum
-import androidx.compose.material.icons.filled.Group
-import androidx.compose.material.icons.filled.Info
-import androidx.compose.material.icons.filled.Settings
-import androidx.compose.material.icons.filled.WifiTethering
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
@@ -56,17 +48,7 @@ fun BriarSidebar(
     account: LocalAuthor?,
     uiMode: UiMode,
     setUiMode: (UiMode) -> Unit,
-    showAbout: () -> Unit,
 ) {
-    val displayButton = @Composable { selectedMode: UiMode, mode: UiMode, icon: ImageVector ->
-        BriarSidebarButton(
-            selectedMode == mode,
-            { setUiMode(mode) },
-            icon,
-            mode.toString()
-        )
-    }
-
     Surface(modifier = Modifier.width(SIDEBAR_WIDTH).fillMaxHeight(), color = MaterialTheme.colors.sidebarSurface) {
         Column(verticalArrangement = Arrangement.Top) {
             // profile button
@@ -75,40 +57,59 @@ fun BriarSidebar(
             ) {
                 account?.let { ProfileCircle(size = 45.dp, it.id.bytes) }
             }
-            val items = buildList {
-                add(Pair(UiMode.CONTACTS, Icons.Filled.Contacts))
+            val modes = buildList {
+                add(UiMode.CONTACTS)
                 val featureFlags = getDesktopFeatureFlags()
-                if (featureFlags.shouldEnablePrivateGroups()) add(Pair(UiMode.GROUPS, Icons.Filled.Group))
-                if (featureFlags.shouldEnableForums()) add(Pair(UiMode.FORUMS, Icons.Filled.Forum))
-                if (featureFlags.shouldEnableBlogs()) add(Pair(UiMode.BLOGS, Icons.Filled.ChromeReaderMode))
+                if (featureFlags.shouldEnablePrivateGroups()) add(UiMode.GROUPS)
+                if (featureFlags.shouldEnableForums()) add(UiMode.FORUMS)
+                if (featureFlags.shouldEnableBlogs()) add(UiMode.BLOGS)
             }
-            for ((mode, icon) in items) {
-                displayButton(uiMode, mode, icon)
+            modes.forEach { mode ->
+                BriarSidebarButton(
+                    currentMode = uiMode,
+                    mode = mode,
+                    setUiMode = setUiMode,
+                )
             }
         }
         Column(verticalArrangement = Arrangement.Bottom) {
-            val items = buildList {
+            val modes = buildList {
                 val featureFlags = getDesktopFeatureFlags()
-                if (featureFlags.shouldEnableTransportSettings()) add(
-                    Pair(UiMode.TRANSPORTS, Icons.Filled.WifiTethering)
-                )
-                add(Pair(UiMode.SETTINGS, Icons.Filled.Settings))
+                if (featureFlags.shouldEnableTransportSettings()) add(UiMode.TRANSPORTS)
+                add(UiMode.SETTINGS)
+                add(UiMode.ABOUT)
             }
-            for ((mode, icon) in items) {
-                displayButton(uiMode, mode, icon)
+            modes.forEach { mode ->
+                BriarSidebarButton(
+                    currentMode = uiMode,
+                    mode = mode,
+                    setUiMode = setUiMode,
+                )
             }
-            BriarSidebarButton(
-                selected = false,
-                onClick = showAbout,
-                icon = Icons.Filled.Info,
-                contentDescription = i18n("access.about_briar_desktop")
-            )
         }
     }
 }
 
 @Composable
-fun BriarSidebarButton(selected: Boolean, onClick: () -> Unit, icon: ImageVector, contentDescription: String?) {
+fun BriarSidebarButton(
+    mode: UiMode,
+    currentMode: UiMode,
+    setUiMode: (UiMode) -> Unit,
+) = BriarSidebarButton(
+    currentMode == mode,
+    { setUiMode(mode) },
+    mode.icon,
+    i18n(mode.contentDescriptionKey)
+)
+
+
+@Composable
+fun BriarSidebarButton(
+    selected: Boolean,
+    onClick: () -> Unit,
+    icon: ImageVector,
+    contentDescription: String?,
+) {
     val tint = if (selected) MaterialTheme.colors.primary else MaterialTheme.colors.onSurface
     IconButton(
         modifier = Modifier.padding(vertical = 4.dp, horizontal = 12.dp),
diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/AboutDialog.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/AboutDialog.kt
index 5899d87ba3aa427a1a87305c6608aeff4239f598..252d749cc0c83c2aa9e1dc75ada19289bfd2438b 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/AboutDialog.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/AboutDialog.kt
@@ -45,6 +45,20 @@ fun main() = preview(
 fun AboutDialog(
     onClose: () -> Unit,
 ) {
+    BriarDialog(onClose = onClose) {
+        val box = this
+        Column(
+            modifier = Modifier.requiredSize(
+                box.maxWidth.times(0.8f), box.maxHeight.times(0.8f)
+            ).padding(16.dp)
+        ) {
+            AboutScreen()
+        }
+    }
+}
+
+@Composable
+fun AboutScreen() {
     // sizes of the two columns
     val colSizes = listOf(0.3f, 0.7f)
 
@@ -52,7 +66,7 @@ fun AboutDialog(
     val buildTime = Instant.ofEpochMilli(BuildData.GIT_TIME).atZone(ZoneId.systemDefault()).toLocalDateTime()
 
     // rows displayed in table
-    val lines = buildList<Pair<String, String>> {
+    val lines = buildList {
         add(i18n("about.copyright") to "The Briar Project") // NON-NLS
         add(i18n("about.license") to "GNU Affero General Public License v3") // NON-NLS
         add(i18n("about.version") to BuildData.VERSION)
@@ -66,63 +80,56 @@ fun AboutDialog(
         add(i18n("about.contact") to "desktop@briarproject.org") // NON-NLS
     }
 
-    BriarDialog(onClose = onClose) {
-        val box = this
-        Column(
-            modifier = Modifier.requiredSize(
-                box.maxWidth.times(0.8f), box.maxHeight.times(0.8f)
-            ).padding(16.dp)
+    Column {
+        Row(
+            modifier = Modifier.padding(bottom = 8.dp).fillMaxWidth(),
+            verticalAlignment = Alignment.CenterVertically,
+            horizontalArrangement = Arrangement.Center
         ) {
-            Row(
-                modifier = Modifier.padding(bottom = 8.dp).fillMaxWidth(),
-                verticalAlignment = Alignment.CenterVertically,
-                horizontalArrangement = Arrangement.Center
-            ) {
-                BriarLogo(modifier = Modifier.height(48.dp))
-                Text(
-                    i18n("main.title"),
-                    style = MaterialTheme.typography.h4,
-                    modifier = Modifier.padding(start = 16.dp),
-                    overflow = TextOverflow.Ellipsis,
-                    maxLines = 1,
-                )
-            }
-            val scrollState = rememberLazyListState()
-            Box {
-                LazyColumn(state = scrollState) {
-                    item {
-                        HorizontalDivider()
-                    }
-                    items(lines) { (key, value) ->
-                        // this is required for Divider between Boxes to have appropriate size
-                        Row(Modifier.fillMaxWidth().height(IntrinsicSize.Min)) {
-                            Box(modifier = Modifier.weight(colSizes[0]).fillMaxHeight()) {
+            BriarLogo(modifier = Modifier.height(48.dp))
+            Text(
+                i18n("main.title"),
+                style = MaterialTheme.typography.h4,
+                modifier = Modifier.padding(start = 16.dp),
+                overflow = TextOverflow.Ellipsis,
+                maxLines = 1,
+            )
+        }
+        val scrollState = rememberLazyListState()
+        Box {
+            LazyColumn(state = scrollState) {
+                item {
+                    HorizontalDivider()
+                }
+                items(lines) { (key, value) ->
+                    // this is required for Divider between Boxes to have appropriate size
+                    Row(Modifier.fillMaxWidth().height(IntrinsicSize.Min)) {
+                        Box(modifier = Modifier.weight(colSizes[0]).fillMaxHeight()) {
+                            Text(
+                                text = key,
+                                modifier = Modifier.padding(horizontal = 8.dp)
+                                    .padding(vertical = 8.dp).padding(end = 8.dp)
+                                    .align(Alignment.CenterStart)
+                            )
+                        }
+                        VerticalDivider()
+                        Box(modifier = Modifier.weight(colSizes[1]).fillMaxHeight()) {
+                            SelectionContainer {
                                 Text(
-                                    text = key,
-                                    modifier = Modifier.padding(horizontal = 8.dp)
-                                        .padding(vertical = 8.dp).padding(end = 8.dp)
-                                        .align(Alignment.CenterStart)
+                                    text = value,
+                                    modifier = Modifier.fillMaxWidth().padding(vertical = 8.dp)
+                                        .padding(start = 8.dp)
                                 )
                             }
-                            VerticalDivider()
-                            Box(modifier = Modifier.weight(colSizes[1]).fillMaxHeight()) {
-                                SelectionContainer {
-                                    Text(
-                                        text = value,
-                                        modifier = Modifier.fillMaxWidth().padding(vertical = 8.dp)
-                                            .padding(start = 8.dp)
-                                    )
-                                }
-                            }
                         }
-                        HorizontalDivider()
                     }
+                    HorizontalDivider()
                 }
-                VerticalScrollbar(
-                    adapter = rememberScrollbarAdapter(scrollState),
-                    modifier = Modifier.align(Alignment.CenterEnd).fillMaxHeight()
-                )
             }
+            VerticalScrollbar(
+                adapter = rememberScrollbarAdapter(scrollState),
+                modifier = Modifier.align(Alignment.CenterEnd).fillMaxHeight()
+            )
         }
     }
 }
diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt
index 48581bd3217a070476f52c40e78ea669ffd9e7f6..196a5748a627f9d750ed039ce55584600afea298 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt
@@ -42,13 +42,13 @@ fun MainScreen(
             viewModel.account.value,
             viewModel.uiMode.value,
             viewModel::setUiMode,
-            showAbout = onShowAbout,
         )
         VerticalDivider()
         when (viewModel.uiMode.value) {
             UiMode.CONTACTS -> PrivateMessageScreen()
             UiMode.GROUPS -> PrivateGroupScreen()
             UiMode.SETTINGS -> SettingsScreen()
+            UiMode.ABOUT -> AboutScreen()
             else -> UiPlaceholder()
         }
     }
diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/UiMode.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/UiMode.kt
index 414966fb5347f4c1a2e83300f586fa244bb450f4..10a464edbea9cfb4230f02a92d64dd51079dc791 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/UiMode.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/UiMode.kt
@@ -18,11 +18,22 @@
 
 package org.briarproject.briar.desktop.ui
 
-enum class UiMode {
-    CONTACTS,
-    GROUPS,
-    FORUMS,
-    BLOGS,
-    TRANSPORTS,
-    SETTINGS,
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.ChromeReaderMode
+import androidx.compose.material.icons.filled.Contacts
+import androidx.compose.material.icons.filled.Forum
+import androidx.compose.material.icons.filled.Group
+import androidx.compose.material.icons.filled.Info
+import androidx.compose.material.icons.filled.Settings
+import androidx.compose.material.icons.filled.WifiTethering
+import androidx.compose.ui.graphics.vector.ImageVector
+
+enum class UiMode(val icon: ImageVector, val contentDescriptionKey: String) {
+    CONTACTS(Icons.Filled.Contacts, "access.mode.contacts"),
+    GROUPS(Icons.Filled.Group, "access.mode.groups"),
+    FORUMS(Icons.Filled.Forum, "access.mode.forums"),
+    BLOGS(Icons.Filled.ChromeReaderMode, "access.mode.blogs"),
+    TRANSPORTS(Icons.Filled.WifiTethering, "access.mode.transports"),
+    SETTINGS(Icons.Filled.Settings, "access.mode.settings"),
+    ABOUT(Icons.Filled.Info, "access.mode.about"),
 }
diff --git a/briar-desktop/src/main/resources/strings/BriarDesktop.properties b/briar-desktop/src/main/resources/strings/BriarDesktop.properties
index f95ee998a6a978c1eed4c6eb8572f75db7707144..39f09d11b49366ab347af0b7b75be2dd31b32f38 100644
--- a/briar-desktop/src/main/resources/strings/BriarDesktop.properties
+++ b/briar-desktop/src/main/resources/strings/BriarDesktop.properties
@@ -14,7 +14,13 @@ access.message.send=Send message
 access.message.sent=Message sent
 access.logo=Briar logo
 access.swap=Icon showing errors between two contacts
-access.about_briar_desktop=About Briar Desktop
+access.mode.contacts=Contacts
+access.mode.groups=Private Groups
+access.mode.forums=Forums
+access.mode.blogs=Blogs
+access.mode.transports=Transport Settings
+access.mode.settings=Settings
+access.mode.about=About Briar Desktop
 access.password.show=Show password
 access.password.hide=Hide password
 access.settings.current_value=Current value