suckless/slstatus.git
6 years agouptime: unification of the uptime function for linux/openbsd
Tobias Tschinkowitz [Fri, 1 Jun 2018 18:10:34 +0000 (20:10 +0200)]
uptime: unification of the uptime function for linux/openbsd

6 years agowifi: fixed disconnected wifi status on openbsd
Tobias Tschinkowitz [Thu, 31 May 2018 11:53:49 +0000 (13:53 +0200)]
wifi: fixed disconnected wifi status on openbsd

6 years agoClean up header includes
Aaron Marcher [Wed, 30 May 2018 17:35:37 +0000 (19:35 +0200)]
Clean up header includes

 - Remove <errno.h> because related functions are in util.c now
 - Remove corresponding <string.h> if not used otherwise

6 years agoUpdate LICENSE for Quentin
Aaron Marcher [Tue, 29 May 2018 20:26:40 +0000 (22:26 +0200)]
Update LICENSE for Quentin

6 years agoFlush the output stream instead of arbitrarily disabling buffering
Quentin Rameau [Tue, 29 May 2018 19:32:29 +0000 (21:32 +0200)]
Flush the output stream instead of arbitrarily disabling buffering

This is (arguably) more elegant and it matches Xlib output logic.
Also use puts instead of printf as we don't do formating there.

6 years agoDon't explicitly list each component-target
Laslo Hunhold [Tue, 29 May 2018 19:24:43 +0000 (21:24 +0200)]
Don't explicitly list each component-target

I made a mistake while reading the Posix spec. In fact, the implicit
prerequisite imposed by the .c.o-rule is evaluated as expected, even if
the .c is not given in the target rule.

This partially reverts 0efd64ffaa04715eff9c834c437562952c4531cd.

6 years agoswap: removed unused include
Tobias Tschinkowitz [Tue, 29 May 2018 12:28:39 +0000 (14:28 +0200)]
swap: removed unused include

6 years agoRefactor swap.c to use getline() instead of buf-filling
Laslo Hunhold [Mon, 28 May 2018 19:16:02 +0000 (21:16 +0200)]
Refactor swap.c to use getline() instead of buf-filling

This drops a lot of code and even though we are using a common function,
the specification of only the needed things keeps it very efficient and
even more efficient in memory and time than the previous solution.

6 years agoUpdate LICENSE for Tobias
Aaron Marcher [Mon, 28 May 2018 14:17:03 +0000 (16:17 +0200)]
Update LICENSE for Tobias

6 years agoFix object order and stop using a GNU make idiom
Laslo Hunhold [Mon, 28 May 2018 13:58:28 +0000 (15:58 +0200)]
Fix object order and stop using a GNU make idiom

6 years agoExplicitly list component-objects in the Makefile
Laslo Hunhold [Sun, 27 May 2018 20:40:00 +0000 (22:40 +0200)]
Explicitly list component-objects in the Makefile

There was a long tinkering process at farbfeld about this, but the sad
truth is that it's the only way to make the Makefile truly portable.
Listing it just as

   $(COM:=.o): config.mk $(REQ:=.h)

omits the dependency on the c-file itself, which incurs that strictly
speaking the object file is not depending on the source file, which is
nonsense.

You don't see strictly Posix compliant Makefiles around very often and
most use nasty GNU-extensions everywhere. It is a good idea to go ahead
as a fitting example and show how to write them portably.

6 years agoUse E-notation for large powers of 10
Laslo Hunhold [Sun, 27 May 2018 15:57:52 +0000 (17:57 +0200)]
Use E-notation for large powers of 10

6 years agoRevert "Add basic backlight percentage support"
Aaron Marcher [Sun, 27 May 2018 14:46:03 +0000 (16:46 +0200)]
Revert "Add basic backlight percentage support"

On OpenBSD the backlight percentage cannot be retrieved in a simple way.
The only two solutions we are aware of for now are:

 - reading from /dev/ttyC0: which isn't possible without changing
 permissions or running slstatus as root
 - linking against xcb-xrandr: which is bloat and does not work in every
 case appearently

This reverts commit 37724ac2c3f496f4736223d0d8e5d8fecb933590 for now.

6 years agoram: fixed int overflow on pagetok macro
Tobias Tschinkowitz [Thu, 24 May 2018 10:09:26 +0000 (12:09 +0200)]
ram: fixed int overflow on pagetok macro

