Contents

Editorial



October 2018

This month has been a bit quieter for me regarding Puppy as I've been very busy doing other things.

I caught up with 01micko and jamesbond last week on the Gold Coast. It was great to put a face to the names. It was a very enjoyable two hours discussing various topics.

I see 666philb has released another great pup called Bionicpup64. It's currently in the Beta stages so why not pop into the forums and help him test it.

There is an interesting article about Rox written by woodenshoe-wi.

Terry Schuster has returned with part 2 of Music Player Daemon.

In the compiling section I have included my favourite image resizer application, aaphoto.

smokey01
Distro's

The Puppy Linux Discussion Forum 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 distribution development. This section will likely just provide highlights as a starting point.
Bionicpup64

Developed by 666philb

Bionicpup64 is built with woofce using ubuntu 18.04 bionic beaver packages & various .pet packages. It uses kernel 4.14.67.

Read about it here: http://www.murga-linux.com/puppy/viewtopic.php?t=114311


TazPuppy

Developed by mistfire

TazPup has been renamed to TazPuppy and has now reached Beta 4.

Read about it here in the forums: http://www.murga-linux.com/puppy/viewtopic.php?p=1004477#1004477
Software

This months covers: A new version of Rox.
New Version of ROX-Filer for Puppy Linux

Written by woodenshoe-wi

I first got the idea to try modifying ROX-Filer when I saw a post by Peebee lamenting that there was no version of ROX-Filer that had both the "movable columns" patch and would prompt before overwriting existing files.

I didn't like the new overwriting behavior in the version of Tahrpup that I was using at the time, but the maintainer of Tahrpup didn't like the old overwriting behavior because the "overwrite if newer" option was broken.

Radky had already tried patching ROX-Filer, so I thought I would give it a try myself. http://murga-linux.com/puppy/viewtopic.php?t=111880

Browsing the forks of ROX-Filer on GitHub, I saw that there was un-merged code to add copy/paste functionality, and I was getting suggestions on the forum for more changes. I figured the best solution was to start a new fork of ROX-Filer on GitHub and add the various Puppy specific patches so the code wouldn't need to be patched anymore.

I fixed the "overwrite if newer" checkbox, added "ignore older" and "merge" checkboxes, added a "New" button to the toolbar, fixed the "move" function so it should act the same as the "copy" function, merged the "copy/paste" functionality and fixed some bugs it had, made it possible to configure which columns are visible in list view mode, tried to make it easier to select items in list view mode and fixed some bugs that were introduced with the new changes.

The result is now in woof-CE testing, and has an announcement thread at http://murga-linux.com/puppy/viewtopic.php?t=114169 The most notable change is that the old "Copy" menu item has been renamed to "Duplicate" and the key-binding changed from Ctrl+C to Ctrl+D. The key-binding for "Delete" has been changed from Ctrl+X to the "Delete" key.

I don't want to make any changes that would prevent ROX-Filer from being compiled in older versions of Puppy, and I don't want to commit the time necessary to become "lead developer" of another fork of ROX-Filer, but anyone who is interested is welcome to fork my Puppy Linux fork of ROX-Filer and continue development in any direction that they want. If a separate "Classic" fork is needed for older pups I will still continue to maintain my fork as I have time. https://github.com/woodenshoe-wi/rox-filer
Tutorials

MPD Part 2 by Terry Schuster
MPD Part2

Written by Terry Schuster

MPD ( Music Player Daemon ) For Beginners:

( Part B: Client Side and Remote Usage )

In Part A of this article we saw how Music Player Daemon (MPD) can be setup and tested so as to run as a music server on a local or host computer. By itself, this is not terribly useful, as excellent multimedia players such as Deadbeef, VLC or Audacious can play music that is accessible on a local device.

The benefits of MPD lie in its use as a fairly straightforward streaming server on a wireless LAN. The server device can host a music library, the contents of which which can be streamed to client device such as a mobile phone, which can then be connected to headphones or a media centre. This avoids downloading/changing/upgrading files onto one or more portable devices. In order to connect with and control the MPD music stream a dedicated client setup is required on the remote device which can access ports (such as) 6600 and 8000 at the IP address of the host/server computer.

