Skip to content

robert-figura/userland

 
 

Repository files navigation

Userland

Userland is an integrated dataflow environment for end-users. It allows users to interact with modules that implement functionality for different domains from a single user interface and combine these modules in creative ways.

The UI works as a series of cells. Each cell can be set to a different mode, and each mode implemented as a separate module. There are currently three different modules:

  • spreadsheet - basic spreadsheet-like behavior, activated by typing formulas starting with an equals sign (e.g. =1+1, =A1 * (3/2))
  • shell - Unix shell mode, where each cell represents one command and its output, activated by typing shell. As the cell switches to shell-mode, it displays its current directory and allows commands to be entered.
  • synth - synthesizer mode, activated by typing commands starting with a tilde (e.g ~triangle 220). Pressing Enter when a synth cell is focused will start/stop the audio wave.

Pressing Ctrl-Backspace clears the cell mode back to ?.

This video demonstrates the integration of "spreadsheet" and "shell" modules inside Userland.

At LIVE 2019 I also gave a live demo combining the "shell", "spreadsheet" and "synth" modules.

Current status

The project is in its early days, so be aware there are lots of rough edges! The current implementation can be considered a prototype/proof-of-concept/MVP which I'm using to do rapid experimentation and evolve and stabilize the fundamentals of the concept -- though I do want to get this implementation to a point where it can be usable as my primary shell for daily use! (At that point I'll be able to call the concept proven!)

Running

First, make sure you have the following installed:

You can install Rust support in LuaRocks with:

$ luarocks install luarocks-build-rust

Install the Lua dependencies for Userland:

$ luarocks --lua-version 5.1 --local make

Finally, run userland:

$ ./userland

Building with Docker

Have a look at the driver, if your system needs something different from xf86_video_intel you may need to edit the Dockerfile.

$ docker build -t userland .

Running with Docker

You may need to change the user id from 1000 to the one which has access to X11.

$ docker run \
-u 1000 \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /dev:/dev \
userland

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Lua 98.2%
  • Dockerfile 1.8%