{"id":16376464,"url":"https://github.com/bengl/copher","last_synced_at":"2026-02-25T23:07:03.408Z","repository":{"id":48020558,"uuid":"173865672","full_name":"bengl/copher","owner":"bengl","description":"A desktop GUI gopher client powered by carlo","archived":false,"fork":false,"pushed_at":"2022-07-22T22:02:53.000Z","size":365,"stargazers_count":9,"open_issues_count":9,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-25T12:43:14.639Z","etag":null,"topics":["carlo","chrome-app","chromium","gopher"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/bengl.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}},"created_at":"2019-03-05T03:24:21.000Z","updated_at":"2023-03-13T01:51:28.000Z","dependencies_parsed_at":"2022-08-12T16:50:44.863Z","dependency_job_id":null,"html_url":"https://github.com/bengl/copher","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengl%2Fcopher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengl%2Fcopher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengl%2Fcopher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengl%2Fcopher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bengl","download_url":"https://codeload.github.com/bengl/copher/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233270031,"owners_count":18650736,"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":["carlo","chrome-app","chromium","gopher"],"created_at":"2024-10-11T03:24:45.641Z","updated_at":"2026-02-25T23:06:58.372Z","avatar_url":"https://github.com/bengl.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# copher\n\n![screenshot](./screenshot.png)\n\n**copher** is a desktop GUI [gopher][] client powered by [carlo][].\n\n## Usage\n\n\u003e **Note:** Chrome or Chromium must be installed.\n\nInstall with npm:\n\n    $ npm i -g copher\n\nThen run, optionally passing in a gopher URL (defaults to\n`gopher://gopher.floodgap.com`):\n\n    $ copher [url]\n\nAlternatively, use npx:\n\n    $ npx copher [url]\n\nTo navigate, click on the blue links on the left. You can go back and forward by\nusing the left and right arrow keys. You can select a new URL to navigate to by\npressing the `g` key.\n\nHTML/web links and Telnet links will open in the system default applications.\nImages, sound and text files will open as a new page in copher. All other file\ntypes are downloaded to disk using Chrome's downloader.\n\nBy default, connections will time out after 1 second. You can configure the\ntimeout, in milliseconds, by setting the `--timeout` option.\n\n## Gopher Protocol Support\n\nAn effort is made to support all of [RFC 1436][], except for CSO (item type\n`2`).\n\nThe following commonly used item-type extensions are supported:\n\n* **`i`** - Non-link text appearing in a Gopher menu.\n* **`p`** - Specifically represents PNG images. These are rendered as other\n  images are.\n* **`h`** - Items of this type whose selector is of the form\n  `URL:http://example.com/foo.html` will open in the default browser.\n* **`s`** - Sound files are opened in Copher with audio player controls.\n* **`d`** - Downloadable files.\n* **`P`** - PDF files. These are downloaded like other downloadable files.\n\nIf copher does not recognize an item type, it will be treated as a downloadable\nfile.\n\nWhile [RFC 1436][] states that all text must be ASCII or Latin1, UTF-8 appears\nto be more prevalant on Gopher servers today, so Copher will interpret text as\nUTF-8 by default. This can be changed via the `--encoding` option.\n[`iconv-lite`][] is used to convert from various encodings to UTF-8 for\nrendering. For example, to parse all incoming text as Latin1, try:\n\n    $ copher --encoding latin1\n\n## Gopher-over-TLS Support\n\nCopher supports Copher-over-TLS, in that it will first try to initiate a TLS\nhandshake with the destination server, and if that fails, fall back to ordinary\nplaintext TCP. Since most gopher servers don't support TLS, this feature must be\nactivated with a `--tls` option. All port numbers in copher are evaluated as\n`port % 100000`, so [S/Gopher][] links should work just fine when the `--tls`\noption is enabled.\n\n## Gopher-over-HTTPS Support\n\n[Gopher-over-HTTPS][] is supported by passing a [URL template][] to the `--goh`\noption. The template must contain a variable named `url` and the protocol must\nbe `https:`. Technically HTTP would also work fine, but it is called\nGopher-over-HTTPS, after all!\n\nExample:\n\n    $ copher --goh https://goh.commons.host:7070/{?url} gopher://gopher.club\n\nWhen this is enabled, all traffic will be tunneled over HTTPS through the server\nat the URL provided, assuming that the HTTPS server is GoH compliant.\n\nNote that when this is enabled, S/Gopher will not work correctly.\n\n## Customization\n\nYou can provide a `--userjs` option, passing in an absolute path to a JS file.\nThis file will be inserted inline in a `\u003cscript\u003e` tag. There's no extra API\nprovided, but you can use this to change styles or trigger or handle events, or\nany number of UI-changing things. The current version of copher is provided as\n`window.copherVersion`, in order to deal with any version-to-version\ndifferences.\n\n\u003e **WARNING:** Do **not** blindly accept scripts from other random folks on the\n\u003e internet to include in your `--userjs` file. While Copher runs inside\n\u003e Chromium and in its own Chrome profile, there's no telling what *other* damage\n\u003e a script may do. Be diligent and review every line of code you add.\n\n## Known Issues\n\nThere is a bug that causes a \"back\" (via left arrow key) to navigate from the\ninitial page to a blank page lacking the ability to move forward again. This is\nfixed by using Chrome Canary. You can specify which Chrome binary to use by\nsetting the `CHROME_PATH` environment variable.\n\n## License\n\nThe MIT License. See LICENSE.txt.\n\n[gopher]: https://en.wikipedia.org/wiki/Gopher_(protocol)\n[carlo]: https://github.com/GoogleChromeLabs/carlo\n[RFC 1436]: https://tools.ietf.org/html/rfc1436\n[S/Gopher]: https://gopher.floodgap.com/gopher/gw?a=gopher%3A%2F%2Fgopher.umbrellix.net%2F\n[`iconv-lite`]: https://npmjs.com/package/iconv-lite\n[Gopher-over-HTTPS]: https://gitlab.com/commonshost/goh#gopher-over-https-goh\n[URL Template]: https://tools.ietf.org/html/rfc6570\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbengl%2Fcopher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbengl%2Fcopher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbengl%2Fcopher/lists"}