{"id":36947745,"url":"https://github.com/chenasraf/watchr","last_synced_at":"2026-04-02T12:33:30.758Z","repository":{"id":327407202,"uuid":"1109136256","full_name":"chenasraf/watchr","owner":"chenasraf","description":"Terminal UI for running and watching command output","archived":false,"fork":false,"pushed_at":"2025-12-31T09:29:20.000Z","size":90,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-04T13:35:15.845Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","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/chenasraf.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"chenasraf","patreon":null,"open_collective":null,"ko_fi":"casraf","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=TSH3C3ABGQM22\u0026currency_code=ILS\u0026source=url"]}},"created_at":"2025-12-03T11:43:36.000Z","updated_at":"2025-12-31T09:28:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chenasraf/watchr","commit_stats":null,"previous_names":["chenasraf/watchr"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/chenasraf/watchr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenasraf%2Fwatchr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenasraf%2Fwatchr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenasraf%2Fwatchr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenasraf%2Fwatchr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chenasraf","download_url":"https://codeload.github.com/chenasraf/watchr/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenasraf%2Fwatchr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28384210,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T10:34:27.190Z","status":"ssl_error","status_checked_at":"2026-01-13T10:34:26.289Z","response_time":56,"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":"2026-01-13T11:40:19.778Z","updated_at":"2026-04-02T12:33:30.751Z","avatar_url":"https://github.com/chenasraf.png","language":"Go","funding_links":["https://github.com/sponsors/chenasraf","https://ko-fi.com/casraf","https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=TSH3C3ABGQM22\u0026currency_code=ILS\u0026source=url","https://ko-fi.com/casraf'"],"categories":[],"sub_categories":[],"readme":"# watchr\n\n**`watchr`** is a terminal UI for running commands and interactively browsing their output. It\nprovides vim-style navigation, filtering, and a preview pane—all without leaving your terminal.\n\n![Release](https://img.shields.io/github/v/release/chenasraf/watchr)\n![Downloads](https://img.shields.io/github/downloads/chenasraf/watchr/total)\n![License](https://img.shields.io/github/license/chenasraf/watchr)\n\n![Promo](https://github.com/user-attachments/assets/ec5ab94b-ef91-40d8-a604-9047212a8faf)\n\n---\n\n## 🚀 Features\n\n- **Interactive output viewer**: Browse command output with vim-style keybindings\n- **Live filtering**: Press `/` to filter output lines in real-time, with regex support (`//`)\n- **Preview pane**: Toggle a resizable preview panel (bottom, top, left, or right) with JSON syntax\n  highlighting\n- **Auto-refresh**: Optionally re-run commands at specified intervals\n- **Line numbers**: Optional line numbering with configurable width\n- **Config files**: YAML, TOML, or JSON config files for persistent settings\n- **Full-screen TUI**: Clean, distraction-free interface using your entire terminal\n\n---\n\n## 🎯 Installation\n\n### Download Precompiled Binaries\n\nGrab the latest release for **Linux**, **macOS**, or **Windows**:\n\n- [Releases →](https://github.com/chenasraf/watchr/releases/latest)\n\n### Homebrew (macOS/Linux)\n\nInstall directly from the tap:\n\n```bash\nbrew install chenasraf/tap/watchr\n```\n\nOr tap and then install the package:\n\n```bash\nbrew tap chenasraf/tap\nbrew install watchr\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/chenasraf/watchr\ncd watchr\nmake build\nmake install  # installs to ~/.local/bin\n```\n\n---\n\n## ✨ Getting Started\n\n### Basic Usage\n\n```bash\n# View output of any command\nwatchr ls -la\n\n# View logs\nwatchr \"tail -100 /var/log/system.log\"\n\n# Monitor processes\nwatchr \"ps aux\"\n```\n\n### Auto-Refresh\n\n```bash\n# Refresh every 2 seconds\nwatchr -r 2 \"docker ps\"\n\n# Refresh every 500 milliseconds\nwatchr -r 500ms \"date\"\n\n# Refresh every 1.5 seconds\nwatchr -r 1.5s \"kubectl get pods\"\n\n# Refresh every 5 minutes\nwatchr -r 5m \"df -h\"\n\n# Refresh every hour\nwatchr -r 1h \"curl -s https://api.example.com/status\"\n\n# Watch file changes\nwatchr -r 5 \"find . -name '*.go' -mmin -1\"\n```\n\n### Options\n\n```\nUsage: watchr [options] \u003ccommand to run\u003e\n\nOptions:\n  -c, --config string             Load config from specified path\n  -h, --help                      Show help\n  -i, --interactive               Run shell in interactive mode (sources ~/.bashrc, ~/.zshrc, etc.)\n  -w, --line-width int            Line number width (default 6)\n  -n, --no-line-numbers           Disable line numbers\n  -o, --preview-position string   Preview position: bottom, top, left, right (default \"bottom\")\n  -P, --preview-size string       Preview size: number for lines/cols, or number% for percentage (e.g., 10 or 40%) (default \"40%\")\n  -p, --prompt string             Prompt string (default \"watchr\u003e \")\n  -r, --refresh string            Auto-refresh interval (e.g., 1, 1.5, 500ms, 2s, 5m, 1h; default unit: seconds, 0 = disabled) (default \"0\")\n      --refresh-from-start        Start refresh timer when command starts (default: when command ends)\n  -s, --shell string              Shell to use for executing commands (default \"sh\")\n  -C, --show-config               Show loaded configuration and exit\n  -v, --version                   Show version\n```\n\n---\n\n## 📁 Configuration File\n\n`watchr` supports configuration files in YAML, TOML, or JSON format. Settings in config files serve\nas defaults that can be overridden by command-line flags.\n\n### Config File Locations\n\nConfig files are searched in the following order (later files override earlier ones):\n\n1. **XDG config directory** (Linux/macOS): `~/.config/watchr/watchr.{yaml,toml,json}`\n2. **Windows**: `%APPDATA%\\watchr\\watchr.{yaml,toml,json}`\n3. **Current directory** (project-local): `./watchr.{yaml,toml,json}`\n\n### Example Configurations\n\n**YAML** (`watchr.yaml`):\n\n```yaml\nshell: bash\npreview-size: '50%'\npreview-position: right\nline-numbers: true\nline-width: 4\nprompt: '\u003e '\nrefresh: 0 # disabled; or use: 2, 1.5, \"500ms\", \"2s\", \"5m\", \"1h\"\ninteractive: false\n```\n\n**TOML** (`watchr.toml`):\n\n```toml\nshell = \"bash\"\npreview-size = \"50%\"\npreview-position = \"right\"\nline-numbers = true\nline-width = 4\nprompt = \"\u003e \"\nrefresh = 0 # disabled; or use: 2, 1.5, \"500ms\", \"2s\", \"5m\", \"1h\"\ninteractive = false\n```\n\n**JSON** (`watchr.json`):\n\n```json\n{\n  \"shell\": \"bash\",\n  \"preview-size\": \"50%\",\n  \"preview-position\": \"right\",\n  \"line-numbers\": true,\n  \"line-width\": 4,\n  \"prompt\": \"\u003e \",\n  \"refresh\": 0,\n  \"interactive\": false\n}\n```\n\nThe `refresh` option accepts:\n\n- Numbers: `2` or `1.5` (interpreted as seconds)\n- Explicit units: `\"500ms\"`, `\"2s\"`, `\"5m\"`, `\"1h\"`\n\n### Priority Order\n\nConfiguration values are applied in this order (later sources override earlier ones):\n\n1. Built-in defaults\n2. XDG/system config file\n3. Project-local config file (current directory)\n4. Command-line flags\n\n---\n\n## ⌨️ Keybindings\n\n| Key                | Action                           |\n| ------------------ | -------------------------------- |\n| `r`, `Ctrl-r`      | Reload (re-run command)          |\n| `R`                | Reload \u0026 clear all lines         |\n| `d`, `Del`         | Delete selected line             |\n| `D`                | Clear all lines                  |\n| `c`                | Stop running command             |\n| `q`, `Esc`         | Quit                             |\n| `j`, `k`           | Move down/up                     |\n| `g`                | Go to first line                 |\n| `G`                | Go to last line                  |\n| `Ctrl-d`, `Ctrl-u` | Half page down/up                |\n| `PgDn`, `Ctrl-f`   | Full page down                   |\n| `PgUp`, `Ctrl-b`   | Full page up                     |\n| `p`                | Toggle preview pane              |\n| `+` / `-`          | Increase / decrease preview size |\n| `J` / `K`          | Scroll preview down / up         |\n| `/`                | Enter filter mode                |\n| `//`               | Toggle regex filter mode         |\n| `Esc`              | Exit filter mode / clear filter  |\n| `y`                | Yank (copy) selected line        |\n| `Y`                | Yank selected line (plain text)  |\n| `:`                | Open command palette             |\n| `?`                | Show help overlay                |\n\n### Filter mode\n\nWhen in filter mode (`/`), the following keys are available:\n\n| Key                      | Action                                   |\n| ------------------------ | ---------------------------------------- |\n| `Enter`                  | Confirm filter                           |\n| `Esc`                    | Cancel and clear filter                  |\n| `Left` / `Right`         | Move cursor within filter                |\n| `Alt-Left` / `Alt-Right` | Move cursor by word                      |\n| `Backspace`              | Delete character before cursor           |\n| `Alt-Backspace`          | Delete word before cursor                |\n| `/`                      | Toggle regex mode (when filter is empty) |\n\n---\n\n## 🛠️ Contributing\n\nI am developing this package on my free time, so any support, whether code, issues, or just stars is\nvery helpful to sustaining its life. If you are feeling incredibly generous and would like to donate\njust a small amount to help sustain this project, I would be very very thankful!\n\n\u003ca href='https://ko-fi.com/casraf' target='_blank'\u003e\n  \u003cimg height='36' style='border:0px;height:36px;' src='https://cdn.ko-fi.com/cdn/kofi1.png?v=3' alt='Buy Me a Coffee at ko-fi.com' /\u003e\n\u003c/a\u003e\n\nI welcome any issues or pull requests on GitHub. If you find a bug, or would like a new feature,\ndon't hesitate to open an appropriate issue and I will do my best to reply promptly.\n\n---\n\n## 📜 License\n\n`watchr` is licensed under the [MIT License](/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchenasraf%2Fwatchr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchenasraf%2Fwatchr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchenasraf%2Fwatchr/lists"}