public App()
        {
            SetUpCrashReporting(ConfigurationManager.AppSettings["SentryDsn"]);
            Startup += async(sender, args) =>
            {
                var baseDir = AppDomain.CurrentDomain.BaseDirectory;
                var dataDir = Path.Combine(baseDir, "Data");
                kernel = Configure(dataDir);
                var window   = new MainWindow();
                var splashVm = new SplashScreenVM();
                var splash   = new SplashScreen
                {
                    DataContext = splashVm
                };
                IProgress <string> progress = new Progress <string>(s => splashVm.ProgressReport = s);
                splash.Show();
                Encoding.RegisterProvider(new Utf8EncodingProviderHack());
                kernel.Bind <ITextInsertCommand>(() => new TextInsertCommand(window.InsertTextAtCursor));
                kernel.Bind(Dispatcher);
                await Task.Run(() =>
                {
                    Preload(progress);
                });

                var vm = kernel.Get <MainWindowVM>();
                window.DataContext = vm;
                window.Show();
                splash.Close();
            };
            Exit += (sender, args) =>
            {
                kernel.Dispose();
            };
        }
        public App()
        {
            var splash = new SplashScreen();

            splash.Show();
            Encoding.RegisterProvider(new Utf8EncodingProviderHack());
            Configure();
            Startup += (sender, args) =>
            {
                var vm     = Kernel.Get <MainWindowVM>();
                var window = new MainWindow()
                {
                    DataContext = vm
                };
                window.Show();
                splash.Close();
            };
            Exit += (sender, args) =>
            {
                Kernel.Dispose();
            };
        }