- Description:
- a very basic X status bar
- Last Change:
Commit Briefs
README.md, bxbar.1: Add user-facing documentation. (main)
- Create README.md detailing build, configuration, and pipeline. - Create bxbar.1 manual page with standard SEE ALSO references.
bxbar.c: Standardize code structure and improve logging safety.
- Apply static qualifiers to run() and draw() for consistency. - Forward-declare text_fit() to match the call hierarchy. - Reorder functions to mirror the execution flow. - Remove redundant initial draw logic.
bxbarrc.lua: Refactor workspace loop and refine battery UX.
- Use table.insert and table.concat for workspace string building. - Update battery icon logic to use math.ceil for more intuitive visual depletion. - Remove dead code remnants and redundant comments.
bxnet.c, config.def.h, bxbarrc.lua, Makefile: Implement C helper
for network interface status. - Create bxnet to monitor /sys/class/net/ for active interfaces. - Implement kernel-level detection for WiFi and Ethernet. - Define network state icons in config.def.h. - Update Makefile to build the new helper binary.
bxbar.c, config.def.h: Implement die() and refine logging strategy.
- Introduce die() for fatal error handling and standardized exit codes. - Implement compile-time DEBUG_LOGGING gate in config.def.h. - Remove hardcoded log path; pipe logmsg() output to stderr. - Standardize error reporting using die() in setup and initialization.
Branches
Tree
README.md
# bxbar
A very basic X status bar.
## Just the Right Amount of Info
Similar to my path with bxwm and bxhkd, I wanted a status bar that
did neither more nor less than what I needed. I wanted a program
that only renders text, leaving the logic of gathering system data
to more appropriate tools. bxbar is the result: a minimal, EWMH
compliant dock that simply renders a string from standard input.
## Dependencies
- Xlib
- Xft
- A C compiler compliant with the C11 standard.
## Build
Compile bxbar from source.
```
make
```
## Install
Install the binary, man page, and run command script. Note that root
privileges are not required as the default destination is `~/.local/`.
```
make install
```
## Uninstall
Remove the binary, man page, and run command script.
```
make uninstall
```
## Configuration
__bxbar__ is configured at compile-time by editing config.def.h.
After making changes, the program must be recompiled and
reinstalled. See bxbar(1) for details.
## Design & Functionality
__bxbar__ is built around a set of opinionated primitives:
- Renderer, NOT an orchestrator
- Reads from stdin
- Splits output into two sections (left and right) using an invisible separator (\x01)
- Renders to the top of the screen adhering to EWMH docking standards
- Helper Binaries
- bxinfo: Queries EWMH atoms directly from the X server for workspace/window state
- bxnet: Queries /sys/class/net/ to provide network connection status
- Lua Orchestration
- bxbarrc.lua: The orchestrator that gathers data from helpers and system files, formats the output, and pipes the string to bxbar
Add the following to your `/.xinitrc` to start __bxbar__.
```
"$HOME"/.local/bin/bxbarrc.lua | "$HOME"/.local/bin/bxbar &
```
When __bxbar__ is used with bxwm(1) and bxhkd(1), add the following
to your `~/.xinitrc`.
```
# Start bxwm in the background, give it a moment to initialize
"$HOME"/.local/bin/bxwm &
sleep 1
# Now start the rest of the session
"$HOME"/.local/bin/bxbarrc.lua | "$HOME"/.local/bin/bxbar &
"$HOME"/.local/bin/bxhkd &
wait
```
