digraph arch_wayland {
    edge[
        fontname="DejaVu Sans",
        dir="both",
        arrowtail="dot",
        arrowsize=.5,
        fontname="DejaVu Sans",
        fontsize="18",
    ]

    node[
        shape="Mrecord",
        color=none,
        fillcolor="#ffbc00",
        style="filled",
        fontname="DejaVu Sans",
        fontsize="18",
   ]

    c1 [label="Wayland Client", URL="#c1"]
    c2 [label="Wayland Client", URL="#c2"]

    comp [tooltip="Wayland Compositor", label="|{|Wayland\nCompositor|}|", URL="#comp"]

    impl [tooltip="KMS evdev Kernel", label="|{{KMS|evdev}|Kernel}|", URL="#impl"]


    c1 -> comp [taillabel="③", labeldistance=2.5, URL="#step_3"];
    c2 -> comp;

    comp -> c1 [label="②", URL="#step_2"];
    comp -> c2;

    comp -> impl [xlabel = "④", URL="#step_4"];
    comp -> impl [style = invis, label="    "];
    impl -> comp [xlabel = "①", URL="#step_1"];

    c1 -> c2 [style=invis];
}