https://github.com/glzr-io/zebar
Zebar is a tool for creating customizable and cross-platform taskbars, desktop widgets, and popups.
https://github.com/glzr-io/zebar
bar desktop dock linux macos ricing statusbar taskbar unixporn widget windows
Last synced: 3 months ago
JSON representation
Zebar is a tool for creating customizable and cross-platform taskbars, desktop widgets, and popups.
- Host: GitHub
- URL: https://github.com/glzr-io/zebar
- Owner: glzr-io
- License: gpl-3.0
- Created: 2023-06-30T11:37:12.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2026-03-14T13:52:37.000Z (3 months ago)
- Last Synced: 2026-03-15T00:39:18.192Z (3 months ago)
- Topics: bar, desktop, dock, linux, macos, ricing, statusbar, taskbar, unixporn, widget, windows
- Language: Rust
- Homepage:
- Size: 3.75 MB
- Stars: 2,741
- Watchers: 7
- Forks: 110
- Open Issues: 61
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome - glzr-io/zebar - platform taskbars, desktop widgets, and popups. (Windows)
- awesome-komorebi - zebar - A tool for creating customizable and cross-platform taskbars, desktop widgets, and popups (Status Bars)
README
# Zebar 🦓
**Zebar lets you create customizable and cross-platform desktop widgets.**
[![Discord invite][discord-badge]][discord-link]
[![Good first issues][issues-badge]][issues-link]
[Installation](#%EF%B8%8F-installation) •
[Intro](#-intro-to-zebar) •
[FAQ](#-faq) •
[Contributing ↗](https://github.com/glzr-io/zebar/blob/main/CONTRIBUTING.md)

## ⚙️ Installation
**Downloads for Windows, MacOS, and Linux are available in the [latest release](https://github.com/glzr-io/zebar/releases)**.
For building locally, follow the instructions [here](https://github.com/glzr-io/zebar/blob/main/CONTRIBUTING.md).
## 🚀 Quick start
### Accessing Zebar GUI
Click the Zebar icon in your system tray to open the GUI interface.
### Installing widgets
Navigate to the marketplace within the GUI to browse and install widget packs.
### Auto-starting widgets
Widgets can be set to run on startup by right clicking the Zebar tray icon then going to `Widget packs` -> `` -> `` -> `Run on startup` and clicking the widget name to check it.
## 🌟 Intro to Zebar
Widgets are powered by native webviews (_similar_ to Electron, but more lightweight).
## Creating your own widgets
Zebar looks within the `~/.glzr/zebar` directory for directories containing a `zpack.json` file. Each `zpack.json` file defines a widget pack. Each widget pack can contain multiple widgets, each defined individually within the `zpack.json` file.
For example, a widget pack config could be located at `~/.glzr/zebar/example-widget/zpack.json`, which would create a widget pack with an id of `example-widget`.
Zebar only looks for `zpack.json` files one level deep within the `~/.glzr/zebar` directory, so `~/glzr/zebar/example-widget/widget-1/zpack.json` is invalid.
In the `My widgets` tab of the Zebar GUI, you can click `Create new pack` to generate a widget pack scaffold with the given name and description.
Within each widget pack, in the `Widgets` section you can click `Add widget` to create a new widget within that pack. When creating a new widget you can pick between some templates to get you started.
> Apart from the React buildless template, other available templates require you to have Node.js and a package manager (npm/pnpm) installed. For these templates, run the build command (e.g. pnpm build) from the widget directory after any source code changes.
### Modifying marketplace widgets
To edit a marketplace widget without fear of your changes being overridden, you should copy the folder from the marketplace directory (located at `%AppData%/zebar/downloads/`) to your own Zebar directory (located at `~/.glzr/zebar/`).
> **DO NOT** re-publish other peoples widgets without permission.
### Advanced Customization
#### What is the zpack.json file?
Widgets are stored in packs, with each pack being defined by a `zpack.json` file. Each pack can contain multiple widgets, each individually defined within `zpack.json`.
Widgets consist of an HTML file, and any surrounding assets (e.g. CSS, JS, images, etc.).
The schema for `zpack.json` can be found [here](https://github.com/glzr-io/zebar/blob/main/resources/zpack-schema.json) although all options can also be configured via the GUI.
#### Querying system information
Zebar exposes various system information (referred to as "providers") which can be used and displayed by your frontend. This includes stats like CPU usage, battery info, various window manager integrations, and lots more. See [Providers](#-providers) for a list of available providers.
## ❓ FAQ
**Q: Help! On Windows, Zebar is failing to start?**
In some cases, updating to the latest Microsoft Webview2 version is needed ([standalone download](https://developer.microsoft.com/en-us/microsoft-edge/webview2/?form=MA13LH#download)). Run the "Evergreen Standalone Installer" as administrator.
## 🧩 Providers
Through the `zebar` NPM package, Zebar exposes various system information via reactive "providers". Providers are a collection of functions and variables that can change over time.
- [audio](#audio)
- [battery](#battery)
- [cpu](#cpu)
- [date](#date)
- [disk](#disk)
- [glazewm](#glazewm)
- [host](#host)
- [ip](#ip)
- [keyboard](#keyboard)
- [komorebi](#komorebi)
- [media](#media)
- [memory](#memory)
- [network](#network)
- [systray](#systray)
- [weather](#weather)
### Audio
#### Config
No config options.
#### Outputs
| Variable | Description | Return type | Supported OS |
| ------------------- | ----------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `defaultPlaybackDevice` | Default audio playback device. | `AudioDevice \| null` |
|
| `defaultRecordingDevice` | Default audio recording device. | `AudioDevice \| null` |
|
| `playbackDevices` | All audio playback devices. | `AudioDevice[]` |
|
| `recordingDevices` | All audio recording devices. | `AudioDevice[]` |
|
| `allDevices` | All audio devices (both playback and recording). | `AudioDevice[]` |
|
| Function | Description | Return type | Supported OS |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `setVolume` | Sets the volume of an audio device. Changes the volume of the default playback device, unless `SetVolumeOptions.deviceId` is specified.
**Parameters:**
- `volume`: _`number`_ Volume as a % of maximum volume. Returned value is between `0` and `100`.
- `options`: _`SetVolumeOptions \| undefined`_ Additional options.
| `Promise` |
|
#### Related types
#### `AudioDevice`
| Variable | Description | Return type |
| ------------------ | ----------------------------- | ----------------------- |
| `deviceId` | Device ID. | `string` |
| `name` | Friendly display name of device. | `string` |
| `volume` | Volume as a % of maximum volume. Returned value is between `0` and `100`. | `number` |
| `type` | Type of the device. | `'playback' \| 'recording'` |
| `isDefaultPlayback` | `true` if the device is selected as the default playback device.| `boolean` |
| `isDefaultRecording` | `true` if the device is selected as the default recording device.| `boolean` |
#### `SetVolumeOptions`
| Variable | Description | Return type |
| ------------------ | ----------------------------- | ----------------------- |
| `deviceId` | Device ID to set the volume of. | `string \| undefined` |
### Battery
#### Config
| Option | Description | Option type | Default value |
| ------------------ | -------------------------------------------------- | ----------- | ------------- |
| `refreshInterval` | How often this provider refreshes in milliseconds. | `number` | `5000` |
#### Outputs
| Variable | Description | Return type | Supported OS |
| ------------------ | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `chargePercent` | Battery charge as a percentage of maximum capacity (aka. 'state of charge'). Returned value is between `0` to `100`. | `number` | 

|
| `healthPercent` | Condition of the battery as a percentage of perfect health. Returned value is between `0` to `100`. | `number` | 

|
| `cycleCount` | Number of charge/discharge cycles. | `number` | 

|
| `state` | State of the battery. | `'discharging' \| 'charging' \| 'full' \| 'empty' \| 'unknown'` | 

|
| `isCharging` | Whether the battery is in a `charging` state. | `boolean` | 

|
| `timeTillEmpty` | Approximate time in milliseconds till battery is empty. | `number \| null` | 

|
| `timeTillFull` | Approximate time in milliseconds till battery is fully charged. | `number \| null` | 

|
| `powerConsumption` | Battery power consumption in watts. | `number` | 

|
| `voltage` | Battery voltage. | `number \| null` | 

|
### CPU
#### Config
| Option | Description | Option type | Default value |
| ------------------ | -------------------------------------------------- | ----------- | ------------- |
| `refreshInterval` | How often this provider refreshes in milliseconds. | `number` | `5000` |
#### Outputs
| Variable | Description | Return type | Supported OS |
| ------------------- | ----------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `frequency` | TODO | `number` | 

|
| `usage` | TODO | `number` | 

|
| `logicalCoreCount` | TODO | `number` | 

|
| `physicalCoreCount` | TODO | `number` | 

|
| `vendor` | TODO | `string` | 

|
## Date
#### Config
| Option | Description | Option type | Default value |
| ------------------ | -------------------------------------------------- | ----------- | ------------- |
| `formatting` | Formatting of the current date into a custom string format. Affects the output of [`formatted`](#outputs-2).
Refer to [table of tokens](https://moment.github.io/luxon/#/formatting?id=table-of-tokens) for available date/time tokens.
**Examples:**
- `'yyyy LLL dd'` -> `2023 Feb 13`
- `"HH 'hours and' mm 'minutes'"` -> `20 hours and 55 minutes` | `string` | `EEE d MMM t` |
| `timezone` | Either a UTC offset (eg. `UTC+8`) or an IANA timezone (eg. `America/New_York`). Affects the output of [`formatted`](#outputs-2).
A full list of available IANA timezones can be found [here](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List).| `string` | `local` |
| `locale` | An ISO-639-1 locale, which is either a 2-letter language code (eg. `en`) or a 4-letter language + country code (eg. `en-gb`). Affects the output of [`formatted`](#outputs-2).
A full list of ISO-639-1 locales can be found [here](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes#Table). | `string` | |
| `refreshInterval` | How often this provider refreshes in milliseconds. | `number` | `1000` |
#### Outputs
| Variable | Description | Return type | Supported OS |
| -------- | ------------------------------------------------------------------------------------------------------------------------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `formatted` | Current date/time as a formatted string. | `string` | 

|
| `new` | Current date/time as a JavaScript `Date` object. Uses `new Date()` under the hood. | `Date` | 

|
| `now` | Current date/time as milliseconds since epoch. Uses `Date.now()` under the hood. | `number` | 

|
| `iso` | Current date/time as an ISO-8601 string (eg. `2017-04-22T20:47:05.335-04:00`). Uses `date.toISOString()` under the hood. | `string` | 

|
### Disk
#### Config
| Option | Description | Option type | Default value |
| ------------------ | -------------------------------------------------- | ----------- | ------------- |
| `refreshInterval` | How often this provider refreshes in milliseconds. | `number` | `60000` |
#### Outputs
| Variable | Description | Return type | Supported OS |
| ------------------- | ----------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `disks` | Available disks on the system. | `Disk[]` | 

|
#### Related types
#### `Disk`
| Variable | Description | Return type |
| ------------------ | ----------------------------- | ----------------------- |
| `name` | Disk name. | `string \| null` |
| `fileSystem` | File system used on the disk (e.g. `EXT4`, `NTFS`). | `string` |
| `mountPoint` | Mount point of the disk (e.g. `/`, `C:\\`). | `string` |
| `totalSpace` | Total disk size. | `DataSizeMeasure` |
| `availableSpace` | Available disk size. | `DataSizeMeasure` |
| `isRemovable` | Whether the disk is removable. | `boolean` |
| `driveType` | Type of disk (e.g. `HDD`, `SSD`). | `string` |
#### `DataSizeMeasure`
| Variable | Description | Return type |
| ---------- | --------------------------------------------------------------------------- | ----------- |
| `bytes` | Raw byte value. | `number` |
| `siValue` | Bytes converted in according to the SI standard. 1000 bytes in a kilobyte. | `number` |
| `siUnit` | Unit of the converted bytes in according to the SI standard. KB, MB, ... | `string` |
| `iecValue` | Bytes converted in according to the IEC standard. 1024 bytes in a kibibyte. | `number` |
| `iecUnit` | Unit of the converted bytes in according to the IEC standard. KiB, MiB, ... | `string` |
### GlazeWM
#### Config
No config options.
#### Outputs
| Variable | Description | Return type | Supported OS |
| --------------------- | ----------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `displayedWorkspace` | Workspace displayed on the current monitor. | `Workspace` |
|
| `focusedWorkspace` | Workspace that currently has focus (on any monitor). | `Workspace` |
|
| `currentWorkspaces` | Workspaces on the current monitor. | `Workspace[]` |
|
| `allWorkspaces` | Workspaces across all monitors. | `Workspace[]` |
|
| `allMonitors` | All monitors. | `Monitor[]` |
|
| `allWindows` | All windows. | `Window[]` |
|
| `focusedMonitor` | Monitor that currently has focus. | `Monitor` |
|
| `currentMonitor` | Monitor that is nearest to this Zebar widget. | `Monitor` |
|
| `focusedContainer` | Container that currently has focus (on any monitor). | `Container` |
|
| `tilingDirection` | Tiling direction of the focused container. | `TilingDirection` |
|
| `bindingModes` | Active binding modes. | `BindingModeConfig[]` |
|
| `isPaused` | Whether the WM is paused. | `boolean` |
|
| Function | Description | Return type | Supported OS |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `runCommand` | Invokes a WM command.
**Examples:**
- `runCommand("focus --workspace 1")`
- `runCommand("set-floating", containerId)`
**Parameters:**
- `command`: _`string`_ WM command to run (e.g. `"focus --workspace 1"`).
- `subjectContainerId`: _`string \| undefined`_ (Optional) ID of container to use as subject. If not provided, this defaults to the currently focused container. | `string` |
|
## Host
#### Config
| Option | Description | Option type | Default value |
| ------------------ | -------------------------------------------------- | ----------- | ------------- |
| `refreshInterval` | How often this provider refreshes in milliseconds. | `number` | `60000` |
#### Outputs
| Variable | Description | Return type | Supported OS |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `hostname` | Name used to identify the device in various network-related activities. | `string \| null` | 

|
| `osName` | Name of the operating system. This is `Darwin` on MacOS, `Windows` on Windows, or the Linux distro name retrieved from either `/etc/os-release` or `/etc/lsb-release` (eg. `Debian GNU/Linux` on Debian). | `string \| null` | 

|
| `osVersion` | Operating system version. This is the version number on MacOS (eg. `13.2.1`), the major version + build number on Windows (eg. `11 22000`), or the Linux distro version retrieved from either `/etc/os-release` or `/etc/lsb-release` (eg. `9` on Debian 9). | `string \| null` | 

|
| `friendlyOsVersion` | Friendly name of operating system version (eg. `MacOS 13.2.1`, `Windows 10 Pro`, `Linux Debian GNU/Linux 9`). | `string \| null` | 

|
| `bootTime` | Time when the system booted since UNIX epoch in milliseconds (eg. `1699452379304`). | `string` | 

|
| `uptime` | Time in milliseconds since boot. | `string` | 

|
### IP
#### Config
| Option | Description | Option type | Default value |
| ------------------ | -------------------------------------------------- | ----------- | ------------- |
| `refreshInterval` | How often this provider refreshes in milliseconds. | `number` | `3600000` |
#### Outputs
| Variable | Description | Return type | Supported OS |
| ----------------- | ----------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `address` | TODO | `string` | 

|
| `approxCity` | TODO | `string` | 

|
| `approxCountry` | TODO | `string` | 

|
| `approxLatitude` | TODO | `number` | 

|
| `approxLongitude` | TODO | `number` | 

|
### Keyboard
#### Config
| Option | Description | Option type | Default value |
| ------------------ | -------------------------------------------------- | ----------- | ------------- |
| `refreshInterval` | How often this provider refreshes in milliseconds. | `number` | `5000` |
#### Outputs
| Variable | Description | Return type | Supported OS |
| ------------- | ------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `layout` | Current keyboard layout, for example 'en-US'. | `string` | 
### Komorebi
#### Config
No config options.
#### Outputs
| Variable | Description | Return type | Supported OS |
| --------------------- | ----------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `displayedWorkspace` | Workspace displayed on the current monitor. | `KomorebiWorkspace` |
|
| `focusedWorkspace` | Workspace that currently has focus (on any monitor). | `KomorebiWorkspace` |
|
| `currentWorkspaces` | Workspaces on the current monitor. | `KomorebiWorkspace[]` |
|
| `allWorkspaces` | Workspaces across all monitors. | `KomorebiWorkspace[]` |
|
| `allMonitors` | All monitors. | `KomorebiMonitor[]` |
|
| `focusedMonitor` | Monitor that currently has focus. | `KomorebiMonitor` |
|
| `currentMonitor` | Monitor that is nearest to this Zebar widget. | `KomorebiMonitor` |
|
### Media
#### Config
No config options.
#### Outputs
| Variable | Description | Return type | Supported OS |
| ------------------- | ----------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `currentSession` | Currently playing media session. | `MediaSession \| null` |
|
| `allSessions` | All active media sessions. | `MediaSession[]` |
|
| Function | Description | Return type | Supported OS |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `play` | Plays the media session. Affects the current media session, unless `MediaControlOptions.sessionId` is specified.
**Parameters:**
`options`: _`MediaControlOptions \| undefined`_ Additional options.
| `Promise` |
|
| `pause` | Pauses the media session. Affects the current media session, unless `MediaControlOptions.sessionId` is specified.
**Parameters:**
`options`: _`MediaControlOptions \| undefined`_ Additional options.
| `Promise` |
|
| `togglePlayPause` | Toggles between playing/pausing the media session. Affects the current media session, unless `MediaControlOptions.sessionId` is specified.
**Parameters:**
`options`: _`MediaControlOptions \| undefined`_ Additional options.
| `Promise` |
|
| `next` | Skips to the next track. Affects the current media session, unless `MediaControlOptions.sessionId` is specified.
**Parameters:**
`options`: _`MediaControlOptions \| undefined`_ Additional options.
| `Promise` |
|
| `previous` | Skips to the previous track. Affects the current media session, unless `MediaControlOptions.sessionId` is specified.
**Parameters:**
`options`: _`MediaControlOptions \| undefined`_ Additional options.
| `Promise` |
|
#### Related types
#### `MediaSession`
| Variable | Description | Return type |
| ------------------ | ----------------------------- | ----------------------- |
| `sessionId` | Unique identifier for the media session. | `string` |
| `title` | Title of the media session. | `string` |
| `artist` | Artist of the media session. | `string \| null` |
| `albumTitle` | Album title of the media session. | `string \| null` |
| `albumArtist` | Artist of the album (may differ from track artist). | `string \| null` |
| `trackNumber` | Position of the track within its album. | `number` |
| `startTime` | Timestamp (in seconds) where playback begins. | `number` |
| `endTime` | Timestamp (in seconds) where playback ends. | `number` |
| `position` | Timestamp (in seconds) of current playback position. | `number` |
| `isPlaying` | Whether the media session is currently playing. | `boolean` |
| `isCurrentSession` | Whether this is the currently active session (i.e. `currentSession`). | `boolean` |
#### `MediaControlOptions`
| Variable | Description | Return type |
| ------------------ | ----------------------------- | ----------------------- |
| `sessionId` | ID of the session to control. If `undefined`, the current session is used. | `string \| undefined` |
### Memory
#### Config
| Option | Description | Option type | Default value |
| ------------------ | -------------------------------------------------- | ----------- | ------------- |
| `refreshInterval` | How often this provider refreshes in milliseconds. | `number` | `5000` |
#### Outputs
| Variable | Description | Return type | Supported OS |
| ------------- | ----------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `usage` | TODO | `number` | 

|
| `freeMemory` | TODO | `number` | 

|
| `usedMemory` | TODO | `number` | 

|
| `totalMemory` | TODO | `number` | 

|
| `freeSwap` | TODO | `number` | 

|
| `usedSwap` | TODO | `number` | 

|
| `totalSwap` | TODO | `number` | 

|
### Network
#### Config
| Option | Description | Option type | Default value |
| ------------------ | -------------------------------------------------- | ----------- | ------------- |
| `refreshInterval` | How often this provider refreshes in milliseconds. | `number` | `5000` |
#### Outputs
| Variable | Description | Return type | Supported OS |
| ------------------ | -------------------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `defaultInterface` | TODO | `NetworkInterface` | 

|
| `defaultGateway` | TODO | `Gateway` | 

|
| `interfaces` | TODO | `NetworkInterface[]` | 

|
| `traffic` | Returns the network traffic per second. | `NetworkTraffic` | 

|
#### Related types
#### `NetworkTraffic`
| Variable | Description | Return type |
| ------------------ | ----------------------------- | ----------------------- |
| `received` | Received bytes per second. | `DataSizeMeasure` |
| `transmitted` | Transmitted bytes per second. | `DataSizeMeasure` |
| `totalReceived` | Total received bytes. | `DataSizeMeasure` |
| `totalTransmitted` | Total transmitted bytes. | `DataSizeMeasure` |
#### `DataSizeMeasure`
| Variable | Description | Return type |
| ---------- | --------------------------------------------------------------------------- | ----------- |
| `bytes` | Raw byte value. | `number` |
| `siValue` | Bytes converted in according to the SI standard. 1000 bytes in a kilobyte. | `number` |
| `siUnit` | Unit of the converted bytes in according to the SI standard. KB, MB, ... | `string` |
| `iecValue` | Bytes converted in according to the IEC standard. 1024 bytes in a kibibyte. | `number` |
| `iecUnit` | Unit of the converted bytes in according to the IEC standard. KiB, MiB, ... | `string` |
### Systray
#### Config
No config options.
#### Outputs
| Variable | Description | Return type | Supported OS |
| ----------------- | ----------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `icons` | All Windows taskbar system tray icons. | `SystrayIcon[]` |
|
#### Related Types
#### SystrayIcon
| Variable | Description | Return type |
| ----------------- | ----------- | ----------- |
| `id` | ID of the icon. | `string` |
| `iconBytes` | Icon image as a PNG byte array. | `number[]` |
| `iconBlob` | Icon image as a PNG blob. | `Blob` |
| `iconHash` | Hash of the icon image. Used to determine if the icon image has changed. | `string` |
| `iconUrl` | Icon image URL ready to be be referenced in `
` elements. | `string` |
| `tooltip` | Tooltip text when hovering over the icon. | `string` |
### Weather
#### Config
| Option | Description | Option type | Default value |
| ------------------ | ------------------------------------------------------------------------------------------------------ | --------------------- | ------------- |
| `latitude` | Latitude to retrieve weather for. If not provided, latitude is instead estimated based on public IP. | `number \| undefined` | `undefined` |
| `longitude` | Longitude to retrieve weather for. If not provided, longitude is instead estimated based on public IP. | `number \| undefined` | `undefined` |
| `refreshInterval` | How often this provider refreshes in milliseconds. | `number` | `3600000` |
#### Outputs
| Variable | Description | Return type | Supported OS |
| ----------------- | ----------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `isDaytime` | TODO | `string` | 

|
| `status` | TODO | `WeatherStatus` | 

|
| `celsiusTemp` | TODO | `number` | 

|
| `fahrenheitTemp` | TODO | `number` | 

|
| `windSpeed` | TODO | `number` | 

|
[discord-badge]: https://img.shields.io/discord/1041662798196908052.svg?logo=discord&colorB=7289DA
[discord-link]: https://discord.gg/ud6z3qjRvM
[issues-badge]: https://img.shields.io/badge/good_first_issues-7057ff
[issues-link]: https://github.com/glzr-io/zebar/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22