Skip to main content

cacamacs — a small terminal text editor with Emacs key bindings

Project description

ccm — cacamacs

A small terminal text editor with Emacs key bindings, built on the gtcaca libcaca TUI toolkit and its editor widget. It shows off the widget's colourization, folding, annotations, autocompletion, search/replace and a VSCode-style language-extension model.

ccm [file | directory] [language-configuration.json]
  • A file opens in the editor.
  • A directory opens the file browser (also C-x d).
  • An optional explicit language-configuration.json forces that config.

See docs/README-cacamacs.md for the full key-binding reference and feature tour.

History. ccm started life as apps/cacamacs inside the gtcaca repo, where a copy remains as a worked example of building an app on the toolkit. Active development now happens here, against gtcaca as an ordinary external dependency.

Install with pip

Prebuilt binaries are published to PyPI for macOS (Apple Silicon), Linux (x86_64) and Windows (x86_64) — no compiler or Homebrew needed:

pip install cacamacs
ccm            # or: cacamacs

PyPI is used purely as a binary channel (as ruff/cmake/ninja do): the wheel carries the compiled ccm and the libgtcaca/libcaca/oniguruma libraries it needs, made relocatable, plus the sample language extensions so syntax highlighting works out of the box. See packaging/ for how the per-platform wheels are built (packaging/build.shpackaging/wheel.py, wired up in .github/workflows/release.yml, which publishes on a v* tag).

Building

ccm consumes gtcaca like any third party would: install gtcaca first, then build ccm against it. gtcaca ships a gtcaca.pc, so pkg-config finds it.

# 1. install gtcaca (any one of these):
brew install stricaud/tap/gtcaca         # Homebrew tap
#   …or from a gtcaca checkout:  cmake -S . -B build && cmake --build build && sudo cmake --install build

# 2. build ccm
cmake -S . -B build
cmake --build build

# 3. run it
./run.sh              # builds if needed, then runs build/ccm
./run.sh path/to/file

Requirements: a C compiler, CMake ≥ 3.20, pkg-config, and an installed gtcaca (which pulls in libcaca).

Installing

sudo cmake --install build        # → /usr/local/bin/ccm, share/ccm/ccm-theme.example

Self-contained macOS package

scripts/package-macos.sh builds a .pkg that bundles libgtcaca and libcaca alongside ccm (rewritten to @rpath), so the installed editor needs neither Homebrew nor a system gtcaca:

scripts/package-macos.sh          # → ccm-<version>.pkg

Its postinstall seeds ~/.ccm/theme from the bundled sample (never clobbering an existing one).

Configuration

  • Colour theme — copy docs/ccm-theme.example to ~/.ccm/theme. Comments in the file explain every key.
  • Editor config — copy examples/config.json to ~/.cacamacs/config.json for tab size, indent, per-language overrides.
  • Language extensions — the VSCode-style grammar/config bundles under examples/extensions/ drive syntax colourization.

Layout

src/            editor sources (cacamacs.c, ui.c, edit.c, search.c, …)
docs/           feature docs + the colour-theme sample
examples/       config sample and language extensions
packaging/      cross-platform bundles + pip wheels (build.sh → wheel.py)
scripts/        macOS packaging
CMakeLists.txt  standalone build (finds gtcaca via pkg-config)
run.sh          build-and-run helper

License

Released into the public domain under the Unlicense — do whatever you want with it.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

cacamacs-0.0.6-py3-none-win_amd64.whl (1.1 MB view details)

Uploaded Python 3Windows x86-64

cacamacs-0.0.6-py3-none-manylinux_2_35_x86_64.whl (1.8 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

cacamacs-0.0.6-py3-none-macosx_14_0_arm64.whl (636.5 kB view details)

Uploaded Python 3macOS 14.0+ ARM64

File details

Details for the file cacamacs-0.0.6-py3-none-win_amd64.whl.

File metadata

  • Download URL: cacamacs-0.0.6-py3-none-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cacamacs-0.0.6-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 dd758f10cca7e97203a316a3fc343125f57474d97e691350c9ab72c97c0b6cf7
MD5 8c8dd15f5d0415b34a8e2900fe10b7d8
BLAKE2b-256 422af3629d86ea359c96554b632e0d6acf05a390d78378494405a861f882e254

See more details on using hashes here.

Provenance

The following attestation bundles were made for cacamacs-0.0.6-py3-none-win_amd64.whl:

Publisher: release.yml on stricaud/ccm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cacamacs-0.0.6-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for cacamacs-0.0.6-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 9e166aeeccd6d25593ad81f6c18e713586309d4b01964de2ca7b7d84b1713d5f
MD5 4e10ca0ac056f3bd1a5d93850e5d84f5
BLAKE2b-256 34668803c9c9ae306e04b42474186267b93da9d9cb3fe66e717e5dd16b95afd2

See more details on using hashes here.

Provenance

The following attestation bundles were made for cacamacs-0.0.6-py3-none-manylinux_2_35_x86_64.whl:

Publisher: release.yml on stricaud/ccm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cacamacs-0.0.6-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for cacamacs-0.0.6-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 887baaa5bb555cdc42ccb60dccc49d953e6315e9134b2cfba5a2257da4eb070b
MD5 82f0d3683c6ab43ea6808e744ad9200c
BLAKE2b-256 219a53ef0c274466947941ec761219c18d29f161725a36194c306dcc91129d9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for cacamacs-0.0.6-py3-none-macosx_14_0_arm64.whl:

Publisher: release.yml on stricaud/ccm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page