From db5bcfe59fbb40d9105348a1e19e2a499cc05eb37432a9809b71c866079bf91b Mon Sep 17 00:00:00 2001
From: Richard Brown <rbrown@suse.com>
Date: Tue, 30 Mar 2021 19:05:50 +0000
Subject: [PATCH] Accepting request 873727 from X11:Solus

new

OBS-URL: https://build.opensuse.org/request/show/873727
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/budgie-extras?expand=0&rev=1
---
 .gitattributes                 |  23 ++
 .gitignore                     |   1 +
 budgie-extras-1.1.0.tar.xz     |   3 +
 budgie-extras-1.1.0.tar.xz.asc |  16 +
 budgie-extras.changes          |   5 +
 budgie-extras.keyring          |  63 ++++
 budgie-extras.spec             | 575 +++++++++++++++++++++++++++++++++
 executable-location.patch      |  90 ++++++
 python3-shebangs.patch         | 220 +++++++++++++
 xdg-config.patch               | 170 ++++++++++
 10 files changed, 1166 insertions(+)
 create mode 100644 .gitattributes
 create mode 100644 .gitignore
 create mode 100644 budgie-extras-1.1.0.tar.xz
 create mode 100644 budgie-extras-1.1.0.tar.xz.asc
 create mode 100644 budgie-extras.changes
 create mode 100644 budgie-extras.keyring
 create mode 100644 budgie-extras.spec
 create mode 100644 executable-location.patch
 create mode 100644 python3-shebangs.patch
 create mode 100644 xdg-config.patch

diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..9b03811
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,23 @@
+## Default LFS
+*.7z filter=lfs diff=lfs merge=lfs -text
+*.bsp filter=lfs diff=lfs merge=lfs -text
+*.bz2 filter=lfs diff=lfs merge=lfs -text
+*.gem filter=lfs diff=lfs merge=lfs -text
+*.gz filter=lfs diff=lfs merge=lfs -text
+*.jar filter=lfs diff=lfs merge=lfs -text
+*.lz filter=lfs diff=lfs merge=lfs -text
+*.lzma filter=lfs diff=lfs merge=lfs -text
+*.obscpio filter=lfs diff=lfs merge=lfs -text
+*.oxt filter=lfs diff=lfs merge=lfs -text
+*.pdf filter=lfs diff=lfs merge=lfs -text
+*.png filter=lfs diff=lfs merge=lfs -text
+*.rpm filter=lfs diff=lfs merge=lfs -text
+*.tbz filter=lfs diff=lfs merge=lfs -text
+*.tbz2 filter=lfs diff=lfs merge=lfs -text
+*.tgz filter=lfs diff=lfs merge=lfs -text
+*.ttf filter=lfs diff=lfs merge=lfs -text
+*.txz filter=lfs diff=lfs merge=lfs -text
+*.whl filter=lfs diff=lfs merge=lfs -text
+*.xz filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text
+*.zst filter=lfs diff=lfs merge=lfs -text
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..57affb6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.osc
diff --git a/budgie-extras-1.1.0.tar.xz b/budgie-extras-1.1.0.tar.xz
new file mode 100644
index 0000000..6aae24b
--- /dev/null
+++ b/budgie-extras-1.1.0.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:674fdb41a65189efeb00ba085213fdde9a2b7f09f5361a263a2bc11d1ced4159
+size 7387520
diff --git a/budgie-extras-1.1.0.tar.xz.asc b/budgie-extras-1.1.0.tar.xz.asc
new file mode 100644
index 0000000..3f6b640
--- /dev/null
+++ b/budgie-extras-1.1.0.tar.xz.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQIzBAABCgAdFiEEHh+wAXyZiorixJimwuqoomrcWe4FAl9j2pkACgkQwuqoomrc
+We5ZqBAAghbyo4HLLfAHyQzkRmMILoeOToLZFwBJl+rkAl7sXbxNRIxDCbE6TidY
+weum13LDojaePunKgDbj429Y6mwdDv+5Z9SuGYltbzn7Q19EH2A38JpaxWCMXsQy
+BoOKpE9488GzRineBY0wpKepv+wN85V/4fdIKM/7M+eg+fL2TeQeek7V60B6UHIx
+uLCkVPClxz1h7RAbRZd/Fy1HjZb1As/JcF/374Ry1lujuDReYuAakK7bJNIPnIFn
+MCWndty6Cwqs/yvekCF+Bmy/HwRfEeP2TXbOm5UE6UkvFuyoGk/Bo4MV86zxpQiX
+YIOaDS17lRHOAkGiAS2Ds9dwrmq8kZJWbPHpXGmI9b0wD7mdlTKzOPrrEvD5YYNZ
+367WvbXFb0fFf2RnDRRGMMK1eHHtvvB+fXfe3ndN/ELX+ly8zkJgrosFFTdb4r/Y
+cutPheuesKV+SbQbt1y18Aah1JpiNePDQCM13/rOF8tus1hBU/emdTZdzs53NBRx
+I6h94vID7NacqW8s9XQTwS+xl6opYxLyzFqYwi3prRpSA2K6aFFQumjW8BTlwSCF
+t11LN6lyQt4SKd4nhvtuRVKTaNVBAdpdy6PlQcbalentVnE5PmjYwjAWXA3cFYTf
+z62Xy+kgMMki6VLWcTUIb7d2otWhQGMudw3BMk7rvtegi9eN9bI=
+=c6LV
+-----END PGP SIGNATURE-----
diff --git a/budgie-extras.changes b/budgie-extras.changes
new file mode 100644
index 0000000..49e04cc
--- /dev/null
+++ b/budgie-extras.changes
@@ -0,0 +1,5 @@
+-------------------------------------------------------------------
+Wed Feb 17 11:13:22 UTC 2021 - Callum Farmer <gmbr3@opensuse.org>
+
+- Initial packaging version 1.1.0
+
diff --git a/budgie-extras.keyring b/budgie-extras.keyring
new file mode 100644
index 0000000..33f86cf
--- /dev/null
+++ b/budgie-extras.keyring
@@ -0,0 +1,63 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+Ya47UvVb+Gw7y/Ea2puV7jGYYQ==
+=lUSL
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/budgie-extras.spec b/budgie-extras.spec
new file mode 100644
index 0000000..79510b3
--- /dev/null
+++ b/budgie-extras.spec
@@ -0,0 +1,575 @@
+#
+# spec file for package budgie-extras
+#
+# Copyright (c) 2021 SUSE LLC
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
+#
+
+Name:           budgie-extras
+Version:        1.1.0
+Release:        0
+Summary:        Additional Budgie Desktop enhancements for user experience
+License:        GPL-3.0-or-later
+Group:          System/GUI/Other
+URL:            https://github.com/UbuntuBudgie/%{name}
+Source:         %{url}/releases/download/v%{version}/%{name}-%{version}.tar.xz
+Source1:        %{url}/releases/download/v%{version}/%{name}-%{version}.tar.xz.asc
+Source2:        %{name}.keyring
+# PATCH-FIX-OPENSUSE Change all shebang lines to /usr/bin/python3
+Patch:          python3-shebangs.patch
+# PATCH-FIX-OPENSUSE Correct location of executable in desktop file
+Patch1:         executable-location.patch
+Patch2:         xdg-config.patch
+BuildRequires:  meson
+BuildRequires:  pkgconfig
+BuildRequires:  vala
+BuildRequires:  intltool
+BuildRequires:  fdupes
+BuildRequires:  pkgconfig(budgie-1.0)
+BuildRequires:  pkgconfig(gee-0.8)
+BuildRequires:  pkgconfig(granite)
+BuildRequires:  pkgconfig(libsoup-2.4)
+BuildRequires:  pkgconfig(json-glib-1.0)
+BuildRequires:  pkgconfig(libgnome-menu-3.0)
+BuildRequires:  pkgconfig(libwnck-3.0)
+BuildRequires:  pkgconfig(keybinder-3.0)
+BuildRequires:  pkgconfig(gnome-settings-daemon)
+BuildRequires:  pkgconfig(libnm)
+BuildRequires:  pkgconfig(libnma)
+BuildRequires:  pkgconfig(plank)
+BuildRequires:  pkgconfig(libhandy-1)
+# All applets
+Recommends: budgie-app-launcher-applet
+Recommends: budgie-brightness-controller-applet
+Recommends: budgie-clockworks-applet
+Recommends: budgie-countdown-applet
+Recommends: budgie-dropby-applet
+Recommends: budgie-fuzzyclock-applet
+Recommends: budgie-hotcorners-applet
+Recommends: budgie-kangaroo-applet
+Recommends: budgie-keyboard-autoswitch-applet
+Recommends: budgie-network-manager-applet
+Recommends: budgie-previews
+Recommends: budgie-quickchar
+Recommends: budgie-quicknote-applet
+Recommends: budgie-recentlyused-applet
+Recommends: budgie-rotation-lock-applet
+Recommends: budgie-showtime-applet
+Recommends: budgie-takeabreak-applet
+Recommends: budgie-trash-applet
+Recommends: budgie-visualspace-applet
+Recommends: budgie-wallstreet
+Recommends: budgie-weathershow-applet
+Recommends: budgie-window-mover-applet
+Recommends: budgie-window-shuffler
+Recommends: budgie-workspace-overview-applet
+Recommends: budgie-workspace-stopwatch-applet
+Recommends: budgie-workspace-wallpaper-applet
+
+%description
+Additional Budgie Desktop enhancements for the user experience
+
+%package -n budgie-app-launcher-applet
+Summary:  App Launcher applet
+Requires: python3-gobject-Gdk
+
+%description -n budgie-app-launcher-applet
+App Launcher is a Budgie Desktop applet for productivity. This applet lists your favourite apps.
+
+%package -n budgie-brightness-controller-applet
+Summary:  Brightness controller applet
+Requires: budgie-extras-lang
+
+%description -n budgie-brightness-controller-applet
+Brightness Controller is a Budgie Desktop applet for productivity.
+
+%package -n budgie-clockworks-applet
+Summary:  Clockworks applet
+Requires: python3-CairoSVG
+Requires: python3-gobject-Gdk
+Requires: python3-Pillow
+Requires: python3-svgwrite
+
+%description -n budgie-clockworks-applet
+A multi-clock applet to show the time across multiple timezones. 
+Clocks can be created and deleted in a single click, and easily be (re-) named. 
+Timezones can be looked up from the applet's popup menu.
+
+%package -n budgie-countdown-applet
+Summary:  Countdown applet
+Requires: python3-gobject-Gdk
+Requires: python3-psutil
+Requires: sound-theme-freedesktop
+Requires: vorbis-tools
+Requires: zenity
+
+%description -n budgie-countdown-applet
+A count down applet with the following options: ring a bell, flash the (panel) icon, display a message window or run a (any) command. 
+The applet also offers the option to overrule possible user settings on suspend, to keep the clock going while time is running.
+
+%package -n budgie-dropby-applet
+Summary:  DropBy applet
+Requires: python3-gobject-Gdk
+Requires: python3-psutil
+Requires: python3-pyudev
+Requires: util-linux
+Requires: wmctrl
+Requires: zenity
+
+%description -n budgie-dropby-applet
+The DropBy applet pops up on the occasion of connecting a usb device. 
+The applet subsequently offers the option(s) to mount, unmount/eject, and, in case of a flash drive, to make a local copy of the drive's content. 
+The info shows the free space on the volume.
+
+%package daemon
+Summary:  Daemon for Budgie Extras
+
+%description daemon
+This on logon process manages keyboard shortcuts delivered via .bde files for various extras-plugins.
+
+%package -n budgie-fuzzyclock-applet
+Summary:  Fuzzyclock Applet
+Requires: budgie-extras-lang
+
+%description -n budgie-fuzzyclock-applet
+This applet shows the time in a Fuzzy Way.
+
+%package -n budgie-hotcorners-applet
+Summary:  Hotcorners applet
+Requires: budgie-extras-lang
+Requires: dconf
+Requires: budgie-screensaver
+Requires: libnotify-tools
+Requires: xdotool
+
+%description -n budgie-hotcorners-applet
+Hotcorners offers the option to set corner actions, both from preset and custom commands. 
+Pressure can be set from Budgie Settings. 
+This is the new Vala-based hotcorners applet.
+
+%package -n budgie-kangaroo-applet
+Summary:  Kangaroo applet
+Requires: python3-gobject-Gdk
+Requires: python3-psutil
+Requires: xdg-utils
+Requires: zenity
+
+%description -n budgie-kangaroo-applet
+Kangaroo is an applet for quick & easy browsing, across (possibly) many directory layers, without having to do a single mouse click.
+
+%package -n budgie-keyboard-autoswitch-applet
+Summary:  Keyboard autoswitch applet
+Requires: python3-gobject-Gdk
+Requires: python3-psutil
+Requires: wmctrl
+Requires: xdpyinfo
+Requires: xev
+Requires: xlsatoms
+Requires: xlsclients
+Requires: xlsfonts
+Requires: xprop
+Requires: xvinfo
+Requires: xwininfo
+
+%description -n budgie-keyboard-autoswitch-applet
+Keyboard Auto Switch is an applet to use a different input keyboard layout per application. 
+Simply set a default layout to be used in general. 
+Subsequently, simply set a different layout, with the application's window in front, and an exception for that specific application is remembered.
+
+%package -n budgie-network-manager-applet
+Summary:  Network manager applet
+Requires: budgie-extras-lang
+
+%description -n budgie-network-manager-applet
+This is a fork of Wingpanel Network Indicator, ported to budgie desktop
+
+%package -n budgie-previews
+Summary:  Previews applet
+Requires: budgie-extras-daemon
+Requires: xinput
+Requires: xprintidle
+
+%description -n budgie-previews
+Provides window previews capabilities for the Budgie Desktop
+
+%package -n budgie-quickchar
+Summary:  Quickchar applet
+Requires: budgie-extras-daemon
+Requires: python3-gobject-Gdk
+Requires: python3-pyperclip
+Requires: python3-python-xlib
+Requires: wmctrl
+Requires: xdpyinfo
+Requires: xev
+Requires: xlsatoms
+Requires: xlsclients
+Requires: xlsfonts
+Requires: xprop
+Requires: xvinfo
+Requires: xwininfo
+
+%description -n budgie-quickchar
+QuickChar is a mini-app to quickly choose and insert equivalents of ascii characters. 
+QuickChar is activated via the Budgie Menu.
+
+%package -n budgie-quicknote-applet
+Summary:  Quicknote applet
+Requires: budgie-extras-lang
+
+%description -n budgie-quicknote-applet
+Quicknote is an applet to provide the easiest possible way to make small notes. 
+Just click the icon and write down your notes. 
+QuickNote autosaves the text while writing, and comes with a ten- level undo/redo function.
+
+%package -n budgie-recentlyused-applet
+Summary:  Recently Used applet
+Requires: budgie-extras-lang
+Requires: xdg-utils
+
+%description -n budgie-recentlyused-applet
+Show (Gtk applications') recently used items in a menu.
+
+%package -n budgie-rotation-lock-applet
+Summary:  Rotationlock applet
+Requires: python3-gobject-Gdk
+
+%description -n budgie-rotation-lock-applet
+RotationLock is a simple applet that lets you toggle the "Rotation Lock" feature for Budgie.
+
+%package -n budgie-showtime-applet
+Summary:  Showtime applet
+Requires: budgie-extras-lang
+Requires: dconf
+
+%description -n budgie-showtime-applet
+Budgie Showtime is a digital desktop clock, showing time, and optionally, date. 
+Textcolor of both can be set separately from the applet's menu.
+
+%package -n budgie-takeabreak-applet
+Summary:  Takeabreak applet
+Requires: python3-gobject-Gdk
+Requires: iceauth
+Requires: sessreg
+Requires: rgb
+Requires: xcmsdb
+Requires: xgamma
+Requires: xhost
+Requires: xmodmap
+Requires: xrandr
+Requires: xrdb
+Requires: xrefresh
+Requires: xset
+Requires: xsetmode
+Requires: xsetpointer
+Requires: xsetroot
+Requires: xstdcmap
+Requires: xvidtune
+
+%description -n budgie-takeabreak-applet
+Budgie TakeaBreak is a pomodoro- like applet, to make sure to take regular breaks from working. 
+Options from Budgie Settings include turning the screen upside down, dim the screen, lock screen or show a countdown message on break time. 
+The applet can be accessed quickly from the panel to temporarily switch it off.
+
+%package -n budgie-trash-applet
+Summary:  Trash applet
+Requires: budgie-extras-lang
+
+%description -n budgie-trash-applet
+Trash is a Budgie Desktop applet for productivity.
+
+%package -n budgie-visualspace-applet
+Summary:  Visualspace applet
+Requires: budgie-extras-lang
+
+%description -n budgie-visualspace-applet
+Budgie VisualSpace shows the current workspace(s), as bullet(s). 
+The applet includes a menu to navigate to either one of the windows or their corresponding workspace.
+
+%package -n budgie-wallstreet
+Summary:  Wallstreet applet
+Requires: budgie-extras-lang
+
+%description -n budgie-wallstreet
+Budgie WallStreet is a mini-app to switch wallpapers on regular intervalls.
+
+%package -n budgie-weathershow-applet
+Summary:  Weathershow applet
+Requires: budgie-extras-lang
+Requires: dconf
+Requires: procps
+
+%description -n budgie-weathershow-applet
+WeatherShowII is a completely rewritten version of the existing python WeatherShow applet.
+
+%package -n budgie-window-mover-applet
+Summary:  Window Mover applet
+Requires: dconf
+Requires: python3-gobject-Gdk
+Requires: python3-psutil
+Requires: wmctrl
+Requires: xdpyinfo
+Requires: xev
+Requires: xlsatoms
+Requires: xlsclients
+Requires: xlsfonts
+Requires: xprop
+Requires: xvinfo
+Requires: xwininfo
+Requires: xdotool
+
+%description -n budgie-window-mover-applet
+Budgie WindoMover is an application (applet) to quickly move windows to any of the other workspaces.
+
+%package -n budgie-window-shuffler
+Summary:  Window shuffler applet
+Requires: budgie-extras-lang
+Requires: budgie-extras-daemon
+Requires: xdpyinfo
+Requires: xev
+Requires: xlsatoms
+Requires: xlsclients
+Requires: xlsfonts
+Requires: xprop
+Requires: xvinfo
+Requires: xwininfo
+
+%description -n budgie-window-shuffler
+GUI and keyboard friendly window arranger for the budgie desktop
+
+%package -n budgie-workspace-overview-applet
+Summary:  Workspace Overview applet
+Requires: python3-gobject-Gdk
+Requires: python3-psutil
+Requires: wmctrl
+Requires: xdpyinfo
+Requires: xev
+Requires: xlsatoms
+Requires: xlsclients
+Requires: xlsfonts
+Requires: xprop
+Requires: xvinfo
+Requires: xwininfo 
+
+%description -n budgie-workspace-overview-applet
+An applet to have quick access to all windows across all workspaces
+
+%package -n budgie-workspace-stopwatch-applet
+Summary:  Workspace stopwatch applet
+Requires: python3-gobject-Gdk
+
+%description -n budgie-workspace-stopwatch-applet
+Workspace Timer Applet is an applet to keep track of usage per workspace, e.g. to find out how much minutes/hours were actually spent on a job. 
+Workspaces can be freely named, custom names and all data are rmembered, also after logout/restart, until the RESET button is pressed.
+
+%package -n budgie-workspace-wallpaper-applet
+Summary:  Workspace Wallpaper applet
+Requires: budgie-extras-lang
+
+%description -n budgie-workspace-wallpaper-applet
+Budgie Wallpaper Workspace Switcher is an application (applet) to show a different wallpaper on each of the workspaces.
+
+%lang_package
+
+%prep
+%autosetup -p1
+
+%build
+%meson \
+  -Dxdg-appdir=%{_distconfdir}/xdg/autostart \
+  -Dwith-zeitgeist=false \
+  -Dbuild-all=false \
+  -Dbuild-wpreviews=true \
+  -Dbuild-wswitcher=true \
+  -Dbuild-hotcorners=true \
+  -Dbuild-quicknote=true \
+  -Dbuild-wmover=true \
+  -Dbuild-wsoverview=true \
+  -Dbuild-showtime=true \
+  -Dbuild-countdown=true \
+  -Dbuild-keyboard-autoswitch=true \
+  -Dbuild-rotation-lock=true \
+  -Dbuild-clockworks=true \
+  -Dbuild-dropby=true \
+  -Dbuild-kangaroo=true \
+  -Dbuild-weathershow=true \
+  -Dbuild-trash=true \
+  -Dbuild-app-launcher=true \
+  -Dbuild-recentlyused=true \
+  -Dbuild-takeabreak=true \
+  -Dbuild-workspacestopwatch=true \
+  -Dbuild-extrasdaemon=true \
+  -Dbuild-quickchar=true \
+  -Dbuild-fuzzyclock=true \
+  -Dbuild-brightness-controller=true \
+  -Dbuild-visualspace=true \
+  -Dbuild-wallstreet=true \
+  -Dbuild-window-shuffler=true \
+  -Dbuild-network-manager=true \
+  %{nil}
+
+%meson_build
+
+%install
+%meson_install
+%find_lang %{name}
+%fdupes -s %{buildroot}
+
+%files
+%license LICENSE
+%doc README.md
+
+%files daemon
+%{_datadir}/budgie-desktop
+%{_libdir}/budgie-extras-daemon
+%{_datadir}/budgie-extras-daemon
+%{_bindir}/budgie-extras-daemon
+%{_mandir}/man1/budgie-extras-daemon.1.gz
+%{_distconfdir}/xdg/autostart/budgie-extras-daemon.desktop
+
+%files -n budgie-app-launcher-applet
+%{_libdir}/budgie-desktop/plugins/budgie-app-launcher
+%{_datadir}/pixmaps/budgie-app-launcher-applet-symbolic.svg
+%{_datadir}/pixmaps/budgie-app-launcher-edit-symbolic.svg
+
+%files -n budgie-brightness-controller-applet
+%{_libdir}/budgie-desktop/plugins/budgie-brightness-controller
+%{_datadir}/pixmaps/budgie-brightness-controller-1-symbolic.svg
+
+%files -n budgie-clockworks-applet
+%{_libdir}/budgie-desktop/plugins/budgie-clockworks
+%{_datadir}/pixmaps/budgie-clockworks-symbolic.svg
+%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.plugins.budgie-clockworks.gschema.xml
+
+%files -n budgie-countdown-applet
+%{_datadir}/pixmaps/cr*.png
+%{_datadir}/pixmaps/budgie-countdown-symbolic.svg
+%{_libdir}/budgie-desktop/plugins/budgie-countdown
+%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.plugins.budgie-countdown.gschema.xml
+
+%files -n budgie-dropby-applet
+%{_datadir}/pixmaps/budgie-dropby*.svg
+%{_libdir}/budgie-desktop/plugins/budgie-dropby
+%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.plugins.budgie-dropby.gschema.xml
+
+%files -n budgie-fuzzyclock-applet
+%{_libdir}/budgie-desktop/plugins/budgie-fuzzyclock
+
+%files -n budgie-hotcorners-applet
+%{_datadir}/pixmaps/budgie-hotcorners-symbolic.svg
+%{_libdir}/budgie-desktop/plugins/budgie-hotcorners
+%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.plugins.budgie-hotcorners.gschema.xml
+
+%files -n budgie-kangaroo-applet
+%{_datadir}/pixmaps/budgie-foldertrack-symbolic.svg
+%{_libdir}/budgie-desktop/plugins/budgie-kangaroo
+
+%files -n budgie-keyboard-autoswitch-applet
+%{_datadir}/pixmaps/budgie-keyboard-autoswitch-symbolic.svg
+%{_libdir}/budgie-desktop/plugins/budgie-keyboard-autoswitch
+
+%files -n budgie-network-manager-applet
+%{_libdir}/budgie-desktop/plugins/budgie-network-manager
+
+%files -n budgie-previews
+%{_libdir}/budgie-previews
+%{_datadir}/pixmaps/budgie_wpreviews_*.png
+%{_datadir}/pixmaps/budgiewprviews.svg
+%{_datadir}/applications/previewscontrols.desktop
+%{_distconfdir}/xdg/autostart/previews-creator-autostart.desktop
+%{_distconfdir}/xdg/autostart/previews-daemon-autostart.desktop
+%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.budgie-wpreviews.gschema.xml
+
+%files -n budgie-quickchar
+%{_bindir}/quickchar
+%{_libdir}/quickchar
+%{_datadir}/quickchar
+%{_datadir}/applications/quickchar.desktop
+%{_distconfdir}/xdg/autostart/quickchar-autostart.desktop
+%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.quickchar.gschema.xml
+%{_mandir}/man1/quickchar.1.gz
+
+%files -n budgie-quicknote-applet
+%{_datadir}/pixmaps/budgie-quicknote-symbolic.svg
+%{_libdir}/budgie-desktop/plugins/budgie-quicknote
+%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.plugins.quicknote.gschema.xml
+
+%files -n budgie-recentlyused-applet
+%{_libdir}/budgie-desktop/plugins/budgie-recentlyused
+%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.plugins.budgie-recentlyused.gschema.xml
+
+%files -n budgie-rotation-lock-applet
+%{_datadir}/pixmaps/budgie-rotation-*.svg
+%{_libdir}/budgie-desktop/plugins/budgie-rotation-lock
+
+%files -n budgie-showtime-applet
+%{_datadir}/pixmaps/showtimenew-symbolic.svg
+%{_libdir}/budgie-desktop/plugins/budgie-showtime
+%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.plugins.budgie-showtime.gschema.xml
+
+%files -n budgie-takeabreak-applet
+%{_datadir}/pixmaps/takeabreak*.svg
+%{_libdir}/budgie-desktop/plugins/budgie-takeabreak
+%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.plugins.takeabreak.gschema.xml
+
+%files -n budgie-trash-applet
+%{_datadir}/pixmaps/budgie-trash-*.svg
+%{_libdir}/budgie-desktop/plugins/budgie-trash
+
+%files -n budgie-visualspace-applet
+%{_datadir}/pixmaps/visualspace-symbolic.svg
+%{_libdir}/budgie-desktop/plugins/budgie-visualspace
+%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.plugins.budgie-visualspace.gschema.xml
+%{_distconfdir}/xdg/autostart/visualspace-autostart.desktop
+
+%files -n budgie-wallstreet
+%{_libdir}/budgie-wallstreet
+%{_datadir}/pixmaps/wallstreet-control.svg
+%{_datadir}/applications/wallstreet-control.desktop
+%{_distconfdir}/xdg/autostart/wallstreet-autostart.desktop
+%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.budgie-wallstreet.gschema.xml
+
+%files -n budgie-weathershow-applet
+%{_libdir}/budgie-desktop/plugins/budgie-weathershow
+%{_datadir}/pixmaps/budgie-wticon-symbolic.svg
+%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.plugins.weathershow.gschema.xml
+
+%files -n budgie-window-mover-applet
+%{_datadir}/pixmaps/budgie-wmover-symbolic.svg
+%{_libdir}/budgie-desktop/plugins/budgie-wmover
+
+%files -n budgie-window-shuffler
+%{_libdir}/budgie-window-shuffler
+%{_datadir}/pixmaps/shuffler-*.svg
+%{_datadir}/applications/shuffler-control.desktop
+%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.windowshuffler.gschema.xml
+%{_distconfdir}/xdg/autostart/shufflerdaemon-autostart.desktop
+%{_distconfdir}/xdg/autostart/shufflergui-autostart.desktop
+
+%files -n budgie-workspace-overview-applet
+%{_datadir}/pixmaps/ws*-symbolic.svg
+%{_datadir}/pixmaps/budgie-wsoverview-symbolic.svg
+%{_libdir}/budgie-desktop/plugins/budgie-wsoverview
+%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.plugins.budgie-wsoverview.gschema.xml
+
+%files -n budgie-workspace-stopwatch-applet
+%{_datadir}/pixmaps/budgie-wstopwatch-symbolic.svg
+%{_libdir}/budgie-desktop/plugins/budgie-workspace-stopwatch
+
+%files -n budgie-workspace-wallpaper-applet
+%{_datadir}/pixmaps/budgie-wsw-symbolic.svg
+%{_libdir}/budgie-desktop/plugins/budgie-wswitcher
+%{_datadir}/glib-2.0/schemas/org.ubuntubudgie.plugins.budgie-wswitcher.gschema.xml
+
+%files lang -f %{name}.lang
+
+%changelog
diff --git a/executable-location.patch b/executable-location.patch
new file mode 100644
index 0000000..29fae28
--- /dev/null
+++ b/executable-location.patch
@@ -0,0 +1,90 @@
+From 485df21d0225df72b50db062b6ca97d53fa6ce7c Mon Sep 17 00:00:00 2001
+From: Callum Farmer <callumjfarmer13@gmail.com>
+Date: Sat, 26 Sep 2020 14:15:39 +0100
+Subject: [PATCH] Don't hardcode the path to the QuickChar install
+
+---
+ budgie-quickchar/quickchar/data/meson.build                              |  9 +++--
+ ...quickchar.desktop => quickchar.desktop.in} |  2 +-
+ budgie-quickchar/quickchar/data/subst.py                                 | 34 +++++++++++++++++++
+ 3 files changed, 41 insertions(+), 4 deletions(-)
+ rename budgie-quickchar/quickchar/data/{quickchar.desktop => quickchar.desktop.in} (78%)
+ create mode 100644 budgie-quickchar/quickchar/data/subst.py
+
+diff --git a/budgie-quickchar/quickchar/data/meson.build b/budgie-quickchar/quickchar/data/meson.build
+index 76cada6..8bfd416 100644
+--- a/budgie-quickchar/quickchar/data/meson.build
++++ b/budgie-quickchar/quickchar/data/meson.build
+@@ -9,9 +9,13 @@ install_data(
+     install_dir: join_paths(sysconfdir, 'xdg', 'autostart')
+ )
+ 
+-install_data(
+-    'quickchar.desktop',
+-    install_dir: join_paths(datadir, 'applications')
++substprog = find_program('subst.py')
++desktopfile = custom_target('desktopfile',
++  output : 'quickchar.desktop',
++  input : 'quickchar.desktop.in',
++  command : [substprog, '@INPUT@', pkgdatadir, '@OUTPUT@'],
++  install : true,
++  install_dir : join_paths(datadir, 'applications')
+ )
+ 
+ install_data(
+diff --git a/budgie-quickchar/quickchar/data/quickchar.desktop b/budgie-quickchar/quickchar/data/quickchar.desktop.in
+similarity index 78%
+rename from budgie-quickchar/quickchar/data/quickchar.desktop
+rename to budgie-quickchar/quickchar/data/quickchar.desktop.in
+index 04ed7cd..d3e80b9 100644
+--- a/budgie-quickchar/quickchar/data/quickchar.desktop
++++ b/budgie-quickchar/quickchar/data/quickchar.desktop.in
+@@ -1,7 +1,7 @@
+ [Desktop Entry]
+ Type=Application
+ Name=QuickChar Control
+-Exec=/usr/lib/quickchar/quickchar control
++Exec=PATH_LOC/quickchar control
+ Icon=gnome-characters
+ Categories=GNOME;GTK;Utility;
+ Keywords=characters;unicode;punctuation;letters;
+diff --git a/budgie-quickchar/quickchar/data/subst.py b/budgie-quickchar/quickchar/data/subst.py
+new file mode 100644
+index 0000000..1f159c4
+--- /dev/null
++++ b/budgie-quickchar/quickchar/data/subst.py
+@@ -0,0 +1,34 @@
++#!/usr/bin/python3
++
++import os
++import subprocess
++import sys
++
++inputfile = sys.argv[1]
++replacetext = sys.argv[2]
++outputfile = sys.argv[3]
++args = len(sys.argv)
++if args == 5:
++    podir = sys.argv[4]
++
++# Read in the file
++with open(inputfile, 'r') as file:
++    filedata = file.read()
++
++# Replace the target string
++filedata = filedata.replace('PATH_LOC', replacetext)
++
++# Write the file out again
++if args == 5:
++    staging = "staging"
++else:
++    staging = ""
++with open(outputfile + staging, 'w') as file:
++    file.write(filedata)
++
++if args == 5:
++    subprocess.run(['intltool-merge',
++                    '--desktop-style',
++                    podir,
++                    outputfile + staging,
++                    outputfile])
diff --git a/python3-shebangs.patch b/python3-shebangs.patch
new file mode 100644
index 0000000..424e147
--- /dev/null
+++ b/python3-shebangs.patch
@@ -0,0 +1,220 @@
+From c38c2a56c9d6e9a75edbaeda1d20e4e2c2cda006 Mon Sep 17 00:00:00 2001
+From: Callum Farmer <callumjfarmer13@gmail.com>
+Date: Sun, 27 Sep 2020 10:19:13 +0100
+Subject: [PATCH] E: env-script-interpreter (Badness: 9)
+
+---
+ .../src/budgie-app-launcher/AppLauncherApplet.py                | 2 +-
+ budgie-clockworks/cwtools.py                                    | 2 +-
+ budgie-dropby/budgie_dropby.py                                  | 2 +-
+ budgie-dropby/checkonwin                                        | 2 +-
+ budgie-dropby/copy_flash                                        | 2 +-
+ budgie-dropby/dropby_tools.py                                   | 2 +-
+ budgie-dropby/dropover                                          | 2 +-
+ budgie-extras-daemon/src/invoke.py                              | 2 +-
+ budgie-kangaroo/budgie_kangaroo.py                              | 2 +-
+ budgie-takeabreak/message_window                                | 2 +-
+ budgie-takeabreak/takeabreak_run                                | 2 +-
+ budgie-wmover/moverbar                                          | 2 +-
+ budgie-wmover/set_keys.py                                       | 2 +-
+ budgie-wmover/wmover_panelrunner                                | 2 +-
+ budgie-wmover/wmover_run                                        | 2 +-
+ budgie-wmover/wmovertools.py                                    | 2 +-
+ budgie-wsoverview/budgie-wsoverview.py                          | 2 +-
+ budgie-wsoverview/wsotools.py                                   | 2 +-
+ .../quickchar/src/quickchar                                     | 2 +-
+ 19 files changed, 19 insertions(+), 19 deletions(-)
+
+diff --git a/budgie-app-launcher/src/budgie-app-launcher/AppLauncherApplet.py b/budgie-app-launcher/src/budgie-app-launcher/AppLauncherApplet.py
+index 601c4e6..60d8e92 100644
+--- a/budgie-app-launcher/src/budgie-app-launcher/AppLauncherApplet.py
++++ b/budgie-app-launcher/src/budgie-app-launcher/AppLauncherApplet.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ 
+ # This file is part of App Launcher
+ 
+diff --git a/budgie-clockworks/cwtools.py b/budgie-clockworks/cwtools.py
+index 69b9bfe..83bf516 100644
+--- a/budgie-clockworks/cwtools.py
++++ b/budgie-clockworks/cwtools.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ import svgwrite
+ from cairosvg import svg2png
+ import os
+diff --git a/budgie-dropby/budgie_dropby.py b/budgie-dropby/budgie_dropby.py
+index 1d3a93a..75ac965 100644
+--- a/budgie-dropby/budgie_dropby.py
++++ b/budgie-dropby/budgie_dropby.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ import gi
+ gi.require_version("Gtk", "3.0")
+ gi.require_version("Wnck", "3.0")
+diff --git a/budgie-dropby/checkonwin b/budgie-dropby/checkonwin
+index 3a78526..c163109 100755
+--- a/budgie-dropby/checkonwin
++++ b/budgie-dropby/checkonwin
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ import time
+ import os
+ import subprocess
+diff --git a/budgie-dropby/copy_flash b/budgie-dropby/copy_flash
+index 5cf2c20..8a52927 100755
+--- a/budgie-dropby/copy_flash
++++ b/budgie-dropby/copy_flash
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ import sys
+ import shutil
+ import subprocess
+diff --git a/budgie-dropby/dropby_tools.py b/budgie-dropby/dropby_tools.py
+index f1fefac..35d9f11 100644
+--- a/budgie-dropby/dropby_tools.py
++++ b/budgie-dropby/dropby_tools.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ import pyudev
+ import psutil
+ import subprocess
+diff --git a/budgie-dropby/dropover b/budgie-dropby/dropover
+index f96014c..30cfbfb 100755
+--- a/budgie-dropby/dropover
++++ b/budgie-dropby/dropover
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ import gi
+ gi.require_version("Gtk", "3.0")
+ gi.require_version("Gdk", "3.0")
+diff --git a/budgie-extras-daemon/src/invoke.py b/budgie-extras-daemon/src/invoke.py
+index 9fd9bb9..279741a 100644
+--- a/budgie-extras-daemon/src/invoke.py
++++ b/budgie-extras-daemon/src/invoke.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ 
+ # standard includes
+ import sys
+diff --git a/budgie-kangaroo/budgie_kangaroo.py b/budgie-kangaroo/budgie_kangaroo.py
+index 02d2e2c..9ba7642 100644
+--- a/budgie-kangaroo/budgie_kangaroo.py
++++ b/budgie-kangaroo/budgie_kangaroo.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ import os
+ import subprocess
+ import gi.repository
+diff --git a/budgie-takeabreak/message_window b/budgie-takeabreak/message_window
+index 5480610..1cc60d9 100755
+--- a/budgie-takeabreak/message_window
++++ b/budgie-takeabreak/message_window
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ import gi
+ gi.require_version("Gtk", "3.0")
+ from gi.repository import Gtk, Gdk, GLib
+diff --git a/budgie-takeabreak/takeabreak_run b/budgie-takeabreak/takeabreak_run
+index bb93f91..c018831 100755
+--- a/budgie-takeabreak/takeabreak_run
++++ b/budgie-takeabreak/takeabreak_run
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ import gi.repository
+ gi.require_version("Gdk", "3.0")
+ from gi.repository import Gio, Gdk
+diff --git a/budgie-wmover/moverbar b/budgie-wmover/moverbar
+index d5516e4..80c7a79 100755
+--- a/budgie-wmover/moverbar
++++ b/budgie-wmover/moverbar
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ import gi
+ 
+ gi.require_version('Gtk', '3.0')
+diff --git a/budgie-wmover/set_keys.py b/budgie-wmover/set_keys.py
+index 52b158e..5e7a22a 100644
+--- a/budgie-wmover/set_keys.py
++++ b/budgie-wmover/set_keys.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ import ast
+ import os
+ import subprocess
+diff --git a/budgie-wmover/wmover_panelrunner b/budgie-wmover/wmover_panelrunner
+index 7a1a772..44e6f94 100755
+--- a/budgie-wmover/wmover_panelrunner
++++ b/budgie-wmover/wmover_panelrunner
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ import os
+ import subprocess
+ import time
+diff --git a/budgie-wmover/wmover_run b/budgie-wmover/wmover_run
+index 0a41649..b6bf755 100755
+--- a/budgie-wmover/wmover_run
++++ b/budgie-wmover/wmover_run
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ import sys
+ import time
+ import subprocess
+diff --git a/budgie-wmover/wmovertools.py b/budgie-wmover/wmovertools.py
+index 53fe562..e4344f3 100644
+--- a/budgie-wmover/wmovertools.py
++++ b/budgie-wmover/wmovertools.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ import os
+ import subprocess
+ import time
+diff --git a/budgie-wsoverview/budgie-wsoverview.py b/budgie-wsoverview/budgie-wsoverview.py
+index f91b35a..40c47b1 100644
+--- a/budgie-wsoverview/budgie-wsoverview.py
++++ b/budgie-wsoverview/budgie-wsoverview.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ 
+ """
+ Workspace Overview
+diff --git a/budgie-wsoverview/wsotools.py b/budgie-wsoverview/wsotools.py
+index 734ad20..c1fa202 100644
+--- a/budgie-wsoverview/wsotools.py
++++ b/budgie-wsoverview/wsotools.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ 
+ """
+ Workspace Overview
+diff --git a/budgie-quickchar/quickchar/src/quickchar b/budgie-quickchar/quickchar/src/quickchar
+index 0c87acc..56f13f4 100755
+--- a/budgie-quickchar/quickchar/src/quickchar
++++ b/budgie-quickchar/quickchar/src/quickchar
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python3
++#!/usr/bin/python3
+ import os
+ import gi
+ gi.require_version("Gtk", "3.0")
+-- 
+
+
diff --git a/xdg-config.patch b/xdg-config.patch
new file mode 100644
index 0000000..b76914d
--- /dev/null
+++ b/xdg-config.patch
@@ -0,0 +1,170 @@
+From b37307248abfba6215677b662fe7abc39ec73ec8 Mon Sep 17 00:00:00 2001
+From: Callum Farmer <callumjfarmer13@gmail.com>
+Date: Sat, 24 Oct 2020 11:57:03 +0100
+Subject: [PATCH] Make xdg directory configurable
+
+---
+ budgie-extras-daemon/src/meson.build    |  2 +-
+ budgie-visualspace/data/meson.build     |  3 +--
+ budgie-wallstreet/data/meson.build      |  2 +-
+ budgie-window-shuffler/data/meson.build |  4 ++--
+ budgie-wpreviews/data/meson.build       |  5 ++---
+ meson.build                             | 14 ++++++++++++++
+ meson_options.txt                       |  2 ++
+ 7 files changed, 23 insertions(+), 9 deletions(-)
+
+diff --git a/budgie-extras-daemon/src/meson.build b/budgie-extras-daemon/src/meson.build
+index f176202..8592222 100644
+--- a/budgie-extras-daemon/src/meson.build
++++ b/budgie-extras-daemon/src/meson.build
+@@ -6,7 +6,8 @@
+     output : 'budgie-extras-daemon.desktop',
+     command : [intltool, '--desktop-style', podir, '@INPUT@', '@OUTPUT@'],
+     install : true,
+-    install_dir : join_paths(get_option('sysconfdir'), 'xdg', 'autostart'))
++    install_dir : xdg_appdir
++)
+
+ subdir('config')
+
+
+diff --git a/budgie-visualspace/data/meson.build b/budgie-visualspace/data/meson.build
+index bc3734a..2eb22f9 100644
+--- a/budgie-visualspace/data/meson.build
++++ b/budgie-visualspace/data/meson.build
+@@ -4,7 +4,6 @@ install_data(
+     install_dir: PIXMAPS_DIR
+ )
+ 
+-AUTOSTART_LOC=join_paths(sysconfdir, 'xdg', 'autostart')
+ substprog = find_program('subst.py')
+ 
+ mytarget = custom_target('autoworkspace',
+@@ -12,5 +11,5 @@ mytarget = custom_target('autoworkspace',
+   input : 'visualspace-autostart.desktop.in',
+   command : [substprog, '@INPUT@', LIB_INSTALL_DIR, '@OUTPUT@'],
+   install : true,
+-  install_dir : AUTOSTART_LOC
++  install_dir : xdg_appdir
+ )
+diff --git a/budgie-wallstreet/data/meson.build b/budgie-wallstreet/data/meson.build
+index 213823a..63478b2 100644
+--- a/budgie-wallstreet/data/meson.build
++++ b/budgie-wallstreet/data/meson.build
+@@ -9,7 +9,7 @@ mytargeta = custom_target('wallstreetautostart',
+   input : 'wallstreet-autostart.desktop.in',
+   command : [substprog, '@INPUT@', LIB_INSTALL_DIR, '@OUTPUT@', podir],
+   install : true,
+-  install_dir : join_paths(sysconfdir, 'xdg', 'autostart')
++  install_dir : xdg_appdir
+ )
+ 
+ mytargetw = custom_target('wallstreetcontrols',
+diff --git a/budgie-window-shuffler/data/meson.build b/budgie-window-shuffler/data/meson.build
+index efe9476..7ca7961 100644
+--- a/budgie-window-shuffler/data/meson.build
++++ b/budgie-window-shuffler/data/meson.build
+@@ -13,7 +13,7 @@ shufflertargetauto = custom_target('shufflerautostart',
+   input : 'shufflerdaemon-autostart.desktop.in',
+   command : [substprog, '@INPUT@', LIB_INSTALL_DIR, '@OUTPUT@', podir],
+   install : true,
+-  install_dir : join_paths(sysconfdir, 'xdg', 'autostart')
++  install_dir : xdg_appdir
+ )
+ 
+ shufflerguitargetauto = custom_target('shufflerguiautostart',
+@@ -21,7 +21,7 @@ shufflerguitargetauto = custom_target('shufflerguiautostart',
+   input : 'shufflergui-autostart.desktop.in',
+   command : [substprog, '@INPUT@', LIB_INSTALL_DIR, '@OUTPUT@', podir],
+   install : true,
+-  install_dir : join_paths(sysconfdir, 'xdg', 'autostart')
++  install_dir : xdg_appdir
+ )
+ 
+ shufflertargetw = custom_target('shufflercontrols',
+diff --git a/budgie-wpreviews/data/meson.build b/budgie-wpreviews/data/meson.build
+index c2ac8f8..9571b84 100644
+--- a/budgie-wpreviews/data/meson.build
++++ b/budgie-wpreviews/data/meson.build
+@@ -49,14 +49,13 @@ mytarget4a = custom_target('preview_currentforward_grave',
+   install_dir : BDE_LOC
+ )
+ 
+-AUTOSTART_LOC=join_paths(sysconfdir, 'xdg', 'autostart')
+ 
+ mytarget5 = custom_target('preview_creator',
+   output : 'previews-creator-autostart.desktop',
+   input : 'previews-creator-autostart.desktop.in',
+   command : [substprog, '@INPUT@', LIB_INSTALL_DIR, '@OUTPUT@'],
+   install : true,
+-  install_dir : AUTOSTART_LOC
++  install_dir : xdg_appdir
+ )
+ 
+ mytarget6 = custom_target('previews_daemon',
+@@ -64,7 +63,7 @@ mytarget6 = custom_target('previews_daemon',
+   input : 'previews-daemon-autostart.desktop.in',
+   command : [substprog, '@INPUT@', LIB_INSTALL_DIR, '@OUTPUT@'],
+   install : true,
+-  install_dir : AUTOSTART_LOC
++  install_dir : xdg_appdir
+ )
+ 
+ APP_LOC=join_paths(datadir, 'applications')
+diff --git a/meson.build b/meson.build
+index 5b2d958..ca50d90 100644
+--- a/meson.build
++++ b/meson.build
+@@ -69,6 +69,20 @@ conf.set_quoted('PREVIEWS_DIR', join_paths(libdir, PREVIEWS))
+ WSWITCHER = 'budgie-wswitcher'
+ conf.set_quoted('WSWITCHER_DIR', join_paths(PLUGINS_INSTALL_DIR, WSWITCHER))
+ 
++with_stateless = get_option('with-stateless')
++if with_stateless == true
++    warning('Only use stateless option with a supported OS like Solus')
++endif
++
++xdg_appdir = get_option('xdg-appdir')
++if xdg_appdir == ''
++    if with_stateless == true
++        xdg_appdir = join_paths(datadir, 'xdg', 'autostart')
++    else
++        xdg_appdir = join_paths(get_option('sysconfdir'), 'xdg', 'autostart')
++    endif
++endif
++
+ 
+ config_h = configure_file(
+ 	output: 'config.h',
+diff --git a/meson_options.txt b/meson_options.txt
+index 6820986..0fe925d 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -28,3 +28,5 @@ option('build-applications-menu', type: 'boolean', value: false, description: 'B
+ option('build-network-manager', type: 'boolean', value: false, description: 'Build network-manager applet')
+ option('build-window-shuffler', type: 'boolean', value: false, description: 'Build window shuffler')
+ option('with-zeitgeist', type : 'boolean', value : 'true', description : 'Add Zeitgeist support')
++option('with-stateless', type: 'boolean', value: false, description: 'Enable stateless XDG paths')
++option('xdg-appdir', type: 'string', description: 'XDG autostart path')
+From 53a059ba556fc6fc6a6d46eab0cd22e289879d98 Mon Sep 17 00:00:00 2001
+From: Callum Farmer <gmbr3@opensuse.org>
+Date: Wed, 17 Feb 2021 10:43:37 +0000
+Subject: [PATCH] Make xdg directory configurable
+
+---
+ budgie-quickchar/quickchar/data/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/budgie-quickchar/quickchar/data/meson.build b/budgie-quickchar/quickchar/data/meson.build
+index 5aabd3d..2023529 100644
+--- a/budgie-quickchar/quickchar/data/meson.build
++++ b/budgie-quickchar/quickchar/data/meson.build
+@@ -6,7 +6,7 @@ install_data(
+ 
+ install_data(
+     'quickchar-autostart.desktop',
+-    install_dir: join_paths(sysconfdir, 'xdg', 'autostart')
++    install_dir: xdg_appdir
+ )
+ 
+ substprog = find_program('subst.py')