mirror of https://gitlab.com/nakst/essence
11 KiB
11 KiB
This file contains a list and description of the files and folders in the source tree.
apps/Builtin applications. Each application has an.inifile that is automatically detected by the build system.samples/Sample applications, demonstrating a small part of the API.hello.cA hello world GUI application. Read through this first if you want to learn how to write applications for Essence!converter.cppA simple currency converter. Demonstrates panels, buttons, and textboxes.game_loop.cppA simple game loop. Demonstrates how to draw directly to the window with a custom UI element, and manually process keyboard input events.list.cppA sample of the fixed items mode of the list view.
file_manager/The file manager application.commands.cppImplementation of commands like copy and paste.folder.cppContains implementations of namespaces, like file system folders and the drives page.main.cppMain message loop, and settings management.string.cppString and path utilities.type_database.cppManagement of file types.ui.cppCreates and manages the user interface. Contains the thumbnail generator.
arch/Contains target architecture specific files. Each architecture is placed in a separate folder, named after the target name. Note that some architecture specific code is also located inboot/. The folder will contain the following files:kernel.sThe assembly translation unit that will be linked with the kernel.kernel.cppThe C++ translation unit that will be linked with the kernel. Together withkernel.s, this should provide all the functions listed in the architecture specific layer part of thekernel/kernel.h.api.sThe assembly translation unit that will be linked with the desktop. This must provide a system call interface, as well as a few miscellaneous functions.config.iniSpecifies additional compilation flags for the architecture.
bin/Contains the output of the build system that will not be copied onto the drive image.Logs/Contains various logs of the build processes and emulators.net.datNetwork packets captured and sent by Qemu.audio.wavAudio captured by Qemu.qemu_serial1.txtSerial output captured by Qemu.system.logA list of commands passed tosystem()byutil/build.c, including the time each command took.
cache/Cached files downloaded from the internet, managed by theget-sourcecommand in the build system.generated_code/Automatically generated code.build.iniThe build configuration file that is passed fromutil/build.ctoutil/build_core.c. Save this if you want to automate a specific build.build_config.iniThe configuration file forutil/build.c. Stores whether the user has read the license, and information about the cross compiler toolchain.config.iniThe configuration file modified byutil/config_editor.c(open by running theconfigcommand in the build system). The full list of options in the file is stored in theoptionsarray inutil/build_common.h.dependencies.iniSaved information about source file dependencies used by theutil/build_core.cfor minimal rebuilds.driveThe output drive image, used to boot the emulators.- Additionally, there is an ELF executable file with debug symbols for each of the built applications, the desktop, the kernel and the build utilities.
boot/Contains boot code for different architectures, before the kernel is reached.x86/Boot code for x86 PC platforms.mbr.sFirst stage of the MBR boot loader. Placed in the first sector of the drive.mbr-emu.sAn alternative version ofmbr.sfor CD-ROMs rather than hard drives.esfs-stage1.sSecond stage of the MBR boot loader. Placed in the first sector of the EsFS partition. Loaded by the first stage.loader.sThird stage of the MBR boot loader. Placed in the reserved area of the EsFS partition. Loaded by the second stage.esfs-stage2.sFile system specific code for the third stage of the MBR boot loader.vbe.sContains code to select and set a video mode for the MBR boot loader; part of the third stage.uefi.cFirst stage of the UEFI boot loader.uefi_loader.sSecond stage of the UEFI boot loader.
cross/Contains the cross compiler toolchain.bin2/When using the pre-built toolchain, wrappers of the executables inbin/are stored here. These are needed to replace the system root path that was hard coded into the toolchain when it was configured.
desktop/TODOdrivers/Drivers linked into the kernel.acpi.cppSimple ACPI layer. Parses the MADT for loading other processors.acpi_thermal.cppACPI thermal layer. Requires ACPICA.acpica.cppIntegration with ACPICA, which provides greater ACPI functionality.ahci.cppAHCI/SATA drives.bga.cppBochs Graphics Adapter, for setting the video mode on emulators.esfs2.cppThe Essence file system (second version).ext2.cppExt2 file system.fat.cppFAT12/16/32 file systems.hda.cppHD Audio.i8254x.cppi8254x networking card.ide.cppIDE/ATA drives.iso9660.cppISO9660 file system for CD-ROMs.ntfs.cppNTFS file system.nvme.cppNVMe drives.pci.cppPCI bus enumeration.ps2.cppPS/2 keyboard and mouse.rtc.cppx86 Real Time Clock.svga.cpp(S)VGA graphics drivers.usb.cppCommon USB management for connecting and identifying devices.usb_bulk.cppUSB bulk mass storage drives.usb_hid.cppUSB HID class devices, including keyboards, mice and game controllers.xhci.cppxHCI USB controller driver.
help/You are here! Contains documentation about the project.kernel/TODOports/Ported application, including dependencies.res/Resources, such as fonts and images.Fonts/Fonts. Licenses are contained in this folder.Keyboard Layouts/Keyboard layouts. Contains a license file, andextract_keymaps.cwhich can be used to generate the keyboard layout files here from an X11 system.Sample Images/Sample images. Contains a license file. Copy these intoroot/to access them from the built system.Theme Source.datThe source for the theme file, used byutil/designer2.cpp. Open with thedesignercommand in the build system.Theme.datThe exported theme file that will be used by the UI. Callbin/designer2 exportto regenerate this from the theme source.elementary Icons.datThe elementaryOS icons pack. The icon pack is a custom format, and is generated byutil/render_svg.c.
root/Contains the output of the build system that will be copied onto the drive image. You can put any files you want to be copied onto the drive in here.shared/Shared code between different parts of the proejct, including data structures.esfs2.hDefinitions for the Essence file system, and code for managing it (compiled intoutil/build_core.c).ini.hA tiny INI file parser.arena.cppA memory allocator for arbitrary allocation and freeing of fixed size memory blocks.array.cppDynamically allocated array.avl_tree.cppAVL lookup tree, including support for searches for the "smallest above or equal" and "largest below or equal".bitset.cppEfficient large bitsets.common.cppVarious common functions, including management ofEsRectangles, rendering, string utilities, memory utilities (likeEsMemoryCopy), printing and string formatting, pseudo random number generation, standard algorithms like sorting, synchronisation primitives, byte swapping, implementation of theEsCRT-functions,EsBufferfunctions, and time and date calculations.fat.cppCommon definitions for the FAT file system.hash.cppImplementation of CRC32 and CRC64 hash functions.hash_table.cppA hash table, including an implementation of the FNV1a hash function.heap.cppA memory allocator for arbitrary allocation and freeing of non-fixed size memory blocks.linked_list.cppTwo implementations of a doubly-linked list:LinkedList<T>andSimpleList<T>where the latter requires less memory but provides less features.math.cppMathematical functions, including basic utilities, interpolation routines, HSV color conversions, standard trigonometric functions, high precision floating-point calculations, and an expression parser.partitions.cppContains routines to manage MBR and GPT partition tables.png_decoder.cppA decoder of PNG image files.range_set.cppEfficiently stores a subset of the integers as a list of ranges.strings.cppAll text displayed in the user interface of the built-in applications.unicode.cppImplementations of various Unicode standards, including UTF-8 decoding and validation, and the line breaking algorithm.vga_font.cppA fixed-width bitmap font.
util/Contains utilities for developing and building the project.linker/Contains linker scripts.w32/The experimental W32 backend for the Essence desktop.build_common.hCommon definitions shared betweenbuild.candbuild_core.c.luigi.hA single-header cross platform GUI library.build.cThe main build system prompt, which manages dependencies, the toolchain, build configurations, and launching emulators. It is accessed by the developer by running thestart.shscript at the root of the source tree. The developer can then issue commands to build and test the operating system and other utilities.build_core.cThe heart of the build system, which actually builds the project. It is called bybuild.c, and passed a build configuration file inbin/build.iniwhich contains all possible configuration options. It can run within Essence. It is also able to build single applications, by passing the.inifile for that application.change_sysroot.cA utility that usesptraceto replace strings in system calls.toolchain_wrapper.cWraps the executables in the pre-built toolchain to call intochange_sysroot.c, to change the system root path they use.config_editor.cA graphical editor for the configuration file,bin/config.ini. Usesluigi.h.font_editor.cA basic bitmap font editor. Usesluigi.h.header_generator.cGenerates the API header for different programming languages fromdesktop/os.header. Part ofbuild_core.c.render_svg.cConverts SVGs to an internal format for vector graphics, and creates the icon pack found inres/. Despite the name this does not actually render the SVGs to bitmaps! That is eventually done inapi/renderer.cpp.designer2.cppAn editor of theme files for the UI. Usesluigi.h.uefi.shCreates a drive image using the UEFI boot loader.uefi_compile.shCompiles the UEFI boot loader.uefi_to_device.shFormats a real device to use the UEFI boot loader.api_table.iniA list of all the functions exposed by the API, and their corresponding ordinals. Managed byheader_generator.c.test.txtA file containing a few traps that might be mangled by source control or compression utilities. Verified bystart.shto ensure that the source is as we'd expect.