A minialistic, lightweight, customizable statusbar (formerly xdbar), inspired by xmobar and dwm's statusbar, for X11 Desktops (wayland in progress), that are compatible with EWMH specifications.
Rendering styled/clickable text, is inspired by xmobar's approach of wrapping text in XML like tags.
Populating statusbar is inspired by dwm statusbar's approach of using the root window's WM_NAME
attribute text.
+ - - - - - - - - - - - - - - - - - margin - - - - - - - - - - - - - - - - - +
¦ +------------------------------------------------------------------------+ ¦
¦ | + - - - - - - - - - - - - - - - padding - - - - - - - - - - - - - - -+ | ¦
¦ | ¦stdin WM_NAME¦ | ¦
¦ | +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | ¦
¦ +------------------------------------------------------------------------+ ¦
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
- margin is the empty space outside of the bar window.
- padding is the space between the bar window edges and the drawing region.
- stdin text is typically provided by the window manager.
- WM_NAME (of the root window) can be set using the
xsetroot
command.
Setting WM_NAME
#!/bin/bash
while true; do
xsetroot -name "$(whoami)@$(hostname) on $(uname -o) | $(date)"
sleep 1
done
USAGE: clubar [OPTIONS]...
OPTIONS:
-h, --help print this help message.
-v, --version print version.
-t, --topbar window position (top/bottom edge of the screen).
-c file, --config[=file]
filepath for runtime configs (supports: lua).
-g values, --geometry[=values]
window geometry as 'x,y,width,height' (eg: '0,0,1280,720').
-p values, --padding[=values]
window padding as 'left,right,top,bot' (eg: '0,0,10,10').
-m values, --margin[=values]
window margin as 'left,right,top,bot' (eg: '0,0,10,10').
-f color, --foreground[=color]
set default foreground color.
-b color, --background[=color]
set default background color.
--fonts[=values]
comma seperated fonts (eg: 'arial-10,monospace-10:bold').
SIGNALS:
USR1: toggle window visibility (e.g. pkill -USR1 clubar).
USR2: Reload configurations from external config file without reloading.
- free, libre and open source Operating System (currently doesn't support *BSD).
- gnu make
- libx11
- libxft
Optional
- pkg-config (if not installed, update
config.mk
accordingly). - lua (required if using
luaconfig
plugin).
Default build
make
Build with plugins enabled
make PLUGINS="luaconfig xrmconfig ..."
Install
sudo make install
Available Plugins (Note: plugins are just space seperated c filenames, from plugins directory, without file extension, see examples.)
- luaconfig: runtime config support with lua source file.
- xrmconfig: runtime config support with X Resources.
Template for styling text
<Tag:Mod1|Mod2|...|Modn=Value> Text </Tag>
Tag | Modifiers | Value | Description |
---|---|---|---|
Fn | - | Number | Index of 'fonts' array from configs (default: 0) |
Fg | - | Color | Valid color name |
Bg | - | Color | Valid color name |
Box | Left, Right, Top, Bottom | Color:Size | valid color name and size (default: 0) in pixels |
BtnL | Shift, Ctrl, Super, Alt | Command | Raw command |
BtnM | Shift, Ctrl, Super, Alt | Command | Raw command |
BtnR | Shift, Ctrl, Super, Alt | Command | Raw command |
ScrlU | Shift, Ctrl, Super, Alt | Command | Raw command |
ScrlD | Shift, Ctrl, Super, Alt | Command | Raw command |
<Fn=1><Fg=#131313> Colored </Fg> text with <Bg=#c6c6c6> background</Bg></Fn>.
<Box:Bottom=#ffffff:1> underlined </Box> text.
<Box:Top|Bottom|Left|Right=#ffffff:1> Boxed in </Box> text.
<BtnL=systemctl reboot> reboot </BtnL>
<BtnL:Ctrl|Shift=sudo -A reboot now> reboot w/ confirmation </BtnL>
<ScrlU:Ctrl=amixer sset Master 5%+>
<ScrlD:Ctrl=amixer sset Master 5%->
volume
</ScrlD>
</ScrlU>