pmcputemp – cpu temperature monitor

Another one for the Poor Man’s suite.

pmcputemp

It’s  a status icon giving a real time readout of your CPU temperature. Handy when under heavy load.

Get it here.

More cairo and Xlib fun! Oh, it’s a GtkStatusIcon made for gtk+-2.0 but works with gtk+-3.0.

Advertisements

pmck – A poor man’s clock

I have written another app based on Cairo and Xlib that should run on any UNIX variant (tested in Linux).

Poor Man’s Clock

That’s exactly what it is. An analog desktop clock that does nothing but show a clock face! It is however a halfway decent demonstration of the Cairo library in action, displayed on screen with Xlib.

Get it here.

cairo-msg – a simple splash message app

I have been busy coding a splash app in C for Linux (or other UNIX like OS) that is designed to be simple, light weight yet “pretty”. It uses the Xlib and Cairo libraries and stripped, the binary is only 11k.

There really aren’t many light-weight options for a general purpose splash message app, for what I want anyway. Sure there is zenity, yad, Xdialog, gtkdialog (all dependent on gtk), xmessage, yaf-splash (Xlib) and others like Kdialog (KDE) and probably a bunch more but all of those are either too complex or don’t do what I want without some convoluted scripting techniques which slow things down and introduce margin for error. I wanted something simple that only needs to display a few words with a coloured background indicating what kind of message we are displaying, preferably with an appropriate icon . It had to display in a prominent position on screen (adjustable of course) and with no window decoration. It had to support all fonts so had to be unicode compliant. It had to have a variable timeout, without resorting to hacks like this:

splash-message "bla bla bla" &
pid=$!
sleep 5
kill -9 $pid

So, like all hackers, if you can’t find the tool, make the tool! cairo-msg was born!

Check it out on my GitHub page.

NB: This is tested in Slackware64-14.1 (KDE), Slackware-14.1 (Cinnamon) and Slacko Puppy Linux (64 and 32 running JWM).

FatDog Arm Beta 1

James (jamesbond) has released FatDog Arm Beta 1!

After being in the cooker for over two months, I can happily announced the next release of FatdogArm: the Beta1 release.

Release Announcement

Release Notes

FatDog arm is designed to run on ARM CPU supporting ARMv7-A instruction architecture. It is targeted at A10/Mele, A20/Cubieboard2, Odroid-U2/U3, OLPC XO-4 and OLPC XO-1.75 but with a bit of hacking can be adopted to other platforms, providing the CPU is compatible.

I have an Odroid U3 and while it is beta software it runs great. Plenty of software available in the repository too. It uses GSlapt/slapt-get for package management so it is easy to fatten up FatDog Arm.

Test away! (Bug reports here)

Limit Firefox Cache

Just an FYI post.

In all previous slacko versions I did not bother limiting the browser cache. The only way I knew how to do it was to install a default profile in /root/.mozilla. If you decide to run the browser as spot then this totally defeats the purpose.

Mozilla in their infinite wisdom has decided to remove that option from it’s gui preferences program. Rolling Eyes . The only way to do it now is manually through about:config.

With a bit of research I devised a way to limit the browser cache without installing a default profile.

A file; /usr/lib/firefox*/defaults/preferences/local-settings.js needs to be created (you can check it out at /usr/lib/firefox-17.0.11/defaults/preferences). It contains the following:

Code:
//
//default home page and cache
pref(“browser.startup.homepage”, “data:text/plain,browser.startup.homepage=file:///usr/share/doc/home.htm”);
pref(“browser.cache.disk.capacity”, 60000);

You’ll notice that this also sets the home page.

The trick about this though was how to implement it without hard coding?

Well I did this at the woof level with a pinstall.sh. The relevant part of the pinstall.sh contains this:

Code:
# work around for firefox bug to set cache
if [ `pwd` != ‘/’ ];then
FF=$(find usr/lib -type d -name firefox*)
PKGSTATDIR=`find ../../ -type d -name status -maxdepth 3`
PKGSTATFILE=`find $PKGSTATDIR -type f -name ‘findpkgs_FINAL_PKGS*’`
FFVER=`grep ‘firefox’ $PKGSTATFILE | awk -F’|’ ‘{print $6}’`
FFVER=${FFVER%%.*}
if [ “$FFVER” -ge 21 ];then
mkdir -p ${FF}/browser/defaults/preferences
PREFDIR=”${FF}/browser/defaults/preferences”
else
mkdir -p ${FF}/defaults/preferences
PREFDIR=”${FF}/defaults/preferences”
fi
cat > ${PREFDIR}/local-settings.js <<_EOF
//
//default home page and cache
pref(“browser.startup.homepage”, “data:text/plain,browser.startup.homepage=file:///usr/share/doc/home.htm”);
pref(“browser.cache.disk.capacity”, 60000);
_EOF

fi

That will seem like jumble to some, but all it does is create the above file. One important note though; mozilla, again in their infinite wisdom, moved the location of where these type of files are read in firefox-21. From /usr/lib/firefox*/defaults/preferences to /usr/lib/firefox*/browser/defaults/preferences.

This should work for seamonkey as well but the version change over would have to be noted.

Many thanks to Mike’s Musings.

Slacko 5.7 Released!

After ~original 500 commits and ~45.000 lines of code changes in woof-CE since forking from Barry’s Fossil, the first official woof-CE-based puppy, Slacko-5.7, is out 😀

-mavrothal, Puppy Linux forum, 9th March, 2014

LOL. I agree completely about abiword, plus my interaction with some of the devs was not very pleasant. But, concerning Puppy and productivity, Slacko is so good that I am totally comfortable using it for production in teaching online university courses (I do use Libre Office).

-playdayz (a.k.a Larry Short, Lucid Puppy Developer, from 2010-2012), Puppy Linux forum, 9th March, 2014

What more can I say? Slacko Puppy Linux 5.7 is released! 

Get it from the Slacko Web Site. Everything you need to know is either there or only a click or two from there.

Many thanks to the woof-CE development team (you know who you are  :monkey:). Without you this would not be possible.

Go get it and enjoy!

Woof-CE now at GitHub

Barry Kauler’s Woof the Puppy Builder lives on after his announced retirement from woof and puppy development. You can find the Woof-CE repository at GitHub. Pretty awesome! Many thanks to George (aka mavrothal) for setting up the repo and making pemasu and myself owners and giving Iguleder commit permissions.

I have created a mailing list for Woof-CE many thanks to Nabble.

 

Have fun with that!

f2fs – booting linux on an f2fs flash drive

Today I had an eureka moment. I installed a full install of Slacko Puppy Linux to an f2fs formatted flash stick, booted and surfed the net. Has anyone done that yet?

The kernel is k3.4.52 patched with f2fs patches from Now Computing. I had to hack them a bit because the developer is only supporting k’s 3.0, 3.2, 3.5 and 3.8. I also patched the kernel for AUFS as we do in Puppy.

The unique problem here is that no bootloader supports f2fs at the time of writing. The work around is to first create a small boot partition in a recognised format such as vFAT, ext2, 3 or 4. Then you can boot the stick with grub (I used grub4dos). You could probably use syslinux, grub2 or even lilo.

In the boot partition you create a /boot directory that contains the kernel image (vmlinuz) and an initrd (in my case initrd,gz). Now in my kernel configuration I have all the relevant drivers that I need as builtins however using an initrd it would work just the same to have hid, usbhid, ehci-hcd, uhci-hcd and f2fs as modules and just load them. In fact, in my init script I have those loading anyway with the error sent to /dev/null. Of course you need a tree with the appropriate modules in the appropriate places, busybox, the necessary mount points and so on.

The real trick was to find the root partition which was on /dev/sdb2, however that would not work, nor would sda2, which probably should have since I wasn’t loading any other filesystems and the only builtin is ext2 (I was using FAT32 on my boot partition). My hard drive is formatted NTFS and ext4. I achieved this by using the UUID in the init script itself. You could just as easy have a config file that init reads.  Once the root filesystem is mounted you then switch root in to the running systems as with any other initrd.

Thanks have to go out to Barry Kauler for integrating f2fs into Puppy Linux infrastructure and for some of the code from his init script. My init script uses some of that but uses a directory structure based on Slackware’s initrd and some of the code from Pat Volkerding’s init script too.

I’ll post the code and documentation at a later date.

Any questions, ask in the comments.