February 2017

Last month was our first newsletter and to date I'm not sure whether it was a success or not. I didn't receive as many articles as I hoped. I'm sure many will read the newsletter and hopefully discover some useful information.

There must be readers out there that can provide a review on a Puppy distro or a software package that runs in Puppy.

This month I received a good selection of articles by various contributors.

I've had a few people ask, what is the purpose of the newsletter? I think kerl covered it quite well in the first post of the Puppy Newsletter thread in the Pupply Linux Forums. Although there are quite a few good sources of information regarding Puppy Linux, they can be difficult to find, especially for the novice. Some of these other sources include,,,, and the Slacko Homepage.

I have had a few requests to include a subscription service. It took a little bit of effort to get it up and running but it seems to be working. I took forum member jamesbond's advice and opted for I notice quite a few people have already subscribed. To provide additional choice I included an RSS feed.

There have been a few people expressing concerns with providing an email address for subscriptions. This is the reason I also included the RSS feed. If you don't want to do either then read the newsletter online.

Did you know, that you can save the web version as a PDF file by printing to a file. In your browser select File > Print > Print to File. The hyperlinks may not work in the PDF file however.

The Puppy Linux Forums is the main source for a lot of the information repeated here. Where appropriate, links will be provided so you can read first hand about the distro's development. This section will likely just provide highlights as a starting point.

Quirky 8.1.5

Written by Barry Kauler

Quirky Linux 8.1.5 is released for x86_64 CPUs. This is codenamed "Xerus", as it has binary compatibility with Ubuntu 16.04 package repositories. This means that Quirky is able to install DEB packages from these repositories.
Other than that, Quirky is in no way similar to Ubuntu!

Attachment #00

euclid.iso was released on 01 Jan 2017 by zagreb999.

It can be downloaded from here and here.


Each month this is where new or updated software will be announced. If you would like to share experiences, problems or fixes this is the place.

This is a community newsletter and therefore requires articles from you, if we are to succeed.


Information provide by fr33land

Bluetooth has been a hit and miss affair for quite a long time in Puppy Linux. Forum member fr33land has done quite a bit of work and published it here:

He has even provided packages for various distro's.


Written by smokey01

Wouldn't it be nice to download an application and it just ran, every time without problems. To make life even simpler, wouldn't it be great if each application was a single file. Apparently this is actually possible, look here:

To gain a better understanding of how this system works, watch this video.

Below is a list of AppImages available for download.

The main drawback to this system is size. The AppImages will be larger than applications that use shared libraries. For many however, simplicity trumps size.

Another download site.

Here comes the controversy. I downloaded three AppImages, made them executable and none of them ran. I was rather disappointed by this so I did an ldd on each package to see if any libs might be missing. To my surprise there were. Now my understanding was the AppImage binary was to contain everything it needed to run. This is why it should run on any Linux distro. I would expect to see different binaries for x86 and x86_64 architecture.

Mr Simon Peter's narration on the video was quite interesting but doesn't appear to be accurate. Maybe the people who made the packages didn't follow the rules. Having said that I did download and it worked.

In the past I have run Linux binaries from and they worked fine. Now most of the apps on that site seem to be windows related.

I would like to invite a bit of community discussion on this topic so let's have some articles please.

Rox Clock

Provided by jamesbond

Rox Clock is a very smart bit of code written by jamesbond.

Considering there are only six posts in the forum thread, I assume not too many have seen it.

Have a read about it here.


Written by bigpup

YAPI developed by L18L.
(yet another Puppy Installer) install any Puppy iso.

The problem with the Puppy Universal Installer.
It will only install the Puppy version you are running the installer in.
It will not do an install from any other Puppy version.iso file.

Puppy Linux needs a program, running in Puppy, that will do an install using any Puppy version.iso file.

YAPI solves this problem.

This is what should be possible with YAPI

Which Puppy to install
3 options.
1.This actual running Puppy
2. Any other Puppy iso from all storage locations
(choose from a list of iso's found on any storage devices attached to computer)
3. Navigate to an iso. Right click and choose "open with... YAPI"

Type of installs on different storage devices.

USB flash drive
(Can have Fat 32 or NTFS Windows format or any Linux format).
1. Frugal install
Installs Grub4dos bootloader on drive.
2. SuperFloppy install (Careful it uses all of the drive) Limited to 16GB or less drive size. Does not need a boot loader

External USB hard drive
(Can have Fat 32 or NTFS Windows format or any Linux format).
Frugal install
Installs Grub4dos bootloader on drive.

Internal hard drive or any other type internal drive
(Can have Fat 32 or NTFS Windows format or any Linux format).
1. Frugal install
2. Full install (must use a Linux format)
Installs Grub4dos bootloader on drive.

YAPI does use Grub4dos as the bootloader.
However, this does allow the install of several Puppies to the same location and a way to boot each one, separately.
You can have one or many Puppies on one USB flash drive.

YAPI seems to work OK when run on the newest Puppy versions, made with Woof-CE.
Other Puppy versions may not offer all options.
Frugal and full installs should work.

Note about SuperFloppy installs:
SuperFloppy installs will put the USB flash drive in a non-normal partition/format condition.
If you wish to no longer use the USB flash drive this way.
To get the USB flash drive back to a normal partition/format condition do the following things.

To do this the USB flash drive can not be in use. Only accessed. Not booted from. Not being used to run Puppy.
In a console type this code and hit enter.
(The code of=/dev/sdb sdb is the flash drive, yours could be sdc, sdd, etc.... adjust to match yours)
dd if=/dev/zero of=/dev/sdb bs=1M count=1

This will remove all partitions, format, and data from USB flash drive.

Use Gparted to get back to normal setup.
1. Make a partition table:
GParted > Device > Create Partition Table > MS-DOS default.
2. Partition and format as you like.

For more information go here:


From time to time we will publish an article about one of our developers, contributors or maybe just an interesting person.

Mick Amadio

Source is from Mick's website.

I started using Linux in 2002 and find that it is much more versatile than MicroSoft Windows™. I started out with Mandrake Linux 8.0 which went the way of the dodo when MandrakeSoft merged with Connectiva to form Mandriva Linux. In turn, Mandriva has recently (2011) been forked into Open Mandriva and Mageia. I have used many distros including Slackware, Mandrake/Mandriva, Red Hat, Ubuntu, Linux Mint, Xubuntu, Debian, Damn Small Linux, Puppy Linux and some micro distros, Blueflops and Basic-Linux. To be honest I liked most of them! But, some more than others.

Slackware Linux, the oldest surviving Linux distribution is my distro of choice for heavy lifting and stability. That said, it is not for everyone, though with a bit of reading anyone could use it and get on comfortably with the support of the excellent and educated community at Linux Questions.

In 2010, I started using a system developed by Barry Kauler called "woof", which is designed to build a Puppy Linux distro from other Linux distros packages. Naturally, I chose to build with Slackware packages, due to Slackware's excellent stability. I named this project "Slacko" and you can read more about it on my blog.

I prefer to use free and open source software whenever possible, even when I am forced to use Windows. The are Linux distributions available that are 100% free/libre that contain absolutely no proprietary software. Unfortunately, many hardware manufacturers do not release source code for their drivers but firmware "blobs", that contain closed source software to allow the hardware to run under the operating system. This can be changed by people doing a little research when they purchase hardware, we all know the almighty dollar is king!

There are literally thousands of FLOSS projects around, matching up with many proprietary programs. LibreOffice is a great example. Not only is free software open source but free as in free beer too, that is, you don't pay! Other great examples are Apache Web server (powering most of the web servers on the net) and the Android operating system, powering many of the world's smart phones.

I started coding with Linux distros in 2007, at first just editing shell scripts to suit my needs. (Shell scripting is a simple yet powerful way of calling different programs to automate certain tasks, similar to batch programs in Windows). Now I've written many scripts, with the help of the community, and even written a couple of programs in the C language, nothing fancy as I am not really a programmer, just a hobbyist.


Written by oldyeller

Hello Puppy World,

How did I come to use puppy, I got tired of using windows and others bible programs. So I started to
look around for other systems and that is when I discovered linux so I tried the bigger ones and they
were ok. I kept looking and found puppy, so I started to read the forum and my first puppy was Lupu
and I fell in love with puppy. That was back in 2011 and I been using puppy ever since.

The people in puppy world/kennel are the best, I knew nothing about coding but I wanted to build my
own puppy and bible program and from that came BiblePup which is no more since it is copyrighted.
I learned how to remaster by reading the forum and just jumping in.

Now learning to code was a lot harder, but still the community was there to help awesome people in
puppy. Sage, radky, L18L, 01micko, smokey01 and many, many more have helped me to get where I
am. Thanks To Barryk for creating this wonderful os.

If you want to learn all I can say is jump in and start. Try and write something or post an Idea about
it. As long as you try and do it others will help when you get stuck.

Places to check out on the forum for training. Learn how to use the shell/terminal. some commands to
some commands. Help with bash. GtkDailog tips. YAD Tips.

This is a great community jump in and have fun learning and playing with puppy.



This is a good section to discuss how to compile software. Compiling is not everyones cup of tea but the more people that can manage it, the longer life Puppy will have.

The hardest part of compiling is the build recipe as there are so many options. Let's include proven recipes here.


Written by smokey01

One of the really nice advantages about using slacko and/or the latest Fatdog64 they can both use slackware packages. Now you might think, so what, what's the big deal. Compiling can be quite difficult because you often need to know complicated command line switches and there are often many dependencies required.

Using slackbuilds takes away a lot of the mystery. site.

Slackbuilds are compiling recipes with links to required dependencies. This certainly saves a lot of time and they mostly build on the first attempt. You do need to keep in mind Slackbuilds are designed around Slackware Linux which has different standard files than Slacko, Fatdog and other flavours. I have used slackbuilds successfully on Slacko, Fatdog64, Lucid, and Tahrpup in the past. It sometimes just needs a few additional dependencies to be compiled and installed first.

If a SlackBuild is to make a package at the end of the process then you will need to install Slackware package tools. If you only want to build .pet packages then you don't need the package tools. Slacko and Fatdog64 have the tools.

Allow me to provide an example. For this example I am going to use slackbuilds to compile a nice little File Manager called emelfm2. My example was tested in Fatdog64-700 and may not work in other Puppy flavours, but it should. I chose emelfm2 because it's usefull and doesn't require a lot of dependencies. KISS principle

Click here to get the SlackBuild and source code.

Download the slackbuild file to a partition with lots of space: emelfm2.tar.gz

Now click on the slackbuild file. It will create a directory called emelfm2. Enter the directory. Once in the directory you will see five files. If you have been using Rox, and I expect you would, press the ~ key, just under the Esc key. This will open a terminal in the same directory.

Download and copy the source code into the same directory. There should now be six files in the directory.

In the terminal type the following: ./emelfm2.SlackBuild then press enter. Now site back and watch the magic.
Notice the dot slash at the beginning and capital S and B in SlackBuild.

Using Rox navigate to /tmp. If everything went well and you had the Slackware Package Tools installed, you should see a package called /tmp/emelfm2-0.9.1-x86_64-1_SBo.tgz or something similar. If the Slackware Package Tools were not installed then enter the SBo directory. In there you will find two directories, emelfm2-0.9.1 and package-emelfm2. By all means have a look in both directories and you will likely understand what happened. The first directory contains the compiled source and the second, the file system with appropriate files. Move out of the directories.

Rename the package-emelfm2 directory to emelfm2-0.9.1

You can remove the install directory and its contents as it's not needed for regular .pet packages **.

In the example above it is OK to do this,
but usually you will need to run the install/ script in order to create any necessary symlinks.

Let's pretend the above example needs some symlinks,
this is what you would need to do:

Navigate to /tmp/SBo/package-emelfm2
Open a terminal in that directory
and run the following command:

. install/

(that's a preceding DOT, not green fly poop)

Hopefully all symlinks will have been created.

Now from a terminal in the same directory type: dir2pet emelfm2-0.9.1 and a .pet will be created.

If you were compiling in a 64bit system it would make sense to rename the directory to emelfm2-0.9.1-x86_64 then do dir2pet emelfm2-0.9.1-x86_64

If that didn't knock your socks off, buy bigger socks, they are obviously too tight.


Provided by Billtoo

This VLC build recipe was provided by Billtoo

added this pet:

Added qt-487 from PPM first, may also need dbusmenu from PPM.

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
--libdir=/usr/lib --enable-run-as-root --enable-merge-ffmpeg

make -j2

make install

new2dir make install if you want to make a pet

Google will track down the files, will attach the lua pet to this
message (rename removing the .gz)

Scripts & Code

Create a wmx Main Menu by musher0

Creating a wmx Main Menu

Creating a PupMenu for the wmx window manager

by Christian L'Écuyer (aka musher0 in the Puppy forum)

Hello all.

As I mentioned elsewhere, I know that this script is of limited interest to
Puppyists who do not like to use alternative window managers. Nevertheless,
I felt that the text structuring and the speed work presented here might be
transferable to other scripts and appeal to a wider audience.


That said, let me get right down to it. Wmx's menu is peculiar in that:

1) it is file- and directory-based within the /root/.wmx directory. It does not
reside in a single text or XML file, like the pekwm, icewm or jwm menus;

2) it is also a bit difficult to manoeuver through the wmx menu with the mouse,
in that your mouse movements need to be very precise. Otherwise you end up
with the sub-menu above or below the one you want being displayed;

