-
Notifications
You must be signed in to change notification settings - Fork 5
CSS
Most theme values are exposed as CSS variables on :root, and VibePanel also provides structural classes for targeting bars, widgets, popovers, and common UI elements. Override them in your style.css. For example:
:root {
--color-accent-primary: #e06c75;
--color-state-success: #98c379;
--color-state-warning: #d19a66;
--color-state-urgent: #e06c75;
}| Variable | Description |
|---|---|
--color-background-bar |
Bar background. Config: [bar] background_color
|
Per-widget background overrides. These combine via color-mix() for opacity support.
| Variable | Description |
|---|---|
--widget-background-color |
Base widget background color (before opacity) |
--widget-background-opacity |
Widget background opacity as percentage (e.g., 80%) |
--popover-background-opacity |
Popover background opacity (max of bar and widget opacity) |
| Variable | Description |
|---|---|
--color-foreground-primary |
Primary text and icons |
--color-foreground-muted |
Secondary text (70% opacity) |
--color-foreground-faint |
Tertiary text (40% opacity) |
--color-foreground-disabled |
Disabled controls |
| Variable | Description |
|---|---|
--color-accent-primary |
Primary accent (buttons, highlights). Config: [theme] accent
|
--color-accent-subtle |
Hover backgrounds (20% accent) |
--color-accent-hover-bg |
Accent hover background (luminance-aware tint) |
--color-accent-slider |
Slider fill color |
--color-accent-text |
Text on accent backgrounds |
Hover colors derived from each widget's background (automatically adjusts for custom background_color).
| Variable | Description |
|---|---|
--color-widget-hover-bg |
Widget and group hover background |
--widget-hover-tint |
Tint direction: white for dark themes, black for light |
--color-accent-hover-bg |
Accent-colored hover background (luminance-aware) |
--color-workspace-indicator-hover-bg |
Default workspace indicator hover |
--color-workspace-indicator-active-hover-bg |
Active workspace indicator hover |
--color-taskbar-button-hover-bg |
Taskbar button hover background |
--color-taskbar-button-active-hover-bg |
Active taskbar button hover background |
| Variable | Default | Description |
|---|---|---|
--color-state-success |
#4a7a4a |
Success/positive. Config: [theme.states] success
|
--color-state-warning |
#e5c07b |
Warning/caution. Config: [theme.states] warning
|
--color-state-urgent |
#ff6b6b |
Error/critical. Config: [theme.states] urgent
|
| Variable | Description |
|---|---|
--color-card-overlay |
Base card overlay |
--color-card-overlay-hover |
Hover state |
--color-card-overlay-subtle |
Subtle highlight |
--color-card-overlay-strong |
Active/pressed state |
--color-border-subtle |
Subtle borders |
--color-row-background |
Row background |
--color-row-background-hover |
Row hover state |
--color-slider-track |
Unfilled slider track |
Shadows are applied to popovers and menus by default. Disable with shadows = false in [theme] to prevent blur artifacts when compositor blur is active.
| Variable | Description |
|---|---|
--shadow-soft |
Soft drop shadow applied to menus and popovers |
--shadow-strong |
Stronger shadow for elevated surfaces |
Configurable CSS border on bar, widgets, and surfaces. Configured via [theme] outline_* options.
| Variable | Description |
|---|---|
--outline-width |
Global outline width (e.g., 1px) |
--outline-color |
Global outline color |
--outline-opacity |
Global outline opacity as percentage |
--bar-outline-width |
Bar outline width (0px when disabled) |
--bar-outline-color |
Bar outline color |
--bar-outline-opacity |
Bar outline opacity |
--widget-outline-width |
Widget outline width (0px when disabled) |
--widget-outline-color |
Widget outline color (per-widget override possible) |
--widget-outline-opacity |
Widget outline opacity |
--surface-outline-width |
Popover/tooltip surface outline width (0px when disabled) |
--surface-outline-color |
Surface outline color (per-widget override possible) |
--surface-outline-opacity |
Surface outline opacity |
All sizes scale proportionally from bar.size in your config.
| Variable | Description |
|---|---|
--bar-height |
Bar height |
--bar-padding-y |
Vertical padding above widgets |
--bar-padding-y-bottom |
Vertical padding below widgets (0 in islands mode) |
--widget-height |
Widget height |
--widget-padding-x |
Widget horizontal padding |
--widget-padding-y |
Widget vertical padding |
--widget-opacity |
Widget background opacity. Config: [widgets] background_opacity
|
| Variable | Description |
|---|---|
--spacing-internal |
Internal element spacing |
--spacing-widget-edge |
Widget content edge padding |
--spacing-widget-gap |
Gap between widget children |
| Variable | Description |
|---|---|
--radius-bar |
Bar corner radius |
--radius-widget |
Widget corner radius |
--radius-surface |
Popover/menu corner radius |
--radius-pill |
Small pill shapes |
--radius-factor |
Scaling factor for fixed-size elements (0.0 at 0%, 1.0 at 50%+) |
| Variable | Description |
|---|---|
--slider-height |
Standard slider trough height |
--slider-height-thick |
Thick slider trough height (OSD) |
--slider-knob-size |
Slider knob diameter |
--slider-radius |
Slider trough corner radius |
--slider-radius-thick |
Thick slider trough corner radius |
--slider-knob-radius |
Slider knob corner radius |
| Variable | Description |
|---|---|
--font-family |
Font stack. Config: [theme.typography] font_family
|
--font-size |
Base font size |
--font-size-lg |
Large (1.1em) - headings |
--font-size-base |
Base (1.0em) - primary content |
--font-size-md |
Medium (0.9em) - row titles |
--font-size-sm |
Small (0.85em) - secondary text |
--font-size-xs |
Extra small (0.7em) - timestamps |
| Variable | Description |
|---|---|
--icon-size |
Standard icon size |
--pixmap-icon-size |
System tray icon size |
General classes for bar structure. Widget-specific classes are documented on each widget's page (see Widgets).
| Class | Description |
|---|---|
.bar |
Main bar container |
.bar-section--left |
Left section |
.bar-section--center |
Center section |
.bar-section--right |
Right section |
| Class | Description |
|---|---|
.widget |
Widget visual surface (background, border-radius) |
.widget-group |
Grouped widgets container |
Clickable widgets show a hover background derived from their own background color:
| Class | Description |
|---|---|
.widget.clickable:hover |
Hover state for standalone widgets |
.widget-item.clickable:hover |
Hover state for items in widget groups |
.workspace-indicator.clickable:hover |
Hover state for workspace indicators |
.taskbar-button.clickable:hover |
Hover state for taskbar buttons |
.taskbar-button.active.clickable:hover |
Hover state for the active taskbar button |
To customize the hover color, override the semantic hover variables (e.g., --color-widget-hover-bg).
| Class | Description |
|---|---|
.popover |
Popover surface (canonical class for all popovers) |
.notification-toast |
Notification toast surface |
.osd |
On-screen display surface |
.vp-surface-popover |
Deprecated -- use .popover
|
.widget-menu |
Deprecated -- use .popover
|
| Class | Description |
|---|---|
.vp-ripple-overlay |
Ripple effect drawing surface |
.vp-ripple-wrap |
Ripple overlay wrapper (clips to border-radius) |
.vp-has-ripple |
Applied to elements with ripple enabled |
| Class | Description |
|---|---|
.vp-btn-reset |
Reset button (strips GTK chrome) |
.vp-btn-compact |
Compact button (icon-only) |
.vp-btn-accent |
Accent button (filled) |
.vp-btn-card |
Card button (subtle background) |
.vp-btn-link |
Link button (text only) |
.vp-btn-ghost |
Ghost button (transparent) |
| Class | Description |
|---|---|
.vp-card |
Card container |
.vp-row |
Row container |
| Class | Description |
|---|---|
.vp-primary |
Primary foreground |
.vp-muted |
Muted foreground |
.vp-accent |
Accent color |
.vp-error |
Error/urgent color |
| Class | Description |
|---|---|
.service-unavailable |
Unavailable/disabled service state (uses --color-foreground-disabled) |
All widgets have CSS classes for their containers and labels that you can target:
.clock {
background-color: #1e1e2e;
padding: 0px 40px;
}
.clock-label {
font-size: 20px;
font-family: "JetBrains Mono";
color: yellow;
}See Widgets for each widget's available CSS classes.
Each widget's popover can be styled with the .<widget>-popover class:
.clock-popover {
background-color: #1e1e2e;
}To style all popovers at once, use .popover:
.popover {
background-color: #1e1e2e;
border-radius: 12px;
}Popover background opacity can also be set in the config with popover_background_opacity under [widgets]. See Configuration for details.