commit
34b9d39b57
@ -80,7 +80,7 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# set common source files
|
# set common source files
|
||||||
set(COMMON_SOURCES "common/main.cc" "common/memory.cc" "common/graph.cc")
|
set(COMMON_SOURCES "common/main.cc" "common/memory.cc" "common/graph.cc" "common/powerline.cc")
|
||||||
|
|
||||||
# add binary tree so we find version.h
|
# add binary tree so we find version.h
|
||||||
include_directories("${PROJECT_BINARY_DIR}")
|
include_directories("${PROJECT_BINARY_DIR}")
|
||||||
@ -111,6 +111,10 @@ if(BUILD_TESTING)
|
|||||||
COMMAND tmux-mem-cpu-load --colors
|
COMMAND tmux-mem-cpu-load --colors
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_test(NAME powerline
|
||||||
|
COMMAND tmux-mem-cpu-load --powerline
|
||||||
|
)
|
||||||
|
|
||||||
add_test(NAME invalid_status_interval
|
add_test(NAME invalid_status_interval
|
||||||
COMMAND tmux-mem-cpu-load -i -1
|
COMMAND tmux-mem-cpu-load -i -1
|
||||||
)
|
)
|
||||||
|
@ -118,6 +118,8 @@ The full usage::
|
|||||||
Prints this help message
|
Prints this help message
|
||||||
--colors
|
--colors
|
||||||
Use tmux colors in output
|
Use tmux colors in output
|
||||||
|
--powerline-right
|
||||||
|
Use powerline symbols throughout the output, DO NOT reset background color at the end, enables --colors
|
||||||
-i <value>, --interval <value>
|
-i <value>, --interval <value>
|
||||||
Set tmux status refresh interval in seconds. Default: 1 second
|
Set tmux status refresh interval in seconds. Default: 1 second
|
||||||
-g <value>, --graph-lines <value>
|
-g <value>, --graph-lines <value>
|
||||||
|
@ -30,10 +30,12 @@
|
|||||||
#include "load.h"
|
#include "load.h"
|
||||||
#include "luts.h"
|
#include "luts.h"
|
||||||
|
|
||||||
|
#include "powerline.h"
|
||||||
|
|
||||||
// Load Averages
|
// Load Averages
|
||||||
std::string load_string( bool use_colors = false )
|
std::string load_string( bool use_colors, bool use_powerline )
|
||||||
{
|
{
|
||||||
std::stringstream ss;
|
std::ostringstream ss;
|
||||||
// Get only 3 load averages
|
// Get only 3 load averages
|
||||||
const int nelem = 3;
|
const int nelem = 3;
|
||||||
double averages[nelem];
|
double averages[nelem];
|
||||||
@ -54,7 +56,7 @@ std::string load_string( bool use_colors = false )
|
|||||||
{
|
{
|
||||||
load_percent = 100;
|
load_percent = 100;
|
||||||
}
|
}
|
||||||
ss << load_lut[load_percent];
|
powerline(ss, load_lut[load_percent], use_powerline);
|
||||||
}
|
}
|
||||||
|
|
||||||
ss << ' ';
|
ss << ' ';
|
||||||
@ -75,7 +77,14 @@ std::string load_string( bool use_colors = false )
|
|||||||
|
|
||||||
if( use_colors )
|
if( use_colors )
|
||||||
{
|
{
|
||||||
ss << "#[fg=default,bg=default]";
|
if( use_powerline )
|
||||||
|
{
|
||||||
|
ss << ' ';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ss << "#[fg=default,bg=default]";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,6 +21,6 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
std::string load_string( bool );
|
std::string load_string( bool use_colors = false, bool use_powerline = false );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -33,8 +33,10 @@
|
|||||||
#include "memory.h"
|
#include "memory.h"
|
||||||
#include "load.h"
|
#include "load.h"
|
||||||
|
|
||||||
|
#include "powerline.h"
|
||||||
|
|
||||||
std::string cpu_string( unsigned int cpu_usage_delay, unsigned int graph_lines,
|
std::string cpu_string( unsigned int cpu_usage_delay, unsigned int graph_lines,
|
||||||
bool use_colors = false )
|
bool use_colors = false, bool use_powerline = false )
|
||||||
{
|
{
|
||||||
|
|
||||||
float percentage;
|
float percentage;
|
||||||
@ -49,7 +51,8 @@ std::string cpu_string( unsigned int cpu_usage_delay, unsigned int graph_lines,
|
|||||||
|
|
||||||
if( use_colors )
|
if( use_colors )
|
||||||
{
|
{
|
||||||
oss << cpu_percentage_lut[static_cast<unsigned int>( percentage )];
|
unsigned int percent = static_cast<unsigned int>( percentage );
|
||||||
|
powerline(oss, cpu_percentage_lut[percent], use_powerline);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( graph_lines > 0)
|
if( graph_lines > 0)
|
||||||
@ -63,7 +66,14 @@ std::string cpu_string( unsigned int cpu_usage_delay, unsigned int graph_lines,
|
|||||||
oss << "%";
|
oss << "%";
|
||||||
if( use_colors )
|
if( use_colors )
|
||||||
{
|
{
|
||||||
oss << "#[fg=default,bg=default]";
|
if( use_powerline )
|
||||||
|
{
|
||||||
|
oss << ' ';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
oss << "#[fg=default,bg=default]";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return oss.str();
|
return oss.str();
|
||||||
@ -79,8 +89,11 @@ void print_help()
|
|||||||
<< "Available options:\n"
|
<< "Available options:\n"
|
||||||
<< "-h, --help\n"
|
<< "-h, --help\n"
|
||||||
<< "\t Prints this help message\n"
|
<< "\t Prints this help message\n"
|
||||||
|
<< "-c, --colors\n"
|
||||||
<< "--colors\n"
|
<< "--colors\n"
|
||||||
<< "\tUse tmux colors in output\n"
|
<< "\tUse tmux colors in output\n"
|
||||||
|
<< "-p, --powerline-right\n"
|
||||||
|
<< "\tUse powerline symbols throughout the output, DO NOT reset background color at the end, enables --colors\n"
|
||||||
<< "-i <value>, --interval <value>\n"
|
<< "-i <value>, --interval <value>\n"
|
||||||
<< "\tSet tmux status refresh interval in seconds. Default: 1 second\n"
|
<< "\tSet tmux status refresh interval in seconds. Default: 1 second\n"
|
||||||
<< "-g <value>, --graph-lines <value>\n"
|
<< "-g <value>, --graph-lines <value>\n"
|
||||||
@ -95,6 +108,7 @@ int main( int argc, char** argv )
|
|||||||
unsigned cpu_usage_delay = 990000;
|
unsigned cpu_usage_delay = 990000;
|
||||||
short graph_lines = 10; // max 32767 should be enough
|
short graph_lines = 10; // max 32767 should be enough
|
||||||
bool use_colors = false;
|
bool use_colors = false;
|
||||||
|
bool use_powerline = false;
|
||||||
MEMORY_MODE mem_mode = MEMORY_MODE_DEFAULT;
|
MEMORY_MODE mem_mode = MEMORY_MODE_DEFAULT;
|
||||||
|
|
||||||
static struct option long_options[] =
|
static struct option long_options[] =
|
||||||
@ -105,6 +119,7 @@ int main( int argc, char** argv )
|
|||||||
// otherwise it's a value to set the variable *flag points to
|
// otherwise it's a value to set the variable *flag points to
|
||||||
{ "help", no_argument, NULL, 'h' },
|
{ "help", no_argument, NULL, 'h' },
|
||||||
{ "colors", no_argument, NULL, 'c' },
|
{ "colors", no_argument, NULL, 'c' },
|
||||||
|
{ "powerline-right", no_argument, NULL, 'p' },
|
||||||
{ "interval", required_argument, NULL, 'i' },
|
{ "interval", required_argument, NULL, 'i' },
|
||||||
{ "graph-lines", required_argument, NULL, 'g' },
|
{ "graph-lines", required_argument, NULL, 'g' },
|
||||||
{ "mem-mode", required_argument, NULL, 'm' },
|
{ "mem-mode", required_argument, NULL, 'm' },
|
||||||
@ -124,6 +139,10 @@ int main( int argc, char** argv )
|
|||||||
case 'c': // --colors
|
case 'c': // --colors
|
||||||
use_colors = true;
|
use_colors = true;
|
||||||
break;
|
break;
|
||||||
|
case 'p': // --powerline-right
|
||||||
|
use_colors = true;
|
||||||
|
use_powerline = true;
|
||||||
|
break;
|
||||||
case 'i': // --interval, -i
|
case 'i': // --interval, -i
|
||||||
if( atoi( optarg ) < 1 )
|
if( atoi( optarg ) < 1 )
|
||||||
{
|
{
|
||||||
@ -168,9 +187,9 @@ int main( int argc, char** argv )
|
|||||||
|
|
||||||
MemoryStatus memory_status;
|
MemoryStatus memory_status;
|
||||||
mem_status( memory_status );
|
mem_status( memory_status );
|
||||||
std::cout << mem_string( memory_status, mem_mode, use_colors )
|
std::cout << mem_string( memory_status, mem_mode, use_colors, use_powerline )
|
||||||
<< cpu_string( cpu_usage_delay, graph_lines, use_colors )
|
<< cpu_string( cpu_usage_delay, graph_lines, use_colors, use_powerline )
|
||||||
<< load_string( use_colors );
|
<< load_string( use_colors, use_powerline );
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -21,10 +21,12 @@
|
|||||||
#include "memory.h"
|
#include "memory.h"
|
||||||
#include "luts.h"
|
#include "luts.h"
|
||||||
#include "conversions.h"
|
#include "conversions.h"
|
||||||
|
#include "powerline.h"
|
||||||
|
|
||||||
std::string mem_string( const MemoryStatus & mem_status,
|
std::string mem_string( const MemoryStatus & mem_status,
|
||||||
MEMORY_MODE mode,
|
MEMORY_MODE mode,
|
||||||
bool use_colors )
|
bool use_colors,
|
||||||
|
bool use_powerline )
|
||||||
{
|
{
|
||||||
std::ostringstream oss;
|
std::ostringstream oss;
|
||||||
// Change the percision for floats, for a pretty output
|
// Change the percision for floats, for a pretty output
|
||||||
@ -33,7 +35,8 @@ std::string mem_string( const MemoryStatus & mem_status,
|
|||||||
|
|
||||||
if( use_colors )
|
if( use_colors )
|
||||||
{
|
{
|
||||||
oss << mem_lut[static_cast< unsigned int >((100 * mem_status.used_mem) / mem_status.total_mem)];
|
unsigned int color = static_cast< unsigned int >((100 * mem_status.used_mem) / mem_status.total_mem);
|
||||||
|
powerline(oss, mem_lut[color], use_powerline);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch( mode )
|
switch( mode )
|
||||||
@ -70,7 +73,14 @@ std::string mem_string( const MemoryStatus & mem_status,
|
|||||||
|
|
||||||
if( use_colors )
|
if( use_colors )
|
||||||
{
|
{
|
||||||
oss << "#[fg=default,bg=default]";
|
if( use_powerline )
|
||||||
|
{
|
||||||
|
oss << " ";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
oss << "#[fg=default,bg=default]";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return oss.str();
|
return oss.str();
|
||||||
|
@ -49,6 +49,7 @@ enum MEMORY_MODE
|
|||||||
|
|
||||||
std::string mem_string( const MemoryStatus & mem_status,
|
std::string mem_string( const MemoryStatus & mem_status,
|
||||||
MEMORY_MODE mode = MEMORY_MODE_DEFAULT,
|
MEMORY_MODE mode = MEMORY_MODE_DEFAULT,
|
||||||
bool use_colors = false );
|
bool use_colors = false,
|
||||||
|
bool use_powerline = false );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
49
common/powerline.cc
Normal file
49
common/powerline.cc
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/* vim: tabstop=2 shiftwidth=2 expandtab textwidth=80 linebreak wrap
|
||||||
|
*
|
||||||
|
* Copyright 2012 Matthew McCormick
|
||||||
|
* Copyright 2016 Michał Goliński
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "powerline.h"
|
||||||
|
|
||||||
|
#include <cstring>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
|
#define PWL_RIGHT_FILLED ""
|
||||||
|
|
||||||
|
const char * bg2fg(const char s[])
|
||||||
|
{
|
||||||
|
static char buf[40] = {0};
|
||||||
|
const char *substr = index(s, ',');
|
||||||
|
buf[0] = '#';
|
||||||
|
buf[1] = '[';
|
||||||
|
buf[2] = 'f';
|
||||||
|
strcpy(buf+3, substr+2);
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
void powerline(std::ostringstream &oss, const char s[], bool use_powerline)
|
||||||
|
{
|
||||||
|
if( use_powerline )
|
||||||
|
{
|
||||||
|
oss << bg2fg(s)
|
||||||
|
<< PWL_RIGHT_FILLED
|
||||||
|
<< s << ' ';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
oss << s;
|
||||||
|
}
|
||||||
|
}
|
26
common/powerline.h
Normal file
26
common/powerline.h
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/* vim: tabstop=2 shiftwidth=2 expandtab textwidth=80 linebreak wrap
|
||||||
|
*
|
||||||
|
* Copyright 2012 Matthew McCormick
|
||||||
|
* Copyright 2016 Michał Goliński
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef POWERLINE_H
|
||||||
|
#define POWERLINE_H
|
||||||
|
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
|
void powerline(std::ostringstream &oss, const char s[], bool);
|
||||||
|
|
||||||
|
#endif // POWERLINE_H
|
Loading…
Reference in New Issue
Block a user