The HagalazOS taskbar is a fixed horizontal strip docked to the bottom of the browser viewport. It provides one-click access to any app whose descriptor setsDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/linuxfandudeguy/HagalazOS/llms.txt
Use this file to discover all available pages before exploring further.
taskbar: true, letting users open apps or restore minimized windows without needing to find the corresponding desktop icon.
Element structure
The taskbar is a singlediv with both an id and a class:
os.html and remains empty until window.onload fires in script.js, at which point the boot loop appends one <button> per qualifying app.
CSS layout
The taskbar’s appearance is defined instyle.css:
position: fixed— the taskbar stays at the bottom of the viewport regardless of scrolling or window positions.height: 48px— this value is deliberately mirrored in the maximized-window height:calc(100% - 48px), so a maximized window never obscures the taskbar.- Dark
#1f1f1fbackground contrasts with the desktop wallpaper above it. - Buttons are borderless with white text at
font-size: 20px— sized to display a Bootstrap Icon glyph clearly.
Button creation
Duringwindow.onload, the boot loop checks each app descriptor for app.taskbar. Only entries where this is truthy receive a button:
"bi-") is wrapped in <i class="bi {icon}">, while any other string is inserted as raw text.
Click behaviour
Every taskbar button callsopenWindow(id, htmlPath, title, fallbackUrl). Because openWindow checks for an existing DOM element with the given id before creating anything new, clicking a taskbar button has three possible outcomes:
| Window state | Result |
|---|---|
| Not open | A new 800 × 600 window is created and appended to #windows |
| Open, visible | z-index is incremented — the window is brought to the front |
Minimized (display: none) | Window is shown (display: block), removed from minimizedWindows, and brought to the front |
There is no visual indicator on the taskbar button showing whether its window is currently open or minimized. All three states are handled transparently by a single
openWindow call.Registering an app with taskbar support
Add a descriptor towindow.Apps[] from your app’s JS file before window.onload fires. Set taskbar: true to include a button:
window.Apps = window.Apps || [] ensures the array exists even if this script happens to load before other app scripts that initialize it.
Interaction with maximized windows
WhenmaximizeWindow(btn) is called, the window expands to:
48px subtraction exactly matches the taskbar height, ensuring the maximized window’s lower edge sits flush against the top of the taskbar — the same behaviour as a classic desktop OS window manager.