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:
parent
c07f96cbad
commit
d214ba7773
34
sysutils/bubblemon-dockapp/Makefile
Normal file
34
sysutils/bubblemon-dockapp/Makefile
Normal 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>
|
3
sysutils/bubblemon-dockapp/files/md5
Normal file
3
sysutils/bubblemon-dockapp/files/md5
Normal 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
|
130
sysutils/bubblemon-dockapp/files/sys_openbsd.c
Normal file
130
sysutils/bubblemon-dockapp/files/sys_openbsd.c
Normal 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: */
|
37
sysutils/bubblemon-dockapp/patches/patch-Makefile
Normal file
37
sysutils/bubblemon-dockapp/patches/patch-Makefile
Normal 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
|
5
sysutils/bubblemon-dockapp/pkg/DESCR
Normal file
5
sysutils/bubblemon-dockapp/pkg/DESCR
Normal 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}
|
4
sysutils/bubblemon-dockapp/pkg/PLIST
Normal file
4
sysutils/bubblemon-dockapp/pkg/PLIST
Normal 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
|
Loading…
Reference in New Issue
Block a user