diff --git a/src/briar-gtk.in b/src/briar-gtk.in
index 1f3930dfeca1e710a1efecf6abd59379d5222f19..0bd3f8e869649d7f9ecf2e5d95bc86e9c704167a 100755
--- a/src/briar-gtk.in
+++ b/src/briar-gtk.in
@@ -15,24 +15,43 @@ import sys
 
 import gi
 gi.require_version('Gtk', '3.0')
+from gi.repository import Gio
 
-pkgdatadir = '@pkgdatadir@'
-localedir = '@localedir@'
+PACKAGE_DATA_DIR = '@PACKAGE_DATA_DIR@'
+LOCALE_DIR = '@LOCALE_DIR@'
 
-sys.path.insert(1, pkgdatadir)
-signal.signal(signal.SIGINT, signal.SIG_DFL)
+def add_package_to_sys_path():
+    sys.path.insert(1, PACKAGE_DATA_DIR)
 
-if __name__ == '__main__':
-    locale.bindtextdomain('briar-gtk', localedir)
+def handle_sigint_default_way():
+    signal.signal(signal.SIGINT, signal.SIG_DFL)
+
+def prepare_locale():
+    locale.bindtextdomain('briar-gtk', LOCALE_DIR)
     locale.textdomain('briar-gtk')
-    gettext.bindtextdomain('briar-gtk', localedir)
+
+def prepare_gettext():
+    gettext.bindtextdomain('briar-gtk', LOCALE_DIR)
     gettext.textdomain('briar-gtk')
 
-    import gi
+def prepare_localization():
+    prepare_locale()
+    prepare_gettext()
 
-    from gi.repository import Gio
-    resource = Gio.Resource.load(os.path.join(pkgdatadir, 'briar-gtk.gresource'))
+def prepare_resource():
+    resource = Gio.Resource.load(os.path.join(PACKAGE_DATA_DIR, 'briar-gtk.gresource'))
     resource._register()
 
+def prepare():
+    add_package_to_sys_path()
+    handle_sigint_default_way()
+    prepare_localization()
+    prepare_resource()
+
+def start_application():
     from briar.gtk.application import Application
     sys.exit(Application("@VERSION@").run(sys.argv))
+
+if __name__ == '__main__':
+    prepare()
+    start_application()
diff --git a/src/meson.build b/src/meson.build
index a1afe42cc2b453599c822dd842b43c639639a062..744ca3a0236e976cdf711468ad421acee51b62b8 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -2,16 +2,16 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 # License-Filename: LICENSE.md
 
-pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
-moduledir = join_paths(pkgdatadir, 'briar')
+PACKAGE_DATA_DIR = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
+MODULE_DIR = join_paths(PACKAGE_DATA_DIR, 'briar')
 
 python3 = import('python3')
 
 conf = configuration_data()
 conf.set('PYTHON', python3.find_python().path())
 conf.set('VERSION', meson.project_version())
-conf.set('localedir', join_paths(get_option('prefix'), get_option('localedir')))
-conf.set('pkgdatadir', pkgdatadir)
+conf.set('LOCALE_DIR', join_paths(get_option('prefix'), get_option('localedir')))
+conf.set('PACKAGE_DATA_DIR', PACKAGE_DATA_DIR)
 
 configure_file(
   input: 'briar-gtk.in',
@@ -21,5 +21,5 @@ configure_file(
   install_dir: get_option('bindir')
 )
 
-install_subdir('briar/api', install_dir: moduledir)
-install_subdir('briar/gtk', install_dir: moduledir)
+install_subdir('briar/api', install_dir: MODULE_DIR)
+install_subdir('briar/gtk', install_dir: MODULE_DIR)