Branch data Line data Source code
1 : : // SPDX-License-Identifier: GPL-3.0-or-later
2 : : // SPDX-FileCopyrightText: Andy Holmes <andrew.g.r.holmes@gmail.com>
3 : :
4 : : #include "config.h"
5 : :
6 : : #include <glib/gi18n.h>
7 : : #ifdef HAVE_GTK4
8 : : #include <gtk/gtk.h>
9 : : #endif /* HAVE_GTK4 */
10 : : #include <libportal/portal.h>
11 : : #include <valent.h>
12 : :
13 : :
14 : : static void
15 : 0 : valent_plugin_init (void)
16 : : {
17 : 0 : PeasEngine *engine = peas_engine_get_default ();
18 : 0 : g_autofree char *xdg_plugin_dir = NULL;
19 : :
20 : : /* The package plugin directory, typically `$LIBDIR/valent/plugins`. */
21 : 0 : peas_engine_add_search_path (engine, VALENT_PLUGINSDIR, NULL);
22 : :
23 : : /* The user plugin directory as reported by XDG directories. If in a Flatpak,
24 : : * this will be `~/.var/app/APPLICATION_ID/data/PACKAGE_NAME/plugins`. */
25 : 0 : xdg_plugin_dir = g_build_filename (g_get_user_data_dir (),
26 : : PACKAGE_NAME, "plugins", NULL);
27 : 0 : peas_engine_add_search_path (engine, xdg_plugin_dir, NULL);
28 : :
29 : : /* The real user plugin directory, regardless of XDG environment variables.
30 : : * This will always be `~/.local/share/PACKAGE_NAME/plugins`. */
31 : 0 : if (xdp_portal_running_under_flatpak ())
32 : : {
33 : 0 : g_autofree char *real_plugin_dir = NULL;
34 : :
35 : 0 : real_plugin_dir = g_build_filename (g_get_home_dir (), ".local", "share",
36 : : PACKAGE_NAME, "plugins", NULL);
37 : 0 : peas_engine_add_search_path (engine, real_plugin_dir, NULL);
38 : : }
39 : 0 : }
40 : :
41 : : int
42 : 0 : main (int argc,
43 : : char *argv[])
44 : : {
45 : 0 : int ret;
46 : 0 : g_autoptr (GApplication) service = NULL;
47 : :
48 : : /* Initialize Translations */
49 : 0 : bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
50 : 0 : bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
51 : 0 : textdomain (GETTEXT_PACKAGE);
52 : :
53 : : /* Initialize Valent */
54 : 0 : valent_debug_init ();
55 : 0 : valent_plugin_init ();
56 : :
57 : : #ifdef HAVE_GTK4
58 : 0 : if (g_getenv ("VALENT_HEADLESS") != NULL || !gtk_init_check ())
59 : 0 : g_debug ("Valent running in headless mode");
60 : : #endif /* HAVE_GTK4 */
61 : :
62 : : /* Run and cleanup, before returning */
63 : 0 : g_set_application_name ("Valent");
64 : 0 : service = _valent_application_new ();
65 : 0 : ret = g_application_run (G_APPLICATION (service), argc, argv);
66 : :
67 : 0 : valent_debug_clear ();
68 : :
69 : 0 : return ret;
70 : : }
|