TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
Keyboard-driven dual-pane file manager for the desktop (Windows, macOS) and the terminal (Windows, macOS, Linux). SSH, S3 and archives open like folders; extend it in Python — or let an AI agent write the extension.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗English | 日本語
XeFM — short for Xenolith File Manager — is a keyboard-driven dual-pane file manager that runs as a native desktop application on Windows and macOS, and in the terminal on Windows, macOS, and Linux. SSH servers, S3 buckets and archives open like any folder, and almost everything is yours to change in Python: install ready-made extensions, write your own, or ask an AI coding agent to write one with the XeFM skill.
https://github.com/user-attachments/assets/f121401d-990b-445d-aa79-526d34e4a44e
Pick the install that matches how you want to run XeFM:
| Get it from | Gives you | |
|---|---|---|
| Desktop app — Windows | the Microsoft Store | A real installed application, signed by Microsoft: one click, automatic updates, no SmartScreen prompt. No Python needed. |
| Desktop app — macOS | the latest release, or Homebrew: brew install --cask crftwr/tap/xefm | A real installed application: own icon, Dock entry, own file permissions. No Python needed. |
| Terminal app — Windows, macOS, Linux | PyPI | The xefm command in any terminal, including over SSH. Needs Python 3.10+. |
| Terminal app — macOS, Linux | Homebrew: brew install crftwr/tap/xefm | The same xefm command, managed by Homebrew. Use PyPI instead if you want to add Python libraries of your own. |
The desktop and terminal apps coexist and share their settings in ~/.xefm/ —
installing both is a perfectly normal setup.
The desktop packages bundle their own Python, so there is nothing else to install.
Windows — install from the
Microsoft Store, or run
winget install --id 9PK2X44W810V --source msstore: XeFM lands in the Start
menu, updates automatically, and uninstalls from Settings → Apps. An unsigned
portable zip also ships with every
release; it needs
unblocking once.
macOS — download XeFM-<version>-macos.dmg from the
latest release, drag
XeFM to Applications, and launch it from Launchpad or Spotlight. It is
signed with the author's Apple Developer ID. Or let Homebrew install and
upgrade it:
brew install --cask crftwr/tap/xefm
Full install details, including Gatekeeper notes, are in the Desktop Mode Guide.
Use the package, not
xefm --backend gui— that path is for developing XeFM, not for using it: the Dock / taskbar icon and, on macOS, the file permissions get attributed to Python / your terminal instead of to XeFM. See Why notxefm --backend gui?.
XeFM is on PyPI. Install it as a tool and run it — no checkout and no virtualenv to manage:
pipx install xefm # or: uv tool install xefm, or: pip install xefm
xefm
pipx and uv keep XeFM in
its own environment while putting the xefm command on your PATH; uvx xefm
tries it once without installing anything. Python 3.10+ is the only
prerequisite — the install for SSH sessions, remote servers, and
terminal-centric workflows.
On macOS and Linux, Homebrew can install the terminal app instead:
brew install crftwr/tap/xefm
If your config.py imports a library XeFM doesn't ship, or you want a Pillow
plugin such as pillow-heif, list it in ~/.xefm/requirements.txt and run
xefm deps sync (or Tools → Advanced → Sync Python Packages). That works the same for
every install, the desktop apps included, and survives upgrades. See
Extra Python Libraries.
Upgrade with the same tool you installed with (pipx upgrade xefm,
uv tool upgrade xefm, pip install --upgrade xefm, or brew upgrade xefm) — they are not
interchangeable. Details and fixes for common install errors are in the
User Guide.
Working on XeFM itself? Use a checkout instead:
git clone https://github.com/crftwr/xefm.git
cd xefm
make venv # creates .venv with every dependency
make run # launch XeFM through it, no activation needed
make help lists the rest — editable install, PuiKit co-development, and the
macOS / Windows app bundles.
The first launch asks which of four keymap presets you want: AFX style, Orthodox, OS native or Vim style. Tools → Advanced → Keymap… switches later. These work in all of them:
Enter opens, Backspace goes
to the parent directory, and Tab switches panesF1 opens the help dialog with every key of your preset, organized
by category — no need to memorizeF10) and the command palette (Tools →
Command Palette…) list every command with its keyssh://hostname/path or s3://bucket/path like any directoryThe Keymap Presets page lists every key of all four side by side.
Every feature guide is listed at the end of the User Guide. Recipes and community extensions are collected on the XeFM wiki.
Press Enter on an archive file (.zip, .tar, .tar.gz, .tgz, .tar.bz2,
.tar.xz) to browse it as if it were a regular directory — no extraction
needed. Navigate nested directories, view files, search by name or content, and
copy files out as from any directory; Backspace leaves the archive.
File → Create Archive… and File → Extract Archive… make and unpack
one. See the
Archive Feature Guide.
Press Enter on a file to view it. XeFM picks the right viewer
for the file type: syntax-highlighted text (20+ formats, line numbers, wrapping,
in-file search), images with zoom / pan (inline in iTerm2 / kitty / sixel
terminals and in desktop mode), and rendered views for Markdown, JSON, and
CSV/TSV, each with a key to switch to the raw text. All viewers work on local files, inside
archives, and on remote SFTP / S3 paths without extraction or download.
| Markdown | JSON / JSONL | CSV / TSV |
|---|---|---|
| Rendered headings, lists, code, and links | Collapsible, syntax-colored tree (.json, .jsonl, .ndjson) | Column-aligned table grid (.csv, .tsv) |
XeFM ships a dozen built-in themes. Pick one from the View → Theme menu — your choice is remembered across restarts. Define your own in ~/.xefm/config.py and they appear in the picker alongside the built-ins.
| Dark+ | Monokai | Dracula |
| Nord | Solarized | Gruvbox Dark |
| Light+ | Solarized Light | Sci-Fi |
| Cyber | Segment LCD | Shinagawa |
In desktop mode a theme can also carry visual effects the GPU renders behind
and over the interface: background animations (starfield, rain, hologram,
…), CRT / phosphor screen post-effects, text-reveal animations, and translucent
surfaces. Effects are pure theme data — a custom theme can mix and match them,
and terminal mode ignores them. See
Color Schemes & Visual Effects.
Tools → Subshell Here suspends XeFM and enters a shell whose environment
describes the current panes and selection (XEFM_LEFT_DIR, XEFM_THIS_DIR,
XEFM_LEFT_SELECTED, …); type exit to return to XeFM. The full variable list
is in the User Guide.
These apply to the terminal install and to source checkouts (where every command
also works as python3 -m xefm …); the desktop packages take no arguments.
xefm # terminal mode (the default)
xefm --left /path/a --right /path/b # startup directories
xefm --backend gui # desktop window — development path only
The full flag set is --backend {tui,curses,gui,macos,windows}, --left DIR,
--right DIR, --version, and --help. Backend details are in the
Desktop Mode Guide.
XeFM is highly configurable through ~/.xefm/config.py — themes and visual
effects, key bindings, external programs and file associations, favorite
directories, and behavior settings. Open it with Tools → Edit Configuration…
in the menu bar, or edit the file directly. See the
Configuration Feature Guide.
Extension packages add actions, event hooks, themes, sort orders, filters,
picture formats, locations or syntax highlighting without touching
config.py, and install, upgrade and uninstall as one unit:
xefm ext install github:crftwr/xefm-extensions/compute-hash
xefm ext list
In the desktop apps, use Tools → Advanced → Install Extension… instead. The wiki's Extensions page lists what is available — the official packages in crftwr/xefm-extensions, from hashes and line counts to presigned S3 links and a classic blue theme, and the community's. To write your own, see Extension Packages — or give an AI coding agent the XeFM skill and ask it for the feature. The extension API is a Preview, so the format may still change.
XeFM.exe — the zip is not code-signed; click More info → Run anyway, or unblock the zip before extracting. The Microsoft Store install is signed and never shows this promptXeFM.app in Applications and choose Open, then confirm oncecommand not found, externally-managed-environment, upgrade errors) — see Installation troubleshootingMore in the User Guide and the Desktop Mode Guide.
pipx install xefm)MIT License - see LICENSE file for details.