Xinqi Bao's Git

534eee0378522adbe7469424cfb36288244acb28
[slstatus.git] / README.md
1 ![slstatus](slstatus.png)
2
3 **slstatus** is a suckless and lightweight status monitor for window managers that use WM_NAME as statusbar (e.g. DWM). It is written in pure C without any system calls and only reads from files most of the time. It is meant to be a better alternative to Bash scripts (inefficient) and Conky (bloated for this use).
4
5 If you write a bash script that shows system information in WM_NAME, it executes a huge amount of external commands (top, free etc.) every few seconds. This results in high system resource usage. slstatus solves this problem by only using C libraries and/or reading from files in sysfs/procfs.
6
7 Looking at the LOC (lines of code) of the [Conky project](https://github.com/brndnmtthws/conky), very interesting: *28.346 lines C++, 219 lines Python and 110 lines Lua*. slstatus currently has about **800 lines of clean documented C code** and even includes additional possibilities as it can be customized and extended very easily. Configure it by customizing the config.h (C header file) which is secure and fast as no config files are parsed at runtime.
8
9 The following information is included:
10
11 - Battery percentage
12 - CPU usage (in percent)
13 - Custom shell commands
14 - Date and time
15 - Disk[s] status (free storage, percentage, total storage and used storage)
16 - Available entropy
17 - username/gid/uid
18 - Hostname
19 - IP addresses
20 - Load average
21 - Memory status (free memory, percentage, total memory and used memory)
22 - Temperature
23 - Uptime
24 - Volume percentage + mute status (alsa)
25 - WiFi signal percentage and essid
26
27 Multiple entries per function are supported and everything can be reordered and customized via the C header file config.h (similar to DWM).
28
29 ## Usage
30
31 ### Installation
32
33 Before you continue, please be sure that a C compiler (preferrably gcc), GNU make and `alsa-lib` (for volume percentage) are installed. Then copy config.def.h to config.h and customize it to fit your needs. Recompile and install it after modifications:
34
35 $ make clean all
36 # make install
37
38 ### Starting
39
40 Write the following code to your ~/.xinitrc (or any other initialization script):
41
42 slstatus &
43
44 ## Contributing
45
46 In [TODO.md](TODO.md) there is a list of things that have to be done.
47
48 People who contributed are listed in [CONTRIBUTORS.md](CONTRIBUTORS.md).
49
50 For detailed information about coding style and restrictions see [CONTRIBUTING.md](CONTRIBUTING.md)
51
52 ## License
53
54 See [LICENSE](LICENSE).