Coder Social home page Coder Social logo

category5's Introduction

Category5 Desktop Environment

Category5 is a wayland desktop environment for FreeBSD that is focused on performance and security. It is written in Rust, and uses the Vulkan graphics api to perform rendering.

Capabilities

  • floating window manager
  • dmabuf and shm buffer sharing with clients

Design Goals

The primary motivations for Category5 are making a desktop that is easy to use and fun to modify. The goal is to provide advanced security without sacrificing performance. Rust embodies both of these goals, wayland introduces increased isolation of applications, and Vulkan provides platform agnostic rendering power.

The source code is heavily commented, and documentation accompanies every part of the system. Category5 is essentially designed like a game engine, where different subsystems work together to present the user with a cohesive experience. The subsystems are as follows:

  • ways - wayland server.
  • thundr - a vulkan toolkit for drawing surfaces.
  • vkcomp - the compositor. It is a window manager that translates windows from ways into thundr commands.
  • input - libinput handler. Specific to ways, it reacts to user input and updates the wayland clients
  • atmosphere - A double-buffered database shared by ways and vkcomp.

Another goal is to keep rendering entirely separate from the wayland server. vkcomp is run in a different thread from ways, and atmosphere serves as a barrier between the two. ways gets updates from clients, posts them to atmosphere, and vkcomp constructs a frame out of the current databse contents and presents it to the user's display.

The reason for this is to increase security and functionality in the future. vkcomp could be moved to a separate process with different permissions than ways. vkcomp could also be restarted independent of ways and without restarting wayland clients.

A non-goal is to make Category5 perfectly configurable. There are many other highly customizable desktop environments, and this is not one of them. Basic customizability for aestethics and keyboard shortcuts is planned.

Compiling

Category5 is supported on FreeBSD 12+.

The following dependencies are required:

  • rustc/cargo
  • vulkan 1.2+
  • graphics drivers (nvidia-driver or mesa)
  • libinput
  • libudev
  • wayland-protocols
  • xkbcommon

Running

The user you run Category5 as must be able to:

  • access the gpu (video group)
  • access the input peripherals

Simply run:

cargo run

category5's People

Contributors

amshafer avatar brianrbrenner avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.