site  contact  subhomenews

EasyOS built with gtk2-ng

June 08, 2026 — BarryK

Posted a couple of days ago, the next release of EasyOS will be built with Xlibre, replacing Devuan's X11 packages. GTK version 2 has also been revived, the project is named "gtk2-ng", here:

https://git.devuan.org/Daemonratte/gtk2-ng

I have compiled it in woofQ2; however had to configure with "--enable-introspection=no". Raised an issue:

https://git.devuan.org/Daemonratte/gtk2-ng/issues/21

...undefined symbols, looks like a header file is missing somewhere.

Anyway, going ahead with putting this into the next release of Easy, without the gobject introspection; currently no gtk2-based apps need it, none being builtin to Easy anyway. There are some python-based apps that need introspection, but they are using gtk3.   

Tags: easy

ROX-Filer video thumbnails

June 08, 2026 — BarryK

I recently received an email from Rick, reminding me that he would very much like if ROX supports video thumbnails. I vaguely recall, someone else on the forum also made this request. Personally, I had no interest, so let it slide, until now.

How to do it is described in the original ROX User Manual:

https://rox.sourceforge.net/Manual/Manual/Manual.html#id2504872

However, we found that it doesn't work. We have discussed the problem in the forum, and we found that the Jun7 fork of ROX does work, but the original source, the woof-CE source, and my own fork of ROX in woofQ2, do not. Forum member Burunduk found the reason, that the .png thumbnails need metadata:

https://forum.puppylinux.com/viewtopic.php?t=16991

Excellent, but I found that my fork used in EasyOS still doesn't work; which narrowed down to a particular source patch. Took out the patch, and now works. We will examine that patch sometime in the future. Anyway, now working in EasyOS:

img1

ROX looks for scripts in /etc/xdg/rox.sourceforge.net/MIME-thumb to generate the thumbnails.

img2

For example, script 'video_mp4':

#!/bin/sh
# $1-path to source, $2-path to output, $3-pixel size
exec ffmpegthumbnailer -i "${1}" -s ${3} -t 10 -q 8 -a -m -o ${2}

...ffmpegthumbnailer is a little binary executable, available via PKGget. All of this will be in the next release of Easy.

This is a nice feature to have. We are on a roll recently, improving ROX, so this is one more.   

Tags: easy

Kernel 6.12.92 compiled with SOF enabled

June 07, 2026 — BarryK

Yes, having another go! Here is blog post about the previous attempt:

Forum member NNI has compiled the kernel and reports success:

https://forum.puppylinux.com/viewtopic.php?p=171595#p171595

I have used basically the same kernel config, except disabled some "Kernel hacking" debug features. I doubt that Sound Open Firmware would require them, and one of them, CONFIG_LOCKDEV, caused the Broadcom "wl" module compile to fail, with "GPL only symbol: lockdep_init_map_type"

Interesting, in a previous blog post I reported using a script from the SOF project site, to determine what to enable in the '.config' file, and it enabled lots of kernel debugging features. Which I have now disabled. But, very odd, the script failed to enable what NNI found to be essential for SOF to work; CONFIG_SND_SOC_INTEL_SOUNDWIRE_LINK_BASELINE.

The '.config' file will be in woofQ2 when I next upload it, also uploaded separately here, with false ".gz" appended.    

Tags: easy

Alternative method to build EasyOS with Xlibre

June 05, 2026 — BarryK

Continuing a series of blog posts how Xlibre was compiled in EasyOS:

An earlier post described how Xlibre was builtin to EasyOS 7.3.8:

...in a nutshell, setup two repositories for APT to access; 'xlibre-devuan' and 'excalibur-backports'

On reflection, decided on a much simpler method; do away with all of that previous effort. Instead, just build Easy from Devuan packages as normal, then as a final step, install a single xlibre package that will overwrite all the Devuan X11 packages. And, those Devuan packages will be put on "hold" so won't get updated.

Simple, and the single big xlibre package could be a .deb package, but instead I chose the build a .pet package. PET packages are the original native package format in Puppy Linux, still supported in the EasyOS PKGget package manager. Note, it was forum member lobster who, a long time ago, stated that PET is an acronym for "Puppy Extra Treats".

A good thing about PET packages is that APT knows nothing about them. This is something that we can take advantage of; the script '4create-pet' will create a package, named, for example 'xlibre-25.1.0-260605-amd64.pet' that, when installed, will overwrite all of the X11 files. Here is the script:

#!/bin/sh

V="$(grep -o "version: '.*" xserver/meson.build | head -n 1 | cut -f 2 -d "'")"
D0="$(date +%y%m%d)"
D="${V}-${D0}" #ex: 25.1.0-260607
-d xlibre-${D}-amd64 ] && rm -rf xlibre-${D}-amd64
-d xlibre_DEV-${D}-amd64 ] && rm -rf xlibre_DEV-${D}-amd64
-f xlibre-${D}-amd64.pet ] && rm -f xlibre-${D}-amd64.pet
-f xlibre_DEV-${D}-amd64.pet ] && rm -f xlibre_DEV-${D}-amd64.pet

cp -a image xlibre-${D}-amd64
sync

#for debian compatibility...
mv -f xlibre-${D}-amd64/usr/bin/Xorg xlibre-${D}-amd64/usr/lib/xorg/
echo '#!/bin/sh
#
# Execute Xorg.wrap if it exists otherwise execute Xorg directly.
# This allows distros to put the suid wrapper in a separate package.

basedir=/usr/lib/xorg
if [ -x "$basedir"/Xorg.wrap ]; then
    exec "$basedir"/Xorg.wrap "$@"
else
    exec "$basedir"/Xorg "$@"
fi' xlibre-${D}-amd64/usr/bin/Xorg
chmod 755 xlibre-${D}-amd64/usr/bin/Xorg

find xlibre-${D}-amd64 -type f -exec sh -c 'file "$1" | grep -qE "ELF.*(executable|shared object)"' {} \; -exec strip --strip-unneeded {} +
sync

