{"id":32210404,"url":"https://github.com/ndd7xv/heh","last_synced_at":"2026-02-23T05:02:25.795Z","repository":{"id":54651044,"uuid":"522330430","full_name":"ndd7xv/heh","owner":"ndd7xv","description":"A terminal UI to edit bytes by the nibble.","archived":false,"fork":false,"pushed_at":"2026-01-14T21:03:48.000Z","size":354,"stargazers_count":487,"open_issues_count":9,"forks_count":18,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-01-15T00:54:01.164Z","etag":null,"topics":["command-line","command-line-tool","cross-platform","hex-editor","rust","terminal"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/ndd7xv.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2022-08-07T21:38:49.000Z","updated_at":"2026-01-14T21:03:44.000Z","dependencies_parsed_at":"2024-03-31T18:24:39.759Z","dependency_job_id":"a5b3da52-260b-4add-b484-52592744fb95","html_url":"https://github.com/ndd7xv/heh","commit_stats":{"total_commits":38,"total_committers":8,"mean_commits":4.75,"dds":0.5526315789473684,"last_synced_commit":"1b1749217eb4cb21c123f1df95eb9495e451394c"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/ndd7xv/heh","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ndd7xv%2Fheh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ndd7xv%2Fheh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ndd7xv%2Fheh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ndd7xv%2Fheh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ndd7xv","download_url":"https://codeload.github.com/ndd7xv/heh/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ndd7xv%2Fheh/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29738083,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T04:51:08.365Z","status":"ssl_error","status_checked_at":"2026-02-23T04:49:15.865Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["command-line","command-line-tool","cross-platform","hex-editor","rust","terminal"],"created_at":"2025-10-22T06:32:08.716Z","updated_at":"2026-02-23T05:02:25.790Z","avatar_url":"https://github.com/ndd7xv.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# heh\n\n[![Crates.io](https://img.shields.io/crates/v/heh.svg)](https://crates.io/crates/heh)\n[![Codecov](https://codecov.io/github/ndd7xv/heh/coverage.svg?branch=master)](https://codecov.io/gh/ndd7xv/heh)\n[![Dependency status](https://deps.rs/repo/github/ndd7xv/heh/status.svg)](https://deps.rs/repo/github/ndd7xv/heh)\n\u003c!--- [![Documentation](https://docs.rs/heh/badge.svg)](https://docs.rs/heh/) If https://github.com/rust-lang/docs.rs/issues/238#issuecomment-631333050 is ever closed?--\u003e\n\nThe HEx Helper is a cross-platform terminal [hex editor](https://en.wikipedia.org/wiki/Hex_editor) used for modifying file data in hex or ASCII. It aims to replicate some of the look of hexyl while functionally acting like a terminal UI version of GHex.\n\n\u003e [!WARNING]\n\u003e heh is currently in alpha - it's not ready to be used in any production manner. It lacks a variety of quality of life features and does not store backups if killed or crashing.\n\n![screenshot of heh](demo.png)\n\n# Installation and Usage\n\nheh is available via cargo:\n\n```\ncargo install heh\n```\n\nFrom `heh --help`:\n```\n...\nTerminal UI Commands:\n    ALT=                Increase the stream length by 1\n    ALT-                Decrease the stream length by 1\n    CNTRLs              Save\n    CNTRLq              Quit\n    CNTRLj              Jump to Byte\n    CNTRLe              Change endianness\n    CNTRLd              Page Down\n    CNTRLu              Page Up\n    CNTRLf or /         Search\n    CNTRLn or Enter     Next Search Match\n    CNTRLp              Prev Search Match\n\nLeft-clicking on a label will copy the contents to the clipboard.\nLeft-clicking on the ASCII or hex table will focus it.\n\nZooming in and out will change the size of the components.\n\nUSAGE:\n    heh \u003cFILE\u003e\n\nARGS:\n    \u003cFILE\u003e\n            \n\nOPTIONS:\n    -h, --help\n            Print help information\n\n    -V, --version\n            Print version information\n\n```\n\n## Distro packages\n\n\u003cdetails\u003e\n  \u003csummary\u003ePackaging status\u003c/summary\u003e\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/heh.svg)](https://repology.org/project/heh/versions)\n\n\u003c/details\u003e\n\nIf your distribution has packaged `heh`, you can use that package for the installation.\n\n### Arch Linux\n\nYou can use [pacman](https://wiki.archlinux.org/title/Pacman) to install from the [extra repository](https://archlinux.org/packages/extra/x86_64/heh/):\n\n```\npacman -S heh\n```\n\n### Alpine Linux\n\n`heh` is available for [Alpine Edge](https://pkgs.alpinelinux.org/packages?name=heh\u0026branch=edge). It can be installed via [apk](https://wiki.alpinelinux.org/wiki/Alpine_Package_Keeper) after enabling the [testing repository](https://wiki.alpinelinux.org/wiki/Repositories).\n\n```\napk add heh\n```\n\n## Using as a Ratatui widget\n\n`heh` can be used a library and embedded into other TUI applications which use [Ratatui](https://ratatui.rs) and [crossterm](https://github.com/crossterm-rs/crossterm).\n\nAdd `heh` to your dependencies in `Cargo.toml`:\n\n```toml\n[dependencies]\nratatui = \"0.28\"\nheh = \"0.6\"\n```\n\nCreate the application:\n\n```rust\nuse heh::app::Application as Heh;\nuse heh::decoder::Encoding;\n\nlet file = std::fs::OpenOptions::new().read(true).write(true).open(path).unwrap();\nlet mut heh = Heh::new(file, Encoding::Ascii, 0).unwrap();\n```\n\nThen you can render a frame as follows:\n\n```rust\nterminal.draw(|frame| {\n    heh.render_frame(frame, frame.area());\n});\n```\n\nTo handle key events:\n\n```rust\nheh.handle_input(\u0026ratatui::crossterm::event::Event::Key(/* */)).unwrap();\n```\n\nSee the [demo example](examples/demo.rs) for full code.\n\nSee the [binsider](https://github.com/orhun/binsider) project for an example application that uses `heh`.\n\n# Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fndd7xv%2Fheh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fndd7xv%2Fheh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fndd7xv%2Fheh/lists"}