fstrider is an intuitive and fast file system navigator for terminal.
If you like it click ⭐ on the repo and tweet.
fstrider is:
- to reduce keystrokes during navigation.
- to remember and reuse the behavior and choices.
- to be minimalistic until it's needed to do more.
- to create new paths without annoying asking.
Before installation read the text below about using /
when copying or moving files and directories.
Install or update:
pip install fstrider
# OR: pip install -U git+https://github.com/anki-code/fstrider
Run fstrider and start striding:
fstrider
In the xonsh shell you can load xontrib with fs
alias that works fast and allows to change directory using fstrider:
xontrib load fstrider
fs # or fstrider
Basic:
- Left - move to parent directory.
- Right - move to the selected directory.
- Space - open menu for the current file or directory.
- Enter - open file or directory using OS associations.
- Control q - quit.
Additional:
- Shift ~ - jump to the home directory.
- Control h - jump to directory from history.
- Control j - jump to path. You can jump into new path and then create it.
- Control + - copy path to the current directory.
Midnight Commander bindings: F5 copy, F6 move, F7 rename, F8 delete, F10 quit, F12 open with.
fstrider was created to reduce keystrokes. So remember two things:
- Any new path will be created automatically. When you copy the file
example.txt
to/tmp/some/new/path/
the path/tmp/some/new/path/
will be created automatically. - If you copy directory
/tmp/dir1
and the target path ends with/
e.g./tmp/other/
then thedir1
will be putted into/tmp/other/dir
. - If you copy directory
/tmp/dir2
and the target path ends with directory name e.g./tmp/other
then thedir2
will be merged with/tmp/other
. Existing files will be overwritten.
fstrider xontrib features:
- Creates alias
fs
(orfstrider
iffs
exists). - Run fstrider as fast as possible.
- Keeps history between running fstrider.
Environment variables for fstrider xontrib:
$XONTRIB_FSTRIDER_ALIAS
- change the alias name. Recommendeds
.
'show_symlink_paths': True
- show symlinks in the list.'keys_midnight_commander': True
- use Midnight Commander keys.'monitor_state': False
- Async monitoring of the list and update if new files created.'os_path_change': True
- change os path in xonsh shell.'app_associations_save_file': False
- save filename to apps associations.
You can change the option state by setting environment variable e.g. $FSTRIDER_MONITOR_STATE=True
.
Current version of fstrider is using and testing on Mac OS. It will be good to test and fix for Linux and Windows.
Feel free to grab and implement or propose new feature. PR is welcome!
Xonsh xontrib
++ Creates alias `fs` (or `fstrider` if `fs` exists). (0.1.18)
++ Run fstrider as fast as possible. (0.1.18)
++ Keeps history between running fstrider. (0.1.18)
List
++ Async monitoring of the list and update if new files created. (0.1.19)
++Add `/` to the end of directory in title and in history.
Configuration
++ Read env from `os.env`. See `fstrider.env`. (0.1.19)
Integration
"=" to move object from path to the current dir.
Tech
++ Add list and menu mode.
Errors processing
Show errors like in case of exception.
Process `File exists` error.
++ Resolve `/tmp/../../`. (0.1.17)
Symlinks: copying, moving
Style
Grey style for copy/move and red style for delete dialogue.
Navigation
Move coursor to the next file after deletion.
++ Up key at first option moves cursor to end. (0.1.19)
++ Fix left key when go from history.
++ Fix right key when go to file from history.
Navigation
Key+Left - Go back to previous screen after moving/copying/etc.
List
Sorting by size/date `sorted(glob.glob('*.png'), key=os.path.getsize)`.
Modes: short, full (chmod/chown/date).
Keep file msg after `invalidate_list`.
Jump
Use path from clipboard e.g. `text_area.buffer.paste_clipboard_data`.
Use directories from xonsh history i.e. `__xonsh__.history[-1].cwd`
Title
Show chown/chmod if "Access denied".
Show what part of path is exist and what's new.
Dialog
Autocomplete for paths in menu - the feature from prompt-toolkit.
Copying progress bar or just the console log from `rsync`.
List
Fuzzy search.
Research: Draggable items i.e. `ls --hyperlink`.
Associations
`.xonshrc` case in app_assoc.
Highlight known suffix from app_assoc.
Using $LS_COLORS and `dircolors` for color files.
List
Improve speed of list on big amount of items - 10k+
Integration
Other shells support.
Key bindings
The way to change key bindings.
VI mode, Emacs mode.
Style
Dark style.
List
Fake files (items in the list)
Fake deleted file to show that this file was deleted.
Interstellar wormhole - path to another path added to this directory.
Read the path from files in this directory.
Colors and gradient: by time, by size. Show old files with dark color. Show small files with dark color.
Integration
Catching pasting path from clipboard and ask actions: cd-ing, copy/move from, open.
Using fstrider for anything e.g. striding around aws s3 bucket, ssh host.
The way to setup fstrider for special needs: colors, menus, hotkeys.
Keys
Free keys to use: `/`, `-`.
Xonsh shell
Using xonsh shell history to jump into directories.
Run shell command in this directory.
Crazy: use xonsh prompt as a prompt for ptk `TextArea`
AI
Predict the next choice of path based on history and maybe files in dir.
- Copy the current path in MacOS Finder: Option Command C
- Jump to path in MacOS Finder: Command Shift G