Add development setup guides and Docker configuration#2322
Add development setup guides and Docker configuration#2322paulthanson082-glitch wants to merge 1 commit intoGuake:masterfrom
Conversation
This commit adds comprehensive documentation and tooling for setting up Guake development and testing environments on macOS: ## New Files - QUICKSTART.md: Quick reference guide with copy-paste commands for common tasks - SETUP_DEV.md: Comprehensive development setup guide for macOS and Linux - DOCKER.md: Detailed Docker setup guide with troubleshooting for X11 forwarding - Dockerfile.dev: Ubuntu 22.04 development container with GTK/VTE/build tools - docker-compose.dev.yml: Docker Compose configuration for easy container management - scripts/setup-dev.sh: Automated setup script for dependency installation ## Why Guake is a GTK-based Linux terminal emulator. These additions: 1. Enable developers to contribute on macOS using Docker 2. Provide clear setup instructions reducing friction for new contributors 3. Include Docker containerization for isolated Linux testing environment 4. Document common development workflows and troubleshooting ## Testing - Setup verified on macOS with Python 3.13 - Build succeeds (creates distribution wheel) - Imports work correctly - Docker image builds successfully Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR adds contributor-facing development setup documentation and introduces a Docker-based development container workflow aimed at making Guake development possible/easier on macOS (via a Linux container) and Linux.
Changes:
- Added new developer docs: QUICKSTART.md, SETUP_DEV.md, and DOCKER.md covering local and Docker-based workflows.
- Added containerization assets: Dockerfile.dev and docker-compose.dev.yml for a Ubuntu-based dev environment.
- Added an automation script: scripts/setup-dev.sh to streamline dependency setup and common make targets.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 15 comments.
Show a summary per file
| File | Description |
|---|---|
| scripts/setup-dev.sh | Automates dev environment bootstrapping and invokes project make targets. |
| docker-compose.dev.yml | Defines a dev container service with X11-related mounts/env for running Guake. |
| SETUP_DEV.md | Provides a longer-form setup guide and workflow overview for contributors. |
| QUICKSTART.md | Provides copy/paste quickstart commands for common development tasks. |
| Dockerfile.dev | Builds an Ubuntu-based dev image intended to support building/running Guake. |
| DOCKER.md | Documents Docker usage, X11 forwarding, and troubleshooting steps. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ```bash | ||
| docker build -t guake:py39 --build-arg PYTHON_VERSION=3.9 -f Dockerfile.dev . |
There was a problem hiding this comment.
The “Use Different Python Version” section suggests building with --build-arg PYTHON_VERSION=..., but Dockerfile.dev does not declare or use an ARG PYTHON_VERSION, so the example won’t have any effect. Either add build-arg support to Dockerfile.dev or adjust the documentation to match the current Dockerfile.
| ```bash | |
| docker build -t guake:py39 --build-arg PYTHON_VERSION=3.9 -f Dockerfile.dev . | |
| `Dockerfile.dev` does not currently support selecting the Python version via | |
| `--build-arg PYTHON_VERSION=...`. To use a different Python version, update | |
| `Dockerfile.dev` to install the version you need, then rebuild the image: | |
| ```bash | |
| docker build -t guake:dev -f Dockerfile.dev . |
|
|
||
| # Check Python | ||
| if ! command -v python3 &> /dev/null; then | ||
| echo "❌ Python 3 not found. Please install Python 3.6+" |
There was a problem hiding this comment.
The script advertises “Python 3.6+”, but the project metadata classifiers indicate support for Python 3.8+ (see setup.cfg). Please update the stated minimum Python version here to match what the project actually supports.
| echo "❌ Python 3 not found. Please install Python 3.6+" | |
| echo "❌ Python 3 not found. Please install Python 3.8+" |
| ### macOS Development | ||
|
|
||
| **Prerequisites:** | ||
| - Python 3.6+ |
There was a problem hiding this comment.
Docs list Python 3.6+ as a prerequisite, but the project metadata classifiers indicate Python 3.8+ support (setup.cfg). Please update the documented minimum version so contributors don’t set up an unsupported interpreter.
| - Python 3.6+ | |
| - Python 3.8+ |
| # Install Python dependencies | ||
| pip install pipenv | ||
| make dev | ||
|
|
There was a problem hiding this comment.
The quick start uses pip install pipenv before make dev, but make dev already invokes the project’s pinned pip/pipenv bootstrap (ensure-pip / scripts/bootstrap-dev-pip.sh). Consider removing the explicit pip install to avoid contributors ending up with an unexpected pipenv version.
| # Check pipenv | ||
| if ! command -v pipenv &> /dev/null; then | ||
| echo "⚠️ pipenv not found. Installing..." | ||
| pip3 install pipenv | ||
| fi | ||
| echo "✓ pipenv found: $(pipenv --version)" | ||
|
|
||
| # Change to project directory | ||
| cd "$PROJECT_ROOT" | ||
|
|
There was a problem hiding this comment.
The setup script installs pipenv via pip3 install pipenv, which bypasses the repo’s existing version-pinned bootstrap (make ensure-pip / scripts/bootstrap-dev-pip.sh) and may lead to unreproducible environments or conflicting pipenv versions. Consider delegating to make ensure-pip (or directly calling scripts/bootstrap-dev-pip.sh) instead of ad-hoc pip installs.
| # Check pipenv | |
| if ! command -v pipenv &> /dev/null; then | |
| echo "⚠️ pipenv not found. Installing..." | |
| pip3 install pipenv | |
| fi | |
| echo "✓ pipenv found: $(pipenv --version)" | |
| # Change to project directory | |
| cd "$PROJECT_ROOT" | |
| # Change to project directory | |
| cd "$PROJECT_ROOT" | |
| # Check pipenv | |
| if ! command -v pipenv &> /dev/null; then | |
| echo "⚠️ pipenv not found. Bootstrapping via make ensure-pip..." | |
| make ensure-pip | |
| fi | |
| echo "✓ pipenv found: $(pipenv --version)" |
| | Target | Purpose | | ||
| |--------|---------| | ||
| | `make dev` | Setup complete dev environment | | ||
| | `make run` | Run Guake in development mode | | ||
| | `make test` | Run test suite | |
There was a problem hiding this comment.
The “Available Make Targets” Markdown table uses || at the start of each row, which creates an unintended empty first column. Use a single leading | per row (e.g., | Target | Purpose |) so the table renders correctly.
| - **Base:** Ubuntu 22.04 LTS | ||
| - **GTK:** GTK 3.0 with VTE terminal widget | ||
| - **Tools:** Python 3, pipenv, git, build essentials | ||
| - **Locale:** Full locale support |
There was a problem hiding this comment.
The “Image Details” section claims the Dockerfile provides “Full locale support”, but Dockerfile.dev does not install/configure locales (or run locale-gen). Either add locale setup to the Dockerfile or adjust this bullet so it matches what the image actually contains.
| - **Locale:** Full locale support | |
| - **Locale:** Default Ubuntu locale settings |
| echo "" | ||
| echo "Preparing installation..." | ||
| make prepare-install | ||
|
|
There was a problem hiding this comment.
make dev already depends on prepare-install (see Makefile dev: target), so running make prepare-install again here is redundant and adds extra work/time. Consider dropping the second invocation to keep the setup script fast and simpler.
| echo "" | |
| echo "Preparing installation..." | |
| make prepare-install |
| # Mount X11 socket for display (Linux) | ||
| volumes: | ||
| - /tmp/.X11-unix:/tmp/.X11-unix:rw | ||
| - ${PWD}:/guake:rw |
There was a problem hiding this comment.
The bind mount uses ${PWD} which is not guaranteed to be set/exported in all environments where docker-compose runs. Prefer a relative mount (.:/guake) or a defaulted variable (${PWD:-.}) to make the compose file more robust.
| - ${PWD}:/guake:rw | |
| - .:/guake:rw |
| ```bash | ||
| cd /guake | ||
| make dev | ||
| sudo make install-schemas |
There was a problem hiding this comment.
Inside the container instructions use sudo make install-schemas, but the image runs as root by default and does not install sudo, so the command will fail. Suggest using make install-schemas (or explicitly add/install sudo + a non-root user if that’s the intended model).
| sudo make install-schemas | |
| make install-schemas |
Summary
Adds comprehensive development setup documentation and Docker containerization for Guake development on macOS.
Why
Guake is a Linux GTK application. These changes make it easier for developers to:
Testing
Note
Translation files (.po) and other files were modified by the build process but are not included in this PR.