3) because of #2 above, we try to limit the menu to two sub-directories deep,
starting from the /root/.wmx dir;

4) the directories are listed first, on the left-hand side, whereas regular
files (the launch scripts or the executables) appear after the directories
on the right-hand side of the menu;

5) it has to be in ASCII and it follows strict ASCII order;

6) finally, these launcher files in the wmx menu must have the executable
permission on to call the corresponding program.

Figure 1 -- The wmx menu OOTB for the "Documents" category:

It's a simple drop-down list with no visual hints. Were it any longer, we'd have
difficulty focusing on and finding the item we are looking for.

Giving the wmx menu visual structure

Given those restrictions, it was indeed a challenge to come up with a menu
that worked with relative ease for the user.

The script that follows is the n-th I've produced; I lost count! But I feel this one
works rather nicely, given the restrictions. At some point, I realized that to make
the wmx menu friendlier for the user, it needed structure.

Aside what I mentioned in point 4) above, there wasn't any "visual hint" the user
could check for to facilitate his/her browsing through this menu. So I introduced
ASCII separators between the dirs and the executables, and within those,
according to the number of entries. (Please see lines 120-137 in the script below.)

Also, since the sub-menus display on their own, not as connected to the main menu,
there was a need to show the name of the submenu the user was looking at. (Line 30,
cATId function.)

