{"id":48921197,"url":"https://github.com/rrbe/termdown","last_synced_at":"2026-04-17T05:04:55.887Z","repository":{"id":351354453,"uuid":"1210648835","full_name":"rrbe/termdown","owner":"rrbe","description":"Render Markdown in terminal with large-font headings.","archived":false,"fork":false,"pushed_at":"2026-04-14T16:21:20.000Z","size":156,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-14T18:12:49.049Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rrbe.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,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-14T16:10:59.000Z","updated_at":"2026-04-14T16:21:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rrbe/termdown","commit_stats":null,"previous_names":["rrbe/termdown"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/rrbe/termdown","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrbe%2Ftermdown","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrbe%2Ftermdown/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrbe%2Ftermdown/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrbe%2Ftermdown/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rrbe","download_url":"https://codeload.github.com/rrbe/termdown/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrbe%2Ftermdown/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31915902,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","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-04-17T05:04:55.459Z","updated_at":"2026-04-17T05:04:55.882Z","avatar_url":"https://github.com/rrbe.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Termdown\n\n[中文文档](README_CN.md)\n\nRender Markdown with large-font headings in the terminal using the Kitty graphics protocol.\n\n## Motivation\n\nInspired by [glow](https://github.com/charmbracelet/glow) and [mdfried](https://github.com/benjajaja/mdfried).\n\nglow is a great terminal Markdown renderer, but headings are only distinguished by ANSI bold/color -- they can't actually be displayed at a larger size. mdfried supports image-rendered headings, but requires entering a TUI.\n\ntermdown aims to be **a lightweight `cat`-like tool where headings are truly rendered large**. It rasterizes H1-H3 text as PNG images and displays them via the Kitty graphics protocol -- no TUI, pipe-friendly, just direct output.\n\n## Terminal Support\n\nRequires a terminal with **Kitty graphics protocol** support:\n\n- [Ghostty](https://ghostty.org)\n- [Kitty](https://sw.kovidgoyal.net/kitty/)\n- [WezTerm](https://wezfurlong.org/wezterm/)\n- [iTerm2](https://iterm2.com)\n\nOn unsupported terminals, termdown will print a warning and heading images may not display correctly. H4-H6 headings always render as plain ANSI bold text.\n\n## Installation\n\n### From source\n\n```sh\ncargo install --path .\n```\n\n### Build manually\n\n```sh\ncargo build --release\ncp target/release/termdown /usr/local/bin/\n```\n\n## Usage\n\n```sh\n# Render a file\ntermdown README.md\n\n# Pipe from stdin\ncat notes.md | termdown\n\n# Use a specific theme instead of auto-detect\ntermdown --theme light README.md\n\n# Flags\ntermdown --help\ntermdown --version\n```\n\n## Configuration\n\ntermdown reads configuration from `~/.termdown/config.toml`.\n\n```toml\n# Theme: \"auto\" (default), \"dark\", or \"light\"\n# Auto-detection queries the terminal background color via OSC 11.\ntheme = \"auto\"\n\n[font.heading]\n# Font for Latin/English text in H1-H3 headings (sans-serif recommended)\nlatin = \"Inter\"\n\n# Font for CJK text in H1-H3 headings\ncjk = \"LXGW WenKai\"\n\n# Optional emoji / symbol fallback font for image-rendered headings\nemoji = \"Apple Color Emoji\"\n```\n\nHeadings with mixed scripts (e.g. \"Hello 世界\") will render each character with the appropriate font automatically.\nStandalone emoji in H1-H3 headings are also supported through font fallback when the selected emoji font exposes outline or raster glyphs.\n\n\u003e **Note:** Body text is rendered as plain ANSI text -- its font is determined by your terminal emulator settings, not by termdown. To change the body font, configure your terminal directly.\n\nIf no config file exists, termdown uses platform-specific defaults and falls back to an embedded SourceSerif4 font.\n\n### Platform default heading fonts\n\n**Latin** (sans-serif):\n\n| macOS | Linux | Windows |\n|-------|-------|---------|\n| Avenir | Inter | Segoe UI |\n| Avenir Next | Noto Sans | Arial |\n| Futura | DejaVu Sans | Verdana |\n| Helvetica Neue | Liberation Sans | |\n\n**CJK**:\n\n| macOS | Linux | Windows |\n|-------|-------|---------|\n| Noto Serif CJK SC | Noto Serif CJK SC | SimSun |\n| Source Han Serif SC | Source Han Serif SC | KaiTi |\n| Songti SC | Noto Serif | Microsoft YaHei |\n| STSong | DejaVu Serif | |\n\n## Uninstall\n\nRemove the binary and delete the configuration directory:\n\n```sh\nrm $(which termdown)\nrm -rf ~/.termdown\n```\n\n## Known Issues\n\n- **Line wrapping** -- long lines may not wrap correctly when mixed with ANSI escape sequences\n- **Terminal compatibility** -- only tested on Ghostty and iTerm2; other Kitty-protocol terminals may behave differently\n- **Font selection \u0026 fallback** -- weight matching relies on platform font APIs (Core Text / fontconfig) which may not always resolve to the expected variant\n- **Theme detection** -- auto-detection relies on OSC 11 terminal responses; if your terminal does not support this, use `--theme` or the config file to set the theme manually\n- **Complex emoji sequences** -- ZWJ-heavy emoji sequences (family/grouping variants, some skin-tone combinations) may still render as separate glyphs because heading layout does not perform full text shaping\n\n## License\n\n[Apache-2.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frrbe%2Ftermdown","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frrbe%2Ftermdown","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frrbe%2Ftermdown/lists"}