6 years agoRefactor keymap.c
Laslo Hunhold [Wed, 23 May 2018 13:29:37 +0000 (15:29 +0200)]
Refactor keymap.c

 - Get rid of camel-casing
 - Don't use all-caps for variable names
 - use LEN()-macro
 - use strncmp() rather than strstr() for prefix-checking
 - clean up the tokenizer-loop and don't use copies
 - make the loop more readable by separating different breaking
   conditions
 - stricter error-checking and cleanup
 - store the layout directly with bprintf rather than having
   a separate buffer

6 years agoRefactor snprintf-usage in util.c
Laslo Hunhold [Wed, 23 May 2018 11:51:50 +0000 (13:51 +0200)]
Refactor snprintf-usage in util.c

6 years agokeymap: Add braces for for loop
Aaron Marcher [Wed, 23 May 2018 11:30:45 +0000 (13:30 +0200)]
keymap: Add braces for for loop

6 years agoAdd keymap to README
Aaron Marcher [Wed, 23 May 2018 09:50:08 +0000 (11:50 +0200)]
Add keymap to README

6 years agoAdd Michael Buch to LICENSE
Aaron Marcher [Wed, 23 May 2018 08:12:20 +0000 (10:12 +0200)]
Add Michael Buch to LICENSE

6 years agoAdd keymap component
Michael Buch [Wed, 23 May 2018 06:16:30 +0000 (07:16 +0100)]
Add keymap component

Adding a new keymap component that will
indicate the current keyboard layout (language)
and variant if any was set. I use the
standard X11 XKB APIs to retrieve and parse
the xkb_symbols set with setxkbmap.

6 years agoRemove o-flag as it is redundant
Laslo Hunhold [Mon, 21 May 2018 19:31:53 +0000 (21:31 +0200)]
Remove o-flag as it is redundant

Even if we extend the flag to be an n-flag with a numerical input, we
already have other Unix-tools to take care of us much more flexibly,
e.g. with head(1) you can easily get the first 10 outputs with

slstatus -s | head -n 10,

but also e.g. discard the first one and then get the consecutive 10
outputs.

For the X11-root-window-name, you can limit the runtime with timeout(1)
or a comparable solution.

This reverts commit fa8b939990ed0648f99b0cbeba4efed807160db3.

6 years agoCheck printf() for output errors
Laslo Hunhold [Tue, 22 May 2018 10:50:43 +0000 (12:50 +0200)]
Check printf() for output errors

This way cases like

$ slstatus -s > /dev/full

are properly caught and the program terminated with the proper return
code.

6 years agonetspeeds: Fix indentation
Aaron Marcher [Tue, 22 May 2018 10:42:31 +0000 (12:42 +0200)]
netspeeds: Fix indentation

6 years agoAdd basic backlight percentage support
David Demelier [Tue, 22 May 2018 07:23:29 +0000 (09:23 +0200)]
Add basic backlight percentage support

At the moment linux only, but will add support for OpenBSD as well.

6 years agoChange to fmt_human in netspeeds on OpenBSD
Aaron Marcher [Tue, 22 May 2018 10:21:52 +0000 (12:21 +0200)]
Change to fmt_human in netspeeds on OpenBSD

Thanks to Hiltjo

6 years agoswap.c: Refactor getstats() and its usage
Laslo Hunhold [Mon, 21 May 2018 21:03:34 +0000 (23:03 +0200)]
swap.c: Refactor getstats() and its usage

Add a return value so we are able to check any errors and actually fail
when there has been a critical error instead of carrying on uselessly.

6 years agoRefactor fmt_human() and fix a bug
Laslo Hunhold [Mon, 21 May 2018 18:08:56 +0000 (20:08 +0200)]
Refactor fmt_human() and fix a bug

It is not necessary to copy memory or anything. Just keep a pointer to
the active prefix-array and assign the length of the arrays to a
variable.

Make the code more readable by using a switch, be more strict when an
invalid base is passed to it and fix a small oversight in the bottom of
the code where the base 1024 was forgotten to generalized.

6 years agoMerge fmt_human_2 and fmt_human_10 to one function
Aaron Marcher [Mon, 21 May 2018 12:44:21 +0000 (14:44 +0200)]
Merge fmt_human_2 and fmt_human_10 to one function

