Compare commits
	
		
			4 Commits
		
	
	
		
			c571a09f4b
			...
			conky-cli-
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 56a6e890dd | |||
| c5edf04976 | |||
| 7fb4d8a8b0 | |||
| e7063807dd | 
							
								
								
									
										38
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								README.md
									
									
									
									
									
								
							@@ -4,34 +4,16 @@ root window (mostly I only see one window taking up the entire screen, with a
 | 
			
		||||
dmenu at the top, and another dmenu at the bottom that runs conky).  I run conky
 | 
			
		||||
in CLI mode only, and that's good enough for me.
 | 
			
		||||
 | 
			
		||||
I pipe the output of conky through dmenu, which upates every two seconds.  I
 | 
			
		||||
also have custom formatting functions (see scripts.lua in this repository).
 | 
			
		||||
This ensures the output of conky has the same length, even if certain fields
 | 
			
		||||
within the string change.  This is especially useful for the network bandwidth
 | 
			
		||||
output, which otherwise change length every two seconds as the bandwidth usage
 | 
			
		||||
I pipe the output of conky through dmenu, which upates every second.  I also
 | 
			
		||||
have custom formatting functions (see scripts.lua in this repository).  This
 | 
			
		||||
ensures the output of conky has the same length, even if certain fields within
 | 
			
		||||
the string change.  This is especially useful for the network bandwidth output,
 | 
			
		||||
which otherwise change length every two seconds as the bandwidth usage
 | 
			
		||||
fluctuates between bytes (B), Kilobytes (KiB), and Megabytes (MiB).
 | 
			
		||||
 | 
			
		||||
TODO:  My formatting function needs to be generalized.  Essentially, I'm
 | 
			
		||||
creating a conky-specific printf function. Right now, it's split into two
 | 
			
		||||
functions, with calls to the Lua string.format function.  One function takes
 | 
			
		||||
only one format specifier, and the other takes two.  
 | 
			
		||||
I have implemented `conky_printf`, a generalized function for printing conky
 | 
			
		||||
data to the output string.  It needs more testing, as I'm sure there are edge
 | 
			
		||||
cases where it doesn't work properly.  
 | 
			
		||||
 | 
			
		||||
The `fmt()` function takes the format string, and expects a single numerical
 | 
			
		||||
second argument.  If the format string contains any format specifiers (see `man
 | 
			
		||||
sprintf` for details) that aren't numbers (e.g. `%s` for strings), fmt() will
 | 
			
		||||
fail with an error.  I use this for the percentages of RAM, Swap, and CPU in
 | 
			
		||||
use.
 | 
			
		||||
 | 
			
		||||
The `fmt2()` function takes the format string, and expects two string arguments.
 | 
			
		||||
It is not necessarily an error if either or both of the arguments are numbers,
 | 
			
		||||
they will be cast to strings.  I use this function to format the bandwidth
 | 
			
		||||
("Net:") display in conky, so the length of this segment doesn't shift around
 | 
			
		||||
(the Unicode arrow icons for up and down bandwidth stay in the same place).  
 | 
			
		||||
 | 
			
		||||
Ideally these two functions would be combined into a `"conky_printf` function,
 | 
			
		||||
that could take an arbitrary format string with any number of format
 | 
			
		||||
specifiers, with the requisite number of numerical or string arguments.  I know
 | 
			
		||||
how to do this with the `...`/`arg`/`unpack(arg)` table specification in Lua,
 | 
			
		||||
but numeric specifiers need to convert any strings passed to the function to
 | 
			
		||||
numeric values instead of strings.  This is the challenging part, but should be
 | 
			
		||||
doable.
 | 
			
		||||
TODO:  Add color to the conky output!  That will take if statments, and text
 | 
			
		||||
for dmenu to consume.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								conky.conf
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								conky.conf
									
									
									
									
									
								
							@@ -7,7 +7,7 @@
 | 
			
		||||
 | 
			
		||||
-- Please see LICENSE for details
 | 
			
		||||
 | 
			
		||||
-- Copyright (c) 2020-10-23 Trey Blancher
 | 
			
		||||
-- Copyright (c) 2021 Trey Blancher
 | 
			
		||||
 | 
			
		||||
-- This program is free software: you can redistribute it and/or modify
 | 
			
		||||
