aboutsummaryrefslogtreecommitdiffstats
path: root/doc/publican/html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/publican/html')
-rw-r--r--doc/publican/html/css/brand.css14
-rw-r--r--doc/publican/html/css/common.css1769
-rw-r--r--doc/publican/html/css/default.css3
-rw-r--r--doc/publican/html/css/epub.css115
-rw-r--r--doc/publican/html/css/meson.build14
-rw-r--r--doc/publican/html/css/print.css15
-rw-r--r--doc/publican/html/images/icon.svg19
-rw-r--r--doc/publican/html/images/meson.build28
-rw-r--r--doc/publican/html/images/wayland-architecture.gv36
-rw-r--r--doc/publican/html/images/wayland.pngbin0 -> 5649 bytes
-rw-r--r--doc/publican/html/images/x-architecture.gv53
-rw-r--r--doc/publican/html/images/xwayland-architecture.pngbin0 -> 7611 bytes
12 files changed, 2066 insertions, 0 deletions
diff --git a/doc/publican/html/css/brand.css b/doc/publican/html/css/brand.css
new file mode 100644
index 0000000..d86cba9
--- /dev/null
+++ b/doc/publican/html/css/brand.css
@@ -0,0 +1,14 @@
+/*headings*/
+h1, h2, h3, h4, h5, h6,
+div.producttitle,
+div.subtitle,
+div.author div.author,
+div.translator div.translator,
+div.othercredit div.othercredit,
+div.editor div.editor,
+div.contrib div.contrib,
+.title,
+.titlepage .edition,
+.titlepage .releaseinfo {
+ color: #336699;
+}
diff --git a/doc/publican/html/css/common.css b/doc/publican/html/css/common.css
new file mode 100644
index 0000000..a05648e
--- /dev/null
+++ b/doc/publican/html/css/common.css
@@ -0,0 +1,1769 @@
+* {
+ widows: 4 !important;
+ orphans: 4 !important;
+}
+
+body, h1, h2, h3, h4, h5, h6, pre, li, div {
+ line-height: 1.29em;
+}
+
+body {
+ background-color: white;
+ margin:0 auto;
+ font-family: "liberation sans", "Myriad ", "Bitstream Vera Sans", "Lucida Grande", "Luxi Sans", "Trebuchet MS", helvetica, verdana, arial, sans-serif;
+ font-size: 14px;
+ max-width: 770px;
+ color: black;
+}
+
+body.toc_embeded {
+ /*for web hosting system only*/
+ margin-left: 300px;
+}
+
+object.toc, iframe.toc {
+ /*for web hosting system only*/
+ border-style: none;
+ position: fixed;
+ width: 290px;
+ height: 99.99%;
+ top: 0;
+ left: 0;
+ z-index: 100;
+ border-style: none;
+ border-right:1px solid #999;
+}
+
+/* Hide web menu */
+
+body.notoc {
+ margin-left: 3em;
+}
+
+iframe.notoc {
+ border-style:none;
+ border: none;
+ padding: 0px;
+ position:fixed;
+ width: 21px;
+ height: 29px;
+ top: 0px;
+ left:0;
+ overflow: hidden;
+ margin: 0px;
+ margin-left: -3px;
+}
+/* End hide web menu */
+
+/* desktop styles */
+body.desktop {
+ margin-left: 26em;
+}
+
+body.desktop .book > .toc {
+ display:block;
+ width:24em;
+ height:99.99%;
+ position:fixed;
+ overflow:auto;
+ top:0px;
+ left:0px;
+/* padding-left:1em; */
+ background-color:#EEEEEE;
+ font-size: 12px;
+}
+
+body.pdf {
+ max-width: 100%;
+}
+
+.toc {
+ line-height:1.35em;
+}
+
+.toc .glossary,
+.toc .chapter, .toc .appendix {
+ margin-top:1em;
+}
+
+.toc .part {
+ margin-top:1em;
+ display:block;
+}
+
+span.glossary,
+span.appendix {
+ display:block;
+ margin-top:0.5em;
+}
+
+div {
+ padding-top:0px;
+}
+
+div.section {
+ page-break-inside: avoid;
+}
+
+p, div.para {
+ padding-top: 0px;
+ margin-top: 1em;
+ padding-bottom: 0px;
+ margin-bottom: 1em;
+}
+
+div.formalpara {
+ padding-top: 0px;
+ margin-top: 1em;
+ padding-bottom: 0px;
+ margin-bottom: 1em;
+}
+
+.varlistentry div.para {
+ page-break-before: avoid;
+
+}
+
+/*Links*/
+a {
+ outline: none;
+}
+
+a:link {
+ text-decoration: none;
+ border-bottom: 1px dotted ;
+ color:#3366cc;
+}
+
+body.pdf a:link {
+ word-wrap: break-word;
+}
+
+a:visited {
+ text-decoration:none;
+ border-bottom: 1px dotted ;
+ color:#003366;
+}
+
+div.longdesc-link {
+ float:right;
+ color:#999;
+}
+
+.toc a, .qandaset a {
+ font-weight:normal;
+ border:none;
+}
+
+.toc a:hover, .qandaset a:hover
+{
+ border-bottom: 1px dotted;
+}
+
+/*headings*/
+h1, h2, h3, h4, h5, h6 {
+ color: #336699;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ background-color: transparent;
+ margin-bottom: 0px;
+ margin-top: 20px;
+ page-break-inside: avoid;
+ page-break-after: avoid;
+ word-wrap: break-word;
+}
+
+h1 {
+ font-size: 22px;
+}
+
+.titlepage h1.title {
+ text-align:left;
+}
+
+.book > .titlepage h1.title {
+ text-align: center;
+}
+
+.article > .titlepage h1.title,
+.article > .titlepage h2.title {
+ text-align: center;
+}
+
+.set .titlepage > div > div > h1.title {
+ text-align: center;
+}
+
+.part > .titlepage h1.title {
+ text-align: center;
+ font-size: 24px;
+}
+
+div.producttitle {
+ margin-top: 0px;
+ margin-bottom: 20px;
+ font-size: 48px;
+ font-weight: bold;
+/* background: #003d6e url(../images/h1-bg.png) top left repeat-x; */
+ color: #336699;
+ text-align: center;
+ padding-top: 12px;
+}
+
+.titlepage .corpauthor {
+ margin-top: 1em;
+ text-align: center;
+}
+
+.section h1.title {
+ font-size: 18px;
+ padding: 0px;
+ color: #336699;
+ text-align: left;
+ background: white;
+}
+
+h2 {
+ font-size: 20px;
+ margin-top: 30px;
+}
+
+
+.book div.subtitle, .book h2.subtitle, .book h3.subtitle {
+ margin-top: 1em;
+ margin-bottom: 1em;
+ font-size: 18px;
+ text-align: center;
+}
+
+div.subtitle {
+ color: #336699;
+ font-weight: bold;
+}
+
+h1.legalnotice {
+ font-size: 24px;
+}
+
+.preface > div > div > div > h2.title,
+.preface > div > div > div > h1.title {
+ margin-top: 1em;
+ font-size: 24px;
+}
+
+.appendix h2 {
+ font-size: 24px;
+}
+
+
+
+h3 {
+ font-size: 14px;
+ padding-top:0px;
+ padding-bottom: 0px;
+ margin-bottom: 0px;
+}
+h4 {
+ font-size: 14px;
+ padding-top:0px;
+ padding-bottom:0px;
+}
+
+h5 {
+ font-size: 14px;
+}
+
+h6 {
+ font-size: 14px;
+ margin-bottom: 0px;
+}
+
+.abstract h6 {
+ margin-top:1em;
+ margin-bottom:.5em;
+ font-size: 24px;
+}
+
+.index > div > div > div > h2.title {
+ font-size: 24px;
+}
+
+.chapter > div > div > div > h2.title {
+ font-size: 24px;
+}
+
+.section > div > div > div > h2.title {
+ font-size: 21px;
+ page-break-inside: avoid;
+ page-break-before: avoid;
+ page-break-after: avoid;
+}
+
+.section > div > div > div > h3.title {
+ font-size: 17px;
+}
+
+/*element rules*/
+hr {
+ border-collapse: collapse;
+ border-style:none;
+ border-top: 1px dotted #ccc;
+ width:100%;
+}
+
+/* web site rules */
+ul.languages, .languages li {
+ display:inline;
+ padding:0px;
+}
+
+.languages li a {
+ padding:0px .5em;
+ text-decoration: none;
+}
+
+.languages li p, .languages li div.para {
+ display:inline;
+}
+
+.languages li a:link, .languages li a:visited {
+ color:#444;
+}
+
+.languages li a:hover, .languages li a:focus, .languages li a:active {
+ color:black;
+}
+
+ul.languages {
+ display:block;
+ background-color:#eee;
+ padding:.5em;
+}
+
+/*supporting stylesheets*/
+
+/*unique to the webpage only*/
+.books {
+ position:relative;
+}
+
+.versions li {
+ width:100%;
+ clear:both;
+ display:block;
+}
+
+a.version {
+ font-size: 20px;
+ text-decoration:none;
+ width:100%;
+ display:block;
+ padding:1em 0px .2em 0px;
+ clear:both;
+}
+
+a.version:before {
+ content:"Version";
+ font-size: smaller;
+}
+
+a.version:visited, a.version:link {
+ color:#666;
+}
+
+a.version:focus, a.version:hover {
+ color:black;
+}
+
+.books {
+ display:block;
+ position:relative;
+ clear:both;
+ width:100%;
+}
+
+.books li {
+ display:block;
+ width:200px;
+ float:left;
+ position:relative;
+ clear: none ;
+}
+
+.books .html {
+ width:170px;
+ display:block;
+}
+
+.books .pdf {
+ position:absolute;
+ left:170px;
+ top:0px;
+ font-size: smaller;
+}
+
+.books .pdf:link, .books .pdf:visited {
+ color:#555;
+}
+
+.books .pdf:hover, .books .pdf:focus {
+ color:#000;
+}
+
+.books li a {
+ text-decoration:none;
+}
+
+.books li a:hover {
+ color:black;
+}
+
+/*products*/
+.products li {
+ display: block;
+ width:300px;
+ float:left;
+}
+
+.products li a {
+ width:300px;
+ padding:.5em 0px;
+}
+
+.products ul {
+ clear:both;
+}
+
+/*revision history*/
+.revhistory {
+ display:block;
+}
+
+.revhistory table {
+ background-color:transparent;
+ border-color:#fff;
+ padding:0px;
+ margin: 0;
+ border-collapse:collapse;
+ border-style:none;
+}
+
+.revhistory td {
+ text-align :left;
+ padding:0px;
+ border: none;
+ border-top: 1px solid #fff;
+ font-weight: bold;
+}
+
+.revhistory .simplelist td {
+ font-weight: normal;
+}
+
+.revhistory .simplelist {
+ margin-bottom: 1.5em;
+ margin-left: 1em;
+}
+
+.revhistory table th {
+ display: none;
+}
+
+
+/*credits*/
+.authorgroup div {
+ clear:both;
+ text-align: center;
+}
+
+div.author div.author,
+div.translator div.translator,
+div.othercredit div.othercredit,
+div.editor div.editor,
+div.contrib div.contrib {
+ margin: 0px;
+ padding: 0px;
+ margin-top: 12px;
+ font-size: 14px;
+ font-weight: bold;
+ color: #336699;
+}
+
+div.editedby {
+ margin-top: 15px;
+ margin-bottom: -0.8em;
+}
+
+div.authorgroup .author,
+div.authorgroup.editor,
+div.authorgroup.translator,
+div.authorgroup.othercredit,
+div.authorgroup.contrib {
+ display: block;
+ font-size: 14px;
+ page-break-inside: avoid;
+}
+
+.revhistory .author {
+ display: inline;
+}
+
+.othercredit h3 {
+ padding-top: 1em;
+}
+
+
+.othercredit {
+ margin:0px;
+ padding:0px;
+}
+
+.releaseinfo {
+ clear: both;
+}
+
+.copyright {
+ margin-top: 1em;
+}
+
+/* qanda sets */
+.answer {
+ margin-bottom:1em;
+ border-bottom:1px dotted #ccc;
+}
+
+.qandaset .toc {
+ border-bottom:1px dotted #ccc;
+}
+
+.question {
+ font-weight:bold;
+}
+
+.answer .data, .question .data {
+ padding-left: 2.6em;
+}
+
+.answer .label, .question .label {
+ float:left;
+ font-weight:bold;
+}
+
+/* inline syntax highlighting */
+.perl_Alert {
+ color: #0000ff;
+}
+
+.perl_BaseN {
+ color: #007f00;
+}
+
+.perl_BString {
+ color: #5C3566;
+}
+
+.perl_Char {
+ color: #ff00ff;
+}
+
+.perl_Comment {
+ color: #888888;
+}
+
+
+.perl_DataType {
+ color: #0000ff;
+}
+
+
+.perl_DecVal {
+ color: #00007f;
+}
+
+
+.perl_Error {
+ color: #ff0000;
+}
+
+
+.perl_Float {
+ color: #00007f;
+}
+
+
+.perl_Function {
+ color: #007f00;
+}
+
+
+.perl_IString {
+ color: #5C3566;
+}
+
+
+.perl_Keyword {
+ color: #002F5D;
+}
+
+
+.perl_Operator {
+ color: #ffa500;
+}
+
+
+.perl_Others {
+ color: #b03060;
+}
+
+
+.perl_RegionMarker {
+ color: #96b9ff;
+}
+
+
+.perl_Reserved {
+ color: #9b30ff;
+}
+
+
+.perl_String {
+ color: #5C3566;
+}
+
+
+.perl_Variable {
+ color: #0000ff;
+}
+
+
+.perl_Warning {
+ color: #0000ff;
+}
+
+/*Lists*/
+ul {
+ list-style-image: url("../images/dot.png");
+ list-style-type: circle;
+ padding-left: 1.6em;
+}
+
+ul ul {
+ list-style-image: url("../images/dot2.png");
+ list-style-type: circle;
+}
+
+ol.1 {
+ list-style-type: decimal;
+}
+
+ol.a,
+ol ol {
+ list-style-type: lower-alpha;
+}
+
+ol.i {
+ list-style-type: lower-roman;
+}
+ol.A {
+ list-style-type: upper-alpha;
+}
+
+ol.I {
+ list-style-type: upper-roman;
+}
+
+dt {
+ font-weight:bold;
+ margin-bottom:0px;
+ padding-bottom:0px;
+}
+
+dd {
+ margin:0px;
+ margin-left:2em;
+ padding-top:0px;
+}
+
+li {
+ padding-top: 0px;
+ margin-top: 0px;
+ padding-bottom: 0px;
+/* margin-bottom: 16px; */
+}
+
+/*images*/
+img {
+ display:block;
+ margin: 2em 0;
+ max-width: 100%;
+}
+
+.inlinemediaobject,
+.inlinemediaobject img,
+.inlinemediaobject object {
+ display:inline;
+ margin:0px;
+ overflow: hidden;
+}
+
+.figure {
+ margin-top: 1em;
+ width: 100%;
+}
+
+.figure img,
+.mediaobject img {
+ display:block;
+ margin: 0em;
+ page-break-inside: avoid;
+}
+
+.figure .title {
+ margin-bottom:2em;
+ padding:0px;
+}
+
+/*document modes*/
+.confidential {
+ background-color:#900;
+ color:White;
+ padding:.5em .5em;
+ text-transform:uppercase;
+ text-align:center;
+}
+
+.longdesc-link {
+ display:none;
+}
+
+.longdesc {
+ display:none;
+}
+
+.prompt {
+ padding:0px .3em;
+}
+
+/*user interface styles*/
+.screen .replaceable {
+}
+
+.guibutton, .guilabel {
+ font-family: "liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+ font-weight: bold;
+}
+
+.example {
+ background-color: #ffffff;
+ border-left: 3px solid #aaaaaa;
+ padding-top: 1px;
+ padding-bottom: 0.1em;
+ padding-left: 1em;
+}
+
+.equation {
+ border-left: 3px solid #aaaaaa;
+ background-color: #ffffff;
+ padding-top: 1px;
+ padding-bottom: 0.1em;
+ padding-left: 1em;
+}
+
+.equation-contents {
+ margin-left: 4em;
+}
+
+div.title {
+ margin-bottom: 1em;
+ font-weight: 14px;
+ font-weight: bold;
+ color: #336699;
+ page-break-inside: avoid;
+ page-break-after: avoid;
+ word-wrap: break-word;
+}
+
+.example-contents {
+ background-color: #ffffff;
+}
+
+.example-contents .para {
+/* padding: 10px;*/
+}
+
+/*terminal/console text*/
+.computeroutput,
+.option {
+ font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+ font-weight:bold;
+}
+
+.replaceable {
+ font-style: italic;
+}
+
+.command, .filename, .keycap, .classname, .literal {
+ font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+ font-weight:bold;
+}
+
+/* no bold in toc */
+.toc * {
+ font-weight: inherit;
+}
+
+.toc H1 {
+ font-weight: bold;
+}
+
+
+div.programlisting {
+ white-space: pre-wrap; /* css-3 */
+ white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ word-wrap: break-word; /* Internet Explorer 5.5+ */
+}
+
+pre {
+ font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+ display:block;
+ background-color: #f5f5f5;
+ color: #000000;
+/* border: 1px solid #aaaaaa; */
+ margin-bottom: 1em;
+ padding:.5em 1em;
+ white-space: pre-wrap; /* css-3 */
+ white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ word-wrap: break-word; /* Internet Explorer 5.5+ */
+ font-size: 0.9em;
+ border-style:none;
+ box-shadow: 0 2px 5px #AAAAAA inset;
+ -moz-box-shadow: 0 2px 5px #AAAAAA inset;
+ -webkit-box-shadow: 0 2px 5px #AAAAAA inset;
+ -o-box-shadow: 0 2px 5px #AAAAAA inset;
+}
+
+body.pdf pre {
+ border: 1px solid #AAAAAA;
+ box-shadow: none;
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+ -o-box-shadow: none;
+}
+
+
+pre .replaceable,
+pre .keycap {
+}
+
+code {
+ font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ font-weight:bold;
+}
+
+.parameter code {
+ display: inline;
+ white-space: pre-wrap; /* css-3 */
+ white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ word-wrap: break-word; /* Internet Explorer 5.5+ */
+}
+
+code.email {
+ font-weight: normal;
+ font-family: "liberation sans", "Myriad ", "Bitstream Vera Sans", "Lucida Grande", "Luxi Sans", "Trebuchet MS", helvetica, verdana, arial, sans-serif;
+
+}
+
+/*Notifications*/
+div.warning:before {
+ content:url(../images/warning.png);
+ padding-left: 5px;
+}
+
+div.note:before {
+ content:url(../images/note.png);
+ padding-left: 5px;
+}
+
+div.important:before {
+ content:url(../images/important.png);
+ padding-left: 5px;
+}
+
+div.warning, div.note, div.important {
+ color: black;
+ margin: 0px;
+ padding: 0px;
+ background: none;
+ background-color: white;
+ margin-bottom: 1em;
+ border-bottom: 1px solid #aaaaaa;
+ page-break-inside: avoid;
+}
+
+div.admonition_header p {
+ margin: 0px;
+ padding: 0px;
+ color: #eeeeec;
+ padding-top: 0px;
+ padding-bottom: 0px;
+ height: 1.4em;
+ line-height: 1.4em;
+ font-size: 17px;
+ display:inline;
+}
+
+div.admonition_header {
+ background-origin:content-box;
+ clear: both;
+ margin: 0px;
+ padding: 0px;
+ margin-top: -40px;
+ padding-left: 58px;
+ line-height: 1.0px;
+ font-size: 1.0px;
+}
+
+div.warning div.admonition_header {
+ background: url(../images/red.png) top left repeat-x;
+ background-color: #590000;
+ background: -webkit-linear-gradient(#a40000,#590000);
+ background: linear-gradient(#a40000,#590000);
+}
+
+div.note div.admonition_header {
+ background: url(../images/green.png) top right repeat-x;
+ background-color: #597800;
+ background: -webkit-linear-gradient(#769f00,#597800);
+ background: linear-gradient(#769f00,#597800);
+}
+
+div.important div.admonition_header {
+ background: url(../images/yellow.png) top right repeat-x;
+ background-color: #a6710f;
+ background: -webkit-linear-gradient(#d08e13,#a6710f);
+ background: linear-gradient(#d08e13,#a6710f);
+}
+
+div.warning p:first-child,
+div.warning div.para:first-child,
+div.note p:first-child,
+div.note div.para:first-child,
+div.important p:first-child,
+div.important div.para:first-child {
+ padding: 0px;
+ margin: 0px;
+}
+
+div.admonition {
+ border: none;
+ border-left: 1px solid #aaaaaa;
+ border-right: 1px solid #aaaaaa;
+ padding:0px;
+ margin:0px;
+ padding-top: 1.5em;
+ padding-bottom: 1em;
+ padding-left: 2em;
+ padding-right: 1em;
+ background-color: #eeeeec;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ border-radius: 0px;
+}
+
+/*Page Title*/
+#title {
+ display:block;
+ height:45px;
+ padding-bottom:1em;
+ margin:0px;
+}
+
+#title a.left{
+ display:inline;
+ border:none;
+}
+
+#title a.left img{
+ border:none;
+ float:left;
+ margin:0px;
+ margin-top:.7em;
+}
+
+#title a.right {
+ padding-bottom:1em;
+}
+
+#title a.right img {
+ border:none;
+ float:right;
+ margin:0px;
+ margin-top:.7em;
+}
+
+/*Table*/
+div.table {
+/* page-break-inside: avoid; */
+}
+
+table {
+ border: 1px solid #444;
+ width:100%;
+ border-collapse:collapse;
+ table-layout: fixed;
+ word-wrap: break-word;
+}
+
+table.blockquote,
+table.simplelist,
+.calloutlist table {
+ border-style: none;
+}
+
+table th {
+ text-align:left;
+ background-color:#6699cc;
+ padding:.3em .5em;
+ color:white;
+}
+
+table td {
+ padding:.15em .5em;
+}
+
+table tr.even td {
+ background-color:#f5f5f5;
+}
+
+tr:nth-child(even) {
+ background-color: #eeeeee;
+
+}
+
+
+table th p:first-child, table td p:first-child, table li p:first-child,
+table th div.para:first-child, table td div.para:first-child, table li div.para:first-child {
+ margin-top:0px;
+ padding-top:0px;
+ display:inline;
+}
+
+th, td {
+ border-style:none;
+ vertical-align: top;
+/* border: 1px solid #000; */
+}
+
+.blockquote td,
+.simplelist th,
+.simplelist td {
+ border: none;
+}
+
+table table td {
+ border-bottom:1px dotted #aaa;
+ background-color:white;
+ padding:.6em 0px;
+}
+
+table table {
+ border:1px solid white;
+}
+
+td.remarkval {
+ color:#444;
+}
+
+td.fieldval {
+ font-weight:bold;
+}
+
+.lbname, .lbtype, .lbdescr, .lbdriver, .lbhost {
+ color:white;
+ font-weight:bold;
+ background-color:#999;
+ width:120px;
+}
+
+td.remarkval {
+ width:230px;
+}
+
+td.tname {
+ font-weight:bold;
+}
+
+th.dbfield {
+ width:120px;
+}
+
+th.dbtype {
+ width:70px;
+}
+
+th.dbdefault {
+ width:70px;
+}
+
+th.dbnul {
+ width:70px;
+}
+
+th.dbkey {
+ width:70px;
+}
+
+span.book {
+ margin-top:4em;
+ display:block;
+ font-size: 11pt;
+}
+
+span.book a{
+ font-weight:bold;
+}
+span.chapter {
+ display:block;
+}
+
+table.simplelist td, .calloutlist table td {
+ border-style: none;
+}
+
+
+table.lt-4-cols.lt-7-rows td {
+ border: none;
+}
+/*to simplify layout*/
+
+
+table.lt-4-cols.gt-14-rows tr:nth-child(odd) {
+ background-color: #fafafa;
+}
+/* to keep simple but stripe rows */
+
+
+.gt-8-cols td {
+ border-left: 1px solid #ccc;
+}
+
+.gt-8-cols td:first-child {
+ border-left: 0;
+}
+/* to apply vertical lines to differentiate columns*/
+
+/*Breadcrumbs*/
+#breadcrumbs ul li.first:before {
+ content:" ";
+}
+
+#breadcrumbs {
+ color:#900;
+ padding:3px;
+ margin-bottom:25px;
+}
+
+#breadcrumbs ul {
+ margin-left:0;
+ padding-left:0;
+ display:inline;
+ border:none;
+}
+
+#breadcrumbs ul li {
+ margin-left:0;
+ padding-left:2px;
+ border:none;
+ list-style:none;
+ display:inline;
+}
+
+#breadcrumbs ul li:before {
+ content:"\0020 \0020 \0020 \00BB \0020";
+ color:#333;
+}
+
+dl {
+ margin-top: 0px;
+ margin-left: 28px;
+}
+
+.toc dl {
+ margin-left: 10px;
+}
+
+/*index*/
+.glossary h3,
+.index h3 {
+ font-size: 20px;
+ color:#aaa;
+ margin:0px;
+}
+
+.indexdiv {
+ margin-bottom:1em;
+}
+
+.glossary dt,
+.index dt {
+ color:#444;
+ padding-top:.5em;
+}
+
+.glossary dl dl dt,
+.index dl dl dt {
+ color:#777;
+ font-weight:normal;
+ padding-top:0px;
+}
+
+.index dl dl dt:before {
+ content:"- ";
+ color:#ccc;
+}
+
+/*changes*/
+.footnote {
+ font-size: 10px;
+ margin: 0px;
+ color: #222;
+}
+
+.footnotes {
+ margin-bottom: 60px;
+}
+
+table .footnote {
+}
+
+sup {
+ margin:0px;
+ padding:0px;
+ font-size: 10px;
+ padding-left:0px;
+}
+
+.footnote {
+ position:relative;
+}
+
+.footnote sup {
+ color: black;
+ left: .4em;
+}
+
+.footnote a:link,
+.footnote a:visited {
+ text-decoration:none;
+ border: none;
+}
+
+.footnote .para sup {
+/* position:absolute; */
+ vertical-align:text-bottom;
+}
+
+a.footnote {
+ padding-right: 0.5em;
+ text-decoration:none;
+ border: none;
+}
+
+.footnote sup a:link,
+.footnote sup a:visited {
+ color:#92917d;
+ text-decoration:none;
+}
+
+.footnote:hover sup a {
+ text-decoration:none;
+}
+
+.footnote p,.footnote div.para {
+ padding-left:1em;
+}
+
+.footnote a:link,
+.footnote a:visited before{
+ color:#00537c;
+}
+
+.footnote a:hover {
+}
+
+/**/
+.pdf-break {
+ page-break-before: always;
+}
+
+div.legalnotice {
+ page-break-before: always;
+}
+
+div.abstract {
+ page-break-before: always;
+/* page-break-after: always;*/
+}
+
+div.chapter {
+ page-break-before: always;
+}
+
+
+div.titlepage, div.titlepage > div, div.titlepage > div > div {
+ page-break-inside: avoid;
+ page-break-after: avoid;
+}
+
+div.preface, div.part {
+ page-break-before: always;
+}
+
+div.appendix {
+ page-break-before: always;
+}
+
+div.section {
+ page-break-inside: auto;
+ page-break-before: auto;
+ page-break-after: auto;
+}
+
+
+dt.varlistentry {
+ page-break-inside: avoid;
+ page-break-after: avoid;
+}
+
+dd {
+ page-break-before: avoid;
+}
+
+div.note .replaceable,
+div.important .replaceable,
+div.warning .replaceable,
+div.note .keycap,
+div.important .keycap,
+div.warning .keycap
+{
+}
+
+ul li p:last-child, ul li para:last-child {
+ margin-bottom:0px;
+ padding-bottom:0px;
+}
+
+/*document navigation*/
+.docnav a, .docnav strong {
+ border:none;
+ text-decoration:none;
+ font-weight:normal;
+}
+
+.docnav {
+ list-style:none;
+ margin:0px;
+ padding:0px;
+ position:relative;
+ width:100%;
+ padding-bottom:2em;
+ padding-top:1em;
+ height:2.5em;
+ line-height:2.5em;
+/*
+ border-top:1px dotted #ccc;
+ background-color: rgba(240, 240, 240, 0.9);
+-webkitbox-shadow: 0px .15em .5em rgba(0,0,0,0.2);
+ -moz-box-shadow: 0px .15em .5em rgba(0,0,0,0.2);
+ box-shadow: 0px .15em .5em rgba(0,0,0,0.2);
+*/
+}
+
+.docnav li {
+ list-style:none;
+ margin:0px;
+ padding:0px;
+ display:inline;
+ font-size: 14px;
+}
+
+.docnav li:before {
+ content:" ";
+}
+
+.docnav li.previous, .docnav li.next {
+ position:absolute;
+ top:1.5em;
+}
+
+.docnav li.up, .docnav li.home {
+ margin:0px 1.5em;
+}
+
+.docnav.top li.home {
+ color: #336699;
+ font-size: 22pt;
+ font-weight: bold;
+}
+
+
+.docnav li.previous {
+ left:0px;
+ text-align:left;
+}
+
+.docnav li.next {
+ right:0px;
+ text-align:right;
+}
+
+.docnav li.previous strong, .docnav li.next strong {
+ height: 17px;
+ display: block;
+}
+
+.docnav {
+ margin:0 auto;
+ text-align:center;
+}
+
+.docnav li.next a strong {
+ background: url(../images/stock-go-forward.png) right 120% no-repeat;
+ padding-top:3px;
+ padding-bottom:4px;
+ padding-right:28px;
+}
+
+.docnav li.previous a strong {
+ background: url(../images/stock-go-back.png) left 120% no-repeat;
+ padding-top:3px;
+ padding-bottom:4px;
+ padding-left:28px;
+ padding-right:0.5em;
+}
+
+.docnav li.home a strong {
+ background: url(../images/stock-home.png) top left no-repeat;
+ padding:5px;
+ padding-left:28px;
+}
+
+.docnav li.up a strong {
+ background: url(../images/stock-go-up.png) top left no-repeat;
+ padding:5px;
+ padding-left:28px;
+}
+
+.docnav a:link, .docnav a:visited {
+ color:#666;
+}
+
+.docnav a:hover, .docnav a:focus, .docnav a:active {
+ color:black;
+}
+
+.docnav a {
+ max-width: 10px;
+ overflow:hidden;
+}
+
+.docnav a:link strong {
+ text-decoration:none;
+}
+
+.docnav {
+ margin:0 auto;
+ text-align:center;
+}
+
+ul.docnav {
+ margin-bottom: 1em;
+}
+/* Reports */
+.reports ul {
+ list-style:none;
+ margin:0px;
+ padding:0px;
+}
+
+.reports li{
+ margin:0px;
+ padding:0px;
+}
+
+.reports li.odd {
+ background-color: #eeeeee;
+ margin:0px;
+ padding:0px;
+}
+
+.reports dl {
+ display:inline;
+ margin:0px;
+ padding:0px;
+ float:right;
+ margin-right: 17em;
+ margin-top:-1.3em;
+}
+
+.reports dt {
+ display:inline;
+ margin:0px;
+ padding:0px;
+}
+
+.reports dd {
+ display:inline;
+ margin:0px;
+ padding:0px;
+ padding-right:.5em;
+}
+
+.reports h2, .reports h3{
+ display:inline;
+ padding-right:.5em;
+ font-size: 14px;
+ font-weight:normal;
+}
+
+.reports div.progress {
+ display:inline;
+ float:right;
+ width:16em;
+ background:#c00 url(../images/shine.png) top left repeat-x;
+ margin:0px;
+ margin-top:-1.3em;
+ padding:0px;
+ border:none;
+}
+
+/*uniform*/
+body.results, body.reports {
+ max-width:57em ;
+ padding:0px;
+}
+
+/*Progress Bar*/
+div.progress {
+ display:block;
+ float:left;
+ width:16em;
+ background:#c00 url(../images/shine.png) top left repeat-x;
+ height:1em;
+}
+
+div.progress span {
+ height:1em;
+ float:left;
+}
+
+div.progress span.translated {
+ background:#6c3 url(../images/shine.png) top left repeat-x;
+}
+
+div.progress span.fuzzy {
+ background:#ff9f00 url(../images/shine.png) top left repeat-x;
+}
+
+
+/*Results*/
+
+.results ul {
+ list-style:none;
+ margin:0px;
+ padding:0px;
+}
+
+.results li{
+ margin:0px;
+ padding:0px;
+}
+
+.results li.odd {
+ background-color: #eeeeee;
+ margin:0px;
+ padding:0px;
+}
+
+.results dl {
+ display:inline;
+ margin:0px;
+ padding:0px;
+ float:right;
+ margin-right: 17em;
+ margin-top:-1.3em;
+}
+
+.results dt {
+ display:inline;
+ margin:0px;
+ padding:0px;
+}
+
+.results dd {
+ display:inline;
+ margin:0px;
+ padding:0px;
+ padding-right:.5em;
+}
+
+.results h2, .results h3 {
+ display:inline;
+ padding-right:.5em;
+ font-size: 14px;
+ font-weight:normal;
+}
+
+.results div.progress {
+ display:inline;
+ float:right;
+ width:16em;
+ background:#c00 url(../images/shine.png) top left repeat-x;
+ margin:0px;
+ margin-top:-1.3em;
+ padding:0px;
+ border:none;
+}
+
+/* Dirty EVIL Mozilla hack for round corners */
+pre {
+ -moz-border-radius:11px;
+ -webkit-border-radius:11px;
+ border-radius: 11px;
+/* page-break-inside: avoid; */
+}
+
+.example {
+ -moz-border-radius:0px;
+ -webkit-border-radius:0px;
+ border-radius: 0px;
+ page-break-inside: avoid;
+}
+
+/* move these invisible fields out of the flow */
+.example > a:first-child,
+.table > a:first-child {
+ float: left;
+}
+
+.package, .citetitle {
+ font-style: italic;
+}
+
+.titlepage .edition,
+.titlepage .releaseinfo {
+ color: #336699;
+ background-color: transparent;
+ margin-top: 1em;
+ margin-bottom: 1em;
+ font-size: 20px;
+ font-weight: bold;
+ text-align: center;
+}
+
+span.remark {
+ background-color: #ff00ff;
+}
+
+.draft {
+ background-image: url(../images/watermark-draft.png);
+ background-repeat: repeat-y;
+ background-position: center;
+}
+
+.foreignphrase {
+ font-style: inherit;
+}
+
+dt {
+ clear:both;
+ page-break-inside: avoid;
+ page-break-after: avoid;
+}
+
+dt img {
+ border-style: none;
+ max-width: 112px;
+}
+
+dt object {
+ max-width: 112px;
+}
+
+dt .inlinemediaobject, dt object {
+ display: inline;
+ float: left;
+ margin-bottom: 1em;
+ padding-right: 1em;
+ width: 112px;
+}
+
+dl:after {
+ display: block;
+ clear: both;
+ content: "";
+}
+
+.toc dd {
+ padding-bottom: 0px;
+ margin-bottom: 1em;
+ padding-left: 1.3em;
+ margin-left: 0px;
+}
+
+div.toc > dl > dt {
+ padding-bottom: 0px;
+ margin-bottom: 0px;
+ margin-top: 1em;
+}
+
+
+.strikethrough {
+ text-decoration: line-through;
+}
+
+.underline {
+ text-decoration: underline;
+}
+
+.calloutlist img, .callout {
+ padding: 0px;
+ margin: 0px;
+ width: 12pt;
+ display: inline;
+ vertical-align: middle;
+}
+
+li.step > a:first-child {
+ display: block;
+}
+
+.stepalternatives {
+ list-style-image: none;
+ list-style-type: upper-alpha;
+}
+.task {
+/* page-break-inside: avoid; */
+}
+
+
+.added {
+ background-color: #99ff99;
+}
+
+.changed {
+ background-color: #ffff77;
+}
+
+.deleted {
+ background-color: #ff4455;
+ text-decoration: line-through;
+}
diff --git a/doc/publican/html/css/default.css b/doc/publican/html/css/default.css
new file mode 100644
index 0000000..bf38ebb
--- /dev/null
+++ b/doc/publican/html/css/default.css
@@ -0,0 +1,3 @@
+@import url("common.css");
+@import url("overrides.css");
+@import url("lang.css");
diff --git a/doc/publican/html/css/epub.css b/doc/publican/html/css/epub.css
new file mode 100644
index 0000000..b0ffd43
--- /dev/null
+++ b/doc/publican/html/css/epub.css
@@ -0,0 +1,115 @@
+/*headings*/
+h1, h2, h3, h4, h5, h6,
+div.producttitle,
+div.subtitle,
+div.author div.author,
+div.translator div.translator,
+div.othercredit div.othercredit,
+div.editor div.editor,
+div.contrib div.contrib,
+.title,
+.titlepage .edition {
+}
+
+div.para {
+ margin-top: 1em;
+}
+/* inline syntax highlighting */
+.perl_Alert {
+ color: #0000ff;
+}
+
+.perl_BaseN {
+ color: #007f00;
+}
+
+.perl_BString {
+ color: #5C3566;
+}
+
+.perl_Char {
+ color: #ff00ff;
+}
+
+.perl_Comment {
+ color: #888888;
+}
+
+
+.perl_DataType {
+ color: #0000ff;
+}
+
+
+.perl_DecVal {
+ color: #00007f;
+}
+
+
+.perl_Error {
+ color: #ff0000;
+}
+
+
+.perl_Float {
+ color: #00007f;
+}
+
+
+.perl_Function {
+ color: #007f00;
+}
+
+
+.perl_IString {
+ color: #5C3566;
+}
+
+
+.perl_Keyword {
+ color: #002F5D;
+}
+
+
+.perl_Operator {
+ color: #ffa500;
+}
+
+
+.perl_Others {
+ color: #b03060;
+}
+
+
+.perl_RegionMarker {
+ color: #96b9ff;
+}
+
+
+.perl_Reserved {
+ color: #9b30ff;
+}
+
+
+.perl_String {
+ color: #5C3566;
+}
+
+
+.perl_Variable {
+ color: #0000ff;
+}
+
+
+.perl_Warning {
+ color: #0000ff;
+}
+
+b, strong {
+ font-weight: bolder;
+}
+
+code.command {
+ font-family: monospace;
+ font-weight: bolder;
+}
diff --git a/doc/publican/html/css/meson.build b/doc/publican/html/css/meson.build
new file mode 100644
index 0000000..699d70e
--- /dev/null
+++ b/doc/publican/html/css/meson.build
@@ -0,0 +1,14 @@
+foreach src : files([
+ 'brand.css',
+ 'common.css',
+ 'default.css',
+ 'epub.css',
+ 'print.css',
+])
+ name = fs.name(src)
+ publican_inputs += fs.copyfile(
+ name,
+ install: true,
+ install_dir: publican_install_prefix + '/html/css',
+ )
+endforeach
diff --git a/doc/publican/html/css/print.css b/doc/publican/html/css/print.css
new file mode 100644
index 0000000..54088f4
--- /dev/null
+++ b/doc/publican/html/css/print.css
@@ -0,0 +1,15 @@
+@import url("common.css");
+@import url("overrides.css");
+@import url("lang.css");
+
+#tocframe {
+ display: none;
+}
+
+body.toc_embeded {
+ margin-left: 30px;
+}
+
+.producttitle {
+ color: #336699;
+}
diff --git a/doc/publican/html/images/icon.svg b/doc/publican/html/images/icon.svg
new file mode 100644
index 0000000..b2f16d0
--- /dev/null
+++ b/doc/publican/html/images/icon.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" width="32" height="32" id="svg3017">
+ <defs id="defs3019">
+ <linearGradient id="linearGradient2381">
+ <stop id="stop2383" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
+ <stop id="stop2385" style="stop-color:#ffffff;stop-opacity:0" offset="1"/>
+ </linearGradient>
+ <linearGradient x1="296.4996" y1="188.81061" x2="317.32471" y2="209.69398" id="linearGradient2371" xlink:href="#linearGradient2381" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"/>
+ </defs>
+ <g transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)" id="g5089">
+ <path d="m 8.4382985,-6.28125 c -0.6073916,0 -4.3132985,5.94886271 -4.3132985,8.25 l 0,26.71875 c 0,0.846384 0.5818159,1.125 1.15625,1.125 l 25.5625,0 c 0.632342,0 1.125001,-0.492658 1.125,-1.125 l 0,-5.21875 0.28125,0 c 0.49684,0 0.906249,-0.409411 0.90625,-0.90625 l 0,-27.9375 c 0,-0.4968398 -0.40941,-0.90625 -0.90625,-0.90625 l -23.8117015,0 z" transform="translate(282.8327,227.1903)" id="path5091" style="fill:#5c5c4f;stroke:#000000;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"/>
+ <rect width="27.85074" height="29.369793" rx="1.1414107" ry="1.1414107" x="286.96509" y="227.63805" id="rect5093" style="fill:#032c87"/>
+ <path d="m 288.43262,225.43675 25.2418,0 0,29.3698 -26.37615,0.0241 1.13435,-29.39394 z" id="rect5095" style="fill:#ffffff"/>
+ <path d="m 302.44536,251.73726 c 1.38691,7.85917 -0.69311,11.28365 -0.69311,11.28365 2.24384,-1.60762 3.96426,-3.47694 4.90522,-5.736 0.96708,2.19264 1.83294,4.42866 4.27443,5.98941 0,0 -1.59504,-7.2004 -1.71143,-11.53706 l -6.77511,0 z" id="path5097" style="fill:#a70000;fill-opacity:1;stroke-width:2"/>
+ <rect width="25.241802" height="29.736675" rx="0.89682275" ry="0.89682275" x="290.73544" y="220.92249" id="rect5099" style="fill:#809cc9"/>
+ <path d="m 576.47347,725.93939 6.37084,0.41502 0.4069,29.51809 c -1.89202,-1.31785 -6.85427,-3.7608 -8.26232,-1.68101 l 0,-26.76752 c 0,-0.82246 0.66212,-1.48458 1.48458,-1.48458 z" transform="matrix(0.499065,-0.866565,0,1,0,0)" id="rect5101" style="fill:#4573b3;fill-opacity:1"/>
+ <path d="m 293.2599,221.89363 20.73918,0 c 0.45101,0 0.8141,0.3631 0.8141,0.81411 0.21547,6.32836 -19.36824,21.7635 -22.36739,17.59717 l 0,-17.59717 c 0,-0.45101 0.3631,-0.81411 0.81411,-0.81411 z" id="path5103" style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"/>
+ </g>
+</svg>
diff --git a/doc/publican/html/images/meson.build b/doc/publican/html/images/meson.build
new file mode 100644
index 0000000..98e5b93
--- /dev/null
+++ b/doc/publican/html/images/meson.build
@@ -0,0 +1,28 @@
+foreach src : files([
+ 'icon.svg',
+ 'wayland.png',
+])
+ name = fs.name(src)
+ publican_inputs += fs.copyfile(
+ name,
+ install: true,
+ install_dir: publican_install_prefix + '/html/images',
+ )
+endforeach
+
+foreach src : files([
+ 'wayland-architecture.gv',
+ 'x-architecture.gv',
+])
+ input = fs.name(src)
+ output = fs.stem(src) + '.png'
+
+ publican_inputs += custom_target(
+ input + '.png',
+ command: [ dot, '-Tpng', '-o@OUTPUT@', '@INPUT@' ],
+ input: input,
+ output: output,
+ install: true,
+ install_dir: publican_install_prefix + '/html/images',
+ )
+endforeach
diff --git a/doc/publican/html/images/wayland-architecture.gv b/doc/publican/html/images/wayland-architecture.gv
new file mode 100644
index 0000000..f2c3507
--- /dev/null
+++ b/doc/publican/html/images/wayland-architecture.gv
@@ -0,0 +1,36 @@
+digraph arch_wayland {
+ edge[
+ fontname="DejaVu Sans",
+ dir="both",
+ arrowtail="dot",
+ arrowsize=.5,
+ fontname="DejaVu Sans",
+ fontsize="18",
+ ]
+
+ node[
+ color=none,
+ margin=0,
+ fontname="DejaVu Sans",
+ fontsize="18",
+ ]
+
+ c1 [label=<<TABLE STYLE="rounded" BGCOLOR="#ffbc00"><TR><TD>Wayland Client</TD></TR></TABLE>>, URL="#c1"]
+ c2 [label=<<TABLE STYLE="rounded" BGCOLOR="#ffbc00"><TR><TD>Wayland Client</TD></TR></TABLE>>, URL="#c2"]
+
+ comp [tooltip="Wayland Compositor", label=<<TABLE STYLE="rounded" BGCOLOR="#ffbc00"><TR><TD><BR/>Wayland<BR/>Compositor<BR/><BR/></TD></TR></TABLE>>, URL="#comp"]
+
+ impl [tooltip="KMS evdev Kernel", label=<<TABLE STYLE="rounded" BGCOLOR="#ffbc00"><TR><TD>KMS</TD><TD>evdev</TD></TR><TR><TD COLSPAN="2">Kernel</TD></TR></TABLE>>, 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];
+}
diff --git a/doc/publican/html/images/wayland.png b/doc/publican/html/images/wayland.png
new file mode 100644
index 0000000..c993792
--- /dev/null
+++ b/doc/publican/html/images/wayland.png
Binary files differ
diff --git a/doc/publican/html/images/x-architecture.gv b/doc/publican/html/images/x-architecture.gv
new file mode 100644
index 0000000..b223d1d
--- /dev/null
+++ b/doc/publican/html/images/x-architecture.gv
@@ -0,0 +1,53 @@
+digraph arch_x {
+ edge[
+ fontname="DejaVu Sans",
+ dir="both",
+ arrowtail="dot",
+ arrowsize=.5,
+ fontname="DejaVu Sans",
+ fontsize="18",
+ ]
+
+ node[
+ shape="none",
+ color=none,
+ margin=0,
+ fontname="DejaVu Sans",
+ fontsize="18",
+ ]
+
+ {
+ rank=same;
+ c1 [label=<<TABLE STYLE="rounded" BGCOLOR="#ffbc00"><TR><TD>X Client</TD></TR></TABLE>>, URL="#c1"]
+ c3 [label=<<TABLE STYLE="rounded" BGCOLOR="#ffbc00"><TR><TD>X Client</TD></TR></TABLE>>, URL="#c3"]
+ }
+ c2 [label=<<TABLE STYLE="rounded" BGCOLOR="#ffbc00"><TR><TD>X Client</TD></TR></TABLE>>, URL="#c2"]
+
+ {
+ rank=same;
+ xserver [tooltip="X Server", label=<<TABLE STYLE="rounded" BGCOLOR="#ffbc00"><TR><TD><BR/>X Server<BR/><BR/></TD></TR></TABLE>>, URL="#xserver"]
+ comp [tooltip="Compositor", label=<<TABLE STYLE="rounded" BGCOLOR="#ffbc00"><TR><TD><BR/>Compositor<BR/><BR/></TD></TR></TABLE>>, URL="#comp"]
+ }
+
+ impl [tooltip="KMS evdev Kernel", label=<<TABLE STYLE="rounded" BGCOLOR="#ffbc00"><TR><TD>KMS</TD><TD>evdev</TD></TR><TR><TD COLSPAN="2">Kernel</TD></TR></TABLE>>, URL="#impl"]
+
+ c1 -> xserver [taillabel="③", labeldistance=2, URL="#step_3"];
+ c2 -> xserver;
+ c3 -> xserver;
+
+ xserver -> c1 [taillabel="②", labeldistance=2, URL="#step_2"];
+ xserver -> c2;
+ xserver -> c3;
+
+ xserver -> impl [taillabel="⑥", labeldistance=1.75, URL="#step_6"];
+ xserver -> impl [style=invis, label=" "];
+ impl -> xserver [taillabel="①", labeldistance=1.75, URL="#step_1"];
+
+ xserver -> comp [style=invis];
+ xserver -> comp [taillabel="④", labeldistance=1.75, labelangle=-45, URL="#step_4"];
+ comp -> xserver [taillabel="⑤", URL="#step_5"];
+ comp -> xserver [style=invis]
+
+ c1 -> c2 [style=invis];
+ c3 -> c2 [style=invis];
+ }
diff --git a/doc/publican/html/images/xwayland-architecture.png b/doc/publican/html/images/xwayland-architecture.png
new file mode 100644
index 0000000..f24dc18
--- /dev/null
+++ b/doc/publican/html/images/xwayland-architecture.png
Binary files differ