Now only one function, fmt_human, takes an additional argument "base".

6 years agoRemove fmt from load_avgs for consistency
Aaron Marcher [Mon, 21 May 2018 12:14:45 +0000 (14:14 +0200)]
Remove fmt from load_avgs for consistency

In a later commit something like that will be enabled for every
component

6 years agoAdd option to output only once and exit
Aaron Marcher [Mon, 21 May 2018 12:07:41 +0000 (14:07 +0200)]
Add option to output only once and exit

6 years agobattery_remaining: check for division by zero
Aaron Marcher [Sun, 20 May 2018 22:42:06 +0000 (00:42 +0200)]
battery_remaining: check for division by zero

6 years agobattery_remaining: Change float to double
Aaron Marcher [Sun, 20 May 2018 22:41:03 +0000 (00:41 +0200)]
battery_remaining: Change float to double

6 years agobattery: Minor coding style fixes
Aaron Marcher [Sun, 20 May 2018 22:36:59 +0000 (00:36 +0200)]
battery: Minor coding style fixes

- Line length
- Spacing and indentation
- No explicit checks for NULL

6 years agoIncrease readability for load_uvmexp return
Aaron Marcher [Sun, 20 May 2018 22:29:54 +0000 (00:29 +0200)]
Increase readability for load_uvmexp return

6 years agoRemove units from numbers
Aaron Marcher [Sun, 20 May 2018 22:16:54 +0000 (00:16 +0200)]
Remove units from numbers

This is a first step to decouple formatting from information because of
two reasons:

 1. The components should only gather and return the values by design
 2. Fine grained user control should be a focus

Scaling will be implemented in a different way in a later commit.

6 years agoswap_perc: check for division by zero on obsd too
Aaron Marcher [Sun, 20 May 2018 22:02:33 +0000 (00:02 +0200)]
swap_perc: check for division by zero on obsd too

6 years agoswap_perc: check for division by zero
Aaron Marcher [Sun, 20 May 2018 21:53:26 +0000 (23:53 +0200)]
swap_perc: check for division by zero

6 years agoAdd David Demelier to LICENSE
Aaron Marcher [Sun, 20 May 2018 20:16:39 +0000 (22:16 +0200)]
Add David Demelier to LICENSE

6 years agoSupport energy_now/power_now in battery_remaining
David Demelier [Sun, 20 May 2018 07:42:16 +0000 (09:42 +0200)]
Support energy_now/power_now in battery_remaining

On some laptops (mostly thinkpads), the remaining time may be
expressed in µWh using energy_now and power_now files rather than µAh
for charge_now and current_now.

Add pick function to conditionally select appropriate one.

6 years agoip: fixed memory leak
Tobias Tschinkowitz [Sun, 20 May 2018 13:53:48 +0000 (15:53 +0200)]
ip: fixed memory leak

free the interface list before returning from the function

6 years agoCheck return value of pclose()
Laslo Hunhold [Sat, 19 May 2018 22:57:24 +0000 (00:57 +0200)]
Check return value of pclose()

6 years agoRefactor ram.c
Aaron Marcher [Sat, 19 May 2018 22:42:07 +0000 (00:42 +0200)]
Refactor ram.c

6 years agoMake temp more readable on Linux
Aaron Marcher [Sat, 19 May 2018 22:30:16 +0000 (00:30 +0200)]
Make temp more readable on Linux

6 years agoRefactor entropy.c
Laslo Hunhold [Sat, 19 May 2018 22:18:08 +0000 (00:18 +0200)]
Refactor entropy.c

6 years agoRemove initialization to 0 for static vars
Aaron Marcher [Sat, 19 May 2018 22:17:35 +0000 (00:17 +0200)]
Remove initialization to 0 for static vars

6 years agoRemove unnecessary "valid" variable in cpu_perc
Aaron Marcher [Sat, 19 May 2018 22:16:20 +0000 (00:16 +0200)]
Remove unnecessary "valid" variable in cpu_perc

6 years agoAdd unit to temperature
Aaron Marcher [Sat, 19 May 2018 22:02:49 +0000 (00:02 +0200)]
Add unit to temperature

