diff --git a/.gitignore b/.gitignore index 65d1291..bc8d4e8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ /setlayout.c -/openbox-3.6.1.tar.xz +/openbox-3.5.0.tar.gz 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 new file mode 100644 index 0000000..174482d --- /dev/null +++ b/openbox-3.5.0-Fix-crash-on-unexpected-NET_WM_MOVERESIZE_CANCEL-messages.patch @@ -0,0 +1,28 @@ +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 new file mode 100644 index 0000000..fa2f11d --- /dev/null +++ b/openbox-3.5.0-gnomesession-fixes.patch @@ -0,0 +1,96 @@ +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 new file mode 100644 index 0000000..1dc442e --- /dev/null +++ b/openbox-3.5.0-gnomesession.patch @@ -0,0 +1,76 @@ +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 deleted file mode 100644 index 9f00bbb..0000000 --- a/openbox-calc-layer.patch +++ /dev/null @@ -1,36 +0,0 @@ -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 new file mode 100644 index 0000000..dc668dd --- /dev/null +++ b/openbox-doubleclick.patch @@ -0,0 +1,97 @@ +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 deleted file mode 100644 index 1c3c9e5..0000000 --- a/openbox-kf5menu.patch +++ /dev/null @@ -1,12 +0,0 @@ -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 deleted file mode 100644 index f17bef3..0000000 --- a/openbox-python3.patch +++ /dev/null @@ -1,113 +0,0 @@ -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 9e1d7f4..20abf51 100644 --- a/openbox.spec +++ b/openbox.spec @@ -1,30 +1,33 @@ Name: openbox -Version: 3.6.1 -Release: 31%{?dist} +Version: 3.5.0 +Release: 9%{?dist} Summary: A highly configurable and standards-compliant X11 window manager -License: GPL-2.0-or-later +Group: User Interface/Desktops +License: GPLv2+ URL: http://openbox.org -Source0: http://openbox.org/dist/%{name}/%{name}-%{version}.tar.xz +Source0: http://openbox.org/releases/%{name}-%{version}.tar.gz 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 -Requires: %{name}-libs%{?_isa} = %{version}-%{release} +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} # required by xdg-menu and xdg-autostart scripts -Requires: python3-pyxdg -# used by xdg-menu for icon support (optional) -Suggests: python3-gobject +Requires: pyxdg # as discussed in https://bugzilla.redhat.com/860997 Requires: redhat-menus -BuildRequires: make -BuildRequires: gcc BuildRequires: gettext BuildRequires: desktop-file-utils BuildRequires: pango-devel @@ -35,15 +38,8 @@ 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 @@ -54,12 +50,14 @@ 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} -Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Group: Development/Libraries +Requires: %{name}-libs = %{version}-%{release} Requires: pkgconfig Requires: pango-devel Requires: libxml2-devel @@ -72,16 +70,55 @@ 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: plasma-workspace -BuildArch: noarch +Requires: kdebase-workspace %description kde The %{name}-kde package contains the files needed for using %{name} inside a @@ -90,9 +127,11 @@ KDE session. %prep %setup -q -%patch -P1 -p1 -b .python3 -%patch -P2 -p1 -b .kf5menu -%patch -P3 -p1 -b .calc-layer +%patch1 -p1 -b .doubleclick +# patch 3 depends on patch2! +%patch2 -p1 -b .gnomesession +%patch3 -p1 -b .gnomesession-fixes +%patch4 -p1 -b .fix-crash %build @@ -101,12 +140,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_build +make %{?_smp_mflags} -gcc $RPM_OPT_FLAGS $RPM_LD_FLAGS -o setlayout %{SOURCE1} -lX11 +gcc %{optflags} -o setlayout %{SOURCE1} -lX11 %install -%make_install +make install DESTDIR=%{buildroot} install setlayout %{buildroot}%{_bindir} install -p %{SOURCE2} %{buildroot}%{_libexecdir}/openbox-xdg-menu @@ -121,14 +160,6 @@ 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} @@ -165,153 +196,32 @@ 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* -%ldconfig_scriptlets libs + +%post libs -p /sbin/ldconfig + + +%postun libs -p /sbin/ldconfig + %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 @@ -500,7 +410,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). -* Sat Sep 09 2006 Peter Gordon - 3.3.1-1 +* Sun 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 34cf0c4..9f31b00 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ 16ca0d290cae2f4c16a35e9cdfb6f503 setlayout.c -46bf5f1edda0eda0d9e824b585988be9 openbox-3.6.1.tar.xz +00441b53cf14c03566c8e82643544ff9 openbox-3.5.0.tar.gz diff --git a/xdg-menu b/xdg-menu index ccd0efd..8eef84e 100644 --- a/xdg-menu +++ b/xdg-menu @@ -1,4 +1,4 @@ -#!/usr/bin/python3 +#!/usr/bin/python # # Copyright (C) 2008 Red Hat, Inc. # @@ -26,8 +26,6 @@ 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 @@ -49,14 +47,13 @@ def icon_attr(entry): iconinfo = theme.lookup_icon(name, 22, Gtk.IconLookupFlags.NO_SVG) if iconinfo: iconfile = iconinfo.get_filename() - if hasattr(iconinfo, 'free'): - iconinfo.free() + iconinfo.free() if iconfile: return ' icon="' + iconfile + '"' return '' def escape_utf8(s): - if sys.version_info[0] < 3 and isinstance(s, unicode): + if isinstance(s, unicode): s = s.encode('utf-8', 'xmlcharrefreplace') return escape(s) @@ -65,25 +62,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)))) - list(map(walk_menu, entry.getEntries())) - print('') + escape_utf8(icon_attr(entry))) + 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' @@ -102,7 +99,7 @@ if icons: menu = xdg.Menu.parse(menufile) -print('') -print('') -list(map(walk_menu, menu.getEntries())) -print('') +print '' +print '' +map(walk_menu, menu.getEntries()) +print ''