However, the IP address of the host computer will change in normal use, as IP addresses are dynamically assigned by the router when different computers connect to the LAN at different times. This means that the IP address of the host computer has to be determined or checked each time the host computer is started which may mean a reconfiguration of the client software - an additional and possibly inconvenient process. To avoid this, a static IP address can be assigned to the host computer, which may be attempted by those relatively inexperienced in making modifications to their system.

14) Setting up a Static IP address in Puppy Linux

This seems easier in Puppy Linux than other distros, which is a distinct advantage. Despite the verbose description below, the actual process is quite short.

a) Determine the IP routing table by using the terminal command: route -n
which should give an output similar to the following:

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.2.1 0.0.0.0 UG 202 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
192.168.2.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0

b) Note the network gateway, or router address ( eg 192.168.2.1 in the example above ).

c) Check the interface label using ifconfig. ( see part (e) – it is eth0 )

d) Open the following file with Geany or Leafpad: etc/dhcpcd.conf
There is no need to modify any existing details.
Just add additional lines on the bottom of the file as follows.

(i) Add an interface line. If you are using an ethernet it will be “interface eth0”

(ii) Add the Static IP address. This takes the format: 192.168.2.n/24
n can be between 3 and an upper limit (eg 255) depending on the individual router
The full config line will be: “static ip_address=192.168.2.10/24”

n should not be currently used by another device on your LAN.
To avoid conflicts, it should not be a number likely to be used by another device.
A number larger than the expected number of connected devices is suitable.

(iii) Add the routers and domain_name_server to the same IP as the <Gateway>:
“static routers=192.168.2.1”
“static domain_name_servers=192.168.2.1”

# Sample Configuration

interface eth0 # Ethernet only - set this or Wireless
static ip_address=192.168.2.10/24
static routers=192.168.2.1
static domain_name_servers=192.168.2.1

interface wlan0 # Wireless only - set this or Ethernet – with different IP number
static ip_address=192.168.2.100/24 # should have a different number to eth0
static routers=192.168.2.1
static domain_name_servers=192.168.2.1

Apparently, one can add multiple IP addresses separated with a single space.

e) Reboot the OS and test the new IP address with route -n or ifconfig in the terminal.
The latter should yield something similar to the following for an ethernet setup:

eth0 Link encap:Ethernet HWaddr 08:2E:5F:02:0D:45
inet addr:192.168.2.10 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1….

15) Running a MPD Client on the Local/Host Computer

To test that the MPD setup is functional, use a client on the host computer first.

A CLI client such as NCMPCPP is a workable option, but perhaps not for the novice. MPC is also a common CLI choice. However, it is easier using a GUI client on the local and remote computer.

Ario, Sonata or GMPC (Gnome Music Player Client ) are recommended choices for Linux and all are in the Puppy Package manager - but there are many others. GMPC is a great choice – popular, easy to use, clean interface and contains many features. It will be used as an example.
Other client options can be found at https://www.musicpd.org/clients

Double check that you have copied some music files into the library. It is helpful to keep all MP3 files in folders and have each track suitable tagged. (A Windows program called TigoTago runs fairly well under WINE and is a highly efficient tag editor for mp3 files).

It is probably wise to restart MPD in order to to update the database. Use /etc/init.d/mpd restart in the terminal.

The GUI client will need to be configured, especially the two essential elements:
* Address of local host ( eg “localhost”, or typically “127.0.0.1” )
* Port that MPD listens on ( eg port 6600) [NOT port 8000]



If GMPC is run for the first time it will automatically load up a configuration window, which will have localhost and port 6600 as defaults.

Optional fields include:
Name for the Profile: ( your choice )
Path to Music Library: ( leave blank )
Password: ( optional – can leave blank)
Authentication: ( optional – can leave blank )
Music Directory : ( leave blank )

