xefm 1.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. xefm-1.0.1/LICENSE +35 -0
  2. xefm-1.0.1/MANIFEST.in +16 -0
  3. xefm-1.0.1/PKG-INFO +463 -0
  4. xefm-1.0.1/README.md +427 -0
  5. xefm-1.0.1/pyproject.toml +64 -0
  6. xefm-1.0.1/requirements.txt +20 -0
  7. xefm-1.0.1/setup.cfg +4 -0
  8. xefm-1.0.1/xefm/__init__.py +27 -0
  9. xefm-1.0.1/xefm/__main__.py +7 -0
  10. xefm-1.0.1/xefm/_config.py +592 -0
  11. xefm-1.0.1/xefm/app.py +4599 -0
  12. xefm-1.0.1/xefm/archive.py +2148 -0
  13. xefm-1.0.1/xefm/backend_detector.py +109 -0
  14. xefm-1.0.1/xefm/background_shaders.py +3788 -0
  15. xefm-1.0.1/xefm/batch_rename_dialog.py +321 -0
  16. xefm-1.0.1/xefm/candidate_list.py +170 -0
  17. xefm-1.0.1/xefm/colors.py +754 -0
  18. xefm-1.0.1/xefm/compare_dialog.py +386 -0
  19. xefm-1.0.1/xefm/compare_selection.py +182 -0
  20. xefm-1.0.1/xefm/completion.py +263 -0
  21. xefm-1.0.1/xefm/config.py +984 -0
  22. xefm-1.0.1/xefm/const.py +48 -0
  23. xefm-1.0.1/xefm/dialog_geometry.py +149 -0
  24. xefm-1.0.1/xefm/diff_viewer.py +599 -0
  25. xefm-1.0.1/xefm/directory_diff_viewer.py +1612 -0
  26. xefm-1.0.1/xefm/external_programs.py +429 -0
  27. xefm-1.0.1/xefm/file_list_manager.py +630 -0
  28. xefm-1.0.1/xefm/file_monitor_manager.py +661 -0
  29. xefm-1.0.1/xefm/file_monitor_observer.py +416 -0
  30. xefm-1.0.1/xefm/file_operations.py +737 -0
  31. xefm-1.0.1/xefm/file_pane.py +705 -0
  32. xefm-1.0.1/xefm/filter_list_dialog.py +307 -0
  33. xefm-1.0.1/xefm/image_viewer.py +576 -0
  34. xefm-1.0.1/xefm/input_dialog.py +413 -0
  35. xefm-1.0.1/xefm/isearch_bar.py +246 -0
  36. xefm-1.0.1/xefm/log_manager.py +727 -0
  37. xefm-1.0.1/xefm/logging_handlers.py +361 -0
  38. xefm-1.0.1/xefm/pane_manager.py +339 -0
  39. xefm-1.0.1/xefm/path.py +1578 -0
  40. xefm-1.0.1/xefm/progress_animator.py +190 -0
  41. xefm-1.0.1/xefm/progress_manager.py +323 -0
  42. xefm-1.0.1/xefm/progressive_search_dialog.py +429 -0
  43. xefm-1.0.1/xefm/s3.py +1440 -0
  44. xefm-1.0.1/xefm/ssh.py +670 -0
  45. xefm-1.0.1/xefm/ssh_cache.py +330 -0
  46. xefm-1.0.1/xefm/ssh_config.py +140 -0
  47. xefm-1.0.1/xefm/ssh_connection.py +1488 -0
  48. xefm-1.0.1/xefm/state_manager.py +894 -0
  49. xefm-1.0.1/xefm/str_format.py +217 -0
  50. xefm-1.0.1/xefm/task.py +383 -0
  51. xefm-1.0.1/xefm/text_dialog.py +260 -0
  52. xefm-1.0.1/xefm/text_layout.py +1429 -0
  53. xefm-1.0.1/xefm/text_viewer.py +1232 -0
  54. xefm-1.0.1/xefm/tools/bcompare_dirs.py +63 -0
  55. xefm-1.0.1/xefm/tools/bcompare_files.py +101 -0
  56. xefm-1.0.1/xefm/tools/kiro.py +129 -0
  57. xefm-1.0.1/xefm/tools/vscode.py +134 -0
  58. xefm-1.0.1/xefm/viewer_registry.py +130 -0
  59. xefm-1.0.1/xefm.egg-info/PKG-INFO +463 -0
  60. xefm-1.0.1/xefm.egg-info/SOURCES.txt +62 -0
  61. xefm-1.0.1/xefm.egg-info/dependency_links.txt +1 -0
  62. xefm-1.0.1/xefm.egg-info/entry_points.txt +2 -0
  63. xefm-1.0.1/xefm.egg-info/requires.txt +5 -0
  64. xefm-1.0.1/xefm.egg-info/top_level.txt +1 -0