Figure 2 -- The wmx menu for the same category with submenu identifier and
separators, as created by the script below:

We now have something structured, and the eye can more easily locate an item
in the list.

Aiming for maximum speed

The first drafts of this script took +/- 10 seconds to execute, which was clearly
too long from the user's standpoint. I delved into the matter and after much
research, I discovered the following bash script accelerators:

1) use sort if you can on any longish data you are processing (end of line 51);

2) prepare that sort (what comes in front of the sort command at line 51);

3) in the same line of thought, we try to have the sort resulting from line 51
match the categories as much as possible (lines 56-100). In other words, we
squeeze a bit more speed out of the script when the program categories are
in alphabetic order;

4) use whatever command is faster: < awk 'END { print NR }' > instead of
< wc -l > at line 125, for example;

5) put UTF-8 on hold if you can by issuing the LC_ALL=C statement before
the sort (line 50) and by re-implementing the LANG variable once the process
is finished.

The process will run even faster than if you use LANG=C. LC_ALL also has
another advantage in that it leaves the LANG variable alone, so you can
still use the LANG variable to switch LC_ALL on or off (e.g. line 140). (Many
thanks to the author of the sort utility for having included this tip in his doc.)

6) #5 above considerably speeds up any processing of data in English;

7) Now, with a bit of imagination, this trick can also be applied to non-English
locales written in Latin alphabet.

Here's how: we intentionally remove the accents in our translation for
the main process. In the Latin languages at least, not all words have accents
anyway. For those words with accents, we substitute the accented character
with the regular character. At the end of the process, we set LC_ALL back to
what it was (""), so the language variables (LC_NUMERIC, LC_TIME, etc.)
are functional again. So once the menu has been created, we replace (in the
case of wmx, whose menu is directory- and file-based, that means "move"
[line 28]), the intentionally faulty characters with the correct ones.

The advantage of processing the translation this way is that +/- 90 % of it
is done benefitting from the great speed allowed by LC_ALL=C.

8) I hope you are seated in a comfortable chair for this next one, because
it's quite a surprise. (It was to me, at least.)

The biggest acceleration gain in this menu script comes from NOT entering
the *.desktop file to extract the NAME= line. (Line 34, "prrrouuittt" function.)

This has been looking every dev in the face for so long, and no one seems to
have noticed: the name of the *.desktop file somehow has to match the name
of the executable inside, so we do not need to enter the file and process the
NAME= line inside the *.desktop file. This alone meant a gain of three
seconds in the script;

