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 boxtable.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 <= 40end,press = add_editor,})-- button to stop the app and return to the source editortable.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 <= 105end,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 onWindows, Mac, Linux, iOS and Android. The environment itself can be modifiedas it runs. In early release; please report issues, particularly withusability or accessibility.
Copy this repo to get a leg up creating tiny, low-maintenance, cross-platformapps 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 2Dsurface 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 pleasingincrements.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 driverapp](https://git.sr.ht/~akkartik/driver.love). Here's an example sessionusing a fork of this repo:
You can also modify the editing environment itself, or repurpose it for adifferent app entirely, live as it runs. This requires running it on acomputer. Download [the driver app](https://git.sr.ht/~akkartik/driver.love).Here's an example session showing the driver (left window) editing a differentapp (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-platformenvironment for creating little throwaway scripts on a computer orphone](https://git.sr.ht/~akkartik/carousel.love). Updates to it can bedownloaded 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)