{"id":13508992,"url":"https://github.com/zquestz/s","last_synced_at":"2025-05-13T22:10:29.189Z","repository":{"id":44672896,"uuid":"50270924","full_name":"zquestz/s","owner":"zquestz","description":"Open a web search in your terminal.","archived":false,"fork":false,"pushed_at":"2024-11-13T23:55:45.000Z","size":1903,"stargazers_count":2409,"open_issues_count":1,"forks_count":117,"subscribers_count":40,"default_branch":"master","last_synced_at":"2025-04-30T15:18:11.638Z","etag":null,"topics":["golang","search","terminal"],"latest_commit_sha":null,"homepage":null,"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/zquestz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["zquestz"]}},"created_at":"2016-01-24T03:44:07.000Z","updated_at":"2025-04-27T18:05:18.000Z","dependencies_parsed_at":"2023-10-12T13:42:17.487Z","dependency_job_id":"729d0428-2459-43f0-aa02-65d86ce5ff1e","html_url":"https://github.com/zquestz/s","commit_stats":{"total_commits":368,"total_committers":50,"mean_commits":7.36,"dds":0.2907608695652174,"last_synced_commit":"57b82d13257b1999e6f9185465664c685a84dc61"},"previous_names":[],"tags_count":47,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zquestz%2Fs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zquestz%2Fs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zquestz%2Fs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zquestz%2Fs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zquestz","download_url":"https://codeload.github.com/zquestz/s/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254036832,"owners_count":22003654,"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":["golang","search","terminal"],"created_at":"2024-08-01T02:01:01.479Z","updated_at":"2025-05-13T22:10:29.159Z","avatar_url":"https://github.com/zquestz.png","language":"Go","readme":"# s\n\n[![License][License-Image]][License-URL] [![ReportCard][ReportCard-Image]][ReportCard-URL] [![Build][Build-Status-Image]][Build-Status-URL] [![Release][Release-Image]][Release-URL] [![🧪 Snap Builds][Snap-Build-Image]][Snap-Build-URL] [![Snap Status][Snap-Image]][Snap-URL]\n\nWeb search from the terminal. Just opens in your browser.\n\n```text\nUsage:\n  s \u003cquery\u003e [flags]\n\nFlags:\n  -b, --binary string       binary to launch search URI\n  -c, --cert string         path to cert.pem for TLS\n      --completion string   completion script for bash, zsh, fish or powershell\n  -h, --help                help for s\n  -k, --key string          path to key.pem for TLS\n  -l, --list-providers      list supported providers\n      --list-tags           list available tags\n  -o, --output              output only mode\n      --port int            server port (default 8080)\n  -p, --provider string     search provider (default \"presearch\")\n  -s, --server              launch web server\n  -t, --tag string          search tag\n  -v, --verbose             verbose mode\n      --version             display version\n```\n\n## Install\n\nMake sure that `GOPATH` and `GOBIN` env vars are set. Then run:\n\n```zsh\ngo install github.com/zquestz/s@latest\n```\n\nAlternatively, you can use Homebrew:\n\n```zsh\nbrew install s-search\n```\n\nArch Linux users can install from the AUR:\n\n```zsh\nyay -S s\n```\n\n## Examples\n\nSearch for puppies on presearch.\n\n```zsh\ns puppies\n```\n\nSearch for dragonflies on google.\n\n```zsh\ns -p google dragonflies\n```\n\nSearch for a wifi router on amazon\n\n```zsh\ns -p amazon wifi router\n```\n\nSearch for rhinos on wikipedia\n\n```zsh\ns -p wikipedia rhinos\n```\n\nSearch providers tagged \"video\" for muppets.\n\n```zsh\ns -t video muppets\n```\n\n## Provider/Tag Expansion\n\nWe can do partial matching of provider and tag names. This searches Facebook for hamsters.\n\n```zsh\ns -p fa hamsters\n```\n\nOr toasters on amazon.\n\n```zsh\ns -p am toasters\n```\n\nThis searches \"tech-news\" tagged providers for ssd info.\n\n```zsh\ns -t te ssd\n```\n\nOr shopping sites for blankets.\n\n```zsh\ns -t sh blankets\n```\n\n## Provider/Tag Autocompletion\n\nAutocompletion is supported for providers and tags. To set up autocompletion:\n\n### Bash Linux\n\n```bash\nsudo bash -c \"s --completion bash \u003e /etc/bash_completion.d/s\"\n```\n\n### Bash MacOS\n\n```bash\nsudo bash -c \"s --completion bash \u003e /usr/local/etc/bash_completion.d/s\"\n```\n\n### Zsh\n\nGenerate a `_s` completion script and put it somewhere in your `$fpath`:\n\n```zsh\nsudo zsh -c \"s --completion zsh \u003e /usr/local/share/zsh/site-functions/_s\"\n```\n\n### Fish\n\n```zsh\ns --completion fish \u003e ~/.config/fish/completions/s.fish\n```\n\n### Powershell\n\n```powershell\n(\u0026 s --completion powershell) | Out-String | Invoke-Expression\n```\n\n## Advanced\n\nSetup an alias in your `.profile` for your favorite providers.\n\n```bash\nalias sa=\"s -p amazon\"\nalias sw=\"s -p wikipedia\"\n```\n\nUse w3m to find cats instead of just your default browser.\n\n```zsh\ns -b w3m cats\n```\n\nSearch for conspiracy theories in incognito mode.\n\n```zsh\ns -b \"chromium --incognito\" conspiracy theories\ns -b \"firefox --private-window\" conspiracy theories\n```\n\nSearch in a specific subreddit.\n\n```zsh\ns -p reddit /r/cscareerquestions best startups.\n```\n\n## Server Mode\n\nA web interface is also provided. Just pass the `-s` flag.\n\nStart a server on port 8080 (default).\n\n```zsh\ns -s\n```\n\nStart a server with TLS on port 8443.\n\n```zsh\ns -s -c /path/to/cert.pem -k /path/to/key.pem --port 8443\n```\n\nFeel free to try it out at [https://jumps.io/](https://jumps.io/).\n\n## Configuration\n\nTo setup your own default configuration just create `~/.config/s/config`. The configuration file is in UCL format.\n\nFor more information about UCL visit:\n[https://github.com/vstakhov/libucl](https://github.com/vstakhov/libucl)\n\nThe following keys are supported:\n\n* blacklist (array of providers to exclude)\n* binary (binary to launch search URI)\n* cert (path to cert.pem for TLS)\n* customProviders (array of custom providers)\n* key (path to key.pem for TLS)\n* output (output only mode)\n* port (server port)\n* provider (search provider)\n* tag (search tag)\n* verbose (verbose mode)\n* whitelist (array of providers to include)\n\nSet your default provider to duckduckgo:\n\n```ucl\nprovider: duckduckgo\n```\n\nTo only search a few providers:\n\n```ucl\nwhitelist: [google, amazon, wikipedia]\n```\n\nTo exclude providers you don't need:\n\n```ucl\nblacklist: [dumpert]\n```\n\nTo add a custom provider:\n\n```ucl\ncustomProviders [\n  {\n    name: example\n    url: \"https://example.com?q=%s\"\n    tags: [example]\n  }\n]\n```\n\nCustom providers require a few things:\n\n* An alphanumeric name. `^[a-zA-Z0-9_]*$`\n* A `%s` token for the query string.\n* A valid URL scheme.\n\n## Supported Providers\n\n* 500px\n* 8tracks\n* aliexpress\n* allocine\n* amazon\n* archpkg\n* archwiki\n* ardmediathek\n* arstechnica\n* arxiv\n* atmospherejs\n* aur\n* baidu\n* bandcamp\n* bgr\n* bigbasket\n* bing\n* brave\n* buzzfeed\n* cnn\n* codepen\n* coursera\n* cplusplus\n* cppreference\n* crates\n* crunchyroll\n* debianpkg\n* dict\n* diigo\n* dockerhub\n* dribbble\n* duckduckgo\n* dumpert\n* ecosia\n* engadget\n* explainshell\n* facebook\n* flake8rules\n* flickr\n* flipkart\n* foursquare\n* freebsdman\n* freshports\n* gibiru\n* giphy\n* gist\n* github\n* gmail\n* go\n* godoc\n* goodreads\n* google\n* googledocs\n* hackernews\n* idealo\n* ietf\n* ifttt\n* imdb\n* imgur\n* instagram\n* kagi\n* kaufda\n* libgen\n* linkedin\n* lmgtfy\n* macports\n* magnetdl\n* mdn\n* medium\n* metacpan\n* msdn\n* naver\n* netflix\n* nhaccuatui\n* npm\n* npr\n* nvd\n* openbsdman\n* overstock\n* packagist\n* perplexity\n* presearch\n* protondb\n* phandroid\n* phind\n* php\n* pinterest\n* postgresql\n* pydoc\n* pypi\n* python\n* quora\n* qwant\n* reddit\n* regex\n* rottentomatoes\n* rubygems\n* shodan\n* soundcloud\n* spotify\n* stackoverflow\n* steam\n* taobao\n* thepiratebay\n* theregister\n* twitchtv\n* twitter\n* ultimateguitar\n* unity3d\n* vimeo\n* wikipedia\n* wolframalpha\n* yahoo\n* yandex\n* youtube\n* zdf\n* zhihu\n\n## Contributors\n\n* [Josh Ellithorpe (zquestz)](https://github.com/zquestz/)\n* [Christian Petersen (fnky)](https://github.com/fnky/)\n* [Preet Bhinder (mbhinder)](https://github.com/mbhinder/)\n* [Robert-Jan Keizer (KeizerDev)](https://github.com/KeizerDev/)\n* [Vitor Cortez (vekat)](https://github.com/vekat/)\n* [David Liu (tw4dl)](https://github.com/tw4dl/)\n* [Lex Broner (akb)](https://github.com/akb/)\n* [Diego Jara (djap96)](https://github.com/djap96/)\n* [Luvsandondov Lkhamsuren (lkhamsurenl)](https://github.com/lkhamsurenl/)\n* [Eray Aydın (erayaydin)](https://github.com/erayaydin/)\n* [Murilo Santana (mvrilo)](https://github.com/mvrilo/)\n* [Jun He (knarfeh)](https://github.com/knarfeh/)\n* [Xavier Bruhiere (hackliff)](github.com/hackliff)\n\n## License\n\ns is released under the MIT license.\n\n[License-URL]: https://opensource.org/licenses/MIT\n[License-Image]: https://img.shields.io/npm/l/express.svg\n[ReportCard-URL]: https://goreportcard.com/report/zquestz/s\n[ReportCard-Image]: https://goreportcard.com/badge/github.com/zquestz/s\n[Build-Status-URL]: https://app.travis-ci.com/github/zquestz/s\n[Build-Status-Image]: https://app.travis-ci.com/zquestz/s.svg?branch=master\n[Release-URL]: https://github.com/zquestz/s/releases/tag/v0.7.1\n[Release-Image]: https://img.shields.io/badge/release-v0.7.1-1eb0fc.svg\n[Snap-Build-URL]: https://github.com/zquestz/s/actions/workflows/test-snap-builds.yml\n[Snap-Build-Image]: https://github.com/zquestz/s/actions/workflows/test-snap-builds.yml/badge.svg\n[Snap-Image]: https://snapcraft.io/s-search/badge.svg\n[Snap-URL]: https://snapcraft.io/s-search\n","funding_links":["https://github.com/sponsors/zquestz"],"categories":["Utilities","Go","Tools","[](#table-of-contents) Table of contents","terminal","\u003ca name=\"browser\"\u003e\u003c/a\u003eWeb browser","Other"],"sub_categories":["Browser Replacement","Go","[](#universal-search-tools)Universal search tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzquestz%2Fs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzquestz%2Fs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzquestz%2Fs/lists"}