{"id":49688116,"url":"https://github.com/isene/chasm","last_synced_at":"2026-06-07T05:03:58.152Z","repository":{"id":353863326,"uuid":"1217390311","full_name":"isene/chasm","owner":"isene","description":"CHasm — CHange to ASM. Pure x86_64 assembly Linux tools (bare, show, glass, tile).","archived":false,"fork":false,"pushed_at":"2026-05-04T23:48:13.000Z","size":761,"stargazers_count":34,"open_issues_count":1,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-05T01:31:04.645Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/isene.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-21T20:51:25.000Z","updated_at":"2026-05-04T23:57:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/isene/chasm","commit_stats":null,"previous_names":["isene/chasm"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/isene/chasm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isene%2Fchasm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isene%2Fchasm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isene%2Fchasm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isene%2Fchasm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/isene","download_url":"https://codeload.github.com/isene/chasm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isene%2Fchasm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33417489,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"ssl_error","status_checked_at":"2026-05-23T22:14:43.778Z","response_time":53,"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":[],"created_at":"2026-05-07T11:00:37.366Z","updated_at":"2026-05-24T01:01:11.885Z","avatar_url":"https://github.com/isene.png","language":null,"funding_links":[],"categories":["Others"],"sub_categories":[],"readme":"# CHasm — CHange to ASM\n\n\u003cimg src=\"img/chasm.svg\" align=\"left\" width=\"170\" height=\"170\"\u003e\n\nA small suite of Linux tools written entirely in **x86_64 assembly**.\nNo libc. No toolkits. No dynamic linking. No runtime. Just NASM source,\ndirect syscalls, and the X11 wire protocol.\n\nEach tool is a single static ELF binary. None of them depend on each\nother or on anything else outside the kernel and the X server.\n\n**Landing page:** [isene.org/chasm](https://isene.org/chasm/)\n\nThe reason for releasing these tools into the Public Domain is not that you should use them. They are released for inspiration. Your use cases and preferences are different from mine. So instead of installing these and adopt your ways of working to these tools, you should rather: clone the repos, fire up Claude Code, prompt the changes you want and make the tools fit you.\n\n\u003cbr clear=\"left\"/\u003e\n\n![CHasm desktop](img/screenshot.png)\n\nEvery binary on this screen is x86_64 assembly: **tile** holds the\nlayout, **strip** + the **asmites** (the per-segment programs in\n[chasm-bits](https://github.com/isene/chasm-bits)) drive the status\nrow, **glass** renders each pane (pseudo-transparency picks up the\nwallpaper), **bare** is the shell behind every prompt, and **show**\nis rendering syntax-highlighted source in both the left and\nbottom-right panes. No libc, no toolkit — the whole desktop talks\nstraight to the kernel and the X server.\n\n## The tools\n\n| Tool | Purpose | Lines | Binary |\n|------|---------|-------|--------|\n| **[bare](https://github.com/isene/bare)**   | Interactive shell with line editing, history, completion, nicks, multi-pipes, redirects, here-strings, abbreviations, undo, smart hotkeys | ~16k | ~150KB |\n| **[show](https://github.com/isene/show)**   | Pager / file viewer with syntax highlighting, ESC sanitisation, cat/pane/pipe modes | ~3.5k | ~40KB |\n| **[glass](https://github.com/isene/glass)** | Terminal emulator: X11 wire protocol, kitty graphics, color emoji via XRender, pseudo-transparency, configurable fonts/keys | ~12k | ~110KB |\n| **[tile](https://github.com/isene/tile)**   | Tiling window manager: 10 workspaces, per-workspace tabs, row-of-squares bar, smart cycling, stash. Bundles **strip** — the X11 status bar that hosts the asmites | ~7k  | ~70KB |\n| **[chasm-bits](https://github.com/isene/chasm-bits)** | \"Asmites\" fed into `strip`: clock, cpu, mem, disk, battery, brightness, network, mailbox, moonphase, wintitle, … each one a tiny static binary | ~2k  | ~5KB each |\n| **[glyph](https://github.com/isene/glyph)** | TrueType font rasterizer: TTF/OpenType parser, quadratic Bezier flatten, scanline NZW with 4x4 supersample AA, composite glyphs, UTF-8, variable fonts (fvar+gvar+IUP) | ~4.2k | ~37KB |\n| **[bolt](https://github.com/isene/bolt)**   | Screen locker: fullscreen override-redirect, keyboard + pointer grab, baked raw-RGB lock-screen image, suid-root C helper for `crypt()`/shadow auth | ~2.5k | ~24KB |\n\nStack them all together and you get a complete X session in **under\n500 KB** of executable code, with zero shared libraries to update,\npatch, or break.\n\n## Why?\n\nModern software stacks are deep. A terminal emulator routinely loads\n30+ shared libraries before drawing a single character. A shell pulls\nin Python, GLib, OpenSSL transitively. Window managers depend on a\ntoolkit that depends on a compositor that depends on... CHasm strips\nall of that away to find out what you actually *need*.\n\nThe answer turns out to be: surprisingly little. The Linux kernel gives\nyou syscalls. X11 is just a Unix socket and a documented wire protocol.\nEverything else is a choice. CHasm is the choice to write everything\nyourself, from scratch, in the smallest reasonable language.\n\n## Shared aesthetic\n\nEvery CHasm tool follows the same conventions:\n\n- **Pure x86_64 NASM**, no libc, no `int 0x80` (only `syscall`)\n- **Single static ELF**, no dynamic linking, no `.so` dependencies\n- **Build pattern**: `nasm -f elf64 file.asm -o file.o \u0026\u0026 ld file.o -o file`\n- **All BSS**, no malloc — every buffer is statically allocated\n- **Zero-waste rule**: features that aren't used pay no cost. Optional\n  code paths are gated to be cold at rest.\n- **Plain config files**: `~/.barerc`, `~/.glassrc`, `~/.tilerc` — line-\n  based key=value, no JSON/TOML/YAML parsers needed\n- **Unlicense** — public domain\n\n## Build them all\n\n```bash\nfor t in bare show glass tile chasm-bits glyph bolt; do\n  git clone https://github.com/isene/$t.git\n  (cd $t \u0026\u0026 make)\ndone\n```\n\nEach `make` runs the same two-step build (nasm → ld). Total wall time\non a modern laptop: under 3 seconds for the entire suite.\n\n## Configuration tools\n\nThe CHasm tools are paired with optional Rust TUI configurators\n([crust](https://github.com/isene/crust)-based) that make their config\nfiles easier to edit interactively:\n\n| Configurator | Edits | Status |\n|--------------|-------|--------|\n| [bareconf](https://github.com/isene/bareconf)   | `~/.barerc`  | shipped |\n| [glassconf](https://github.com/isene/glassconf) | `~/.glassrc` | shipped |\n| [tileconf](https://github.com/isene/tileconf)   | `~/.tilerc`  | shipped |\n| [stripconf](https://github.com/isene/stripconf) | `~/.striprc` | shipped |\n\nAll four use the same `~/.\u003ctool\u003erc.tmp → .bak → publish` atomic-save\ndance, so a kill mid-write can never blank a config; `mv ~/.\u003ctool\u003erc.bak\n~/.\u003ctool\u003erc` always restores the previous good state.\n\nThese are the *only* CHasm-adjacent tools written in something other\nthan asm; they exist because writing a TUI configurator in pure asm\nwould defeat the whole point.\n\n## Status\n\nAll six tools are usable today. tile + strip + the chasm-bits asmites\nform the daily-driver desktop. glyph is the newest — a pure-asm TTF\nrasterizer that already renders OpenType variable fonts (interpolating\nbetween weight masters via gvar deltas + IUP), with the eventual goal\nof replacing glass's X core bitmap fonts so the whole desktop renders\nTTF without dynamic linking. The next milestone is glyph's integration\ninto glass; after that, tile's multi-monitor phase.\n\n## License\n\n[Unlicense](https://unlicense.org/) — public domain. Take it, fork it,\nstrip it for parts.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisene%2Fchasm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisene%2Fchasm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisene%2Fchasm/lists"}