diff --git a/briar-gtk/briar_gtk/containers/add_contact.py b/briar-gtk/briar_gtk/containers/add_contact.py
index 30fe8deb1dba5db75fa65afb04b801d85cd44d86..d100ddcc3da8775ed10aa9b2bf2917f2279a1d46 100644
--- a/briar-gtk/briar_gtk/containers/add_contact.py
+++ b/briar-gtk/briar_gtk/containers/add_contact.py
@@ -14,7 +14,7 @@ from briar_gtk.define import APP
 
 class AddContactContainer(Container):
 
-    ADD_CONTACT_UI = "/app/briar/gtk/ui/add_contact.ui"
+    ADD_CONTACT_UI = "/app/briar/gtk/add_contact.ui"
     STACK_NAME = "add_contact_flow_stack"
     HEADERS_NAME = "add_contact_flow_headers"
 
diff --git a/briar-gtk/briar_gtk/containers/login.py b/briar-gtk/briar_gtk/containers/login.py
index c71fc856a189c540b2b5b03dab7361a084c97989..7effb99894dfbd9a303d3e70ba7256ca0cd5aa35 100644
--- a/briar-gtk/briar_gtk/containers/login.py
+++ b/briar-gtk/briar_gtk/containers/login.py
@@ -10,7 +10,7 @@ from briar_gtk.define import APP
 
 class LoginContainer(Container):
 
-    LOGIN_UI = "/app/briar/gtk/ui/login.ui"
+    LOGIN_UI = "/app/briar/gtk/login.ui"
     STACK_NAME = "login_flow_stack"
     HEADERS_NAME = "login_flow_headers"
 
diff --git a/briar-gtk/briar_gtk/containers/private_chat.py b/briar-gtk/briar_gtk/containers/private_chat.py
index 54c63d996a5580c214c952426b6d78b1f1eddfb3..7bff8bb16c461aa4859bc2777ef76cd9d9d68de1 100644
--- a/briar-gtk/briar_gtk/containers/private_chat.py
+++ b/briar-gtk/briar_gtk/containers/private_chat.py
@@ -19,7 +19,7 @@ from briar_gtk.widgets.private_message import PrivateMessageWidget
 # pylint: disable=too-few-public-methods
 class PrivateChatContainer(Container):
 
-    CONTAINER_UI = "/app/briar/gtk/ui/private_chat.ui"
+    CONTAINER_UI = "/app/briar/gtk/private_chat.ui"
 
     def __init__(self, contact_name, contact_id):
         super().__init__()
diff --git a/briar-gtk/briar_gtk/containers/registration.py b/briar-gtk/briar_gtk/containers/registration.py
index e4ba235c7c623e2ae560a2a691bd2fd6c50b4009..2ebb65b56924858c9a7713caa5489bb765d81a62 100644
--- a/briar-gtk/briar_gtk/containers/registration.py
+++ b/briar-gtk/briar_gtk/containers/registration.py
@@ -12,7 +12,7 @@ from briar_gtk.define import APP
 
 class RegistrationContainer(Container):
 
-    REGISTRATION_UI = "/app/briar/gtk/ui/registration.ui"
+    REGISTRATION_UI = "/app/briar/gtk/registration.ui"
     STACK_NAME = "registration_flow_stack"
     HEADERS_NAME = "registration_flow_headers"
 
diff --git a/briar-gtk/briar_gtk/define.py b/briar-gtk/briar_gtk/define.py
index 4e893dad467906291ef35f62d9e32ebfbe2d077f..5ff017218010dc83f5817d1184359de5fff7622f 100644
--- a/briar-gtk/briar_gtk/define.py
+++ b/briar-gtk/briar_gtk/define.py
@@ -10,7 +10,7 @@ from gi.repository import Gio
 
 APPLICATION_ID = "app.briar.gtk"
 APPLICATION_NAME = "Briar"
-APPLICATION_STYLING_PATH = "resource:///app/briar/gtk/ui/application.css"
+APPLICATION_STYLING_PATH = "resource:///app/briar/gtk/application.css"
 BRIAR_HEADLESS_JAR = "/app/briar/briar-headless.jar"
 
 APP = Gio.Application.get_default
