簡體   English   中英

xfce中gnome_url_show()的替代方法

[英]Alternative to gnome_url_show() in xfce

我想知道xfce是否具有類似於gnome的gnome_url_show()的功能。

如果不是這種情況,我想知道打開網址的另一種便捷方法是什么? 例如,如果您向按鈕添加了信號處理程序,則單擊該按鈕會打開一個網站。

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這可能是可取的,因為它會退回到gtk_show_uri()沒有安裝exo。 盡管由於xfce系統上缺少gvfs,gtk_show_uri()可能無法工作(畢竟用戶使用的是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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM