site  contact  subhomenews

woofQ March 01, 2018, uploaded

March 01, 2018 — BarryK

This is the woofQ used to build EasyOS 0.8 and Quirky 8.5.

Tarball uploaded: 

Tags: easy, quirky

EasyOS Pyro64 0.8 released

March 01, 2018 — BarryK

Version 0.7 was released January 18, 2018, see announcement:

Version 0.8 is still classed as alpha-quality, but is looking good.

Read the EasyOS blog thread to discover what is new since 0.7:

Primary download site:

The download is an image file for writing to a USB-drive, of 2GB or greater (8GB minimum is preferred). Instructions to write file to drive:

Forum feedback here:

To load the "devx" and kernel-source SFS files, click the "sfsget" icon at top of screen (when running EasyOS).

Tags: easy

More efficient handling of one-shot services

February 28, 2018 — BarryK

In the latest release of Quirky Xerus64, version 8.5, /etc/eventmanager has this line:


/etc/init.d/cups-net-fix is a service that will run after the network is up. This is handled by /etc/ at bootup.

However, 'cups-net-fix' is a "one-shot" service, just runs at startup, no daemon in it, no "stop" option. So, once started, the pup_event Service Manager is not required anymore to monitor and stop it when the network goes down.

So, I have added a bit of extra code to /etc/rc.d/ and /etc/rc.d/rc.services_ipc, to stop the Service Manager in the cases of one-shot services, after they have started. This improves efficiency.

The enhancement is explained in the latest document here, with the new code shown in dark-blue (update 180228):

For anyone who wants use this enhancement, just append "ONESHOT" to the service name in PE_SERVICE_MANAGER:


I did consider automating it, by searching for "stop)" in a service script, and if not exist then it is one-shot. However, decided that might not catch them all.

Tags: easy, quirky

PETs upgraded, PPM bugfix

February 26, 2018 — BarryK

Puppy Forum member 'rcrsn51' maintains the "Peasy" series of PETs. These are great apps, and some of them are in EasyOS and Quirky.

I have upgraded PeasyPDF to version 4.1:

And upgraded PeasyScan to 2.12:

The PETget Package Manager (PPM), also known as the Puppy Package Manager in official Puppy builds, has a bug in the latest EasyOS and Quirky releases.

If a PET package was selected to be installed, no download URLs were offered, only "LOCAL FOLDER".

This bug was discussed on this forum thread:

The bug has been fixed.

Tags: easy, quirky

New 'getlocalip' utility

February 25, 2018 — BarryK

I am working on pup_event, and in 'pup_event_frontend_d' I have been exploring various ways of determining when a network connection is up or down.

An offshoot of that, is I wanted a very quick and efficient way to determine the local IP-address, that is, the IP address assigned to the computer, that other computers on a network will use to access this computer.

It can be found by the 'ifconfig', 'ip' and 'hostname' utilities, though I hasten to add, not the Busybox 'hostname'. The full 'hostname' has this option:

    -I, --all-ip-addresses all addresses for the host

...that is, a capital letter I, as in "India". In my case;

# hostname -I

I thought that it would be nice to have a specialized utility to return the local IP-address. I thought about parsing /proc/net/fib_trie, however, after a bit more research, settled on this simple C program:

#include <arpa/inet.h>
#include <ifaddrs.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char *argv[])
struct ifaddrs *addrs, *tmp;
tmp = addrs;

while (tmp)
if (tmp->ifa_addr && tmp->ifa_addr->sa_family == AF_INET)
struct sockaddr_in *pAddr = (struct sockaddr_in *)tmp->ifa_addr;
printf("%s: %s\n", tmp->ifa_name, inet_ntoa(pAddr->sin_addr));
tmp = tmp->ifa_next;

Running it:
# getlocalip
...bonus, it also shows the interface, in this case "eth0".

I got that code from here:

The source is in 'pup-tools-20180225.tar.gz':

BaCon Forum member 'airr' has converted it to BaCon code:


'getlocalip' will be in the next release of Easy and Quirky, in /usr/sbin.

Tags: easy, quirky

Network upgrading for Frisbee 1.4.7

February 23, 2018 — BarryK

The latest and earlier releases of EasyOS and Quirky have Frisbee, version 1.1-20130415-modified, a network manager developed by Puppy Forum member 'Jemimah', with improvements by various people including forum member 'rerwin'.

rerwin (Richard Erwin) has continued to develop Frisbee, and has now reached version 1.4.7, see forum thread here:

rerwin has looked at EasyOS 0.7 and determined what needs to be updated to support Frisbee 1.4.7:

I have worked through rerwin's changes, and have applied all of it to woofQ, so the next releases of EasyOS and Quirky will have it.

The old Frisbee PET has been retired. I renamed it to, and have kept it in the 'noarch' repository.

Easy and Quirky will now be built with

rerwin posted changes to /usr/local/frisbee/disconnect and /etc/init.d/frisbee, however, as those files are from the old frisbee PET, they are now removed.

These are all the files modified by rerwin, that are upgraded in woofQ:

/usr/sbin/connectwizard, connectwizard_2nd, network_default_connect, networkdisconnect

I am expecting the next release to be EasyOS Pyro64 0.7.4, in a few days. It will have the above network upgrades, plus the pup-event service manager. The former adds a new enhanced choice for network connection, the latter should be an un-noticed under-the-hood thing.

Tags: easy, quirky

pup_event Service Manager

February 23, 2018 — BarryK

I posted recently about investigations into "service managers", in the context of starting and stopping services, such as CUPS, Samba and SSH daemons, as dependencies are met or not met.

Unsatisfied with what is available, I have developed my own system. Actually, this was in the back of my mind when I originally created pup_event, a background hotplugging and IPC messaging/synchronization system for Puppy circa 2013.

pup_event Service Manager starts and stops the services in /etc/init.d, determined by dependencies rather than just alphabetical order. It is a tiny implementation, in terms of very tiny resource usage and tiny file size. Extreme efficiency, event-driven. Also very simple to understand and use.

Documentation will be in upcoming EasyOS and Quirky releases, in /usr/local/pup_event, however, I have also uploaded the doc files:

...that second link describes the pup_event IPC that I implemented in Puppy Linux circa 2013, but recently it has been removed from the woof-CE builds of Puppy.

So, this Service Manager will only be in the next releases of EasyOS and Quirky. However, it will be possible to create a PET package for other pups and puplets.

Tags: easy, quirky

Continuing improving pup_event

February 20, 2018 — BarryK

I reported on this a couple of days ago:

The woof-CE developers are also overhauling pup_event. I noticed that they have removed the IPC mechanism, and the one-second probing for optical media.

When X starts, /usr/local/pup_event/pup_event_frontend_d is started (from /root/.xinitrc) as a background process. In Puppy and Quirky/Easy, this "daemon" calls /usr/local/pup_event/frontend_timeout every second, that script, every fourth second, probes if an optical media inserted.

/usr/local/pup_event/pup_event_frontend_d reads hotplug events, known as "uevents", from the kernel, and this includes optical media insert/remove. However, the kernel hotplugging detection does not work for optical on some old PCs. Hence the backup probing in /usr/local/pup_event/frontend_timeout

However, the frequent optical drive probes impact performance, and the woof-CE developers decided to remove that from /usr/local/pup_event/frontend_timeout. Me too, it is now gone.

In fact, I now only have /usr/local/pup_event/frontend_timeout60, that runs every 60 seconds. It now works by the pup_event IPC mechanism. I have expanded usage of this IPC, which was my original intention.

/usr/local/pup_event/pup_event_frontend_d is a "server", that posts IPC messages about hotplug events, network up/down (and what interface), and 1, 4 and 60 second timeouts.

pup_event IPC is described in your puppy/Quirky/Easy, at /usr/local/pup_event/pup_event_ipc-README.htm


Some of my utilities are written in BaCon, but the last few years I have been plagued with problems, the utilities not working properly.

I have been working with Peter over the last few days, trying to narrow-down the problems. It mostly comes down to "string handling improvements" that were introduced in BaCon 3.0.3+.

Discussion here:

I have been rewriting pup_event_frontend_d and pup_event_ipc, works well now.

Tags: easy, quirky