diff --git a/meta-oe/recipes-graphics/openbox/openbox/fix-decorations.patch b/meta-oe/recipes-graphics/openbox/openbox/fix-decorations.patch
new file mode 100644
index 0000000000..e3489b7ced
--- /dev/null
+++ b/meta-oe/recipes-graphics/openbox/openbox/fix-decorations.patch
@@ -0,0 +1,73 @@
+Fix client decorations
+
+Upstream-Status: Pending
+
+diff --git a/openbox/client.c b/openbox/client.c
+index c65e350..1c82763 100644
+--- a/openbox/client.c
++++ b/openbox/client.c
+@@ -1733,8 +1733,20 @@ void client_setup_decor_and_functions(ObClient *self, gboolean reconfig)
+ switch (self->type) {
+ case OB_CLIENT_TYPE_NORMAL:
+ /* normal windows retain all of the possible decorations and
+- functionality, and can be fullscreen */
+- self->functions |= OB_CLIENT_FUNC_FULLSCREEN;
++ functionality, and can be fullscreen, unless if it can't be resized */
++ if (self->functions & OB_CLIENT_FUNC_RESIZE)
++ self->functions |= OB_CLIENT_FUNC_FULLSCREEN;
++ else {
++ self->decorations &= ~(OB_FRAME_DECOR_HANDLE |
++ OB_FRAME_DECOR_MAXIMIZE);
++
++ self->functions &= ~OB_CLIENT_FUNC_MAXIMIZE;
++
++ self->mwmhints.decorations &= ~(OB_MWM_DECOR_HANDLE |
++ OB_MWM_DECOR_MAXIMIZE);
++
++ self->mwmhints.functions &= ~OB_MWM_FUNC_MAXIMIZE;
++ }
+ break;
+
+ case OB_CLIENT_TYPE_DIALOG:
+diff --git a/openbox/frame.c b/openbox/frame.c
+index 64dd290..fc84f2f 100644
+--- a/openbox/frame.c
++++ b/openbox/frame.c
+@@ -1209,6 +1209,7 @@ static void layout_title(ObFrame *self)
+ firstcon = &self->rightmost;
+ }
+
++ self->decorations = self->client->decorations;
+ /* stop at the end of the string (or the label, which calls break) */
+ for (; *lc != '\0' && lc >= config_title_layout; lc+=i) {
+ if (*lc == 'L') {
+@@ -1217,23 +1218,23 @@ static void layout_title(ObFrame *self)
+ self->label_x = x;
+ }
+ break; /* break the for loop, do other side of label */
+- } else if (*lc == 'N') {
++ } else if (*lc == 'N' && (self->decorations & OB_FRAME_DECOR_ICON)) {
+ if (firstcon) *firstcon = OB_FRAME_CONTEXT_ICON;
+ /* icon is bigger than buttons */
+ place_button(self, lc, bwidth + 2, left, i, &x, &self->icon_on, &self->icon_x);
+- } else if (*lc == 'D') {
++ } else if (*lc == 'D' && (self->decorations & OB_FRAME_DECOR_ALLDESKTOPS)) {
+ if (firstcon) *firstcon = OB_FRAME_CONTEXT_ALLDESKTOPS;
+ place_button(self, lc, bwidth, left, i, &x, &self->desk_on, &self->desk_x);
+- } else if (*lc == 'S') {
++ } else if (*lc == 'S' && (self->decorations & OB_FRAME_DECOR_SHADE)) {
+ if (firstcon) *firstcon = OB_FRAME_CONTEXT_SHADE;
+ place_button(self, lc, bwidth, left, i, &x, &self->shade_on, &self->shade_x);
+- } else if (*lc == 'I') {
++ } else if (*lc == 'I' && (self->decorations & OB_FRAME_DECOR_ICONIFY)) {
+ if (firstcon) *firstcon = OB_FRAME_CONTEXT_ICONIFY;
+ place_button(self, lc, bwidth, left, i, &x, &self->iconify_on, &self->iconify_x);
+- } else if (*lc == 'M') {
++ } else if (*lc == 'M' && (self->decorations & OB_FRAME_DECOR_MAXIMIZE)) {
+ if (firstcon) *firstcon = OB_FRAME_CONTEXT_MAXIMIZE;
+ place_button(self, lc, bwidth, left, i, &x, &self->max_on, &self->max_x);
+- } else if (*lc == 'C') {
++ } else if (*lc == 'C' && (self->decorations & OB_FRAME_DECOR_CLOSE)) {
+ if (firstcon) *firstcon = OB_FRAME_CONTEXT_CLOSE;
+ place_button(self, lc, bwidth, left, i, &x, &self->close_on, &self->close_x);
+ } else
diff --git a/meta-oe/recipes-graphics/openbox/openbox/fix-dialog-buttons.patch b/meta-oe/recipes-graphics/openbox/openbox/fix-dialog-buttons.patch
new file mode 100644
index 0000000000..02486eecbf
--- /dev/null
+++ b/meta-oe/recipes-graphics/openbox/openbox/fix-dialog-buttons.patch
@@ -0,0 +1,38 @@
+Fix dialog support
+
+Upstream-Status: Pending
+
+diff --git a/openbox/client.c b/openbox/client.c
+index 4d54b38..c65e350 100644
+--- a/openbox/client.c
++++ b/openbox/client.c
+@@ -562,6 +562,14 @@ void client_manage(Window window, ObPrompt *prompt)
+ /* free the ObAppSettings shallow copy */
+ g_free(settings);
+
++ /* force dialogs to skip taskbar */
++ if (self->type == OB_CLIENT_TYPE_DIALOG) {
++ self->skip_taskbar = TRUE;
++
++ gulong state = prop_atoms.net_wm_state_skip_taskbar;
++ PROP_SET32(self->window, net_wm_state, atom, state);
++ }
++
+ ob_debug("Managed window 0x%lx plate 0x%x (%s)\n",
+ window, self->frame->window, self->class);
+
+@@ -1733,6 +1741,14 @@ void client_setup_decor_and_functions(ObClient *self, gboolean reconfig)
+ /* sometimes apps make dialog windows fullscreen for some reason (for
+ e.g. kpdf does this..) */
+ self->functions |= OB_CLIENT_FUNC_FULLSCREEN;
++ /* these windows cannot be maximized or minimized*/
++ self->decorations &= ~(OB_FRAME_DECOR_ICONIFY |
++ OB_FRAME_DECOR_MAXIMIZE |
++ OB_FRAME_DECOR_HANDLE);
++
++ self->functions &= ~(OB_CLIENT_FUNC_ICONIFY |
++ OB_CLIENT_FUNC_MAXIMIZE |
++ OB_CLIENT_FUNC_RESIZE);
+ break;
+
+ case OB_CLIENT_TYPE_UTILITY:
diff --git a/meta-oe/recipes-graphics/openbox/openbox/sync-with-3.4-working.patch b/meta-oe/recipes-graphics/openbox/openbox/sync-with-3.4-working.patch
new file mode 100644
index 0000000000..6cd91b9487
--- /dev/null
+++ b/meta-oe/recipes-graphics/openbox/openbox/sync-with-3.4-working.patch
@@ -0,0 +1,2739 @@
+Sync with 3.4-working branch
+
+Upstream-Status: Backport
+
+diff --git a/.gitignore b/.gitignore
+index 907abb9..bac98c7 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -22,6 +22,7 @@ doc/openbox-gnome-session.1
+ doc/openbox-kde-session.1
+ doc/openbox-session.1
+ doc/openbox.1
++doc/obxprop.1
+ libtool
+ ltmain.sh
+ m4/*.m4
+diff --git a/CHANGELOG b/CHANGELOG
+index 915e315..3ad87e9 100644
+--- a/CHANGELOG
++++ b/CHANGELOG
+@@ -1,3 +1,16 @@
++3.4.11.2:
++ * Updated Estonian and Portuguese translations.
++ * Fix a rare crash involving moving fullscreen windows to different monitors
++ * Fix a more common crash involving pressing right in a menu
++
++3.4.11.1:
++ * Updated Polish translation.
++ * Fixed bug #4519 (Incorrect focus in reused windows).
++ * Lower the default submenu open/hide delay from 200ms to 100ms.
++ * Fix some more problems with gnome integration.
++ * Update Clearlooks theme.
++ * Some other small fixes.
++
+ 3.4.11:
+ * Update Hungarian, Japanese, and Latvian translations.
+ * Make xdg-autostart use the OPENBOX environment by default, so you can use
+diff --git a/Makefile.am b/Makefile.am
+index fe6ef92..e2430e0 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -444,6 +444,7 @@ edit = $(SED) \
+ -e 's!@version\@!$(VERSION)!' \
+ -e 's!@configdir\@!$(configdir)!' \
+ -e 's!@secretbindir\@!$(secretbindir)!' \
++ -e 's!@libexecdir\@!$(libexecdir)!' \
+ -e 's!@bindir\@!$(bindir)!'
+
+ data/autostart.sh: $(srcdir)/data/autostart.sh.in Makefile
+@@ -542,6 +543,7 @@ CLEANFILES = \
+ doc/openbox-session.1 \
+ doc/openbox-gnome-session.1 \
+ doc/openbox-kde-session.1 \
++ doc/obxprop.1 \
+ data/xsession/openbox-session \
+ data/xsession/openbox-gnome-session \
+ data/xsession/openbox-kde-session \
+diff --git a/configure.ac b/configure.ac
+index 1ed2fd2..72445fa 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1,5 +1,5 @@
+ AC_PREREQ([2.54])
+-AC_INIT([openbox], [3.4.11], [http://bugzilla.icculus.org])
++AC_INIT([openbox], [3.4.11.2], [http://bugzilla.icculus.org])
+ AM_INIT_AUTOMAKE
+ AC_CONFIG_SRCDIR([openbox/openbox.c])
+
+@@ -15,9 +15,9 @@ dnl if MAJOR or MINOR version changes, be sure to change AC_INIT above to match
+ dnl
+ OB_MAJOR_VERSION=3
+ OB_MINOR_VERSION=4
+-OB_MICRO_VERSION=28
+-OB_INTERFACE_AGE=7
+-OB_BINARY_AGE=7
++OB_MICRO_VERSION=30
++OB_INTERFACE_AGE=9
++OB_BINARY_AGE=9
+ OB_VERSION=$PACKAGE_VERSION
+
+ AC_SUBST(OB_MAJOR_VERSION)
+diff --git a/data/autostart.sh.in b/data/autostart.sh.in
+index eb55558..910e5e8 100644
+--- a/data/autostart.sh.in
++++ b/data/autostart.sh.in
+@@ -22,8 +22,8 @@ if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then
+ fi
+
+ # Make GTK apps look and behave how they were set up in the gnome config tools
+-if test -x /usr/libexec/gnome-settings-daemon >/dev/null; then
+- /usr/libexec/gnome-settings-daemon &
++if test -x @libexecdir@/gnome-settings-daemon >/dev/null; then
++ @libexecdir@/gnome-settings-daemon &
+ elif which gnome-settings-daemon >/dev/null; then
+ gnome-settings-daemon &
+ # Make GTK apps look and behave how they were set up in the XFCE config tools
+diff --git a/data/gnome-wm-properties/openbox.desktop b/data/gnome-wm-properties/openbox.desktop
+index 23e690e..67e49e4 100644
+--- a/data/gnome-wm-properties/openbox.desktop
++++ b/data/gnome-wm-properties/openbox.desktop
+@@ -1,4 +1,5 @@
+ [Desktop Entry]
++Type=Application
+ Name=Openbox
+ Exec=openbox
+
+diff --git a/data/rc.xml b/data/rc.xml
+index 9c5424f..1b947b5 100644
+--- a/data/rc.xml
++++ b/data/rc.xml
+@@ -373,6 +373,12 @@
+
+ left
+
++
++
++
++
++
++
+
+
+
+@@ -383,6 +389,12 @@
+
+ right
+
++
++
++
++
++
++
+
+
+
+@@ -615,7 +627,7 @@
+ menu is hidden again -->
+ no
+
+- 200
++ 100
+