{"id":13493130,"url":"https://github.com/krpors/hx","last_synced_at":"2026-02-23T14:04:09.702Z","repository":{"id":13271099,"uuid":"69471028","full_name":"krpors/hx","owner":"krpors","description":"Hex editor for the terminal using plain C99 + POSIX libs.","archived":false,"fork":false,"pushed_at":"2024-08-03T08:52:52.000Z","size":217,"stargazers_count":211,"open_issues_count":1,"forks_count":17,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2025-10-22T06:37:57.689Z","etag":null,"topics":["c","cli","hex-editor","no-dependencies"],"latest_commit_sha":null,"homepage":"","language":"C","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/krpors.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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-09-28T14:21:23.000Z","updated_at":"2025-09-27T23:41:51.000Z","dependencies_parsed_at":"2024-08-03T09:49:05.615Z","dependency_job_id":"43f3510f-e5ea-41ff-8f18-035cf279cb89","html_url":"https://github.com/krpors/hx","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/krpors/hx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krpors%2Fhx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krpors%2Fhx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krpors%2Fhx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krpors%2Fhx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krpors","download_url":"https://codeload.github.com/krpors/hx/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krpors%2Fhx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29745114,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: 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":["c","cli","hex-editor","no-dependencies"],"created_at":"2024-07-31T19:01:12.533Z","updated_at":"2026-02-23T14:04:09.680Z","avatar_url":"https://github.com/krpors.png","language":"C","funding_links":[],"categories":["C","Hex editors"],"sub_categories":[],"readme":"# hx\n\nA hex editor using plain C + POSIX libs. The project's code\nis somewhat influenced by the [kilo project](https://github.com/antirez/kilo).\n\nFor an idea how it looks:\n\n![hx](http://i.imgur.com/5XPbMGW.png)\n\n# Compiling and running\n\nThe project does not have a dependency on libraries, not even curses. Like the\nkilo editor, it makes use of ANSI escape sequences. The source can be compiled\nby simply running `make`, or `make all` to gzip the manpage as well. To install,\nsimply run `make install` (as root). The files are currently installed under\n`/usr/local/bin/` (binary) and `/usr/local/man/man1` (man page). Not really sure yet\nif this is portable across distributions, though.\n\nRunning `hx`:\n\n\thx filename       # open a file\n\thx -h             # for help\n\thx -v             # version information\n\thx -o 32 filename # open file with 32 octets per line\n\thx -g 8 filename  # open file, set octet grouping to 8\n\nKeys which can be used:\n\n\tCTRL+Q  : Quit immediately without saving.\n\tCTRL+S  : Save (in place).\n\thjkl    : Vim like cursor movement.\n\tArrows  : Also moves the cursor around.\n\tCTRL+F  : Scroll one screen forward.\n\tCTRL+B  : Scroll one screen backward.\n\tPgDn    : Same as CTRL+F.\n\tPgUp    : Same as CTRL+B.\n\tw       : Skip one group of bytes to the right.\n\tb       : Skip one group of bytes to the left.\n\tgg      : Move to start of file.\n\tG       : Move to end of file.\n\tx / DEL : Delete byte at cursor position.\n\t/       : Start search input. \"\\xYZ\" can be used to search for\n\t          byte value YZ, and '\\' must be escaped by another '\\'\n\t          to search for '\\'.\n\tn       : Search for next occurrence.\n\tN       : Search for previous occurrence.\n\tu       : Undo the last action.\n\tCTRL+R  : Redo the last undone action.\n\n\ta       : Append mode. Appends a byte after the current cursor position.\n\tA       : Append mode. Appends the literal typed keys (except ESC).\n\ti       : Insert mode. Inserts a byte at the current cursor position.\n\tI       : Insert mode. Inserts the literal typed keys (except ESC).\n\tr       : Replace mode. Replaces the byte at the current cursor position.\n\t:       : Command mode. Commands can be typed and executed (see below).\n\tESC     : Return to normal mode.\n\n\t]       : Increment byte at cursor position with 1.\n\t[       : Decrement byte at cursor position with 1.\n\n\tEnd     : Move cursor to end of the offset line.\n\tHome    : Move cursor to the beginning of the offset line.\n\n\n# Command mode\n\nBeing in normal mode (`ESC`) then hitting the colon key `:`, you can enter command\nmode where manual commands can be typed. The following commands are recognized currently:\n\n* `:123`      : go to offset 123 (base 10)\n* `:0x7a69`   : go to offset 0x7a69 (base 16), 31337 in base 10.\n* `:w`        : writes the file.\n* `:q`        : quits (will warn if the buffer is dirty).\n* `:q!`       : quits promptly without warning.\n* `set o=16`  : sets the amount of octets per line.\n* `set g=8`   : sets grouping of bytes.\n\nInput is very basic in command mode. Cursor movement is not available (yet?).\n\n# Implementation details\n\nThe program uses raw ANSI escape sequences for manipulating colors, cursor\npositions and whatnot. The program first initializes the terminal in\nso-called raw mode (see `man termios`). Then keypresses are read, processed\nand then one function renders the contents, cursor and stuff.\n\nIn any case, the source code is pretty heavily commented I guess. For more\ndetails, Use The Source Luke.\n\n# Wishlist and TODOs\n\n1. Perhaps a configuration file to control the colors or some default settings.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrpors%2Fhx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkrpors%2Fhx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrpors%2Fhx/lists"}