Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/AhmedSaadi0/NibrasShell/llms.txt

Use this file to discover all available pages before exploring further.

The Top Bar is a PanelWindow anchored across the full width of each monitor, sitting flush at the top of the screen. It is defined in bars/Topbar.qml and renders four main sections: a left group containing the system tray, network speed indicator, and active window title; a spacer that pushes content to both edges; and a right group containing compact system monitors and the workspace strip. Its height is driven by theme.dimensions.barHeight, so it scales automatically when you switch themes.

What the top bar shows

The System Tray sits at the far left and displays icons for running tray applications. Each icon is rendered with a drop shadow via the Shadow effect layer.
The Network Speed Indicator shows current upload and download throughput next to the system tray. It updates in real time and collapses gracefully on narrow layouts.
The Active Window widget displays the title of the currently focused window. You can control how wide this widget grows using the topBarActiveWindowMinWidth and topBarActiveWindowMaxWidth config keys.
The Monitors widget shows a compact row of CPU usage, RAM usage, temperature, and battery level. It lives inside a Flickable container with a maximum width of 300 px, and scrolls horizontally if the content overflows.
The Workspaces strip renders one button per Hyprland workspace. When you have more workspaces than can fit, the strip scrolls horizontally — you can scroll it with the mouse wheel or by dragging. The maximum visible width is 400 px.

Configuration

All top-bar options live in your user config file. The relevant keys are:
Config keyTypeDescription
topBarActiveWindowMinWidthintMinimum pixel width of the active window title widget.
topBarActiveWindowMaxWidthintMaximum pixel width of the active window title widget.
dynamicWorkspacesboolWhen true, the workspace strip only shows workspaces that currently have open windows, plus one empty slot.
activeWorkspacesIconsarrayArray of 10 Nerd Font icon strings for active (focused) workspaces, one per workspace slot.
inActiveWorkspacesIconsarrayArray of 10 Nerd Font icon strings for inactive workspaces.

Example

{
  "topBarActiveWindowMinWidth": 200,
  "topBarActiveWindowMaxWidth": 400,
  "dynamicWorkspaces": true,
  "activeWorkspacesIcons": ["󰋜", "󰿣", "󰂔", "󰉋", "󱙋", "󰭹", "󱍙", "󰺵", "󱋡", "󰙨"],
  "inActiveWorkspacesIcons": ["", "󰿤", "󰂕", "󰉖", "󱙌", "󰻞", "󱍚", "󰺶", "󱋢", "󰤑"]
}

Layout behaviour

  • The bar adapts to the available screen width; all child widgets use Layout.preferredWidth with animated transitions so resizing is smooth.
  • Workspace buttons support animated scrolling via a WheelHandler attached to the horizontal Flickable.
  • Width changes on the monitors widget animate with an OutBack easing curve over 450 ms, giving a subtle spring feel when widgets appear or disappear.
Set dynamicWorkspaces: true to keep the workspace strip compact — only occupied workspaces and one spare slot will be shown, reducing visual clutter on large workspace counts.

Build docs developers (and LLMs) love