Working on a Lua TUI Compositor.
I wrote my own simple little "Window Engine" as I like to call it, as my four brain cells can't think of a better name.
Basically all it does is draw boxes, circles, and windows in a terminal window without the fuss of manually defining the size and all the writable space.
The source code for the "Window Engine" can be found here (do excuse the poor repository, my first time doing a serious project...)
Screenshot of this in action, in the included starfield demo.
https://redd.it/1pgoat5
@r_lua
I wrote my own simple little "Window Engine" as I like to call it, as my four brain cells can't think of a better name.
Basically all it does is draw boxes, circles, and windows in a terminal window without the fuss of manually defining the size and all the writable space.
The source code for the "Window Engine" can be found here (do excuse the poor repository, my first time doing a serious project...)
Screenshot of this in action, in the included starfield demo.
https://redd.it/1pgoat5
@r_lua
GitHub
GitHub - hbergman223/TUI-WM: A Lua-based Window Manager in the terminal.
A Lua-based Window Manager in the terminal. Contribute to hbergman223/TUI-WM development by creating an account on GitHub.
Full-stack event-sourced demo app written entirely in Lua
Hello all,
I have created a demo called Todoodle that demonstrates a full-stack application written entirely in Lua using TENUM’s artifact-based approach. It’s a todo app built with CQRS + event sourcing for the domain logic and a reactive UI layer (LuAct) for the frontend.
The project includes:
* Entities with commands/events/queries (todo.e.lua, todoList.e.lua)
* UI components written in Lua (CreateTodo.uie.lua, TodoItem.uie.lua, etc.)
* Spec files for testing the domain logic
* A development flow with live preview and test watcher
The goal is to explore what a full-stack workflow in pure Lua can look like, without build noscripts or infrastructure code. I’d be very interested in feedback from the community on the workflow, design choices, and expected tooling.
We also plan to provide an open-source version of the framework, and this demo helps validate the approach.
If you’d like to try it:
checkout: [https://github.com/TENUM-Dev/todoodle](https://github.com/TENUM-Dev/todoodle)
npm install -g u/tenum_dev/tdm-cli
tdm test --watch
tdm preview
or simply watch the demo video:
[https://www.youtube.com/watch?v=Acxfu-IhqKs](https://www.youtube.com/watch?v=Acxfu-IhqKs)
Thanks, and I’d appreciate any thoughts or critique.
https://redd.it/1phdngq
@r_lua
Hello all,
I have created a demo called Todoodle that demonstrates a full-stack application written entirely in Lua using TENUM’s artifact-based approach. It’s a todo app built with CQRS + event sourcing for the domain logic and a reactive UI layer (LuAct) for the frontend.
The project includes:
* Entities with commands/events/queries (todo.e.lua, todoList.e.lua)
* UI components written in Lua (CreateTodo.uie.lua, TodoItem.uie.lua, etc.)
* Spec files for testing the domain logic
* A development flow with live preview and test watcher
The goal is to explore what a full-stack workflow in pure Lua can look like, without build noscripts or infrastructure code. I’d be very interested in feedback from the community on the workflow, design choices, and expected tooling.
We also plan to provide an open-source version of the framework, and this demo helps validate the approach.
If you’d like to try it:
checkout: [https://github.com/TENUM-Dev/todoodle](https://github.com/TENUM-Dev/todoodle)
npm install -g u/tenum_dev/tdm-cli
tdm test --watch
tdm preview
or simply watch the demo video:
[https://www.youtube.com/watch?v=Acxfu-IhqKs](https://www.youtube.com/watch?v=Acxfu-IhqKs)
Thanks, and I’d appreciate any thoughts or critique.
https://redd.it/1phdngq
@r_lua
GitHub
GitHub - TENUM-Dev/todoodle
Contribute to TENUM-Dev/todoodle development by creating an account on GitHub.
I need help with this noscript error Players.Username.CoreScript(Local):35: Expected ')' (to close '(' at line 14), got 'UIS'
UIS.InputBegan:Connect(function(Input, processed)
if Input.UserInputType == Enum.UserInputType.Keyboard and not processed then
if Input.Keycode == Enum.KeyCode.LeftShift then
Player.Character.Humanoid.WalkSpeed = 32
Running = true
i already define UIS as UserInputService
local UIS = game:GetService("UserInputService")
https://redd.it/1phj0es
@r_lua
UIS.InputBegan:Connect(function(Input, processed)
if Input.UserInputType == Enum.UserInputType.Keyboard and not processed then
if Input.Keycode == Enum.KeyCode.LeftShift then
Player.Character.Humanoid.WalkSpeed = 32
Running = true
i already define UIS as UserInputService
local UIS = game:GetService("UserInputService")
https://redd.it/1phj0es
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community
ion (JSON Inspired Data Format)
I've spent quite some time attempting to perfect this simple module, and have today decided to attempt to share it. I do not doubt the coding might not be very good, but I at least hope it performs what it's designed for, and that's storing a table using as many space saving shortcuts as possible. I also do not expect it to be perfect at what it tries to achieve either.
There's example code here, but I will still provide some simple example usage.
local ion = require("ion") -- for getting the module
local database = {"Bob","Mary"}
ion.Create(database,"database")
The resulting created ion will look like this:
|ion:{
1:|Bob
2:|Mary
}
And, it can be turned back into a table like so:
local ion = require("ion")
local database = ion.Read("database.ion")
ion.Create() in particular has a lot more parameters for fine tuning what gets written to the resulting ion, but for now that's all this post needs I suppose.
The GitHub Pages Site:
https://nibiritheman.github.io/ion.lua/
https://redd.it/1pixnj5
@r_lua
I've spent quite some time attempting to perfect this simple module, and have today decided to attempt to share it. I do not doubt the coding might not be very good, but I at least hope it performs what it's designed for, and that's storing a table using as many space saving shortcuts as possible. I also do not expect it to be perfect at what it tries to achieve either.
There's example code here, but I will still provide some simple example usage.
local ion = require("ion") -- for getting the module
local database = {"Bob","Mary"}
ion.Create(database,"database")
The resulting created ion will look like this:
|ion:{
1:|Bob
2:|Mary
}
And, it can be turned back into a table like so:
local ion = require("ion")
local database = ion.Read("database.ion")
ion.Create() in particular has a lot more parameters for fine tuning what gets written to the resulting ion, but for now that's all this post needs I suppose.
The GitHub Pages Site:
https://nibiritheman.github.io/ion.lua/
https://redd.it/1pixnj5
@r_lua
GitHub
ion.lua/README.md at main · NibiriTheMan/ion.lua
A JSON inspired compact data storage format designed for Lua purposes. - NibiriTheMan/ion.lua
Alpha Release of TENUM – Lua on Kotlin Multiplatform (Open Source)
Hello everyone,
we are excited to announce that the alpha version of TENUM, our Lua runtime and toolchain built on Kotlin Multiplatform, is now available as open source.
GitHub: [https://github.com/TENUM-Dev/tenum](https://github.com/TENUM-Dev/tenum)
TENUM aims to make Lua a first-class citizen across modern platforms by compiling to JVM, JavaScript, Linux, Windows, and macOS from a single Kotlin codebase. The project provides a foundation for building full-stack Lua applications without custom C toolchains, while still keeping Lua's simplicity and embedability.
Current Alpha Features:
* Lua interpreter implemented in Kotlin
* tlua (interactive interpreter)
* tluac (compiler runner)
* Multiplatform builds (JVM, JS, native targets)
* Published to npm for easy installation: npm install -g u/tenum-dev/tenum
Run the tools using:
tlua
tluac
Goals:
The alpha release is intended to gather community feedback as we continue stabilizing the runtime and improving compatibility with standard Lua behavior and libraries. We would appreciate input on which areas should be prioritized, including tooling, performance, interoperability, APIs, and language compatibility.
Feedback Welcome:
This is an early release, but the core is open and evolving quickly. If you are interested in Lua on JVM, JS, or native platforms, or in building multiplatform Lua applications, please take a look and let us know your thoughts.
Thanks,
The TENUM Team
https://redd.it/1pjtu44
@r_lua
Hello everyone,
we are excited to announce that the alpha version of TENUM, our Lua runtime and toolchain built on Kotlin Multiplatform, is now available as open source.
GitHub: [https://github.com/TENUM-Dev/tenum](https://github.com/TENUM-Dev/tenum)
TENUM aims to make Lua a first-class citizen across modern platforms by compiling to JVM, JavaScript, Linux, Windows, and macOS from a single Kotlin codebase. The project provides a foundation for building full-stack Lua applications without custom C toolchains, while still keeping Lua's simplicity and embedability.
Current Alpha Features:
* Lua interpreter implemented in Kotlin
* tlua (interactive interpreter)
* tluac (compiler runner)
* Multiplatform builds (JVM, JS, native targets)
* Published to npm for easy installation: npm install -g u/tenum-dev/tenum
Run the tools using:
tlua
tluac
Goals:
The alpha release is intended to gather community feedback as we continue stabilizing the runtime and improving compatibility with standard Lua behavior and libraries. We would appreciate input on which areas should be prioritized, including tooling, performance, interoperability, APIs, and language compatibility.
Feedback Welcome:
This is an early release, but the core is open and evolving quickly. If you are interested in Lua on JVM, JS, or native platforms, or in building multiplatform Lua applications, please take a look and let us know your thoughts.
Thanks,
The TENUM Team
https://redd.it/1pjtu44
@r_lua
GitHub
GitHub - TENUM-Dev/tenum: TENUM is a Kotlin Multiplatform Lua 5.4.8 interpreter and full‑stack toolkit: write UI + backend in Lua…
TENUM is a Kotlin Multiplatform Lua 5.4.8 interpreter and full‑stack toolkit: write UI + backend in Lua, run it across JVM/JS/Native with a single register‑based VM, standard library, CLI, and npm ...
Lua PageMaker: A Lua-powered layout engine for generating magazine-style multi-column pages in LaTeX
I’ve been working on a project that may interest people who enjoy using Lua as a lightweight declarative engine inside other systems.
It’s called Lua PageMaker, and it turns Lua into a page-layout noscripting language for LaTeX.
The idea is simple: Lua computes all frame geometries (columns, banners, figures, sidebars, etc.), then emits
This gives LaTeX something close to a mini InDesign—but fully programmable.
---
## What it does
- Arbitrary multi-column layouts, including variable-width columns
- Static boxes (top banners, figures, sidebars, bottom boxes)
- Boxes can span multiple columns
- Page structure is defined in a small, readable Lua DSL
- Coordinates expressed in screen space (origin = top-left, y downward)
- Deterministic layout (all geometry computed before TeX sees text)
- Only depends on LuaLaTeX
---
## Example DSL (
return {
width = 7.88,
height = 10.75,
left = 0.5,
right = 0.5,
top = 0.75,
bottom = 1,
colsep = 0.25,
pages = {
{
columns = {
{ width = 1/3 },
{ width = 1/3 },
{ width = 1/3 }
},
boxes = {
{ name="topbanner", colfrom=1, colto=3, top=0, h=1.0 },
{ name="sidebar", colfrom=2, colto=3, top=1.0, h=2.5 }
}
}
}
}
Lua computes all coordinates, resolves spans, trims columns, and emits compatible
---
## Why Lua?
LuaTeX provides Lua as an embedded engine, enabling:
- real numeric geometry (no TeX dimension arithmetic)
- custom DSLs
- separation of concerns: geometry in Lua, rendering in TeX
- deterministic, debuggable layout specification
- extensibility and simplicity
The project is intentionally minimalistic: a Lua geometry engine + a declarative page denoscription file.
---
## GitHub
https://github.com/sylvainhalle/lua-pagemaker
---
## Feedback welcome
I’d love to hear ideas about:
- the DSL design
- idiomatic Lua improvements
- extensions to the layout model
- integration with ConTeXt / LuaMetaTeX / SILE
If you try generating your own layouts, please share your results!
https://redd.it/1pk9l28
@r_lua
I’ve been working on a project that may interest people who enjoy using Lua as a lightweight declarative engine inside other systems.
It’s called Lua PageMaker, and it turns Lua into a page-layout noscripting language for LaTeX.
The idea is simple: Lua computes all frame geometries (columns, banners, figures, sidebars, etc.), then emits
flowfram primitives during the TeX run. This gives LaTeX something close to a mini InDesign—but fully programmable.
---
## What it does
- Arbitrary multi-column layouts, including variable-width columns
- Static boxes (top banners, figures, sidebars, bottom boxes)
- Boxes can span multiple columns
- Page structure is defined in a small, readable Lua DSL
- Coordinates expressed in screen space (origin = top-left, y downward)
- Deterministic layout (all geometry computed before TeX sees text)
- Only depends on LuaLaTeX
---
## Example DSL (
pages.lua)return {
width = 7.88,
height = 10.75,
left = 0.5,
right = 0.5,
top = 0.75,
bottom = 1,
colsep = 0.25,
pages = {
{
columns = {
{ width = 1/3 },
{ width = 1/3 },
{ width = 1/3 }
},
boxes = {
{ name="topbanner", colfrom=1, colto=3, top=0, h=1.0 },
{ name="sidebar", colfrom=2, colto=3, top=1.0, h=2.5 }
}
}
}
}
Lua computes all coordinates, resolves spans, trims columns, and emits compatible
flowfram frames.---
## Why Lua?
LuaTeX provides Lua as an embedded engine, enabling:
- real numeric geometry (no TeX dimension arithmetic)
- custom DSLs
- separation of concerns: geometry in Lua, rendering in TeX
- deterministic, debuggable layout specification
- extensibility and simplicity
The project is intentionally minimalistic: a Lua geometry engine + a declarative page denoscription file.
---
## GitHub
https://github.com/sylvainhalle/lua-pagemaker
---
## Feedback welcome
I’d love to hear ideas about:
- the DSL design
- idiomatic Lua improvements
- extensions to the layout model
- integration with ConTeXt / LuaMetaTeX / SILE
If you try generating your own layouts, please share your results!
https://redd.it/1pk9l28
@r_lua
GitHub
GitHub - sylvainhalle/lua-pagemaker: Magazine-Style Page Layouts in Pure LaTeX
Magazine-Style Page Layouts in Pure LaTeX. Contribute to sylvainhalle/lua-pagemaker development by creating an account on GitHub.
Free Lua Course: 7 Modules, 21 Lessons, In‑Browser Execution
https://8gwifi.org/tutorials/lua/
https://redd.it/1pl2fhb
@r_lua
https://8gwifi.org/tutorials/lua/
https://redd.it/1pl2fhb
@r_lua
8gwifi.org
Lua Tutorial - Learn Lua Programming | 8gwifi.org Tutorials
Learn Lua programming from scratch with interactive examples. Free Lua tutorial for beginners to advanced with live code editor.
ZeroBrane installation issues | Linux Ubuntu
My PC runs with the same efficiency as a turnip and so I decided to learn love2d to make games rather than use performance costly game engines. In the tutorial I was watching I had to download and use the ZeroBrane IDE to write noscripts.
When I save the linux download link as an .sh file, give it perms and run it, it gives the error:
Verifying archive integrity...Error in MD5 checksums: 96cd37c6c911cf0d918d98ebca93782a is different from ee3ec7e6138e80b1bce27e6dae079c3b
What is the issue? I have re-downloaded the file multiple times. Thanks.
https://redd.it/1plhw5h
@r_lua
My PC runs with the same efficiency as a turnip and so I decided to learn love2d to make games rather than use performance costly game engines. In the tutorial I was watching I had to download and use the ZeroBrane IDE to write noscripts.
When I save the linux download link as an .sh file, give it perms and run it, it gives the error:
Verifying archive integrity...Error in MD5 checksums: 96cd37c6c911cf0d918d98ebca93782a is different from ee3ec7e6138e80b1bce27e6dae079c3b
What is the issue? I have re-downloaded the file multiple times. Thanks.
https://redd.it/1plhw5h
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community
Issues Checking and Comparing Table Values in Lua
Hey all, I'm following a [raycasting tutorial](https://www.youtube.com/watch?v=E18bSJezaUE), and I'm having a little bit of trouble grabbing and comparing values from nested tables. Right now I have a table, Map1, with other tables in it:
local Map1 = {
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,1,0,0,0,1,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,1,0,0,0,0,1},
{1,0,0,0,0,0,1,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,1,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
}
and the way I'm searching through the table for the 0's and 1's is:
function Map1:draw()
for r, row in ipairs(Map1) do
for c, v in ipairs(Map1[r]) do
tile_x = c * TILESIZE
tile_y = r * TILESIZE
if Map1[r][c] == 0 then
love.graphics.setColor(0, 0, 0)
love.graphics.rectangle("fill", tile_x, tile_y, TILESIZE, TILESIZE)
print("drawn blacks")
elseif Map1[r][c] == 1 then
love.graphics.setColor(255, 255, 255)
love.graphics.rectangle("fill", tile_x, tile_y, TILESIZE, TILESIZE)
print("drawn whites")
end
end
end
end
and finally, in my main.lua i have:
flocal consts = require("constants")
local map = require("map")
function love.load()
end
function love.update(dt)
end
function love.draw()
map:draw()
end
I think the check is what's wrong, but I'm not 100% sure. Right now it's checking the value in `Map[r][c]`, which is the same as `v`, but when the code runs it doesn't properly draw the tiles as shown in the table.
https://redd.it/1pltdca
@r_lua
Hey all, I'm following a [raycasting tutorial](https://www.youtube.com/watch?v=E18bSJezaUE), and I'm having a little bit of trouble grabbing and comparing values from nested tables. Right now I have a table, Map1, with other tables in it:
local Map1 = {
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,1,0,0,0,1,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,1,0,0,0,0,1},
{1,0,0,0,0,0,1,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,1,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
}
and the way I'm searching through the table for the 0's and 1's is:
function Map1:draw()
for r, row in ipairs(Map1) do
for c, v in ipairs(Map1[r]) do
tile_x = c * TILESIZE
tile_y = r * TILESIZE
if Map1[r][c] == 0 then
love.graphics.setColor(0, 0, 0)
love.graphics.rectangle("fill", tile_x, tile_y, TILESIZE, TILESIZE)
print("drawn blacks")
elseif Map1[r][c] == 1 then
love.graphics.setColor(255, 255, 255)
love.graphics.rectangle("fill", tile_x, tile_y, TILESIZE, TILESIZE)
print("drawn whites")
end
end
end
end
and finally, in my main.lua i have:
flocal consts = require("constants")
local map = require("map")
function love.load()
end
function love.update(dt)
end
function love.draw()
map:draw()
end
I think the check is what's wrong, but I'm not 100% sure. Right now it's checking the value in `Map[r][c]`, which is the same as `v`, but when the code runs it doesn't properly draw the tiles as shown in the table.
https://redd.it/1pltdca
@r_lua
YouTube
Raycasting Tutorial (in Python)
After 3 years since the last video I finally had the courage to make and upload another one. This time, about a subject that I was willing to teach for a long time: Raycasting
If you think this video helped you, you may consider supporting my work by clicking…
If you think this video helped you, you may consider supporting my work by clicking…
making lua do what it shouldn't: typesafe structs
https://if-not-nil.github.io/lua-structs/
https://redd.it/1plw6o7
@r_lua
https://if-not-nil.github.io/lua-structs/
https://redd.it/1plw6o7
@r_lua
if-not-nil.github.io
making lua do what it shouldn't: typesafe structs
it shouldn't, but it should should, if that makes sense
LuaJIT Compiler
Successfully managed to make a compiler for luaJIT (a lua 5.1 fork/thing optimized for performance) in python
Works by getting the source code of luajit, rewriting the main .c file to execute a specific noscript instead of whatever you have as the first argument, and using a portable minGW thingy to compile it to EXE. (Dosent actually turn it into assembly, im not that good)
This is compatible with most lua noscripts that work for lua 5.1 or less, and luajit noscripts
Should i make it open source?
(I know luastatic exists, but this is way damn simpler)
https://preview.redd.it/aomysk89817g1.png?width=747&format=png&auto=webp&s=0251c0ce550bcdd15e83b3779bc027b9a6d57b65
https://redd.it/1plvch2
@r_lua
Successfully managed to make a compiler for luaJIT (a lua 5.1 fork/thing optimized for performance) in python
Works by getting the source code of luajit, rewriting the main .c file to execute a specific noscript instead of whatever you have as the first argument, and using a portable minGW thingy to compile it to EXE. (Dosent actually turn it into assembly, im not that good)
This is compatible with most lua noscripts that work for lua 5.1 or less, and luajit noscripts
Should i make it open source?
(I know luastatic exists, but this is way damn simpler)
https://preview.redd.it/aomysk89817g1.png?width=747&format=png&auto=webp&s=0251c0ce550bcdd15e83b3779bc027b9a6d57b65
https://redd.it/1plvch2
@r_lua
Roblox coding for everyone !
Hi there ! If you see this you may be a person that need a code for his Roblox game!
I'm here to help!
I was a rookie noscripter back then and I know how hard it is to code and make a game so everyone who will send me a message or a comment and I will get you the code (noscript) for acctualy free
If it has the limit of 200 words if not you will need to pay 400 Robux for extra 1000
Good luck!
https://redd.it/1plu6vo
@r_lua
Hi there ! If you see this you may be a person that need a code for his Roblox game!
I'm here to help!
I was a rookie noscripter back then and I know how hard it is to code and make a game so everyone who will send me a message or a comment and I will get you the code (noscript) for acctualy free
If it has the limit of 200 words if not you will need to pay 400 Robux for extra 1000
Good luck!
https://redd.it/1plu6vo
@r_lua
Reddit
From the lua community on Reddit
Explore this post and more from the lua community