A clean, custom-built modular kernel ready to boot on x86_64.

Overview

Average time to resolve an issue Percentage of issues still open


Lateral is a work-in-progress multitasking monolithic kernel + OS meant as a fun summer project.

It has recently expanded into more than I could imagine, and I'm looking to implement a fully usable operating system in the future.

The Window Manager

Lateral's window manager contains a floating, widget-based desktop with custom syntax for defining window attributes and widgets via. Rust's macro system. Titles and (in the future) menu actions are displayed at the top blackout bar.

image Screenshot of the Lateral window manager (taken in v0.2.1)

Core Design

Windows can be controlled without a mouse in Normal Mode using the WASD keys, and the command-bar can be activated using TAB. Press SPACE to focus a window, which will capture all input. ESC will exit Focus Mode.

The command-bar is an essential design component inspired by apps like Krunner. While typing, the command-bar expands to show command parameters and a preview of the output (configured using the Lateral API). Commands return results via. a new window instead of plain text. This serves as a hybrid of the terminal and modern window managers, allowing all apps to provide output through the same paradigm.

Every app will execute through the command-bar. There is no included start-menu or terminal. When using Lateral, it's clear that nothing about it is POSIX-compliant. Each component is built on top of the window manager instead of the terminal, like most operating systems do.

Running Applications

It's important to note that executable files are not located in the same place as non-executable files. Different filetypes are separated into different "partitions" in the filesystem itself.

Section Members
apps Any executable binary/script
configuration Configuration files or serializable files
logs Application log files
misc Any other files

The command-bar will match any executables in the user's directory. This is where compiled or installed applications are stored, ex: apps: carter/hello-world. You can also explicitly run executables from other users' directories if you have permission, ex: system/help runs help in the system folder (owned by system) inside of the apps section.

Building and running

If you have GNU Make and QEMU installed, you can run make run-release ARCH=x86_64 to build for x86_64 and run in the QEMU emulator.

You might also like...
🦜 A hassle-free, highly performant, host it yourself Discord music bot built with Serenity in Rust. Powered by youtube-dl and Genius.

🦜 A hassle-free, highly performant and fast evolving Discord music bot built with Serenity in Rust. Deployment Usage Just create a bot account, copy

πŸš€ Fast and 100% API compatible postcss replacer, built in Rust

πŸš€ Fast and 100% API compatible postcss replacer, built in Rust

A better message queue built by rust

bettermq A better message queue built by rust I start this project to study Rust

Software adapter for various Chunithm slider controllers with a built-in Brokenithm web controller
Software adapter for various Chunithm slider controllers with a built-in Brokenithm web controller

slidershim Software adapter for various Chunithm slider controllers with a built-in Brokenithm web controller. Has support for keyboard/gamepad output

Announce blogs and send emails. Originally built for ConnectDome.
Announce blogs and send emails. Originally built for ConnectDome.

ConnectDome - Rust Notify A simple service to announce new blogs on your Slack/Discord + send emails to your list via your TES. Feature 1: Posts blogs

Risc-V assembly interpreter built with pure Rust
Risc-V assembly interpreter built with pure Rust

Risc-V Interpreter Interpreter for Risc-V assembly built with Rust Report bug Β· Request feature Table of contents Quick start Exemple Program Instruct

Blazingly fast spam classification API built using Rocket Web Framework.

Telegram Antispam API Blazingly fast spam classification API built using Rocket Web Framework. Notes The classifier works in aggressive mode, it can s

A systemd-boot configuration and boot entry configuration parser library

A systemd-boot configuration and boot entry configuration parser library

A kernel version manager for systemd-boot and AOSC OS

Your systemd-boot's best friend ever (Implemented in Rust) A kernel version manager for systemd-boot and AOSC OS Usage First initialize friend and sys

πŸ’» An x86_64 kernel in the works

BruhOS a basic x86_64 kernel in the works. cool stuff written in rust boots with any stivale2-compliant bootloader framebuffer bitmap font renderer pm

Minimal x86_64 OS kernel written in Rust
Minimal x86_64 OS kernel written in Rust

