Skip to content

yrwq/lush

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌿 lush

Warning

lush is in a very early phase, expect breaking changes or incomplete docs

lightweight, extensible wayland shell and widget framework. build completely custom bars, panels, and desktop widgets using lua.

preview


features

  • lua powered: define your entire ui in lua.
  • wayland native: built for wayland using layer-shell, supporting bars, panels, and overlays.
  • reactive state: shared signal and state bus with widget bindings. update your ui when data changes.
  • data providers: realtime monitoring for cpu, memory, network, disk, battery, and a lot more
  • notifications: builtin dbus notification daemon that can be styled and displayed via Lua.
  • ipc: control the daemon from scripts or shortcuts to toggle, or reload components.
  • styling: use css for styling, with hot-reloading support.

quickstart

docs

examples

minimal example

local lush = require("lush")
local ui = lush.ui

-- enable data providers you need
lush.data.use("cpu", { interval = 2 })
lush.data.use("battery")

ui.windows({
  ui.window({
    name = "top_bar",
    position = "top",
    exclusive = true,
    root = ui.hbox({
      spacing = 10,
      children = {
        ui.label({ 
            -- bind to providers
            bind = "data.cpu.percent", 
            format = "CPU: {value}%" 
        }),
        ui.clock({ format = "%H:%M:%S" }),
        ui.label({ 
            bind = "data.battery.percent", 
            format = "BAT: {value}%" 
        }),
      }
    })
  })
})

notes

if you find a bug feel free to open an issue or even better make a pull request <3

contributing


lush is inspired by projects like AGS, Eww and quickshell

About

lua scripted desktop widgets for wayland

Topics

Resources

License

Stars

Watchers

Forks

Contributors