System information agregator
Go to file
frosty 9ec3e94ae5 collection of changes
updated default config with go functions

changed reader function implementations to use only a single function

capture outputs in byte arrays and store outputs as byte arrays instead of strings

add date reader

move some main function code to separate functions

move flags parsing to main
2024-08-24 03:13:04 -04:00
lib collection of changes 2024-08-24 03:13:04 -04:00
.editorconfig first prototype version 2024-07-30 04:02:05 -04:00
.gitignore name change and more modules added. config not started. 2024-08-14 12:28:29 -04:00
config.go collection of changes 2024-08-24 03:13:04 -04:00
go.mod allow setting the x root window name 2024-08-20 22:33:37 +00:00
go.sum allow setting the x root window name 2024-08-20 22:33:37 +00:00
LICENSE first prototype version 2024-07-30 04:02:05 -04:00
main.go collection of changes 2024-08-24 03:13:04 -04:00
README.md add example output section 2024-08-20 23:08:34 +00:00

modbot

modbot is a seriously over-engineered program for querying different information about your system. Often used with a status bar like dzen, lemonbar, or even the dwm status bar via the -x flag.

Each part of the output is a module, and modbot is an agregator for these modules. You can query different information about your system like load average, CPU temperature, wireless SSID, and even the output of an arbitrary command or file.

The modules that are in the output are determined at compile time, within the config.go file.

Attributions

This project was inspired by gocaudices, which I've used in the past. I created this to be window manager and status bar agnostic, in addition to allowing more options for where the input comes from.

Some ideas for how special cases should be handled were taken from mblocks, which is another great project in the same vein as this.

Usage

Usage of modbot:
  -x    set x root window name

Example

Configuration

var (
        delim  = "] ["
        prefix = "["
        suffix = "]"
)

var modules = []Module{
        {
                Func:     readers.ReadExec("statusbar cpu"),
                Interval: 5 * time.Second,
        },
        {
                Func:   readers.ReadExec("statusbar volume"),
                Signal: 1,
        },
        {
                Func:     readers.ReadExec("statusbar battery"),
                Interval: 60 * time.Second,
        },
        {
                Func:     readers.ReadExec("statusbar date"),
                Interval: 1 * time.Second,
        },
        {
                Func:     readers.ReadExec("statusbar loadavg"),
                Interval: 5 * time.Second,
        },
}

Output

[CPU 8%] [VOL 35%] [AC 71%] [23:04:02] [0.36]

Do note that the output is arbitrary as the scripts are not part of the program.