Set the client connection to ON/CONNECT as indicated in the GUI. You may also need to ensure that an ALSA stream is setup in the MPD configuration file (see section 8 ). If a successful connection is made to MPD, files/folders from the music library should be displayed under the Database option. This is a critical test for MPD operations.

Ensure that the Server options ( ALSA and HTTP ) are both enabled through the client menu so the audio can be controlled and heard on the local device.

All being well, you should be able to access the music library Database and add a folder/album/track(s) to the Playlist/Play Queue.



NB. GMPC seems to have more features than Sonata, such as a red error message which alerts the user when there is no connection. More checking of the MPD configuration and client settings may be required.

Select and play a file in the playlist. The player should output audio through ALSA on the host/client device. As all levels of sound are controlled via the client device, check the sound levels if there is an issue – adjusting the levels of MASTER or PCM may help. If there is no sound, the config file may be in error or the local ALSA output may need to be selected via the Server menu.

It is also possible to test the operation of port 8000. Using the Server menu in GMPC turn ALSA OFF and ensure HTTP is turned ON. Begin playing an audio file. Use a web-browser to hear the audio file – enter localhost:8000 or the <IP address>:8000 in place of the URL. The default player should open and the audio file should be be heard via ALSA sourced from the browser.

It is claimed that some web-browsers require a suffix for the filetype, such as localhost:8000/mpd.mp3 when a mp3 file is being played, but this seems to be the exception.

16) Running an MPD Client on a Remote Linux Desktop Device

Determine the IP of MPD host machine by running ifconfig in the terminal – ( see 14 (g) )
The information wanted should look like inet addr: 192.168.2.n eg 192.168.2.5

Setup the GUI client ( eg Sonata or GMPC ) on the remote computer as per a local machine, but instead use the IP address of the host computer - eg 192.168.2.5. In addition, ensure that in the Server options HTTP streaming is set to ON. If you do not want sound to be played on the host computer at the same time, set ALSA streaming to OFF.



For a Puppy OS, ensure the host.deny and host.allow files are suitably changed ( see note 6, Part A).

The remote client software (eg GMPC ) will then control MPD in the host device via port 6600. If all is well, the library will be available for song selection under GMPC. If the library is not accessible, ensure the firewalls of host and remote machines are turned off. At a later stage the firewalls can be turned on once port settings are adjusted.

Port 8000 of the host computer will now be used to stream the sound to the remote computer which can accessed via a web browser in the remote machine as per above.

The player should output audio through the normal sound system on the remote/client device. As levels of sound are only able to be controlled via the remote machine (not MPD itself), adjust the sound levels on that machine - there may be a suitable control on the browser itself. Otherwise, the PCM and MASTER sliders control the audio output levels on desktop mixer devices. If there is still no sound output, the config file may be in error.

Note that if the remote/client computer only uses a browser to access audio on port 8000 (or similar) control over what is played is dependent upon the host computer. However, the stream may be stopped and started on the remote device if the web browser supports it. This limitation may not be an issue in a home situation.

17) Running an MPD Client on a Remote Android Device

As MPD has been in service for many years there are numerous Android clients available in the Google Play Store. This means that spare mobile phones and tablets can be useful portable tools for listening on the home network. Once installed, remote/client software packages usually require details of Host and Streaming ports, as shown for MPDroid.



In connecting the remote/client, it is necessary for the following to be turned on/set:

i) The http output button (on the client) for the host device
This normally remains in the set state between reboots and during stop/start play



ii) The streaming button for the client device
This may need to be reset if play is stopped for any reason.



Other useful Android MPC clients include MPD Remote and M.A.L.P. MPDroid seems to be most popular, although it is only suitable for MPD versions >= 0.15 ) - it is used in the screenshots above. Each application has its own style of interface, but functions in similar ways. Devices with older Android versions may be less reliable in their ability to use both ports within the one application, which means that the sound stream must be opened in a web browser, using the following formula: <IP Address of host>:<streaming port> eg 192.168.2.10:8000.

