Zebar lets you create customizable and cross-platform desktop widgets.
Installation • Intro • FAQ • Contributing ↗
Downloads for Windows, MacOS, and Linux are available in the latest release.
For building locally, follow the instructions here.
On first launch, Zebar generates some default widgets to %userprofile%/.glzr/zebar
. This includes various examples and templates to get you started with creating your own widgets.
To create your own widget, a good way to start is by making a copy of one of the boilerplate configs created on first launch.
Widgets can be shared easily:
- Zip your widget configuration.
- Unzip it into the
%userprofile%/.glzr/zebar
directory.
Widgets are powered by native webviews (similar to Electron, but more lightweight).
Each widget consists of:
- A config file (with a
.zebar.json
extension). - An HTML file for markup and styling.
Any frontend framework can be used and boilerplates (e.g. for React, SolidJS) are included in the default widget configs.
Zebar exposes various system information (refered 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.
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 adminstrator.
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.
No config options.
Variable | Description | Return type | Supported OS |
---|---|---|---|
defaultPlaybackDevice |
Default audio playback device. | AudioDevice | null |
|
playbackDevices |
All audio playback devices. | 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 |
isDefault |
true if the device is selected as the default playback device. |
boolean |
Option | Description | Option type | Default value |
---|---|---|---|
refreshInterval |
How often this provider refreshes in milliseconds. | number |
5000 |
Option | Description | Option type | Default value |
---|---|---|---|
refreshInterval |
How often this provider refreshes in milliseconds. | number |
5000 |
Variable | Description | Return type | Supported OS |
---|---|---|---|
frequency |
TODO | number |
|
usage |
TODO | number |
|
logicalCoreCount |
TODO | number |
|
physicalCoreCount |
TODO | number |
|
vendor |
TODO | string |
Option | Description | Option type | Default value |
---|---|---|---|
formatting |
Formatting 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 |
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 .A full list of available IANA timezones can be found here. |
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 .A full list of ISO-639-1 locales can be found here. |
string |
|
refreshInterval |
How often this provider refreshes in milliseconds. | number |
1000 |
Option | Description | Option type | Default value |
---|---|---|---|
refreshInterval |
How often this provider refreshes in milliseconds. | number |
60000 |
Variable | Description | Return type | Supported OS |
---|---|---|---|
disks |
Available disks on the system. | 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 |
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 |
No config options.
Option | Description | Option type | Default value |
---|---|---|---|
refreshInterval |
How often this provider refreshes in milliseconds. | number |
60000 |
Option | Description | Option type | Default value |
---|---|---|---|
refreshInterval |
How often this provider refreshes in milliseconds. | number |
3600000 |
Variable | Description | Return type | Supported OS |
---|---|---|---|
address |
TODO | string |
|
approxCity |
TODO | string |
|
approxCountry |
TODO | string |
|
approxLatitude |
TODO | number |
|
approxLongitude |
TODO | number |
Option | Description | Option type | Default value |
---|---|---|---|
refreshInterval |
How often this provider refreshes in milliseconds. | number |
5000 |
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 |
Option | Description | Option type | Default value |
---|---|---|---|
refreshInterval |
How often this provider refreshes in milliseconds. | number |
5000 |
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 |
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 |
Option | Description | Option type | Default value |
---|---|---|---|
refreshInterval |
How often this provider refreshes in milliseconds. | number |
5000 |
Variable | Description | Return type | Supported OS |
---|---|---|---|
layout |
Current keyboard layout, for example 'en-US'. | string |
No config options.
No config options.
Variable | Description | Return type | Supported OS |
---|---|---|---|
currentSession |
Currently playing media session. | MediaSession | null |
|
allSessions |
All active media sessions. | MediaSession[] |
Variable | Description | Return type |
---|---|---|
sessionId |
ID of 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 |
Album artist of the media session. | string | null |
trackNumber |
Track number of the media session. | number |
startTime |
Start time of the media session. | number |
endTime |
End time of the media session. | number |
position |
Position of the media session. | number |
isPlaying |
Whether the media session is playing. | boolean |
isCurrentSession |
Whether this is the currently active session (i.e. currentSession ). |
boolean |
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 |
Variable | Description | Return type | Supported OS |
---|---|---|---|
isDaytime |
TODO | string |
|
status |
TODO | WeatherStatus |
|
celsiusTemp |
TODO | number |
|
fahrenheitTemp |
TODO | number |
|
windSpeed |
TODO | number |