$ zebar monitors
# copy one line and paste into
$ $monitor="<paste>"
# then run:
Start-Process -FilePath "zebar" -NoNewWindow -ArgumentList "open bar --args $monitor"
.glzr-io\zebar\config.yaml:
# Yaml is white-space sensitive (use 2 spaces to indent).
###
# Settings to apply to all windows.
#
# Docs regarding global: https://some-future-docs-link.com
global:
# Whether to enable the browser devtools.
enable_devtools: true
###
# Define a new window with an id of 'bar'. This window can then be opened
# via the Zebar cli by running 'zebar open bar'.
#
# Docs regarding window: https://some-future-docs-link.com
window/bar:
providers: ['self']
# Width of the window in physical pixels.
width: '{{ self.args.MONITOR_WIDTH }}'
# Height of the window in physical pixels.
height: '40'
# X-position of the window in physical pixels.
position_x: '{{ self.args.MONITOR_X }}'
# Y-position of the window in physical pixels.
position_y: '{{ self.args.MONITOR_Y }}'
# Whether to show the window above/below all others.
# Allowed values: 'always_on_top', 'always_on_bottom', 'normal'.
z_order: 'always_on_top'
# Whether the window should be shown in the taskbar.
show_in_taskbar: false
# Whether the window should have resize handles.
resizable: false
# Styles to apply globally within the window. For example, we can use
# this to import the Nerdfonts icon font. Ref https://www.nerdfonts.com/cheat-sheet
# for a cheatsheet of available Nerdfonts icons.
global_styles: |
@import "https://www.nerdfonts.com/assets/css/webfont.css";
# CSS/SCSS styles to apply to the root element within the window.
styles: |
display: grid;
grid-template-columns: 1fr 1fr 1fr;
align-items: center;
height: 100%;
color: #ffffffe6;
font-family: ui-monospace, monospace;
font-size: 13px;
padding: 4px 24px;
border-bottom: 1px solid #ffffff08;
background: linear-gradient(
rgba(14, 14, 28, 0.95),
rgba(26, 14, 28, 0.85),
);
group/left:
styles: |
display: flex;
align-items: center;
template/logo:
styles: |
margin-right: 20px;
template: |
<i class="nf nf-fa-windows"></i>
# template/komorebi:
# styles: |
# .workspace {
# display: inline-block;
# margin: 0px !important;
# padding: 4px 20px 2px 20px;
#
# &.active {
# border: 1px solid white;
# }
# }
# providers: ['komorebi','self']
# template: |
# @for (monitor of komorebi.allMonitors) {
# <div title="Self: {{monitor.name}}({{monitor.focusedWorkspaceIndex}})">
# @for (workspace of monitor.workspaces) {
# <div title="{{workspace.layout}}" class="workspace {{monitor.workspaces.indexOf(workspace) === monitor.focusedWorkspaceIndex && 'active'}}">
# {{workspace.name}}
# </div>
# }
# </div>
# }
template/workspaces:
styles: |
display: flex;
align-items: center;
.workspace {
background: rgba(255, 255, 255, 0.05);
margin-right: 4px;
width: 30px;
height: 30px;
color: #ffffffe6;
border: none;
border-radius: 2px;
&.active {
background: rgba(255, 255, 255, 0.1);
}
}
providers: ['komorebi']
template: |
@for (workspace of komorebi.currentWorkspaces) {
<div>
<button class="workspace {{ workspace === komorebi.focusedWorkspace && 'active' }}">
{{ workspace.name }}
</button>
</div>
}
group/center:
styles: |
justify-self: center;
template/clock:
providers: ['date']
# Available date tokens: https://moment.github.io/luxon/#/formatting?id=table-of-tokens
template: |
{{ date.toFormat(date.now, 'EEE d MMM t') }}
group/right:
styles: |
justify-self: end;
display: flex;
.template {
margin-left: 20px;
}
i {
color: #7481b2e1;
margin-right: 7px;
}
template/memory:
providers: ['memory']
template: |
<i class="nf nf-fae-chip"></i>
{{ Math.round(memory.usage) }}%
template/cpu:
providers: ['cpu']
styles: |
.high-usage {
color: #900029;
}
template: |
<i class="nf nf-oct-cpu"></i>
<!-- Change the text color if the CPU usage is high. -->
@if (cpu.usage > 85) {
<span class="high-usage">{{ Math.round(cpu.usage) }}%</span>
} @else {
<span>{{ Math.round(cpu.usage) }}%</span>
}
template/battery:
providers: ['battery']
styles: |
position: relative;
.charging-icon {
position: absolute;
font-size: 11px;
left: 7px;
top: 2px;
}
template: |
<!-- Show icon for whether battery is charging. -->
@if (battery.isCharging) {<i class="nf nf-md-power_plug charging-icon"></i>}
<!-- Show icon for how much of the battery is charged. -->
@if (battery.chargePercent > 90) {<i class="nf nf-fa-battery_4"></i>}
@else if (battery.chargePercent > 70) {<i class="nf nf-fa-battery_3"></i>}
@else if (battery.chargePercent > 40) {<i class="nf nf-fa-battery_2"></i>}
@else if (battery.chargePercent > 20) {<i class="nf nf-fa-battery_1"></i>}
@else {<i class="nf nf-fa-battery_0"></i>}
{{ Math.round(battery.chargePercent) }}%
template/weather:
providers: ['weather']
template: |
@switch (weather.status) {
@case ('clear_day') {<i class="nf nf-weather-day_sunny"></i>}
@case ('clear_night') {<i class="nf nf-weather-night_clear"></i>}
@case ('cloudy_day') {<i class="nf nf-weather-day_cloudy"></i>}
@case ('cloudy_night') {<i class="nf nf-weather-night_alt_cloudy"></i>}
@case ('light_rain_day') {<i class="nf nf-weather-day_sprinkle"></i>}
@case ('light_rain_night') {<i class="nf nf-weather-night_alt_sprinkle"></i>}
@case ('heavy_rain_day') {<i class="nf nf-weather-day_rain"></i>}
@case ('heavy_rain_night') {<i class="nf nf-weather-night_alt_rain"></i>}
@case ('snow_day') {<i class="nf nf-weather-day_snow"></i>}
@case ('snow_night') {<i class="nf nf-weather-night_alt_snow"></i>}
@case ('thunder_day') {<i class="nf nf-weather-day_lightning"></i>}
@case ('thunder_night') {<i class="nf nf-weather-night_alt_lightning"></i>}
}
{{ weather.celsiusTemp }}°
Stack trace or error logs (if applicable)
2024-08-22T14:30:40.187565Z INFO desktop::providers::provider: Starting provider: [{"type":"memory","refresh_interval":"5000"}]
2024-08-22T14:30:40.188459Z INFO desktop::providers::provider: Starting provider: [{"type":"cpu","refresh_interval":"5000"}]
2024-08-22T14:30:40.188631Z INFO desktop::providers::provider: Starting provider: [{"type":"battery","refresh_interval":"5000"}]
2024-08-22T14:30:40.188911Z INFO desktop::providers::provider: Starting provider: [{"type":"komorebi"}]
2024-08-22T14:30:40.189137Z INFO desktop::providers::provider: Starting provider: [{"type":"ip","refresh_interval":"3600000"}]
thread 'tokio-runtime-worker' panicked at src\providers\komorebi\provider.rs:150:45:
called `Result::unwrap()` on an `Err` value: Error("missing field `remove_titlebars`", line: 1, column: 9905)
stack backtrace:
2024-08-22T14:30:40.204551Z INFO desktop::providers::manager: Emitting for provider: [{"type":"cpu","refresh_interval":"5000"}]
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
2024-08-22T14:30:40.207997Z INFO desktop::providers::manager: Emitting for provider: [{"type":"battery","refresh_interval":"5000"}]
2024-08-22T14:30:40.246659Z INFO desktop::providers::manager: Emitting for provider: [{"type":"memory","refresh_interval":"5000"}]
2024-08-22T14:30:40.303462Z INFO desktop::providers::manager: Emitting for provider: [{"type":"ip","refresh_interval":"3600000"}]
2024-08-22T14:30:40.326016Z INFO desktop::providers::provider: Starting provider: [{"type":"weather","refresh_interval":"3600000","longitude":"-95.3633","latitude":"29.7633"}]
2024-08-22T14:30:40.864673Z INFO desktop::providers::manager: Emitting for provider: [{"type":"weather","refresh_interval":"3600000","longitude":"-95.3633","latitude":"29.7633"}]
2024-08-22T14:30:45.201684Z INFO desktop::providers::manager: Emitting for provider: [{"type":"memory","refresh_interval":"5000"}]
2024-08-22T14:30:45.202256Z INFO desktop::providers::manager: Emitting for provider: [{"type":"battery","refresh_interval":"5000"}]
2024-08-22T14:30:45.204635Z INFO desktop::providers::manager: Emitting for provider: [{"type":"cpu","refresh_interval":"5000"}]
Describe the bug
When I start zebar (Windows 11, Powershell) using komorebi running I don't get workspaces or listed in zebar
Screenshot
Reproduction
zebar 1.8.1
Running zebar
.glzr-io\zebar\config.yaml
:Stack trace or error logs (if applicable)
Version number
1.8.1