summaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md58
1 files changed, 46 insertions, 12 deletions
diff --git a/README.md b/README.md
index e30a481..3be097a 100644
--- a/README.md
+++ b/README.md
@@ -7,15 +7,15 @@ hunter is a fast and lag-free file browser/manager for the terminal. It features
It's heavily inspired by the excellent ranger, but a little more Emacs-flavoured, and written in Rust to make sure it starts up quickly and to take advantage of its strong guarantees around concurrency. It's so fast I actually built in animations for some parts as a joke, but in fact it turned out to look really nice and makes it look much smoother. YMMV, of course, and this can be disabled.
-Most things you would expect are implementend, among them tabs, bookmarks (with ranger-import), search/filter, previews of files/directories (including size information in previewed directories), a minibuffer at the bottom with file name completion, multi file selection, etc., etc. There are also a few original ideas, especially around subprocess handling. The process viewer actually shows the output of started subprocesses, their pids and exit codes, notifies on new output and process completion. It's somewhat of a primitive TUI shell. File names are handled using raw OsString, so there is no file it can't handle, no matter what garbage the name contains. It also sets the tmux/terminal title to the current directory on supported terminals.
+Most things you would expect are implemented, among them tabs, bookmarks (with ranger-import), search/filter, previews of files/directories (including size information in previewed directories), a minibuffer at the bottom with file name completion, multi file selection, etc., etc. There are also a few original ideas, especially around subprocess handling. The process viewer actually shows the output of started subprocesses, their pids and exit codes, notifies on new output and process completion. It's somewhat of a primitive TUI shell. File names are handled using raw OsString, so there is no file it can't handle, no matter what garbage the name contains. It also sets the tmux/terminal title to the current directory on supported terminals.
-To speed up the loading of direcories metadata in the preview/backview is only loaded for files you can see, except in the main view. Still, metadata is also loaded asynchronously, so you can sometimes see it updating file listings while browsing through your files. I think this is better than waiting though :).
+To speed up the loading of directories metadata in the preview/backview is only loaded for files you can see, except in the main view. Still, metadata is also loaded asynchronously, so you can sometimes see it updating file listings while browsing through your files. I think this is better than waiting though :).
Technically hunter is not a file "manager" itself. It has no built in primitives for file manipulation like delete, rename, move, and so on. Instead it relies on its easy and extensive integration with the standard cli tools to do its job. For that purpose there are various file name/path substitution patterns and an auto-completing for executables you want to run.
This is a young project and probably (definitely) has some bugs and edge cases. It hasn't been tested on a lot of terminals, but at least alacritty, kitty and urxvt work fine. It should work on most Unix-flavoured systems supported by Rust, but was only tested on GNU/Linux. I haven't lost any files so far, at least.
-A big thanks to ranger and its developers. Without its inspiration this wouldn't have been possible. hunter not a drop-in replacement and doesn't cover every use-care, especially if you're into advanced customization, since hunter has basically none unless you modify the code, but if you just need fast above all else it might be a good coice.
+A big thanks to ranger and its developers. Without its inspiration this wouldn't have been possible. hunter not a drop-in replacement and doesn't cover every use-care, especially if you're into advanced customization, since hunter has basically none unless you modify the code, but if you just need fast above all else it might be a good choice.
## Features:
* Lag-free architecture, always responsive
@@ -23,15 +23,49 @@ A big thanks to ranger and its developers. Without its inspiration this wouldn't
* Tabs
* Multi-file selection
* ranger import for bookmarks/tags
-* minibuffer with completion and filename/selection/tab/direcory substitution
+* minibuffer with completion and filename/selection/tab/directory substitution
* subprocess viewer that shows output of started subprocesses
-* exit and cd into last directory and put seleceted files into shell variables
+* exit and cd into last directory and put selected files into shell variables
* slide up animation for previews for a smoother experience (configurable)
* fffast
-## NOTE:
-hunter uses ranger's rifle to open files if rifle is in your $PATH. If it can't find rifle it uses xdg-open. It also uses ranger's scope.sh to generate previews for non-text files. A slightly modified version is included in the "extra" directory. Put it in your $PATH somewhere if you want previews for non-text files.
+## PREREQUISITES:
+
+* gcc
+* libmagic-dev
+
+### Debian/Ubuntu
+
+* ```apt install gcc libmagic-dev```
+
+## INSTALLATION:
+
+### Build from source
+
+```
+// Clone the git repo
+git clone https://github.com/rabite0/hunter.git
+
+// Go into the repos directory
+cd {source_dir}/hunter/
+// Note: if you want vim bindings you will have to switch to the evil branch.
+// git checkout evil
+
+// Build
+cargo build --release
+```
+
+###
+
+This will create a binary in {source_dir}/hunter/target/release/hunter. If you want to call this like any other terminal app you have to put this binary in your path.
+
+```ln -s {source_dir}/hunter/target/release/hunter /usr/bin/local/hunter```
+
+This will link the the binary to your local bin file. You can call hunter from anywhere. To update repeat the process, but you will **not** need to redo the binary link.
+
+## NOTE:
+hunter uses [ranger's rifle](https://github.com/ranger/ranger/blob/master/ranger/ext/rifle.py) to open files if rifle is in your $PATH. If it can't find rifle it uses xdg-open. It also uses ranger's scope.sh to generate previews for non-text files. A slightly modified version is included in the "extra" directory. Put it in your $PATH somewhere if you want previews for non-text files.
## Configuration
hunter reads $XDG_CONFIG_HOME/hunter/config at startup. There are two options, which can be set. The configuration file is read asynchronously, so if it's not read by the time hunter starts drawing you will see its default configuration until the config file is read. Options can be set like this (default config):
@@ -63,12 +97,12 @@ By default hunter uses emacs style keybindings. If you use a QWERTY-like keyboar
|n/p (evil: j/k) |move down/up |
|N/P (evil: J/K) |5x move down/5x move up |
|< |move to top |
-|> |mve to bottom |
+|> |move to bottom |
|f/b (evil: h/l) |enter (run executable) |
|S |search file |
|Alt(s) |search next |
|Alt(S) |search prev |
-|Ctrl(f) |filer |
+|Ctrl(f) |filter |
|space |multi select file |
|v |invert selections |
|t |toggle tag |
@@ -80,7 +114,7 @@ By default hunter uses emacs style keybindings. If you use a QWERTY-like keyboar
|d |toggle dirs first |
|/ |turbo cd |
|Q |quit with dir/selections |
-|F |start executabe in background |
+|F |start executable in background |
|- |goto prev cwd |
|` |goto bookmark |
|m |add bookmark |
@@ -110,7 +144,7 @@ By default hunter uses emacs style keybindings. If you use a QWERTY-like keyboar
|k |kill process |
|p evil(k) |move up |
|n evil(j) |move down |
-|f |toggle follow outupt |
+|f |toggle follow output |
|Ctrl(n) evil(Ctrl(j) |scroll output down |
|Ctrl(p) evil(Ctrl(k) |scroll output up |
|Ctrl(v) |page down |
@@ -127,7 +161,7 @@ By default hunter uses emacs style keybindings. If you use a QWERTY-like keyboar
|Tab |complete |
|F(n) |insert tab substitution |
|Ctrl(d) |delete char |
-|Ctrl(b) |mvoe cursor left |
+|Ctrl(b) |move cursor left |
|Ctrl(f) |move cursor right |
|Ctrl(p)/Alt(p) |history up |
|Ctrl(n)/Alt(n) |history down |