Puppy Newsletter


A group of 'dogs' with smokey01 in the front-seat is now putting together a monthly newsletter covering stuff from the kennel.

There has been some discussion in the forum some time now, and the first edition 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.

Happy new year.

Posted on 2 Jan 2017, 13:37 by zigbert - Categories: Puppy
1 Comment - Edit - Delete


Gtkdialog - Dynamic tabs


I have earlier explained how I've extended gtkdialog to get 'new' widgets.
  • Knob
  • Right-click menu

  • 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.


    The challenge:
  • Gtkdialog does not allow to include code while running, so all code (tabs) has to be loaded at startup.
  • Using the <notebook> widget would work somehow if it could hide/show tabs. - it can't.
  • Using <togglebuttons> or <radiobuttons> 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.
  • The example also uses rotated labels, which the mentioned widgets above can't do. Only the <text> widget can do that.
  • 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.


  • The solution:
    My solution is built around the <eventbox> widget that holds the actions, while the <text> 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 pMusic 5.3.1 (or newer).




    The gtkdialog-code for one tab looks like this:
    <vbox spacing="0" visible="true" space-expand="false" space-fill="false">
    
    <hbox height-request="1" space-expand="true" space-fill="true">
    <hseparator height-request="1" width-request="12" space-expand="false" space-fill="false"></hseparator>
    <text space-expand="true" space-fill="true"><label>""</label></text>
    </hbox>
    <eventbox name="tab" space-expand="true" space-fill="true">
    <hbox>
    <vbox>
    <pixmap>
    <variable>PIX_TAB_1</variable>
    <width>20</width>
    <input file>/tmp/tab_1_icon.svg</input>
    </pixmap>
    </vbox>
    <text name="playqueue_tab" xalign="0" angle="270" wrap="false" space-expand="true" space-fill="true">
    <variable>TXT_TAB_1</variable>
    <input>cat /tmp/tab_1_NAME | sed -e "s%^%\n %" -e "s%$% %"</input>
    </text>
    </hbox>
    <action signal="enter-notify-event">disable:TXT_TAB_1</action>
    <action signal="leave-notify-event">enable:TXT_TAB_1</action>
    <action signal="button-press-event">if [[ $PTR_BTN -eq 3 ]]; then menu_tabs 1; else gxmessage "My actions"; fi</action>
    <action signal="button-release-event">activate:REFRESH_LIST</action>
    <action condition="command_is_true([[ $PTR_BTN -eq 3 ]] && echo true)" signal="button-release-event">activate:REFRESH_TABS</action>'
    </eventbox>
    <variable>VBOX_TAB_1</variable>
    </vbox>


    Hovering a tab activates signal="enter-notify-event" and disables the <text> 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 underline the text.) When the text get disabled, it receives the fg[INSENSITEVE] signal from the gtk-theme. If we override the theming, disabled widgets can look crisp. The class in the gtk-theme corresponds to <text name="tab" in the gtkdialog-code above.
    style "Tab"
    
    {
    fg[INSENSITIVE] = "#00CA10"
    }
    widget "*tab" style "Tab"


    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 menu_tabs 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'.


    Posted on 11 Dec 2016, 19:48 by zigbert - Categories: Development
    No comments - Edit - Delete


    FatDog64 710 is released.


    FatDog is a close relative to Puppy Linux. It was actually forked (see down the page) from Puppy Linux 4.0 in 2008.

    The developers are long time Puppy users and tinkerers; kirk, jamesbond and more recently SFR. 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.

    Initially, FatDog was built with the T2 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 Linux From Scratch (LFS) and Beyond Linux From Scratch (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 ).

    For more information and download links visit the FatDog 710 thread at the Puppy Linux Discussion Forum or visit The Desk of James (release announcement).

    Enjoy!



    Posted on 4 Dec 2016, 20:15 by 01micko - Categories: Release
    No comments - Edit - Delete


    Audioplayer's resource hunger


    Testing resource hunger of audioplayers
    This test contains the basic audio players; DeadBeeF and Audacious. It contains the mediaplayer VLC, the very comprehensive Exaile and the database driven music managers; pMusic and Clementine. 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.

    From my personal view, I am interesting to see how pMusic is working compared to other players. pMusic has got a lot of criticism of its hunger on cpu resources. I want to disprove this reputation.


    The test
    My test-machine is an AsusEEE netbook 1001px (cpu:2x1.66Ghz atom).
    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.

    The OS is XenialPup 7.0.4.
    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 XenialPup 7.0.4, it would be great if you gave me a link to the pet/sfs. I am interested to extend my test with more players.

    The task is to play a mp3 file.
    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.

    The compared players are:
    Audacious 3.6.2, Clemetine 1.2.3, DeaDBeeF 0.7.2, Exaile 3.2.2, pMusic 5.2.4, VLC 2.2.2


    Cpu-usage playing mp3 with gui shown
    Exaile		 7.5 %
    
    VLC 8.3 %
    DeaDBeeF 8.8 %
    Audacious 10.0 %
    pMusic 12.1 %
    Clementine 18.2 %

    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.


    Memory-usage playing mp3 with gui shown
    Audacious	 5 Mb
    
    DeaDBeeF 20 Mb
    Exaile 23 Mb
    VLC 25 Mb
    pMusic 29 Mb
    Clementine 33 Mb

    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.


    Size required for installation:
    pMusic		 1 Mb
    
    Audacious 8 Mb
    DeaDBeeF 10 Mb
    VLC 53 Mb
    Clementine 66 Mb
    Exaile 66 Mb

    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.

    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.


    Posted on 15 Nov 2016, 02:58 by zigbert - Categories: Puppy
    No comments - Edit - Delete


    Slacko 700 Beta


    Slacko 700 is now in beta testing!

    It has been a bit over a month since slacko 700 alpha was first released and in that time we have squashed many bugs and have brought in may improvements.

    To get a copy just visit the puppy forum 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.

    Below is a preview of the default theme.



    Have fun testing and report any issues to the link above to the Puppy forum.

    Posted on 9 Oct 2016, 12:56 by 01micko - Categories: Development
    No comments - Edit - Delete


    AlbumArt in pMusic


    Albumart for playing track
    pMusic shows albumart in the main window if available. With the default frontend 'Manager' it is located at bottom-left corner. A larger view of the same image is found in the Trackinfo window. Click on it to see it in full size.




    The priority is:
  • 1. Look for embedded image in the audio-file.
  • 2. Look for image in the same directory as the audio-file.
    The image file should be named with 'front, albumart, album_art, cover or folder'.
  • 3. Look for image downloaded by pMusic previously.
    If set up to do so, pMusic will download the image file when albumart find one on the internet. More about this below.
  • 4. Grab image from URL defined in the database (DB).
    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.
  • 5. Search on the internet for matching albumart.
    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.





  • With these tags in place it searches www.albumart.org, www.seekacover.com and www.slothradio.com (in this priority order).
    Very recently, www.albumart.org went down, so you should update to pMusic 5.2.1 to include these multiple search-sites. All these sites uses www.amazon.com as their image source. In the future it would be great if we additionally could use google's image-search as well.

    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.




    Search albumart
    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.




    When scaling the main window you will see that the albumarts won't scale to fit. Choose 'Update sizing' in the right-click menu. Here you can also choose size of the thumbs.


    Save albumart
    Save albumart means 2 different things.
    1. Save the found albumart to a local file
    2. Embed the albumart into the audio-file

    Both operations are done in the trackinfo window. Be aware that the masstagger allows you to embed one albumart into many files.
    There are corresponding functions for 'Delete albumart' in the Trackinfo window.





    Posted on 4 Oct 2016, 16:14 by zigbert - Categories: Development
    No comments - Edit - Delete


    Pages: [1] [2] [3] [4] [5] [6] [7] ...