This is a system monitoring dockapp, visually based on the GNOME

"BubbleMon" applet (here). Basically, it displays CPU and memory
load as bubbles in a jar of water. But that's where similarity ends.
New bubblemon-dockapp features translucent CPU load meter (for
accurate CPU load measurement), yellow duck swimming back and forth
on the water surface (just for fun), and fading load average and
memory usage screens.
This commit is contained in:
wilfried 2001-08-28 14:24:28 +00:00
parent c07f96cbad
commit d214ba7773
6 changed files with 213 additions and 0 deletions

View File

@ -0,0 +1,34 @@
# $OpenBSD: Makefile,v 1.1.1.1 2001/08/28 14:24:28 wilfried Exp $
COMMENT= 'wm-dockapp; display CPU and memory load'
DISTNAME= bubblemon-dockapp-1.32
CATEGORIES= sysutils x11 x11/windowmaker
NEED_VERSION= 1.448
HOMEPAGE= http://www.ne.jp/asahi/linux/timecop/
MAINTAINER= Peter Stromberg <wilfried@openbsd.org>
# GPL
PERMIT_PACKAGE_CDROM= Yes
PERMIT_PACKAGE_FTP= Yes
PERMIT_DISTFILES_CDROM= Yes
PERMIT_DISTFILES_FTP= Yes
MASTER_SITES= ${HOMEPAGE}software/
LIB_DEPENDS= gtk.1.2::x11/gtk+
USE_X11= Yes
USE_GMAKE= Yes
post-patch:
cp files/sys_openbsd.c ${WRKSRC}
do-install:
${INSTALL_PROGRAM} $(WRKBUILD)/bubblemon ${PREFIX}/bin
${INSTALL_DATA_DIR} ${PREFIX}/share/doc/bubblemon/
${INSTALL_DATA} ${WRKSRC}/README ${PREFIX}/share/doc/bubblemon/
.include <bsd.port.mk>

View File

@ -0,0 +1,3 @@
MD5 (bubblemon-dockapp-1.32.tar.gz) = d3ede4371c673bc155a11cf1ab791d9e
RMD160 (bubblemon-dockapp-1.32.tar.gz) = 9928a3e059d0f9e045f4b8f36ff201519eb41b93
SHA1 (bubblemon-dockapp-1.32.tar.gz) = 687537036848a877d888fed15588ead239ad4f78

View File

