Rhythmbox Coverart Browser hits v2.1


I’m pleased to announce v2.1 (code name “Penfold”) of my Rhythmbox plugin Coverart Browser…

trusty - VMware Player (Non-commercial use only)_028Highlights:

  1. Support for my other plugin alternative-toolbar (see the screenshot above).  For me this completes the look-and-feel from my ideal media player.
  2. Ability to add an album to immediately play after the current album (“play next”).  This even works for tracks – you can select tracks to play after the currently playing tracktrusty - VMware Player (Non-commercial use only)_032
  3. Quick and easy method to view what you are playingtrusty - VMware Player (Non-commercial use only)_033trusty - VMware Player (Non-commercial use only)_034
  4. One click play now takes into account your tile styletrusty - VMware Player (Non-commercial use only)_031trusty - VMware Player (Non-commercial use only)_030trusty - VMware Player (Non-commercial use only)_029
  5. view, save and zoom your coverarttrusty - VMware Player (Non-commercial use only)_035

At the same time, my linked art search plugin Coverart Search Providers has been released.  This has even better embedded art finding abilities – using the power of GStreamer as well as the new upstream python3-mutagen library. N.B. python3-mutagen is a new dependency, python3-mutagenx dependency has been removed

Full list of changes for this release:

  • Allow switching between coverart-browser and the coverart-playlist sources via picture buttons on each source
  • tighter integration with Rhythmbox – addition of select and play using Rhythmbox’s own toolbar play button
  • Support the alternative-toolbar capability to hide/show the coverart-toolbar
  • Support for GTK 3.14
  • Support for the upcoming release of Rhythmbox (3.2?)
  • Single click icon display position changes consistently depending upon the cover-tile style (shadow/no shadow etc.)
  • view/zoom/save the chosen cover – hover over the coverart on the track pane to reveal
  • coverart information in tile-view can be now left/centre & right aligned
  • Double click track & cover pane handle to open full height or to close
  • Play Next (album)- add the selected album(s) to be the next album after the current playing album
  • Play Next (track)- add the selected track(s) to be the next track after the current playing track
  • Track Artist and Artist Information Panes can be opened and closed via double-click of the pane-handle
  • Bottom Track & Cover Pane has more space – the expander & label has been removed
  • Tidied display – visible pane handles disappear after the plugin has been run 5 times
  • Add ability to resize Icon-view with CTRL+mouse wheel scroll
  • Translated into 25 languages and locales
  • for developers – doxygen documentation: http://fossfreedom.github.io/coverart-browser/classes.html

I’m already planning for the next release – code named “Colonel K”.  I’m more than happy to receive any contributions – if you are looking to dip your coding toes – feel free to drop by the GitHub project – I’m always willing to help and guide :)

Major thanks to the Launchpad Translators – there are better more complete translations this time around. I’m always looking for translators to help out – just drop by the Launchpad Project.

As always – would welcome feedback.  Please drop a comment. Better still, say thanks though the wonderful Flattr – or buy me a beer via Paypal

To install – if you are using my PPA then just update your sources as normal.

If you are not – why not! :-)

sudo add-apt-repository ppa:fossfreedom/rhythmbox-plugins
sudo apt-get update
sudo apt-get install rhythmbox-plugin-coverart-browser

The PPA has packages for 14.04, 14.10 & 15.04.  See this article for a full list of what these packages are.

You don’t like PPA’s … or are not using a Ubuntu based distro, then you must install both coverart-browser and coverart-search-providers. Full instructions in the README’s

How to fix no shared folders in vmware player 7



A quick note for those that have seen shared folder support and copy-to-clipboard issues when running a ubuntu 14.04 virtual machine in VMWare Player / VMWare Workstation.

Ubuntu has recently just bumped its kernel version to 3.13.0-46-generic i.e. run uname -a to see what kernel you are running.

The default vmware tools that comes with VMWare Player 7 now does not compile correctly.  When you run vmware-install.pl in the extracted vmware-tools package you see the following error:

from /tmp/modconfig-ABCdEFgH/vmhgfs-only/inode.c:29:
include/linux/kernel.h:793:27: error: ‘struct dentry’ has no member named ‘d_alias’
const typeof( ((type *)0)->member ) *__mptr = (ptr); \