6 years agoImplement scaling for cpu_freq
Aaron Marcher [Sat, 19 May 2018 21:58:14 +0000 (23:58 +0200)]
Implement scaling for cpu_freq

6 years agoImplement fmt_human_2() and fmt_human_10()
Laslo Hunhold [Sat, 19 May 2018 20:52:17 +0000 (22:52 +0200)]
Implement fmt_human_2() and fmt_human_10()

These functions take the raw number and a unit and automatically
print it out "scaled down" to a proper SI-prefix, for powers of 2
and 10 respectively.

Apply them to the 2-power cases and keep the 10-power for a later
commit.

6 years agoAdd the percent sign to *_perc functions
Aaron Marcher [Sat, 19 May 2018 18:33:06 +0000 (20:33 +0200)]
Add the percent sign to *_perc functions

Units should be added to the corresponding numbers

6 years agoIncrease precision in netspeeds.c
Laslo Hunhold [Sat, 19 May 2018 18:09:38 +0000 (20:09 +0200)]
Increase precision in netspeeds.c

First dividing by interval before multiplying with 1000 decreases the
precision by +-(interval - 1) * 1000, as interval arithmetic always
applies the Gauß-function to the result.

This is not necessary and simply reordering the operations mitigates
this.

6 years agoImplement esnprintf() and make formatted calls more efficient
Laslo Hunhold [Sat, 19 May 2018 17:33:04 +0000 (19:33 +0200)]
Implement esnprintf() and make formatted calls more efficient

Within the components, snprintf() was unchecked and had inefficient
calls in some places.
We implement esnprintf() that does all the dirty laundry for us
and use it exclusively now.

6 years agoSimplify ipv* functions
Aaron Marcher [Sat, 19 May 2018 11:34:18 +0000 (13:34 +0200)]
Simplify ipv* functions

6 years agoUse `int` for flags
Aaron Marcher [Sat, 19 May 2018 11:29:21 +0000 (13:29 +0200)]
Use `int` for flags

6 years agoRevert aac29e2 as it is nonsense
Aaron Marcher [Sat, 19 May 2018 11:25:35 +0000 (13:25 +0200)]
Revert aac29e2 as it is nonsense

6 years agoSet {r,t}xbytes 0 before incrementing them on OBSD
Aaron Marcher [Sat, 19 May 2018 11:19:53 +0000 (13:19 +0200)]
Set {r,t}xbytes 0 before incrementing them on OBSD

6 years agoMissing assignment for last commit
Aaron Marcher [Sat, 19 May 2018 11:12:06 +0000 (13:12 +0200)]
Missing assignment for last commit

6 years agoUnify and simplify netspeed logic and types
Aaron Marcher [Sat, 19 May 2018 11:07:05 +0000 (13:07 +0200)]
Unify and simplify netspeed logic and types

6 years agonetspeeds: added error condition for openbsd
Tobias Tschinkowitz [Sat, 19 May 2018 09:23:16 +0000 (11:23 +0200)]
netspeeds: added error condition for openbsd

implemented additional error condition for openbsd netstat in case the
interface could not be found in the interface list or if_data is not
readable.

6 years agouptime: Format function is static
Aaron Marcher [Fri, 18 May 2018 23:55:31 +0000 (01:55 +0200)]
uptime: Format function is static

6 years agobattery: Move out struct as common code
Aaron Marcher [Fri, 18 May 2018 23:49:46 +0000 (01:49 +0200)]
battery: Move out struct as common code

6 years agoimplemented openbsd netspeed functions
Tobias Tschinkowitz [Fri, 18 May 2018 23:29:20 +0000 (01:29 +0200)]
implemented openbsd netspeed functions

implemented the netspeed functionality for openbsd.
furthermore the static keyword was removed of the interval variable in
config.def.h for usage as extern variable.

6 years agoAdd netspeeds to config.def.h
Aaron Marcher [Fri, 18 May 2018 22:40:59 +0000 (00:40 +0200)]
Add netspeeds to config.def.h

6 years agoAdd network speed functions
Aaron Marcher [Fri, 18 May 2018 22:31:33 +0000 (00:31 +0200)]
Add network speed functions

6 years agoImplement fmt_scaled for ram_* functions
Aaron Marcher [Fri, 18 May 2018 21:38:59 +0000 (23:38 +0200)]
Implement fmt_scaled for ram_* functions

