FSQ7OI4M7DRTLNCLZMPVNMMOMRD2HHF3TGN2RTURPNIEHNLHA24QC
UCA3SCAJ7IF4FY73BKAXVHTGST74LJ62SYKJEBMHQGVTEHE44Z2QC
ZSDFOBNDDFXU3FG2I7KHBVQSXQND57D4VQTKBNADOOR5JEV5DJEAC
QKKVI7UOAPUA6NKCDPM4BHPGDOQ5NHC66WSDB3WDDSRJHANNRB4AC
Q4WRCUWDSTOHWEOYYKKAIQW24HS2J5T5FKXOE5EJUWXHJREUM2FQC
DYPL2TRLRDFYBUXVMT34CDZLE4RPSMAETS56DQJRISFHLN7KN4GQC
ER7WGGU2JHYTVNETN2KTA32M376GPYXCSHH24NYI3ZCYHTZ3ESEAC
Q4CJ4WWUFEW46IA4IWVQZAWW2RS2SO7UDYIXYPPHMBVSK5ZJYJRAC
3EQAFUFNRXBPAE5PYP36NNWFE4EESGOBTMFY3UNQV2EPHHP3PLUQC
GVX7YSQYURPWFSUWVUAORZJTQBJURWWNBNUGEZYFAUMX3X5LSACQC
3DRVHB7C3UGLINVPVTGQ2YNIWER4GVVZRY7KUAZRXVFDV4Z2SXRQC
M7UODV5HDRZKAS3BKGLNU5Z5HM4KZDM4QIB2S3E6S7NAWGJY3MJAC
OTIBCAUJ3KDQJLVDN3A536DLZGNRYMGJLORZVR3WLCGXGO6UGO6AC
5OVKHVY6TJK53NCEUGSFBMHDENBJ25IEZNBWCI6QRCRLRKG5K7NAC
VVGWHJBZY63JKJC4M67MYDTVRRI4D5NB2TDB7AXMKPWOXJZXPYZQC
FS2ITYYHBLFT66YUC3ENPFYI2HOYHOVEPQIN7NQR6KF5MEK4NKZAC
4VUVVW6JTJU63US5YQPERLU7RREWDJCTGCKICLQVVASIAYQAO4ZQC
MD3W5IRAC6UQALQE4LJC52VQNDO3I3HXF3XE2XHDABXBYJBUVAXQC
UOGZZY3LDQMFV5225YHIOQLKY4443TBYFIA6AWB7TGUUZWRIHEYQC
EZHO4TSWIYYUE73S6XQWIEF3HA3H7MKCNJOT27NTWTVSPVS2SL5QC
D4FEFHQCSILZFQ5VLWNXAIRZNUMCDNGJSM4UJ6T6FDMMIWYRYILQC
OJ2CLK4QZNZYDVBJTUF3IXVGVP2YI6C2HQNYF6O5MGKS47IPEWHAC
2DVVKKVA6PJ7VKYLGPQ22AXUB6ZWFMPWB445PRDZJDNLURUFDNDQC
ZT6T2H7NXZYHEZA7OJTA24AXYIOWEDCN2IBGTGHCKXOB2N47XVYAC
WHFOJBAEZOJX3AF4ZCMCUFELSBMKMBZ374WXJVHBMLE7T6D6OZ3QC
3PFDYZWTK5R5QGMSIO2DF5V25GPBPXTLVSRNQWH6EZMK6LJ6HAEAC
widgets = {}
-- button to add a text box
table.insert(widgets, {
draw = function()
color(0, 0.6,0.6)
rect('line', Safe_width-115, 5, 30,30, 5)
line(Safe_width-110, 20, Safe_width-90, 20)
line(Safe_width-100, 10, Safe_width-100, 30)
end,
ispress = function(x2,y2)
return x2 >= Safe_width-120 and x2 <= Safe_width-85 and y2 <= 40
end,
press = add_editor,
})
-- button to stop the app and return to the source editor
table.insert(widgets, {
draw = function()
color(0, 0.6,0.6)
g.setFont(Font)
local s = App.width('exit')
rect('line', Safe_width-s-15, 75, s+10,30, 5)
g.print('exit', Safe_width-s-10, 80)
end,
ispress = function(x2,y2)
g.setFont(Font)
local s = App.width('exit')
return x2 >= Safe_width-s-15 and y2 >= 75 and y2 <= 105
end,
press = stop_app,
})
color(0, 0.6,0.6)
line(Safe_width-120, 0, Safe_width-120, 40)
g.setFont(Font)
local s = App.width('exit')
line(Safe_width-120, 40, Safe_width-s-20, 40)
line(Safe_width-s-20, 40, Safe_width-s-20, 110)
line(Safe_width-s-20, 110, Safe_width+100, 110)
ui_state.button_handlers = {}
local stop_app_label = 'edit'
button(ui_state, stop_app_label, {x=5, y=Safe_height-10-Line_height-10,
w=5+App.width(stop_app_label)+5, h=5+Line_height+5,
bg=Menu_background,
icon = function(p)
App.color(Normal_color)
rect('line', p.x,p.y, p.w,p.h)
g.print(stop_app_label, p.x+5, p.y+5)
end,
onpress1 = stop_app,
})
A lightweight environment for writing small, throwaway
[Lua](https://www.lua.org) and [LÖVE](https://love2d.org) programs. Tested on
Windows, Mac, Linux, iOS and Android. The environment itself can be modified
as it runs. In early release; please report issues, particularly with
usability or accessibility.
Copy this repo to get a leg up creating tiny, low-maintenance, cross-platform
apps that you can make changes to right on a phone or tablet.
It comes bundled with a few optional goodies:
* Support for tap-to-pan and pinch-to-zoom gestures over an infinite 2D
surface for arbitrary graphics and UI.
* A tiny widget library for quickly creating arbitrary UI elements.
[Here's an example of the kinds of things you can add to the global variable `widgets`.](https://akkartik.itch.io/carousel/devlog/665231/a-sprite-editor-in-100-lines-of-code)
* A typographic scale for scaling the font size of text in visually pleasing
increments.
Tap the 'edit' button and then poke around the 'load' menu to learn more.
To modify it live without restarting the app each time, download [the driver
app](https://git.sr.ht/~akkartik/driver.love). Here's an example session
using a fork of this repo:
You can also modify the editing environment itself, or repurpose it for a
different app entirely, live as it runs. This requires running it on a
computer. Download [the driver app](https://git.sr.ht/~akkartik/driver.love).
Here's an example session showing the driver (left window) editing a different
app (right window containing yellow text):
Its immediate upstream is [the template repo for freewheeling apps](https://git.sr.ht/~akkartik/template-live-editor).
Updates to it can be downloaded from the following mirrors:
Its immediate upstream is [Lua Carousel, a lightweight cross-platform
environment for creating little throwaway scripts on a computer or
phone](https://git.sr.ht/~akkartik/carousel.love). Updates to it can be
downloaded from the following mirrors:
* https://git.sr.ht/~akkartik/carousel.love
* https://tildegit.org/akkartik/carousel.love
* https://git.merveilles.town/akkartik/carousel.love
* https://nest.pijul.com/akkartik/carousel.love (using the Pijul version control system)
* https://git.sr.ht/~akkartik/template-carousel-mobile
* https://tildegit.org/akkartik/template-carousel-mobile
* https://git.merveilles.town/akkartik/template-carousel-mobile
* https://nest.pijul.com/akkartik/template-carousel-mobile (using the Pijul version control system)