It may be the case that while the MPD player can be started by the remote device, no sound is heard for some time, which is called latency. It is most likely due to buffering in the remote software, which does not appear to be easily adjusted. In some apps, delays of up to 40 seconds are common. Playing the audio in a separate web-browser will probably provide superior latency, but with only stop/start control.

Players should have a function to update the Music Library, which will allow MPD to read and display any changes to the library including added/deleted music files. This process may take some seconds.

18) Running an MPD Client on other Remote Devices

According to the GMPC website, there is a GMPC 11.8 version for Windows. CHIMNEY is another suggested client for Windows 10. These remain to be tested.

Appple iOS does provide streaming service apps, although the ability to use these depends on the age of the device, as it seems older devices are gradually not being supported under more recent versions of iOS. It also appears that Apple uses other streaming protocols unrelated to MPD.

Addendum

MPD, coupled with suitable client such as GMPC, provides a stable, effective audio streaming service over a LAN and is another fabulous way to use a Puppy OS. Despite the length of these two articles, it is a relatively quick process to setup once the critical details are known. As puppy runs as user: root, the process is actually simpler than, say, for a Rasbberry Pi.

The details provided are also suitable for the setup of MPD in AntiX and Raspberry Pi, although the latter requires more effort setting permissions and ownerships, as implied by the references. Otherwise, there is a lot of material in relation to Raspberry Pi which can be very helpful in solving MPD problems in other devices.

MPD has many unexplored features beyond the scope of this article, which can be discovered in the user manuals listed below.

References

Static IP https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update

Client options https://www.musicpd.org/clients/
Windows GMPC https://gmpclient.org/

Raspberry Pi MPD https://www.lesbonscomptes.com/pages/raspmpd.html

MPD User Manual https://www.musicpd.org/doc/user/index.html
https://wiki.archlinux.org/index.php/Music_Player_Daemon

Example Config File https://raw.githubusercontent.com/MusicPlayerDaemon/MPD/master/doc/mpdconf.example

Configuration Sites https://linuxconfig.org/configuring-the-mpd-music-server-on-ubuntu-linux
https://wiki.archlinux.org/index.php/Music_Player_Daemon

GMPC Plugins https://gmpclient.org/plugins
Compiling

This is a good section to discuss how to compile software. Compiling is not everyone's 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 some proven recipes here.

You must have the devx loaded as this is where most of your compiling tools reside. In some cases you may also need to have the kernel sources loaded.
aaphoto

Written by smokey01

Some time ago I was looking for a small stand-alone binary that would allow me to resize graphic files such as *.jpg.

The binary needed to be command line driven with simple but reliable results. It also needed to be small. Applications like Image Magic are great but are rather overweight.

After quite a bit of searching I found aaphoto and it met all of my criteria. The main purpose of aaphoto is to do automatic colour correction and resizing.

This is the home page for aaphoto.

Source Code

Extract the source code.

Enter the aaphoto-0.45 folder

Open a terminal and type: ./configure --prefix=/usr

Then type: make

If you want you can strip the binary to make it even smaller with this command:
strip --strip-unneeded aaphoto

In Fatdog64-721 this reduced the binary size from 254k to 76k, not a bad reduction.

Now copy the aaphoto binary to one of your /bins. I suggest /usr/local/bin

If you don't want to manually copy the binary, type make install and it will be copied/installed for you.

If you type aaphoto --help in a terminal you will get the following help:

# aaphoto --help
[DESCRIPTION]
Auto Adjust Photo is a tiny command-line image manipulation tool for automatic color correction of photos. It tries to make the picture look better. The program does this by analyzing the input image and then sets the most optimal contrast, gamma, color balance and saturation for it.

[HELP]
USAGE: aaphoto [options] [source files]

The following image types are supported (thanks to JPEG and PNG):
bmp, jpg, png

Quality settings can be applied only to jpg format

