{"id":13769815,"url":"https://github.com/jansc/ncgopher","last_synced_at":"2025-05-11T02:33:30.997Z","repository":{"id":37074724,"uuid":"242084111","full_name":"jansc/ncgopher","owner":"jansc","description":"A gopher and gemini client for the modern internet","archived":false,"fork":false,"pushed_at":"2024-05-16T04:17:35.000Z","size":1297,"stargazers_count":156,"open_issues_count":4,"forks_count":10,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-05-19T14:31:13.121Z","etag":null,"topics":["cli","gemini","gemini-client","gemini-protocol","gopher","gopher-client","gopher-protocol","ncurses","rust","tui"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jansc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-21T07:54:30.000Z","updated_at":"2024-06-04T14:45:04.969Z","dependencies_parsed_at":"2024-01-12T11:51:17.539Z","dependency_job_id":"b461d359-4c2c-4167-9df9-404cda15cc74","html_url":"https://github.com/jansc/ncgopher","commit_stats":{"total_commits":411,"total_committers":10,"mean_commits":41.1,"dds":0.5085158150851581,"last_synced_commit":"a3990ba16367ccc82f3a0d16daf9a5acdf35dad1"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jansc%2Fncgopher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jansc%2Fncgopher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jansc%2Fncgopher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jansc%2Fncgopher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jansc","download_url":"https://codeload.github.com/jansc/ncgopher/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225004672,"owners_count":17405658,"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":["cli","gemini","gemini-client","gemini-protocol","gopher","gopher-client","gopher-protocol","ncurses","rust","tui"],"created_at":"2024-08-03T17:00:31.790Z","updated_at":"2024-11-17T05:31:39.616Z","avatar_url":"https://github.com/jansc.png","language":"Rust","funding_links":[],"categories":["Clients","Rust"],"sub_categories":["Terminal"],"readme":"# ncgopher\n\n`ncgopher` is a gopher, gemini and finger client for the modern internet. It uses\nncurses and is written in Rust.\n\n## gopher\n\nGopher was developed in 1991 at the University of Minnesota, and named\nafter the school's mascot. Gopher is a menu-driven interface that\nallows a user to browse for text information served off of various\ngopher servers.\n\n## gemini\n\nGemini is a new application-level internet protocol for the distribution\nof arbitrary files, with some special consideration for serving a\nlightweight hypertext format which facilitates linking between files.\n\n## Screenshot\n\nObligatory screenshot:\n\n![img](./screenshots/ncgopher.png \"Screenshot of NcGopher\")\n\n![img](./screenshots/ncgopher-darkmode.png \"Screenshot of NcGopher\")\n\n## Features\n\n-   Gopher, gemini and finger support\n-   Ncurses interface\n-   Keyboard commands for navigation\n-   Bookmarks support including custom title\n-   History of visited gopher holes\n-   Download of text files and gophermaps (Save as\u0026#x2026;)\n-   Download of binary files\n-   Menu for easy configuration\n-   Mouse support in some terminals\n-   TLS support\n-   Darkmode!\n-   External commands for HTML, images and Telnet\n-   Vi-like search in text\n-   Bookmarks, history and option to disable history recording\n\n## Installation\n\n\n### Arch Linux\n\nArch Linux users can install ncgopher using pacman:\n\n    sudo pacman -S ncgopher-git\n\n### NixOS\n\nNixOS users can install ncgopher using nix-env:\n\n    nix-env -iA nixos.ncgopher\n\n### FreeBSD\n\n    doas pkg install ncgopher\n\n### NetBSD\n\nNetBSD users can install ncgopher using pkgin:\n\n    pkgin install ncgopher\n\n### All other systems\n\n`ncgopher` has no fancy installation process right now. There are some external\ndependencies which have to be installed. First and foremost you will of course\nneed to have Rust installed. Further dependencies are the *openssl*, *ncurses*\nand *sqlite3* libraries. If these are not installed, the build will fail but\nyou will most likely be able to tell what is missing.\n\n---\n### Debian-based Linux\n\n    sudo apt install build-essential pkg-config libssl-dev libncurses-dev libsqlite3-dev\n\n### Arch-based Linux\n\n    sudo pacman -S base-devel pkg-config openssl ncurses sqlite\n\n### OpenBSD\n\n    doas pkg_add sqlite3 rust\n\n### MSYS2 (Windows, MINGW64 terminal)\n\n    pacman -S base-devel mingw-w64-x86_64-pkgconf mingw-w64-x86_64-rust mingw-w64-x86_64-ncurses mingw-w64-x86_64-openssl mingw-w64-x86_64-sqlite3\n\n---\n\nIf you know how to install the listed dependencies on your operating system and it is\nnot listed, please make a pull request to add it.\n\nAfter installing these dependencies run\n\n    cargo install ncgopher\n\nTo install the latest development version:\n\n    git clone https://github.com/jansc/ncgopher.git\n    cd ncgopher\n    cargo build\n    cargo run\n\n## Key bindings\n\nDuring alpha, many operations are still not implemented. Key bindings can be\nchanged by adding a `keybindings` section in your `config.toml`, if you want to\nchange them from the defaults below:\n\n| Key        | Command                        |\n| :--------- | :----------------------------- |\n| Arrow keys | Move around in text            |\n| Enter      | Open the link under the cursor |\n| Esc        | Go to menubar                  |\n| Space      | Scroll down one page           |\n| g          | Open new URL                   |\n| G          | Edit current URL               |\n| b          | Navigate back                  |\n| q          | Close application              |\n| s          | Save current page              |\n| r          | Reload current page            |\n| i          | Show link under cursor         |\n| a          | Add bookmark for current page  |\n| l          | Go to next link                |\n| L          | Go to previous link            |\n| j          | Move one line down             |\n| k          | Move one line up               |\n| /          | Search in text                 |\n| n          | Move to next search result     |\n| N          | Move to previous search result |\n\nHere is an example `config.toml` with all the keybindings defined:\n```toml\n[keybindings]\nopen_new_url = 'o'\nedit_current_url = 'e'\nnavigate_back = 'h'\nclose = 'q'\nsave_page = 's'\nreload_page = 'r'\nshow_link = 'i'\nadd_bookmark = 'b'\nnext_link = 'l'\nprevious_link = 'L'\nmove_down = 'j'\nmove_up = 'k'\nsearch_in_text = '/'\nnext_search_result = 'n'\nprevious_search_result = 'N'\nshow_help = '?'\n```\n\n## Mouse support\n\n`ncgopher` supports mouse interaction for menus and buttons in dialogs.\nIf you want to select text, most terminal support selection while \npressing `SHIFT`.\n\n## Debugging\n\nThe software is still in beta, and it is also my first application\nwritten in Rust. Expect lots of bugs and badly written Rust code.\n\nIf the application crashes, I'd be interested in a log file.\nTo produce one, please rerun the program with the command line flag `-d` and a\nfile name to store the log in, for example \"error.log\".\nIt should look something like this: `ncgopher -d error.log`\nThis will append log messages to `error.log` (the file will be created if it\ndoes not exist).\nWith this, try to reproduce the bug and take note of the backtrace output.\n\nIf you know how to do that and you installed the source, you can run the\nprogram with `RUST_BACKTRACE` to get a backtrace too.\n\n## License\n\n`ncgopher` is licensed under the BSD 2-clause license.\n\nCopyright (c) 2019-2022 The ncgopher Authors. Parts of the\nstatus bar implementation are Copyright (c) 2019, Henrik Friedrichsen\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjansc%2Fncgopher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjansc%2Fncgopher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjansc%2Fncgopher/lists"}