@ -0,0 +1,130 @@
/* BubbleMon dockapp 1.2 - OpenBSD specific code
* Copyright (C) 2001, Peter Stromberg <wilfried@openbsd.org>
*
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
*
*/
#include <stdlib.h>
#include <unistd.h>
#include <sys/dkstat.h>
#include <sys/param.h>
#include <sys/sysctl.h>
#include <sys/resource.h>
#include <uvm/uvm_object.h>
#include <uvm/uvm_extern.h>
#include <sys/swap.h>
#include "include/bubblemon.h"
#include "include/sys_include.h"
extern BubbleMonData bm;
/* Returns the current CPU load in percent */
int system_cpu(void)
{
int loadPercentage;
int previous_total, previous_load;
int total, load;
long cpu_time[CPUSTATES];
int i;
int mib[2];
size_t size;
mib[0] = CTL_KERN;
mib[1] = KERN_CPTIME;
size = sizeof (cpu_time);
if (sysctl(mib, 2, &cpu_time, &size, NULL, 0) < 0)
return 0;
load = cpu_time[CP_USER] + cpu_time[CP_SYS] + cpu_time[CP_NICE];
total = load + cpu_time[CP_IDLE];
i = bm.loadIndex;
previous_load = bm.load[i];
previous_total = bm.total[i];
bm.load[i] = load;
bm.total[i] = total;
bm.loadIndex = (i + 1) % bm.samples;
if (previous_total == 0)
loadPercentage = 0; /* first time here */
else if (total == previous_total)
loadPercentage = 100;
else
loadPercentage = (100 * (load - previous_load)) / (total - previous_total);
return loadPercentage;
}
int system_memory(void)
{
#define pagetob(size) ((size) << (uvmexp.pageshift))
struct uvmexp uvmexp;
int nswap, rnswap, i;
int mib[] = { CTL_VM, VM_UVMEXP };
size_t size = sizeof (uvmexp);
if (sysctl(mib, 2, &uvmexp, &size, NULL, 0) < 0)
return 0;
bm.mem_used = pagetob(uvmexp.active);
bm.mem_max = pagetob(uvmexp.npages);
bm.swap_used = 0;
bm.swap_max = 0;
if ((nswap = swapctl(SWAP_NSWAP, 0, 0)) != 0) {
struct swapent *swdev = malloc(nswap * sizeof(*swdev));
if((rnswap = swapctl(SWAP_STATS, swdev, nswap)) != nswap) {
for (i = 0; i < nswap; i++) {
if (swdev[i].se_flags & SWF_ENABLE) {
bm.swap_used += (swdev[i].se_inuse / (1024 / DEV_BSIZE));
bm.swap_max += (swdev[i].se_nblks / (1024 / DEV_BSIZE));
}
}
}
free(swdev);
}
return 1;
}
#ifdef ENABLE_MEMSCREEN
void system_loadavg(void)
{
static int avg_delay;
if (avg_delay-- <= 0) {
struct loadavg loadinfo;
int i;
int mib[] = { CTL_VM, VM_LOADAVG };
size_t size = sizeof (loadinfo);
if (sysctl(mib, 2, &loadinfo, &size, NULL, 0) >= 0)
for (i = 0; i < 3; i++) {
bm.loadavg[i].i = loadinfo.ldavg[i] / loadinfo.fscale;
bm.loadavg[i].f = ((loadinfo.ldavg[i] * 100 +
loadinfo.fscale / 2) / loadinfo.fscale) % 100;
}
avg_delay = ROLLVALUE;
}
}
#endif /* ENABLE_MEMSCREEN */
/* ex:set sw=4 ts=4: */

View File

@ -0,0 +1,37 @@
$OpenBSD: patch-Makefile,v 1.1.1.1 2001/08/28 14:24:28 wilfried Exp $
--- Makefile.orig Fri Mar 16 08:00:22 2001
+++ Makefile Mon Aug 27 17:56:55 2001
@@ -10,17 +10,17 @@ PREFIX = /usr/local
# no user serviceable parts below
EXTRA += $(WMAN)
# optimization cflags
-CFLAGS = -O3 -ansi -Wall `gtk-config --cflags` ${EXTRA}
+CFLAGS += -Wall `gtk-config --cflags` ${EXTRA}
# profiling cflags
# CFLAGS = -ansi -Wall -pg -O3 `gtk-config --cflags` ${EXTRA} -DPRO
# test coverage cflags
# CFLAGS = -fprofile-arcs -ftest-coverage -Wall -ansi -g `gtk-config --cflags` ${EXTRA} -DPRO
-SHELL=sh
+#SHELL=sh
OS = $(shell uname -s)
OBJS = bubblemon.o
-CC = gcc
+#CC = gcc
# special things for Linux
ifeq ($(OS), Linux)
@@ -34,6 +34,12 @@ ifeq ($(OS), FreeBSD)
OBJS += sys_freebsd.o
LIBS = `gtk-config --libs | sed "s/-lgtk//g"` -lkvm
INSTALL = -c -g kmem -m 2755 -o root
+endif
+
+# special things for OpenBSD
+ifeq ($(OS), OpenBSD)
+ OBJS += sys_openbsd.o
+ LIBS = `gtk-config --libs | sed "s/-lgtk//g"`
endif
#special things for SunOS

View File

@ -0,0 +1,5 @@
This program is a dockapp-style CPU, memory, swap and load average
monitor. Based on the GNOME BubbleMon applet, this program has
been considerably improved. Many new features have been added.
WWW: ${HOMEPAGE}

View File

@ -0,0 +1,4 @@
@comment $OpenBSD: PLIST,v 1.1.1.1 2001/08/28 14:24:28 wilfried Exp $
bin/bubblemon
share/doc/bubblemon/README
@dirrm share/doc/bubblemon