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
scripts/        macOS packaging
CMakeLists.txt  standalone build (finds gtcaca via pkg-config)
run.sh          build-and-run helper

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.4-py3-none-win_amd64.whl (1.1 MB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.35+ x86-64

cacamacs-0.0.4-py3-none-macosx_14_0_arm64.whl (633.3 kB view details)

Uploaded Python 3macOS 14.0+ ARM64

File details

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

File metadata

  • Download URL: cacamacs-0.0.4-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.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 2fe9e3fccd64bff4a5531b8ddbb11175080febce11ce1a62c01591ab9e0a1af2
MD5 92924b6a0c1a50ced4f2ff89e084527f
BLAKE2b-256 dee92ab4b9d25ee848ad91a9842e8ac3daff782b43e13a30976169936c2efd0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cacamacs-0.0.4-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.4-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for cacamacs-0.0.4-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 970d4c19eccf3724a0b6c36401184c64a3b6e3288f485e22a66c3a65d175987e
MD5 cfd352e2edf8dd2cfe94fe85d551a3e2
BLAKE2b-256 fcce49679c476cd44e13acb2f76366d0d3d06605a2cdadd27c2c7537a822568f

See more details on using hashes here.

Provenance

The following attestation bundles were made for cacamacs-0.0.4-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.4-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for cacamacs-0.0.4-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 4ebf9c5a0d19fbc697da0ec0f78a2497f3a4b22bddafaa8210ab8bc9070e3b21
MD5 e26cd3cf9d3c462afbc7899ce346f773
BLAKE2b-256 356aa834e40e865f218adf7d5f62b769291ff2f34da93b7acdb50d637449cfb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for cacamacs-0.0.4-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