- Update to 1.4.2 - Rebase patches - icewm-susemenu.patch: rebase "suseprog" function - icewm-preferences.patch: rebase, only IconPath hunk not in upstream now - icewm-mate.patch: rebase several hunks in which context changed - Drop patches that were accepted upstream - icewm-session-desktop.patch - icewm-exit-fork.patch - icewm-mail.patch - Swap "sgmltool" for "asciidoc" OBS-URL: https://build.opensuse.org/request/show/529925 OBS-URL: https://build.opensuse.org/package/show/X11:windowmanagers/icewm?expand=0&rev=77
299 lines
11 KiB
Diff
299 lines
11 KiB
Diff
--- 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
|
|
@@ -106,5 +106,8 @@ icewm.lsm: icewm.lsm.in
|
|
sed -r -e 's:%%PACKAGE%%:$(PACKAGE):g;s:%%VERSION%%:$(VERSION):g;s:%%DATE%%:$(DATE):g' $< >$@
|
|
|
|
dist_bin_SCRIPTS = \
|
|
+ icewm-set-matewm \
|
|
icewm-set-gnomewm
|
|
|
|
+desktopdir = $(datadir)/applications
|
|
+desktop_DATA = icewm.desktop
|
|
--- a/src/gnome2.cc
|
|
+++ b/src/gnome2.cc
|
|
@@ -25,10 +25,16 @@ char const * ApplicationName = "icewm-menu-gnome2";
|
|
#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"
|
|
+
|
|
+#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;
|
|
}
|
|
}
|
|
@@ -281,13 +281,24 @@ void GnomeMenu::populateMenu(const char *fPath) {
|
|
char fullpath[256];
|
|
strlcpy(fullpath, dirname, sizeof fullpath);
|
|
strlcat(fullpath, file->d_name, sizeof fullpath);
|
|
+#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
|
|
@@ -11,6 +11,7 @@ EXTRA_PROGRAMS = \
|
|
icesound \
|
|
icewm-menu-gnome1 \
|
|
icewm-menu-gnome2 \
|
|
+ icewm-menu-mate \
|
|
icewm-menu-fdo \
|
|
testarray \
|
|
testlocale \
|
|
@@ -72,6 +73,10 @@ bin_PROGRAMS += icewm-menu-gnome2
|
|
AM_INSTALLCHECK_STD_OPTIONS_EXEMPT += icewm-menu-gnome2
|
|
endif
|
|
|
|
+if BUILD_MENU_MATE
|
|
+bin_PROGRAMS += icewm-menu-mate
|
|
+endif
|
|
+
|
|
if BUILD_MENU_FDO
|
|
bin_PROGRAMS += icewm-menu-fdo
|
|
AM_INSTALLCHECK_STD_OPTIONS_EXEMPT += icewm-menu-fdo
|
|
@@ -371,6 +376,20 @@ icewm_menu_gnome1_SOURCES = \
|
|
ascii.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 \
|