File: README.md
Why Xplorer?
Most file managers haven't changed in decades. Xplorer is a ground-up rethink: a Tauri 2 desktop app with a Rust backend for speed and a React frontend for flexibility. It ships with AI chat, Git integration, an extension marketplace, and themeable UI out of the box.
Note: This is the
nextbranch -- a full rewrite using Tauri 2, React 18, and a new extension system. Not yet production-ready, but actively developed. Feedback welcome!
Features
| File Management
- Cross-platform: Windows, macOS, Linux
- 6 view modes: Grid, List, Details, Column, Gallery, Tree
- Hardware-accelerated file operations (memory-mapped I/O, parallel chunked transfers)
- Archive support: ZIP, TAR, GZ, BZ2, XZ with password protection
- Multi-tab browsing, split panes, session persistence | AI Integration
- Connect any AI provider through API (OpenAI, Anthropic, Google, DeepSeek, Mistral, Ollama)
- Natural language, fuzzy, and semantic file search
- AI chat with full file context awareness
- Agentic file operations and smart categorization |
| --- | --- |
| Developer Tools - Full Git integration: branches, staging, commits, diffs, blame, stash
- Integrated terminal with SSH remote browsing
- Rich file preview: code (syntax highlighted), Markdown, PDF, Word, spreadsheets, audio, video
- Command palette and configurable keyboard shortcuts | Extensibility
- Extension marketplace at xplorer.space
- Git UI, SSH manager, Docker, Google Drive, code editor, image editor, file hasher, and more
- Themes: Tokyo Night, Dracula, Nord, Cyberpunk, Ocean Deep
- Sandboxed runtime with public SDK โ build and publish your own |
Use Cases
For Developers
Split-pane file browsing with integrated Git status, terminal, and code editor. Stage commits, view diffs, and manage branches without leaving the file manager.
For Researchers and Students
AI chat that understands your files. Ask questions about documents, get summaries, and search by meaning โ not just filename.
For Power Users
Command palette, vim keybindings, custom keyboard shortcuts, and per-folder view settings. Six view modes, smart search with filters, and bulk file operations.
Screenshots
Installation
Download the latest release for your platform from the Releases page.
| Platform | Format |
|---|---|
| Windows | .msi / .exe |
| macOS | .dmg |
| Linux | .deb / .AppImage |
Getting Started (Development)
Prerequisites
- Node.js 20+
- pnpm 10+
- Rust (latest stable via rustup)
Setup
git clone https://github.com/kimlimjustin/xplorer.git -b next
cd xplorer
pnpm install
pnpm dev:appThis starts the React frontend and Tauri backend. The app window will open automatically.
To run the full stack including the marketplace web server, use
pnpm dev(requires local PostgreSQL viapnpm run marketplace:db).
Build and Test
pnpm build # Production build
pnpm test # Frontend unit tests (Vitest)
pnpm run test:tauri # Rust backend testsArchitecture
xplorer/
โโโ apps/
โ โโโ client/ # React 18 + TypeScript + Vite frontend
โ โโโ src-tauri/ # Rust backend (Tauri 2, Tokio, Rayon)
โ โโโ web/ # Next.js marketplace (Prisma, Stripe)
โโโ packages/
โ โโโ sdk/ # @xplorer/sdk โ internal service layer
โ โโโ extension-sdk/ # @xplorer/extension-sdk โ public extension API
โ โโโ create-extension/ # CLI scaffolder for new extensions
โ โโโ extensions/ # Built-in extension packages
โโโ e2e/ # Playwright end-to-end tests
โโโ infra/ # Docker Compose (PostgreSQL)
โโโ scripts/ # Extension signing utilities| Layer | Technology |
|---|---|
| Desktop framework | Tauri 2 |
| Backend | Rust (Tokio + Rayon) |
| Frontend | React 18 + TypeScript |
| Styling | Tailwind CSS |
| Build tool | Vite |
| AI | Any provider via API (OpenAI, Anthropic, Google, Ollama, etc.) |
Contributing
Contributions are welcome! See CONTRIBUTING.md for setup and guidelines.
- Bug reports -- GitHub Issues
- Feature requests -- Discussions
License
File: api/updater/README.md
This is Xplorer's automatic updater API.
Nothing much here, just an API to check if there is an update available and to download it.
Go back to the Xplorer website for Xplorer's docs.
File: api/README.md
Home for Xplorer API.
/api/updater
An API to check if there is an update available and to download it.
File: docs/docs/Community/CODE_OF_CONDUCT.md
sidebar_label: "Code Of Conduct"
Contributor Covenant Code of Conduct
Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
Our Standards
Examples of behavior that contributes to a positive environment for our
community includes:
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience - Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
- The use of sexualized language or imagery, and sexual attention or
advances of any kind - Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email
address, without their explicit permission - Other conduct which could reasonably be considered inappropriate in a
professional setting
Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
Scope
This Code of Conduct applies within all community spaces and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[email protected].
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
1. Correction
Community Impact: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
Consequence: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
2. Warning
Community Impact: A violation through a single incident or series
of actions.
Consequence: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
3. Temporary Ban
Community Impact: A serious violation of community standards, including
sustained inappropriate behavior.
Consequence: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
4. Permanent Ban
Community Impact: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
Consequence: A permanent ban from any sort of public interaction within
the community.
Attribution
This Code of Conduct is adapted from the Contributor Covenant,
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by Mozilla's code of conduct
enforcement ladder.
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
File: docs/docs/Community/Contributing.md
sidebar_position: 2
Contribute
๐๐ First off, thanks for taking the time to contribute! ๐๐
Xplorer is currently under heavy development. We are welcoming contributors to collaborate on Xplorer.
Get involved
There are many ways to contribute to Xplorer, and many of them do not involve writing any code. Here are few ideas to get started:
- Start using Xplorer! Go through the Tutorial guides. Does anything work as expected? If not, we're always looking for improvements. Let us know by opening an issue.
- Look through the Xplorer issues. If you find an issue you would like to fix, open a pull request. Issues tagged as good first issue are a good place to get started.
- Help us make the docs better. File an issue if you find anything that is confusing, any grammatical error, or can be improved.
- Take a look at GitHub Discussions and give your opinion into a discussion or consider opening a pull request if you see something you want to work on.
Contributions are very welcome!
Our development process
Xplorer uses GitHub as its source of truth. The core team will work directly there. All changes will be public from the beginning.
Reporting new issues/bugs. {#issues}
When opening a new issue, always make sure to fill out the issue template. We use GitHub issues to track public bugs. Please ensure your description is clear and has sufficient instructions to be able to reproduce the issue.
- One issue, one bug: Please report a single bug per issue.
- Provide reproduction steps: List all the steps necessary to reproduce the issue. The person reading your bug report should be able to follow these steps to reproduce your issue with minimal effort.
Feature Request {#feat}
We use GitHub Discussions and GitHub Issues to track ideas from users. Suggest a new feature here!
Great Feature Requests tend to have:
- A quick idea summary.
- What & why you wanted to add the specific feature.
- Additional references like images, links of resources about the feature, etc.
Working on Xplorer code
Prerequisite
- Tauri environment
- Node JS
- Git
- yarn
- Code Editor, we recommend you to use VS Code
Installation
After cloning the repository, run
yarnin the root of the repository and runyarnin thedocsfolder (if you want to working on Xplorer Docs).To start Xplorer locally, run
yarn dev.To start a local development server serving the Docusaurus docs, go into the
docsdirectory and runyarn start
Gitpod for Xplorer's development {#gitpod-env}
The easiest way to run Xplorer in Gitpod is to use the Gitpod service, all what you need to do is to click the button below and log in with your GitHub account. Afterwards, you will see a VS Code-like environment where you can start developing and pushing your changes. Please note that you may have to wait up to minutes to get Xplorer running on the poped up VNC tab.
[](https://gitpod.io/#/https://github.com/kimlimjustin/xplorer)
Semantic commit messages {#commit-msg}
See how a minor change to your commit message style can make you a better programmer.
Format: <type>(<scope>): <subject>
<scope> is optional
Example
feat: allow overriding of webpack config
^--^ ^------------^
| |
| +-> Summary in present tense.
|
+-------> Type: chore, docs, feat, fix, refactor, style, or test.the various types of commits:
feat: new feature for the userfix: bug fix for the userdocs: changes to the documentationstyle: formatting, missing semi-colons, etc.refactor: refactoring production code, eg. renaming a variabletest: adding missing tests, refactoring tests.chore: updating grunt tasks etc
Use lower case not the upper case!
Working on Xplorer docs
Xplorer documentation website is built using Docusaurus 2, and its code is located at docs folder.
Prerequisite
Installation
After cloning the repository, run yarn in the docs folder (you can go into the docs folder by running the cd docs command).
If you want to use Gitpod, click here for the guide on how to use Gitpod.
Local development
- Run the
yarn startcommand in thedocsfolder. - Edit some markdown texts in the
docsfolder and the website will be hot reloaded.
Pull requests
Your first pull request. {#first-pull-request}
So you have decided to contribute code back to upstream by opening a pull request. You've invested a good chunk of time, and we appreciate it. We will do our best to work with you and get the PR looked at.
Working on your first Pull Request? You can learn how from this free video series:
How to Contribute to an Open Source Project on GitHub
We have a list of beginner-friendly issues to help you get your feet wet in the Xplorer codebase and familiar with our contribution process. This is a great place to get started.
Proposing a change
If you would like to request a new feature or enhancement but are not yet thinking about opening a pull request, you can also open a discussion and others will code it!
If you intend to fix a bug, please discuss it through Issues before submitting a pull request.
If you intend to add a new feature, please discuss it through GitHub Discussions to avoid multiple people working on the same feature request.
Sending a Pull Request
make sure the PR does only one thing, otherwise please split it. It is recommended to follow this commit message style.
- Fork the repository and create your branch from
master. - Make changes and ensure your commit message is understandable.
- Open a PR and ensure to describe your pull request clearly.
Working on Xplorer resources
Locales
We host our locales on the crowdin. To translate it, please follow these steps:
- Sign up on Crowdin and Join our project here.
- Make sure your locale exists there, if it does not exist, leave a comment in this discussion and I'll add the language option :)
- Get familiar with the Crowdin translation UI, as you will need to use it to translate JSON and Markdown files
- Translate the content!
Priority Files to translate on Crowdin
src/Localesfilesdocs/files
Production
Once the files on src/Locales have been translated for more than 80%, we will add it into the Xplorer app, and for the docs, we will add it into production once the translation looks good!
Please comment here if you have any questions!
File Library
The json library of file types and thumbnail are found under lib folder and the icons are found under src/Icons folder. You may add file types and icons for file extensions you want to use and submit a PR.
File: docs/docs/Community/support.md
sidebar_position: 1
Support
Xplorer is an open-source project which you can freely join and seek support ๐.
On this page, we've listed some communities/forums you can participate in to seek support or help others.
Before participating in Xplorer's communities, please read our Code Of Conduct.
Issues
We use GitHub Issues to track public bugs. Please ensure your description is clear and has sufficient instructions to be able to reproduce the issue. Report a bug by opening a new issue here.
GitHub Discussions
GitHub Discussions is used for multiple purposes, such as:
- Asking questions
- Making feature requests and sharing ideas
- Chat on Xplorer
- Show and tell: Making custom themes/plug-ins for Xplorer and showing them there!
Feature Request
We use GitHub Discussions and GitHub Issues to track ideas from users. Suggest a new feature here!
Great Feature Requests tend to have:
- A quick idea summary.
- What & why you wanted to add the specific feature.
- Additional context like images, links to resources to implement the feature, etc.
Help
You can ask for help using GitHub Discussion or Discord Channel.
:::note
Remember to choose the discussion category as Q&A so that your question will be published with answers enabled.
:::
News
For the latest news about Xplorer, you can see it through posts on Forem.
File: docs/docs/Extensions/create.mdx
Write your extension (Beta)
Currently extension type that is supported is theme extension. Stay tuned for other extensions!
Get started
In this topic, we'll teach you how to create your first extension for Xplorer. To get started, make sure you have Node.js installed, then install yeoman and Xplorer Extension Generator by running following command:
npm i yo generator-xplorer-extensionsThe generator scaffolds a new extension project ready for development. Run the generator and fill out a few fields to get started.
yo xplorer-extensionsStart the development process
You can start the development process by running the following command:
npm startYou can start edit the extension file and see the changes in Xplorer, it's hot reloaded!
Theme
Your generated theme extension file is under ./themes folder and is a JSON file. The syntax for the theme file is as follows:
"<scope><element query><CSS key>": "<CSS value>"Scopes are: root, windowmanager, tabs, settings, favorites, favorites, grid, contextmenu, prompt, preview and properties. Scopes are used to group the theme.
Element query: basically just like what a CSS query does.
CSS Key is the name of the CSS property you want to change. Please note that snakeCase will be converted into snake-case.
:::tip
There're some CSS variables provided to the theme value that you can make use of are:
--sidebar-transparency, the transparency of the sidebar, in percentage--workspace-transparency, the transparency of the workspace, in percentage--topbar-transparency, the transparency of the topbar, in percentage
:::
Examples
Examples of theme extensions are found in the example/themes on GitHub repository.
Packaging your extension
When you're ready to package your extension, you can run the following command:
npm run buildThis command will package and build your extensions into Xplorer reserved .xtension file format.
Install the packaged extension
npm run xplorer:installFile: docs/docs/Extensions/theme.md
Themes (Beta)
Get Started
The Theme extension is a way to define the look of the Xplorer. Xplorer comes with a few default themes (which are light, dark, light+, and dark+), but you can also create your own, which is a great way to personalize your Xplorer and is documented in this guide.
How do I change between themes?
You can switch between themes by opening settings and on the Preference page, you can see a dropdown menu with the available themes under App Theme section.
Installing a theme
There are 2 ways to install a theme:
Via `.xtension` file
You can download .xtension file from the theme developer and simply double clicking it on Xplorer.
Install from public URL via Xplorer CLI.
You can also install a theme from a public URL via Xplorer CLI by running following command:
xplorer extensions theme installExample
[Shades of Purple](https://github.com/kimlimjustin/xplorer/tree/master/example/themes/shades%20of%20purple)
Run following command to install Shades of Purple theme:
xplorer extensions theme install https://raw.githubusercontent.com/kimlimjustin/xplorer/master/example/themes/shades%20of%20purple/dist/themes.xtension[Winter](https://github.com/kimlimjustin/xplorer/tree/master/example/themes/winter)
Run following command to install Winter theme:
xplorer extensions theme install https://raw.githubusercontent.com/kimlimjustin/xplorer/master/example/themes/winter/dist/themes.xtensionUninstalling a theme
To uninstall a theme, you can run following command:
xplorer extensions uninstallOfficial Themes
There are currently 2 official themes:
Show yours! ๐
Our community is always looking for new themes. If you have a theme that you think would be a good fit, please tell it to us.
File: docs/docs/guides/cli.md
Launch Xplorer from Terminal
Commands
Xplorer CLI:
xplorer <options> [dir1] [dir2] [dir3]Xplorer will open dir, dir2, dir3 as tabs on Xplorer. If there's no directory(dir) passed into the command, Xplorer will start at the Home page.
Options:
| Command | Alias | Description |
|---|---|---|
--reveal |
-r |
Open the containing folder and select the file |
--theme |
t |
Use custom theme (for developing theme purpose) |
--xtension |
x |
Install extension from xtension file type |
Subcommands
Extensions
Install
Install an extension from xtension file type. Command:
xplorer extensions installUninstall
Uninstall an installed extension. Command:
xplorer extensions uninstall <extension identifier>Theme
Build
Package and build theme into themes.xtension file to distribute. Command:
xplorer extensions theme buildInstall
Install an extension from xtension file type.
xplorer extensions theme installFile: docs/docs/guides/operation.md
Operations
Copy files
You can copy files by right-clicking it and click the Copy option or select the file then press Ctrl + C as a shortcut and paste it by clicking the Paste option or press Ctrl + V on the destination folder.
:::info
For current implementation, Xplorer write down what to copy locally (not copying to clipboard).
TODO: implement copy to clipboard
:::
Copy Location Path
You can copy a file/folder location path into your clipboard by right-clicking it and click Copy Location Path or select the file then press Alt + Shift + C as a shortcut.
Cut files
You can cut files by right-clicking it and click the Cut option or select the file then press Ctrl + X as a shortcut and paste it by clicking the Paste option or press Ctrl + V on the destination folder.
:::info
For current implementation, Xplorer write down what to cut locally (not copying to clipboard).
:::
Delete files
You can delete files by right-clicking it and click the Delete option or select the file then press Del as a shortcut.
Trashed files
The trashed file can be accessed at xplorer://Trash or your system trash folder.
:::danger Open Issue
Please note that Trash folder cannot be accessed on macos via Xplorer since the trash crate Xplorer relies to does not support it (see this issue for more details).
Any contributions to either the trash crate or Xplorer itself for this topic are welcome.
:::
Restore files
You can restore files by opening the xplorer://Trash and right-clicking it and click the Restore option
Permanently delete
:::danger
A permanently deleted file cannot be restored. Please check again before permanently delete any files.
:::
You can permanently delete a file by:
- Delete it into
Trashand right-clicking it and click thePermanent Deleteoption - Select the file and press
Shift + Delas a shortcut
Search files
Xplorer uses glob patterns to search matched files. Learn about Glob pattern syntax. To get started, press Ctrl + F and type inside the search box.
Instant search
You can instant search a file/dir by typing the starting characters of the file/dir name and Xplorer will select the file for you. Some rules of instant search:
- Any english diacritic is removed
- The interval for instant search is 750ms. After 750ms, the search query will be reseted.
- Typing the same character will make Xplorer to find the next matches.
New
:::caution Be careful with new file/folder name
Xplorer treats / on file name/folder as subdir/subfile
:::
New file
You can create a new file by right-clicking the workspace, expand the New option and select the file option, or press Alt + N as a shortcut.
New folder
You can create a new folder by right-clicking the workspace, expand the New option and select the folder option, or press Shift + N as a shortcut.
Open file
You can open a file on the default application by double-clicking it or select the file then press Enter as a shortcut.
Open in Terminal
This is a built-in function by Xplorer. You can open a folder on Terminal by right-clicking it and click the Open in terminal option or select the folder then press Alt + T as a shortcut.
Open in VSCode
This is a built-in function by Xplorer. You can open a file/folder on VSCode by right-clicking it and click the Open in vscode option or select the file then press Ctrl + Enter as a shortcut. You won't able to do this if you don't have VSCode installed.
Pin to Sidebar
You can pin a file/folder into the sidebar by right-clicking it and click Pin to Sidebar or select the file then press Alt + P as a shortcut.
Preview file
You can preview a file directly from Xplorer by right-clicking it and click the Preview option or select the file then press Ctrl+O.
:::info
Files available to preview for now:
- Markdown files
- Image files
- Text files
- Video files
- Pdfs
- Almost all programming language with syntax highlighting
:::
Properties
You can view properties of a file/folder by right-clicking it and click Properties or select the file then press Ctrl + P as a shortcut.
Available properties for now (will be improved at the next version):
- Size
- File Path
- Created At
- Accessed At
- Modified At
- Is Hidden
Rename file/folder
You can rename a file/folder by right-clicking it and click the Rename option or select the file then press F2 as a shortcut. It will prompt a dialog, enter the new name and the file/folder will be renamed.