Skip to content

Instantly share code, notes, and snippets.

@DanielFGray
Last active August 29, 2015 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save DanielFGray/a5db9a7e623f0a333c4f to your computer and use it in GitHub Desktop.
Save DanielFGray/a5db9a7e623f0a333c4f to your computer and use it in GitHub Desktop.
#!/usr/bin/env node
'use strict';
var fs = require('fs'),
moment = require('moment'),
underscore = require('underscore'),
child_process = require('child_process'),
spawn = child_process.spawn,
exec = child_process.exec;
var echo = function(d) {
process.stdout.write(d);
};
setInterval(function() {
panel.separator();
panel.mpd();
panel.net();
panel.battery();
panel.temp();
panel.disk();
panel.separator();
panel.memory();
panel.cpu();
panel.separator();
panel.date();
echo('\n');
}, 1000);
var panel = {
$click: function(str, command) {
return '^ca(1, ' + command + ' 1> /dev/null)' + str + '^ca()';
},
$fgcolor: function(color, str) {
return '^fg(' + color + ')' + str + '^fg()';
},
$bgcolor: function(color, str) {
return '^bg(' + color + ')' + str + '^bg()';
},
$icon: function(path, color) {
if(typeof(color) === 'undefined') color = '#69C';
return panel.$fgcolor(color, ' ^i(' + process.env.HOME + '/.icons/dzen/' + path + '.xbm) ');
},
separator: function() {
echo(' ' + panel.$fgcolor('#666', ''));
},
date: function() {
echo(panel.$click(panel.$icon('clock') + moment().format('ddd, MMM D, h:mm:ss a'), 'gsimplecal'));
},
mpd: underscore.throttle(function() {
exec('mpc current', function (error, stdout, stderr) {
process.stderr.write('mpd called\n');
if(error === null && stdout !== '') {
//TODO: paused indicator
var spl = stdout.replace(/\n/gm, '').split('-');
var str = spl[0] + panel.$fgcolor('#666', '-') + spl[1];
panel.separator();
echo(panel.$click(panel.$icon('note') + str, 'mpc toggle --no-status'));
}
});
}, 5000),
cpu: function() {
var usage = 100;
echo(panel.$icon('cpu') + usage + panel.$fgcolor('#666', '%'));
},
battery: function() {
var hasBattery = function() {
return true;
};
if(hasBattery() !== false) {
var bat_level = '0',
icon = panel.$icon('bat_full_02');
if(bat_level <= 15) {
icon = panel.$icon('bat_empty_02', '#F00');
} else if(bat_level < 40) {
icon = panel.$icon('bat_low_02');
}
echo(icon + bat_level + panel.$fgcolor('#666', '%'));
panel.separator();
}
},
memory: function() {
var str = 100;
echo(panel.$icon('mem') + str + panel.$fgcolor('#666', '%'));
},
net: function() {
var device = 1,
wifiStrength = 1,
upSpeed = 1,
downSpeed = 1;
// is on internet?
// is on wifi?
if(device) {
if(wifiStrength) {
echo(panel.$icon('wifi_02') + wifiStrength + panel.$fgcolor('#666', '%'));
}
if(upSpeed) {
echo(panel.$icon('net_up_01') + upSpeed + panel.$fgcolor('#666', 'Kb/s'));
}
if(downSpeed) {
echo(panel.$icon('net_down_01') + downSpeed + panel.$fgcolor('#666', 'Kb/s'));
}
panel.separator();
}
},
disk: function() {
var usage = 100;
echo(panel.$icon('diskette') + usage + panel.$fgcolor('#666', '%'));
},
temp: function() {
var temp = 100;
echo(panel.$icon('temp') + temp + panel.$fgcolor('#666', '°C'));
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment