gpt4 book ai didi

c - xfce 中 gnome_url_show() 的替代方案

转载 作者:太空宇宙 更新时间:2023-11-04 04:49:38 27 4
gpt4 key购买 nike

我想知道 xfce 是否有类似于 gnome 的 gnome_url_show() 的函数。

如果不是这种情况,我想知道打开 url 的另一种便捷方式是什么?例如,如果您向按钮添加了信号处理程序,单击该按钮会打开一个网站。

gtk有这样的功能吗?我知道它至少有内置的东西,因为当你创建一个带有 url 的标签时,可以单击它来打开 url。我查看了各种文档,但尚未找到解决方案。

gtk_show_uri() 不会在 xfce 上工作,因为它需要 gvfs 而我没有使用 gnome。

最佳答案

感谢 xfce4-weather-plugin 源代码,我发现这是一个实用的解决方案:

gchar *str = g_strdup_printf("exo-open --launch WebBrowser %s", url);
g_spawn_command_line_async(str, NULL);
g_free(str);

考虑到该插件是核心 xfce 应用程序的一部分,我认为它是合适的方式。我还发现了有关 exo_execute_preferred_application() 的信息,但是我不想包含另一个库。

可在此处找到此主题的变体:http://git.xfce.org/xfce/libxfce4ui/tree/libxfce4ui/xfce-dialogs.c#n66这可能更可取,因为如果未安装 exo,它将回退到 gtk_show_uri() 。虽然 gtk_show_uri() 可能由于 xfce 系统上缺少 gvfs 而无法工作(毕竟用户使用的是 xfce,而不是 gnome)。 xfce 面板使用此函数加载 url。

static void
xfce_dialog_show_help_uri (GdkScreen *screen,
GtkWindow *parent,
GString *uri)
{
GError *error = NULL;
gchar *path;
gchar *cmd;
gboolean result;

g_return_if_fail (GDK_IS_SCREEN (screen));
g_return_if_fail (parent == NULL || GTK_IS_WINDOW (parent));

path = g_find_program_in_path ("exo-open");
if (G_LIKELY (path != NULL))
{
cmd = g_strdup_printf ("%s --launch WebBrowser '%s'", path, uri->str);

result = xfce_spawn_command_line_on_screen (screen, cmd, FALSE, TRUE, &error);

g_free (path);
g_free (cmd);
}
else
{
/* not very likely to happen, but it is possible exo is not installed */
result = gtk_show_uri (screen, uri->str, gtk_get_current_event_time (), &error);
}

if (!result)
{
xfce_dialog_show_error (parent, error,
_("Failed to open web browser for online documentation"));
g_error_free (error);
}
}

关于c - xfce 中 gnome_url_show() 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16991547/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com