{"id":29400863,"url":"https://github.com/wheelibin/qrypad","last_synced_at":"2026-05-20T23:07:07.472Z","repository":{"id":246773672,"uuid":"821483237","full_name":"wheelibin/qrypad","owner":"wheelibin","description":"A simple terminal UI for quick, ad-hoc database exploration","archived":false,"fork":false,"pushed_at":"2025-07-08T22:31:49.000Z","size":14665,"stargazers_count":10,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-08T23:20:17.559Z","etag":null,"topics":["cli","databases","go","golang","tui"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wheelibin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-06-28T16:34:59.000Z","updated_at":"2025-07-08T22:31:46.000Z","dependencies_parsed_at":"2024-09-07T07:56:02.480Z","dependency_job_id":"01e7fd6e-09e7-49bf-846f-dc645c5527ff","html_url":"https://github.com/wheelibin/qrypad","commit_stats":null,"previous_names":["wheelibin/dbee","wheelibin/qrypad"],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/wheelibin/qrypad","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wheelibin%2Fqrypad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wheelibin%2Fqrypad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wheelibin%2Fqrypad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wheelibin%2Fqrypad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wheelibin","download_url":"https://codeload.github.com/wheelibin/qrypad/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wheelibin%2Fqrypad/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28434701,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T18:57:19.464Z","status":"ssl_error","status_checked_at":"2026-01-14T18:52:48.501Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["cli","databases","go","golang","tui"],"created_at":"2025-07-10T15:01:57.728Z","updated_at":"2026-05-20T23:07:07.465Z","avatar_url":"https://github.com/wheelibin.png","language":"Go","funding_links":[],"categories":["Applications","Table of Contents"],"sub_categories":["Database Tools"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/header.png\" style=\"width:600px; height:auto;\" /\u003e\n\u003c/p\u003e\n\nA terminal SQL client for Postgres, MySQL and SQLite.\n\n## Features\n\n- Table / column autocomplete in the query pad\n- Run the statement under the cursor\n- Syntax highlighting\n- Filter tables, columns and result sets\n- View a snapshot of any table with a single keypress\n- Browse tables, views, columns, indexes and constraints\n- Switch between configured connections without restarting\n- Switch databases on the current connection (Postgres / MySQL)\n- Postgres schema support — switch schemas on the fly\n- Inspect a full result row in a popup, with long values wrapped across lines\n- Save and reload a query pad per connection, or open it in `$EDITOR`\n- Export results to JSON or CSV\n- Configurable key bindings and themes\n- Passwords stored in the OS keychain\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/ss.png\" style=\"max-width:100%; height:auto;\"/\u003e\n\u003c/p\u003e\n\n## Installation\n\n### Binary\n\nhttps://github.com/wheelibin/qrypad/releases\n\n### Go install\n\n```\ngo install github.com/wheelibin/qrypad@latest\n```\n\n## Usage\n\n```\nqrypad\nqrypad --connection \u003cconnection name\u003e\n```\n\n`--connection` must match an entry in the config file. If omitted, you will be prompted to choose a connection on startup.\n\nIf the connection requires a password you will be prompted on first use; it is then stored in the OS keychain.\n\nYou can also switch connections from inside the app with `Ctrl+K`.\n\n## Config\n\nConfig is read from `~/.config/qrypad/config.toml`.\n\n### Example\n\n```toml\n# query timeout (seconds)\nqueryTimeout = 60\n\n# max rows fetched when viewing table data (does not apply to ad-hoc queries)\ntableDataRowLimit = 100\n\n[theme]\nname = \"catppuccin\"\n\n[connections]\n\n[connections.animals]\ndriver = \"mysql\"\nhost = \"localhost\"\nport = 3306\nuser = \"root\"\ndatabase = \"animals.0\"\n\n[connections.music]\ndriver = \"postgres\"\nhost = \"localhost\"\nport = 5432\nuser = \"postgres\"\ndatabase = \"music-store\"\n\n[connections.orders]\ndriver = \"sqlite\"\ndatabase = \"db/orders.db\"\n```\n\n## Key bindings\n\n\u003cdetails\u003e\n    \u003csummary\u003eDefault key bindings\u003c/summary\u003e\n\n### General\n\n- `Tab` / `Shift+Tab` — switch panels\n- `?` — show help\n- `Ctrl+D` — switch database\n- `Ctrl+K` — switch connection\n- `Ctrl+P` — update stored password\n- `Ctrl+B` — toggle the left (tables / info) panel\n- `R` — refresh schema\n- `/` — filter tables (`esc` to cancel)\n\n### Tables panel\n\n- `Enter` — fetch first N rows (`tableDataRowLimit`)\n- `]` / `[` — switch tabs\n- `y` — copy the selected table name\n\n### Table info panel\n\n- `]` / `[` — switch tabs\n- `y` — copy the selected column / index name\n- `/` — filter columns (`esc` to cancel)\n\n### Query panel\n\n- `F5` — run the statement at the cursor\n- `Ctrl+Space` — autocomplete table / column\n- `Ctrl+S` — save the query pad (per connection)\n- `Ctrl+R` — reload the saved query pad from disk\n- `Ctrl+E` — open the query pad in `$EDITOR`\n- `Ctrl+Z` — undo\n- `Ctrl+Y` — redo\n\n### Results panel\n\n- `Enter` — open the selected row in a popup\n  - `y` — copy the selected value\n- `y` — copy the selected row as JSON\n- `/` — filter results (`esc` to cancel)\n\n\u003c/details\u003e\n\n### Overriding key bindings\n\nAny of the keys below can be overridden in the config file.\n\n```toml\n[keys]\nAutoComplete     = \"\"\nCopyValue        = \"\"\nExecuteQuery     = \"\"\nHelp             = \"\"\nNextPanel        = \"\"\nNextTab          = \"\"\nOpenInEditor     = \"\"\nPrevPanel        = \"\"\nPrevTab          = \"\"\nRedo             = \"\"\nRefreshSchema    = \"\"\nReloadQuery      = \"\"\nSaveQuery        = \"\"\nSwitchConnection = \"\"\nSwitchDatabase   = \"\"\nToggleLeftPanel  = \"\"\nUndo             = \"\"\nUpdatePassword   = \"\"\nViewData         = \"\"\nViewDataDesc     = \"\"\n```\n\n## Themes\n\n### Built-in themes\n\n- `kanagawa` (default)\n- `catppuccin`\n- `rose-pine`\n\nSet the active theme in the config:\n\n```toml\n[theme]\nname = \"catppuccin\"\n```\n\n### Customising themes\n\nOverride individual colours on top of an existing theme:\n\n```toml\n[theme]\nname         = \"catppuccin\"\nborderActive = { fg = \"#ff00ff\" }\n```\n\nOr define a new theme from scratch by giving it a new name and setting the colours:\n\n```toml\n[theme]\nname                  = \"my-custom-theme\"\nborderActive          = { bg = \"\", fg = \"#ff00ff\" }\ncurrentStatement      = { bg = \"\", fg = \"\" }\ndatabaseSwitcherPopup = { bg = \"\", fg = \"\" }\nerror                 = { bg = \"\", fg = \"\" }\nhelpPopup             = { bg = \"\", fg = \"\" }\nhelpKey               = { bg = \"\", fg = \"\" }\nhelpDesc              = { bg = \"\", fg = \"\" }\npanelTitle            = { bg = \"\", fg = \"\" }\npanelTitleActive      = { bg = \"\", fg = \"\" }\nrowDetailsPopup       = { bg = \"\", fg = \"\" }\nspinner               = { bg = \"\", fg = \"\" }\nstatusBar             = { bg = \"\", fg = \"\" }\ntableBorder           = { bg = \"\", fg = \"\" }\ntableHeader           = { bg = \"\", fg = \"\" }\ntext                  = { bg = \"\", fg = \"\" }\ntitleBar              = { bg = \"\", fg = \"\" }\ntitleBarAlt           = { bg = \"\", fg = \"\" }\nsyntaxKeyword         = { fg = \"\" }\nsyntaxString          = { fg = \"\" }\nsyntaxNumber          = { fg = \"\" }\nsyntaxComment         = { fg = \"\" }\nsyntaxOperator        = { fg = \"\" }\nsyntaxName            = { fg = \"\" }\nsyntaxLiteral         = { fg = \"\" }\nsyntaxPunctuation     = { fg = \"\" }\n```\n\nThe `syntax*` keys control SQL syntax highlighting colours. If omitted, they fall back to colours derived from the UI theme.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwheelibin%2Fqrypad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwheelibin%2Fqrypad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwheelibin%2Fqrypad/lists"}