{"id":13546518,"url":"https://github.com/2mol/pboy","last_synced_at":"2025-04-04T13:13:33.003Z","repository":{"id":34663896,"uuid":"132466280","full_name":"2mol/pboy","owner":"2mol","description":"a small .pdf management tool with a command-line UI","archived":false,"fork":false,"pushed_at":"2022-06-11T15:51:12.000Z","size":687,"stargazers_count":741,"open_issues_count":10,"forks_count":24,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-03-28T12:09:40.706Z","etag":null,"topics":["command-line","console-application","haskell","linux","macos","pdf","productivity","tui"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/2mol.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.txt","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"code_of_conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["2mol"]}},"created_at":"2018-05-07T13:41:54.000Z","updated_at":"2025-01-18T11:50:50.000Z","dependencies_parsed_at":"2022-07-10T18:01:21.281Z","dependency_job_id":null,"html_url":"https://github.com/2mol/pboy","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2mol%2Fpboy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2mol%2Fpboy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2mol%2Fpboy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2mol%2Fpboy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/2mol","download_url":"https://codeload.github.com/2mol/pboy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247182420,"owners_count":20897381,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["command-line","console-application","haskell","linux","macos","pdf","productivity","tui"],"created_at":"2024-08-01T12:00:39.325Z","updated_at":"2025-04-04T13:13:32.953Z","avatar_url":"https://github.com/2mol.png","language":"Haskell","readme":"\u003cimg srcset=\"https://raw.githubusercontent.com/2mol/pboy/main/doc/import.png 1x, https://raw.githubusercontent.com/2mol/pboy/main/doc/import.png 2x\" src=\"https://raw.githubusercontent.com/2mol/pboy/main/doc/import.png\" alt=\"pboy screenshot\" /\u003e\n\n[![GitHub CI](https://github.com/2mol/pboy/workflows/CI/badge.svg)](https://github.com/2mol/pboy/actions)\n\nPaperboy is a tiny .pdf management utility.\n\nIf you download papers and other pdf documents, you might have noticed that filenames like `1412.4880.pdf` are not terribly helpful for finding anything later on. Especially if your download folder _also_ contains about eighty files along the lines of `catloaf.jpg`, `David_Lynch_Teaches_Typing.zip`, and `160502_0001.wav`.\n\nThis tool helps with that. It will offer to rename and move files to a specified folder, and it even gives some filename suggestions by looking at the content and the pdf metadata.\n\nPaperboy keeps its file management dumb on purpose (no keeping files in a database or hidden library folder), so you can uninstall it at any time and your files will remain perfectly accessible.\n\n# Usage\n\n- Open a new file import dialog with \u003ckbd\u003eEnter\u003c/kbd\u003e or \u003ckbd\u003eSpace\u003c/kbd\u003e.\n- Switch between inbox and library with \u003ckbd\u003eTab\u003c/kbd\u003e.\n- Open a file from the library with \u003ckbd\u003eEnter\u003c/kbd\u003e or \u003ckbd\u003eSpace\u003c/kbd\u003e.\n- Rename an already imported file with \u003ckbd\u003er\u003c/kbd\u003e.\n- Quit the application with \u003ckbd\u003eEsc\u003c/kbd\u003e or \u003ckbd\u003eq\u003c/kbd\u003e or abort with \u003ckbd\u003eCtrl + c\u003c/kbd\u003e.\n\n# Install\n\n## Homebrew on macOS\n\nIf you're a Homebrew user, you can install the latest version and its dependencies from the repo's tap:\n\n```\n$ brew install 2mol/tools/pboy\n```\n\n## Linux/Mac binary release\n\nDownload the archive for your operating system from [https://github.com/2mol/pboy/releases](https://github.com/2mol/pboy/releases). Extract and install it with\n\n```\n$ tar zxvf pboy*.tar.gz\n$ mv pboy ~/.local/bin/\n```\n\nFor the latter to work, `~/.local/bin/` needs to exist and be in your `PATH`. Alternatively, put it in `/usr/local/bin`.\n\n## Linux, any distro\n\nI am still looking to package Paperboy for Debian/Ubuntu, Arch/Manjaro, Fedora, Doge Linux, or whatever else people install these days.\n\nAny pointers or help with regards to generate `.deb`, `.rpm`, AUR `PKGBUILD`, etc is appreciated. Ideally this could be mostly automated in CI, in the end Paperboy is just a single binary with a dependency or two. How do other packages do it? If you got a good example or link, open a GitHub issue!\n\n## Cabal/Stack\n\nMake sure you have `poppler` installed, which will provide both `pdftotext` and `pdfinfo`. On Linux, install `poppler` with your package manager of choice. If you are on Mac and using Homebrew you can do `brew install poppler`.\n\nAssuming you have cabal or stack, the following will compile, then install the `pboy` executable in your `.local/bin`:\n\n```\n$ git clone git@github.com:2mol/pboy.git\n$ cd pboy\n$ stack install\n```\n\nReplace `stack install` with `cabal new-install` at your leisure.\n\n## Nix\n\nIf you have Nix, then you can install `pboy` with a single command:\n\n```\n$ nix-env -if https://github.com/2mol/pboy/tarball/main\n```\n\n# Config\n\nPaperboy creates a `pboy.ini` in your XDG config directory. This is probably in `~/.config/pboy/pboy.ini`, the welcome or help screen will tell you. Use this to change your library and incoming folders, as well as to specify whether you want to move the imported files or just copy them.\n\n# Current Limitations\n\nPaperboy doesn't do anything fancy with providing renaming patterns yet. For example, some people requested to be able to specify a format like `author-document_name-date.pdf`, others have asked if they could compose multiple suggestions into one. I haven't figured out a way to do this while keeping the UI simple and straightforward, so the idea needs a bit of design work first.\n\n# Contribute\n\nYou're very welcome to suggest new features or open issues. See the Roadmap https://github.com/2mol/pboy/blob/main/Roadmap.md to get an idea about what's planned for future releases.\n\nReleases can be created by pushing a new tag:\n\n```bash\ngit tag -a 1.99rc1 -m \"release candidate 1.99\"\ngit push --follow-tags\n```\n\nThis will publish compiled assets for OSX and Linux, but only create a prerelease. Once you're confident that the executable isn't broken, a repo contributor can mark the version as a release.\n\nFinally, to publish the new version via Homebrew, the [tools repo](https://github.com/2mol/homebrew-tools) has to be updated with the SHA256 of `pboy-osx.tar.gz`. You can find it in the CI logs, or you could run `shasum -a 256 pboy-osx.tar.gz` manually.\n\n# Thanks\n\n- [brick](https://github.com/jtdaugherty/brick) is a lovely way to a write a command-line UI.\n- [nmattia](https://github.com/nmattia) did the work to get Paperboy to build with [nix](https://github.com/NixOS/nix) and patiently explained some of the basics to me.\n- OsugiSakae and bri-an on reddit helped me with an annoying performance issue!\n- [Nils Steinger](https://github.com/n-st) for feature contributions.\n- [Adrian Sieber](https://github.com/ad-si) for contributing.\n\nThe name 'Paperboy' is a reference to [this game](https://en.wikipedia.org/wiki/Paperboy_(video_game)), which I had for the NES and never quite mastered.\n","funding_links":["https://github.com/sponsors/2mol"],"categories":["Haskell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2mol%2Fpboy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F2mol%2Fpboy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2mol%2Fpboy/lists"}