site  contact  subhomenews

ROX-Filer right-click Open With menu

May 18, 2018 — BarryK

I should have done this years ago. The Right-click-Easy PET created by don570 has reminded me of this. I wrote about his PET recently:

Up until now, woofQ has fixed entries for the right-click Open With (or Send To) menu, that may be totally inappropriate for the file being right-clicked on. For example, Geany text editor is in the menu, but that is not appropriate for, say, an image file.

So, I have written /usr/sbin/build-rox-sendto, which builds a complete mime-sensitive Open With menu in /etc/xdg/, by reading the .desktop files in /usr/share/applications. Note, it also erases everything in /root/.config/

Now, the menu is appropriate to the type of file, for example:


Those applications are all able to open an image from the commandline. The bottom group, Bcrypt and gHasher, will appear in all cases, regardless of mime-type.

Furthermore, the menu is updated when a package is installed or removed by the PPM. The modified scripts are /usr/local/petget/ and

I kept thinking that we need this, amazing how procrastination can keep delaying something year after year!

I have removed don570's PET from the repository, as it will conflict.

EDIT 19 May 2018
Continuing to refine the context-sensitive right-click menu, lots of good things happening. For example, right-click on a PET package:

image you can see, the mime-sensitive choices appear on the top-level, no need to burrow into the "Open With..." sub-menu. For PET packages, there is now the very convenient choice of "pet2dir" which is a utility to expand the PET to a folder, or "petget" to install the PET.

Tags: easy, quirky

NVMe support in Easy and Quirky

April 09, 2018 — BarryK

Recently, Puppy Forum member 'scsijon' alerted me to the new NVMe Solid State Drives, and I compiled the Linux kernel with support for these drives enabled:

However, that is only the start of it. There are several scripts in woofQ (the Easy/Quirky builder) that need to be modified. 'wdlkmpx' has been adapting woof-CE to support NVMe:

The last couple of days, I have sifted through the woofQ scripts. Basically, just had to search for the string "mmc" or "mm", where there is special handling for MMC drives (SD cards), and add the special handling for NVMe.

NVMe drives have device nodes in /dev of the form "nvme[0-9]n[1-9]". Partitions are appended as "p<number>", for example "nvme0n1p3".

We should be ready to go for NVMe with the next release of EasyOS, coming soon.

Useful links on NVMe: 

Note, I have compiled kernel 4.14.32, getting ready for the next release of EasyOS.

Tags: easy, quirky

Module-loading options fixed

March 20, 2018 — BarryK

The BootManager, /usr/sbin/bootmanager, which is in all pups going back many years, has three options for choosing which modules to load at bootup. There is "blacklist", "add" and "preference".

The "blacklist" option manages a list of modules that are blacklisted, that is, will not be loaded. This list is in variable 'SKIPLIST' in file /etc/rc.d/MODULESCONFIG, which is written to /etc/modprobe.d/blacklist.conf by /etc/rc.d/rc.sysinit at bootup.

One qualification though, a blacklisted module can still be loaded manually, using the 'modprobe' utility, and will also be loaded if it is a dependency of another module that is loaded. Note, if you want to absolutely blacklist a module, including the above two, a line like this  in a .conf file will do it: "install <module name> /bin/false"

The "add" option is a list of modules that will be loaded, that would not have done so automatically. This is variable 'ADDLIST' in /etc/rc.d/MODULESCONFIG, and they are loaded by /etc/rc.d/rc.sysinit

The "preference" option is to give one module preference over another, in the situation where two (or more) are contenders for the same hardware. This  was variable 'PREFLIST' in /etc/rc.d/MODULESCONFIG, and was loaded by 'pup_event_backend_modprobe'. However, this script has been removed, see earlier blog post:

Also, variable 'PCI_OVERRIDES' is no longer supported, now removed. The "preference" option is removed from BootManager.

It's ok, the "preference" option is redundant anyway, blacklisting suffices.

Tags: easy, quirky

Linux kernel 4.14.27 compiled

March 16, 2018 — BarryK

I have compiled this in EasyOS Pyro64 0.8.1. That release came with kernel 4.14.23, which I compiled with the 'nvm' driver builtin, following advice from forum member scsijon:

  Device drivers
<*> NVM express block device

Yesterday, scsijon advised on the forum about the new very fast 'ufs' flash memory. Previously, I had the driver for this as a module. However, for the 4.14.27 compile, I have changed it to builtin:

  Device drivers -->  SCSI device support
SCSI low-level drivers
<*> Universal flash storage controller driver core
<*> PCI bus based ufs controller support
<m> Platform bus based ufs controller support

The intention is to support computers with these very new flash memory architectures at bootup.

Tags: easy, quirky

Revisiting device-mapper

March 05, 2018 — BarryK

I investigated device-mapper, for Quirky, back in 2016:

As Quirky does not have an initramfs (well, the live-CD does, but not the full installation), I was interested in the kernel patch created by Chrome OS developers, to setup device-mapper direct from the kernel commandline.

The problem is, it only seems to allow specifying devices by name, example "sda1" or by major:minor device node numbers. However, this is not satisfactory, as these assignments are subject to change. The above link contains a link to a post from me to the "linux-lvm" mail-list about this, but noone replied,

Note, that patch was v5, and and there is now a v8 (May 2017):

As the patch is not suitable, I need to run 'dmsetup' in an initramfs. My interest is to setup COW (Copy On Write), as a replacement for aufs/overlayfs layered filesystems.

First step, compiling kernel 4.14.24, with the drivers builtin:

Device Drivers --> Multiple devices driver support
    <*> Device mapper support (CONFIG_BLOCK_DEV_DM, was dm-mod.ko)
    <*> Crypt target support (CONFIG_DM_CRYPT, was dm-crypt.ko)
    <*> Snapshot target (CONFIG_DM_SNAPSHOT)
    [*] DM uevents (CONFIG_DM_UEVENT)
That last one is very interesting, will be able to use pup_event to pickup device-mapper changes. The crypt option is also very interesting.

Tags: easy, quirky

Qsync now handled by pup_event Service Manager

March 03, 2018 — BarryK

Qsync is my app for synchronizing the time from the Internet, see blog post November 2016:

Prior to that, I was using tasmod's Psync:

...which I think most of the pups are still using.

The problem with Psync is that it expects the Internet to be up. At installation. '' is copied into /root/Startup, so it runs when X starts. For ethernet, it expects the Internet to be up immediately, for wireless, has a "sleep 15".

With Qsync, I fixed the problem of only running after the network is up, by launching it from network_tray. This is a C program, that runs in the tray, and it was version 3.2.1.

Now however, I have generic mechanism to run services when dependencies are met, so I have reverted network_tray to version 3.1 (and bumped it to v3.3). /etc/eventmanager now has this:


And I have created a script /etc/init.d/qsync to launch /usr/sbin/qsync

That's it, pretty simple.

Note that Qsync is one-shot, as it just runs 'ntpdate' once at startup, to sync local time. No more sync'ing occurs while Easy/Quirky is running.

Note also, Qsync has a GUI, in the menu "Desktop --> Qsync set time from Internet".

Tags: easy, quirky

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

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