Alfred workflow integration for the Paperless-ngx document management system. Highlights include:
- Secure token in the keychain, no credential storage
- Cache enabled document thumbnail support
- Cache enabled document download/view
- ⇣ uncached document
- ↓ cached document
- Download the workflow in the GitHub releases section. It is a
.zip
file; rename it to.alfredworkflow
to import. A better solution would be to include the.alfredworkflow
inside the.zip
for the GitHub release process. - Open in finder to import the workflow in Alfred
- Set up the
PAPERLESS_INSTANCE
environment variable to point to your Paperless installation url. Example:http://paperless.local:8000/
- Clone the repo
cd paperless-alfred
pip3 install -r requirements.txt --target=./
zip -r paperless-alfred.alfredworkflow .
open paperless-alfred.alfredworkflow
- Go to step 3 from release page installation
- Run
pplc username password
to connect to your Paperless instance. This workflow does not retain your credentials. Instead, it will pull a token from Paperless and store it securely into your keychain. - Run
ppl <your search>
to search in your documents-
Use the arrow keys or the mouse to select one document and hit
[ENTER]
to view it. The search supports matrix is purely dictated by Paperless[1]:Only a small subset of filtering parameters are supported.
-
Once you viewed it once, it's cached on your system, and presented to Alfred as such. Which allows for all the file triggers to take place (copy, move, send, info, ...)
-
Caching does not mean offline search. The search is handled by Paperless, and the result of the search is used to match a document ID on the local system if present. The paperless instance should be accessible for this workflow to work.
- Nice GIF demonstrating the workflow
- All around code cleanup & robustness
- Front-end command dispatcher script
- Should take the form of what Alfred qualifies as a filter script
- Call into the proper backend script instead of letting the backend script handle everything
- Avoids having to register multiple keywords. Ideally people could do:
ppl connect
ppl purge
ppl <search terms>
this would likely be implemented in the form of "all the pattern that did not match a command"