/clubar

A minialistic statusbar, inspired by xmobar and dwm's statusbar.

Primary LanguageCGNU General Public License v3.0GPL-3.0

cluless statusbar

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.

dark.png


light.png

Description

  + - - - - - - - - - - - - - - - - - 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

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.

Requirements

  • 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).

Build

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.

Styling text

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

Examples

<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>

Licence:

GPLv3