{"id":13902957,"url":"https://github.com/filiparag/wikiman","last_synced_at":"2025-07-18T00:32:42.112Z","repository":{"id":42961061,"uuid":"289548083","full_name":"filiparag/wikiman","owner":"filiparag","description":"Wikiman is an offline search engine for manual pages, Arch Wiki, Gentoo Wiki and other documentation.","archived":false,"fork":false,"pushed_at":"2023-12-21T16:51:23.000Z","size":3901,"stargazers_count":224,"open_issues_count":1,"forks_count":10,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-11-02T01:13:52.834Z","etag":null,"topics":["arch-wiki","cli","documentation","freebsd","gentoo-wiki","linux","man-pages","offline","search-engine","terminal-based","tldr-pages","tui"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/filiparag.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2020-08-22T18:51:33.000Z","updated_at":"2024-10-28T06:04:28.000Z","dependencies_parsed_at":"2023-12-21T19:18:04.362Z","dependency_job_id":"6ac46646-cc17-4ef9-9e25-5091d90cf27f","html_url":"https://github.com/filiparag/wikiman","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filiparag%2Fwikiman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filiparag%2Fwikiman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filiparag%2Fwikiman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filiparag%2Fwikiman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/filiparag","download_url":"https://codeload.github.com/filiparag/wikiman/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226320774,"owners_count":17606359,"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":["arch-wiki","cli","documentation","freebsd","gentoo-wiki","linux","man-pages","offline","search-engine","terminal-based","tldr-pages","tui"],"created_at":"2024-08-06T22:01:31.263Z","updated_at":"2025-07-18T00:32:42.102Z","avatar_url":"https://github.com/filiparag.png","language":"Shell","funding_links":[],"categories":["Shell","cli"],"sub_categories":[],"readme":"## About\n\n**Wikiman** is a universal offline documentation search engine. It can browse system manual pages, [tldr-pages](https://github.com/tldr-pages/tldr), the [ArchWiki](https://wiki.archlinux.org/), [Gentoo Wiki](https://wiki.gentoo.org/wiki/), [FreeBSD documentation](https://docs.freebsd.org/), and many other sources curated by [DevDocs](https://devdocs.io/).\n\nIt provides an easy interface for browsing documentation without the need to be exact and connected to the internet. This is achieved by utilizing full-text search for wikis, partial name and description matching for man pages, and fuzzy filtering for search results.\n\n\u003e [!TIP]\n\u003e By default, Wikiman only searches manual pages. Follow [these instructions](#additional-documentation-sources) to download and enable optional documentation sources.\n\n![Demo](demo.gif)\n\n## Installation\n\n### Arch Linux\n\nInstall from Arch Linux's [extra](https://archlinux.org/packages/extra/any/wikiman/) repository:\n\n```bash\npacman -S wikiman\n\n# Optional: Enable ArchWiki\npacman -S arch-wiki-docs\n```\n\nIf you are running Manjaro or another Arch-based distribution, download the latest _.pkg.tar.zst_ package from [Releases](https://github.com/filiparag/wikiman/releases/latest/) tab, and follow [these](https://github.com/filiparag/wikiman#installing-additional-sources) instructions to add ArchWiki as a source.\n\n```sh\nsudo pacman -U wikiman*.pkg.tar.zst\n```\n\n### Ubuntu / Debian\n\nDownload latest _.deb_ package from [Releases](https://github.com/filiparag/wikiman/releases/latest/) tab.\n\n```bash\nsudo apt update\nsudo apt install ./wikiman*.deb\n```\n\n### Fedora / openSUSE\n\nDownload latest _.rpm_ package from [Releases](https://github.com/filiparag/wikiman/releases/latest/) tab.\n\n```bash\n# Fedora\nsudo dnf install wikiman*.rpm\n\n# openSUSE (skip signature verification)\nsudo zypper in wikiman*.rpm\n```\n\n### FreeBSD\n\nInstall [textproc/wikiman](https://www.freshports.org/textproc/wikiman) from the Ports Collection:\n\n```bash\nportsnap auto\ncd /usr/ports/textproc/wikiman\nmake install\n```\n\nOr download latest _.txz_ package from [Releases](https://github.com/filiparag/wikiman/releases/latest/) tab.\n\n```bash\npkg install wikiman*.txz\n```\n\n### Manual installation for Linux and BSD\n\nDependencies: `man`, `fzf`, `ripgrep`, `awk`, `w3m`, `coreutils`, `parallel`\n\n```bash\n# Clone from GitHub\ngit clone 'https://github.com/filiparag/wikiman'\ncd ./wikiman\n\n# Switch to latest stable release (optional)\ngit checkout $(git describe --tags | cut -d'-' -f1)\n\n# Available targets: all, core, widgets, completions, config, docs\nmake all\n\n# Only for BSD users: install to /usr/local instead of /usr\nmake local\n\n# Install Wikiman\nsudo make install\n```\n\nWikiman uses GNU `find` and `awk`, so BSD users have to install `findutils` and `gawk`.\n\n## Additional documentation sources\n\nCurrently available optional sources are:\n\n- ArchWiki (`arch`)\n- DevDocs (`devdocs`)\n- FreeBSD Documentation (`fbsd`)\n- Gentoo Wiki (`gentoo`)\n- TLDR Pages (`tldr`)\n\nDue to their large size, wikis don't come bundled with Wikiman. If you want to use them, you can download their latest snapshots using following commands.\n\n```bash\n# Download latest Makefile\ncurl -L 'https://raw.githubusercontent.com/filiparag/wikiman/master/Makefile' -o 'wikiman-makefile'\n\n# Example for Linux: install ArchWiki and TLDR pages\nmake -f ./wikiman-makefile source-arch source-tldr\nsudo make -f ./wikiman-makefile source-install\nsudo make -f ./wikiman-makefile clean\n\n# Example for BSD: install FreeBSD docs and TLDR pages\nmake -f ./wikiman-makefile source-fbsd source-tldr\nmake -f ./wikiman-makefile source-local # moves files from /usr to /usr/local\nsudo make -f ./wikiman-makefile source-install\nsudo make -f ./wikiman-makefile clean\n```\n\nAfter installation, they should be enabled automatically if `sources` [configuration](#configuration) variable is empty.\n\nTo verify active sources, run:\n\n```bash\nwikiman -S\n```\n\n\u003e [!NOTE]\n\u003e DevDocs source provides access to documentation for hundreds of unrelated individual projects, organized into separate \"books.\" To choose which books are active, prepend your Wikiman queries with `=book` (eg. `=c,cpp,python`). By default, this source returns no results, as no books are selected automatically.\n\n## Usage\n\nUsage: `wikiman [OPTION]... [KEYWORD]...`\n\nIf no keywords are provided, show all pages.\n\n### Options:\n\n- `-l` search language(s)\n\n  Default: _en_\n\n- `-s` sources to use\n\n  Default: (all available)\n\n- `-f` fuzzy finder to use\n\n  Default: _fzf_\n\n- `-q` enable quick search mode\n\n- `-a` enable _AND_ operator mode\n\n- `-p` disable quick result preview\n\n- `-k` keep open after viewing a result\n\n- `-c` show source column\n\n- `-H` viewer for HTML pages\n\n  Default: _w3m_\n\n- `-R` print raw output\n\n- `-S` list available sources and exit\n\n- `-W` print widget code for specified shell and exit\n\n- `-v` print version and exit\n\n- `-h` display this help and exit\n\n### Shell keybind widgets\n\nWikiman can be launched using a shell key binding (default: `Ctrl+F`). Current command line buffer will be used as a search query.\n\nAdd appropriate line from below to your `.bashrc`-like configuration file to make the key binding permanent.\n\n```bash\n# bash\nsource /usr/share/wikiman/widgets/widget.bash\n\n# fish\nsource /usr/share/wikiman/widgets/widget.fish\n\n# zsh\nsource /usr/share/wikiman/widgets/widget.zsh\n```\n\n## Configuration\n\nUser configuration file is located at `~/.config/wikiman/wikiman.conf`, and fallback system-wide configuration is `/etc/wikiman.conf`.\n\nIf you have set the _XDG_CONFIG_HOME_ environment variable, user configuration will be looked up from there instead.\n\nExample configuration file:\n\n```ini\n# Sources (if empty, use all available)\nsources = man, arch\n\n# Fuzzy finder\nfuzzy_finder = sk\n\n# Quick search mode (only by title)\nquick_search = true\n\n# Raw output (for developers)\nraw_output = false\n\n# Manpages language(s)\nman_lang = en, pt\n\n# Wiki language(s)\nwiki_lang = zh-CN\n\n# Show previews in TUI\ntui_preview = false\n\n# Keep open after viewing a result\ntui_keep_open = true\n\n# Show source column\ntui_source_column = true\n\n# Viewer for HTML pages\ntui_html = xdg-open\n```\n\nTo list available languages, run these commands:\n\n```bash\n# Man pages (excluding English)\nfind '/usr/share/man' -maxdepth 1 -type d -not -name 'man*' -printf '%P '\n\n# ArchWiki\nfind '/usr/share/doc/arch-wiki/html' -maxdepth 1 -type d -printf '%P '\n\n# FreeBSD Documentation\nfind '/usr/share/doc/freebsd-docs' -maxdepth 1 -type d -printf '%P '\n\n# TLDR Pages\nfind '/usr/share/doc/tldr-pages' -maxdepth 1 -type d -printf '%P '\n```\n\n## Custom sources\n\nWikiman is designed to be extensible: each source has it's module in `sources/` directory. These modules are loaded as needed during runtime.\n\nSource modules are POSIX compliant shell scripts. Wikiman calls their `search` function which reads `$query` and configuration variables, and prints results to _STDOUT_. variable with rows formatted as `NAME\\tLANG\\tSOURCE\\tPATH`.\n\n- `NAME` title of the page\n- `LANG` two letter language code (can include locale)\n- `SOURCE` source name\n- `PATH` path to HTML file\n\nWhen listing available sources, Wikiman will call module's `info` funcion which prints name, state, number of pages and path of the source.\n\n## Contributions\n\nIf you create a source module useful to the general public, please share it using a [pull request](https://github.com/filiparag/wikiman/pulls). Your pull request should contain:\n\n- module script file `sources/your-source.sh`\n- Makefile recipe `source-your-source`\n- build script for the database snapshot `build/sources/your-source.sh`\n- demo snapshot of the source database `your-source-TIMESTAMP.source.tar.xz` (optional)\n- short description in the pull request's body\n\nOther improvements are also welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffiliparag%2Fwikiman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffiliparag%2Fwikiman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffiliparag%2Fwikiman/lists"}