summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndre Miranda <andreldm@xfce.org>2021-06-25 15:31:06 -0300
committerAndre Miranda <andreldm@xfce.org>2021-06-25 16:02:18 -0300
commitc2eb4a0b30df1cd8e8f93dd305d74e9a84eeed9f (patch)
tree113d472aa519969902185b795e6b1c87d3f8f2be /src
parentc376f5ea2ed2e0ebecc822cda9bf01a0800663dd (diff)
downloadxfce4-appfinder-c2eb4a0b30df1cd8e8f93dd305d74e9a84eeed9f.tar.gz
Add support to garcon's PrefersNonDefaultGPU property
Diffstat (limited to 'src')
-rw-r--r--src/appfinder-model.c20
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;
}