diff --git a/briar-gtk/data/meson.build b/briar-gtk/data/meson.build
index 48a1f7fa8d3c240f1a7b503e4ce061ff984b5679..51cae121946fa544103cc10ee3fc0a3e81c3ddbc 100644
--- a/briar-gtk/data/meson.build
+++ b/briar-gtk/data/meson.build
@@ -44,20 +44,5 @@ if compile_schemas.found()
   )
 endif
 
-pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
-gnome = import('gnome')
-
-gnome.compile_resources('briar-gtk',
-  'ui/app.briar.gtk.gresource.xml',
-  gresource_bundle: true,
-  install: true,
-  install_dir: pkgdatadir,
-  dependencies: configure_file(
-    input: 'ui/about_dialog.ui.in',
-    output: 'about_dialog.ui',
-    configuration: conf
-  )
-
-)
-
+subdir('ui')
 subdir('icons')
diff --git a/briar-gtk/data/ui/app.briar.gtk.gresource.xml b/briar-gtk/data/ui/app.briar.gtk.gresource.xml
index 4efc986a36d79bfee8e43ca91d83c7cbec1dfb38..ad294a08778673a120adeef609c14814187d78b8 100644
--- a/briar-gtk/data/ui/app.briar.gtk.gresource.xml
+++ b/briar-gtk/data/ui/app.briar.gtk.gresource.xml
@@ -1,11 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <gresources>
   <gresource prefix="/app/briar/gtk">
-    <file compressed="true">ui/application.css</file>
-    <file compressed="true" preprocess="xml-stripblanks">ui/add_contact.ui</file>
-    <file compressed="true" preprocess="xml-stripblanks">ui/login.ui</file>
-    <file compressed="true" preprocess="xml-stripblanks">ui/main_window.ui</file>
-    <file compressed="true" preprocess="xml-stripblanks">ui/private_chat.ui</file>
-    <file compressed="true" preprocess="xml-stripblanks">ui/registration.ui</file>
+    <file compressed="true">application.css</file>
+    <file compressed="true" preprocess="xml-stripblanks">add_contact.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">login.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">main_menu.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">main_window.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">private_chat.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">registration.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">about_dialog.ui</file>
   </gresource>
 </gresources>
diff --git a/briar-gtk/data/ui/meson.build b/briar-gtk/data/ui/meson.build
new file mode 100644
index 0000000000000000000000000000000000000000..cd985dbd5606d21fe61a7f294bab64fef2df92a8
--- /dev/null
+++ b/briar-gtk/data/ui/meson.build
@@ -0,0 +1,18 @@
+# Copyright (c) 2020 Nico Alt
+# SPDX-License-Identifier: AGPL-3.0-only
+# License-Filename: LICENSE.md
+
+pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
+gnome = import('gnome')
+
+gnome.compile_resources('briar-gtk',
+  'app.briar.gtk.gresource.xml',
+  gresource_bundle: true,
+  install: true,
+  install_dir: pkgdatadir,
+  dependencies: configure_file(
+    input: 'about_dialog.ui.in',
+    output: 'about_dialog.ui',
+    configuration: conf
+  )
+)
diff --git a/tools/generate_data.sh b/tools/generate_data.sh
index ae573f8bb22622a237805d1a03230b92a00f5f6b..883f151ff163ac7701379abaeee755e136215f98 100755
--- a/tools/generate_data.sh
+++ b/tools/generate_data.sh
@@ -14,14 +14,12 @@ function generate_resource()
     for file in briar-gtk/data/ui/*.css
     do
         echo -n '    <file compressed="true">'
-        echo -n 'ui/'
         echo -n $(basename $file)
         echo '</file>'
     done
-    for file in briar-gtk/data/ui/*.ui
+    for file in briar-gtk/data/ui/*.ui about_dialog.ui
     do
         echo -n '    <file compressed="true" preprocess="xml-stripblanks">'
-        echo -n 'ui/'
         echo -n $(basename $file)
         echo '</file>'
     done