1

ubuntuでブックマークのファイル名とパスを見つけるためのAPIとコマンドが存在するかどうかを知りたいです。

私のアプリケーションはブックマーク ファイルに書き込み、いくつかのショートカットを追加します。ubuntu 11.X より前は、ブックマーク ファイルは「/home/myname/.gtk-bookmarks」にありましたが、ubuntu 13.0X 以降は「/home/myname/.config/gtk-3.0/bookmarks」内にあります。すべてのバージョンの ubuntu でアプリケーションをサポートする必要がある場合、ブックマーク ファイル名/パスのパスをハード コーディングすることに頼ってはなりません。ブックマークファイルのパスと名前を見つけるための API とコマンドはありますか? (スクリプトからも呼び出したいので、コマンドも必要です)。

Nautilus は、ハードコーディングされたパスにも依存しています。

static GFile *
nautilus_bookmark_list_get_legacy_file (void)
{
char *filename;
GFile *file;

filename = g_build_filename (g_get_home_dir (),
                 ".gtk-bookmarks",
                 NULL);
file = g_file_new_for_path (filename);

g_free (filename);

return file;
}

static GFile *
nautilus_bookmark_list_get_file (void)
{
char *filename;
GFile *file;

filename = g_build_filename (g_get_user_config_dir (),
                 "gtk-3.0",
                 "bookmarks",
                 NULL);
file = g_file_new_for_path (filename);

g_free (filename);

return file;
}

static void
load_io_thread (GSimpleAsyncResult *result,
    GObject *object,
    GCancellable *cancellable)
{
GFile *file;
gchar *contents;
GError *error = NULL;

file = nautilus_bookmark_list_get_file ();
if (!g_file_query_exists (file, NULL)) {
    file = nautilus_bookmark_list_get_legacy_file ();
}

g_file_load_contents (file, NULL, &contents, NULL, NULL, &error);

if (error != NULL) {
    if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) {
        g_warning ("Could not load bookmark file: %s\n", error->message);
    }
    g_error_free (error);
} else {
    g_simple_async_result_set_op_res_gpointer (result, contents, g_free);
}
}

Nautilus は最初に nautilus_bookmark_list_get_file を呼び出し、失敗すると nautilus_bookmark_list_get_legacy_file を呼び出すことがわかります。

前もって感謝します。-サンドディープ

4

0 に答える 0