-- it under the terms of the GNU General Public License as published by
 | 
			
		||||
@@ -32,18 +32,24 @@ conky.config = {
 | 
			
		||||
	no_buffers = true,
 | 
			
		||||
	update_interval = 1.0,
 | 
			
		||||
	uppercase = false,
 | 
			
		||||
	use_spacer = 'right',
 | 
			
		||||
	use_spacer = "none",
 | 
			
		||||
    pad_percents = 3,
 | 
			
		||||
    short_units = false,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
conky.text = 
 | 
			
		||||
[[\
 | 
			
		||||
conky.text = [[\
 | 
			
		||||
${lua_parse printf %-20s ${nodename_short}} \
 | 
			
		||||
RAM:${lua_parse printf %3.0f%% ${memperc}} \
 | 
			
		||||
Swap:${lua_parse printf %3.0f%% ${swapperc}} \
 | 
			
		||||
CPU:${lua_parse printf %3.0f%% ${cpu cpu0}} \
 | 
			
		||||
/ ${fs_used /}/${fs_size /} \
 | 
			
		||||
/ ${lua_parse printf %10s/%10s ${fs_used /} ${fs_size /}} \
 | 
			
		||||
${loadavg} \
 | 
			
		||||
${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1} \
 | 
			
		||||
${lua_parse printf %-20s ${top name 1}} \
 | 
			
		||||
${lua_parse printf %8d ${top pid 1}} \
 | 
			
		||||
${lua_parse printf %6.2f ${top cpu 1}} \
 | 
			
		||||
${lua_parse printf %6.2f ${top mem 1}} \
 | 
			
		||||
Net: ${lua_parse printf %10s▲%10s▼ ${upspeed wlp4s0} ${downspeed wlp4s0}} \
 | 
			
		||||
${exec ~/bin/core_temp.sh}${lua_parse printf %9s ${exec ~/bin/core_temp.sh -t}}^fg(\#ebdbb2) \
 | 
			
		||||
${exec ~/bin/nvme_temp.sh}${lua_parse printf %9s ${exec ~/bin/nvme_temp.sh -t}}^fg(\#ebdbb2) \
 | 
			
		||||
${exec ~/bin/virt_temp.sh}${lua_parse printf %9s ${exec ~/bin/virt_temp.sh -t}}^fg(\#ebdbb2) \
 | 
			
		||||
]];
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ function split_fmt(f)
 | 
			
		||||
                in_spec = false
 | 
			
		||||
                curr = ""
 | 
			
		||||
            elseif string.match(char, '[qs]') then
 | 
			
		||||
                if string.match(curr, '^%%[0-9]*$') then
 | 
			
		||||
                if string.match(curr, '^%%%-?[0-9]*$') then
 | 
			
		||||
                    curr = curr .. char
 | 
			
		||||
                    table.insert(ret, curr)
 | 
			
		||||
                    in_spec = false
 | 
			
		||||
@@ -28,7 +28,7 @@ function split_fmt(f)
 | 
			
		||||
                    io.stderr:write("Invalid format:  '" .. curr .. char .. "'\n")
 | 
			
		||||
                    return nil
 | 
			
		||||
                end
 | 
			
		||||
            elseif string.match(char, '[0-9%.]') then
 | 
			
		||||
            elseif string.match(char, '[0-9%.%-]') then
 | 
			
		||||
                curr = curr .. char
 | 
			
		||||
            elseif string.match(char, '%%') then
 | 
			
		||||
                if string.match(curr, '^%%') then
 | 
			
		||||
@@ -105,7 +105,7 @@ function conky_printf(format, ...)
 | 
			
		||||
    end
 | 
			
		||||
    for i,fs in ipairs(formats) do
 | 
			
		||||
        if is_fmt_spec(fs) then -- we have a format specifier
 | 
			
		||||
            if string.match(fs, '[dEefgiouXx]$') then -- we have a numeric format specifier, convert value to number
 | 
			
		||||
            if string.match(fs, '[cdEefgiouXx]$') then -- we have a numeric format specifier, convert value to number
 | 
			
		||||
                parsed_values[i] = tonumber(trim((parsed_values[i])))
 | 
			
		||||
            end
 | 
			
		||||
        end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user