Zebar ๐Ÿฆ“

March 31, 2026 ยท View on GitHub


Zebar logo

Zebar ๐Ÿฆ“

Zebar lets you create customizable and cross-platform desktop widgets.

Discord invite Good first issues

Installation โ€ข Intro โ€ข FAQ โ€ข Contributing โ†—

zebar-demo

โš™๏ธ Installation

Downloads for Windows, MacOS, and Linux are available in the latest release.

For building locally, follow the instructions here.

๐Ÿš€ 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 -> <pack name> -> <widget name> -> 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 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 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). 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

Config

No config options.

Outputs

VariableDescriptionReturn typeSupported OS
defaultPlaybackDeviceDefault audio playback device.AudioDevice | nullmicrosoft icon
defaultRecordingDeviceDefault audio recording device.AudioDevice | nullmicrosoft icon
playbackDevicesAll audio playback devices.AudioDevice[]microsoft icon
recordingDevicesAll audio recording devices.AudioDevice[]microsoft icon
allDevicesAll audio devices (both playback and recording).AudioDevice[]microsoft icon
FunctionDescriptionReturn typeSupported OS
setVolumeSets 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<void>microsoft icon

AudioDevice

VariableDescriptionReturn type
deviceIdDevice ID.string
nameFriendly display name of device.string
volumeVolume as a % of maximum volume. Returned value is between 0 and 100.number
typeType of the device.'playback' | 'recording'
isDefaultPlaybacktrue if the device is selected as the default playback device.boolean
isDefaultRecordingtrue if the device is selected as the default recording device.boolean

SetVolumeOptions

VariableDescriptionReturn type
deviceIdDevice ID to set the volume of.string | undefined

Battery

Config

OptionDescriptionOption typeDefault value
refreshIntervalHow often this provider refreshes in milliseconds.number5000

Outputs

VariableDescriptionReturn typeSupported OS
chargePercentBattery charge as a percentage of maximum capacity (aka. 'state of charge'). Returned value is between 0 to 100.numbermicrosoft iconapple iconlinux icon
healthPercentCondition of the battery as a percentage of perfect health. Returned value is between 0 to 100.numbermicrosoft iconapple iconlinux icon
cycleCountNumber of charge/discharge cycles.numbermicrosoft iconapple iconlinux icon
stateState of the battery.'discharging' | 'charging' | 'full' | 'empty' | 'unknown'microsoft iconapple iconlinux icon
isChargingWhether the battery is in a charging state.booleanmicrosoft iconapple iconlinux icon
timeTillEmptyApproximate time in milliseconds till battery is empty.number | nullmicrosoft iconapple iconlinux icon
timeTillFullApproximate time in milliseconds till battery is fully charged.number | nullmicrosoft iconapple iconlinux icon
powerConsumptionBattery power consumption in watts.numbermicrosoft iconapple iconlinux icon
voltageBattery voltage.number | nullmicrosoft iconapple iconlinux icon

CPU

Config

OptionDescriptionOption typeDefault value
refreshIntervalHow often this provider refreshes in milliseconds.number5000

Outputs

VariableDescriptionReturn typeSupported OS
frequencyTODOnumbermicrosoft iconapple iconlinux icon
usageTODOnumbermicrosoft iconapple iconlinux icon
logicalCoreCountTODOnumbermicrosoft iconapple iconlinux icon
physicalCoreCountTODOnumbermicrosoft iconapple iconlinux icon
vendorTODOstringmicrosoft iconapple iconlinux icon

Date

Config

OptionDescriptionOption typeDefault value
formattingFormatting of the current date into a custom string format. Affects the output of formatted.

Refer to 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
stringEEE d MMM t
timezoneEither a UTC offset (eg. UTC+8) or an IANA timezone (eg. America/New_York). Affects the output of formatted.

A full list of available IANA timezones can be found here.
stringlocal
localeAn 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.

A full list of ISO-639-1 locales can be found here.
string
refreshIntervalHow often this provider refreshes in milliseconds.number1000

Outputs

VariableDescriptionReturn typeSupported OS
formattedCurrent date/time as a formatted string.stringmicrosoft iconapple iconlinux icon
newCurrent date/time as a JavaScript Date object. Uses new Date() under the hood.Datemicrosoft iconapple iconlinux icon
nowCurrent date/time as milliseconds since epoch. Uses Date.now() under the hood.numbermicrosoft iconapple iconlinux icon
isoCurrent date/time as an ISO-8601 string (eg. 2017-04-22T20:47:05.335-04:00). Uses date.toISOString() under the hood.stringmicrosoft iconapple iconlinux icon

Disk

Config

OptionDescriptionOption typeDefault value
refreshIntervalHow often this provider refreshes in milliseconds.number60000

Outputs

VariableDescriptionReturn typeSupported OS
disksAvailable disks on the system.Disk[]microsoft iconapple iconlinux icon

Disk

VariableDescriptionReturn type
nameDisk name.string | null
fileSystemFile system used on the disk (e.g. EXT4, NTFS).string
mountPointMount point of the disk (e.g. /, C:\\).string
totalSpaceTotal disk size.DataSizeMeasure
availableSpaceAvailable disk size.DataSizeMeasure
isRemovableWhether the disk is removable.boolean
driveTypeType of disk (e.g. HDD, SSD).string

DataSizeMeasure

VariableDescriptionReturn type
bytesRaw byte value.number
siValueBytes converted in according to the SI standard. 1000 bytes in a kilobyte.number
siUnitUnit of the converted bytes in according to the SI standard. KB, MB, ...string
iecValueBytes converted in according to the IEC standard. 1024 bytes in a kibibyte.number
iecUnitUnit of the converted bytes in according to the IEC standard. KiB, MiB, ...string

GlazeWM

Config

No config options.

Outputs

VariableDescriptionReturn typeSupported OS
displayedWorkspaceWorkspace displayed on the current monitor.Workspacemicrosoft icon
focusedWorkspaceWorkspace that currently has focus (on any monitor).Workspacemicrosoft icon
currentWorkspacesWorkspaces on the current monitor.Workspace[]microsoft icon
allWorkspacesWorkspaces across all monitors.Workspace[]microsoft icon
allMonitorsAll monitors.Monitor[]microsoft icon
allWindowsAll windows.Window[]microsoft icon
focusedMonitorMonitor that currently has focus.Monitormicrosoft icon
currentMonitorMonitor that is nearest to this Zebar widget.Monitormicrosoft icon
focusedContainerContainer that currently has focus (on any monitor).Containermicrosoft icon
tilingDirectionTiling direction of the focused container.TilingDirectionmicrosoft icon
bindingModesActive binding modes.BindingModeConfig[]microsoft icon
isPausedWhether the WM is paused.booleanmicrosoft icon
FunctionDescriptionReturn typeSupported OS
runCommandInvokes 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.
stringmicrosoft icon

Host

Config

OptionDescriptionOption typeDefault value
refreshIntervalHow often this provider refreshes in milliseconds.number60000

Outputs

VariableDescriptionReturn typeSupported OS
hostnameName used to identify the device in various network-related activities.string | nullmicrosoft iconapple iconlinux icon
osNameName 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 | nullmicrosoft iconapple iconlinux icon
osVersionOperating 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 | nullmicrosoft iconapple iconlinux icon
friendlyOsVersionFriendly name of operating system version (eg. MacOS 13.2.1, Windows 10 Pro, Linux Debian GNU/Linux 9).string | nullmicrosoft iconapple iconlinux icon
bootTimeTime when the system booted since UNIX epoch in milliseconds (eg. 1699452379304).stringmicrosoft iconapple iconlinux icon
uptimeTime in milliseconds since boot.stringmicrosoft iconapple iconlinux icon

IP

Config

OptionDescriptionOption typeDefault value
refreshIntervalHow often this provider refreshes in milliseconds.number3600000

Outputs

VariableDescriptionReturn typeSupported OS
addressTODOstringmicrosoft iconapple iconlinux icon
approxCityTODOstringmicrosoft iconapple iconlinux icon
approxCountryTODOstringmicrosoft iconapple iconlinux icon
approxLatitudeTODOnumbermicrosoft iconapple iconlinux icon
approxLongitudeTODOnumbermicrosoft iconapple iconlinux icon

Keyboard

Config

OptionDescriptionOption typeDefault value
refreshIntervalHow often this provider refreshes in milliseconds.number5000

Outputs

VariableDescriptionReturn typeSupported OS
layoutCurrent keyboard layout, for example 'en-US'.stringmicrosoft icon

Komorebi

Config

No config options.

Outputs

VariableDescriptionReturn typeSupported OS
displayedWorkspaceWorkspace displayed on the current monitor.KomorebiWorkspacemicrosoft icon
focusedWorkspaceWorkspace that currently has focus (on any monitor).KomorebiWorkspacemicrosoft icon
currentWorkspacesWorkspaces on the current monitor.KomorebiWorkspace[]microsoft icon
allWorkspacesWorkspaces across all monitors.KomorebiWorkspace[]microsoft icon
allMonitorsAll monitors.KomorebiMonitor[]microsoft icon
focusedMonitorMonitor that currently has focus.KomorebiMonitormicrosoft icon
currentMonitorMonitor that is nearest to this Zebar widget.KomorebiMonitormicrosoft icon

Media

Config

No config options.

Outputs

VariableDescriptionReturn typeSupported OS
currentSessionCurrently playing media session.MediaSession | nullmicrosoft icon
allSessionsAll active media sessions.MediaSession[]microsoft icon
FunctionDescriptionReturn typeSupported OS
playPlays the media session. Affects the current media session, unless MediaControlOptions.sessionId is specified.

Parameters:
options: MediaControlOptions | undefined Additional options.
Promise<void>microsoft icon
pausePauses the media session. Affects the current media session, unless MediaControlOptions.sessionId is specified.

