diff --git a/Doxyfile b/Doxyfile
index fccd4a493..d0c0414dc 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -2,9 +2,38 @@
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "libghostty"
+PROJECT_LOGO = images/gnome/64.png
INPUT = include/ghostty/vt.h
INPUT_ENCODING = UTF-8
RECURSIVE = NO
+FULL_PATH_NAMES = NO
+STRIP_FROM_INC_PATH = include
+SOURCE_BROWSER = YES
+INLINE_SOURCES = NO
+REFERENCES_RELATION = YES
+REFERENCED_BY_RELATION = YES
+
+#---------------------------------------------------------------------------
+# C API Optimization
+#---------------------------------------------------------------------------
+
+# Optimize output for C API documentation
+OPTIMIZE_OUTPUT_FOR_C = YES
+TYPEDEF_HIDES_STRUCT = YES
+HIDE_SCOPE_NAMES = YES
+
+# Clean path names
+FULL_PATH_NAMES = NO
+STRIP_FROM_PATH = .
+STRIP_FROM_INC_PATH = include
+
+# Hide undocumented and internal APIs
+HIDE_UNDOC_MEMBERS = YES
+HIDE_UNDOC_CLASSES = YES
+EXTRACT_ALL = NO
+INTERNAL_DOCS = NO
+EXTRACT_PRIVATE = NO
+EXTRACT_LOCAL_CLASSES = NO
#---------------------------------------------------------------------------
# HTML Output
@@ -12,6 +41,21 @@ RECURSIVE = NO
GENERATE_HTML = YES
HTML_OUTPUT = zig-out/share/ghostty/doc/libghostty
+HTML_EXTRA_STYLESHEET = dist/doxygen/ghostty.css
+HTML_EXTRA_FILES = dist/doxygen/favicon.png
+HTML_COLORSTYLE = DARK
+LAYOUT_FILE = DoxygenLayout.xml
+GENERATE_TREEVIEW = YES
+HTML_DYNAMIC_SECTIONS = YES
+SEARCHENGINE = YES
+ALPHABETICAL_INDEX = YES
+HTML_TIMESTAMP = NO
+
+#---------------------------------------------------------------------------
+# Graphs and Diagrams
+#---------------------------------------------------------------------------
+
+HAVE_DOT = NO
#---------------------------------------------------------------------------
# Man Output
@@ -20,6 +64,7 @@ HTML_OUTPUT = zig-out/share/ghostty/doc/libghostty
GENERATE_MAN = YES
MAN_OUTPUT = zig-out/share/man
MAN_EXTENSION = .3
+MAN_LINKS = YES
#---------------------------------------------------------------------------
# Other Output
diff --git a/DoxygenLayout.xml b/DoxygenLayout.xml
index 67497e83f..ae9c52684 100644
--- a/DoxygenLayout.xml
+++ b/DoxygenLayout.xml
@@ -6,37 +6,15 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
+
diff --git a/dist/doxygen/favicon.png b/dist/doxygen/favicon.png
new file mode 100644
index 000000000..b647bcf35
Binary files /dev/null and b/dist/doxygen/favicon.png differ
diff --git a/dist/doxygen/ghostty.css b/dist/doxygen/ghostty.css
new file mode 100644
index 000000000..cac21e689
--- /dev/null
+++ b/dist/doxygen/ghostty.css
@@ -0,0 +1,99 @@
+/**
+ * Ghostty Doxygen Custom Stylesheet
+ * Minimal branding customizations for Ghostty colors
+ */
+
+/* Ghostty brand color for links and accents - high contrast for dark bg */
+a, a:link {
+ color: #99B3FF;
+}
+
+a:visited {
+ color: #99B3FF;
+}
+
+a:hover {
+ color: #C2D4FF;
+}
+
+/* High contrast text colors */
+body, div.contents, div.header, .title, .summary, td, th, p, li {
+ color: #E8E8E8 !important;
+}
+
+h1, h2, h3, h4, h5, h6, .groupheader {
+ color: #FFFFFF !important;
+}
+
+.memtitle, .memname {
+ color: #FFFFFF !important;
+}
+
+.memdoc {
+ color: #E8E8E8 !important;
+}
+
+/* Selection color */
+::selection {
+ background: rgba(53, 81, 243, 0.6);
+}
+
+/* Tree view selected item */
+#nav-tree .selected {
+ background-color: #3551F3 !important;
+}
+
+/* Custom syntax highlighting optimized for dark backgrounds with high contrast */
+.fragment, div.line {
+ color: #F0F0F0 !important;
+}
+
+/* Keywords (int, void, const, static, etc.) */
+.keyword, .keywordtype {
+ color: #FF8BE6 !important;
+ font-weight: 500;
+}
+
+/* Control flow (if, else, return, for, while, etc.) */
+.keywordflow {
+ color: #FF8BE6 !important;
+ font-weight: 500;
+}
+
+/* Comments */
+.comment {
+ color: #8BC34A !important;
+ font-style: italic;
+}
+
+/* Preprocessor directives (#include, #define, etc.) */
+.preprocessor {
+ color: #FFCC66 !important;
+}
+
+/* String and character literals */
+.stringliteral, .charliteral {
+ color: #B8E986 !important;
+}
+
+/* Numbers */
+span.charliteral {
+ color: #D4A5FF !important;
+}
+
+/* Function names */
+.functionname {
+ color: #6FE87C !important;
+ font-weight: 500;
+}
+
+/* Line numbers */
+span.lineno {
+ color: #8A8A8A !important;
+ background-color: transparent !important;
+}
+
+span.lineno a {
+ color: #8A8A8A !important;
+ background-color: transparent !important;
+}