我想知道是否存在 API 以及在 ubuntu 中查找书签文件名和路径的命令。
我的应用程序写入书签文件以添加一些快捷方式。在 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。
提前致谢。-桑迪普