# muhammedska/karakalem architecture

> Architecture diagram of the GitHub repository muhammedska/karakalem, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/muhammedska/karakalem
- Repository: https://github.com/muhammedska/karakalem

## Overview

KaraKalem is a desktop screen-annotation and drawing application. The tree contains many iterative script versions rather than a clearly documented canonical entry point; the richer `movable_final_fixed.py` and `movable.py` excerpts evidence the overlay, region selection, movable image canvas, tool palette, and settings. A simple paint workflow is also visible in `main.py`. Wiring between these variants is not established, so the graph keeps their supported responsibilities separate. README documentation is minimal, and some feature links are limited to sampled excerpts.

Main entry points: [`movable_final_fixed.py`](https://github.com/muhammedska/karakalem/blob/main/movable_final_fixed.py) (Overlay app), [`main.py`](https://github.com/muhammedska/karakalem/blob/main/main.py) (Paint canvas)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App entry variants"]
  node_simpleapp["Paint window<br/>[main.py]"]
  node_complexapp["Overlay app"]
  node_oldapp["Overlay variant<br/>[movable.py]"]
end

subgraph group_canvas["Drawing surfaces"]
  node_paintcanvas["Paint canvas<br/>[main.py]"]
  node_region["Region selector"]
  node_imagecanvas["Movable image canvas"]
end

subgraph group_controls["Tools and settings"]
  node_palette["Tool window"]
  node_settings["Settings window"]
  node_config["App configuration"]
  node_simpleui["Paint controls<br/>[main.py]"]
end

node_user(("Annotator"))
node_screen["Desktop screen"]
node_imagefile["Saved image"]

node_user -->|"opens"| node_simpleapp
node_user -->|"opens"| node_complexapp
node_simpleapp -->|"creates"| node_paintcanvas
node_paintcanvas -->|"captures"| node_screen
node_paintcanvas -->|"saves"| node_imagefile
node_user -->|"draws on"| node_paintcanvas
node_user -->|"selects tools"| node_simpleui
node_complexapp -->|"loads"| node_config
node_complexapp -->|"opens"| node_region
node_complexapp -->|"opens"| node_imagecanvas
node_complexapp -->|"creates"| node_palette
node_complexapp -->|"opens"| node_settings
node_region -->|"selects area"| node_screen
node_user -->|"selects region"| node_region
node_user -->|"annotates"| node_imagecanvas
node_palette -->|"controls brush"| node_imagecanvas
node_settings -->|"updates"| node_config

click node_simpleapp "https://github.com/muhammedska/karakalem/blob/main/main.py"
click node_complexapp "https://github.com/muhammedska/karakalem/blob/main/movable_final_fixed.py"
click node_oldapp "https://github.com/muhammedska/karakalem/blob/main/movable.py"
click node_paintcanvas "https://github.com/muhammedska/karakalem/blob/main/main.py"
click node_region "https://github.com/muhammedska/karakalem/blob/main/movable_final_fixed.py"
click node_imagecanvas "https://github.com/muhammedska/karakalem/blob/main/movable_final_fixed.py"
click node_palette "https://github.com/muhammedska/karakalem/blob/main/movable_final_fixed.py"
click node_settings "https://github.com/muhammedska/karakalem/blob/main/movable_final_fixed.py"
click node_config "https://github.com/muhammedska/karakalem/blob/main/movable_final_fixed.py"
click node_simpleui "https://github.com/muhammedska/karakalem/blob/main/main.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_simpleapp,node_complexapp,node_oldapp,node_screen toneBlue
class node_paintcanvas,node_region,node_imagecanvas toneAmber
class node_palette,node_settings,node_config,node_simpleui toneMint
class node_user,node_imagefile toneIndigo
```

## Components

### App entry variants

- [Paint window](https://github.com/muhammedska/karakalem/blob/main/main.py): `main.py`
- [Overlay app](https://github.com/muhammedska/karakalem/blob/main/movable_final_fixed.py): `movable_final_fixed.py`
- [Overlay variant](https://github.com/muhammedska/karakalem/blob/main/movable.py): `movable.py`

### Drawing surfaces

- [Paint canvas](https://github.com/muhammedska/karakalem/blob/main/main.py): `main.py`
- [Region selector](https://github.com/muhammedska/karakalem/blob/main/movable_final_fixed.py): `movable_final_fixed.py`
- [Movable image canvas](https://github.com/muhammedska/karakalem/blob/main/movable_final_fixed.py): `movable_final_fixed.py`

### Tools and settings

- [Tool window](https://github.com/muhammedska/karakalem/blob/main/movable_final_fixed.py): `movable_final_fixed.py`
- [Settings window](https://github.com/muhammedska/karakalem/blob/main/movable_final_fixed.py): `movable_final_fixed.py`
- [App configuration](https://github.com/muhammedska/karakalem/blob/main/movable_final_fixed.py): `movable_final_fixed.py`
- [Paint controls](https://github.com/muhammedska/karakalem/blob/main/main.py): `main.py`

### Other components

- **Annotator**
- **Desktop screen**
- **Saved image**

## Connections

- Annotator → Paint window: opens
- Annotator → Overlay app: opens
- Paint window → Paint canvas: creates
- Paint canvas → Desktop screen: captures
- Paint canvas → Saved image: saves
- Annotator → Paint canvas: draws on
- Annotator → Paint controls: selects tools
- Overlay app → App configuration: loads
- Overlay app → Region selector: opens
- Overlay app → Movable image canvas: opens
- Overlay app → Tool window: creates
- Overlay app → Settings window: opens
- Region selector → Desktop screen: selects area
- Annotator → Region selector: selects region
- Annotator → Movable image canvas: annotates
- Tool window → Movable image canvas: controls brush
- Settings window → App configuration: updates
