# SerenityOS Documentation

Serenity development moves quickly, so some of these might be out of date. Please let us know if something here is wrong, or submit a PR with any additions or corrections! If you have any questions that are not answered here or in the [FAQ](FAQ.md), you are welcome to ask on [Discord](../README.md#get-in-touch-and-participate).

A list of useful pages across the web can be found on [the link list](Links.md).

## Building and Running

-   [Build Instructions](BuildInstructions.md)
-   [Advanced Build Instructions](AdvancedBuildInstructions.md)
-   [Troubleshooting](Troubleshooting.md)
-   [Running in VirtualBox](VirtualBox.md)
-   [Running in VMware](VMware.md)
-   [Running Tests](RunningTests.md)
-   [Setting Up Self-Hosted Runners](SelfHostedRunners.md)
-   [Profiling the Build](BuildProfilingInstructions.md)
-   [Spice Integration](SpiceIntegration.md)

### OS-specific

Make sure to read the basic [Build Instructions](BuildInstructions.md) first.

-   [Building on Windows](BuildInstructionsWindows.md)
-   [Building on macOS](BuildInstructionsMacOS.md)
-   [Building on Linux](BuildInstructionsOther.md)

### Running on Hardware

-   [Bare Metal Installation](BareMetalInstallation.md)
-   [Running On Raspberry Pi](RunningOnRaspberryPi.md)

## Configuring Editors and Language Servers

-   [clangd (all editors)](ClangdConfiguration.md)
-   [CLion](CLionConfiguration.md)
-   [Emacs](EmacsConfiguration.md)
-   [Helix](HelixConfiguration.md)
-   [NVim](NvimConfiguration.md)
-   [Qt Creator](QtCreatorConfiguration.md)
-   [Vim](VimConfiguration.md)
-   [VS Code](VSCodeConfiguration.md)

## Development

-   [How to Contribute](../CONTRIBUTING.md)
-   [Coding Style](CodingStyle.md)
-   [Common Patterns](Patterns.md)
-   [Guidelines for Text in UI](HumanInterfaceGuidelines/Text.md)
-   [Guidelines for writing manual pages](WritingManPages.md)
-   [EventLoop](EventLoop.md)
-   [High DPI Support](HighDPI.md)
-   [Smart Pointers](SmartPointers.md)
-   [String Formatting](StringFormatting.md)
-   [How to Transfer Files Out of Serenity](TransferringFiles.md)

### File and Data Formats

-   [Application Files (.af)](../Base/usr/share/man/man5/af.md)
-   [Bitmap Fonts (.font)](../Base/usr/share/man/man5/font.md)
-   [Clipboard data](../Base/usr/share/man/man5/clipboard.md)
-   [Drag-and-drop data](../Base/usr/share/man/man5/drag-and-drop.md)
-   [GUI Markup Language (.gml)](../Base/usr/share/man/man5/GML.md)
-   [HackStudio Post-Create Scripts (.postcreate)](../Base/usr/share/man/man5/postcreate.md)
-   [Inter-Process Communication protocol (.ipc)](../Base/usr/share/man/man4/ipc.md)

## Browser/LibWeb

-   [Ladybird Browser Build Instructions](BuildInstructionsLadybird.md)
-   [General Architecture](Browser/ProcessArchitecture.md)
-   [LibWeb: From Loading to Painting](Browser/LibWebFromLoadingToPainting.md)
-   [How to Add an IDL File](Browser/AddNewIDLFile.md)
-   [LibWeb Code Style & Patterns](Browser/Patterns.md)
-   [CSS Generated Files](Browser/CSSGeneratedFiles.md)

## Kernel

-   [AHCI Locking](Kernel/AHCILocking.md)
-   [ProcFS Indexing](Kernel/ProcFSIndexing.md)
-   [RAMFS](Kernel/RAMFS.md)
-   [IOWindow](Kernel/IOWindow.md)
-   [Graphics Subsystem](Kernel/GraphicsSubsystem.md)
-   [Kernel Development Patterns & Guidelines](Kernel/DevelopmentGuidelines.md)

## Architecture Ports

-   [RISC-V](RISC-V.md)

## Applications

Documentation for SerenityOS applications and utilities can be found in [the man pages](https://man.serenityos.org/).
