FSearch is a fast file search utility, inspired by Everything Search Engine. It's written in C and based on GTK3.
- For bug reports and feature requests please use the issue tracker: https://github.com/cboxdoerfer/fsearch/issues
- For discussions and questions about FSearch use the discussion forum: https://github.com/cboxdoerfer/fsearch/discussions
- For everything else related to FSearch you can talk to me on Matrix: https://matrix.to/#/#fsearch:matrix.org
- Instant (as you type) results
- Advanced search syntax
- Wildcard support
- RegEx support
- Filter support (only search for files, folders or everything)
- Include and exclude specific folders to be indexed
- Ability to exclude certain files/folders from index using wildcard expressions
- Fast sort by filename, path, size or modification time
- Customizable interface (e.g., switch between traditional UI with menubar and client-side decorations)
FSearch Windows版本,FSearch 现已提供 完整的 Windows 支持,完全兼容 Windows 10/11 系统!
- 原生 Windows 应用程序 - 无需仿真环境,直接在 Windows 上运行
- 中文完美支持 - 自动转换中文文件名编码(UTF-8、GBK、CP936)
- C 盘扫描 - 安全扫描整个 C 盘,包括系统目录
- 权限容错 - 优雅处理 Windows 目录权限限制
- 多路径格式 - 支持
C:\路径、\\服务器\共享、/路径/文件等格式
- 从 GitHub 发布页面 下载最新 Windows 版本
- 解压到任意目录
- 运行
fsearch.exe
详细的 Windows 编译说明请参考 README_WINDOWS.md
- 开发环境:MSYS2 + MinGW-w64
- 构建系统:Meson + Ninja
- GUI 框架:GTK3 配合 Windows 兼容层
- 编码支持:UTF-8、GBK、CP936 编码自动转换
- 系统集成:原生 Windows 路径和权限处理
包含全面的测试:
- 中文编码转换测试
- Windows 路径处理测试
- 数据库扫描测试
- 性能基准测试
- GUI 功能测试
运行测试:
cd test
./run_all_tests.shQ:扫描 C 盘时出现权限错误怎么办? A:这是正常现象,程序会跳过无法访问的系统目录,继续扫描其他内容。
Q:中文文件名显示乱码怎么办? A:Windows 版本已自动处理中文编码,如仍有问题请检查系统区域设置。
Q:程序启动很慢怎么办? A:首次扫描需要建立索引,后续会很快。可以排除不需要的大目录以提升性能。
详细的 Windows 文档和故障排除,请参阅 README_WINDOWS.md。
FSearch now has full Windows support with native compatibility for Windows 10/11!
- Native Windows Application - Runs natively on Windows without emulation
- Chinese Perfect Support - Automatic encoding conversion for Chinese filenames
- C Drive Scanning - Securely scan entire C drive including system directories
- Permission Tolerance - Gracefully handles Windows directory permissions
- Multiple Path Formats - Supports
C:\path,\\server\share,/path/to/fileformats
- Download the latest Windows version from GitHub Releases
- Extract to any directory
- Run
fsearch.exe
For detailed Windows build instructions, see README_WINDOWS.md
- MSYS2 Environment Setup - Complete guide for Windows development environment
- Dependency Management - Automatic installation of GTK3, GLib, PCRE2, ICU libraries
- Build Instructions - Step-by-step compilation guide
- Development Environment: MSYS2 + MinGW-w64
- Build System: Meson + Ninja
- GUI Framework: GTK3 with Windows compatibility layer
- Encoding Support: Automatic conversion between UTF-8, GBK, CP936 encodings
- System Integration: Native Windows path and permission handling
Comprehensive test suite included:
- Chinese encoding conversion tests
- Windows path handling tests
- Database scanning tests
- Performance benchmarks
- GUI functionality tests
Run tests with:
cd test
./run_all_tests.shFor detailed Windows documentation and troubleshooting, see README_WINDOWS.md.
- GTK 3.18
- GLib 2.50
- glibc 2.19 or musl 1.1.15 (other C standard libraries might work too, those are just the ones I verified)
- PCRE2 (libpcre2)
- ICU 3.8
It is recommended to install FSearch from one of the Stable packages, unless you know what you're doing.
The Development packages are primarily intended for testing and adventurous users.
| Platform | Stable/Development | Installation Method | Notes |
|---|---|---|---|
| Windows 10/11 | Stable & Development | GitHub Releases | Native Windows executable with full features |
| Windows | Development | Build from Source | For developers and advanced users |
Windows Features:
- ✅ Native Windows application
- ✅ Chinese filename support (UTF-8, GBK, CP936)
- ✅ C drive scanning with permission handling
- ✅ No installation required (portable version)
| Distribution | Stable | Development |
|---|---|---|
| Ubuntu | PPA Stable | PPA Daily |
| Arch Linux | AUR | AUR (git) |
| Fedora/RHEL/CentOS | COPR Stable | COPR Nightly |
| Debian | OpenBuildService | |
| openSUSE | OpenBuildService | |
| Flatpak (limited features) | Flathub | |
| Solus* | Solus Repository | |
| FreeBSD* | FreshPorts |
(*) Not maintained by me
https://github.com/cboxdoerfer/fsearch/wiki/Roadmap
https://github.com/cboxdoerfer/fsearch/wiki/Build-instructions
The localization of FSearch is managed with Weblate.
https://hosted.weblate.org/projects/fsearch/
If you want to contribute translations please submit them there, instead of opening pull requests on GitHub. This also includes any suggestions to the English texts — English isn't my first language, so there are likely errors and unusual wordings.
Instructions can be found here: https://docs.weblate.org/en/latest/user/basic.html
And of course: Thank you for taking the time to translate FSearch!
- Sorting lots of results by Type can be very slow, since gathering that information is expensive, and the data isn't indexed. This also means that when the view is sorted by Type, searching will reset the sort order to Name.
- Using the Move to Trash option doesn't update the database index, so trashed files/folders show up in the result list as if nothing happened to them.
Performance. On Windows I really like to use Everything Search Engine. It provides instant results as you type for all your files and lots of useful features (regex, filters, bookmarks, ...). On Linux I couldn't find anything that's even remotely as fast and powerful.
Before I started working on FSearch, I took a look at existing solutions. I tried MATE Search Tool (formerly GNOME Search Tool), Recoll, Krusader (locate based search), SpaceFM File Search, Nautilus, ANGRYsearch and Catfish, to find out whether it makes sense to improve those. However, they're not exactly what I was looking for:
- standalone application (not part of a file manager)
- written in a language with C like performance
- no dependencies to any specific desktop environment
- Qt5 or GTK3 based
- small memory usage (both hard drive and RAM)
- target audience: advanced users
I highly recommend fzf or the obvious tools: find and (m)locate
I like both of them, and my long term goal is to provide console, GTK3 and Qt5 interfaces, or at least make it easy for others to build those. However, for the time being it's only GTK3 because I like C more than C++, and I'm more familiar with GTK development.
Email: christian.boxdoerfer[AT]posteo.de