The following options are supported:
-h --help Print this help
-v --version Print version information
-a --autoadjust Auto adjust the colors of the image
-o --output Set output directory
--overwrite Overwrite mode, the original source file is replaced
--jpg JPEG image output
--png PNG image output with alpha channel support
--bmp BMP image output
-r --resize Resize image taking the longer side in % or pixels
--rotate90 Rotate image with 90 degrees clockwise
--rotate180 Rotate image with 180 degrees
--rotate270 Rotate image with 90 degrees counter-clockwise
--flipx Mirror image horizontally
--flipy Mirror image vertically
--noexif Save image without EXIF info
-q --quality Set image quality from 1 to 100
-t --threads Set number of working threads (default: autodetect)
-s --silent Silent mode, no information printed during operation
--quiet ...same as above
-V --verbose Print verbose information about processing
--test Print detailed test information into image

EXAMPLES:
aaphoto image.jpg
aaphoto -a -r600 -q85 *.jpg
aaphoto mydir
aaphoto -V --resize70% image.png
aaphoto --quality60 image.jpg

REMARKS:
- auto adjust parameter is set by default without any other parameters
- _new file name will be generated without --overwrite parameter
- every file is processed on directory input but not recursively
- order of parameters does not matter
- resize value can be set in percentage too
- resize parameter should be less or equal than original
- resize uses the best (and slowest) resampling method
- default jpeg compression quality is 95%
- EXIF information is restored in jpeg images by default
- number of threads is set to the number of online processors by default

Scripts & Code

Basic Shell (Console) operation for beginners.

Disk Free GUI

Written by smokey01

There are many people who like to work from the command prompt and probably as many if not more that don't. Linux has many very nice and useful command-line utilities. If you would like to use them but have a bit of a phobia about using the command-line then below is a method to have the best of both worlds.

Let's assume you want to do a quick check on your storage devices to see how much space has been used and what's remaining. In a terminal you would type df which means disk free. Just remember it only displays mounted drives.

This is what you see in a terminal:



Now let's write a little script using bash and yad to perform the same function in a GUI.

#!/bin/sh
df > /tmp/df.txt
yad --title="Storage Use on mounted Drives" --width="600" --height="400" --text-info < /tmp/df.txt



With a bit of imagination you can use this technique for many command-line applications.

Here is another way to achieve the same result without writing and reading a file:

#!/bin/sh
df | yad --title="Storage Use on mounted Drives" --text-info --width="600" --height="400"
Tips & Tricks

Tips & Tricks are simple little actions you can take to make your life easier when using Puppy. You will probably know most of the tips but there are always new users that don't.

Manipulating Log files - smokey01
Manipulating log files

Written by smokey01

Recently I have been having a few dropouts on my internet service. I'm on the NBN which is reasonably fast at around 70Mbps but it's not much use when it's down.

I needed to find a way to record when the internet was down. Using software on the computer meant the computer had to be running 24/7 which I didn't want to do.

Most modem/routers will have a log. My last modem/router could be configured to send the log to an email address when it was full. Unfortunately this modem/router does not have the email facility and fills up after about 30 hours before it starts over writing itself. This means I have to export the log each day. A bit of a pain but doable.

I usually save the log like 310818.txt which represents the 31 August 2018. For this information to be useful I have to filter out the required information. It also needs to be sorted and duplicate entries need to be removed otherwise it will give false results.

Below is the bit of code I came up with:

# --------------------- Start --------------------------
#!/bin/sh
cd /aufs/devsave/Downloads/logs
cat *.txt > merged.logs
grep -e "Connection DOWN" -e "Connection UP" merged.logs > filtered.logs
sort -k2M -k3n filtered.logs | uniq > output.logs
yad --title="Internet Downtime" --width=1100 --height=500 --text-info < output.logs
rm merged.logs
rm filtered.logs
# ------------------------ End --------------------------


The first line is the shebang, identifies the file as a script.

The second line changes into the directory where I keep this script and all the log files.

The third line merges all of the log files into one called merged.logs.