9) Finally, we use bash's internal string splitting capacity throughout ( for ex.:
j="${i%:*}", line 54), instead of calling external utilities such as awk or cut to
do the job. This does again help in speeding up the script.

As you'll see in the mini-report at lines 162 and ff. of the script, the result of
using the above tips is that we can create a translated menu almost as fast as
the ASCII / English one. Really on its tail, with a lag of only 2 tenths of a second.
I've applied this only to French, but it should work across all Latin languages.
Testers welcome!

We end up with an English menu for wmx being created in less than 0.9 seconds for
176 entries, and a French menu, in 1.1 seconds, roughly ten times faster than the
very first draft. More or less, depending on the speed of your CPU, of course:
please read the disclaimer at the bottom of the script.


Any constructive comment welcome.


Chris (aka musher0)

Note 1 -- I would be remiss not to mention the seminal work on menu creation done
by forum members technosaurus, aragon, et al., a few years ago on this thread:

Lines 56-100 of my script below owe much to their initial work, even if adapted
and non literal.

Note 2 -- If you wish to learn more about the evolution of the wmx window manager
on Puppy, please refer to this Puppy forum thread:

1 #!/bin/ash
2 ##
3 #
4 ## Crée un menu façon xdg pour wmx à partir des fichiers *.desktop
5 ## se trouvant dans /usr/share/applications. /
6 ## Creates an "xdg-type" menu for wmx from the *.desktop files at
7 ## /usr/share/applications.
8 #
9 ### Dépendances : / Dependencies: (m)awk, grep, tree, bash > 4.2.
10 #
11 ### (c) Christian L'Écuyer, Gatineau (Qc), Canada, 27 déc. 2016. GPL3
12 ### (Alias musher0 sur le forum Puppy / on the Puppy forum.) Rev. : Jan 5 2017.
13 #### set -xe
15 # Variables
16 CoLoR="bd AntiqueWhite1 -bg AntiqueWhite4 -fg white"
17 TreefI="tree -fi -L 1 --noreport -I '*~*'"
19 ####### Avertissement / Notice
20 case "${LANG:0:2}" in fr)TXTMSG1=" _C'est déjà fait !_ " ;;
21 en|*)TXTMSG1=" _It's already done!_ " ;;
22 esac
23 yaf-splash border true -bd black -margin 15 -bw 10 -bg_gradient true -$CoLoR -font LiberationSerif -fontsize 13 -timeout 2 -outline 0 -text "$TXTMSG1" 2>/dev/null &
25 # Fonctions / Functions
26 sprtrs () { mkdir -p $Dir/-~~~~~~~~~~~;>$Dir/~~~~~~~~~~~~~~~; }
27 lsUC () { [ "`ls $Dir/[[:upper:]]* 2>/dev/null`" ] && > $Dir/_~~~~~~~~~~~~~~; }
28 ChngSttR () { mv -f -u "${line%%+*}" "${line#*+}"; }
30 cATid () { if [ ! -d /root/.wmx/PupMenu/$CateG/$CateG ];then
31 mkdir -p /root/.wmx/PupMenu/$CateG/$CateG
32 > /root/.wmx/PupMenu/$CateG/-~~~~~~~~~;fi; }
34 prrrouuittt () { awk -F"=" '$1=="Exec" { print "#!/bin/sh\n"$2 }' "${i#*:}".desktop > /root/.wmx/PupMenu/$CateG/"${i#*:}"; }
35 # On gagne 3 secondes en utilisant le nom du fichier *.desktop comme
36 # nom au lieu d'entrer dans le fichier et d'en extraire le « Name= ». /
37 # Three seconds are gained by using the name of the *.desktop file as name
38 # instead of entering the file to extract the "Name=".
40 pirouet () { [ -d /root/.wmx/PupMenu/$CateG/$CateG ] || cATid; # Au besoin. / As needed.
41 prrrouuittt; }
43 #### Action
44 cd /usr/share/applications # Point de départ / Starting point.
45 rm -r -f /root/.wmx/PupMenu
46 # Renouvelle; plus rapide comme ça. / Renews; faster this way.
47 mkdir -p /root/.wmx/PupMenu/-~~~_PuppyLinux
49 # Début du peuplement / Population begins.
50 LC_ALL=C # Fait gagner plus d'une seconde. / We gain one second.
51 for i in `grep -H Categor *.desktop | grep -E -v "bOu|default|DVD|filemnt|Ice|javafilter|JWM|jwm|mono|petget|pupzip" | awk -F":" '{ print $2":"$1 }' | awk -F= '{ print $2 }' | awk -F"." '{ print $1 }' | sort`;do
52 # On gagne une autre seconde en préparant la variable pour pouvoir la trier
53 # selon la catégorie. / We gain another second by preparing the var. for a sort.
54 j="${i%:*}";CateG="${j%%;*}"
55 case "${LANG:0:2}" in # Classement / Sorting
56 fr)case "$CateG" in # Triées
57 Archiving)CateG="_Archivage" ;;
58 *urning)CateG="_Gravure" ;;
59 *Business*|*Calculat*)CateG="_Affaires" ;;
60 Database)CateG="_BdD" ;;
61 *Desktop*)CateG="_Bureau" ;;
62 *evelop*|GUIDesigner|HexEditor)CateG="_Developpement" ;;
63 # Sans accent ! On fait la correction d'orthographe à la fin seulement
64 # pour profiter jusque là de la vitesse que procure LC_ALL=C. /
65 # Translation without any accents. The spell-checking will be done at the end
66 # so we can benefit from the speed allowed by LC-ALL=C.
67 *Document*|TextEditor|WordProcessor)CateG="_Documents" ;;
68 *Filesystem*|PackageManager)CateG="_Systeme_de_fichiers" ;;
69 FileManager)CateG="_Gestion_de_fichiers" ;;
70 *[Gg]ame|*Fun*)CateG="_Jeux" ;;
71 *Graphic*|Presentation)CateG="_Graphiques" ;;
72 *Internet*|WebBrowser|FileTransfer)CateG="_Internet" ;;
73 IRC|*Network*|Telephony)CateG="_Reseau" ;; # Idem !
74 *Multimedia*|Audi*|Video|Mixer)CateG="_Multimedia" ;;
75 *Personal*)CateG="_Personnel" ;;
76 *[Ss]etup*)if [ "`echo "$CateG" | grep -v izard`" ];then
77 CateG="_Parametrage"
78 else
79 CateG="_Assistants"
80 fi ;;
81 *System*|Security|Hardware*)CateG="_Systeme" ;;
82 *Utility|Termina*|Monitor)CateG="_Utilitaires" ;;
83 esac
84 pirouet ;;
85 # pt) ;; # de) ;; # etc.
87 en|*)case "$CateG" in # sorted
88 Archiving)CateG="_Archiving" ;;
89 *urning)CateG="_Burning" ;;
90 *Business*|*Calculat*)CateG="_Business" ;;
91 Database)CateG="_Database" ;;
92 *Desktop*)CateG="_Desktop" ;;
93 *evelop*|GUIDesigner|HexEditor)CateG="_Development" ;;
94 *Document*|TextEditor|WordProcessor)CateG="_Documents" ;;
95 *Filesystem*|PackageManager)CateG="_Filesystem" ;;
96 FileManager)CateG="_File_Managing" ;;
97 *[Gg]ame|*Fun*)CateG="_Games" ;;
98 *Graphic*|Presentation)CateG="_Graphics" ;;
99 *Internet*|WebBrowser|FileTransfer)CateG="_Internet" ;;
100 IRC|*Network*|Telephony)CateG="_Network" ;;
101 *Multimedia*|Audi*|Video|Mixer)CateG="_Multimedia" ;;
102 *Personal*)CateG="_Personal" ;;
103 *[Ss]etup*)if [ "`echo "$CateG" | grep -v izard`" ];then
104 CateG="_Setup"
105 else
106 CateG="_Wizards"
107 fi ;;
108 *System*|Security|Hardware*)CateG="_System" ;;
109 *Utility|Termina*|Monitor)CateG="_Utilities" ;;
110 esac
111 pirouet ;;
112 esac
113 done
115 for i in `grep -l "Favorite;" *.desktop | awk -F"." '{ print $1 }'`
116 do CateG="Favorite";prrrouuittt;done # Inclut les favoris du PupMenu de Radky. /
117 # Including Radky's Favorites.
119 cd ~/.wmx/PupMenu # Raffinements au point d'arrivée / Refinements at finish line.
120 for Dir in `$TreefI -d`;do # Séparateurs / Separators
121 if [ "$Dir" = "." ];then
122 sprtrs
123 else
124 if [ "`echo $Dir | grep -v raphi`" ];then sprtrs
125 N="`$TreefI $Dir | `"
126 # Plus rapide que / Faster than / wc -l.
127 if [ "$N" -gt "20" ];then
128 [ "`ls $Dir/[[:upper:]]* 2>/dev/null`" ] && > $Dir/P~~~~~~~~~~~~~~
129 > $Dir/p~~~~~~~~~~~~~~;lsUC
130 elif [ "$N" -gt "15" ];then > $Dir/m~~~~~~~~~~~~~~;lsUC
131 elif [ "$N" -gt "10" ];then lsUC
132 fi
133 else
134 sprtrs;> $Dir/l~~~~~~~~~~~~~~ # Pour / For Graphi* dir. / rép.
135 fi
136 fi
137 done # Structurent et enjolivent le menu wmx. / Gives the wmx menu some structure
138 # and makes it prettier.
140 [ "${LANG:0:2}" = "en" ] || LC_ALL=""
141 case "${LANG:0:2}" in
142 # On complète ici la traduction en replaçant les accents sabotés. /
143 # We complete the translation by replacing the proper accents.
144 fr)echo -e "Favorite+Favoris\n_Developpement+_Développement
145 _Systeme_de_fichiers+_Système_de_fichiers\n_Reseau+_Réseau
146 _Multimedia+_Multimédia\n_Parametrage+_Paramétrage
147 _Systeme+_Système" | while read line;do
148 ChngSttR;cd "${line#*+}";ChngSttR;cd ..
149 done ;;
150 # Inclure autres langues au besoin. / Include other languages as needed.
151 esac
153 chmod -R 744 /root/.wmx/PupMenu # Rend exécutable. # chmod allergique aux « ~ ».
154 # Make executable. # chmod allergic to "­~".
155 rm -f /root/.wmx/PupMenu/_Utilit*/[Pp]* # Curieux... / Strange
156 # Ces séparateurs ne devraient pas être là vu le nombre d'entrées. /
157 # Those separateurs shouldn't be there given the number of entries.
159 # Utiliser le script pour créer des répertoires d'appoint. /
160 # An script can be used to create companion directories.
161 #########
162 # +/- 1,01 sec. pour 176 entrées. (Était +/- 6,46 sec. au départ.) :-) /
163 # In English, using LC_ALL=C throughout brings execution time down to
164 # +/- 0.87 sec. for 176 entries.
165 #
166 # "uname -a" / of system this script was created on: /
167 # / du système sur lequel ce script a été créé : /
168 # Linux puppypcNNNNN 3.14.65 #1 SMP Thu Mar 17 23:02:56 EDT 2016 i686
169 # AMD Turion(tm) 64 X2 Mobile Technology TL-52 AuthenticAMD GNU/Linux
170 # Your results will vary. / Vos résultats seront différents.
171 ######### set +xe
Tips & Tricks

