/hitokage

A configurable status bar for Windows implemented in Rust

Primary LanguageRustMIT LicenseMIT

hitokage 日と影

hitokage is a configurable status bar for Windows implemented in Rust using the relm4 GUI library.

It is primarily built for usage with komorebi , but is also usable as a standalone drop-in replacement for the default Windows Taskbar.

Documentation and guides at: nowhere LOL! (🚧 TODO USER FACING DOCS 🚧)

Demos

examples/minimal: Demonstration of a minimal hitokage status bar

examples/testbench: Demonstration of the testbench hitokage status bar

codyduong: Demonstration of codyduong's hitokage status bar

Configuration

hitokage is configured with lua and css1. hitokage by default looks for your configuration in %USERPROFILE%/.config/hitokage and it looks for init.lua and styles.css. Example configurations are found at examples.

The minimal configuration might look something like this:

init.lua

local monitors = hitokage.monitor.get_all()

for _, monitor in ipairs(monitors) do
  hitokage.bar.create(monitor, {
    widgets = {
      { Workspace = { halign = "Start", item_height = 24, item_width = 24 } },
      { Box = {} },
      { Clock = { format = "%a %b %u %r", halign = "End" } },
    },
  })
end

styles.css

.bar {
  background-color: rgba(29, 32, 33, 0.0);
  color: #f2e5bc;
  
  font-family: 'MesloLGS NF', 'Courier New', 'Bars', 'Font Awesome 5 Free';
  font-size: 12px;
  line-height: 12px;
  min-height: 24px;
}

.workspace {
  padding: 0px 0px 0px 0px;
  /* border: 1px solid rgba(255, 0, 0, 0.4); */
}

.workspacechild {
  /* distance between workspace children */
  /* margin-left: 8px; */
  border: 1px solid rgba(168, 153, 132, 0.4);

  color: #f2e5bc;
  background-color: rgba(60, 56, 54, 0.4);

  font-size: 11px;
  /* border-radius: 11px; */

  transition: all 500ms;
  transition-property: min-width, background-color;
}

.workspacechild:first-child {
  margin-left: 0px;
}

.workspacechild:selected {
  /* min-width: 32px; */
  border: 1px solid #f2e5bc;
  background-color: #f2e5bc;
  color: #333333;
  font-weight: bold;
}

hitokage also comes with hitokage-lua-lib to provide LuaLS type annotations, and can be used with your preferred editor for helping you write your configuration.


1: gtk4 css supported properties

Installation

Install from nightly or latest from the releases page.

Caution

hitokage is in a pre-release state, the APIs are subject to breaking changes (this will not be the case after 0.1.0).

Developing/Building From Source

Requires

Acknowledgements

  • yasb - The original inspiration for this status bar
  • komorebi - The tiling manager used in conjunction with this status bar
  • wezterm - Code for various WinAPI and mlua utilities

License

MIT