Puppy Linux Blog Puppy Linux Blog http://blog.puppylinux.com/ http://blog.puppylinux.com/?viewDetailed=00042 pMusic 5.4.0 development <a href=http://www.puppylinux.org/wikka/pmusicInstall target=_blank>Version 5.4.0</a> is released <br /> <br /><b>Highlights</b> <br /><li>Improve radio detection by allowing several urls for each radio stations in the index file. This is backward compatible with the old format.</li><li>A new dead simple <a href=http://www.puppylinux.org/wikka/pmusicFrontends#Podcast target=_blank>podcast frontend</a> is included by default. The heavily improved podcast managing introduced in pMusic 5.2 deserves its own gui. The good old PPG (Puppy Podcast Grabber) is now old enough to retire.</li><li><a href=http://www.puppylinux.org/wikka/pmusicDocSearch target=_blank>Search inside lyrics</a>.</li><li>Play tracks other places than in the playqueue. pMusic is still a playqueue-oriented player. This is a function meant to check out tracks before adding them to the queue rather than an alternative play-source.</li><li><a href=http://blog.puppylinux.com/?viewDetailed=00040 target=_blank>Multiple playqueues</a> for even more flexible usage. This feature is optional, and turned on in the 'Playqueue' menu.</li><li>New export window - An attempt to clean up the complex export functionality, and to standardize the pMusic dialogs.</li><li>At last, the basic <a href=http://blog.puppylinux.com/?viewDetailed=00018 target=_blank>Visualization</a> engine is included. Atm, the visualization filters are simple, but this might change in the future as <a href=https://raw.githubusercontent.com/FFmpeg/FFmpeg/master/Changelog target=_blank>ffmpeg-3</a> allows much more fun. pMusic 5.4 is still depending on ffmpeg 1.2.</li> <br />For the complete list of news, check out the <a href=http://www.puppylinux.org/wikka/pmusicChangelog target=_blank>changelog</a> http://blog.puppylinux.com/?viewDetailed=00041 Puppy Newsletter Puppy A group of 'dogs' with <a href=http://murga-linux.com/puppy/profile.php?mode=viewprofile&u=5003 target=_blank>smokey01</a> in the front-seat is now putting together a monthly <a href=http://www.smokey01.com/newsletters/ target=_blank>newsletter</a> covering stuff from the kennel. <br /> <br />There has been some discussion in the <a href=http://murga-linux.com/puppy/viewtopic.php?t=109137 target=_blank>forum</a> some time now, and the <a href=http://smokey01.com/newsletters/2017/January/pln-2017-01.html target=_blank>first edition</a> is released as scheduled - the first in every month. Hopefully this project will end up as one of the major resources for us. Much is happening in the Puppy world, but until now we have missed a encompassing channel. If you are interesting in a collaborating project, please join these good guys. Else, enjoy reading. <br /> <br />Happy new year. http://blog.puppylinux.com/?viewDetailed=00040 Gtkdialog - Dynamic tabs Development I have earlier explained how I've extended <a href=http://murga-linux.com/puppy/viewtopic.php?t=38608 target=_blank>gtkdialog</a> to get 'new' widgets. <br /><li><a href=http://blog.puppylinux.com/?viewDetailed=00020 target=_blank>Knob</a></li><li><a href=http://blog.puppylinux.com/?viewDetailed=00030 target=_blank>Right-click menu</a></li> <br />This post will explain my setup to get dynamic tabs like you see in eg firefox and geany. As usual it includes a mix of gtkdialog code, svg and gtk theming. <br /> <br /> <br /><b>The challenge:</b> <br /><li>Gtkdialog does not allow to include code while running, so all code (tabs) has to be loaded at startup.</li><li>Using the <i><notebook></i> widget would work somehow if it could hide/show tabs. - it can't.</li><li>Using <i><togglebuttons></i> or <i><radiobuttons></i> are other option, but the input signal to these are 'true/false', not the name of the button, so this would be static - not our wish.</li><li>The example also uses rotated labels, which the mentioned widgets above can't do. Only the <i><text></i> widget can do that.</li><li>Another approach could be to use a svg image as the tab, but my experience is that svg requires height/width values, and that is hard to calculate since fonts differs a lot. The tabs name are editable and should support NLS, so width will change. We have to deal with this. We could include a specific font and font-size used for our app/tabs, but it would give some bloat and does not follow the global gtk-theme nor the global font-size.</li> <br /> <br /><b>The solution:</b> <br />My solution is built around the <i><eventbox></i> widget that holds the actions, while the <i><text></i> widget holds the label. A svg image marks the active tab, and a tiny gtk-theme helps us to highlight the tab when hovering. See it in use in <a href=http://www.puppylinux.org/wikka/pmusicInstall target=_blank>pMusic 5.3.1</a> (or newer). <br /> <br /><img src=/www/blog/images/gtkdialog_tabs.png /> <br /> <br /> <br />The gtkdialog-code for one tab looks like this: <br /><pre class=code><code class=highlight><vbox spacing="0" visible="true" space-expand="false" space-fill="false"> <br /> <hbox height-request="1" space-expand="true" space-fill="true"> <br /> <hseparator height-request="1" width-request="12" space-expand="false" space-fill="false"></hseparator> <br /> <text space-expand="true" space-fill="true"><label>""</label></text> <br /> </hbox> <br /> <eventbox name="tab" space-expand="true" space-fill="true"> <br /> <hbox> <br /> <vbox> <br /> <pixmap> <br /> <variable>PIX_TAB_1</variable> <br /> <width>20</width> <br /> <input file>/tmp/tab_1_icon.svg</input> <br /> </pixmap> <br /> </vbox> <br /> <text name="playqueue_tab" xalign="0" angle="270" wrap="false" space-expand="true" space-fill="true"> <br /> <variable>TXT_TAB_1</variable> <br /> <input>cat /tmp/tab_1_NAME | sed -e "s%^%\n %" -e "s%$% %"</input> <br /> </text> <br /> </hbox> <br /> <action signal="enter-notify-event">disable:TXT_TAB_1</action> <br /> <action signal="leave-notify-event">enable:TXT_TAB_1</action> <br /> <action signal="button-press-event">if [[ $PTR_BTN -eq 3 ]]; then menu_tabs 1; else gxmessage "My actions"; fi</action> <br /> <action signal="button-release-event">activate:REFRESH_LIST</action> <br /> <action condition="command_is_true([[ $PTR_BTN -eq 3 ]] && echo true)" signal="button-release-event">activate:REFRESH_TABS</action>' <br /> </eventbox> <br /> <variable>VBOX_TAB_1</variable> <br /></vbox></code></pre> <br /> <br />Hovering a tab activates <i>signal="enter-notify-event"</i> and disables the <i><text></i> widget in the tab. It might feels wrong to disable a widget we want to highlight, but this is one of the two methods I know to get a hovering effect on <text> widgets. (The other is to <a href=http://murga-linux.com/puppy/viewtopic.php?p=274073#274073 target=_blank>underline the text</a>.) When the text get disabled, it receives the <i>fg[INSENSITEVE]</i> signal from the gtk-theme. If we override the theming, disabled widgets can look crisp. The class in the gtk-theme corresponds to <i><text name="tab"</i> in the gtkdialog-code above. <br /><pre class=code><code class=highlight>style "Tab" <br />{ <br /> fg[INSENSITIVE] = "#00CA10" <br />} <br />widget "*tab" style "Tab"</code></pre> <br /> <br />Clicking on a tab executes its actions. Mouse left click shows the svg marker for this tab. All other tabs get a blank svg instead of the marker. A right click calls the function <i>menu_tabs</i> to show the menu. Here you can delete a tab, which is nothing else but hiding it. But since gtkdialog can't embed new code, we have to carefully keep this hidden tab for a next time. Therefor, I rebuild the tabs so the hidden ones always are at the end of the line - ready for next 'Add'. <br /> http://blog.puppylinux.com/?viewDetailed=00039 FatDog64 710 is released. Release FatDog is a close relative to Puppy Linux. It was actually <a href=http://puppylinux.com/family-tree.html target=_blank>forked</a> (see down the page) from Puppy Linux 4.0 in 2008. <br /> <br />The developers are long time Puppy users and tinkerers; <b>kirk</b>, <b>jamesbond</b> and more recently <b>SFR</b>. Of course there are many other notable contributors in the spirit of Open Source. Their initial intention was to fatten puppy but this quickly led to 64 bit development (2009) which was the first in Puppy's history. <br /> <br />Initially, FatDog was built with the <a href=http://www.t2-project.org/ target=_blank>T2</a> build system and used a modified PET packaging system and package manager however the 700 series was a complete rethink with the entire distro compiled from source leveraging scripts from <a href=http://www.linuxfromscratch.org/lfs/ target=_blank>Linux From Scratch</a> (LFS) and <a href=http://www.linuxfromscratch.org/blfs/ target=_blank>Beyond Linux From Scratch</a> (BLFS). Package management now uses slaptget/gslapt which are compatible with tgz, tbz, tlz and txz packages. (Similar to a popular old school distro still in existence <img src=/www/blog/images/happy.gif /> ). <br /> <br />For more information and download links visit the <a href=http://www.murga-linux.com/puppy/viewtopic.php?t=109067 target=_blank>FatDog 710</a> thread at the Puppy Linux Discussion Forum or visit <a href=http://www.lightofdawn.org/blog/?viewDetailed=00169 target=_blank>The Desk of James</a> (release announcement). <br /> <br />Enjoy! <br /> <br /> http://blog.puppylinux.com/?viewDetailed=00038 Audioplayer's resource hunger Puppy <b>Testing resource hunger of audioplayers</b> <br />This test contains the basic audio players; <a href=http://deadbeef.sourceforge.net target=_blank>DeadBeeF</a> and <a href=http://audacious-media-player.org/ target=_blank>Audacious</a>. It contains the mediaplayer <a href=http://www.videolan.org/vlc/ target=_blank>VLC</a>, the very comprehensive <a href=http://www.exaile.org/ target=_blank>Exaile</a> and the database driven music managers; <a href=http://puppylinux.org/wikka/Pmusic target=_blank>pMusic</a> and <a href=https://www.clementine-player.org/ target=_blank>Clementine</a>. Of course, this is not a fair compete since features differs a lot from player to player. In the end, it might be less important how much system resources the player uses. The functionality is in most cases what makes our choice. But still, it's good to know when running a low-powered system, and when choosing the default player. <br /> <br />From my personal view, I am interesting to see how pMusic is working compared to other players. pMusic has got <a href=http://blog.puppylinux.com/?viewDetailed=00004 target=_blank>a lot of criticism</a> of its hunger on cpu resources. I want to disprove this reputation. <br /> <br /> <br /><b>The test</b> <br /><div style=color:green;>My test-machine is an AsusEEE netbook 1001px (cpu:2x1.66Ghz atom).</div> This is a low-powered netbook that makes it easier to measure the differences in cpu-usage. Running on a modern pc, none of these players will make your system hot. <br /> <br /><div style=color:green;>The OS is XenialPup 7.0.4.</div> VLC and DeadBeeF is installed by default. On this system I was able to run both Clementine and Exaile which is the most comparable to pMusic. Tried to install Amarok with no success. If you run another player of <a href=http://murga-linux.com/puppy/viewtopic.php?t=106479. target=_blank>XenialPup 7.0.4</a>, it would be great if you gave me a link to the pet/sfs. I am interested to extend my test with more players. <br /> <br /><div style=color:green;>The task is to play a mp3 file.</div>I have used the default setting for each player, and started the app at least twice to ensure no first-run operation misleads the test-result. <br /> <br /><div style=color:green;>The compared players are:</div> Audacious 3.6.2, Clemetine 1.2.3, DeaDBeeF 0.7.2, Exaile 3.2.2, pMusic 5.2.4, VLC 2.2.2 <br /> <br /> <br /><b>Cpu-usage</b> playing mp3 with gui shown <br /><pre class=code><code class=highlight>Exaile 7.5 % <br />VLC 8.3 % <br />DeaDBeeF 8.8 % <br />Audacious 10.0 % <br />pMusic 12.1 % <br />Clementine 18.2 %</code></pre> <br />Surprisingly. I guessed DeadBeef would be the winner because of its reputation of being lightweight. Exaile is a much more comprehensive option than DeadBeeF and Audicious, and still, it has less appetite for cpu-cycles. <br /> <br /> <br /><b>Memory-usage</b> playing mp3 with gui shown <br /><pre class=code><code class=highlight>Audacious 5 Mb <br />DeaDBeeF 20 Mb <br />Exaile 23 Mb <br />VLC 25 Mb <br />pMusic 29 Mb <br />Clementine 33 Mb</code></pre> <br />Audicious is impressive. I had to verify it one more time. Let's mention that this is the Gtk gui - not the Winamp clone. Else, smaller range than expected. The guis differs from the simple (VLC) to the complex (Clementine), and I had expected the memory usage to differ more. <br /> <br /> <br /><b>Size</b> required for installation: <br /><pre class=code><code class=highlight>pMusic 1 Mb <br />Audacious 8 Mb <br />DeaDBeeF 10 Mb <br />VLC 53 Mb <br />Clementine 66 Mb <br />Exaile 66 Mb</code></pre> <br />pMusic is built for Puppy, and take advantage of already existing dependencies. That makes it of course the smallest, but it is also the only player that is not compiled, and that is probably another reason for the result. <br /> <br />Clementine is overall the heavy choice. I hoped to compare with Amarok which I assume it is the biggest brother (153 Mb install), but I were not able to get it work in Xenial. Hopefully, someone make a pack some day, and I will update these results. <br /> http://blog.puppylinux.com/?viewDetailed=00037 Slacko 700 Beta Development <b>Slacko 700 is now in beta testing!</b> <br /> <br />It has been a bit over a month since <a href=http://blog.puppylinux.com/?viewDetailed=00034 target=_blank>slacko 700 alpha</a> was first released and in that time we have squashed many bugs and have brought in may improvements. <br /> <br />To get a copy just visit the <a href=http://www.murga-linux.com/puppy/viewtopic.php?t=108017 target=_blank>puppy forum</a> and grab either the Slacko 6.9.6.4 or Slacko64 6.9.6.4 iso image and burn it to a CD/DVD or copy it to a flash drive. <br /> <br />Below is a preview of the default theme. <br /> <br /><a href=/www/blog/images/slacko700beta2.png rel=prettyPhoto><img rel=prettyPhoto src=/www/blog/thumbs/slacko700beta2.png /></a> <br /> <br />Have fun testing and report any issues to the link above to the Puppy forum. http://blog.puppylinux.com/?viewDetailed=00036 AlbumArt in pMusic Development <b>Albumart for playing track</b> <br /><a href=http://murga-linux.com/puppy/viewtopic.php?p=213694#213694 target=_blank>pMusic</a> shows albumart in the main window if available. With the default frontend '<i>Manager</i>' it is located at bottom-left corner. A larger view of the same image is found in the <i>Trackinfo</i> window. Click on it to see it in full size. <br /> <br /><img src=/www/blog/images/pmusic_albumart_1.png /> <br /> <br /> <br />The priority is: <br /><li><b>1.</b> Look for embedded image in the audio-file.</li><li><b>2.</b> Look for image in the same directory as the audio-file. <br />The image file should be named with '<i>front, albumart, album_art, cover or folder</i>'.</li><li><b>3.</b> Look for image downloaded by pMusic previously. <br />If set up to do so, pMusic will download the image file when albumart find one on the internet. More about this below.</li><li><b>4.</b> Grab image from URL defined in the database (DB). <br />If pMusic previously found a matching albumart, but user has not set up pMusic to download it, the URL is stored in the DB for later use.</li><li><b>5.</b> Search on the internet for matching albumart. <br />If no albumart exists embedded, locally or via URL, pMusic searches the internet for a matching albumart. This search depends on meta-tags for Artist and Album.</li> <br /> <br /><img src=/www/blog/images/pmusic_albumart_2.png /> <br /> <br /> <br />With these tags in place it searches <a href=http://www.albumart.org target=_blank>www.albumart.org</a>, <a href=http://www.seekacover.com target=_blank>www.seekacover.com</a> and <a href=http://www.slothradio.com target=_blank>www.slothradio.com</a> (in this priority order). <br />Very recently, <a href=http://www.albumart.org target=_blank>www.albumart.org</a> went down, so you should update to <a href=http://murga-linux.com/puppy/viewtopic.php?p=213694#213694 target=_blank>pMusic 5.2.1</a> to include these multiple search-sites. All these sites uses <a href=http://www.amazon.com target=_blank>www.amazon.com</a> as their image source. In the future it would be great if we additionally could use google's image-search as well. <br /> <br />If pMusic finds a matching albumart on the web, it will store the URL in the DB, to find it quicker next time. If activated, the image-file can be automatically downloaded to your harddrive when found. Since this will require some space, it is not set to be the default choice. Activate this feature in the Preferences. <br /> <br /><img src=/www/blog/images/pmusic_albumart_3.png /> <br /> <br /> <br /><b>Search albumart</b> <br />If you let pMusic download albumart, you will after a while have a nice collection of images. So what do we do with these. They will of course show the playing albumart quicker, but more important; you can search within these and get a visual album search. The albumart search is activated in the search dock. <br /> <br /><img src=/www/blog/images/pmusic_albumart_4.png /> <br /> <br /> <br />When scaling the main window you will see that the albumarts won't scale to fit. Choose '<i>Update sizing</i>' in the right-click menu. Here you can also choose size of the thumbs. <br /> <br /> <br /><b>Save albumart</b> <br />Save albumart means 2 different things. <br />1. Save the found albumart to a local file <br />2. Embed the albumart into the audio-file <br /> <br />Both operations are done in the trackinfo window. Be aware that the masstagger allows you to embed one albumart into many files. <br />There are corresponding functions for '<i>Delete albumart</i>' in the <i>Trackinfo</i> window. <br /> <br /><img src=/www/blog/images/pmusic_albumart_5.png /> <br /> <br /> http://blog.puppylinux.com/?viewDetailed=00035 pMusic 5.2.0 Release <a href=http://www.puppylinux.org/wikka/pmusicInstall target=_blank>Version 5.2.0</a> is released <br /> <br /><b>Highlights</b> <br /><li>Completely new approach to <a href=http://blog.puppylinux.com/?viewDetailed=00032 target=_blank>podcast management</a>. Now 24000 podcast channels available within pMusic. - sorted by category.</li><li><a href=http://blog.puppylinux.com/?viewDetailed=00027 target=_blank>Tempo detection and extended Smartadd</a></li><li><a href=http://blog.puppylinux.com/?viewDetailed=00026 target=_blank>Realtime sound processing</a></li><li>Nad has become the standard graphical theme</li><li><a href=http://www.puppylinux.org/wikka/pmusic target=_blank>Wider documentation and help</a></li><li><a href=http://blog.puppylinux.com/?viewDetailed=00030 target=_blank>Rewritten right-click menus</a></li><li>Optional deeper indexing when scanning local collection. See Menu->Music Sources->My Music</li><li>... and you can <a href=http://blog.puppylinux.com/?viewDetailed=00033 target=_blank>search/play/download youtube</a> inside pMusic. - Thanks to trio for <a href=http://www.murga-linux.com/puppy/viewtopic.php?search_id=1325739362&t=44960 target=_blank>you2pup</a></li> http://blog.puppylinux.com/?viewDetailed=00034 Slacko 700 Development Development It's an exciting time to be a Puppy Linux user! <br /> <br />The puppy build system (<a href=https://github.com/puppylinux-woof-CE/woof-CE target=_blank>woof-CE</a>) has been developing at a rapid pace with all new scripts and programs developed for the <i>initial RAM disk</i> (a.k.a <i>initrd.gz</i>) to refine how puppy searches for files and boots. This initiative has been taken up by <b>gyro</b> on the Puppy Linux Discussion Forum with assistance from <b>jlist</b> (a.k.a. <b>wdlkmpx</b> in woof-CE circles) in building new static binary programs that the initrd.gz needs, including busybox and some other utilities. <br /> <br />I have released the first slacko64 alpha built with these changes and you can help out with testing if you desire by downloading a copy and joining in the discussion at the <a href=http://www.murga-linux.com/puppy/viewtopic.php?p=920437#920437 target=_blank>forum</a>. A 32 bit version will be following soon. <br /> <br />Have fun testing! <img src=/www/blog/images/smilies/happy.gif /> http://blog.puppylinux.com/?viewDetailed=00033 Play youtube in pMusic development <a href=http://www.murga-linux.com/puppy/viewtopic.php?p=919757#919757 target=_blank>pMusic 5.1.3</a> supports youtube search, playback and download. <br /> <br />It is <b>Trio Tjandradjaja</b> (trio) that first gave us the feature in <a href=http://www.murga-linux.com/puppy/viewtopic.php?search_id=1325739362&t=44960 target=_blank>you2pup</a> which is a much more complete tool. In opposite to you2pup, pMusic only plays audio, and does not offer any option to choose quality. The bitrate is 128 kb/s. <br /> <br />The youtube support in pMusic is shown in the image below. <br /><li>Search youtube is activated in the search dock</li><li>Doubleclick on item to add to playqueue</li><li>While playing, it offers a download option</li> <br /><img src=/www/blog/images/pmusic_youtube_1.png /> <br /> <br /> <br /><b>Searching</b> <br />When searching youtube inside pMusic, there is a difference in how to specify the best search-string. Youtube has a advanced search-engine which gives result for <u>related items</u>. This means you can specify 'as much as possible' to get the closest result. pMusic has a simple search-engine, and requires the search-string to have a correct syntax. It must not be complete (not even the words) and it isn't case sensitive, but the search will fail if the search-string is misspelled. The consensus is: Search youtube, write whatever. - Else, search simple. <br /> <br />pMusic adds the word 'music' to the youtube search. Initial testing seems to work good, and gives us primarily songs to play. <br /> <br />More about searching in pMusic <a href=http://www.puppylinux.org/wikka/pmusicDocSearch target=_blank>here</a>. <br /> <br /> <br /><b>Downloading</b> <br />Check target path and click the Download button. Just so simple. In case the filename has the much used from 'Artist - Title', pMusic will add id3-tags to the file. Anyway, the file will be added to the <a href=http://blog.puppylinux.com/?viewDetailed=00024 target=_blank>database</a>. Next time you search for it, you have it locally. <br /> <br />But, why download: <br /><li>Since the youtube stream lacks length detection, the progress slider doesn't work</li><li>The trackinfo will mostly not work for youtube streams. To get Lyrics, tags, ..., you need to download</li><li>Snappiness</li><li>And the obvious about web connection...</li> <br /> <br /><b>Legal issues</b> <br />If you are wondering about legal issues, the complete truth does not seem to exist, but some knowledge is linked at the <a href=http://www.puppylinux.org/wikka/pmusicDisclaimer target=_blank>disclaimer</a> page http://blog.puppylinux.com/?viewDetailed=00032 Podcasts in pMusic Development <a href=http://www.murga-linux.com/puppy/viewtopic.php?p=919757#919757 target=_blank>pMusic 5.1.3</a> includes a new way of managing podcasts. There is no code left from the old grabber, and in fact, the new one can hardly be called a grabber at all - since the main idea is to stream podcasts directly from the web, instead of downloading them. <br /> <br /> <br /><b>Find podcast</b> <br /> <br />pMusic ships with a few podcast channels just as examples. These are of course not the one <u>you</u> like. - We are all unique. So, if interested in podcasts, you should do the one-click install of the index holding around 24 thousand channels. The web-address to every channel has been checked during index-build to be alive. All channels is linked to a category. <br /> <br /><img src=/www/blog/images/pmusic_pod_1_1.png /> <br /> <br />Browse the categories and find your favorite channel. Double-click to check out the available podcasts, and double-click the podcast you like to hear it. - So simple. <br /> <br />The podcasts you have listened to will be marked. The icon color changes from yellow to green (dot) when start playing. This will stay green also in the future, so you will easily see if there has been released new podcasts since last time. In the image below we see 2 fresh podcasts... <br /> <br /><img src=/www/blog/images/pmusic_pod_2.png /> <br /> <br />The image also shows that you can <a href=http://www.puppylinux.org/wikka/pmusicDocSearch target=_blank>search</a> the huge podcast index. This must be activated in the search dock. <br /> <br /> <br /><b>Add podcast channel</b> <br /> <br />pMusic separates the podcast channels set up by the user from the indexed channels. This is shown in the image above as <b>My Podcasts</b>. You can of course add a new channel manually (<i>menu->Music sources->Podcast->Setup</i>), but if you find a channel in the index, it is easier to add it directly. Select the channel and click <b>Add channel to My podcasts</b>. <br /> <br /><img src=/www/blog/images/pmusic_pod_3.png /> <br /> <br /> <br /><b>Set timestamp</b> <br /> <br />If you start listening to a podcast, but does not have the spare time to hear everything, it would be great to store a timestamp to know where to start next time. This is done in <i>Menu->Playqueue->Add timestamp to favorites</i>. It will then show up in favorites, and double-click will start playing at given position. <br /> <br /><img src=/www/blog/images/pmusic_pod_5.png /> <br /> <br /> <br /><b>Download</b> <br /> <br />If you want to keep a podcast, it is of course possible to download it. Every podcast in the playqueue will be downloaded during export. Just remember that the <b>Convert exported tracks</b> option has to stay active. <br /> <br /><img src=/www/blog/images/pmusic_pod_4_1.png /> <br /> http://blog.puppylinux.com/?viewDetailed=00031 X-Tahr Release I am pleased to announce the release of <b>X-Tahr-2.0</b> <br /> <br />X-Tahr is a Puppy Linux derivative based on 666philb's Tahrpup with the Xfce desktop environment and is Ubuntu Trusty Tahr compatible. <br /> <br />Please see the <a href=http://murga-linux.com/puppy/viewtopic.php?t=99849 target=_blank>Puppy Forum page</a> for more information and download links. http://blog.puppylinux.com/?viewDetailed=00030 Gtkdialog right-click menu Development <a href=http://www.murga-linux.com/puppy/viewtopic.php?t=38608 target=_blank>gtkdialog</a> does not include support for right-click menu, but like the <a href=http://blog.puppylinux.com/?viewDetailed=00020 target=_blank>knob</a>, there has been some workarounds for right-click menus as well. Let's look at one of the existing... <br /> <br />The main structural solution has been around some years, and includes some basic knowledge of gtkdialog options. <br /><pre class=code><code class=highlight><window decorated="false" skip_taskbar_hint="true"> <br /> <hbox scrollable="true" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true"> <br /> <vbox spacing="2"> <br /> <br /> menuitem xml-code here <br /> <br /> </vbox> <br /> </hbox> <br /> <action signal="focus-out-event">EXIT:exit</action> <br /></window></code></pre> <br /><li>Set <b>decorated</b> to false skips the window manager to draw window borders</li><li><b>skip_taskbar_hint</b> avoids this app to show up in the tray/taskbar. After all this menu is a standalone app - but the user shouldn't notice it.</li><li>The <b>signal focus-out-event</b> exits the gui the focus is leaving the menu.</li><li><b>spacing</b> is default 5 and will give a gap between the vertical widgets. To simulate a menu we want the highlight to move straight from one item to the next, so we don't want any spacing and set this to 0.</li><li><b>scrollable</b> <i><hbox></i> gives us the 3D border. Other types of border can be set by the <i>shadow-type</i> option.</li><li><b>hscrollbar-policy</b> avoids scrollbars.</li> <br />This is much like any right-click menu works - so far, so good <br /> <br /><img src=/www/blog/images/gtkdialog_menu_1.png /> <br /> <br />This is the minimal right-click menu in the tray manager (<i>/usr/local/jwm_config/tray</i>). <br />The code for each menu-item is a combination of a <i><pixmap></i> and a <i><button></i> widget. <br /><pre class=code><code class=highlight><hbox> <br /> <pixmap height-request="18" icon_size="1" space-expand="false" space-fill="false"> <br /> <input file stock="gtk-edit"></input> <br /> </pixmap> <br /> <button height-request="18" xalign="0" can-focus="no" relief="2" space-expand="true" space-fill="true"> <br /> <label>"'$(gettext 'Manual edit')'"</label> <br /> <action>echo edit > /tmp/menu_OUTPUT</action> <br /> <action>EXIT:exit</action> <br /> </button> <br /></hbox></code></pre> <br /> <br />The weaknesses shows up when using the default gtk-theme in Slacko-6.3.2, scaling the font, or using another language string that is longer than the default. This is critical when we move towards touch-screen layouts. <br /> <br /><img src=/www/blog/images/gtkdialog_menu_2.png /> <br /> <br />Since the background color is similar to the 3D border in the menu, the menu 'melts' into the main gui, and we see only half of the border. The menu has a fixed size (defined in pixels), so it won't scale when needed. And why does it has a fixed size? The answer is because this is the way to avoid the menu to grey out parts of the main gui. <br /><i>Technical: Reducing the the default size of a button-widget (used in the menu) will grey out the main gui as long as the menu is run as a child of the background gui. We have to run it as a child process to keep the selection viewable in the main gui (see image below).</i> <br /> <br /> <br /><b>The improvement process</b> <br /> <br />I have tested several solutions, and ended up with the following... for now. But the first thing to do is to define what criteria should be set for an optimal right-click menu? <br />It should: <br /><li>scale the gui depending on font size and NLS strings.</li><li>have a clear border defining its area.</li><li>show the selection in the main gui.</li><li>not grey out area in the main gui.</li><li>allow disabling of specific menu items.</li><li>highlight menuitem when hovering.</li><li>support icons.</li><li>be good looking, and follow the active gtk-theme.</li><li>allow embedded widgets for more complex menus (see image below).</li> <br />Here follows my attempt for a better solution. Not 100%, but far closer than the previous one. <br /> <br /><img src=/www/blog/images/gtkdialog_menu_3.png /> <br /> <br /> <br />The structural code in the first code snippet has not changed, but been extended to show the new border. <br /> <br /><pre class=code><code class=highlight> <br /><window decorated="false" skip_taskbar_hint="true" resizable="false" border-width="0" space-expand="true" space-fill="true"> <br /> <eventbox name="rightclick_menu_frame" above-child="false"> <br /> <vbox border-width="1"> <br /> <eventbox> <br /> <vbox spacing="0" border-width="7"> <br /> <br /> menuitem xml-code here <br /> <br /> </vbox> <br /> </eventbox> <br /> </vbox> <br /> </eventbox> <br /> <action signal="focus-out-event">EXIT:exit</action> <br /></window> <br /></code></pre> <br /> <br />The <i><eventbox></i> widget makes it possible for us to set a unique background color for this widget in the gtk-theme. We do this before executing gtkdialog. The name <b>rightclick_menu_frame</b> corresponds to our style for the extended gtk-theme. Color is set to black (#000), and border width to 1 px. The second <i><eventbox></i> is only to draw a new background with the color taken from the global gtk-theme. <br /> <br /><pre class=code><code class=highlight>echo 'style "Rightclick_menu" { bg[NORMAL] = "#888" } <br />style "Rightclick_menu_frame" { bg[NORMAL] = "#000" } <br />widget "*rightclick_menu" style "Rightclick_menu" <br />widget "*rightclick_menu_frame" style "Rightclick_menu_frame" <br />' > $WORKDIR/gtkrc_menu <br />export GTK2_RC_FILES=$WORKDIR/gtkrc_menu:/root/.gtkrc-2.0</code></pre> <br /> <br />The code for the menu-items differs more from the previous attempt (snippet above). This one does not use the <i><button></i> widget as the previous, but the <i><text></i> widget. Since the <i><text></i> widget does not has any internal spacing as the <i><button></i> (between text/icon and the gtk-button), it handles down-scaling perfect, and does not grey out any area in the main gui. Also, the <i><pixmap></i> here, does not use the gtk-stock, but a defined file. For some reason, this works better for down-scaling as well. As mentioned above, we downscale the gui to better simulate a menu rather than looking like a 'normal' gui. <br /> <br />The <i><text></i> widget and the <i><pixmap></i> widget does not support any <i><action></i>, but that is easily solved by putting them inside an <i><eventbox></i>, and let that one handle actions. The corresponding code for this new menu-item looks like this. <br /> <br /><pre class=code><code class=highlight><eventbox above-child="true" visible-window="true"> <br /> <hbox spacing="7" border-width="3"> <br /> <pixmap space-expand="false" space-fill="false"> <br /> <height>18</height> <br /> <input file>/usr/share/pixmaps/puppy/remove.svg</input> <br /> </pixmap> <br /> <text xalign="0" space-expand="true" space-fill="true"> <br /> <label>"'$(gettext 'Manual edit')'"</label> <br /> </text> <br /> </hbox> <br /> <action signal="enter-notify-event">hide:MENU_1</action> <br /> <action signal="enter-notify-event">show:MENU_1B</action> <br /> <variable>MENU_1</variable> <br /></eventbox> <br /><eventbox name="rightclick_menu" above-child="true" visible-window="true" visible="false"> <br /> <hbox spacing="7" border-width="3"> <br /> <pixmap space-expand="false" space-fill="false"> <br /> <height>18</height> <br /> <input file>/usr/share/pixmaps/puppy/remove.svg</input> <br /> </pixmap> <br /> <text xalign="0" space-expand="true" space-fill="true"> <br /> <label>"'$(gettext 'Manual edit')'"</label> <br /> </text> <br /> </hbox> <br /> <action signal="leave-notify-event">show:MENU_1</action> <br /> <action signal="leave-notify-event">hide:MENU_1B</action> <br /> <action signal="button-release-event">echo edit > '$WORKDIR'/tray_menu_OUTPUT</action> <br /> <action signal="button-release-event">EXIT:exit</action> <br /> <variable>MENU_1B</variable> <br /></eventbox></code></pre> <br /> <br />As we see, it's actual 2 set of the same menu-item - one normal, and one highlighted. Switching between them (hide itself / show opponent) when getting the <b>leave-notify-event</b> signal. The highlight color is handled by the extended gtk-theme described above in the style <b>Rightclick_menu</b>. Truly, setting the highlight color to #888, does not follow the global gtk-theme. To do that, you have to grab the foreground color in the active theme. - Not to be described in this blogpost. <br /> <br />The complete code is seen at <a href=https://github.com/puppylinux-woof-CE/woof-CE/blob/testing/woof-code/rootfs-packages/jwm_config/usr/local/jwm_config/tray#L585 target=_blank>github</a> <br /> http://blog.puppylinux.com/?viewDetailed=00029 Xenialpup64 alpha Puppy The first alpha release of Xenialpup64 is now available. <br /> <br />kernel 4.6.3 <br />qt5 <br />vlc <br />ffmpeg <br />palemoon <br />deadbeef <br />hexchat <br />samba <br />and all the usual puppy stuff. <br /> <br />xenialpup64 and xenialpup 32bit isos are available here <a href=http://ftp.nluug.nl/ftp/pub/os/Linux/distr/puppylinux/test/xenialpup/ target=_blank>http://ftp.nluug.nl/ftp/pub/os/Linux/distr/puppylinux/test/xenialpup/</a> <br /> <br />please post all bugs found on the xenialpup64 thread here <a href=http://murga-linux.com/puppy/viewtopic.php?p=910078#910078 target=_blank>http://murga-linux.com/puppy/viewtopic.php?p=910078#910078</a> <br /> <br />happy testing :) <br /> <br /><img src=http://murga-linux.com/puppy/viewtopic.php?mode=attach&id=99202 /> <br /> <br /> http://blog.puppylinux.com/?viewDetailed=00028 Slacko 6.3.2 is released! Release I am excited to announce the release of Puppy Linux Slacko 6.3.2. It is available in 32 bit and 64 bit versions. <br /> <br />This might be called a bugfix release to Slacko 6.3.0 but it is so much more than that! <br /> <br />This is the first ever official puppy to support UEFI booting for both for 32 and 64 bit versions and the same ISO image will boot legacy BIOS PCs as well. And there is so much more that is improved, such as the theming, sound detection, firewall, default application management plus our home grown apps such as pMusic. <br /> <br />It is still based on upstream 14.1 but has all the latest security and bugfix updates. There is much more going on here than a point release can convey that is why we have given it 2 points! <br /> <br />The official release announcement is available for <a href=http://distro.ibiblio.org/puppylinux/puppy-slacko-6.3.2/32/release-Slacko-6.3.2.htm target=_blank>32 bit</a> and <a href=http://distro.ibiblio.org/puppylinux/puppy-slacko-6.3.2/64/release-Slacko64-6.3.2.htm target=_blank>64 bit</a>. <br /> <br />For more information you can visit the <a href=http://slacko.eezy.xyz/notes.php target=_blank>release notes</a> page and the <a href=http://slacko.eezy.xyz/download.php target=_blank>download</a> page. <br /> <br />I Hope you enjoy using Slacko! http://blog.puppylinux.com/?viewDetailed=00027 pMusic - Set playqueue Development <a href=http://murga-linux.com/puppy/viewtopic.php?t=31206 target=_blank>pMusic</a> is playqueue-oriented. It will only play tracks from the playqueue - nowhere else. The focus is how to add tracks to the queue. pMusic offers several ways:<li> From the internal sourcelist</li><li> From the smartadd dock</li><li> From the commandline</li><li> From an external file browser</li><li> From the Track info window</li><li> From the search field</li> <br /> <br /> <br /><b>The internal sourcelist</b> <br /> <br />In the default frontend, this is the big field to the left, and it shows output of<li> the search engine</li><li> the internal file browser</li><li> expanded playlist</li><li> radio-station browsing</li><li> webmusic browsing</li><li> The Favorites/Bookmarks system</li><li> CD-audio content</li><li> user history</li>Whatever music the sourcelist shows, this can be added to the playqueue by double-click on it. Single-click selects item(s) while right-click opens a menu. The combination of searching/selection makes the sourcelist the preferred place for complex adding. It supports multiple selections using CRTL and SHIFT key and selection by dragging an area (rubber banding). <br /> <br /><img src=/www/blog/images/pmusic_add_1.png /> <br /> <br /> <br /><b>The Smartadd dock</b> <br /> <br />Show the Smartadd dock by pressing the button beside the search field - see image below. This is a tool adding tracks depending on your requests. You define how many tracks to be added (by sort order or randomly), and where the smartadd should look. Either in the sourcelist (image above) or the <a href=http://blog.puppylinux.com/?viewDetailed=00024 target=_blank>internal database</a> (all audio files on system). This is all good, but it is the filters that make it 'smart'. From version <a href=http://murga-linux.com/puppy/viewtopic.php?p=908674#908674 target=_blank>5.1.0</a>, there are 3 filters: <br /><b>Rating</b> <br />Each time you have played a song it is stored in the database, so pMusic 'knows' how many times you have played each song. I use this filter when I want some random music - but still, I want music I like. So, setting the rating filter to 3 - I only get songs I have heard 3 times earlier. I get different kind of music (I set it to random), but since I have played these songs 3 times before, I most likely enjoy them. <br /><b>Genre</b> <br />The genre info is based on the meta-info stored in the database. If this info isn't present, this filter is useless and will lead to an error message. An interesting feature is the free search. - The string in the genre-field can be ie. '<i>eta</i>' and will accept Metal/metal/Heavy metal/Black metal/... <br /><b>Tempo</b> <br />If info exist, this filter allows us to specify beats per minute of the songs we like to hear. <br /> <br /><img src=/www/blog/images/pmusic_add_2.png /> <br /> <br />The filter buttons shows quick info of the filter status. Here we see the rating filter is set to 3 while the tempo-button shows the minimum beats per minute - 120. Genre filter is not set, so button doesn't show any info. <br /> <br /><i>Technical (tempo) <br />The pMusic indexer stores the tempo of the song to the database. It requires a full scan (Menu->Music Sources->My Music) or that you've listen the song. (See <a href=http://blog.puppylinux.com/?viewDetailed=00024 target=_blank>Witing to the DB</a> for more info). The tempo detection is done in funcC via the trackinfo function (func_trackinfo --> stream_info) and the result is seen in the Stream tab in the Track info window. Tempo detection requires <a href=http://www.surina.net/soundtouch/ target=_blank>soundtouch</a> to be installed on your system. There is a dependency checker in the Help menu. Tempo features is introduced in <a href=http://murga-linux.com/puppy/viewtopic.php?p=908674#908674 target=_blank>pMusic 5.1.0</a></i> <br /> <br /> <br /><b>The commandline</b> <br /> <br />The basic command is <i>pmusic /path/file</i>, and it will start pmusic with an empty playqueue and play the requested song. If pMusic is already running, it will add the file to the existing playqueue. To override this dynamic behavior, use the switches: <br /><b>-a</b> to ensure the file is added to the existing queue <br /><b>-P</b> to ensure the file will start playing <br /> <br />See <i>pmusic --help</i> for a full set of switches. <br /> <br /> <br /><b>External file browser</b> <br /> <br />The dynamic behavior of the commandline described above will all file browsers benefit of. As long as audio MIME types are associated with pMusic, you can click on an audio file in your file browser and pMusic will show up and start playing. The next files you click on, will nicely be added to the playqueue. <br /> <br />If using the Rox file browser (used in most Puppy linux), there is an option to add all audio files in the selected directory. This is available from the right-click menu. <br /> <br /><img src=/www/blog/images/pmusic_add_3.png /> <br /> <br /> <br /><b>Track info - Album tab</b> <br /> <br />There is also an option to add tracks from the Track info window - Album tab. Right-click in the list, and you get the option to add track(s) to the playqueue. <br /> <br /><img src=/www/blog/images/pmusic_add_4.png /> <br /> <br /> <br /><b>The search field</b> <br /> <br />The search field gives of course input to the search-engine. You can also activate the internal file browser by enter a path here. But in addition, it lets us add music to the playqueue by entering the address - either a file path or an internet URL. Mostly, other solutions are preferable, but when you ie. want to add an internet URL to the playqueue, this is the most handy way to do it. Copy the address in a browser - paste it into the search field - press enter. http://blog.puppylinux.com/?viewDetailed=00026 pMusic sound processing Development The sound processing in <a href=http://murga-linux.com/puppy/viewtopic.php?t=31206 target=_blank>pMusic</a> contains options to manipulate both the <b>input and the output sound stream</b>. It's handy to understand this difference to get the best possible effect on your tuning. <br /> <br /> <br /><b>Output sound processing</b> <br /> <br />The output sound processing is done after the stream has left the pMusic play-engine. So, it will only affect the Linux sound driver (<a href=http://www.alsa-project.org/main/index.php/Main_Page target=_blank>Alsa</a>). This is a smooth processing, and most often the recommended choice. The downside is that it will affect the sound output of all other apps using the Alsa driver, and does not have all the capabilities of the input processing. <br /> <br />pMusic offers a basic Volume and Balance controller. The Volume slider will work for mono as well as stereo, but the Balance does of course require a stereo channel. The default channel is <b>Master</b>, and this is most often a mono channel, and does not support different level for left and right speaker. You must specify correct channel for your system to get mixer volume to work as a balance controller. This is done in the preferences. <i>Menu->File->Preferences</i>. (See image below). There is also a mute-button in this basic sound processing module. <br /> <br />In addition, the output sound processing includes the equalizer embedded from <a href=http://murga-linux.com/puppy/viewtopic.php?t=81889 target=_blank>pEqualizer</a>. This is a frontend to <a href=http://www.thedigitalmachine.net/alsaequal.html target=_blank>alsaequal</a> made by <b>01micko</b>. This gives easy access to tuning the sound fitting your speakers and ears. Be aware that you can save your equalizer settings to a preset for later use. Check out the pEqualizer <a href=https://docs.google.com/document/d/1K_tflOLrpyDNdyP88vFDpwtpe9rJvUMWmBRVBEg9T20/edit?pref=2&pli=1 target=_blank>manual</a> <br /> <br /><img src=/www/blog/images/pmusic_soundprocessing_1.png /> <br /> <br />When the equalizer is installed on your system, all sound is ported through it. Even if choosing the <b>Flat</b> preset the sound is filtered. It does not have a <i>true bypass</i>. If you are one of those wanting the raw output, the solution is to avoid using <b>auto</b> as your defined soundcard. This is the default setting, and to be changed in the preferences. Note that by setting the soundcard you also bound the Alsa driver to pMusic. This means other programs will not play audio as long as pMusic is active. On the other hand, pMusic will not play if sound driver is in use by other program. <br /> <br /><img src=/www/blog/images/pmusic_soundprocessing_2.png /> <br /> <br /> <br /><b>Input sound processing</b> <br /> <br />The input processing is tweaking the sound stream going into pMusic, so this gives more options to manipulate the streams structure (ie. tempo and fading). The downside of input processing is that it has to reload the stream setup, and it will give a tick/pause when changing the values. <br /> <br /><img src=/www/blog/images/pmusic_soundprocessing_3.png /> <br /> <br /><i><u>Technical:</u> <br />The input processing is put inside the <a href=https://github.com/puppylinux-woof-CE/woof-CE/blob/testing/woof-code/rootfs-packages/pmusic/usr/local/pmusic/func_player#L81 target=_blank>generated</a> playing command to the exec-file: $HOME/.pmusic/tmp/exec (check out the <a href=http://blog.puppylinux.com/?viewDetailed=00017 target=_blank>backend monitor plugin</a>).<pre class=code><code class=highlight>ffmpeg -i "/mnt/sdb1/musikk/mp3/Yngwie Malmsteen - Mistreated.mp3" -ss 134 -af "volume=2,treble=gain=3,bass=gain=-7" -f rtp rtp://127.0.0.1:1234 -ss 134 -af "volume=2,treble=gain=3,bass=gain=-7" -f au - 2>> /root/.pmusic/tmp/ffmpeg_output | aplay 2> /root/.pmusic/tmp/aplay_error</code></pre>It is the <b>-af</b> (audiofilter) switch that defines the input sound processing, and we see here that volume is increased by 2dB, treble by 3dB while bass is decreased by 7dB. The -af values is grabbed from: <br />$HOME/.pmusic/tmp/ffmpeg_filter - for internal use <br />$HOME/.pmusic/tmp/ffmpeg_filter_basic - for plugin <br />$HOME/.pmusic/tmp/ffmpeg_filter_EQ - for plugin <br />So, the infrastructure are ready to test out your new sound processing plugin. If you want to look into how pMusic uses ffmpeg as its play engine it is described in the blogpost <a href=http://blog.puppylinux.com/?viewDetailed=00007 target=_blank>ffmpeg - the multimedia hub</a>.</i> <br /> <br /> <br /><b>Manipulate Export files</b> <br /> <br />The gui-module for input processing is also used when exporting files in the playqueue. This gives the abilities to convert the stream more radically than just changing the format. Since this is the same gui-module, all values stays active also when exporting the tracks. To avoid your exported files to be changed, keep the <i>Bypass</i> switch on. <br /> <br /><img src=/www/blog/images/pmusic_soundprocessing_4.png /> <br /> <br /> <br /><b>Input volume / Normalize</b> <br /> <br />Increasing the input volume should be used by caution, as it could give distortion to the sound. To optimize the input volume level, use the <i>Normalizer</i>. The normalizer will unify volume of all tracks, but never increase volume more than to a level without distortion. This is handy when your tracks comes from different sources, since the recording level was probably not the same. The normalizer uses resources on the volume calculation, and depending on your system, it will give a small gap before playing. <br /> <br />The output volume will not distort. http://blog.puppylinux.com/?viewDetailed=00025 Rationalisation of Woof-CE Woof-CE It has been over 2 and a half years since Barry handed over Puppy to the community. In that time we have made many improvements to woof to modernise Puppy and hopefully provide a more modern interface. <br /> <br />However, there is still much work to be done. <br /> <br />While on the surface there doesn't seem to be much happening, behind the scenes development is actually heating up! We have a new member on the team who has been very busy adding and editing thousands of lines of code along with the old faces of <b>zigbert</b>, <b>iguleder</b> and <b>gyro</b> (GitHub handle <i>gyrog</i>) updating and refining code and <b>666philb</b> (GitHub handle <i>mrfricks</i>) churning out exciting new <a href=http://www.murga-linux.com/puppy/viewtopic.php?t=106479 target=_blank>xenialpup</a> beta releases. I myself am working on a <b>slacko-631</b> bugfix release (but I may bump the version number to reflect the massive changes in woof). <br /> <br />Without further ado I'd like to welcome the said new member of the woof-CE team <b>wdlkmpx</b> (GitHub handle - a.k.a. <i>jlist</i> on the Puppy forum). He has been pushing several pull requests lately and they have all been sound so I decided to make him a full member. So if something goes wrong some of the heat is off me! <br /><img src=/www/blog/images/n_n.png /> <br /> <br />Puppy development isn't just woof-CE. An important part of Puppy is the <i>initrd.gz</i> ('initial ramdisk', for want of a better term) that takes care of the booting of Puppy after the bootloader and kernel have done their respective jobs. I started the <a href=https://github.com/puppylinux-woof-CE/initrd_progs target=_blank>initrd_progs</a> woof repo to reliably reproduce the initrd programs which <b>wdlkmpx</b> <b>has improved substantially</b>. << <i>Read totally re-written!</i> <br /><img src=/www/blog/images/happy.gif /> <br /> <br /><b>So where to now?</b> <br /> <br />Unfortunately, we haven't many builders to test the various distro compatibility. While we all would love Puppy to be our full time jobs, it doesn't pay the bills! We are going to rationalise the number of distros that are supported by woof-CE. Don't panic though. We are going to preserve all the old code in a <i>Legacy</i> branch so that if an enthusiast does come along wishing to revive one of the relegated distros then they don't have to start from scratch. <br /> <br />Distros facing the chop are <br /> • arch <br /> • mageia <br /> • pet-based <br /> • T2 <br /> • scientific <br /> <br />as well as old unsupported upstream projects such as Lucid Lynx and older Slackware and Debian releases. Old puppy 2, 3 and 4 repo databases will be removed from woof (not the main repo). <br /> <br />Rationalising of the build scripts is also a priority. A functions library would make life a lot easier and the code more readable. Numerous other improvements need to be made. <br /> <br />Consideration to shifting firmware out of the <i>zdrv</i> and making <i>fdrv</i> (system sfs files) load by default is under review. This will also require a new kernel structure, although old kernels (from the huge style) will still work. Old kernel 'pets' will be removed. <br /> <br />Also, the integration of the initrd_progs into woof-CE would be desirable. The resulting <b>initrd.gz</b> would be smaller and faster with the latest <i>busybox</i> and supporting programs included. <br /> <br />I would also like to see some C sources in woof for core programs so that they can be compiled on the fly in a <i>chroot</i>. This should not be a problem when native building but may have to be addressed for a cross build. <br /> <br />Applications should be grouped to make it easier for builders to make a minimal or an "everything including the kitchen sink" Puppy! The woof GUI will need substantial improvements. <br /> <br />These changes will take time and effort. They are designed for maximum compatibility when a distro is built and hopefully reduce compatibility issues. <br /> <br />I look forward to any comments and may even start a forum thread about this for those who don't want to register here. http://blog.puppylinux.com/?viewDetailed=00024 pMusic DB and file format Development <a href=http://www.puppylinux.org/wikka/pmusic target=_blank>pMusic</a> is an audio-player using a database (DB) to keep track of meta-information of your music. This is info like: <br /><li> ID3-tags (artist, title, album, ...) that are embedded into the file.</li><li> links to lyrics, albumart, ...</li><li> Stream info like format, samplerate, bpm, ...</li><li> User listening activity.</li> <br />While most players depends on an external DB like Mysql or Mariadb, pMusic has its own, very simple, internal DB. Basically it is a textfile with 21 columns separated by a <b>|</b>, where each line contains info of one file. When reading from the DB (ie. when searching), we just grab the line(s) corresponding to our request. <br /> <br />To make the infra-structure simple; the <b>DB</b>, the <b>sourcelist</b> (search-result-field) and the internal <b>file format</b> (<i>*.pmd</i>), uses the exact same formating. That means, we can dump the raw output of the DB to the gui, a favorite list, or ie. to the smart-add function. This helps a lot when it comes to speed. Sometimes you might forget that pMusic is not compiled binary, but just a bash script. <br /> <br />GeekNote: To be technically correct, the sourcelist and <i>*.pmd</i> file contains only the first 15 columns of the DB format. They have no use of the last items of info. <br /> <br /> <br /><b>The DB structure</b> <br /> <br />Let's look at one line of my DB: <br /><pre class=code><code class=highlight>/mnt/sdb1/musikk/Tindrum - Drums Of War.mp3|Tindrum|Drums Of War|Drums of war|1|1988|Hard Rock|Live||mp3|175|04:02|117|/mnt/sdb1/musikk/Tindrum - Drums Of War.mp3|gtk-audio|2aa59ada-3dd8-40b7-878a-bb682fca7b30|479933cd-d787-4126-8315-7749ca4781a1|Tindrum|/mnt/home/pmusic storage/albumart/Tindrum - Drums Of War.jpg||,1357415329,1357417187</code></pre> <br />This line holds all info we got about this track. Instead of explaining what it all means, just open up the DB-editor found in <u>Menu > Music sources > My Music</u>. Here we can look at, and edit all info in the DB. <br /> <br /><img src=/www/blog/images/pmusic_format_1.png /> <br /> <br />Most of this is straightforward, but 3 things might not seem logical: <br /> <br /><li> The <i>Command</i> (column 1) and the <i>Path</i> (column 14) is equal. The <i>Command</i> is executed when adding stuff to the playqueue. The <i>Path</i> is what it says - the local path. Because the example shows a local file taken from the DB textfile, the command is equal to the path. This is not the fact for an url pointing to a radio-station web address.</li> <br /><li> The last column, <i>Timestamps</i>, is not self explanatory. Each time you has played a song, the DB adds the given time in seconds since 1970 to the end of the line. This is used to provide better sorting depending on your preferred music. And, to search for your most played songs ie. in February.</li> <br /><li> Column 7 - <i>Rate</i> - is empty, and it is always empty in the DB textfile, but not in the sourcelist (left pane). The rating is equal to number of timestamps, and is calculated in <a href=https://github.com/puppylinux-woof-CE/woof-CE/blob/testing/woof-code/rootfs-packages/pmusic/usr/local/pmusic/func_rating target=_blank>func_rating</a>. This calculation also change the icon depending on the song's rating. Geeknote: This is a great example of the blinding speed of <a href=https://en.wikipedia.org/wiki/AWK target=_blank>awk</a>.</li> <br /> <br /><b>Writing to the DB</b> <br /> <br />pMusic allows 2 major ways to write info to the DB. Either by (1) <i>user interaction</i> or the default (2) <i>silent mode</i>. <br /> <br /><b>(1)</b> user interaction <br />The static way is to start the indexer (<u>Menu > Music sources > My Music</u>) which scans your system for audio-files and adds the info to the DB. Depending on your music collection, this might take a long time, but place all available information (ID3-tags and stream info) to the DB at once. <br /> <br /><b>(2)</b> silent mode <br />The default dynamic behavior is to store info as you play. When you press the Play-button, pMusic <br /><li> checks the file for ID3-tags and stream info.</li><li> searches the web for lyrics, albumart and artist info. (Must be activated in the preferences.)</li><li> tries to build an album-list if tracks are available on your system. (Must be activated in the preferences.)</li> <br />If using mode (1), we still miss info from the web and album lists, so mode (2) will kick in anyway for missing info. <br /> <br />All this info must be written to the DB - but that's not straightforward - we can't just start writing... <br /><li> To avoid parallel writings to the DB, there exist a queue-system (DB is locked while writing).</li><li> To avoid a long queue (many locks are resource hungry), the info is passed to a DB-stack. The DB-stack can hold several info-capsules.</li><li> Writing to the DB, empties the stack in one operation. This avoids the queue to grow.</li> <br />The stack is found at <i>$HOME/.pmusic/tmp/mymusic_stack</i>. <br />The merging is done at <a href=https://github.com/puppylinux-woof-CE/woof-CE/blob/testing/woof-code/rootfs-packages/pmusic/usr/local/pmusic/func_index#L523 target=_blank>func_index -merge_stack</a>. <br /> <br /> <br /><b>Keep the DB in shape</b> <br /> <br />In addition, there are mechanisms to keep the DB in shape. When you add a file to the playqueue, pMusic checks it in <a href=https://github.com/puppylinux-woof-CE/woof-CE/blob/testing/woof-code/rootfs-packages/pmusic/usr/local/pmusic/func_add target=_blank>func_add</a> - functions <i>check_source</i> and <i>fix_db</i>. <br /> <br />If the added file is not already in the DB, ask user to scan the source directory for new music. This message shows up embedded in the main window to not disturb the user too much. It could be that we don't want to respond to this message, and that is just ok. <br /> <br /><img src=/www/blog/images/pmusic_format_2.png /> <br /> <br />If the added file has its line in the DB, but not present in your system, something should probably be updated, and this message below will show up. But, if the filename is found in the DB with another path than the defined, pMusic will play the alternative source instead. Therefor, this box is not often seen in recent versions of pMusic. <br /> <br /><img src=/www/blog/images/pmusic_format_3.png /> <br /> <br /> <br /><b>The Playlist file format</b> <br /> <br />I mentioned earlier the internal file format <i>*.pmd</i> used by ie. the favorites structure. But, for the user, the pMusic format is the <i>*.pmu</i> found in the save box. You can choose to save to an external format as <i>*.m3u</i> or <i>*.pls</i>, but to get the full power of pMusic, <i>*.pmu</i> is the recommended choice. This because it cooperates well with the DB. <br /> <br /><i>*.pmu</i> contains the same info as in the playqueue. This makes it possible to dump a <i>*.pmu</i> into the playqueue, while a <i>*.m3u</i> has to be converted. Since all information in a <i>*.pmu</i> is grabbed from the DB, we can quickly revert, and grab the full track-info back from the DB. This is seen when expanding a <i>*.pmu</i> in the sourcelist (left pane). - We see full track-info including rating calculation. When expanding a m3u/pls we only see the actual info inside the file. <br /> <br />When looking at the playqueue in the gui, you see 3 columns: <br /> <i>Length</i> | <i>Track title</i> | <i>Path</i> <br /> <br />In fact there are 2 more hidden columns, and all are part of the <i>*.pmu</i> file: <br /> <i>Icon</i> | <i>Length</i> | <i>Track title</i> | <i>Path</i> | <i>ID</i> <br /> <br />The <i>Icon</i> holds <i>gtk-play</i> when the play-icon is shown, else it's empty. This will of course always be empty inside a <i>*.pmu</i> file <br />The <i>ID</i> holds an unique id-number together with the path. This is necessary to avoid conflict when playqueue contains several instances of the same song. The ID keeps track of which of the similar songs you are playing/moving/editing. <br /> <br />Unlike <i>*.m3u</i>, the <i>*.pmu</i> playlist does not handle relative paths. This to stay close to the DB format. Instead pMusic will search for an alternative path if playing track is not found. The statusbar will show this information during search. Code found in <a href=https://github.com/puppylinux-woof-CE/woof-CE/blob/testing/woof-code/rootfs-packages/pmusic/usr/local/pmusic/func_progressbar#L106 target=_blank>func_progressbar</a>. <br /> <br />The short story of the pMusic file formats is: <br /><i>*.pmd</i> mirrors the DB <br /><i>*.pmu</i> mirrors the playqueue <br /> <br /> <br />This is the basic structure of the pMusic data format. http://blog.puppylinux.com/?viewDetailed=00023 Upload to Woof via web interface Woof-CE This describes a very specific challenge. <br />How to upload a package of files to <a href=https://github.com/puppylinux-woof-CE/woof-CE target=_blank>Woof-CE at github</a> via the web interface. <br /> <br />The web interface is suited for doing simple things, and has many limitations over the CLI interface. An advanced user of git would probably laugh at us using the simple variant. But when rarely using git, and most of the time just editing existing files, it is just perfect to do the stuff in the web-browser. <br /> <br />The challenge is when we want to upload packages containing lots of files and directories. How do we do this... <br /> <br /><b>1. Create new files and directories</b> <br /> <br />- Go to the source directory - in this example /woof-code/rootfs-packages/. <br />- Press the <b>Create new file</b> button. <br /> <br /><img src=/www/blog/images/github_upload_1.png /> <br /> <br /> <br />- Write the name of first directory in the textbox - here frisbee. <br />- Enter <b>/</b> to create the path. The textbox moves right, and are ready for new input. <br />- When reached target directory, add filename in textbox, and add file content in the editor. <br />- Add pull request by pressing the <b>Propose file change</b> / <b>Commit changes</b> button. <br /> <br /><img src=/www/blog/images/github_upload_2.png /> <br /> <br /> <br /><b>2. Upload files to existing directory</b> <br /> <br />- Go to the source directory - here /woof-code/rootfs-packages/frisbee/etc/. <br />- Press the <b>Upload files</b> button. <br /> <br /><img src=/www/blog/images/github_upload_3.png /> <br /> <br /> <br />- Add files by dragging them from your file-browser. <br />- You'll see your files get added at bottom (marked red). <br />- Add pull request by pressing the <b>Propose file change</b> / <b>Commit changes</b> button. <br /> <br /><img src=/www/blog/images/github_upload_4.png /> <br /> http://blog.puppylinux.com/?viewDetailed=00022 LxPupSc - new version april-17 Puppy'Woof-CE'Release LxPupSc-17.04.1T with kernel 4.10.8 is <a href=http://murga-linux.com/puppy/viewtopic.php?p=949857#949857 target=_blank>available</a>. <br /> <br />See <a href=http://blog.puppylinux.com/?viewDetailed=00013 target=_blank>this blog entry</a> for more description of LxPupSc http://blog.puppylinux.com/?viewDetailed=00021 The gtkdialog lib Development Did you know about the gtkdialog lib? <br /> <br />Puppies built from Woof-CE uses <a href=https://github.com/puppylinux-woof-CE/woof-CE/tree/testing/woof-code/rootfs-skeleton/usr/lib/gtkdialog target=_blank>/usr/lib/gtkdialog/</a> to unify the look of builtin GUIs. Together with the new vector icon set (in <a href=https://github.com/puppylinux-woof-CE/woof-CE/tree/testing/woof-code/rootfs-skeleton/usr/share/pixmaps/puppy target=_blank>/usr/share/pixmaps/puppy</a>), the gtkdialog lib made it possible to give Puppy a facelift without adding any bloat to the core. <br /> <br />The lib is simple and small. It is meant to reduce the code for repeating requests (as message-boxes), and unify the look for graphical widgets (as scalegrips and svgs). A complete guide how to use the different snippets are found inside each file (open in text-editor). It contains 3 different categories: <br /> <br /> <br /><b>1. BOX</b> <br />These return running gtkdialog boxes with requested info. Gtkdialog is not complex at all, but dead simple boxes often used by Puppy, can be set up with a oneliner. This is <u>not</u> meant as a replacement for <a href=http://xdialog.free.fr/ target=_blank>Xdialog</a>. <br /> <br />There are atm 4 different types of boxes: <br />box_help <br />box_ok <br />box_splash <br />box_yesno <br /> <br />Example: <br /><pre class=code><code class=highlight>/usr/lib/gtkdialog/box_ok Title error "This is an error"</code></pre> <br /><img src=/www/blog/images/gtkdialog_lib_box_ok.png /> <br /> <br /> <br /><b>2. XML</b> <br />While the box-code produces a running gui, the xml-code is gtkdialog code meant to be embedded inside the parent gui. These are used to unify the look, and is cooperating with <a href=http://blog.puppylinux.com/?viewDetailed=00010 target=_blank>pTheme</a> to follow the global theming. <br /> <br />There are 4 xml-snippets available: <br />xml_button_icon <br />xml_info <br />xml_pixmap <br />xml_scalegrip <br /> <br />Example: <i>- Note the 'xml_info gtk' that activates the gtkdialog-theme set by pTheme.</i> <br /><pre class=code><code class=highlight>export GUI=' <br /><vbox space-expand="true" space-fill="true"> <br /> '"`/usr/lib/gtkdialog/xml_info fixed puppy_config.svg 60 "This is the header used in Puppy these days. It handles <b>markups</b>."`"' <br /> <button ok></button> <br /> </vbox>' <br /> . /usr/lib/gtkdialog/xml_info gtk #build bg_pixmap for gtk-theme <br />gtkdialog -p GUI</code></pre> <br /><img src=/www/blog/images/gtkdialog_lib_xml_info.png /> <br /> <br /> <br /><b>3. SVG</b> <br />The svg category returns svg-code to embed in the gtkdialog code. Today, there are 3, but the <a href=http://blog.puppylinux.com/?viewDetailed=00020 target=_blank>knob</a> shown in previous post should probably be added here. As expected, the svg bars and text follows the global theming set by pTheme. <br />svg_analogclock <br />svg_bar <br />svg_text <br /> <br />Example: <br /><pre class=code><code class=highlight>echo ' <br /><vbox> <br /> <timer visible="false"> <br /> <action>/usr/lib/gtkdialog/svg_analogclock 300 > /tmp/clock.svg</action> <br /> <action>refresh:CLOCK</action> <br /> </timer> <br /> <pixmap space-expand="false" space-fill="false"> <br /> <variable>CLOCK</variable> <br /> <input file>/tmp/clock.svg</input> <br /> </pixmap> <br /></vbox>' | gtkdialog -s</code></pre> <br /><img src=/www/blog/images/gtkdialog_svg_analogclock.png /> http://blog.puppylinux.com/?viewDetailed=00020 gtkdialog knob Development Some time ago <i>mister_electronico</i> on the <a href=http://www.murga-linux.com/puppy/viewtopic.php?p=836768#836768 target=_blank>Puppy forum</a> started the discussion of using knobs in gtkdialog code. I gave some feedback but the code never entered a final state. I have now revisited the code, and plan to use it myself. <br /> <br />So, here is a simple test-script to show how it works. All in all, it's just a svg that rotates the dot to show the changing value. Atm, the knob rotates when dragging mouse up/down on the knob. Maybe this should be extended to left/right actions as well. Please check out the code; it should be easy to understand with some basic bash/gtkdialog/svg knowledge. <br /> <br /><img src=/www/blog/images/gtkdialog_knob_2.png /> <br /> <br />The code: <br /><pre class=code><code class=highlight>#!/bin/bash <br />export KNOB_WIDTH=120 <br />export KNOB_COLOR="#A5E8B1" <br />export CARD_NR=0 #'aplay -l' shows your cards <br />export SPEAKER=Master <br /> <br />#initial audio level <br />TMP="`amixer -c $CARD_NR get "$SPEAKER" | grep -m1 'Left:' | cut -d '%' -f 1 | cut -d '[' -f 2`" #volume level <br />ANGLE=$(($TMP*250/100)) #convert from % to angle (0-250) <br />echo $ANGLE > /tmp/knob_angle <br /> <br />draw_knob (){ #$1=angle/value, $2=width, $3=color, $4=dot-color <br /> echo ' <br /> <svg width="'${2}'" height="'${2}'"> <br /> <defs> <br /> <radialGradient <br /> id="RG1" cx="'$((${2}*30/100))'" cy="'$((${2}*30/100))'" fx="'$((${2}*30/100))'" fy="'$((${2}*30/100))'" r="'$((${2}*45/100))'" <br /> gradientUnits="userSpaceOnUse"> <br /> <stop style="stop-color:#393939;stop-opacity:1;" offset="1"/> <br /> <stop style="stop-color:#888;stop-opacity:1;" offset="0"/> <br /> </radialGradient> <br /> </defs> <br /> <circle style="fill:#222;" cx="'$(((${2}/2)+(${2}*4/100)))'" cy="'$(((${2}/2)+(${2}*4/100)))'" r="'$((${2}*46/100))'"/> <br /> <circle style="fill:#777;stroke:#444" cx="'$((${2}/2))'" cy="'$((${2}/2))'" r="'$((${2}*46/100))'"/> <br /> <circle style="fill:url(#RG1);stroke:'${3}';stroke-width:'$((${2}*2/100))'" cx="'$((${2}/2))'" cy="'$((${2}/2))'" r="'$((${2}*39/100))'"/> <br /> <circle style="fill:'${4}';" cx="'$((${2}*28/100))'" cy="'$((${2}*74/100))'" r="'$((${2}*4/100))'" transform="rotate('${1}' '$((${2}/2))' '$((${2}/2))')"/> <br /> </svg>' <br />} <br /> <br />update (){ #get current, relative position of cursor <br /> read ANGLE < /tmp/knob_angle <br /> Y="`getcurpos | awk '{print $2}'`" <br /> read Y2 < /tmp/cursor_y <br /> ANGLE=$(($ANGLE+(($Y2-$Y)*2))) #the knob's value range is equal to moving mouse up/down 125 px. <br /> [ $ANGLE -lt 1 ] && ANGLE=0; [ $ANGLE -gt 250 ] && ANGLE=250 #keep value inside range <br /> echo $Y > /tmp/cursor_y <br /> echo $ANGLE > /tmp/knob_angle <br /> draw_knob $ANGLE $KNOB_WIDTH "$KNOB_COLOR" "#eee" > /tmp/knob.svg <br /> amixer -c $CARD_NR set "$SPEAKER" $(($ANGLE*100/250))% <br />} <br /> <br />export -f draw_knob update <br />draw_knob $ANGLE $KNOB_WIDTH "$KNOB_COLOR" "#eee" > /tmp/knob.svg <br /> <br />echo ' <br /><vbox margin="20"> <br /> <timer visible="false" milliseconds="true" interval="100" sensitive="false"> <br /> <variable>TIMER</variable> <br /> <action>update</action> <br /> <action>refresh:KNOB</action> <br /> </timer> <br /> <eventbox> <br /> <pixmap> <br /> <variable>KNOB</variable> <br /> <input file>/tmp/knob.svg</input> <br /> </pixmap> <br /> <action signal="button-press-event">getcurpos | awk '"'"'{print $2}'"'"' > /tmp/cursor_y</action> <br /> <action signal="button-press-event">enable:TIMER</action> <br /> <action signal="button-release-event">disable:TIMER</action> <br /> </eventbox> <br /> <text><label>Volume</label></text> <br /></vbox>' | gtkdialog -s <br /></code></pre> <br /> <br />Be aware that this knob depends on the <i>getcurpos</i> command. This is included in all recent Puppies. But I doubt that you'll find <i>getcurpos</i> in most other distros, so I see this as Puppy-code. You should probably avoid this code if you plan to offer your gui outside the kennel. <br /> <br />This info is added to the <a href=http://www.murga-linux.com/puppy/viewtopic.php?t=38608 target=_blank>Tips and tricks</a> post http://blog.puppylinux.com/?viewDetailed=00018 pMusic visualization Development This is just for fun - and just because ffmpeg allows us to do it. <br /> <br />At the moment it's a very simple visualization engine. But the more recent ffmpeg releases allows more sophisticated solutions by <a href=https://trac.ffmpeg.org/wiki/FancyFilteringExamples target=_blank>combining several modes</a> into one visual 'show'. I will include more of these when we get there, but for now, a basic coding-structure is in place. <br /> <br />The visualization presets found in the menu is defined in the file <i>/usr/local/pmusic/txt_visualization</i>, and contains 2 columns: <i>Name</i> and <i>Command</i>.<pre class=code><code class=highlight>Wave 1|amovie=/root/.pmusic/tmp/pmusic.sdp, asplit [a][out1]; [a] showwaves [out0] <br />Wave 2|amovie=/root/.pmusic/tmp/pmusic.sdp, asplit [a][out1]; [a] showwaves=mode=line [out0] <br />Waves 1|amovie=/root/.pmusic/tmp/pmusic.sdp, asplit [a][out1]; [a] showwaves=mode=p2p:split_channels=1 [out0] <br />Waves 2|amovie=/root/.pmusic/tmp/pmusic.sdp, asplit [a][out1]; [a] showwaves=mode=cline:split_channels=1 [out0]</code></pre>It maybe looks complex, but a closer look shows that only the last part of the command is unique. For line 2 that is; <i>showwaves=mode=line</i> <br /> <br /><b>Note!</b> <br />This will NOT make pMusic depend on a newer ffmpeg as extended visualization is optional. I plan to stick with 1.2. But, ffmpeg is evolving fast, so we have to keep an eye of what we 'need' in the future. <br /> <br />see also: <br /><a href=http://blog.puppylinux.com/?viewDetailed=00007 target=_blank>ffmpeg - the multimedia hub</a> <br /><a href=http://blog.puppylinux.com/?viewDetailed=00017 target=_blank>pMusic - FFmpeg monitor</a> <br /> <br /> <br /><img src=/www/blog/images/pmusic_visualization.png /> http://blog.puppylinux.com/?viewDetailed=00017 pMusic - FFmpeg monitor Development pMusic is a showcase of what gtkdialog is capable to do, and is probably the most complex gtkdialog code out there- It includes solutions of many gtkdialog challenges. Examples are: <br />- Take advantage of vector graphics and advanced text layout <br />- Conditional actions to avoid heavy cpu-usage when idle <br />- Alignments and scaling <br />- Extended gtk theming <br />- Different ways for a flexible gui without re-rendering. <br />- etc... <br /> <br />But there is no reason for a showcase without making it transparent for the users/testers. Sharing knowledge is what moves us forward. pMusic includes the attribute 'pmusic --dump-gtk' to show the generated gtkdialog code of the main gui. Else, most code is sent to temporary files in $HOME/.pmusic/tmp/ <br /> <br />pMusic is also a playground to test ffmpeg as an advanced audio backend. For the next major release (5.1.0), it will use more of the ffmpeg features. I will come back to this later, but today we'll talk about transparency. <br /> <br />For years, there has been a plugin (Backend info) to show what's going on in the background. As the use of ffmpeg extends, I find it important to share the backend-codes. Not only to enlighten others, but also to make you offer improved code back to pMusic. It is a win-win situation. When 5.1.0 is shipped, it will include the improved plugin with more ffmpeg knowledge: <br />- The ffmpeg log <br />- The play command <br />- The export (convert) command <br />- The visualization command <br />It gives a wider insight of the ffmpeg possibilities, and how pMusic uses them. <br /> <br /><img src=/www/blog/images/pmusic-5.1.0_1.png /> <br /> http://blog.puppylinux.com/?viewDetailed=00016 Icon Theme Development With the enormous aid of <b>zigbert</b> and <b>technosaurus</b> I have been able to develop an <a href=https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html target=_blank>freedesktop compliant</a> (mostly) icon theme that can be used in any Linux or other Unix (if the specification is supported). <br /> <br /><i>So what?</i> <br /> <br />It is light as a feather. As a comprehensive theme it weighs in at 53KB (xz compressed ~ 200KB gzip compressed). That is very little in terms of an ISO image and it can totally replace <i>all</i> the PNG Rox Filer icons (MIME). Not only is it compatible with Rox but <i>all</i> freedesktop compliant file managers whether they use the GTK, FLTK or QT (or other) UI toolkits (any version). <br /> <br /><i>So where is it?</i> <br /> <br />I have created a github repo with the icon source. It's very simple to build and package. Take a look <a href=https://github.com/puppylinux-woof-CE/puppy_icon_theme target=_blank>here</a> and enjoy! http://blog.puppylinux.com/?viewDetailed=00015 Puppy Linux sandbox Puppy Recent Woof-CE based puppies have a new tool which is rather obscure and thus often overlooked. <br /> <br />The tool in question is "sandbox". This is a tool that enables the user to run "puppy within puppy". When you run sandbox, you get a fresh environment that resembles the puppy you're running on, except that anything you do inside sandbox will not change anything outside it (with some exceptions ...). It's ideal for testing some nasty pets that like to change your system files without you knowing it - if a pet breaks your installation, well it only does it within sandbox. Your main system continues oblivious to whatever happens in sandbox. And when you leave sandbox, everything you do inside it, is gone. <br /> <br />If you want to setup an alternate environment (with a different savefile), you can do that too. The standard sandbox will lose its contents when you leave, but rw-sandbox will keep it --- the content is gone when you leave the sandbox, but when you re-enter, it will be restored. Just like a savefile. <br /> <br />How to run it? Sandbox and its brother rw-sandbox only runs from terminal. So launch a terminal, and type "sandbox.sh". Choose the layers you want to use, and you will enter the sandbox. Type "exit" to leave the sandbox. Inside the sandbox, you can also launch GUI programs like geany or seamonkey, if you wish to. Just make sure that you kill all of them before leaving sandbox. <br /> <br />To start rw-sandbox, do the same but instead type "rw-sandbox.sh". You will be asked where to create a new savefile (or load an existing one if it already exists). The rest it the same. <br /> <br />Sandbox was originally a feature of Fatdog64, which was backported to Woof-CE last year by request of forum member "eowens". To see what can and cannot be done with sandbox, please see its original documentation page: <a href=http://distro.ibiblio.org/fatdog/web/faqs/sandbox.html target=_blank>http://distro.ibiblio.org/fatdog/web/faqs/sandbox.html</a>. Note: Puppy Linux does not have lxc-sandbox, because right now it does not support lxc. Also, the full-desktop emulation is not working on Puppy yet, because it lacks certain tools needed for that. But everything else will work. <br /> <br />And if your copy of Puppy doesn't come with sandbox, pester your favorite developer to rebuild it from Woof-CE. Building fresh from Woof-CE will include sandbox as well as many other updates, such as zigbert's excellent pthemes. <br /> http://blog.puppylinux.com/?viewDetailed=00014 X-Slacko Release I am pleased to announce the release of <b>X-Slacko-4.0</b> <br /> <br />X-Slacko is a Puppy Linux derivative based on 01micko's Slacko Puppy with the Xfce desktop environment and is Slackware compatible. <br /> <br />Please see the <a href=http://www.murga-linux.com/puppy/viewtopic.php?t=88846 target=_blank>Puppy Forum page</a> for more information and download links. http://blog.puppylinux.com/?viewDetailed=00013 LxPupSc Puppy'Woof-CE <b>LxPupSc</b> is a somewhat different pup.... <img src=/www/blog/images/cool.gif /> <br /> <br />As default, the desktop environment is LXDE (openbox, lxpanel, pcmanfm) rather than the more usual puppy jwm and rox (although these are still part of the build and there is a desktop switcher to activate them if you prefer). <br /> <br />LxPupSc is a 100% woof-ce 32-bit build but it does have a unique characteristic in that it is built from multiple sources as follows: <br />- Slackware base components come from Slackware-14.2 (a.k.a <a href=http://www.slackware.com/changelog/current.php?cpu=i386 target=_blank>Slackware-Current</a>) <br />- LXDE components come from Arch Linux <br />- Puppy pets are a mixture of Slacko-14.2 plus specific pet-builds when recompilation is needed for Slackware-Current library compatibility <br /> <br />Plus there are also a bunch of fix-pets, packages-templates, woof-ce patches etc. to get it all to hang together. (What properly goes where is still a bit of a black-art for me and I suspect some rationalisation could be done here!) <br /> <br />The kernel is a woof-ce kernel-kit build. <br /> <br />Thanks are due to many people whose more original work has been plagiarised ruthlessly: <br />- Jejy69 for the original LxPup way back in 2013 and particularly the menu configuration <br />- 01Micko for the Slacko-6.3 configuration used as a starting point and for much advice along the way and the pet-build system <br />- Stemsee for the kernel config <br />- Iguleder, 01Micko, and pemasu for the kernel-kit <br />- Mavrothal for testing and fixes (particularly the ppm/dependencies fix) and woof-ce advice and help <br />- Marv, Billtoo, ETP, radky, rcrsn51, gcmartin and many others for testing and helpful suggestions on the forum thread (apologies to anybody not mentioned) <br />- Smokey01 for the repository <br /> <br />Along the way, testing has identified some things that have found their way back into woof-ce for the benefit of future puppies (e.g. the sns/firewall-ng fixes). <br /> <br />In using woof-ce I have got a list of "enhancements" that I'd like to see: <img src=/www/blog/images/n_n.png /> <br />- better support for incremental builds (1download to produce a list of changed packages downloaded; 2createpackages to loop to build that list) <br />- better integration of rootfs-packages and DISTRO_PKGS_SPECS- so that you don't have to tick choices in 3builddidtro-Z (e.g. have yes/no/woof as options) <br /> (an interim change would be to make all rootfs-package chosen by default so you only have to unselect unwanted ones....) <br />- 3builddistro-Z to have better unattended operation - replace terminal questions scattered through script with a config file so you can start the build and go away and forget about it <br /> <br />The version of LxPupSc at the time of writing is 16.08.1 (hosted on <a href=https://sourceforge.net/projects/lxpup/files/Other/LxPupSc/ target=_blank>SourceForge</a>) <br />The <a href=http://www.murga-linux.com/puppy/viewtopic.php?t=101527 target=_blank>forum thread</a> <br />The <a href=http://smokey01.com/peebee/slackocurrent/ target=_blank>repository</a> <br /><a href=http://lx-pup.weebly.com/reviews.html target=_blank>LxPup Reviews</a> <br /> <br />Cheers <br />PeeBee <br />August 2016 <br /> <br />Obligatory screenie: <br /><img src=http://www.murga-linux.com/puppy/viewtopic.php?mode=attach&id=91706 /> http://blog.puppylinux.com/?viewDetailed=00012 New menu manager Development I have made a new menumanager to replace the one in /usr/sbin/menumanager. <br /> <br />What is new? <br />- Sort menu-items in corresponding category <br />- single click activation <br />- Graphical feedback <br />- More intuitive (personal opinion) <br /> <br />I will wait until Mick has released the next stable release before I upload the code to Woof-CE. It is not the time for brand new stuff... <br /> <br /><img src=/www/blog/images/menumanager.png /> http://blog.puppylinux.com/?viewDetailed=00011 Slacko 6.3.0.6 beta Development'Woof-CE I have released an ISO image as a beta for the next iteration of slacko. It is mainly a bugfix for 6.3.0 but it is also intended to support UEFI in line with the discussion <a href=http://blog.puppylinux.com/?viewDetailed=00009 target=_blank>here.</a> <br /> <br />For more information visit the <a href=http://murga-linux.com/puppy/viewtopic.php?t=106337 target=_blank>forum page</a>. <br /> <br />For other puppy builders, preliminary support has been added to woof-CE for UEFI as of commit <a href=https://github.com/puppylinux-woof-CE/woof-CE/commit/ba2a9b8f4edc137d387dd083ab9b92f7a6a95ada target=_blank>ba2a9b8</a>. http://blog.puppylinux.com/?viewDetailed=00010 Ptheme supports gtk-icon themes Development pTheme has been around since Slacko 6.3. It manage all different themable aspects in Puppy. The settings can be saved to a <a href=http://murga-linux.com/puppy/viewtopic.php?p=785778#785778 target=_blank>Global theme</a>, and switching can be done in a single click. <br /> <br />With the recent work with pTheme, it now also supports switching of gtk-icons themes. AFAIK, this is the last graphical piece to make the global theming complete. <br /> <br />One of the major targets with pTheme is to easy switch between touch and mouse mode when using tablets. There are some missing pieces in Puppy before it fully fits in a touch environment, but things are evolving with Micks work in the xorg branch of Woof-CE. <br /> <br />Personally, I find Mick's Buntoo theme very attractive - default in Slacko64 6.3. It's great to see Puppy with this freshness. But, I am sure we have plenty of skilled artists in the kennel, and hopefully you the are willing to give us your facelift of Puppy. <br /> <br /><img src=/www/blog/images/ptheme.png /> <br /> http://blog.puppylinux.com/?viewDetailed=00009 Booting Slacko 6.3 on UEFI Puppy Booting UEFI difficult? Nah. Not at all. Let's do this for Slacko 6.3 (32-bit). <br /> <br />1. Make sure you have UEFI machine. Machines that comes with Win8 or recent usually okay. <br />2. Get a blank flash drive. Format it as FAT32. <br />3. Grab a copy of Slacko 6.3 ISO <br />4. Grab a copy of Grub2 UEFI bootloader, from here: <a href=http://distro.ibiblio.org/fatdog/packages/700/grub2-efi64-2.00-x86_64-1.txz target=_blank>http://distro.ibiblio.org/fatdog/packages/700/grub2-efi64-2.00-x86_64-1.txz</a>. <br />This is for 64-bit machine, if yours is 32-bit (extremely rare) then get <a href=http://distro.ibiblio.org/fatdog/packages/700/grub2-efi32-2.00-i686-1.txz target=_blank>http://distro.ibiblio.org/fatdog/packages/700/grub2-efi32-2.00-i686-1.txz</a>. <br />5. Extract the tarball from previous step, make sure you get a copy of grubx64.efi (or grubia32.efi) from inside the tarball and rename it to bootx64.efi (or bootia32.efi). <br />6. On you flash drive: <br />- mkdir -p EFI/boot <br />- copy bootx64.efi (or bootia32.efi) and put it under EFI/boot <br />- Extract the contents of Slacko 6.3 ISO and put the following files to the root of the flash drive: <br />* vmlinuz <br />* initrd.gz <br />* puppy_slacko_6.3.0.sfs <br />* zdrv_slacko_6.3.0.sfs <br />- on the root of the flash drive, create a new file named "grub.cfg" and fill it with the following text: <br /><pre class=code><code class=highlight>menuentry "Start Slacko" { <br /> linux /vmlinuz <br /> initrd /initrd.gz <br />}</code></pre> <br /> <br />7. If you have Windows, boot to Windows and disable hibernation (aka fast boot, aka hybdrid sleep, etc). Your Slacko doesn't need this, this is more to protect Windows. <br />8. Configure your UEFI to disable Secure Boot. <br />9. Now boot with the flash drive plugged and tell your UEFI bios to boot from that flash drive. <br /> <br />You can run Slacko64 6.3 in the same way. Your success with other Puppies may vary, but the process is generally the same. <br /> <br />PS: In my (qemu) test, mouse doesn't work. But this is something I'm sure Mick can fix later :) http://blog.puppylinux.com/?viewDetailed=00008 Fido Progress Puppy'Development So far I have built a slacko64 iso image with Fido available with his own 'home'. It boots fine and on shutdown nothing is changed in the routine that anyone would notice except that <i>/home/fido</i> is created using <i>/root</i> as the skeleton. <br /> <br />Here is a snap (click to enlarge): <br /> <br /><a href=/www/blog/images/Screenshot.jpg rel=prettyPhoto><img rel=prettyPhoto src=/www/blog/thumbs/Screenshot.jpg /></a> <br /> <br />What works: <br /><li>browsing</li> <br /><li>text editing</li> <br /><li>package manager</li> <br /><li>virtual terminal (urxvt)</li> <br /><li>mounting drives</li> <br /><li>word processing</li> <br /><li>spread sheet</li> <br /><li>paint</li> <br /><li>videos (mplayer)</li> <br /><li>music (pmusic)</li> <br /> <br />What doesn't <br /><li>drive icon markers inconsistent</li> <br /><li>hot plugging</li> <br /><li>sfs management</li> <br /><li>updates management</li> <br /><li>ptheme</li> <br /><li>menu refresh</li> <br /><li>firewall tray icon</li> <br /> <br />This is only fairly initial testing.There is probably a bunch more stuff that doesn't work but much of the gui stuff (gtkdialog/xdialog) will be rectified by adding the following line to the top of the application: <br /> <br /><pre class=code><code class=highlight>[ $UID -ne 0 ] && exec sudo -A ${0} ${@}</code></pre> <br /> <br />- which just pops the "askpass" box to type the password. For simplicity, fido and root passwords are the same - entered at first shutdown on creation of fido. <br /> <br />So, plenty to do - most of it low level ugly stuff. <img src=/www/blog/images/whistle.gif /> <br /> <br />Note: this version of slacko64 is built from the woof-CE <a href=https://github.com/puppylinux-woof-CE/woof-CE/tree/xorg target=_blank>xorg</a> branch. <br /> <br /> <br /> <br /> <br /> http://blog.puppylinux.com/?viewDetailed=00007 ffmpeg - the multimedia hub Development <a href=ffmpeg.org target=_blank>ffmpeg</a> is an audio/video converter. The basic use is to convert an input file/stream to a different output file/stream. Sounds simple? Yeah, but it's also far more complicated. <br /> <br />Multimedia libs in linux is not unique. You have probably (even if not noticed it) been in touch with gstreamer, sox and libav. Diversity is a good thing, but for a minimalistic distro like Puppy, it means we have to take the hard decisions what to support and what to leave. <br /> <br />These days, ffmpeg matures into something more than just one of the other libs. Simply because some major projects make it their preferred multimedia lib. <br />- Ubuntu and Debian used ffmpeg some years ago, but switched to libav when it forked from ffmpeg. Now they have switched back to ffmpeg. Puppy based on ie. Ubuntu Tahr had major issues with Puppy-tools built upon ffmpeg, like FFconvert and pBurn. pMusic was never included into Puppy Tahr. Slackware on the other side kept ffmpeg, so Puppy Slacko never had these issues. <br />- Firefox has from version 44 switched from gstreamer to ffmpeg for multimedia support. In a standard Puppy, gstreamer is only used by Firefox. So in a future release, including Firefox will require less dependencies. Gstreamer is not lightweight, so the iso-shrink will be noticeable. <br /> <br />As mentioned, Puppy already includes apps using ffmpeg, but it could also give us more interesting ffmpeg-based apps. Here follows some load thoughts of different ways to use ffmpeg for new projects. That means new apps/features that not require any new backends/dependencies. But let's start to see how it already is in use: <br /> <br />- The original target for ffmpeg was to convert input file to another output file. This is what we see in <a href=http://murga-linux.com/puppy/viewtopic.php?p=406093&search_id=288112892#406093 target=_blank>FFconvert</a>. <br /><pre class=code><code class=highlight>ffmpeg -i /path/input_file.mp3 [options] /path/output_file.ogg</code></pre> <br />This is also what is used by pBurn to make your audio files compatible before burning an audio-CD and any video file for your Video-DVD. <br /> <br />- Depending on the ffmpeg-package, it may or may not contain the ffmpeg media player - ffplay. This is a simple but very useful mediaplayer for video and audio files and streams. It could for sure have been the default media player Puppy, but atm it does not has any control-gui, or a signal-system for building an external gui. Interesting to see how this evolves in the future. <br /><pre class=code><code class=highlight>ffplay -i /path/input_file.mp3</code></pre> <br /> <br />- Instead of sending the converted output audio/video stream to an output file, it is possible to send it further to another command. Technically that means sending the stream to stdout and pipe it to next command. This way of using ffmpeg is what pMusic is based upon: Take whatever audio-file format and convert it to raw audio before sending it to the simple audioplayer (aplay) shipped with the audio driver system - alsa. <br /><pre class=code><code class=highlight>ffmpeg -i /path/input_file.mp3" -f au - | aplay</code></pre> <br />This is another solution than using ffplay, and it is likely to think that this has to be hard on the resources on your system. It is not. And there are 3 main benefits: 1.) ffplay is not always bound to the ffmpeg pack. 2.) We can control the soundcard more accurate through aplay than ffplay. 3.) Only very recent versions of ffplay allows sound-filtering of the input stream. <br /> <br />- The input or output can also be a server (a livestream). <a href=http://www.murga-linux.com/puppy/viewtopic.php?p=508041#508041 target=_blank>This webcam recorder</a> is an example of such use. But in the following example I send the output to a local server. <br /><pre class=code><code class=highlight>ffmpeg -i /path/input_file.mp3 -f rtp rtp://127.0.0.1:1234</code></pre> <br />This ffmpeg stream can not be heard until you connect to the server. So, you can (dis)connect to your stream without restarting the audio-file. I have set up this structure for the next pMusic release (5.1.0) to support visualization. ffmpeg has filters to convert audio into a generated video like waves or similar, but managing visualization should not interfere with the main audio stream. Solved by sending the output both the the server and to stdout. <br /><pre class=code><code class=highlight>ffmpeg -i /path/input_file.mp3 -f rtp rtp://127.0.0.1:1234 -f au - | aplay</code></pre> <br />Realize than ffmpeg can mix and split inputs and outputs. It's getting complicated, and I stop here... <br /> <br />- ffmpeg supports more inputs than files and streams. It is capable to grab the output of the X-server (What you see on your screen). That means it is simple to build a screen recorder for ie. youtube howtos. I have wondered why no one have found this to be a fun project for their coding. It's all based on one single command like: <br /><pre class=code><code class=highlight>ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 output.mp4</code></pre> <br />including the sound from your mic. <br /><pre class=code><code class=highlight>ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 -f alsa -ac 2 -i hw:0 output.mkv</code></pre> <br /> <br />- The last example is interesting because it also grabs the sound from the soundcard. Combine this with a local audio server as shown above and you can tweak (soundfilters like /eq/pitch/vibrato/..) the sound in realtime without interfering with the input soundcard stream. Are we seeing a pRack... <br /> <br />- And I have not mentioned that ffmpeg supports basic video editing like croping, scaling, fading, effects, etc. <br /> <br /> <br />These are only a few examples of the usage of this awesome tool. And personally, I find it pleasing to see that it most likely will be included into future Puppies. Here are much unused potential. So, girls and guys - go coding. <br /> http://blog.puppylinux.com/?viewDetailed=00006 Fido gets a home Development <img src=/www/blog/images/fido96.png /> <br /> <br />Fido has been a poor neglected pup. <br /> <br />For many years people have wondered why we use the <i>root</i> account for just about everything. After several complaints, Barry eventually created the <i>fido</i> account that served as the default non-root 'user' to appease those not comfortable with running as root. Much of this was based on <b>Pizzasgood</b>'s work in Puppy 4.2.1. Unfortunately, fido hasn't received much love since then and has deteriorated in to an emaciated wreck. <br /> <br />I have decided to do some work on the fido account (rather than put him down) and the first thing I did was create a 'home' dir for fido in <i>/home/fido</i> so there will be no more conflicts with /root. Of course it didn't work too well. I got to a desktop fine, everything on the hardware side working, browsing, text editing worked but no terminal! <b><i>urxvt</i></b>, our default virtual terminal application just would not run, so out came the google foo. Turns out that permissions in <i>/dev/</i> were scewed up, a lot of them; some ownerships too. Of course there will be a lot of other bugs that I didn't investigate but this one was huge, and probably the worst. <br /> <br />Anyway, I think I now have it sorted and will offer a package for testing in a <i>pfix=ram</i> environment soon. <br /> <br />You can follow development in <a href=http://www.murga-linux.com/puppy/viewtopic.php?t=71358 target=_blank>this thread</a> on the forum. <br /> <br />-------- <br /> <br /><i>NB: The last poster there before my <a href=http://www.murga-linux.com/puppy/viewtopic.php?p=896477#896477 target=_blank>post</a> of today was by <b>Nooby</b>, our lovable perpetual 'noob'. RIP Nooby.</i> http://blog.puppylinux.com/?viewDetailed=00005 Blog Software Development So why did I decide to go with a trusty old <i>pplog</i> derivative for this blog? <br /> <br />At first I had considered <a href=https://jekyllrb.com/ target=_blank>Jekyll</a>, which runs nicely at <i>Github</i> (see <a href=http://puppylinux.com target=_blank>puppylinux.com</a>) but the problem with that is that each post is subject to a "pull request". Nothing wrong with that except I want to trust the posters here and don't want to have to bother with moderating everything. (And there hasn't been great enthusiasm to post a page, edit some content or even proofread over at puppylinux.com). As it is I have to approve every poster and commenter but that is all. Once registered here you have free rein. <br /> <br />I also considered a couple of other options, including <a href=http://flatpress.org/home/ target=_blank>FlatPress</a>, a <i>php</i> based platform which stores its database in flat files, similar to <i>pplog</i> and derivatives. However, I thought why not go with this? It's clean, simple yet elegant and with <b>sc0ttman</b>'s enhancements quite modern. It was quite a bit of work though to add the multi-user functionality and make sure it was locked down. <br /> <br />Of course there are other big platforms like WordPress, Drupal and friends but they are big and cumbersome, require an sql database and more often than not are an enormous amount of work to customise and maintain. With WordPress, yes there are tons of themes and add ons but this creates more headaches. Whose code do you trust? Why can't I get such and such theme looking right? Drupal is the opposite in that there aren't all that many themes available and they are big work to customise. <br /> <br />I have forked the code for this blog as <a href=https://github.com/01micko/sjpplog_ng target=_blank><i>sjpplog_ng</i></a> on GitHub. As many will know it is written in the <i>perl</i> scripting language which has a large presence in the open source community. Most web servers have perl already installed. If you are a perl coder, or even a dabbler (like me) then feel free to fork the project and offer your code. The original licence is GPLv3 so we have to stick with that. <br /> <br />It has been a long month of web developing getting the main puppy site transferred over to me and developing a nice site (many thanks of course to <b>jamesb</b>, <b>mavrothal</b> and <b>BarryK</b>) and now this blog which is <u>the</u> place for the latest in Puppy Linux news. Now back to <i>real</i> development! <br /> <br />Is there anything more Puppy than <b>pplog</b>? <br /> <br /><img src=/www/blog/images/cool.gif /> http://blog.puppylinux.com/?viewDetailed=00004 pMusic 5 and its bad reputation Puppy pMusic has become a grown up program. Version 0.1 was released back in 2008. It quickly arose both glorifying and criticism. - And that was fair depending on the viewpoint. pMusic 1 was extremely hungry on CPU-power, but it also showed some fresh capabilities of Gtkdialog. The pushing of limits has continued, and it has become a showcase of features I didn't realize was possible using Bash/Gtkdialog. <br /> <br />While pMusic 2 basically put more flesh to the bone, the 3. generation shipped the homemade internal dynamic db. That was very ambitious - maybe too ambitious. So the arguing flamed up again. Cpu-usage was now reduced to the half, but the db had become active and working on its own grabbing music information while playing. New valid arguments had come to the battle... <br /> <br />pMusic 4 focused on all the goodies Thunor gave us with his outstanding work on Gtkdialog. With all kinds of new features the dynamic db became even more active, and it showed its bottlenecks and weaknesses. - The criticism to it was still fair. The last year of pMusic 4, most effort went to stabilize the db-usage. It has become clearer to me why Amarok, Clementine and friend use an external db like Mysql or Mariadb. But when focus is on size and dependencies, that was never an option. <br /> <br />pMusic 4 became stable, but of course for a price. Introducing routines for queuing db pulls and continuously checking db status slowed down the general usage of the audioplayer. If it should fit the mantra of Puppy, it should work snappy also on older pc's. As mentioned, pMusic-code has been written since 2008, and I have learned some bits and pieces since then. There had to be a potential benefit of rewriting the code. The result is seen in pMusic 5, and the benefit is above my expectations. It seems that much of the stability from version 4.7.4 has survived, and it has become noticeable faster. - That means a lot faster. The cpu-usage has decreased, but more important, many functions are much more responsive. An overall snappier user-experience. <br /> <br /><a href=http://murga-linux.com/puppy/viewtopic.php?p=213694#213694 target=_blank>http://murga-linux.com/puppy/viewtopic.php?p=213694#213694</a> http://blog.puppylinux.com/?viewDetailed=00003 Great new blog! Puppy 01micko has invited me to join the new blog. <br />Yes, it looks great. <br />This will be the place to come and get the latest news about what is happening in Puppy-land, and releases. <br /> http://blog.puppylinux.com/?viewDetailed=00002 Puppy Releases Puppy Somebody that has followed Puppy from the days when Barry was still holding the torch may wonder - what happens with the Puppy releases these days? During its heyday, Puppy can get a new release every 2-3 weeks, or at least one can expect a new release in 2-3 months. <br /> <br />Nowadays, releases seem to be few and far between. Is this slowing down caused by lack of resources, lack of developers interest, or simply, lack of developers? <br /> <br />Actually, the answer is "none of the above". When Barry was at helm, Puppy was in its growing phase. A lot of ideas were tried and dropped, new tools were added (and later dropped), etc. It was also in flux. Nowadays, Puppy is more mature and less tinkering is needed, so you don't see releases that often. <br /> <br />Another reason is, there were complaints when releases were made too often. A personal Puppy installation took time and effort to customise, and to start over again after just 3 or 4 weeks was too much for many. <br /> <br />To balance all this, the implicit agreement is that Puppy releases are now made once every 6 months, give or take. <br /> <br />And lastly - there <b>are</b> actually point releases (or bug fix releases). You probably are not aware of them because they are not announced in Barry's blog; or they are not announced as a separate thread in the forum - they are posted in the same thread that announced the original release, but those posts quickly get drowned by other forum traffic. <br /> <br />And that's what this blog is supposed to do - the author of the Puppy can announce his or her own release here, with links back to the forum for discussion. In a way, this blog is to play the same role that Barry's blog played in the past (now that his blog covers a wider range of topics). http://blog.puppylinux.com/?viewDetailed=00001 Bootloader popularity contest Puppy I recently posted a poll about bootloaders used in Puppy. I want to know which bootloader is most popular by user's vote. I already have a guess of what it is, but would like to confirm that with first hand data. <br /> <br />I plan to run the poll for 30 days, and although it's too early to tell, it seems that my guess is not too far off; and the reasons behind the popularity too. <br /> <br />What triggered me to do the poll is the suggestion from a few members of the community that Puppy implement a new bootloader. A suggestion is welcome, and new shiny thing that can do better is always exciting; but then we need data about what the user really needs. There is no need to supply a electric chainsaw if you need to trim some bush in your garden. Sure it can do the job too, but isn't a garden scissors a better tool? <br /> <br />Of course, it is also to inquire about what the users think about the new big wave that is coming (actually already came) - UEFI. Interestingly, so far I don't have anyone bringing up the topic yet (the puppy steward's post didn't count), as is either it doesn't matter, or it doesn't bother them. <br /> <br />Anyway, we'll see. I'll probably start discussion on that thread soon. 30 days seem to be abit too long. http://blog.puppylinux.com/?viewDetailed=00000 Welcome! Puppy <img src=/www/blog/images/puppylogo96.png /> <br /> <br /><b>Welcome to the brand new Puppy Linux Blog!</b> <br /> <br />This blog is a descendant of the the original <a href=https://code.google.com/archive/p/pplog/ target=_blank>pplog</a> code by <b>Federico Ramírez</b> (fedekun) and advocated by Barry. It is directly based on <a href=http://pplog.scottjarvis.com/ target=_blank>SJpplog</a> by <b>Scott Jarvis</b> (sc0ttman) with modifications to make it <b>multiuser</b>, such that more than one person can make actual posts. <br /> <br />Other features include: <br /> <br /> <li> Extended sharing via Reddit, Twitter, Facebook or Google+, all configurable so you can have all, none or any combination</li> <br /> <li> Beefed up security</li> <br /> <li> Search by "author" button since there is the possibility of multiple users.</li> <br /> <li> A map that shows the location of "hits" to the site, thanks to <b>jamesb</b></li> <br /> <li> a design reflective of the main <a href=http://puppylinux.com target=_blank>Puppy Linux Site</a></li> <br /> <li> many other little bugfixes and improvements</li> <br /> <br />By default, comments are switched off however this may change in the future with an email based registration system. In the blog software itself the comments can be switched on. <br /> <br />I hope you enjoy this blog. <br /> <br />01micko <img src=/www/blog/images/smilies/happy.gif />