rkernel A minimal x86_64 Rust OS kernel. Multiboot2 VGA driver PIC PIT PS/2 Keyboard driver PS/2 Mouse driver TSC RTC Allocator ATA PIO (In progress..

Rux - An x86_64 toy operating system kernel written in Rust
Rux - An x86_64 toy operating system kernel written in Rust

Rux - An x86_64 toy operating system kernel written in Rust. Rux is a port of the Hux kernel, my x86 32-bit single-CPU toy kernel written in C, following the OSTEP book structure and terminology.

Horus is an open source tool for running forensic and administrative tasks at the kernel level using eBPF, a low-overhead in-kernel virtual machine, and the Rust programming language.
Horus is an open source tool for running forensic and administrative tasks at the kernel level using eBPF, a low-overhead in-kernel virtual machine, and the Rust programming language.

Horus Horus is an open-source tool for running forensic and administrative tasks at the kernel level using eBPF, a low-overhead in-kernel virtual mach

A custom kernel for educational reasons

A custom kernel for educational reasons

Boot tools: loader, image generator, etc as a library crate

ArcBoot v0 A uefi bootloader for riscv, arm and x86. Comes in the form of a single executable. the source code contains a single executable target and

Summer Boot (web2&web3, the decentralized web framework)

Summer Boot The next generation decentralized web framework allows users to manage and share their own data. It will be a wide area and cross regional

Secure Boot for NixOS [maintainers=@blitz @raitobezarius @nikstur]

Lanzaboote: Secure Boot for NixOS This repository contains tooling for UEFI Secure Boot on NixOS. The goal is to make Secure Boot available from nixpk

Decode SCALE bytes into custom types using a scale-info type registry and a custom Visitor impl.

scale-decode This crate attempts to simplify the process of decoding SCALE encoded bytes into a custom data structure given a type registry (from scal

Catch Tailwindcss Errors  at Compile-Time Before They Catch You, without making any change to your code!  Supports overriding, extending, custom classes, custom modifiers, Plugins and many more πŸš€πŸ”₯πŸ¦€
Catch Tailwindcss Errors at Compile-Time Before They Catch You, without making any change to your code! Supports overriding, extending, custom classes, custom modifiers, Plugins and many more πŸš€πŸ”₯πŸ¦€

twust Twust is a powerful static checker in rust for TailwindCSS class names at compile-time. Table of Contents Overview Installation Usage Statement

Comments
  • Problems starting the command-bar

    Problems starting the command-bar

    I seem to be unable to launch the command-bar using , when pressed, it types out Unhandled: Display("\t"). Also on a side note, sometimes the os starts on just straight up doesn't take my input and I have to restart.. idk πŸ€·β€β™‚οΈ Cool project tho! Can't wait to dig in it a bit more with the command-bar.

    Specs btw are: OS | Arch (Instantos) Keyboard is only 87 keys if thats important in any weird way

    opened by Pebor 2
Releases(v0.1.8)
  • v0.1.8(Jul 17, 2021)

    Changelogs

    • lateral::time::rtc Adds support for a global RTC handler.
    • lateral::time::cmos Adds a backend for periodic interrupts and sleeping, which can convert to RTC.
    • lateral::time Adds utilities for handling time deltas and more.
    • lateral::syscall Adds support for custom syscall implementations.
    • lateral::syscall::service Adds backends for this new syscall implementation.
    • lateral::thread::ps2 Switches to this new custom interrupt system.
    • lateral::cpu::interrupt Adds 16 new custom interrupt handlers, and systems to manage them.
    • lateral (lib.rs) Adds these new modules.
    • Cargo.toml Updates the version number.

    Integrated Features

    | Feature | Included | | -- | -- | | Asynchronous Interrupts |

  • - [x]
  • | | Asynchronous Paging |
  • - [ ]
  • | | CPU Interrupts |
  • - [x]
  • | | Embedded Modules |
  • - [ ]
  • | | Filesystem |
  • - [ ]
  • | | Global Allocator |
  • - [x]
  • | | Heap Allocator |
  • - [x]
  • | | Internal Multithreading |
  • - [x]
  • | | Memory Paging |
  • - [x]
  • | | QEMU Integration |
  • - [x]
  • | | Serial Output |
  • - [x]
  • | | VGA Output |
  • - [x]
  • | | Video Display Adapter |
  • - [ ]
  • |

    Source code(tar.gz)
    Source code(zip)
    lateral-x86_64-0.1.8.bin(159.50 KB)
  • v0.1.7(Jul 16, 2021)

    Changelogs

    The original multithreading system, lateral::future, did not allow threads to yield during execution largely because of Rust's future model, and ran threads in order, completely synchronously. This has been changed to a new, custom-built solution called lateral::thread which allows threads to be run in the background on seperate physical CPU threads, and for threads to yield during execution. This allows patterns such as infinite loops and keyboard input to coexist. Internal thread spawning still remains present, and now allows threads to outlive the parent thread.

    • lateral::future has been removed.
    • lateral::thread Adds the new thread model.
    • lateral::thread::ps2 Moves ps2 keyboard input to this new model.
    • lateral::thread::queue Is a structure that allows spawning of internal threads.
    • lateral::io::logging Adds a format for fancy kernel logging.
    • lateral::cpu::interrupt Was changed to the new kernel logging system.
    • lateral::cpu::gdt Adds a stack size parameter for threads.
    • lateral::alloc::heap Changes the heap size from 100KiB to 10MB
    • lateral (lib.rs) Adds the global thread queue, and a helpful spawn_thread function.
    • main Demonstrates these changes.
    • Cargo.toml Updates the version number.

    Integrated Features

    | Feature | Included | | -- | -- | | Asynchronous Interrupts |

  • - [x]
  • | | Asynchronous Paging |
  • - [ ]
  • | | CPU Interrupts |
  • - [x]
  • | | Embedded Modules |
  • - [ ]
  • | | Filesystem |
  • - [ ]
  • | | Global Allocator |
  • - [x]
  • | | Heap Allocator |
  • - [x]
  • | | Internal Multithreading |
  • - [x]
  • | | Memory Paging |
  • - [x]
  • | | QEMU Integration |
  • - [x]
  • | | Serial Output |
  • - [x]
  • | | VGA Output |
  • - [x]
  • | | Video Display Adapter |
  • - [ ]
  • |

    Source code(tar.gz)
    Source code(zip)
    lateral-x86_64-0.1.7.bin(148.50 KB)
  • v0.1.6(Jun 29, 2021)

    Changelogs

    • lateral::future::task Introduces the TaskCache class.
    • lateral (lib.rs) Introduces the TASKCACHE global.
    • lateral::future::exec Allows syncing of the TASKCACHE global.
    • main Demonstrates these changes.
    • Cargo.toml Updates the version number.

    Integrated Features

    | Feature | Included | | -- | -- | | Asynchronous Interrupts |

  • - [x]
  • | | Asynchronous Paging |
  • - [ ]
  • | | CPU Interrupts |
  • - [x]
  • | | Embedded Modules |
  • - [ ]
  • | | Filesystem |
  • - [ ]
  • | | Global Allocator |
  • - [x]
  • | | Heap Allocator |
  • - [x]
  • | | Internal Multithreading |
  • - [x]
  • | | Memory Paging |
  • - [x]
  • | | QEMU Integration |
  • - [x]
  • | | Serial Output |
  • - [x]
  • | | VGA Output |
  • - [x]
  • | | Video Display Adapter |
  • - [ ]
  • |

    Source code(tar.gz)
    Source code(zip)
    lateral-x86_64-0.1.6.bin(174.50 KB)
  • v0.1.5(Jun 29, 2021)

    Changelogs

    • lateral::future Introduces support for Futures.
    • lateral::future::task Introduces tasks.
    • lateral::future::exec Allows tasks to execute.
    • lateral::future::ps2 Introduces async PS/2 keyboard I/O.
    • lateral::cpu::interrupt Switches to the new async keyboard interface.
    • main Reflects these changes.
    • Cargo.toml Adds the crossbeam-queue, conquer-once and futures-util crates required above.

    Integrated Features

    | Feature | Included | | -- | -- | | Asynchronous Interrupts |

  • - [x]
  • | | Asynchronous Paging |
  • - [ ]
  • | | CPU Interrupts |
  • - [x]
  • | | Embedded Modules |
  • - [ ]
  • | | Filesystem |
  • - [ ]
  • | | Global Allocator |
  • - [x]
  • | | Heap Allocator |
  • - [x]
  • | | Memory Paging |
  • - [x]
  • | | QEMU Integration |
  • - [x]
  • | | Serial Output |
  • - [x]
  • | | VGA Output |
  • - [x]
  • | | Video Display Adapter |
  • - [ ]
  • |

    Source code(tar.gz)
    Source code(zip)
    lateral-x86_64-0.1.5.bin(170.00 KB)
  • v0.1(Jun 28, 2021)

    Changelogs

    • The first release of Lateral!

    Integrated Features

    | Feature | Included | | -- | -- | | Asynchronous Interrupts |

  • - [ ]
  • | | Asynchronous Paging |
  • - [ ]
  • | | CPU Interrupts |
  • - [x]
  • | | Embedded Modules |
  • - [ ]
  • | | Filesystem |
  • - [ ]
  • | | Global Allocator |
  • - [x]
  • | | Heap Allocator |
  • - [x]
  • | | Memory Paging |
  • - [x]
  • | | QEMU Integration |
  • - [x]
  • | | Serial Output |
  • - [x]
  • | | VGA Output |
  • - [x]
  • | | Video Display Adapter |
  • - [ ]
  • |

    Source code(tar.gz)
    Source code(zip)
    lateral-x86_64-0.1.bin(130.50 KB)
Owner
Carter Reeb
addicted to integration
Carter Reeb
Elegant, clean Rust development framework

Preview version, will not guarantee the stability of the API! Elegant, clean Rust development framework Core Features Relational database client for M

Ideal World 35 Dec 29, 2022
A clean implementation of Reso using Rust.

A clean implementation of Reso using Rust. The principle of Reso Rust is almost identical to Reso, only missing some functionality

Matas Minelga 12 Nov 26, 2022
A highly modular Bitcoin Lightning library written in Rust. Its Rust-Lightning, not Rusty's Lightning!

Rust-Lightning is a Bitcoin Lightning library written in Rust. The main crate, lightning, does not handle networking, persistence, or any other I/O. Thus, it is runtime-agnostic, but users must implement basic networking logic, chain interactions, and disk storage. More information is available in the About section.

Lightning Dev Kit 850 Jan 3, 2023
An aimless attempt at building a PC from scratch, in a vaguely eurorack/modular synth style.

An aimless attempt at building a PC from scratch, in a vaguely eurorack/modular synth style.

James Munns 66 Nov 30, 2022
RustHunter is a modular incident response framework to build and compare environmental baselines

RustHunter is a modular incident response framework to build and compare environmental baselines. It is written in Rust and uses Ansible to collect data across multiple hosts.

Giovanni Pecoraro 13 Dec 12, 2022
custom Rust clippy lints

How to use my_lints to static analysis other rust project export MY_LINTS_PATH=/home/w/repos/my_repos/my_lints method_1: In my_lints dir cd $MY_LINTS_

Wu Aoxiang 3 Oct 2, 2021
Simple MHV6 extension used to download custom songs efficiently and effectively.

nong-downloader-extension A simple MegaHack v6 extension that helps you download NONG songs directly to GD. Compiling. Why would you want to compile??

Alpha 6 Nov 1, 2022
A custom frontend for the TradeOgre exchange, written using Iced

Forest A custom frontend for the TradeOgre exchange, written using Iced. Why TradeOgre? It's a simple, non-KYC exchange that I found out about recentl

null 3 Aug 24, 2022
A cross-platform application for custom presence on Discord.

Discord Presence ⚠️ macOS is NOT supported. This is due the package for setting the presence being broken on mac. It may work for some people (only wh

Tofix.js 2 Dec 30, 2022
A job queue built on sqlx and PostgreSQL.

sqlxmq A job queue built on sqlx and PostgreSQL. This library allows a CRUD application to run background jobs without complicating its deployment. Th

Diggory Blake 85 Jan 5, 2023