6 years agoFix ram_free for Linux
Aaron Marcher [Fri, 18 May 2018 21:32:00 +0000 (23:32 +0200)]
Fix ram_free for Linux

6 years agoImplement fmt_scaled for swap_* functions
Aaron Marcher [Fri, 18 May 2018 21:19:18 +0000 (23:19 +0200)]
Implement fmt_scaled for swap_* functions

6 years agoImplement fmt_scaled for disk_* functions
Aaron Marcher [Fri, 18 May 2018 21:14:55 +0000 (23:14 +0200)]
Implement fmt_scaled for disk_* functions

6 years agoAdd fmt_scaled util function
Aaron Marcher [Fri, 18 May 2018 21:14:10 +0000 (23:14 +0200)]
Add fmt_scaled util function

6 years agoUse %d instead of accidentally %i
Aaron Marcher [Fri, 18 May 2018 17:58:51 +0000 (19:58 +0200)]
Use %d instead of accidentally %i

6 years agoPort battery_remaining to Linux
Aaron Marcher [Fri, 18 May 2018 15:25:09 +0000 (17:25 +0200)]
Port battery_remaining to Linux

Additionally unify the format of battery_state and uptime

6 years agoFix memory leak
Aaron Marcher [Fri, 18 May 2018 14:55:37 +0000 (16:55 +0200)]
Fix memory leak

6 years agobattery: fixed remaining time on connected AC
Tobias Tschinkowitz [Fri, 18 May 2018 14:33:51 +0000 (16:33 +0200)]
battery: fixed remaining time on connected AC

when an AC is connected apm_info shows a non-valid value for remaining
minutes. it was decided that in that case the function should return an
empty string.

6 years agoFix indentation
Aaron Marcher [Fri, 18 May 2018 13:32:15 +0000 (15:32 +0200)]
Fix indentation

Tabs for indentation, spaces for alignment

6 years agoAdd battery_remaining function on OpenBSD
Tobias Tschinkowitz [Fri, 18 May 2018 12:43:04 +0000 (14:43 +0200)]
Add battery_remaining function on OpenBSD

Implementation of a battery_remaining function which returns the
remaining battery time in HH:MM format. Linux function still needs
implementation.
Move common code to load_apm_power_info

6 years agoAdd warn() and die()
Laslo Hunhold [Fri, 18 May 2018 08:59:05 +0000 (10:59 +0200)]
Add warn() and die()

Given slstatus is a tool that runs in the background, most likely run
from .xinitrc, it's important to prepend the name of the tool to error
messages so it becomes clear where the error is coming from.

To make this much more consistent, this commit adds warn() and die()
utility functions consistent with other suckless projects and adapts all
calls to fprintf(stderr, *) to the warn() and die() functions, greatly
increasing the readability of the code.

6 years agoAudit slstatus.c
Laslo Hunhold [Fri, 18 May 2018 08:07:50 +0000 (10:07 +0200)]
Audit slstatus.c

 1) Remove setlocale() (locales are harmful and any 'issues' shall
    be fixed in different ways that are expected).
 2) Disable buffering on stdout with setbuf() rather than flushing
    it each time.
 3) Make error messages more consistent.
 4) Add error checks where applicable.
 5) Make code a bit more readable where res is assigned.
 6) Use XFlush() rather than XSync() (we don't need to wait for the
    XServer to react, which could lead to long hangs on our side).

6 years agoProperly handle *snprintf() errors
Laslo Hunhold [Thu, 17 May 2018 21:23:28 +0000 (23:23 +0200)]
Properly handle *snprintf() errors

Posix guarantees that the resulting string is null-terminated, even if
we have an overflow. Instead of doing what has already been done,
properly warn when there has been an error or overflow, so the user can
do something about it.

6 years agoRemove UNUSED macro
Aaron Marcher [Thu, 17 May 2018 18:05:57 +0000 (20:05 +0200)]
Remove UNUSED macro

Use variables named unused instead which is simpler

6 years agoMark unused parameters, fix compiler warnings
Aaron Marcher [Thu, 17 May 2018 16:29:25 +0000 (18:29 +0200)]
Mark unused parameters, fix compiler warnings

6 years agowifi: Fix order and add missing header
Aaron Marcher [Thu, 17 May 2018 16:14:08 +0000 (18:14 +0200)]
wifi: Fix order and add missing header

