# breadonpenguins/dwm architecture

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

- Interactive diagram: https://gitdiagram.com/breadonpenguins/dwm
- Repository: https://github.com/breadonpenguins/dwm

## Overview

This repository is a customized dwm X11 window manager. Its main workflow is to take X events from the display, manage client windows and monitor/tag state, apply a selected layout, and draw the bar and window decorations. Configured keyboard and mouse actions also launch programs or control window and tag state. The README documents patch capabilities beyond the sampled code; those are represented under the manager rather than expanded into unverified internals. Arrows are limited to relationships shown in excerpts or README statements.

Main entry points: [`dwm.c`](https://github.com/breadonpenguins/dwm/blob/master/dwm.c) (Event-driven manager), [`vanitygaps.c`](https://github.com/breadonpenguins/dwm/blob/master/vanitygaps.c) (Tiling layouts), [`drw.c`](https://github.com/breadonpenguins/dwm/blob/master/drw.c) (Drawing and fonts), [`config.def.h`](https://github.com/breadonpenguins/dwm/blob/master/config.def.h) (Key and click bindings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_manager["Window management"]
  node_dwm["Event-driven manager<br/>[dwm.c]"]
  node_client_state["Client and monitor state<br/>[dwm.c]"]
  node_window_lifecycle["Window lifecycle<br/>[dwm.c]"]
  node_focus_stack["Focus and stack controls<br/>[dwm.c]"]
  node_swallow["Terminal swallowing<br/>[dwm.c]"]
  node_fullscreen["Fullscreen handling<br/>[dwm.c]"]
  node_multi_monitor["Monitor management<br/>[dwm.c]"]
  node_spawn["Program launching<br/>[dwm.c]"]
  node_utilities["Allocation and errors<br/>[util.c]"]
end

subgraph group_layout["Layouts and tags"]
  node_tags["Tags and visibility<br/>[dwm.c]"]
  node_layouts["Tiling layouts<br/>[vanitygaps.c]"]
  node_gap_controls["Gap controls<br/>[vanitygaps.c]"]
end

subgraph group_presentation["Display and bar"]
  node_bar["Status bar<br/>[dwm.c]"]
  node_drawing["Drawing and fonts<br/>[drw.c]"]
  node_drawing_api["Drawing API<br/>[drw.h]"]
end

subgraph group_config["User configuration"]
  node_bindings["Key and click bindings<br/>[config.def.h]"]
  node_xrdb["Xresources colors<br/>[dwm.c]"]
end

node_user(("Desktop user"))
node_xserver["X server"]
node_external_apps["X applications"]

node_user -->|"starts manager"| node_dwm
node_dwm -->|"opens display"| node_xserver
node_xserver -->|"delivers events"| node_dwm
node_external_apps -.->|"creates windows"| node_xserver
node_dwm -->|"initializes state"| node_client_state
node_dwm -.->|"dispatches events"| node_window_lifecycle
node_window_lifecycle -->|"updates clients"| node_client_state
node_window_lifecycle -->|"arranges clients"| node_layouts
node_window_lifecycle -->|"swallows child"| node_swallow
node_dwm -.->|"handles focus"| node_focus_stack
node_dwm -.->|"handles fullscreen"| node_fullscreen
node_dwm -.->|"manages monitors"| node_multi_monitor
node_dwm -.->|"manages tags"| node_tags
node_tags -.->|"selects layout"| node_layouts
node_gap_controls -->|"sets layout gaps"| node_layouts
node_layouts -->|"resizes clients"| node_client_state
node_dwm -.->|"updates bar"| node_bar
node_bar -.->|"draws content"| node_drawing
node_drawing -->|"implements API"| node_drawing_api
node_bindings -->|"configures actions"| node_dwm
node_dwm -->|"loads resources"| node_xrdb
node_dwm -.->|"dispatches commands"| node_spawn
node_spawn -->|"launches programs"| node_external_apps
node_drawing -->|"allocates resources"| node_utilities

click node_dwm "https://github.com/breadonpenguins/dwm/blob/master/dwm.c"
click node_client_state "https://github.com/breadonpenguins/dwm/blob/master/dwm.c"
click node_window_lifecycle "https://github.com/breadonpenguins/dwm/blob/master/dwm.c"
click node_focus_stack "https://github.com/breadonpenguins/dwm/blob/master/dwm.c"
click node_swallow "https://github.com/breadonpenguins/dwm/blob/master/dwm.c"
click node_fullscreen "https://github.com/breadonpenguins/dwm/blob/master/dwm.c"
click node_multi_monitor "https://github.com/breadonpenguins/dwm/blob/master/dwm.c"
click node_tags "https://github.com/breadonpenguins/dwm/blob/master/dwm.c"
click node_layouts "https://github.com/breadonpenguins/dwm/blob/master/vanitygaps.c"
click node_gap_controls "https://github.com/breadonpenguins/dwm/blob/master/vanitygaps.c"
click node_bar "https://github.com/breadonpenguins/dwm/blob/master/dwm.c"
click node_drawing "https://github.com/breadonpenguins/dwm/blob/master/drw.c"
click node_drawing_api "https://github.com/breadonpenguins/dwm/blob/master/drw.h"
click node_bindings "https://github.com/breadonpenguins/dwm/blob/master/config.def.h"
click node_xrdb "https://github.com/breadonpenguins/dwm/blob/master/dwm.c"
click node_spawn "https://github.com/breadonpenguins/dwm/blob/master/dwm.c"
click node_utilities "https://github.com/breadonpenguins/dwm/blob/master/util.c"

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_dwm,node_client_state,node_window_lifecycle,node_focus_stack,node_swallow,node_fullscreen,node_multi_monitor,node_spawn,node_utilities,node_user toneBlue
class node_tags,node_layouts,node_gap_controls toneAmber
class node_bar,node_drawing,node_drawing_api,node_xserver toneMint
class node_bindings,node_xrdb toneRose
class node_external_apps toneIndigo
```

## Components

### Window management

- [Event-driven manager](https://github.com/breadonpenguins/dwm/blob/master/dwm.c): `dwm.c`
- [Client and monitor state](https://github.com/breadonpenguins/dwm/blob/master/dwm.c): `dwm.c`
- [Window lifecycle](https://github.com/breadonpenguins/dwm/blob/master/dwm.c): `dwm.c`
- [Focus and stack controls](https://github.com/breadonpenguins/dwm/blob/master/dwm.c): `dwm.c`
- [Terminal swallowing](https://github.com/breadonpenguins/dwm/blob/master/dwm.c): `dwm.c`
- [Fullscreen handling](https://github.com/breadonpenguins/dwm/blob/master/dwm.c): `dwm.c`
- [Monitor management](https://github.com/breadonpenguins/dwm/blob/master/dwm.c): `dwm.c`
- [Program launching](https://github.com/breadonpenguins/dwm/blob/master/dwm.c): `dwm.c`
- [Allocation and errors](https://github.com/breadonpenguins/dwm/blob/master/util.c): `util.c`

### Layouts and tags

- [Tags and visibility](https://github.com/breadonpenguins/dwm/blob/master/dwm.c): `dwm.c`
- [Tiling layouts](https://github.com/breadonpenguins/dwm/blob/master/vanitygaps.c): `vanitygaps.c`
- [Gap controls](https://github.com/breadonpenguins/dwm/blob/master/vanitygaps.c): `vanitygaps.c`

### Display and bar

- [Status bar](https://github.com/breadonpenguins/dwm/blob/master/dwm.c): `dwm.c`
- [Drawing and fonts](https://github.com/breadonpenguins/dwm/blob/master/drw.c): `drw.c`
- [Drawing API](https://github.com/breadonpenguins/dwm/blob/master/drw.h): `drw.h`

### User configuration

- [Key and click bindings](https://github.com/breadonpenguins/dwm/blob/master/config.def.h): `config.def.h`
- [Xresources colors](https://github.com/breadonpenguins/dwm/blob/master/dwm.c): `dwm.c`

### Other components

- **Desktop user**
- **X server**
- **X applications**

## Connections

- Desktop user → Event-driven manager: starts manager (evidence: `README.md`)
- Event-driven manager → X server: opens display (evidence: `dwm.c`)
- X server → Event-driven manager: delivers events (evidence: `dwm.c`)
- X applications → X server: creates windows
- Event-driven manager → Client and monitor state: initializes state (evidence: `dwm.c`)
- Event-driven manager → Window lifecycle: dispatches events (evidence: `dwm.c`)
- Window lifecycle → Client and monitor state: updates clients (evidence: `dwm.c`)
- Window lifecycle → Tiling layouts: arranges clients (evidence: `dwm.c`)
- Window lifecycle → Terminal swallowing: swallows child (evidence: `dwm.c`)
- Event-driven manager → Focus and stack controls: handles focus (evidence: `dwm.c`)
- Event-driven manager → Fullscreen handling: handles fullscreen (evidence: `dwm.c`)
- Event-driven manager → Monitor management: manages monitors (evidence: `dwm.c`)
- Event-driven manager → Tags and visibility: manages tags (evidence: `dwm.c`)
- Tags and visibility → Tiling layouts: selects layout
- Gap controls → Tiling layouts: sets layout gaps (evidence: `vanitygaps.c`)
- Tiling layouts → Client and monitor state: resizes clients (evidence: `vanitygaps.c`)
- Event-driven manager → Status bar: updates bar (evidence: `dwm.c`)
- Status bar → Drawing and fonts: draws content
- Drawing and fonts → Drawing API: implements API (evidence: `drw.c`)
- Key and click bindings → Event-driven manager: configures actions (evidence: `config.def.h`)
- Event-driven manager → Xresources colors: loads resources (evidence: `dwm.c`)
- Event-driven manager → Program launching: dispatches commands (evidence: `dwm.c`)
- Program launching → X applications: launches programs
- Drawing and fonts → Allocation and errors: allocates resources (evidence: `drw.c`)