Parameters:
options: MediaControlOptions | undefined Additional options.
Promise<void>microsoft icon
togglePlayPauseToggles between playing/pausing the media session. Affects the current media session, unless MediaControlOptions.sessionId is specified.

Parameters:
options: MediaControlOptions | undefined Additional options.
Promise<void>microsoft icon
nextSkips to the next track. Affects the current media session, unless MediaControlOptions.sessionId is specified.

Parameters:
options: MediaControlOptions | undefined Additional options.
Promise<void>microsoft icon
previousSkips to the previous track. Affects the current media session, unless MediaControlOptions.sessionId is specified.

Parameters:
options: MediaControlOptions | undefined Additional options.
Promise<void>microsoft icon

MediaSession

VariableDescriptionReturn type
sessionIdUnique identifier for the media session.string
titleTitle of the media session.string
artistArtist of the media session.string | null
albumTitleAlbum title of the media session.string | null
albumArtistArtist of the album (may differ from track artist).string | null
trackNumberPosition of the track within its album.number
startTimeTimestamp (in seconds) where playback begins.number
endTimeTimestamp (in seconds) where playback ends.number
positionTimestamp (in seconds) of current playback position.number
isPlayingWhether the media session is currently playing.boolean
isCurrentSessionWhether this is the currently active session (i.e. currentSession).boolean
isNextEnabledWhether the media session can be skipped.boolean
isPreviousEnabledWhether the media session can be rewoundboolean

MediaControlOptions

VariableDescriptionReturn type
sessionIdID of the session to control. If undefined, the current session is used.string | undefined

Memory

Config

OptionDescriptionOption typeDefault value
refreshIntervalHow often this provider refreshes in milliseconds.number5000

Outputs

VariableDescriptionReturn typeSupported OS
usageTODOnumbermicrosoft iconapple iconlinux icon
freeMemoryTODOnumbermicrosoft iconapple iconlinux icon
usedMemoryTODOnumbermicrosoft iconapple iconlinux icon
totalMemoryTODOnumbermicrosoft iconapple iconlinux icon
freeSwapTODOnumbermicrosoft iconapple iconlinux icon
usedSwapTODOnumbermicrosoft iconapple iconlinux icon
totalSwapTODOnumbermicrosoft iconapple iconlinux icon

Network

Config

OptionDescriptionOption typeDefault value
refreshIntervalHow often this provider refreshes in milliseconds.number5000

Outputs

VariableDescriptionReturn typeSupported OS
defaultInterfaceTODONetworkInterfacemicrosoft iconapple iconlinux icon
defaultGatewayTODOGatewaymicrosoft iconapple iconlinux icon
interfacesTODONetworkInterface[]microsoft iconapple iconlinux icon
trafficReturns the network traffic per second.NetworkTrafficmicrosoft iconapple iconlinux icon

NetworkTraffic

VariableDescriptionReturn type
receivedReceived bytes per second.DataSizeMeasure
transmittedTransmitted bytes per second.DataSizeMeasure
totalReceivedTotal received bytes.DataSizeMeasure
totalTransmittedTotal transmitted bytes.DataSizeMeasure

DataSizeMeasure

VariableDescriptionReturn type
bytesRaw byte value.number
siValueBytes converted in according to the SI standard. 1000 bytes in a kilobyte.number
siUnitUnit of the converted bytes in according to the SI standard. KB, MB, ...string
iecValueBytes converted in according to the IEC standard. 1024 bytes in a kibibyte.number
iecUnitUnit of the converted bytes in according to the IEC standard. KiB, MiB, ...string

Systray

Config

No config options.

Outputs

VariableDescriptionReturn typeSupported OS
iconsAll Windows taskbar system tray icons.SystrayIcon[]microsoft icon

SystrayIcon

VariableDescriptionReturn type
idID of the icon.string
iconBytesIcon image as a PNG byte array.number[]
iconBlobIcon image as a PNG blob.Blob
iconHashHash of the icon image. Used to determine if the icon image has changed.string
iconUrlIcon image URL ready to be be referenced in <img> elements.string
tooltipTooltip text when hovering over the icon.string

Weather

Config

OptionDescriptionOption typeDefault value
latitudeLatitude to retrieve weather for. If not provided, latitude is instead estimated based on public IP.number | undefinedundefined
longitudeLongitude to retrieve weather for. If not provided, longitude is instead estimated based on public IP.number | undefinedundefined
refreshIntervalHow often this provider refreshes in milliseconds.number3600000

Outputs

VariableDescriptionReturn typeSupported OS
isDaytimeTODOstringmicrosoft iconapple iconlinux icon
statusTODOWeatherStatusmicrosoft iconapple iconlinux icon
celsiusTempTODOnumbermicrosoft iconapple iconlinux icon
fahrenheitTempTODOnumbermicrosoft iconapple iconlinux icon
windSpeedTODOnumbermicrosoft iconapple iconlinux icon