1
0
mirror of https://github.com/kepler155c/opus synced 2024-11-05 08:26:16 +00:00
opus/startup

98 lines
2.1 KiB
Plaintext
Raw Normal View History

2018-01-20 12:18:13 +00:00
local colors = _G.colors
local os = _G.os
local settings = _G.settings
local term = _G.term
2016-12-11 19:24:52 +00:00
local bootOptions = {
2018-01-24 22:39:38 +00:00
{ prompt = os.version() },
{ prompt = 'Opus' , args = { '/sys/boot/opus.boot' } },
2019-02-12 22:03:50 +00:00
{ prompt = 'Opus Shell' , args = { '/sys/boot/opus.boot', 'sys/apps/shell.lua' } },
2019-01-09 13:50:42 +00:00
{ prompt = 'Opus Kiosk' , args = { '/sys/boot/kiosk.boot' } },
2016-12-11 19:24:52 +00:00
}
local bootOption = 2
2018-01-20 12:18:13 +00:00
if settings then
2018-01-24 22:39:38 +00:00
settings.load('.settings')
bootOption = tonumber(settings.get('opus.boot_option') or 2) or 2
2018-01-20 12:18:13 +00:00
end
2016-12-11 19:24:52 +00:00
local function startupMenu()
2018-01-24 22:39:38 +00:00
while true do
term.clear()
term.setCursorPos(1, 1)
print('Select startup mode')
print()
for k,option in pairs(bootOptions) do
print(k .. ' : ' .. option.prompt)
end
print('')
term.write('> ')
local ch = tonumber(_G.read())
if ch and bootOptions[ch] then
return ch
end
end
2018-01-20 12:18:13 +00:00
end
local function splash()
2018-01-24 22:39:38 +00:00
local w, h = term.current().getSize()
2018-01-20 12:18:13 +00:00
2018-01-24 22:39:38 +00:00
term.setTextColor(colors.white)
if not term.isColor() then
local str = 'Opus OS'
term.setCursorPos((w - #str) / 2, h / 2)
term.write(str)
else
term.setBackgroundColor(colors.black)
term.clear()
local opus = {
'fffff00',
'ffff07000',
'ff00770b00 4444',
'ff077777444444444',
'f07777744444444444',
'f0000777444444444',
'070000111744444',
'777770000',
'7777000000',
'70700000000',
'077000000000',
}
for k,line in ipairs(opus) do
term.setCursorPos((w - 18) / 2, k + (h - #opus) / 2)
term.blit(string.rep(' ', #line), string.rep('a', #line), line)
end
end
2018-01-20 12:18:13 +00:00
2018-01-24 22:39:38 +00:00
local str = 'Press any key for menu'
term.setCursorPos((w - #str) / 2, h)
term.write(str)
2016-12-11 19:24:52 +00:00
end
term.clear()
2018-01-20 12:18:13 +00:00
splash()
2017-09-04 21:41:46 +00:00
local timerId = os.startTimer(1.5)
2016-12-11 19:24:52 +00:00
while true do
2018-01-24 22:39:38 +00:00
local e, id = os.pullEvent()
if e == 'timer' and id == timerId then
break
end
if e == 'char' then
bootOption = startupMenu()
if settings then
settings.set('opus.boot_option', bootOption)
settings.save('.settings')
end
break
end
2016-12-11 19:24:52 +00:00
end
2018-01-20 12:18:13 +00:00
term.clear()
term.setCursorPos(1, 1)
if bootOptions[bootOption].args then
2018-01-24 22:39:38 +00:00
os.run(_G.getfenv(1), table.unpack(bootOptions[bootOption].args))
2018-01-20 12:18:13 +00:00
else
2018-01-24 22:39:38 +00:00
print(bootOptions[bootOption].prompt)
2018-01-20 12:18:13 +00:00
end
2018-01-24 22:39:38 +00:00