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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.35+ x86-64

cacamacs-0.0.5-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.5-py3-none-win_amd64.whl.

File metadata

  • Download URL: cacamacs-0.0.5-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.5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 900c4fa4e0a54a889d4a85c80bb0dcea718f6fd00f8c645f20c22a4cc3407cec
MD5 7108093c8689d7e8e79f8b1c792f6920
BLAKE2b-256 58a1ac02006811d72cf7c5061a403be39648f05613d2c34bc99b422374067656

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cacamacs-0.0.5-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 ba62c7923abc0d7ac9da6cc92ba36c493d2abe1430e0a9c3075ff4adc97452a1
MD5 09a2c688d0aea9c09f49ed4f4bf84a9d
BLAKE2b-256 806cd4d4089f22bb5e4e70f82f785f5a60d6b7f128fb3347d49f4f3ef66944f8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for cacamacs-0.0.5-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 cafe431b6f111b8bc58a4b8094dd6c23f666bcb63eaabaff8efce7047eefa5fe
MD5 9e65f41eb3a20497f570c98c47cd7cc7
BLAKE2b-256 974880a3c88874bafa607a90ded7344ca113176bde3cf7c0c23725f3a46197ce

See more details on using hashes here.

Provenance

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