A Windows 10/11 Status Bar.
winbar
is quite different from other status bars in that it provides more straightforward
configuration. What this means is that you spend less time configuring the status bar, and have
something that just works and generally looks good.
Of course, you can still change colours and formats of components (available configuration depends on the component), but you wouldn't be able to change every little detail about how the component is displayed.
winbar
is divided into two components: the CLI (winbarc
) and the actual status bar app itself
(winbar
). The CLI can be used to control winbar
.
winbar
(the app) runs a TCP server for clients to connect to (in this case, just winbarc
). It
uses a simple JSON-based request-response protocol. If you're curious/want to make your own client,
see protocol.rs.
Components are an individual block within the status bar displaying some specific thing. For example, the datetime component, as the name suggests, displays the current date and time within the status bar.
The following components are available natively by winbar
:
- Static Text - displays some static text
- DateTime - displays the current date/time
See Configuration.
winbar
and winbarc
can be downloaded from
Releases. There currently isn't a convenient
installation process, so for now, winbar and winbarc can be put in any location as long as it's in
your PATH.
If you wish to download the latest main
branch build, you can download the artifacts from the
latest GitHub Action run.
Once you have downloaded winbar
and winbarc
and it exists in your PATH, you will need to create
or generate the config. There is an example config you can download, or run the
following command:
winbar --config-path <PATH> --generate-config
This will generate an example config in the given path.
To start winbar
, you can either run winbar
directly:
winbar --config-path <PATH>
or, use winbarc
to start winbar
and run it in the background:
winbarc start --config-path <PATH>
To stop winbar, run:
winbarc stop
That's the gist of it! There are more commands and options available that you can specify. Feel
free to use the --help
option on any command (winbar
, winbarc
) or subcommand to see everything
available to you.
Clone this repo and change into the project's directory. You can then compile using the following command:
cargo build [--release]
If you want to install winbar
and winbarc
, run the following commands with the respective
project:
cargo install --path <./winbar | ./winbarc>
For an unknown reason, winbarc
does not properly start winbar
if winbarc
is run using cargo run
(in the default debug mode). If you wish to use winbarc
to start winbar
, make sure to
either run it in release mode (cargo run --release
) or install it using cargo install
(also in
release mode, but that is the default).
- More configuration options for existing components
- New components
- Multi-monitor support
- Plugin system
This project's layout and bits of code are inspired from the following:
-
- This project's high-level architecture is very similar to that of
komorebi
(separating CLI/actual status bar) - The window creation/drawing code structure in
winbar
was inspired bykomorebi
- This project's high-level architecture is very similar to that of
-
winbar
's GDI+ setup and usage was greatly inspired bygdiplus-rs