Overview
Hi everyone 👋🏼
In this article, I'm going to look at seven OSS repository that you should know written in C, interesting projects that caught my attention and that I want to share.
Let's start 🤙🏼
1. LVGL
LVGL is the most popular open source embedded graphics library to create beautiful UIs for any MCU, MPU and display type. It's supported by industry leading vendors and projects like Arm, STM32, NXP, Espressif, Nuvoton, Arduino, RT-Thread, Zephyr, NuttX, Adafruit and many more.
Amazing and beautiful project! 😎
English | 中文 | Português do Brasil | 日本語
Light and Versatile Graphics Library
Website | Docs | Forum | Demos | Services
📒 Overview
Mature and Well-known
LVGL is the most popular free and open source embedded graphics library to create beautiful UIs for any MCU, MPU and display type. It's supported by industry leading vendors and projects like Arm, STM32, NXP, Espressif, Nuvoton, Arduino, RT-Thread, Zephyr, NuttX, Adafruit and many more.
Feature Rich
It has all the features to create modern and beautiful GUIs: 30+ built-in widgets, a powerful style system, web inspired layout managers, and a typography system supporting many languages. To integrate LVGL into your platform, all you need is at least 32kB RAM and 128 kB Flash, a C compiler, a frame buffer, and at least an 1/10 screen sized buffer for rendering.
Services
Our team is ready to help you with graphics design, UI…
2. systemd
systemd is a suite of basic building blocks for a Linux system. It provides a system and service manager that runs as PID 1 and starts the rest of the system. 🤖
System and Service Manager
Details
Most documentation is available on systemd's web site.
Assorted, older, general information about systemd can be found in the systemd Wiki.
Information about build requirements is provided in the README file.
Consult our NEWS file for information about what's new in the most recent systemd versions.
Please see the Code Map for information about this repository's layout and content.
Please see the Hacking guide for information on how to hack on systemd and test your modifications.
Please see our Contribution Guidelines for more information about filing GitHub Issues and posting GitHub Pull Requests.
When preparing patches for systemd, please follow our Coding Style Guidelines.
If you are looking for support, please contact our mailing list, join our IRC channel #systemd on libera.chat or Matrix channel
Stable branches with backported patches are available in the stable repo.
We have a…
3. DOOM Retro
Who doesn't know the successful DOOM video game series?
DOOM Retro is the classic, refined DOOM source port for Windows PC. It represents the game in all its dark and gritty, unapologetically pixelated glory. 👹
bradharding / doomretro
The classic, refined DOOM source port. For Windows PC.
DOOM Retro is the classic, refined DOOM source port for Windows PC. It represents how I like my DOOM to be today, in all its dark and gritty, unapologetically pixelated glory. I have strived to craft a unique and cohesive set of compelling features, while continuing to uphold my respect for that classic, nostalgic DOOM experience many of us, after all this time, still hold dear.
Open the DOOM Retro Wiki for more information.
DOOM Retro is Copyright © 2013–2024 by Brad Harding. All rights reserved. Coded with love in Western Sydney, Australia. DOOM Retro is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the license, or (at your option) any later version. DOOM Retro is distributed in the hope that it will be useful, but…
4. OBS Studio
OBS Studio needs no introduction: the famous screen recording and live streaming software is open source and written in C! 📹
obsproject / obs-studio
OBS Studio - Free and open source software for live streaming and screen recording
OBS Studio <https://obsproject.com>
What is OBS Studio?
OBS Studio is software designed for capturing, compositing, encoding, recording, and streaming video content, efficiently.
It's distributed under the GNU General Public License v2 (or any later version) - see the accompanying COPYING file for more details.
Quick Links
- Website: https://obsproject.com
- Help/Documentation/Guides: https://github.com/obsproject/obs-studio/wiki
- Forums: https://obsproject.com/forum/
- Build Instructions: https://github.com/obsproject/obs-studio/wiki/Install-Instructions
- Developer/API Documentation: https://obsproject.com/docs
- Donating/backing/sponsoring: https://obsproject.com/contribute
- Bug Tracker: https://github.com/obsproject/obs-studio/issues
Contributing
- If you would like to help fund or sponsor the project, you can do so via Patreon, OpenCollective, or PayPal. See our contribute page for more information.
- If you wish to contribute code to the project, please make sure to read the coding and commit guidelines https://github.com/obsproject/obs-studio/blob/master/CONTRIBUTING.rst
- Developer/API documentation can be found here: https://obsproject.com/docs
- If you wish to contribute translations, do not submit pull requests. Instead, please use Crowdin. For more information read this page: https://obsproject.com/wiki/How-To-Contribute-Translations-For-OBS
- Other ways to contribute are…
5. raylib
raylib is a simple and easy-to-use library to enjoy videogames programming.
It is highly inspired by Borland BGI graphics library and by XNA framework and it's especially well suited for prototyping, tooling, graphical applications, embedded systems and education. 🕹
raylib is a simple and easy-to-use library to enjoy videogames programming.
raylib is highly inspired by Borland BGI graphics lib and by XNA framework and it's especially well suited for prototyping, tooling, graphical applications, embedded systems and education.
NOTE for ADVENTURERS: raylib is a programming library to enjoy videogames programming; no fancy interface, no visual helpers, no debug button... just coding in the most pure spartan-programmers way.
Ready to learn? Jump to code examples!
features
- NO external dependencies, all required libraries are bundled into raylib
- Multiple platforms supported: Windows, Linux, MacOS, RPI, Android, HTML5... and more!
- Written in plain C code (C99) using PascalCase/camelCase notation
- Hardware accelerated with OpenGL (1.1, 2.1, 3.3, 4.3, ES 2.0, ES 3.0)
- Unique OpenGL abstraction layer (usable as standalone module): rlgl
- Multiple Fonts formats supported (TTF, OTF, Image fonts, AngelCode fonts)
- Multiple texture formats supported, including compressed formats (DXT, ETC, ASTC)
- Full…
6. Celluloid
Celluloid (formerly GNOME MPV) is a simple GTK+ frontend for mpv. It interacts with mpv via the client API exported by libmpv, allowing access to mpv's powerful playback capabilities.
It is an alternative of VLC. 🧨
celluloid-player / celluloid
A simple GTK+ frontend for mpv
Celluloid
Celluloid (formerly GNOME MPV) is a simple GTK+ frontend for mpv. Celluloid interacts with mpv via the client API exported by libmpv, allowing access to mpv's powerful playback capabilities.
Repository Mirror: https://codeberg.org/celluloid-player/celluloid
Dependencies
- appstream-glib (build)
- pkg-config (build)
- gcc (build)
- glib >= 2.66
- gtk >= 4.10
- libadwaita >= 1.6.0
- mpv >= 0.32
- epoxy
- lua (optional)
- youtube-dl (optional)
Installation
Packages
Ubuntu users can use this PPA to get more up-to-date versions of Celluloid.
Flatpak
Flatpak packages support multiple distributions and are sandboxed. Flatpak 0.9.5+ is recommended for best integration.
Stable releases are hosted on Flathub:
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub io.github.celluloid_player.Celluloid
Snap
Stable releases are hosted on Snapcraft:
sudo snap install celluloid
Source code
Run the following command in the source code directory to build and install:
meson setup build && cd build && ninja && sudo ninja install
Usage
Opening files
There are 4 ways…
7. finit
finit (Fast init for Linux) is an alternative to SysV init and systemd, originally reverse engineered from the EeePC. 🪛
- Introduction
- Features
- Runlevels
- Syntax
- Rebooting & Halting
- Commands & Status
- Tips & Tricks with the kernel cmdline
- Building
- Requirements
- Origin & References
Introduction
Fast init for Linux systems. Reverse engineered from the EeePC fastinit by Claudio Matsuoka — "gaps filled with frog DNA …"
Figure 1: Screenshot of Finit booting Alpine Linux (HowTo).
Features include:
- Runlevels, defined per service
- One-shot tasks, services (daemons), or SysV init start/stop scripts
- Runparts and
/etc/rc.local
support - Process supervision similar to systemd
- Sourcing environment files
- Conditions for network/process/custom dependencies
- Readiness notification; PID files (native) for synchronizing system startup, support for systemd sd_notify(), or s6 style too
- Limited support for tmpfiles.d(5) (no aging, attributes, or subvolumes)
- Pre/Post script actions
- Rudimentary templating support
- Tooling to enable/disable services
- Built-in getty
- Built-in watchdog, with support for hand-over to watchdogd
- Built-in support for Debian/BusyBox
/etc/network/interfaces
- Cgroups v2, both…
Conclusion
This list lists seven open source projects that are worth checking out, either to use them or even to contribute🖖
Happy coding!✨
Hi👋🏻
My name is Domenico, software developer passionate of Vue.js framework, I write article about it for share my knowledge and experience.
Don't forget to visit my Linktree to discover my projects 🫰🏻
Linktree: https://linktr.ee/domenicotenace
Follow me on dev.to for other articles 👇🏻
If you like my content or want to support my work on GitHub, you can support me with a very small donation.
I would be grateful 🥹
Top comments (2)
Hi Domenico Tenace ,
Top, very nice and helpful !
Thanks for sharing.
Hi @jangelodev
Thanks for the feedback 🤗
It was a pleasure ✨