The hint I found to fix this was here – however the instructions were not clear how to apply this.

From the VMWare Player menu choose Virtual Machine – Reinstall VMWare Tools.

Click Install on the dialog to mount the virtual disc

Copy the VMWareTools-9.9.2-2496486.tar.gz file displayed in Nautilus to your ~/Downloads folder.

Dip into your terminal:

cd ~/Downloads
tar -xvf VMWareTools-9.9.2-2496486.tar.gz
cd vmware-tools-distrib/lib/modules/source/
tar -xvf vmhgfs.tar
cd vmhgfs-only

then copy and paste the following as a file called inode.patch

> #else
>              d_u.d_alias) {
> #endif
> #else
>          struct dentry *dentry = list_entry(pos, struct dentry, d_u.d_alias);
> #endif

Run the following to fix the errant file the cannot be compiled:

patch inode.c < inode.patch

This will complain about the file being read-only – but will patch the file never-the-less.

Finally – recompress the sources you’ve modified back as a tar file and re-run the vmware-tools installer:

cd ..
mv vmhgfs.tar vmhgfs.tar.orig
tar cvf vmhgfs.tar vmhgfs-only
cd ~/Downloads/vmware-tools-distrib
sudo ./vmware-install.pl

What do you do when your Android phone is not recognised by Ubuntu?




Well maybe not – after you’ve finished cursing and threatening to go back to Windows – I would recommend you dig deep, rollup your sleeves and get creative…

TLDR; skip to the bottom and add my PPA to get the latest version of libmtp

My wife gave me a Vodafone Smart Turbo Android phone running Kitkat (v4.4) for Christmas and I’ve just got around to looking at its music capabilities.  First things first – adding some music to the phone.  Except my favourite music player – Rhythmbox nor Nautilus – refused to see the phone.

Rhythmbox, Nautilus – and many other music players in Linux use the underlying MTP library – libmtp to talk to modern Android phones & tablets.

In Trusty this is v1.1.6 – upstream the latest is v1.1.8 (at the time of writing)

Thus I took the vivid sources and rebuilt this on trusty.

However, this still did not work. Next visit was to the libmtp project. The key recommendation is to file a bug-report on their source tracker. They need the vendor ID and device ID of your phone. You get this by:

running lsusb
then plugin your phone and re-run lsusb

You should now see a new entry being listed:

for example:

foss@emachine:~$ lsusb
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0402:9665 ALi Corp. Gateway Webcam
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
foss@emachine:~$ lsusb
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 006: ID 1ebf:7f29
Bus 001 Device 003: ID 0402:9665 ALi Corp. Gateway Webcam
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

The new entry was 1ebf:7f29 – the vendor ID is the first part (1ebf) and the device ID is 7f29

That’s all well and good – but you’ll need to wait until someone does something with your bug report … and then you’ll need to wait until the next version of libmtp appears in some future version of Ubuntu.

Lets not wait…

On the project website it mentions that you can edit one of the source files – src/music-players.h

So lets create our own debian package. The easiest way to take someone elses pre-made package … mine for example

sudo add-apt-repository ppa:fossfreedom/libmtp
sudo apt-get update
apt-get source libmtp

Edit the music-players.h file

cd libmtp-1.1.8*/src
gedit music-players.h

Scroll to the end and add your new phone entry remembering to suffix a “,” to the end of the last line i.e.

{ “Isabella”, 0x0b20, “Her Prototype”, 0xddee, DEVICE_FLAG_NONE }

change to

{ “Isabella”, 0x0b20, “Her Prototype”, 0xddee, DEVICE_FLAG_NONE },
{ “YU Yureka”, 0x1ebf, “Vodafone smart turbo 4″, 0x7f29, DEVICE_FLAGS_ANDROID_BUGS }

where “YU Yureka” is the Vendor Name, 0x1ebf is your Vendor ID (prefixed with “0x”), “Vodafone smart turbo 4″ is the Device description, 0x7f29 is the Device ID (prefixed with “0x”) and DEVICE_FLAGS_ANDROID_BUGS is the common flag because Android MTP is just full of bugs…

Save. Install the prerequisite packages:

sudo apt-get build-dep libmtp
sudo apt-get install devscripts build-essential libtool

Create your own patch for the package and compile:
dpkg-source --commit
debuild -us -uc

Note – if you see the following error:

configure.ac:14: error: required file ‘./ltmain.sh’ not found
configure.ac:5: installing ‘./missing’

Then copy the missing file and repeat the compilation:

cp /usr/share/libtool/config/ltmain.sh ./
debuild -us -uc

This will eventually create a series of Debian packages in the folder above libmtp-1.1.8*

Install the following packages – libmtp-common, libmtp-runtime & libmtp9, with the format sudo dpkg -i libmtp<packagename>

Too complicated? Maybe – but its worth learning the basics of compiling to understand what really goes into producing your favourite software.

Alternatively, find a friendly developer, beg/buy them a coffee and maybe they’ll add your phone to their package ;)

