Podcasts in pMusic


pMusic 5.1.3 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.


Find podcast

pMusic ships with a few podcast channels just as examples. These are of course not the one you 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.



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.

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



The image also shows that you can search the huge podcast index. This must be activated in the search dock.


Add podcast channel

pMusic separates the podcast channels set up by the user from the indexed channels. This is shown in the image above as My Podcasts. You can of course add a new channel manually (menu->Music sources->Podcast->Setup), but if you find a channel in the index, it is easier to add it directly. Select the channel and click Add channel to My podcasts.




Set timestamp

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 Menu->Playqueue->Add timestamp to favorites. It will then show up in favorites, and double-click will start playing at given position.




Download

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 Convert exported tracks option has to stay active.




Posted on 24 Aug 2016, 19:35 by zigbert - Categories: Development
No comments - Edit - Delete


X-Tahr


I am pleased to announce the release of X-Tahr-2.0

X-Tahr is a Puppy Linux derivative based on 666philb's Tahrpup with the Xfce desktop environment and is Ubuntu Trusty Tahr compatible.

Please see the Puppy Forum page for more information and download links.

Posted on 20 Aug 2016, 21:42 by rg66 - Categories: Release
1 Comment - Edit - Delete


Gtkdialog right-click menu


gtkdialog does not include support for right-click menu, but like the knob, there has been some workarounds for right-click menus as well. Let's look at one of the existing...

The main structural solution has been around some years, and includes some basic knowledge of gtkdialog options.
<window decorated="false" skip_taskbar_hint="true">

<hbox scrollable="true" hscrollbar-policy="2" vscrollbar-policy="2" space-expand="true" space-fill="true">
<vbox spacing="2">

menuitem xml-code here

