我想知道xfce是否有一个类似于gnome的gnome-url-show()的函数。
如果不是这种情况,我想知道什么是另一种方便的方式打开一个网址?例如,如果您将一个信号处理程序添加到一个按钮,单击该按钮将打开一个网站。
gtk有这样的功能吗?我知道它至少内置了一些东西,因为当你创建一个包含url的标签时,你可以点击它来打开url。我查阅了各种文档,但还没有找到解决方案。
gtk_show_uri()不能在xfce上工作,因为它需要gvfs,而我没有使用gnome。
最佳答案
感谢xfce4天气插件源代码,我发现这是一个实用的解决方案:
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/