← XeFM crftwr/xefm on GitHub · craftware

Dual-Pane File Management

XeFM shows two directories side by side, which makes copying, moving, and comparing between them far quicker than in a single-pane manager. One pane is active (highlighted, with the cursor); the other is inactive. Press Tab to switch which is active.

Each pane keeps its own current directory, cursor position, selection, sort mode, filter, and history — they are fully independent.

Key bindings

Key Action
Tab Switch active pane
O Sync current pane’s directory to the other pane
Shift-O Sync other pane’s directory to the current pane
C Copy selected files to the other pane’s directory
M Move selected files to the other pane’s directory
W Compare files/directories between panes
[ Move the pane boundary left (left pane smaller)
] Move the pane boundary right (left pane larger)

Copy/move always target the other pane, so the usual workflow is: point each pane at a directory, select in one, and act.

Workflow tips

These patterns are what the two panes are really for:

Pane size

Adjust the vertical boundary with [ (left pane smaller) and ] (left pane larger). The ratio is saved and restored on restart. Set the startup default in ~/.xefm/config.py:

DEFAULT_LEFT_PANE_RATIO = 0.5  # 50/50 (default); 0.6 = wider left, 0.4 = wider right

State persistence

XeFM remembers each pane’s current directory, cursor position, the pane ratio, and which pane was active between sessions, stored in ~/.xefm/state.json.

Command-line arguments

Set the starting directory for each pane when launching XeFM:

# Left pane only
python3 -m xefm --left /path/to/directory

# Right pane only
python3 -m xefm --right /path/to/directory

# Both panes
python3 -m xefm --left ~/documents --right ~/downloads