## 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 `next` branch -- 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](https://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](https://github.com/kimlimjustin/xplorer/releases).

| Platform | Format |
|---|---|
| Windows | `.msi` / `.exe` |
| macOS | `.dmg` |
| Linux | `.deb` / `.AppImage` |

## Getting Started (Development)

### Prerequisites

- **Node.js** 20+
- **pnpm** 10+
- **Rust** (latest stable via [rustup](https://rustup.rs))

### Setup

```bash
git clone https://github.com/kimlimjustin/xplorer.git -b next
cd xplorer
pnpm install
pnpm dev:app
```

This starts the React frontend and Tauri backend. The app window will open automatically.

> To run the full stack including the [marketplace web server](https://xplorer.space), use `pnpm dev` (requires local PostgreSQL via `pnpm run marketplace:db`).

### Build and Test

```bash
pnpm build              # Production build
pnpm test               # Frontend unit tests (Vitest)
pnpm run test:tauri      # Rust backend tests
```

## Architecture

```
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](CONTRIBUTING.md) for setup and guidelines.

- **Bug reports** -- [GitHub Issues](https://github.com/kimlimjustin/xplorer/issues)
- **Feature requests** -- [Discussions](https://github.com/kimlimjustin/xplorer/discussions)

## License

[AGPL-3.0](LICENSE)

---

## File: api/updater/README.md

## This is Xplorer's automatic updater API.

Nothing much here, just an [API](https://updater.xplorer.space) to check if there is an update available and to download it.
Go back to the [Xplorer website](https://xplorer.space) 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
kimlimjustin@gmail.com.
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][homepage],
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](https://github.com/mozilla/diversity).

[homepage]: https://www.contributor-covenant.org

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](https://github.com/kimlimjustin/xplorer/issues). If you find an issue you would like to fix, [open a pull request](#first-pull-request). Issues tagged as [good first issue](https://github.com/kimlimjustin/xplorer/labels/good%20first%20issue) 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](https://github.com/kimlimjustin/xplorer/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](https://github.com/kimlimjustin/xplorer) 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](https://github.com/kimlimjustin/xplorer/issues), 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](https://github.com/kimlimjustin/xplorer/discussions) and [GitHub Issues](https://github.com/kimlimjustin/xplorer) to track ideas from users. Suggest a new feature [here](https://github.com/kimlimjustin/xplorer/discussions/new)!
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](https://tauri.studio/en/docs/getting-started/intro#setting-up-your-environment)
-   [Node JS](https://nodejs.org/en/)
-   [Git](https://git-scm.com/)
-   [yarn](https://yarnpkg.com/)
-   Code Editor, we recommend you to use [VS Code](https://code.visualstudio.com/)

### Installation

1. After cloning the repository, run `yarn` in the root of the repository and run `yarn` in the `docs` folder (if you want to working on Xplorer Docs).
2. To start Xplorer locally, run `yarn dev`.

    To start a local development server serving the Docusaurus docs, go into the `docs` directory and run `yarn start`

### Gitpod for Xplorer's development {#gitpod-env}

The easiest way to run Xplorer in Gitpod is to use the [Gitpod](https://gitpod.io/) 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 user
-   `fix`: bug fix for the user
-   `docs`: changes to the documentation
-   `style`: formatting, missing semi-colons, etc.
-   `refactor`: refactoring production code, eg. renaming a variable
-   `test`: 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](https://docusaurus.io/), and its code is located at [`docs`](https://github.com/kimlimjustin/xplorer/tree/master/docs) folder.

### Prerequisite

-   [node js](https://nodejs.org/en/)
-   [git](https://git-scm.com/downloads)
-   [yarn](https://yarnpkg.com/getting-started/install#about-global-installs)
-   Code Editor, we recommend you to use [VS Code](https://code.visualstudio.com/)

### 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](#gitpod-env) for the guide on how to use Gitpod.

### Local development

1. Run the `yarn start` command in the `docs` folder.
2. Edit some markdown texts in the `docs` folder 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](https://github.com/kimlimjustin/xplorer/labels/good%20first%20issue) 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](#feat) and others will code it!

If you intend to fix a bug, please discuss it through [Issues](#issues) before submitting a pull request.

If you intend to add a new feature, please discuss it through [GitHub Discussions](#feat) 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](#commit-msg).

1. Fork [the repository](https://github.com/kimlimjustin/xplorer) and create your branch from `master`.
2. Make changes and ensure your commit message is understandable.
3. Open a [PR](https://github.com/kimlimjustin/xplorer/pulls) and ensure to describe your pull request clearly.

## Working on Xplorer resources

### Locales

We host our locales on the [crowdin](https://crwd.in/xplorer). To translate it, please follow these steps:

-   Sign up on [Crowdin](https://crowdin.com) and Join our project [here](https://crwd.in/xplorer).
-   Make sure your locale exists there, if it does not exist, leave a comment in [this discussion](https://github.com/kimlimjustin/xplorer/discussions/30) 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

1. `src/Locales` files
2. `docs/` 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](https://github.com/kimlimjustin/xplorer/discussions/30) 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](/docs/community/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](https://github.com/kimlimjustin/xplorer/issues/new).

## GitHub Discussions

GitHub Discussions is used for multiple purposes, such as:

1. Asking questions
2. Making feature requests and sharing ideas
3. Chat on Xplorer
4. Show and tell: Making custom themes/plug-ins for Xplorer and showing them there!

### Feature Request

We use [GitHub Discussions](https://github.com/kimlimjustin/xplorer/discussion) and [GitHub Issues](https://github.com/kimlimjustin/xplorer/issues) to track ideas from users. Suggest a new feature [here](https://github.com/kimlimjustin/xplorer/discussions/new)!
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](https://github.com/kimlimjustin/xplorer/discussions) or [Discord Channel](https://discord.gg/kK7rwxPt).

:::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](https://dev.to/t/xplorer).

---

## 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](https://nodejs.org/en/) installed, then install yeoman and Xplorer Extension Generator by running following command:

```bash
npm i yo generator-xplorer-extensions
```

The generator scaffolds a new extension project ready for development. Run the generator and fill out a few fields to get started.

```bash
yo xplorer-extensions
```



## Start the development process

You can start the development process by running the following command:

```bash
npm start
```

You 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:

```json
"<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:

1. `--sidebar-transparency`, the transparency of the sidebar, in percentage
2. `--workspace-transparency`, the transparency of the workspace, in percentage
3. `--topbar-transparency`, the transparency of the topbar, in percentage

:::

#### Examples

Examples of theme extensions are found in the [`example/themes` on GitHub repository](https://github.com/kimlimjustin/xplorer/tree/master/example/themes).

## Packaging your extension

When you're ready to package your extension, you can run the following command:

```bash
npm run build
```

This command will package and build your extensions into Xplorer reserved `.xtension` file format.



## Install the packaged extension

```bash
npm run xplorer:install
```

---

## File: 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](/docs/Extensions/create).



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:

```bash
xplorer extensions theme install 
```

#### Example

##### [Shades of Purple](https://github.com/kimlimjustin/xplorer/tree/master/example/themes/shades%20of%20purple)

Run following command to install [Shades of Purple](https://github.com/kimlimjustin/xplorer/tree/master/example/themes/shades%20of%20purple) theme:

```bash
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](https://github.com/kimlimjustin/xplorer/tree/master/example/themes/shades%20of%20purple) theme:

```bash
xplorer extensions theme install https://raw.githubusercontent.com/kimlimjustin/xplorer/master/example/themes/winter/dist/themes.xtension
```

## Uninstalling a theme

To uninstall a theme, you can run following command:

```bash
xplorer extensions uninstall 
```

## Official Themes

There are currently 2 official themes:

-   [Shades of Purple](https://github.com/kimlimjustin/xplorer/tree/master/example/themes/shades%20of%20purple)
-   [Winter](https://github.com/kimlimjustin/xplorer/tree/master/example/themes/winter)

## 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](https://github.com/kimlimjustin/xplorer/discussions/new?category=show-and-tell).

---

## File: docs/docs/guides/cli.md

# Launch Xplorer from Terminal

## Commands

Xplorer CLI:

```bash
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:

```bash
xplorer extensions install 
```

#### Uninstall

Uninstall an installed extension. Command:

```bash
xplorer extensions uninstall <extension identifier>
```

#### Theme

##### Build

Package and build theme into `themes.xtension` file to distribute. Command:

```bash
xplorer extensions theme build
```

##### Install

Install an extension from `xtension` file type.

```
xplorer extensions theme install
```

---

## File: 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](https://github.com/Byron/trash-rs) Xplorer relies to does not support it (see [this issue](https://github.com/Byron/trash-rs/issues/8) 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:

1. Delete it into `Trash` and right-clicking it and click the `Permanent Delete` option
2. Select the file and press `Shift + Del` as a shortcut

## Search files

Xplorer uses [`glob patterns`](<https://en.wikipedia.org/wiki/Glob_(programming)>) to search matched files. [Learn about Glob pattern syntax](<https://en.wikipedia.org/wiki/Glob_(programming)>). 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.