Решил тут собрать небольшое окружение на основе IceWM, вернуться, так сказать к истокам (работал он у меня в бытность ещё P100/24RAM). Но т.к. теперь ему предстояло работать на ноутбуке, в режиме питания от батареи было бы хорошо иметь возможность наблюдать статус разряда.
Апплет для панели такой есть, включается параметром TaskBarShowApmStatus. Вот только он информацию выводит в текстовом виде, что не есть всегда удобно, да и занимает много места.
Посмотрев на соседние индикаторы сетевой активности и загрузки CPU подумал сделать простенький графический режим для индикатора заряда батареи.
Получился такой патч: icewm-apm-graph.patch
Накладывается на 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 и не теряются иконки уже запущенных приложений: icets-fix-icewmtray-crash.diff отправил Сергею Пупыкину (маинтейнеру пакета) с дополнительными рекомендациями по поводу умолчательных путей:
Кроме того, после строк в PKGBUILD:
. /etc/profile.d/qt3.sh export PATH=/opt/qt/bin:$PATH
добавить следующее:
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 на те, что приняты в дистрибутиве, меньше ругани, вот.