Written by smokey01

To download a file when browsing is simple, click on the file. You are usually presented with a dialog asking where you would like to download the file, maybe open the file, or the file will automatically download into your specified download directory.

Now this method is quite convenient but there is a more convenient way. In the browser, navigate to the file you wish to download. Open Rox and navigate to where you want to place the file. Drag the file from your browser to the selected location in Rox. Instead of using the browser download manager, wget will be used.

This is a great way to download files especially if you often need to put them in different locations. I'm not sure if it works in all versions of Puppy but in does in tahrpup-6.0.2 using Palemoon and Fatdog-710 using Seamonkey.

Of course it probably won't work if you are user spot. User root, no problems.

Find files in Rox

Written by smokey01

Let's assume you have a directory with thousands of files. Now in this directory you know you have a few .jpg files but you can't remember what the filenames are. A quick way to find them:

1. Press the period key (full stop).

2. At the bottom of the Rox dialog an input field just opened, type *.jpg

3. Notice all of the .jpg files are now selected.

If you like, you could move, copy or delete them.

To get rid of the input field press the ESC key.

Do remember to unselect the files by clicking in the white space when the cursor changes to an arrow. If the cursor is a finger it will likely open the selected files. Cursor shapes may differ between distros.

Rox terminal

Written by smokey01

Navigating in a terminal can be quite challenging for many people so why not use Rox.

Navigate to the directory where you want to be then press the ` key. This will open a terminal in the current directory.