{"id":13407463,"url":"https://github.com/carnager/rofi-pass","last_synced_at":"2026-02-23T05:02:27.200Z","repository":{"id":32510894,"uuid":"36091913","full_name":"carnager/rofi-pass","owner":"carnager","description":"rofi frontend for pass","archived":false,"fork":false,"pushed_at":"2024-06-16T10:51:49.000Z","size":1183,"stargazers_count":714,"open_issues_count":61,"forks_count":123,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-10-22T06:37:14.398Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/carnager.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-05-22T19:43:42.000Z","updated_at":"2025-10-14T15:51:23.000Z","dependencies_parsed_at":"2024-01-14T12:17:43.302Z","dependency_job_id":"2b812822-d73d-4c67-9554-dd06927c5a39","html_url":"https://github.com/carnager/rofi-pass","commit_stats":{"total_commits":473,"total_committers":40,"mean_commits":11.825,"dds":"0.19238900634249467","last_synced_commit":"629ad8d73a72d90f531ab6ebbdf78db710e25f2f"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/carnager/rofi-pass","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carnager%2Frofi-pass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carnager%2Frofi-pass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carnager%2Frofi-pass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carnager%2Frofi-pass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/carnager","download_url":"https://codeload.github.com/carnager/rofi-pass/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carnager%2Frofi-pass/sbom","scorecard":{"id":266486,"data":{"date":"2025-08-11","repo":{"name":"github.com/carnager/rofi-pass","commit":"37c4c862deb133a85b7d72989acfdbd2ef16b8ad"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":6,"reason":"Found 10/15 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 25 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T12:10:46.850Z","repository_id":32510894,"created_at":"2025-08-17T12:10:46.850Z","updated_at":"2025-08-17T12:10:46.850Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29738083,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T04:51:08.365Z","status":"ssl_error","status_checked_at":"2026-02-23T04:49:15.865Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-07-30T20:00:40.804Z","updated_at":"2026-02-23T05:02:27.180Z","avatar_url":"https://github.com/carnager.png","language":"Shell","funding_links":[],"categories":["Password Management","Interfaces","Shell"],"sub_categories":["All other extensions"],"readme":"# !!! This script is unmaintained !!!\n\n# rofi-pass\n\nA bash script to handle [Simple Password Store](http://www.passwordstore.org/)\nin a convenient way using [rofi](https://github.com/DaveDavenport/rofi).\n\n![rofi-pass](https://53280.de/rofi/rofi-pass.png \"rofi-pass in action\")\n\n## Features\n\n* Open URLs of entries with hotkey\n* Add new Entries to Password Storage\n* Edit existing Entries\n* Generate new passwords for entries\n* Inline view, which can copy/type individual entries\n* Move/Delete existing entries\n* Support for different password stores (roots), e.g. to separate passwords for\n  work from private passwords\n* Type any field from entry\n* Auto-typing of user and/or password fields.\n  The format for password files should look like:\n\n  ```\n  foobarmysecurepassword\n  user: MyUser\n  url: http://my.url.foo\n  ```\n\n* Auto-typing username based on path.\n  The structure of your password store must be like:\n\n  ```\n  foo/bar/site.com/username\n  ```\n\n  And you must set the `default-autotype` to `'path :tab pass'`.\n\n* Auto-typing of more than one field, using the `autotype` entry:\n\n  ```\n  foobarmysecurepassword\n  ---\n  user: MyUser\n  SomeField: foobar\n  AnotherField: barfoo\n  url: http://my.url.foo\n  autotype: SomeField :tab user :tab AnotherField :tab pass\n  ```\n\n  You can use `:tab`, `:enter`, or `:space` here to type \u003ckbd\u003eTab\u003c/kbd\u003e,\n  \u003ckbd\u003eEnter\u003c/kbd\u003e, or \u003ckbd\u003eSpace\u003c/kbd\u003e (useful for toggling checkboxes)\n  respectively.\n  `:otp` will generate an OTP, either `pass-otp(1)` style, or according to the\n  `otp_method:`, if it is defined.\n* Generating OTPs.\n  The format for OTPs should either compatible with `pass-otp(1)`:\n\n  ```\n  [...]\n  otpauth://[...]\n  ```\n\n  Or it should define a method for generating OTPs:\n\n  ```\n  [...]\n  otp_method: /opt/obscure-otp-generator/oog --some-option some args\n  ```\n\n  `:delay` will trigger a delay (2 seconds by default).\n* All hotkeys are configurable in the config file\n* The field names for `user`, `url` and `autotype` are configurable\n* Bookmarks mode (open stored URLs in browser, default: Alt+x)\n* Share common used passwords between several entries (with different URLs, usernames etc)\n* Change backend with environment variable `ROFI_PASS_BACKEND`, valid\n  backends are `xdotool` or `wtype`. For example use `rofi-pass` with\n  [wtype](https://github.com/atx/wtype):\n\n  ```\n  ROFI_PASS_BACKEND=wtype rofi-pass\n  ```\n\n  or\n\n  ```\n  ROFI_PASS_BACKEND=wtype ROFI_PASS_CLIPBOARD_BACKEND=wl-clipboard rofi-pass\n  ```\n\n  Alternative change the backend in the config file using\n  `backend=wtype` or `clibpoard_backend=wl-clipboard`.\n## Requirements\n\n* [pass](http://www.passwordstore.org/)\n* sed\n* [rofi](https://github.com/DaveDavenport/rofi)\n* xdotool or wtype\n* xclip or wl-clipboard\n* gawk\n* bash 4.x\n* find\n* pwgen\n* [pass-otp](https://github.com/tadfisher/pass-otp) (optional: for OTPs)\n\n### BSD\n\n* gnugrep\n* gawk\n\n## Configuration\n\nrofi-pass may read its configuration values from different locations in the following order:\n* `ROFI_PASS_CONFIG` (environment variable)\n* `$HOME/.config/rofi-pass/config`\n* `/etc/rofi-pass.conf`\n\nrofi-pass only loads the first existing file.\nIn case no config file exists, rofi-pass uses its internal default values.\nYou can set the environment variable like this:\n\n```\nROFI_PASS_CONFIG=\"$HOME/path/to/config\" rofi-pass\n```\n\nFor an example configuration please take a look at the included `config.example` file.\n\n## Extras\n\n### addpass\n\nrofi-pass comes with a tiny helper script, which makes it easier to create new pass entries.\nJust run it with\n\n```\naddpass --name \"My new Site\" +user \"zeltak\" +branch \"branch\" +custom \"foobar\" +autotype \"branch :tab user :tab pass\"\n```\n\n* First argument `--name` is mandatory. This will be the filename of the new password entry.\n* Second argument can be `--root` followed by absolute path to your password-store. addpass also uses root config setting from rofi-pass config file. If both are not found, PASSWORD_STORE_DIR variable is checked. If none of the above are found, the default location `$HOME/.password-store` is used.\n* `--root` can also be a colon separated list of directories, in which case you can navigate between them on the main menu with Shift+Left and Shift+Right.\n* Fieldnames are defined with `+` and the actual value is defined inside the quotations. You can add as many fields as you like\n\n### keepass2 import script\n\nAlso included is an import script for keepass2 databases. It's the same script that can be downloaded from the pass homepage, with some minor modifications to match rofi-pass structure.\n\n### csv exporter\n\nFinally a script to export your pass database to csv is included. The resulting csv was tested in keepassxc.\n\n## Sharing passwords\n\nRofi-pass allows you to easily share common used passwords across multiple entries.\nFor example, if you have an academic account which includes several services (such as a library, Salary, Student portal etc),  all with different URL's, login forms etc. you can share one password across all of them. This is very handy when the passwords change annually.\nTo use this function you need to add the following line instead of the password, referencing a pass file which holds the password:\n\n```\n#FILE=PATH/to/filename\n```\n\nwhere PATH is relative to your password-store.\n\n*And yes, you should slap your service provider for forcing you to share passwords across services.*\n\n## User filename as user\n\nIf your password file has no user field you can ask rofi-pass to use the filename instead.\nFor example with this password file path : `web/fsf.org/rms` rofi-pass will user `rms` as your username.\nTo get this, you need to set `default_user` to `:filename` in your configuration.\n\n## FAQ\n\n### rofi pass prints garbage instead of my actual passes\n\nMake sure to run `setxkbmap \u003clanguage\u003e \u003cvariant\u003e` at the start of your Xorg\nsession.\n\n### rofi pass hangs after selecting password\n\nTo access passwords your GPG agent needs to have unlocked your secret key\nyou're using to encrypt your passwords with. If the secret key hasn't been\nunlocked yet it will prompt for the secret key password using `pinentry`. If\n`pinentry` is configured to read from a `tty` then `rofi-pass` will hang\nindefinitely. To fix this you need to [configure gpg][gpg_pinentry_config] to\nuse a gui version of `pinentry`. E.g.\n```\n$ cat ~/.gnupg/gpg-agent.conf\npinentry-program /usr/bin/pinentry-qt\n```\nYou may have to kill the GPG agent if it's still in a bad state:\n```\nkillall -9 gpg-agent\n```\n\n## Alternative\n\njreinert has written the roughly compatible tool\n[autopass](https://github.com/jreinert/autopass). It has less features, but\ndefinately saner code.\nAlso he provided a nice little script called `passed` to change your\nfieldnames. [link](https://github.com/jreinert/passed)\n\n[gpg_pinentry_config][https://github.com/bfrg/gpg-guide/blob/master/gpg-agent.conf#L15]\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarnager%2Frofi-pass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcarnager%2Frofi-pass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarnager%2Frofi-pass/lists"}