Gtk 打开默认文件管理器文件夹
Gtk open default file manager folder
我需要用gtk和C打开用户系统的默认文件管理器(不是对话框,而是系统使用的文件管理器)
意思是,当用户选择目录时,文件管理器将打开,而不是对话框。有什么办法可以做到这一点?
您应该启动 xdg-open,例如使用普通的 fork & exec.
例如这将在 /
:
打开默认文件管理器
if(fork() == 0) {
system("xdg-open /");
}
你应该使用 GIO:
GError *error = NULL;
if (!g_app_info_launch_default_for_uri ("file:///", NULL, &error)) {
g_warning ("Failed to open uri: %s", error->message);
}
请注意,这几乎肯定需要一个 运行 GLib 主循环(但如果您使用的是 GTK+,那么您已经有了)。
此外,不能 100% 保证文件管理器会打开,但在任何设置合理的系统上,它都会成为目录 uris 的默认处理程序。
在普通的 GNOME 系统上@keltars xdg-open 方法 forks,运行一个 shell 脚本启动一个二进制文件,然后运行相同的 g_app_info_launch_default_for_uri()
函数。
我需要用gtk和C打开用户系统的默认文件管理器(不是对话框,而是系统使用的文件管理器)
意思是,当用户选择目录时,文件管理器将打开,而不是对话框。有什么办法可以做到这一点?
您应该启动 xdg-open,例如使用普通的 fork & exec.
例如这将在 /
:
if(fork() == 0) {
system("xdg-open /");
}
你应该使用 GIO:
GError *error = NULL;
if (!g_app_info_launch_default_for_uri ("file:///", NULL, &error)) {
g_warning ("Failed to open uri: %s", error->message);
}
请注意,这几乎肯定需要一个 运行 GLib 主循环(但如果您使用的是 GTK+,那么您已经有了)。
此外,不能 100% 保证文件管理器会打开,但在任何设置合理的系统上,它都会成为目录 uris 的默认处理程序。
在普通的 GNOME 系统上@keltars xdg-open 方法 forks,运行一个 shell 脚本启动一个二进制文件,然后运行相同的 g_app_info_launch_default_for_uri()
函数。