From dff2d12fe55d49c36603737a5cfb730b9d05016d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sebastian=20K=C3=BCrten?= <sebastian@mobanisto.de>
Date: Wed, 15 Jun 2022 15:59:51 +0200
Subject: [PATCH] Move main sources to own "briar-desktop" module

---
 .gitlab-ci.yml                                |  18 +--
 .idea/compiler.xml                            |   6 +-
 .idea/runConfigurations/Briar_Desktop.xml     |   3 +-
 .../TestDeterministicConversationsKt.xml      |   2 +-
 .../TestMixedConversationsKt.xml              |  10 --
 .../TestRandomConversationsKt.xml             |  10 --
 ...stWithTwoConnectedTemporaryAccountsKt.xml} |   6 +-
 .tx/config                                    |   5 +-
 HACKING.md                                    |   4 +-
 TRANSLATION.md                                |   6 +-
 LICENSE.txt => briar-desktop/LICENSE.txt      |   0
 briar-desktop/build.gradle.kts                | 124 ++++++++++++++++++
 .../linux/org.briarproject.Briar.metainfo.xml |   0
 .../androidx/compose/material/DialogButton.kt |   0
 .../compose/material/ExposedDropDownMenu.kt   |   0
 .../compose/material/OutlinedTextFieldExt.kt  |   0
 .../androidx/compose/material/TextFieldExt.kt |   0
 .../briar/desktop/BriarDesktopApp.kt          |   0
 .../briar/desktop/DesktopDatabaseConfig.kt    |   0
 .../briar/desktop/DesktopFeatureFlags.kt      |   0
 .../briar/desktop/DesktopModule.kt            |   0
 .../org/briarproject/briar/desktop/Main.kt    |   0
 .../briar/desktop/about/Artifact.kt           |   0
 .../attachment/media/ImageCompressor.kt       |   0
 .../attachment/media/ImageCompressorImpl.kt   |   0
 .../briar/desktop/contact/BaseContactItem.kt  |   0
 .../ConfirmRemovePendingContactDialog.kt      |   0
 .../briar/desktop/contact/ContactCard.kt      |   0
 .../briar/desktop/contact/ContactDropDown.kt  |   0
 .../briar/desktop/contact/ContactIdWrapper.kt |   0
 .../desktop/contact/ContactInfoDrawer.kt      |   0
 .../briar/desktop/contact/ContactItem.kt      |   0
 .../briar/desktop/contact/ContactList.kt      |   0
 .../desktop/contact/ContactListViewModel.kt   |   0
 .../desktop/contact/ContactsViewModel.kt      |   0
 .../briar/desktop/contact/Identicon.kt        |   0
 .../contact/PendingContactIdWrapper.kt        |   0
 .../desktop/contact/PendingContactItem.kt     |   0
 .../briar/desktop/contact/ProfileCircle.kt    |   0
 .../desktop/contact/RealContactIdWrapper.kt   |   0
 .../briar/desktop/contact/SearchTextField.kt  |   0
 .../contact/add/remote/AddContactDialog.kt    |   0
 .../contact/add/remote/AddContactViewModel.kt |   0
 .../desktop/conversation/AttachmentItem.kt    |   0
 .../conversation/ConversationDialogs.kt       |   0
 .../conversation/ConversationHeader.kt        |   0
 .../desktop/conversation/ConversationInput.kt |   0
 .../desktop/conversation/ConversationItem.kt  |   0
 .../conversation/ConversationItemView.kt      |   0
 .../desktop/conversation/ConversationList.kt  |   0
 .../conversation/ConversationMessageItem.kt   |   0
 .../ConversationMessageItemView.kt            |   0
 .../ConversationMessagesReadEvent.kt          |   0
 .../conversation/ConversationNoticeItem.kt    |   0
 .../ConversationNoticeItemView.kt             |   0
 .../conversation/ConversationRequestItem.kt   |   0
 .../ConversationRequestItemView.kt            |   0
 .../conversation/ConversationScreen.kt        |   0
 .../conversation/ConversationViewModel.kt     |   0
 .../conversation/ConversationVisitor.kt       |   0
 .../conversation/PrivateMessageScreen.kt      |   0
 .../briar/desktop/dialogs/DialogType.kt       |   0
 .../desktop/expiration/ExpirationBanner.kt    |   0
 .../desktop/expiration/ExpirationUtils.kt     |   0
 .../introduction/ContactDrawerMakeIntro.kt    |   0
 .../introduction/IntroductionViewModel.kt     |   0
 .../briar/desktop/login/ErrorScreen.kt        |   0
 .../briar/desktop/login/ErrorSubViewModel.kt  |   0
 .../briar/desktop/login/FormScaffold.kt       |   0
 .../briar/desktop/login/LoadingView.kt        |   0
 .../briar/desktop/login/LoginScreen.kt        |   0
 .../briar/desktop/login/LoginSubViewModel.kt  |   0
 .../briar/desktop/login/RegistrationScreen.kt |   0
 .../desktop/login/RegistrationSubViewModel.kt |   0
 .../briar/desktop/login/StartupScreen.kt      |   0
 .../briar/desktop/login/StartupViewModel.kt   |   0
 .../briar/desktop/login/StrengthMeter.kt      |   0
 .../briar/desktop/navigation/BriarSidebar.kt  |   0
 .../desktop/navigation/SidebarViewModel.kt    |   0
 .../desktop/privategroups/PrivateGroupCard.kt |   0
 .../desktop/privategroups/PrivateGroupItem.kt |   0
 .../desktop/privategroups/PrivateGroupList.kt |   0
 .../PrivateGroupListViewModel.kt              |   0
 .../privategroups/PrivateGroupScreen.kt       |   0
 .../ThreadedConversationScreen.kt             |   0
 .../ThreadedConversationViewModel.kt          |   0
 .../desktop/settings/ChangePasswordDialog.kt  |   0
 .../settings/ChangePasswordSubViewModel.kt    |   0
 .../briar/desktop/settings/SettingDetails.kt  |   0
 .../briar/desktop/settings/SettingOption.kt   |   0
 .../desktop/settings/SettingsOptionList.kt    |   0
 .../briar/desktop/settings/SettingsScreen.kt  |   0
 .../desktop/settings/SettingsViewModel.kt     |   0
 .../desktop/settings/UnencryptedSettings.kt   |   0
 .../settings/UnencryptedSettingsImpl.kt       |   0
 .../briar/desktop/theme/Colors.kt             |   0
 .../briarproject/briar/desktop/theme/Icons.kt |   0
 .../briarproject/briar/desktop/theme/Theme.kt |   0
 .../briar/desktop/threading/BriarExecutors.kt |   0
 .../desktop/threading/BriarExecutorsImpl.kt   |   0
 .../briar/desktop/threading/UiExecutor.kt     |   0
 .../briar/desktop/ui/AboutDialog.kt           |   0
 .../briar/desktop/ui/BriarDialog.kt           |   0
 .../briar/desktop/ui/BriarLogo.kt             |   0
 .../briarproject/briar/desktop/ui/BriarUi.kt  |   0
 .../briar/desktop/ui/ColoredIconButton.kt     |   0
 .../briar/desktop/ui/Constants.kt             |   0
 .../briar/desktop/ui/HorizontalDivider.kt     |   0
 .../briarproject/briar/desktop/ui/Loader.kt   |   0
 .../briar/desktop/ui/MainScreen.kt            |   0
 .../briar/desktop/ui/MessageCounter.kt        |   0
 .../briarproject/briar/desktop/ui/UiMode.kt   |   0
 .../briar/desktop/ui/UiPlaceholder.kt         |   0
 .../briarproject/briar/desktop/ui/UiState.kt  |   0
 .../briar/desktop/ui/VerticalDivider.kt       |   0
 .../briar/desktop/ui/WindowFocusState.kt      |   0
 .../briar/desktop/utils/FeatureFlagUtils.kt   |   0
 .../briar/desktop/utils/FileUtils.kt          |   0
 .../briar/desktop/utils/ImagePicker.kt        |   0
 .../briar/desktop/utils/ImageUtils.kt         |   0
 .../utils/InternationalizationUtils.kt        |   0
 .../briar/desktop/utils/KLoggerUtils.kt       |   0
 .../briar/desktop/utils/ListUtils.kt          |   0
 .../briar/desktop/utils/LogUtils.kt           |   0
 .../briar/desktop/utils/PreviewUtils.kt       |   0
 .../briar/desktop/utils/TimeUtils.kt          |   0
 .../briar/desktop/utils/UiUtils.kt            |   0
 .../briar/desktop/viewmodel/ComposeUtils.kt   |   0
 .../briar/desktop/viewmodel/DbViewModel.kt    |   0
 .../viewmodel/EventListenerDbViewModel.kt     |   0
 .../desktop/viewmodel/SingleStateEvent.kt     |   0
 .../briar/desktop/viewmodel/ViewModel.kt      |   0
 .../desktop/viewmodel/ViewModelFactory.kt     |   0
 .../desktop/viewmodel/ViewModelModule.kt      |   0
 .../desktop/viewmodel/ViewModelProvider.kt    |   0
 .../main/resources/fonts/Roboto-Medium.ttf    | Bin
 .../main/resources/fonts/Roboto-Regular.ttf   | Bin
 .../main/resources/images/logo_circle.ico     | Bin
 .../main/resources/images/logo_circle.png     | Bin
 .../main/resources/images/logo_circle.svg     |   0
 .../resources/images/logo_circle_badge.svg    |   0
 .../src}/main/resources/logback.xml           |   0
 .../resources/strings/BriarDesktop.properties |   0
 .../strings/BriarDesktop_ar.properties        |   0
 .../strings/BriarDesktop_bg.properties        |   0
 .../strings/BriarDesktop_ca.properties        |   0
 .../strings/BriarDesktop_de.properties        |   0
 .../strings/BriarDesktop_es.properties        |   0
 .../strings/BriarDesktop_fa.properties        |   0
 .../strings/BriarDesktop_fr.properties        |   0
 .../strings/BriarDesktop_gl.properties        |   0
 .../strings/BriarDesktop_he.properties        |   0
 .../strings/BriarDesktop_hu.properties        |   0
 .../strings/BriarDesktop_is.properties        |   0
 .../strings/BriarDesktop_it.properties        |   0
 .../strings/BriarDesktop_ja.properties        |   0
 .../strings/BriarDesktop_ko.properties        |   0
 .../strings/BriarDesktop_lt.properties        |   0
 .../strings/BriarDesktop_my.properties        |   0
 .../strings/BriarDesktop_nl.properties        |   0
 .../strings/BriarDesktop_pl.properties        |   0
 .../strings/BriarDesktop_pt_BR.properties     |   0
 .../strings/BriarDesktop_ro.properties        |   0
 .../strings/BriarDesktop_ru.properties        |   0
 .../strings/BriarDesktop_sk.properties        |   0
 .../strings/BriarDesktop_sq.properties        |   0
 .../strings/BriarDesktop_sv.properties        |   0
 .../strings/BriarDesktop_tr.properties        |   0
 .../strings/BriarDesktop_uk.properties        |   0
 .../strings/BriarDesktop_zh_CN.properties     |   0
 .../src}/packagingResources/linux/postinst    |   0
 .../src}/packagingResources/linux/preinst     |   0
 .../src}/packagingResources/linux/prerm       |   0
 .../briar/desktop/BriarDesktopTestApp.kt      |   0
 .../briar/desktop/DesktopTestModule.kt        |   0
 .../briar/desktop/GroupCountHelper.kt         |   0
 .../RunWithMultipleTemporaryAccounts.kt       |   0
 .../briar/desktop/RunWithTemporaryAccount.kt  |   0
 .../desktop/TestDeterministicConversations.kt |   0
 .../briar/desktop/TestListDependencies.kt     |   0
 .../briar/desktop/TestMixedConversations.kt   |   0
 .../briar/desktop/TestRandomConversations.kt  |   0
 .../briar/desktop/TestStartupWithAccount.kt   |   0
 .../TestStartupWithUnwritableDirectory.kt     |   0
 .../desktop/TestStartupWithoutAccount.kt      |   0
 .../briarproject/briar/desktop/TestUtils.kt   |   0
 ...TestWithThreeConnectedTemporaryAccounts.kt |   0
 .../TestWithTwoConnectedTemporaryAccounts.kt  |   0
 .../desktop/TestWithTwoTemporaryAccounts.kt   |   0
 .../attachment/media/ImageCompressorTest.kt   |   0
 .../briar/desktop/contact/ContactItemTest.kt  |   0
 .../briar/desktop/testdata/Conversations.kt   |   0
 .../desktop/testdata/ConversationsData.kt     |   0
 .../desktop/testdata/ConversationsDsl.kt      |   0
 .../testdata/DeterministicTestDataCreator.kt  |   0
 .../DeterministicTestDataCreatorImpl.kt       |   0
 .../briar/desktop/testdata/GroupsData.kt      |   0
 .../desktop/testdata/TestAvatarCreatorImpl.kt |   0
 .../testdata/TestListConversationData.kt      |   0
 .../briar/desktop/utils/ListUtilsTest.kt      |   0
 .../src}/test/resources/images/voronoi1.png   | Bin
 .../src}/test/resources/images/voronoi2.png   | Bin
 .../src}/test/resources/images/voronoi3.png   | Bin
 .../src}/test/resources/images/voronoi4.png   | Bin
 build.gradle.kts                              | 107 +--------------
 .../builddata/GenerateBuildDataSourceTask.kt  |   4 +-
 settings.gradle.kts                           |   1 +
 207 files changed, 154 insertions(+), 152 deletions(-)
 delete mode 100644 .idea/runConfigurations/TestMixedConversationsKt.xml
 delete mode 100644 .idea/runConfigurations/TestRandomConversationsKt.xml
 rename .idea/runConfigurations/{TestListConversationDataKt.xml => TestWithTwoConnectedTemporaryAccountsKt.xml} (51%)
 rename LICENSE.txt => briar-desktop/LICENSE.txt (100%)
 create mode 100644 briar-desktop/build.gradle.kts
 rename {src => briar-desktop/src}/appResources/linux/org.briarproject.Briar.metainfo.xml (100%)
 rename {src => briar-desktop/src}/main/kotlin/androidx/compose/material/DialogButton.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/androidx/compose/material/ExposedDropDownMenu.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/androidx/compose/material/OutlinedTextFieldExt.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/androidx/compose/material/TextFieldExt.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/BriarDesktopApp.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/DesktopDatabaseConfig.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/DesktopFeatureFlags.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/Main.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/about/Artifact.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressor.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressorImpl.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/BaseContactItem.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/ConfirmRemovePendingContactDialog.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/ContactCard.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/ContactDropDown.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/ContactIdWrapper.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/ContactInfoDrawer.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/ContactItem.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/ContactList.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/ContactListViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/ContactsViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/Identicon.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/PendingContactIdWrapper.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/PendingContactItem.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/ProfileCircle.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/RealContactIdWrapper.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/SearchTextField.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactDialog.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/AttachmentItem.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationDialogs.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationHeader.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationInput.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationItem.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationItemView.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationList.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessageItem.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessageItemView.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessagesReadEvent.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationNoticeItem.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationNoticeItemView.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationRequestItem.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationRequestItemView.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationScreen.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationVisitor.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/dialogs/DialogType.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationBanner.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationUtils.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/introduction/ContactDrawerMakeIntro.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/introduction/IntroductionViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/login/ErrorScreen.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/login/ErrorSubViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/login/FormScaffold.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/login/LoadingView.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/login/LoginScreen.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/login/LoginSubViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/login/RegistrationScreen.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/login/RegistrationSubViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/login/StartupScreen.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/login/StartupViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/login/StrengthMeter.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/navigation/BriarSidebar.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/navigation/SidebarViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupCard.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupItem.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupList.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupListViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupScreen.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/privategroups/ThreadedConversationScreen.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/privategroups/ThreadedConversationViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/settings/ChangePasswordDialog.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/settings/ChangePasswordSubViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/settings/SettingDetails.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/settings/SettingOption.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/settings/SettingsOptionList.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/settings/SettingsScreen.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/settings/SettingsViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/settings/UnencryptedSettings.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/settings/UnencryptedSettingsImpl.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/theme/Colors.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/theme/Icons.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/theme/Theme.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/threading/BriarExecutors.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/threading/BriarExecutorsImpl.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/threading/UiExecutor.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/ui/AboutDialog.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/ui/BriarDialog.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/ui/BriarLogo.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/ui/BriarUi.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/ui/ColoredIconButton.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/ui/Constants.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/ui/HorizontalDivider.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/ui/Loader.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/ui/MessageCounter.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/ui/UiMode.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/ui/UiPlaceholder.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/ui/UiState.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/ui/VerticalDivider.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/ui/WindowFocusState.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/utils/FeatureFlagUtils.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/utils/FileUtils.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/utils/ImagePicker.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/utils/ImageUtils.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/utils/InternationalizationUtils.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/utils/KLoggerUtils.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/utils/ListUtils.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/utils/LogUtils.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/utils/PreviewUtils.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/utils/TimeUtils.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/utils/UiUtils.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/viewmodel/ComposeUtils.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/viewmodel/DbViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/viewmodel/EventListenerDbViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/viewmodel/SingleStateEvent.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModel.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelFactory.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelModule.kt (100%)
 rename {src => briar-desktop/src}/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelProvider.kt (100%)
 rename {src => briar-desktop/src}/main/resources/fonts/Roboto-Medium.ttf (100%)
 rename {src => briar-desktop/src}/main/resources/fonts/Roboto-Regular.ttf (100%)
 rename {src => briar-desktop/src}/main/resources/images/logo_circle.ico (100%)
 rename {src => briar-desktop/src}/main/resources/images/logo_circle.png (100%)
 rename {src => briar-desktop/src}/main/resources/images/logo_circle.svg (100%)
 rename {src => briar-desktop/src}/main/resources/images/logo_circle_badge.svg (100%)
 rename {src => briar-desktop/src}/main/resources/logback.xml (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_ar.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_bg.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_ca.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_de.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_es.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_fa.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_fr.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_gl.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_he.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_hu.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_is.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_it.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_ja.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_ko.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_lt.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_my.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_nl.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_pl.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_pt_BR.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_ro.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_ru.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_sk.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_sq.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_sv.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_tr.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_uk.properties (100%)
 rename {src => briar-desktop/src}/main/resources/strings/BriarDesktop_zh_CN.properties (100%)
 rename {src => briar-desktop/src}/packagingResources/linux/postinst (100%)
 rename {src => briar-desktop/src}/packagingResources/linux/preinst (100%)
 rename {src => briar-desktop/src}/packagingResources/linux/prerm (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/GroupCountHelper.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/RunWithMultipleTemporaryAccounts.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/RunWithTemporaryAccount.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/TestDeterministicConversations.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/TestListDependencies.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/TestMixedConversations.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/TestRandomConversations.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/TestStartupWithAccount.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/TestStartupWithUnwritableDirectory.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/TestStartupWithoutAccount.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/TestUtils.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/TestWithThreeConnectedTemporaryAccounts.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/TestWithTwoConnectedTemporaryAccounts.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/TestWithTwoTemporaryAccounts.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressorTest.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/contact/ContactItemTest.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/testdata/Conversations.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/testdata/ConversationsData.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/testdata/ConversationsDsl.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreator.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/testdata/GroupsData.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/testdata/TestAvatarCreatorImpl.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/testdata/TestListConversationData.kt (100%)
 rename {src => briar-desktop/src}/test/kotlin/org/briarproject/briar/desktop/utils/ListUtilsTest.kt (100%)
 rename {src => briar-desktop/src}/test/resources/images/voronoi1.png (100%)
 rename {src => briar-desktop/src}/test/resources/images/voronoi2.png (100%)
 rename {src => briar-desktop/src}/test/resources/images/voronoi3.png (100%)
 rename {src => briar-desktop/src}/test/resources/images/voronoi4.png (100%)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8494fd6397..84fca2d534 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -31,7 +31,7 @@ ktlint:
   stage: test
   script:
     - git submodule update
-    - ./gradlew --no-daemon :check
+    - ./gradlew --no-daemon briar-desktop:check
   rules:
     - if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS'
       when: never # avoids duplicate jobs for branch and MR
@@ -44,7 +44,7 @@ b_jar:
   script:
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -PbuildType=nightly -x kaptKotlin packageUberJarForCurrentOS
-    - mv build/compose/jars/Briar-*.jar ./briar-desktop.jar
+    - mv briar-desktop/build/compose/jars/Briar-*.jar ./briar-desktop.jar
   artifacts:
     paths:
       - briar-desktop.jar
@@ -58,7 +58,7 @@ b_bullseye_deb:
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -PbuildType=nightly -x kaptKotlin packageDeb
     - utils/finalize-deb.sh
-    - mv build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-debian-bullseye.deb
+    - mv briar-desktop/build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-debian-bullseye.deb
   artifacts:
     paths:
       - briar-desktop-debian-bullseye.deb
@@ -73,7 +73,7 @@ b_20_ubuntu_deb:
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -PbuildType=nightly -x kaptKotlin packageDeb
     - utils/finalize-deb.sh
-    - mv build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-ubuntu-20.04.deb
+    - mv briar-desktop/build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-ubuntu-20.04.deb
   artifacts:
     paths:
       - briar-desktop-ubuntu-20.04.deb
@@ -88,7 +88,7 @@ b_18_ubuntu_deb:
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -PbuildType=nightly -x kaptKotlin packageDeb
     - utils/finalize-deb.sh
-    - mv build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-ubuntu-18.04.deb
+    - mv briar-desktop/build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-ubuntu-18.04.deb
   artifacts:
     paths:
       - briar-desktop-ubuntu-18.04.deb
@@ -101,7 +101,7 @@ rb_jar:
   script:
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -PbuildType=beta -x kaptKotlin packageUberJarForCurrentOS
-    - mv build/compose/jars/Briar-*.jar ./briar-desktop.jar
+    - mv briar-desktop/build/compose/jars/Briar-*.jar ./briar-desktop.jar
   artifacts:
     paths:
       - briar-desktop.jar
@@ -115,7 +115,7 @@ rb_bullseye_deb:
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -PbuildType=beta -x kaptKotlin packageDeb
     - utils/finalize-deb.sh
-    - mv build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-debian-bullseye.deb
+    - mv briar-desktop/build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-debian-bullseye.deb
   artifacts:
     paths:
       - briar-desktop-debian-bullseye.deb
@@ -130,7 +130,7 @@ rb_20_ubuntu_deb:
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -PbuildType=beta -x kaptKotlin packageDeb
     - utils/finalize-deb.sh
-    - mv build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-ubuntu-20.04.deb
+    - mv briar-desktop/build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-ubuntu-20.04.deb
   artifacts:
     paths:
       - briar-desktop-ubuntu-20.04.deb
@@ -145,7 +145,7 @@ rb_18_ubuntu_deb:
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -PbuildType=beta -x kaptKotlin packageDeb
     - utils/finalize-deb.sh
-    - mv build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-ubuntu-18.04.deb
+    - mv briar-desktop/build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-ubuntu-18.04.deb
   artifacts:
     paths:
       - briar-desktop-ubuntu-18.04.deb
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 14d0aad908..9c5404a633 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -38,8 +38,8 @@
       </profile>
     </annotationProcessing>
     <bytecodeTargetLevel target="1.8">
-      <module name="Briar-compose.main" target="11" />
-      <module name="Briar-compose.test" target="11" />
+      <module name="briar-desktop.desktop.main" target="17" />
+      <module name="briar-desktop.desktop.test" target="17" />
     </bytecodeTargetLevel>
   </component>
-</project>
\ No newline at end of file
+</project>
diff --git a/.idea/runConfigurations/Briar_Desktop.xml b/.idea/runConfigurations/Briar_Desktop.xml
index ddf5232dce..1ad687289e 100644
--- a/.idea/runConfigurations/Briar_Desktop.xml
+++ b/.idea/runConfigurations/Briar_Desktop.xml
@@ -1,8 +1,9 @@
 <component name="ProjectRunConfigurationManager">
   <configuration default="false" name="Briar Desktop" type="JetRunConfigurationType">
     <option name="MAIN_CLASS_NAME" value="org.briarproject.briar.desktop.MainKt" />
-    <module name="briar-desktop.main" />
+    <module name="briar-desktop.briar-desktop.main" />
     <option name="PROGRAM_PARAMETERS" value="--debug" />
+    <shortenClasspath name="NONE" />
     <method v="2">
       <option name="Make" enabled="true" />
     </method>
diff --git a/.idea/runConfigurations/TestDeterministicConversationsKt.xml b/.idea/runConfigurations/TestDeterministicConversationsKt.xml
index 839d48b803..00e9175116 100644
--- a/.idea/runConfigurations/TestDeterministicConversationsKt.xml
+++ b/.idea/runConfigurations/TestDeterministicConversationsKt.xml
@@ -1,7 +1,7 @@
 <component name="ProjectRunConfigurationManager">
   <configuration default="false" name="TestDeterministicConversationsKt" type="JetRunConfigurationType" nameIsGenerated="true">
     <option name="MAIN_CLASS_NAME" value="org.briarproject.briar.desktop.TestDeterministicConversationsKt" />
-    <module name="briar-desktop.test" />
+    <module name="briar-desktop.briar-desktop.test" />
     <shortenClasspath name="NONE" />
     <method v="2">
       <option name="Make" enabled="true" />
diff --git a/.idea/runConfigurations/TestMixedConversationsKt.xml b/.idea/runConfigurations/TestMixedConversationsKt.xml
deleted file mode 100644
index 4f7af5c817..0000000000
--- a/.idea/runConfigurations/TestMixedConversationsKt.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="TestMixedConversationsKt" type="JetRunConfigurationType" nameIsGenerated="true">
-    <option name="MAIN_CLASS_NAME" value="org.briarproject.briar.desktop.TestMixedConversationsKt" />
-    <module name="briar-desktop.test" />
-    <shortenClasspath name="NONE" />
-    <method v="2">
-      <option name="Make" enabled="true" />
-    </method>
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.idea/runConfigurations/TestRandomConversationsKt.xml b/.idea/runConfigurations/TestRandomConversationsKt.xml
deleted file mode 100644
index af71c5356e..0000000000
--- a/.idea/runConfigurations/TestRandomConversationsKt.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="TestRandomConversationsKt" type="JetRunConfigurationType" nameIsGenerated="true">
-    <option name="MAIN_CLASS_NAME" value="org.briarproject.briar.desktop.TestRandomConversationsKt" />
-    <module name="briar-desktop.test" />
-    <shortenClasspath name="NONE" />
-    <method v="2">
-      <option name="Make" enabled="true" />
-    </method>
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.idea/runConfigurations/TestListConversationDataKt.xml b/.idea/runConfigurations/TestWithTwoConnectedTemporaryAccountsKt.xml
similarity index 51%
rename from .idea/runConfigurations/TestListConversationDataKt.xml
rename to .idea/runConfigurations/TestWithTwoConnectedTemporaryAccountsKt.xml
index 969cc64f71..d3a36144db 100644
--- a/.idea/runConfigurations/TestListConversationDataKt.xml
+++ b/.idea/runConfigurations/TestWithTwoConnectedTemporaryAccountsKt.xml
@@ -1,7 +1,7 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="TestListConversationDataKt" type="JetRunConfigurationType" nameIsGenerated="true">
-    <option name="MAIN_CLASS_NAME" value="org.briarproject.briar.desktop.testdata.TestListConversationDataKt" />
-    <module name="briar-desktop.test" />
+  <configuration default="false" name="TestWithTwoConnectedTemporaryAccountsKt" type="JetRunConfigurationType" nameIsGenerated="true">
+    <option name="MAIN_CLASS_NAME" value="org.briarproject.briar.desktop.TestWithTwoConnectedTemporaryAccountsKt" />
+    <module name="briar-desktop.briar-desktop.test" />
     <shortenClasspath name="NONE" />
     <method v="2">
       <option name="Make" enabled="true" />
diff --git a/.tx/config b/.tx/config
index 10c587563c..33305b01d6 100644
--- a/.tx/config
+++ b/.tx/config
@@ -3,9 +3,8 @@ host = https://www.transifex.com
 lang_map = zh-Hans: zh_CN, zh-Hant: zh_TW
 
 [briar.briar-desktop]
-file_filter = src/main/resources/strings/BriarDesktop_<lang>.properties
+file_filter = briar-desktop/src/main/resources/strings/BriarDesktop_<lang>.properties
 minimum_perc = 50
-source_file = src/main/resources/strings/BriarDesktop.properties
+source_file = briar-desktop/src/main/resources/strings/BriarDesktop.properties
 source_lang = en
 type = UNICODEPROPERTIES
-
diff --git a/HACKING.md b/HACKING.md
index 6cdd07f57f..0cc74c4bb8 100644
--- a/HACKING.md
+++ b/HACKING.md
@@ -5,7 +5,7 @@
 When working on the code base, consider running the style checks and unit
 tests locally, because the CI will complain anyway:
 
-    ./gradlew :check
+    ./gradlew briar-desktop:check
 
 The above command does both. To run style checks only:
 
@@ -17,7 +17,7 @@ If that fails, try formatting:
 
 Running unit tests only:
 
-    ./gradlew :test --tests "*"
+    ./gradlew briar-desktop:test --tests "*"
 
 That will run tests from the desktop project only. On the other hand, this
 will also run tests on briar core:
diff --git a/TRANSLATION.md b/TRANSLATION.md
index 43ab7bd131..7f0d52e5cd 100644
--- a/TRANSLATION.md
+++ b/TRANSLATION.md
@@ -14,7 +14,8 @@ _This section is of interest only for developers of Briar Desktop_.
 To update translations locally, first install `transifex-client`. You can then pull updates with `tx pull -a`.
 
 If that command added a language that was previously not supported,
-you have to manually insert the language code in [UnencryptedSettings.kt](./src/main/kotlin/org/briarproject/briar/desktop/settings/UnencryptedSettings.kt)
+you have to manually insert the language code
+in [UnencryptedSettings.kt](./briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/UnencryptedSettings.kt)
 for it to be shown in the language selection.
 
 The Localization Lab has some instructions and advice for
@@ -27,7 +28,8 @@ This is how updating translations in Briar Desktop works:
 * We pull the updates from Transifex and commit them before each release
 * Occasionally we make minor updates locally and push them to Transifex
 
-Translations only happen on Transifex. You might want to make your changes through Transifex by joining the respective language teams.
+Translations only happen on Transifex.
+You might want to make your changes through Transifex by joining the respective language teams.
 
 To test Briar Desktop in your language,
 you can simply change the respective setting in the settings screen.
diff --git a/LICENSE.txt b/briar-desktop/LICENSE.txt
similarity index 100%
rename from LICENSE.txt
rename to briar-desktop/LICENSE.txt
diff --git a/briar-desktop/build.gradle.kts b/briar-desktop/build.gradle.kts
new file mode 100644
index 0000000000..b2b80c0fe6
--- /dev/null
+++ b/briar-desktop/build.gradle.kts
@@ -0,0 +1,124 @@
+/*
+ * Briar Desktop
+ * Copyright (C) 2021-2022 The Briar Project
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+
+@file:Suppress("HardCodedStringLiteral")
+
+import org.jetbrains.compose.compose
+import org.jetbrains.compose.desktop.application.dsl.TargetFormat
+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
+
+plugins {
+    kotlin("jvm") version "1.6.10"
+    kotlin("kapt") version "1.6.10"
+    id("org.jetbrains.compose") version "1.1.1"
+    id("java")
+    id("idea")
+    id("org.jlleitschuh.gradle.ktlint") version "10.1.0"
+    id("org.briarproject.briar.desktop.build-data-gradle-plugin")
+}
+
+val versionCode = "0.2.1"
+val buildType = if (project.hasProperty("buildType")) project.properties["buildType"] else "snapshot"
+group = "app.briar.desktop"
+version = "$versionCode-$buildType"
+
+buildData {
+    packageName = "org.briarproject.briar.desktop"
+}
+
+dependencies {
+    implementation(compose.desktop.currentOs)
+    implementation(compose.materialIconsExtended)
+    // needed to access Dispatchers.Swing for EventExecutor
+    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-swing:1.6.1")
+
+    implementation("com.github.ajalt.clikt:clikt:3.4.0")
+    implementation("com.ibm.icu:icu4j:70.1")
+
+    implementation(project(path = ":briar-core", configuration = "default"))
+    implementation(project(path = ":bramble-java", configuration = "default"))
+
+    implementation("io.github.microutils:kotlin-logging-jvm:2.1.21")
+    implementation("org.slf4j:jul-to-slf4j:1.7.36")
+    implementation("ch.qos.logback:logback-classic:1.2.11")
+
+    val daggerVersion = "2.24"
+    kapt("com.google.dagger:dagger-compiler:$daggerVersion")
+
+    testImplementation(kotlin("test-testng"))
+    testImplementation("commons-io:commons-io:2.11.0")
+    kaptTest("com.google.dagger:dagger-compiler:$daggerVersion")
+}
+
+tasks.test {
+    useTestNG()
+}
+
+tasks.withType<KotlinCompile> {
+    kotlinOptions.jvmTarget = "11"
+}
+
+tasks.withType<org.gradle.jvm.tasks.Jar> {
+    exclude("META-INF/BC1024KE.RSA", "META-INF/BC1024KE.SF", "META-INF/BC1024KE.DSA")
+    exclude("META-INF/BC2048KE.RSA", "META-INF/BC2048KE.SF", "META-INF/BC2048KE.DSA")
+}
+
+tasks.jar {
+    exclude("META-INF/BC1024KE.RSA", "META-INF/BC1024KE.SF", "META-INF/BC1024KE.DSA")
+    exclude("META-INF/BC2048KE.RSA", "META-INF/BC2048KE.SF", "META-INF/BC2048KE.DSA")
+}
+
+compose.desktop {
+    application {
+        mainClass = "org.briarproject.briar.desktop.MainKt"
+        nativeDistributions {
+            targetFormats(TargetFormat.Msi, TargetFormat.Exe, TargetFormat.Deb, TargetFormat.Rpm)
+            packageName = "Briar"
+            description = "Secure messaging, anywhere"
+            vendor = "The Briar Project"
+            copyright = "2021-2022 The Briar Project"
+            licenseFile.set(project.file("LICENSE.txt"))
+            appResourcesRootDir.set(project.layout.projectDirectory.dir("src/appResources"))
+            // As described at https://github.com/JetBrains/compose-jb/tree/master/tutorials/Native_distributions_and_local_execution#configuring-included-jdk-modules
+            // the Gradle plugin does not automatically determine necessary JDK modules to ship
+            // so that we need to define required modules here:
+            modules("java.sql")
+            modules("java.naming")
+            modules("jdk.localedata")
+            linux {
+                packageName = "briar-desktop"
+                // Explicitly specifying the debian revision '-1' doesn't seem to work, it gets always appended.
+                // I think we're fine having revision '-1' as it will only be used to break ties when the upstream
+                // version is the same for two packages.
+                debPackageVersion = "$versionCode-$buildType"
+                // rpm versions may not contain hyphens, so use underscore
+                rpmPackageVersion = "${versionCode}_$buildType"
+                iconFile.set(project.file("src/main/resources/images/logo_circle.png"))
+                debMaintainer = "contact@briarproject.org"
+                appCategory = "comm"
+                menuGroup = "Network;Chat;InstantMessaging;"
+            }
+            windows {
+                iconFile.set(project.file("src/main/resources/images/logo_circle.ico"))
+                upgradeUuid = "cc8b40f7-f190-4cea-bfec-ceb9ef85df09"
+                // Windows doesn't support things like 'nightly' or 'release'. Only numeric versions are acceptable
+                packageVersion = versionCode
+            }
+        }
+    }
+}
diff --git a/src/appResources/linux/org.briarproject.Briar.metainfo.xml b/briar-desktop/src/appResources/linux/org.briarproject.Briar.metainfo.xml
similarity index 100%
rename from src/appResources/linux/org.briarproject.Briar.metainfo.xml
rename to briar-desktop/src/appResources/linux/org.briarproject.Briar.metainfo.xml
diff --git a/src/main/kotlin/androidx/compose/material/DialogButton.kt b/briar-desktop/src/main/kotlin/androidx/compose/material/DialogButton.kt
similarity index 100%
rename from src/main/kotlin/androidx/compose/material/DialogButton.kt
rename to briar-desktop/src/main/kotlin/androidx/compose/material/DialogButton.kt
diff --git a/src/main/kotlin/androidx/compose/material/ExposedDropDownMenu.kt b/briar-desktop/src/main/kotlin/androidx/compose/material/ExposedDropDownMenu.kt
similarity index 100%
rename from src/main/kotlin/androidx/compose/material/ExposedDropDownMenu.kt
rename to briar-desktop/src/main/kotlin/androidx/compose/material/ExposedDropDownMenu.kt
diff --git a/src/main/kotlin/androidx/compose/material/OutlinedTextFieldExt.kt b/briar-desktop/src/main/kotlin/androidx/compose/material/OutlinedTextFieldExt.kt
similarity index 100%
rename from src/main/kotlin/androidx/compose/material/OutlinedTextFieldExt.kt
rename to briar-desktop/src/main/kotlin/androidx/compose/material/OutlinedTextFieldExt.kt
diff --git a/src/main/kotlin/androidx/compose/material/TextFieldExt.kt b/briar-desktop/src/main/kotlin/androidx/compose/material/TextFieldExt.kt
similarity index 100%
rename from src/main/kotlin/androidx/compose/material/TextFieldExt.kt
rename to briar-desktop/src/main/kotlin/androidx/compose/material/TextFieldExt.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/BriarDesktopApp.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/BriarDesktopApp.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/BriarDesktopApp.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/BriarDesktopApp.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/DesktopDatabaseConfig.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/DesktopDatabaseConfig.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/DesktopDatabaseConfig.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/DesktopDatabaseConfig.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/DesktopFeatureFlags.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/DesktopFeatureFlags.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/DesktopFeatureFlags.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/DesktopFeatureFlags.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/Main.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/Main.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/Main.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/Main.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/about/Artifact.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/about/Artifact.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/about/Artifact.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/about/Artifact.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressor.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressor.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressor.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressor.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressorImpl.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressorImpl.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressorImpl.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressorImpl.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/BaseContactItem.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/BaseContactItem.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/BaseContactItem.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/BaseContactItem.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/ConfirmRemovePendingContactDialog.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ConfirmRemovePendingContactDialog.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/ConfirmRemovePendingContactDialog.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ConfirmRemovePendingContactDialog.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactCard.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactCard.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/ContactCard.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactCard.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactDropDown.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactDropDown.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/ContactDropDown.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactDropDown.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactIdWrapper.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactIdWrapper.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/ContactIdWrapper.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactIdWrapper.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactInfoDrawer.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactInfoDrawer.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/ContactInfoDrawer.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactInfoDrawer.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactItem.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactItem.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/ContactItem.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactItem.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactList.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactList.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/ContactList.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactList.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactListViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactListViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/ContactListViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactListViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactsViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactsViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/ContactsViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactsViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/Identicon.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/Identicon.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/Identicon.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/Identicon.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/PendingContactIdWrapper.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/PendingContactIdWrapper.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/PendingContactIdWrapper.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/PendingContactIdWrapper.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/PendingContactItem.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/PendingContactItem.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/PendingContactItem.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/PendingContactItem.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/ProfileCircle.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ProfileCircle.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/ProfileCircle.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ProfileCircle.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/RealContactIdWrapper.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/RealContactIdWrapper.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/RealContactIdWrapper.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/RealContactIdWrapper.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/SearchTextField.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/SearchTextField.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/SearchTextField.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/SearchTextField.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactDialog.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactDialog.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactDialog.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactDialog.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/AttachmentItem.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/AttachmentItem.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/AttachmentItem.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/AttachmentItem.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationDialogs.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationDialogs.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationDialogs.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationDialogs.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationHeader.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationHeader.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationHeader.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationHeader.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationInput.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationInput.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationInput.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationInput.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationItem.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationItem.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationItem.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationItem.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationItemView.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationItemView.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationItemView.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationItemView.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationList.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationList.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationList.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationList.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessageItem.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessageItem.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessageItem.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessageItem.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessageItemView.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessageItemView.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessageItemView.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessageItemView.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessagesReadEvent.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessagesReadEvent.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessagesReadEvent.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationMessagesReadEvent.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationNoticeItem.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationNoticeItem.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationNoticeItem.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationNoticeItem.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationNoticeItemView.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationNoticeItemView.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationNoticeItemView.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationNoticeItemView.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationRequestItem.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationRequestItem.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationRequestItem.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationRequestItem.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationRequestItemView.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationRequestItemView.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationRequestItemView.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationRequestItemView.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationScreen.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationScreen.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationScreen.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationVisitor.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationVisitor.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationVisitor.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationVisitor.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/dialogs/DialogType.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/dialogs/DialogType.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/dialogs/DialogType.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/dialogs/DialogType.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationBanner.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationBanner.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationBanner.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationBanner.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationUtils.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationUtils.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationUtils.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/expiration/ExpirationUtils.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/introduction/ContactDrawerMakeIntro.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/introduction/ContactDrawerMakeIntro.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/introduction/ContactDrawerMakeIntro.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/introduction/ContactDrawerMakeIntro.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/introduction/IntroductionViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/introduction/IntroductionViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/introduction/IntroductionViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/introduction/IntroductionViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/login/ErrorScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/ErrorScreen.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/login/ErrorScreen.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/ErrorScreen.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/login/ErrorSubViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/ErrorSubViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/login/ErrorSubViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/ErrorSubViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/login/FormScaffold.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/FormScaffold.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/login/FormScaffold.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/FormScaffold.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/login/LoadingView.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/LoadingView.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/login/LoadingView.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/LoadingView.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/login/LoginScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/LoginScreen.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/login/LoginScreen.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/LoginScreen.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/login/LoginSubViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/LoginSubViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/login/LoginSubViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/LoginSubViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/login/RegistrationScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/RegistrationScreen.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/login/RegistrationScreen.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/RegistrationScreen.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/login/RegistrationSubViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/RegistrationSubViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/login/RegistrationSubViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/RegistrationSubViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/login/StartupScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/StartupScreen.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/login/StartupScreen.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/StartupScreen.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/login/StartupViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/StartupViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/login/StartupViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/StartupViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/login/StrengthMeter.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/StrengthMeter.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/login/StrengthMeter.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/StrengthMeter.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/navigation/BriarSidebar.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/navigation/BriarSidebar.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/navigation/BriarSidebar.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/navigation/BriarSidebar.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/navigation/SidebarViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/navigation/SidebarViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/navigation/SidebarViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/navigation/SidebarViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupCard.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupCard.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupCard.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupCard.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupItem.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupItem.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupItem.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupItem.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupList.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupList.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupList.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupList.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupListViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupListViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupListViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupListViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupScreen.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupScreen.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroups/PrivateGroupScreen.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/privategroups/ThreadedConversationScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroups/ThreadedConversationScreen.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/privategroups/ThreadedConversationScreen.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroups/ThreadedConversationScreen.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/privategroups/ThreadedConversationViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroups/ThreadedConversationViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/privategroups/ThreadedConversationViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroups/ThreadedConversationViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/settings/ChangePasswordDialog.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/ChangePasswordDialog.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/settings/ChangePasswordDialog.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/ChangePasswordDialog.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/settings/ChangePasswordSubViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/ChangePasswordSubViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/settings/ChangePasswordSubViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/ChangePasswordSubViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/settings/SettingDetails.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/SettingDetails.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/settings/SettingDetails.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/SettingDetails.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/settings/SettingOption.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/SettingOption.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/settings/SettingOption.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/SettingOption.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/settings/SettingsOptionList.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/SettingsOptionList.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/settings/SettingsOptionList.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/SettingsOptionList.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/settings/SettingsScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/SettingsScreen.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/settings/SettingsScreen.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/SettingsScreen.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/settings/SettingsViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/SettingsViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/settings/SettingsViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/SettingsViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/settings/UnencryptedSettings.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/UnencryptedSettings.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/settings/UnencryptedSettings.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/UnencryptedSettings.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/settings/UnencryptedSettingsImpl.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/UnencryptedSettingsImpl.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/settings/UnencryptedSettingsImpl.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/UnencryptedSettingsImpl.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/theme/Colors.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/theme/Colors.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/theme/Colors.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/theme/Colors.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/theme/Icons.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/theme/Icons.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/theme/Icons.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/theme/Icons.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/theme/Theme.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/theme/Theme.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/theme/Theme.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/theme/Theme.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/threading/BriarExecutors.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threading/BriarExecutors.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/threading/BriarExecutors.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threading/BriarExecutors.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/threading/BriarExecutorsImpl.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threading/BriarExecutorsImpl.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/threading/BriarExecutorsImpl.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threading/BriarExecutorsImpl.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/threading/UiExecutor.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threading/UiExecutor.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/threading/UiExecutor.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threading/UiExecutor.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/AboutDialog.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/AboutDialog.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/ui/AboutDialog.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/AboutDialog.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/BriarDialog.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/BriarDialog.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/ui/BriarDialog.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/BriarDialog.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/BriarLogo.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/BriarLogo.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/ui/BriarLogo.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/BriarLogo.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/BriarUi.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/BriarUi.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/ui/BriarUi.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/BriarUi.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/ColoredIconButton.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/ColoredIconButton.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/ui/ColoredIconButton.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/ColoredIconButton.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/Constants.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/Constants.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/ui/Constants.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/Constants.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/HorizontalDivider.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/HorizontalDivider.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/ui/HorizontalDivider.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/HorizontalDivider.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/Loader.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/Loader.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/ui/Loader.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/Loader.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/MessageCounter.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MessageCounter.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/ui/MessageCounter.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MessageCounter.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/UiMode.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/UiMode.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/ui/UiMode.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/UiMode.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/UiPlaceholder.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/UiPlaceholder.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/ui/UiPlaceholder.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/UiPlaceholder.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/UiState.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/UiState.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/ui/UiState.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/UiState.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/VerticalDivider.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/VerticalDivider.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/ui/VerticalDivider.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/VerticalDivider.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/ui/WindowFocusState.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/WindowFocusState.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/ui/WindowFocusState.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/WindowFocusState.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/utils/FeatureFlagUtils.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/FeatureFlagUtils.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/utils/FeatureFlagUtils.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/FeatureFlagUtils.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/utils/FileUtils.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/FileUtils.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/utils/FileUtils.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/FileUtils.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/utils/ImagePicker.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/ImagePicker.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/utils/ImagePicker.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/ImagePicker.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/utils/ImageUtils.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/ImageUtils.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/utils/ImageUtils.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/ImageUtils.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/utils/InternationalizationUtils.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/InternationalizationUtils.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/utils/InternationalizationUtils.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/InternationalizationUtils.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/utils/KLoggerUtils.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/KLoggerUtils.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/utils/KLoggerUtils.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/KLoggerUtils.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/utils/ListUtils.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/ListUtils.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/utils/ListUtils.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/ListUtils.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/utils/LogUtils.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/LogUtils.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/utils/LogUtils.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/LogUtils.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/utils/PreviewUtils.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/PreviewUtils.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/utils/PreviewUtils.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/PreviewUtils.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/utils/TimeUtils.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/TimeUtils.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/utils/TimeUtils.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/TimeUtils.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/utils/UiUtils.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/UiUtils.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/utils/UiUtils.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/UiUtils.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ComposeUtils.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ComposeUtils.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ComposeUtils.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ComposeUtils.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/DbViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/DbViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/viewmodel/DbViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/DbViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/EventListenerDbViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/EventListenerDbViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/viewmodel/EventListenerDbViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/EventListenerDbViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/SingleStateEvent.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/SingleStateEvent.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/viewmodel/SingleStateEvent.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/SingleStateEvent.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModel.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModel.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModel.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelFactory.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelFactory.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelFactory.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelFactory.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelModule.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelModule.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelModule.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelModule.kt
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelProvider.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelProvider.kt
similarity index 100%
rename from src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelProvider.kt
rename to briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/viewmodel/ViewModelProvider.kt
diff --git a/src/main/resources/fonts/Roboto-Medium.ttf b/briar-desktop/src/main/resources/fonts/Roboto-Medium.ttf
similarity index 100%
rename from src/main/resources/fonts/Roboto-Medium.ttf
rename to briar-desktop/src/main/resources/fonts/Roboto-Medium.ttf
diff --git a/src/main/resources/fonts/Roboto-Regular.ttf b/briar-desktop/src/main/resources/fonts/Roboto-Regular.ttf
similarity index 100%
rename from src/main/resources/fonts/Roboto-Regular.ttf
rename to briar-desktop/src/main/resources/fonts/Roboto-Regular.ttf
diff --git a/src/main/resources/images/logo_circle.ico b/briar-desktop/src/main/resources/images/logo_circle.ico
similarity index 100%
rename from src/main/resources/images/logo_circle.ico
rename to briar-desktop/src/main/resources/images/logo_circle.ico
diff --git a/src/main/resources/images/logo_circle.png b/briar-desktop/src/main/resources/images/logo_circle.png
similarity index 100%
rename from src/main/resources/images/logo_circle.png
rename to briar-desktop/src/main/resources/images/logo_circle.png
diff --git a/src/main/resources/images/logo_circle.svg b/briar-desktop/src/main/resources/images/logo_circle.svg
similarity index 100%
rename from src/main/resources/images/logo_circle.svg
rename to briar-desktop/src/main/resources/images/logo_circle.svg
diff --git a/src/main/resources/images/logo_circle_badge.svg b/briar-desktop/src/main/resources/images/logo_circle_badge.svg
similarity index 100%
rename from src/main/resources/images/logo_circle_badge.svg
rename to briar-desktop/src/main/resources/images/logo_circle_badge.svg
diff --git a/src/main/resources/logback.xml b/briar-desktop/src/main/resources/logback.xml
similarity index 100%
rename from src/main/resources/logback.xml
rename to briar-desktop/src/main/resources/logback.xml
diff --git a/src/main/resources/strings/BriarDesktop.properties b/briar-desktop/src/main/resources/strings/BriarDesktop.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop.properties
diff --git a/src/main/resources/strings/BriarDesktop_ar.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_ar.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_ar.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_ar.properties
diff --git a/src/main/resources/strings/BriarDesktop_bg.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_bg.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_bg.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_bg.properties
diff --git a/src/main/resources/strings/BriarDesktop_ca.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_ca.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_ca.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_ca.properties
diff --git a/src/main/resources/strings/BriarDesktop_de.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_de.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_de.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_de.properties
diff --git a/src/main/resources/strings/BriarDesktop_es.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_es.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_es.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_es.properties
diff --git a/src/main/resources/strings/BriarDesktop_fa.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_fa.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_fa.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_fa.properties
diff --git a/src/main/resources/strings/BriarDesktop_fr.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_fr.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_fr.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_fr.properties
diff --git a/src/main/resources/strings/BriarDesktop_gl.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_gl.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_gl.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_gl.properties
diff --git a/src/main/resources/strings/BriarDesktop_he.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_he.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_he.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_he.properties
diff --git a/src/main/resources/strings/BriarDesktop_hu.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_hu.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_hu.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_hu.properties
diff --git a/src/main/resources/strings/BriarDesktop_is.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_is.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_is.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_is.properties
diff --git a/src/main/resources/strings/BriarDesktop_it.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_it.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_it.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_it.properties
diff --git a/src/main/resources/strings/BriarDesktop_ja.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_ja.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_ja.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_ja.properties
diff --git a/src/main/resources/strings/BriarDesktop_ko.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_ko.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_ko.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_ko.properties
diff --git a/src/main/resources/strings/BriarDesktop_lt.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_lt.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_lt.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_lt.properties
diff --git a/src/main/resources/strings/BriarDesktop_my.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_my.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_my.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_my.properties
diff --git a/src/main/resources/strings/BriarDesktop_nl.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_nl.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_nl.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_nl.properties
diff --git a/src/main/resources/strings/BriarDesktop_pl.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_pl.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_pl.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_pl.properties
diff --git a/src/main/resources/strings/BriarDesktop_pt_BR.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_pt_BR.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_pt_BR.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_pt_BR.properties
diff --git a/src/main/resources/strings/BriarDesktop_ro.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_ro.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_ro.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_ro.properties
diff --git a/src/main/resources/strings/BriarDesktop_ru.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_ru.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_ru.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_ru.properties
diff --git a/src/main/resources/strings/BriarDesktop_sk.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_sk.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_sk.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_sk.properties
diff --git a/src/main/resources/strings/BriarDesktop_sq.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_sq.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_sq.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_sq.properties
diff --git a/src/main/resources/strings/BriarDesktop_sv.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_sv.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_sv.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_sv.properties
diff --git a/src/main/resources/strings/BriarDesktop_tr.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_tr.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_tr.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_tr.properties
diff --git a/src/main/resources/strings/BriarDesktop_uk.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_uk.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_uk.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_uk.properties
diff --git a/src/main/resources/strings/BriarDesktop_zh_CN.properties b/briar-desktop/src/main/resources/strings/BriarDesktop_zh_CN.properties
similarity index 100%
rename from src/main/resources/strings/BriarDesktop_zh_CN.properties
rename to briar-desktop/src/main/resources/strings/BriarDesktop_zh_CN.properties
diff --git a/src/packagingResources/linux/postinst b/briar-desktop/src/packagingResources/linux/postinst
similarity index 100%
rename from src/packagingResources/linux/postinst
rename to briar-desktop/src/packagingResources/linux/postinst
diff --git a/src/packagingResources/linux/preinst b/briar-desktop/src/packagingResources/linux/preinst
similarity index 100%
rename from src/packagingResources/linux/preinst
rename to briar-desktop/src/packagingResources/linux/preinst
diff --git a/src/packagingResources/linux/prerm b/briar-desktop/src/packagingResources/linux/prerm
similarity index 100%
rename from src/packagingResources/linux/prerm
rename to briar-desktop/src/packagingResources/linux/prerm
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/GroupCountHelper.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/GroupCountHelper.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/GroupCountHelper.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/GroupCountHelper.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/RunWithMultipleTemporaryAccounts.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/RunWithMultipleTemporaryAccounts.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/RunWithMultipleTemporaryAccounts.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/RunWithMultipleTemporaryAccounts.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/RunWithTemporaryAccount.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/RunWithTemporaryAccount.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/RunWithTemporaryAccount.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/RunWithTemporaryAccount.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestDeterministicConversations.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestDeterministicConversations.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/TestDeterministicConversations.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestDeterministicConversations.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestListDependencies.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestListDependencies.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/TestListDependencies.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestListDependencies.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestMixedConversations.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestMixedConversations.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/TestMixedConversations.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestMixedConversations.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestRandomConversations.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestRandomConversations.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/TestRandomConversations.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestRandomConversations.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestStartupWithAccount.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestStartupWithAccount.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/TestStartupWithAccount.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestStartupWithAccount.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestStartupWithUnwritableDirectory.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestStartupWithUnwritableDirectory.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/TestStartupWithUnwritableDirectory.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestStartupWithUnwritableDirectory.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestStartupWithoutAccount.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestStartupWithoutAccount.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/TestStartupWithoutAccount.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestStartupWithoutAccount.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestUtils.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestUtils.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/TestUtils.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestUtils.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestWithThreeConnectedTemporaryAccounts.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestWithThreeConnectedTemporaryAccounts.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/TestWithThreeConnectedTemporaryAccounts.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestWithThreeConnectedTemporaryAccounts.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoConnectedTemporaryAccounts.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoConnectedTemporaryAccounts.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoConnectedTemporaryAccounts.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoConnectedTemporaryAccounts.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoTemporaryAccounts.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoTemporaryAccounts.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoTemporaryAccounts.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoTemporaryAccounts.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressorTest.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressorTest.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressorTest.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressorTest.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/contact/ContactItemTest.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/contact/ContactItemTest.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/contact/ContactItemTest.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/contact/ContactItemTest.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/testdata/Conversations.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/Conversations.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/testdata/Conversations.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/Conversations.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/testdata/ConversationsData.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/ConversationsData.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/testdata/ConversationsData.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/ConversationsData.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/testdata/ConversationsDsl.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/ConversationsDsl.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/testdata/ConversationsDsl.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/ConversationsDsl.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreator.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreator.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreator.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreator.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/testdata/GroupsData.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/GroupsData.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/testdata/GroupsData.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/GroupsData.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/testdata/TestAvatarCreatorImpl.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/TestAvatarCreatorImpl.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/testdata/TestAvatarCreatorImpl.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/TestAvatarCreatorImpl.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/testdata/TestListConversationData.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/TestListConversationData.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/testdata/TestListConversationData.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/TestListConversationData.kt
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/utils/ListUtilsTest.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/utils/ListUtilsTest.kt
similarity index 100%
rename from src/test/kotlin/org/briarproject/briar/desktop/utils/ListUtilsTest.kt
rename to briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/utils/ListUtilsTest.kt
diff --git a/src/test/resources/images/voronoi1.png b/briar-desktop/src/test/resources/images/voronoi1.png
similarity index 100%
rename from src/test/resources/images/voronoi1.png
rename to briar-desktop/src/test/resources/images/voronoi1.png
diff --git a/src/test/resources/images/voronoi2.png b/briar-desktop/src/test/resources/images/voronoi2.png
similarity index 100%
rename from src/test/resources/images/voronoi2.png
rename to briar-desktop/src/test/resources/images/voronoi2.png
diff --git a/src/test/resources/images/voronoi3.png b/briar-desktop/src/test/resources/images/voronoi3.png
similarity index 100%
rename from src/test/resources/images/voronoi3.png
rename to briar-desktop/src/test/resources/images/voronoi3.png
diff --git a/src/test/resources/images/voronoi4.png b/briar-desktop/src/test/resources/images/voronoi4.png
similarity index 100%
rename from src/test/resources/images/voronoi4.png
rename to briar-desktop/src/test/resources/images/voronoi4.png
diff --git a/build.gradle.kts b/build.gradle.kts
index 97231d3984..dee9a074d0 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -16,10 +16,7 @@
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 
-import org.jetbrains.compose.compose
-import org.jetbrains.compose.desktop.application.dsl.TargetFormat
-import org.jetbrains.compose.jetbrainsCompose
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
+@file:Suppress("HardCodedStringLiteral")
 
 buildscript {
     repositories {
@@ -48,112 +45,10 @@ buildscript {
     }
 }
 
-plugins {
-    kotlin("jvm") version "1.6.10"
-    kotlin("kapt") version "1.6.10"
-    id("org.jetbrains.compose") version "1.1.1"
-    id("java")
-    id("idea")
-    id("org.jlleitschuh.gradle.ktlint") version "10.1.0"
-    id("org.briarproject.briar.desktop.build-data-gradle-plugin")
-}
-
-val versionCode = "0.2.1"
-val buildType = if (project.hasProperty("buildType")) project.properties["buildType"] else "snapshot"
-group = "app.briar.desktop"
-version = "$versionCode-$buildType"
-
 allprojects {
     repositories {
         mavenCentral()
-        jetbrainsCompose()
         google()
         jcenter()
     }
 }
-
-buildData {
-    packageName = "org.briarproject.briar.desktop"
-}
-
-dependencies {
-    implementation(compose.desktop.currentOs)
-    implementation(compose.materialIconsExtended)
-    // needed to access Dispatchers.Swing for EventExecutor
-    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-swing:1.6.1")
-
-    implementation("com.github.ajalt.clikt:clikt:3.4.0")
-    implementation("com.ibm.icu:icu4j:70.1")
-
-    implementation(project(path = ":briar-core", configuration = "default"))
-    implementation(project(path = ":bramble-java", configuration = "default"))
-
-    implementation("io.github.microutils:kotlin-logging-jvm:2.1.21")
-    implementation("org.slf4j:jul-to-slf4j:1.7.36")
-    implementation("ch.qos.logback:logback-classic:1.2.11")
-
-    val daggerVersion = "2.24"
-    kapt("com.google.dagger:dagger-compiler:$daggerVersion")
-
-    testImplementation(kotlin("test-testng"))
-    testImplementation("commons-io:commons-io:2.11.0")
-    kaptTest("com.google.dagger:dagger-compiler:$daggerVersion")
-}
-
-tasks.test {
-    useTestNG()
-}
-
-tasks.withType<KotlinCompile> {
-    kotlinOptions.jvmTarget = "11"
-}
-
-tasks.withType<org.gradle.jvm.tasks.Jar> {
-    exclude("META-INF/BC1024KE.RSA", "META-INF/BC1024KE.SF", "META-INF/BC1024KE.DSA")
-    exclude("META-INF/BC2048KE.RSA", "META-INF/BC2048KE.SF", "META-INF/BC2048KE.DSA")
-}
-
-tasks.jar {
-    exclude("META-INF/BC1024KE.RSA", "META-INF/BC1024KE.SF", "META-INF/BC1024KE.DSA")
-    exclude("META-INF/BC2048KE.RSA", "META-INF/BC2048KE.SF", "META-INF/BC2048KE.DSA")
-}
-
-compose.desktop {
-    application {
-        mainClass = "org.briarproject.briar.desktop.MainKt"
-        nativeDistributions {
-            targetFormats(TargetFormat.Msi, TargetFormat.Exe, TargetFormat.Deb, TargetFormat.Rpm)
-            packageName = "Briar"
-            description = "Secure messaging, anywhere"
-            vendor = "The Briar Project"
-            copyright = "2021-2022 The Briar Project"
-            licenseFile.set(project.file("LICENSE.txt"))
-            appResourcesRootDir.set(project.layout.projectDirectory.dir("src/appResources"))
-            // As described at https://github.com/JetBrains/compose-jb/tree/master/tutorials/Native_distributions_and_local_execution#configuring-included-jdk-modules
-            // the Gradle plugin does not automatically determine necessary JDK modules to ship
-            // so that we need to define required modules here:
-            modules("java.sql")
-            modules("java.naming")
-            modules("jdk.localedata")
-            linux {
-                packageName = "briar-desktop"
-                // Explicitly specifying the debian revision '-1' doesn't seem to work, it gets always appended.
-                // I think we're fine having revision '-1' as it will only be used to break ties when the upstream
-                // version is the same for two packages.
-                debPackageVersion = "$versionCode-$buildType"
-                // rpm versions may not contain hyphens, so use underscore
-                rpmPackageVersion = "${versionCode}_$buildType"
-                iconFile.set(project.file("src/main/resources/images/logo_circle.png"))
-                debMaintainer = "contact@briarproject.org"
-                appCategory = "comm"
-                menuGroup = "Network;Chat;InstantMessaging;"
-            }
-            windows {
-                iconFile.set(project.file("src/main/resources/images/logo_circle.ico"))
-                upgradeUuid = "cc8b40f7-f190-4cea-bfec-ceb9ef85df09"
-                // Windows doesn't support things like 'nightly' or 'release'. Only numeric versions are acceptable
-                packageVersion = versionCode
-            }
-        }
-    }
-}
diff --git a/buildSrc/src/main/kotlin/org/briarproject/briar/desktop/builddata/GenerateBuildDataSourceTask.kt b/buildSrc/src/main/kotlin/org/briarproject/briar/desktop/builddata/GenerateBuildDataSourceTask.kt
index fc7b1716ea..725bed04d5 100644
--- a/buildSrc/src/main/kotlin/org/briarproject/briar/desktop/builddata/GenerateBuildDataSourceTask.kt
+++ b/buildSrc/src/main/kotlin/org/briarproject/briar/desktop/builddata/GenerateBuildDataSourceTask.kt
@@ -41,7 +41,7 @@ import java.nio.file.StandardCopyOption
 open class GenerateBuildDataSourceTask : AbstractBuildDataTask() {
 
     companion object {
-        val LICENSES = buildMap {
+        val LICENSES = buildMap<UnversionedArtifact, String> {
             put(UnversionedArtifact("ch.qos.logback", "logback-classic"), "EPL 1.0/LGPL 2.1")
             put(UnversionedArtifact("ch.qos.logback", "logback-core"), "EPL 1.0/LGPL 2.1")
             put(UnversionedArtifact("com.fasterxml.jackson.core", "jackson-annotations"), "Apache 2.0")
@@ -118,7 +118,7 @@ open class GenerateBuildDataSourceTask : AbstractBuildDataTask() {
 
         // Get Git hashes, last commit time, current branch and briar-core tag using JGit.
         // First, open main git repository
-        val dir = project.projectDir
+        val dir = project.rootProject.projectDir
         val git = Git.open(dir)
         val repository = git.repository
         val status = git.status().call()
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 28c2bd65a5..db8e2ad937 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -11,6 +11,7 @@ include(":bramble-core")
 include(":bramble-java")
 include(":briar-api")
 include(":briar-core")
+include(":briar-desktop")
 project(":bramble-api").projectDir = file("briar/bramble-api")
 project(":bramble-core").projectDir = file("briar/bramble-core")
 project(":bramble-java").projectDir = file("briar/bramble-java")
-- 
GitLab