- Notifications
You must be signed in to change notification settings - Fork26
License
bellecp/fast-p
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Quickly find and open a pdf among a collection of thousands of unsorted pdfs through fzf (fuzzy finder)
- Installation on Linux
- Installation on OSX
- Usage
- How to clear the cache?
- Launch with keyboard shortcut in Ubuntu
- See it in action
- Is the historical bash code still available?
Requirements. Make sure the following requirements are satisfied:
- install
pdftotext
. This comes with the texlive distribution on linux,On ubuntu,sudo apt-get install poppler-utils
. - install
fzf
:https://github.com/junegunn/fzf - install
GNU grep
,ag
(silver searcher).
- install
Install binary. Do either one of the two steps below:
- Compile from source with
go
andgo get
.With a workinggolang
installation, dogo install github.com/bellecp/fast-p@v0.2.5
It will fetch the code and its dependencies,compile and create an executablefast-p
in the/bin
folder of your goinstallation, typically~/go/bin
. Make sure the commandfast-p
can befound (for instance, add~/go/bin
to your$PATH
.) - Or:Use the precompiled binary for your architecture. Download the binary that corresponds to yourarchitecture athttps://github.com/bellecp/fast-p/releases and make sure thatthe command
fast-p
can be found. For instance,put the binary filefast-p
in~/custom/bin
and addexport PATH=~/custom/bin:$PATH
to your.bashrc
.
- Compile from source with
Tweak your .bashrc. Add the following code to your
.bashrc
p () { open=xdg-open # this will open pdf file withthe default PDF viewer on KDE, xfce, LXDE and perhaps on other desktops. ag -U -g ".pdf$" \ | fast-p \ | fzf --read0 --reverse -e -d $'\t' \ --preview-window down:80% --preview ' v=$(echo {q} | tr " " "|"); echo -e {1}"\n"{2} | grep -E "^|$v" -i --color=always; ' \ | cut -z -f 1 -d $'\t' | tr -d '\n' | xargs -r --null $open > /dev/null 2> /dev/null}
- You may replace
ag -U -g ".pdf$"
with another command that returns a list of pdf files. - You may replace
open=...
by your favorite PDF viewer, for instanceopen=evince
oropen=okular
.
- Installhomebrew andrun
brew install bellecp/fast-p/fast-pdf-finder
The above brew formula is experimental.Please report any issues/suggestions/feedback at#11
- Tweak your .bashrc. Add the following code to your
.bashrc
p () { local open open=open # on OSX, "open" opens a pdf in preview ag -U -g ".pdf$" \ | fast-p \ | fzf --read0 --reverse -e -d $'\t' \ --preview-window down:80% --preview ' v=$(echo {q} | gtr " " "|"); echo -e {1}"\n"{2} | ggrep -E "^|$v" -i --color=always; ' \ | gcut -z -f 1 -d $'\t' | gtr -d '\n' | gxargs -r --null $open > /dev/null 2> /dev/null}
- You may replace
ag -U -g ".pdf$"
with another command that returns a list of pdf files. - You may replace
open=...
by your favorite PDF viewer, for instanceopen=evince
oropen=okular
.
Remark: On OSX, we use the command line toolsgcut
,gxargs
,ggrep
,gtr
which are the GNU versionsof the toolscut
,xargs
,grep
,tr
. This way, we avoid the specifics of the versions of these tools pre-installed on OSX,and the same.bashrc
code can be used for both OSX and GNU Linux systems.
Use the commandp
to browse among the PDF files in the current directory and its subdirectories.
The first run of the command will take some time to cache the text extracted from each pdf. Further runs of the command will be much faster since the text extraction will only apply to new pdfs.
To clear the cache (which contains text extracted from PDF), you can run 'fast-p --clear-cache'. This will safely remove the file located at:~/.cache/fast-p-pdftotext-output/fast-p_cached_pdftotext_output.db
For older versions, please manually delete the cache file found at~/.cache/fast-p_cached_pdftotext_output.db
On Ubuntu desktop (tested in 18.04), one may add a keyboard shortcut to launch a new terminal running thep
command right away.With the following script, the new terminal window will automatically close after choosing a PDF.
Create a file~/.fast-p-rc
with
source .bashrcp;sleep 0.15; exit;
and in Ubuntu Settings/Keyboard, add a custom shortcut that runs the commandgnome-terminal -- sh -c "bash --rcfile .fast-p-rc"
.
Yes, seehttps://github.com/bellecp/fast-p/blob/master/p but using the go binary as explained above is recommended for speed and interoperability.