Hatred's Log Place

DON'T PANIC!

Mar 23, 2010 - 3 minute read - Comments - linux programming

Графический индикатор разряда батареи в IceWM

Решил тут собрать небольшое окружение на основе IceWM, вернуться, так сказать к истокам (работал он у меня в бытность ещё P100/24RAM). Но т.к. теперь ему предстояло работать на ноутбуке, в режиме питания от батареи было бы хорошо иметь возможность наблюдать статус разряда.

Апплет для панели такой есть, включается параметром TaskBarShowApmStatus. Вот только он информацию выводит в текстовом виде, что не есть всегда удобно, да и занимает много места.

Посмотрев на соседние индикаторы сетевой активности и загрузки CPU подумал сделать простенький графический режим для индикатора заряда батареи.

Получился такой патч:

Накладывается на CVS версию IceWM с бранча 1.3 (как получить посмотреть на официальном сайте или в AUR: http://aur.archlinux.org/packages.php?ID=23454). Я несколько откорректировал оригинальный PKGBUILD из AUR, включил полезные параметры и добавил наложение моего патча:

# Contributor:  Sam Weston <admin@samuelweston.com>
pkgname=icewm-cvs
pkgver=20100322
pkgrel=1
pkgdesc="A Window Manager designed for speed, usability, and consistency. CVS version."
arch=('i686' 'x86_64')
url="http://www.icewm.org/"
provides=('icewm')
conflicts=('icewm')
license=('LGPL')
makedepends=('cvs')
depends=('gcc-libs' 'libxrandr' 'libxft' 'libsm' 'libxinerama' 'giflib')
source=(icewm.desktop icewm.svg.patch icewm-apm-graph.patch)
_cvsroot=":pserver:anonymous:@icewm.cvs.sourceforge.net:/cvsroot/icewm"
_cvsmod="icewm-1.2"

build() {
	cd ${srcdir}

	msg "Connecting to $_cvsmod.sourceforge.net CVS server...."
	if [ -d $_cvsmod/CVS ]; then
		cd $_cvsmod
		cvs -z3 update -d
	else
		cvs -z3 -d $_cvsroot co -D $pkgver -r icewm-1-3-BRANCH $_cvsmod
		cd $_cvsmod
	fi
	./autogen.sh

	msg "CVS checkout done or server timeout"
	msg "Starting make..."

	cp -r ../$_cvsmod ../$_cvsmod-build
	cd ../$_cvsmod-build
	
	patch -p0 < ../icewm.svg.patch || return 1
	patch -p0 < ../icewm-apm-graph.patch || return 1
	
	./configure --prefix=/usr --sysconfdir=/etc --with-imlib <br/>
     --enable-shaped-decorations --enable-gradients || return 1
	make || return 1
	make DESTDIR=${pkgdir} install || return 1 
	install -D -m644 ${srcdir}/icewm.desktop ${pkgdir}/etc/X11/sessions/icewm.desktop
	rm -r ${srcdir}/$_cvsmod-build
}
md5sums=('cad8ea1ab2a1b6a0e2a205fdf81d9ac3'
         '448b956a409da9cf7d6886ff48e5c03e'
         'e0eccc5dad18d2725f14f76b51c69ecd')

Сам патч отправил разработчикам.

Работа управляется параметрами в конфигурационном файле: * ColorApmBattery - цвет индикатора при работе от батареи, по умолчанию - желтый * ColorApmLine - цвет индикатора при работе от сети, по умолчанию - зеленый * ColorApmGraphBg - фон индикатора, по умолчанию - черный * TaskBarShowApmGraph - управляет поведением - включать ли графический режим (т.е. старый вид индикатора так же доступен) * TaskBarApmGraphWidth - ширина индикатора в пикселях, по умолчанию - 10

А вот и пару картинок демонстрирующих работу от сети и от батареи:

PS рекомендую ещё ознакомиться с этим постом: Генерация меню в IceWM

PPS ещё подготовил патч для icets (из комплекта icewm-utils в ArchLinux) - программе для выбора и установки темы оформления, теперь не убивается icewm-tray и не теряются иконки уже запущенных приложений: отправил Сергею Пупыкину (маинтейнеру пакета) с дополнительными рекомендациями по поводу умолчательных путей: > Кроме того, после строк в PKGBUILD: > . /etc/profile.d/qt3.sh > export PATH=/opt/qt/bin:$PATH > > добавить следующее: > bash cd $srcdir # fix default global path to IceWM for file in icewoed-$_woedver/qcentralwidget.cpp <br/> icemc-$_mcver/qcentralwidget.cpp <br/> icets-$_tsver/icets.cpp do sed -i 's|/usr/local/|/usr/|' $file done > Эти мы исправим дефолтные пути к глобальным настройкам icewm на те, что приняты в дистрибутиве, меньше ругани, вот.