mirror of
https://github.com/scorpion-26/gBar.git
synced 2024-11-22 11:12:49 +00:00
111 lines
3.9 KiB
Markdown
111 lines
3.9 KiB
Markdown
# gBar
|
|
My personal blazingly fast and efficient status bar + widgets, in case anyone finds a use for it.
|
|
|
|
## Prerequisites
|
|
*If you don't have the optional dependencies, some features are not available and you must manually disable them.*
|
|
- wayland
|
|
- Hyprland(Optional -> For workspaces widget)
|
|
- nvidia-utils(Optional -> For GPU status)
|
|
- bluez(Optional -> For Bluetooth status)
|
|
- GTK 3.0
|
|
- gtk-layer-shell
|
|
- PulseAudio server (PipeWire works too!)
|
|
- meson, gcc/clang, ninja
|
|
|
|
## Building and installation
|
|
1. Configure with meson
|
|
|
|
*All optional dependencies enabled*
|
|
```
|
|
meson build --buildtype=release
|
|
```
|
|
*All optional dependencies are disabled*
|
|
```
|
|
meson build --buildtype=release -DHasHyprland=false -DHasNvidia=false -DHasBlueZ=false
|
|
```
|
|
4. Build and install
|
|
```
|
|
ninja -C build && sudo ninja -C build install
|
|
```
|
|
5. Copy css styling into your config directory($XDG_CONFIG_HOME). This will most likely be ~/.config
|
|
```
|
|
mkdir ~/.config/gBar && cp css/* ~/.config/gBar/
|
|
```
|
|
|
|
## Running gBar
|
|
*Open bar on monitor 0*
|
|
```
|
|
gBar bar 0
|
|
```
|
|
*Open audio flyin (either on current monitor or on the specified monitor)*
|
|
```
|
|
gBar audio [monitor]
|
|
```
|
|
|
|
## Gallery
|
|
![The bar with default css](/assets/bar.png)
|
|
|
|
*Bar with default css*
|
|
|
|
![The audio flyin with default css](/assets/audioflyin.png)
|
|
|
|
*Audio widget with default css*
|
|
|
|
## Features / Widgets
|
|
Bar:
|
|
- Workspaces (Hyprland only)
|
|
- Time
|
|
- Bluetooth (BlueZ only)
|
|
- Audio control
|
|
- Power control
|
|
- Shutdown
|
|
- Restart
|
|
- Suspend
|
|
- Lock (Requires manual setup, see FAQ)
|
|
- Exit/Logout (Hyprland only)
|
|
- CPU stats: Utilisation, temperature (Temperature requires manual setup, see FAQ)
|
|
- RAM: Utilisation
|
|
- GPU stats (Nvidia only): Utilisation, temperature, VRAM
|
|
- Disk: Free/Total
|
|
|
|
Audio Flyin:
|
|
- Audio control
|
|
|
|
|
|
## FAQ
|
|
### There are already many GTK bars out there, why not use them?
|
|
- Waybar:
|
|
Great performance, though limited styling(Almost no dynamic sliders, revealers, ...) and (at least for me) buggy css.
|
|
- eww:
|
|
Really solid project with many great customization options. There is one problem though: Performance
|
|
Due to the way eww configuration is set up, for each dynamic variable (the number of them quickly grows) you need a shell command which opens a process.
|
|
This became quickly a bottleneck, where the bar took up 10% of the CPU-time due to the creation of many processes all the time (without even considering the workspace widget).
|
|
gBar implements all of the information gathering(CPU, RAM, GPU, Disk, ...) in native C++ code, which is WAY faster. In fact, gBar was meant to be a fast replacement/alternative for eww for me.
|
|
|
|
And lastly: Implementing it myself is fun and a great excuse to learn something new!
|
|
|
|
### What scheme are you using?
|
|
The colors are from the Dracula theme: https://draculatheme.com
|
|
|
|
### I want to customize the colors
|
|
If you have SASS installed: Edit ~/.config/gBar/style.scss and regenerate style.css with it
|
|
|
|
Else: Edit ~/.config/gBar/style.css directly!
|
|
|
|
### I want to modify the widgets behaviour/Add my own widgets
|
|
Unfortunately, you need to implement it yourself in C++. For inspiration look into src/Bar.cpp or src/AudioFlyin.cpp, or open an issue(Maybe I'll implement it for you).
|
|
|
|
### The Audio widget doesn't open
|
|
Delete /tmp/gBar__audio.
|
|
This happens, when you kill the widget before it closes automatically after a few seconds.
|
|
|
|
### CPU Temperature is wrong/Lock doesn't work
|
|
*This is caused by the way my system and/or Linux is setup.*
|
|
|
|
Temperature: Edit the variable ```tempFilePath``` in ```src/System.cpp``` to the correct thermal zone file and recompile. The one for my system is *very* likely wrong.
|
|
|
|
Lock: There is no generic way to lock a system. So please, implement it to suit your needs (Replace XXX by a shell command in ```src/System.cpp```)
|
|
|
|
### 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)
|
|
|