Skip to content
No description, website, or topics provided.
Lua
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
flux
user
.editorconfig
DejaVuSansMono.ttf
README.md
denver.lua
flux.lua
main.lua
sone.lua
thesis-hisham.pdf
ui.lua
userland
userland-dev-1.rockspec
util.lua

README.md

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
You can’t perform that action at this time.