msk Patchset



Most of these patches appear in the Debian archive. I'm also hosting them here so folks from other distributions can use them. All of these should be safe no matter what OS you use.

The client requires Qt >= 4.3.0.

Changelog msk1 patchset (7 May 2012)

  • Added patches:
    - sidebar-crash-fix: prevent a crash when dragging sidebar items
The patchset
These are in the Debian package.
build-fixes.diff Don't compile portAudio output plugin on Linux.
And fix build on 64bit Fedora 13
gcc41.diff Fix compilation with gcc >= 4.1
reduce-linkage.diff Make sure the binaries only link to the libraries that they need
no-fingerprint-lib.diff The Linux client does not do fingerprinting, so don't build it. This reduces the client's package dependencies.
alsa-uses-qdebug.diff With a release build, the ALSA output plugin writes noisy messages to the log file. Only make it noisy in a debug build.
check-soundcard-errors.diff Don't segfault: make sure that the audio device is open before we write to it.
tray-icon-size.diff Use 22x22 icons for Linux system tray.
hide-scrobbledir-option.diff Hide the Scrobble Directories group in the options. It's irrelevant on Linux.
tray-volume.diff Control the volume by spinning the mouse wheel over the system tray icon.
set-locale.diff Correctly sets the language when there is no file. If you need to change the language after that, you can do so in Tools | Options | Account. Fixes Debian bug #432232.
set-firstrun-status.diff Don't re-run the setup dialog each time the program starts
build-kfreebsd.diff Non-Linux kernels can use the RtAudio plugin for OSS audio. This should let the client work on FreeBSD and Debian kfreebsd-*
qt45.diff Small style when using Qt >= 4.5
qt46.diff Fix some text/icon display issues with Qt >= 4.6
qt47.diff Fix warnings when compiling with Qt >= 4.7
hide-loved-radio.diff Hide loved radio menu item. It's no longer supported.
ipod-scrobble-fix.diff iPods were identified by a directory timestamp, but it changed each time the ipod was mounted. Instead identify a device by its FirewireGuid.
sidebar-crash-fix.diff Prevent a crash when dragging sidebar items.
gcc47.patch Fix compilation with gcc 4.7.
dirpaths.diff Fix up icon installation path for Linux packages. Only use this if building a Linux package.
icons.tar.gz Application icons from 16x16 to 128x128
trayicons22.tar.gz 22x22 icons to use with 02_tray-icon-size.diff
Unsupported patches for
These are not in the Debian archive because I don't want to turn the Debian package into a big ugly fork. Still, I like them and others might too. Note: I reserve the right to stop maintaining these the instant I get tired of them.
multi-sound.diff This lets the client switch between different audio output plugins. The patch uses alsa-playback for ALSA and RtAudio for OSS support. It makes it possible for third parties to write their own audio output plugins. Then again, this patch is rather hackish.
dbus.diff İsmail Dönmez and I wrote a D-Bus interface for the Linux client. Upstream might eventually apply this, but I'm leaving it out of the package since the interface may change significantly if/when upstream uses it.
tag-cloud.diff This brings back the tag cloud that was present in and that I greatly miss. I also added a handy slider so you can control the number of matches. Here's's explanation for why they got rid of it. I'm happy to see that something better will arrive eventually, but in the meantime I'd rather not lose the ability to search for artists or tags. :(
browser-select.diff Explicitly select which browser to use. Set it in Tools | Options | Connection.
no-cruft.diff A lot is compiled into the Linux client that is only used on Windows and Mac. This cleans that out. Upstream won't be applying this because it would be a maintenance nightmare for them. Frankly, I don't know why I still have this here.


Building and Running from Source

  1. Install some dev packages:
    - deb-based distros will need libqt4-dev >= 4.3.0, libasound2-dev, libgpod-dev, libmad0-dev
    (Also libfftw3-dev and libsamplerate0-dev if you don't apply no-fingerprint.diff.)
    - rpm-based distros: same, but I guess you folks have a different package naming scheme.
  2. Get lastfm-
  3. tar -xjf lastfm-
  4. cd
  5. Apply your patches
  6. qmake-qt4 -config release
  7. make
  8. Optional: cd i18n; lrelease-qt4 *.ts; cp *.qm ../bin/data/i18n; cd ..
  9. cd bin; ./


If you have problems, please contact me at jstamp at