If you’ve skipped this far, install v1.1.8 of libmtp for Trusty (14.04) or Utopic (14.10) and cross your fingers that your phone is in this release:

sudo add-apt-repository ppa:fossfreedom/libmtp
sudo apt-get update && sudo apt-get upgrade

What was interesting examining the vivid package was that Canonical has added the new BQ Aquarius 4.5 Ubuntu Edition to this package. So I’ve included that also in my PPA.

Also, Canonical has added a new phone/phone like device to the vivid package

Description: Adding Arale device id (mtp and mtp+adb)
Forwarded: not-needed
Author: Ricardo Salveti de Araujo <ricardo.salveti@canonical.com>

This is the temporary id used by this device, once the final
one is in place, it’ll be forwarded to upstream.

I wonder what that is??

How to upgrade to the 3.16 LTS Utopic kernel and graphics for Ubuntu 14.04


, ,

Long-term Support for Ubuntu 14.04 also means that you can get the latest stable kernel and graphics as well.  Importantly, these remain supported by the kernel and graphics teams and you’ll receive a regular supply of updates for 9 months.

Remember – you’ll need to update just before 9 months to get the next LTS kernel and graphics before support is officially withdrawn.  If this sounds like too much hassle – best stick with the 3.13 kernel and graphics – they remain supported for 5 years!

The community wiki page describes how to install the latest kernel and graphics – but you need to be very careful.

For me the instructions meant that I could have destroyed my wine + pipelight installation but more importantly, bcmwl wireless could have been left in a broken state because the bcmwl package has not yet been backported.

The wiki page stated that to upgrade the kernel and graphics you use the following:

sudo apt-get install --install-recommends linux-generic-lts-utopic xserver-xorg-lts-utopic libgl1-mesa-glx-lts-utopic

Remember the magic “-s” parameter; with “-s” added you can simulate what would happen when you run an install command – for me, it revealed that amongst the packages it would have removed were vital wine & QT5 packages:

sudo apt-get -s install --install-recommends linux-generic-lts-utopic xserver-xorg-lts-utopic libgl1-mesa-glx-lts-utopic | more

N.B. press q to exit the paused display

Instead I preserved my wine & QT5 installation through this simulated command:

sudo apt-get -s install --install-recommends linux-generic-lts-utopic xserver-xorg-lts-utopic libqt5gui5 libgles1-mesa-lts-utopic libgles2-mesa-lts-utopic libgl1-mesa-glx-lts-utopic libgl1-mesa-glx-lts-utopic:i386 libglapi-mesa-lts-utopic:i386 libegl1-mesa-drivers-lts-utopic | more

Try the above and examine which packages would be removed. Once you are happy – go ahead and remove the “-s” after the apt-get.

What the above didn’t forsee thought was the following error:

Examining /etc/kernel/header_postinst.d.
run-parts: executing /etc/kernel/header_postinst.d/dkms 3.16.0-30-generic /boot/vmlinuz-3.16.0-30-generic
Error! Could not locate dkms.conf file.
File: does not exist.
Error! Bad return status for module build on kernel: 3.16.0-30-generic (x86_64)
Consult /var/lib/dkms/bcmwl/ for more information.

Until the ubuntu devs backport the utopic bcmwl package you can safely download this package yourself and install it (64bit Ubuntu):

wget http://mirrors.kernel.org/ubuntu/pool/restricted/b/bcmwl/bcmwl-kernel-source_6.30.223.248+bdcom-0ubuntu1_amd64.deb
sudo dpkg -i bcmwl-kernel-source_6.30.223.248+bdcom-0ubuntu1_amd64.deb

