Truly independent web browser
Find a file
Arne Elster 7223b593cb LibAudio: Add basic MP3 Decoder
This is a basic MPEG-1 layer 3 audio decoder. It supports all
sample rates and stereo modes except for freeformat.
2022-02-26 16:01:26 +01:00
.github CI: Disable compiletime header check 2022-02-16 23:19:50 +02:00
AK AK: Add constructor to create Span from Array 2022-02-26 16:01:26 +01:00
Base Base: Make U+0126, U+0132, U+0152 and U+0153 wider in Katica Bold 10 2022-02-26 15:32:38 +01:00
Documentation Userland: Rename WindowServerConnection=>ConnectionToWindowServer 2022-02-25 22:35:12 +01:00
Kernel Kernel: Use IO init method for Bochs emulated VGA adapter 2022-02-24 09:08:04 +02:00
Meta Userland: Rename IPC ClientConnection => ConnectionFromClient 2022-02-25 22:35:12 +01:00
Ports Ports: Add Bochs x86 PC emulator 2022-02-23 09:59:08 +00:00
Tests AK: Ignore whitespace while decoding base64 2022-02-25 19:54:13 +01:00
Toolchain Toolchain: Set CMAKE_NM for Clang and GNU toolchain files 2022-02-19 21:27:46 +01:00
Userland LibAudio: Add basic MP3 Decoder 2022-02-26 16:01:26 +01:00
.clang-format Meta: Update .clang-format to not indent nested namespaces 2020-03-14 10:10:21 +01:00
.clang-tidy Meta: Disable readability-use-anyofallof clang-tidy check 2022-01-09 23:29:57 -08:00
.gitattributes Repository: Protect port patches from CRLF/LF normalization 2022-01-12 01:08:38 +01:00
.gitignore man.serenityos.org: Simplify local builds 2021-10-22 19:49:28 +03:00
.mailmap Meta: Fix my .mailmap entry by adding the name 2022-01-25 23:26:14 +00:00
.pre-commit-config.yaml Meta: Add a post-commit commit message linter hook 2021-05-02 16:28:01 +02:00
.prettierignore CI: Bump prettier to latest version (2.4.1) 2021-11-21 01:18:23 +00:00
.prettierrc Meta: Move prettier config files to the root of the repository 2020-08-24 18:21:33 +02:00
azure-pipelines.yml CI: Disallow test failures on macOS Lagom :^) 2022-01-14 22:39:06 +01:00
CMakeLists.txt Meta: Use correct variable for checking if the mold linker is used 2022-02-19 14:21:52 +02:00
CONTRIBUTING.md Meta: Add Tim Flynn to list of project maintainers :^) 2022-02-11 22:24:10 +01:00
LICENSE Meta: Update year range in LICENSE :^) 2022-01-02 18:08:02 +01:00
README.md Meta: Remove SB16 driver from the features list in README.md 2022-02-24 07:26:45 +01:00

SerenityOS

Graphical Unix-like operating system for x86 computers.

GitHub Actions Status Azure DevOps Status Fuzzing Status Sonar Cube Static Analysis Discord

About

SerenityOS is a love letter to '90s user interfaces with a custom Unix-like core. It flatters with sincerity by stealing beautiful ideas from various other systems.

Roughly speaking, the goal is a marriage between the aesthetic of late-1990s productivity software and the power-user accessibility of late-2000s *nix. This is a system by us, for us, based on the things we like.

You can watch videos of the system being developed on YouTube:

Screenshot

Screenshot as of b36968c.png

Kernel features

  • x86 (32-bit) and x86_64 (64-bit) kernel with pre-emptive multi-threading
  • Hardware protections (SMEP, SMAP, UMIP, NX, WP, TSD, ...)
  • IPv4 stack with ARP, TCP, UDP and ICMP protocols
  • ext2 filesystem
  • POSIX signals
  • Purgeable memory
  • /proc filesystem
  • Pseudoterminals (with /dev/pts filesystem)
  • Filesystem notifications
  • CPU and memory profiling
  • VMWare/QEMU mouse integration

System services

  • Launch/session daemon (SystemServer)
  • Compositing window server (WindowServer)
  • Text console manager (TTYServer)
  • DNS client (LookupServer)
  • Network protocols server (RequestServer and WebSocket)
  • Software-mixing sound daemon (AudioServer)
  • Desktop notifications (NotificationServer)
  • HTTP server (WebServer)
  • Telnet server (TelnetServer)
  • DHCP client (DHCPClient)

Libraries

  • C++ templates and containers (AK)
  • Event loop and utilities (LibCore)
  • 2D graphics library (LibGfx)
  • OpenGL 1.x compatible library (LibGL)
  • GUI toolkit (LibGUI)
  • Cross-process communication library (LibIPC)
  • HTML/CSS engine (LibWeb)
  • JavaScript engine (LibJS)
  • Markdown (LibMarkdown)
  • Audio (LibAudio)
  • Digital Signal Processing/Synthesizer Chains (LibDSP)
  • PCI database (LibPCIDB)
  • Terminal emulation (LibVT)
  • Out-of-process network protocol I/O (LibProtocol)
  • Mathematical functions (LibM)
  • ELF file handling (LibELF)
  • POSIX threading (LibPthread)
  • Higher-level threading (LibThreading)
  • Transport Layer Security (LibTLS)
  • HTTP and HTTPS (LibHTTP)
  • IMAP (LibIMAP)

Userland features

  • Unix-like libc and userland
  • Shell with pipes and I/O redirection
  • On-line help system (both terminal and GUI variants)
  • Web browser (Browser)
  • C++ IDE (HackStudio)
  • Desktop synthesizer (Piano)
  • E-mail client (Mail)
  • Various desktop apps & games
  • Color themes

How do I read the documentation?

Man pages are available online at man.serenityos.org. These pages are generated from the Markdown source files in Base/usr/share/man and updated automatically.

When running SerenityOS you can use man for the terminal interface, or help for the GUI.

How do I build and run this?

See the SerenityOS build instructions

Before opening an issue

Please see the issue policy.

FAQ: Frequently Asked Questions

Get in touch

Join our Discord server: SerenityOS Discord

Author

Contributors

(And many more!) The people listed above have landed more than 100 commits in the project. :^)

License

SerenityOS is licensed under a 2-clause BSD license.