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:
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
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
anyone@lexa:~$ sudo apt install python-cairo ... The following NEW packages will be installed: python-cairo ... Setting up python-cairo (1.8.8-2) ...
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.