Run it
Copy the script and paste it into your executor.
Players = :()
UIS = :()
TweenService = :()
RunService = :()
player = Players.LocalPlayer
guiParent = (gethui ()) :()
old = guiParent:()
old old:()
.()
gui = .()
gui.Name =
gui.ResetOnSpawn =
gui.ZIndexBehavior = .ZIndexBehavior.Global
gui.IgnoreGuiInset =
gui.Parent = guiParent
Themes = {
ArchLinux = {
name = ,
bg1 = .(, , ),
bg2 = .(, , ),
surface = .(, , ),
surface2 = .(, , ),
border = .(, , ),
accent = .(, , ),
accent2 = .(, , ),
accentDk = .(, , ),
text = .(, , ),
textDim = .(, , ),
textMut = .(, , ),
green = .(, , ),
red = .(, , ),
yellow = .(, , ),
term = .(, , ),
termTxt = .(, , ),
close = .(, , ),
minimize = .(, , ),
maximize = .(, , ),
winTitle = .(, , ),
gradA = .(,,),
gradB = .(,,),
dotCol = .(,,),
},
ArchClassic = {
name = ,
bg1 = .(, , ),
bg2 = .(, , ),
surface = .(, , ),
surface2 = .(, , ),
border = .(, , ),
accent = .(, , ),
accent2 = .(, , ),
accentDk = .(, , ),
text = .(, , ),
textDim = .(, , ),
textMut = .(, , ),
green = .(, , ),
red = .(, , ),
yellow = .(, , ),
term = .(, , ),
termTxt = .(, , ),
close = .(, , ),
minimize = .(, , ),
maximize = .(, , ),
winTitle = .(, , ),
gradA = .(,,),
gradB = .(,,),
dotCol = .(,,),
},
ArchMonokai = {
name = ,
bg1 = .(, , ),
bg2 = .(, , ),
surface = .(, , ),
surface2 = .(, , ),
border = .(, , ),
accent = .(, , ),
accent2 = .(, , ),
accentDk = .(, , ),
text = .(, , ),
textDim = .(, , ),
textMut = .(, , ),
green = .(, , ),
red = .(, , ),
yellow = .(, , ),
term = .(, , ),
termTxt = .(, , ),
close = .(, , ),
minimize = .(, , ),
maximize = .(, , ),
winTitle = .(, , ),
gradA = .(,,),
gradB = .(,,),
dotCol = .(,,),
},
}
T = Themes.ArchLinux
ActiveTheme =
(obj, props, t, style)
TweenService:(obj,
TweenInfo.(t , style .EasingStyle.Quad, .EasingDirection.Out),
props):()
(cls, props, parent)
o = .(cls)
k,v (props)
(() o[k] = v )
parent o.Parent = parent
o
(p, r)
(, {CornerRadius = .(, r )}, p)
(p, col, thick, trans)
(, {Color = col T.border, Thickness = thick , Transparency = trans }, p)
(p, px)
u = .()
u.PaddingLeft = .(, px)
u.PaddingRight = .(, px)
u.PaddingTop = .(, px)
u.PaddingBottom = .(, px)
u.Parent = p
(p, a, b, rot)
g = .()
g.Color = ColorSequence.(a, b)
g.Rotation = rot
g.Parent = p
g
(btn, norm, hov, prop)
prop = prop
btn.MouseEnter:(() (btn, {[prop]=hov}) )
btn.MouseLeave:(() (btn, {[prop]=norm}) )
(parent, zIdx)
s = (, {
Size = .(, , , ),
Position = .(, -, , -),
BackgroundColor3 = .(,,),
BackgroundTransparency = ,
ZIndex = zIdx - ,
BorderSizePixel = ,
}, parent)
(s, )
s
notifContainer = (, {
Size = .(, , , ),
Position = .(, -, , ),
BackgroundTransparency = ,
ZIndex = ,
}, gui)
(, {
Padding = .(, ),
VerticalAlignment = .VerticalAlignment.Top,
SortOrder = .SortOrder.LayoutOrder,
}, notifContainer)
(title, text, duration, icon)
nf = (, {
Size = .(, , , ),
BackgroundColor3 = T.bg2,
BorderSizePixel = ,
ZIndex = ,
BackgroundTransparency = ,
}, notifContainer)
(nf, )
(nf, T.accent, , )
bar = (, {
Size = .(, , , -),
Position = .(, , , ),
BackgroundColor3 = T.accent,
BorderSizePixel = ,
ZIndex = ,
}, nf)
(bar, )
(, {
Size = .(, , , ),
Position = .(, , , ),
BackgroundTransparency = ,
Text = icon ,
TextSize = ,
ZIndex = ,
}, nf)
(, {
Size = .(, -, , ),
Position = .(, , , ),
BackgroundTransparency = ,
Text = title,
Font = .Font.GothamBold,
TextSize = ,
TextColor3 = T.text,
TextXAlignment = .TextXAlignment.Left,
ZIndex = ,
}, nf)
(, {
Size = .(, -, , ),
Position = .(, , , ),
BackgroundTransparency = ,
Text = text,
Font = .Font.Gotham,
TextSize = ,
TextColor3 = T.textDim,
TextXAlignment = .TextXAlignment.Left,
TextWrapped = ,
ZIndex = ,
}, nf)
(nf, {BackgroundTransparency = }, )
.(duration , ()
(nf, {BackgroundTransparency = , Size = .(, , , )}, )
.(, () nf:() )
)
FS = {}
CWD = ..player.Name:()
(t, content)
{t=t, content=content , children={}, time=.()}
FS[] = ()
FS[] = ()
FS[] = ()
FS[] = ()
FS[] = ()
FS[..player.Name:()] = ()
FS[..player.Name:()..] = ()
FS[..player.Name:()..] = ()
FS[] = ()
FS[] = ()
FS[] = ()
FS[] = ()
FS[] = ()
FS[] = ()
(parent, child)
FS[parent]
.(FS[parent].children, child)
(, )
(, )
(, )
(, )
(, )
(, )
(, )
(, )
(, ..player.Name:())
(..player.Name:(),..player.Name:()..)
(..player.Name:(),..player.Name:()..)
(, )
(, )
(path, content, parent)
FS[path] = (, content)
parent (parent, path)
(, , )
(, , )
(, , )
(, ..player.Name:()....CWD.., )
(, , )
(..player.Name:().., , ..player.Name:())
(..player.Name:().., , ..player.Name:())
(..player.Name:().., , ..player.Name:()..)
(, ..os.().., )
(, ..(.())....(.())....(.())....(.()).., )
(, , )
(path)
path == CWD
path:(,) ==
path = CWD .. .. path:()
path:(,) ~=
path = (CWD == ..path) (CWD....path)
parts = {}
seg path:()
seg == .(parts)
seg ~= .(parts, seg)
(#parts == ) (..table.(parts,))
(path)
nd = FS[(path)]
nd nd.t == nd.content
(path, content)
abs = (path)
FS[abs]
FS[abs].content = content
FS[abs].time = .()
FS[abs] = (, content)
parentPath = abs:()
FS[parentPath] FS[parentPath].t ==
.(FS[parentPath].children, abs)
(path)
node = FS[(path)]
node node.t == node.children
(path)
abs = (path)
FS[abs] ,
FS[abs] = ()
parentPath = abs:()
FS[parentPath] FS[parentPath].t ==
.(FS[parentPath].children, abs)
Kernel = { procs={}, pid=, boot=.() }
(name, mem, sys)
id = Kernel.pid; Kernel.pid+=
Kernel.procs[id] = {
pid=id, name=name, state=,
mem=mem .(,), cpu=,
start=.(), sys=sys
}
id
(pid)
Kernel.procs[pid] ,
Kernel.procs[pid].sys ,
Kernel.procs[pid] =
(, , )
(, , )
(, , )
(, , )
(, , )
RunService.Heartbeat:((dt)
_, p (Kernel.procs)
p.cpu += dt * .(,)/
)
desktop = (, {
Size=.(,,,),
BackgroundColor3=T.bg1,
BorderSizePixel=,
ZIndex=,
}, gui)
desktopGrad = (desktop, T.gradA, T.gradB, )
dots = (, {
Size=.(,,,),
BackgroundTransparency=,
ZIndex=,
}, desktop)
rows, cols = ,
r=, rows
cc=, cols
(, {
Size=.(,,,),
Position=.(cc/cols, , r/rows, ),
BackgroundColor3=T.dotCol,
BackgroundTransparency=,
BorderSizePixel=,
ZIndex=,
}, dots)
Z =
WINS = {}
OpenWinNames = {}
(handle, win)
drag, dstart, dpos = , ,
handle.InputBegan:((i)
i.UserInputType == .UserInputType.MouseButton1
drag=; dstart=i.Position; dpos=win.Position
i.Changed:(()
i.UserInputState==.UserInputState.End drag=
)
)
UIS.InputChanged:((i)
drag i.UserInputType==.UserInputType.MouseMovement
d=i.Position-dstart
win.Position=.(dpos.X.Scale, dpos.X.Offset+d.X,
dpos.Y.Scale, dpos.Y.Offset+d.Y)
)
refreshTaskbar
(title, w, h, x, y)
Z+=
z = Z
win = (, {
Size=.(,w,,h),
Position=.(,x ,,y ),
BackgroundColor3=T.surface,
BorderSizePixel=, ZIndex=z,
ClipsDescendants=,
}, gui)
(win, )
(win, T.accent, , )
(win, z)
win.InputBegan:((i)
i.UserInputType==.UserInputType.MouseButton1
Z+=; win.ZIndex=Z
)
bar = (, {
Size=.(,,,),
BackgroundColor3=T.winTitle,
BorderSizePixel=, ZIndex=z+,
}, win)
(, {
Size=.(,,,),
Position=.(,,,-),
BackgroundColor3=T.accent,
BackgroundTransparency=,
BorderSizePixel=, ZIndex=z+,
}, bar)
(bar, )
(, {
Size=.(,,,),
Position=.(,,,),
BackgroundColor3=T.winTitle,
BorderSizePixel=, ZIndex=z+,
}, bar)
(col, xoff, sym, cb)
b = (, {
Size=.(,,,),
Position=.(,xoff,,-),
BackgroundColor3=col,
Text=, ZIndex=z+, BorderSizePixel=,
}, bar)
(b,)
lbl=(, {
Size=.(,,,),
BackgroundTransparency=,
Text=sym, TextColor3=.(,,),
Font=.Font.GothamBold, TextSize=,
Visible=, ZIndex=z+,
},b)
b.MouseEnter:(() lbl.Visible= )
b.MouseLeave:(() lbl.Visible= )
b.MouseButton1Click:(cb)
b
mini=
maxi=
orig=.(,w,,h)
origPos=.(,x ,,y )
body
(T.close, -, , ()
(win,{Size=.(,w,,),BackgroundTransparency=},)
.(, ()
win:()
WINS[title]=
OpenWinNames[title]=
refreshTaskbar ()
)
)
(T.minimize, -, , ()
mini
(win,{Size=orig},)
body body.Visible=
mini=
(win,{Size=.(,w,,)},)
.(,()
body body.Visible=
)
mini=
)
(T.maximize, -, , ()
maxi
(win,{Size=orig, Position=origPos},)
maxi=
origPos=win.Position
orig=win.Size
(win,{Size=.(,,,-), Position=.(,,,)},)
maxi=
mini
mini=
body body.Visible=
)
(, {
Size=.(,-,,),
Position=.(,,,),
BackgroundTransparency=,
Text=title, Font=.Font.GothamBold,
TextSize=, TextColor3=T.text,
TextXAlignment=.TextXAlignment.Left,
ZIndex=z+,
}, bar)
body = (, {
Size=.(,,,-),
Position=.(,,,),
BackgroundTransparency=,
ZIndex=z+, ClipsDescendants=,
}, win)
(bar, win)
win.Size=.(,w,,)
win.BackgroundTransparency=
(win,{Size=.(,w,,h), BackgroundTransparency=},,.EasingStyle.Back)
WINS[title]=win
OpenWinNames[title]=
refreshTaskbar ()
win, body, z
cmdHistory = {}
Fortunes = {
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
}
(cmd, out)
args={}
a cmd:() .(args,a)
cc=args[]
cc cc==
.(cmdHistory, cmd)
cc==
(, T.accent)
(, T.accent)
(, T.accent)
(, T.accent2)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.accent2)
(, T.accent2)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.accent2)
(, T.accent2)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.accent)
cc== cc==
up=.()-Kernel.boot
h=.(up/)
m=.(up%/)
cnt=; mem=
_,p (Kernel.procs) cnt+=; mem+=p.mem
(, T.text)
(..player.Name.., T.accent)
(, T.accent)
(, T.text)
(, T.text)
(, T.text)
(..string.(, h, m), T.text)
(..math.(,).., T.text)
(, T.text)
(..ActiveTheme, T.text)
(, T.text)
(, T.text)
(, T.text)
(..mem.., T.text)
(..cnt, T.text)
(..player.DisplayName, T.text)
(..os.(), T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
cc==
args[]
(, T.yellow)
(, T.textDim)
args[]==
(, T.text)
(, T.accent)
(, T.text)
(, T.accent2)
(, T.text)
(, T.text)
(, T.accent2)
(, T.text)
(, T.text)
(, T.accent2)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.accent2)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.accent2)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
args[]==
(, T.text)
(, T.accent)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.accent2)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.accent2)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.accent2)
(, T.text)
(..args[], T.red)
cc==
(..Fortunes[.(#Fortunes)], T.yellow)
cc==
args[]==
(, T.accent2)
.()
(, T.textDim)
(, T.textDim)
(, T.textDim)
(, T.accent2)
.()
(, T.green)
args[]==
args[]
(, T.red)
pkg=args[]
(, T.textDim)
(, T.textDim)
(, T.text)
(..pkg.., T.text)
(, T.text)
(..math.(,).., T.text)
(..math.(,).., T.text)
(, T.text)
(, T.accent2)
(, T.accent2)
(..pkg....math.(,)....math.(,)....math.(,), T.textDim)
(, T.textDim)
(, T.textDim)
(, T.textDim)
(, T.textDim)
(..pkg.., T.textDim)
(, T.green)
args[]==
args[]
(, T.red)
(, T.textDim)
(, T.text)
(..args[].., T.text)
(, T.text)
(..math.(,).., T.text)
(, T.text)
(, T.accent2)
(..args[].., T.textDim)
(, T.green)
args[]==
args[]
(, T.red)
fake={,,,,}
(..args[].., T.accent2)
(, T.text)
_,pk (fake)
pk:():(args[]:())
(..pk.., T.accent)
(..pk.., T.textDim)
args[]==
pkgs={,,,,,,,,}
(, T.accent2)
_,pk (pkgs)
(..pk....math.(,), T.text)
(, T.yellow)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
(, T.text)
cc==
(, T.accent2)
.()
()
cc==
total=; used=
_,p (Kernel.procs) used+=p.mem
free=total-used
pct=.(used/total*)
(, T.accent)
(.(, total, used, free), T.text)
(, T.text)
(..pct.., pct> T.red T.green)
cc==
(, T.accent)
(, T.text)
(, T.text)
(, T.text)
cc==
(, T.accent)
i, cmd2 (cmdHistory)
(.(, i, cmd2), T.text)
cc==
path = args[] (args[]) CWD
(p, prefix)
nd = FS[p]
nd nd.t ~=
ch = nd.children
i, cp (ch)
child = FS[cp]
child
segs = cp:()
nm = segs[#segs]
isLast = (i == #ch)
connector = isLast
icon = child.t ==
(prefix .. connector .. icon .. nm, child.t == T.accent2 T.text)
child.t ==
newPrefix = prefix .. (isLast )
(cp, newPrefix)
segs = path:()
( .. (segs[#segs] ~= segs[#segs] ), T.accent)
(path, )
cc==
args[] (, T.yellow);
ok, err = (args[])
ok
(..(args[]), T.textDim)
(..(err), T.red)
cc==
args[] args[] (, T.yellow);
src = (args[])
dst = (args[])
FS[src] (..args[].., T.red);
FS[dst] = FS[src]
FS[dst].time = .()
FS[src] =
_, nd (FS)
nd.t ==
i, ch (nd.children)
ch == src nd.children[i] = dst;
(..src....dst.., T.textDim)
cc==
args[] args[] (, T.yellow);
src = (args[])
dst = (args[])
FS[src] FS[src].t ~= (..args[].., T.red);
(dst, FS[src].content)
(..src....dst.., T.textDim)
cc==
args[] args[] (, T.yellow);
pattern = args[]
content = ((args[]))
content (..args[].., T.red);
found =
_, ln (content:())
ln:():(pattern:())
(ln, T.green)
found +=
found == (, T.textDim)
cc==
args[] (, T.yellow);
content = ((args[]))
content (..args[].., T.red);
lines = content:()
count = (args[])
i = , .(count, #lines)
(lines[i], T.text)
cc==
args[] (, T.yellow);
content = ((args[]))
content (..args[].., T.red);
lines = content:()
count = (args[])
i = .(, #lines - count + ), #lines
(lines[i], T.text)
cc==
path = args[] (args[]) CWD
ch = (path)
ch (..path.., T.red);
#ch== (, T.textDim);
_, cp (ch)
nd=FS[cp]
nd
segs=cp:()
nm=segs[#segs]
nd.t==
(..nm.., T.accent2)
(.(, nm, #nd.content), T.text)
cc==
p = args[] (args[]) (..player.Name:())
FS[p] FS[p].t==
CWD=p; (..CWD, T.textDim)
(..(args[]).., T.red)
cc==
(CWD, T.text)
cc==
args[] (, T.yellow);
content=((args[]))
content
_,ln (content:()) (ln, T.text)
(..args[].., T.red)
cc==
full=.(args,,)
lpart, rpart=full:()
lpart rpart
((rpart), lpart..)
(..rpart, T.textDim)
(full, T.text)
cc==
args[] (, T.yellow);
abs=(args[])
FS[abs]
(abs,); (..abs, T.textDim)
FS[abs].time=.(); (, T.textDim)
cc==
args[] (, T.yellow);
abs=(args[])
FS[abs] (..args[].., T.red);
FS[abs].t== (..args[].., T.red);
FS[abs]=
_, nd (FS)
nd.t==
i,ch (nd.children)
ch==abs .(nd.children,i);
(..abs.., T.textDim)
cc==
(.(,,,,), T.accent)
(..():(), T.textMut)
sorted={}
_,p (Kernel.procs) .(sorted,p)
.(sorted,(a,b) a.pid<b.pid )
_,p (sorted)
(.(,
p.pid, p.name, p.state== , p.mem),
p.state== T.green T.textDim)
cc==
pid=(args[])
pid (, T.yellow);
ok, err=(pid)
ok (..pid, T.green)
(..(err), T.red)
cc==
up=.()-Kernel.boot
d=.(up/)
h=.((up%)/)
m=.((up%)/)
(.(, d, h, m), T.text)
cc==
(.(), T.text)
cc== (player.Name:(), T.text)
cc== (() , T.text)
cc==
args[]==
(, T.text)
(, T.text)
cc==
cc==
(..cc.., T.red)
(, T.textDim)
openTerminal, openNotepad, openTaskManager, openBrowser, openFiles
openCalc, openSettings, openSysMonitor
openTerminal = ()
WINS[] WINS[].Parent
WINS[].Visible=;
win,body,z = (, , , , )
tbg = (, {
Size=.(,,,),
BackgroundColor3=T.term,
BorderSizePixel=, ZIndex=z+,
}, body)
outScroll = (, {
Size=.(,,,-),
BackgroundTransparency=, BorderSizePixel=,
ScrollBarThickness=, ScrollBarImageColor3=T.accent,
AutomaticCanvasSize=.AutomaticSize.Y,
CanvasSize=.(,,,), ZIndex=z+,
}, tbg)
(, {Padding=.(,)}, outScroll)
(outScroll, )
(txt, col)
lbl = (, {
Size=.(,,,),
AutomaticSize=.AutomaticSize.Y,
BackgroundTransparency=, Text=txt,
Font=.Font.Code, TextSize=,
TextColor3=col T.termTxt,
TextXAlignment=.TextXAlignment.Left,
TextWrapped=, ZIndex=z+,
}, outScroll)
.(()
outScroll.CanvasPosition=.(,outScroll.AbsoluteCanvasSize.Y)
)
lbl
inputRow = (, {
Size=.(,,,), Position=.(,,,-),
BackgroundColor3=.(,,),
BorderSizePixel=, ZIndex=z+,
}, tbg)
(, {
Size=.(,,,),
BackgroundColor3=T.accent, BackgroundTransparency=,
BorderSizePixel=, ZIndex=z+,
}, inputRow)
promptLbl = (, {
Size=.(,,,), AutomaticSize=.AutomaticSize.X,
Position=.(,,,), BackgroundTransparency=,
Text=..player.Name:()....CWD:(..player.Name:(), )..,
Font=.Font.Code, TextSize=, TextColor3=T.accent, ZIndex=z+,
}, inputRow)
inputBox = (, {
Size=.(,-,,-), Position=.(,,,),
BackgroundTransparency=, Text=, PlaceholderText=,
PlaceholderColor3=T.textMut, Font=.Font.Code, TextSize=,
TextColor3=T.termTxt, TextXAlignment=.TextXAlignment.Left,
ClearTextOnFocus=, ZIndex=z+,
}, inputRow)
(, T.accent)
(, T.accent)
(, T.textDim)
(, T.textDim)
(, T.accent)
(, T.text)
(() , T.text)
hist={}; hidx=
inputBox.FocusLost:((enter)
enter
cmd2=inputBox.Text; inputBox.Text=
cmd2==
.(hist,cmd2); hidx=#hist+
displayPath = CWD:(..player.Name:(), )
(..player.Name:()....displayPath....cmd2, T.textDim)
r=(cmd2, addOut)
r==
_,ch (outScroll:())
ch:() ch:()
r==
win:(); WINS[]=; OpenWinNames[]=
refreshTaskbar ()
displayPath = CWD:(..player.Name:(), )
promptLbl.Text=..player.Name:()....displayPath..
.(() inputBox:() )
)
UIS.InputBegan:((i,gp)
gp inputBox:()
i.KeyCode==.KeyCode.Up
hidx=.(,hidx-); inputBox.Text=hist[hidx]
i.KeyCode==.KeyCode.Down
hidx=.(#hist+,hidx+); inputBox.Text=hist[hidx]
)
.(() inputBox:() )
(, )
openNotepad = ()
WINS[] WINS[].Parent WINS[].Visible=;
win,body,z = (, , , , )
curFile = ..player.Name:()..
bg=(,{Size=.(,,,),BackgroundColor3=T.surface,
BorderSizePixel=,ZIndex=z+},body)
tb=(,{Size=.(,,,),
BackgroundColor3=T.surface2,BorderSizePixel=,ZIndex=z+},bg)
fileLbl=(,{
Size=.(,-,,),Position=.(,,,),
BackgroundTransparency=,Text=..curFile,
Font=.Font.Gotham,TextSize=,TextColor3=T.textDim,
TextXAlignment=.TextXAlignment.Left,ZIndex=z+},tb)
saveBtn=(,{
Size=.(,,,), Position=.(,-,,-),
BackgroundColor3=T.surface, Text=,TextColor3=T.text,
Font=.Font.Gotham,TextSize=, ZIndex=z+,BorderSizePixel=},tb)
(saveBtn,); (saveBtn,T.border,,)
(saveBtn,T.surface,T.surface2)
ta=(,{
Size=.(,-,,-), Position=.(,,,),
BackgroundColor3=T.bg1, Text=(curFile) ,
TextColor3=T.text, Font=.Font.Code,TextSize=,
TextXAlignment=.TextXAlignment.Left,
TextYAlignment=.TextYAlignment.Top,
MultiLine=,ClearTextOnFocus=,
TextWrapped=,ZIndex=z+,BorderSizePixel=},bg)
(ta,); (ta,); (ta,T.border,,)
saveBtn.MouseButton1Click:(()
(curFile, ta.Text)
fileLbl.Text=..curFile..
(, ..curFile, , )
.(,() fileLbl.Text=..curFile )
)
(, )
openTaskManager = ()
WINS[] WINS[].Parent
WINS[].Visible=;
win,body,z = (, , , , )
bg=(,{Size=.(,,,),BackgroundColor3=T.surface,
BorderSizePixel=,ZIndex=z+},body)
hdr=(,{Size=.(,,,),
BackgroundColor3=T.winTitle,BorderSizePixel=,ZIndex=z+},bg)
(hdr, T.border, , )
cols={
{t=, w=, x=},
{t=,w=,x=},
{t=,w=, x=},
{t=, w=, x=},
{t=, w=, x=},
}
_,col (cols)
(,{
Size=.(col.w,,,), Position=.(col.x,,,),
BackgroundTransparency=, Text=col.t,Font=.Font.GothamBold,TextSize=,
TextColor3=T.accent2,TextXAlignment=.TextXAlignment.Left,
ZIndex=z+},hdr)
list=(,{
Size=.(,,,-), Position=.(,,,),
BackgroundTransparency=,BorderSizePixel=,
ScrollBarThickness=,ScrollBarImageColor3=T.accent,
AutomaticCanvasSize=.AutomaticSize.Y,
CanvasSize=.(,,,),ZIndex=z+},bg)
(,{Padding=.(,)},list)
(list,)
rows={}
()
_,r (rows) r:() ; rows={}
sorted={}
_,p (Kernel.procs) .(sorted,p)
.(sorted,(a,b) a.pid<b.pid )
i,p (sorted)
row=(,{
Size=.(,,,),
BackgroundColor3=i%== T.surface2 T.surface,
BorderSizePixel=,ZIndex=z+},list)
(row,)
datas={(p.pid), p.name, p.state== , p.mem..}
ci,col (cols)
ci <=
(,{
Size=.(col.w,,,), Position=.(col.x,,,),
BackgroundTransparency=, Text=datas[ci],
Font=.Font.Code,TextSize=,
TextColor3=ci== (p.state== T.green T.textDim) T.text,
TextXAlignment=.TextXAlignment.Left, ZIndex=z+},row)
p.sys
kb=(,{
Size=.(,,,), Position=.(,,,-),
BackgroundColor3=T.red, Text=,
TextColor3=.(,,), Font=.Font.GothamBold,
TextSize=, ZIndex=z+, BorderSizePixel=},row)
(kb,)
kb.MouseButton1Click:(()
(p.pid)
(, ..p.name, , )
)
.(rows,row)
statBar=(,{
Size=.(,,,), Position=.(,,,-),
BackgroundColor3=T.winTitle, BorderSizePixel=,ZIndex=z+},bg)
statLbl=(,{
Size=.(,-,,),Position=.(,,,),
BackgroundTransparency=,Text=,
Font=.Font.Code,TextSize=,TextColor3=T.textDim,
TextXAlignment=.TextXAlignment.Left, RichText=,ZIndex=z+},statBar)
ramBg=(,{
Size=.(,-,,),Position=.(,,,),
BackgroundColor3=T.surface,BorderSizePixel=,ZIndex=z+},statBar)
(ramBg,)
ramBar=(,{
Size=.(,,,),Position=.(,,,),
BackgroundColor3=T.accent,BorderSizePixel=,ZIndex=z+},statBar)
(ramBar,)
conn=RunService.Heartbeat:(()
total=; used=; cnt=
_,p (Kernel.procs) used+=p.mem; cnt+=
pct=.(used/total*)
statLbl.Text=.(,
cnt, used, total, pct, .(.()-Kernel.boot))
(ramBar,{Size=.(used/total,,,)},)
ramBar.BackgroundColor3=pct> T.red pct> T.yellow T.accent
)
.(()
win win.Parent (); .()
conn:()
)
()
openBrowser = ()
WINS[] WINS[].Parent WINS[].Visible=;
win,body,z = (, , , , )
bg=(,{Size=.(,,,),
BackgroundColor3=.(,,),
BorderSizePixel=,ZIndex=z+},body)
addrRow=(,{
Size=.(,-,,), Position=.(,,,),
BackgroundColor3=.(,,),
BorderSizePixel=,ZIndex=z+},bg)
(addrRow,); (addrRow,T.accent,,)
addrBox=(,{
Size=.(,-,,),Position=.(,,,),
BackgroundTransparency=, Text=,
Font=.Font.Gotham,TextSize=,
TextColor3=.(,,),
ClearTextOnFocus=,ZIndex=z+},addrRow)
page=(,{
Size=.(,-,,-), Position=.(,,,),
BackgroundColor3=.(,,), BorderSizePixel=,
ScrollBarThickness=, AutomaticCanvasSize=.AutomaticSize.Y,
CanvasSize=.(,,,),ZIndex=z+},bg)
(page,); (page,T.border,,)
(,{Padding=.(,)},page)
(page,)
pages={
[]={
{h=, t=},
{h=, t=},
{h=, t=},
{lnk=}, {lnk=},
{lnk=}, {lnk=},
},
[]={
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=..player.Name:()},
{h=, t=},
{lnk=},
},
[]={
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{lnk=},
},
[]={
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=},
{lnk=},
},
[]={
{h=, t=},
{h=, t=},
{h=, t=},
{h=, t=ux.org"},
{h=0, t="• Reddit — r/archlinux"},
{h=0, t="• IRC — #archlinux on Libera.Chat"},
{h=0, t="• Bug Tracker — bugs.archlinux.org"},
{h=0, t="• Contribute — Submit packages to AUR"},
{h=2, t="Remember:"},
{h=0, t="Be helpful, follow the Code of Conduct,"},
{h=0, t="and always search before asking!"},
{lnk="arch://home"},
},
}
local function render(url)
for _,ch in ipairs(page:GetChildren()) do
if ch:IsA("GuiObject") then ch:Destroy() end
end
local pg=pages[url]
if not pg then
c("TextLabel",{Size=UDim2.new(1,0,0,40),BackgroundTransparency=1,
Text="404 — Page not found",
Font=Enum.Font.GothamBold,TextSize=16,
TextColor3=Color3.fromRGB(200,40,40),
TextXAlignment=Enum.TextXAlignment.Left,ZIndex=z+3},page)
return
end
for _,item in ipairs(pg) do
if item.lnk then
local b=c("TextButton",{
Size=UDim2.new(1,0,0,28),
BackgroundColor3=Color3.fromRGB(230,240,255),
Text="🔗 "..item.lnk,
Font=Enum.Font.Gotham,TextSize=13,
TextColor3=T.accent,
TextXAlignment=Enum.TextXAlignment.Left,
BorderSizePixel=0,ZIndex=z+3},page)
corner(b,5); pad(b,6)
b.MouseButton1Click:Connect(function() addrBox.Text=item.lnk; render(item.lnk) end)
elseif item.h==1 then
c("TextLabel",{Size=UDim2.new(1,0,0,0),AutomaticSize=Enum.AutomaticSize.Y,
BackgroundTransparency=1,Text=item.t,
Font=Enum.Font.GothamBold,TextSize=22,
TextColor3=Color3.fromRGB(20,60,180),
TextXAlignment=Enum.TextXAlignment.Left,TextWrapped=true,ZIndex=z+3},page)
elseif item.h==2 then
c("TextLabel",{Size=UDim2.new(1,0,0,0),AutomaticSize=Enum.AutomaticSize.Y,
BackgroundTransparency=1,Text=item.t,
Font=Enum.Font.GothamBold,TextSize=15,
TextColor3=T.accent,
TextXAlignment=Enum.TextXAlignment.Left,ZIndex=z+3},page)
else
c("TextLabel",{Size=UDim2.new(1,0,0,0),AutomaticSize=Enum.AutomaticSize.Y,
BackgroundTransparency=1,Text=item.t,
Font=Enum.Font.Code,TextSize=13,
TextColor3=Color3.fromRGB(30,40,70),
TextXAlignment=Enum.TextXAlignment.Left,TextWrapped=true,ZIndex=z+3},page)
end
end
end
render("arch://home")
addrBox.FocusLost:Connect(function(e) if e then render(addrBox.Text) end end)
kspawn("firefox", 48)
end
-- ── FILE MANAGER ──────────────────────────────────────────────
openFiles = function()
if WINS["Files"] and WINS["Files"].Parent then WINS["Files"].Visible=true; return end
local win,body,z = newWindow(" 📁 Thunar", 520, 440, 220, 100)
local viewPath="/"
local bg=c("Frame",{Size=UDim2.new(1,0,1,0),BackgroundColor3=T.surface,
BorderSizePixel=0,ZIndex=z+1},body)
local bread=c("Frame",{Size=UDim2.new(1,0,0,34),
BackgroundColor3=T.surface2,BorderSizePixel=0,ZIndex=z+2},bg)
local pathLbl=c("TextLabel",{
Size=UDim2.new(1,-8,1,0),Position=UDim2.new(0,8,0,0),
BackgroundTransparency=1, Text="📂 /",
Font=Enum.Font.Gotham,TextSize=12,TextColor3=T.text,
TextXAlignment=Enum.TextXAlignment.Left,ZIndex=z+3},bread)
local flist=c("ScrollingFrame",{
Size=UDim2.new(1,-16,1,-50), Position=UDim2.new(0,8,0,40),
BackgroundTransparency=1,BorderSizePixel=0,
ScrollBarThickness=3,ScrollBarImageColor3=T.accent,
AutomaticCanvasSize=Enum.AutomaticSize.Y,
CanvasSize=UDim2.new(0,0,0,0),ZIndex=z+2},bg)
c("UIListLayout",{Padding=UDim.new(0,3)},flist)
local function renderDir(path)
viewPath=path; pathLbl.Text="📂 "..path
for _,ch in ipairs(flist:GetChildren()) do
if ch:IsA("GuiObject") then ch:Destroy() end
end
if path~="/" then
local segs=path:split("/"); table.remove(segs)
local par=table.concat(segs,"/"); if par=="" then par="/" end
local upb=c("TextButton",{Size=UDim2.new(1,0,0,34),
BackgroundColor3=T.surface2, Text="",BorderSizePixel=0,ZIndex=z+3},flist)
corner(upb,6)
c("TextLabel",{Size=UDim2.new(1,-10,1,0),Position=UDim2.new(0,10,0,0),
BackgroundTransparency=1, Text="⬆ ..",
Font=Enum.Font.Gotham,TextSize=13,TextColor3=T.accent2,
TextXAlignment=Enum.TextXAlignment.Left,ZIndex=z+4},upb)
hover(upb,T.surface2,T.surface)
upb.MouseButton1Click:Connect(function() renderDir(par) end)
end
local nd=FS[path]
if not nd then return end
for _,cp in ipairs(nd.children) do
local child=FS[cp]
if not child then continue end
local segs=cp:split("/"); local nm=segs[#segs]
local isDir=child.t=="dir"
local row=c("TextButton",{Size=UDim2.new(1,0,0,34),
BackgroundColor3=T.surface, Text="",BorderSizePixel=0,ZIndex=z+3},flist)
corner(row,6); stroke(row,T.border,1,.6)
hover(row,T.surface,T.surface2)
c("TextLabel",{Size=UDim2.new(1,-10,1,0),Position=UDim2.new(0,10,0,0),
BackgroundTransparency=1,
Text=(isDir and "📁 " or "📄 ")..nm,
Font=Enum.Font.Gotham,TextSize=13,
TextColor3=isDir and T.accent2 or T.text,
TextXAlignment=Enum.TextXAlignment.Left,ZIndex=z+4},row)
if not isDir then
c("TextLabel",{Size=UDim2.new(0,70,1,0),Position=UDim2.new(1,-75,0,0),
BackgroundTransparency=1, Text=#child.content.."B",
Font=Enum.Font.Code,TextSize=11,TextColor3=T.textMut, ZIndex=z+4},row)
end
row.MouseButton1Click:Connect(function()
if isDir then renderDir(cp) end
end)
end
end
renderDir("/")
kspawn("thunar", 12)
end
-- ── CALCULATOR ───────────────────────────────────────────────
openCalc = function()
if WINS["Calculator"] and WINS["Calculator"].Parent then
WINS["Calculator"].Visible=true; return
end
local win,body,z = newWindow(" 🧮 Calculator", 280, 400, 300, 100)
local bg=c("Frame",{Size=UDim2.new(1,0,1,0),BackgroundColor3=T.bg1,
BorderSizePixel=0,ZIndex=z+1},body)
local display=c("TextLabel",{
Size=UDim2.new(1,-16,0,70), Position=UDim2.new(0,8,0,8),
BackgroundColor3=T.surface, Text="0",
Font=Enum.Font.Code, TextSize=32, TextColor3=T.text,
TextXAlignment=Enum.TextXAlignment.Right,
ZIndex=z+2, BorderSizePixel=0},bg)
corner(display,8); pad(display,12)
local expr = ""
local lastResult = ""
local function updateDisplay()
display.Text = (expr == "" and "0") or expr
end
local buttons = {
{"C", "⌫", "%", "÷"},
{"7", "8", "9", "×"},
{"4", "5", "6", "-"},
{"1", "2", "3", "+"},
{"±", "0", ".", "="},
}
local grid = c("Frame",{
Size=UDim2.new(1,-16,1,-96), Position=UDim2.new(0,8,0,86),
BackgroundTransparency=1, ZIndex=z+1},bg)
for ri, row in ipairs(buttons) do
for ci, label in ipairs(row) do
local isOp = (label == "÷" or label == "×" or label == "-" or label == "+" or label == "=")
local isSpecial = (label == "C" or label == "⌫" or label == "%" or label == "±")
local btnColor = isOp and T.accent or isSpecial and T.surface2 or T.surface
local txtColor = isOp and Color3.new(1,1,1) or T.text
local btn = c("TextButton",{
Size = UDim2.new(0.25, -6, 0.2, -6),
Position = UDim2.new((ci-1)*0.25, 3, (ri-1)*0.2, 3),
BackgroundColor3 = btnColor,
Text = label,
Font = Enum.Font.GothamBold,
TextSize = 20,
TextColor3 = txtColor,
ZIndex = z+2,
BorderSizePixel = 0,
}, grid)
corner(btn, 8)
btn.MouseButton1Click:Connect(function()
if label == "C" then
expr = ""; updateDisplay()
elseif label == "⌫" then
expr = expr:sub(1, -2); updateDisplay()
elseif label == "±" then
if expr:sub(1,1) == "-" then
expr = expr:sub(2)
else
expr = "-" .. expr
end
updateDisplay()
elseif label == "=" then
local eval = expr:gsub("×","*"):gsub("÷","/")
local fn = loadstring("return " .. eval)
if fn then
local ok, result = pcall(fn)
if ok then
lastResult = tostring(result)
display.Text = lastResult
expr = lastResult
else
display.Text = "Error"
expr = ""
end
else
display.Text = "Error"
expr = ""
end
else
expr = expr .. label
updateDisplay()
end
end)
end
end
kspawn("gnome-calculator", 8)
end
-- ── SETTINGS ─────────────────────────────────────────────────
openSettings = function()
if WINS["Settings"] and WINS["Settings"].Parent then
WINS["Settings"].Visible=true; return
end
local win,body,z = newWindow(" ⚙ Settings", 420, 380, 250, 100)
local bg=c("Frame",{Size=UDim2.new(1,0,1,0),BackgroundColor3=T.surface,
BorderSizePixel=0,ZIndex=z+1},body)
c("TextLabel",{
Size=UDim2.new(1,-16,0,30), Position=UDim2.new(0,8,0,10),
BackgroundTransparency=1, Text="🎨 Theme Selection",
Font=Enum.Font.GothamBold, TextSize=16, TextColor3=T.text,
TextXAlignment=Enum.TextXAlignment.Left, ZIndex=z+2},bg)
local themeList = c("Frame",{
Size=UDim2.new(1,-16,0,280), Position=UDim2.new(0,8,0,48),
BackgroundTransparency=1, ZIndex=z+1},bg)
c("UIListLayout",{Padding=UDim.new(0,8)},themeList)
local themeData = {
{name="ArchLinux", desc="Pure Arch blue on black", icon="🏛️", preview={Color3.fromRGB(12,12,12), Color3.fromRGB(23,147,209)}},
{name="ArchClassic", desc="Classic terminal dark", icon="💻", preview={Color3.fromRGB(8,8,8), Color3.fromRGB(23,147,209)}},
{name="ArchMonokai", desc="Monokai Pro theme", icon="🎨", preview={Color3.fromRGB(39,40,34), Color3.fromRGB(102,217,239)}},
}
for _, td in ipairs(themeData) do
local row = c("Frame",{
Size=UDim2.new(1,0,0,75),
BackgroundColor3=T.surface2,
BorderSizePixel=0, ZIndex=z+2},themeList)
corner(row,10); stroke(row, T.border, 1, .4)
local preview = c("Frame",{
Size=UDim2.new(0,50,0,50), Position=UDim2.new(0,12,0.5,-25),
BackgroundColor3=td.preview[1], BorderSizePixel=0, ZIndex=z+3},row)
corner(preview,8); stroke(preview, td.preview[2], 2, 0)
c("TextLabel",{
Size=UDim2.new(0,30,0,30), Position=UDim2.new(0,10,0,10),
BackgroundTransparency=1, Text=td.icon,
TextSize=24, ZIndex=z+4},preview)
c("TextLabel",{
Size=UDim2.new(1,-160,0,22), Position=UDim2.new(0,74,0,12),
BackgroundTransparency=1, Text=td.name,
Font=Enum.Font.GothamBold, TextSize=16, TextColor3=T.text,
TextXAlignment=Enum.TextXAlignment.Left, ZIndex=z+3},row)
c("TextLabel",{
Size=UDim2.new(1,-160,0,18), Position=UDim2.new(0,74,0,36),
BackgroundTransparency=1, Text=td.desc,
Font=Enum.Font.Gotham, TextSize=12, TextColor3=T.textDim,
TextXAlignment=Enum.TextXAlignment.Left, ZIndex=z+3},row)
local active = (ActiveTheme == td.name)
local applyBtn = c("TextButton",{
Size=UDim2.new(0,80,0,30), Position=UDim2.new(1,-92,0.5,-15),
BackgroundColor3=active and T.green or T.accentDk,
Text=active and "✓ Active" or "Apply",
TextColor3=Color3.new(1,1,1),
Font=Enum.Font.GothamBold, TextSize=12,
ZIndex=z+3, BorderSizePixel=0},row)
corner(applyBtn,6)
applyBtn.MouseButton1Click:Connect(function()
if Themes[td.name] then
ActiveTheme = td.name
T = Themes[td.name]
notify("Settings", "Theme '"..td.name.."' applied!\nRestart for full effect.", 5, "🎨")
end
end)
end
end
-- ── SYSTEM MONITOR ─────────────────────────────────────────────
openSysMonitor = function()
if WINS["Monitor"] and WINS["Monitor"].Parent then
WINS["Monitor"].Visible=true; return
end
local win,body,z = newWindow(" 📈 System Monitor", 400, 360, 280, 120)
local bg=c("Frame",{Size=UDim2.new(1,0,1,0),BackgroundColor3=T.surface,
BorderSizePixel=0,ZIndex=z+1},body)
local labels = {}
local info = {
{lbl="OS:", key="os"},
{lbl="Kernel:", key="kern"},
{lbl="Architecture:", key="arch"},
{lbl="Uptime:", key="up"},
{lbl="Processes:", key="procs"},
{lbl="Memory:", key="ram"},
{lbl="User:", key="user"},
{lbl="Hostname:", key="host"},
{lbl="Shell:", key="shell"},
{lbl="Display:", key="display"},
}
for i, item in ipairs(info) do
c("TextLabel",{
Size=UDim2.new(0,120,0,26), Position=UDim2.new(0,12,0,10+(i-1)*30),
BackgroundTransparency=1, Text=item.lbl,
Font=Enum.Font.GothamBold, TextSize=13, TextColor3=T.accent2,
TextXAlignment=Enum.TextXAlignment.Left, ZIndex=z+2},bg)
labels[item.key] = c("TextLabel",{
Size=UDim2.new(1,-140,0,26), Position=UDim2.new(0,135,0,10+(i-1)*30),
BackgroundTransparency=1, Text="...",
Font=Enum.Font.Code, TextSize=12, TextColor3=T.text,
TextXAlignment=Enum.TextXAlignment.Left, ZIndex=z+2},bg)
end
task.spawn(function()
while win and win.Parent do
local up = os.clock()-Kernel.boot
local cnt=0; local mem=0
for _,p in pairs(Kernel.procs) do cnt+=1; mem+=p.mem end
labels.os.Text = "Arch Linux"
labels.kern.Text = "6.6.2-arch1-1"
labels.arch.Text = "x86_64"
labels.up.Text = string.format("%dd %dh %dm",
math.floor(up/86400), math.floor((up%86400)/3600), math.floor((up%3600)/60))
labels.procs.Text = tostring(cnt)
labels.ram.Text = string.format("%dM / 2048M (%d%%)", mem, math.floor(mem/2048*100))
labels.user.Text = player.Name:lower()
labels.host.Text = "archos-roblox"
labels.shell.Text = "bash 5.2.21"
labels.display.Text = player.DisplayName
task.wait(0.5)
end
end)
kspawn("gnome-system-monitor", 14)
end
-- ── DESKTOP ICONS ──────────────────────────────────────────────
local ICONS={
{lbl="Terminal", ico="⌨", fn=openTerminal, pos=UDim2.new(0,18,0,18)},
{lbl="Editor", ico="📝", fn=openNotepad, pos=UDim2.new(0,18,0,112)},
{lbl="htop", ico="📊", fn=openTaskManager, pos=UDim2.new(0,18,0,206)},
{lbl="Firefox", ico="🌐", fn=openBrowser, pos=UDim2.new(0,18,0,300)},
{lbl="Thunar", ico="📁", fn=openFiles, pos=UDim2.new(0,18,0,394)},
{lbl="Calc", ico="🧮",fn=openCalc, pos=UDim2.new(0,110,0,18)},
{lbl="Settings", ico="⚙", fn=openSettings, pos=UDim2.new(0,110,0,112)},
{lbl="Monitor", ico="📈", fn=openSysMonitor, pos=UDim2.new(0,110,0,206)},
}
for _,ic in ipairs(ICONS) do
local fr=c("Frame",{
Size=UDim2.new(0,76,0,82), Position=ic.pos,
BackgroundColor3=T.surface, BackgroundTransparency=0.3,
BorderSizePixel=0,ZIndex=2},desktop)
corner(fr,10); stroke(fr,T.border,1,.4)
c("TextLabel",{Size=UDim2.new(1,0,0,48),Position=UDim2.new(0,0,0,4),
BackgroundTransparency=1,Text=ic.ico,
Font=Enum.Font.GothamBold,TextSize=30,ZIndex=3},fr)
c("TextLabel",{Size=UDim2.new(1,-4,0,26),Position=UDim2.new(0,2,0,50),
BackgroundTransparency=1,Text=ic.lbl,
Font=Enum.Font.Gotham,TextSize=10,TextColor3=T.text,
TextWrapped=true,ZIndex=3},fr)
local btn=c("TextButton",{Size=UDim2.new(1,0,1,0),BackgroundTransparency=1,
Text="",ZIndex=4},fr)
btn.MouseEnter:Connect(function()
tw(fr,{BackgroundTransparency=0.1, BackgroundColor3=T.surface2})
end)
btn.MouseLeave:Connect(function()
tw(fr,{BackgroundTransparency=0.3, BackgroundColor3=T.surface})
end)
btn.MouseButton1Click:Connect(ic.fn)
end
-- ── TASKBAR ───────────────────────────────────────────────────
local taskbar=c("Frame",{
Size=UDim2.new(1,0,0,44), Position=UDim2.new(0,0,1,-44),
BackgroundColor3=T.bg1, BorderSizePixel=0,ZIndex=50},gui)
c("Frame",{Size=UDim2.new(1,0,0,1),
BackgroundColor3=T.accent,BackgroundTransparency=0.6,
BorderSizePixel=0,ZIndex=51},taskbar)
local startBtn=c("TextButton",{
Size=UDim2.new(0,100,0,32), Position=UDim2.new(0,6,0.5,-16),
BackgroundColor3=T.accentDk, Text="🏛 Arch",
TextColor3=Color3.new(1,1,1), Font=Enum.Font.GothamBold,TextSize=14,
ZIndex=51,BorderSizePixel=0},taskbar)
corner(startBtn,6)
local taskWinArea = c("Frame",{
Size=UDim2.new(0,520,0,32), Position=UDim2.new(0,116,0.5,-16),
BackgroundTransparency=1, ZIndex=51},taskbar)
c("UIListLayout",{
FillDirection=Enum.FillDirection.Horizontal,
Padding=UDim.new(0,4),
},taskWinArea)
refreshTaskbar = function()
for _,ch in ipairs(taskWinArea:GetChildren()) do
if ch:IsA("TextButton") then ch:Destroy() end
end
for title, _ in pairs(OpenWinNames) do
if WINS[title] and WINS[title].Parent then
local short = title:gsub("^%s+",""):sub(1,14)
local tb = c("TextButton",{
Size=UDim2.new(0,100,1,0),
BackgroundColor3=T.surface2,
Text=short, TextColor3=T.text,
Font=Enum.Font.Gotham, TextSize=11,
ZIndex=52, BorderSizePixel=0,
},taskWinArea)
corner(tb,5)
hover(tb, T.surface2, T.surface)
tb.MouseButton1Click:Connect(function()
local w = WINS[title]
if w then w.Visible=true; Z+=1; w.ZIndex=Z end
end)
end
end
end
-- Clock
local clockFrame=c("Frame",{
Size=UDim2.new(0,90,1,0), Position=UDim2.new(1,-96,0,0),
BackgroundTransparency=1,ZIndex=51},taskbar)
local clockMain=c("TextLabel",{
Size=UDim2.new(1,0,0,22),Position=UDim2.new(0,0,0,4),
BackgroundTransparency=1, Text=os.date("%H:%M"),
Font=Enum.Font.GothamBold,TextSize=16,TextColor3=T.text,
ZIndex=52},clockFrame)
local clockDate=c("TextLabel",{
Size=UDim2.new(1,0,0,14),Position=UDim2.new(0,0,0,24),
BackgroundTransparency=1, Text=os.date("%m/%d/%Y"),
Font=Enum.Font.Gotham,TextSize=11,TextColor3=T.textDim,
ZIndex=52},clockFrame)
task.spawn(function()
while gui and gui.Parent do
task.wait(1)
clockMain.Text=os.date("%H:%M")
clockDate.Text=os.date("%m/%d/%Y")
end
end)
-- Logo
c("TextLabel",{
Size=UDim2.new(0,80,1,0), Position=UDim2.new(0.5,-40,0,0),
BackgroundTransparency=1, Text="Arch Linux",
Font=Enum.Font.GothamBold,TextSize=12,TextColor3=T.textMut,
ZIndex=51},taskbar)
-- ── START MENU ─────────────────────────────────────────────────
local smOpen=false
local sm=c("Frame",{
Size=UDim2.new(0,300,0,480),
Position=UDim2.new(0,-310,1,-44),
BackgroundColor3=T.bg2,
BorderSizePixel=0,ZIndex=60, Visible=false},gui)
corner(sm,12); stroke(sm,T.accent,1,.4)
local smHead=c("Frame",{
Size=UDim2.new(1,0,0,80),
BackgroundColor3=T.accentDk,
BorderSizePixel=0,ZIndex=61},sm)
corner(smHead,12)
c("Frame",{Size=UDim2.new(1,0,0.5,0),Position=UDim2.new(0,0,0.5,0),
BackgroundColor3=T.accentDk,BorderSizePixel=0,ZIndex=61},smHead)
c("TextLabel",{
Size=UDim2.new(1,-12,0,32),Position=UDim2.new(0,12,0,12),
BackgroundTransparency=1, Text="🏛 Arch Linux",
Font=Enum.Font.GothamBold,TextSize=18,TextColor3=T.text,
TextXAlignment=Enum.TextXAlignment.Left,ZIndex=62},smHead)
c("TextLabel",{
Size=UDim2.new(1,-12,0,18),Position=UDim2.new(0,12,0,46),
BackgroundTransparency=1, Text=player.Name:lower().."@archos",
Font=Enum.Font.Code,TextSize=13,TextColor3=Color3.fromRGB(180,210,255),
TextXAlignment=Enum.TextXAlignment.Left,ZIndex=62},smHead)
local smApps={
{ico="⌨", lbl="Terminal", fn=openTerminal},
{ico="📝", lbl="Text Editor", fn=openNotepad},
{ico="📊", lbl="htop", fn=openTaskManager},
{ico="🌐", lbl="Firefox", fn=openBrowser},
{ico="📁", lbl="Thunar", fn=openFiles},
{ico="🧮", lbl="Calculator", fn=openCalc},
{ico="⚙", lbl="Settings", fn=openSettings},
{ico="📈", lbl="System Monitor", fn=openSysMonitor},
}
local smList=c("Frame",{
Size=UDim2.new(1,-12,0,310),
Position=UDim2.new(0,6,0,86),
BackgroundTransparency=1,ZIndex=61},sm)
c("UIListLayout",{Padding=UDim.new(0,3)},smList)
for _,app in ipairs(smApps) do
local row=c("TextButton",{
Size=UDim2.new(1,0,0,34),
BackgroundColor3=T.bg2,
Text="",BorderSizePixel=0,ZIndex=62},smList)
corner(row,7); hover(row,T.bg2,T.surface)
c("TextLabel",{Size=UDim2.new(0,36,1,0),Position=UDim2.new(0,8,0,0),
BackgroundTransparency=1,Text=app.ico,
Font=Enum.Font.GothamBold,TextSize=18,ZIndex=63},row)
c("TextLabel",{Size=UDim2.new(1,-50,1,0),Position=UDim2.new(0,46,0,0),
BackgroundTransparency=1,Text=app.lbl,
Font=Enum.Font.Gotham,TextSize=13,TextColor3=T.text,
TextXAlignment=Enum.TextXAlignment.Left,ZIndex=63},row)
row.MouseButton1Click:Connect(function()
smOpen=false
tw(sm,{Position=UDim2.new(0,-310,1,-44)},.2)
task.delay(.21,function() sm.Visible=false end)
app.fn()
end)
end
-- Separator
c("Frame",{Size=UDim2.new(1,-12,0,1),Position=UDim2.new(0,6,0,405),
BackgroundColor3=T.border,BackgroundTransparency=.4,
BorderSizePixel=0,ZIndex=61},sm)
-- Power button
local shutBtn=c("TextButton",{
Size=UDim2.new(1,-12,0,45), Position=UDim2.new(0,6,0,414),
BackgroundColor3=Color3.fromRGB(180,40,40),
Text="⏻ Shutdown",
TextColor3=Color3.new(1,1,1),
Font=Enum.Font.GothamBold,TextSize=14,
ZIndex=62,BorderSizePixel=0},sm)
corner(shutBtn,7)
hover(shutBtn,Color3.fromRGB(180,40,40),Color3.fromRGB(220,50,50))
shutBtn.MouseButton1Click:Connect(function()
smOpen=false; sm.Visible=false
local ov=c("Frame",{
Size=UDim2.new(1,0,1,0),
BackgroundColor3=Color3.new(0,0,0),
BackgroundTransparency=1, ZIndex=9999},gui)
tw(ov,{BackgroundTransparency=0},1)
task.delay(1,function()
c("TextLabel",{
Size=UDim2.new(1,0,0,60),Position=UDim2.new(0,0,0.40,0),
BackgroundTransparency=1, Text="Arch Linux",
Font=Enum.Font.GothamBold,TextSize=28,
TextColor3=T.accent,ZIndex=10000},ov)
c("TextLabel",{
Size=UDim2.new(1,0,0,40),Position=UDim2.new(0,0,0.48,0),
BackgroundTransparency=1, Text="System Shutdown",
Font=Enum.Font.Gotham,TextSize=18,
TextColor3=T.text,ZIndex=10000},ov)
c("TextLabel",{
Size=UDim2.new(1,0,0,30),Position=UDim2.new(0,0,0.56,0),
BackgroundTransparency=1, Text="I use Arch btw.",
Font=Enum.Font.Gotham,TextSize=14,
TextColor3=T.textDim,ZIndex=10000},ov)
end)
task.delay(4,function() gui:Destroy() end)
end)
-- Start menu logic
local function toggleSM()
smOpen=not smOpen
if smOpen then
sm.Visible=true
sm.Position=UDim2.new(0,-310,1,-44)
tw(sm,{Position=UDim2.new(0,6,1,-sm.Size.Y.Offset-44)},.22,Enum.EasingStyle.Back)
else
tw(sm,{Position=UDim2.new(0,-310,1,-44)},.18)
task.delay(.2,function() sm.Visible=false end)
end
end
startBtn.MouseButton1Click:Connect(toggleSM)
hover(startBtn, T.accentDk, T.accent)
desktop.InputBegan:Connect(function(i)
if smOpen and i.UserInputType==Enum.UserInputType.MouseButton1 then
smOpen=false
tw(sm,{Position=UDim2.new(0,-310,1,-44)},.18)
task.delay(.2,function() sm.Visible=false end)
end
end)
-- ── ARCH INSTALLER (archinstall) ──────────────────────────────
local INSTALL_CONFIG = {
keyboard = "us",
locale = "en_US.UTF-8",
timezone = "UTC",
hostname = "archos",
username = player.Name:lower(),
profile = "desktop",
theme = "ArchLinux",
}
local function runInstaller()
local installer = c("Frame", {
Size = UDim2.new(1, 0, 1, 0),
BackgroundColor3 = Color3.fromRGB(0, 0, 0),
ZIndex = 10000,
}, gui)
-- Terminal-style installer
local installScroll = c("ScrollingFrame", {
Size = UDim2.new(1, -40, 1, -40),
Position = UDim2.new(0, 20, 0, 20),
BackgroundColor3 = Color3.fromRGB(10, 10, 15),
BorderSizePixel = 0,
ScrollBarThickness = 4,
ScrollBarImageColor3 = Color3.fromRGB(137, 180, 250),
AutomaticCanvasSize = Enum.AutomaticSize.Y,
CanvasSize = UDim2.new(0, 0, 0, 0),
ZIndex = 10001,
}, installer)
c("UIListLayout", {Padding = UDim.new(0, 2)}, installScroll)
pad(installScroll, 12)
local function iout(txt, col)
local lbl = c("TextLabel", {
Size = UDim2.new(1, 0, 0, 0),
AutomaticSize = Enum.AutomaticSize.Y,
BackgroundTransparency = 1,
Text = txt,
Font = Enum.Font.Code,
TextSize = 13,
TextColor3 = col or Color3.fromRGB(205, 214, 244),
TextXAlignment = Enum.TextXAlignment.Left,
TextWrapped = true,
ZIndex = 10002,
}, installScroll)
task.defer(function()
installScroll.CanvasPosition = Vector2.new(0, installScroll.AbsoluteCanvasSize.Y)
end)
return lbl
end
-- Installation menu
local currentStep = 1
local steps = {
{name = "Keyboard layout", key = "keyboard", options = {"us", "uk", "de", "fr", "es"}},
{name = "Locale", key = "locale", options = {"en_US.UTF-8", "en_GB.UTF-8", "de_DE.UTF-8"}},
{name = "Timezone", key = "timezone", options = {"UTC", "America/New_York", "Europe/London", "Asia/Tokyo"}},
{name = "Hostname", key = "hostname", custom = true},
{name = "Desktop profile", key = "profile", options = {"minimal", "desktop", "xfce", "kde"}},
{name = "Theme", key = "theme", options = {"ArchLinux", "ArchClassic", "ArchMonokai"}},
}
local menuActive = true
local selectedOption = 1
local function drawMenu()
for _, ch in ipairs(installScroll:GetChildren()) do
if ch:IsA("TextLabel") then ch:Destroy() end
end
iout("", Color3.fromRGB(23, 147, 209))
iout(" -` ", Color3.fromRGB(23, 147, 209))
iout(" .o+` ", Color3.fromRGB(23, 147, 209))
iout(" `ooo/ ", Color3.fromRGB(23, 147, 209))
iout(" `+oooo: ", Color3.fromRGB(23, 147, 209))
iout(" `+oooooo: ", Color3.fromRGB(23, 147, 209))
iout(" -+oooooo+: ", Color3.fromRGB(23, 147, 209))
iout(" `/:-:++oooo+: ", Color3.fromRGB(23, 147, 209))
iout(" `/++++/+++++++: ", Color3.fromRGB(23, 147, 209))
iout(" `/++++++++++++++: ", Color3.fromRGB(23, 147, 209))
iout(" `/+++ooooooooooooo/` ", Color3.fromRGB(23, 147, 209))
iout(" ./ooosssso++osssssso+` ", Color3.fromRGB(23, 147, 209))
iout(" .oossssso-````/ossssss+` ", Color3.fromRGB(23, 147, 209))
iout(" -osssssso. :ssssssso. ", Color3.fromRGB(23, 147, 209))
iout(" :osssssss/ osssso+++. ", Color3.fromRGB(23, 147, 209))
iout(" /ossssssss/ +ssssooo/- ", Color3.fromRGB(23, 147, 209))
iout(" `/ossssso+/:- -:/+osssso+- ", Color3.fromRGB(23, 147, 209))
iout(" `+sso+:-` `.-/+oso: ", Color3.fromRGB(23, 147, 209))
iout(" `++:. `-/+/ ", Color3.fromRGB(23, 147, 209))
iout(" .` `/ ", Color3.fromRGB(23, 147, 209))
iout("", Color3.fromRGB(23, 147, 209))
iout("╔═══════════════════════════════════════════════════════╗", Color3.fromRGB(23, 147, 209))
iout("║ ║", Color3.fromRGB(23, 147, 209))
iout("║ ARCH LINUX INSTALLER ║", Color3.fromRGB(255, 255, 255))
iout("║ (archinstall) ║", Color3.fromRGB(255, 255, 255))
iout("║ ║", Color3.fromRGB(23, 147, 209))
iout("╚═══════════════════════════════════════════════════════╝", Color3.fromRGB(23, 147, 209))
iout("", Color3.fromRGB(255, 255, 255))
iout("Use ↑/↓ arrows to navigate, ENTER to select, ESC to skip", Color3.fromRGB(180, 180, 180))
iout("", Color3.fromRGB(255, 255, 255))
if currentStep <= #steps then
local step = steps[currentStep]
iout(">>> " .. step.name, Color3.fromRGB(23, 147, 209))
iout("", Color3.fromRGB(255, 255, 255))
if step.custom then
iout("Current: " .. INSTALL_CONFIG[step.key], Color3.fromRGB(0, 255, 0))
iout("[Press ENTER to keep current value]", Color3.fromRGB(100, 100, 100))
else
for i, opt in ipairs(step.options) do
local prefix = (i == selectedOption) and " → " or " "
local color = (i == selectedOption) and Color3.fromRGB(23, 147, 209) or Color3.fromRGB(180, 180, 180)
iout(prefix .. opt, color)
end
end
else
iout("╔═══════════════════════════════════════════════════════╗", Color3.fromRGB(23, 147, 209))
iout("║ INSTALLATION SUMMARY ║", Color3.fromRGB(255, 255, 255))
iout("╚═══════════════════════════════════════════════════════╝", Color3.fromRGB(23, 147, 209))
iout("", Color3.fromRGB(255, 255, 255))
iout("Keyboard: " .. INSTALL_CONFIG.keyboard, Color3.fromRGB(0, 255, 0))
iout("Locale: " .. INSTALL_CONFIG.locale, Color3.fromRGB(0, 255, 0))
iout("Timezone: " .. INSTALL_CONFIG.timezone, Color3.fromRGB(0, 255, 0))
iout("Hostname: " .. INSTALL_CONFIG.hostname, Color3.fromRGB(0, 255, 0))
iout("Profile: " .. INSTALL_CONFIG.profile, Color3.fromRGB(0, 255, 0))
iout("Theme: " .. INSTALL_CONFIG.theme, Color3.fromRGB(0, 255, 0))
iout("", Color3.fromRGB(255, 255, 255))
iout(" → Press ENTER to begin installation", Color3.fromRGB(23, 147, 209))
end
end
drawMenu()
local inputConn
inputConn = UIS.InputBegan:Connect(function(input, gpe)
if gpe or not menuActive then return end
if currentStep <= #steps then
local step = steps[currentStep]
if input.KeyCode == Enum.KeyCode.Up then
if not step.custom then
selectedOption = math.max(1, selectedOption - 1)
drawMenu()
end
elseif input.KeyCode == Enum.KeyCode.Down then
if not step.custom then
selectedOption = math.min(#step.options, selectedOption + 1)
drawMenu()
end
elseif input.KeyCode == Enum.KeyCode.Return then
if not step.custom then
INSTALL_CONFIG[step.key] = step.options[selectedOption]
end
currentStep += 1
selectedOption = 1
drawMenu()
elseif input.KeyCode == Enum.KeyCode.Escape then
currentStep += 1
selectedOption = 1
drawMenu()
end
else
if input.KeyCode == Enum.KeyCode.Return then
menuActive = false
inputConn:Disconnect()
-- Apply selected theme
if Themes[INSTALL_CONFIG.theme] then
T = Themes[INSTALL_CONFIG.theme]
ActiveTheme = INSTALL_CONFIG.theme
end
-- Run installation
for _, ch in ipairs(installScroll:GetChildren()) do
if ch:IsA("TextLabel") then ch:Destroy() end
end
iout("", Color3.fromRGB(23, 147, 209))
iout("╔═══════════════════════════════════════════════════════╗", Color3.fromRGB(23, 147, 209))
iout("║ STARTING INSTALLATION... ║", Color3.fromRGB(255, 255, 255))
iout("╚═══════════════════════════════════════════════════════╝", Color3.fromRGB(23, 147, 209))
iout("", Color3.fromRGB(255, 255, 255))
local installSteps = {
"[1/12] Partitioning disk...",
"[2/12] Formatting partitions...",
"[3/12] Mounting file systems...",
"[4/12] Installing base system...",
"[5/12] Installing kernel...",
"[6/12] Configuring locale (" .. INSTALL_CONFIG.locale .. ")...",
"[7/12] Setting timezone (" .. INSTALL_CONFIG.timezone .. ")...",
"[8/12] Setting hostname (" .. INSTALL_CONFIG.hostname .. ")...",
"[9/12] Installing " .. INSTALL_CONFIG.profile .. " profile...",
"[10/12] Configuring bootloader...",
"[11/12] Applying " .. INSTALL_CONFIG.theme .. " theme...",
"[12/12] Finalizing installation...",
}
task.spawn(function()
for i, step in ipairs(installSteps) do
iout(step, Color3.fromRGB(0, 255, 0))
-- Progress bar
local pct = math.floor((i / #installSteps) * 100)
local barFilled = math.floor(pct / 2)
local bar = "["..string.rep("█", barFilled)..string.rep("░", 50 - barFilled).."] "..pct.."%"
iout(bar, Color3.fromRGB(23, 147, 209))
iout("", Color3.fromRGB(255, 255, 255))
task.wait(math.random(30, 80) / 100)
end
task.wait(0.5)
iout("╔═══════════════════════════════════════════════════════╗", Color3.fromRGB(0, 255, 0))
iout("║ INSTALLATION COMPLETE! ║", Color3.fromRGB(0, 255, 0))
iout("╚═══════════════════════════════════════════════════════╝", Color3.fromRGB(0, 255, 0))
iout("", Color3.fromRGB(255, 255, 255))
iout("Arch Linux has been successfully installed.", Color3.fromRGB(23, 147, 209))
iout("Your system will now boot...", Color3.fromRGB(23, 147, 209))
iout("", Color3.fromRGB(255, 255, 255))
iout("Welcome to Arch Linux. I use Arch btw.", Color3.fromRGB(255, 255, 0))
task.wait(2)
-- Fade out installer
local function fadeOut(obj)
if obj:IsA("TextLabel") or obj:IsA("Frame") then
tw(obj, {BackgroundTransparency = 1}, 0.5)
end
if obj:IsA("TextLabel") then
tw(obj, {TextTransparency = 1}, 0.5)
end
for _, ch in ipairs(obj:GetChildren()) do fadeOut(ch) end
end
fadeOut(installer)
task.wait(0.6)
installer:Destroy()
-- Start boot sequence
runBootSequence()
end)
end
end
end)
end
-- ── BOOT SCREEN ─────────────────────────────────────────────
function runBootSequence()
local boot=c("Frame",{
Size=UDim2.new(1,0,1,0),
BackgroundColor3=Color3.fromRGB(0,0,0),
ZIndex=9000},gui)
local bootLogo=c("TextLabel",{
Size=UDim2.new(1,0,0,100), Position=UDim2.new(0,0,0.32,0),
BackgroundTransparency=1, Text="Arch Linux",
Font=Enum.Font.GothamBold,TextSize=64,
TextColor3=T.accent,ZIndex=9001},boot)
local bootSub=c("TextLabel",{
Size=UDim2.new(1,0,0,28), Position=UDim2.new(0,0,0.32,100),
BackgroundTransparency=1, Text="v3.0 — I use Arch btw",
Font=Enum.Font.Gotham,TextSize=18,
TextColor3=T.textDim,ZIndex=9001},boot)
local pbBg=c("Frame",{
Size=UDim2.new(0,400,0,4), Position=UDim2.new(0.5,-200,0.70,0),
BackgroundColor3=T.surface2, BorderSizePixel=0,ZIndex=9001},boot)
corner(pbBg,2)
local pbFill=c("Frame",{
Size=UDim2.new(0,0,1,0),
BackgroundColor3=T.accent,
BorderSizePixel=0,ZIndex=9002},pbBg)
corner(pbFill,2)
local pbStatus=c("TextLabel",{
Size=UDim2.new(0,400,0,22), Position=UDim2.new(0.5,-200,0.70,12),
BackgroundTransparency=1, Text="Loading...",
Font=Enum.Font.Code,TextSize=13,
TextColor3=T.textDim,ZIndex=9001},boot)
local steps={
{t="[ 0.000000] Booting Linux 6.6.2-arch1-1...", p=0.10},
{t="[ 0.123456] Initializing kernel modules...", p=0.22},
{t="[ 0.245678] Mounting file systems...", p=0.34},
{t="[ 0.367890] Starting systemd...", p=0.46},
{t="[ 0.489012] Loading user profile...", p=0.58},
{t="[ 0.610234] Applying theme: "..ActiveTheme.."...", p=0.70},
{t="[ 0.732456] Starting window manager...", p=0.82},
{t="[ 0.854678] System ready. Welcome to Arch!", p=1.00},
}
task.spawn(function()
for _,s in ipairs(steps) do
pbStatus.Text=s.t
tw(pbFill,{Size=UDim2.new(s.p,0,1,0)},.35)
task.wait(.32)
end
task.wait(.4)
local function fadeOut(obj)
if obj:IsA("TextLabel") then tw(obj,{TextTransparency=1},.5) end
if obj:IsA("Frame") or obj:IsA("TextLabel") then
tw(obj,{BackgroundTransparency=1},.5)
end
for _,ch in ipairs(obj:GetChildren()) do fadeOut(ch) end
end
fadeOut(bootLogo); fadeOut(bootSub)
fadeOut(pbBg); fadeOut(pbStatus)
task.wait(.3)
tw(boot,{BackgroundTransparency=1},.5)
task.wait(.55)
boot:Destroy()
task.delay(0.5, function()
notify("Welcome!", "Arch Linux loaded successfully.\n"..player.DisplayName..", I use Arch btw.", 6, "🏛️")
end)
end)
end
-- ── START INSTALLATION ─────────────────────────────────────────
-- Run the installer first, which will then boot the OS
runInstaller()THIS IS A REPLICA FOR ARCH LINUX BUT IN ROBLOX

Universal