-- Apps Management Module for SimpleOS local apps = {} -- Default apps storage local appList = {} local appsFile = "os/data/apps.dat" -- Default apps local defaultApps = { { name = "Shell", symbol = ">", command = "shell" }, { name = "Files", symbol = "F", command = "list" }, { name = "Edit", symbol = "E", command = "edit" }, { name = "Lua", symbol = "L", command = "lua" }, { name = "Snake", symbol = "S", command = "os/games/snake" }, { name = "Tetris", symbol = "T", command = "os/games/tetris" }, { name = "Pong", symbol = "P", command = "os/games/pong" }, { name = "Mines", symbol = "M", command = "os/games/minesweeper" }, { name = "2048", symbol = "2", command = "os/games/2048" }, { name = "Breakou", symbol = "B", command = "os/games/breakout" } } -- Ensure data directory exists local function ensureDataDir() if not fs.exists("os/data") then fs.makeDir("os/data") end end -- Load apps from file function apps.load() ensureDataDir() if fs.exists(appsFile) then local file = fs.open(appsFile, "r") if file then local content = file.readAll() file.close() local loaded = textutils.unserialize(content) if loaded then appList = loaded return end end end -- Use defaults if no saved apps appList = defaultApps apps.save() end -- Save apps to file function apps.save() ensureDataDir() local file = fs.open(appsFile, "w") if file then file.write(textutils.serialize(appList)) file.close() end end -- Get all apps function apps.getAll() return appList end -- Add a new app function apps.add(name, symbol, command) table.insert(appList, { name = name, symbol = symbol or "#", command = command }) apps.save() end -- Remove an app by index function apps.remove(index) if index > 0 and index <= #appList then table.remove(appList, index) apps.save() return true end return false end -- Edit an app function apps.edit(index, name, symbol, command) if index > 0 and index <= #appList then appList[index].name = name or appList[index].name appList[index].symbol = symbol or appList[index].symbol appList[index].command = command or appList[index].command apps.save() return true end return false end -- Run an app function apps.run(index) if index > 0 and index <= #appList then local app = appList[index] term.setBackgroundColor(colors.black) term.setTextColor(colors.white) term.clear() term.setCursorPos(1, 1) -- Run the command shell.run(app.command) -- Wait for key press to return print() print("Press any key to return to desktop...") os.pullEvent("key") return true end return false end -- Get app count function apps.count() return #appList end -- Get app by index function apps.get(index) return appList[index] end return apps