Skip to content

waybar-labwc

Recipe card from the charly-selkies plugin (Images — the deployable catalog).

Waybar status bar adapted for labwc compositor (not sway). Uses the same unified config as the waybar candy — sway-specific modules (workspaces, mode) auto-hide on labwc since SWAYSOCK is not set.

Waybar connects to wayland-0 (labwc’s socket), NOT wayland-1 (pixelflux). This is critical for:

  • Layer-shell exclusive zones — Waybar reserves space at the top, windows don’t overlap it
  • wlr-foreign-toplevel-management — Waybar’s taskbar can see running windows in labwc
  • labwc
  • waybar (RPM)

Fonts (JetBrains Mono, Symbols Nerd Font) provided by the desktop-fonts candy in metalayers.

Service Priority Purpose
waybar 15 Bottom panel (after labwc at 12, swaync at 14, before nginx at 18)

Unified config shared with the waybar candy (Catppuccin Mocha, bottom bar):

Position Module Purpose
Left custom/chrome (Re)start Chrome button — calls chrome-restart (see /charly-selkies:chrome)
Center wlr/taskbar Running app icons — click to activate, middle-click to close, right-click to minimize
Right custom/notification swaync notification toggle — click to open notification panel (see /charly-selkies:swaync)

Catppuccin Mocha theme — semi-transparent dark background, JetBrains Mono + Symbols Nerd Font.

  • waybar-labwc-wrapper — Waits for wayland-0 socket, sets WAYLAND_DISPLAY=wayland-0 explicitly
  • config.json — Unified module layout (same as waybar layer)
  • style.css — Catppuccin Mocha styling (same as waybar layer)

Both candies use the same config. The only differences are:

  • Dependency: labwc instead of sway
  • Wrapper: Explicitly pins WAYLAND_DISPLAY=wayland-0 (labwc socket, not pixelflux’s wayland-1)
  • No sway-autotile: Autotiling is sway-specific
  • /charly-image:layer — candy authoring reference (charly.yml schema, task verbs, service declarations)
  • /charly-check:check — declarative testing (check: block, charly check box, charly check live)