If you are still using 32bit Ubuntu (why??) then download the 32bit package

wget http://mirrors.kernel.org/ubuntu/pool/restricted/b/bcmwl/bcmwl-kernel-source_6.30.223.248+bdcom-0ubuntu1_i386.deb
sudo dpkg -i http://mirrors.kernel.org/ubuntu/pool/restricted/b/bcmwl/bcmwl-kernel-source_6.30.223.248+bdcom-0ubuntu1_i386.deb

How to make applications start faster after installing pipelight


Pipelight is an excellent solution to bring numerous Windows only plugins to Linux & Firefox users. After installing pipelight the following plugins can be enabled:

  • silverlight5.1,  silverlight5.0, silverlight4
  • Adobe Flash
  • unity3d
  • widevine

A number of other experimental Windows based plugins are also available – shockwave and adobe-reader in particular, plus a few others; run pipelight-plugin to see the full list

However, it does have an unwelcome side-effect. A number of applications can appear to hang, or slowly start.  If an application depends on something called WebKit then you’ll certainly see this.  My Rhythmbox plugin called CoverArt Browser uses WebKit to display some of its information.  When starting the plugin you can see a 5 or more seconds of delay.  This is because pipelight is also starting when WebKit is started.

To test this – run the application from a terminal – if you see something like this then you know pipelight is also being enabled:

[PIPELIGHT:LIN:unknown] attached to process.
[PIPELIGHT:LIN:unknown] checking environment variable PIPELIGHT_SILVERLIGHT5_0_CONFIG.
[PIPELIGHT:LIN:unknown] searching for config file pipelight-silverlight5.0.
[PIPELIGHT:LIN:unknown] trying to load config file from '/home/foss/.config/pipelight-silverlight5.0'.
[PIPELIGHT:LIN:unknown] unrecognized configuration key 'diagnosticmode'.
[PIPELIGHT:LIN:unknown] sandbox not found or not installed!
[PIPELIGHT:LIN:silverlight5.0] using wine prefix directory /home/foss/.wine-pipelight.

What is WebKit.

WebKit is web-based technology – it enables (amongst other things) applications to display HTML based information as if its native to the application as opposed through a browser.  WebKit loads the same plugins that you have installed in Firefox.

In my particular case, I’m using pipelight’s Silverlight plugin capability to view Sky.com movies.  Obviously I have no interest in pipelight & Siliverlight in my music based Rhythmbox plugin!

So how do I use pipelight only for Firefox and not for other WebKit based applications?

First disable any pipelight plugin you may have enabled.

pipelight-plugin --list-enabled-all

If you had enabled, for example, Silverlight5.0 globally you would disable it using:

sudo pipelight-plugin --disable silverlight5.0

If you had enabled for the local user, then:

pipelight-plugin --disable silverlight5.0

Repeat for other plugins displayed using pipelight-plugin --list-enabled-all

Next create a local folder called myplugins

mkdir ~/myplugins

re-enable silverlight but only for this folder:

MOZ_PLUGIN_PATH=$HOME/myplugins pipelight-plugin --enable silverlight5.0

Repeat for your other pipelight plugins. Now you can start firefox like this to use these locally created plugins:

MOZ_PLUGIN_PATH=$HOME/myplugins firefox

Starting any WebKit based application now no longer starts pipelight – it is limited only to Firefox.

Starting Firefox from the command line gets tedious after a while, so I created a locally based launcher for Firefox as follows:

cd ~/.local/share/applications
cp /usr/share/applications/firefox.desktop .

Next give this local desktop file execute permissions:

chmod +x firefox.desktop

Edit this text based desktop file using your favourite text editor – for example:

gedit firefox.desktop

Search for lines beginning with “Exec=”
For example – Exec=firefox %u

Change this to look like sh -c "MOZ_PLUGIN_PATH=$HOME/myplugins firefox %u"

Change the other lines similarly, save and launch Nautilus

nautilus .

Unlock firefox from your current launcher and then drag and drop the new locally based firefox.desktop file

That’s it.

Thanks for the authors of pipelight for this MOZ_PLUGIN_PATH tip


Get every new post delivered to your Inbox.

Join 105 other followers