Getting LauncherFolders up and running on Ubuntu 16.04.4

LauncherFolders (http://unity-folders.exceptionfound.com , https://itsfoss.com/group-apps-unity-launcher-launcherfolders) is a great extension to the unity launcher, in being lightweight abd shipping a lot of bang when it only comes to set up containers organizing your apps. However, obviously the code has been crafted back in the Ubuntu 14.04 era, leaving open issues for installation on more modern Ubuntu releases.

First of all, the official ppa (ppa:asukhovatkin/unity-launcher-folders) will no longer register successfully for security reasons such that one has to ressort back to the original deb installation medium (http://unity-folders.exceptionfound.com/unity-launcher-folders_1.0.3_all.deb).

The next fixes, run the app from the console to see the error messages, are documented in (https://askubuntu.com/questions/934916/ubuntu-launcher-folder-not-working) and (https://ubuntuforums.org/showthread.php?t=2325175 , comment #5):

sudo apt install python-gobject python-pil
gksudo gedit /usr/lib/python2.7/dist-packages/unity_launcher_folders/generateIcon.py
#17 change: "import Image" -> "from PIL import Image"

Getting this far, the app itself comes up and is operable as expected. Pity is but, that the folder pane does not show up when clicking the generated launcher item (though it worked in the preview mode). The launcher item itself is nothing more than some .desktop file in (~/.local/share/applications/Browser.desktop). On inspection, we have this exec entry:

Exec=/usr/share/unity-launcher-folders/drawer.py "/home/anyone/.appDrawerConfig/Browser.pickle"

Giving it another console output run reveals another missing python dependency:

anyone@lexa:~$ /usr/share/unity-launcher-folders/drawer.py "/home/anyone/.appDrawerConfig/Browser.pickle" %f
/usr/share/unity-launcher-folders/drawer.py:18: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
  from gi.repository import Gtk, Gdk, GdkPixbuf, Pango, Gio
Traceback (most recent call last):
  File "/usr/share/unity-launcher-folders/drawer.py", line 19, in <module>
    import os, sys, subprocess, pickle, re, cairo
ImportError: No module named cairo

Checking up:

anyone@lexa:~$ apt-cache policy python-cairo
python-cairo:
  Installed: (none)
  Candidate: 1.8.8-2
  Version table:
     1.8.8-2 500
        500 http://de.archive.ubuntu.com/ubuntu xenial/main amd64 Packages

Installing:

anyone@lexa:~$ sudo apt install python-cairo
...
The following NEW packages will be installed:
  python-cairo
...
Setting up python-cairo (1.8.8-2) ...

Checking back:

anyone@lexa:~$ apt-cache policy python-cairo
python-cairo:
  Installed: 1.8.8-2
  Candidate: 1.8.8-2
  Version table:
 *** 1.8.8-2 500
        500 http://de.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
        100 /var/lib/dpkg/status

Working now. That’s it for Xenial update 4 so far (at least in my env).

Also note the open bugs section on the dev’s site (http://unity-folders.exceptionfound.com/blog), the drawer name spaces issue in partiular.

Jep, there is another thing. If you go to add apps that have a virtual icon resource defined in their .desktop file “Icon=” entry, like performed in syntevo’s SmartGit or SmartSynchronize in (/opt/smartgit/bin/add-menuitem.sh), the drop action will result in an error as follows:

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/unity_launcher_folders/__init__.py", line 937, in on_drag_data_received
    self.model.set_value(row, COLUMN_PIXBUF, self.getPixBuffFromFile(appIcon, self.iconSize))
  File "/usr/lib/python2.7/dist-packages/unity_launcher_folders/__init__.py", line 1020, in getPixBuffFromFile
    pixbuf = GdkPixbuf.Pixbuf.new_from_file(newFileName)
TypeError: Argument 0 does not allow None as a value

The w/a is to replace the virtual icon resource by some actual file, (/opt/smartgit/bin/smartgit-48.png) for example.

Enjoy

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.