summaryrefslogtreecommitdiff
path: root/audio
diff options
context:
space:
mode:
authorMario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>2003-03-03 16:46:40 +0000
committerMario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>2003-03-03 16:46:40 +0000
commit6fab1031e2f5b165ed723adbc9d160303d8baece (patch)
treef22835c1d378234f817e0277dfa99fd45e2a18ad /audio
parentUpdate lang/ruby-devel to 1.8.0-preview2. (diff)
New port juk version 1.0: JuK, a music manager and jukebox for KDE
Submitted by: Lauri Watts <lauri@kde.org> Reviewed by: kde (members), Scott Wheeler <wheeler@kde.org> (developer)
Notes
Notes: svn path=/head/; revision=76801
Diffstat (limited to 'audio')
-rw-r--r--audio/Makefile1
-rw-r--r--audio/juk/Makefile27
-rw-r--r--audio/juk/distinfo1
-rw-r--r--audio/juk/files/patch-juk::collectionlist.cpp13
-rw-r--r--audio/juk/files/patch-juk::genrelisteditorbase.ui38
-rw-r--r--audio/juk/files/patch-juk::juk.cpp19
-rw-r--r--audio/juk/files/patch-juk::juk.h11
-rw-r--r--audio/juk/files/patch-juk::jukui.rc11
-rw-r--r--audio/juk/files/patch-juk::playlist.cpp29
-rw-r--r--audio/juk/files/patch-juk::playlistbox.cpp20
-rw-r--r--audio/juk/files/patch-juk::playlistsplitter.cpp69
-rw-r--r--audio/juk/files/patch-juk::playlistsplitter.h22
-rw-r--r--audio/juk/files/patch-juk::slideraction.cpp11
-rw-r--r--audio/juk/files/patch-juk::tageditor.cpp80
-rw-r--r--audio/juk/pkg-descr19
-rw-r--r--audio/juk/pkg-plist44
16 files changed, 415 insertions, 0 deletions
diff --git a/audio/Makefile b/audio/Makefile
index 3cfbba4587a5..3ee389923ab7 100644
--- a/audio/Makefile
+++ b/audio/Makefile
@@ -112,6 +112,7 @@
SUBDIR += id3ren
SUBDIR += id3tool
SUBDIR += id3v2
+ SUBDIR += juk
SUBDIR += juke
SUBDIR += ksmp3play
SUBDIR += ladspa
diff --git a/audio/juk/Makefile b/audio/juk/Makefile
new file mode 100644
index 000000000000..931d006056b1
--- /dev/null
+++ b/audio/juk/Makefile
@@ -0,0 +1,27 @@
+# New ports collection makefile for: JuK
+# Date created: Saturday 7 December 2002
+# Whom: Lauri Watts <lauri@kde.org>
+#
+# $FreeBSD$
+#
+
+PORTNAME= juk
+PORTVERSION= 1.0
+CATEGORIES= audio kde
+MASTER_SITES= http://www.slackorama.net/oss/juk/
+DISTNAME= ${PORTNAME}-${PORTVERSION}-1
+
+MAINTAINER= kde@FreeBSD.org
+COMMENT= JuK, a music manager and jukebox for KDE
+
+LIB_DEPENDS= id3-3.8.2:${PORTSDIR}/audio/id3lib
+RUN_DEPENDS= ${LOCALBASE}/lib/kde3/kfile_mp3.so:${PORTSDIR}/multimedia/kdemultimedia3 \
+ ${LOCALBASE}/lib/kde3/kfile_ogg.so:${PORTSDIR}/multimedia/kdemultimedia3
+
+USE_KDELIBS_VER=3
+USE_GMAKE= yes
+GNU_CONFIGURE= yes
+CONFIGURE_ARGS= --program-transform-name=''
+WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}
+
+.include <bsd.port.mk>
diff --git a/audio/juk/distinfo b/audio/juk/distinfo
new file mode 100644
index 000000000000..6a25692ed2b9
--- /dev/null
+++ b/audio/juk/distinfo
@@ -0,0 +1 @@
+MD5 (juk-1.0-1.tar.gz) = 52373efb9db08946437ee2c5ec54a95a
diff --git a/audio/juk/files/patch-juk::collectionlist.cpp b/audio/juk/files/patch-juk::collectionlist.cpp
new file mode 100644
index 000000000000..b466e773d7b2
--- /dev/null
+++ b/audio/juk/files/patch-juk::collectionlist.cpp
@@ -0,0 +1,13 @@
+--- juk/collectionlist.cpp.orig Sat Feb 15 08:36:32 2003
++++ juk/collectionlist.cpp Mon Mar 3 12:24:34 2003
+@@ -131,8 +131,8 @@
+ {
+ if(e->source() == this)
+ return;
+-
+-
++ else
++ decode(e);
+ }
+
+ void CollectionList::contentsDragMoveEvent(QDragMoveEvent *e)
diff --git a/audio/juk/files/patch-juk::genrelisteditorbase.ui b/audio/juk/files/patch-juk::genrelisteditorbase.ui
new file mode 100644
index 000000000000..1d9af928fac5
--- /dev/null
+++ b/audio/juk/files/patch-juk::genrelisteditorbase.ui
@@ -0,0 +1,38 @@
+--- juk/genrelisteditorbase.ui.orig Mon Dec 9 12:36:24 2002
++++ juk/genrelisteditorbase.ui Mon Mar 3 12:24:34 2003
+@@ -159,7 +159,7 @@
+ <cstring>genreNameLabel</cstring>
+ </property>
+ <property name="text">
+- <string>Name</string>
++ <string>Name:</string>
+ </property>
+ </widget>
+ <widget class="KLineEdit">
+@@ -172,7 +172,7 @@
+ <cstring>ID3v1Label</cstring>
+ </property>
+ <property name="text">
+- <string>ID3v1 Genre Mapping</string>
++ <string>ID3v1 genre mapping:</string>
+ </property>
+ </widget>
+ <widget class="KComboBox">
+@@ -247,7 +247,7 @@
+ <cstring>okButton</cstring>
+ </property>
+ <property name="text">
+- <string>OK</string>
++ <string>&amp;OK</string>
+ </property>
+ <property name="autoDefault">
+ <bool>true</bool>
+@@ -261,7 +261,7 @@
+ <cstring>cancelButton</cstring>
+ </property>
+ <property name="text">
+- <string>Cancel</string>
++ <string>&amp;Cancel</string>
+ </property>
+ </widget>
+ </hbox>
diff --git a/audio/juk/files/patch-juk::juk.cpp b/audio/juk/files/patch-juk::juk.cpp
new file mode 100644
index 000000000000..602f5826224c
--- /dev/null
+++ b/audio/juk/files/patch-juk::juk.cpp
@@ -0,0 +1,19 @@
+--- juk/juk.cpp.orig Tue Feb 18 05:29:20 2003
++++ juk/juk.cpp Mon Mar 3 12:24:34 2003
+@@ -52,6 +52,7 @@
+ readSettings();
+ setupLayout();
+ setupActions();
++ playlistChanged();
+ readConfig();
+ setupPlayer();
+ setupSystemTray();
+@@ -84,8 +85,6 @@
+
+ connect(splitter, SIGNAL(selectedPlaylistCountChanged(int)), statusLabel, SLOT(setPlaylistCount(int)));
+ connect(statusLabel, SIGNAL(jumpButtonClicked()), splitter, SLOT(selectPlaying()));
+-
+- updatePlaylistInfo();
+
+ splitter->setFocus();
+
diff --git a/audio/juk/files/patch-juk::juk.h b/audio/juk/files/patch-juk::juk.h
new file mode 100644
index 000000000000..1e4815ff380c
--- /dev/null
+++ b/audio/juk/files/patch-juk::juk.h
@@ -0,0 +1,11 @@
+--- juk/juk.h.orig Tue Feb 18 05:27:09 2003
++++ juk/juk.h Mon Mar 3 12:24:34 2003
+@@ -84,8 +84,6 @@
+ void clear();
+ void selectAll();
+
+-private slots:
+-
+ // player menu
+ void play();
+ void pause();
diff --git a/audio/juk/files/patch-juk::jukui.rc b/audio/juk/files/patch-juk::jukui.rc
new file mode 100644
index 000000000000..82d013635466
--- /dev/null
+++ b/audio/juk/files/patch-juk::jukui.rc
@@ -0,0 +1,11 @@
+--- juk/jukui.rc.orig Mon Feb 17 08:36:00 2003
++++ juk/jukui.rc Mon Mar 3 12:24:34 2003
+@@ -15,7 +15,7 @@
+ <Separator/>
+
+ <Action name="file_save"/>
+- <Action name="file_saveas"/>
++ <Action name="file_save_as"/>
+
+ <Separator/>
+
diff --git a/audio/juk/files/patch-juk::playlist.cpp b/audio/juk/files/patch-juk::playlist.cpp
new file mode 100644
index 000000000000..6ca3906bf66d
--- /dev/null
+++ b/audio/juk/files/patch-juk::playlist.cpp
@@ -0,0 +1,29 @@
+--- juk/playlist.cpp.orig Mon Feb 17 09:50:48 2003
++++ juk/playlist.cpp Mon Mar 3 12:24:34 2003
+@@ -215,7 +215,7 @@
+ delete it.current();
+ }
+ else
+- KMessageBox::sorry(this, i18n("Could not save delete ") + it.current()->fileName() + ".");
++ KMessageBox::sorry(this, i18n("Could not delete ") + it.current()->fileName() + ".");
+ }
+
+ }
+@@ -483,7 +483,7 @@
+
+ _columnVisibleAction = new KActionMenu(i18n("Show Columns"), this, "showColumns");
+ headerMenu = _columnVisibleAction->popupMenu();
+- headerMenu->insertTitle(i18n("Show..."));
++ headerMenu->insertTitle(i18n("Show"));
+ headerMenu->setCheckable(true);
+
+ for(int i =0; i < header()->count(); ++i) {
+@@ -508,7 +508,7 @@
+
+ rmbMenu->insertSeparator();
+
+- rmbMenu->insertItem(SmallIcon("editdelete"), i18n("Remove from disk"), this, SLOT(removeSelectedItems()));
++ rmbMenu->insertItem(SmallIcon("editdelete"), i18n("Remove From Disk"), this, SLOT(removeSelectedItems()));
+
+ rmbMenu->insertSeparator();
+
diff --git a/audio/juk/files/patch-juk::playlistbox.cpp b/audio/juk/files/patch-juk::playlistbox.cpp
new file mode 100644
index 000000000000..909ad3847e81
--- /dev/null
+++ b/audio/juk/files/patch-juk::playlistbox.cpp
@@ -0,0 +1,20 @@
+--- juk/playlistbox.cpp.orig Mon Feb 17 04:03:17 2003
++++ juk/playlistbox.cpp Mon Mar 3 12:24:34 2003
+@@ -129,7 +129,7 @@
+
+ bool ok;
+
+- QString name = QInputDialog::getText(i18n("Rename..."), i18n("Please enter a name for this playlist:"),
++ QString name = QInputDialog::getText(i18n("Rename"), i18n("Please enter a name for this playlist:"),
+ QLineEdit::Normal, item->text(), &ok);
+ if(ok) {
+ item->setText(name);
+@@ -158,7 +158,7 @@
+
+ // If this text is changed, please also change it in PlaylistSplitter::createPlaylist().
+
+- QString name = QInputDialog::getText(i18n("New Playlist..."), i18n("Please enter a name for the new playlist:"),
++ QString name = QInputDialog::getText(i18n("New Playlist"), i18n("Please enter a name for the new playlist:"),
+ QLineEdit::Normal, splitter->uniquePlaylistName(item->text(), true), &ok);
+ if(ok) {
+ Playlist *p = splitter->createPlaylist(name);
diff --git a/audio/juk/files/patch-juk::playlistsplitter.cpp b/audio/juk/files/patch-juk::playlistsplitter.cpp
new file mode 100644
index 000000000000..5d74bf92a8a3
--- /dev/null
+++ b/audio/juk/files/patch-juk::playlistsplitter.cpp
@@ -0,0 +1,69 @@
+--- juk/playlistsplitter.cpp.orig Mon Feb 17 09:46:30 2003
++++ juk/playlistsplitter.cpp Mon Mar 3 12:24:34 2003
+@@ -443,7 +443,7 @@
+
+ // check to see if we've alredy loaded this item before continuing
+
+- if(!playlistFiles.insert(p->fileName()))
++ if(p->fileName().isEmpty() || !playlistFiles.insert(p->fileName()))
+ setupPlaylist(p);
+ else
+ delete p;
+@@ -458,19 +458,19 @@
+
+ if(collection) {
+ // the last column is just a filler
+- _visibleColumns.resize(collection->columns() - 1, true);
++ m_visibleColumns.resize(collection->columns() - 1, true);
+ QValueList<int> l = config->readIntListEntry("VisibleColumns");
+
+ uint i = 0;
+ for(QValueList<int>::Iterator it = l.begin(); it != l.end(); ++it) {
+ if(! bool(*it)) {
+- _visibleColumns[i] = bool(*it);
++ m_visibleColumns[i] = bool(*it);
+ collection->hideColumn(i);
+ }
+
+- // while we're looping go ahead and populate _columnNames
++ // while we're looping go ahead and populate m_columnNames
+
+- _columnNames.append(collection->columnText(i));
++ m_columnNames.append(collection->columnText(i));
+
+ i++;
+ }
+@@ -513,8 +513,8 @@
+ config->writeEntry("DirectoryList", directoryList);
+
+ QValueList<int> l;
+- for(uint i = 0; i < _visibleColumns.size(); i++)
+- l.append(int(_visibleColumns[i]));
++ for(uint i = 0; i < m_visibleColumns.size(); i++)
++ l.append(int(m_visibleColumns[i]));
+
+ config->writeEntry("VisibleColumns", l);
+
+@@ -583,10 +583,10 @@
+ if(!p)
+ return;
+
+- for(uint i = 0; i < _visibleColumns.size(); i++) {
+- if(_visibleColumns[i] && ! p->isColumnVisible(i))
++ for(uint i = 0; i < m_visibleColumns.size(); i++) {
++ if(m_visibleColumns[i] && ! p->isColumnVisible(i))
+ p->showColumn(i);
+- else if(! _visibleColumns[i] && p->isColumnVisible(i))
++ else if(! m_visibleColumns[i] && p->isColumnVisible(i))
+ p->hideColumn(i);
+ }
+ }
+@@ -619,7 +619,7 @@
+
+ void PlaylistSplitter::slotToggleColumnVisible(int column)
+ {
+- _visibleColumns[column] = ! _visibleColumns[column];
++ m_visibleColumns[column] = ! m_visibleColumns[column];
+ if(visiblePlaylist())
+ setupColumns(visiblePlaylist());
+ }
diff --git a/audio/juk/files/patch-juk::playlistsplitter.h b/audio/juk/files/patch-juk::playlistsplitter.h
new file mode 100644
index 000000000000..5e415e7f323e
--- /dev/null
+++ b/audio/juk/files/patch-juk::playlistsplitter.h
@@ -0,0 +1,22 @@
+--- juk/playlistsplitter.h.orig Mon Feb 17 06:23:26 2003
++++ juk/playlistsplitter.h Mon Mar 3 12:24:34 2003
+@@ -144,7 +144,7 @@
+ */
+ void open(const QString &file);
+
+- QStringList columnNames() const { return _columnNames; }
++ QStringList columnNames() const { return m_columnNames; }
+
+ KActionMenu *columnVisibleAction() const { return collection->columnVisibleAction(); }
+
+@@ -300,8 +300,8 @@
+ QStringList directoryQueue;
+ QStringList directoryQueueRemove;
+
+- QValueVector<bool> _visibleColumns;
+- QStringList _columnNames;
++ QValueVector<bool> m_visibleColumns;
++ QStringList m_columnNames;
+
+ bool showEditor;
+ bool restore;
diff --git a/audio/juk/files/patch-juk::slideraction.cpp b/audio/juk/files/patch-juk::slideraction.cpp
new file mode 100644
index 000000000000..e922af7ff361
--- /dev/null
+++ b/audio/juk/files/patch-juk::slideraction.cpp
@@ -0,0 +1,11 @@
+--- juk/slideraction.cpp.orig Thu Feb 13 02:51:57 2003
++++ juk/slideraction.cpp Mon Mar 3 12:24:34 2003
+@@ -122,7 +122,7 @@
+
+ trackPositionSlider = new TrackPositionSlider(base, "trackPositionSlider");
+ trackPositionSlider->setMaxValue(1000);
+- QToolTip::add(trackPositionSlider, i18n("Track Position"));
++ QToolTip::add(trackPositionSlider, i18n("Track position"));
+ layout->addWidget(trackPositionSlider);
+
+ volumeSlider = new QSlider(base, "volumeSlider" );
diff --git a/audio/juk/files/patch-juk::tageditor.cpp b/audio/juk/files/patch-juk::tageditor.cpp
new file mode 100644
index 000000000000..c479f935a53b
--- /dev/null
+++ b/audio/juk/files/patch-juk::tageditor.cpp
@@ -0,0 +1,80 @@
+--- juk/tageditor.cpp.orig Sun Feb 16 06:07:29 2003
++++ juk/tageditor.cpp Mon Mar 3 12:24:34 2003
+@@ -315,17 +315,17 @@
+ { // just for organization
+ artistNameBox = new KComboBox(true, this, "artistNameBox");
+ artistNameBox->setCompletionMode(KGlobalSettings::CompletionAuto);
+- addItem(i18n("Artist Name"), artistNameBox, leftColumnLayout);
++ addItem(i18n("Artist name:"), artistNameBox, leftColumnLayout);
+
+ trackNameBox = new KLineEdit(this, "trackNameBox");
+- addItem(i18n("Track Name"), trackNameBox, leftColumnLayout);
++ addItem(i18n("Track name:"), trackNameBox, leftColumnLayout);
+
+ albumNameBox = new KComboBox(true, this, "albumNameBox");
+ albumNameBox->setCompletionMode(KGlobalSettings::CompletionAuto);
+- addItem(i18n("Album Name"), albumNameBox, leftColumnLayout);
++ addItem(i18n("Album name:"), albumNameBox, leftColumnLayout);
+
+ genreBox = new KComboBox(true, this, "genreBox");
+- addItem(i18n("Genre"), genreBox, leftColumnLayout);
++ addItem(i18n("Genre:"), genreBox, leftColumnLayout);
+
+ // this fills the space at the bottem of the left column
+ leftColumnLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding));
+@@ -334,7 +334,7 @@
+ // put stuff in the right column
+ //////////////////////////////////////////////////////////////////////////////
+ { // just for organization
+- rightColumnLayout->addWidget(new QLabel(i18n("File Name"), this));
++ rightColumnLayout->addWidget(new QLabel(i18n("File name:"), this));
+
+ fileNameBox = new KLineEdit(this, "fileNameBox");
+ rightColumnLayout->addWidget(fileNameBox);
+@@ -343,16 +343,16 @@
+ QHBoxLayout *trackRowLayout = new QHBoxLayout(rightColumnLayout, horizontalSpacing);
+
+ trackSpin = new KIntSpinBox(0, 255, 1, 0, 10, this, "trackSpin");
+- addItem("Track", trackSpin, trackRowLayout);
++ addItem(i18n("Track:"), trackSpin, trackRowLayout);
+
+ trackRowLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum));
+
+ yearSpin = new KIntSpinBox(0, 9999, 1, 0, 10, this, "yearSpin");
+- addItem(i18n("Year"), yearSpin, trackRowLayout);
++ addItem(i18n("Year:"), yearSpin, trackRowLayout);
+
+ trackRowLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum));
+
+- trackRowLayout->addWidget(new QLabel(i18n("Length"), this));
++ trackRowLayout->addWidget(new QLabel(i18n("Length:"), this));
+ lengthBox = new KLineEdit(this, "lengthBox");
+ lengthBox->setMaximumWidth(50);
+ lengthBox->setReadOnly(true);
+@@ -360,7 +360,7 @@
+
+ trackRowLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum));
+
+- trackRowLayout->addWidget(new QLabel(i18n("Bitrate"), this));
++ trackRowLayout->addWidget(new QLabel(i18n("Bitrate:"), this));
+ bitrateBox = new KLineEdit(this, "bitrateBox");
+ bitrateBox->setMaximumWidth(50);
+ bitrateBox->setReadOnly(true);
+@@ -369,7 +369,7 @@
+
+ commentBox = new KEdit(this, "commentBox");
+ commentBox->setTextFormat(Qt::PlainText);
+- addItem(i18n("Comment"), commentBox, rightColumnLayout);
++ addItem(i18n("Comment:"), commentBox, rightColumnLayout);
+ }
+
+ connect(artistNameBox, SIGNAL(textChanged(const QString&)), this, SIGNAL(changed()));
+@@ -463,7 +463,7 @@
+ if(!errorFiles.isEmpty())
+ KMessageBox::detailedSorry(this,
+ i18n("Could not save to specified file(s)."),
+- i18n("Could not write to:\n") + errorFiles.join("\n"));
++ i18n("Could Not Write to:\n") + errorFiles.join("\n"));
+ dataChanged = false;
+
+ KApplication::restoreOverrideCursor();
diff --git a/audio/juk/pkg-descr b/audio/juk/pkg-descr
new file mode 100644
index 000000000000..04a0001578bc
--- /dev/null
+++ b/audio/juk/pkg-descr
@@ -0,0 +1,19 @@
+JuK (pronounced jook) is a jukebox and music manager for the KDE
+desktop similar to jukebox software on other platforms such as
+iTunes(TM) or RealOne(TM). It also features:
+
+* Support for Ogg Vorbis and MP3 formats, tag editing support for
+ both formats (including ID3v2 for MP3 files), output to aRts or
+ GStreamer, multiple playlists, and lots of other groovy stuff
+
+* Integration into KDE that allows drag-and-drop and clipboard usage
+ with other KDE and X apps
+
+* Multitagging, or editing, a selection of multiple files at once
+ is also supported. Managing of your "collection" and multiple
+ playlists. Import and export to m3u playlists
+
+* Binary caching of audio meta-data and playlist information for
+ faster load times (starting with the second time you run JuK)
+
+WWW: http://www.slackorama.net/cgi-bin/content.pl?juk
diff --git a/audio/juk/pkg-plist b/audio/juk/pkg-plist
new file mode 100644
index 000000000000..448059408f89
--- /dev/null
+++ b/audio/juk/pkg-plist
@@ -0,0 +1,44 @@
+bin/juk
+share/applnk/Multimedia/juk.desktop
+share/apps/juk/icons/hicolor/16x16/actions/dequeue.png
+share/apps/juk/icons/hicolor/16x16/actions/enqueue.png
+share/apps/juk/icons/hicolor/16x16/actions/tag.png
+share/apps/juk/icons/hicolor/22x22/actions/dequeue.png
+share/apps/juk/icons/hicolor/22x22/actions/enqueue.png
+share/apps/juk/icons/hicolor/22x22/actions/tag.png
+share/apps/juk/icons/hicolor/32x32/actions/dequeue.png
+share/apps/juk/icons/hicolor/32x32/actions/enqueue.png
+share/apps/juk/icons/hicolor/32x32/actions/tag.png
+share/apps/juk/id3v1.genreml
+share/apps/juk/jukui.rc
+share/apps/juk/pics/playing.png
+share/doc/HTML/en/juk/common
+share/doc/HTML/en/juk/index.cache.bz2
+share/doc/HTML/en/juk/index.docbook
+share/icons/hicolor/16x16/apps/juk.png
+share/icons/hicolor/32x32/apps/juk.png
+share/icons/hicolor/48x48/apps/juk.png
+@unexec rmdir %D/share/icons/hicolor/48x48/apps 2>/dev/null || true
+@unexec rmdir %D/share/icons/hicolor/48x48 2>/dev/null || true
+@unexec rmdir %D/share/icons/hicolor/32x32/apps 2>/dev/null || true
+@unexec rmdir %D/share/icons/hicolor/32x32 2>/dev/null || true
+@unexec rmdir %D/share/icons/hicolor/16x16/apps 2>/dev/null || true
+@unexec rmdir %D/share/icons/hicolor/16x16 2>/dev/null || true
+@unexec rmdir %D/share/icons/hicolor 2>/dev/null || true
+@unexec rmdir %D/share/icons 2>/dev/null || true
+@dirrm share/doc/HTML/en/juk
+@unexec rmdir %D/share/doc/HTML/en 2>/dev/null || true
+@unexec rmdir %D/share/doc/HTML 2>/dev/null || true
+@dirrm share/apps/juk/pics
+@dirrm share/apps/juk/icons/hicolor/32x32/actions
+@dirrm share/apps/juk/icons/hicolor/32x32
+@dirrm share/apps/juk/icons/hicolor/22x22/actions
+@dirrm share/apps/juk/icons/hicolor/22x22
+@dirrm share/apps/juk/icons/hicolor/16x16/actions
+@dirrm share/apps/juk/icons/hicolor/16x16
+@dirrm share/apps/juk/icons/hicolor
+@dirrm share/apps/juk/icons
+@dirrm share/apps/juk
+@unexec rmdir %D/share/apps 2>/dev/null || true
+@unexec rmdir %D/share/applnk/Multimedia 2>/dev/null || true
+@unexec rmdir %D/share/applnk 2>/dev/null || true