mkdir -p xlibre_DEV-${D}-amd64/usr/lib/xorg/modules/drivers
mkdir -p xlibre_DEV-${D}-amd64/usr/lib/xorg/modules/input
mv -f xlibre-${D}-amd64/usr/include xlibre_DEV-${D}-amd64/usr/
mv -f xlibre-${D}-amd64/usr/lib/pkgconfig xlibre_DEV-${D}-amd64/usr/lib/
mv -f xlibre-${D}-amd64/usr/lib/xorg/modules/drivers/*.la xlibre_DEV-${D}-amd64/usr/lib/xorg/modules/drivers/
mv -f xlibre-${D}-amd64/usr/lib/xorg/modules/input/*.la xlibre_DEV-${D}-amd64/usr/lib/xorg/modules/input/
sync

S="$(du -sk xlibre-${D}-amd64 | cut -f 1)"
echo "xlibre-${D}-amd64|xlibre|${D}-amd64||BuildingBlock|${S}K||xlibre-${D}-amd64.pet||Xlibre X11 server and drivers|devuan|excalibur||" xlibre-${D}-amd64/pet.specs
S="$(du -sk xlibre_DEV-${D}-amd64 | cut -f 1)"
echo "xlibre_DEV-${D}-amd64|xlibre_DEV|${D}-amd64||BuildingBlock|${S}K||xlibre_DEV-${D}-amd64.pet||Xlibre X11 server and drivers|devuan|excalibur||" xlibre_DEV-${D}-amd64/pet.specs

dir2tgz xlibre-${D}-amd64
tgz2pet xlibre-${D}-amd64.tar.gz
dir2tgz xlibre_DEV-${D}-amd64
tgz2pet xlibre_DEV-${D}-amd64.tar.gz
sync
echo "Created: xlibre-${D}-amd64.pet, xlibre_DEV-${D}-amd64.pet"
###end###

...the script also creates a separate 'xlibre_DEV-25.1.0-260605-amd64.pet' package.

The '4create-pet' script uploaded, with false '.gz' appended, here.

I could have created a 'pinstall.sh' post-install script inside the .pet, to put all the Devuan packages on "hold", for example:

# apt-mark hold xserver-xorg-video-vmware

However, I intend to do that in woofQ2. The xlibre PET is going to be installed into 'easy.sfs' in woofQ2, and one of the build scripts will do those "hold" operations.

Installing files without APT knowing, or removing, is done all over the place in woofQ2, mostly as exercises to reduce the bloat of 'easy.sfs'. So not doing anything new here.     

Tags: easy

Xlibre video drivers compiled in EasyOS

June 05, 2026 — BarryK

Here are the two previous blog posts:

Here is the '3xvideo' script:

#!/bin/sh

mkdir -p video

export XLIBRE_SRC="$(pwd)"
export XLIBRE_BUILD="${XLIBRE_SRC}/build"
export XLIBRE_PREFIX="${XLIBRE_SRC}/image"

cd video
#fail, rem: qxl v4l
Vn="intel amdgpu voodoo siliconmotion vmware ati cirrus geode xgi savage ast r128 fbdev dummy chips trident sisusb s3virge rendition nouveau mach64 neomagic mga i128 i740 ark apm vesa nested"

for aV in ${Vn}
do
 -z "$aV" ] && continue
 -d xf86-video-${aV} ] && rm -rf xf86-video-${aV}
 case "$aV" in
  amdgpu)
   #requires pkgs from stable-backports. hmmm, don't want that, get older..
   Br="-b release/25.0"
  ;;
  *) Br='' ;;
 esac
 git clone ${Br} https://github.com/X11Libre/xf86-video-${aV}.git --depth=1
 sync
 cd xf86-video-${aV}
 if -x autogen.sh ];then
  #hack so autogen.sh doesn't complain...
  #note, tricky, to escape ] it has to be the first after ^ ...
  -f configure.ac ] && sed -i 's%xorg-server >= [23456][^] ]*%xorg-server >= 21.0.0%' configure.ac
  case "$aV" in
   intelEx="--enable-sna --enable-uxa --with-default-accel=sna --enable-dri2 --enable-dri3 --with-default-dri=2 --enable-udev --enable-dga"  ;;
   amdgpuEx="--enable-udev" ;;
   vmwareEx="--with-libudev" ;;
   qxlEx="--enable-udev --enable-xspice=no --enable-kms" ;;
   atiEx="--enable-glamor --enable-udev" ;;
   savageEx="--enable-dri" ;;
   r128|mach64|mgaEx="--enable-exa --enable-dri" ;;
   vesa)
    #compile fail, needs hacks...
    grep -qF '<signal.h>' src/vesa.c
    if $? -ne ];then
     sed -i 's%#include <fcntl.h>%#include <fcntl.h>\n#include <signal.h>%' src/vesa.c
    fi
    sed -i 's%std=c99%std=gnu99%' configure.ac
    Ex=''
   ;;
   *) Ex="" ;;
  esac
  NOCONFIGURE=./autogen.sh
  PKG_CONFIG_PATH="${XLIBRE_PREFIX}/usr/lib/pkgconfig" \
    ./configure --prefix=/usr --sysconfdir=/etc/X11 --localstatedir=/var ${Ex}
  make
  DESTDIR=${XLIBRE_PREFIX} make install
 fi
 cd ..
 #hack, avoid conflicting .h files...
 cp -a -f --remove-destination ${XLIBRE_PREFIX}/usr/include/xorg/* /usr/include/xorg/
 sync
 echo -n "ENTER: "read keepgoing
done

There were some issues. Firstly, the latest xf86-video-amdgpu source requires packages from 'excalibur-backports', also known as 'stable-backports'. This is unfortunate, as backporting from 'testing' can cause issues elsewhere. So I downloaded the "release/25.0" branch, which is 6 months old. Not satisfactory.

The 'xf86-video-vesa' source does not compile. As can be seen above, I patched it so it will compile. This needs to be raised as an issue on the github project site. I took out 'qxl' and 'v4l' drivers, as they failed, but didn't bother to try and fix them.

Script '3xvideo' is uploaded, with false '.gz' appended, here.

I set these three scripts to all install into the 'image' folder. The reason for this is want to create just one package, that will install and replace all the Devuan X11 packages. Will explain that in the next blog post.   

Tags: easy

Xlibre input drivers compiled in EasyOS

June 05, 2026 — BarryK

Previous blog post, explains how compiled the Xlibre server:

For the input drivers, created script '2xinput':

#!/bin/sh

mkdir -p input

export XLIBRE_SRC="$(pwd)"
export XLIBRE_BUILD="${XLIBRE_SRC}/build"
export XLIBRE_PREFIX="${XLIBRE_SRC}/image"
#export XLIBRE_PREFIX="/usr"

cd input
#rem:  egalax elographics
In="evdev joystick vmmouse wacom libinput void synaptics keyboard mouse"

for aI in ${In}
do
 -d xf86-input-${aI} ] && rm -rf xf86-input-${aI}
 git clone https://github.com/X11Libre/xf86-input-${aI}.git --depth=1
 sync
 cd xf86-input-${aI}
 case "$aI" in
  joystickEx="--disable-debug" ;;
  synapticsEx="--disable-unit-tests" ;;
  voidEx="" ;;
  wacomEx="--disable-unit-tests --disable-debug --with-systemd-unit-dir=no" ;;
  *) Ex="" ;;
 esac
 NOCONFIGURE=./autogen.sh
 PKG_CONFIG_PATH="${XLIBRE_PREFIX}/usr/lib/pkgconfig" \
    ./configure --prefix=/usr --sysconfdir=/etc/X11 --localstatedir=/var ${Ex}
 make
 DESTDIR=${XLIBRE_PREFIX} make install
 cd ..
 #hack, avoid conflicting .h files...
 cp -a -f --remove-destination ${XLIBRE_PREFIX}/usr/include/xorg/* /usr/include/xorg/
 sync
 echo -n "ENTER: "read keepgoing
done

Not much explanation required, pretty straightforward. Perhaps could have figured a way around it, but to be sure that the correct header files are always seen, copied them to /usr/include/xorg, as mentioned in the previous blog post.

Notice the "--with-systemd-unit-dir=no" for the wacom driver. This is because EasyOS uses busybox init, with pup_event service management. Definitely no systemd!

The script '2xinput', with false ".gz" appended, uploaded here.

Next blog post will explain how the video drivers were compiled.   

Tags: easy

Xlibre server and drivers compiled in EasyOS

June 05, 2026 — BarryK

Easy version 7.3.8, the latest release, is built with Xlibre Devuan .deb packages, from here:

https://github.com/xlibre-debian/devuan/

...a couple of problems with that; firstly, the xf86-video-amdgpu driver requires some packages from 'excalibur-backports' repository, secondly, not all of the video drivers have been compiled.

So, decided to compile it all myself. This was a good starting point:

https://github.com/X11Libre/xserver/wiki/Building-XLibre

However, I got a bit messed up with how they have done it. Instead, decided that it is better to compile in the normal way that source packages expect, with, most importantly, "--prefix=/usr --sysconfdir=/etc/X11 --localstatedir=/var". Installation can be to wherever required, by "DESTDIR=..." prefix in autotools make, or "--prefixdir ..." for meson.

I will split up these blog posts, firstly explaining about compiling the Xlibre server. This is script '1xserver':

#!/bin/sh
#ref: https://github.com/X11Libre/xserver/wiki/Building-XLibre

-d build ] && rm -rf build
mkdir build
-d image ] && rm -rf image
mkdir -p image/usr

export XLIBRE_SRC="$(pwd)"
export XLIBRE_BUILD="${XLIBRE_SRC}/build"
export XLIBRE_PREFIX="${XLIBRE_SRC}/image"

-d xserver ] && rm -rf xserver
git clone https://github.com/X11Libre/xserver.git "${XLIBRE_SRC}/xserver" --depth=1

echo -n "ENTER: "read keepgoing

cd xserver
#installs into usr/lib/xorg/modules/xlibre-25, remove 'xlibre-25':
sed -i "s%^module_abi_tag =.*%module_abi_tag = ''%" meson.build

#modules install path is wrong for debian and devuan...
sed -i 's%^input_drivers_dir=.*%input_drivers_dir=@moduledir@/input%' xlibre-server.pc.in #was: input_drivers_dir=@moduledir@/drivers/input
sed -i 's%^video_drivers_dir=.*%video_drivers_dir=@moduledir@/drivers%' xlibre-server.pc.in #was: video_drivers_dir=@moduledir@/drivers/video
sed -i 's%^input_drivers_dir=.*%input_drivers_dir=@moduledir@/input%' xorg-server.pc.in
sed -i 's%^video_drivers_dir=.*%video_drivers_dir=@moduledir@/drivers%' xorg-server.pc.in

# -Dsha1=libnettle instead of -Dsha1=libcrypto (openssl) (debian has nettle, oe has openssl)
# debian: libunwind=true xselinux=true
#-Dlibdir=lib prevents install into usr/lib/x86_64-linux-gnu
meson setup --prefix /usr "$XLIBRE_BUILD" --buildtype release --localstatedir /var --sysconfdir /etc/X11 -Dxnest=true -Ddtrace=false -Dint10=x86emu -Dxkb_output_dir=/var/lib/xkb -Dudev=true -Ddga=true -Ddri1=true -Ddri2=true -Ddri3=true -Dglx=true -Dglamor=true -Dlibunwind=true -Dsystemd_logind=false -Dxinerama=true -Dxvfb=false -Dxephyr=true -Dsha1=libnettle -Dxorg=true -Dxwin=false -Dxquartz=false -Dgbm=true -Dglx_dri=true -Dglx=true -Dxdmcp=true -Dpciaccess=true -Dudev=true -Dudev_kms=true -Dsystemd_notify=false -Dscreensaver=true -Dxres=true -Dxselinux=false -Dxv=true -Dxvmc=true -Dmitshm=true -Ddrm=true -Dseatd_libseat=false -Dlibdir=lib

echo -n "ENTER: "read keepgoing

ninja -C "$XLIBRE_BUILD"

echo -n "ENTER: "read keepgoing

#use meson, not ninja, as meson allows --destdir
meson install -C "$XLIBRE_BUILD" --destdir "${XLIBRE_PREFIX}"

#no, avoid trouble with .h files, copy to /usr/include...
##hack .h path for compiling drivers...
#sed -i "s%includedir=.*%includedir=${XLIBRE_PREFIX}/usr/include%" ${XLIBRE_PREFIX}/usr/lib/pkgconfig/xlibre-server.pc
cp -a -f --remove-destination ${XLIBRE_PREFIX}/usr/include/xorg/* /usr/include/xorg/
#also a hack, probably not necessary (running in devx container with xephyr so this ok)
cp -a -f --remove-destination ${XLIBRE_PREFIX}/usr/lib/xorg/modules/*.so /usr/lib/xorg/modules/
cp -a -f --remove-destination ${XLIBRE_PREFIX}/usr/lib/xorg/modules/extensions/libglx.so /usr/lib/xorg/modules/extensions/
sync

Compiling in EasyOS is very simple, just click on the "devx" desktop icon, and you are flipped into a full desktop in a container, with all required "-dev" Devuan/Debian Excalibur/Trixie packages automatically installed. Well almost, there were some missing, but that will be fixed in the next release of Easy, so all that you will need is to download the '1xserver' and others that I will post for compiling the drivers, and just run them -- they should be in a partition with ext4 filesystem -- don't do it within the "/" folder hierarchy as EasyOS is running in RAM and there is limited RAM space.

So, download to a ext4 partition, open a terminal, and run the script "# ./1xserver", and you will find the result installed to folder "image".

There are four scripts, and they will be in woofQ2, the EasyOS build system. However, have uploaded '1xserver', with a false ".gz" appended, here. It may change, the latest will be found in woofQ2.

I was a little bit concerned that when compiling the drivers, that they see the correct .h header files, so copied them to /usr/include/xorg as you can see near the end of the script.

Note that installation is to image/usr/lib/xorg/modules/xlibre-25; however, I don't want that, want a result that will completely replace the current Xorg installation, so want the exact same paths. So I emptied the "module_abi_tag" variable in 'meson.build'. See also the video and input drivers paths had to be fixed for Debian. Also see "-Dlibdir=lib" to prevent installation into usr/lib/x86_64-linux-gnu

Meson has been configured with lots of options, that are defaults anyway, but I put them in explicitly in case a missing library won't just silently fall back to disabled. Notice "-Dxselinux=false" as I don't use selinux in EasyOS.

Enough explanation I think. The next post will explain '2input', compiling the input drivers.   

Tags: easy

EasyOS Excalibur-series version 7.3.8

June 04, 2026 — BarryK

Major changes this time!

Release notes since version 7.3.7:

As Easy is positioned as a "retro" distribution, it would seem a good idea to replace Xorg/X11 with Xlibre. That is done, but there is one downside; there are less xserver-xorg-video-* drivers, which may be an issue on very old hardware. Will see how it goes; if anyone running on an old PC reports video problems... well, I suppose will go back to Debian Xorg.

One requirement of Xlibre is that it requires some packages from the Debian "excalibur-backports" repository. I went the whole way, and gave that repository the highest priority, so Easy got built with all packages in excalibur-backports getting preference. Upside is later package versions, downside is not as well tested as the stable repository. Again, we shall see.

Note, excalibur-backports, also known as stable-backports, has packages back-ported from the Debian "testing" repository.

Easy 7.3.7 has the SMPlayer media player, as Celluloid, that we have had just about forever in earlier releases of Easy, has been troublesome. EcoTube is a fork of Celluloid, works for me; let me know how it works for you.

Newcomers to EasyOS, recommend read the 7.3 announcement:

Download 7.3.8:

https://distro.ibiblio.org/easyos/amd64/releases/excalibur/2026/7.3.8/

If already running EasyOS, just click the "update" desktop icon, as usual. The .img and devx sfs delta (difference) files are big this time, due to so many changes. Normally, we would expect the delta file to be small, under 100MB, but this time about 300MB.

Feedback welcome at the forum:

https://forum.puppylinux.com/viewtopic.php?p=171493#p171493

Have fun!    

Tags: easy