Cinder - File Explorer
As a video content creator, I’ve been dealing with terabytes of video files for years. Using the Windows file explorer recently have been a very painful experience. Like a lot of users I observed very long loading times even for the simplest taks, and this despite my high speed drives. Searching for files using the file explorer was also nearly useless comparing to software like Everything.
The Technology Behind Cinder
Tauri
I chose Tauri, a toolkit for building lightweight desktop applications using web technologies, as the backbone for Cinder. Tauri appealed to me because it’s secure, uses a minimal amount of system resources, and integrates seamlessly with the underlying operating system. This choice allowed me to leverage my web development skills while ensuring that Cinder remained light and fast.
Rust
For the core logic and performance-critical aspects of the app, I utilized Rust. Rust’s emphasis on safety and performance made it an ideal choice. It helped in managing system resources more efficiently and provided the reliability needed for a file management tool, ensuring that operations such as file copying, moving, and deleting were handled swiftly and safely.
React
To build a dynamic and responsive user interface, I used React. React’s component-based architecture made it straightforward to implement a modern UI and ensure a smooth user experience. The reusability of components also facilitated a cleaner and more maintainable codebase.
Features
The current features were implemented:
- Disk Listing
- Grid | List layouts
- File Listing
- Folder navigation
- Path navigation
- Tabs that could be dragged in/out to manage windows
- Multi-window
- Error handling
The fix that changed everything
It was discovered that the cause for the massive loading issues we had been dealing for the past years was the automatic folder type discovery feature of the Windows Explorer. This feature let Windows analyze a folder to determine the view it should use to display files. For example, if a folder contains images or videos, the view will be set to a grid with thumbnails. This feature runs every single time that you open a folder. If a folder contains a lot of files, or heavy files, Windows will need to check each of them one by one in order to determine the view, while blocking the main thread. Luckily, it is possible for us to disable this feature, using the following registry edit :
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell]
"FolderType"="NotSpecified"
Obviously, you will have to manually set the view for each folder that you open, but once you do Windows will remember your setting. This is very ironic since they can do this but not cache the automatic view setting.
Conclusion
Building Cinder has been a fulfilling journey. Even though it went down in my priority list after I discovered the File Explorer fix, it was a good experience to see how pretty and performant, webview based apps can be. If I had to work more on this project, I would probably add those features :
- Support for SMP and SFTP servers
- File Indexing for instant search results
- Customizable context menus