{"id":50826501,"url":"https://github.com/db7/mess","last_synced_at":"2026-06-13T19:34:52.912Z","repository":{"id":356570779,"uuid":"919316765","full_name":"db7/mess","owner":"db7","description":"More or less with links","archived":false,"fork":false,"pushed_at":"2026-05-08T16:26:11.000Z","size":225,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-08T18:34:18.224Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"0bsd","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/db7.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-20T07:05:37.000Z","updated_at":"2026-05-08T16:25:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/db7/mess","commit_stats":null,"previous_names":["db7/mess"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/db7/mess","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/db7%2Fmess","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/db7%2Fmess/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/db7%2Fmess/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/db7%2Fmess/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/db7","download_url":"https://codeload.github.com/db7/mess/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/db7%2Fmess/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34298247,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-06-13T19:34:52.318Z","updated_at":"2026-06-13T19:34:52.906Z","avatar_url":"https://github.com/db7.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"mess -- more or less with links\n===============================\n\n`mess` a wrapper program that adds link navigation support to pagers, eg,\n`less`. It watches the output of the underlying pager for [OSC8 sequences][OSC8]\nand lets you tab through the links. Refer to `mess(1)` man page for command-line\nflags, environment variables, and exit behavior. This README is focused on the\noverview, workflows, and developer notes. See [DESIGN.md](DESIGN.md) for\narchitecture notes and [CONTRIBUTING.md](CONTRIBUTING.md) before sending\npatches.\n\n[OSC8]: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda\n[lynx]: https://lynx.browser.org/\n[lowdown]: https://kristaps.bsd.lv/lowdown/\n\n`mess` relies on external tools such as `less`, [`lynx`][lynx], and\n[`lowdown`][lowdown], and targets POSIX environments where standard utilities\nlike `man`, `less`, and `wordexp(3)` are available.\n\n## Requirements\n\n- Operating systems: POSIX hosts such as macOS 12+, NetBSD 10+, and Linux\n  distributions with glibc 2.31+ or musl 1.2+.\n- Toolchain: a C11 compiler (Clang 14+ or GCC 11+), `make`, and the standard\n  libc headers visible via `/usr/include`.\n- Runtime helpers: `less -R` (or another pager), [`mdcat`](https://github.com/swsnr/mdcat)\n  or [`lowdown`][lowdown] for Markdown rendering, and `lynx` plus a GUI opener\n  such as `open`/`xdg-open`. The dispatcher uses whatever you export via\n  `MESS_PAGER`, `BROWSER`, and `MESS_MDRENDER`.\n\n## Quickstart\n\n1. Install the prerequisites above on a supported macOS/NetBSD/Linux host.\n2. Clone the repository and enter it: `git clone \u003crepo\u003e mess \u0026\u0026 cd mess`.\n3. Build it: `make all`\n\n## Highlights\n\n- Tab through OSC8 hyperlinks emitted by downstream pagers without\n  giving up normal pager key bindings.\n- Detect manual cross references (`printf(3)`, `socket(2)`, etc.) automatically\n  when reading `man` output or when `mess -m` is forced through `MANPAGER`.\n- Launch URIs, Markdown files, and `man://` targets directly via the dispatcher,\n  letting `mess` hand work to the Markdown renderer, `man`, or your configured\n  browser.\n- Drop into `$VISUAL`/`$EDITOR` with `e` from navigation mode.\n\n## Usage\n\nSee `man mess` for every flag and environment knob; the quick tour:\n\n```\nmdcat README.md | mess             # page rendered Markdown\nlowdown -tterm README.md | mess    # same idea using lowdown\nmess README.md                     # dispatch a file through the wrapper\n```\n\nWhen the input is a man page (e.g. a `foo.1` file, `man://` link, or the output\nof `man -P cat`), `mess` scans the rendered text for references such as\n`printf(3)` or `socket(2)` and exposes them as navigation targets. Press `Tab`\nto highlight those tokens and `Enter` to jump via the new `man://` helper.\nCombine this with `MANPAGER='mess -m'` when you want `man` to feed directly into\nmess's manual-aware navigation.\n\nWhile the pager is active, pressing `Enter` opens the selected target through\nthe dispatcher. Markdown links are rendered and paged through `mess` as well;\nwhen you quit that child pager, control naturally returns to the parent\ndocument. You can also press `e` to open the current document in\n`$VISUAL`/`$EDITOR` (falling back to `vi`). The dispatcher\n(`mess \u003cfile-or-uri\u003e`) sets `MESSFILE` automatically for that shortcut; wrapper\nmode (`... | mess`) can opt in by exporting `MESSFILE` before launching the\npager.\n\n## Design Overview\n\n`mess` runs the downstream pager (`less` by default) behind a PTY and proxies\nterminal input and output between the pager and the user. While proxying output,\nit records OSC8 links and synthesized manual references together with their\nrendered positions, so navigation can highlight the same text the pager shows.\nWhen a target is activated, control returns to the dispatcher so browsers,\nMarkdown renderers, `man`, and nested `mess` pagers are launched outside the PTY\nwrapper. The parent process also mirrors `SIGWINCH` into the child PTY so the\npager keeps its layout in sync with your terminal.\n\nThe off-screen capture helper gives navigation code a snapshot of child PTY\noutput when it needs to reason about rendered content without disturbing the\nlive pager.\n\n## License\n\nThe code in this repository is released under the permissive terms described in\n`LICENSE`. External tools that `mess` shells out to (`less`, `lynx`, `lowdown`,\n`mdcat`, `tikl`, etc.) are separate binaries under their own licenses and are\nnot covered by this project's license file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdb7%2Fmess","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdb7%2Fmess","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdb7%2Fmess/lists"}