+ <_short>Restore
+ <_long>Restore window to it's original size. Note: Use the same shortcut you are using to unmaximize a window to be able to restore grid-maximized windows.
+- <Control><Super>Down
++ <Alt>F5
+
+ <_short>Opacity
+ <_long>Amount of opacity in percent
+- 100
++ 75
+ 0
+ 100
+
+@@ -76,7 +76,7 @@
+ <_long>Overlay an icon on windows once they are scaled
+ 0
+ 2
+- 0
++ 1
+
+ 0
+ <_name>None
+@@ -129,7 +129,7 @@
+ <_long>Selects where windows are scaled if multiple output devices are used.
+ 0
+ 1
+- 1
++ 0
+
+ 0
+ <_name>On current output device
+@@ -150,7 +150,7 @@
+
+ <_short>Key Bindings Toggle Scale Mode
+ <_long>Key bindings toggle scale mode instead of enabling it when pressed and disabling it when released.
+- true
++ false
+
+ <_short>Show Live Viewport Previews
+ <_long>Show live viewport previews in switcher window
+- true
++ false
+
+
+ <_short>Switch Target Preview Visibility Time
+ <_long>Duration (in s) the switch target preview should remain visible after switching ends.
+- 0.2
++ 0.4
+ 0.0
+ 2.0
+ 0.05
+@@ -43,7 +43,7 @@
+
+ <_short>Preview Scale
+ <_long>Size of the preview in %
+- 130
++ 100
+ 0
+ 400
+
+@@ -57,7 +57,7 @@
+
+ <_short>Border Width
+ <_long>Width of the border between the previews
+- 7
++ 10
+ 0
+ 30
+
+@@ -65,10 +65,10 @@
+ <_short>Outline Color
+ <_long>Outline color of the switcher window.
+
+- 0xffff
+- 0xffff
+- 0xffff
+- 0x3232
++ 0x3333
++ 0x3333
++ 0x3333
++ 0xd998
+
+
+
+@@ -78,30 +78,30 @@
+ <_short>Base Color
+ <_long>First color for the background gradient of the switcher window.
+
+- 0x0000
+- 0x0000
+- 0x0000
+- 0x6464
++ 0xcccc
++ 0xcccc
++ 0xe665
++ 0xd998
+
+
+
+ <_short>Highlight Color
+ <_long>Second color for the background gradient of the switcher window.
+
+- 0x0000
+- 0x0000
+- 0x0000
+- 0x6464
++ 0xf332
++ 0xf332
++ 0xffff
++ 0xd998
+
+
+
+ <_short>Shadow Color
+ <_long>Third color for the background gradient of the switcher window.
+
+- 0x0000
+- 0x0000
+- 0x0000
+- 0x6464
++ 0xf332
++ 0xf332
++ 0xffff
++ 0xd998
+
+
+
+@@ -112,20 +112,20 @@
+ <_short>Base Color
+ <_long>First color for the thumb gradient of the switcher window.
+
+- 0x5555
+- 0x5555
+- 0x5555
+- 0x3232
++ 0x3333
++ 0x3333
++ 0x3333
++ 0x5999
+
+
+
+ <_short>Highlight Color
+ <_long>Second color for the thumb gradient of the switcher window.
+
+- 0x5555
+- 0x5555
+- 0x5555
+- 0x3232
++ 0x3fff
++ 0x3fff
++ 0x3fff
++ 0x3fff
+
+
+ <_short>Auto Switch Vp And Window
+ <_long>Auto switch the viewport and move window when Alt-Tab to window that is more than half contained in another viewport
+- false
++ true
+
+
+
+@@ -356,7 +356,7 @@
+
+ <_short>Edge Flip Move
+ <_long>Flip viewport when moving a window to a screen edge
+- false
++ true
+
+
+ <_short>Edge Flip DnD
+diff -Nur original/tests/system/xorg-gtest/tests/compiz_xorg_gtest_ewmh.cpp modified/tests/system/xorg-gtest/tests/compiz_xorg_gtest_ewmh.cpp
+--- original/tests/system/xorg-gtest/tests/compiz_xorg_gtest_ewmh.cpp 2019-02-16 12:44:41.000000000 +0000
++++ modified/tests/system/xorg-gtest/tests/compiz_xorg_gtest_ewmh.cpp 2019-02-17 14:11:58.782757647 +0000
+@@ -46,7 +46,7 @@
+
+ namespace
+ {
+-unsigned int DEFAULT_VIEWPORT_WIDTH = 1;
++unsigned int DEFAULT_VIEWPORT_WIDTH = 4;
+ unsigned int DEFAULT_VIEWPORT_HEIGHT = 1;
+
+ bool Advance (Display *d, bool r)
diff --git a/patches/compiz/0002-focus-prevention-disable.patch b/patches/compiz/0002-focus-prevention-disable.patch
new file mode 100644
index 00000000..df2fcef1
--- /dev/null
+++ b/patches/compiz/0002-focus-prevention-disable.patch
@@ -0,0 +1,12 @@
+diff -Naur original/metadata/core.xml.in modified/metadata/core.xml.in
+--- original/metadata/core.xml.in 2013-07-23 20:58:03.000000000 +0100
++++ modified/metadata/core.xml.in 2014-06-11 09:06:53.839302487 +0100
+@@ -114,7 +114,7 @@
+ <_long>Level of focus stealing prevention
+ 0
+ 4
+- 1
++ 0
+
+ 0
+ <_name>Off
diff --git a/patches/compiz/0003-gtk-extents.patch b/patches/compiz/0003-gtk-extents.patch
new file mode 100644
index 00000000..5c8ec1ec
--- /dev/null
+++ b/patches/compiz/0003-gtk-extents.patch
@@ -0,0 +1,13 @@
+# Diff from https://code.launchpad.net/~albertsmuktupavels/compiz/add-gtk-frame-extents-to-net-supported/+merge/257303
+=== modified file 'src/screen.cpp'
+--- a/src/screen.cpp 2014-12-02 19:37:10 +0000
++++ b/src/screen.cpp 2015-04-23 20:41:24 +0000
+@@ -2362,6 +2362,7 @@
+
+ atoms.push_back (Atoms::wmUserTime);
+ atoms.push_back (Atoms::frameExtents);
++ atoms.push_back (Atoms::frameGtkExtents);
+ atoms.push_back (Atoms::frameWindow);
+
+ atoms.push_back (Atoms::winState);
+
diff --git a/patches/compiz/0004-screenshot-launch-fix.patch b/patches/compiz/0004-screenshot-launch-fix.patch
new file mode 100644
index 00000000..3bd753f8
--- /dev/null
+++ b/patches/compiz/0004-screenshot-launch-fix.patch
@@ -0,0 +1,15 @@
+diff -rupN compiz/plugins/screenshot/src/screenshot.cpp compiz.new/plugins/screenshot/src/screenshot.cpp
+--- compiz/plugins/screenshot/src/screenshot.cpp 2014-09-01 00:21:45.807271000 -0400
++++ compiz.new/plugins/screenshot/src/screenshot.cpp 2014-09-01 00:52:30.634288167 -0400
+@@ -434,10 +434,10 @@ namespace
+ compLogMessage ("screenshot", CompLogLevelWarn, "glReadPixels failed");
+ }
+
+- if (!success)
++ if (success)
+ success =
+ launchApplicationAndTakeScreenshot (alternativeApplication,
+- directory);
++ path);
+
+ return success;
\ No newline at end of file
diff --git a/patches/compiz/0005-no-compile-gschemas.patch b/patches/compiz/0005-no-compile-gschemas.patch
new file mode 100644
index 00000000..05627a85
--- /dev/null
+++ b/patches/compiz/0005-no-compile-gschemas.patch
@@ -0,0 +1,19 @@
+diff -Nur original/cmake/recompile_gsettings_schemas_in_dir_user_env.cmake modified/cmake/recompile_gsettings_schemas_in_dir_user_env.cmake
+--- original/cmake/recompile_gsettings_schemas_in_dir_user_env.cmake 2019-02-16 12:44:41.000000000 +0000
++++ modified/cmake/recompile_gsettings_schemas_in_dir_user_env.cmake 2019-02-16 23:36:58.589706824 +0000
+@@ -15,9 +15,9 @@
+
+ find_program (GLIB_COMPILE_SCHEMAS glib-compile-schemas)
+
+-if (GLIB_COMPILE_SCHEMAS)
+-
+- message ("-- Recompiling GSettings schemas in ${SCHEMADIR}")
+- execute_process (COMMAND ${GLIB_COMPILE_SCHEMAS} ${SCHEMADIR})
+-
+-endif (GLIB_COMPILE_SCHEMAS)
++#if (GLIB_COMPILE_SCHEMAS)
++#
++# message ("-- Recompiling GSettings schemas in ${SCHEMADIR}")
++# execute_process (COMMAND ${GLIB_COMPILE_SCHEMAS} ${SCHEMADIR})
++#
++#endif (GLIB_COMPILE_SCHEMAS)
diff --git a/patches/compiz/0006-drop-toggle-shaded.patch b/patches/compiz/0006-drop-toggle-shaded.patch
new file mode 100644
index 00000000..d58598dd
--- /dev/null
+++ b/patches/compiz/0006-drop-toggle-shaded.patch
@@ -0,0 +1,40 @@
+From 25b6fcf77f1731ac9e0949fafe8da00777e33ebc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jeremy=20B=C3=ADcha?=
+Date: Thu, 7 Mar 2024 15:46:39 -0500
+Subject: [PATCH 3/4] Drop toggle-shaded since it's no longer included in
+ gsettings-desktop-schemas 45
+
+---
+ gtk/gnome/50-compiz-windows.xml.in | 2 --
+ .../compiz-profile-independent-keys.convert | 1 -
+ 3 files changed, 28 deletions(-)
+ delete mode 100644 a
+
+diff --git a/gtk/gnome/50-compiz-windows.xml.in b/gtk/gnome/50-compiz-windows.xml.in
+index e947db654..5385ead1a 100644
+--- a/gtk/gnome/50-compiz-windows.xml.in
++++ b/gtk/gnome/50-compiz-windows.xml.in
+@@ -11,8 +11,6 @@
+
+
+
+-
+-
+
+
+
+diff --git a/postinst/convert-files/compiz-profile-independent-keys.convert b/postinst/convert-files/compiz-profile-independent-keys.convert
+index fdc949e4f..f15c23964 100644
+--- a/postinst/convert-files/compiz-profile-independent-keys.convert
++++ b/postinst/convert-files/compiz-profile-independent-keys.convert
+@@ -39,7 +39,6 @@ toggle-fullscreen = /apps/metacity/window_keybindings/toggle_fullscreen
+ toggle-maximized = /apps/metacity/window_keybindings/toggle_maximized
+ maximize = /apps/metacity/window_keybindings/maximize
+ unmaximize = /apps/metacity/window_keybindings/unmaximize
+-toggle-shaded = /apps/metacity/window_keybindings/toggle_shaded
+ close = /apps/metacity/window_keybindings/close
+ minimize = /apps/metacity/window_keybindings/minimize
+ begin-move = /apps/metacity/window_keybindings/begin_move
+--
+2.45.1
+
diff --git a/patches/compiz/0007-64-bit-time-t-compat.patch b/patches/compiz/0007-64-bit-time-t-compat.patch
new file mode 100644
index 00000000..cee1698c
--- /dev/null
+++ b/patches/compiz/0007-64-bit-time-t-compat.patch
@@ -0,0 +1,43 @@
+Description: fix build with _TIME_BITS=64
+ The startup-notification API takes a long * where it ought to have always
+ taken a time_t *. As a consequence, changing the size of time_t makes
+ callers fail to build. Work around this by safely casting to a long.
+ This will continue to work on 32-bit systems until 2038, by which time
+ all the 32-bit systems will be dead or no longer running GUIs or at least
+ not using libstartup-notification0.
+Author: Steve Langasek
+Forwarded: no
+Last-Update: 2024-03-15
+
+Index: compiz-0.9.14.2+22.10.20220822/src/screen.cpp
+===================================================================
+--- compiz-0.9.14.2+22.10.20220822.orig/src/screen.cpp
++++ compiz-0.9.14.2+22.10.20220822/src/screen.cpp
+@@ -2315,19 +2315,22 @@
+ bool
+ cps::StartupSequence::handleStartupSequenceTimeout ()
+ {
+- struct timeval now, active;
++ struct timeval now;
+ double elapsed;
+
+ gettimeofday (&now, NULL);
+
+ foreach (CompStartupSequence *s, startupSequences)
+ {
++ /* workaround for broken startup-notification api that uses
++ a long where it should have used time_t */
++ long seconds, useconds;
+ sn_startup_sequence_get_last_active_time (s->sequence,
+- &active.tv_sec,
+- &active.tv_usec);
++ &seconds,
++ &useconds);
+
+- elapsed = ((((double) now.tv_sec - active.tv_sec) * 1000000.0 +
+- (now.tv_usec - active.tv_usec))) / 1000.0;
++ elapsed = ((((double) now.tv_sec - seconds) * 1000000.0 +
++ (now.tv_usec - useconds))) / 1000.0;
+
+ if (elapsed > STARTUP_TIMEOUT_DELAY)
+ sn_startup_sequence_complete (s->sequence);
diff --git a/patches/compiz/1001-fix-crash-in-vertexbuffer.patch b/patches/compiz/1001-fix-crash-in-vertexbuffer.patch
new file mode 100644
index 00000000..b44be7a8
--- /dev/null
+++ b/patches/compiz/1001-fix-crash-in-vertexbuffer.patch
@@ -0,0 +1,13 @@
+diff --git a/plugins/opengl/src/vertexbuffer.cpp b/plugins/opengl/src/vertexbuffer.cpp
+index b102016..4e314c2 100644
+--- a/plugins/opengl/src/vertexbuffer.cpp
++++ b/plugins/opengl/src/vertexbuffer.cpp
+@@ -164,7 +164,7 @@ void GLVertexBuffer::addVertices (GLuint nVertices, const GLfloat *vertices)
+
+ GLfloat *GLVertexBuffer::getVertices() const
+ {
+- return &priv->vertexData[0];
++ return priv->vertexData.data();
+ }
+
+ int GLVertexBuffer::getVertexStride() const