xefm-1.0.1/LICENSE ADDED
@@ -0,0 +1,35 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Tomonori Shimomura
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+ ================================================================================
24
+ THIRD-PARTY SOFTWARE
25
+ ================================================================================
26
+
27
+ XeFM bundles third-party components — including the Python interpreter and
28
+ standard library, the PuiKit toolkit, PyObjC, boto3 and its dependencies,
29
+ Pygments, watchdog, and the Noto Sans / Noto Sans Mono fonts.
30
+
31
+ Each distributed application bundle includes a complete THIRD_PARTY_NOTICES.txt
32
+ that reproduces every bundled component's license in full. That file is
33
+ generated at build time by tools/generate_third_party_notices.py from the
34
+ components actually shipped, so it always matches the bundle. Refer to it for
35
+ the authoritative list and license texts.
xefm-1.0.1/MANIFEST.in ADDED
@@ -0,0 +1,16 @@
1
+ # Extra files to include in the source distribution (the wheel is governed by
2
+ # pyproject.toml's packages / package-data). setuptools already ships the
3
+ # xefm package sources, README, LICENSE and pyproject.toml; the lines below
4
+ # add the end-user tools and prune everything not needed to install and run XeFM.
5
+ include requirements.txt
6
+ recursive-include xefm/tools *
7
+
8
+ # Development trees and build byproducts — kept out of the sdist.
9
+ prune tools
10
+ prune temp
11
+ prune test
12
+ prune doc
13
+ prune build
14
+ prune macos_app
15
+ prune windows_app
16
+ global-exclude __pycache__ *.py[cod] .DS_Store
xefm-1.0.1/PKG-INFO ADDED
@@ -0,0 +1,463 @@
1
+ Metadata-Version: 2.4
2
+ Name: xefm
3
+ Version: 1.0.1
4
+ Summary: XeFM — a dual-pane file manager for the desktop and the terminal
5
+ Author: Tomonori Shimomura
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/shimomut/xefm
8
+ Project-URL: Repository, https://github.com/shimomut/xefm
9
+ Project-URL: Issues, https://github.com/shimomut/xefm/issues
10
+ Keywords: file manager,dual-pane,gui,desktop,terminal,tui,curses
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console :: Curses
13
+ Classifier: Environment :: MacOS X
14
+ Classifier: Environment :: Win32 (MS Windows)
15
+ Classifier: Intended Audience :: End Users/Desktop
16
+ Classifier: Operating System :: POSIX
17
+ Classifier: Operating System :: MacOS
18
+ Classifier: Operating System :: Microsoft :: Windows
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Programming Language :: Python :: 3.14
25
+ Classifier: Topic :: System :: Filesystems
26
+ Classifier: Topic :: Utilities
27
+ Requires-Python: >=3.10
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE
30
+ Requires-Dist: puikit>=1.0
31
+ Requires-Dist: pygments
32
+ Requires-Dist: boto3
33
+ Requires-Dist: watchdog
34
+ Requires-Dist: pillow
35
+ Dynamic: license-file
36
+
37
+ # XeFM — a dual-pane file manager for the desktop and the terminal
38
+
39
+ XeFM — short for *Xenolith File Manager* — is a powerful file manager that runs as a native desktop application on **Windows and macOS**, and in the terminal on **all platforms — Windows, macOS, and Linux**. Navigate your filesystem with keyboard shortcuts in a clean, intuitive dual-pane interface with comprehensive file operations, rich built-in viewers, themeable visual effects, and professional-grade features.
40
+
41
+ ![title](doc/images/xefm-page-title.jpg)
42
+
43
+ ## Key Features
44
+
45
+ - **Cross-platform** - Native desktop app on **Windows and macOS**; terminal (TUI) app on **Windows, macOS, and Linux**
46
+ - **Dual-pane interface** with independent navigation and cross-pane operations
47
+ - **Archive browsing** - Navigate ZIP, TAR, and compressed archives as virtual directories
48
+ - **SFTP support** - Browse and manage remote servers via SSH with optimized performance
49
+ - **AWS S3 support** for cloud storage operations
50
+ - **Advanced search** with real-time filtering and background processing
51
+ - **Multi-selection** with bulk operations and progress tracking
52
+ - **Rich built-in viewers** - Syntax-highlighted text, images, Markdown, JSON, and CSV/TSV
53
+ - **Themes & visual effects** - A dozen built-in themes; desktop mode adds GPU background animations, CRT/phosphor screen effects, and text-reveal animations
54
+ - **External program integration** with configurable launchers
55
+ - **Customizable** - Fully configurable key bindings and settings
56
+
57
+ ## Quick Start
58
+
59
+ ### Installation
60
+
61
+ > **Want the desktop app?** The easiest way to run XeFM in desktop mode is to
62
+ > download and install a prebuilt application package — a self-contained
63
+ > `XeFM.exe` folder on Windows or a native `.app` on macOS, with Python and every
64
+ > dependency bundled in (no source checkout, no virtualenv). These packages are
65
+ > **not yet uploaded to GitHub Releases** — until then, use the from-source setup
66
+ > below (which also covers terminal mode on Windows, macOS, and Linux).
67
+
68
+ 1. Install Python 3.10 or later. On macOS, Homebrew is the easiest route:
69
+ ```bash
70
+ brew install python@3.14
71
+ ```
72
+ 2. Clone XeFM:
73
+ ```bash
74
+ git clone https://github.com/shimomut/xefm.git
75
+ cd xefm
76
+ ```
77
+ 3. Create the environment and run:
78
+ ```bash
79
+ make venv # creates .venv using the newest python3 in PATH
80
+ make run # launch XeFM
81
+ ```
82
+
83
+ `make venv` creates and populates `.venv/`, and every other `make` target runs
84
+ through that interpreter — so you never need to activate it yourself.
85
+
86
+ Prefer to manage the environment yourself? Create and activate a virtualenv
87
+ first, then install the dependencies:
88
+ ```bash
89
+ python3 -m venv .venv
90
+ source .venv/bin/activate # Windows: .venv\Scripts\activate
91
+ pip install -r requirements.txt
92
+ python3 -m xefm
93
+ ```
94
+
95
+ No `pip install` of XeFM itself is needed to run from a checkout: `python3 -m`
96
+ puts the working directory on the import path, and the `xefm` package sits at
97
+ the repo root. Run `pip install -e .` only if you want the `xefm` command
98
+ available from other directories.
99
+
100
+ **Desktop Mode** runs on Windows and macOS. The Windows GUI backend is pure
101
+ Python and needs nothing extra; the macOS one uses PyObjC, installed
102
+ automatically by `requirements.txt`. Just pick the backend:
103
+ ```bash
104
+ python3 -m xefm --backend gui # native desktop window on Windows or macOS
105
+ ```
106
+
107
+ ### Essential Controls
108
+ - **Navigate:** `↑↓` to move up/down, `←→` to switch panes/navigate directories
109
+ - **Enter archives:** Press `Enter` on `.zip`, `.tar`, `.tar.gz` files to browse contents
110
+ - **Select:** `Space` to select/deselect files, `A` for all files, `Shift-A` for all items
111
+ - **File operations:** `C` (copy), `M` (move), `K` (delete), `R` (rename)
112
+ - **Help:** `?` for comprehensive help dialog
113
+ - **Quit:** `Q` to exit
114
+
115
+ ### Help System
116
+ Press `?` to open the comprehensive help dialog with all key bindings and features organized by category. The help dialog is your quick reference guide - no need to memorize all shortcuts!
117
+
118
+ ## Documentation
119
+
120
+ For comprehensive information about XeFM's features and usage:
121
+
122
+ ### User Documentation
123
+ - **[Complete User Guide](doc/XEFM_USER_GUIDE.md)** - Comprehensive guide covering all features, configuration, and usage
124
+ - **[Configuration](doc/CONFIGURATION_FEATURE.md)** - Complete configuration reference and customization guide
125
+ - **[Desktop Mode](doc/DESKTOP_MODE_GUIDE.md)** - Native Windows / macOS desktop app setup and options
126
+ - **[Color Schemes & Visual Effects](doc/COLOR_SCHEMES_FEATURE.md)** - Themes, themeable GPU background scenes, and screen effects
127
+ - **[Image Viewer](doc/IMAGE_VIEWER_FEATURE.md)** - Built-in zoom / pan image viewer
128
+ - **[Markdown Viewer](doc/MARKDOWN_VIEWER_FEATURE.md)** & **[JSON / CSV Viewers](doc/JSON_CSV_VIEWERS_FEATURE.md)** - Rendered structured-file views
129
+ - **[SFTP Support](doc/SFTP_SUPPORT_FEATURE.md)** - Remote server access via SSH with file operations and search
130
+ - **[AWS S3 Support](doc/S3_SUPPORT_FEATURE.md)** - Cloud storage integration and S3 bucket management
131
+ - **[Archives](doc/ARCHIVE_FEATURE.md)** - Create, extract, and browse archives as directories
132
+ - **[Search Animation](doc/SEARCH_ANIMATION_FEATURE.md)** - Advanced search features and visual feedback
133
+
134
+ ### Developer Documentation
135
+ - **[Path Polymorphism System](doc/dev/PATH_POLYMORPHISM_SYSTEM.md)** - Storage-agnostic architecture and extensibility
136
+ - **[Navigation System](doc/dev/NAVIGATION_SYSTEM.md)** - Core navigation implementation
137
+ - **[External Programs](doc/dev/EXTERNAL_PROGRAMS_SYSTEM.md)** - Program integration system
138
+
139
+ ## Key Features Overview
140
+
141
+ All key bindings are fully customizable through the configuration system. For complete key binding reference, press `?` in XeFM or see the [User Guide](doc/XEFM_USER_GUIDE.md).
142
+
143
+ ### Core Operations
144
+ - **Navigation:** Arrow keys, Tab to switch panes, Enter to open directories/files/archives
145
+ - **Archive Browsing:** Press Enter on `.zip`, `.tar`, `.tar.gz`, `.tgz`, `.tar.bz2`, `.tar.xz` files to browse as virtual directories
146
+ - **File Operations:** Copy (`C`), Move (`M`), Delete (`K`), Rename (`R`)
147
+ - **Selection:** Space to select files, `A` for all files, `Shift-A` for all items
148
+ - **Search:** `F` for incremental search, `Shift-F` for filename search, `Shift-G` for content search
149
+ - **Archives:** `P` to create archives, `U` to extract, Enter to browse contents
150
+ - **File Viewers:** `V` to view the selected file — text (syntax-highlighted), images, Markdown, JSON, and CSV/TSV (works inside archives); `M` toggles rendered/raw in the viewer
151
+
152
+ ### Advanced Features
153
+ - **Favorite Directories:** `J` for quick access to bookmarked locations
154
+ - **External Programs:** `X` for custom program integration
155
+ - **Sub-shell Mode:** `Shift-X` to enter shell with XeFM environment variables
156
+ - **Themes:** `T` to cycle themes; more display options under `Z` (view options) and `Shift-Z` (settings)
157
+ - **Configuration:** `Shift-Z` for settings menu (`Z` opens view options)
158
+ - **SFTP Support:** Navigate remote servers using `ssh://hostname/path` syntax
159
+ - **AWS S3 Support:** Navigate S3 buckets using `s3://bucket/path` syntax
160
+
161
+ For comprehensive SFTP setup and usage, see the **[SFTP Support Feature Guide](doc/SFTP_SUPPORT_FEATURE.md)**.
162
+
163
+ For comprehensive S3 setup and usage, see the **[AWS S3 Support Feature Guide](doc/S3_SUPPORT_FEATURE.md)**.
164
+
165
+ ## Archive Virtual Directory Browsing
166
+
167
+ XeFM lets you browse archive files as if they were regular directories - no extraction needed!
168
+
169
+ **Supported formats:** `.zip`, `.tar`, `.tar.gz`, `.tgz`, `.tar.bz2`, `.tar.xz`
170
+
171
+ **How to use:**
172
+ 1. Navigate to any archive file
173
+ 2. Press `Enter` to browse its contents
174
+ 3. Navigate directories inside the archive with arrow keys
175
+ 4. Press `Enter` on files to view them
176
+ 5. Copy files out with `C` (or your copy key)
177
+ 6. Search within archives with `Alt+F7`
178
+ 7. Press `Backspace` to exit the archive
179
+
180
+ **What you can do:**
181
+ - Browse nested directories within archives
182
+ - View text files with syntax highlighting
183
+ - Copy files and directories from archives to local/S3
184
+ - Search for files by name or content
185
+ - Select multiple files for batch operations
186
+ - Sort by name, size, date, or extension
187
+
188
+ See [Archive Feature](doc/ARCHIVE_FEATURE.md) for complete documentation.
189
+
190
+ ## Built-in File Viewers
191
+
192
+ Press `V` (or `Enter`) to view the selected file. XeFM picks the right viewer for the file type — all of them work seamlessly on local files, inside archives, and on remote SFTP / S3 paths without extraction or download.
193
+
194
+ ### Text viewer
195
+
196
+ A powerful text viewer with syntax highlighting for 20+ file formats.
197
+
198
+ ![Text viewer](doc/images/text-viewer.jpg)
199
+
200
+ - Syntax highlighting for Python, JavaScript, JSON, Markdown, YAML, and more
201
+ - Line numbers, horizontal scrolling, line wrapping (`W`), and in-file search
202
+ - Multiple encoding support (UTF-8, Latin-1, CP1252)
203
+
204
+ **Enhanced highlighting:** `pygments` (installed via `requirements.txt`) enables full syntax support.
205
+
206
+ ### Rich viewers — Markdown, JSON, CSV/TSV
207
+
208
+ For structured files, the viewer offers a *rendered* view in addition to the raw text. Press `M` inside the viewer to toggle between the formatted and raw views.
209
+
210
+ | Markdown | JSON / JSONL | CSV / TSV |
211
+ |:---:|:---:|:---:|
212
+ | <img src="doc/images/markdown-viewer.jpg" width="280"> | <img src="doc/images/json-viewer.jpg" width="280"> | <img src="doc/images/csv-viewer.jpg" width="280"> |
213
+ | Rendered headings, lists, code, and links | Collapsible, syntax-colored tree (`.json`, `.jsonl`, `.ndjson`) | Column-aligned table grid (`.csv`, `.tsv`) |
214
+
215
+ ### Image viewer
216
+
217
+ A modal image viewer with zoom, pan, and prev/next navigation through the sibling images in the current pane.
218
+
219
+ ![Image viewer](doc/images/image-viewer.jpg)
220
+
221
+ - Supports PNG, JPEG, GIF, BMP, WebP, TIFF, ICO, and more (via Pillow)
222
+ - Renders inline in graphics-capable terminals (iTerm2, kitty, sixel) and in desktop mode; falls back to a metadata card (format / dimensions / size) elsewhere
223
+ - Zoom with `+` / `-`, pan with the arrow keys or a mouse drag, step through images with prev/next
224
+
225
+ Image decoding needs `pillow` (installed via `requirements.txt`).
226
+
227
+ ## Themes & Visual Effects
228
+
229
+ XeFM ships a dozen built-in themes. Press `T` to cycle to the next theme, or 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.
230
+
231
+ | | | |
232
+ |:---:|:---:|:---:|
233
+ | <img src="doc/images/theme-dark.jpg" width="260"><br>**Dark+** | <img src="doc/images/theme-monokai.jpg" width="260"><br>**Monokai** | <img src="doc/images/theme-dracula.jpg" width="260"><br>**Dracula** |
234
+ | <img src="doc/images/theme-nord.jpg" width="260"><br>**Nord** | <img src="doc/images/theme-solarized.jpg" width="260"><br>**Solarized** | <img src="doc/images/theme-gruvbox.jpg" width="260"><br>**Gruvbox Dark** |
235
+ | <img src="doc/images/theme-light.jpg" width="260"><br>**Light+** | <img src="doc/images/theme-solarized-light.jpg" width="260"><br>**Solarized Light** | <img src="doc/images/theme-sci-fi.jpg" width="260"><br>**Sci-Fi** |
236
+ | <img src="doc/images/theme-cyber.jpg" width="260"><br>**Cyber** | <img src="doc/images/theme-segment-lcd.jpg" width="260"><br>**Segment LCD** | <img src="doc/images/theme-shinagawa.jpg" width="260"><br>**Shinagawa** |
237
+
238
+ The default config also includes a **Phosphor** sample theme — a monochrome phosphor-green CRT terminal — as a starting point for your own.
239
+
240
+ ### Visual effects (desktop mode)
241
+
242
+ In desktop mode (`--backend gui`), a theme can carry visual effects that the GPU renders behind and over the interface. Terminal mode simply shows the theme's colors and ignores these.
243
+
244
+ - **Background animations** — a slow, on-palette scene drawn behind the panes, rendered as a GPU fragment shader: `starfield`, `rain`, `hologram`, `wave`, `grid`, `constellation`, and `datastream`.
245
+ - **Screen post-effects** — a full-frame CRT / phosphor look composited over the UI: bloom, glow, scanlines, vignette, and drop shadows.
246
+ - **Text-reveal animations** — filenames and labels *arrive* rather than appear, decoding or typing into place on a directory change (used by Sci-Fi and Cyber).
247
+ - **Translucent surfaces** — panels and chrome can sit at reduced opacity so the animated background reads through.
248
+
249
+ Effects are pure theme data — each is a combination of parameters attached to a theme, so a custom theme can mix and match them without any application code.
250
+
251
+ ## Sub-shell Mode
252
+
253
+ Press `Shift-X` to temporarily suspend XeFM and enter a shell with environment variables providing access to current directories and selected files:
254
+
255
+ - `XEFM_LEFT_DIR`, `XEFM_RIGHT_DIR` - Directory paths for each pane
256
+ - `XEFM_THIS_DIR`, `XEFM_OTHER_DIR` - Current and other pane directories
257
+ - `XEFM_LEFT_SELECTED`, `XEFM_RIGHT_SELECTED` - Selected files in each pane
258
+ - `XEFM_ACTIVE` - Set to '1' to indicate XeFM sub-shell mode
259
+
260
+ Type `exit` to return to XeFM.
261
+
262
+ ## Advanced Features
263
+
264
+ - **Native Desktop App:** Run in a real window on Windows and macOS (`--backend gui`) with GPU rendering, or in any terminal — same keyboard-driven interface
265
+ - **Archive Virtual Directories:** Browse ZIP, TAR, and compressed archives as if they were directories - navigate, search, view files, and copy contents without extraction
266
+ - **SFTP Support:** Access remote servers via SSH with full file operations, search, and optimized performance through connection multiplexing and bulk operations
267
+ - **AWS S3 Support:** Navigate and manage S3 buckets with seamless local/remote operations
268
+ - **Rich Viewers:** Built-in viewers for text (syntax-highlighted), images (zoom/pan), Markdown, JSON, and CSV/TSV — plus text and directory diff viewers
269
+ - **Themes & Effects:** A dozen built-in themes with GPU background animations, CRT/phosphor screen effects, and text-reveal animations in desktop mode
270
+ - **Batch Rename:** Regex-based renaming with capture groups and macros
271
+ - **Threaded Search:** Non-blocking filename and content search with progress tracking (works inside archives and on remote servers)
272
+ - **Pane Management:** Resizable layout, directory sync, state persistence
273
+ - **External Integration:** VSCode, Beyond Compare, and custom program support
274
+
275
+ For detailed information on all features, see the [User Guide](doc/XEFM_USER_GUIDE.md).
276
+
277
+ ## Command Line Options
278
+
279
+ ```bash
280
+ # Run in terminal mode (default)
281
+ python3 -m xefm
282
+
283
+ # Run in desktop mode (native window on Windows or macOS)
284
+ python3 -m xefm --backend gui
285
+
286
+ # Specify startup directories
287
+ python3 -m xefm --left /path/to/projects --right /path/to/documents
288
+
289
+ # Combined usage - desktop mode with custom directories
290
+ python3 -m xefm --backend gui --left ./src --right ./test
291
+
292
+ # Help and version
293
+ python3 -m xefm --help
294
+ python3 -m xefm --version
295
+ ```
296
+
297
+ The full flag set is just `--backend {tui,curses,gui,macos,windows}`, `--left DIR`,
298
+ `--right DIR`, `--version`, and `--help`.
299
+
300
+ ### Backend Selection
301
+
302
+ XeFM supports two rendering backends, chosen with `--backend`:
303
+
304
+ - **Terminal Mode** (`--backend tui`, alias `curses`): traditional terminal interface, works on all platforms (**Windows, macOS, Linux**) — the default
305
+ - **Desktop Mode** (`--backend gui`): native desktop window on **Windows** (Direct2D/DirectWrite) or **macOS** (CoreGraphics, via PyObjC). The `gui` alias resolves to the right backend for the current platform; `windows` / `macos` name them explicitly.
306
+
307
+ Desktop mode provides:
308
+ - Native window with resizing and full-screen support
309
+ - Customizable fonts (`MONO_FONT_NAME` / `UI_FONT_NAME` / `FONT_SIZE`)
310
+ - Window size and position remembered automatically across runs
311
+ - Better color accuracy with true RGB colors, plus GPU-rendered theme background animations and screen effects
312
+
313
+ See the [Desktop Mode Guide](doc/DESKTOP_MODE_GUIDE.md) for detailed desktop mode configuration.
314
+
315
+ ## Installation
316
+
317
+ ### Requirements
318
+
319
+ **Terminal Mode** (all platforms — Windows, macOS, Linux):
320
+ - Python 3.10+ with curses library (built-in on macOS/Linux, 3.14 supported)
321
+ - Windows: `pip install windows-curses` (installed automatically via `requirements.txt`)
322
+ - Terminal with curses support (Linux is terminal-mode only — desktop mode is Windows/macOS)
323
+
324
+ **Desktop Mode** (Windows or macOS):
325
+ - Python 3.10+ (3.14 supported)
326
+ - Windows: 10 or later — the GUI backend is pure Python (Direct2D/DirectWrite), no extra dependency to install
327
+ - macOS: 10.13 (High Sierra) or later — PyObjC (installed automatically via `requirements.txt`)
328
+
329
+ ### Dependencies
330
+
331
+ `requirements.txt` is the single source of truth and is installed in one shot:
332
+ ```bash
333
+ pip install -r requirements.txt
334
+ ```
335
+ It pulls in:
336
+ - `puikit` — the UI / rendering layer behind both the desktop and terminal modes
337
+ - `pygments` — enhanced syntax highlighting (20+ file formats)
338
+ - `pillow` — the built-in image viewer (decode / crop / scale; also enables inline terminal images)
339
+ - `boto3` — AWS S3 support (cloud storage operations)
340
+ - `watchdog` — automatic directory-listing reload on file changes
341
+ - `pyobjc` — macOS desktop mode (selected automatically on macOS)
342
+ - `windows-curses` — terminal-mode curses support on Windows (selected automatically on Windows)
343
+
344
+ The last two use environment markers, so the platform-specific dependency for the
345
+ machine you are on is installed for you. There is no `[macos]` extra to request.
346
+ (The Windows desktop backend itself is pure Python and needs no build step.)
347
+
348
+ ### Installation Options
349
+
350
+ #### Option 1: Run Directly (No Installation)
351
+ ```bash
352
+ # Create and activate a virtualenv
353
+ python3 -m venv .venv
354
+ source .venv/bin/activate # Windows: .venv\Scripts\activate
355
+
356
+ # Install dependencies
357
+ pip install -r requirements.txt
358
+
359
+ # Run from the repo root — `python3 -m` puts it on the import path, and the
360
+ # `xefm` package lives there, so nothing else needs installing.
361
+
362
+ # Terminal mode (all platforms)
363
+ python3 -m xefm
364
+
365
+ # Desktop mode (native window on Windows or macOS)
366
+ python3 -m xefm --backend gui
367
+ ```
368
+
369
+ #### Option 2: Install as Package
370
+ ```bash
371
+ # Install from source directory
372
+ cd xefm
373
+ pip install .
374
+
375
+ # Run from anywhere (installs a `xefm` console command)
376
+ xefm # Terminal mode
377
+ xefm --backend gui # Desktop mode (Windows / macOS)
378
+ ```
379
+
380
+ #### Option 3: Development Installation
381
+ ```bash
382
+ # Install in editable mode (changes reflected immediately)
383
+ cd xefm
384
+ pip install -e .
385
+
386
+ # Run from anywhere
387
+ xefm
388
+ ```
389
+
390
+ ## Configuration
391
+
392
+ XeFM is highly configurable through `~/.xefm/config.py`. Access configuration via the Settings menu (`Shift-Z` key) or edit manually.
393
+
394
+ **Key areas:**
395
+ - Themes, color schemes, and visual effects (including custom themes)
396
+ - Key bindings (fully customizable)
397
+ - External programs, file associations, and text editor
398
+ - Favorite directories and startup paths
399
+ - Performance and behavior settings
400
+
401
+ For detailed configuration options, see the **[Configuration Feature Guide](doc/CONFIGURATION_FEATURE.md)** and the [User Guide](doc/XEFM_USER_GUIDE.md#configuration).
402
+
403
+ ## Project Structure
404
+
405
+ ```
406
+ xefm/
407
+ ├── xefm/ # The `xefm` package — everything the app ships
408
+ │ ├── app.py # The application (XeFMApp + top-level UI)
409
+ │ ├── __main__.py # `python -m xefm` entry point
410
+ │ ├── *.py # Business logic, imported as `xefm.config`, `xefm.path`, …
411
+ │ └── tools/ # External programs for end users
412
+ ├── tools/ # Development tools and utilities
413
+ ├── test/ # Test files (1000+ passing tests)
414
+ └── doc/ # User documentation
415
+ └── dev/ # Developer documentation
416
+ ```
417
+
418
+ ## Troubleshooting
419
+
420
+ **Installation Issues:**
421
+ - Ensure Python 3.10+ is installed
422
+ - Check terminal compatibility with curses library (terminal mode)
423
+ - PyObjC (desktop mode) installs automatically on macOS via `pip install -r requirements.txt`
424
+
425
+ **Desktop Mode Issues:**
426
+ - Desktop mode runs on Windows and macOS; on other platforms use terminal mode
427
+ - On macOS, if PyObjC is missing XeFM automatically falls back to terminal mode
428
+ - Check console output for backend initialization messages
429
+ - See [Desktop Mode Guide](doc/DESKTOP_MODE_GUIDE.md) for detailed setup
430
+
431
+ **Performance Issues:**
432
+ - Install `pygments` for better text viewer performance
433
+ - Check available memory for large directory operations
434
+ - First access to large archives may be slow while structure is cached
435
+ - Desktop mode provides better performance with GPU acceleration
436
+
437
+ **Archive Issues:**
438
+ - Verify archive file is not corrupted
439
+ - Ensure you have read permissions for the archive
440
+ - Check supported formats: `.zip`, `.tar`, `.tar.gz`, `.tgz`, `.tar.bz2`, `.tar.xz`
441
+ - Archives are read-only - use copy operations to extract files
442
+
443
+ For detailed troubleshooting, see the [User Guide](doc/XEFM_USER_GUIDE.md#troubleshooting).
444
+
445
+ ## Contact Author
446
+
447
+ Have questions, suggestions, or found a bug? Get in touch:
448
+
449
+ - **GitHub Repository**: [https://github.com/shimomut/xefm](https://github.com/shimomut/xefm)
450
+ - **GitHub Issues**: [Report bugs or request features](https://github.com/shimomut/xefm/issues)
451
+ - **Author's X (Twitter)**: [@smmrtmnr](https://x.com/smmrtmnr)
452
+
453
+ We welcome feedback and contributions to make XeFM even better!
454
+
455
+ ## License
456
+
457
+ MIT License - see [LICENSE](LICENSE) file for details.
458
+
459
+ ## Support
460
+
461
+ - **Issues:** Create an issue on the project repository
462
+ - **Documentation:** Review files in `doc/` and `doc/dev/` directories
463
+ - **User Guide:** See [XEFM_USER_GUIDE.md](doc/XEFM_USER_GUIDE.md) for comprehensive information