<sys/select.h> is needed before <net80211/ieee80211_ioctl.h> on OpenBSD
to define NBBY and shut up compiler warnings.

6 years agowifi: Change memmove to memcpy on OpenBSD
Aaron Marcher [Thu, 17 May 2018 16:08:31 +0000 (18:08 +0200)]
wifi: Change memmove to memcpy on OpenBSD

6 years agoUnify type of in for loops
Aaron Marcher [Thu, 17 May 2018 16:05:38 +0000 (18:05 +0200)]
Unify type of  in for loops

6 years agowifi_essid: Fix coding style
Aaron Marcher [Thu, 17 May 2018 15:59:05 +0000 (17:59 +0200)]
wifi_essid: Fix coding style

Only initialize variables at the beginning of a block

6 years agoUnify type of `i` in for loops
Aaron Marcher [Thu, 17 May 2018 15:40:11 +0000 (17:40 +0200)]
Unify type of `i` in for loops

int for normal indexes
size_t for usage with the LEN macro

6 years agoChange done to int as it is the CPU's natural type
Aaron Marcher [Thu, 17 May 2018 15:28:32 +0000 (17:28 +0200)]
Change done to int as it is the CPU's natural type

6 years agoChange interval to unsigned int
Aaron Marcher [Thu, 17 May 2018 15:25:31 +0000 (17:25 +0200)]
Change interval to unsigned int

6 years agoAdd comments for battery_* functions on OpenBSD
Aaron Marcher [Thu, 17 May 2018 15:24:47 +0000 (17:24 +0200)]
Add comments for battery_* functions on OpenBSD

6 years agoadded comment for temp function (openbsd)
Tobias Tschinkowitz [Thu, 17 May 2018 11:19:29 +0000 (13:19 +0200)]
added comment for temp function (openbsd)

6 years agocorrected calculations for disk space on openbsd
Tobias Tschinkowitz [Thu, 17 May 2018 10:43:21 +0000 (12:43 +0200)]
corrected calculations for disk space on openbsd

6 years agoUpdate README
Aaron Marcher [Wed, 16 May 2018 21:19:33 +0000 (23:19 +0200)]
Update README

6 years agowifi: Fix coding style
Aaron Marcher [Wed, 16 May 2018 21:17:30 +0000 (23:17 +0200)]
wifi: Fix coding style

Use block for single statement ifs
When functions return -1 for error test against 0 not -1
Newlines

6 years agoload_ieee80211_nodereq: Fix typo
Aaron Marcher [Wed, 16 May 2018 21:08:33 +0000 (23:08 +0200)]
load_ieee80211_nodereq: Fix typo

6 years agowifi: Move out common headers
Aaron Marcher [Wed, 16 May 2018 20:57:13 +0000 (22:57 +0200)]
wifi: Move out common headers

6 years agoadded wifi functionality for openbsd
Tobias Tschinkowitz [Wed, 16 May 2018 20:37:43 +0000 (22:37 +0200)]
added wifi functionality for openbsd

display ESSID and signal strength percentage

6 years agocorrected calculation for swap on openbsd
Tobias Tschinkowitz [Wed, 16 May 2018 11:26:34 +0000 (13:26 +0200)]
corrected calculation for swap on openbsd

The swapctl(2) function fills the swapent struct with 512KB blocks.
As we want to display in GB, i just modified the calculation for this to
get the expected output.

6 years agoconsistent calculation of ram_* on openbsd
Tobias Tschinkowitz [Wed, 16 May 2018 07:57:38 +0000 (09:57 +0200)]
consistent calculation of ram_* on openbsd

6 years agoAdd he4d to LICENSE
Aaron Marcher [Wed, 16 May 2018 06:13:09 +0000 (08:13 +0200)]
Add he4d to LICENSE

6 years agoupdated ram_total and ram_free (obsd)
Tobias Tschinkowitz [Tue, 15 May 2018 22:45:41 +0000 (00:45 +0200)]
updated ram_total and ram_free (obsd)

6 years agoCast CPU percentage to int and fix indenation
Aaron Marcher [Mon, 14 May 2018 18:54:48 +0000 (20:54 +0200)]
Cast CPU percentage to int and fix indenation