{"id":23877533,"url":"https://github.com/revathskumar/bender","last_synced_at":"2026-05-14T08:43:14.225Z","repository":{"id":270840990,"uuid":"908282311","full_name":"revathskumar/bender","owner":"revathskumar","description":"Text Transformer","archived":false,"fork":false,"pushed_at":"2025-01-10T18:24:15.000Z","size":1283,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-10T18:34:15.041Z","etag":null,"topics":["adwaita","gnome","gtk","gtk4","text-manipulator","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/revathskumar.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":"2024-12-25T17:13:30.000Z","updated_at":"2025-01-10T18:24:18.000Z","dependencies_parsed_at":"2025-01-04T19:01:13.212Z","dependency_job_id":null,"html_url":"https://github.com/revathskumar/bender","commit_stats":null,"previous_names":["revathskumar/bender"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revathskumar%2Fbender","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revathskumar%2Fbender/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revathskumar%2Fbender/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revathskumar%2Fbender/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/revathskumar","download_url":"https://codeload.github.com/revathskumar/bender/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240241802,"owners_count":19770463,"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":["adwaita","gnome","gtk","gtk4","text-manipulator","typescript"],"created_at":"2025-01-03T20:14:01.132Z","updated_at":"2026-05-14T08:43:14.209Z","avatar_url":"https://github.com/revathskumar.png","language":"TypeScript","funding_links":[],"categories":["Development"],"sub_categories":["Text Processing"],"readme":"# Bender\n\n\u003e Bending Text\n\n## Demo\n\n![demo](/images/adwaita-demo.gif)\n\n## Usage\n\n```sh\ngreenclip print |  gjs -m \"dist/main.js\"\n```\n\nor\n\n```sh\necho -e 'hello \\n 123' |  gjs -m \"dist/main.js\"\n```\n\n## Configuration\n\nCopy [config.yaml](/config.yaml) to `~/.config/bender/config.yaml` (`$XDG_CONFIG_HOME/bender/config.yaml`)\n\nAvailable actions:\n\n* replace \"\u003csearch_val\u003e\" \"\u003creplace_val\u003e\"\n* uppercase\n* lowercase\n* snakecase\n* onlyAlphanum\n* toHex\n* reverse\n* removeDiacritics\n* extract \"\u003cregexp\u003e\"\n  NOTES:\n    * `'\\'` in `\\d`, `\\s` extra should escaped like `\\\\s` or `\\\\d`\n    * Regexp flags are not supported\n\n\nAdd new entry for `actions`\n\n```yaml\n  - label: remove space\n    action: replace \" \" \"\"\n```\n\nuse pipe(`|`) to use mulitple actions\n\n\n```yaml\n  - label: enum\n    action: snakecase | uppercase\n```\n\n## Key bindings\n\n* `ESC` - close the window\n* `ENTER` - Apply the focused action (print the output to stdout \u0026 close the window)\n* `RIGHT ARROW` - Open the actions sidebar\n* `LEFT ARROW` - Close the actions sidebar\n* `any alphanumeric` - search \u0026 filter the list\n* `UP/DOWN ARROWS` -\n    * navigate through the list (when the actions sidebar is closed)\n    * navigate through available actions (when actions sidebar is open with `RIGHT ARROW`)\n* `CTRL+\u003c1-9\u003e` : On list view\n  * print the item (based on position 1-9) to stdout\n\n## Dev setup\n\n### Install dependencies\n\n* libgtk4\n* libadwaita\n* gjs - 1.74.2\n* meson - 1.0.1\n\n```sh\nsudo apt install libgtk-4-1 libgtk-4-dev libadwaita-1-dev\n```\n\n```sh\nnpm i\nnpm run build\necho -e \"Hello\\nBender\" | G_MESSAGES_DEBUG=all ./bin/bender\n```\n\n## Build \u0026 Install\n\n### Dev build\n\n```sh\nnpm run build\nmeson setup --prefix=***/path/to/bender/run/ builddir/\nmeson compile -C builddir/\nmeson install -C builddir/\necho -e \"Hello\\nBender\" | ./run/bin/com.revathskumar.bender\n```\n\n```sh\nnpm run build\nmeson setup builddir\nmeson compile -C builddir\nsudo meson install -C builddir\n```\n\nand run it by `echo -e \"Hello\\nBender\" | com.revathskumar.bender`\n\n### Using flatpak\n\n```sh\nflatpak-builder --force-clean --user --install-deps-from=flathub --repo=repo --install builddir com.revathskumar.bender.yaml\necho -e \"Hello\\nBender\" | flatpak run com.revathskumar.bender\n```\n\n## Credits\n\nInspired by [Rofi](https://github.com/davatorium/rofi)\nBased on [gjsify/example-gtk4](https://github.com/gjsify/example-gtk4) by Pascal Garber\n\n## License\n\n[MIT](/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frevathskumar%2Fbender","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frevathskumar%2Fbender","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frevathskumar%2Fbender/lists"}