</vbox>
</hbox>
<action signal="focus-out-event">EXIT:exit</action>
</window>

  • Set decorated to false skips the window manager to draw window borders
  • skip_taskbar_hint 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.
  • The signal focus-out-event exits the gui the focus is leaving the menu.
  • spacing 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.
  • scrollable <hbox> gives us the 3D border. Other types of border can be set by the shadow-type option.
  • hscrollbar-policy avoids scrollbars.

  • This is much like any right-click menu works - so far, so good



    This is the minimal right-click menu in the tray manager (/usr/local/jwm_config/tray).
    The code for each menu-item is a combination of a <pixmap> and a <button> widget.
    <hbox>
    
    <pixmap height-request="18" icon_size="1" space-expand="false" space-fill="false">
    <input file stock="gtk-edit"></input>
    </pixmap>
    <button height-request="18" xalign="0" can-focus="no" relief="2" space-expand="true" space-fill="true">
    <label>"'$(gettext 'Manual edit')'"</label>
    <action>echo edit > /tmp/menu_OUTPUT</action>
    <action>EXIT:exit</action>
    </button>
    </hbox>


    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.



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


    The improvement process

    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?
    It should:
  • scale the gui depending on font size and NLS strings.
  • have a clear border defining its area.
  • show the selection in the main gui.
  • not grey out area in the main gui.
  • allow disabling of specific menu items.
  • highlight menuitem when hovering.
  • support icons.
  • be good looking, and follow the active gtk-theme.
  • allow embedded widgets for more complex menus (see image below).

  • Here follows my attempt for a better solution. Not 100%, but far closer than the previous one.




    The structural code in the first code snippet has not changed, but been extended to show the new border.

    
    
    <window decorated="false" skip_taskbar_hint="true" resizable="false" border-width="0" space-expand="true" space-fill="true">
    <eventbox name="rightclick_menu_frame" above-child="false">
    <vbox border-width="1">
    <eventbox>
    <vbox spacing="0" border-width="7">

    menuitem xml-code here

    </vbox>
    </eventbox>
    </vbox>
    </eventbox>
    <action signal="focus-out-event">EXIT:exit</action>
    </window>


    The <eventbox> 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 rightclick_menu_frame corresponds to our style for the extended gtk-theme. Color is set to black (#000), and border width to 1 px. The second <eventbox> is only to draw a new background with the color taken from the global gtk-theme.

    echo 'style "Rightclick_menu" { bg[NORMAL] = "#888" }
    
    style "Rightclick_menu_frame" { bg[NORMAL] = "#000" }
    widget "*rightclick_menu" style "Rightclick_menu"
    widget "*rightclick_menu_frame" style "Rightclick_menu_frame"
    ' > $WORKDIR/gtkrc_menu
    export GTK2_RC_FILES=$WORKDIR/gtkrc_menu:/root/.gtkrc-2.0


    The code for the menu-items differs more from the previous attempt (snippet above). This one does not use the <button> widget as the previous, but the <text> widget. Since the <text> widget does not has any internal spacing as the <button> (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 <pixmap> 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.

    The <text> widget and the <pixmap> widget does not support any <action>, but that is easily solved by putting them inside an <eventbox>, and let that one handle actions. The corresponding code for this new menu-item looks like this.

    <eventbox above-child="true" visible-window="true">
    
    <hbox spacing="7" border-width="3">
    <pixmap space-expand="false" space-fill="false">
    <height>18</height>
    <input file>/usr/share/pixmaps/puppy/remove.svg</input>
    </pixmap>
    <text xalign="0" space-expand="true" space-fill="true">
    <label>"'$(gettext 'Manual edit')'"</label>
    </text>
    </hbox>
    <action signal="enter-notify-event">hide:MENU_1</action>
    <action signal="enter-notify-event">show:MENU_1B</action>
    <variable>MENU_1</variable>
    </eventbox>
    <eventbox name="rightclick_menu" above-child="true" visible-window="true" visible="false">
    <hbox spacing="7" border-width="3">
    <pixmap space-expand="false" space-fill="false">
    <height>18</height>
    <input file>/usr/share/pixmaps/puppy/remove.svg</input>
    </pixmap>
    <text xalign="0" space-expand="true" space-fill="true">
    <label>"'$(gettext 'Manual edit')'"</label>
    </text>
    </hbox>
    <action signal="leave-notify-event">show:MENU_1</action>
    <action signal="leave-notify-event">hide:MENU_1B</action>
    <action signal="button-release-event">echo edit > '$WORKDIR'/tray_menu_OUTPUT</action>
    <action signal="button-release-event">EXIT:exit</action>
    <variable>MENU_1B</variable>
    </eventbox>


    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 leave-notify-event signal. The highlight color is handled by the extended gtk-theme described above in the style Rightclick_menu. 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.

    The complete code is seen at github


    Posted on 4 Jul 2016, 08:09 by zigbert - Categories: Development
    No comments - Edit - Delete


    Xenialpup64 alpha


    The first alpha release of Xenialpup64 is now available.

    kernel 4.6.3
    qt5
    vlc
    ffmpeg
    palemoon
    deadbeef
    hexchat
    samba
    and all the usual puppy stuff.

    xenialpup64 and xenialpup 32bit isos are available here http://ftp.nluug.nl/ftp/pub/os/Linux/distr/puppylinux/test/xenialpup/

    please post all bugs found on the xenialpup64 thread here http://murga-linux.com/puppy/viewtopic.php?p=910078#910078

    happy testing :)





    Posted on 30 Jun 2016, 04:10 by 666philb - Categories: Puppy
    No comments - Edit - Delete


    Slacko 6.3.2 is released!


    I am excited to announce the release of Puppy Linux Slacko 6.3.2. It is available in 32 bit and 64 bit versions.

    This might be called a bugfix release to Slacko 6.3.0 but it is so much more than that!

    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.

    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!

    The official release announcement is available for 32 bit and 64 bit.

    For more information you can visit the release notes page and the download page.

    I Hope you enjoy using Slacko!

    Posted on 22 Jun 2016, 21:22 by 01micko - Categories: Release
    1 Comment - Edit - Delete


    pMusic - Set playqueue


    pMusic 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:
  • From the internal sourcelist
  • From the smartadd dock
  • From the commandline
  • From an external file browser
  • From the Track info window
  • From the search field



  • The internal sourcelist

    In the default frontend, this is the big field to the left, and it shows output of
  • the search engine
  • the internal file browser
  • expanded playlist
  • radio-station browsing
  • webmusic browsing
  • The Favorites/Bookmarks system
  • CD-audio content
  • user history
  • 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).




    The Smartadd dock

    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 internal database (all audio files on system). This is all good, but it is the filters that make it 'smart'. From version 5.1.0, there are 3 filters:
    Rating
    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.
    Genre
    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. 'eta' and will accept Metal/metal/Heavy metal/Black metal/...
    Tempo
    If info exist, this filter allows us to specify beats per minute of the songs we like to hear.



    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.

    Technical (tempo)
    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 Witing to the DB 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 soundtouch to be installed on your system. There is a dependency checker in the Help menu. Tempo features is introduced in pMusic 5.1.0



    The commandline

    The basic command is pmusic /path/file, 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:
    -a to ensure the file is added to the existing queue
    -P to ensure the file will start playing

    See pmusic --help for a full set of switches.


    External file browser

    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.

    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.




    Track info - Album tab

    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.




    The search field

    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.

    Posted on 21 Jun 2016, 03:46 by zigbert - Categories: Development
    No comments - Edit - Delete


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