Cambalache is a sophisticated RAD tool for GTK 4 and GTK 3, featuring a clean MVC design and a data model-first philosophy. This architectural approach translates to comprehensive feature coverage with minimal developer intervention for basic support.
To support multiple GTK versions, it renders the workspace out-of-process using a custom Wayland compositor widget based on wlroots.
License
Cambalache is distributed under the GNU Lesser General Public License,
version 2.1 (LGPL) as described in the COPYING
file.
Tools are distributed under the GNU General Public License,
version 2 (GPL) as described in the COPYING.GPL
file.
Source Code
Source code lives on GNOME GitLab here
git clone https://gitlab.gnome.org/jpu/cambalache.git
Dependencies
- Python 3 - Cambalache is written in Python
- Meson build system
- GTK 3 and 4
- python-gi - Python GTK bindings
- python3-lxml - Python libxml2 bindings
- Casilda - Workspace custom compositor
Flathub
Flathub is the place to get and distribute apps for all of desktop Linux. It is powered by Flatpak, allowing Flathub apps to run on almost any Linux distribution.
Instructions on how to install Flatpak can be found here.
You can get the official build here
Installation
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user flathub ar.xjuan.Cambalache
Flatpak
Build Dependencies
Use the following commands to install build dependencies:
flatpak remote-add --user --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
flatpak install --user org.gnome.Sdk//master
flatpak install --user org.gnome.Platform//master
Building Your Bundle
Build your bundle with the following commands:
flatpak-builder --force-clean --repo=repo build ar.xjuan.Cambalache.json
flatpak build-bundle repo cambalache.flatpak ar.xjuan.Cambalache
flatpak install --user cambalache.flatpak
Or if you have make
installed in your host:
make install
This will create the Flatpak repository, then the bundle and install it.
Running
flatpak run --user ar.xjuan.Cambalache//master
Manual Installation
This is a regular Meson package and can be installed the usual way.
# Configure project in _build directory
meson setup --wipe --prefix=~/.local _build .
# Build and install in ~/.local
ninja -C _build install
To run it from .local/
you might need to setup a few environment variables
depending on your distribution:
export PYTHONPATH=~/.local/lib/python3/dist-packages/
export LD_LIBRARY_PATH=~/.local/lib/x86_64-linux-gnu/
export GI_TYPELIB_PATH=~/.local/lib/x86_64-linux-gnu/girepository-1.0/
cambalache
Docker
While Docker is not meant for UI applications, it is possible to build an image with Cambalache and run it.
Build the Image
docker build -t cambalache .
Running on Linux
On Wayland:
docker run \
-e XDG_RUNTIME_DIR=/tmp \
-e WAYLAND_DISPLAY=$WAYLAND_DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--user=$(id -u):$(id -g) \
cambalache
On X Server:
xhost +local:
docker run -v /tmp/.X11-unix:/tmp/.X11-unix cambalache
Note: There is no official support for Docker, please use Flatpak if possible.
MS Windows
Instructions to run in MS Windows are here
Note: There is no official support for Windows yet, these instructions should be taken with a grain of salt as they might not work on all Windows versions or be obsolete.
MacOS
Instructions to run in MacOS are here
Note: There is no official support for MacOS yet, these instructions should be taken with a grain of salt as they might not work on all MacOS versions or be obsolete.
Running from Sources
To run it without installing, use the run-dev.sh
script.
It will automatically compile Cambalache under the .local
directory and set up all environment
variables needed to run the app from the source directory.
(Follow manual installation to ensure you have everything needed)
./run-dev.py
This is meant for Cambalache development only.
Contributing
If you are interested in contributing, you can open an issue here and/or a merge request here
Contact
You can hang with us and ask us questions on Matrix at #cambalache:gnome.org
Financial Support
You can financially support Cambalache development on Liberapay or Patreon like all these people did.
Liberapay
- Liberapay is a recurrent donations platform
- Run by a non-profit organization
- Source code is public
- No commission fee
- ~5% payment processing fee
Patreon
- Patreon is a membership platform for creators
- Run by private company
- No source code available
- ~8% commission fee
- ~8% payment processing fee
cmb-catalog-gen
This tool is used to generate Cambalache catalogs from GIR files.
A catalog is a XML file with all the necessary data for Cambalache to produce UI files with widgets from a particular library, this includes the different GTypes, with their properties, signals and everything else except the actual object implementations.