scorpion-26 / gBar

Blazingly fast status bar written with GTK
MIT License
459 stars 17 forks source link
bar cpp gtk3 linux status-bar wayland

gBar

My personal blazingly fast and efficient status bar + widgets, in case anyone finds a use for it.

gBar: GTK Bar

Prerequisites

If you don't have the optional dependencies, some features are not available.

Building and installation (Manually)

  1. Clone gBar
    git clone https://github.com/scorpion-26/gBar
  2. Configure with meson

    All optional dependencies enabled

    meson setup build
  3. Build and install
    ninja -C build && sudo ninja -C build install

Building and installation (AUR)

For Arch systems, gBar can be found on the AUR. You can install it e.g.: with yay yay -S gbar-git

Building and installation (Nix)

If you choose the Nix/NixOS installation there are a couple of ways to do it but they all require you to have flakes enabled.

Running gBar

Open bar on monitor "DP-1"

gBar bar DP-1

Open bar on monitor 0 (Legacy way of specifying the monitor)

gBar bar 0

Open audio flyin (either on current monitor or on the specified monitor)

gBar audio [monitor]

Open microphone flyin, this is equivalent to the audio flyin

gBar mic [monitor]

Open bluetooth widget

gBar bluetooth [monitor]

Gallery

The bar with default css

Bar with default css

The audio flyin with default css

Audio widget with default css

The bluetooth widget with default css

Bluetooth widget with default css

Features / Widgets

Bar:

Bluetooth:

Audio Flyin:

Configuration for your system

Copy the example config (found under data/config) into ~/.config/gBar/config and modify it to your needs.

Plugins

gBar utilizes a plugin system for custom widgets anyone can create without modifying the source code. Plugins are native shared-libraries, which need to be placed inside ~/.local/lib/gBar, /usr/lib/gBar or /usr/local/lib/gBar. Inside example/ there is an example plugin setup. To build and run it, run the following commands inside the example directory:

meson setup build -Dprefix=~/.local

for the local user OR

meson setup build

for all users

ninja -C build install
gBar gBarHelloWorld

The second argument is the name of the shared library (without 'lib' and '.so').

For more examples on how to use the gBar API, you can have a look at the built-in widgets (AudioFlyin.cpp, BluetoothDevices.cpp, Bar.cpp) as they use the same API.

FAQ

There are already many GTK bars out there, why not use them?

And lastly: Implementing it myself is fun and a great excuse to learn something new!

Can you implement feature XYZ? / I've found a bug. Can you fix it?

This project is meant to be for my personal use, though I want it to be easily used by others without bugs or a complicated setup. This means the following:

What scheme are you using?

The colors are from the Dracula theme: https://draculatheme.com

I want to customize the colors

First, find where the data is located for gBar. Possible locations:

The margins of the bar are inconsistent/messed up / Custom CSS broke.

If you have a custom style.[s]css, make sure that the margins/names/... are the same as the ones found in style/style.[s]css.\ If you've checked the css against upstream gBar and the issue persists, please open an issue.\ Major (breaking) changes to the css:

The Audio/Bluetooth widget doesn't open

Delete /tmp/gBar__audio//tmp/gBar__bluetooth. This happens, when you kill the widget before it closes properly (Automatically after a few seconds for the audio widget, or the close button for the bluetooth widget). Ctrl-C in the terminal (SIGINT) is fine though.

CPU Temperature is wrong / Lock doesn't work / Exiting WM does not work

See Configuration for your system

The icons are not showing!

Please install a Nerd Font from https://www.nerdfonts.com (I use Caskaydia Cove NF), and change style.css/style.scss accordingly (Refer to 'I want to customize the colors' for that). You will need a Nerd Font with version 2.3.0 or newer (For more details see this comment)

The tray doesn't show

Some apps sometimes don't actively query for tray applications. A fix for this is to start gBar before the tray app If it still doesn't show, please open an issue with your application. The tray icons are confirmed to work with Discord, Telegram, OBS, Steam and KeePassXC

Clicking on the tray opens a glitchy transparent menu

~This is semi-intentional and a known bug (See https://github.com/scorpion-26/gBar/pull/12#issuecomment-1529143790 for an explanation). You can make it opaque by setting the background-color property of .popup in style.css/style.scss~\ As of bc0281c this is now fixed! For things to look properly you may want to update your css (Specifically the selectors .popup and menu)