RubyBar
A bar for wayland implemented with Ruby and GTK. Configuration is done via a Ruby DSL.
RubyBar is in many ways similar to Waybar.
Both RubyBar and Waybar are gtk4 applications using gtk4-layer-shell.
However where Waybar requires static json-like configuration files RubyBar uses a pure-ruby DSL.
The DSL allows you to configure your bar programmatically.
You can even code your own widgets.
widget :power widget :uptime, on_click: -> { spawn "alacritty -e htop" } widget :custom do @rand = Random.rand 100 "random value '#{@rand}'" end widget :button, on_click: -> { `notify-send '#{self.inspect}'` }, class: "red" do "CLICK ME" end widget :load do |_, _, _, running| "tasks: #{running}" end widget :systemd, user: true, service: "gammastep.service" widget :moon do "moon: #{@phase}" end css <<CSS box.red * { color: red; } CSS
Configuration
Configuration is primarily done via the DSL. Please see the DSL documentation for the available methods.
Development
Have gtk4_layer_shell and gtk4 installed for development.
GTK_DEBUG=interactive ruby src/main.rb