All Projects → malcolmstill → Ulubis

malcolmstill / Ulubis

Licence: bsd-3-clause
A Wayland compositor written in Common Lisp

Projects that are alternatives of or similar to Ulubis

Awesome Vulkan
Awesome Vulkan ecosystem
Stars: ✭ 2,322 (+1103.11%)
Mutual labels:  opengl
Vxr
General purpose engine written in C++ with emphasis on materials rendering (PBR, clear coat, anisotropy, iridescence)
Stars: ✭ 181 (-6.22%)
Mutual labels:  opengl
Imguizmo.quat
ImGui GIZMO widget - 3D object manipulator / orientator
Stars: ✭ 187 (-3.11%)
Mutual labels:  opengl
Doomsday Engine
A portable, enhanced source port of Doom, Heretic and Hexen.
Stars: ✭ 175 (-9.33%)
Mutual labels:  opengl
Magnum Examples
Examples for the Magnum C++11/C++14 graphics engine
Stars: ✭ 180 (-6.74%)
Mutual labels:  opengl
Metalangle
MetalANGLE: OpenGL ES to Metal API translation layer
Stars: ✭ 182 (-5.7%)
Mutual labels:  opengl
Animatedgif
A screensaver for Mac OSX / macOS that plays animated GIFs and APNGs
Stars: ✭ 174 (-9.84%)
Mutual labels:  opengl
Bodyslide And Outfit Studio
BodySlide and Outfit Studio, a tool to convert, create, and customize outfits and bodies for Bethesda games.
Stars: ✭ 190 (-1.55%)
Mutual labels:  opengl
Flextgl
OpenGL and Vulkan header and loader generator.
Stars: ✭ 180 (-6.74%)
Mutual labels:  opengl
Vim Glsl
Vim runtime files for OpenGL Shading Language
Stars: ✭ 184 (-4.66%)
Mutual labels:  opengl
Openscenegraph
OpenSceneGraph git repository
Stars: ✭ 2,321 (+1102.59%)
Mutual labels:  opengl
Visvis
Visvis - the object oriented approach to visualization
Stars: ✭ 180 (-6.74%)
Mutual labels:  opengl
Thunder
An open-source game engine is written in C++ with a flexible architecture
Stars: ✭ 182 (-5.7%)
Mutual labels:  opengl
Tinywindow
a cross platform (Linux and Windows) OpenGL window library in a single header
Stars: ✭ 175 (-9.33%)
Mutual labels:  opengl
Ogre
scene-oriented, flexible 3D engine (C++, Python, C#, Java)
Stars: ✭ 2,582 (+1237.82%)
Mutual labels:  opengl
Territory
3D rendered proc-gen world test. C++ homebrew voxel engine for agent-driven prodedural generation / world simulation
Stars: ✭ 175 (-9.33%)
Mutual labels:  opengl
Trial
Yet another Common Lisp game engine
Stars: ✭ 181 (-6.22%)
Mutual labels:  opengl
Fishengine
Simple, Unity-like Game Engine.
Stars: ✭ 191 (-1.04%)
Mutual labels:  opengl
React Imgpro
📷 Image Processing Component for React
Stars: ✭ 2,186 (+1032.64%)
Mutual labels:  opengl
Babyloncpp
A port of Babylon.js to C++
Stars: ✭ 183 (-5.18%)
Mutual labels:  opengl

Ulubis

Join the chat at https://gitter.im/ulubis/Lobby

Ulubis in action

Ulubis is a Wayland compositor written in Common Lisp. It is inspired by FVWM and StumpWM. The idea is that it is easy to hack on, customise, define your own interaction modes, etc. (see alt-tab-mode.lisp as an example of defining a custom mode)

Using SLIME you can connect to the running compositor and modify its behaviour live.

SLIME

(I currently call it a compositor intentionally...let's get a bit more window management functionality in before calling it a WM)

Installation of ulubis

  • Ensure you have SBCL and Quicklisp installed.
  • Build ulubis / ulubis-sdl
git clone --recurse-submodules https://github.com/malcolmstill/ulubis.git
cd ulubis
cat build-ulubis.lisp | sbcl

Running ulubis

To run ulubis the user must be a member of the input and video groups. Navigate to a virtual terminal and run

> ulubis

For the SDL2 backend simply run ulubis-sdl when in X.

Configuration

Ulubis looks for the file ~/.ulubis.lisp and loads it if it exists.

An example configuration is as follows:

(in-package :ulubis)

(if (string-equal (symbol-name ulubis-backend:backend-name) "backend-drm-gbm")
    (progn
      (setf (screen-width *compositor*) 1920)
      (setf (screen-height *compositor*) 1080))
    (progn
      (setf (screen-width *compositor*) 1400)
      (setf (screen-height *compositor*) 900)))

(set-keymap *compositor* "evdev" "apple" "gb" "" "")

(defun startup ()
  (swank-loader:init)
  (swank:create-server :port 4005 :style :spawn :dont-close t)
  (swank:set-package "ULUBIS")

  ;; Make the default screen
  (make-screen 'virtual-desktop-mode)
  ;; Add 4 views (virtual desktops) using the desktop-mode as default
  (loop :for i :from 0 :to 3
     :do (push-view 'desktop-mode))
  (setf (active-surface (screen *compositor*))
	(first (surfaces (screen *compositor*)))))

Hacking on ulubis

Download ulubis and its dependencies to quicklisp's local-projects/ dir and hack away, rebuilding the executables as per installation.

Contributors

All glory to our lovely contributors, please join us:

  • naryl very kindly added a nicer cursor using cairo
  • cbaggers very kindly updated various bits and pieces to use the latest CEPL tech

Status

Ulubis is known to work with sbcl and ccl. I have only tested it on two machines which Intel graphics chips, please get in touch if it does / doesn't work with Nvidia or AMD cards. It is very alpha.

Roadmap

The vague roadmap for ulubis is as follows (not necessarily in order):

  • [x] Add screenshotting
  • [ ] Wallpapers
  • [ ] Add (an at least rudimentary) menu system
  • [ ] Server-side decorations
  • [ ] Add screen locking
  • [ ] Add video capture
  • [ ] Support multiple monitors
  • [ ] Support more Wayland clients (a web browser would be very nice)
  • [ ] XWayland support
  • [ ] Potentially define custom Wayland protocols for ulubis (maybe you want to replace a built-in menu with your own menu written in QML)

Dependencies

Ulubis depends on:

Ulubis has two backends: ulubis-sdl (an SDL2 backend) and ulubis-drm-gbm (a DRM/GBM backend). The DRM/GBM backend is intended to be the backend whilst the SDL2 is intended for testing on X.

The DRM/GBM backend depends on:

The dependencies for the SDL2 backend are:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].