The fourth line uses grep To search for the words "Connection DOWN" and "Connection UP" in the merged.logs file and saves the results in another file called filtered.logs.

The fifth line is doing four different processes:

1. Sorts the file filtered.logs first by the Month (-k2M). The 2 means column 2 and M means Month so Jan is above Feb.
2. The date is sorted next which is numeral (-k3n). Third column and makes sure 1 is above 10.
3. The third step is to remove duplicate lines.
4, The final step is to create a new file called output.logs with the above results.

The sixth line simply loads the file output.logs into a dialog for easy reading.

Lines seven and eight delete two files that are no longer required.



You may need to change your search terms to make it useful for your application however, it seems to do the job quite well.

It appears the information I collected and sent to my ISP was quite useful because I've gone from five drop outs per day to one every couple of weeks. It pays to have proof.
Entertainment

The October crossword by greengeek.

Crossword

Puppy Crossword (October 2018)
(Formatted by greengeek using the "Puzzlefast" website)

Reigning Cats and Dogs

This months crossword comprises musical artists and bands that have names which include members of the cat and dog families.

(See clues below image)

(ps: if you have any suggestions for a clue theme/topic for future crosswords please let me know!)












Scroll further down for answers:







Useful Links

Puppy Linux Forums USA

Ibiblio repository USA

nluug repository Netherlands

Internode repository Australia

University of Crete repository Greece

aarnet repository Australia

Internet archive repository USA

Puppy Linux Tips by smokey01

Puppy Linux wikka Puppy sites

Bookmarkos provided by kerl

Search the Puppy Linux Forums

Barry Kauler's News Blog

labbe5 Report

Puppy Linux Icon Sets

http://lxer.com/

https://distrowatch.com/

https://www.linux-apps.com/

SecurityBaron.com
Contributors this month

Not all of the people below have physically given me the information to publish. If I find information I will give the credit where it is due. So if you see your name on the list below please don't be alarmed or upset. You are not losing your mind.

smokey01
greengeek
mistfire
666philb
Terry Schuster
woodenshoe-wi

Proof reading - russoodle
Newsletter Information

Display tip:
To improve the Notecase display format please press F7 then:
- Tick the "Restore last position/size" checkbox.
- Select the "Display" tab and tick "Wrap text".

Newsletter index written by 6502coder can be found here:
http://www.murga-linux.com/puppy/viewtopic.php?p=945962#945962

Contributions

If you have information you would like to see in the newsletter please email it to smokey01 at smokey01@internode.on.net. I prefer it to be created in Notecase otherwise it makes my job a bit more difficult. I don't intend doing any significant editing but I will attempt to read all of the articles and ask a couple of others to do some proof reading. If you would like to assist in proof reading please let me know on the email address above.

Notecase is very easy to learn and use. Try and keep your articles to less than 1000 words. Photos and images should be no bigger than 1024 x 768. I can always make them smaller.

The deadline for articles is the 20th of each month. Let's not worry about time zones. I know it may be the 20th in Australia and only the 19th in the USA but I can live with this. If it's more than 24 hours late with respect to Australian CST then your article may be pushed right, into the next edition. I expect proof reading to take less than a week which will provide about four days to publish at the beginning of each month.

I will upload the Newsletter to my site at http://smokey01.com/newsletters. There will be two versions. One will be an xz compressed Notecase file and the other will be a html file so it can be read in a browser.

I have changed the original naming convention to 0001-PuppyLinuxNewsletter-Jan2017.ncd.xz and 0001-PuppyLinuxNewsletter-Jan2017.html respectively. The formatting of the html is not brilliant but readable. The newsletter is intended to be downloaded and read in Notecase.

Disclaimer

The editor has the right to veto any articles that he/she considers inappropriate. A reasonable effort will be made to avoid spelling and grammatical errors however, I'm sure some may slip through. This newsletter is published by volunteers, and is free, so please be kind. Constructive criticism and positive suggestions are welcomed.

smokey01