diff --git a/.gitignore b/.gitignore index bc8d4e8..65d1291 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ /setlayout.c -/openbox-3.5.0.tar.gz +/openbox-3.6.1.tar.xz diff --git a/openbox-3.5.0-Fix-crash-on-unexpected-NET_WM_MOVERESIZE_CANCEL-messages.patch b/openbox-3.5.0-Fix-crash-on-unexpected-NET_WM_MOVERESIZE_CANCEL-messages.patch deleted file mode 100644 index 174482d..0000000 --- a/openbox-3.5.0-Fix-crash-on-unexpected-NET_WM_MOVERESIZE_CANCEL-messages.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 339c19d1b3a7a5139aed8b59bad755ddd0e518ff Mon Sep 17 00:00:00 2001 -From: Mikael Magnusson -Date: Sun, 3 Jun 2012 20:18:48 +0200 -Subject: [PATCH] Fix crash on unexpected NET_WM_MOVERESIZE_CANCEL messages - -gtk+ 3.4 apparently sends these randomly when you select text in a -GtkEntry. This also fixes bug #5460. ---- - openbox/event.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/openbox/event.c b/openbox/event.c -index b9ec1c5..4d091bf 100644 ---- a/openbox/event.c -+++ b/openbox/event.c -@@ -1495,7 +1495,8 @@ static void event_handle_client(ObClient *client, XEvent *e) - } - else if ((Atom)e->xclient.data.l[2] == - OBT_PROP_ATOM(NET_WM_MOVERESIZE_CANCEL)) -- moveresize_end(TRUE); -+ if (moveresize_client) -+ moveresize_end(TRUE); - } else if (msgtype == OBT_PROP_ATOM(NET_MOVERESIZE_WINDOW)) { - gint ograv, x, y, w, h; - --- -1.7.10 - diff --git a/openbox-3.5.0-gnomesession-fixes.patch b/openbox-3.5.0-gnomesession-fixes.patch deleted file mode 100644 index fa2f11d..0000000 --- a/openbox-3.5.0-gnomesession-fixes.patch +++ /dev/null @@ -1,96 +0,0 @@ -From: Dana Jansens -Date: Sat, 15 Oct 2011 19:07:59 +0000 (-0400) -Subject: Fixes for gnome-session 3. -X-Git-Url: http://git.openbox.org/?p=dana%2Fopenbox.git;a=commitdiff_plain;h=3991e148e2acbc3da3b9c31e2459b20a4e598a03 - -Fixes for gnome-session 3. - -We run by default with a panel (default gnome-panel) and then run Openbox -without any panel if one cannot be found. - -- Adds a fallback session for if a panel (default gnome-panel) not found. -- Removes notifications as a requirement. Seems to be a legacy thing judging - from the ubuntu .session files. Notifications are being provided by - notify-osd on modern systems, and you can't check for its presence in - gnome-session (gnome-classic.session always fails because it looks for it, so - ubuntu falls back to gnome-fallback.session). ---- - -diff --git a/Makefile.am b/Makefile.am -index 4f60bd0..1f7427c 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -516,7 +516,8 @@ nodist_xsessions_DATA = \ - data/xsession/openbox-kde.desktop - - dist_gnomesession_DATA = \ -- data/xsession/openbox-gnome.session -+ data/gnome-session/openbox-gnome.session \ -+ data/gnome-session/openbox-gnome-fallback.session - - dist_noinst_DATA = \ - data/rc.xsd \ -diff --git a/data/gnome-session/Makefile b/data/gnome-session/Makefile -new file mode 100644 -index 0000000..b90edac ---- /dev/null -+++ b/data/gnome-session/Makefile -@@ -0,0 +1,4 @@ -+all clean install: -+ $(MAKE) -C .. -$(MAKEFLAGS) $@ -+ -+.PHONY: all clean install -diff --git a/data/gnome-session/openbox-gnome-fallback.session b/data/gnome-session/openbox-gnome-fallback.session -new file mode 100644 -index 0000000..156f2c3 ---- /dev/null -+++ b/data/gnome-session/openbox-gnome-fallback.session -@@ -0,0 +1,6 @@ -+[GNOME Session] -+Name=GNOME/Openbox fallback (Safe Mode) -+RequiredComponents=gnome-settings-daemon; -+RequiredProviders=windowmanager; -+DefaultProvider-windowmanager=openbox -+DesktopName=GNOME -diff --git a/data/gnome-session/openbox-gnome.session b/data/gnome-session/openbox-gnome.session -new file mode 100644 -index 0000000..3399c2c ---- /dev/null -+++ b/data/gnome-session/openbox-gnome.session -@@ -0,0 +1,9 @@ -+[GNOME Session] -+Name=GNOME/Openbox -+RequiredComponents=gnome-settings-daemon; -+# Try load with the gnome-panel and use the fallback if we can't load a panel -+RequiredProviders=windowmanager;panel -+DefaultProvider-windowmanager=openbox -+DefaultProvider-panel=gnome-panel -+FallbackSession=openbox-gnome-fallback -+DesktopName=GNOME -diff --git a/data/openbox.desktop b/data/openbox.desktop -index 9c19e67..d49ae22 100644 ---- a/data/openbox.desktop -+++ b/data/openbox.desktop -@@ -7,6 +7,10 @@ Icon=openbox - NoDisplay=true - # name we put on the WM spec check window - X-GNOME-WMName=Openbox -+# gnome-session autostart - X-GNOME-Autostart-Phase=WindowManager - X-GNOME-Provides=windowmanager -+# Ubuntu stuff -+X-Ubuntu-Gettext-Domain=openbox -+# back compat - X-GNOME-Autostart-Notify=true -diff --git a/data/xsession/openbox-gnome.session b/data/xsession/openbox-gnome.session -deleted file mode 100644 -index 2d8f07b..0000000 ---- a/data/xsession/openbox-gnome.session -+++ /dev/null -@@ -1,6 +0,0 @@ --[GNOME Session] --Name=GNOME/Openbox --RequiredComponents=gnome-panel;gnome-settings-daemon; --RequiredProviders=windowmanager;notifications; --DefaultProvider-windowmanager=openbox --DefaultProvider-notifications=notification-daemon diff --git a/openbox-3.5.0-gnomesession.patch b/openbox-3.5.0-gnomesession.patch deleted file mode 100644 index 1dc442e..0000000 --- a/openbox-3.5.0-gnomesession.patch +++ /dev/null @@ -1,76 +0,0 @@ -From: Geoffrey Antos -Date: Fri, 7 Oct 2011 13:29:30 +0000 (-0400) -Subject: Make openbox-gnome-session compatible with gnome3 with gnome-session 3.0+ support. -X-Git-Url: http://git.openbox.org/?p=dana%2Fopenbox.git;a=commitdiff_plain;h=3f870080de978e905f764b6cbc8e662a419d8983 - -Make openbox-gnome-session compatible with gnome3 with gnome-session 3.0+ support. - -Yay they did something nice and made it easier for other window managers to be used. How unexpected and pleasant. ---- - -diff --git a/Makefile.am b/Makefile.am -index c62a594..7ed1f6a 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -6,6 +6,7 @@ localedir = $(datadir)/locale - configdir = $(sysconfdir)/xdg - rcdir = $(configdir)/openbox - xsessionsdir = $(datadir)/xsessions -+gnomesessiondir = $(datadir)/gnome-session/sessions - gnomewmfilesdir = $(datadir)/gnome/wm-properties - pkgconfigdir = $(libdir)/pkgconfig - obtpubincludedir= $(includedir)/openbox/@OBT_VERSION@/obt -@@ -513,6 +514,9 @@ nodist_xsessions_DATA = \ - data/xsession/openbox-gnome.desktop \ - data/xsession/openbox-kde.desktop - -+dist_gnomesession_DATA = \ -+ data/xsession/openbox-gnome.session -+ - dist_noinst_DATA = \ - data/rc.xsd \ - data/menu.xsd \ -diff --git a/data/xsession/openbox-gnome-session.in b/data/xsession/openbox-gnome-session.in -index 8dd799c..f31c9ad 100644 ---- a/data/xsession/openbox-gnome-session.in -+++ b/data/xsession/openbox-gnome-session.in -@@ -21,11 +21,11 @@ MINOR=$(echo $VER | cut -d . -f 2) - # run GNOME with Openbox as its window manager - - if test $MAJOR -lt 2 || (test $MAJOR = 2 && test $MINOR -le 22); then -- # old gnome-session was easy to work with -+ # older gnome-session was easy to work with - export WINDOW_MANAGER="@bindir@/openbox" - exec gnome-session --choose-session=openbox-session "$@" --else -- # new gnome-session requires openbox to be set in gconf and an -+elif test $MAJOR -lt 3; then -+ # old gnome-session requires openbox to be set in gconf and an - # openbox.desktop to be installed in the applications directory - - SPATH=/desktop/gnome/session -@@ -54,6 +54,12 @@ else - - # run GNOME/Openbox - exec gnome-session --default-session-key $SPATH/openbox_session "$@" -+else -+ # new gnome-session requires session file installed in -+ # /usr/share/gnome-session/sessions as well as openbox.desktop to be -+ # installed in the applications directory -+ -+ exec gnome-session --session=openbox-gnome - fi - - -diff --git a/data/xsession/openbox-gnome.session b/data/xsession/openbox-gnome.session -new file mode 100644 -index 0000000..2d8f07b ---- /dev/null -+++ b/data/xsession/openbox-gnome.session -@@ -0,0 +1,6 @@ -+[GNOME Session] -+Name=GNOME/Openbox -+RequiredComponents=gnome-panel;gnome-settings-daemon; -+RequiredProviders=windowmanager;notifications; -+DefaultProvider-windowmanager=openbox -+DefaultProvider-notifications=notification-daemon diff --git a/openbox-calc-layer.patch b/openbox-calc-layer.patch new file mode 100644 index 0000000..9f00bbb --- /dev/null +++ b/openbox-calc-layer.patch @@ -0,0 +1,36 @@ +From https://bugzilla.icculus.org/show_bug.cgi?id=6669#c2 + +diff --git a/openbox/client.c b/openbox/client.c +index 3ff278ae..ac4ff827 100644 +--- a/openbox/client.c ++++ b/openbox/client.c +@@ -2702,9 +2702,10 @@ static void client_calc_layer_internal(ObClient *self) + void client_calc_layer(ObClient *self) + { + GList *it; ++ GList *list = g_list_copy(stacking_list); + + /* skip over stuff above fullscreen layer */ +- for (it = stacking_list; it; it = g_list_next(it)) ++ for (it = list; it; it = g_list_next(it)) + if (window_layer(it->data) <= OB_STACKING_LAYER_FULLSCREEN) break; + + /* find the windows in the fullscreen layer, and mark them not-visited */ +@@ -2717,7 +2718,7 @@ void client_calc_layer(ObClient *self) + client_calc_layer_internal(self); + + /* skip over stuff above fullscreen layer */ +- for (it = stacking_list; it; it = g_list_next(it)) ++ for (it = list; it; it = g_list_next(it)) + if (window_layer(it->data) <= OB_STACKING_LAYER_FULLSCREEN) break; + + /* now recalc any windows in the fullscreen layer which have not +@@ -2728,6 +2729,8 @@ void client_calc_layer(ObClient *self) + !WINDOW_AS_CLIENT(it->data)->visited) + client_calc_layer_internal(it->data); + } ++ ++ g_list_free(it); + } + + gboolean client_should_show(ObClient *self) diff --git a/openbox-doubleclick.patch b/openbox-doubleclick.patch deleted file mode 100644 index dc668dd..0000000 --- a/openbox-doubleclick.patch +++ /dev/null @@ -1,97 +0,0 @@ -commit c885c9a676e4860a68f0bdce4b926902f6597ebb -Author: Mikael Magnusson -Date: Thu Aug 4 18:34:54 2011 +0200 - - Change default doubleclick timeout to 500ms and keep track of where last click was - - Bug #5152 - "mouse double-click time is too low by default - 200ms" - - We only use the doubleclick in one place in the default configuration, - for doubleclicking titlebars to maximize windows, so any negative impact - of increasing the timeout should be minimal, especially with the - addition of requiring the two clicks to be in the same place. - - Doubleclicks are hardcoded to occur within 8 pixels for now, it doesn't - seem worth it to add a config until someone complains. A possibility is - using the drag threshold, but some people have that set very low so it - could be hard to doubleclick then. - -diff --git a/data/rc.xml b/data/rc.xml -index 7598a72..209cc2d 100644 ---- a/data/rc.xml -+++ b/data/rc.xml -@@ -313,7 +313,7 @@ - - 1 - -- 200 -+ 500 - - 400 - -- 200 -+ 500 - - - -diff --git a/openbox/config.c b/openbox/config.c -index debd9fb..8e0e5ac 100644 ---- a/openbox/config.c -+++ b/openbox/config.c -@@ -1070,7 +1070,7 @@ void config_startup(ObtXmlInst *i) - obt_xml_register(i, "keyboard", parse_keyboard, NULL); - - config_mouse_threshold = 8; -- config_mouse_dclicktime = 200; -+ config_mouse_dclicktime = 500; - config_mouse_screenedgetime = 400; - config_mouse_screenedgewarp = FALSE; - -diff --git a/openbox/mouse.c b/openbox/mouse.c -index ddf6851..2f0c8f5 100644 ---- a/openbox/mouse.c -+++ b/openbox/mouse.c -@@ -211,7 +211,7 @@ gboolean mouse_event(ObClient *client, XEvent *e) - static Time ltime; - static guint button = 0, state = 0, lbutton = 0; - static Window lwindow = None; -- static gint px, py, pwx = -1, pwy = -1; -+ static gint px, py, pwx = -1, pwy = -1, lx = -10, ly = -10; - gboolean used = FALSE; - - ObFrameContext context; -@@ -290,18 +290,24 @@ gboolean mouse_event(ObClient *client, XEvent *e) - if (e->xbutton.x >= (signed)-b && - e->xbutton.y >= (signed)-b && - e->xbutton.x < (signed)(w+b) && -- e->xbutton.y < (signed)(h+b)) { -+ e->xbutton.y < (signed)(h+b)) -+ { - click = TRUE; - /* double clicks happen if there were 2 in a row! */ - if (lbutton == button && - lwindow == e->xbutton.window && - e->xbutton.time - config_mouse_dclicktime <= -- ltime) { -+ ltime && -+ ABS(e->xbutton.x - lx) < 8 && -+ ABS(e->xbutton.y - ly) < 8) -+ { - dclick = TRUE; - lbutton = 0; - } else { - lbutton = button; - lwindow = e->xbutton.window; -+ lx = e->xbutton.x; -+ ly = e->xbutton.y; - } - } else { - lbutton = 0; diff --git a/openbox-kf5menu.patch b/openbox-kf5menu.patch new file mode 100644 index 0000000..1c3c9e5 --- /dev/null +++ b/openbox-kf5menu.patch @@ -0,0 +1,12 @@ +diff -up openbox-3.6.1/data/xsession/openbox-kde-session.in.kf5menu openbox-3.6.1/data/xsession/openbox-kde-session.in +--- openbox-3.6.1/data/xsession/openbox-kde-session.in.kf5menu 2011-10-16 18:13:18.000000000 +0200 ++++ openbox-3.6.1/data/xsession/openbox-kde-session.in 2020-11-09 10:42:43.755217411 +0100 +@@ -8,7 +8,7 @@ if test -n "$1"; then + fi + + # Set the prefix for the menu layout to use +-export XDG_MENU_PREFIX="kde-4-" ++export XDG_MENU_PREFIX="kf5-" + + # Clean up after GDM + xprop -root -remove _NET_NUMBER_OF_DESKTOPS \ diff --git a/openbox-python3.patch b/openbox-python3.patch new file mode 100644 index 0000000..f17bef3 --- /dev/null +++ b/openbox-python3.patch @@ -0,0 +1,113 @@ +diff -up openbox-3.6.1/data/autostart/openbox-xdg-autostart.python3 openbox-3.6.1/data/autostart/openbox-xdg-autostart +--- openbox-3.6.1/data/autostart/openbox-xdg-autostart.python3 2013-04-17 14:27:27.000000000 +0200 ++++ openbox-3.6.1/data/autostart/openbox-xdg-autostart 2018-04-17 15:52:23.849765020 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + + # openbox-xdg-autostart runs things based on the XDG autostart specification + # Copyright (C) 2008 Dana Jansens +@@ -28,9 +28,9 @@ try: + from xdg.DesktopEntry import DesktopEntry + from xdg.Exceptions import ParsingError + except ImportError: +- print +- print >>sys.stderr, "ERROR:", ME, "requires PyXDG to be installed" +- print ++ print() ++ print("ERROR:", ME, "requires PyXDG to be installed", file=sys.stderr) ++ print() + sys.exit(1) + + def main(argv=sys.argv): +@@ -51,7 +51,7 @@ def main(argv=sys.argv): + try: + autofile = AutostartFile(path) + except ParsingError: +- print "Invalid .desktop file: " + path ++ print("Invalid .desktop file: " + path) + else: + if not autofile in files: + files.append(autofile) +@@ -99,9 +99,9 @@ class AutostartFile: + + def _alert(self, str, info=False): + if info: +- print "\t ", str ++ print("\t ", str) + else: +- print "\t*", str ++ print("\t*", str) + + def _showInEnvironment(self, envs, verbose=False): + default = not self.de.getOnlyShowIn() +@@ -146,9 +146,9 @@ class AutostartFile: + + def display(self, envs): + if self._shouldRun(envs): +- print "[*] " + self.de.getName() ++ print("[*] " + self.de.getName()) + else: +- print "[ ] " + self.de.getName() ++ print("[ ] " + self.de.getName()) + self._alert("File: " + self.path, info=True) + if self.de.getExec(): + self._alert("Executes: " + self.de.getExec(), info=True) +@@ -165,33 +165,33 @@ class AutostartFile: + os.chdir(here) + + def show_help(): +- print "Usage:", ME, "[OPTION]... [ENVIRONMENT]..." +- print +- print "This tool will run xdg autostart .desktop files" +- print +- print "OPTIONS" +- print " --list Show a list of the files which would be run" +- print " Files which would be run are marked with an asterix" +- print " symbol [*]. For files which would not be run," +- print " information is given for why they are excluded" +- print " --help Show this help and exit" +- print " --version Show version and copyright information" +- print +- print "ENVIRONMENT specifies a list of environments for which to run autostart" +- print "applications. If none are specified, only applications which do not " +- print "limit themselves to certain environments will be run." +- print +- print "ENVIRONMENT can be one or more of:" +- print " GNOME Gnome Desktop" +- print " KDE KDE Desktop" +- print " ROX ROX Desktop" +- print " XFCE XFCE Desktop" +- print " Old Legacy systems" ++ print("Usage:", ME, "[OPTION]... [ENVIRONMENT]...") ++ print() ++ print("This tool will run xdg autostart .desktop files") ++ print() ++ print("OPTIONS") ++ print(" --list Show a list of the files which would be run") ++ print(" Files which would be run are marked with an asterix") ++ print(" symbol [*]. For files which would not be run,") ++ print(" information is given for why they are excluded") ++ print(" --help Show this help and exit") ++ print(" --version Show version and copyright information") ++ print() ++ print("ENVIRONMENT specifies a list of environments for which to run autostart") ++ print("applications. If none are specified, only applications which do not ") ++ print("limit themselves to certain environments will be run.") ++ print ++ print("ENVIRONMENT can be one or more of:") ++ print(" GNOME Gnome Desktop") ++ print(" KDE KDE Desktop") ++ print(" ROX ROX Desktop") ++ print(" XFCE XFCE Desktop") ++ print(" Old Legacy systems") + print + + def show_version(): +- print ME, VERSION +- print "Copyright (c) 2008 Dana Jansens" ++ print(ME, VERSION) ++ print("Copyright (c) 2008 Dana Jansens") + print + + if __name__ == "__main__": diff --git a/openbox.spec b/openbox.spec index 20abf51..9e1d7f4 100644 --- a/openbox.spec +++ b/openbox.spec @@ -1,33 +1,30 @@ Name: openbox -Version: 3.5.0 -Release: 9%{?dist} +Version: 3.6.1 +Release: 31%{?dist} Summary: A highly configurable and standards-compliant X11 window manager -Group: User Interface/Desktops -License: GPLv2+ +License: GPL-2.0-or-later URL: http://openbox.org -Source0: http://openbox.org/releases/%{name}-%{version}.tar.gz +Source0: http://openbox.org/dist/%{name}/%{name}-%{version}.tar.xz Source1: http://icculus.org/openbox/tools/setlayout.c Source2: xdg-menu Source3: menu.xml Source4: terminals.menu +Patch1: openbox-python3.patch +Patch2: openbox-kf5menu.patch +Patch3: openbox-calc-layer.patch -Patch1: openbox-doubleclick.patch -#Patch2: openbox-3.4.11.2-gnomesession.patch -# http://git.openbox.org/?p=dana/openbox.git;a=commit;h=3f870080 -Patch2: openbox-3.5.0-gnomesession.patch -# http://git.openbox.org/?p=dana/openbox.git;a=commit;h=3991e148 -Patch3: openbox-3.5.0-gnomesession-fixes.patch -# https://github.com/Mikachu/openbox/commit/339c19d1 -Patch4: openbox-3.5.0-Fix-crash-on-unexpected-NET_WM_MOVERESIZE_CANCEL-messages.patch - -Requires: %{name}-libs = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} # required by xdg-menu and xdg-autostart scripts -Requires: pyxdg +Requires: python3-pyxdg +# used by xdg-menu for icon support (optional) +Suggests: python3-gobject # as discussed in https://bugzilla.redhat.com/860997 Requires: redhat-menus +BuildRequires: make +BuildRequires: gcc BuildRequires: gettext BuildRequires: desktop-file-utils BuildRequires: pango-devel @@ -38,8 +35,15 @@ BuildRequires: libXt-devel BuildRequires: libXrandr-devel BuildRequires: libXinerama-devel BuildRequires: imlib2-devel +# workaround for yum to install correct libpng-devel +BuildRequires: libpng-devel Provides: firstboot(windowmanager) +# gdm-control, gnome-control-center and openbox-gnome were removed in 3.5.2-5 +Obsoletes: gdm-control < 3.5.2-5 +Obsoletes: gnome-panel-control < 3.5.2-5 +Obsoletes: %{name}-gnome < 3.5.2-5 + %description Openbox is a window manager designed explicity for standards-compliance and speed. It is fast, lightweight, and heavily configurable (using XML for its @@ -50,14 +54,12 @@ actions, multi-head/Xinerama support, and dynamically generated "pipe menus." For a full list of the FreeDesktop.org standards with which it is compliant, please see the COMPLIANCE file in the included documentation of this package. For a graphical configuration editor, you'll need to install the obconf -package. For a graphical menu editor, you'll need to install the obmenu package. %package devel Summary: Development files for %{name} -Group: Development/Libraries -Requires: %{name}-libs = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} Requires: pkgconfig Requires: pango-devel Requires: libxml2-devel @@ -70,55 +72,16 @@ developing applications that use %{name}. %package libs Summary: Shared libraries for %{name} -Group: Development/Libraries %description libs The %{name}-libs package contains shared libraries used by %{name}. -%package gnome -Summary: GNOME integration for %{name} -Group: User Interface/Desktops -Requires: %{name} = %{version}-%{release} -Requires: gnome-session -Requires: gnome-panel-control -Requires: gdm-control - -%description gnome -The %{name}-gnome package contains the files needed for using %{name} inside a -GNOME session. - - -%package -n gnome-panel-control -Summary: Command line utility to control the GNOME panel -Group: User Interface/Desktops -Requires: %{name} = %{version}-%{release} -Requires: gnome-panel - -%description -n gnome-panel-control -gnome-panel-control can be used to invoke the GNOME panel run or main menu from -the command line. It is originally a helper utility of openbox since -gnome-panel is no longer managing its own key bindings. - - -%package -n gdm-control -Summary: Command line utility to control the GNOME Display Manager -Group: User Interface/Desktops -Requires: %{name} = %{version}-%{release} -Requires: gnome-panel - -%description -n gdm-control -gdm-control can be used to control the GNOME Display Manager. It can invoke -it's power management functions, shut down and reboot a machine or switch users. -It is originally a helper utility of openbox since gdm lacks control over these -features. - - %package kde Summary: KDE integration for %{name} -Group: User Interface/Desktops Requires: %{name} = %{version}-%{release} -Requires: kdebase-workspace +Requires: plasma-workspace +BuildArch: noarch %description kde The %{name}-kde package contains the files needed for using %{name} inside a @@ -127,11 +90,9 @@ KDE session. %prep %setup -q -%patch1 -p1 -b .doubleclick -# patch 3 depends on patch2! -%patch2 -p1 -b .gnomesession -%patch3 -p1 -b .gnomesession-fixes -%patch4 -p1 -b .fix-crash +%patch -P1 -p1 -b .python3 +%patch -P2 -p1 -b .kf5menu +%patch -P3 -p1 -b .calc-layer %build @@ -140,12 +101,12 @@ KDE session. ## Fix RPATH hardcoding. sed -ie 's|^hardcode_libdir_flag_spec=.*$|hardcode_libdir_flag_spec=""|g' libtool sed -ie 's|^runpath_var=LD_RUN_PATH$|runpath_var=DIE_RPATH_DIE|g' libtool -make %{?_smp_mflags} +%make_build -gcc %{optflags} -o setlayout %{SOURCE1} -lX11 +gcc $RPM_OPT_FLAGS $RPM_LD_FLAGS -o setlayout %{SOURCE1} -lX11 %install -make install DESTDIR=%{buildroot} +%make_install install setlayout %{buildroot}%{_bindir} install -p %{SOURCE2} %{buildroot}%{_libexecdir}/openbox-xdg-menu @@ -160,6 +121,14 @@ install -m644 -D data/gnome-session/openbox-gnome.session \ install -m644 -D data/gnome-session/openbox-gnome-fallback.session \ %{buildroot}%{_datadir}/gnome-session/sessions/openbox-gnome-fallback.session +# remove unpackaged files +pushd %{buildroot} +rm ./%{_bindir}/{gdm-control,gnome-panel-control,%{name}-gnome-session} +rm ./%{_datadir}/xsessions/%{name}-gnome.desktop +rm ./%{_datadir}/gnome/wm-properties/openbox.desktop +rm ./%{_datadir}/gnome-session/sessions/openbox-gnome*.session +rm ./%{_mandir}/man1/%{name}-gnome-session*.1* +popd %find_lang %{name} @@ -196,32 +165,153 @@ rm -rf %{buildroot}%{_datadir}/doc/%{name} %{_libdir}/libobt.so %{_libdir}/pkgconfig/*.pc -%files gnome -%{_bindir}/%{name}-gnome-session -%{_datadir}/xsessions/%{name}-gnome.desktop -%{_datadir}/gnome/wm-properties/openbox.desktop -%{_datadir}/gnome-session/sessions/openbox-gnome*.session -%{_mandir}/man1/%{name}-gnome-session*.1* - -%files -n gnome-panel-control -%{_bindir}/gnome-panel-control - -%files -n gdm-control -%{_bindir}/gdm-control - %files kde %{_bindir}/%{name}-kde-session %{_datadir}/xsessions/%{name}-kde.desktop %{_mandir}/man1/%{name}-kde-session*.1* - -%post libs -p /sbin/ldconfig - - -%postun libs -p /sbin/ldconfig - +%ldconfig_scriptlets libs %changelog +* Thu Jul 16 2026 Fedora Release Engineering - 3.6.1-31 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + +* Fri Jan 16 2026 Fedora Release Engineering - 3.6.1-30 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Thu Jul 24 2025 Fedora Release Engineering - 3.6.1-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Fri Jan 17 2025 Fedora Release Engineering - 3.6.1-28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Thu Jul 18 2024 Fedora Release Engineering - 3.6.1-27 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Thu Jan 25 2024 Fedora Release Engineering - 3.6.1-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 3.6.1-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Jul 20 2023 Fedora Release Engineering - 3.6.1-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Jun 13 2023 Leigh Scott - 3.6.1-23 +- Rebuild fo new imlib2 + +* Thu Apr 27 2023 Miroslav Lichvar - 3.6.1-22 +- fix crash with new glib (#2178299) + +* Thu Jan 19 2023 Fedora Release Engineering - 3.6.1-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Fri Jul 22 2022 Fedora Release Engineering - 3.6.1-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Thu Jan 20 2022 Fedora Release Engineering - 3.6.1-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Thu Jul 22 2021 Fedora Release Engineering - 3.6.1-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Jan 26 2021 Fedora Release Engineering - 3.6.1-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Nov 09 2020 Miroslav Lichvar - 3.6.1-16 +- update XDG menu prefix in KDE session script (#1851755) +- drop obsolete KDE4 requirement + +* Tue Jul 28 2020 Fedora Release Engineering - 3.6.1-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jan 29 2020 Fedora Release Engineering - 3.6.1-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Oct 09 2019 Miroslav Lichvar - 3.6.1-13 +- remove obmenu from description + +* Thu Jul 25 2019 Fedora Release Engineering - 3.6.1-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Feb 01 2019 Fedora Release Engineering - 3.6.1-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jul 13 2018 Fedora Release Engineering - 3.6.1-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Apr 17 2018 Miroslav Lichvar - 3.6.1-9 +- fix pyxdg requirement + +* Tue Apr 17 2018 Miroslav Lichvar - 3.6.1-8 +- switch packaged python scripts to python3 + +* Mon Feb 26 2018 Miroslav Lichvar - 3.6.1-7 +- build setlayout with hardening LDFLAGS (#1548830) +- use macro for ldconfig scriptlets +- add gcc to build requirements + +* Thu Feb 08 2018 Fedora Release Engineering - 3.6.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Aug 03 2017 Fedora Release Engineering - 3.6.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 3.6.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 3.6.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Feb 04 2016 Fedora Release Engineering - 3.6.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jul 02 2015 Miroslav Lichvar - 3.6.1-1 +- update to 3.6.1 + +* Thu Jun 25 2015 Miroslav Lichvar - 3.6-3 +- restore libobrender compatibility (#1231693) + +* Wed Jun 17 2015 Fedora Release Engineering - 3.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon Jun 01 2015 Miroslav Lichvar - 3.6-1 +- update to 3.6 + +* Thu Mar 05 2015 Rex Dieter 3.5.2-7 +- -kde: fix deps for plasma5 + +* Sun Aug 17 2014 Fedora Release Engineering - 3.5.2-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Mon Jul 07 2014 Miroslav Lichvar - 3.5.2-5 +- drop gnome subpackages (#964977) +- fix typo in description (#1064959) + +* Sat Jun 07 2014 Fedora Release Engineering - 3.5.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue Dec 10 2013 Christoph Wickert - 3.5.2-3 +- gdm-control depends on gdm, not on gnome-panel (#964977) + +* Thu Aug 15 2013 Miroslav Lichvar - 3.5.2-2 +- Add workaround for yum to install correct libpng-devel in build + +* Tue Aug 13 2013 Miroslav Lichvar - 3.5.2-1 +- Update to 3.5.2 + +* Sat Aug 03 2013 Fedora Release Engineering - 3.5.0-12.20121001git782b28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Mar 11 2013 Miroslav Lichvar - 3.5.0-11.20121001git782b28 +- Update to git snapshot 20121001git782b28 +- Update xdg-menu to work with latest gtk3 (#914830) +- Make some dependencies arch-specific +- Make gnome and kde subpackages noarch + +* Thu Feb 14 2013 Fedora Release Engineering - 3.5.0-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + * Tue Nov 13 2012 Miroslav Lichvar - 3.5.0-9 - Update xdg-menu to work with latest pyxdg (#874633) - Remove unnecessary macros @@ -410,7 +500,7 @@ rm -rf %{buildroot}%{_datadir}/doc/%{name} - Allow building with startup-notification as an rpmbuild option (though it is disabled by default as recommended by upstream). -* Sun Sep 09 2006 Peter Gordon - 3.3.1-1 +* Sat Sep 09 2006 Peter Gordon - 3.3.1-1 - Update to new 3.3.1 from upstream * Sun Aug 27 2006 Peter Gordon - 3.3-3 diff --git a/sources b/sources index 9f31b00..34cf0c4 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ 16ca0d290cae2f4c16a35e9cdfb6f503 setlayout.c -00441b53cf14c03566c8e82643544ff9 openbox-3.5.0.tar.gz +46bf5f1edda0eda0d9e824b585988be9 openbox-3.6.1.tar.xz diff --git a/xdg-menu b/xdg-menu index 8eef84e..ccd0efd 100644 --- a/xdg-menu +++ b/xdg-menu @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python3 # # Copyright (C) 2008 Red Hat, Inc. # @@ -26,6 +26,8 @@ from xml.sax.saxutils import escape icons = True try: + import gi + gi.require_version('Gtk', '3.0') from gi.repository import Gtk except ImportError: icons = False @@ -47,13 +49,14 @@ def icon_attr(entry): iconinfo = theme.lookup_icon(name, 22, Gtk.IconLookupFlags.NO_SVG) if iconinfo: iconfile = iconinfo.get_filename() - iconinfo.free() + if hasattr(iconinfo, 'free'): + iconinfo.free() if iconfile: return ' icon="' + iconfile + '"' return '' def escape_utf8(s): - if isinstance(s, unicode): + if sys.version_info[0] < 3 and isinstance(s, unicode): s = s.encode('utf-8', 'xmlcharrefreplace') return escape(s) @@ -62,25 +65,25 @@ def entry_name(entry): def walk_menu(entry): if isinstance(entry, xdg.Menu.Menu) and entry.Show is True: - print '' \ + print('' \ % (entry_name(entry), entry_name(entry), - escape_utf8(icon_attr(entry))) - map(walk_menu, entry.getEntries()) - print '' + escape_utf8(icon_attr(entry)))) + list(map(walk_menu, entry.getEntries())) + print('') elif isinstance(entry, xdg.Menu.MenuEntry) and entry.Show is True: name = entry_name(entry.DesktopEntry) - print ' ' % (name.replace('"', ''), - escape_utf8(icon_attr(entry.DesktopEntry))) + print(' ' % (name.replace('"', ''), + escape_utf8(icon_attr(entry.DesktopEntry)))) command = re.sub(' -caption "%c"| -caption %c', ' -caption "%s"' % name, escape_utf8(entry.DesktopEntry.getExec())) command = re.sub(' [^ ]*%[fFuUdDnNickvm]', '', command) if entry.DesktopEntry.getTerminal(): command = 'xterm -title "%s" -e %s' % (name, command) - print ' ' + \ - '%s' % command - print ' ' + print(' ' + \ + '%s' % command) + print(' ') if len(sys.argv) > 1: menufile = sys.argv[1] + '.menu' @@ -99,7 +102,7 @@ if icons: menu = xdg.Menu.parse(menufile) -print '' -print '' -map(walk_menu, menu.getEntries()) -print '' +print('') +print('') +list(map(walk_menu, menu.getEntries())) +print('')