Accepting request 340896 from home:XRevan86

OBS-URL: https://build.opensuse.org/request/show/340896
OBS-URL: https://build.opensuse.org/package/show/X11:windowmanagers/icewm?expand=0&rev=45
This commit is contained in:
Tomáš Chvátal
2015-10-26 06:52:33 +00:00
committed by Git OBS Bridge
parent 8af8c6b5c8
commit 5b4814186e
6 changed files with 512 additions and 120 deletions

View File

@@ -0,0 +1,13 @@
--- a/src/fdomenu.cc
+++ b/src/fdomenu.cc
@@ -378,7 +378,9 @@ int main(int argc, const char **argv)
opt_g_free(pmdir);
}
// user's stuff might replace the system links
- proc_dir(usershare);
+ gchar *usershare_full = g_strjoin(NULL, usershare, "/applications", NULL);
+ proc_dir(usershare_full);
+ opt_g_free(usershare_full);
dump_menu();

303
icewm-mate.patch Normal file
View File

@@ -0,0 +1,303 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -53,5 +53,5 @@ add_subdirectory(po)
add_subdirectory(lib)
add_subdirectory(doc)
+install(FILES icewm-set-matewm DESTINATION ${BINDIR} PERMISSIONS WORLD_EXECUTE OWNER_EXECUTE GROUP_EXECUTE WORLD_READ OWNER_READ OWNER_WRITE GROUP_READ)
install(FILES icewm-set-gnomewm DESTINATION ${BINDIR} PERMISSIONS WORLD_EXECUTE OWNER_EXECUTE GROUP_EXECUTE WORLD_READ OWNER_READ OWNER_WRITE GROUP_READ)
-
--- a/configure.ac
+++ b/configure.ac
@@ -344,6 +344,18 @@ fi
AC_SUBST([GNOME1_CFLAGS])
AC_SUBST([GNOME1_LIBS])
+AC_ARG_ENABLE([menus-mate],
+ AC_HELP_STRING([--disable-menus-mate],[Disable display of MATE menus.]))
+if test x$enable_menus_mate != xno; then
+ PKG_CHECK_MODULES([GNOME2],[mate-desktop-2.0],[
+ enable_menus_gnome2=no
+ AC_DEFINE([CONFIG_MATE_MENUS],[1],[Define to make IceWM more MATE-friendly])
+ AC_DEFINE([CONFIG_GNOME_MENUS],[1],[Define to make IceWM more GNOME-friendly])
+ BUILD_MENU_MATE=yes
+ APPLICATIONS="${APPLICATIONS} icewm-menu-mate"],[
+ AC_MSG_WARN([MATE menus not supported.])])
+fi
+
AC_ARG_ENABLE([menus-gnome2],
AC_HELP_STRING([--disable-menus-gnome2],[Disable display of GNOME 2 menus.]))
if test x$enable_menus_gnome2 != xno; then
@@ -383,6 +395,7 @@ AM_CONDITIONAL([BUILD_HELP],[test x$BUIL
AM_CONDITIONAL([BUILD_SOUND],[test x$BUILD_SOUND = xyes])
AM_CONDITIONAL([BUILD_MENU_GNOME1],[test x$BUILD_MENU_GNOME1 = xyes])
AM_CONDITIONAL([BUILD_MENU_GNOME2],[test x$BUILD_MENU_GNOME2 = xyes])
+AM_CONDITIONAL([BUILD_MENU_MATE],[test x$BUILD_MENU_MATE = xyes])
AM_CONDITIONAL([BUILD_MENU_FDO],[test x$BUILD_MENU_FDO = xyes])
test "x$prefix" = xNONE && prefix="$ac_default_prefix"
--- a/icewm.desktop
+++ b/icewm.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Type=Application
+Name=IceWM
+Exec=icewm
+NoDisplay=true
+X-MATE-WMName=IceWM
+X-MATE-Autostart-Phase=WindowManager
+X-MATE-Provides=windowmanager
+X-MATE-Autostart-Notify=true
+X-GNOME-WMName=IceWM
+X-GNOME-Autostart-Phase=WindowManager
+X-GNOME-Provides=windowmanager
+X-GNOME-Autostart-Notify=true
--- a/icewm-set-matewm
+++ b/icewm-set-matewm
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+echo -n "Previous window manager: "
+gsettings get org.mate.session.required-components windowmanager
+
+gsettings set org.mate.session.required-components windowmanager "'icewm'"
+
+echo -n "New window manager: "
+gsettings get org.mate.session.required-components windowmanager
--- a/Makefile.am
+++ b/Makefile.am
@@ -36,8 +36,12 @@ dist_noinst_SCRIPTS = \
autogen.sh
dist_bin_SCRIPTS = \
+ icewm-set-matewm \
icewm-set-gnomewm
+desktopdir = $(datadir)/applications
+desktop_DATA = icewm.desktop
+
ChangeLog:
( \
echo -e "# created with git log -n 200 --abbrev-commit --decorate --stat=76 -M -C|fmt -sct -w80\n" ; \
--- a/src/gnome2.cc
+++ b/src/gnome2.cc
@@ -22,12 +22,17 @@
#include <dirent.h>
#include <string.h>
-#include <gnome.h>
+#include "yarray.h"
+#ifdef CONFIG_MATE_MENUS
+#include <libmate-desktop/mate-desktop-item.h>
+
+char const * ApplicationName = "icewm-menu-mate";
+#else
#include <libgnome/gnome-desktop-item.h>
#include <libgnomevfs/gnome-vfs-init.h>
-#include "yarray.h"
char const * ApplicationName = "icewm-menu-gnome2";
+#endif
class GnomeMenu;
@@ -58,14 +63,16 @@ void dumpMenu(GnomeMenu *menu) {
GnomeMenuItem *item = menu->items.getItem(i);
if (item->dentry && !item->submenu) {
- printf("prog \"%s\" %s icewm-menu-gnome2 --open \"%s\"\n",
+ printf("prog \"%s\" %s %s --open \"%s\"\n",
item->title,
item->icon ? item->icon : "-",
+ ApplicationName,
item->dentry);
} else if (item->dentry && item->submenu) {
- printf("menuprog \"%s\" %s icewm-menu-gnome2 --list \"%s\"\n",
+ printf("menuprog \"%s\" %s %s --list \"%s\"\n",
item->title,
item->icon ? item->icon : "-",
+ ApplicationName,
(!strcmp(my_basename(item->dentry), ".directory") ?
g_dirname(item->dentry) : item->dentry));
}
@@ -101,16 +108,27 @@ void GnomeMenu::addEntry(const char *fPa
GnomeMenuItem *item = new GnomeMenuItem();
item->title = name;
+#ifdef CONFIG_MATE_MENUS
+ MateDesktopItem *ditem =
+ mate_desktop_item_new_from_file(npath,
+ (MateDesktopItemLoadFlags)0,
+#else
GnomeDesktopItem *ditem =
gnome_desktop_item_new_from_file(npath,
(GnomeDesktopItemLoadFlags)0,
+#endif
NULL);
struct stat sb;
const char *type;
bool isDir = (!stat(npath, &sb) && S_ISDIR(sb.st_mode));
+#ifdef CONFIG_MATE_MENUS
+ type = mate_desktop_item_get_string(ditem,
+ MATE_DESKTOP_ITEM_TYPE);
+#else
type = gnome_desktop_item_get_string(ditem,
GNOME_DESKTOP_ITEM_TYPE);
+#endif
if (!isDir && type && strstr(type, "Directory")) {
isDir = 1;
}
@@ -119,7 +137,9 @@ void GnomeMenu::addEntry(const char *fPa
GnomeMenu *submenu = new GnomeMenu();
item->title = g_path_get_basename(npath);
- item->icon = gnome_pixmap_file("gnome-folder.png");
+ item->icon = gtk_icon_info_get_filename(gtk_icon_theme_lookup_icon(
+ gtk_icon_theme_get_default(), "folder",
+ 16, GTK_ICON_LOOKUP_NO_SVG));
item->submenu = submenu;
char *epath = new char[nlen + sizeof("/.directory")];
@@ -130,19 +150,35 @@ void GnomeMenu::addEntry(const char *fPa
strcpy(epath, npath);
}
+#ifdef CONFIG_MATE_MENUS
+ ditem = mate_desktop_item_new_from_file(epath,
+ (MateDesktopItemLoadFlags)0,
+#else
ditem = gnome_desktop_item_new_from_file(epath,
(GnomeDesktopItemLoadFlags)0,
+#endif
NULL);
if (ditem) {
+#ifdef CONFIG_MATE_MENUS
+ item->title = mate_desktop_item_get_localestring(ditem, MATE_DESKTOP_ITEM_NAME); //LXP FX
+ item->icon = mate_desktop_item_get_string(ditem, MATE_DESKTOP_ITEM_ICON);
+#else
item->title = gnome_desktop_item_get_localestring(ditem, GNOME_DESKTOP_ITEM_NAME); //LXP FX
item->icon = gnome_desktop_item_get_string(ditem, GNOME_DESKTOP_ITEM_ICON);
+#endif
}
item->dentry = epath;
} else {
if (type && !strstr(type, "Directory")) {
+#ifdef CONFIG_MATE_MENUS
+ item->title = mate_desktop_item_get_localestring(ditem, MATE_DESKTOP_ITEM_NAME);
+ if (mate_desktop_item_get_string(ditem, MATE_DESKTOP_ITEM_ICON))
+ item->icon = mate_desktop_item_get_string(ditem, MATE_DESKTOP_ITEM_ICON);
+#else
item->title = gnome_desktop_item_get_localestring(ditem, GNOME_DESKTOP_ITEM_NAME);
if (gnome_desktop_item_get_string(ditem, GNOME_DESKTOP_ITEM_ICON))
item->icon = gnome_desktop_item_get_string(ditem, GNOME_DESKTOP_ITEM_ICON);
+#endif
item->dentry = npath;
}
}
@@ -280,13 +316,24 @@ void GnomeMenu::populateMenu(const char
char fullpath[256];
strcpy(fullpath, dirname);
strcat(fullpath, file->d_name);
+#ifdef CONFIG_MATE_MENUS
+ MateDesktopItem *ditem =
+ mate_desktop_item_new_from_file(fullpath,
+ (MateDesktopItemLoadFlags)0,
+#else
GnomeDesktopItem *ditem =
gnome_desktop_item_new_from_file(fullpath,
(GnomeDesktopItemLoadFlags)0,
+#endif
NULL);
const char *categories =
+#ifdef CONFIG_MATE_MENUS
+ mate_desktop_item_get_string(ditem,
+ MATE_DESKTOP_ITEM_CATEGORIES);
+#else
gnome_desktop_item_get_string(ditem,
GNOME_DESKTOP_ITEM_CATEGORIES);
+#endif
if (categories && strstr(categories, category)) {
if (*file->d_name != '.') {
@@ -323,9 +370,15 @@ int runFile(const char *dentry_path) {
char arg[32];
int i;
+#ifdef CONFIG_MATE_MENUS
+ MateDesktopItem *ditem =
+ mate_desktop_item_new_from_file(dentry_path,
+ (MateDesktopItemLoadFlags)0,
+#else
GnomeDesktopItem *ditem =
gnome_desktop_item_new_from_file(dentry_path,
(GnomeDesktopItemLoadFlags)0,
+#endif
NULL);
if (ditem == NULL) {
@@ -334,7 +387,11 @@ int runFile(const char *dentry_path) {
// FIXME: leads to segfault for some reason, so using execlp instead
// gnome_desktop_item_launch(ditem, NULL, 0, NULL);
+#ifdef CONFIG_MATE_MENUS
+ const char *app = mate_desktop_item_get_string(ditem, MATE_DESKTOP_ITEM_EXEC);
+#else
const char *app = gnome_desktop_item_get_string(ditem, GNOME_DESKTOP_ITEM_EXEC);
+#endif
if(!app)
return 1;
@@ -351,7 +408,10 @@ int runFile(const char *dentry_path) {
int main(int argc, char **argv) {
+ gtk_init(&argc, &argv);
+#ifndef CONFIG_MATE_MENUS
gnome_vfs_init();
+#endif
for (char ** arg = argv + 1; arg < argv + argc; ++arg) {
if (**arg == '-') {
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -14,6 +14,7 @@ EXTRA_PROGRAMS = \
icesound \
icewm-menu-gnome1 \
icewm-menu-gnome2 \
+ icewm-menu-mate \
icewm-menu-fdo \
testarray \
testlocale \
@@ -75,6 +76,10 @@ if BUILD_MENU_GNOME2
bin_PROGRAMS += icewm-menu-gnome2
endif
+if BUILD_MENU_MATE
+bin_PROGRAMS += icewm-menu-mate
+endif
+
if BUILD_MENU_FDO
bin_PROGRAMS += icewm-menu-fdo
endif
@@ -373,6 +378,20 @@ icewm_menu_gnome1_SOURCES = \
ycmdline.h
icewm_menu_gnome1_LDADD = libice.la $(GNOME1_LIBS) $(CORE_LIBS)
+icewm_menu_mate_SOURCES = \
+ intl.h \
+ debug.h \
+ sysdep.h \
+ base.h \
+ themable.h \
+ default.h \
+ ylib.h \
+ gnome2.cc \
+ ascii.h \
+ ycmdline.cc \
+ ycmdline.h
+icewm_menu_mate_LDADD = libice.la $(GNOME2_LIBS) $(CORE_LIBS)
+
icewm_menu_gnome2_SOURCES = \
intl.h \
debug.h \

View File

@@ -19,8 +19,17 @@ a file generated by ./src/genpref. To edit the patch:
Index: src/preferences
===================================================================
--- src/preferences.orig
+++ src/preferences
--- a/src/preferences
+++ b/src/preferences
@@ -530,7 +530,7 @@
# NetWorkAreaBehaviour=0 # [0-2]
# Icon search path (colon separated)
-# IconPath=""
+IconPath="/usr/share/icons/Adwaita/16x16/apps:/usr/share/icons/hicolor/16x16/apps:/usr/share/pixmaps"
# Mailbox path (use $MAIL instead)
# MailBoxPath=""
@@ -545,7 +545,7 @@
# NewMailCommand=""
@@ -43,7 +52,7 @@ Index: src/preferences
# Command to run on CPU status
# CPUStatusCommand="xterm -name top -title Process\ Status -e top"
@@ -1328,19 +1328,19 @@ WorkspaceNames=" 1 ", " 2 ", " 3 ", " 4
@@ -1328,19 +1328,19 @@
#
# Display desktop background centered and not tiled

View File

@@ -0,0 +1,11 @@
--- a/lib/toolbar.in
+++ b/lib/toolbar.in
@@ -4,6 +4,6 @@
# since modifications to this file will be discarded when you
# (re)install icewm.
#
-prog xterm /usr/share/icons/gnome/16x16/apps/terminal.png xterm
-prog "Web browser" /usr/share/icons/gnome/16x16/apps/web-browser.png xdg-open about:blank
+prog xterm utilities-terminal xterm
+prog "Web browser" web-browser xdg-open about:blank

View File

@@ -1,3 +1,17 @@
-------------------------------------------------------------------
Sun Oct 25 21:08:03 UTC 2015 - sor.alexei@meowr.ru
- Add icewm-fix-local-search.patch: make icewm-menu-fdo not to
search through whole ~/.local/share/ as it can be unexpectedly big.
- Add icewm-toolbar-icons-generic.patch: don't specify paths in
toolbar icons.
- Require adwaita-icon-theme instead of gnome-icon-theme.
- Append icon search paths to icewm-preferences.patch including
Adwaita theme.
- Add basic MATE support via icewm-mate.patch and icewm-mate
subpackage.
- Fix build under openSUSE 13.1.
-------------------------------------------------------------------
Sun Oct 25 20:49:42 UTC 2015 - tchvatal@suse.com

View File

@@ -17,8 +17,12 @@
%global lites icewm icewmhint icewmbg icesh icewm-session
# default to gnome support, overriden in ring1
%bcond_without gnome
# Default to mate support, overriden in ring1.
%if 0%{?suse_version} >= 1320 || (0%{?suse_version} == 1315 && 0%{?is_opensuse})
%bcond_without mate
%else
%bcond_with mate
%endif
Name: icewm
Version: 1.3.11
Release: 0
@@ -26,16 +30,22 @@ Summary: Window Manager with a Taskbar
License: LGPL-2.1+
Group: System/GUI/Other
Url: http://www.icewm.org/
Source0: https://github.com/bbidulock/%{name}/archive/%{version}.tar.gz
Source1: %{name}.desktop
Source0: https://github.com/bbidulock/icewm/archive/%{version}.tar.gz
Source1: icewm.desktop
# PATCH-FIX-UPSTREAM icewm-fix-local-search.patch sor.alexei@meowr.ru -- Make icewm-menu-fdo not to search through whole ~/.local/share/.
Patch0: icewm-fix-local-search.patch
# PATCH-FIX-OPENSUSE icewm-toolbar-icons-generic.patch sor.alexei@meowr.ru -- Don't specify paths in toolbar icons.
Patch1: icewm-toolbar-icons-generic.patch
# PATCH-FIX-OPENSUSE icewm-mate.patch sor.alexei@meowr.ru -- Add MATE Menus support.
Patch2: icewm-mate.patch
Patch99: icewm-preferences.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: libtool
BuildRequires: pkgconfig
# Needed for documentation
# Needed for documentation.
BuildRequires: pkg-config
BuildRequires: sgmltool
BuildRequires: update-alternatives
BuildRequires: update-desktop-files
@@ -55,39 +65,38 @@ Requires: desktop-data
Requires: icewm-bin
Requires: xdg-menu
Requires: xterm
# if you have the choice, prefer the big one
# If you have the choice, prefer the big one.
Recommends: icewm-default
Provides: windowmanager
# We use fdo tool to generate menu so no need for gnome subpkg
Provides: icewm-gnome = %{version}
Obsoletes: icewm-gnome < %{version}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if %{with mate}
BuildRequires: pkgconfig(mate-desktop-2.0)
%endif
%description
A window manager for the X Window System that can emulate the look of
Windows '95, OS/2 Warp 3, OS/2 Warp 4, and Motif and tries to take the
best features from those systems. IceWM features multiple workspaces,
opaque move and resize, a taskbar, a window list, mailbox status, and a
digital clock. It is fast and small.
A window manager for the X Window System that can emulate the look
of Windows '95, OS/2 Warp 3, OS/2 Warp 4, and Motif and tries to
take the best features from those systems. IceWM features multiple
workspaces, opaque move and resize, a taskbar, a window list,
mailbox status, and a digital clock. It is fast and small.
%package default
Summary: Window Manager with a Taskbar--Default Version
Summary: Window Manager with a Taskbar -- Default Version
Group: System/GUI/Other
Requires: gnome-icon-theme
Requires: adwaita-icon-theme
Requires: icewm
Requires: update-alternatives
Recommends: icewm-lang
Provides: icewm-bin
%description default
A window manager for the X Window System that can emulate the look of
Windows '95, OS/2 Warp 3, OS/2 Warp 4, and Motif and tries to take the
best features from those systems. IceWM features multiple workspaces,
opaque move and resize, a taskbar, a window list, mailbox status, and a
digital clock. It is fast and small.
A window manager for the X Window System that can emulate the look
of Windows '95, OS/2 Warp 3, OS/2 Warp 4, and Motif and tries to
take the best features from those systems. IceWM features multiple
workspaces, opaque move and resize, a taskbar, a window list,
mailbox status, and a digital clock. It is fast and small.
%package lite
Summary: Window Manager with a Taskbar -- lite version
Summary: Window Manager with a Taskbar -- Lite Version
Group: System/GUI/Other
Requires: icewm
Requires: update-alternatives
@@ -95,128 +104,158 @@ Recommends: icewm-lang
Provides: icewm-bin
%description lite
A window manager for the X Window System that can emulate the look of
Windows 95, OS/2 Warp 3, OS/2 Warp 4, and Motif and tries to take the
best features from those systems. IceWM features multiple workspaces,
opaque move and resize, a taskbar, a window list, mailbox status, and a
digital clock. It is fast and small.
A window manager for the X Window System that can emulate the look
of Windows '95, OS/2 Warp 3, OS/2 Warp 4, and Motif and tries to
take the best features from those systems. IceWM features multiple
workspaces, opaque move and resize, a taskbar, a window list,
mailbox status, and a digital clock. It is fast and small.
%package mate
Summary: Windowmanager with Taskbar -- MATE Version
Group: System/GUI/Other
Requires: icewm-default
Provides: icewm-gnome = %{version}
Obsoletes: icewm-gnome < %{version}
%description mate
A window manager for the X Window System that can emulate the look
of Windows '95, OS/2 Warp 3, OS/2 Warp 4, and Motif and tries to
take the best features from those systems. IceWM features multiple
workspaces, opaque move and resize, a taskbar, a window list,
mailbox status, and a digital clock. It is fast and small.
This package adds MATE menu support to IceWM.
%lang_package
%prep
%setup -q
# Do not require needlessly new gettext
sed -i \
-e 's:0.19.5:0.19.1:g' \
configure.ac
%patch0 -p1
%patch1 -p1
%patch2 -p1
# Do not require needlessly new gettext.
sed -i 's/0.19.5/0.18.3/g' configure.ac
%build
autoreconf -fvi
autoreconf -fi
# Build the Lite version
%configure \
--disable-silent-rules \
--with-cfgdir=%{_sysconfdir}/icewm \
--enable-i18n \
--disable-nls \
--disable-guievents \
--disable-winmenu \
--without-icesound \
--enable-lite \
--enable-taskbar \
--disable-menus-gnome2
--disable-silent-rules \
--with-cfgdir=%{_sysconfdir}/icewm \
--enable-i18n \
--disable-nls \
--disable-guievents \
--disable-winmenu \
--without-icesound \
--enable-lite \
--enable-taskbar \
--disable-menus-fdo \
--disable-menus-mate
make %{?_smp_mflags}
# Grab the lite content
# Grab the lite content.
mkdir lite
for i in %{lites}; do
mv src/$i lite/$i-lite
for file in %{lites}; do
mv -f src/$file lite/$file-lite
done
make %{?_smp_mflags} clean
# Configure for full deployment
# Configure for full deployment.
%configure \
--docdir=%{_docdir}/%{name} \
--disable-silent-rules \
--with-cfgdir=%{_sysconfdir}/icewm \
--with-icesound=alsa \
--enable-i18n \
--enable-nls \
--enable-corefonts \
--enable-guievents \
--enable-antialiasing \
--enable-gradients \
--enable-shaped-decorations \
--enable-menus-fdo \
--disable-menus-gnome2
--docdir=%{_docdir}/%{name} \
--disable-silent-rules \
--with-cfgdir=%{_sysconfdir}/icewm \
--with-icesound=alsa \
--enable-i18n \
--enable-nls \
--enable-corefonts \
--enable-guievents \
--enable-antialiasing \
--enable-gradients \
--enable-shaped-decorations \
--enable-menus-fdo \
%if %{with mate}
--enable-menus-mate \
%endif
--enable-i18n
make %{?_smp_mflags}
# patch generated lib/preferences file
patch -p0 -i %{PATCH99}
# Patch generated lib/preferences file.
patch -p1 -i %{PATCH99}
%install
make DESTDIR=%{buildroot} install %{?_smp_mflags}
# First just remove gnome wm setter as we don't have gnome2 anyway
rm %{buildroot}%{_bindir}/icewm-set-gnomewm
mkdir -p %{buildroot}%{_sysconfdir}/icewm
%make_install
# First just remove GNOME WM setter as we don't have GNOME 2 anyway.
rm -f %{buildroot}%{_bindir}/icewm-set-gnomewm
mkdir -p %{buildroot}%{_sysconfdir}/icewm/
for cfgfile in keys menu preferences toolbar winoptions ; do
mv %{buildroot}%{_datadir}/icewm/$cfgfile \
%{buildroot}%{_sysconfdir}/icewm
mv -f %{buildroot}%{_datadir}/icewm/$cfgfile \
%{buildroot}%{_sysconfdir}/icewm/
done
%find_lang icewm
ln -s icewm.html %{buildroot}/%{_docdir}/icewm/index.html
# install the xsession desktop file
mkdir -p %{buildroot}%{_datadir}/xsessions
cp -f %{SOURCE1} %{buildroot}%{_datadir}/xsessions
%suse_update_desktop_file %{buildroot}%{_datadir}/xsessions/icewm.desktop
# link duplicate theme icons to save some space
%fdupes %{buildroot}%{_datadir}/icewm/themes/
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
for i in %{lites}; do
mv lite/$i-lite %{buildroot}%{_prefix}/bin
mv %{buildroot}%{_bindir}/$i %{buildroot}%{_bindir}/$i-default
ln -sf icewm.html %{buildroot}/%{_docdir}/icewm/index.html
# dummy
touch %{buildroot}%{_sysconfdir}/alternatives/$i
ln -s %{_sysconfdir}/alternatives/$i %{buildroot}%{_bindir}/$i
# Install the xsession desktop file.
install -Dm 0644 %{SOURCE1} %{buildroot}%{_datadir}/xsessions/icewm.desktop
mkdir -p %{buildroot}%{_sysconfdir}/alternatives/
for file in %{lites}; do
mv -f lite/$file-lite %{buildroot}%{_prefix}/bin
mv -f %{buildroot}%{_bindir}/$file %{buildroot}%{_bindir}/$file-default
# Dummy.
touch %{buildroot}%{_sysconfdir}/alternatives/$file
ln -s %{_sysconfdir}/alternatives/$file %{buildroot}%{_bindir}/$file
done
%suse_update_desktop_file %{buildroot}%{_datadir}/xsessions/icewm.desktop
# Link duplicate theme icons to save some space.
%fdupes %{buildroot}%{_datadir}/icewm/themes/
%post lite
%{_sbindir}/update-alternatives \
--install %{_bindir}/icewm icewm %{_bindir}/icewm-lite 0 \
--slave %{_bindir}/icewmhint icewmhint %{_bindir}/icewmhint-lite \
--slave %{_bindir}/icewmbg icewmbg %{_bindir}/icewmbg-lite \
--slave %{_bindir}/icesh icesh %{_bindir}/icesh-lite \
--slave %{_bindir}/icewm-session icewm-session %{_bindir}/icewm-session-lite
--install %{_bindir}/icewm icewm %{_bindir}/icewm-lite 0 \
--slave %{_bindir}/icewmhint icewmhint %{_bindir}/icewmhint-lite \
--slave %{_bindir}/icewmbg icewmbg %{_bindir}/icewmbg-lite \
--slave %{_bindir}/icesh icesh %{_bindir}/icesh-lite \
--slave %{_bindir}/icewm-session icewm-session %{_bindir}/icewm-session-lite
%preun lite
if [ "$1" = 0 ] ; then
%{_sbindir}/update-alternatives --remove icewm %{_bindir}/icewm-lite
%{_sbindir}/update-alternatives --remove icewm %{_bindir}/icewm-lite
fi
%post default
%{_sbindir}/update-alternatives \
--install %{_bindir}/icewm icewm %{_bindir}/icewm-default 100 \
--slave %{_bindir}/icewmhint icewmhint %{_bindir}/icewmhint-default \
--slave %{_bindir}/icewmbg icewmbg %{_bindir}/icewmbg-default \
--slave %{_bindir}/icesh icesh %{_bindir}/icesh-default \
--slave %{_bindir}/icewm-session icewm-session %{_bindir}/icewm-session-default
--install %{_bindir}/icewm icewm %{_bindir}/icewm-default 100 \
--slave %{_bindir}/icewmhint icewmhint %{_bindir}/icewmhint-default \
--slave %{_bindir}/icewmbg icewmbg %{_bindir}/icewmbg-default \
--slave %{_bindir}/icesh icesh %{_bindir}/icesh-default \
--slave %{_bindir}/icewm-session icewm-session %{_bindir}/icewm-session-default
%preun default
if [ "$1" = 0 ] ; then
%{_sbindir}/update-alternatives --remove icewm %{_bindir}/icewm-default
%{_sbindir}/update-alternatives --remove icewm %{_bindir}/icewm-default
fi
%files
%defattr(-,root,root)
%doc %{_docdir}/icewm
%dir %{_sysconfdir}/icewm
%dir %{_sysconfdir}/icewm/
%config %{_sysconfdir}/icewm/*
%{_datadir}/icewm/
%{_datadir}/xsessions/*
%{_mandir}/man1/icewm.1.*
%{_mandir}/man1/icewm.1%{?ext_man}
%files lang -f icewm.lang
%defattr(-,root,root)
%files default
%defattr(-,root,root)
%ghost %{_sysconfdir}/alternatives/icewm
%ghost %{_sysconfdir}/alternatives/icewmhint
%ghost %{_sysconfdir}/alternatives/icewmbg
%ghost %{_sysconfdir}/alternatives/icesh
%ghost %{_sysconfdir}/alternatives/icewm-session
%{_bindir}/icewm-default
%{_bindir}/icewmhint-default
%{_bindir}/icewmbg-default
@@ -224,35 +263,38 @@ fi
%{_bindir}/icesh-default
%{_bindir}/icewmtray
%{_bindir}/icewm-session-default
%{_bindir}/icesound
%ghost %{_bindir}/icewm
%ghost %{_bindir}/icewmhint
%ghost %{_bindir}/icewmbg
%ghost %{_bindir}/icesh
%ghost %{_bindir}/icewm-session
%ghost %{_bindir}/icewm-menu-fdo
%if %{with mate}
%files mate
%defattr(-,root,root)
%{_bindir}/icewm-menu-mate
%endif
%{_datadir}/applications/icewm.desktop
%{_bindir}/icewm-set-matewm
%files lite
%defattr(-,root,root)
%ghost %{_sysconfdir}/alternatives/icewm
%ghost %{_sysconfdir}/alternatives/icewmhint
%ghost %{_sysconfdir}/alternatives/icewmbg
%ghost %{_sysconfdir}/alternatives/icesh
%ghost %{_sysconfdir}/alternatives/icewm-session
%{_bindir}/icewm
%{_bindir}/icewmhint
%{_bindir}/icewmbg
%{_bindir}/icesh
%{_bindir}/icewm-session
%{_bindir}/icewm-menu-fdo
%{_bindir}/icesound
%files lite
%defattr(-,root,root)
%{_bindir}/icewm-lite
%{_bindir}/icewmhint-lite
%{_bindir}/icewmbg-lite
%{_bindir}/icesh-lite
%{_bindir}/icewm-session-lite
%ghost %{_sysconfdir}/alternatives/icewm
%ghost %{_sysconfdir}/alternatives/icewmhint
%ghost %{_sysconfdir}/alternatives/icewmbg
%ghost %{_sysconfdir}/alternatives/icesh
%ghost %{_sysconfdir}/alternatives/icewm-session
%{_bindir}/icewm
%{_bindir}/icewmhint
%{_bindir}/icewmbg
%{_bindir}/icesh
%{_bindir}/icewm-session
%ghost %{_bindir}/icewm
%ghost %{_bindir}/icewmhint
%ghost %{_bindir}/icewmbg
%ghost %{_bindir}/icesh
%ghost %{_bindir}/icewm-session
%changelog