--:Minify:-- -- Color indices (sfgc): -- 1=white, 2=red, 3=green, 4=blue, 5=cyan, 6=magenta, 7=yellow -- 8=orange, 9=lime, 10=lightcyan, 11=brown, 12=darkgrey, 13=lightgrey, 14=purple, 15=chartreuse, 16=black local C_LOGO = 0x00FFFF -- cyan local C_WHITE = 0xFFFFFF -- white local C_LABEL = 0xDBDBDB -- light grey (key names) local C_SEP = 0x6D6D6D -- dark grey (---- separator) local C_USER = 0x00FF00 -- green (user@host) local function c(col) syscall.devctl(1, "sfgc", col) end local username = syscall.getUsername() or "Unknown" local hostname = syscall.getHostname() or "Unknown" local userhost = username .. "@" .. hostname local function formatUptime(ms) local s = math.floor(ms / 1000) local m = math.floor(s / 60) local h = math.floor(m / 60) local d = math.floor(h / 24) s = s % 60; m = m % 60; h = h % 24 local parts = {} if d > 0 then parts[#parts+1] = d .. "d" end if h > 0 then parts[#parts+1] = h .. "h" end if m > 0 then parts[#parts+1] = m .. "m" end parts[#parts+1] = s .. "s" return table.concat(parts, " ") end local host_str = syscall.getHost() or "Unknown" local cc_ver = host_str:match("ComputerCraft ([%d%.]+)") or host_str local info = { {nil, userhost}, {nil, string.rep("-", #userhost)}, {"OS", syscall.version() or "Unknown"}, {"Host", cc_ver}, {"Arch", syscall.arch() or "Unknown"}, {"Uptime", formatUptime(syscall.getUptime() or 0)}, {"Tasks", tostring(#(syscall.getTasks() or {}))}, {"Shell", syscall.getEnviron("SHELL") or "Unknown"}, {"Terminal", "tty1"}, {"UID", tostring(syscall.getuid())}, {"Packages", "n/a (spm)"}, } local logo = { ".. *. .. ", " *= +@* +* ", " .@#. -@@@= :#@. ", " =@@+ *@@@# +@@= ", " %@@%: *@@@# -%@@% ", " :@@@@+ *@@@# .*@@@@: ", " :*@@@%- *@@@# -@@@@*: ", " =%@@#. *@@@# .#@@%= ", " :=. :*@@= *@@@# =@@+: .=: ", " %@#=..*# +@@@# #*..=#@# ", " .@@@@+=# .%@%: #=+@@@@. ", " .....=# -@= *+...:. ", " -*%*-@= - =@-*%*- ", " -@*. -@%. :%@- :*@- ", " .#@#@* ", " -#- ", " ", } local lines = math.max(#logo, #info) for i = 1, lines do local logo_str = logo[i] or string.rep(" ", 36) c(C_LOGO) printInline(logo_str) c(C_LABEL) printInline("| ") local row = info[i] if row then if row[1] == nil and i == 1 then -- user@host line c(C_USER) printInline(row[2]) elseif row[1] == nil and i == 2 then -- separator line c(C_SEP) printInline(row[2]) elseif row[1] then -- label: value c(C_LABEL) printInline(row[1] .. ": ") c(C_WHITE) printInline(row[2]) end end c(C_WHITE) print("") end