Accepting request 529925 from home:avindra

- 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
This commit is contained in:
Tomáš Chvátal 2017-10-02 09:04:31 +00:00 committed by Git OBS Bridge
parent a7841dbc3e
commit 94c0ab5fe7
10 changed files with 76 additions and 317 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e7e0fe0fb07e297fa40f0c9d149c0cf6da19e13b98178fc779dca9ed81b3b232
size 944617

3
icewm-1.4.2.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9920901c5eadb6df95af68dcb4f044b16e76e80ccd2c420b66c2ab83559477a7
size 1731772

View File

@ -1,64 +0,0 @@
Author: Fabian Vogt <fvogt@suse.com>
Subject: Start shutdown and reboot commands in background
When polkit is enabled, systemctl may in turn wait for the
graphical password prompt to return. The created window cannot
be handled by icewm as it is busy with systemctl.
This avoids this deadlock by starting systemctl in background.
---
src/wmmgr.cc | 23 +++++++++++++++++++----
src/wmmgr.h | 1 +
2 files changed, 20 insertions(+), 4 deletions(-)
Index: icewm-1.3.12/src/wmmgr.cc
===================================================================
--- icewm-1.3.12.orig/src/wmmgr.cc
+++ icewm-1.3.12/src/wmmgr.cc
@@ -3011,16 +3011,30 @@ void YWindowManager::updateUserTime(Time
}
}
+void YWindowManager::execAfterFork(const char *command) {
+ pid_t pid = fork();
+ switch(pid) {
+ case -1: /* Failed */
+ warn("fork failed (%d)", errno);
+ return;
+ case 0: /* Child */
+ execl("/bin/sh", "sh", "-c", command, (char *) 0);
+ return; /* Never reached */
+ default: /* Parent */
+ return;
+ }
+}
+
void YWindowManager::checkLogout() {
if (fShuttingDown && !haveClients()) {
+ fShuttingDown = false; /* Only run the command once */
+
if (rebootOrShutdown == 1 && rebootCommand && rebootCommand[0]) {
msg("reboot... (%s)", rebootCommand);
- if (system(rebootCommand) == -1)
- return;
+ execAfterFork(rebootCommand);
} else if (rebootOrShutdown == 2 && shutdownCommand && shutdownCommand[0]) {
msg("shutdown ... (%s)", shutdownCommand);
- if (system(shutdownCommand) == -1)
- return;
+ execAfterFork(shutdownCommand);
} else
app->exit(0);
}
Index: icewm-1.3.12/src/wmmgr.h
===================================================================
--- icewm-1.3.12.orig/src/wmmgr.h
+++ icewm-1.3.12/src/wmmgr.h
@@ -188,6 +188,7 @@ public:
void wmCloseSession();
void exitAfterLastClient(bool shuttingDown);
+ void execAfterFork(const char *command);
void checkLogout();
virtual void resetColormap(bool active);

View File

@ -1,14 +0,0 @@
diff -Naur icewm-1.3.12.orig/src/default.h icewm-1.3.12/src/default.h
--- icewm-1.3.12.orig/src/default.h 2015-12-17 02:17:06.000000000 +0100
+++ icewm-1.3.12/src/default.h 2017-02-20 15:58:12.275577702 +0100
@@ -174,8 +174,8 @@
#endif
XSV(const char *, mailBoxPath, 0)
-XSV(const char *, mailCommand, "xterm -name alpine -title ALPINE -e alpine")
-XSV(const char *, mailClassHint, "alpine.XTerm")
+XSV(const char *, mailCommand, "xterm -name mutt -e mutt")
+XSV(const char *, mailClassHint, "mutt.XTerm")
XSV(const char *, newMailCommand, 0)
XSV(const char *, lockCommand, 0)
XSV(const char *, clockCommand, "xclock -name icewm -title Clock")

View File

@ -66,8 +66,8 @@
+gsettings get org.mate.session.required-components windowmanager
--- a/Makefile.am
+++ b/Makefile.am
@@ -36,8 +36,12 @@ dist_noinst_SCRIPTS = \
autogen.sh
@@ -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 \
@ -75,13 +75,9 @@
+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 @@
@@ -25,10 +25,16 @@ char const * ApplicationName = "icewm-menu-gnome2";
#include <dirent.h>
#include <string.h>
@ -95,8 +91,7 @@
#include <libgnome/gnome-desktop-item.h>
#include <libgnomevfs/gnome-vfs-init.h>
-#include "yarray.h"
char const * ApplicationName = "icewm-menu-gnome2";
+
+#endif
class GnomeMenu;
@ -195,10 +190,10 @@
item->dentry = npath;
}
}
@@ -280,13 +316,24 @@ void GnomeMenu::populateMenu(const char
@@ -281,13 +281,24 @@ void GnomeMenu::populateMenu(const char *fPath) {
char fullpath[256];
strcpy(fullpath, dirname);
strcat(fullpath, file->d_name);
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,
@ -261,7 +256,7 @@
if (**arg == '-') {
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -14,6 +14,7 @@ EXTRA_PROGRAMS = \
@@ -11,6 +11,7 @@ EXTRA_PROGRAMS = \
icesound \
icewm-menu-gnome1 \
icewm-menu-gnome2 \
@ -269,8 +264,8 @@
icewm-menu-fdo \
testarray \
testlocale \
@@ -75,6 +76,10 @@ if BUILD_MENU_GNOME2
bin_PROGRAMS += icewm-menu-gnome2
@@ -72,6 +73,10 @@ bin_PROGRAMS += icewm-menu-gnome2
AM_INSTALLCHECK_STD_OPTIONS_EXEMPT += icewm-menu-gnome2
endif
+if BUILD_MENU_MATE
@ -279,9 +274,9 @@
+
if BUILD_MENU_FDO
bin_PROGRAMS += icewm-menu-fdo
endif
@@ -373,6 +378,20 @@ icewm_menu_gnome1_SOURCES = \
ycmdline.h
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 = \

View File

@ -21,57 +21,12 @@ Index: src/preferences
===================================================================
--- a/src/preferences
+++ b/src/preferences
@@ -530,7 +530,7 @@
@@ -542,7 +542,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"
-# IconPath="/usr/share/icons/hicolor:/usr/share/icons:/usr/share/pixmaps"
+IconPath="/usr/share/icons/Adwaita/16x16/apps:/usr/share/icons/hicolor:/usr/share/icons:/usr/share/pixmaps"
# Mailbox path (use $MAIL instead)
# MailBoxPath=""
@@ -545,7 +545,7 @@
# NewMailCommand=""
# Command to lock display/screensaver
-# LockCommand=""
+LockCommand="xlock -mousemotion"
# Command to run on clock
# ClockCommand="xclock -name icewm -title Clock"
@@ -569,10 +569,10 @@
# LogoutCancelCommand=""
# Command to shutdown the system
-# ShutdownCommand="/bin/sh -c "{ test -e /run/systemd/system && systemctl poweroff; } ||:""
+ShutdownCommand="/bin/sh -c 'systemctl poweroff ||:'"
# Command to reboot the system
-# RebootCommand="/bin/sh -c "{ test -e /run/systemd/system && systemctl reboot; } ||:""
+RebootCommand="/bin/sh -c 'systemctl reboot ||:'"
# Command to run on CPU status
# CPUStatusCommand="xterm -name top -title Process\ Status -e top"
@@ -1328,19 +1328,19 @@
#
# Display desktop background centered and not tiled
-# DesktopBackgroundCenter=0 # 0/1
+DesktopBackgroundCenter=0 # 0/1
# Support for semitransparent terminals like Eterm or gnome-terminal
# SupportSemitransparency=1 # 0/1
# Desktop background scaled to full screen
-# DesktopBackgroundScaled=0 # 0/1
+DesktopBackgroundScaled=1 # 0/1
# Desktop background color
# DesktopBackgroundColor="rgb:00/20/40"
# Desktop background image
-# DesktopBackgroundImage=""
+DesktopBackgroundImage="BRANDING_PICTURE"
# Color to announce for semi-transparent windows
# DesktopTransparencyColor=""

View File

@ -1,116 +0,0 @@
From b127566dfbdd985cd5632fe3686c77fa7f0d56b3 Mon Sep 17 00:00:00 2001
From: Brian Bidulock <bidulock@openss7.org>
Date: Wed, 10 Feb 2016 11:51:45 -0700
Subject: [PATCH] proper XSession .desktop files
---
lib/icewm-session.desktop | 58 +++++++++++++++++++++++++++++++++++++++++++----
lib/icewm.desktop | 26 +++++++++++++++++++++
4 files changed, 82 insertions(+), 4 deletions(-)
create mode 100644 lib/icewm.desktop
Index: icewm-1.3.12/lib/icewm-session.desktop
===================================================================
--- icewm-1.3.12.orig/lib/icewm-session.desktop
+++ icewm-1.3.12/lib/icewm-session.desktop
@@ -1,12 +1,62 @@
[Desktop Entry]
-Version=1.0
Encoding=UTF-8
Type=XSession
Name=IceWM Session
-Comment=Simple and fast window manger
-Terminal=false
+GenericName=Window Manager
+GenericName[fr]=Gestionnaire de Fenêtres
+GenericName[pt]=Gestor de Janelas
+Comment=This session logs you into IceWM
+Comment[az]=Bu iclas sizi Icewm'a daxil edəcək
+Comment[be]=Гэтая сэсыя завядзе вас у Icewm
+Comment[ca]=Aquesta sessió entra en Icewm
+Comment[cs]=Toto sezení vás přihlásí do Icewm
+Comment[cy]=Mae'r sesiwn hwn yn eich mewngofnodi i Icewm
+Comment[da]=Denne session logger dig på Icewm
+Comment[de]=Diese Sitzung meldet Sie an Icewm an
+Comment[el]=Αυτή η συνεδρία σας εισάγει στο Icewm
+Comment[es]=Con esta sesión accede a Icewm
+Comment[fi]=Tämä istunto kirjaa sisään Icewmen
+Comment[fr]=Cette session vous connectera dans Icewm
+Comment[he]=תצורת הפעלה זו מחברת אותך ל Icewm
+Comment[hi]=यह सत्र गनोम में लॉगिन होगा
+Comment[hu]=Ez a munkamenet a Icewm-ba jelentkeztet be
+Comment[it]=Sessione di lavoro con Icewm
+Comment[ja]=Icewm セッションにログインします
+Comment[ko]=Icewm세션으로 로그인합니다
+Comment[ms]=Sesi ini akan log anda ke Icewm
+Comment[nl]=Deze sessie meldt u aan bij Icewm
+Comment[nn]=Denne økta loggar på Icewm
+Comment[no]=Denne sesjonen logger deg inn til Icewm
+Comment[pl]=Sesja logowania do Icewm
+Comment[pt]=Esta sessão inicia-o no Icewm
+Comment[pt_BR]=Logar no ambiente Icewm
+Comment[ro]=Această sesiune vă va loga în Icewm
+Comment[sk]=Toto sedenie vás prihlási do prostredia Icewm
+Comment[sl]=Ta seja vas prijavi v Icewm
+Comment[sq]=Kjo seancë do t'ju fusë në Icewm
+Comment[sr@Latn]=Ova sesija vas prijavljuje na Icewm
+Comment[sr]=Ова сесија вас пријављује на Icewm
+Comment[sv]=Denna session loggar in dig i Icewm
+Comment[tr]=Bu oturum ile Icewm'a giriş yaparsınız
+Comment[uk]=Сеанс роботи в середовищі Icewm
+Comment[vi]=Session này cho bạn đăng nhập vào Icewm
+Comment[zh_CN]=此会话使您登录到 Icewm
+Comment[zh_TW]=選取這個作業階段後會進入 Icewm 環境
+Icon=icewm
+TryExec=/usr/bin/icewm-session
Exec=icewm-session
-TryExec=icewm-session
+NoDisplay=true
+Hidden=true
+Categories=WindowManager;Application;System;
+StartupNotify=false
+X-GNOME-Autostart-Notify=false
+X-GNOME-Autostart-Phase=WindowManager
+X-GNOME-Provides=windowmanager
+X-GNOME-WMName=icewm
+DesktopNames=ICEWM
+X-LightDM-DesktopName=icewm
[Window Manager]
+Name=icewm
SessionManaged=true
+StartupNotification=false
Index: icewm-1.3.12/lib/icewm.desktop
===================================================================
--- icewm-1.3.12.orig/lib/icewm.desktop
+++ icewm-1.3.12/lib/icewm.desktop
@@ -1,8 +1,26 @@
[Desktop Entry]
-Version=1.0
Encoding=UTF-8
-Type=Application
+Type=XSession
Name=IceWM
+GenericName=Window Manager
+GenericName[fr]=Gestionnaire de Fenêtres
+GenericName[pt]=Gestor de Janelas
Comment=Simple and fast window manger
+Icon=icewm
+TryExec=/usr/bin/icewm
Exec=icewm
-TryExec=icewm
+NoDisplay=true
+Hidden=true
+Categories=WindowManager;Application;System;
+StartupNotify=false
+X-GNOME-Autostart-Notify=false
+X-GNOME-Autostart-Phase=WindowManager
+X-GNOME-Provides=windowmanager
+X-GNOME-WMName=icewm
+DesktopNames=ICEWM
+X-LightDM-DesktopName=icewm
+
+[Window Manager]
+Name=icewm
+SessionManaged=false
+StartupNotification=false

View File

@ -14,43 +14,47 @@ diff --git a/src/wmprog.cc b/src/wmprog.cc
index d1ce6b0..5190d80 100644
--- a/src/wmprog.cc
+++ b/src/wmprog.cc
@@ -250,6 +250,14 @@ char *parseIncludeStatement(IApp *app, YSMListener *smActionListener, YActionLis
return p;
}
+void loadMenusProg(
+ IApp *app,
+ YSMListener *smActionListener,
+ YActionListener *wmActionListener,
+ const char *command,
+ char *const argv[],
+ ObjectContainer *container);
+
char *parseMenus(IApp *app, YSMListener *smActionListener, YActionListener *wmActionListener, char *data, ObjectContainer *container) {
char *p = data;
char word[32];
@@ -416,7 +424,23 @@ char *parseMenus(IApp *app, YSMListener *smActionListener, YActionListener *wmAc
delete[] name;
delete[] icons;
delete[] command;
@@ -429,7 +429,42 @@ char *parseMenus(
if (progmenu)
container->addContainer(name.cstr(), icon, progmenu);
}
- } else if (!strcmp(word, "menuprogreload")) {
+ } else if(!strcmp(word, "suseprog")) {
+ char *command;
+ } else if (!strcmp(word, "suseprog")) {
+ Argument name;
+
+ p = YConfig::getArgument(&name, p);
+ if (p == 0) return p;
+
+ Argument icons;
+
+ p = YConfig::getArgument(&icons, p);
+ if (p == 0) return p;
+
+ Argument command;
+ YStringArray args;
+
+ p = getCommandArgs(p, &command, args);
+ if (p == 0) {
+ msg(_("Error at prog %s"), "susemenu"); return p;
+ msg(_("Error at prog %s"), name.cstr());
+ return p;
+ }
+
+ MSG(("suseprog %s", command));
+ ref<YIcon> icon;
+#ifndef LITE
+ if (icons[0] != '-')
+ icon = YIcon::getIcon(icons);
+#endif
+ MSG(("suseprog %s %s", name.cstr(), command.cstr()));
+
+ upath fullPath = findPath(getenv("PATH"), X_OK, command);
+ upath fullPath = findPath(getenv("PATH"), X_OK, command.cstr());
+ if (fullPath != null) {
+ loadMenusProg(app,smActionListener,wmActionListener,command,args.getCArray(),container);
+ ObjectMenu *progmenu = new MenuProgMenu(
+ app, smActionListener, wmActionListener,
+ name.cstr(), command.cstr(), args, 0);
+ if (progmenu)
+ container->addContainer(name.cstr(), icon, progmenu);
+ }
+ delete[] command;
+ } else if(!strcmp(word, "menuprogreload")) {
char *name;
+ } else if (!strcmp(word, "menuprogreload")) {
Argument name;
p = YConfig::getArgument(&name, p, false);
p = YConfig::getArgument(&name, p);

View File

@ -1,3 +1,17 @@
-------------------------------------------------------------------
Sun Sep 24 21:41:00 UTC 2017 - aavindraa@gmail.com
- 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"
-------------------------------------------------------------------
Tue May 23 08:55:22 UTC 2017 - tchvatal@suse.com

View File

@ -18,34 +18,27 @@
%global lites icewm icewmhint icewmbg icesh icewm-session
Name: icewm
Version: 1.3.12
Version: 1.4.2
Release: 0
Summary: Window Manager with a Taskbar
License: LGPL-2.1+
Group: System/GUI/Other
Url: http://www.icewm.org/
Source0: https://github.com/bbidulock/icewm/archive/%{version}.tar.gz
Source0: https://github.com/bbidulock/%{name}/releases/download/%{version}/%{name}-%{version}.tar.bz2
Source1: icewm.desktop
# PATCH-FIX-OPENSUSE icewm-mate.patch sor.alexei@meowr.ru -- Add MATE Menus support.
Patch0: icewm-mate.patch
# PATCH-FEATURE-SUSE icewm-susemenu.patch tyang@suse.com -- Add xdg-menu for SLED icewm
Patch1: icewm-susemenu.patch
# PATCH-FIX-UPSTREAM tweak the desktop session files to work correctly
Patch2: icewm-session-desktop.patch
# PATCH-FIX-OPENSUSE run shutdown and reboot in background
Patch3: icewm-exit-fork.patch
# Fix for bsc#1026134, replace alpine by an alternative being available by
# default on SLE/openSUSE, same as done on Debian
Patch4: icewm-mail.patch
Patch99: icewm-preferences.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: libtool
BuildRequires: pkgconfig
# Needed for documentation.
BuildRequires: pkg-config
BuildRequires: sgmltool
BuildRequires: asciidoc
BuildRequires: update-alternatives
BuildRequires: update-desktop-files
BuildRequires: pkgconfig(alsa)
@ -65,11 +58,6 @@ Requires: desktop-data
Requires: icewm-bin
Requires: icewm-configuration-files
Requires: xdg-menu
%if 0%{?suse_version} > 1315
Requires: xterm-bin
%else
Requires: xterm
%endif
Requires(post): update-alternatives
Requires(postun): update-alternatives
# If you have the choice, prefer the big one.
@ -80,6 +68,11 @@ Recommends: xlockmore
Provides: icewm-gnome = %{version}
Obsoletes: icewm-gnome < %{version}
Provides: windowmanager
%if 0%{?suse_version} > 1315
Requires: xterm-bin
%else
Requires: xterm
%endif
%description
A window manager for the X Window System that can emulate the look
@ -140,9 +133,6 @@ mailbox status, and a digital clock. It is fast and small.
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
# Do not require needlessly new gettext.
sed -i 's/0.19.6/0.18.3/g' configure.ac
@ -194,7 +184,7 @@ wallpaper="openSUSEdefault"
wallpaper="SLEdefault"
%endif
sed -i \
-e "s:BRANDING_PICTURE:/usr/share/wallpapers/$wallpaper/contents/images/1920x1080.jpg:" \
-e "s:BRANDING_PICTURE:%{_datadir}/wallpapers/$wallpaper/contents/images/1920x1080.jpg:" \
src/preferences
%install
@ -267,7 +257,6 @@ if [ $1 -eq 0 ] ; then
fi
%files
%defattr(-,root,root)
%doc %{_docdir}/icewm
%ghost %{_sysconfdir}/alternatives/default-xsession.desktop
%{_datadir}/icewm/
@ -277,15 +266,12 @@ fi
%{_mandir}/man1/icewm.1%{?ext_man}
%files config-upstream
%defattr(-,root,root)
%dir %{_sysconfdir}/icewm/
%config %{_sysconfdir}/icewm/*
%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
@ -308,7 +294,6 @@ fi
%{_datadir}/applications/icewm.desktop
%files lite
%defattr(-,root,root)
%ghost %{_sysconfdir}/alternatives/icewm
%ghost %{_sysconfdir}/alternatives/icewmhint
%ghost %{_sysconfdir}/alternatives/icewmbg