Oli
deepin
2024-10-29 16:43
Reply Like 0 View the author
这东西似乎不需要DFM专用的参数
--select,现在好像DFM也支持这个用法了
https://bbs.deepin.org.cn/phone/zh/post/140698
你试试select好不好用,如果好用完全可以用select然后推上游,这样不是DDE的用户也能享受了
--select,现在好像DFM也支持这个用法了
https://bbs.deepin.org.cn/phone/zh/post/140698
你试试select好不好用,如果好用完全可以用select然后推上游,这样不是DDE的用户也能享受了
我今天在UOS v20和Deepin v23最新的内测版尝试过了,目前只有dde-file-manager --show-item /path管用,也许官方不准备再做一个重复的--select选项,不过问chatgpt,nautilus和dolphin是支持的。
另外,目前看来,dp官方好像没精力对这种第三方软件进行优化了。也是最近学了一点点点c++,才看得懂c,才想起来去改的。难受着用了快一年了,实在忍不了了。
--select,现在好像DFM也支持这个用法了
https://bbs.deepin.org.cn/phone/zh/post/140698
你试试select好不好用,如果好用完全可以用select然后推上游,这样不是DDE的用户也能享受了
今天有空,去项目页面发了Feature Request:
https://github.com/cboxdoerfer/fsearch/issues/586
Popular Ranking
ChangePopular Events
More
更新20241114:
不需要更改代码,在配置文件里面添加设置即可:
https://bbs.deepin.org/post/281230
==================================================
在使用原版FSearch工具搜索文件时,在搜索到的文件上点击“右键->打开文件夹”,默认的行为是在文件管理器中打开文件/文件夹的上级文件夹,而不是定位到这个文件。
如果你是想通过FSearch定位到这个文件,就像Windows下的Everything一样,那就实现不了了。在默认的情况下,你得先定位到上级文件夹,然后再用文件管理器自带的搜索工具,再搜索一次。
这样太不方便了。
类似这样:
改造:
经过dde-file-manager -h查询,知道,Deepin的文件管理器定位到文件的命令是:
dde-file-manager --show-item /your/path
从github的fsearch项目上面把代码扒下来,查看了一下窗口调用的函数,再结合chatgpt,就有了如下的解决方案:
修改一:
// 修改 fsearch-0.2.3/src/fsearch_window_actions.c // 在 fsearch_window_action_open_generic() 函数后面添加Deepin的文件定位函数 fsearch_window_action_open_de(), // 如果不是deepin桌面环境,仍旧调用 fsearch_window_action_open_generic() 打开目录 void fsearch_window_action_open_de(FsearchApplicationWindow *win, bool open_parent_folder, bool triggered_with_mouse) { const guint selected_rows = fsearch_application_window_get_num_selected(win); if (selected_rows == 0) { return; } GList *paths = NULL; if (open_parent_folder) { fsearch_application_window_selection_for_each(win, (GHFunc)collect_selected_entry_parent_path, &paths); } else { fsearch_application_window_selection_for_each(win, (GHFunc)collect_selected_entry_path, &paths); } // 判断桌面环境是否为深度桌面,UOS v20 环境下$XDG_CURRENT_DESKTOP变量值为Deepin;Deepin v23 环境下变量值为 DDE const char *desktop_env = g_getenv("XDG_CURRENT_DESKTOP"); bool is_deepin = desktop_env && (g_strcmp0(desktop_env, "Deepin") == 0 || g_strcmp0(desktop_env, "DDE") == 0); if (is_deepin) { // 使用 Deepin 文件管理器打开路径 for (GList *l = paths; l != NULL; l = l->next) { char *path = (char *)l->data; g_autofree char *cmd = g_strdup_printf("dde-file-manager --show-item \"%s\"", path); int status = system(cmd); if (status != 0) { // 如果打开失败,可以选择是否要处理错误 fprintf(stderr, "Failed to open path with Deepin file manager: %s\n", path); } else { // 这里可以根据需要进行后续操作 action_after_open(triggered_with_mouse); } } } else { fsearch_window_action_open_generic(win, open_parent_folder, triggered_with_mouse); } g_list_free_full(paths, g_free); }
修改二:
// 修改 fsearch-0.2.3/src/fsearch_window_actions.c // fsearch_window_action_open_folder() 函数,修改为使用fsearch_window_action_open_de()函数打开目录 static void fsearch_window_action_open_folder(GSimpleAction *action, GVariant *variant, gpointer user_data) { FsearchApplicationWindow *self = user_data; fsearch_window_action_open_de(self, false, false); }
修改三:
// 修改 fsearch-0.2.3/src/fsearch_window_actions.h // 在行尾后面添加Deepin的文件定位函数名: void fsearch_window_action_open_de(FsearchApplicationWindow *win, bool open_parent_folder, bool triggered_with_mouse);
编译:
# 安装库: sudo apt install build-essential meson itstool libtool \ pkg-config intltool libicu-dev libpcre2-dev libglib2.0-dev \ libgtk-3-dev libxml2-utilssudo apt install git build-essential \ meson itstool libtool pkg-config intltool libicu-dev libpcre2-dev \ libglib2.0-dev libgtk-3-dev libxml2-utils # 编译: cd fsearch-0.2.3 meson setup builddir --prefix=/opt/apps/io.github.fsearch/files sudo ninja -C builddir install
效果如下: