diff options
author | Andre Miranda <andreldm@xfce.org> | 2021-06-25 15:31:06 -0300 |
---|---|---|
committer | Andre Miranda <andreldm@xfce.org> | 2021-06-25 16:02:18 -0300 |
commit | c2eb4a0b30df1cd8e8f93dd305d74e9a84eeed9f (patch) | |
tree | 113d472aa519969902185b795e6b1c87d3f8f2be /src | |
parent | c376f5ea2ed2e0ebecc822cda9bf01a0800663dd (diff) | |
download | xfce4-appfinder-c2eb4a0b30df1cd8e8f93dd305d74e9a84eeed9f.tar.gz |
Add support to garcon's PrefersNonDefaultGPU property
Diffstat (limited to 'src')
-rw-r--r-- | src/appfinder-model.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/appfinder-model.c b/src/appfinder-model.c index d5ebc42..82ccc85 100644 --- a/src/appfinder-model.c +++ b/src/appfinder-model.c @@ -2411,7 +2411,10 @@ xfce_appfinder_model_execute (XfceAppfinderModel *model, GarconMenuItem *item; ModelItem *mitem; gboolean succeed = FALSE; - gchar **argv; + gchar **argv, **envp = NULL; +#if GARCON_CHECK_VERSION (4, 17, 0) + gboolean discrete_gpu; +#endif appfinder_return_val_if_fail (XFCE_IS_APPFINDER_MODEL (model), FALSE); appfinder_return_val_if_fail (iter->stamp == model->stamp, FALSE); @@ -2452,19 +2455,29 @@ xfce_appfinder_model_execute (XfceAppfinderModel *model, command = escaped_command; escaped_command = NULL; +#if GARCON_CHECK_VERSION (4, 17, 0) + if (garcon_menu_item_get_prefers_non_default_gpu (item)) + { + envp = g_get_environ (); + envp = g_environ_setenv (envp, "__NV_PRIME_RENDER_OFFLOAD", "1", TRUE); + envp = g_environ_setenv (envp, "__GLX_VENDOR_LIBRARY_NAME", "nvidia", TRUE); + envp = g_environ_setenv (envp, "__VK_LAYER_NV_optimus", "NVIDIA_only", TRUE); + } +#endif + if (g_shell_parse_argv (command, NULL, &argv, error)) { #if LIBXFCE4UI_CHECK_VERSION (4, 15, 6) succeed = xfce_spawn (screen, garcon_menu_item_get_path (item), - argv, NULL, G_SPAWN_SEARCH_PATH, + argv, envp, G_SPAWN_SEARCH_PATH, garcon_menu_item_supports_startup_notification (item), gtk_get_current_event_time (), icon, TRUE, error); #else succeed = xfce_spawn_on_screen (screen, garcon_menu_item_get_path (item), - argv, NULL, G_SPAWN_SEARCH_PATH, + argv, envp, G_SPAWN_SEARCH_PATH, garcon_menu_item_supports_startup_notification (item), gtk_get_current_event_time (), icon, error); @@ -2474,6 +2487,7 @@ xfce_appfinder_model_execute (XfceAppfinderModel *model, } g_free (command); + g_strfreev (envp); return succeed; } |