From: EarldridgeJazzedPineda <EarldridgeJazzedPineda@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] New packages for the Unity desktop environment
Date: Sat, 10 Aug 2024 07:14:45 +0200 [thread overview]
Message-ID: <20240810051445.C307522398@inbox.vuxu.org> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-51509@inbox.vuxu.org>
[-- Attachment #1: Type: text/plain, Size: 1891 bytes --]
There is an updated pull request by EarldridgeJazzedPineda against master on the void-packages repository
https://github.com/EarldridgeJazzedPineda/void-packages unity
https://github.com/void-linux/void-packages/pull/51509
New packages for the Unity desktop environment
I will the changing some of the packages in the future, but this should do for now.
#### Testing the changes
- I tested the changes in this PR: **YES**
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**
#### Local build testing
- I built this PR locally for my native architecture, x86_64-glibc
#### How to test Unity
To test the Unity desktop environment, build and install the `unity-core` package
Enable the `dbus`, `lightdm`, and `openrc-settingsd` services.
At the login screen, click on the circle next to the username and select "Unity (Default)", then login as usual.
#### Services
Here is a list of runit services that I wrote:
* indicator-datetime
* indicator-power
* indicator-session
* indicator-sound
* hud
* unity7
* unity-gtk-module
* unity-panel-service
* unity-panel-service-lockscreen
* unity-settings-daemon
* window-stack-bridge
I later learned that runit is not suitable for these kinds of programs. I will be using gnome-session to make it init-agnostic (inspired by [another attempt to port Unity to a non-systemd distribution](https://forum.porteus.org/viewtopic.php?t=11233)).
#### Known issues
* Indicators do not load at the Unity greeter.
##### Unity Control Center bugs
* Clicking the Unlock button does not work. (known problem with Unity for Arch, a workaround is to open Unity Control Center using sudo)
Closes #43579.
A patch file from https://github.com/void-linux/void-packages/pull/51509.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-unity-51509.patch --]
[-- Type: text/x-diff, Size: 391528 bytes --]
From f2d2109e0f16dea24c703739c4d00935a1bd6857 Mon Sep 17 00:00:00 2001
From: Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>
Date: Thu, 1 Aug 2024 19:59:27 +0800
Subject: [PATCH] New packages for the Unity desktop environment
---
common/shlibs | 36 +
| 13 +
srcpkgs/compiz-ubuntu-devel | 1 +
.../0001-Fix-cmake-install-directory.patch | 34 +
.../patches/0004-Disable-Werror.patch | 25 +
srcpkgs/compiz-ubuntu/template | 68 ++
.../patches/remove-systemd.patch | 12 +
srcpkgs/dbus-activation-env/template | 16 +
srcpkgs/dee-devel | 1 +
srcpkgs/dee-qt-devel | 1 +
srcpkgs/dee-qt/template | 25 +
...-deprecated-g_type_class_add_private.patch | 927 ++++++++++++++++++
.../dee-1.2.7-fix-duplicates-vala-0.5X.patch | 24 +
.../dee/patches/vapi-skip-properties.patch | 15 +
srcpkgs/dee/template | 38 +
srcpkgs/glewmx-devel | 1 +
srcpkgs/glewmx/template | 67 ++
srcpkgs/gsettings-qt-devel | 1 +
srcpkgs/gsettings-qt/template | 30 +
srcpkgs/gsettings-ubuntu-schemas-devel | 1 +
.../files/50-com.ubuntu.AccountsService.rules | 29 +
srcpkgs/gsettings-ubuntu-schemas/template | 34 +
srcpkgs/hud-devel | 1 +
srcpkgs/hud/files/hud/run | 2 +
srcpkgs/hud/files/window-stack-bridge/run | 2 +
srcpkgs/hud/patches/0001-Use-Python-2.patch | 58 ++
.../0002-Remove-test-dependencies.patch | 29 +
.../hud/patches/fix-systemd-user-dir.patch | 8 +
srcpkgs/hud/template | 56 ++
.../patches/0001_autoconf.patch | 12 +
.../patches/use-ayatana-libraries.patch | 61 ++
srcpkgs/indicator-application/template | 20 +
.../patches/0001_autoconf.patch | 12 +
.../patches/use-ayatana-libraries.patch | 46 +
| 24 +
.../patches/remove-urldispatch.patch | 25 +
.../patches/use-ayatana-indicator-type.patch | 10 +
srcpkgs/indicator-bluetooth/template | 37 +
.../files/indicator-datetime/run | 2 +
.../patches/disable-tests.patch | 16 +
.../patches/use-ayatana-ido-type.patch | 20 +
.../patches/use-ayatana-indicator-type.patch | 20 +
srcpkgs/indicator-datetime/template | 28 +
...-depending-on-accountsservices-patch.patch | 68 ++
...le-DBus-method-activate_input_source.patch | 176 ++++
...ilable-DBus-method-xkeyboard-layouts.patch | 51 +
.../0005-Spawn-ibus-daemon-at-startup.patch | 31 +
srcpkgs/indicator-keyboard/template | 27 +
srcpkgs/indicator-messages-devel | 1 +
.../patches/0001-autoconf-fix.patch | 25 +
.../patches/0002-Disable-tests.patch | 25 +
srcpkgs/indicator-messages/template | 35 +
.../indicator-power/files/indicator-power/run | 2 +
.../patches/0001-Not-a-phone.patch | 198 ++++
.../patches/disable-tests.patch | 8 +
.../patches/use-ayatana-indicator-type.patch | 10 +
srcpkgs/indicator-power/template | 26 +
.../patches/use-ayatana-libraries.patch | 45 +
srcpkgs/indicator-printers/template | 37 +
.../files/indicator-session/run | 2 +
.../patches/0001-There-is-no-help.patch | 80 ++
.../0003-Remove-libwhoopsie-dependency.patch | 49 +
.../patches/include-cstdint.patch | 7 +
.../patches/use-ayatana-indicator-type.patch | 8 +
srcpkgs/indicator-session/template | 26 +
.../indicator-sound/files/indicator-sound/run | 2 +
.../patches/use-ayatana-ido-type.patch | 21 +
.../patches/use-ayatana-indicator-type.patch | 232 +++++
srcpkgs/indicator-sound/template | 42 +
srcpkgs/libcolumbus-devel | 1 +
srcpkgs/libcolumbus/template | 26 +
srcpkgs/libgeonames-devel | 1 +
srcpkgs/libgeonames/template | 24 +
srcpkgs/libunity-devel | 1 +
srcpkgs/libunity-misc-devel | 1 +
.../patches/0001_autotools.patch | 11 +
srcpkgs/libunity-misc/template | 31 +
srcpkgs/libunity/patches/0001_autoconf.patch | 20 +
.../patches/libunity-ubuntu-patches.patch | 153 +++
srcpkgs/libunity/template | 47 +
.../files/10-unity.defaults | 31 +
.../files/50-unity-greeter.rules | 98 ++
srcpkgs/lightdm-unity-greeter/files/logo.png | Bin 0 -> 3264 bytes
.../files/unity-greeter-indicators-start | 11 +
.../patches/use-ayatana-libraries.patch | 114 +++
.../patches/use-runit.patch | 9 +
srcpkgs/lightdm-unity-greeter/template | 47 +
srcpkgs/nux-devel | 1 +
srcpkgs/nux/files/50_check_unity_support | 6 +
srcpkgs/nux/patches/0001_autoconf.patch | 12 +
.../add_setupframebufferobject_clear.patch | 13 +
srcpkgs/nux/patches/use_glewmx.patch | 35 +
srcpkgs/nux/template | 59 ++
.../files/openrc-settingsd/run | 6 +
srcpkgs/openrc-settingsd/template | 19 +
srcpkgs/properties-cpp/template | 17 +
srcpkgs/unity-api-devel | 1 +
srcpkgs/unity-api/template | 36 +
.../files/voidlinux-icon-tango-22.png | Bin 0 -> 621 bytes
.../files/voidlinux-icon-tango-24.png | Bin 0 -> 626 bytes
srcpkgs/unity-asset-pool/template | 30 +
srcpkgs/unity-backgrounds/template | 15 +
srcpkgs/unity-control-center-devel | 1 +
.../files/system-config-printer-unity.desktop | 108 ++
.../files/unity-online-accounts-panel.desktop | 197 ++++
.../files/unity-region-panel.desktop | 206 ++++
...-54_enable_alt_tap_in_shortcut.patch.patch | 71 ++
.../patches/0002-Skip-region-panel.patch | 24 +
...Remove-Ubuntu-specific-language-code.patch | 311 ++++++
...ntrol-center-to-run-at-the-same-time.patch | 25 +
...e-overlay-scrollbar-from-GTK_MODULES.patch | 49 +
...nome-bluetooth-to-libunity-bluetooth.patch | 67 ++
...images-usr-share-pixmaps-faces-unity.patch | 37 +
.../patches/remove-gnome-common.patch | 9 +
.../patches/remove-ubuntu-specific.patch | 44 +
srcpkgs/unity-control-center/template | 66 ++
srcpkgs/unity-core/template | 18 +
srcpkgs/unity-devel | 1 +
srcpkgs/unity-gtk-module-devel | 1 +
.../unity-gtk-module/files/90unity-gtk-module | 2 +
.../files/unity-gtk-module/finish | 3 +
.../files/unity-gtk-module/run | 3 +
srcpkgs/unity-gtk-module/template | 37 +
.../patches/use-ayatana-libraries.patch | 18 +
srcpkgs/unity-indicator-appearance/template | 15 +
srcpkgs/unity-lens-applications/template | 42 +
srcpkgs/unity-lens-files/template | 34 +
srcpkgs/unity-lens-music/template | 36 +
.../patches/remove-goa-scopes.diff | 45 +
srcpkgs/unity-lens-photos/template | 30 +
srcpkgs/unity-lens-video/template | 28 +
srcpkgs/unity-scope-home/INSTALL | 6 +
srcpkgs/unity-scope-home/REMOVE | 6 +
...untu.com-only-accepts-locale-string-.patch | 44 +
.../0003-Show-description-of-error-code.patch | 29 +
.../patches/fix-vala-0.56-errors.patch | 48 +
srcpkgs/unity-scope-home/template | 35 +
.../unity-session/files/hud-service.desktop | 6 +
.../files/indicator-bluetooth.desktop | 6 +
.../files/indicator-datetime.desktop | 6 +
.../files/indicator-power.desktop | 6 +
.../files/indicator-printers.desktop | 6 +
.../files/indicator-session.desktop | 6 +
.../files/indicator-sound.desktop | 6 +
.../files/unity-indicator-appearance.desktop | 6 +
.../unity-panel-service-lockscreen.desktop | 6 +
.../files/unity-panel-service.desktop | 6 +
.../unity-polkit-authentication-agent.desktop | 6 +
srcpkgs/unity-session/files/unity.desktop | 6 +
.../files/window-stack-bridge.desktop | 6 +
.../patches/use-gnome-session.patch | 16 +
srcpkgs/unity-session/template | 34 +
srcpkgs/unity-settings-daemon-devel | 1 +
.../files/unity-settings-daemon/run | 2 +
...01-Remove-accountsservice-dependency.patch | 130 +++
...t-screensaver-proxy-fails-to-compile.patch | 25 +
srcpkgs/unity-settings-daemon/template | 61 ++
.../files/10_ubuntu-settings.gschema.override | 223 +++++
.../files/20_ubuntu-unity.gschema.override | 35 +
srcpkgs/unity-settings/template | 20 +
srcpkgs/unity-tweak-tool/template | 27 +
srcpkgs/unity/files/launcher_bfb.png | Bin 0 -> 7378 bytes
.../files/unity-panel-service-lockscreen/run | 2 +
srcpkgs/unity/files/unity-panel-service/run | 2 +
srcpkgs/unity/files/unity.pam | 1 +
srcpkgs/unity/files/unity7/run | 3 +
.../patches/0004-Remove-social.scope.patch | 25 +
.../0005-Remove-xpathselect-dependency.patch | 563 +++++++++++
srcpkgs/unity/patches/filemanager.patch | 11 +
.../unity/patches/fix-systemd-user-dir.patch | 8 +
.../patches/fix-unity-python-script.patch | 8 +
srcpkgs/unity/patches/remove-niceties.patch | 58 ++
.../patches/remove-ubuntu-specific.patch | 37 +
.../unity/patches/use-ayatana-libraries.patch | 90 ++
srcpkgs/unity/template | 69 ++
srcpkgs/yaru/template | 4 +-
176 files changed, 7225 insertions(+), 2 deletions(-)
create mode 100644 srcpkgs/cmake-extras/template
create mode 120000 srcpkgs/compiz-ubuntu-devel
create mode 100644 srcpkgs/compiz-ubuntu/patches/0001-Fix-cmake-install-directory.patch
create mode 100644 srcpkgs/compiz-ubuntu/patches/0004-Disable-Werror.patch
create mode 100644 srcpkgs/compiz-ubuntu/template
create mode 100644 srcpkgs/dbus-activation-env/patches/remove-systemd.patch
create mode 100644 srcpkgs/dbus-activation-env/template
create mode 120000 srcpkgs/dee-devel
create mode 120000 srcpkgs/dee-qt-devel
create mode 100644 srcpkgs/dee-qt/template
create mode 100644 srcpkgs/dee/patches/dee-1.2.7-deprecated-g_type_class_add_private.patch
create mode 100644 srcpkgs/dee/patches/dee-1.2.7-fix-duplicates-vala-0.5X.patch
create mode 100644 srcpkgs/dee/patches/vapi-skip-properties.patch
create mode 100644 srcpkgs/dee/template
create mode 120000 srcpkgs/glewmx-devel
create mode 100644 srcpkgs/glewmx/template
create mode 120000 srcpkgs/gsettings-qt-devel
create mode 100644 srcpkgs/gsettings-qt/template
create mode 120000 srcpkgs/gsettings-ubuntu-schemas-devel
create mode 100644 srcpkgs/gsettings-ubuntu-schemas/files/50-com.ubuntu.AccountsService.rules
create mode 100644 srcpkgs/gsettings-ubuntu-schemas/template
create mode 120000 srcpkgs/hud-devel
create mode 100644 srcpkgs/hud/files/hud/run
create mode 100644 srcpkgs/hud/files/window-stack-bridge/run
create mode 100644 srcpkgs/hud/patches/0001-Use-Python-2.patch
create mode 100644 srcpkgs/hud/patches/0002-Remove-test-dependencies.patch
create mode 100644 srcpkgs/hud/patches/fix-systemd-user-dir.patch
create mode 100644 srcpkgs/hud/template
create mode 100644 srcpkgs/indicator-application/patches/0001_autoconf.patch
create mode 100644 srcpkgs/indicator-application/patches/use-ayatana-libraries.patch
create mode 100644 srcpkgs/indicator-application/template
create mode 100644 srcpkgs/indicator-appmenu/patches/0001_autoconf.patch
create mode 100644 srcpkgs/indicator-appmenu/patches/use-ayatana-libraries.patch
create mode 100644 srcpkgs/indicator-appmenu/template
create mode 100644 srcpkgs/indicator-bluetooth/patches/remove-urldispatch.patch
create mode 100644 srcpkgs/indicator-bluetooth/patches/use-ayatana-indicator-type.patch
create mode 100644 srcpkgs/indicator-bluetooth/template
create mode 100644 srcpkgs/indicator-datetime/files/indicator-datetime/run
create mode 100644 srcpkgs/indicator-datetime/patches/disable-tests.patch
create mode 100644 srcpkgs/indicator-datetime/patches/use-ayatana-ido-type.patch
create mode 100644 srcpkgs/indicator-datetime/patches/use-ayatana-indicator-type.patch
create mode 100644 srcpkgs/indicator-datetime/template
create mode 100644 srcpkgs/indicator-keyboard/patches/0002-Remove-code-depending-on-accountsservices-patch.patch
create mode 100644 srcpkgs/indicator-keyboard/patches/0003-Remove-unavailable-DBus-method-activate_input_source.patch
create mode 100644 srcpkgs/indicator-keyboard/patches/0004-Remove-unavailable-DBus-method-xkeyboard-layouts.patch
create mode 100644 srcpkgs/indicator-keyboard/patches/0005-Spawn-ibus-daemon-at-startup.patch
create mode 100644 srcpkgs/indicator-keyboard/template
create mode 120000 srcpkgs/indicator-messages-devel
create mode 100644 srcpkgs/indicator-messages/patches/0001-autoconf-fix.patch
create mode 100644 srcpkgs/indicator-messages/patches/0002-Disable-tests.patch
create mode 100644 srcpkgs/indicator-messages/template
create mode 100644 srcpkgs/indicator-power/files/indicator-power/run
create mode 100644 srcpkgs/indicator-power/patches/0001-Not-a-phone.patch
create mode 100644 srcpkgs/indicator-power/patches/disable-tests.patch
create mode 100644 srcpkgs/indicator-power/patches/use-ayatana-indicator-type.patch
create mode 100644 srcpkgs/indicator-power/template
create mode 100644 srcpkgs/indicator-printers/patches/use-ayatana-libraries.patch
create mode 100644 srcpkgs/indicator-printers/template
create mode 100644 srcpkgs/indicator-session/files/indicator-session/run
create mode 100644 srcpkgs/indicator-session/patches/0001-There-is-no-help.patch
create mode 100644 srcpkgs/indicator-session/patches/0003-Remove-libwhoopsie-dependency.patch
create mode 100644 srcpkgs/indicator-session/patches/include-cstdint.patch
create mode 100644 srcpkgs/indicator-session/patches/use-ayatana-indicator-type.patch
create mode 100644 srcpkgs/indicator-session/template
create mode 100644 srcpkgs/indicator-sound/files/indicator-sound/run
create mode 100644 srcpkgs/indicator-sound/patches/use-ayatana-ido-type.patch
create mode 100644 srcpkgs/indicator-sound/patches/use-ayatana-indicator-type.patch
create mode 100644 srcpkgs/indicator-sound/template
create mode 120000 srcpkgs/libcolumbus-devel
create mode 100644 srcpkgs/libcolumbus/template
create mode 120000 srcpkgs/libgeonames-devel
create mode 100644 srcpkgs/libgeonames/template
create mode 120000 srcpkgs/libunity-devel
create mode 120000 srcpkgs/libunity-misc-devel
create mode 100644 srcpkgs/libunity-misc/patches/0001_autotools.patch
create mode 100644 srcpkgs/libunity-misc/template
create mode 100644 srcpkgs/libunity/patches/0001_autoconf.patch
create mode 100644 srcpkgs/libunity/patches/libunity-ubuntu-patches.patch
create mode 100644 srcpkgs/libunity/template
create mode 100644 srcpkgs/lightdm-unity-greeter/files/10-unity.defaults
create mode 100644 srcpkgs/lightdm-unity-greeter/files/50-unity-greeter.rules
create mode 100755 srcpkgs/lightdm-unity-greeter/files/logo.png
create mode 100755 srcpkgs/lightdm-unity-greeter/files/unity-greeter-indicators-start
create mode 100644 srcpkgs/lightdm-unity-greeter/patches/use-ayatana-libraries.patch
create mode 100644 srcpkgs/lightdm-unity-greeter/patches/use-runit.patch
create mode 100644 srcpkgs/lightdm-unity-greeter/template
create mode 120000 srcpkgs/nux-devel
create mode 100644 srcpkgs/nux/files/50_check_unity_support
create mode 100644 srcpkgs/nux/patches/0001_autoconf.patch
create mode 100644 srcpkgs/nux/patches/add_setupframebufferobject_clear.patch
create mode 100644 srcpkgs/nux/patches/use_glewmx.patch
create mode 100644 srcpkgs/nux/template
create mode 100644 srcpkgs/openrc-settingsd/files/openrc-settingsd/run
create mode 100644 srcpkgs/openrc-settingsd/template
create mode 100644 srcpkgs/properties-cpp/template
create mode 120000 srcpkgs/unity-api-devel
create mode 100644 srcpkgs/unity-api/template
create mode 100755 srcpkgs/unity-asset-pool/files/voidlinux-icon-tango-22.png
create mode 100755 srcpkgs/unity-asset-pool/files/voidlinux-icon-tango-24.png
create mode 100644 srcpkgs/unity-asset-pool/template
create mode 100644 srcpkgs/unity-backgrounds/template
create mode 120000 srcpkgs/unity-control-center-devel
create mode 100644 srcpkgs/unity-control-center/files/system-config-printer-unity.desktop
create mode 100644 srcpkgs/unity-control-center/files/unity-online-accounts-panel.desktop
create mode 100644 srcpkgs/unity-control-center/files/unity-region-panel.desktop
create mode 100644 srcpkgs/unity-control-center/patches/0001-Revert-54_enable_alt_tap_in_shortcut.patch.patch
create mode 100644 srcpkgs/unity-control-center/patches/0002-Skip-region-panel.patch
create mode 100644 srcpkgs/unity-control-center/patches/0003-Remove-Ubuntu-specific-language-code.patch
create mode 100644 srcpkgs/unity-control-center/patches/0005-Allow-gnome-control-center-to-run-at-the-same-time.patch
create mode 100644 srcpkgs/unity-control-center/patches/0006-Remove-overlay-scrollbar-from-GTK_MODULES.patch
create mode 100644 srcpkgs/unity-control-center/patches/0007-Rename-libgnome-bluetooth-to-libunity-bluetooth.patch
create mode 100644 srcpkgs/unity-control-center/patches/0008-Move-faces-images-usr-share-pixmaps-faces-unity.patch
create mode 100644 srcpkgs/unity-control-center/patches/remove-gnome-common.patch
create mode 100644 srcpkgs/unity-control-center/patches/remove-ubuntu-specific.patch
create mode 100644 srcpkgs/unity-control-center/template
create mode 100644 srcpkgs/unity-core/template
create mode 120000 srcpkgs/unity-devel
create mode 120000 srcpkgs/unity-gtk-module-devel
create mode 100644 srcpkgs/unity-gtk-module/files/90unity-gtk-module
create mode 100644 srcpkgs/unity-gtk-module/files/unity-gtk-module/finish
create mode 100644 srcpkgs/unity-gtk-module/files/unity-gtk-module/run
create mode 100644 srcpkgs/unity-gtk-module/template
create mode 100644 srcpkgs/unity-indicator-appearance/patches/use-ayatana-libraries.patch
create mode 100644 srcpkgs/unity-indicator-appearance/template
create mode 100644 srcpkgs/unity-lens-applications/template
create mode 100644 srcpkgs/unity-lens-files/template
create mode 100644 srcpkgs/unity-lens-music/template
create mode 100644 srcpkgs/unity-lens-photos/patches/remove-goa-scopes.diff
create mode 100644 srcpkgs/unity-lens-photos/template
create mode 100644 srcpkgs/unity-lens-video/template
create mode 100644 srcpkgs/unity-scope-home/INSTALL
create mode 100644 srcpkgs/unity-scope-home/REMOVE
create mode 100644 srcpkgs/unity-scope-home/patches/0002-productsearch.ubuntu.com-only-accepts-locale-string-.patch
create mode 100644 srcpkgs/unity-scope-home/patches/0003-Show-description-of-error-code.patch
create mode 100644 srcpkgs/unity-scope-home/patches/fix-vala-0.56-errors.patch
create mode 100644 srcpkgs/unity-scope-home/template
create mode 100644 srcpkgs/unity-session/files/hud-service.desktop
create mode 100644 srcpkgs/unity-session/files/indicator-bluetooth.desktop
create mode 100644 srcpkgs/unity-session/files/indicator-datetime.desktop
create mode 100644 srcpkgs/unity-session/files/indicator-power.desktop
create mode 100644 srcpkgs/unity-session/files/indicator-printers.desktop
create mode 100644 srcpkgs/unity-session/files/indicator-session.desktop
create mode 100644 srcpkgs/unity-session/files/indicator-sound.desktop
create mode 100644 srcpkgs/unity-session/files/unity-indicator-appearance.desktop
create mode 100644 srcpkgs/unity-session/files/unity-panel-service-lockscreen.desktop
create mode 100644 srcpkgs/unity-session/files/unity-panel-service.desktop
create mode 100644 srcpkgs/unity-session/files/unity-polkit-authentication-agent.desktop
create mode 100644 srcpkgs/unity-session/files/unity.desktop
create mode 100644 srcpkgs/unity-session/files/window-stack-bridge.desktop
create mode 100644 srcpkgs/unity-session/patches/use-gnome-session.patch
create mode 100644 srcpkgs/unity-session/template
create mode 120000 srcpkgs/unity-settings-daemon-devel
create mode 100644 srcpkgs/unity-settings-daemon/files/unity-settings-daemon/run
create mode 100644 srcpkgs/unity-settings-daemon/patches/0001-Remove-accountsservice-dependency.patch
create mode 100644 srcpkgs/unity-settings-daemon/patches/0001-usd-test-screensaver-proxy-fails-to-compile.patch
create mode 100644 srcpkgs/unity-settings-daemon/template
create mode 100644 srcpkgs/unity-settings/files/10_ubuntu-settings.gschema.override
create mode 100644 srcpkgs/unity-settings/files/20_ubuntu-unity.gschema.override
create mode 100644 srcpkgs/unity-settings/template
create mode 100644 srcpkgs/unity-tweak-tool/template
create mode 100755 srcpkgs/unity/files/launcher_bfb.png
create mode 100644 srcpkgs/unity/files/unity-panel-service-lockscreen/run
create mode 100644 srcpkgs/unity/files/unity-panel-service/run
create mode 100644 srcpkgs/unity/files/unity.pam
create mode 100644 srcpkgs/unity/files/unity7/run
create mode 100644 srcpkgs/unity/patches/0004-Remove-social.scope.patch
create mode 100644 srcpkgs/unity/patches/0005-Remove-xpathselect-dependency.patch
create mode 100644 srcpkgs/unity/patches/filemanager.patch
create mode 100644 srcpkgs/unity/patches/fix-systemd-user-dir.patch
create mode 100644 srcpkgs/unity/patches/fix-unity-python-script.patch
create mode 100644 srcpkgs/unity/patches/remove-niceties.patch
create mode 100644 srcpkgs/unity/patches/remove-ubuntu-specific.patch
create mode 100644 srcpkgs/unity/patches/use-ayatana-libraries.patch
create mode 100644 srcpkgs/unity/template
diff --git a/common/shlibs b/common/shlibs
index ac43ed84680c00..a935692f4b3673 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3039,6 +3039,9 @@ libuim.so.8 uim-1.8.6_1
libuim-scm.so.0 uim-1.8.6_1
libuim-custom.so.2 uim-1.8.6_1
libgcroots.so.0 libgcroots-0.3.2_1
+libcompizconfig.so.0 compiz-ubuntu-0.9.14.2+22.10.20220822_1
+libcompizconfig_gsettings_backend.so compiz-ubuntu-0.9.14.2+22.10.20220822_1
+libdecoration.so.0 compiz-ubuntu-0.9.14.2+22.10.20220822_1
libdecoration.so.0 compiz-core-0.8.14_1
libcompizconfig.so.0 libcompizconfig-0.8.14_1
libemeraldengine.so.0 emerald-0.8.14_1
@@ -4528,3 +4531,36 @@ libhwy.so.1 highway-1.2.0_1
libscenefx.so.1 scenefx-0.1_1
libnng.so.1 nng-1.5.2_1
libsentry.so sentry-native-0.7.7_1
+libunity-gtk3-parser.so.0 unity-gtk-module-0.0.0+18.04.20171202_1
+libdee-1.0.so.4 dee-1.2.7+17.10.20170616_1
+libunity.so.9 libunity-7.1.4+19.04.20190319_1
+libunity-extras.so.9 libunity-7.1.4+19.04.20190319_1
+libunity-protocol-private.so.0 libunity-7.1.4+19.04.20190319_1
+libunity-misc.so.4 libunity-misc-4.0.5+14.04.20140115_1
+libmessaging-menu.so.0 indicator-messages-13.10.1+18.10.20180918_1
+libunity-settings-daemon.so.1 unity-settings-daemon-15.04.1+21.10.20220802_1
+libgeonames.so.0 libgeonames-0.3.1_1
+libunity-bluetooth.so.0 unity-control-center-15.04.0+23.04.20230220_1
+libunity-control-center.so.1 unity-control-center-15.04.0+23.04.20230220_1
+libunity-api.so.0 unity-api-8.7+17.04.20170404_1
+libgsettings-qt.so.1 gsettings-qt-0.2_1
+libdee-qt5.so.3 dee-qt-3.3+14.04.20140317_1
+libcolumbus.so.1 libcolumbus-1.1.0+15.10.20150806_1
+libhud-client.so.2 hud-14.10+17.10.20170619_1
+libhud.so.2 hud-14.10+17.10.20170619_1
+libhud-gtk.so.1 hud-14.10+17.10.20170619_1
+libGLEW.so.1.13 glewmx-1.13.0_1
+libGLEWmx.so.1.13 glewmx-1.13.0_1
+libnux-graphics-4.0.so.0 nux-4.0.8+18.10.20180623_1
+libnux-4.0.so.0 nux-4.0.8+18.10.20180623_1
+libnux-core-4.0.so.0 nux-4.0.8+18.10.20180623_1
+libmetacity.so.3 metacity-3.52.0_1
+libcompizconfig.so.0 compiz-ubuntu-0.9.14.2+22.10.20220822_1
+libcompizconfig_gsettings_backend.so compiz-ubuntu-0.9.14.2+22.10.20220822_1
+libdecoration.so.0 compiz-ubuntu-0.9.14.2+22.10.20220822_1
+libcomposite.so compiz-ubuntu-0.9.14.2+22.10.20220822_1
+libopengl.so compiz-ubuntu-0.9.14.2+22.10.20220822_1
+libcompiztoolbox.so compiz-ubuntu-0.9.14.2+22.10.20220822_1
+libscale.so compiz-ubuntu-0.9.14.2+22.10.20220822_1
+libcompiz_core.so.ABI-20180221 compiz-ubuntu-0.9.14.2+22.10.20220822_1
+libunity-core-6.0.so.9 unity-7.7.0+23.04.20230222.2_1
--git a/srcpkgs/cmake-extras/template b/srcpkgs/cmake-extras/template
new file mode 100644
index 00000000000000..0624fac7233434
--- /dev/null
+++ b/srcpkgs/cmake-extras/template
@@ -0,0 +1,13 @@
+# Template file for 'cmake-extras'
+pkgname=cmake-extras
+version=1.7
+revision=1
+build_style=cmake
+short_desc="Collection of add-ons for the CMake build tool"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://gitlab.com/ubports/development/core/cmake-extras"
+changelog="https://gitlab.com/ubports/developent/core/cmake-extras/-/raw/main/ChangeLog"
+distfiles="https://gitlab.com/ubports/development/core/cmake-extras/-/archive/main/cmake-extras-main.tar.gz"
+checksum=9748b5e10d8c73723a52c8b65be53577242a6dc27c22860bd8a79eb1e85207fd
+python_version=3
diff --git a/srcpkgs/compiz-ubuntu-devel b/srcpkgs/compiz-ubuntu-devel
new file mode 120000
index 00000000000000..139775cf005076
--- /dev/null
+++ b/srcpkgs/compiz-ubuntu-devel
@@ -0,0 +1 @@
+compiz-ubuntu
\ No newline at end of file
diff --git a/srcpkgs/compiz-ubuntu/patches/0001-Fix-cmake-install-directory.patch b/srcpkgs/compiz-ubuntu/patches/0001-Fix-cmake-install-directory.patch
new file mode 100644
index 00000000000000..b017d5ba1a3125
--- /dev/null
+++ b/srcpkgs/compiz-ubuntu/patches/0001-Fix-cmake-install-directory.patch
@@ -0,0 +1,34 @@
+From 321b926cc28bdfa0cd773b84e3a393e6055700bc Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Mon, 27 Oct 2014 21:49:02 -0400
+Subject: [PATCH 1/5] Fix cmake install directory
+
+---
+ cmake/base.cmake | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/cmake/base.cmake b/cmake/base.cmake
+index c15c87f..23c5a5e 100644
+--- a/cmake/base.cmake
++++ b/cmake/base.cmake
+@@ -30,7 +30,7 @@ function (_check_compiz_cmake_macro)
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindCompiz.cmake
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindOpenGLES2.cmake
+ DESTINATION
+- ${CMAKE_INSTALL_PREFIX}/share/cmake-${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}/)
++ ${CMAKE_INSTALL_PREFIX}/share/cmake-${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}/Modules/)
+ add_custom_target (findcompiz_install
+ ${CMAKE_COMMAND} -E make_directory ${CMAKE_ROOT}/Modules &&
+ ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/cmake/FindCompiz.cmake ${CMAKE_ROOT}/Modules &&
+@@ -47,7 +47,7 @@ function (_check_compiz_cmake_macro)
+ install (FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/compizconfig/libcompizconfig/cmake/FindCompizConfig.cmake
+ DESTINATION
+- ${CMAKE_INSTALL_PREFIX}/share/cmake-${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}/)
++ ${CMAKE_INSTALL_PREFIX}/share/cmake-${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}/Modules/)
+ add_custom_target (
+ findcompizconfig_install
+ ${CMAKE_COMMAND} -E make_directory ${CMAKE_ROOT}/Modules &&
+--
+2.10.0
+
diff --git a/srcpkgs/compiz-ubuntu/patches/0004-Disable-Werror.patch b/srcpkgs/compiz-ubuntu/patches/0004-Disable-Werror.patch
new file mode 100644
index 00000000000000..c393deb25152e7
--- /dev/null
+++ b/srcpkgs/compiz-ubuntu/patches/0004-Disable-Werror.patch
@@ -0,0 +1,25 @@
+From a545dc48937d29a8fc53376dd398ac92274fd1df Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Mon, 27 Oct 2014 21:50:02 -0400
+Subject: [PATCH 4/5] Disable -Werror
+
+---
+ cmake/CompizCommon.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cmake/CompizCommon.cmake b/cmake/CompizCommon.cmake
+index e416a96..8e817f8 100644
+--- a/cmake/CompizCommon.cmake
++++ b/cmake/CompizCommon.cmake
+@@ -74,7 +74,7 @@ if (NOT COMPIZ_SIGN_WARNINGS)
+ endif ()
+
+ if (${CMAKE_PROJECT_NAME} STREQUAL "compiz")
+- set (COMPIZ_WERROR_DEFAULT ON)
++ set (COMPIZ_WERROR_DEFAULT OFF)
+ else ()
+ set (COMPIZ_WERROR_DEFAULT OFF)
+ endif ()
+--
+2.10.0
+
diff --git a/srcpkgs/compiz-ubuntu/template b/srcpkgs/compiz-ubuntu/template
new file mode 100644
index 00000000000000..a3685cfb995d2d
--- /dev/null
+++ b/srcpkgs/compiz-ubuntu/template
@@ -0,0 +1,68 @@
+# Template file for 'compiz-ubuntu'
+# Package is called compiz-ubuntu to prevent confusion with compiz-reloaded.
+pkgname=compiz-ubuntu
+version=0.9.14.2+22.10.20220822
+revision=1
+_ubuntu_epoch=1
+_ubuntu_rel=0ubuntu12
+build_style=cmake
+configure_args="-DCMAKE_INSTALL_PREFIX=/usr -DCOMPIZ_BUILD_WITH_RPATH=FALSE \
+ -DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PACKAGING_ENABLED=TRUE -DUSE_GSETTINGS=ON \
+ -DCOMPIZ_DISABLE_GS_SCHEMAS_INSTALL=OFF -DCOMPIZ_BUILD_TESTING=OFF \
+ -DCOMPIZ_DISABLE_PLUGIN_KDE=ON -DUSE_KDE4=OFF -Dlibdir=/usr/lib \
+ -Dlibcompizconfig_libdir=/usr/lib"
+hostmakedepends="boost-devel coreutils desktop-file-utils intltool patchelf
+ pkg-config python3-Cython"
+makedepends="dbus-devel glibmm-devel glu-devel libICE-devel librsvg-devel
+ libSM-devel libwnck-devel libXcomposite-devel libXdamage-devel
+ libXinerama-devel libXrandr-devel libxslt-devel metacity protobuf-devel
+ python3-devel startup-notification-devel"
+depends="boost fuse gnome-settings-daemon gsettings-desktop-schemas"
+short_desc="OpenGL window and compositing manager"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-2.0-only, LGPL-2.1-only, MIT"
+homepage="http://www.compiz.org/"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/compiz/${_ubuntu_epoch}:${version}-${_ubuntu_rel}/compiz_${version}-${_ubuntu_rel}.tar.xz"
+checksum=d92cf4cdebba921f258d096e21a8a10d5678470ac44d880aedf87d4011b7f082
+keep_libtool_archives=yes
+shlib_provides="libcompiz_core.so.ABI-20180221 libcompiztoolbox.so
+ libcomposite.so libopengl.so libscale.so"
+
+pre_configure() {
+ export CXXFLAGS+=" -lc"
+
+ export LDFLAGS="$(echo ${LDFLAGS} | sed 's/-B[ ]*symbolic-functions//')"
+
+ export COMPIZ_DISABLE_RPATH=1
+}
+
+post_install() {
+ CMAKE_DIR=$(cmake --system-information | grep '^CMAKE_ROOT' \
+ | awk -F\" '{print $2}')
+
+ desktop-file-install --delete-original \
+ --dir=${DESTDIR}/usr/share/applications \
+ ${DESTDIR}/usr/share/applications/*.desktop
+
+ mv ${DESTDIR}/usr/share/cmake-*/ ${DESTDIR}/usr/share/cmake/
+
+ vlicense COPYING.MIT
+}
+
+compiz-ubuntu-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision} cairo-devel glibmm-devel
+ libglib-devel libICE-devel libSM-devel libX11-devel
+ libXcomposite-devel libXcursor-devel libXdamage-devel libXext-devel
+ libXi-devel libXinerama-devel libxml2-devel libXrandr-devel
+ libXrender-devel libxslt-devel pango-devel startup-notification-devel"
+ pkg_install() {
+ vmove usr/include
+ # Do not vmove libcompizconfig_gsettings_backend.so
+ vmove usr/lib/libcompiz_core.so
+ vmove usr/lib/libcompizconfig.so
+ vmove usr/lib/libdecoration.so
+ vmove usr/lib/pkgconfig
+ vmove usr/share/cmake
+ }
+}
diff --git a/srcpkgs/dbus-activation-env/patches/remove-systemd.patch b/srcpkgs/dbus-activation-env/patches/remove-systemd.patch
new file mode 100644
index 00000000000000..139b885e2ca0cf
--- /dev/null
+++ b/srcpkgs/dbus-activation-env/patches/remove-systemd.patch
@@ -0,0 +1,12 @@
+diff -p1ru a/95dbus_update-activation-env b/95dbus_update-activation-env
+--- a/95dbus_update-activation-env 2023-12-05 23:36:45.000000000 +0800
++++ b/95dbus_update-activation-env 2024-07-19 18:27:30.809000000 +0800
+@@ -13,6 +13,6 @@ if [ -n "$DBUS_SESSION_BUS_ADDRESS" ] &&
+
+- # tell dbus-daemon --session (and systemd --user, if running)
++ # tell dbus-daemon --session
+ # to put the Xsession's environment in activated services'
+ # environments
+- dbus-update-activation-environment --verbose --systemd --all
++ dbus-update-activation-environment --verbose --all
+ )
diff --git a/srcpkgs/dbus-activation-env/template b/srcpkgs/dbus-activation-env/template
new file mode 100644
index 00000000000000..25167e523629c1
--- /dev/null
+++ b/srcpkgs/dbus-activation-env/template
@@ -0,0 +1,16 @@
+# Template file for 'dbus-activation-env'
+pkgname=dbus-activation-env
+version=1.14.10
+revision=1
+_ubuntu_rel=4ubuntu4
+depends="dbus"
+short_desc="Set session variables in dbus activation environment"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-2.0-or-later"
+homepage="https://launchpad.net/ubuntu/+source/dbus"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/dbus_${version}-${_ubuntu_rel}.debian.tar.xz"
+checksum=0844907258be5dc2dccf41ec3ff80fc3baf5bde9a11f9072299e24ae29ab6721
+
+do_install() {
+ vinstall 95dbus_update-activation-env 755 etc/X11/xinit/xinitrc.d
+}
diff --git a/srcpkgs/dee-devel b/srcpkgs/dee-devel
new file mode 120000
index 00000000000000..268487bf7b680b
--- /dev/null
+++ b/srcpkgs/dee-devel
@@ -0,0 +1 @@
+dee
\ No newline at end of file
diff --git a/srcpkgs/dee-qt-devel b/srcpkgs/dee-qt-devel
new file mode 120000
index 00000000000000..43f7f17a6a64e3
--- /dev/null
+++ b/srcpkgs/dee-qt-devel
@@ -0,0 +1 @@
+dee-qt
\ No newline at end of file
diff --git a/srcpkgs/dee-qt/template b/srcpkgs/dee-qt/template
new file mode 100644
index 00000000000000..edcf05f6aa6883
--- /dev/null
+++ b/srcpkgs/dee-qt/template
@@ -0,0 +1,25 @@
+# Template file for 'dee-qt'
+pkgname=dee-qt
+version=3.3+14.04.20140317
+revision=1
+build_style=cmake
+configure_args="-DCMAKE_INSTALL_PREFIX=/usr -DWITHQT5=1"
+hostmakedepends="pkg-config"
+makedepends="dee-devel qt5-devel qt5-declarative-devel"
+checkdepends="dbus-test-runner"
+short_desc="Qt5 bindings for dee"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="LGPL-3.0-only"
+homepage="https://launchpad.net/dee-qt"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/dee-qt_${version}.orig.tar.gz"
+checksum=c372b6a5157a6614fae79bd4b75273f3ccdbde0f56e996211c000c5a3c74dfbb
+
+dee-qt-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision} dee-devel qt5-devel"
+ pkg_install() {
+ vmove usr/include
+ vmove "usr/lib/*.so"
+ vmove usr/lib/pkgconfig
+ }
+}
diff --git a/srcpkgs/dee/patches/dee-1.2.7-deprecated-g_type_class_add_private.patch b/srcpkgs/dee/patches/dee-1.2.7-deprecated-g_type_class_add_private.patch
new file mode 100644
index 00000000000000..9ab75d1f3486c6
--- /dev/null
+++ b/srcpkgs/dee/patches/dee-1.2.7-deprecated-g_type_class_add_private.patch
@@ -0,0 +1,927 @@
+diff -up dee-1.2.7/configure.ac.dep dee-1.2.7/configure.ac
+--- dee-1.2.7/configure.ac.dep 2013-09-09 05:22:35.000000000 -0400
++++ dee-1.2.7/configure.ac 2019-09-05 11:17:15.833415732 -0400
+@@ -95,7 +95,7 @@ AC_FUNC_MMAP
+ AC_CHECK_FUNCS([memset munmap strcasecmp strdup])
+
+ PKG_CHECK_MODULES(DEE,
+- glib-2.0 >= 2.32
++ glib-2.0 >= 2.38
+ gthread-2.0 >= 2.32
+ gobject-2.0 >= 2.32
+ gio-2.0 >= 2.32
+diff -up dee-1.2.7/src/dee-analyzer.c.dep dee-1.2.7/src/dee-analyzer.c
+--- dee-1.2.7/src/dee-analyzer.c.dep 2012-11-08 05:13:46.000000000 -0500
++++ dee-1.2.7/src/dee-analyzer.c 2019-09-05 11:22:55.498031535 -0400
+@@ -45,13 +45,6 @@
+ #include <string.h>
+ #include "dee-analyzer.h"
+
+-G_DEFINE_TYPE (DeeAnalyzer,
+- dee_analyzer,
+- G_TYPE_OBJECT);
+-
+-#define DEE_ANALYZER_GET_PRIVATE(obj) \
+- (G_TYPE_INSTANCE_GET_PRIVATE(obj, DEE_TYPE_ANALYZER, DeeAnalyzerPrivate))
+-
+ typedef struct {
+ DeeTermFilterFunc filter_func;
+ gpointer data;
+@@ -76,6 +69,10 @@ enum
+ PROP_0,
+ };
+
++G_DEFINE_TYPE_WITH_PRIVATE (DeeAnalyzer,
++ dee_analyzer,
++ G_TYPE_OBJECT);
++
+ /*
+ * DeeAnalyzer forward declarations
+ */
+@@ -195,9 +192,6 @@ dee_analyzer_class_init (DeeAnalyzerClas
+ klass->add_term_filter = dee_analyzer_add_term_filter_real;
+ klass->collate_key = dee_analyzer_collate_key_real;
+ klass->collate_cmp = dee_analyzer_collate_cmp_real;
+-
+- /* Add private data */
+- g_type_class_add_private (obj_class, sizeof (DeeAnalyzerPrivate));
+ }
+
+ static void
+@@ -205,7 +199,7 @@ dee_analyzer_init (DeeAnalyzer *self)
+ {
+ DeeAnalyzerPrivate *priv;
+
+- priv = self->priv = DEE_ANALYZER_GET_PRIVATE (self);
++ priv = self->priv = dee_analyzer_get_instance_private (self);
+
+ priv->term_filters = NULL;
+ priv->term_pool = (DeeTermList*) g_object_new (DEE_TYPE_TERM_LIST, NULL);
+diff -up dee-1.2.7/src/dee-client.c.dep dee-1.2.7/src/dee-client.c
+--- dee-1.2.7/src/dee-client.c.dep 2012-11-08 05:13:46.000000000 -0500
++++ dee-1.2.7/src/dee-client.c 2019-09-05 11:42:29.972418434 -0400
+@@ -37,11 +37,6 @@
+ #include "dee-marshal.h"
+ #include "trace-log.h"
+
+-G_DEFINE_TYPE (DeeClient, dee_client, DEE_TYPE_PEER)
+-
+-#define GET_PRIVATE(o) \
+- (G_TYPE_INSTANCE_GET_PRIVATE ((o), DEE_TYPE_CLIENT, DeeClientPrivate))
+-
+ /**
+ * DeeClientPrivate:
+ *
+@@ -69,6 +64,8 @@ enum
+ LAST_SIGNAL
+ };
+
++G_DEFINE_TYPE_WITH_PRIVATE (DeeClient, dee_client, DEE_TYPE_PEER)
++
+ //static guint32 _server_signals[LAST_SIGNAL] = { 0 };
+
+ /* Forwards */
+@@ -208,8 +205,6 @@ dee_client_class_init (DeeClientClass *k
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ DeePeerClass *peer_class = DEE_PEER_CLASS (klass);
+
+- g_type_class_add_private (klass, sizeof (DeeClientPrivate));
+-
+ object_class->constructed = dee_client_constructed;
+ object_class->get_property = dee_client_get_property;
+ object_class->set_property = dee_client_set_property;
+@@ -238,7 +233,7 @@ dee_client_class_init (DeeClientClass *k
+ static void
+ dee_client_init (DeeClient *self)
+ {
+- self->priv = GET_PRIVATE (self);
++ self->priv = dee_client_get_instance_private (self);
+ }
+
+ /**
+diff -up dee-1.2.7/src/dee-file-resource-manager.c.dep dee-1.2.7/src/dee-file-resource-manager.c
+--- dee-1.2.7/src/dee-file-resource-manager.c.dep 2012-11-08 05:13:46.000000000 -0500
++++ dee-1.2.7/src/dee-file-resource-manager.c 2019-09-05 11:30:57.925525012 -0400
+@@ -41,14 +41,6 @@
+ #include "trace-log.h"
+
+ static void dee_file_resource_manager_resource_manager_iface_init (DeeResourceManagerIface *iface);
+-G_DEFINE_TYPE_WITH_CODE (DeeFileResourceManager,
+- dee_file_resource_manager,
+- G_TYPE_OBJECT,
+- G_IMPLEMENT_INTERFACE (DEE_TYPE_RESOURCE_MANAGER,
+- dee_file_resource_manager_resource_manager_iface_init))
+-
+-#define DEE_FILE_RESOURCE_MANAGER_GET_PRIVATE(obj) \
+- (G_TYPE_INSTANCE_GET_PRIVATE(obj, DEE_TYPE_FILE_RESOURCE_MANAGER, DeeFileResourceManagerPrivate))
+
+ enum
+ {
+@@ -66,13 +58,20 @@ typedef struct
+ GHashTable *monitors_by_id;
+ } DeeFileResourceManagerPrivate;
+
++G_DEFINE_TYPE_WITH_CODE (DeeFileResourceManager,
++ dee_file_resource_manager,
++ G_TYPE_OBJECT,
++ G_ADD_PRIVATE(DeeFileResourceManager)
++ G_IMPLEMENT_INTERFACE (DEE_TYPE_RESOURCE_MANAGER,
++ dee_file_resource_manager_resource_manager_iface_init))
++
+ /* GObject Init */
+ static void
+ dee_file_resource_manager_finalize (GObject *object)
+ {
+ DeeFileResourceManagerPrivate *priv;
+
+- priv = DEE_FILE_RESOURCE_MANAGER_GET_PRIVATE (object);
++ priv = dee_file_resource_manager_get_instance_private ((DeeFileResourceManager*) object);
+
+ g_slist_free_full (priv->resource_dirs, g_free);
+ priv->resource_dirs = NULL;
+@@ -121,7 +120,7 @@ dee_file_resource_manager_get_property (
+ {
+ DeeFileResourceManagerPrivate *priv;
+
+- priv = DEE_FILE_RESOURCE_MANAGER_GET_PRIVATE (object);
++ priv = dee_file_resource_manager_get_instance_private ((DeeFileResourceManager *) object);
+
+ switch (id)
+ {
+@@ -156,9 +155,6 @@ dee_file_resource_manager_class_init (De
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY
+ | G_PARAM_STATIC_STRINGS);
+ g_object_class_install_property (obj_class, PROP_PRIMARY_PATH, pspec);
+-
+- /* Add private data */
+- g_type_class_add_private (obj_class, sizeof (DeeFileResourceManagerPrivate));
+ }
+
+ static void
+@@ -166,7 +162,7 @@ dee_file_resource_manager_init (DeeFileR
+ {
+ DeeFileResourceManagerPrivate *priv;
+
+- priv = DEE_FILE_RESOURCE_MANAGER_GET_PRIVATE (self);
++ priv = dee_file_resource_manager_get_instance_private (self);
+ priv->resource_dirs = NULL;
+ priv->monitors_by_id = g_hash_table_new_full(g_direct_hash,
+ g_direct_equal,
+@@ -222,7 +218,7 @@ dee_file_resource_manager_add_search_pat
+ g_return_if_fail (DEE_IS_FILE_RESOURCE_MANAGER (self));
+ g_return_if_fail (path != NULL);
+
+- priv = DEE_FILE_RESOURCE_MANAGER_GET_PRIVATE (self);
++ priv = dee_file_resource_manager_get_instance_private ((DeeFileResourceManager *) self);
+ priv->resource_dirs = g_slist_append (priv->resource_dirs,
+ g_strdup (path));
+ }
+@@ -242,7 +238,7 @@ dee_file_resource_manager_get_primary_pa
+
+ g_return_val_if_fail (DEE_IS_FILE_RESOURCE_MANAGER (self), NULL);
+
+- priv = DEE_FILE_RESOURCE_MANAGER_GET_PRIVATE (self);
++ priv = dee_file_resource_manager_get_instance_private ((DeeFileResourceManager *) self);
+ return (const gchar *) priv->resource_dirs->data;
+ }
+
+@@ -393,7 +389,7 @@ dee_file_resource_manager_load (DeeResou
+ g_return_val_if_fail (resource_name != NULL, NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+- priv = DEE_FILE_RESOURCE_MANAGER_GET_PRIVATE (self);
++ priv = dee_file_resource_manager_get_instance_private ((DeeFileResourceManager *) self);
+
+ for (iter = priv->resource_dirs; iter != NULL; iter = iter->next)
+ {
+diff -up dee-1.2.7/src/dee-filter-model.c.dep dee-1.2.7/src/dee-filter-model.c
+--- dee-1.2.7/src/dee-filter-model.c.dep 2013-09-10 06:57:15.000000000 -0400
++++ dee-1.2.7/src/dee-filter-model.c 2019-09-05 11:32:21.687699629 -0400
+@@ -65,15 +65,6 @@
+
+ static void dee_filter_model_model_iface_init (DeeModelIface *iface);
+
+-G_DEFINE_TYPE_WITH_CODE (DeeFilterModel,
+- dee_filter_model,
+- DEE_TYPE_PROXY_MODEL,
+- G_IMPLEMENT_INTERFACE (DEE_TYPE_MODEL,
+- dee_filter_model_model_iface_init));
+-
+-#define DEE_FILTER_MODEL_GET_PRIVATE(obj) \
+- (G_TYPE_INSTANCE_GET_PRIVATE(obj, DEE_TYPE_FILTER_MODEL, DeeFilterModelPrivate))
+-
+ /**
+ * DeeFilterModelPrivate:
+ *
+@@ -107,6 +98,13 @@ enum
+ PROP_FILTER,
+ };
+
++G_DEFINE_TYPE_WITH_CODE (DeeFilterModel,
++ dee_filter_model,
++ DEE_TYPE_PROXY_MODEL,
++ G_ADD_PRIVATE(DeeFilterModel)
++ G_IMPLEMENT_INTERFACE (DEE_TYPE_MODEL,
++ dee_filter_model_model_iface_init));
++
+ /*
+ * DeeModel forward declarations
+ */
+@@ -332,9 +330,6 @@ dee_filter_model_class_init (DeeFilterMo
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY
+ | G_PARAM_STATIC_STRINGS);
+ g_object_class_install_property (obj_class, PROP_FILTER, pspec);
+-
+- /* Add private data */
+- g_type_class_add_private (obj_class, sizeof (DeeFilterModelPrivate));
+ }
+
+ static void
+@@ -342,7 +337,7 @@ dee_filter_model_init (DeeFilterModel *s
+ {
+ DeeFilterModelPrivate *priv;
+
+- priv = self->priv = DEE_FILTER_MODEL_GET_PRIVATE (self);
++ priv = self->priv = dee_filter_model_get_instance_private (self);
+
+ priv->iter_map = g_hash_table_new (g_direct_hash, g_direct_equal);
+ priv->iter_list = g_sequence_new (NULL);
+diff -up dee-1.2.7/src/dee-glist-result-set.c.dep dee-1.2.7/src/dee-glist-result-set.c
+--- dee-1.2.7/src/dee-glist-result-set.c.dep 2012-11-08 05:13:46.000000000 -0500
++++ dee-1.2.7/src/dee-glist-result-set.c 2019-09-05 11:37:49.387557145 -0400
+@@ -32,14 +32,6 @@
+ #include "dee-glist-result-set.h"
+
+ static void dee_glist_result_set_result_set_iface_init (DeeResultSetIface *iface);
+-G_DEFINE_TYPE_WITH_CODE (DeeGListResultSet,
+- dee_glist_result_set,
+- G_TYPE_OBJECT,
+- G_IMPLEMENT_INTERFACE (DEE_TYPE_RESULT_SET,
+- dee_glist_result_set_result_set_iface_init))
+-
+-#define DEE_GLIST_RESULT_SET_GET_PRIVATE(obj) \
+- (G_TYPE_INSTANCE_GET_PRIVATE(obj, DEE_TYPE_GLIST_RESULT_SET, DeeGListResultSetPrivate))
+
+ typedef struct
+ {
+@@ -52,13 +44,20 @@ typedef struct
+ gboolean n_rows_calculated;
+ } DeeGListResultSetPrivate;
+
++G_DEFINE_TYPE_WITH_CODE (DeeGListResultSet,
++ dee_glist_result_set,
++ G_TYPE_OBJECT,
++ G_ADD_PRIVATE(DeeGListResultSet)
++ G_IMPLEMENT_INTERFACE (DEE_TYPE_RESULT_SET,
++ dee_glist_result_set_result_set_iface_init))
++
+ /* GObject Init */
+ static void
+ dee_glist_result_set_finalize (GObject *object)
+ {
+ DeeGListResultSetPrivate *priv;
+
+- priv = DEE_GLIST_RESULT_SET_GET_PRIVATE (object);
++ priv = dee_glist_result_set_get_instance_private ((DeeGListResultSet *) object);
+
+ if (priv->model)
+ g_object_unref (priv->model);
+@@ -74,9 +73,6 @@ dee_glist_result_set_class_init (DeeGLis
+ GObjectClass *obj_class = G_OBJECT_CLASS (klass);
+
+ obj_class->finalize = dee_glist_result_set_finalize;
+-
+- /* Add private data */
+- g_type_class_add_private (obj_class, sizeof (DeeGListResultSetPrivate));
+ }
+
+ static void
+@@ -84,7 +80,7 @@ dee_glist_result_set_init (DeeGListResul
+ {
+ DeeGListResultSetPrivate *priv;
+
+- priv = DEE_GLIST_RESULT_SET_GET_PRIVATE (self);
++ priv = dee_glist_result_set_get_instance_private (self);
+ priv->pos = 0;
+ priv->n_rows_calculated = FALSE;
+ }
+@@ -96,7 +92,7 @@ dee_glist_result_set_get_n_rows (DeeResu
+
+ g_return_val_if_fail (DEE_IS_GLIST_RESULT_SET (self), 0);
+
+- priv = DEE_GLIST_RESULT_SET_GET_PRIVATE (self);
++ priv = dee_glist_result_set_get_instance_private ((DeeGListResultSet *) self);
+
+ if (!priv->n_rows_calculated)
+ {
+@@ -116,7 +112,7 @@ dee_glist_result_set_next (DeeResultSet
+ g_return_val_if_fail (DEE_IS_GLIST_RESULT_SET (self), NULL);
+ g_return_val_if_fail (dee_result_set_has_next (self), NULL);
+
+- priv = DEE_GLIST_RESULT_SET_GET_PRIVATE (self);
++ priv = dee_glist_result_set_get_instance_private ((DeeGListResultSet *) self);
+ next = dee_result_set_peek (self);
+ priv->cursor = priv->cursor->next;
+ priv->pos++;
+@@ -130,7 +126,7 @@ dee_glist_result_set_has_next (DeeResult
+
+ g_return_val_if_fail (DEE_IS_GLIST_RESULT_SET (self), FALSE);
+
+- priv = DEE_GLIST_RESULT_SET_GET_PRIVATE (self);
++ priv = dee_glist_result_set_get_instance_private ((DeeGListResultSet *) self);
+
+ return priv->cursor != NULL;
+ }
+@@ -142,7 +138,7 @@ dee_glist_result_set_peek (DeeResultSet
+
+ g_return_val_if_fail (DEE_IS_GLIST_RESULT_SET (self), NULL);
+
+- priv = DEE_GLIST_RESULT_SET_GET_PRIVATE (self);
++ priv = dee_glist_result_set_get_instance_private ((DeeGListResultSet *) self);
+
+ if (priv->cursor == NULL)
+ return NULL;
+@@ -158,7 +154,7 @@ dee_glist_result_set_seek (DeeResultSet
+
+ g_return_if_fail (DEE_IS_GLIST_RESULT_SET (self));
+
+- priv = DEE_GLIST_RESULT_SET_GET_PRIVATE (self);
++ priv = dee_glist_result_set_get_instance_private ((DeeGListResultSet *) self);
+ priv->cursor = g_list_nth (priv->rows, pos);
+ priv->pos = pos;
+
+@@ -177,7 +173,7 @@ dee_glist_result_set_tell (DeeResultSet
+
+ g_return_val_if_fail (DEE_IS_GLIST_RESULT_SET (self), 0);
+
+- priv = DEE_GLIST_RESULT_SET_GET_PRIVATE (self);
++ priv = dee_glist_result_set_get_instance_private ((DeeGListResultSet *) self);
+ return priv->pos;
+ }
+
+@@ -188,7 +184,7 @@ dee_glist_result_set_get_model (DeeResul
+
+ g_return_val_if_fail (DEE_IS_GLIST_RESULT_SET (self), NULL);
+
+- priv = DEE_GLIST_RESULT_SET_GET_PRIVATE (self);
++ priv = dee_glist_result_set_get_instance_private ((DeeGListResultSet *) self);
+ return priv->model;
+ }
+
+@@ -216,7 +212,7 @@ dee_glist_result_set_new (GList *rows
+ DeeGListResultSetPrivate *priv;
+
+ self = g_object_new (DEE_TYPE_GLIST_RESULT_SET, NULL);
+- priv = DEE_GLIST_RESULT_SET_GET_PRIVATE (self);
++ priv = dee_glist_result_set_get_instance_private ((DeeGListResultSet *) self);
+ priv->rows = rows;
+ priv->cursor = rows;
+ priv->model = g_object_ref (model);
+diff -up dee-1.2.7/src/dee-hash-index.c.dep dee-1.2.7/src/dee-hash-index.c
+--- dee-1.2.7/src/dee-hash-index.c.dep 2012-11-08 05:13:46.000000000 -0500
++++ dee-1.2.7/src/dee-hash-index.c 2019-09-05 11:38:58.981034578 -0400
+@@ -37,11 +37,6 @@
+ #include "dee-glist-result-set.h"
+ #include "trace-log.h"
+
+-G_DEFINE_TYPE (DeeHashIndex, dee_hash_index, DEE_TYPE_INDEX);
+-
+-#define DEE_HASH_INDEX_GET_PRIVATE(obj) \
+- (G_TYPE_INSTANCE_GET_PRIVATE(obj, DEE_TYPE_HASH_INDEX, DeeHashIndexPrivate))
+-
+ /*
+ * FORWARDS
+ */
+@@ -102,6 +97,8 @@ enum
+ PROP_0,
+ };
+
++G_DEFINE_TYPE_WITH_PRIVATE (DeeHashIndex, dee_hash_index, DEE_TYPE_INDEX);
++
+ /* GObject stuff */
+ static void
+ dee_hash_index_finalize (GObject *object)
+@@ -180,15 +177,12 @@ dee_hash_index_class_init (DeeHashIndexC
+ idx_class->get_n_rows = dee_hash_index_get_n_rows;
+ idx_class->get_n_rows_for_term = dee_hash_index_get_n_rows_for_term;
+ idx_class->get_supported_term_match_flags = dee_hash_index_get_supported_term_match_flags;
+-
+- /* Add private data */
+- g_type_class_add_private (obj_class, sizeof (DeeHashIndexPrivate));
+ }
+
+ static void
+ dee_hash_index_init (DeeHashIndex *self)
+ {
+- self->priv = DEE_HASH_INDEX_GET_PRIVATE (self);
++ self->priv = dee_hash_index_get_instance_private (self);
+
+ self->priv->terms = g_hash_table_new (g_str_hash, g_str_equal);
+ self->priv->row_terms = g_hash_table_new_full(g_direct_hash, g_direct_equal,
+diff -up dee-1.2.7/src/dee-index.c.dep dee-1.2.7/src/dee-index.c
+--- dee-1.2.7/src/dee-index.c.dep 2012-11-08 05:13:46.000000000 -0500
++++ dee-1.2.7/src/dee-index.c 2019-09-05 11:39:52.657860216 -0400
+@@ -43,11 +43,6 @@
+ #include "dee-marshal.h"
+ #include "trace-log.h"
+
+-G_DEFINE_ABSTRACT_TYPE (DeeIndex, dee_index, G_TYPE_OBJECT);
+-
+-#define DEE_INDEX_GET_PRIVATE(obj) \
+- (G_TYPE_INSTANCE_GET_PRIVATE(obj, DEE_TYPE_INDEX, DeeIndexPrivate))
+-
+ /**
+ * DeeIndexPrivate:
+ *
+@@ -68,6 +63,8 @@ enum
+ PROP_READER
+ };
+
++G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (DeeIndex, dee_index, G_TYPE_OBJECT);
++
+ /* GObject stuff */
+ static void
+ dee_index_finalize (GObject *object)
+@@ -195,15 +192,12 @@ dee_index_class_init (DeeIndexClass *kla
+ G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY
+ | G_PARAM_STATIC_STRINGS);
+ g_object_class_install_property (obj_class, PROP_READER, pspec);
+-
+- /* Add private data */
+- g_type_class_add_private (obj_class, sizeof (DeeIndexPrivate));
+ }
+
+ static void
+ dee_index_init (DeeIndex *self)
+ {
+- self->priv = DEE_INDEX_GET_PRIVATE (self);
++ self->priv = dee_index_get_instance_private (self);
+ }
+
+ /**
+diff -up dee-1.2.7/src/dee-peer.c.dep dee-1.2.7/src/dee-peer.c
+--- dee-1.2.7/src/dee-peer.c.dep 2013-07-21 18:27:22.000000000 -0400
++++ dee-1.2.7/src/dee-peer.c 2019-09-05 11:40:51.330576540 -0400
+@@ -62,11 +62,6 @@
+ #include "dee-marshal.h"
+ #include "trace-log.h"
+
+-G_DEFINE_TYPE (DeePeer, dee_peer, G_TYPE_OBJECT)
+-
+-#define DEE_PEER_GET_PRIVATE(obj) \
+- (G_TYPE_INSTANCE_GET_PRIVATE(obj, DEE_TYPE_PEER, DeePeerPrivate))
+-
+ #define _DeePeerIter GSequenceIter
+
+ /**
+@@ -145,6 +140,8 @@ enum
+ LAST_SIGNAL
+ };
+
++G_DEFINE_TYPE_WITH_PRIVATE (DeePeer, dee_peer, G_TYPE_OBJECT)
++
+ static guint32 _peer_signals[LAST_SIGNAL] = { 0 };
+
+ /* Forwards */
+@@ -568,9 +565,6 @@ dee_peer_class_init (DeePeerClass *klass
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY
+ | G_PARAM_STATIC_STRINGS);
+ g_object_class_install_property (obj_class, PROP_SWARM_OWNER, pspec);
+-
+- /* Add private data */
+- g_type_class_add_private (obj_class, sizeof (DeePeerPrivate));
+ }
+
+ static void
+@@ -578,7 +572,7 @@ dee_peer_init (DeePeer *peer)
+ {
+ DeePeerPrivate *priv;
+
+- priv = peer->priv = DEE_PEER_GET_PRIVATE (peer);
++ priv = peer->priv = dee_peer_get_instance_private (peer);
+
+ priv->swarm_name = NULL;
+ priv->swarm_leader = NULL;
+diff -up dee-1.2.7/src/dee-proxy-model.c.dep dee-1.2.7/src/dee-proxy-model.c
+--- dee-1.2.7/src/dee-proxy-model.c.dep 2013-09-10 06:52:03.000000000 -0400
++++ dee-1.2.7/src/dee-proxy-model.c 2019-09-05 11:43:32.123058716 -0400
+@@ -43,15 +43,6 @@
+
+ static void dee_proxy_model_model_iface_init (DeeModelIface *iface);
+
+-G_DEFINE_TYPE_WITH_CODE (DeeProxyModel,
+- dee_proxy_model,
+- DEE_TYPE_SERIALIZABLE_MODEL,
+- G_IMPLEMENT_INTERFACE (DEE_TYPE_MODEL,
+- dee_proxy_model_model_iface_init));
+-
+-#define DEE_PROXY_MODEL_GET_PRIVATE(obj) \
+- (G_TYPE_INSTANCE_GET_PRIVATE(obj, DEE_TYPE_PROXY_MODEL, DeeProxyModelPrivate))
+-
+ enum
+ {
+ PROP_0,
+@@ -85,6 +76,13 @@ struct _DeeProxyModelPrivate
+ gulong changeset_finished_handler;
+ };
+
++G_DEFINE_TYPE_WITH_CODE (DeeProxyModel,
++ dee_proxy_model,
++ DEE_TYPE_SERIALIZABLE_MODEL,
++ G_ADD_PRIVATE(DeeProxyModel)
++ G_IMPLEMENT_INTERFACE (DEE_TYPE_MODEL,
++ dee_proxy_model_model_iface_init));
++
+ #define DEE_PROXY_MODEL_BACK_END(model) (DEE_PROXY_MODEL(model)->priv->back_end)
+ #define SUPER_CLASS DEE_SERIALIZABLE_MODEL_CLASS (dee_proxy_model_parent_class)
+
+@@ -441,9 +439,6 @@ dee_proxy_model_class_init (DeeProxyMode
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY
+ | G_PARAM_STATIC_STRINGS);
+ g_object_class_install_property (obj_class, PROP_INHERIT_SEQNUMS, pspec);
+-
+- /* Add private data */
+- g_type_class_add_private (obj_class, sizeof (DeeProxyModelPrivate));
+ }
+
+ static void
+@@ -500,7 +495,7 @@ dee_proxy_model_init (DeeProxyModel *mod
+ {
+ DeeProxyModelPrivate *priv;
+
+- priv = model->priv = DEE_PROXY_MODEL_GET_PRIVATE (model);
++ priv = model->priv = dee_proxy_model_get_instance_private (model);
+ priv->back_end = NULL;
+ priv->inherit_seqnums = TRUE;
+
+diff -up dee-1.2.7/src/dee-sequence-model.c.dep dee-1.2.7/src/dee-sequence-model.c
+--- dee-1.2.7/src/dee-sequence-model.c.dep 2013-09-16 14:07:09.000000000 -0400
++++ dee-1.2.7/src/dee-sequence-model.c 2019-09-05 11:45:05.301020171 -0400
+@@ -49,15 +49,6 @@
+
+ static void dee_sequence_model_model_iface_init (DeeModelIface *iface);
+
+-G_DEFINE_TYPE_WITH_CODE (DeeSequenceModel,
+- dee_sequence_model,
+- DEE_TYPE_SERIALIZABLE_MODEL,
+- G_IMPLEMENT_INTERFACE (DEE_TYPE_MODEL,
+- dee_sequence_model_model_iface_init));
+-
+-#define DEE_SEQUENCE_MODEL_GET_PRIVATE(obj) \
+- (G_TYPE_INSTANCE_GET_PRIVATE(obj, DEE_TYPE_SEQUENCE_MODEL, DeeSequenceModelPrivate))
+-
+ /* Signal ids for emitting row update signals a just a smidgeon faster */
+ static guint sigid_row_added;
+ static guint sigid_row_removed;
+@@ -85,6 +76,13 @@ struct _DeeSequenceModelPrivate
+ gboolean setting_many;
+ };
+
++G_DEFINE_TYPE_WITH_CODE (DeeSequenceModel,
++ dee_sequence_model,
++ DEE_TYPE_SERIALIZABLE_MODEL,
++ G_ADD_PRIVATE(DeeSequenceModel)
++ G_IMPLEMENT_INTERFACE (DEE_TYPE_MODEL,
++ dee_sequence_model_model_iface_init));
++
+ /*
+ * DeeModel forward declarations
+ */
+@@ -283,9 +281,6 @@ dee_sequence_model_class_init (DeeSequen
+ sigid_row_added = g_signal_lookup ("row-added", DEE_TYPE_MODEL);
+ sigid_row_removed = g_signal_lookup ("row-removed", DEE_TYPE_MODEL);
+ sigid_row_changed = g_signal_lookup ("row-changed", DEE_TYPE_MODEL);
+-
+- /* Add private data */
+- g_type_class_add_private (obj_class, sizeof (DeeSequenceModelPrivate));
+ }
+
+ static void
+@@ -327,7 +322,7 @@ dee_sequence_model_init (DeeSequenceMode
+ {
+ DeeSequenceModelPrivate *priv;
+
+- priv = model->priv = DEE_SEQUENCE_MODEL_GET_PRIVATE (model);
++ priv = model->priv = dee_sequence_model_get_instance_private (model);
+ priv->sequence = g_sequence_new (NULL);
+ priv->tags = NULL;
+ priv->setting_many = FALSE;
+diff -up dee-1.2.7/src/dee-serializable-model.c.dep dee-1.2.7/src/dee-serializable-model.c
+--- dee-1.2.7/src/dee-serializable-model.c.dep 2019-09-05 11:17:15.831415776 -0400
++++ dee-1.2.7/src/dee-serializable-model.c 2019-09-05 11:46:05.331706803 -0400
+@@ -47,16 +47,6 @@
+ static void dee_serializable_model_model_iface_init (DeeModelIface *iface);
+ static void dee_serializable_model_serializable_iface_init (DeeSerializableIface *iface);
+ static GObject* dee_serializable_model_parse_serialized (GVariant *data);
+-G_DEFINE_ABSTRACT_TYPE_WITH_CODE (DeeSerializableModel,
+- dee_serializable_model,
+- G_TYPE_OBJECT,
+- G_IMPLEMENT_INTERFACE (DEE_TYPE_MODEL,
+- dee_serializable_model_model_iface_init)
+- G_IMPLEMENT_INTERFACE (DEE_TYPE_SERIALIZABLE,
+- dee_serializable_model_serializable_iface_init));
+-
+-#define DEE_SERIALIZABLE_MODEL_GET_PRIVATE(obj) \
+- (G_TYPE_INSTANCE_GET_PRIVATE(obj, DEE_TYPE_SERIALIZABLE_MODEL, DeeSerializableModelPrivate))
+
+ #define MODEL_VARIANT_TYPE_1_0 G_VARIANT_TYPE ("(asaav(tt))")
+ #define MODEL_VARIANT_TYPE G_VARIANT_TYPE ("(asaav(tt)a{sv})")
+@@ -80,6 +70,15 @@ struct _DeeSerializableModelPrivate
+ gboolean inside_changeset;
+ };
+
++G_DEFINE_ABSTRACT_TYPE_WITH_CODE (DeeSerializableModel,
++ dee_serializable_model,
++ G_TYPE_OBJECT,
++ G_ADD_PRIVATE(DeeSerializableModel)
++ G_IMPLEMENT_INTERFACE (DEE_TYPE_MODEL,
++ dee_serializable_model_model_iface_init)
++ G_IMPLEMENT_INTERFACE (DEE_TYPE_SERIALIZABLE,
++ dee_serializable_model_serializable_iface_init));
++
+ typedef struct _FieldSchemaInfo FieldSchemaInfo;
+
+ struct _FieldSchemaInfo
+@@ -362,9 +361,6 @@ dee_serializable_model_class_init (DeeSe
+
+ sigid_changeset_started = g_signal_lookup ("changeset-started", DEE_TYPE_MODEL);
+ sigid_changeset_finished = g_signal_lookup ("changeset-finished", DEE_TYPE_MODEL);
+-
+- /* Add private data */
+- g_type_class_add_private (obj_class, sizeof (DeeSerializableModelPrivate));
+ }
+
+ static void
+@@ -372,7 +368,7 @@ dee_serializable_model_init (DeeSerializ
+ {
+ DeeSerializableModelPrivate *priv;
+
+- priv = model->priv = DEE_SERIALIZABLE_MODEL_GET_PRIVATE (model);
++ priv = model->priv = dee_serializable_model_get_instance_private (model);
+
+ priv->seqnum = 0;
+
+diff -up dee-1.2.7/src/dee-server.c.dep dee-1.2.7/src/dee-server.c
+--- dee-1.2.7/src/dee-server.c.dep 2012-11-08 05:13:46.000000000 -0500
++++ dee-1.2.7/src/dee-server.c 2019-09-05 11:41:45.727386434 -0400
+@@ -39,11 +39,6 @@
+ #include "dee-marshal.h"
+ #include "trace-log.h"
+
+-G_DEFINE_TYPE (DeeServer, dee_server, DEE_TYPE_PEER)
+-
+-#define GET_PRIVATE(o) \
+- (G_TYPE_INSTANCE_GET_PRIVATE ((o), DEE_TYPE_SERVER, DeeServerPrivate))
+-
+ #define ACTIVE_CONNECTIONS_KEY "dee-active-connections-list"
+ #define CONNECTION_ACCEPTED_KEY "dee-connection-accepted"
+
+@@ -78,6 +73,8 @@ enum
+ LAST_SIGNAL
+ };
+
++G_DEFINE_TYPE_WITH_PRIVATE (DeeServer, dee_server, DEE_TYPE_PEER)
++
+ //static guint32 _server_signals[LAST_SIGNAL] = { 0 };
+ static GHashTable *active_servers = NULL;
+
+@@ -397,8 +394,6 @@ dee_server_class_init (DeeServerClass *k
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ DeePeerClass *peer_class = DEE_PEER_CLASS (klass);
+
+- g_type_class_add_private (klass, sizeof (DeeServerPrivate));
+-
+ object_class->constructed = dee_server_constructed;
+ object_class->get_property = dee_server_get_property;
+ object_class->set_property = dee_server_set_property;
+@@ -447,7 +442,7 @@ dee_server_class_init (DeeServerClass *k
+ static void
+ dee_server_init (DeeServer *self)
+ {
+- self->priv = GET_PRIVATE (self);
++ self->priv = dee_server_get_instance_private (self);
+
+ self->priv->connection_id_map = g_hash_table_new_full (g_direct_hash,
+ g_direct_equal,
+diff -up dee-1.2.7/src/dee-shared-model.c.dep dee-1.2.7/src/dee-shared-model.c
+--- dee-1.2.7/src/dee-shared-model.c.dep 2019-09-05 11:17:15.831415776 -0400
++++ dee-1.2.7/src/dee-shared-model.c 2019-09-05 11:46:58.495543664 -0400
+@@ -61,17 +61,6 @@ static void dee_shared_model_serializabl
+
+ static void dee_shared_model_model_iface_init (DeeModelIface *iface);
+
+-G_DEFINE_TYPE_WITH_CODE (DeeSharedModel,
+- dee_shared_model,
+- DEE_TYPE_PROXY_MODEL,
+- G_IMPLEMENT_INTERFACE (DEE_TYPE_SERIALIZABLE,
+- dee_shared_model_serializable_iface_init)
+- G_IMPLEMENT_INTERFACE (DEE_TYPE_MODEL,
+- dee_shared_model_model_iface_init));
+-
+-#define DEE_SHARED_MODEL_GET_PRIVATE(obj) \
+- (G_TYPE_INSTANCE_GET_PRIVATE(obj, DEE_TYPE_SHARED_MODEL, DeeSharedModelPrivate))
+-
+ #define COMMIT_VARIANT_TYPE G_VARIANT_TYPE("(sasaavauay(tt))")
+ #define COMMIT_TUPLE_ITEMS 6
+ #define CLONE_VARIANT_TYPE G_VARIANT_TYPE("(sasaavauay(tt)a{sv})")
+@@ -109,6 +98,15 @@ struct _DeeSharedModelPrivate
+ DeeSharedModelFlushMode flush_mode;
+ };
+
++G_DEFINE_TYPE_WITH_CODE (DeeSharedModel,
++ dee_shared_model,
++ DEE_TYPE_PROXY_MODEL,
++ G_ADD_PRIVATE(DeeSharedModel)
++ G_IMPLEMENT_INTERFACE (DEE_TYPE_SERIALIZABLE,
++ dee_shared_model_serializable_iface_init)
++ G_IMPLEMENT_INTERFACE (DEE_TYPE_MODEL,
++ dee_shared_model_model_iface_init));
++
+ typedef struct
+ {
+ /* The revision type is: ROWS_ADDED, ROWS_REMOVED, or ROWS_CHANGED */
+@@ -806,9 +804,6 @@ dee_shared_model_class_init (DeeSharedMo
+ G_TYPE_NONE, 2,
+ G_TYPE_UINT64, G_TYPE_UINT64);
+
+- /* Add private data */
+- g_type_class_add_private (obj_class, sizeof (DeeSharedModelPrivate));
+-
+ /* Runtime-check that our defines are correct */
+ g_assert (g_variant_type_n_items (CLONE_VARIANT_TYPE) == CLONE_TUPLE_ITEMS);
+ g_assert (g_variant_type_n_items (COMMIT_VARIANT_TYPE) == COMMIT_TUPLE_ITEMS);
+@@ -819,7 +814,7 @@ dee_shared_model_init (DeeSharedModel *s
+ {
+ DeeSharedModelPrivate *priv;
+
+- priv = self->priv = DEE_SHARED_MODEL_GET_PRIVATE (self);
++ priv = self->priv = dee_shared_model_get_instance_private (self);
+
+ priv->swarm = NULL;
+ priv->model_path = NULL;
+diff -up dee-1.2.7/src/dee-term-list.c.dep dee-1.2.7/src/dee-term-list.c
+--- dee-1.2.7/src/dee-term-list.c.dep 2012-11-08 05:13:46.000000000 -0500
++++ dee-1.2.7/src/dee-term-list.c 2019-09-05 11:47:44.472537770 -0400
+@@ -43,11 +43,6 @@
+ #include "dee-term-list.h"
+ #include "trace-log.h"
+
+-G_DEFINE_TYPE (DeeTermList, dee_term_list, G_TYPE_OBJECT);
+-
+-#define DEE_TERM_LIST_GET_PRIVATE(obj) \
+- (G_TYPE_INSTANCE_GET_PRIVATE(obj, DEE_TYPE_TERM_LIST, DeeTermListPrivate))
+-
+ /*
+ * FORWARDS
+ */
+@@ -93,6 +88,8 @@ enum
+ PROP_0,
+ };
+
++G_DEFINE_TYPE_WITH_PRIVATE (DeeTermList, dee_term_list, G_TYPE_OBJECT);
++
+ #define CHECK_LAZY_SETUP(term_list) \
+ if (G_UNLIKELY(term_list->priv->chunk == NULL)) \
+ { \
+@@ -154,9 +151,6 @@ dee_term_list_class_init (DeeTermListCla
+ | G_PARAM_STATIC_STRINGS);
+ g_object_class_install_property (obj_class, PROP_FILTER, pspec);
+ */
+-
+- /* Add private data */
+- g_type_class_add_private (obj_class, sizeof (DeeTermListPrivate));
+ }
+
+ static void
+@@ -164,7 +158,7 @@ dee_term_list_init (DeeTermList *self)
+ {
+ DeeTermListPrivate *priv;
+
+- priv = self->priv = DEE_TERM_LIST_GET_PRIVATE (self);
++ priv = self->priv = dee_term_list_get_instance_private (self);
+
+ /* The chunk and terms are allocated lazily, to make clone() work more
+ * eficiently */
+diff -up dee-1.2.7/src/dee-text-analyzer.c.dep dee-1.2.7/src/dee-text-analyzer.c
+--- dee-1.2.7/src/dee-text-analyzer.c.dep 2012-11-08 05:13:46.000000000 -0500
++++ dee-1.2.7/src/dee-text-analyzer.c 2019-09-05 11:48:34.262448464 -0400
+@@ -36,14 +36,6 @@
+
+ #include "dee-text-analyzer.h"
+
+-G_DEFINE_TYPE (DeeTextAnalyzer,
+- dee_text_analyzer,
+- DEE_TYPE_ANALYZER);
+-
+-#define DEE_TEXT_ANALYZER_GET_PRIVATE(obj) \
+- (G_TYPE_INSTANCE_GET_PRIVATE(obj, DEE_TYPE_TEXT_ANALYZER, DeeTextAnalyzerPrivate))
+-
+-
+ /**
+ * DeeAnalyzerPrivate:
+ *
+@@ -59,6 +51,10 @@ enum
+ PROP_0,
+ };
+
++G_DEFINE_TYPE_WITH_PRIVATE (DeeTextAnalyzer,
++ dee_text_analyzer,
++ DEE_TYPE_ANALYZER);
++
+ /*
+ * DeeAnalyzer forward declarations
+ */
+@@ -88,15 +84,12 @@ dee_text_analyzer_class_init (DeeTextAna
+
+ a_class->tokenize = dee_text_analyzer_tokenize_real;
+ a_class->collate_key = dee_text_analyzer_collate_key_real;
+-
+- /* Add private data */
+- g_type_class_add_private (obj_class, sizeof (DeeTextAnalyzerPrivate));
+ }
+
+ static void
+ dee_text_analyzer_init (DeeTextAnalyzer *self)
+ {
+- self->priv = DEE_TEXT_ANALYZER_GET_PRIVATE (self);
++ self->priv = dee_text_analyzer_get_instance_private (self);
+ }
+
+ /*
+diff -up dee-1.2.7/src/dee-transaction.c.dep dee-1.2.7/src/dee-transaction.c
+--- dee-1.2.7/src/dee-transaction.c.dep 2012-11-28 03:46:41.000000000 -0500
++++ dee-1.2.7/src/dee-transaction.c 2019-09-05 11:49:21.474415553 -0400
+@@ -403,12 +403,10 @@ static void dee_transaction_model_iface_
+ G_DEFINE_TYPE_WITH_CODE (DeeTransaction,
+ dee_transaction,
+ DEE_TYPE_SERIALIZABLE_MODEL,
++ G_ADD_PRIVATE(DeeTransaction)
+ G_IMPLEMENT_INTERFACE (DEE_TYPE_MODEL,
+ dee_transaction_model_iface_init));
+
+-#define DEE_TRANSACTION_GET_PRIVATE(obj) \
+- (G_TYPE_INSTANCE_GET_PRIVATE(obj, DEE_TYPE_TRANSACTION, DeeTransactionPrivate))
+-
+ enum
+ {
+ PROP_0,
+@@ -644,9 +642,6 @@ dee_transaction_class_init (DeeTransacti
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY
+ | G_PARAM_STATIC_STRINGS);
+ g_object_class_install_property (obj_class, PROP_TARGET, pspec);
+-
+- /* Add private data */
+- g_type_class_add_private (obj_class, sizeof (DeeTransactionPrivate));
+ }
+
+ static void
+@@ -695,7 +690,7 @@ dee_transaction_init (DeeTransaction *mo
+ {
+ DeeTransactionPrivate *priv;
+
+- priv = model->priv = DEE_TRANSACTION_GET_PRIVATE (model);
++ priv = model->priv = dee_transaction_get_instance_private (model);
+ priv->target = NULL;
+
+ priv->journal = g_hash_table_new (g_direct_hash, g_direct_equal);
+diff -up dee-1.2.7/src/dee-tree-index.c.dep dee-1.2.7/src/dee-tree-index.c
+--- dee-1.2.7/src/dee-tree-index.c.dep 2012-11-08 05:13:46.000000000 -0500
++++ dee-1.2.7/src/dee-tree-index.c 2019-09-05 11:50:32.860853766 -0400
+@@ -40,11 +40,6 @@
+ #include "dee-glist-result-set.h"
+ #include "trace-log.h"
+
+-G_DEFINE_TYPE (DeeTreeIndex, dee_tree_index, DEE_TYPE_INDEX);
+-
+-#define DEE_TREE_INDEX_GET_PRIVATE(obj) \
+- (G_TYPE_INSTANCE_GET_PRIVATE(obj, DEE_TYPE_TREE_INDEX, DeeTreeIndexPrivate))
+-
+ /*
+ * FORWARDS
+ */
+@@ -310,6 +305,8 @@ enum
+ PROP_0,
+ };
+
++G_DEFINE_TYPE_WITH_PRIVATE (DeeTreeIndex, dee_tree_index, DEE_TYPE_INDEX);
++
+ /* GObject stuff */
+ static void
+ dee_tree_index_finalize (GObject *object)
+@@ -388,15 +385,12 @@ dee_tree_index_class_init (DeeTreeIndexC
+ idx_class->get_n_rows = dee_tree_index_get_n_rows;
+ idx_class->get_n_rows_for_term = dee_tree_index_get_n_rows_for_term;
+ idx_class->get_supported_term_match_flags = dee_tree_index_get_supported_term_match_flags;
+-
+- /* Add private data */
+- g_type_class_add_private (obj_class, sizeof (DeeTreeIndexPrivate));
+ }
+
+ static void
+ dee_tree_index_init (DeeTreeIndex *self)
+ {
+- self->priv = DEE_TREE_INDEX_GET_PRIVATE (self);
++ self->priv = dee_tree_index_get_instance_private (self);
+
+ self->priv->terms = g_sequence_new ((GDestroyNotify) term_destroy);
+ self->priv->row_terms = g_hash_table_new_full(g_direct_hash, g_direct_equal,
diff --git a/srcpkgs/dee/patches/dee-1.2.7-fix-duplicates-vala-0.5X.patch b/srcpkgs/dee/patches/dee-1.2.7-fix-duplicates-vala-0.5X.patch
new file mode 100644
index 00000000000000..61fd40994c4213
--- /dev/null
+++ b/srcpkgs/dee/patches/dee-1.2.7-fix-duplicates-vala-0.5X.patch
@@ -0,0 +1,24 @@
+diff -up dee-1.2.7/vapi/Dee-1.0.metadata.spot dee-1.2.7/vapi/Dee-1.0.metadata
+--- dee-1.2.7/vapi/Dee-1.0.metadata.spot 2022-01-10 13:09:03.075105767 -0500
++++ dee-1.2.7/vapi/Dee-1.0.metadata 2022-01-10 13:10:20.477570607 -0500
+@@ -1,6 +1,10 @@
+ GListResultSet skip
+ GListResultSetClass skip
+
++Filter
++ .new skip
++ .destroy skip
++
+ FilterModel
+ .filter skip // unsupported type for construct property
+ Index
+@@ -22,6 +26,9 @@ Model
+ .get_tag skip
+ .set_tag skip
+ .clear_tag skip
++ModelReader
++ .destroy skip
++
+
+ SerializableParseFunc skip=false
+ Serializable
diff --git a/srcpkgs/dee/patches/vapi-skip-properties.patch b/srcpkgs/dee/patches/vapi-skip-properties.patch
new file mode 100644
index 00000000000000..3a9353a5212a48
--- /dev/null
+++ b/srcpkgs/dee/patches/vapi-skip-properties.patch
@@ -0,0 +1,15 @@
+Index: dee-1.2.7+17.10.20170616/vapi/Dee-1.0.metadata
+===================================================================
+--- dee-1.2.7+17.10.20170616.orig/vapi/Dee-1.0.metadata
++++ dee-1.2.7+17.10.20170616/vapi/Dee-1.0.metadata
+@@ -2,7 +2,9 @@ GListResultSet skip
+ GListResultSetClass skip
+
+ FilterModel
+- .filter unowned
++ .filter skip // unsupported type for construct property
++Index
++ .reader skip // unsupported type for construct property
+ Model
+ .append skip=false
+ .build_named_row skip
diff --git a/srcpkgs/dee/template b/srcpkgs/dee/template
new file mode 100644
index 00000000000000..d0a1d859e5703a
--- /dev/null
+++ b/srcpkgs/dee/template
@@ -0,0 +1,38 @@
+# Template file for 'dee'
+pkgname=dee
+version=1.2.7+17.10.20170616
+revision=1
+build_style=gnu-configure
+configure_args="--prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --disable-static --disable-tests"
+hostmakedepends="automake gobject-introspection gtk-doc pkg-config vala"
+makedepends="glib-devel icu-devel"
+depends="dbus-glib python python3 python3-gobject"
+short_desc="Model to synchronize multiple instances over DBus"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="LGPL-3.0-only"
+homepage="https://launchpad.net/dee"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/dee_${version}.orig.tar.gz"
+checksum=e63f979a7a5012a7786786f8081a9279256ab28ece6e557c6ce5bf87535ae899
+CFLAGS="-Wno-error"
+
+pre_configure() {
+ autoreconf -fi
+ export PYTHON="/usr/bin/python"
+}
+
+post_configure() {
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+}
+
+dee-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision} libglib-devel"
+ pkg_install() {
+ vmove usr/include
+ vmove "usr/lib/*.so"
+ vmove usr/lib/pkgconfig
+ vmove usr/share/gir-1.0
+ vmove usr/share/vala
+ }
+}
diff --git a/srcpkgs/glewmx-devel b/srcpkgs/glewmx-devel
new file mode 120000
index 00000000000000..5f2ab6e5b90a05
--- /dev/null
+++ b/srcpkgs/glewmx-devel
@@ -0,0 +1 @@
+glewmx
\ No newline at end of file
diff --git a/srcpkgs/glewmx/template b/srcpkgs/glewmx/template
new file mode 100644
index 00000000000000..bcbd8c4ec1497b
--- /dev/null
+++ b/srcpkgs/glewmx/template
@@ -0,0 +1,67 @@
+# Template file for 'glewmx'
+pkgname=glewmx
+version=1.13.0
+revision=1
+_ubuntu_rel=5build1
+build_style=gnu-makefile
+configure_args=GLEW_DEST="${DESTDIR}/usr"
+make_install_target="install.all"
+hostmakedepends="wget"
+makedepends="libglvnd-devel libX11-devel"
+depends="glu libXi libXmu"
+short_desc="OpenGL Extension Wrangler MX"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="BSD-3-Clause, MIT, GPL-2.0-or-later"
+homepage="http://launchpad.net/ubuntu/+source/glewmx"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/glewmx_${version}.orig.tar.gz"
+checksum=aa25dc48ed84b0b64b8d41cdd42c8f40f149c37fa2ffa39cd97f42c78d128bc7
+
+post_extract() {
+ wget "https://launchpad.net/ubuntu/+archive/primary/+files/glewmx_${version}-${_ubuntu_rel}.debian.tar.xz"
+ vextract --no-strip-components \
+ glewmx_${version}-${_ubuntu_rel}.debian.tar.xz
+}
+
+do_patch() {
+ for i in $(grep -v '#' debian/patches/series); do
+ patch -p1 -i "debian/patches/${i}"
+ done
+
+ sed -i 's|lib64|lib|' config/Makefile.linux
+ sed -i '/^.PHONY: .*\.pc$/d' Makefile
+}
+
+do_build() {
+ make CC=$CC AR=$AR AS=$AS LD=$CC RANLIB=$RANLIB \
+ CFLAGS.EXTRA="-fPIC $CFLAGS $CPPFLAGS" \
+ LDFLAGS.EXTRA="$LDFLAGS" ${makejobs}
+}
+
+post_install() {
+ mv "${DESTDIR}/usr/include/GL/glew.h" \
+ "${DESTDIR}/usr/include/GL/glewmx.h"
+ mv "${DESTDIR}/usr/include/GL/glxew.h" \
+ "${DESTDIR}/usr/include/GL/glxewmx.h"
+ mv "${DESTDIR}/usr/include/GL/wglew.h" \
+ "${DESTDIR}/usr/include/GL/wglewmx.h"
+
+ rm -R ${DESTDIR}/usr/bin
+ rm ${DESTDIR}/usr/lib/libGLEW.so
+ rm ${DESTDIR}/usr/lib/libGLEW.a
+ rm ${DESTDIR}/usr/lib/pkgconfig/glew.pc
+
+ chmod 0755 "${DESTDIR}"/usr/lib/libGLEW*.so.${version}
+
+ vlicense LICENSE.txt
+}
+
+glewmx-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision} glu-devel"
+ pkg_install() {
+ vmove usr/include
+ vmove "usr/lib/*.a"
+ vmove "usr/lib/*.so"
+ vmove usr/lib/pkgconfig
+ }
+}
diff --git a/srcpkgs/gsettings-qt-devel b/srcpkgs/gsettings-qt-devel
new file mode 120000
index 00000000000000..6402e122b23a69
--- /dev/null
+++ b/srcpkgs/gsettings-qt-devel
@@ -0,0 +1 @@
+gsettings-qt
\ No newline at end of file
diff --git a/srcpkgs/gsettings-qt/template b/srcpkgs/gsettings-qt/template
new file mode 100644
index 00000000000000..c34ac2e2fd1aeb
--- /dev/null
+++ b/srcpkgs/gsettings-qt/template
@@ -0,0 +1,30 @@
+# Template file for 'gsettings-qt'
+pkgname=gsettings-qt
+version=0.2
+revision=1
+build_style=qmake
+configure_args="gsettings-qt.pro"
+hostmakedepends="pkg-config"
+makedepends="qt5-devel qt5-declarative-devel"
+short_desc="Library to access GSettings from Qt"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="LGPL-3.0-only"
+homepage="https://launchpad.net/gsettings-qt"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/gsettings-qt_${version}.orig.tar.gz"
+checksum=1ee20cc73f0c3c6afc6910e6b60fd1236e6bcc42920f7b2442aca208914cd7f8
+
+do_patch() {
+ sed -i -e 's|tests/tests.pro||g' \
+ -e 's|tests/cpptest.pro||g' \
+ gsettings-qt.pro
+}
+
+gsettings-qt-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision}"
+ pkg_install() {
+ vmove usr/include
+ vmove "usr/lib/*.so"
+ vmove usr/lib/pkgconfig
+ }
+}
diff --git a/srcpkgs/gsettings-ubuntu-schemas-devel b/srcpkgs/gsettings-ubuntu-schemas-devel
new file mode 120000
index 00000000000000..141e42a05c7f47
--- /dev/null
+++ b/srcpkgs/gsettings-ubuntu-schemas-devel
@@ -0,0 +1 @@
+gsettings-ubuntu-schemas
\ No newline at end of file
diff --git a/srcpkgs/gsettings-ubuntu-schemas/files/50-com.ubuntu.AccountsService.rules b/srcpkgs/gsettings-ubuntu-schemas/files/50-com.ubuntu.AccountsService.rules
new file mode 100644
index 00000000000000..bb01c49ef40954
--- /dev/null
+++ b/srcpkgs/gsettings-ubuntu-schemas/files/50-com.ubuntu.AccountsService.rules
@@ -0,0 +1,29 @@
+/* Original:
+ * [Allow greeter to set fields]
+ * Identity=unix-user:lightdm
+ * Action=com.ubuntu.AccountsService.GreeterChangeAny
+ * ResultAny=no
+ * ResultInactive=yes
+ * ResultActive=yes
+ */
+polkit.addRule(function (action, subject) {
+ if (subject.user == 'lightdm' &&
+ action.id == 'com.ubuntu.AccountsService.GreeterChangeAny') {
+ return polkit.Result.YES;
+ }
+});
+
+/* Original:
+ * [Allow greeter to read fields]
+ * Identity=unix-user:lightdm
+ * Action=com.ubuntu.AccountsService.GreeterReadAny
+ * ResultAny=yes
+ * ResultInactive=yes
+ * ResultActive=yes
+ */
+polkit.addRule(function (action, subject) {
+ if (subject.user == 'lightdm' &&
+ action.id == 'com.ubuntu.AccountsService.GreeterReadAny') {
+ return polkit.Result.YES;
+ }
+});
diff --git a/srcpkgs/gsettings-ubuntu-schemas/template b/srcpkgs/gsettings-ubuntu-schemas/template
new file mode 100644
index 00000000000000..2f3e1ca2bdeb65
--- /dev/null
+++ b/srcpkgs/gsettings-ubuntu-schemas/template
@@ -0,0 +1,34 @@
+# Template file for 'gsettings-ubuntu-schemas'
+pkgname=gsettings-ubuntu-schemas
+version=0.0.7+21.10.20210712
+revision=1
+build_style=gnu-configure
+configure_args="--prefix=/usr --localstatedir=/var"
+hostmakedepends="automake gettext-devel intltool pkg-config"
+makedepends="glib-devel"
+depends="glib"
+short_desc="GSettings desktop-wide schemas for Ubuntu"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="LGPL-2.1-only"
+homepage="https://launchpad.net/gsettings-ubuntu-touch-schemas"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/gsettings-ubuntu-touch-schemas_${version}.orig.tar.gz"
+checksum=a4a1c328f73e82b5ef69293c7e051fb37c25184cc5cb52e7b7a96f5a9de5b3fc
+
+pre_configure() {
+ autoreconf -i
+}
+
+post_install() {
+ vmkdir usr/share/polkit-1/rules.d 750
+ vinstall ${FILESDIR}/50-com.ubuntu.AccountsService.rules 644 usr/share/polkit-1/rules.d
+
+ rm -v "${DESTDIR}"/var/lib/polkit-1/localauthority/10-vendor.d/50-com.ubuntu.AccountsService.pkla
+}
+
+gsettings-ubuntu-schemas-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision}"
+ pkg_install() {
+ vmove usr/share/pkgconfig
+ }
+}
diff --git a/srcpkgs/hud-devel b/srcpkgs/hud-devel
new file mode 120000
index 00000000000000..4b151978cf42bf
--- /dev/null
+++ b/srcpkgs/hud-devel
@@ -0,0 +1 @@
+hud
\ No newline at end of file
diff --git a/srcpkgs/hud/files/hud/run b/srcpkgs/hud/files/hud/run
new file mode 100644
index 00000000000000..3f85d694beebae
--- /dev/null
+++ b/srcpkgs/hud/files/hud/run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /usr/lib/hud/hud-service
diff --git a/srcpkgs/hud/files/window-stack-bridge/run b/srcpkgs/hud/files/window-stack-bridge/run
new file mode 100644
index 00000000000000..898e9f8edb971e
--- /dev/null
+++ b/srcpkgs/hud/files/window-stack-bridge/run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /usr/lib/hud/window-stack-bridge
diff --git a/srcpkgs/hud/patches/0001-Use-Python-2.patch b/srcpkgs/hud/patches/0001-Use-Python-2.patch
new file mode 100644
index 00000000000000..16a0ee95edf4ff
--- /dev/null
+++ b/srcpkgs/hud/patches/0001-Use-Python-2.patch
@@ -0,0 +1,58 @@
+From cedb4ccb4cd7c99e75b9d7e882acc615d7179277 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Mon, 25 Jan 2016 14:18:42 -0500
+Subject: [PATCH 1/2] Use Python 2
+
+---
+ tools/hudkeywords/CMakeLists.txt | 4 ++--
+ tools/hudkeywords/bin/hudkeywords | 4 ++--
+ tools/hudkeywords/setup.py | 2 +-
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/tools/hudkeywords/CMakeLists.txt b/tools/hudkeywords/CMakeLists.txt
+index 6dacd93..0a6d7a3 100644
+--- a/tools/hudkeywords/CMakeLists.txt
++++ b/tools/hudkeywords/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-find_program(PYTHON "python")
++find_program(PYTHON "python2")
+
+ if (PYTHON)
+ set(PYTHON_ROOT ${CMAKE_INSTALL_PREFIX})
+@@ -48,4 +48,4 @@ if (PYTHON)
+
+ add_test(hudkeywords-check ${PYTHON} ${SETUP_PY} test)
+ set_tests_properties(hudkeywords-check PROPERTIES WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+-endif()
+\ No newline at end of file
++endif()
+diff --git a/tools/hudkeywords/bin/hudkeywords b/tools/hudkeywords/bin/hudkeywords
+index 4e0a9b9..61f8d28 100755
+--- a/tools/hudkeywords/bin/hudkeywords
++++ b/tools/hudkeywords/bin/hudkeywords
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python2
+
+ # Copyright (C) 2005-2012 Canonical Ltd
+ #
+@@ -20,4 +20,4 @@ import sys
+ from hudkeywords import cli
+
+ if __name__ == '__main__':
+- sys.exit(cli.main())
+\ No newline at end of file
++ sys.exit(cli.main())
+diff --git a/tools/hudkeywords/setup.py b/tools/hudkeywords/setup.py
+index 3742f5e..ccc13db 100755
+--- a/tools/hudkeywords/setup.py
++++ b/tools/hudkeywords/setup.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python2
+
+ # Copyright (C) 2005-2012 Canonical Ltd
+ #
+--
+2.7.0
+
diff --git a/srcpkgs/hud/patches/0002-Remove-test-dependencies.patch b/srcpkgs/hud/patches/0002-Remove-test-dependencies.patch
new file mode 100644
index 00000000000000..3fdd4014a5674a
--- /dev/null
+++ b/srcpkgs/hud/patches/0002-Remove-test-dependencies.patch
@@ -0,0 +1,29 @@
+From f4d43095b7293ce0514ad9a570da1328cfdc8d71 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Mon, 25 Jan 2016 14:19:47 -0500
+Subject: [PATCH 2/2] Remove test dependencies
+
+---
+ CMakeLists.txt | 6 ------
+ 1 file changed, 6 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2b483ff..370b505 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -98,12 +98,6 @@ include_directories(${DBUSMENU_INCLUDE_DIRS})
+ find_package(Qt5Test REQUIRED)
+ include_directories(${Qt5Test_INCLUDE_DIRS})
+
+-pkg_check_modules(QTDBUSTEST REQUIRED libqtdbustest-1 REQUIRED)
+-include_directories(${QTDBUSTEST_INCLUDE_DIRS})
+-
+-pkg_check_modules(QTDBUSMOCK REQUIRED libqtdbusmock-1 REQUIRED)
+-include_directories(${QTDBUSMOCK_INCLUDE_DIRS})
+-
+ find_package(Vala 0.12)
+
+ find_package(GObjectIntrospection 0.9.12)
+--
+2.7.0
+
diff --git a/srcpkgs/hud/patches/fix-systemd-user-dir.patch b/srcpkgs/hud/patches/fix-systemd-user-dir.patch
new file mode 100644
index 00000000000000..592ebf7a9652e3
--- /dev/null
+++ b/srcpkgs/hud/patches/fix-systemd-user-dir.patch
@@ -0,0 +1,8 @@
+diff -p1ru a/data/CMakeLists.txt b/data/CMakeLists.txt
+--- a/data/CMakeLists.txt 2017-06-19 17:16:44.000000000 +0800
++++ b/data/CMakeLists.txt 2024-07-25 14:25:12.980000000 +0800
+@@ -37,3 +37,3 @@ DESTINATION ${DBUSSERVICEDIR}
+ # where to install
+-pkg_get_variable(SYSTEMD_USER_DIR systemd systemduserunitdir)
++set(SYSTEMD_USER_DIR "${CMAKE_INSTALL_PREFIX}/lib/systemd/user")
+ message (STATUS "${SYSTEMD_USER_DIR} is the systemd user unit file install dir")
diff --git a/srcpkgs/hud/template b/srcpkgs/hud/template
new file mode 100644
index 00000000000000..15b17d5501e4ff
--- /dev/null
+++ b/srcpkgs/hud/template
@@ -0,0 +1,56 @@
+# Template file for 'hud'
+pkgname=hud
+version=14.10+17.10.20170619
+revision=1
+_ubuntu_rel=0ubuntu6
+#archs="i686 x86_64"
+#build_wrksrc=
+build_style=cmake
+configure_args="-DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib -DENABLE_DOCUMENTATION=ON \
+ -DENABLE_TESTS=OFF -DENABLE_VOICE_TESTS=OFF -DENABLE_SCALABILITY_TESTS=OFF \
+ -DFULL_WARNINGS=ON"
+#make_build_args=""
+#make_install_args=""
+#conf_files=""
+#make_dirs="/var/log/dir 0755 root root"
+hostmakedepends="cmake-extras glib-devel gobject-introspection gtk-doc intltool
+ pkg-config python-setuptools qt5 qt5-plugin-mysql qt5-plugin-odbc
+ qt5-plugin-pgsql qt5-plugin-sqlite qt5-plugin-tds vala wget"
+makedepends="dee-qt-devel gsettings-qt-devel gtk+3-devel libcolumbus-devel
+ libdbusmenu-glib-devel libdbusmenu-qt5-devel pango-devel"
+depends="bamf libdbusmenu-gtk3 sqlite"
+short_desc="Backend for the Unity HUD"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/hud"
+#changelog=""
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/hud_${version}.orig.tar.gz"
+checksum=3cb825f0f98dae4dc26ef90a1cadab80c4c7bdf45f3cb7082437ba12e2ca2aa6
+
+do_patch() {
+ wget https://launchpad.net/ubuntu/+archive/primary/+files/hud_${version}-${_ubuntu_rel}.diff.gz
+ gunzip hud_${version}-${_ubuntu_rel}.diff.gz
+ patch -p1 -i hud_${version}-${_ubuntu_rel}.diff
+}
+
+pre_configure() {
+ export CXXFLAGS+=" -lc"
+}
+
+post_install() {
+ vsv hud
+ vsv window-stack-bridge
+}
+
+hud-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision} libglib-devel"
+ pkg_install() {
+ vmove usr/include
+ vmove "usr/lib/*.so"
+ vmove usr/lib/pkgconfig
+ vmove usr/share/gir-1.0
+ vmove usr/share/vala
+ }
+}
diff --git a/srcpkgs/indicator-application/patches/0001_autoconf.patch b/srcpkgs/indicator-application/patches/0001_autoconf.patch
new file mode 100644
index 00000000000000..f6dd2ad82f1cf3
--- /dev/null
+++ b/srcpkgs/indicator-application/patches/0001_autoconf.patch
@@ -0,0 +1,12 @@
+diff -Nru indicator-application-12.10.1daily13.01.11.orig/configure.ac indicator-application-12.10.1daily13.01.11/configure.ac
+--- indicator-application-12.10.1daily13.01.11.orig/configure.ac 2013-01-12 10:22:02.405959692 -0500
++++ indicator-application-12.10.1daily13.01.11/configure.ac 2013-01-12 10:22:12.069242219 -0500
+@@ -4,7 +4,7 @@
+
+ AC_PREREQ(2.53)
+
+-AM_CONFIG_HEADER(config.h)
++AC_CONFIG_HEADERS(config.h)
+ AM_INIT_AUTOMAKE(indicator-application, 12.10.0)
+
+ AM_MAINTAINER_MODE
diff --git a/srcpkgs/indicator-application/patches/use-ayatana-libraries.patch b/srcpkgs/indicator-application/patches/use-ayatana-libraries.patch
new file mode 100644
index 00000000000000..4f0dd1c1d929f9
--- /dev/null
+++ b/srcpkgs/indicator-application/patches/use-ayatana-libraries.patch
@@ -0,0 +1,61 @@
+diff -p1ru a/configure.ac b/configure.ac
+--- a/configure.ac 2024-07-22 17:34:53.413000000 +0800
++++ b/configure.ac 2024-07-22 17:43:07.897000000 +0800
+@@ -34,3 +34,2 @@ GTK_REQUIRED_VERSION=3.0.0
+ GIO_REQUIRED_VERSION=2.26
+-INDICATOR_REQUIRED_VERSION=0.3.5
+ DBUSMENUGTK_REQUIRED_VERSION=0.5.90
+@@ -39,4 +38,2 @@ DBUS_GLIB_REQUIRED_VERSION=0.82
+
+-LIBAPPINDICATOR_REQUIRED_VERSION=0.2.9
+-
+ PKG_CHECK_MODULES(INDICATOR, glib-2.0 >= $GLIB_REQUIRED_VERSION
+@@ -44,3 +41,3 @@ PKG_CHECK_MODULES(INDICATOR, glib-2.0 >
+ gtk+-3.0 >= $GTK_REQUIRED_VERSION
+- indicator3-0.4 >= $INDICATOR_REQUIRED_VERSION
++ ayatana-indicator3-0.4
+ json-glib-1.0 >= $JSON_GLIB_REQUIRED_VERSION
+@@ -48,3 +45,3 @@ PKG_CHECK_MODULES(INDICATOR, glib-2.0 >
+ dbusmenu-gtk3-0.4 >= $DBUSMENUGTK_REQUIRED_VERSION)
+-PKG_CHECK_MODULES(APPINDICATOR, appindicator3-0.1 >= $LIBAPPINDICATOR_REQUIRED_VERSION)
++PKG_CHECK_MODULES(APPINDICATOR, ayatana-appindicator3-0.1)
+
+@@ -87,4 +84,4 @@ elif test "x$with_gtk" = x2; then
+ else
+- INDICATORDIR=`$PKG_CONFIG --variable=indicatordir indicator3-0.4`
+- INDICATORICONSDIR=`$PKG_CONFIG --variable=iconsdir indicator3-0.4`
++ INDICATORDIR=`$PKG_CONFIG --variable=indicatordir ayatana-indicator3-0.4`
++ INDICATORICONSDIR=`$PKG_CONFIG --variable=iconsdir ayatana-indicator3-0.4`
+ fi
+diff -p1ru a/src/application-service-appstore.c b/src/application-service-appstore.c
+--- a/src/application-service-appstore.c 2019-03-08 23:35:42.000000000 +0800
++++ b/src/application-service-appstore.c 2024-07-22 17:48:27.569000000 +0800
+@@ -26,5 +26,5 @@ with this program. If not, see <http://
+
+-#include <libindicator/indicator-object.h>
+-#include "libappindicator/app-indicator.h"
+-#include "libappindicator/app-indicator-enum-types.h"
++#include <libayatana-indicator/indicator-object.h>
++#include "libayatana-appindicator/app-indicator.h"
++#include "libayatana-appindicator/app-indicator-enum-types.h"
+ #include "application-service-appstore.h"
+diff -p1ru a/src/generate-id.h b/src/generate-id.h
+--- a/src/generate-id.h 2019-03-08 23:35:42.000000000 +0800
++++ b/src/generate-id.h 2024-07-22 17:51:52.750000000 +0800
+@@ -25,3 +25,3 @@ with this program. If not, see <http://
+ #include <glib.h>
+-#include "libappindicator/app-indicator.h"
++#include "libayatana-appindicator/app-indicator.h"
+
+diff -p1ru a/src/indicator-application.c b/src/indicator-application.c
+--- a/src/indicator-application.c 2019-03-08 23:35:42.000000000 +0800
++++ b/src/indicator-application.c 2024-07-22 17:55:31.850000000 +0800
+@@ -37,5 +37,5 @@ with this program. If not, see <http://
+ /* Indicator Stuff */
+-#include <libindicator/indicator.h>
+-#include <libindicator/indicator-object.h>
+-#include <libindicator/indicator-image-helper.h>
++#include <libayatana-indicator/indicator.h>
++#include <libayatana-indicator/indicator-object.h>
++#include <libayatana-indicator/indicator-image-helper.h>
+
diff --git a/srcpkgs/indicator-application/template b/srcpkgs/indicator-application/template
new file mode 100644
index 00000000000000..82dbb4b833a04a
--- /dev/null
+++ b/srcpkgs/indicator-application/template
@@ -0,0 +1,20 @@
+# Template file for 'indicator-application'
+pkgname=indicator-application
+version=12.10.1+19.04.20190308.1
+revision=1
+build_style=gnu-configure
+configure_args="--prefix=/usr --libexecdir=/usr/lib --disable-static"
+hostmakedepends="automake pkg-config"
+makedepends="dbus-glib-devel json-glib-devel libayatana-appindicator-devel
+ libayatana-indicator-devel libdbusmenu-gtk3-devel"
+short_desc="Indicator to take menus from applications and place them in the panel"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/indicator-application"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/indicator-application_${version}.orig.tar.gz"
+checksum=f701326a6cfb6fd963d398b649353d68acdffad9f8cdcdca7a8b8cb0a60d6da2
+CFLAGS=" -Wno-error"
+
+pre_configure() {
+ autoreconf -vfi
+}
diff --git a/srcpkgs/indicator-appmenu/patches/0001_autoconf.patch b/srcpkgs/indicator-appmenu/patches/0001_autoconf.patch
new file mode 100644
index 00000000000000..a8d613158c5ee4
--- /dev/null
+++ b/srcpkgs/indicator-appmenu/patches/0001_autoconf.patch
@@ -0,0 +1,12 @@
+diff -Nru indicator-appmenu-12.10.3.orig/configure.ac indicator-appmenu-12.10.3/configure.ac
+--- indicator-appmenu-12.10.3.orig/configure.ac 2013-01-07 06:59:33.344260743 -0500
++++ indicator-appmenu-12.10.3/configure.ac 2013-01-07 06:59:44.277538125 -0500
+@@ -8,7 +8,7 @@
+
+ AC_PREREQ(2.53)
+
+-AM_CONFIG_HEADER(config.h)
++AC_CONFIG_HEADER(config.h)
+ AC_CONFIG_SRCDIR([configure.ac])
+ AC_CONFIG_MACRO_DIR([m4])
+
diff --git a/srcpkgs/indicator-appmenu/patches/use-ayatana-libraries.patch b/srcpkgs/indicator-appmenu/patches/use-ayatana-libraries.patch
new file mode 100644
index 00000000000000..328cc2875901df
--- /dev/null
+++ b/srcpkgs/indicator-appmenu/patches/use-ayatana-libraries.patch
@@ -0,0 +1,46 @@
+diff -p1ru a/configure.ac b/configure.ac
+--- a/configure.ac 2024-07-22 18:30:45.785000000 +0800
++++ b/configure.ac 2024-07-22 18:36:04.901000000 +0800
+@@ -62,3 +62,2 @@ GIO_REQUIRED_VERSION=2.26
+ GTK_REQUIRED_VERSION=3.0
+-INDICATOR_REQUIRED_VERSION=0.3.90
+ DBUSMENUGTK_REQUIRED_VERSION=0.5.90
+@@ -70,3 +69,3 @@ PKG_CHECK_MODULES(INDICATOR, glib-2.0 >
+ gtk+-3.0 >= $GTK_REQUIRED_VERSION
+- indicator3-0.4 >= $INDICATOR_REQUIRED_VERSION
++ ayatana-indicator3-0.4
+ dbusmenu-gtk3-0.4 >= $DBUSMENUGTK_REQUIRED_VERSION
+@@ -94,3 +93,2 @@ AM_CONDITIONAL([BUILD_CLI], [test "x$has
+ DBUSMENU_JSONLOADER_REQUIRED_VERSION=0.3.3
+-LIBAPPINDICATOR_REQUIRED_VERSION=0.0.0
+
+@@ -103,3 +101,3 @@ if test x"$enable_tests" != x"no" ; then
+ dbusmenu-jsonloader-0.4 >= $DBUSMENU_JSONLOADER_REQUIRED_VERSION
+- appindicator3-0.1 >= $LIBAPPINDICATOR_REQUIRED_VERSION,
++ ayatana-appindicator3-0.1,
+ [have_dbusmenu_jsonloader=yes],
+@@ -155,4 +153,4 @@ elif test "x$with_gtk" = x2; then
+ else
+- INDICATORDIR=`$PKG_CONFIG --variable=indicatordir indicator3-0.4`
+- INDICATORICONSDIR=`$PKG_CONFIG --variable=iconsdir indicator3-0.4`
++ INDICATORDIR=`$PKG_CONFIG --variable=indicatordir ayatana-indicator3-0.4`
++ INDICATORICONSDIR=`$PKG_CONFIG --variable=iconsdir ayatana-indicator3-0.4`
+ fi
+diff -p1ru a/src/indicator-appmenu.c b/src/indicator-appmenu.c
+--- a/src/indicator-appmenu.c 2020-06-17 23:10:55.000000000 +0800
++++ b/src/indicator-appmenu.c 2024-07-22 18:41:58.495000000 +0800
+@@ -32,4 +32,4 @@ with this program. If not, see <http://
+
+-#include <libindicator/indicator.h>
+-#include <libindicator/indicator-object.h>
++#include <libayatana-indicator/indicator.h>
++#include <libayatana-indicator/indicator-object.h>
+
+diff -p1ru a/src/window-menu.h b/src/window-menu.h
+--- a/src/window-menu.h 2020-06-17 23:10:47.000000000 +0800
++++ b/src/window-menu.h 2024-07-22 18:41:41.534000000 +0800
+@@ -25,3 +25,3 @@ with this program. If not, see <http://
+ #include <glib-object.h>
+-#include <libindicator/indicator-object.h>
++#include <libayatana-indicator/indicator-object.h>
+
--git a/srcpkgs/indicator-appmenu/template b/srcpkgs/indicator-appmenu/template
new file mode 100644
index 00000000000000..d4ea86b7b8ea6a
--- /dev/null
+++ b/srcpkgs/indicator-appmenu/template
@@ -0,0 +1,24 @@
+# Template file for 'indicator-appmenu'
+pkgname=indicator-appmenu
+version=15.02.0+20.10.20200617.2
+revision=1
+build_style=gnu-configure
+configure_args="--prefix=/usr --libexecdir=/usr/lib/${pkgname} \
+ --disable-static"
+hostmakedepends="automake gettext-devel gtk-doc intltool pkg-config vala"
+makedepends="bamf-devel libayatana-indicator-devel libdbusmenu-gtk3-devel"
+depends="dconf libayatana-appindicator"
+short_desc="Indicator to host the menus from an application"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/indicator-appmenu"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/indicator-appmenu_${version}.orig.tar.gz"
+checksum=78f59751869391b12959b0bdbfa62d332c22d128718411390e15cfe2ab14b41d
+
+pre_configure() {
+ export CFLAGS+=" -Wno-error"
+
+ gtkdocize
+ autoreconf -vfi
+ intltoolize -f
+}
diff --git a/srcpkgs/indicator-bluetooth/patches/remove-urldispatch.patch b/srcpkgs/indicator-bluetooth/patches/remove-urldispatch.patch
new file mode 100644
index 00000000000000..c6c7f905066486
--- /dev/null
+++ b/srcpkgs/indicator-bluetooth/patches/remove-urldispatch.patch
@@ -0,0 +1,25 @@
+diff -ur src-old/src/desktop.vala src-new/src/desktop.vala
+--- src-old/src/desktop.vala 2022-11-13 21:43:27.938338601 +0530
++++ src-new/src/desktop.vala 2022-11-13 21:43:51.021649215 +0530
+@@ -226,9 +226,7 @@
+
+ void show_settings (string panel)
+ {
+- if (Environment.get_variable ("MIR_SOCKET") != null)
+- UrlDispatch.send ("settings:///system/bluetooth");
+- else if (is_desktop ("Unity") && Environment.find_program_in_path ("unity-control-center") != null)
++ if (is_desktop ("Unity") && Environment.find_program_in_path ("unity-control-center") != null)
+ spawn_command_line_async ("unity-control-center " + panel);
+ else
+ spawn_command_line_async ("gnome-control-center " + panel);
+diff -ur src-old/src/phone.vala src-new/src/phone.vala
+--- src-old/src/phone.vala 2022-11-13 21:43:27.938338601 +0530
++++ src-new/src/phone.vala 2022-11-13 21:43:51.021649215 +0530
+@@ -62,7 +62,6 @@
+
+ void show_settings (string panel)
+ {
+- UrlDispatch.send ("settings:///system/bluetooth");
+ }
+
+ Action create_settings_action ()
diff --git a/srcpkgs/indicator-bluetooth/patches/use-ayatana-indicator-type.patch b/srcpkgs/indicator-bluetooth/patches/use-ayatana-indicator-type.patch
new file mode 100644
index 00000000000000..bbb72389582b09
--- /dev/null
+++ b/srcpkgs/indicator-bluetooth/patches/use-ayatana-indicator-type.patch
@@ -0,0 +1,10 @@
+diff -p1ru a/src/profile.vala b/src/profile.vala
+--- a/src/profile.vala 2017-06-06 06:06:07.000000000 +0800
++++ b/src/profile.vala 2024-08-03 13:41:33.343081742 +0800
+@@ -100,4 +100,4 @@ class Profile: Object
+
+- item.set_attribute ("x-canonical-type", "s",
+- "com.canonical.indicator.root");
++ item.set_attribute ("x-ayatana-type", "s",
++ "org.ayatana.indicator.root");
+
diff --git a/srcpkgs/indicator-bluetooth/template b/srcpkgs/indicator-bluetooth/template
new file mode 100644
index 00000000000000..7528be29fccc73
--- /dev/null
+++ b/srcpkgs/indicator-bluetooth/template
@@ -0,0 +1,37 @@
+# Template file for 'indicator-bluetooth'
+pkgname=indicator-bluetooth
+version=0.0.6+17.10.20170605
+revision=1
+build_style=gnu-configure
+configure_args="--prefix=/usr --libexecdir=/usr/lib --disable-static"
+hostmakedepends="automake gettext-devel glib-devel intltool pkg-config python3
+ vala"
+depends="bluez dconf libnotify"
+short_desc="Indicator to connect to Bluetooth devices"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/indicator-bluetooth"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/indicator-bluetooth_${version}.orig.tar.gz"
+checksum=d67cf0687526c9e9e70c451242fd6f3db0588ce052d2ef498680fcea0083e846
+CFLAGS="-Wno-error"
+
+post_patch() {
+ sed -i \
+ -e 's/gio-unix-2.0 >= $GIO_REQUIRED_VERSION/gio-unix-2.0 >= $GIO_REQUIRED_VERSION])/g' \
+ -e '/url-dispatcher-1 >= $URL_DISPATCHER_1_REQUIRED_VERSION])/d' \
+ configure.ac
+ rm vapi/url-dispatcher.vapi
+}
+
+pre_configure() {
+ intltoolize -f
+ autoreconf -vfi
+}
+
+post_configure() {
+ sed -i -e '/--pkg url-dispatcher \\/d' src/Makefile.in
+}
+
+pre_build() {
+ export SED=sed
+}
diff --git a/srcpkgs/indicator-datetime/files/indicator-datetime/run b/srcpkgs/indicator-datetime/files/indicator-datetime/run
new file mode 100644
index 00000000000000..90d281602947b8
--- /dev/null
+++ b/srcpkgs/indicator-datetime/files/indicator-datetime/run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /usr/lib/indicator-datetime/indicator-datetime-service
diff --git a/srcpkgs/indicator-datetime/patches/disable-tests.patch b/srcpkgs/indicator-datetime/patches/disable-tests.patch
new file mode 100644
index 00000000000000..03aed215006c75
--- /dev/null
+++ b/srcpkgs/indicator-datetime/patches/disable-tests.patch
@@ -0,0 +1,16 @@
+diff -p1ru a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt 2021-03-05 05:44:01.868501000 +0800
++++ b/CMakeLists.txt 2024-07-24 18:03:25.135000000 +0800
+@@ -16,8 +16,2 @@ add_definitions(-DALARM_DEFAULT_SOUND="$
+
+-
+-##
+-## Always Be Testing
+-##
+-enable_testing()
+-
+ ##
+@@ -84,3 +78,2 @@ add_subdirectory(data)
+ add_subdirectory(po)
+-add_subdirectory(tests)
+
diff --git a/srcpkgs/indicator-datetime/patches/use-ayatana-ido-type.patch b/srcpkgs/indicator-datetime/patches/use-ayatana-ido-type.patch
new file mode 100644
index 00000000000000..126ce4c0122dc1
--- /dev/null
+++ b/srcpkgs/indicator-datetime/patches/use-ayatana-ido-type.patch
@@ -0,0 +1,20 @@
+diff -p1ru a/src/menu.cpp b/src/menu.cpp
+--- a/src/menu.cpp 2021-03-05 05:44:01.868501000 +0800
++++ b/src/menu.cpp 2024-08-08 12:57:10.803323830 +0800
+@@ -346,4 +346,4 @@ private:
+ g_menu_item_set_action_and_target_value (item, "indicator.calendar", v);
+- g_menu_item_set_attribute (item, "x-canonical-type",
+- "s", "com.canonical.indicator.calendar");
++ g_menu_item_set_attribute (item, "x-ayatana-type",
++ "s", "org.ayatana.indicator.calendar");
+ if (action_name != nullptr)
+diff -p1ru a/tests/test-menus.cpp b/tests/test-menus.cpp
+--- a/tests/test-menus.cpp 2021-03-05 05:44:01.868501000 +0800
++++ b/tests/test-menus.cpp 2024-08-08 12:58:25.775818817 +0800
+@@ -133,4 +133,4 @@ protected:
+ {
+- g_menu_model_get_item_attribute(section, 1, "x-canonical-type", "s", &str);
+- EXPECT_STREQ("com.canonical.indicator.calendar", str);
++ g_menu_model_get_item_attribute(section, 1, "x-ayatana-type", "s", &str);
++ EXPECT_STREQ("org.ayatana.indicator.calendar", str);
+ g_clear_pointer(&str, g_free);
diff --git a/srcpkgs/indicator-datetime/patches/use-ayatana-indicator-type.patch b/srcpkgs/indicator-datetime/patches/use-ayatana-indicator-type.patch
new file mode 100644
index 00000000000000..bdc9d63ea456c8
--- /dev/null
+++ b/srcpkgs/indicator-datetime/patches/use-ayatana-indicator-type.patch
@@ -0,0 +1,20 @@
+diff -p1ru a/src/menu.cpp b/src/menu.cpp
+--- a/src/menu.cpp 2021-03-05 05:44:01.868501000 +0800
++++ b/src/menu.cpp 2024-07-31 09:43:50.165020138 +0800
+@@ -295,4 +295,4 @@ private:
+ auto header = g_menu_item_new(nullptr, detailed_action.c_str());
+- g_menu_item_set_attribute(header, "x-canonical-type", "s",
+- "com.canonical.indicator.root");
++ g_menu_item_set_attribute(header, "x-ayatana-type", "s",
++ "org.ayatana.indicator.root");
+ g_menu_item_set_attribute(header, "submenu-action", "s",
+diff -p1ru a/tests/test-menus.cpp b/tests/test-menus.cpp
+--- a/tests/test-menus.cpp 2021-03-05 05:44:01.868501000 +0800
++++ b/tests/test-menus.cpp 2024-07-31 09:44:32.703740129 +0800
+@@ -64,4 +64,4 @@ protected:
+ gchar* str = nullptr;
+- g_menu_model_get_item_attribute(menu_model, 0, "x-canonical-type", "s", &str);
+- EXPECT_STREQ("com.canonical.indicator.root", str);
++ g_menu_model_get_item_attribute(menu_model, 0, "x-ayatana-type", "s", &str);
++ EXPECT_STREQ("org.ayatana.indicator.root", str);
+ g_clear_pointer(&str, g_free);
diff --git a/srcpkgs/indicator-datetime/template b/srcpkgs/indicator-datetime/template
new file mode 100644
index 00000000000000..8523acad65b0fc
--- /dev/null
+++ b/srcpkgs/indicator-datetime/template
@@ -0,0 +1,28 @@
+# Template file for 'indicator-datetime'
+pkgname=indicator-datetime
+version=15.10+21.04.20210304
+revision=1
+build_style=cmake
+configure_args="-DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib -Denable_tests=OFF"
+hostmakedepends="cmake-extras dbus-test-runner-devel gcr gettext gtest-devel
+ intltool pkg-config python3-dbusmock"
+makedepends="evolution-data-server-devel gstreamer1-devel
+ indicator-messages-devel libaccounts-glib-devel libnotify-devel
+ properties-cpp"
+depends="gsettings-ubuntu-schemas libtimezonemap openrc-settingsd
+ unity-control-center"
+short_desc="Very, very simple clock"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/indicator-datetime"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/${pkgname}_${version}.orig.tar.gz"
+checksum=29af10576be2f83a790aa0e5fd9ff8aba0792822e145cd1adcbb54c98c21c6a4
+
+pre_configure() {
+ export CFLAGS+=" -Wno-error"
+}
+
+post_install() {
+ vsv indicator-datetime
+}
diff --git a/srcpkgs/indicator-keyboard/patches/0002-Remove-code-depending-on-accountsservices-patch.patch b/srcpkgs/indicator-keyboard/patches/0002-Remove-code-depending-on-accountsservices-patch.patch
new file mode 100644
index 00000000000000..eafe9ce816cc9d
--- /dev/null
+++ b/srcpkgs/indicator-keyboard/patches/0002-Remove-code-depending-on-accountsservices-patch.patch
@@ -0,0 +1,68 @@
+From 1dadb93567e8607611979c515e8b6152cd36f3f3 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Fri, 11 Apr 2014 15:46:47 -0400
+Subject: [PATCH 2/6] Remove code depending on accountsservices patch
+
+---
+ lib/main.vala | 38 +-------------------------------------
+ 1 file changed, 1 insertion(+), 37 deletions(-)
+
+diff --git a/lib/main.vala b/lib/main.vala
+index fbaf5a1..eab8d1c 100644
+--- a/lib/main.vala
++++ b/lib/main.vala
+@@ -305,25 +305,7 @@ public class Indicator.Keyboard.Service : Object {
+ Act.User? user = manager.get_user ((!) greeter_user);
+
+ if (user != null && ((!) user).is_loaded) {
+- foreach (var outer in ((!) user).input_sources) {
+- foreach (var inner in (!) outer) {
+- unowned string key;
+- unowned string value;
+-
+- ((!) inner).get ("{&s&s}", out key, out value);
+-
+- if (key == "xkb") {
+- source = value;
+- break;
+- }
+- }
+-
+- if (source != null) {
+- break;
+- }
+- }
+-
+- if (source == null) {
++ if (true) {
+ var layouts = ((!) user).xkeyboard_layouts;
+
+ if (layouts.length <= 0) {
+@@ -495,24 +477,6 @@ public class Indicator.Keyboard.Service : Object {
+ if (user.is_loaded) {
+ var done = false;
+
+- foreach (var outer in user.input_sources) {
+- foreach (var inner in (!) outer) {
+- unowned string key;
+- unowned string source;
+-
+- ((!) inner).get ("{&s&s}", out key, out source);
+-
+- if (key == "xkb") {
+- done = true;
+-
+- if (!added.contains (source)) {
+- list.add (source);
+- added.add (source);
+- }
+- }
+- }
+- }
+-
+ if (!done) {
+ var layouts = user.xkeyboard_layouts;
+ foreach (var layout in layouts) {
+--
+2.9.3
+
diff --git a/srcpkgs/indicator-keyboard/patches/0003-Remove-unavailable-DBus-method-activate_input_source.patch b/srcpkgs/indicator-keyboard/patches/0003-Remove-unavailable-DBus-method-activate_input_source.patch
new file mode 100644
index 00000000000000..6992f47b394220
--- /dev/null
+++ b/srcpkgs/indicator-keyboard/patches/0003-Remove-unavailable-DBus-method-activate_input_source.patch
@@ -0,0 +1,176 @@
+From 65db4152bb88101a5ea205bec7e7593e5d24f440 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Sat, 12 Apr 2014 14:23:53 -0400
+Subject: [PATCH 3/6] Remove unavailable DBus method activate_input_source
+
+---
+ lib/Makefile.am | 1 -
+ lib/keyboard-plugin.vala | 23 -----------------------
+ lib/main.vala | 29 -----------------------------
+ tests/main.vala | 40 ----------------------------------------
+ 4 files changed, 93 deletions(-)
+ delete mode 100644 lib/keyboard-plugin.vala
+
+diff --git a/lib/Makefile.am b/lib/Makefile.am
+index 4e5a86a..7fdbcb0 100644
+--- a/lib/Makefile.am
++++ b/lib/Makefile.am
+@@ -12,7 +12,6 @@ indicator_keyboard_service_SOURCES = main.vala \
+ ibus-menu.vala \
+ ibus-panel.vala \
+ indicator-menu.vala \
+- keyboard-plugin.vala \
+ window-stack.vala \
+ unity-session.vala \
+ unity-greeter.vala
+diff --git a/lib/keyboard-plugin.vala b/lib/keyboard-plugin.vala
+deleted file mode 100644
+index 5ee8ea2..0000000
+--- a/lib/keyboard-plugin.vala
++++ /dev/null
+@@ -1,23 +0,0 @@
+-/*
+- * Copyright 2014 Canonical Ltd.
+- *
+- * This program is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation, version 3 of the License.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+- *
+- * Authors: William Hua <william.hua@canonical.com>
+- */
+-
+-[DBus (name="com.canonical.SettingsDaemon.Keyboard.Private")]
+-public interface KeyboardPlugin : Object {
+-
+- public abstract void activate_input_source (uint index) throws IOError;
+-}
+diff --git a/lib/main.vala b/lib/main.vala
+index eab8d1c..d230d16 100644
+--- a/lib/main.vala
++++ b/lib/main.vala
+@@ -53,7 +53,6 @@ public class Indicator.Keyboard.Service : Object {
+ private IndicatorMenu? desktop_greeter_menu;
+ private IndicatorMenu? desktop_lockscreen_menu;
+
+- private KeyboardPlugin? keyboard_plugin;
+ private UnitySession? unity_session;
+ private UnityGreeter? unity_greeter;
+ private string? greeter_user;
+@@ -110,12 +109,6 @@ public class Indicator.Keyboard.Service : Object {
+ }
+ } else {
+ Bus.watch_name (BusType.SESSION,
+- "org.gnome.SettingsDaemon.Keyboard",
+- BusNameWatcherFlags.NONE,
+- handle_keyboard_name_appeared,
+- handle_keyboard_name_vanished);
+-
+- Bus.watch_name (BusType.SESSION,
+ "com.canonical.Unity",
+ BusNameWatcherFlags.NONE,
+ handle_unity_name_appeared,
+@@ -808,14 +801,6 @@ public class Indicator.Keyboard.Service : Object {
+ if (value != null) {
+ ((!) active_action).set_state ((!) value);
+ update_indicator_action ();
+-
+- if (keyboard_plugin != null) {
+- try {
+- ((!) keyboard_plugin).activate_input_source (((!) value).get_uint32 ());
+- } catch (IOError error) {
+- warning ("error: %s", error.message);
+- }
+- }
+ }
+ }
+
+@@ -1145,20 +1130,6 @@ public class Indicator.Keyboard.Service : Object {
+ }
+
+ [DBus (visible = false)]
+- private void handle_keyboard_name_appeared (DBusConnection connection, string name, string name_owner) {
+- try {
+- keyboard_plugin = Bus.get_proxy_sync (BusType.SESSION, name, "/org/gnome/SettingsDaemon/Keyboard");
+- } catch (IOError error) {
+- warning ("error: %s", error.message);
+- }
+- }
+-
+- [DBus (visible = false)]
+- private void handle_keyboard_name_vanished (DBusConnection connection, string name) {
+- keyboard_plugin = null;
+- }
+-
+- [DBus (visible = false)]
+ private void handle_unity_name_appeared (DBusConnection connection, string name, string name_owner) {
+ try {
+ var session = Bus.get_proxy_sync<UnitySession> (BusType.SESSION, name, "/com/canonical/Unity/Session");
+diff --git a/tests/main.vala b/tests/main.vala
+index e2782d1..2d9a265 100644
+--- a/tests/main.vala
++++ b/tests/main.vala
+@@ -137,45 +137,6 @@ public class Tests : Object, Fixture {
+ }
+ }
+
+- public void test_activate_input_source () {
+- try {
+- var current = 0;
+- var sources = "[('xkb', 'us'), ('xkb', 'ca+eng'), ('xkb', 'epo'), ('ibus', 'pinyin')]";
+- Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources current $current");
+- Process.spawn_command_line_sync (@"gsettings set org.gnome.desktop.input-sources sources \"$sources\"");
+- } catch (SpawnError error) {
+- Test.message ("error: %s", error.message);
+- Test.fail ();
+- return;
+- }
+-
+- var action_group = DBusActionGroup.get ((!) _connection,
+- "com.canonical.indicator.keyboard",
+- "/com/canonical/indicator/keyboard");
+- action_group.list_actions ();
+- action_group.activate_action ("current", new Variant.uint32 (2));
+-
+- var loop = new MainLoop (null, false);
+- Timeout.add_seconds (TIMEOUT_S, () => { loop.quit (); return false; });
+- loop.run ();
+-
+- var state = action_group.get_action_state ("current");
+- var current = state.get_uint32 ();
+- stderr.printf ("current = %u\n", current);
+- assert (current == 2);
+-
+- try {
+- string output;
+- Process.spawn_command_line_sync ("gsettings get org.gnome.desktop.input-sources current", out output);
+- stderr.printf ("output = \"%s\"\n", output);
+- assert (strcmp (output, "uint32 2\n") == 0);
+- } catch (SpawnError error) {
+- Test.message ("error: %s", error.message);
+- Test.fail ();
+- return;
+- }
+- }
+-
+ public void test_activate_character_map () {
+ var action_group = DBusActionGroup.get ((!) _connection,
+ "com.canonical.indicator.keyboard",
+@@ -636,7 +597,6 @@ public int main (string[] args) {
+
+ Test.init (ref args);
+
+- Test.add_data_func ("/indicator-keyboard-service/activate-input-source", Fixture.create<Tests> (Tests.test_activate_input_source));
+ Test.add_data_func ("/indicator-keyboard-service/activate-character-map", Fixture.create<Tests> (Tests.test_activate_character_map));
+ Test.add_data_func ("/indicator-keyboard-service/activate-keyboard-layout-chart", Fixture.create<Tests> (Tests.test_activate_keyboard_layout_chart));
+ Test.add_data_func ("/indicator-keyboard-service/activate-text-entry-settings", Fixture.create<Tests> (Tests.test_activate_text_entry_settings));
+--
+2.9.3
+
diff --git a/srcpkgs/indicator-keyboard/patches/0004-Remove-unavailable-DBus-method-xkeyboard-layouts.patch b/srcpkgs/indicator-keyboard/patches/0004-Remove-unavailable-DBus-method-xkeyboard-layouts.patch
new file mode 100644
index 00000000000000..2760981b4bc312
--- /dev/null
+++ b/srcpkgs/indicator-keyboard/patches/0004-Remove-unavailable-DBus-method-xkeyboard-layouts.patch
@@ -0,0 +1,51 @@
+From 41e1b2613e6c089a8f893cc44650e2bb59586ba4 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Wed, 16 Apr 2014 17:06:46 -0400
+Subject: [PATCH 4/6] Remove unavailable DBus method xkeyboard-layouts
+
+---
+ lib/main.vala | 20 ++------------------
+ 1 file changed, 2 insertions(+), 18 deletions(-)
+
+diff --git a/lib/main.vala b/lib/main.vala
+index d230d16..aa61a22 100644
+--- a/lib/main.vala
++++ b/lib/main.vala
+@@ -299,9 +299,9 @@ public class Indicator.Keyboard.Service : Object {
+
+ if (user != null && ((!) user).is_loaded) {
+ if (true) {
+- var layouts = ((!) user).xkeyboard_layouts;
++ string[] layouts = null;
+
+- if (layouts.length <= 0) {
++ if (true) {
+ var user_list = LightDM.UserList.get_instance ();
+ LightDM.User? light_user = user_list.get_user_by_name ((!) greeter_user);
+
+@@ -471,22 +471,6 @@ public class Indicator.Keyboard.Service : Object {
+ var done = false;
+
+ if (!done) {
+- var layouts = user.xkeyboard_layouts;
+- foreach (var layout in layouts) {
+- done = true;
+-
+- var source = layout;
+- source = source.replace (" ", "+");
+- source = source.replace ("\t", "+");
+-
+- if (!added.contains (source)) {
+- list.add (source);
+- added.add (source);
+- }
+- }
+- }
+-
+- if (!done) {
+ var user_list = LightDM.UserList.get_instance ();
+ LightDM.User? light_user = user_list.get_user_by_name (user.user_name);
+
+--
+2.9.3
+
diff --git a/srcpkgs/indicator-keyboard/patches/0005-Spawn-ibus-daemon-at-startup.patch b/srcpkgs/indicator-keyboard/patches/0005-Spawn-ibus-daemon-at-startup.patch
new file mode 100644
index 00000000000000..9e6380067d6fcb
--- /dev/null
+++ b/srcpkgs/indicator-keyboard/patches/0005-Spawn-ibus-daemon-at-startup.patch
@@ -0,0 +1,31 @@
+From 8302afe21f2c953b02d4a028ce0ec7e0d95feec3 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Sat, 11 Oct 2014 19:23:08 -0400
+Subject: [PATCH 5/6] Spawn ibus-daemon at startup
+
+---
+ lib/main.vala | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/lib/main.vala b/lib/main.vala
+index aa61a22..7f3c0e1 100644
+--- a/lib/main.vala
++++ b/lib/main.vala
+@@ -1183,6 +1183,14 @@ public class Indicator.Keyboard.Service : Object {
+
+ [DBus (visible = false)]
+ public static int main (string[] args) {
++ // Launch ibus-daemon the same way gnome-shell 3.14 does
++ string[] cmd = {"ibus-daemon", "--xim", "--panel", "disable"};
++ try {
++ new Subprocess.newv (cmd, SubprocessFlags.NONE);
++ } catch (Error e) {
++ warning ("Failed to launch ibus-daemon: %s", e.message);
++ }
++
+ Service.service = new Service (ref args);
+
+ Posix.signal (Posix.SIGTERM, (code) => {
+--
+2.9.3
+
diff --git a/srcpkgs/indicator-keyboard/template b/srcpkgs/indicator-keyboard/template
new file mode 100644
index 00000000000000..2729d6e869c58c
--- /dev/null
+++ b/srcpkgs/indicator-keyboard/template
@@ -0,0 +1,27 @@
+# Template file for 'indicator-keyboard'
+pkgname=indicator-keyboard
+version=0.0.0+19.10.20220803
+revision=1
+build_style=gnu-configure
+configure_args="--prefix=/usr --libexecdir=/usr/lib"
+hostmakedepends="automake gettext-devel gobject-introspection intltool
+ pkg-config vala"
+makedepends="accountsservice-devel fcitx-devel gnome-desktop-devel ibus-devel
+ libgee-devel libgnomekbd-devel lightdm-devel"
+depends="gucharmap libgnomekbd unity-control-center"
+short_desc="Indicator for switching keyboard layouts and input methods"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/indicator-keyboard"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/indicator-keyboard_${version}.orig.tar.gz"
+checksum=7916f3827408bd7cb82856c931b807c4b8a69efe0c165d05db17942e2f982b5a
+make_check=ci-skip # "Invalid UTF-8" error
+
+post_patch() {
+ sed -i "s/string\[\] layouts = null/string\[\] layouts = new string\[0\]/g" lib/main.vala
+}
+
+pre_configure() {
+ intltoolize -f
+ autoreconf -vfi
+}
diff --git a/srcpkgs/indicator-messages-devel b/srcpkgs/indicator-messages-devel
new file mode 120000
index 00000000000000..ea82efb8581ae6
--- /dev/null
+++ b/srcpkgs/indicator-messages-devel
@@ -0,0 +1 @@
+indicator-messages
\ No newline at end of file
diff --git a/srcpkgs/indicator-messages/patches/0001-autoconf-fix.patch b/srcpkgs/indicator-messages/patches/0001-autoconf-fix.patch
new file mode 100644
index 00000000000000..15f9d428442f29
--- /dev/null
+++ b/srcpkgs/indicator-messages/patches/0001-autoconf-fix.patch
@@ -0,0 +1,25 @@
+From e5701bb817321555b2da56eec45ecb953f47fd50 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Sun, 15 Mar 2015 17:52:14 -0400
+Subject: [PATCH 1/2] autoconf fix
+
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index b9c8800..bf751ba 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -3,7 +3,7 @@ AC_INIT(indicator-messages, 12.10.5)
+
+ AC_PREREQ(2.62)
+
+-AM_CONFIG_HEADER(config.h)
++AC_CONFIG_HEADERS(config.h)
+ AM_INIT_AUTOMAKE([check-news])
+
+ AM_MAINTAINER_MODE
+--
+2.3.3
+
diff --git a/srcpkgs/indicator-messages/patches/0002-Disable-tests.patch b/srcpkgs/indicator-messages/patches/0002-Disable-tests.patch
new file mode 100644
index 00000000000000..66a13ffe73f534
--- /dev/null
+++ b/srcpkgs/indicator-messages/patches/0002-Disable-tests.patch
@@ -0,0 +1,25 @@
+From 8d311e61e56487562c32a132f2ba7cda38ed5066 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Sun, 15 Mar 2015 17:52:51 -0400
+Subject: [PATCH 2/2] Disable tests
+
+---
+ configure.ac | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index bf751ba..faeb72e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -48,8 +48,6 @@ PKG_CHECK_MODULES(APPLET, gio-unix-2.0 >= $GIO_UNIX_REQUIRED_VERSION
+
+ PKG_CHECK_MODULES(GIO, gio-unix-2.0 >= $GIO_UNIX_REQUIRED_VERSION)
+
+-PKG_CHECK_MODULES(DBUSTEST, dbustest-1)
+-
+ AC_SUBST(APPLET_CFLAGS)
+ AC_SUBST(APPLET_LIBS)
+
+--
+2.3.3
+
diff --git a/srcpkgs/indicator-messages/template b/srcpkgs/indicator-messages/template
new file mode 100644
index 00000000000000..b653babd6f7736
--- /dev/null
+++ b/srcpkgs/indicator-messages/template
@@ -0,0 +1,35 @@
+# Template file for 'indicator-messages'
+pkgname=indicator-messages
+version=13.10.1+18.10.20180918
+revision=1
+build_style=gnu-configure
+configure_args="--prefix=/usr --libexecdir=/usr/lib --disable-static"
+hostmakedepends="automake gettext-devel glib-devel gobject-introspection
+ gtk-doc intltool pkg-config vala"
+makedepends="accountsservice-devel"
+depends="hicolor-icon-theme libayatana-indicator"
+short_desc="Place on the user's desktop that collects messages that need a response"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/indicator-messages"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/indicator-messages_${version}.orig.tar.gz"
+checksum=d051dd845912e2f5d6be5bfcbd9ce2c53460f011707d29ab728bee5f15938ce7
+CFLAGS="-Wno-error"
+
+pre_configure() {
+ gtkdocize
+ intltoolize -f
+ autoreconf -vfi
+}
+
+indicator-messages-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision} libglib-devel"
+ pkg_install() {
+ vmove usr/include
+ vmove "usr/lib/*.so"
+ vmove usr/lib/pkgconfig
+ vmove usr/share/gir-1.0
+ vmove usr/share/vala
+ }
+}
diff --git a/srcpkgs/indicator-power/files/indicator-power/run b/srcpkgs/indicator-power/files/indicator-power/run
new file mode 100644
index 00000000000000..69001f1959ced6
--- /dev/null
+++ b/srcpkgs/indicator-power/files/indicator-power/run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /usr/lib/indicator-power/indicator-power-service
diff --git a/srcpkgs/indicator-power/patches/0001-Not-a-phone.patch b/srcpkgs/indicator-power/patches/0001-Not-a-phone.patch
new file mode 100644
index 00000000000000..f07af2f3828bfd
--- /dev/null
+++ b/srcpkgs/indicator-power/patches/0001-Not-a-phone.patch
@@ -0,0 +1,198 @@
+From b27c0f555140c6f3be153c95ea8ab5da36711326 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Sat, 9 Aug 2014 14:56:18 -0400
+Subject: [PATCH] Not a phone
+
+---
+ CMakeLists.txt | 3 +--
+ src/CMakeLists.txt | 4 ----
+ src/notifier.c | 69 +-----------------------------------------------------
+ src/service.c | 3 ---
+ 4 files changed, 2 insertions(+), 77 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 26e437e..ec93e81 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -45,8 +45,7 @@ pkg_check_modules(SERVICE_DEPS REQUIRED
+ gio-2.0>=2.36
+ gio-unix-2.0>=2.36
+ gudev-1.0>=204
+- libnotify>=0.7.6
+- url-dispatcher-1>=1)
++ libnotify>=0.7.6)
+
+ include_directories (SYSTEM ${SERVICE_DEPS_INCLUDE_DIRS})
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index c588aa1..4327fed 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -25,10 +25,6 @@ add_gdbus_codegen_with_namespace(SERVICE_GENERATED_SOURCES dbus-testing
+ com.canonical.indicator.power
+ Dbus
+ ${CMAKE_SOURCE_DIR}/data/com.canonical.indicator.power.Testing.xml)
+-add_gdbus_codegen_with_namespace(SERVICE_GENERATED_SOURCES dbus-accounts-sound
+- com.ubuntu.touch
+- Dbus
+- /usr/share/accountsservice/interfaces/com.ubuntu.touch.AccountsService.Sound.xml)
+
+ # add the bin dir to our include path so the code can find the generated header files
+ include_directories(${CMAKE_CURRENT_BINARY_DIR})
+diff --git a/src/notifier.c b/src/notifier.c
+index 5e516f9..2f68f8f 100644
+--- a/src/notifier.c
++++ b/src/notifier.c
+@@ -18,13 +18,10 @@
+ */
+
+ #include "datafiles.h"
+-#include "dbus-accounts-sound.h"
+ #include "dbus-battery.h"
+ #include "dbus-shared.h"
+ #include "notifier.h"
+
+-#include <url-dispatcher.h>
+-
+ #include <libnotify/notify.h>
+
+ #include <glib/gi18n.h>
+@@ -81,8 +78,6 @@ typedef struct
+ gboolean actions_supported;
+
+ GCancellable * cancellable;
+- DbusAccountsServiceSound * accounts_service_sound_proxy;
+- gboolean accounts_service_sound_proxy_pending;
+ }
+ IndicatorPowerNotifierPrivate;
+
+@@ -137,54 +132,6 @@ get_battery_power_level (IndicatorPowerDevice * battery)
+ }
+
+ /***
+-**** Sounds
+-***/
+-
+-static void
+-on_sound_proxy_ready (GObject * source_object G_GNUC_UNUSED,
+- GAsyncResult * res,
+- gpointer gself)
+-{
+- GError * error;
+- DbusAccountsServiceSound * proxy;
+-
+- error = NULL;
+- proxy = dbus_accounts_service_sound_proxy_new_for_bus_finish (res, &error);
+- if (error != NULL)
+- {
+- if (!g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+- {
+- get_priv(gself)->accounts_service_sound_proxy_pending = FALSE;
+- g_debug("%s Couldn't find accounts service sound proxy: %s", G_STRLOC, error->message);
+- }
+-
+- g_clear_error(&error);
+- }
+- else
+- {
+- IndicatorPowerNotifier * const self = INDICATOR_POWER_NOTIFIER(gself);
+- priv_t * const p = get_priv (self);
+- g_clear_object (&p->accounts_service_sound_proxy);
+- p->accounts_service_sound_proxy = proxy;
+- p->accounts_service_sound_proxy_pending = FALSE;
+- }
+-}
+-
+-static gboolean
+-silent_mode (IndicatorPowerNotifier * self)
+-{
+- priv_t * const p = get_priv (self);
+-
+- /* if we don't have a proxy yet, assume we're in silent mode
+- as a "do no harm" level of response */
+- if (p->accounts_service_sound_proxy_pending)
+- return TRUE;
+-
+- return (p->accounts_service_sound_proxy != NULL)
+- && dbus_accounts_service_sound_get_silent_mode(p->accounts_service_sound_proxy);
+-}
+-
+-/***
+ **** Notifications
+ ***/
+
+@@ -226,7 +173,6 @@ on_battery_settings_clicked(NotifyNotification * nn G_GNUC_UNUSED,
+ char * action G_GNUC_UNUSED,
+ gpointer user_data G_GNUC_UNUSED)
+ {
+- url_dispatch_send("settings:///system/battery", NULL, NULL);
+ }
+
+ static void
+@@ -298,7 +244,7 @@ notification_show(IndicatorPowerNotifier * self)
+
+ if (are_actions_supported(self))
+ {
+- if (!silent_mode(self))
++ if (1)
+ {
+ gchar* filename = datafile_find(DATAFILE_TYPE_SOUND, LOW_BATTERY_SOUND);
+ if (filename != NULL)
+@@ -439,7 +385,6 @@ my_dispose (GObject * o)
+ notification_clear (self);
+ indicator_power_notifier_set_battery (self, NULL);
+ g_clear_object (&p->dbus_battery);
+- g_clear_object (&p->accounts_service_sound_proxy);
+
+ G_OBJECT_CLASS (indicator_power_notifier_parent_class)->dispose (o);
+ }
+@@ -473,18 +418,6 @@ indicator_power_notifier_init (IndicatorPowerNotifier * self)
+
+ if (!instance_count++ && !notify_init(SERVICE_EXEC))
+ g_critical("Unable to initialize libnotify! Notifications might not be shown.");
+-
+- p->accounts_service_sound_proxy_pending = TRUE;
+- gchar* object_path = g_strdup_printf("/org/freedesktop/Accounts/User%lu", (gulong)getuid());
+- dbus_accounts_service_sound_proxy_new_for_bus(
+- G_BUS_TYPE_SYSTEM,
+- G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES,
+- "org.freedesktop.Accounts",
+- object_path,
+- p->cancellable,
+- on_sound_proxy_ready,
+- self);
+- g_clear_pointer(&object_path, g_free);
+ }
+
+ static void
+diff --git a/src/service.c b/src/service.c
+index 87625e4..a44fdae 100644
+--- a/src/service.c
++++ b/src/service.c
+@@ -20,7 +20,6 @@
+
+ #include <glib/gi18n.h>
+ #include <gio/gio.h>
+-#include <url-dispatcher.h>
+
+ #include "brightness.h"
+ #include "dbus-shared.h"
+@@ -804,7 +803,6 @@ on_settings_activated (GSimpleAction * a G_GNUC_UNUSED,
+ {
+ if (g_getenv ("MIR_SOCKET") != NULL)
+ {
+- url_dispatch_send("settings:///system/battery", NULL, NULL);
+ return;
+ }
+ else if (!g_strcmp0 (g_getenv ("DESKTOP_SESSION"), "xubuntu"))
+@@ -852,7 +850,6 @@ on_phone_settings_activated (GSimpleAction * a G_GNUC_UNUSED,
+ GVariant * param G_GNUC_UNUSED,
+ gpointer gself G_GNUC_UNUSED)
+ {
+- url_dispatch_send("settings:///system/battery", NULL, NULL);
+ }
+
+ /***
+--
+2.9.2
+
diff --git a/srcpkgs/indicator-power/patches/disable-tests.patch b/srcpkgs/indicator-power/patches/disable-tests.patch
new file mode 100644
index 00000000000000..24ff9f82d39c4d
--- /dev/null
+++ b/srcpkgs/indicator-power/patches/disable-tests.patch
@@ -0,0 +1,8 @@
+diff -p1ru a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt 2024-07-24 17:29:08.116000000 +0800
++++ b/CMakeLists.txt 2024-07-24 17:33:55.177000000 +0800
+@@ -84,4 +84,2 @@ add_subdirectory(po)
+ # testing & coverage
+-enable_testing ()
+-add_subdirectory(tests)
+ find_package(CoverageReport)
diff --git a/srcpkgs/indicator-power/patches/use-ayatana-indicator-type.patch b/srcpkgs/indicator-power/patches/use-ayatana-indicator-type.patch
new file mode 100644
index 00000000000000..1b6bee0ed19d65
--- /dev/null
+++ b/srcpkgs/indicator-power/patches/use-ayatana-indicator-type.patch
@@ -0,0 +1,10 @@
+diff -p1ru a/src/service.c b/src/service.c
+--- a/src/service.c 2024-08-03 10:50:29.773380597 +0800
++++ b/src/service.c 2024-08-03 10:54:10.156134073 +0800
+@@ -776,4 +776,4 @@ create_menu (IndicatorPowerService * sel
+ header = g_menu_item_new (NULL, "indicator._header");
+- g_menu_item_set_attribute (header, "x-canonical-type",
+- "s", "com.canonical.indicator.root");
++ g_menu_item_set_attribute (header, "x-ayatana-type",
++ "s", "org.ayatana.indicator.root");
+ g_menu_item_set_submenu (header, G_MENU_MODEL (submenu));
diff --git a/srcpkgs/indicator-power/template b/srcpkgs/indicator-power/template
new file mode 100644
index 00000000000000..721c32951a2955
--- /dev/null
+++ b/srcpkgs/indicator-power/template
@@ -0,0 +1,26 @@
+# Template file for 'indicator-power'
+pkgname=indicator-power
+version=12.10.6+17.10.20170829.1
+revision=1
+build_style=cmake
+configure_args="-DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib -Denable_tests=OFF"
+hostmakedepends="cmake-extras dbus-test-runner-devel glib-devel gtest-devel
+ intltool pkg-config python"
+makedepends="libnotify-devel"
+depends="dconf gnome-power-manager unity-control-center upower"
+short_desc="Indicator to show the power status of your devices"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/indicator-power"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/indicator-power_${version}.orig.tar.gz"
+checksum=033dda58971929de265a1dc262932c31a69fc64522bc9f5f0be850585d27e3df
+
+pre_configure() {
+ export CFLAGS+=" -Wno-error"
+}
+
+post_install() {
+ find "${DESTDIR}" -type f -name '*.a' -delete
+ vsv indicator-power
+}
diff --git a/srcpkgs/indicator-printers/patches/use-ayatana-libraries.patch b/srcpkgs/indicator-printers/patches/use-ayatana-libraries.patch
new file mode 100644
index 00000000000000..e676fd9abafa45
--- /dev/null
+++ b/srcpkgs/indicator-printers/patches/use-ayatana-libraries.patch
@@ -0,0 +1,45 @@
+diff -p1ru a/configure.ac b/configure.ac
+--- a/configure.ac 2024-07-24 14:19:43.674000000 +0800
++++ b/configure.ac 2024-07-24 15:48:03.604000000 +0800
+@@ -42,6 +42,6 @@ AC_CONFIG_FILES([
+ PKG_CHECK_MODULES(APPLET, gtk+-3.0 >= 3.0
+- indicator3-0.4 >= 0.2
++ ayatana-indicator3-0.4 >= 0.2
+ dbusmenu-gtk3-0.4 >= 0.2)
+ PKG_CHECK_MODULES(SERVICE, gtk+-3.0 >= 3.0
+- indicator3-0.4 >= 0.2
++ ayatana-indicator3-0.4 >= 0.2
+ dbusmenu-glib-0.4 >= 0.2)
+@@ -72,4 +72,4 @@ if test "x$with_localinstall" = "xyes";
+ else
+- INDICATORDIR=`$PKG_CONFIG --variable=indicatordir indicator3-0.4`
+- INDICATORICONSDIR=`$PKG_CONFIG --variable=iconsdir indicator3-0.4`
++ INDICATORDIR=`$PKG_CONFIG --variable=indicatordir ayatana-indicator3-0.4`
++ INDICATORICONSDIR=`$PKG_CONFIG --variable=iconsdir ayatana-indicator3-0.4`
+ fi
+diff -p1ru a/src/indicator-printers-service.c b/src/indicator-printers-service.c
+--- a/src/indicator-printers-service.c 2024-07-24 14:19:43.622000000 +0800
++++ b/src/indicator-printers-service.c 2024-07-24 15:53:32.546000000 +0800
+@@ -18,3 +18,3 @@
+
+-#include <libindicator/indicator-service.h>
++#include <libayatana-indicator/indicator-service.h>
+ #include <libdbusmenu-glib/dbusmenu-glib.h>
+diff -p1ru a/src/indicator-printers.c b/src/indicator-printers.c
+--- a/src/indicator-printers.c 2017-11-17 23:09:26.000000000 +0800
++++ b/src/indicator-printers.c 2024-07-24 16:01:35.326000000 +0800
+@@ -28,4 +28,4 @@
+
+-#include <libindicator/indicator.h>
+-#include <libindicator/indicator-image-helper.h>
++#include <libayatana-indicator/indicator.h>
++#include <libayatana-indicator/indicator-image-helper.h>
+
+diff -p1ru a/src/indicator-printers.h b/src/indicator-printers.h
+--- a/src/indicator-printers.h 2017-11-17 23:09:26.000000000 +0800
++++ b/src/indicator-printers.h 2024-07-24 15:56:49.431000000 +0800
+@@ -21,3 +21,3 @@
+
+-#include <libindicator/indicator-object.h>
++#include <libayatana-indicator/indicator-object.h>
+
diff --git a/srcpkgs/indicator-printers/template b/srcpkgs/indicator-printers/template
new file mode 100644
index 00000000000000..3ceaf4b3d7e2da
--- /dev/null
+++ b/srcpkgs/indicator-printers/template
@@ -0,0 +1,37 @@
+# Template file for 'indicator-printers'
+pkgname=indicator-printers
+version=0.1.7+17.10.20171101
+revision=1
+_ubuntu_rel=0ubuntu7
+build_style=gnu-configure
+configure_args="--prefix=/usr --libexecdir=/usr/lib --disable-static"
+hostmakedepends="automake gettext-devel intltool libtool pkg-config python
+ wget"
+makedepends="cups-devel libayatana-indicator-devel libdbusmenu-glib-devel
+ libdbusmenu-gtk3-devel"
+depends="cups"
+short_desc="Indicator showing active print jobs"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/indicator-printers"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/indicator-printers_${version}.orig.tar.gz"
+checksum=9fd274dac99caf1caeb90950565c3d845bcd2577b7fa5c9d199939435d8b4be9
+
+do_patch() {
+ wget https://launchpad.net/ubuntu/+archive/primary/+files/indicator-printers_${version}-${_ubuntu_rel}.diff.gz
+ gunzip indicator-printers_${version}-${_ubuntu_rel}.diff.gz
+ patch -p1 -i indicator-printers_${version}-${_ubuntu_rel}.diff
+}
+
+post_patch() {
+ sed -i '/SERVICE_LIBS/ i SERVICE_LIBS+=" "' configure.ac
+}
+
+pre_configure() {
+ NOCONFIGURE=1 autoreconf -i
+}
+
+post_install() {
+ vmkdir usr/share/icons 755
+ cp -r debian/local/* "${DESTDIR}"/usr/share/icons/
+}
diff --git a/srcpkgs/indicator-session/files/indicator-session/run b/srcpkgs/indicator-session/files/indicator-session/run
new file mode 100644
index 00000000000000..835fbce86f4005
--- /dev/null
+++ b/srcpkgs/indicator-session/files/indicator-session/run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /usr/lib/indicator-session/indicator-session-service
diff --git a/srcpkgs/indicator-session/patches/0001-There-is-no-help.patch b/srcpkgs/indicator-session/patches/0001-There-is-no-help.patch
new file mode 100644
index 00000000000000..ae3ba662c71835
--- /dev/null
+++ b/srcpkgs/indicator-session/patches/0001-There-is-no-help.patch
@@ -0,0 +1,80 @@
+From ec67d4d2a1f6252f952234aaf8cf6db62a8a3e0a Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Sat, 9 Aug 2014 15:17:45 -0400
+Subject: [PATCH 1/3] There is no help
+
+---
+ src/service.c | 12 ------------
+ tests/test-service.cc | 6 ------
+ 2 files changed, 18 deletions(-)
+
+diff --git a/src/service.c b/src/service.c
+index 8be7241..96790a4 100644
+--- a/src/service.c
++++ b/src/service.c
+@@ -455,15 +455,12 @@ create_admin_section (IndicatorSessionService * self)
+ {
+ GMenu * menu;
+ priv_t * p = self->priv;
+- gchar * help_label = g_strdup_printf(_("%s Help…"), get_distro_name());
+ menu = g_menu_new ();
+ if (g_getenv ("MIR_SOCKET") != NULL) {
+ g_menu_append (menu, _("About This Device…"), "indicator.about");
+ } else {
+ g_menu_append (menu, _("About This Computer"), "indicator.about");
+ }
+- g_menu_append (menu, help_label, "indicator.help");
+- g_free (help_label);
+
+ if (p->usage_mode_action && g_getenv ("MIR_SOCKET") != NULL) // only under unity8
+ {
+@@ -930,14 +927,6 @@ on_online_accounts_activated (GSimpleAction * a G_GNUC_UNUSED,
+ }
+
+ static void
+-on_help_activated (GSimpleAction * a G_GNUC_UNUSED,
+- GVariant * param G_GNUC_UNUSED,
+- gpointer gself)
+-{
+- indicator_session_actions_help (get_backend_actions(gself));
+-}
+-
+-static void
+ on_settings_activated (GSimpleAction * a G_GNUC_UNUSED,
+ GVariant * param G_GNUC_UNUSED,
+ gpointer gself)
+@@ -1028,7 +1017,6 @@ init_gactions (IndicatorSessionService * self)
+
+ GActionEntry entries[] = {
+ { "about", on_about_activated },
+- { "help", on_help_activated },
+ { "hibernate", on_hibernate_activated },
+ { "logout", on_logout_activated },
+ { "online-accounts", on_online_accounts_activated },
+diff --git a/tests/test-service.cc b/tests/test-service.cc
+index 9ee7236..5885cc8 100644
+--- a/tests/test-service.cc
++++ b/tests/test-service.cc
+@@ -383,11 +383,6 @@ TEST_F (ServiceTest, About)
+ test_simple_action ("about");
+ }
+
+-TEST_F (ServiceTest, Help)
+-{
+- test_simple_action ("help");
+-}
+-
+ TEST_F (ServiceTest, Hibernate)
+ {
+ test_simple_action ("hibernate");
+@@ -693,7 +688,6 @@ TEST_F (ServiceTest, LockdownUserSwitchingAndLockScreen)
+ TEST_F (ServiceTest, DefaultMenuItems)
+ {
+ ASSERT_TRUE (find_menu_item_for_action ("indicator.about", NULL, NULL));
+- ASSERT_TRUE (find_menu_item_for_action ("indicator.help", NULL, NULL));
+ ASSERT_TRUE (find_menu_item_for_action ("indicator.settings", NULL, NULL));
+ ASSERT_TRUE (find_menu_item_for_action ("indicator.switch-to-screensaver", NULL, NULL));
+ ASSERT_TRUE (find_menu_item_for_action ("indicator.switch-to-guest", NULL, NULL));
+--
+2.10.2
+
diff --git a/srcpkgs/indicator-session/patches/0003-Remove-libwhoopsie-dependency.patch b/srcpkgs/indicator-session/patches/0003-Remove-libwhoopsie-dependency.patch
new file mode 100644
index 00000000000000..1263ec81cbbc3f
--- /dev/null
+++ b/srcpkgs/indicator-session/patches/0003-Remove-libwhoopsie-dependency.patch
@@ -0,0 +1,49 @@
+From 3d4d2927e2d4eb93ca0069fb91bcb047ad8f06ae Mon Sep 17 00:00:00 2001
+From: Andrew Gunnerson <chenxiaolong@cxl.epac.to>
+Date: Sat, 26 Nov 2016 18:48:03 -0500
+Subject: [PATCH 3/3] Remove libwhoopsie dependency
+
+---
+ CMakeLists.txt | 3 +--
+ src/service.c | 4 ----
+ 2 files changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 6c0be0c..87ab985 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -29,8 +29,7 @@ find_package (PkgConfig REQUIRED)
+ include (FindPkgConfig)
+ pkg_check_modules (SERVICE REQUIRED
+ glib-2.0>=2.36
+- gio-unix-2.0>=2.36
+- libwhoopsie)
++ gio-unix-2.0>=2.36)
+ include_directories(SYSTEM ${SERVICE_INCLUDE_DIRS})
+
+ set (CC_WARNING_ARGS " -Wall -pedantic -Wextra -Wno-missing-field-initializers")
+diff --git a/src/service.c b/src/service.c
+index 96790a4..d39ff50 100644
+--- a/src/service.c
++++ b/src/service.c
+@@ -20,8 +20,6 @@
+ #include <glib/gi18n.h>
+ #include <gio/gio.h>
+
+-#include <libwhoopsie/recoverable-problem.h>
+-
+ #include "backend.h"
+ #include "service.h"
+
+@@ -648,8 +646,6 @@ report_unusable_user (IndicatorSessionService * self, const IndicatorSessionUser
+ NULL
+ };
+
+- whoopsie_report_recoverable_problem("indicator-session-unknown-user-error", 0, FALSE, properties);
+-
+ /* mark it as reported so that we'll only report it once */
+ g_hash_table_add (p->reported_users, key);
+
+--
+2.10.2
+
diff --git a/srcpkgs/indicator-session/patches/include-cstdint.patch b/srcpkgs/indicator-session/patches/include-cstdint.patch
new file mode 100644
index 00000000000000..4970d3902615d5
--- /dev/null
+++ b/srcpkgs/indicator-session/patches/include-cstdint.patch
@@ -0,0 +1,7 @@
+diff -p1ru a/tests/backend-dbus/mock-login1-seat.cc b/tests/backend-dbus/mock-login1-seat.cc
+--- a/tests/backend-dbus/mock-login1-seat.cc 2021-06-14 01:21:41.000000000 +0800
++++ b/tests/backend-dbus/mock-login1-seat.cc 2024-07-24 17:03:09.945000000 +0800
+@@ -23,2 +23,3 @@
+ #include "mock-user.h"
++#include <cstdint>
+
diff --git a/srcpkgs/indicator-session/patches/use-ayatana-indicator-type.patch b/srcpkgs/indicator-session/patches/use-ayatana-indicator-type.patch
new file mode 100644
index 00000000000000..af0301d1c67944
--- /dev/null
+++ b/srcpkgs/indicator-session/patches/use-ayatana-indicator-type.patch
@@ -0,0 +1,8 @@
+diff -p1ru a/src/service.c b/src/service.c
+--- a/src/service.c 2021-06-14 01:21:46.000000000 +0800
++++ b/src/service.c 2024-07-31 07:25:39.775044662 +0800
+@@ -902,3 +902,3 @@ create_menu (IndicatorSessionService * s
+ header = g_menu_item_new (NULL, "indicator._header");
+- g_menu_item_set_attribute (header, "x-canonical-type", "s", "com.canonical.indicator.root");
++ g_menu_item_set_attribute (header, "x-ayatana-type", "s", "org.ayatana.indicator.root");
+ g_menu_item_set_submenu (header, G_MENU_MODEL (submenu));
diff --git a/srcpkgs/indicator-session/template b/srcpkgs/indicator-session/template
new file mode 100644
index 00000000000000..93aa04b7be0e4c
--- /dev/null
+++ b/srcpkgs/indicator-session/template
@@ -0,0 +1,26 @@
+# Template file for 'indicator-session'
+pkgname=indicator-session
+version=17.3.20+21.10.20210613.1
+revision=1
+build_style=cmake
+configure_args="-DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBEXECDIR=lib \
+ -Denable_tests=OFF -Denable_lcov=OFF"
+hostmakedepends="cmake-extras gtest-devel glib-devel intltool pkg-config
+ python"
+depends="gnome-settings-daemon"
+checkdepends="dbus"
+short_desc="Indicator showing session management, status and user switching"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/indicator-session"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/indicator-session_${version}.orig.tar.gz"
+checksum=f9da6a2f080e67944a71eebb744c3d9f5d7d532428e072c4a3a0fbb0b3bb6ae9
+make_check=ci-skip # ServiceTest.OnlineAccountError and ServiceTest.User fail
+
+post_install() {
+ rm -vf "${DESTDIR}/test-service"
+
+ rm -r "${DESTDIR}/usr/share/locale/"
+
+ vsv indicator-session
+}
diff --git a/srcpkgs/indicator-sound/files/indicator-sound/run b/srcpkgs/indicator-sound/files/indicator-sound/run
new file mode 100644
index 00000000000000..4f3afd153ac217
--- /dev/null
+++ b/srcpkgs/indicator-sound/files/indicator-sound/run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /usr/lib/indicator-sound/indicator-sound-service
diff --git a/srcpkgs/indicator-sound/patches/use-ayatana-ido-type.patch b/srcpkgs/indicator-sound/patches/use-ayatana-ido-type.patch
new file mode 100644
index 00000000000000..f269a6e6b0c679
--- /dev/null
+++ b/srcpkgs/indicator-sound/patches/use-ayatana-ido-type.patch
@@ -0,0 +1,21 @@
+diff -p1ru a/src/sound-menu.vala b/src/sound-menu.vala
+--- a/src/sound-menu.vala 2018-06-13 04:42:13.000000000 +0800
++++ b/src/sound-menu.vala 2024-08-08 12:28:25.462427836 +0800
+@@ -459,3 +459,3 @@ public class SoundMenu: Object
+ var slider = new MenuItem (label, action);
+- slider.set_attribute ("x-canonical-type", "s", "com.canonical.unity.slider");
++ slider.set_attribute ("x-ayatana-type", "s", "org.ayatana.indicator.slider");
+ slider.set_attribute_value ("min-icon", min_icon.serialize ());
+diff -p1ru a/tests/integration/indicator-sound-test-base.cpp b/tests/integration/indicator-sound-test-base.cpp
+--- a/tests/integration/indicator-sound-test-base.cpp 2018-06-13 04:42:13.000000000 +0800
++++ b/tests/integration/indicator-sound-test-base.cpp 2024-08-08 12:29:03.730284327 +0800
+@@ -409,3 +409,3 @@ unity::gmenuharness::MenuItemMatcher Ind
+ .double_attribute("step", 0.01)
+- .string_attribute("x-canonical-type", "com.canonical.unity.slider")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.slider")
+ .themed_icon("max-icon", {"audio-volume-high-panel", "audio-volume-high", "audio-volume", "audio"})
+@@ -423,3 +423,3 @@ unity::gmenuharness::MenuItemMatcher Ind
+ .double_attribute("step", 0.01)
+- .string_attribute("x-canonical-type", "com.canonical.unity.slider")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.slider")
+ .themed_icon("max-icon", {"audio-input-microphone-high-panel", "audio-input-microphone-high", "audio-input-microphone", "audio-input", "audio"})
diff --git a/srcpkgs/indicator-sound/patches/use-ayatana-indicator-type.patch b/srcpkgs/indicator-sound/patches/use-ayatana-indicator-type.patch
new file mode 100644
index 00000000000000..a9c01063c3e92e
--- /dev/null
+++ b/srcpkgs/indicator-sound/patches/use-ayatana-indicator-type.patch
@@ -0,0 +1,232 @@
+diff -p1ru a/src/sound-menu.vala b/src/sound-menu.vala
+--- a/src/sound-menu.vala 2024-08-01 19:20:13.325622721 +0800
++++ b/src/sound-menu.vala 2024-08-01 19:41:24.660288358 +0800
+@@ -69,3 +69,3 @@ public class SoundMenu: Object
+ var root_item = new MenuItem (null, "indicator.root");
+- root_item.set_attribute ("x-canonical-type", "s", "com.canonical.indicator.root");
++ root_item.set_attribute ("x-ayatana-type", "s", "org.ayatana.indicator.root");
+ root_item.set_attribute ("x-canonical-scroll-action", "s", "indicator.scroll");
+diff -p1ru a/tests/indicator-test.cc b/tests/indicator-test.cc
+--- a/tests/indicator-test.cc 2024-08-01 19:20:13.328624221 +0800
++++ b/tests/indicator-test.cc 2024-08-01 19:42:30.131536348 +0800
+@@ -70,3 +70,3 @@ TEST_F(IndicatorTest, DISABLED_PhoneMenu
+ EXPECT_EVENTUALLY_MENU_ATTRIB(std::vector<int>({0}), "action", "indicator.root");
+- EXPECT_MENU_ATTRIB({0}, "x-canonical-type", "com.canonical.indicator.root");
++ EXPECT_MENU_ATTRIB({0}, "x-ayatana-type", "org.ayatana.indicator.root");
+ EXPECT_MENU_ATTRIB({0}, "x-canonical-scroll-action", "indicator.scroll");
+@@ -85,3 +85,3 @@ TEST_F(IndicatorTest, DISABLED_DesktopMe
+ EXPECT_MENU_ATTRIB({0}, "action", "indicator.root");
+- EXPECT_MENU_ATTRIB({0}, "x-canonical-type", "com.canonical.indicator.root");
++ EXPECT_MENU_ATTRIB({0}, "x-ayatana-type", "org.ayatana.indicator.root");
+ EXPECT_MENU_ATTRIB({0}, "x-canonical-scroll-action", "indicator.scroll");
+diff -p1ru a/tests/integration/indicator-sound-test-base.cpp b/tests/integration/indicator-sound-test-base.cpp
+--- a/tests/integration/indicator-sound-test-base.cpp 2024-08-01 19:20:13.329624721 +0800
++++ b/tests/integration/indicator-sound-test-base.cpp 2024-08-01 19:43:45.868648838 +0800
+@@ -918,3 +918,3 @@ void IndicatorSoundTestBase::checkPortDe
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
+@@ -943,3 +943,3 @@ void IndicatorSoundTestBase::checkPortDe
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
+diff -p1ru a/tests/integration/test-indicator.cpp b/tests/integration/test-indicator.cpp
+--- a/tests/integration/test-indicator.cpp 2024-08-01 19:20:13.330625221 +0800
++++ b/tests/integration/test-indicator.cpp 2024-08-01 19:45:12.934094329 +0800
+@@ -53,3 +53,3 @@ TEST_F(TestIndicator, DISABLED_PhoneChec
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
+@@ -113,3 +113,3 @@ TEST_F(TestIndicator, DISABLED_PhoneTest
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
+@@ -136,3 +136,3 @@ TEST_F(TestIndicator, DISABLED_PhoneTest
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
+@@ -162,3 +162,3 @@ TEST_F(TestIndicator, DISABLED_PhoneTest
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
+@@ -198,3 +198,3 @@ TEST_F(TestIndicator, DISABLED_DesktopTe
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -219,3 +219,3 @@ TEST_F(TestIndicator, DISABLED_DesktopTe
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -241,3 +241,3 @@ TEST_F(TestIndicator, DISABLED_DesktopTe
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -303,3 +303,3 @@ TEST_F(TestIndicator, DISABLED_PhoneChan
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
+@@ -320,3 +320,3 @@ TEST_F(TestIndicator, DISABLED_PhoneChan
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -345,3 +345,3 @@ TEST_F(TestIndicator, DISABLED_PhoneChan
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
+@@ -362,3 +362,3 @@ TEST_F(TestIndicator, DISABLED_PhoneChan
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -390,3 +390,3 @@ TEST_F(TestIndicator, DISABLED_PhoneBasi
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
+@@ -425,3 +425,3 @@ TEST_F(TestIndicator, DISABLED_PhoneAddM
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
+@@ -455,3 +455,3 @@ TEST_F(TestIndicator, DISABLED_PhoneAddM
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
+@@ -509,3 +509,3 @@ TEST_F(TestIndicator, DISABLED_DesktopBa
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -563,3 +563,3 @@ TEST_F(TestIndicator, DISABLED_DesktopAd
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -600,3 +600,3 @@ TEST_F(TestIndicator, DISABLED_DesktopAd
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -652,3 +652,3 @@ TEST_F(TestIndicator, DISABLED_DesktopMp
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -690,3 +690,3 @@ TEST_F(TestIndicator, DISABLED_DesktopMp
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -743,3 +743,3 @@ TEST_F(TestIndicator, DISABLED_DesktopMp
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -811,3 +811,3 @@ TEST_F(TestIndicator, DISABLED_DesktopMp
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -872,3 +872,3 @@ TEST_F(TestIndicator, DISABLED_DesktopMp
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -928,3 +928,3 @@ TEST_F(TestIndicator, DISABLED_DesktopMp
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -984,3 +984,3 @@ TEST_F(TestIndicator, DISABLED_DesktopMp
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -1040,3 +1040,3 @@ TEST_F(TestIndicator, DISABLED_DesktopMp
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -1111,3 +1111,3 @@ TEST_F(TestIndicator, DISABLED_DesktopMp
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -1171,3 +1171,3 @@ TEST_F(TestIndicator, DISABLED_DesktopMp
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -1242,3 +1242,3 @@ TEST_F(TestIndicator, DISABLED_DesktopMp
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -1280,3 +1280,3 @@ TEST_F(TestIndicator, DISABLED_DesktopMp
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -1319,3 +1319,3 @@ TEST_F(TestIndicator, DISABLED_DesktopMp
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -1357,3 +1357,3 @@ TEST_F(TestIndicator, DISABLED_DesktopMp
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -1429,3 +1429,3 @@ TEST_F(TestIndicator, DISABLED_DesktopCh
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -1446,3 +1446,3 @@ TEST_F(TestIndicator, DISABLED_DesktopCh
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -1467,3 +1467,3 @@ TEST_F(TestIndicator, DISABLED_DesktopCh
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
+@@ -1484,3 +1484,3 @@ TEST_F(TestIndicator, DISABLED_DesktopCh
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+@@ -1516,3 +1516,3 @@ TEST_F(TestIndicator, DISABLED_PhoneNoti
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
+@@ -1647,3 +1647,3 @@ TEST_F(TestIndicator, DISABLED_PhoneNoti
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
+@@ -1690,3 +1690,3 @@ TEST_F(TestIndicator, DISABLED_PhoneNoti
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
+@@ -1730,3 +1730,3 @@ TEST_F(TestIndicator, DISABLED_PhoneNoti
+ .action("indicator.root")
+- .string_attribute("x-canonical-type", "com.canonical.indicator.root")
++ .string_attribute("x-ayatana-type", "org.ayatana.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
diff --git a/srcpkgs/indicator-sound/template b/srcpkgs/indicator-sound/template
new file mode 100644
index 00000000000000..d35d0b393e30de
--- /dev/null
+++ b/srcpkgs/indicator-sound/template
@@ -0,0 +1,42 @@
+# Template file for 'indicator-sound'
+pkgname=indicator-sound
+version=12.10.2+18.10.20180612
+revision=1
+_ubuntu_rel=0ubuntu7
+build_style=cmake
+configure_args="-DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBEXECDIR=lib"
+hostmakedepends="cmake-extras gobject-introspection intltool pkg-config vala
+ wget"
+makedepends="accountsservice-devel libgee-devel libnotify-devel
+ pulseaudio-devel unity-api-devel"
+depends="dconf gsettings-ubuntu-schemas libxml2 qt5 unity-api
+ unity-control-center"
+short_desc="Unified sound menu"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/indicator-sound"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/indicator-sound_${version}.orig.tar.gz"
+checksum=d37f5db1a683be45a6f6e515603745183867edb984ca06905e121c7d3432dfc2
+
+do_patch() {
+ wget https://launchpad.net/ubuntu/+archive/primary/+files/indicator-sound_${version}-${_ubuntu_rel}.diff.gz
+ gunzip indicator-sound_${version}-${_ubuntu_rel}.diff.gz
+ patch -p1 -i indicator-sound_${version}-${_ubuntu_rel}.diff
+
+ sed -i \
+ -e "s/TEST REQUIRED/TEST QUIET/" \
+ -e "/enable_testing()/d" \
+ -e "/add_subdirectory(tests)/d" \
+ -e '/url-dispatcher-1>=${URL_DISPATCHER_1_REQUIRED_VERSION}/d' \
+ CMakeLists.txt
+ sed -i \
+ -e "/add_definitions(/a -DVALA_EXTERN=extern" \
+ -e "/--pkg=url-dispatcher/d" \
+ src/CMakeLists.txt
+ rm vapi/url-dispatcher.vapi
+}
+
+post_install() {
+ rm -v "${DESTDIR}"/usr/var/lib/polkit-1/localauthority/10-vendor.d/50-com.canonical.indicator.sound.AccountsService.pkla
+ vsv indicator-sound
+}
diff --git a/srcpkgs/libcolumbus-devel b/srcpkgs/libcolumbus-devel
new file mode 120000
index 00000000000000..359e2f78144a3f
--- /dev/null
+++ b/srcpkgs/libcolumbus-devel
@@ -0,0 +1 @@
+libcolumbus
\ No newline at end of file
diff --git a/srcpkgs/libcolumbus/template b/srcpkgs/libcolumbus/template
new file mode 100644
index 00000000000000..0015dfab0a31c6
--- /dev/null
+++ b/srcpkgs/libcolumbus/template
@@ -0,0 +1,26 @@
+# Template file for 'libcolumbus'
+pkgname=libcolumbus
+version=1.1.0+15.10.20150806
+revision=1
+build_style=cmake
+configure_args="-DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DCMAKE_BUILD_TYPE=''"
+hostmakedepends="boost sparsehash"
+makedepends="icu-devel"
+short_desc="Small, fast, error tolerant matcher"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="LGPL-3.0-only"
+homepage="https://launchpad.net/libcolumbus"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/libcolumbus_${version}.orig.tar.gz"
+checksum=b57fc4a4d0a90b62273f11d5e9ccde0eb6cce9f220ca300631d95d115690eb79
+make_check=ci-skip # tests run before latinAccentedLetterGroups.txt can be installed
+
+libcolumbus-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision}"
+ pkg_install() {
+ vmove usr/include
+ vmove "usr/lib/*.so"
+ vmove usr/lib/pkgconfig
+ }
+}
diff --git a/srcpkgs/libgeonames-devel b/srcpkgs/libgeonames-devel
new file mode 120000
index 00000000000000..7e92c9283f1f14
--- /dev/null
+++ b/srcpkgs/libgeonames-devel
@@ -0,0 +1 @@
+libgeonames
\ No newline at end of file
diff --git a/srcpkgs/libgeonames/template b/srcpkgs/libgeonames/template
new file mode 100644
index 00000000000000..71fa93fdd3acd4
--- /dev/null
+++ b/srcpkgs/libgeonames/template
@@ -0,0 +1,24 @@
+# Template file for 'libgeonames'
+pkgname=libgeonames
+version=0.3.1
+revision=1
+build_style=cmake
+configure_args="-DWANT_DOC=OFF"
+hostmakedepends="gtk-doc intltool pkg-config"
+makedepends="glib-devel"
+short_desc="Library for parsing a local copy of the geonames.org database"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://git.launchpad.net/~larsu/geonames"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/geonames_${version}.orig.tar.gz"
+checksum=02b95e1682a011deedde1bd706eb6483f291c77e88b74cecfa7489e4b7ce3f32
+
+libgeonames-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision} libglib-devel"
+ pkg_install() {
+ vmove usr/include
+ vmove "usr/lib/*.so"
+ vmove usr/lib/pkgconfig
+ }
+}
diff --git a/srcpkgs/libunity-devel b/srcpkgs/libunity-devel
new file mode 120000
index 00000000000000..2f16abe48556c1
--- /dev/null
+++ b/srcpkgs/libunity-devel
@@ -0,0 +1 @@
+libunity
\ No newline at end of file
diff --git a/srcpkgs/libunity-misc-devel b/srcpkgs/libunity-misc-devel
new file mode 120000
index 00000000000000..89a81ecd20c27e
--- /dev/null
+++ b/srcpkgs/libunity-misc-devel
@@ -0,0 +1 @@
+libunity-misc
\ No newline at end of file
diff --git a/srcpkgs/libunity-misc/patches/0001_autotools.patch b/srcpkgs/libunity-misc/patches/0001_autotools.patch
new file mode 100644
index 00000000000000..9b243240aad711
--- /dev/null
+++ b/srcpkgs/libunity-misc/patches/0001_autotools.patch
@@ -0,0 +1,11 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -5,7 +5,7 @@
+ [https://bugs.launchpad.net/avani])
+ AC_CONFIG_SRCDIR([unity-misc/na-tray.h])
+
+-AM_CONFIG_HEADER([config.h])
++AC_CONFIG_HEADERS([config.h])
+
+ AM_INIT_AUTOMAKE([1.9])
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
diff --git a/srcpkgs/libunity-misc/template b/srcpkgs/libunity-misc/template
new file mode 100644
index 00000000000000..19614cf5202899
--- /dev/null
+++ b/srcpkgs/libunity-misc/template
@@ -0,0 +1,31 @@
+# Template file for 'libunity-misc'
+pkgname=libunity-misc
+version=4.0.5+14.04.20140115
+revision=1
+build_style=gnu-configure
+configure_args="--prefix=/usr --disable-static"
+hostmakedepends="automake glib-devel gtk-doc pkg-config"
+makedepends="cairo-devel gtk+3-devel"
+short_desc="Misc. differently licensed stuff for Unity"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="LGPL-2.1-only"
+homepage="https://launchpad.net/libunity-misc"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/${pkgname}_${version}.orig.tar.gz"
+checksum=197fd17077c3ceac219cbfbe3cfa511a17dd47a86c441c386c7bdec200d119b7
+CFLAGS="-Wno-error"
+
+pre_configure() {
+ gtkdocize
+ autoreconf -vfi
+}
+
+libunity-misc-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision} gtk+3-devel
+ libglib-devel"
+ pkg_install() {
+ vmove usr/include
+ vmove "usr/lib/*.so"
+ vmove usr/lib/pkgconfig
+ }
+}
diff --git a/srcpkgs/libunity/patches/0001_autoconf.patch b/srcpkgs/libunity/patches/0001_autoconf.patch
new file mode 100644
index 00000000000000..6fd0dcd342a96e
--- /dev/null
+++ b/srcpkgs/libunity/patches/0001_autoconf.patch
@@ -0,0 +1,20 @@
+diff -Nru libunity-6.90.0daily12.12.05.orig/configure.ac libunity-6.90.0daily12.12.05/configure.ac
+--- libunity-6.90.0daily12.12.05.orig/configure.ac 2013-01-07 15:11:24.125114436 -0500
++++ libunity-6.90.0daily12.12.05/configure.ac 2013-01-07 15:16:04.223636051 -0500
+@@ -2,7 +2,7 @@
+ AC_INIT(libunity, 6.90.2)
+
+ AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
+-AM_CONFIG_HEADER(config.h)
++AC_CONFIG_HEADER(config.h)
+ AM_MAINTAINER_MODE
+
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+@@ -57,7 +57,6 @@
+ ###################################################################
+ AC_ISC_POSIX
+ AC_PROG_CC
+-AM_PROG_CC_STDC
+ AC_HEADER_STDC
+ AM_PROG_LIBTOOL
+ AM_PROG_VALAC([0.16.0])
diff --git a/srcpkgs/libunity/patches/libunity-ubuntu-patches.patch b/srcpkgs/libunity/patches/libunity-ubuntu-patches.patch
new file mode 100644
index 00000000000000..6ee9f778413ec6
--- /dev/null
+++ b/srcpkgs/libunity/patches/libunity-ubuntu-patches.patch
@@ -0,0 +1,153 @@
+--- libunity-7.1.4+19.04.20190319.orig/extras/Makefile.am
++++ libunity-7.1.4+19.04.20190319/extras/Makefile.am
+@@ -24,6 +24,7 @@
+ --library unity-extras \
+ --internal-vapi=unity-extras-internal.vapi \
+ --internal-header=unity-extras-internal.h \
++ --shared-library=libunity-extras.so.9 \
+ --thread \
+ --use-header \
+ --vapidir $(top_srcdir)/vapi \
+@@ -82,7 +83,6 @@
+
+ libunity_extras_la_vala.stamp: $(libunity_extras_la_VALASOURCES)
+ $(AM_V_GEN) $(VALAC) $(libunity_extras_la_VALAFLAGS) $^
+- @sed -i -e 's/<namespace name="UnityExtras" version="@GIR_VERSION@" c:prefix="Unity">/<namespace name="UnityExtras" version="@GIR_VERSION@" c:prefix="UnityExtras" shared-library="libunity-extras.so.@LIBUNITY_LT_CURRENT@">/g' UnityExtras-@GIR_VERSION@.gir
+ @sed -i -e 's/"Extras/"/g;s/"extras_/"/' UnityExtras-@GIR_VERSION@.gir
+ @sed -i -e 's/<parameter name="scope_creation_cb" transfer-ownership="none"/<parameter name="scope_creation_cb" transfer-ownership="none" scope="call"/' UnityExtras-@GIR_VERSION@.gir
+ @touch $@
+@@ -97,12 +97,19 @@
+ # Compile .typelib from .gir
+ ##
+ if HAVE_INTROSPECTION
+--include $(INTROSPECTION_MAKEFILE)
+-INTROSPECTION_GIRS =
+-INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
+-
+ typelibdir = $(libdir)/girepository-1.0
+ typelib_DATA = $(extrasgir_DATA:.gir=.typelib)
+
++# Extract dlname from libunity.la
++# This is what g-ir-scanner does.
++libunity_extra_dlname = \
++ `$(SED) -nE "s/^dlname='([A-Za-z0-9.+-]+)'/\1/p" libunity-extras.la`
++INTROSPECTION_COMPILER_ARGS= \
++ --includedir=$(srcdir) \
++ -l $(libunity_extra_dlname)
++$(extrasgir_DATA): libunity_extras_la_vala.stamp
++$(typelib_DATA): $(extrasgir_DATA) libunity-extras.la
++ @INTROSPECTION_COMPILER@ $(INTROSPECTION_COMPILER_ARGS) -o $@ $^
++
+ CLEANFILES += $(typelib_DATA)
+ endif
+--- libunity-7.1.4+19.04.20190319.orig/protocol/protocol-icon.vala
++++ libunity-7.1.4+19.04.20190319/protocol/protocol-icon.vala
+@@ -185,7 +185,7 @@
+ }
+
+ /* Added to GIcon interface in 2.37 */
+- private Variant serialize ()
++ private Variant? serialize ()
+ {
+ Variant? ret = null;
+ return ret;
+--- libunity-7.1.4+19.04.20190319.orig/src/Makefile.am
++++ libunity-7.1.4+19.04.20190319/src/Makefile.am
+@@ -75,6 +75,7 @@
+ --library unity \
+ --internal-vapi=unity-internal.vapi \
+ --internal-header=unity-internal.h \
++ --shared-library=libunity.so.9 \
+ --target-glib=2.32 \
+ --thread \
+ --use-header \
+@@ -135,21 +136,8 @@
+
+ $(libunity_la_GENERATED): libunity_la_vala.stamp
+
+-#
+-# The reason for the first 'sed' below is:
+-# https://bugzilla.gnome.org/show_bug.cgi?id=642576
+-#
+-# The second is there because forced cname in Vala is not properly propagated
+-# into the gir file. Need https://bugzilla.gnome.org/show_bug.cgi?id=681356
+-#
+-# And the third because we need to specify scope manually.
+-#
+ libunity_la_vala.stamp: $(libunity_la_VALASOURCES)
+ $(AM_V_GEN) $(VALAC) $(libunity_la_VALAFLAGS) $^
+- @sed -i -e 's/<namespace name="Unity" version="@GIR_VERSION@" c:prefix="Unity">/<namespace name="Unity" version="@GIR_VERSION@" c:prefix="Unity" shared-library="libunity.so.@LIBUNITY_LT_CURRENT@">/g' Unity-@GIR_VERSION@.gir
+- @sed -i -e 's/emit_preview_ready/preview_ready/g' Unity-@GIR_VERSION@.gir
+- @sed -i -e 's/<parameter name="async_callback" transfer-ownership="none" /<parameter name="async_callback" transfer-ownership="none" scope="async" /g' Unity-@GIR_VERSION@.gir
+- @sed -i -e 's/<record name="ScopeResult">/<record name="ScopeResult" c:type="UnityScopeResult" glib:type-name="UnityScopeResult" glib:get-type="unity_scope_result_get_type">/;s/<record name="SearchContext">/<record name="SearchContext" c:type="UnitySearchContext" glib:type-name="UnitySearchContext" glib:get-type="unity_search_context_get_type">/' Unity-@GIR_VERSION@.gir
+ @touch $@
+
+ BUILT_SOURCES += libunity_la_vala.stamp
+@@ -169,12 +157,19 @@
+ # Compile .typelib from .gir
+ ##
+ if HAVE_INTROSPECTION
+--include $(INTROSPECTION_MAKEFILE)
+-INTROSPECTION_GIRS =
+-INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
+-
+ typelibdir = $(libdir)/girepository-1.0
+ typelib_DATA = $(unitygir_DATA:.gir=.typelib)
+
++# Extract dlname from libunity.la
++# This is what g-ir-scanner does.
++libunity_dlname = \
++ `$(SED) -nE "s/^dlname='([A-Za-z0-9.+-]+)'/\1/p" libunity.la`
++INTROSPECTION_COMPILER_ARGS= \
++ --includedir=$(srcdir) \
++ -l $(libunity_dlname)
++$(unitygir_DATA): libunity_la_vala.stamp
++$(typelib_DATA): $(unitygir_DATA) libunity.la
++ @INTROSPECTION_COMPILER@ $(INTROSPECTION_COMPILER_ARGS) -o $@ $^
++
+ CLEANFILES += $(typelib_DATA)
+ endif
+--- libunity-7.1.4+19.04.20190319.orig/src/unity-aggregator-scope.vala
++++ libunity-7.1.4+19.04.20190319/src/unity-aggregator-scope.vala
+@@ -51,7 +51,7 @@
+ */
+ public abstract int category_index_for_scope_id (string scope_id);
+
+- public AggregatorScope (string dbus_path_, string id_, MergeMode merge_mode = AggregatorScope.MergeMode.OWNER_SCOPE, bool proxy_filter_hints = false)
++ protected AggregatorScope (string dbus_path_, string id_, MergeMode merge_mode = AggregatorScope.MergeMode.OWNER_SCOPE, bool proxy_filter_hints = false)
+ {
+ Object (dbus_path: dbus_path_, id: id_, is_master: true,
+ merge_mode: merge_mode, proxy_filter_hints: proxy_filter_hints);
+--- libunity-7.1.4+19.04.20190319.orig/src/unity-deprecated-scope.vala
++++ libunity-7.1.4+19.04.20190319/src/unity-deprecated-scope.vala
+@@ -61,7 +61,7 @@
+ internal CategorySet _categories;
+ internal FilterSet _filters;
+
+- public DeprecatedScopeBase (string dbus_path_, string id_)
++ protected DeprecatedScopeBase (string dbus_path_, string id_)
+ {
+ Object (dbus_path: dbus_path_, id: id_);
+ }
+--- libunity-7.1.4+19.04.20190319.orig/src/unity-scope-channel.vala
++++ libunity-7.1.4+19.04.20190319/src/unity-scope-channel.vala
+@@ -312,7 +312,7 @@
+ DBusSignalFlags.NONE, this.owner_changed);
+ }
+
+- private void owner_changed (DBusConnection con, string sender_name,
++ private void owner_changed (DBusConnection con, string? sender_name,
+ string obj_path, string ifc_name,
+ string sig_name, Variant parameters)
+ {
+--- libunity-7.1.4+19.04.20190319.orig/tools/preview-renderer.vala
++++ libunity-7.1.4+19.04.20190319/tools/preview-renderer.vala
+@@ -63,7 +63,7 @@
+ */
+ public abstract class GridRenderer: PreviewRenderer
+ {
+- public GridRenderer()
++ protected GridRenderer()
+ {
+ Object();
+ }
diff --git a/srcpkgs/libunity/template b/srcpkgs/libunity/template
new file mode 100644
index 00000000000000..d9f1274c56b053
--- /dev/null
+++ b/srcpkgs/libunity/template
@@ -0,0 +1,47 @@
+# Template file for 'libunity'
+pkgname=libunity
+version=7.1.4+19.04.20190319
+revision=1
+build_style=gnu-configure
+configure_args="--prefix=/usr --disable-static --enable-headless-tests \
+ PYTHON=python2"
+hostmakedepends="automake gettext-devel glib-devel gobject-introspection
+ intltool pkg-config python vala"
+makedepends="dee-devel gtk+3-devel libdbusmenu-glib-devel"
+short_desc="Library for integrating with all aspects of the Unity shell"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="LGPL-3.0-only"
+homepage="https://launchpad.net/libunity"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/libunity_${version}.orig.tar.gz"
+checksum=56ecb380d74bf74caba193d9e8ad6b0c85ccf9eeb461bc9731c2b8636e1f1492
+make_check=ci-skip # "undefined reference" errors
+
+pre_patch() {
+ find -type f -name '*.py' -exec sed -i 's|^\(#!.*python$\)|\12|g' {} \+
+}
+
+post_patch() {
+ for i in $(grep -v '#' debian/patches/series); do
+ msg "Applying ${i} ..."
+ patch -p1 -i "debian/patches/${i}"
+ done
+}
+
+pre_configure() {
+ intltoolize -f
+ autoreconf -vfi
+}
+
+libunity-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision} dee-devel
+ libdbusmenu-glib-devel libglib-devel"
+ pkg_install() {
+ vmove usr/include
+ vmove "usr/lib/*.so"
+ vmove "usr/lib/libunity/*.so"
+ vmove usr/lib/pkgconfig
+ vmove usr/share/gir-1.0
+ vmove usr/share/vala
+ }
+}
diff --git a/srcpkgs/lightdm-unity-greeter/files/10-unity.defaults b/srcpkgs/lightdm-unity-greeter/files/10-unity.defaults
new file mode 100644
index 00000000000000..7732f396ca33ea
--- /dev/null
+++ b/srcpkgs/lightdm-unity-greeter/files/10-unity.defaults
@@ -0,0 +1,31 @@
+[org.gnome.desktop.background]
+show-desktop-icons=true
+picture-uri='file:///usr/share/backgrounds/warty-final-ubuntu.png'
+
+[org.gnome.desktop.interface]
+gtk-theme="Ambiance"
+icon-theme="ubuntu-mono-dark"
+#cursor-theme="DMZ-White"
+font-name="Ubuntu 11"
+monospace-font-name="Ubuntu Mono 13"
+
+[org.gnome.desktop.sound]
+theme-name = 'ubuntu'
+
+[org.gnome.desktop.session]
+session-name="ubuntu"
+
+[org.gnome.desktop.wm.preferences]
+button-layout='close,minimize,maximize:'
+mouse-button-modifier='<Alt>'
+theme="Ambiance"
+titlebar-font='Ubuntu Bold 11'
+
+[org.gnome.nautilus.desktop]
+home-icon-visible=false
+trash-icon-visible=false
+volumes-visible=false
+
+[org.gnome.settings-daemon.plugins.xsettings]
+antialiasing = 'rgba'
+hinting = 'slight'
diff --git a/srcpkgs/lightdm-unity-greeter/files/50-unity-greeter.rules b/srcpkgs/lightdm-unity-greeter/files/50-unity-greeter.rules
new file mode 100644
index 00000000000000..1c1b5a344662cf
--- /dev/null
+++ b/srcpkgs/lightdm-unity-greeter/files/50-unity-greeter.rules
@@ -0,0 +1,98 @@
+/* Original:
+ * [Disable Controlling of Network Devices]
+ * Identity=unix-user:lightdm
+ * Action=org.freedesktop.NetworkManager.enable-disable-network;org.freedesktop.NetworkManager.enable-disable-wifi;org.freedesktop.NetworkManager.enable-disable-wwan;org.freedesktop.NetworkManager.enable-disable-wimax;
+ * ResultActive=no
+ * ResultInactive=no
+ * ResultsAny=no
+ */
+
+polkit.addRule(function(action, subject) {
+ if (subject.user == "lightdm" && (
+ action.id == "org.freedesktop.NetworkManager.enable-disable-network" ||
+ action.id == "org.freedesktop.NetworkManager.enable-disable-wifi" ||
+ action.id == "org.freedesktop.NetworkManager.enable-disable-wwan" ||
+ action.id == "org.freedesktop.NetworkManager.enable-disable-wimax")) {
+ return polkit.Result.NO;
+ }
+});
+
+/* Original:
+ * [Disable Sleep and Wake]
+ * Identity=unix-user:lightdm
+ * Action=org.freedesktop.NetworkManager.sleep-wake
+ * ResultActive=no
+ * ResultInactive=no
+ * ResultsAny=no
+ */
+polkit.addRule(function(action, subject) {
+ if (subject.user == "lightdm" &&
+ action.id == "org.freedesktop.NetworkManager.sleep-wake") {
+ return polkit.Result.NO;
+ }
+});
+
+/* Original:
+ * [Disable WiFi Sharing]
+ * Identity=unix-user:lightdm
+ * Action=org.freedesktop.NetworkManager.wifi.share.protected;org.freedesktop.NetworkManager.wifi.share.open
+ * ResultActive=no
+ * ResultInactive=no
+ * ResultsAny=no
+ */
+polkit.addRule(function(action, subject) {
+ if (subject.user == "lightdm" && (
+ action.id == "org.freedesktop.NetworkManager.wifi.share.protected" ||
+ action.id == "org.freedesktop.NetworkManager.wifi.share.open")) {
+ return polkit.Result.NO;
+ }
+});
+
+/* Original:
+ * [Disable Settings Modifications]
+ * Identity=unix-user:lightdm
+ * Action=org.freedesktop.NetworkManager.settings.modify.own;org.freedesktop.NetworkManager.settings.modify.system;org.freedesktop.NetworkManager.settings.modify.hostname
+ * ResultActive=no
+ * ResultInactive=no
+ * ResultsAny=no
+ */
+polkit.addRule(function(action, subject) {
+ if (subject.user == "lightdm" && (
+ action.id == "org.freedesktop.NetworkManager.settings.modify.own" ||
+ action.id == "org.freedesktop.NetworkManager.settings.modify.system" ||
+ action.id == "org.freedesktop.NetworkManager.settings.modify.hostname")) {
+ return polkit.Result.NO;
+ }
+});
+
+/* Original:
+ * [Disable User Connections]
+ * Identity=unix-user:lightdm
+ * Action=org.freedesktop.NetworkManager.use-user-connections
+ * ResultActive=no
+ * ResultInactive=no
+ * ResultsAny=no
+ */
+polkit.addRule(function(action, subject) {
+ if (subject.user == "lightdm" &&
+ action.id == "org.freedesktop.NetworkManager.use-user-connections") {
+ return polkit.Result.NO;
+ }
+});
+
+/* Original:
+ * [Enable Controlling of Network Connections]
+ * Identity=unix-user:lightdm
+ * Action=org.freedesktop.NetworkManager.network-control
+ * ResultActive=yes
+ * ResultInactive=no
+ * ResultsAny=no
+ */
+polkit.addRule(function(action, subject) {
+ if (subject.user == "lightdm" &&
+ subject.local &&
+ subject.active &&
+ action.id == "org.freedesktop.NetworkManager.network-control") {
+ return polkit.Result.YES;
+ }
+});
diff --git a/srcpkgs/lightdm-unity-greeter/files/logo.png b/srcpkgs/lightdm-unity-greeter/files/logo.png
new file mode 100755
index 0000000000000000000000000000000000000000..a589b42ead9432ea60c6ca3ae0a031733ce79055
GIT binary patch
literal 3264
zcmV;x3_tUUP)<h;3K|Lk000e1NJLTq008v>002-31^@s6!C*5u00009a7bBm000id
z000id0mpBsWB>pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H13{6Qy
zK~#90?VWp+Rdp4|KQjo51fqbCl!rnnYEt;h@~!1t^O4cRSDCL;GEHfT%Uq#ZnW&|v
zt~64jNKFwnHS_%jHEj@O6ciK`5mA%JFthvPd+uVm&OMKN&$;K!to>Q*w`S(t-(%0f
zKKu9Bd;c2D499W04vl#W;5bgYxKcY#7sHj>ak?0;)Q;1|SSxP<s-Q2hJunK`8W;==
z1o{CzfL_4IzzX1f;4NSd&<somo(7iIU24av6AhhY_j?p@7;pem=vrnNZ9o%nCvZDb
z^iJ_daGW?4S*iO0Cj!SJi<}j&1J?sL0`Fuvj^osYA}aMD;B4S~XewPVRsw$p#shEE
zaa_kql_Dwidce<sF~B-G%CQnz?(=~qIm+QURZ$eBJ`%VZ*f4KF+VL*%Q{X0i&Fyp|
zilEe&0cYkdL<o1FrNH}n3*tC&D1uTC10Do6%Uh5T<^kUXp3GYi$BCi{&L_>lZou4}
z<p^USdhvWaZ$TU<iXtdANTI(9%+FblFxE!v>mTPWh~tD&6s3mFVX+&53BWmd3*tDH
zD8ib$oH%Q216~211)c$B0*ldR*2hTs`T?5&TLQZRyCav<G%(;4;JTFhbDY#DqEbU;
z#eM~t6qMJi=ywn>8aNr)q80&xRmg4iUp4mQIH^)prG_;XdpdFk`DaRfHv;>ibLhQl
z=w}JAGcY?1p&Ta-vR3LIXbN1d+vPA|JK!H==KwMq_$~0+D%;Nhb^%&algM#uAnT2?
zvB0BLKh<ppZX;WduD=2!sD6FCJ#ayK;y6xiWNE3lMOLf_a^BdJ>ej*a<TT(4lE<01
z0y_fFr!JA>BqS@PZU7zwzTECvXHo2ZfLl?3NfI6f_Q3tbot(*P`h5s%Dm2I|>mh32
zb<UaxP(p?k3ES-k9G$*6j+2ZmEOi5#hK{W8`8>4a{94)rr_9m7WRku3UPjA~woD{)
zoET(bsgIztLc?l5>Y`ihDZsddZAKs~?>M=Ug{6J~*gHnO&alSr20V_=qT}*7@?dkE
zTu57~hXb?F6g&>IfvqU^baflFi@$b)Hd`U@H^-?vX-~huPke<2m`b_|-3v|Y`={7v
z6L4w5HpizpzT+e!ZA(211yID{17Ik%WfWNpB`^3ourJC9USbJ4W||U|T0Fk`Bd@r1
zW7cm5K3Btdj#D*hTIylMS7=a5-dYs;2=o%U890hH6&hfD;Lzan*}&m7jP)KcF+u%d
zxKcYgk>(8@UjW`Fo)5JF*VZuBvA`L~+Rq57HvsLn4@T~$SD|dBtyPRU0oW-){m<ip
z9!?HqvHN{E^2iEXTR#naDeZwP&<kZN{Uv(gOaxBAJ-?hTN|Nb!Gg5@G@)lah-X77{
z-4&jX0-g%`ni@RoixLvt1uQ@tYf*BP%5vadlt5u;<nVGFvep29iD-XpQ199VV}_N*
zXgQEpvIfWbG-ejJjI((B#>}=cvsEE=b}H+8Ei*gU%vPA$vf%r5&Fp+LTN-oRFxt%Q
z7&F@|`1uMm+tSQhL)t7hvtDL4$jn+&kfA*b%xqJO|F`$zC3Z<N{q708N^~mU<!F=W
zV&Iq#K3@g&4(fr9pe7=RjsFI1K0wyKl4sh>=!%^78*M#+Q>lFK)*@h2;5p>=H5T|m
z$nP;8C1$u3I4h*yEx`R{&jzB|K<|)tR{=i?`P^};BFXf78E{dIdg~yC`8gdQBh5w%
z-2j{fyoiE7t^{^Km()E(Wrcna#W2rCJKUx6AmK6515m<+^MH?l?}pS}iEa$(gD&Z-
zL<{hfpuhIATns!C(hhV4=Q!z;(6o0mvzZpnN;BKS%&sYW{+gM6#mqJ~vuVMzIcBzd
z(En%5?75JBmzk!m6Uv^qn%O`zyE#Ixy@PQsh^TjCQ18r$dXvp;6VtMx#7xuQ>8*&i
z3#|ZCH7{MSBt55YC0>?~?kE^yJhJeHtmsIz1Kk81gz{)_$7-wg3*d_({r&-2&oj!N
zPXqpk&aT6F8@YR)5>c;|D4~3uawY&jL{t9~*8%$zeYCeA;&aETjw;>+4QBR)MYGDx
zMwm9e4m7jAw%U@uV`hhy^}CUoEf49h#mokq*$o|hwuhOGjgV(SAp40C_3jVkIXa@=
zV`kRV%oeqK_JNu8F|&Ik+M1bNX$5$zd+B<m+J?JZJSGSA_qWy4(YsAk*7812kLYWP
zY1&?{_|KYI4>Ow|(SE#1shc9|9T>>-R7AZa&Fti|XTLVHZB4uFVYHdqNGrg9054sy
z)YAAKi>B4gZVA3$YG%iW^fxJ@uYJwzybhl4Z)T@Pw0+0S);F^QBI?aDvqm%9HKN`e
z(=lB8{e^|W7`H~WH8Z=(3h<BbrE8X2e80~nI>M?Ed2>C9cC2SnIpS%9kbV{e{|3HQ
z_WXCqJ1s1kK^uyiT7q_}!?-M{A9c0v73l7-5y8(b=z@T4iS{v{gWt#HWJoQ(-!CGM
ztgxe@7IeIG2|7v|i_Vxk;@yyb<^^9bZ1-#~dP&?y<xQ#5^*Hw+h1(}&j74bUZYbf|
zOFjf{2<nw`l1)dOgAWt#9=iZI5WS=vClhK7=r|wv1|265XhM!8%TZ?0?Stn-kph&T
zVNYYVTV^>Uf$P!Pv?0aW3ne(L<P5VAS?HN4gUQ*1E8I0`r+!ROzY=qhlS_&2z`^M6
z&@-gnbQDci?ZpO;6OR<;@R!?~w3*y6*D<p(X7-7FnjJdmr_s!&c2GAd%S=1u8=Bdk
zW_GP<XMI^no8_iWxb@BKqZDLl&wMjG%gnl40oGeyx_(I`^ztI$Yrw|Hjr45bO%#Ap
zDOcGZ$a1x(4XwXVM~M#x5if;M8*&$IM(gfBA?x`o6ufa9vgpf#QjQ_-v4!Xgo))zJ
zu9g)j{`v(Jtu_t0#yU=2NIUehCz|qJf}BJuk#=&vM&v_23MuA6tab>Qf|da*Qyedf
z9_aUfua09n4v?-=pNw{e<676vkws5RBl2oHz1_2($mhHgE0M?9)j`{8k|b=6_6Fk6
z2d%rWuVNg>sfjc*pFBeRjGK+<-m0-xjMIh`^CdJR7#gF^{9vrVS213R(@?NRT++IB
z*Krb&_Vjx$@e=^N4-7#OPSw&K9V;D%*6;n=eO5Z#zJuBm4-P;H7Q#X)+w&6gX?L8u
zlXi;WB$jXk;G7!AYXK%9#qN(%7i}JV?H@d!MD2G+k0ZW9gU-$!Cl}JT)Z3s$2XXlX
ztyPPBcH4-~$KzfTRLg#W<J3&rmbwXeCPDpmfj^S$0)Tqc2JDB{<#D(VS7;|kvbZ2G
z>1`JK5S}im2s9%Pwm6D?b;hzdPAFNV2=0blGlwT=(~35`?n+yjlo^83CJm|Z`3zu3
zJpHhfBUxDLR+Pac3Efa|NWF4_SIb-!omI(VkHZz($(bxHHE50eIIv5?c1uwd(-Wyn
zlrF=N#cm%=@(`M$J5H`-VW~mZY7EJ5v|JC}Z#_D7iPEKfjlG=cyl0M67qU`nfM-d*
zX$ErloQ(2%_excwbZG{5LsRk#@%yNqf{@kpyTsZkGfAZ!-ch`YvXE4|rl(dKP>k~o
z;Poo|7>uqP@<=SF5M*hoL1Boa(OS70hNB(v`$&JidN8`JV+vXi$8|0#=M7w;odS`y
zr7m#*a3|pzMdI*0N;&j5l*2nI!-4Mvr92R19<V3XTWrTE1ocvCP}2L~r_`6Bv+#$3
z{~$NcdBDeLcF-I7mJdK~s5_za<EV?^-$XM4S8S)#QctA@Wzn2a&jG7o9#ZVr@)pE#
zsv+w&bvc)#$gCneXbeOlo7Jwd9Vb`nZK+Efg^sMkvTx>%TWqIOl9y70a+FOb`o8Nt
z@in&7>8SVgyFHJg8!o5iC_@y3Q0_Iy=``f2)SzsehoTImi}DraQ@o8L$Ii`L5XVVE
z-bxMHG@A%)g<_HGnaZ~#K0)_tZwXAzSr*4hOrC4%N(@0EjK{F%W$sz?Axh~x0l9rT
zPN$@ZN?l?j-~`|#l=CYqUO+R28>!x%)o}_#k(Ihc1F!>H-yVW)udHR+&<Z?-@^Vi_
zw|6>Dm!UH#bvb>2ospssMNT4{0ew-}W^d#!x*To9%|l01O(+`cd1}iw?l^^}Gb**?
yI3W~a_uFxt6mg|?oGykdwc~U#T&W$Wi}8Qgcp_iwtHz@M0000<MNUMnLSTZycO^^!
literal 0
HcmV?d00001
diff --git a/srcpkgs/lightdm-unity-greeter/files/unity-greeter-indicators-start b/srcpkgs/lightdm-unity-greeter/files/unity-greeter-indicators-start
new file mode 100755
index 00000000000000..f7233156195a8d
--- /dev/null
+++ b/srcpkgs/lightdm-unity-greeter/files/unity-greeter-indicators-start
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Load each indicator in turn respecting unity-greeter's dconf setting #
+# This is necessary since starting indicators via dbus has been deprecated in favour of using 'upstart' init system services #
+for indicator in $(gsettings get com.canonical.unity-greeter indicators | \
+ sed "s/,/\\n/g; s/[]\[']//g" | grep com.canonical | \
+ sed "s/com.canonical.//g; s/\./-/g"); do
+ if [ -x /usr/lib/${indicator}/${indicator}-service ]; then
+ exec /usr/lib/${indicator}/${indicator}-service &
+ fi
+done
diff --git a/srcpkgs/lightdm-unity-greeter/patches/use-ayatana-libraries.patch b/srcpkgs/lightdm-unity-greeter/patches/use-ayatana-libraries.patch
new file mode 100644
index 00000000000000..37422bb1e6cab9
--- /dev/null
+++ b/srcpkgs/lightdm-unity-greeter/patches/use-ayatana-libraries.patch
@@ -0,0 +1,114 @@
+diff -p1ru a/configure.ac b/configure.ac
+--- a/configure.ac 2023-06-08 15:31:11.000000000 +0800
++++ b/configure.ac 2024-07-26 14:26:21.642227245 +0800
+@@ -22,4 +22,4 @@ PKG_CHECK_MODULES(UNITY_GREETER, [
+ gdk-x11-3.0
+- indicator3-0.4
+- libido3-0.1 >= 13.10.0
++ ayatana-indicator3-0.4
++ libayatana-ido3-0.4
+ liblightdm-gobject-1 >= 1.12.0
+@@ -35,3 +35,3 @@ AC_DEFINE_UNQUOTED([INDICATOR_FILE_DIR],
+
+-INDICATORDIR=`$PKG_CONFIG --variable=indicatordir indicator3-0.4`
++INDICATORDIR=`$PKG_CONFIG --variable=indicatordir ayatana-indicator3-0.4`
+ AC_SUBST(INDICATORDIR)
+diff -p1ru a/src/indicator.vapi b/src/indicator.vapi
+--- a/src/indicator.vapi 2023-06-08 15:31:11.000000000 +0800
++++ b/src/indicator.vapi 2024-07-26 14:35:23.122353248 +0800
+@@ -2,3 +2,3 @@
+ namespace Indicator {
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public class DesktopShortcuts : GLib.Object {
+@@ -13,3 +13,3 @@ namespace Indicator {
+ }
+- [CCode (cheader_filename = "libindicator/indicator-object.h")]
++ [CCode (cheader_filename = "libayatana-indicator/indicator-object.h")]
+ public class Object : GLib.Object {
+@@ -58,3 +58,3 @@ namespace Indicator {
+ }
+- [CCode (cheader_filename = "libindicator/indicator-ng.h")]
++ [CCode (cheader_filename = "libayatana-indicator/indicator-ng.h")]
+ public class Ng : Object {
+@@ -64,3 +64,3 @@ namespace Indicator {
+ [Compact]
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public class ObjectEntry {
+@@ -78,3 +78,3 @@ namespace Indicator {
+ }
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public class Service : GLib.Object {
+@@ -96,3 +96,3 @@ namespace Indicator {
+ }
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public class ServiceManager : GLib.Object {
+@@ -116,3 +116,3 @@ namespace Indicator {
+ }
+- [CCode (cprefix = "INDICATOR_OBJECT_SCROLL_", has_type_id = false, cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cprefix = "INDICATOR_OBJECT_SCROLL_", has_type_id = false, cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public enum ScrollDirection {
+@@ -123,37 +123,37 @@ namespace Indicator {
+ }
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h", has_target = false)]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h", has_target = false)]
+ public delegate GLib.Type get_type_t ();
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h", has_target = false)]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h", has_target = false)]
+ public delegate unowned string get_version_t ();
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public const string GET_TYPE_S;
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public const string GET_VERSION_S;
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public const string OBJECT_SIGNAL_ACCESSIBLE_DESC_UPDATE;
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public const string OBJECT_SIGNAL_ENTRY_ADDED;
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public const string OBJECT_SIGNAL_ENTRY_MOVED;
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public const string OBJECT_SIGNAL_ENTRY_REMOVED;
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public const string OBJECT_SIGNAL_ENTRY_SCROLLED;
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public const string OBJECT_SIGNAL_MENU_SHOW;
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public const string OBJECT_SIGNAL_SHOW_NOW_CHANGED;
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public const string SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE;
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public const string SERVICE_SIGNAL_SHUTDOWN;
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public const int SET_VERSION;
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public const string VERSION;
+- [CCode (cname = "get_version", cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cname = "get_version", cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public static unowned string get_version ();
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public static unowned Gtk.Image image_helper (string name);
+- [CCode (cheader_filename = "gtk/gtk.h,libindicator/indicator.h,libindicator/indicator-desktop-shortcuts.h,libindicator/indicator-image-helper.h,libindicator/indicator-object.h,libindicator/indicator-service.h,libindicator/indicator-service-manager.h")]
++ [CCode (cheader_filename = "gtk/gtk.h,libayatana-indicator/indicator.h,libayatana-indicator/indicator-desktop-shortcuts.h,libayatana-indicator/indicator-image-helper.h,libayatana-indicator/indicator-object.h,libayatana-indicator/indicator-service.h,libayatana-indicator/indicator-service-manager.h")]
+ public static void image_helper_update (Gtk.Image image, string name);
+@@ -161,3 +161,3 @@ namespace Indicator {
+
+-[CCode (cheader_filename="libido/libido.h", lower_case_cprefix = "ido_")]
++[CCode (cheader_filename="libayatana-ido/libayatana-ido.h", lower_case_cprefix = "ido_")]
+ namespace Ido {
diff --git a/srcpkgs/lightdm-unity-greeter/patches/use-runit.patch b/srcpkgs/lightdm-unity-greeter/patches/use-runit.patch
new file mode 100644
index 00000000000000..3d851d5a9694ac
--- /dev/null
+++ b/srcpkgs/lightdm-unity-greeter/patches/use-runit.patch
@@ -0,0 +1,9 @@
+diff -p1ru a/src/unity-greeter.vala b/src/unity-greeter.vala
+--- a/src/unity-greeter.vala 2023-06-08 15:31:11.000000000 +0800
++++ b/src/unity-greeter.vala 2024-07-26 17:27:41.963293863 +0800
+@@ -644,3 +644,4 @@ public class UnityGreeter
+
+- Shell.parse_argv ("systemctl --user start indicator-application indicator-power indicator-datetime indicator-keyboard indicator-session indicator-sound", out argv);
++ /* Missing indicators: application, keyboard */
++ Shell.parse_argv ("sv start indicator-power indicator-datetime indicator-session indicator-sound", out argv);
+ Process.spawn_async (null,
diff --git a/srcpkgs/lightdm-unity-greeter/template b/srcpkgs/lightdm-unity-greeter/template
new file mode 100644
index 00000000000000..afe1360da9428d
--- /dev/null
+++ b/srcpkgs/lightdm-unity-greeter/template
@@ -0,0 +1,47 @@
+# Template file for 'lightdm-unity-greeter'
+pkgname=lightdm-unity-greeter
+version=23.10.1
+revision=1
+_ubuntu_rel=0ubuntu4
+build_style=gnu-configure
+configure_args="--prefix=/usr --sysconfdir=/etc --sbindir=/usr/bin \
+ --libexecdir=/usr/lib/lightdm"
+hostmakedepends="automake gettext-devel ImageMagick intltool librsvg pkg-config
+ vala"
+makedepends="ayatana-ido-devel libayatana-indicator-devel libcanberra-devel
+ libXext-devel lightdm-devel unity-settings-daemon-devel"
+depends="cantarell-fonts lightdm network-manager-applet unity-settings-daemon"
+short_desc="Greeter application for Unity, implemented as a LightDM greeter"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/unity-greeter"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/${pkgname#*-}_${version}-${_ubuntu_rel}.tar.xz"
+checksum=dd6654ee535d7cfd4ae72765f0c4f7fd4c90d7e33a30efef4bbbe0587b30aec3
+make_check=ci-skip # Cannot convert from 'uint' to 'int'
+
+post_patch() {
+ rm data/logo.png
+ cp ${FILESDIR}/logo.png data/logo.png
+}
+
+pre_configure() {
+ autoreconf -vfi
+ intltoolize -f
+}
+
+post_install() {
+ vmkdir usr/share/polkit-1/rules.d 750
+ vinstall ${FILESDIR}/50-unity-greeter.rules 644 \
+ usr/share/polkit-1/rules.d
+
+ vmkdir etc/guest-session/gsettings 755
+ vinstall ${FILESDIR}/10-unity.defaults 644 etc/guest-session/gsettings
+
+ vmkdir usr/share/lightdm/lightdm.conf.d 755
+ vinstall debian/50-unity-greeter.conf 644 \
+ usr/share/lightdm/lightdm.conf.d
+
+ vbin ${FILESDIR}/unity-greeter-indicators-start
+
+ rm -r "${DESTDIR}/usr/share/locale/"
+}
diff --git a/srcpkgs/nux-devel b/srcpkgs/nux-devel
new file mode 120000
index 00000000000000..7ef0271615ba5b
--- /dev/null
+++ b/srcpkgs/nux-devel
@@ -0,0 +1 @@
+nux
\ No newline at end of file
diff --git a/srcpkgs/nux/files/50_check_unity_support b/srcpkgs/nux/files/50_check_unity_support
new file mode 100644
index 00000000000000..80f53103bfc279
--- /dev/null
+++ b/srcpkgs/nux/files/50_check_unity_support
@@ -0,0 +1,6 @@
+# If the hardware does not pass unity_support_test, fall back to LLVMpipe
+# which does.
+
+if [ "x$DESKTOP_SESSION" = "xubuntu" ]; then
+ /usr/lib/nux/unity_support_test || export LIBGL_ALWAYS_SOFTWARE=1
+fi
diff --git a/srcpkgs/nux/patches/0001_autoconf.patch b/srcpkgs/nux/patches/0001_autoconf.patch
new file mode 100644
index 00000000000000..8262af7f3b896f
--- /dev/null
+++ b/srcpkgs/nux/patches/0001_autoconf.patch
@@ -0,0 +1,12 @@
+diff -Nru nux-4.0.0daily12.12.05.orig/configure.ac nux-4.0.0daily12.12.05/configure.ac
+--- nux-4.0.0daily12.12.05.orig/configure.ac 2013-01-07 13:35:53.028194074 -0500
++++ nux-4.0.0daily12.12.05/configure.ac 2013-01-07 13:36:07.038120083 -0500
+@@ -60,7 +60,7 @@
+ m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
+
+ AC_CONFIG_SRCDIR([Makefile.am])
+-AM_CONFIG_HEADER([config.h])
++AC_CONFIG_HEADER([config.h])
+ AM_INIT_AUTOMAKE([1.10])
+
+ NUX_MAJOR_VERSION=nux_major_version
diff --git a/srcpkgs/nux/patches/add_setupframebufferobject_clear.patch b/srcpkgs/nux/patches/add_setupframebufferobject_clear.patch
new file mode 100644
index 00000000000000..9845ab8363e882
--- /dev/null
+++ b/srcpkgs/nux/patches/add_setupframebufferobject_clear.patch
@@ -0,0 +1,13 @@
+--- a/NuxGraphics/IOpenGLFrameBufferObject.cpp 2022-11-09 20:34:57.826292791 +0530
++++ b/NuxGraphics/IOpenGLFrameBufferObject.cpp 2022-11-09 20:44:30.187949413 +0530
+@@ -72,6 +72,10 @@
+ texture_attachment_array_.clear();
+ surface_attachment_array_.clear();
+
++ auto const& gpu_info = GetGraphicsDisplay()->GetGpuDevice()->GetGpuInfo();
++ texture_attachment_array_.resize(gpu_info.GetMaxFboAttachment());
++ surface_attachment_array_.resize(gpu_info.GetMaxFboAttachment());
++
+ depth_surface_attachment_ = ObjectPtr<IOpenGLSurface> (0);
+ stencil_surface_attachment_ = ObjectPtr<IOpenGLSurface> (0);
+
diff --git a/srcpkgs/nux/patches/use_glewmx.patch b/srcpkgs/nux/patches/use_glewmx.patch
new file mode 100644
index 00000000000000..67bbebd4e188d5
--- /dev/null
+++ b/srcpkgs/nux/patches/use_glewmx.patch
@@ -0,0 +1,35 @@
+--- a/NuxGraphics/FreetypeFont.cpp
++++ b/NuxGraphics/FreetypeFont.cpp
+@@ -27,7 +27,7 @@
+ //#include "OpenGL/GLsdk/GL/gl.h"
+ //#include "OpenGL/GLsdk/GL/glprocs.h"
+ //#include <GL/glu.h>
+-#include <GL/glew.h>
++#include <glew-1.13.0/GL/glew.h>
+ #include "GfxServer.h"
+ #include "OpenGLEngine/GLCheck.h"
+ #include "OpenGLEngine/OpenGLEngine.h"
+--- a/NuxGraphics/GLResource.h
++++ b/NuxGraphics/GLResource.h
+@@ -72,8 +72,8 @@ namespace nux
+ #define NUX_ENABLE_CG_SHADERS 0
+
+ #if defined(NUX_OS_WINDOWS)
+- #include "GL/glew.h"
+- #include "GL/wglew.h"
++ #include "GL/glewmx.h"
++ #include "GL/wglewmx.h"
+
+ GLEWContext *glewGetContext();
+ WGLEWContext *wglewGetContext();
+@@ -96,8 +96,8 @@ namespace nux
+ #ifndef GLEW_MX
+ #define GLEW_MX
+ #endif
+- #include "GL/glew.h"
+- #include "GL/glxew.h"
++ #include "GL/glewmx.h"
++ #include "GL/glxewmx.h"
+
+ GLEWContext *glewGetContext();
+ GLXEWContext *glxewGetContext();
diff --git a/srcpkgs/nux/template b/srcpkgs/nux/template
new file mode 100644
index 00000000000000..a74d34fd3ab048
--- /dev/null
+++ b/srcpkgs/nux/template
@@ -0,0 +1,59 @@
+# Template file for 'nux'
+pkgname=nux
+version=4.0.8+18.10.20180623
+revision=1
+_ubuntu_rel=0ubuntu10
+build_style=gnu-configure
+configure_args="--prefix=/usr --libexecdir=/usr/lib --disable-static \
+ --disable-tests"
+hostmakedepends="automake boost-devel doxygen graphviz pkg-config wget
+ xorgproto"
+makedepends="gdk-pixbuf-devel geis-devel glew-devel glewmx-devel ibus-devel
+ libsigc++-devel libXcomposite-devel libXdamage-devel libXinerama-devel
+ libXxf86vm-devel pango-devel pciutils-devel pcre-devel"
+depends="glew"
+short_desc="OpenGL graphical user interface toolkit"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only, LGPL-3.0-only"
+homepage="https://launchpad.net/nux"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/nux_${version}.orig.tar.gz"
+checksum=5ec296f8e9d445fc2e2bf2814e4fa6ed36a62068937d0a2e0122fa68492361b3
+keep_libtool_archives=yes
+
+do_patch() {
+ wget https://launchpad.net/ubuntu/+archive/primary/+files/nux_${version}-${_ubuntu_rel}.diff.gz
+ gunzip nux_${version}-${_ubuntu_rel}.diff.gz
+ patch -p1 -i nux_${version}-${_ubuntu_rel}.diff
+
+ for i in $(grep -v '#' debian/patches/series); do
+ patch -p1 -i "debian/patches/${i}"
+ done
+}
+
+pre_configure() {
+ export CFLAGS+=" -Wno-error"
+ export CXXFLAGS+=" -Wno-error -g -O0"
+
+ autoreconf -vfi
+}
+
+
+post_install() {
+ vmkdir etc/X11/xinit/xinitrc.d 755
+ vinstall ${FILESDIR}/50_check_unity_support 755 \
+ etc/X11/xinit/xinitrc.d/
+}
+
+nux-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision} cairo-devel
+ gdk-pixbuf-devel geis-devel glewmx-devel glu-devel libglib-devel
+ libglvnd-devel libpng-devel libsigc++-devel libX11-devel libXext-devel
+ libXinerama-devel libXxf86vm-devel pcre-devel"
+ pkg_install() {
+ vmove usr/include
+ vmove "usr/lib/*.la"
+ vmove "usr/lib/*.so"
+ vmove usr/lib/pkgconfig
+ }
+}
diff --git a/srcpkgs/openrc-settingsd/files/openrc-settingsd/run b/srcpkgs/openrc-settingsd/files/openrc-settingsd/run
new file mode 100644
index 00000000000000..cfa502c3491a71
--- /dev/null
+++ b/srcpkgs/openrc-settingsd/files/openrc-settingsd/run
@@ -0,0 +1,6 @@
+#!/bin/sh
+exec 2>&1
+[ -r conf ] && . ./conf
+install -d -m0700 /run/openrc-settingsd
+exec /usr/libexec/openrc-settingsd ${OPTS} --syslog
+
diff --git a/srcpkgs/openrc-settingsd/template b/srcpkgs/openrc-settingsd/template
new file mode 100644
index 00000000000000..404e485cbfacda
--- /dev/null
+++ b/srcpkgs/openrc-settingsd/template
@@ -0,0 +1,19 @@
+# Template file for 'openrc-settingsd'
+pkgname=openrc-settingsd
+version=1.5.0
+revision=1
+build_style=meson
+configure_args="-Dopenrc=disabled"
+hostmakedepends="pkg-config"
+makedepends="glib-devel polkit-devel"
+depends="dbus"
+short_desc="Standalone hostnamed, localed, and timedated D-Bus services"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-2.0-or-later"
+homepage="https://gitlab.com/postmarketOS/openrc-settingsd"
+distfiles="https://gitlab.com/postmarketOS/openrc-settingsd/-/archive/v${version}/openrc-settingsd-v${version}.tar.gz"
+checksum=f4a74262e0012783047ec1d12dfdf4ef3a983e9abaeb436e17703d6881f72292
+
+post_install() {
+ vsv openrc-settingsd
+}
diff --git a/srcpkgs/properties-cpp/template b/srcpkgs/properties-cpp/template
new file mode 100644
index 00000000000000..af6531a7cd73ef
--- /dev/null
+++ b/srcpkgs/properties-cpp/template
@@ -0,0 +1,17 @@
+# Template file for 'properties-cpp'
+pkgname=properties-cpp
+version=0.0.3
+revision=1
+build_style=cmake
+configure_args="-DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib"
+hostmakedepends="cmake-extras"
+short_desc="C++11 library providing properties/signals"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="LGPL-3.0-only"
+homepage="https://launchpad.net/properties-cpp"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/properties-cpp_${version}.orig.tar.gz"
+checksum=62730a43c15dfb8dd28beca8852d7b11f64a6db72f47953bee78b31b9d9b3069
+
+pre_configure() {
+ sed -i '/tests/d' CMakeLists.txt
+}
diff --git a/srcpkgs/unity-api-devel b/srcpkgs/unity-api-devel
new file mode 120000
index 00000000000000..b67dfb4db11fc7
--- /dev/null
+++ b/srcpkgs/unity-api-devel
@@ -0,0 +1 @@
+unity-api
\ No newline at end of file
diff --git a/srcpkgs/unity-api/template b/srcpkgs/unity-api/template
new file mode 100644
index 00000000000000..52dc6d721d5dfe
--- /dev/null
+++ b/srcpkgs/unity-api/template
@@ -0,0 +1,36 @@
+# Template file for 'unity-api'
+pkgname=unity-api
+version=8.7+17.04.20170404
+revision=1
+_ubuntu_rel=0ubuntu9
+build_style=cmake
+configure_args="-DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DNO_TESTS=TRUE"
+hostmakedepends="doxygen graphviz pkg-config python3 qt5 wget"
+makedepends="glib-devel"
+short_desc="API for Unity shell integration"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only, LGPL-3.0-only"
+homepage="https://launchpad.net/unity-api"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/${pkgname}_${version}.orig.tar.gz"
+checksum=5c17e5092e384c80382569f3beee282f522ff0ca6ad5d72690258f14abb759d9
+
+do_patch() {
+ wget https://launchpad.net/ubuntu/+archive/primary/+files/${pkgname}_${version}-${_ubuntu_rel}.diff.gz
+ gunzip ${pkgname}_${version}-${_ubuntu_rel}.diff.gz
+ patch -p1 -i ${pkgname}_${version}-${_ubuntu_rel}.diff
+}
+
+pre_configure() {
+ export CFLAGS+=" -fpermissive"
+}
+
+unity-api-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision} qt5-devel"
+ pkg_install() {
+ vmove usr/include
+ vmove "usr/lib/*.so"
+ vmove usr/lib/pkgconfig
+ }
+}
diff --git a/srcpkgs/unity-asset-pool/files/voidlinux-icon-tango-22.png b/srcpkgs/unity-asset-pool/files/voidlinux-icon-tango-22.png
new file mode 100755
index 0000000000000000000000000000000000000000..e6e6c04ca4fb4d71dae69127b9ef6a62bd9e3e4f
GIT binary patch
literal 621
zcmV-z0+RiSP)<h;3K|Lk000e1NJLTq000&M000&U1^@s6#I$TX00009a7bBm0004t
z0004t0pZZnyZ`_I8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10s2Wq
zK~y-6ot3|9ltB=NpF1HrB`Q(0@Qi1E6!tbY7J|_-wHDD}qW^-4`0pqPQL$7+uo6U4
zY7@>tJTVEFs9;d!vH13IvbSf9FAVHAJNxeJyR-AvRQli`a0R#woCS^n0;|AV;0f>;
z_*`7A<~E?-QNOr5Hq`}nf6h}P9#Px>KpOE{ZAPA2A1PYE3t$x30A2#iz>nmcOwvTG
z0_T7aQHsHoY0SK(&X$g;?o+4LP9gI~l;W<sqK*|v{$?lCrHuS`m-vwSH96ZU)4h^^
z48)u2a2>b`3?-dT1D6V#j{~=ojb(EkU_N{w2BuIK!*1&ZO>d~%A?CX}Q_y@p#5_cO
z9~_I>g7J(rl8<Jw_rm<UI&eH3V>vtKBrsTzrU6{ceC;r9)`4Ha@iPnV``!z417TdN
zQ;FY2D+_)GY!^tkf#;cTB8=Bi9|djJ(nUn=W|F2+-)mXS0d*t9Jm@Zrn6|f8$JCq2
z@=HUV%Q)sxk60CT7agmj-^(Lu`KNJhsYBg~g>1*A{~$l5F01o~UeT~>AQ2t)y1klr
zHJ!Eh`Hxuj^Brxo3A_SMX1BeOs-vAsY63V998JCpz)DZuWIHwsneT?Sy)C!+2WeQf
zzRe=dPHb6eI*{}9`-1=s15?S)B#G+4C*Te66u1w3D=q#F?mbR!k9`FN00000NkvXX
Hu0mjfnNt-B
literal 0
HcmV?d00001
diff --git a/srcpkgs/unity-asset-pool/files/voidlinux-icon-tango-24.png b/srcpkgs/unity-asset-pool/files/voidlinux-icon-tango-24.png
new file mode 100755
index 0000000000000000000000000000000000000000..86a177c16d2ec17169d95b1d049c7295dbfb1e54
GIT binary patch
literal 626
zcmV-&0*(ENP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00009a7bBm00055
z000550bW9u-T(jq8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10sl!v
zK~zYIos~Un6j2n0pB>piur;t|qu?J<@Pnk&UPyXd!7^>sUm_+Dw6RFFm_bOT2*%b(
z#3tZ3qD3%Wve`TqGb4BJ-WfOh!Y$6ZXU==ix#zyqQfa_>;0|yLxD1>F1ik^EfK8wW
ze67u(rdCINq8|Bw9II<;H<hc7U}KELF%HzlaS5i?tti31x})x@e`-hu>hd@Q6-ll>
zQm?A5U@ueW)yHZ-LGrJXu;)GXYy)B4x}xqS+BF*zJS{i2%9Ed#WF|qfS`o}TJT3VI
z1XU$ryN=blteo?9FuAFjo&p{Kugi76^o4i_tOxcPU<vhkRNA%ZWK-%}N3mV*g|Q1!
zOpf|FaO_)5NchpiMDhwNQEX;$!4*Dcz)Voq7vLl+{dTPkjP9KP-vhgw0fWHNW)zKL
zl|Y!Ul>t9OMj(qm$QzPvMs@~V4D8>iFQUHACoXwA(f>DUJBqy##q_eo3GYVs5pa{?
zF<mKr{V4WcWWPeaVDTs_^erCEB#$i*@*Jw2YGW-bZO`KQpOzq0;dKKo>N-5X70D!(
zOk4a<Iw1iT5<7@U`WBMB;P3;?)aw?4mfIkZv12(wQsF@TpuTtXhf}M<Db~eAyT-xB
zxCE7iuR1(kbvU%R&`v5>OB<D74p^eloJ*yh0l$D9;3e=3_*s|WFJN+<O|rQ(qyPW_
M07*qoM6N<$f}ngABme*a
literal 0
HcmV?d00001
diff --git a/srcpkgs/unity-asset-pool/template b/srcpkgs/unity-asset-pool/template
new file mode 100644
index 00000000000000..81a80afb921f65
--- /dev/null
+++ b/srcpkgs/unity-asset-pool/template
@@ -0,0 +1,30 @@
+# Template file for 'unity-asset-pool'
+pkgname=unity-asset-pool
+version=0.8.24+17.10.20170507
+revision=1
+hostmakedepends="icon-naming-utils"
+depends="gnome-icon-theme"
+short_desc="Design assets for Unity"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="CC-BY-SA-3.0"
+homepage="https://launchpad.net/unity-asset-pool"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/unity-asset-pool_${version}.orig.tar.gz"
+checksum=8f3ff7df84daf28165e6f78d1287b54c86d22a1612f66c8655d8bef729a85b8b
+
+do_install() {
+ vmkdir usr/share/unity/themes 755
+ vcopy launcher/* usr/share/unity/themes
+ vcopy panel/* usr/share/unity/themes
+
+ vmkdir usr/share/icons 755
+ find unity-icon-theme/ -type f -exec install -Dm644 {} "${DESTDIR}"/usr/share/icons/{} \;
+ vinstall ${FILESDIR}/voidlinux-icon-tango-22.png 644 usr/share/icons/unity-icon-theme/places/22 distributor-logo.png
+ vinstall ${FILESDIR}/voidlinux-icon-tango-24.png 644 usr/share/icons/unity-icon-theme/places/24 distributor-logo.png
+
+ for i in $(find "${DESTDIR}/usr/share/icons" -mindepth 2 -maxdepth 2 -type d); do
+ cd "${i}"
+ for j in *; do
+ /usr/libexec/icon-name-mapping -c "${j}"
+ done
+ done
+}
diff --git a/srcpkgs/unity-backgrounds/template b/srcpkgs/unity-backgrounds/template
new file mode 100644
index 00000000000000..d6363b8ee8164b
--- /dev/null
+++ b/srcpkgs/unity-backgrounds/template
@@ -0,0 +1,15 @@
+# Template file for 'unity-backgrounds'
+pkgname=unity-backgrounds
+version=24.04
+revision=1
+_ubuntu_rel=0ubuntu1
+short_desc="Unity backgrounds included in Ubuntu Unity"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-or-later"
+homepage="https://ubuntuunity.org"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/ubuntu-unity-backgrounds_${version}-${_ubuntu_rel}_all.deb"
+checksum=5332b43cc91df70613813a636de62c354dfaae1421356fe64ed0fa9428468aab
+
+do_install() {
+ vcopy "*" usr
+}
diff --git a/srcpkgs/unity-control-center-devel b/srcpkgs/unity-control-center-devel
new file mode 120000
index 00000000000000..ee55ee3996e49d
--- /dev/null
+++ b/srcpkgs/unity-control-center-devel
@@ -0,0 +1 @@
+unity-control-center
\ No newline at end of file
diff --git a/srcpkgs/unity-control-center/files/system-config-printer-unity.desktop b/srcpkgs/unity-control-center/files/system-config-printer-unity.desktop
new file mode 100644
index 00000000000000..f84903866093d2
--- /dev/null
+++ b/srcpkgs/unity-control-center/files/system-config-printer-unity.desktop
@@ -0,0 +1,108 @@
+[Desktop Entry]
+Name=Print Settings
+Name[ar]=إعدادات الطباعة
+Name[as]=প্ৰিন্ট সংহতিসমূহ
+Name[bg]=Принтерни настройки
+Name[bn_IN]=প্রিন্ট সংক্রান্ত বৈশিষ্ট্য
+Name[ca]=Paràmetres d'impressió
+Name[cs]=Nastavení tisku
+Name[da]=Udskriftsindstillinger
+Name[de]=Druckeinstellungen
+Name[el]=Εκτύπωση Ρυθμίσεων
+Name[en_GB]=Print Settings
+Name[es]=Configuración de impresión
+Name[et]=Trükkimise seaded
+Name[fi]=Tulostusasetukset
+Name[fr]=Configuration de l'impression
+Name[gu]=પ્રિન્ટ સુયોજનો
+Name[hi]=छपाई सेटिंग
+Name[hu]=Nyomtatási beállítások
+Name[it]=Impostazioni di stampa
+Name[ja]=印刷設定
+Name[kn]=ಮುದ್ರಣದ ಸಿದ್ಧತೆಗಳು
+Name[ko]=인쇄 설정
+Name[lv]=Drukāšanas iestatījumi
+Name[ml]=പ്രിന്റ് സജ്ജീകരണങ്ങള്
+Name[mr]=छपाई सेटिंग्स्
+Name[nb]=Innstillinger for utskrift
+Name[nl]=Afdrukinstellingen
+Name[or]=ମୂଦ୍ରଣୀ ସଂରଚନା
+Name[pa]=ਪਰਿੰਟ ਸੈਟਿੰਗ
+Name[pl]=Ustawienia drukowania
+Name[pt]=Configurações da Impressora
+Name[pt_BR]=Configurações da impressora
+Name[ru]=Настройки принтера
+Name[sl]=Nastavitve tiskanja
+Name[sv]=Skrivarinställningar
+Name[ta]=அச்சு அமைவுகள்
+Name[te]=ముద్రణ అమరికలు
+Name[uk]=Параметри друку
+Name[zh_CN]=打印设置
+Name[zh_TW]=列印設定值
+Comment=Configure printers
+Comment[ar]=اضبط الطابعات
+Comment[as]=মুদ্ৰকৰ বিন্যাস কৰক
+Comment[bg]=Настройка на принтерите
+Comment[bn]=প্রিন্টার কনফিগার করুন
+Comment[bn_IN]=প্রিন্টার কনফিগার করুন
+Comment[br]=Kefluniañ ar voullerezed
+Comment[bs]=Konfiguriranje pisača
+Comment[ca]=Configureu les impressores
+Comment[cs]=Nastavit tiskárny
+Comment[da]=Indstil printere
+Comment[de]=Drucker konfigurieren
+Comment[el]=Ρύθμιση εκτυπωτών
+Comment[en_GB]=Configure printers
+Comment[es]=Configurar impresoras
+Comment[et]=Printerite seadistamine
+Comment[fa]=پیکربندی چاپگرها
+Comment[fi]=Muokkaa tulostimien asetuksia
+Comment[fr]=Configurer les imprimantes
+Comment[gu]=પ્રિન્ટરો રૂપરેખાંકિત કરો
+Comment[he]=הגדרת מדפסות
+Comment[hi]=मुद्रक विन्यस्त करें
+Comment[hr]=Konfiguriranje pisača
+Comment[hu]=Nyomtatók beállítása
+Comment[id]=Konfigurasi pencetak
+Comment[is]=Stilla prentara
+Comment[it]=Configura le stampanti
+Comment[ja]=プリンターの設定
+Comment[kn]=ಮುದ್ರಕವನ್ನು ಸ್ವರೂಪಿಸು
+Comment[ko]=프린터 설정
+Comment[lv]=Konfigurēt printerus
+Comment[ml]=പ്രിന്ററുകള് സജ്ജമാക്കുക
+Comment[mr]=मुद्रक व्यूहरचित करा
+Comment[ms]=Tetapkan pencetak
+Comment[nb]=Konfigurer skrivere
+Comment[nl]=Printers configureren
+Comment[nn]=Set opp skrivarar
+Comment[or]=ମୁଦ୍ରଣୀ ମାନଙ୍କୁ ବିନ୍ଯାସ କରନ୍ତୁ
+Comment[pa]=ਪਰਿੰਟਰ ਸੰਰਚਨਾ
+Comment[pl]=Konfiguracja drukarek
+Comment[pt]=Configurar impressoras
+Comment[pt_BR]=Configure impressoras
+Comment[ro]=Configurează imprimantele
+Comment[ru]=Настроить принтеры
+Comment[si]=මුද්රකයන් මානකරන්න
+Comment[sk]=Konfigurovať tlačiarne
+Comment[sl]=Konfiguracija tiskalnikov
+Comment[sr]=Подешавање штампача
+Comment[sr@latin]=Podešavanje štampača
+Comment[sv]=Konfigurera skrivare
+Comment[ta]=அச்சடிப்பிகளை கட்டமைக்கவும்
+Comment[te]=ముద్రకాలను ఆకృతీకరించు
+Comment[th]=ตั้งค่าเครื่องพิมพ์
+Comment[tr]=Yazıcıları yapılandır
+Comment[uk]=Налаштовування принтерів
+Comment[vi]=Cấu hình máy in
+Comment[zh_CN]=配置打印机
+Comment[zh_TW]=設定印表機
+Exec=system-config-printer
+Terminal=false
+Type=Application
+Icon=printer
+StartupNotify=true
+OnlyShowIn=Unity;
+Categories=GNOME;GTK;Settings;HardwareSettings;X-Unity-Settings-Panel;
+X-Unity-Settings-Panel=printing
+Keywords=Printer;Queue;Print;Paper;Ink;Toner;
diff --git a/srcpkgs/unity-control-center/files/unity-online-accounts-panel.desktop b/srcpkgs/unity-control-center/files/unity-online-accounts-panel.desktop
new file mode 100644
index 00000000000000..daf714e2d77993
--- /dev/null
+++ b/srcpkgs/unity-control-center/files/unity-online-accounts-panel.desktop
@@ -0,0 +1,197 @@
+[Desktop Entry]
+Name=Online Accounts
+Name[af]=Aanlynrekeninge
+Name[an]=Cuentas en linia
+Name[ar]=حسابات الإنترنت
+Name[as]=অনলাইন একাওন্টসমূহ
+Name[ast]=Cuentes en llinia
+Name[be]=Сеціўныя конты
+Name[bg]=Мрежови регистрации
+Name[bn_IN]=অনলাইন অ্যাকাউন্ট
+Name[ca]=Comptes en línia
+Name[ca@valencia]=Comptes en línia
+Name[crh]=Çevrimiçi Hesaplar
+Name[cs]=Účty on-line
+Name[da]=Onlinekonti
+Name[de]=Online-Konten
+Name[el]=Διαδικτυακοί λογαριασμοί
+Name[en_GB]=Online Accounts
+Name[eo]=Interretaj kontoj
+Name[es]=Cuentas en línea
+Name[et]=Netikontod
+Name[eu]=Lineako kontuak
+Name[fa]=حسابهای برخط
+Name[fi]=Verkkotilit
+Name[fr]=Comptes en ligne
+Name[ga]=Cuntais ar Líne
+Name[gl]=Contas en liña
+Name[gu]=ઓનલાઇન ખાતાઓ
+Name[he]=חשבונות מקוונים
+Name[hi]=ऑनलाइन खातों
+Name[hu]=Online fiókok
+Name[id]=Akun Daring
+Name[it]=Account online
+Name[ja]=オンラインアカウント
+Name[kk]=Желідегі тіркелгілер
+Name[km]=គណនីលើបណ្ដាញ
+Name[kn]=ಅಂತರಜಾಲದಲ್ಲಿನ ಖಾತೆಗಳು
+Name[ko]=온라인 계정
+Name[lt]=Interneto paslaugų paskyros
+Name[lv]=Tiešsaistes konti
+Name[mk]=Онлајн сметки
+Name[ml]=ഓണ്ലൈന് അക്കൌണ്ടുകള്
+Name[mr]=ऑनलाइन खाते
+Name[nb]=Nettkontoer
+Name[ne]=अनलाईन खाताहरू
+Name[nl]=Online-accounts
+Name[nn]=Nettkontoar
+Name[or]=ଅନଲାଇନ ଖାତାଗୁଡ଼ିକ
+Name[pa]=ਆਨਲਾਈਨ ਅਕਾਊਂਟ
+Name[pl]=Konta online
+Name[pt]=Contas Online
+Name[pt_BR]=Contas on-line
+Name[ro]=Conturi online
+Name[ru]=Сетевые учётные записи
+Name[sk]=Účty služieb
+Name[sl]=Spletni računi
+Name[sr]=Налози на мрежи
+Name[sr@latin]=Nalozi na mreži
+Name[sv]=Nätkonton
+Name[ta]=ஆன் லைன் கணக்குகள்
+Name[te]=ఆన్లైన్ ఖాతాలు
+Name[tg]=Ҳисобҳои онлайн
+Name[th]=บัญชีออนไลน์
+Name[tr]=Çevrimiçi Hesaplar
+Name[ug]=توردىكى ھېساباتلار
+Name[uk]=Мережеві облікові записи
+Name[vi]=Tài khoản trực tuyến
+Name[zh_CN]=在线账户
+Name[zh_HK]=網上帳號
+Name[zh_TW]=線上帳號
+Comment=Connect to your online accounts and decide what to use them for
+Comment[af]=Koppel met aanlynrekeninge en kies waarvoor hulle gebruik moet word
+Comment[an]=Connectar-se a las tuyas cuentas en linia y decidir ta qué usar-las
+Comment[ar]=اتصل بحساباتك على الإنترنت و اختر ما الذي تستخدمه منهم
+Comment[as]=আপোনাৰ অনলাইন একাওন্টসমূহৰ সৈতে সংযোগ কৰক আৰু সিহতক কিহৰ বাবে ব্যৱহাৰ কৰিব নিৰ্ধাৰণ কৰক
+Comment[be]=Злучэнне з сеціўнымі контамі і іх прызначэнне
+Comment[bg]=Свързване с онлайн регистрациите ви и задаване за какво да се ползват
+Comment[bn_IN]=অাপনার অনলাইন অ্যাকাউন্টগুলিতে সংযোগ করুন এবং তাদের কী কাজে ব্যবহার করবেন তার স্থির করুন
+Comment[ca]=Connecteu-vos als comptes en línia i decidiu quin ús en voleu fer
+Comment[ca@valencia]=Connecteu-vos als comptes en línia i decidiu quin ús en voleu fer
+Comment[cs]=Přihlaste se k účtům on-line a rozhodněte se, k čemu je používat
+Comment[da]=Forbind til dine onlinekonti og beslut dig for hvad du vil bruge dem til
+Comment[de]=Verbinden Sie sich mit Ihren Online-Konten und entscheiden Sie, wofür diese genutzt werden
+Comment[el]=Συνδεθείτε με τους δικτυακούς λογαριασμούς σαε και αποφασίστε πού θα τους χρησιμοποιήσετε
+Comment[en_GB]=Connect to your online accounts and decide what to use them for
+Comment[eo]=Konekti al viajn interretajn kontojn kaj elekti kiel uzi ilin
+Comment[es]=Conectarse a sus cuentas en línea y decidir para qué usarlas
+Comment[et]=Veebikontodega ühendumine ja määramine, milleks neid kasutatakse
+Comment[eu]=Konektatu lineako zure kontuetara eta erabaki zertarako erabiliko dituzun
+Comment[fa]=به حسابهای برخط خود متصل شوید و تصمیم بگیرد چه استفادهای از آنها بکنید
+Comment[fi]=Liitä verkkotilisi ja päätä, mihin tarkoituksiin niitä käytetään
+Comment[fr]=Connectez-vous à vos comptes en ligne et décidez de leur utilité
+Comment[gl]=Conéctese ás súas contas en liña a decida para que usalas
+Comment[gu]=તમારાં ઓનલાઇન ખાતામાં જોડાવો અને નક્કી કરો તે તેઓ માટે શું વાપરવુ છે
+Comment[he]=התחברות לחשבונות המקוונים שלך ולהחליט למה לשמש אותם
+Comment[hi]=आपके ऑनलाइन खातों से कनेक्ट करने और निर्णय क्या उनके लिए उपयोग करने के लिए
+Comment[hu]=Kapcsolódás online fiókjaihoz, és felhasználási módjuk kiválasztása
+Comment[id]=Sambung ke akun daring Anda dan tentukan mereka akan dipakai apa
+Comment[it]=Connette ai propri account online e decice per cosa usarli
+Comment[ja]=オンラインアカウントへの接続や利用方法を設定します。
+Comment[kk]=Желідегі тіркелгілеріңізге байланыс орнатыңыз және олар не үшін қолданылатынын шешіңіз
+Comment[kn]=ನಿಮ್ಮ ಆನ್ಲೈನ್ ಖಾತೆಗಳೊಂದಿಗೆ ಸಂಪರ್ಕ ಜೋಡಿಸಿ ಮತ್ತು ಅವುಗಳನ್ನು ಯಾವ ಕೆಲಸಕ್ಕೆ ಬಳಸಬೇಕು ಎನ್ನುವುದನ್ನು ನಿರ್ಧರಿಸಿ
+Comment[ko]=온라인 계정에 연결하고 그 계정을 어디에 이용할지 설정합니다
+Comment[lt]=Prisijunkite prie savo internetinių paskyrų ir nuspręskite, kam jas naudosite
+Comment[lv]=Savienojieties ar saviem tiešsaistes kontiem un izvēlaties, kam tos izmantot
+Comment[ml]=ഓണ്ലൈന് അകൌണ്ടുകള് ബന്ധിപ്പിച്ച് അവ എന്തിന് വേണ്ടി ഉപയോഗിക്കണം എന്ന് തീരുമാനിക്കുക
+Comment[mr]=ऑनलाइन खातींसह जोडणी करा आणि त्याचे कशासाठी वापर करायचे ते ठरवा
+Comment[nb]=Koble til dine kontoer på nettet og bestem hva du skal bruke dem til
+Comment[nl]=Met uw online-accounts verbinden en bepalen waar u ze voor gebruikt
+Comment[or]=ଆପମଙ୍କର ଅନ୍ଲାଇନ୍ ଖାତା ସହିତ ସଂଯୋଗ କରନ୍ତୁ ଏବଂ ତାହାକୁ କଣ ପାଇଁ ବ୍ୟବହାର କରାଯିବ ତାହା ସିଦ୍ଧାନ୍ତ କରନ୍ତୁ
+Comment[pa]=ਆਪਣੇ ਆਨਲਾਈਨ ਖਾਤਿਆਂ ਨਾਲ ਕੁਨੈਕਟ ਹੋਵੋ ਅਤੇ ਫੈਸਲਾ ਕਰੋ ਕਿ ਉਹਨਾਂ ਨੂੰ ਕਿਸ ਲਈ ਵਰਤਣਾ ਹੈ
+Comment[pl]=Łączenie z kontami online i ustalanie, do czego mają być używane
+Comment[pt]=Lige-se às suas contas online e decida como as utilizar
+Comment[pt_BR]=Conecte-se às suas contas on-line e decida para que usá-las
+Comment[ru]=Подключиться к сетевым учётным записям и решить для чего их использовать
+Comment[sk]=Pripojí vás k vašim účtom sieťových služieb a rozhodne na čo sa použijú
+Comment[sl]=Nadzirajte svoje spletne račune in se odločite za kaj jih boste uporabili
+Comment[sr]=Повежите се на ваше налоге на мрежи и одлучите за шта ћете их користити
+Comment[sr@latin]=Povežite se na vaše naloge na mreži i odlučite za šta ćete ih koristiti
+Comment[sv]=Anslut till dina nätkonton och bestäm hur de ska användas
+Comment[ta]=உங்கள் ஆன்லைன் கணக்குகளில் இணைந்து அவற்றை எதற்கு பயன்படுத்த வேண்டும் என முடிவு செய்யவும்
+Comment[te]=మీ ఆన్లైన్ ఖాతాలకు అనుసంధానమై మరియు వాటిని దేని కొరకు వుపయోగించాలో నిర్ణయించు
+Comment[tg]=Ба ҳисобҳои онлайни худ пайваст шавед ва интихоб кунед, ки онҳоро барои чӣ истифода мебаред
+Comment[th]=เชื่อมต่อไปยังบัญชีออนไลน์ของคุณและตัดสินใจว่าจะใช้เพื่อทำอะไร
+Comment[tr]=Çevrimiçi hesaplarınıza bağlanın ve ne için kullanacağınızı belirleyin
+Comment[uk]=З'єднатись з вашим мережевими обліковими записами і вирішити, що з ними робити
+Comment[vi]=Kết nối các tài khoản trực tuyến của bạn và quyết định dùng chúng vào việc gì
+Comment[zh_CN]=连接在线账户并决定如何使用
+Comment[zh_HK]=連接到你的網上帳號並決定要用它們來做什麼
+Comment[zh_TW]=連接到您的線上帳號並決定要用它們來做什麼
+Exec=env XDG_CURRENT_DESKTOP=GNOME gnome-control-center online-accounts
+Icon=goa-panel
+Terminal=false
+Type=Application
+#NoDisplay=true
+StartupNotify=true
+Categories=GNOME;GTK;Settings;DesktopSettings;X-Unity-Settings-Panel;X-GNOME-PersonalSettings;
+X-Unity-Settings-Panel=online-accounts
+OnlyShowIn=Unity;
+X-GNOME-Bugzilla-Bugzilla=GNOME
+X-GNOME-Bugzilla-Product=gnome-control-center
+X-GNOME-Bugzilla-Component=Online Accounts
+X-GNOME-Bugzilla-Version=3.14.0
+# Translators: those are keywords for the online-accounts control-center panel
+# For ReadItLater and Pocket, see http://en.wikipedia.org/wiki/Pocket_(application)
+Keywords=Google;Facebook;Twitter;Yahoo;Web;Online;Chat;Calendar;Mail;Contact;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[an]=Google;Facebook;Twitter;Yahoo;Ret;En linia;Chat;Calandario;Correu;Contacto;ownCloud;Kerberos;IMAP;SMTP;Pocha;Leyer-loDimpués;
+Keywords[ar]=جوجل;جووجل;فيسبوك;تويتر;ياهو;وب;ويب;محادثة;تقويم;بريد;اتصال;
+Keywords[as]=Google;Facebook;Twitter;Yahoo;Web;Online;Chat;Calendar;Mail;Contact;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[be]=Google;Facebook;Twitter;Yahoo;Сеціва;Інтэрнэт;Чат;Каляндар;Календары;Пошта;Кантакты;Сувязь;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[bg]=Гугъл;Фейсбук;Туитър;Яху;Социален;Уеб;В мрежа;Разговор;Календар;Поща;Контакт;Оун клауд;Керберос;ИМАП;SMTP;Покет;Покит;Рийд;Google;Facebook;Twitter;Yahoo;Web;Online;Chat;Calendar;Mail;Contact;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[bn_IN]=Google;Facebook;Twitter;Yahoo;Web;অনলাইন;চ্যাট;ক্যালেন্ডার;মেল;পরিচিতি;ownCloud;Kerberos;IMAP;SMTP;পকেট;ReadItLater;
+Keywords[ca]=Google;Facebook;Twitter;Yahoo;Web;En línia;Xat;Calendari;Correu;Contacte;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[ca@valencia]=Google;Facebook;Twitter;Yahoo;Web;En línia;Xat;Calendari;Correu;Contacte;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[cs]=Google;Facebook;Twitter;Yahoo;web;on-line;diskuze;chat;kalendář;e-mail;mail;email;pošta;kontakt;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[da]=Google;Facebook;Twitter;Yahoo;Internet;Web;Online;Chat;Kalender;Post;E-post;Mail;Email;Kontaktpersoner;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[de]=Google;Facebook;Twitter;Yahoo;Internet;Online;Chat;Kalendar;Mail;E-Mail;Kontakte;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[el]=Google;Facebook;Twitter;Yahoo;Ιστός;Με σύνδεση;Συνομιλία;Ημερολόγιο;Αλληλογραφία;Επαφές;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;Online;Chat;Calendar;Mail;Contact;
+Keywords[es]=Google;Facebook;Twitter;Yahoo;Web;en línea;Chat;Calendario;Correo-e;Contacto;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[eu]=Google;Facebook;Twitter;Yahoo;Weba;Linean;Berriketa;Egutegia;Posta;Kontaktua;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[fa]=گوگل;فیس بوک;تویتر;یاهو;وب;برخط;گپ;تقویم;پستالکترونیکی;آشنا;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[fi]=Google;Facebook;Twitter;Yahoo;Web;Online;Chat;Calendar;Mail;Contact;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;keskustelu;kalenteri;sähköposti;yhteystiedot;kontaktit;
+Keywords[fr]=Google;Facebook;Twitter;Yahoo;Web;En ligne;Discussion;Agenda;Courriel;Email;Contact;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[gl]=Google;Facebook;Twitter;Yahoo;Web;En liña;Conversa;Calendario;Correo-e;Contacto;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[gu]=Google;Facebook;Twitter;Yahoo;વેબ;ઓનલાઇન;વાતચીત;કૅલેન્ડર;મેઇલ;સંપર્ક;ownCloud;કર્બોસ;IMAP;SMTP;પોકેટ;ReadItLater;
+Keywords[he]=Google;Facebook;Twitter;Yahoo;Web;מקוון;שיחה;יומן;דוא״ל;לוח שנה;צ׳אט;צ'אט;דואר אלקטרוני;דוא"ל;ownCloud;אונליין;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[hi]=गूगल;फेसबुक;ट्विटर;याहू;वेब;ऑनलाइन;चैट;कैलेंडर;मेल;संपर्क;ओनक्लाउड;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[hu]=Google;Facebook;Twitter;Yahoo;Web;Online;Csevegés;Chat;Naptár;E-mail;Levél;Levelezés;Névjegyek;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[id]=Google;Facebook;Twitter;Yahoo;Web;Daring;Obrolan;Kalender;Surel;Kontak;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[it]=Google;Facebook;Twitter;Yahoo;Web;Online;Chat;Conversazioni;Calendario;Email;Posta;Contatto;Contatti;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[ja]=Google;Facebook;Twitter;Yahoo;Web;Online;Chat;Calendar;Mail;Contact;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;グーグル;フェイスブック;ツイッター;ヤフー;ウェブ;オンライン;チャット;カレンダー;メール;連絡先;Flickr;
+Keywords[kn]=Google;Facebook;Twitter;Yahoo;Web;Online;Chat;Calendar;Mail;Contact;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[ko]=Google;구글;Facebook;페이스북;Twitter;트위터;Yahoo;야후;Web;웹;Online;온라인;Chat;채팅;Calendar;달력;Mail;메일;Contact;연락처;ownCloud;Kerberos;케르베로스;IMAP;SMTP;;Pocket;ReadItLater;
+Keywords[lt]=Google;Facebook;Twitter;Yahoo;Žiniatinklis;Tinkle;Pokalbiai;Kalendorius;Paštas;Kontaktai;ownCloud;Kerberos;IMAP;SMTP;Paketas;SkaitytiVėliau;
+Keywords[lv]=Google;Facebook;Twitter;Yahoo;Web;Tīmeklis;Tiešsaiste;Tērzēšana;Kalendārs;Pasts;kontakti;ownCloud;Kerberos;IMAP;SMTP;Online;Chat;Calendar;Mail;Contact;Pocket;ReadItLater;
+Keywords[mr]=गूगल;फेसबूक;ट्विटर;याहू;वेब;ऑनलाइन;चॅट;कॅलेंडर;मेल;काँट्रॅक्ट;ओनक्लाउड;कर्बेरोस,आईमॅप;एसएमटिपि;पॉकेट;रिडइटलेटर;
+Keywords[nb]=Google;Facebook;Twitter;Yahoo;Web;Nett;Lynmeldinger;Kalender;E-post;Kontakt;ownCloud;Kerberos;IMAP;SMTP;Lomme;ReadItLater;
+Keywords[nl]=Google;Facebook;Twitter;Yahoo;Web;Online;Chat;Calendar;Mail;Contact;ownCloud;Kerberos;IMAP;SMTP;Agenda;Pocket;ReadItLater;
+Keywords[or]=Google;Facebook;Twitter;Yahoo;ୱେବ;ଅନଲାଇନ;ଚାର୍ଟ;କ୍ୟାଲେଣ୍ଡର;ମେଲ;ସମ୍ପର୍କ;ownCloud;କର୍ବୋରସ୍;IMAP;SMTP;ପକେଟ;ଏହାକୁ ପରେ ପଢ଼ନ୍ତୁ;
+Keywords[pa]=ਗੂਗਲ;ਫੇਸਬੁੱਕ;ਟਵਿੱਟਰ;ਯਾਹੂ;ਵੈੱਬ;ਆਨਲਾਈਨ;ਗੱਲਬਾਤ;ਚੈਟ;ਕੈਲੰਡਰ;ਮੇਲ;ਸੰਪਰਕ;Google;Facebook;Twitter;Yahoo;Web;Online;Chat;Calendar;Mail;Contact;ownCloud;Kerberos;IMAP;SMTP;Packet;ReaditLater
+Keywords[pl]=Google;Facebook;Twitter;Yahoo;WWW;Web;Online;Komunikator;Chat;Czat;Kalendarz;Poczta;e-mail;email;Kontakt;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[pt]=Google;Facebook;Twitter;Yahoo;Web;Online;Diálogo;Calendário;Correio;Contacto;ownCloud;Kerberos;IMAP;SMTP;ReadItLater;
+Keywords[pt_BR]=Google;Facebook;Twitter;Yahoo;Web;Conectado;Online;Bate-papo;Chat;Calendário;Agenda;E-mail;Correio;Contato;Contatos;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[ru]=Google;Facebook;Twitter;Yahoo;Web;Онлайн;Чат;Календарь;Почта;Контакт;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[sk]=Google;Facebook;Twitter;Yahoo;web;on-line;rozhovor;chat;kalendár;e-mail;mail;email;pošta;kontakt;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[sl]=Google;Facebook;Twitter;Yahoo;Splet;Klepet;Koledar;Elektronska pošta;Stiki;Računi;ownCloud;oblak;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[sr]=гугл;фејсбук;твитер;јаху;веб;мрежа;ћаскање;календар;пошта;контакт;лични облак;керберос;имап;смтп;покет;прочитајкасније;ридитлејтер;
+Keywords[sr@latin]=gugl;fejsbuk;tviter;jahu;veb;mreža;ćaskanje;kalendar;pošta;kontakt;lični oblak;kerberos;imap;smtp;poket;pročitajkasnije;riditlejter;
+Keywords[sv]=Google;Facebook;Twitter;Yahoo;Webb;Nätet;Chatt;Kalender;E-post;Kontakt;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[ta]=Google;Facebook;Twitter;Yahoo;Web;Online;Chat;Calendar;Mail;Contact;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[te]=Google;Facebook;Twitter;Yahoo;Web;Online;Chat;Calendar;Mail;Contact;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[tg]=Google;Facebook;Twitter;Yahoo;Web;Онлайн;Чат;Тақвим;Почта;Тамос;ownCloud;Kerberos;IMAP;SMTP;Баста;Баъдтар;
+Keywords[tr]=Google;Facebook;Twitter;Yahoo;Web;Online;Chat;Calendar;Mail;Contact;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;Çevrimiçi;Sohbet;Takvim;Mektup;Posta;Bağlantı;Kişi;
+Keywords[uk]=Google;Facebook;Twitter;Yahoo;Інтернет;Мережа;Балачка;Календар;Пошта;Контакт;ownCloud;IMAP;SMTP;Pocket;ReadItLater;
+Keywords[zh_CN]=Google;Facebook;Twitter;Yahoo;Web;Online;Chat;Calendar;Mail;Contact;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;谷歌;脸谱;脸书;推特;雅虎;微博;网络;在线;聊天;日历;邮件;联系人;云存储;稍后阅读;
+Keywords[zh_HK]=Google;Facebook;Twitter;Yahoo;Web;Online;Chat;Calendar;Mail;Contact;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;谷歌;臉書;推特;雅虎奇摩;網頁;網上;聊天;行事曆;郵件;聯絡人;
+Keywords[zh_TW]=Google;Facebook;Twitter;Yahoo;Web;Online;Chat;Calendar;Mail;Contact;ownCloud;Kerberos;IMAP;SMTP;Pocket;ReadItLater;谷歌;臉書;推特;雅虎奇摩;網頁;線上;聊天;行事曆;郵件;連絡人;
diff --git a/srcpkgs/unity-control-center/files/unity-region-panel.desktop b/srcpkgs/unity-control-center/files/unity-region-panel.desktop
new file mode 100644
index 00000000000000..1f2f0c3177712f
--- /dev/null
+++ b/srcpkgs/unity-control-center/files/unity-region-panel.desktop
@@ -0,0 +1,206 @@
+[Desktop Entry]
+Name=Region & Language
+Name[af]=Streek en taal
+Name[an]=Rechión y idioma
+Name[ar]=المنطقة واللغة
+Name[as]=অঞ্চল & ভাষা
+Name[be]=Мясцовасць і мова
+Name[bg]=Регион и език
+Name[bn_IN]=অঞ্চল & ভাষা
+Name[ca]=Regió i idioma
+Name[ca@valencia]=Regió i idioma
+Name[crh]=Bölge & Til
+Name[cs]=Region a jazyk
+Name[da]=Region & sprog
+Name[de]=Region und Sprache
+Name[el]=Περιοχή & γλώσσα
+Name[en_GB]=Region & Language
+Name[eo]=Regiono kaj lingvo
+Name[es]=Región e idioma
+Name[et]=Piirkond ja keel
+Name[eu]=Eskualdea eta hizkuntza
+Name[fa]=ناحیه و زبان
+Name[fi]=Alue ja kielet
+Name[fr]=Pays & langue
+Name[ga]=Réigiún & Teanga
+Name[gl]=Rexión e idioma
+Name[gu]=પ્રદેશ અને ભાષા
+Name[he]=אזור ושפה
+Name[hi]=क्षेत्र और भाषा
+Name[hu]=Terület és nyelv
+Name[id]=Wilayah & Bahasa
+Name[it]=Regione e lingua
+Name[ja]=地域と言語
+Name[kk]=Аймақ пен тіл
+Name[km]=តំបន់ និងភាសា
+Name[kn]=ಪ್ರದೇಶ ಹಾಗು ಭಾಷೆ
+Name[ko]=지역 및 언어
+Name[ky]=Регион жана тил
+Name[lt]=Regionas ir kalba
+Name[lv]=Vieta un valoda
+Name[ml]=സ്ഥലവും ഭാഷയും
+Name[mr]=क्षेत्र व भाषा
+Name[nb]=Region og språk
+Name[ne]=क्षेत्र र भाषा
+Name[nl]=Regio en taal
+Name[or]=ଅଞ୍ଚଳ ଏବଂ ଭାଷା
+Name[pa]=ਖੇਤਰ ਅਤੇ ਭਾਸ਼ਾ
+Name[pl]=Region i język
+Name[pt]=Região & Idioma
+Name[pt_BR]=Região & idioma
+Name[ro]=Regiune și limbă
+Name[ru]=Язык и регион
+Name[sk]=Región a jazyk
+Name[sl]=Področje in jezik
+Name[sr]=Регион и језик
+Name[sr@latin]=Region i jezik
+Name[sv]=Region & språk
+Name[ta]= வட்டாரம் மற்றும் மொழி
+Name[te]=ప్రాంతము & భాష
+Name[tg]=Забон ва минтақа
+Name[th]=ภูมิภาค & ภาษา
+Name[tr]=Bölge & Dil
+Name[ug]=رايون ۋە تىل
+Name[uk]=Регіон та мова
+Name[vi]=Lãnh thổ và ngôn ngữ
+Name[zh_CN]=区域和语言
+Name[zh_HK]=地區和語言
+Name[zh_TW]=地區和語言
+Comment=Select your display language, formats, keyboard layouts and input sources
+Comment[af]=Kies die vertoontaal, formate, sleutelborduitlegte en toevoerbronne
+Comment[an]=Selecciona o tuyo idioma, formatos, distribucions de teclau y fuents de dentrada
+Comment[ar]=اختر لغة العرض و التنسيق و تخطيط لوحة المفاتيح و مصادر الإدخال
+Comment[as]=আপোনাৰ প্ৰদৰ্শন ভাষা, বিন্যাসসমূহ, কিবৰ্ড বিন্যাসসমূহ আৰু ইনপুট উৎসসমূহ বাছক
+Comment[be]=Выбар мовы інтэрфейсу, фарматаў даных, клавіятурных раскладак і крыніц уводу
+Comment[bg]=Изберете вашия език, формати, клавиатурна подредба и входни устройства
+Comment[bn_IN]=অাপনার প্রদর্শন ভাষা, ফর্ম্যাট, কীবোর্ড সজ্জা এবং ইনপুট সোর্স নির্বাচন করুন
+Comment[ca]=Seleccioneu l'idioma a mostrar, els formats, les disposicions de teclat i les fonts d'entrada
+Comment[ca@valencia]=Seleccioneu l'idioma a mostrar, els formats, les disposicions de teclat i les fonts d'entrada
+Comment[cs]=Vyberte jazyk, formáty, rozložení klávesnice a vstupní zdroje
+Comment[da]=Vælg sprog, formater, tastaturlayout samt inputkilder
+Comment[de]=Wählen Sie Ihre Sprache, Formate, Tastaturbelegungen und die Eingabequellen
+Comment[el]=Επιλέξτε γλώσσα εμφάνισης, μορφές, διατάξεις πληκτρολογίου και πηγές εισόδου
+Comment[en_GB]=Select your display language, formats, keyboard layouts and input sources
+Comment[eo]=Elektu vian montran lingvon, formatojn, klavarfasonojn kaj enigajn fontojn
+Comment[es]=Seleccione su idioma, formatos, distribuciones de teclado y fuentes de entrada
+Comment[et]=Vali kuva keel, vormingud, klaviatuuripaigutused ja sisendid
+Comment[eu]=Hautatu pantailaren hizkuntza, formatua, teklatuaren diseinua eta sarrerako iturburuak
+Comment[fa]=زبان نمایش، قالبها، چیدمان صفحهکلید و منابع ورودی خود را انتخاب کنید
+Comment[fi]=Valitse näytettävä kieli, formaatit, näppäimistöasettelu ja syötelähteet
+Comment[fr]=Sélectionnez la langue, les formats, l'agencement clavier et les sources d'entrées
+Comment[gl]=Seleccione o idioma da pantalla, formatos, disposición de teclado e orixes de entrada
+Comment[gu]=તમારી દર્શાવ ભાષા, બંધારણો, કિબોર્ડ લેઆઉટ અને ઇનપુટ સ્ત્રોતોને પસંદ કરો
+Comment[he]=ניתן לבחור את שפת התצוגה, התבניות, פריסות המקלדת ומקורות הקלט
+Comment[hi]=अपनी प्रदर्शन भाषा, स्वरूपों, कीबोर्ड लेआउट और इनपुट सूत्रों का चयन करें
+Comment[hu]=Válassza ki a felület nyelvét, az adatformátumokat, billentyűkiosztásokat és beviteli forrásokat
+Comment[id]=Pilih bahasa tampilan, format, tata letak papan tik, dan sumber-sumber masukan Anda
+Comment[it]=Seleziona la lingua utilizzata, i formati, le disposizioni di tastiera e le sorgenti di input
+Comment[ja]=表示言語、フォーマット、キーボードレイアウト、入力ソースを設定します
+Comment[kk]=Экран тілін, пішімдерін, пернетақта жаймаларын және қайнар көздерін таңдаңыз
+Comment[kn]=ನಿಮ್ಮ ಪ್ರದರ್ಶನದ ಭಾಷೆ, ವಿನ್ಯಾಸಗಳು, ಕೀಲಿಮಣೆ ವಿನ್ಯಾಸಗಳು ಮತ್ತು ಇನ್ಪುಟ್ ಮೂಲಗಳನ್ನು ಆರಿಸಿ
+Comment[ko]=표시할 언어, 여러가지 형식, 키보드 배치, 입력 소스를 선택합니다.
+Comment[lt]=Pasirinkite rodymo kalbą, formatus, klaviatūros išdėstymus ir įvesties šaltinius
+Comment[lv]=Izvēlieties redzamo valodu, formātus, tastatūras izkārtojumus un ievades avotus
+Comment[ml]=നിങ്ങളുടെ ഭാഷ, ഘടന, കീബോർഡ് മാതൃക, ഇൻപുട്ട് സോർസ് എന്നിവ തിരഞ്ഞെടുക്കുക
+Comment[mr]=डिस्पले भाषा, रूपण, कळफलक मांडणी आणि इंपुट स्रोत नीवडा
+Comment[nb]=Velg språk for visning, formater, tastaturutforminger og inndatakilder
+Comment[nl]=Schermtaal, formaten, toetsenbordindelingen en invoerbronnen selecteren
+Comment[or]=ଆପଣଙ୍କର ପ୍ରଦର୍ଶନୀ ଭାଷା, ଶୈଳୀ, କିବୋର୍ଡ ବିନ୍ୟାସ ଏବଂ ନିବେଶ ଉତ୍ସଗୁଡ଼ିକୁ ବାଛନ୍ତୁ
+Comment[pa]=ਆਪਣੇ ਵੇਖਾਉਣ ਵਾਲੀ ਭਾਸ਼ਾ, ਫਾਰਮੈਟ, ਕੀਬੋਰਡ ਲੇਆਉਟ ਅਤੇ ਇੰਪੁੱਟ ਸਰੋਤ ਚੁਣੋ
+Comment[pl]=Wybór języka wyświetlania, formatów, układów klawiatury i źródeł wprowadzania
+Comment[pt]=Selecione o seu idioma de apresentação, formatos, disposições de teclado e origens de entrada
+Comment[pt_BR]=Selecione o seus idioma de exibição, formatos, fontes de entradas e disposições de teclado
+Comment[ru]=Выбор языка интерфейса, форматов, раскладки клавиатуры и источников ввода
+Comment[sk]=Umožňuje výber jazyka, formátov, rozloženia klávesnice a zdrojov vstupu
+Comment[sl]=Izberite jezik prikaza, oblike, razporeditve tipk in vnosne vire
+Comment[sr]=Изаберите ваш приказани језик, записе, распореде тастатуре и изворе улаза
+Comment[sr@latin]=Izaberite vaš prikazani jezik, zapise, rasporede tastature i izvore ulaza
+Comment[sv]=Välj dina visningsspråk, format, tangentbordslayouter och inmatningskällor
+Comment[ta]=உங்கள் காட்சி மொழி, வடிவமைப்புகள், விசைப்பலகை தளவமைப்புகள் மற்றும் உள்ளீட்டு மூலங்களைத் தேர்ந்தெடுக்கவும்
+Comment[te]=మీ ప్రదర్శన భాషను, ఫార్మాట్లను, కీబోర్డు లేఅవుట్లను మరియు యిన్పుట్ మూలాలను యెంపికచేయండి
+Comment[tg]=Интихоби забони интерфейс, форматҳо, тарҳбандии клавиатураҳо ва манбаҳои вуруд
+Comment[th]=เลือกภาษาที่แสดง, รูปแบบ, ผังแป้นพิมพ์ และช่องทางป้อนข้อความของคุณ
+Comment[tr]=Görüntüleme dilinizi, biçimlerinizi, klavye düzenlerinizi ve girdi kaynaklarınızı ayarlayın
+Comment[uk]=Вибрати вашу мову, формати, розклади й джерела введення
+Comment[vi]=Chọn ngôn ngữ hiển thị, định dạng, bố cục của bàn phím và nguồn nhập
+Comment[zh_CN]=选择您的显示语言、格式、键盘布局和输入源
+Comment[zh_HK]=選擇你的顯示語言、格式、鍵盤配置和輸入來源
+Comment[zh_TW]=選擇您的顯示語言、格式、鍵盤配置和輸入來源
+Exec=env XDG_CURRENT_DESKTOP=GNOME gnome-control-center region
+Icon=preferences-desktop-locale
+Terminal=false
+Type=Application
+#NoDisplay=true
+StartupNotify=true
+Categories=GNOME;GTK;Settings;DesktopSettings;X-Unity-Settings-Panel;X-GNOME-PersonalSettings;
+X-Unity-Settings-Panel=region
+OnlyShowIn=Unity;
+X-GNOME-Bugzilla-Bugzilla=GNOME
+X-GNOME-Bugzilla-Product=gnome-control-center
+X-GNOME-Bugzilla-Component=region
+X-GNOME-Bugzilla-Version=3.14.0
+# Translators: those are keywords for the region control-center panel
+Keywords=Language;Layout;Keyboard;Input;
+Keywords[af]=Language;Layout;Keyboard;Input;taal;uitleg;sleutelbord;toetsbord;toevoer;
+Keywords[an]=Idioma;Distribución;Teclau;Dentrada;
+Keywords[ar]=اللغة;التخطيط;مفاتيح;
+Keywords[as]=Language;Layout;Keyboard;Input;
+Keywords[be]=Мова;Раскладка;Клавіятура;Увод;
+Keywords[bg]=Език;Подредба;Клавиатура;Вход;Language;Layout;Keyboard;Input;
+Keywords[bn_IN]=ভাষা;সজ্জা;কীবোর্ড;ইনপুট;
+Keywords[ca]=Idioma;Disposició;Teclat;Entrada;
+Keywords[ca@valencia]=Idioma;Disposició;Teclat;Entrada;
+Keywords[crh]=Til;Tizilim;Klavye;Kirdi;
+Keywords[cs]=jazyk;rozložení;klávesnice;vstup;
+Keywords[da]=Sprog;Layout;Tastatur;Input;Inddata;
+Keywords[de]=Sprache;Belegung;Tastatur;Eingabe;
+Keywords[el]=Γλώσσα;Διάταξη;Πληκτρολόγιο;Είσοδος;Language;Layout;Keyboard;Input;
+Keywords[en_GB]=Language;Layout;Keyboard;Input;
+Keywords[eo]=lingvo;klavarfasono;klavaro;eniga;fulmoklavojn;
+Keywords[es]=Idioma;Distribución;Teclado;Entrada;
+Keywords[et]=Keel;Paigutus;Klaviatuur;Sisend;Sisestamine;
+Keywords[eu]=Hizkuntza;Diseinua;Teklatua;Sarrera;
+Keywords[fa]=زبان;چیدمان;صفحهکلید؛ورودی;Language;Layout;Keyboard;Input;
+Keywords[fi]=Kieli;Asettelu;Näppäimistö;Syöte;
+Keywords[fr]=Langue;Disposition;Clavier;Entrée;
+Keywords[ga]=Teanga;Leagan Amach;Méarchlár;Ionchur;
+Keywords[gl]=Idioma:Distribución;Teclado;Entrada;
+Keywords[gu]=ભાષા;લેઆઉટ;કિબોર્ડ;ઇનપુટ;
+Keywords[he]=שפה;פריסה;מקלדת;פלט;
+Keywords[hi]=भाषा;लेआउट;कीबोर्ड; इनपुट;
+Keywords[hu]=Nyelv;kiosztás;billentyűzet;bevitel;
+Keywords[id]=Bahasa;Tata Letak;Papan Tik;Masukan;
+Keywords[it]=Lingua;Disposizione;Layout;Tastiera;Input;
+Keywords[ja]=Language;Layout;Keyboard;Input;言語;レイアウト;キーボード;入力;インプット;
+Keywords[kk]=Тіл;Жайма;Пернетақта;Енгізу;
+Keywords[kn]=ಭಾಷೆ;ವಿನ್ಯಾಸ;ಕೀಲಿಮಣೆ;ಇನ್ಪುಟ್;
+Keywords[ko]=Language;언어;Layout;배치;Keyboard;키보드;Input;입력;
+Keywords[lt]=Kalba;Išdėstymas;Klaviatūra;Įvestis;
+Keywords[lv]=Valoda;Izkārtojums;Tastatūra;Ievade;Language;Layout;Keyboard;Input;
+Keywords[ml]=Language;Layout;Keyboard;Input;
+Keywords[mr]=भाषा;मांडणी;कळफलक;इंपुट;
+Keywords[nb]=Språk;Utforming;Tastatur;Inndata;
+Keywords[nl]=Language;Layout;Keyboard;Taal;Indeling;Toetsenbord;
+Keywords[or]=ଭାଷା;ବିନ୍ୟାସ;କିବୋର୍ଡ;ନିବେଶ;
+Keywords[pa]=ਭਾਸ਼ਾ;ਲੇਆਉਟ;ਕੀਬੋਰਡ;ਇੰਪੁੱਟ;Language;Layout;Keyboard;Input;
+Keywords[pl]=Język;Układ;Klawiatura;Wprowadzanie;Wejście;
+Keywords[pt]=Idioma;Disposição;Teclado;Entrada;
+Keywords[pt_BR]=Idioma;Disposição;Teclado;Entrada;
+Keywords[ro]=Language;Layout;Keyboard;Input;Limbă;Aranjamente;Limbă;Tastatură;Intrare;
+Keywords[ru]=Язык;Раскладка;Клавиатура;Ввод;
+Keywords[sk]=Jazyk;Rozloženie;Klávesnica;Vstup;
+Keywords[sl]=jezik,razporeditev;tipkovnica;vnos;
+Keywords[sr]=језик;распоред;тастатура;унос;
+Keywords[sr@latin]=jezik;raspored;tastatura;unos;
+Keywords[sv]=Språk;Layout;Tangentbord;Inmatning;
+Keywords[ta]=மொழி;இடஅமைவு;விசைப்பலகை;உள்ளீடு;
+Keywords[te]=భాష;నమూనా;కీబోర్డు;యిన్పుట్;
+Keywords[tg]=Забон;Тарҳбандӣ;Клавиатура;Вуруд;
+Keywords[th]=ภาษา;ผังแป้นพิมพ์;แป้นพิมพ์;ป้อนข้อความ;
+Keywords[tr]=Dil;Yerleşim;Klavye;Giriş;Language;Layout;Keyboard;Input;
+Keywords[ug]=Language;Layout;Keyboard;Input;تىل;ھەرپتاختا;كىرگۈزۈش;
+Keywords[uk]=Мова;Розкладка;Клавіатура;Введення;
+Keywords[vi]=Language;Ngôn;ngữ;Ngon;ngu;Layout;Bố;trí;Bo;tri;Keyboard;Bàn;phím;Ban;phim;Kieu;go;Input;nhập;nhâp;
+Keywords[zh_CN]=Language;Layout;Keyboard;Input;语言;布局;键盘;输入;
+Keywords[zh_HK]=Language;Layout;Keyboard;Input;語言;配置;鍵盤;輸入;
+Keywords[zh_TW]=Language;Layout;Keyboard;Input;語言;配置;鍵盤;輸入;
diff --git a/srcpkgs/unity-control-center/patches/0001-Revert-54_enable_alt_tap_in_shortcut.patch.patch b/srcpkgs/unity-control-center/patches/0001-Revert-54_enable_alt_tap_in_shortcut.patch.patch
new file mode 100644
index 00000000000000..13ba041943615a
--- /dev/null
+++ b/srcpkgs/unity-control-center/patches/0001-Revert-54_enable_alt_tap_in_shortcut.patch.patch
@@ -0,0 +1,71 @@
+From 97a39acd90d60edb9b0b4c34220dabc2b2ee0a40 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Mon, 29 Sep 2014 01:08:58 -0400
+Subject: [PATCH 1/8] Revert 54_enable_alt_tap_in_shortcut.patch
+
+---
+ panels/keyboard/cc-keyboard-item.c | 20 +-------------------
+ panels/keyboard/keyboard-shortcuts.c | 2 +-
+ 2 files changed, 2 insertions(+), 20 deletions(-)
+
+diff --git a/panels/keyboard/cc-keyboard-item.c b/panels/keyboard/cc-keyboard-item.c
+index f767d4e..56eb4af 100644
+--- a/panels/keyboard/cc-keyboard-item.c
++++ b/panels/keyboard/cc-keyboard-item.c
+@@ -143,25 +143,14 @@ _set_binding (CcKeyboardItem *item,
+ const char *value,
+ gboolean set_backend)
+ {
+- /* don't reassign <Alt_L> or <Alt> key in the callback to the binding itself (as it's invalid for the cell renderer) */
+- if ((g_strcmp0 (value, "<Alt_L>") == 0) || (g_strcmp0 (value, "<Alt>") == 0))
+- return;
+-
+ g_free (item->binding);
+ item->binding = g_strdup (value);
+ binding_from_string (item->binding, &item->keyval, &item->keycode, &item->mask);
+
+- const char *key;
+- char *cheated_modifier = NULL;
+- if (g_strcmp0 (item->binding, "Alt_L") == 0)
+- cheated_modifier = g_strdup_printf ("<%s>", item->binding);
+-
+ if (set_backend == FALSE)
+ return;
+
+- settings_set_binding (item->settings, item->key, cheated_modifier ? cheated_modifier: item->binding);
+-
+- g_free (cheated_modifier);
++ settings_set_binding (item->settings, item->key, item->binding);
+ }
+
+ const char *
+@@ -452,13 +441,6 @@ cc_keyboard_item_load_from_gsettings (CcKeyboardItem *item,
+ item->settings = g_settings_new (item->schema);
+ item->binding = settings_get_binding (item->settings, item->key);
+ item->editable = g_settings_is_writable (item->settings, item->key);
+-
+- if ((g_strcmp0 (item->binding, "<Alt>") == 0) || (g_strcmp0 (item->binding, "<Alt_L>") == 0))
+- {
+- g_free (item->binding);
+- item->binding = g_strdup ("Alt_L");
+- }
+-
+ binding_from_string (item->binding, &item->keyval, &item->keycode, &item->mask);
+
+ signal_name = g_strdup_printf ("changed::%s", item->key);
+diff --git a/panels/keyboard/keyboard-shortcuts.c b/panels/keyboard/keyboard-shortcuts.c
+index c2dc943..639c6ba 100644
+--- a/panels/keyboard/keyboard-shortcuts.c
++++ b/panels/keyboard/keyboard-shortcuts.c
+@@ -1718,7 +1718,7 @@ setup_dialog (CcPanel *panel, GtkBuilder *builder)
+ gtk_tree_view_append_column (treeview, column);
+
+ renderer = (GtkCellRenderer *) g_object_new (GTK_TYPE_CELL_RENDERER_ACCEL,
+- "accel-mode", GTK_CELL_RENDERER_ACCEL_MODE_MODIFIER_TAP,
++ "accel-mode", GTK_CELL_RENDERER_ACCEL_MODE_OTHER,
+ NULL);
+
+ g_signal_connect (treeview, "button_press_event",
+--
+2.8.2
+
diff --git a/srcpkgs/unity-control-center/patches/0002-Skip-region-panel.patch b/srcpkgs/unity-control-center/patches/0002-Skip-region-panel.patch
new file mode 100644
index 00000000000000..f83875b93b11f1
--- /dev/null
+++ b/srcpkgs/unity-control-center/patches/0002-Skip-region-panel.patch
@@ -0,0 +1,24 @@
+From 8613c2f04b2343895d993558dab6c678df0f8750 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Sat, 11 Oct 2014 18:50:22 -0400
+Subject: [PATCH 2/8] Skip region panel
+
+---
+ panels/Makefile.am | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/panels/Makefile.am b/panels/Makefile.am
+index 5ed02c6..5a67273 100644
+--- a/panels/Makefile.am
++++ b/panels/Makefile.am
+@@ -7,7 +7,6 @@ SUBDIRS= \
+ color \
+ display \
+ mouse \
+- region \
+ info \
+ sound \
+ keyboard \
+--
+2.8.2
+
diff --git a/srcpkgs/unity-control-center/patches/0003-Remove-Ubuntu-specific-language-code.patch b/srcpkgs/unity-control-center/patches/0003-Remove-Ubuntu-specific-language-code.patch
new file mode 100644
index 00000000000000..b806e9d7d7524b
--- /dev/null
+++ b/srcpkgs/unity-control-center/patches/0003-Remove-Ubuntu-specific-language-code.patch
@@ -0,0 +1,311 @@
+From b1de9f65075350dfd482dc49548a6033cd994687 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Sat, 5 Apr 2014 20:25:21 -0400
+Subject: [PATCH 3/8] Remove Ubuntu-specific language code
+
+---
+ panels/common/cc-common-language.c | 89 ++-----------------------------------
+ panels/common/cc-common-language.h | 1 -
+ panels/common/cc-language-chooser.c | 8 ++--
+ panels/common/gdm-languages.c | 30 ++-----------
+ 4 files changed, 11 insertions(+), 117 deletions(-)
+
+diff --git a/panels/common/cc-common-language.c b/panels/common/cc-common-language.c
+index 885afe1..e4cdcf5 100644
+--- a/panels/common/cc-common-language.c
++++ b/panels/common/cc-common-language.c
+@@ -326,66 +326,6 @@ cc_common_language_get_current_language (void)
+ return language;
+ }
+
+-gchar *
+-cc_common_language_get_property (const gchar *prop_name)
+-{
+- GDBusConnection *bus;
+- gchar *user_path;
+- GError *error = NULL;
+- GVariant *properties;
+- GVariantIter *iter;
+- gchar *key;
+- GVariant *value;
+- gchar *ret = NULL;
+-
+- if (g_strcmp0 (prop_name, "Language") != 0 && g_strcmp0 (prop_name, "FormatsLocale") != 0) {
+- g_warning ("Invalid argument: '%s'", prop_name);
+- return ret;
+- }
+-
+- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
+- user_path = g_strdup_printf ("/org/freedesktop/Accounts/User%i", getuid ());
+-
+- properties = g_dbus_connection_call_sync (bus,
+- "org.freedesktop.Accounts",
+- user_path,
+- "org.freedesktop.DBus.Properties",
+- "GetAll",
+- g_variant_new ("(s)", "org.freedesktop.Accounts.User"),
+- G_VARIANT_TYPE ("(a{sv})"),
+- G_DBUS_CALL_FLAGS_NONE,
+- -1,
+- NULL,
+- &error);
+- if (!properties) {
+- g_warning ("Error calling GetAll() when retrieving properties for %s: %s", user_path, error->message);
+- g_error_free (error);
+- /* g_hash_table_lookup() is not NULL-safe, so don't return NULL */
+- if (g_strcmp0 (prop_name, "Language") == 0)
+- ret = g_strdup ("en");
+- else
+- ret = g_strdup ("en_US.UTF-8");
+- goto out;
+- }
+-
+- g_variant_get (properties, "(a{sv})", &iter);
+- while (g_variant_iter_loop (iter, "{&sv}", &key, &value)) {
+- if (g_strcmp0 (key, prop_name) == 0) {
+- g_variant_get (value, "s", &ret);
+- break;
+- }
+- }
+-
+- g_variant_unref (properties);
+- g_variant_iter_free (iter);
+-
+-out:
+- g_object_unref (bus);
+- g_free (user_path);
+-
+- return ret;
+-}
+-
+ static void
+ languages_foreach_cb (gpointer key,
+ gpointer value,
+@@ -467,7 +407,7 @@ cc_common_language_select_current_language (GtkTreeView *treeview)
+ char *lang;
+ gboolean found;
+
+- lang = cc_common_language_get_property ("Language");
++ lang = cc_common_language_get_current_language ();
+ g_debug ("Trying to select lang '%s' in treeview", lang);
+ model = gtk_tree_view_get_model (treeview);
+ found = FALSE;
+@@ -522,7 +462,6 @@ user_language_has_translations (const char *locale)
+ return ret;
+ }
+
+-/*
+ static void
+ add_other_users_language (GHashTable *ht)
+ {
+@@ -602,7 +541,6 @@ add_other_users_language (GHashTable *ht)
+
+ g_object_unref (proxy);
+ }
+-*/
+
+ GHashTable *
+ cc_common_language_get_initial_languages (void)
+@@ -614,7 +552,6 @@ cc_common_language_get_initial_languages (void)
+ ht = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+
+ /* Add some common languages first */
+-/*
+ g_hash_table_insert (ht, g_strdup ("en_US.utf8"), g_strdup (_("English")));
+ if (gdm_language_has_translations ("en_GB"))
+ g_hash_table_insert (ht, g_strdup ("en_GB.utf8"), g_strdup (_("British English")));
+@@ -635,29 +572,11 @@ cc_common_language_get_initial_languages (void)
+ if (gdm_language_has_translations ("ar") ||
+ gdm_language_has_translations ("ar_EG"))
+ g_hash_table_insert (ht, g_strdup ("ar_EG.utf8"), g_strdup (_("Arabic")));
+-*/
+ /* Add the languages used by other users on the system */
+-// add_other_users_language (ht);
+-
+- /* Add installed languages */
+- gchar *avail_languages;
+- GError *error = NULL;
+- if (g_spawn_command_line_sync ("/usr/share/language-tools/language-options",
+- &avail_languages, NULL, NULL, &error)) {
+- name = strtok (avail_languages, "\n");
+- while (name != NULL) {
+- language = gdm_get_language_from_name (name, NULL);
+- g_hash_table_insert (ht, g_strdup (name), language);
+- name = strtok (NULL, "\n");
+- }
+- g_free (avail_languages);
+- } else {
+- g_warning ("Couldn't get available languages: %s", error->message);
+- g_error_free (error);
+- }
++ add_other_users_language (ht);
+
+- /* Add current language */
+- name = cc_common_language_get_property ("Language");
++ /* Add current locale */
++ name = cc_common_language_get_current_language ();
+ if (g_hash_table_lookup (ht, name) == NULL) {
+ language = gdm_get_language_from_name (name, NULL);
+ g_hash_table_insert (ht, name, language);
+diff --git a/panels/common/cc-common-language.h b/panels/common/cc-common-language.h
+index 9894988..d88d107 100644
+--- a/panels/common/cc-common-language.h
++++ b/panels/common/cc-common-language.h
+@@ -45,7 +45,6 @@ guint cc_common_language_add_available_languages (GtkListStore *store,
+ GHashTable *user_langs);
+ gboolean cc_common_language_has_font (const gchar *locale);
+ gchar *cc_common_language_get_current_language (void);
+-gchar *cc_common_language_get_property (const gchar *prop_name);
+
+ GHashTable *cc_common_language_get_initial_languages (void);
+ GHashTable *cc_common_language_get_initial_regions (const gchar *lang);
+diff --git a/panels/common/cc-language-chooser.c b/panels/common/cc-language-chooser.c
+index 502dc59..bd0ea54 100644
+--- a/panels/common/cc-language-chooser.c
++++ b/panels/common/cc-language-chooser.c
+@@ -105,8 +105,8 @@ cc_add_user_languages (GtkTreeModel *model)
+
+ user_langs = cc_common_language_get_initial_languages ();
+
+- /* Add the current language first */
+- name = cc_common_language_get_property ("Language");
++ /* Add the current locale first */
++ name = cc_common_language_get_current_language ();
+ display = g_hash_table_lookup (user_langs, name);
+
+ gtk_list_store_append (store, &iter);
+@@ -118,8 +118,8 @@ cc_add_user_languages (GtkTreeModel *model)
+ g_hash_table_foreach (user_langs, (GHFunc) languages_foreach_cb, store);
+
+ /* And now the "Other..." selection */
+-// gtk_list_store_append (store, &iter);
+-// gtk_list_store_set (store, &iter, LOCALE_COL, NULL, DISPLAY_LOCALE_COL, _("Other..."), -1);
++ gtk_list_store_append (store, &iter);
++ gtk_list_store_set (store, &iter, LOCALE_COL, NULL, DISPLAY_LOCALE_COL, _("Other..."), -1);
+
+ g_hash_table_destroy (user_langs);
+ }
+diff --git a/panels/common/gdm-languages.c b/panels/common/gdm-languages.c
+index 76201c2..32adc44 100644
+--- a/panels/common/gdm-languages.c
++++ b/panels/common/gdm-languages.c
+@@ -224,7 +224,6 @@ construct_language_name (const char *language,
+ const char *codeset,
+ const char *modifier)
+ {
+- const char *adj_codeset;
+ char *name;
+
+ g_assert (language[0] != 0);
+@@ -232,17 +231,12 @@ construct_language_name (const char *language,
+ g_assert (codeset == NULL || codeset[0] != 0);
+ g_assert (modifier == NULL || modifier[0] != 0);
+
+- if (g_strcmp0 (codeset, "utf8") == 0) {
+- adj_codeset = "UTF-8";
+- } else
+- adj_codeset = codeset;
+-
+ name = g_strdup_printf ("%s%s%s%s%s%s%s",
+ language,
+ territory != NULL? "_" : "",
+ territory != NULL? territory : "",
+ codeset != NULL? "." : "",
+- codeset != NULL? adj_codeset : "",
++ codeset != NULL? codeset : "",
+ modifier != NULL? "@" : "",
+ modifier != NULL? modifier : "");
+
+@@ -860,7 +854,6 @@ languages_parse_start_tag (GMarkupParseContext *ctx,
+ const char *ccode_longT;
+ const char *ccode;
+ const char *ccode_id;
+- const char *lang_common_name;
+ const char *lang_name;
+
+ if (! (g_str_equal (element_name, "iso_639_entry") || g_str_equal (element_name, "iso_639_3_entry"))
+@@ -872,7 +865,6 @@ languages_parse_start_tag (GMarkupParseContext *ctx,
+ ccode_longB = NULL;
+ ccode_longT = NULL;
+ ccode_id = NULL;
+- lang_common_name = NULL;
+ lang_name = NULL;
+
+ while (*attr_names && *attr_values) {
+@@ -909,11 +901,6 @@ languages_parse_start_tag (GMarkupParseContext *ctx,
+ }
+ ccode_id = *attr_values;
+ }
+- } else if (g_str_equal (*attr_names, "common_name")) {
+- /* skip if empty */
+- if (**attr_values) {
+- lang_common_name = *attr_values;
+- }
+ } else if (g_str_equal (*attr_names, "name")) {
+ lang_name = *attr_values;
+ }
+@@ -922,10 +909,6 @@ languages_parse_start_tag (GMarkupParseContext *ctx,
+ ++attr_values;
+ }
+
+- if (lang_common_name != NULL) {
+- lang_name = lang_common_name;
+- }
+-
+ if (lang_name == NULL) {
+ return;
+ }
+@@ -1149,7 +1132,6 @@ gdm_get_language_from_name (const char *name,
+ char *langinfo_codeset;
+ char *translated_language;
+ char *translated_territory;
+- char *modifier;
+ gboolean is_utf8 = TRUE;
+
+ g_return_val_if_fail (name != NULL, NULL);
+@@ -1172,13 +1154,12 @@ gdm_get_language_from_name (const char *name,
+ language_code = NULL;
+ territory_code = NULL;
+ codeset_code = NULL;
+- modifier = NULL;
+
+ gdm_parse_language_name (name,
+ &language_code,
+ &territory_code,
+ &codeset_code,
+- &modifier);
++ NULL);
+
+ if (language_code == NULL) {
+ goto out;
+@@ -1204,7 +1185,7 @@ gdm_get_language_from_name (const char *name,
+ translated_territory);
+ }
+
+-// language_name_get_codeset_details (name, &langinfo_codeset, &is_utf8);
++ language_name_get_codeset_details (name, &langinfo_codeset, &is_utf8);
+
+ if (codeset_code == NULL && langinfo_codeset != NULL) {
+ codeset_code = g_strdup (langinfo_codeset);
+@@ -1216,10 +1197,6 @@ gdm_get_language_from_name (const char *name,
+ codeset_code);
+ }
+
+- if (modifier != NULL) {
+- g_string_append_printf (full_language, " - %s", modifier);
+- }
+-
+ out:
+ g_free (language_code);
+ g_free (territory_code);
+@@ -1227,7 +1204,6 @@ out:
+ g_free (langinfo_codeset);
+ g_free (translated_language);
+ g_free (translated_territory);
+- g_free (modifier);
+
+ if (full_language->len == 0) {
+ g_string_free (full_language, TRUE);
+--
+2.8.2
+
diff --git a/srcpkgs/unity-control-center/patches/0005-Allow-gnome-control-center-to-run-at-the-same-time.patch b/srcpkgs/unity-control-center/patches/0005-Allow-gnome-control-center-to-run-at-the-same-time.patch
new file mode 100644
index 00000000000000..b416dfa653fb30
--- /dev/null
+++ b/srcpkgs/unity-control-center/patches/0005-Allow-gnome-control-center-to-run-at-the-same-time.patch
@@ -0,0 +1,25 @@
+From be3be4c5320920a23d7e09fa08ef2a3cf066dda7 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Sun, 8 Jun 2014 16:54:41 -0400
+Subject: [PATCH 5/8] Allow gnome-control-center to run at the same time
+
+---
+ shell/control-center.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/shell/control-center.c b/shell/control-center.c
+index de27113..a91eba1 100644
+--- a/shell/control-center.c
++++ b/shell/control-center.c
+@@ -308,7 +308,7 @@ main (int argc, char **argv)
+ shell = gnome_control_center_new ();
+
+ /* enforce single instance of this application */
+- application = gtk_application_new ("org.gnome.ControlCenter", G_APPLICATION_HANDLES_COMMAND_LINE);
++ application = gtk_application_new ("org.gnome.ControlCenterUnity", G_APPLICATION_HANDLES_COMMAND_LINE);
+ g_signal_connect (application, "startup",
+ G_CALLBACK (application_startup_cb), shell);
+ g_signal_connect (application, "command-line",
+--
+2.8.2
+
diff --git a/srcpkgs/unity-control-center/patches/0006-Remove-overlay-scrollbar-from-GTK_MODULES.patch b/srcpkgs/unity-control-center/patches/0006-Remove-overlay-scrollbar-from-GTK_MODULES.patch
new file mode 100644
index 00000000000000..7efb997ddc8d35
--- /dev/null
+++ b/srcpkgs/unity-control-center/patches/0006-Remove-overlay-scrollbar-from-GTK_MODULES.patch
@@ -0,0 +1,49 @@
+From f76eb169510d94f028001423f759ed4cd142fe59 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Mon, 9 Jun 2014 15:32:07 -0400
+Subject: [PATCH 6/8] Remove overlay-scrollbar from GTK_MODULES
+
+---
+ shell/control-center.c | 23 +++++++++++++++++++++++
+ 1 file changed, 23 insertions(+)
+
+diff --git a/shell/control-center.c b/shell/control-center.c
+index a91eba1..f484351 100644
+--- a/shell/control-center.c
++++ b/shell/control-center.c
+@@ -281,9 +281,32 @@ application_startup_cb (GApplication *application,
+ */
+ }
+
++void
++remove_substring(char *src, const char *remove)
++{
++ while (src = strstr (src, remove)) {
++ memmove (src, src + strlen (remove), strlen (src + strlen(remove)) + 1);
++ }
++}
++
++void
++remove_overlay_scrollbars ()
++{
++ char *temp = getenv ("GTK_MODULES");
++ if (temp == NULL) {
++ return;
++ }
++
++ char *modules = strdup (temp);
++ remove_substring (modules, "overlay-scrollbar");
++ setenv ("GTK_MODULES", modules, 1);
++ free (modules);
++}
++
+ int
+ main (int argc, char **argv)
+ {
++ remove_overlay_scrollbars ();
+ GnomeControlCenter *shell;
+ GtkApplication *application;
+ int status;
+--
+2.8.2
+
diff --git a/srcpkgs/unity-control-center/patches/0007-Rename-libgnome-bluetooth-to-libunity-bluetooth.patch b/srcpkgs/unity-control-center/patches/0007-Rename-libgnome-bluetooth-to-libunity-bluetooth.patch
new file mode 100644
index 00000000000000..bc2034ad6c16fd
--- /dev/null
+++ b/srcpkgs/unity-control-center/patches/0007-Rename-libgnome-bluetooth-to-libunity-bluetooth.patch
@@ -0,0 +1,67 @@
+From 251777027c92afc71d4d0b5ca4ccd53762b1992c Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Mon, 25 Jan 2016 17:21:12 -0500
+Subject: [PATCH 7/8] Rename libgnome-bluetooth to libunity-bluetooth
+
+---
+ panels/bluetooth/Makefile.am | 2 +-
+ panels/bluetooth/gnome-bluetooth/lib/Makefile.am | 6 +++---
+ panels/bluetooth/gnome-bluetooth/wizard/Makefile.am | 2 +-
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/panels/bluetooth/Makefile.am b/panels/bluetooth/Makefile.am
+index 9feb00b..497823c 100644
+--- a/panels/bluetooth/Makefile.am
++++ b/panels/bluetooth/Makefile.am
+@@ -30,7 +30,7 @@ libbluetooth_la_SOURCES = \
+ libbluetooth_la_LIBADD = \
+ $(PANEL_LIBS) \
+ $(BLUETOOTH_PANEL_LIBS) \
+- $(builddir)/gnome-bluetooth/lib/libgnome-bluetooth.la
++ $(builddir)/gnome-bluetooth/lib/libunity-bluetooth.la
+
+ libbluetooth_la_LDFLAGS = $(PANEL_LDFLAGS)
+
+diff --git a/panels/bluetooth/gnome-bluetooth/lib/Makefile.am b/panels/bluetooth/gnome-bluetooth/lib/Makefile.am
+index 50e5369..fc39095 100644
+--- a/panels/bluetooth/gnome-bluetooth/lib/Makefile.am
++++ b/panels/bluetooth/gnome-bluetooth/lib/Makefile.am
+@@ -1,7 +1,7 @@
+ EXTRA_DIST =
+ CLEANFILES =
+
+-lib_LTLIBRARIES = libgnome-bluetooth.la
++lib_LTLIBRARIES = libunity-bluetooth.la
+
+ # will be scanned for introspection annotation, but won't be installed
+ libgnome_bluetooth_c_sources = \
+@@ -25,11 +25,11 @@ libgnome_bluetooth_private_headers = \
+ bluetooth-fdo-glue.h
+
+ # public headers don't need to be listed, are handled by _HEADERS
+-libgnome_bluetooth_la_SOURCES = \
++libunity_bluetooth_la_SOURCES = \
+ $(libgnome_bluetooth_private_headers) \
+ $(libgnome_bluetooth_c_sources)
+
+-libgnome_bluetooth_la_LIBADD = $(BLUETOOTH_PANEL_LIBS)
++libunity_bluetooth_la_LIBADD = $(BLUETOOTH_PANEL_LIBS)
+
+ libgnome_bluetooth_introspect_headers = \
+ bluetooth-client.h \
+diff --git a/panels/bluetooth/gnome-bluetooth/wizard/Makefile.am b/panels/bluetooth/gnome-bluetooth/wizard/Makefile.am
+index 39f12c4..53d2414 100644
+--- a/panels/bluetooth/gnome-bluetooth/wizard/Makefile.am
++++ b/panels/bluetooth/gnome-bluetooth/wizard/Makefile.am
+@@ -9,7 +9,7 @@ bin_PROGRAMS = bluetooth-wizard
+
+ bluetooth_wizard_SOURCES = main.c
+
+-bluetooth_wizard_LDADD = $(builddir)/../lib/libgnome-bluetooth.la libwizard.la $(BLUETOOTH_PANEL_LIBS) $(LIBM)
++bluetooth_wizard_LDADD = $(builddir)/../lib/libunity-bluetooth.la libwizard.la $(BLUETOOTH_PANEL_LIBS) $(LIBM)
+ bluetooth_wizard_LDFLAGS = -rdynamic
+
+ AM_CFLAGS = $(BLUETOOTH_PANEL_CFLAGS) $(WARN_CFLAGS) $(DISABLE_DEPRECATED) -DPKGDATADIR="\"$(pkgdatadir)\""
+--
+2.8.2
+
diff --git a/srcpkgs/unity-control-center/patches/0008-Move-faces-images-usr-share-pixmaps-faces-unity.patch b/srcpkgs/unity-control-center/patches/0008-Move-faces-images-usr-share-pixmaps-faces-unity.patch
new file mode 100644
index 00000000000000..ed5dda7e8562ec
--- /dev/null
+++ b/srcpkgs/unity-control-center/patches/0008-Move-faces-images-usr-share-pixmaps-faces-unity.patch
@@ -0,0 +1,37 @@
+From 5f52f3573d66730af87ccaababcc828019aebf8f Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Mon, 25 Jan 2016 17:24:39 -0500
+Subject: [PATCH 8/8] Move faces images /usr/share/pixmaps/faces{,-unity}
+
+---
+ panels/user-accounts/data/faces/Makefile.am | 2 +-
+ panels/user-accounts/um-photo-dialog.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/panels/user-accounts/data/faces/Makefile.am b/panels/user-accounts/data/faces/Makefile.am
+index a9c39cc..05d3b06 100644
+--- a/panels/user-accounts/data/faces/Makefile.am
++++ b/panels/user-accounts/data/faces/Makefile.am
+@@ -1,5 +1,5 @@
+
+-imagedir = $(datadir)/pixmaps/faces
++imagedir = $(datadir)/pixmaps/faces-unity
+
+ image_DATA = \
+ astronaut.jpg \
+diff --git a/panels/user-accounts/um-photo-dialog.c b/panels/user-accounts/um-photo-dialog.c
+index 81f990a..7bd729b 100644
+--- a/panels/user-accounts/um-photo-dialog.c
++++ b/panels/user-accounts/um-photo-dialog.c
+@@ -388,7 +388,7 @@ setup_photo_popup (UmPhotoDialog *um)
+ for (i = 0; dirs[i] != NULL; i++) {
+ char *path;
+
+- path = g_build_filename (dirs[i], "pixmaps", "faces", NULL);
++ path = g_build_filename (dirs[i], "pixmaps", "faces-unity", NULL);
+ dir = g_dir_open (path, 0, NULL);
+ if (dir == NULL) {
+ g_free (path);
+--
+2.8.2
+
diff --git a/srcpkgs/unity-control-center/patches/remove-gnome-common.patch b/srcpkgs/unity-control-center/patches/remove-gnome-common.patch
new file mode 100644
index 00000000000000..f1ce8b03da6f77
--- /dev/null
+++ b/srcpkgs/unity-control-center/patches/remove-gnome-common.patch
@@ -0,0 +1,9 @@
+diff -p1ru a/configure.ac b/configure.ac
+--- a/configure.ac 2023-02-21 02:17:39.000000000 +0800
++++ b/configure.ac 2024-07-22 11:45:02.995000000 +0800
+@@ -36,5 +36,2 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GE
+
+-GNOME_DEBUG_CHECK
+-GNOME_COMPILE_WARNINGS([maximum])
+-
+ AC_PATH_XTRA
diff --git a/srcpkgs/unity-control-center/patches/remove-ubuntu-specific.patch b/srcpkgs/unity-control-center/patches/remove-ubuntu-specific.patch
new file mode 100644
index 00000000000000..360875328b8da6
--- /dev/null
+++ b/srcpkgs/unity-control-center/patches/remove-ubuntu-specific.patch
@@ -0,0 +1,44 @@
+diff -p1ru a/panels/screen/cc-screen-panel.c b/panels/screen/cc-screen-panel.c
+--- a/panels/screen/cc-screen-panel.c 2023-02-21 02:17:29.000000000 +0800
++++ b/panels/screen/cc-screen-panel.c 2024-08-06 07:49:35.315105356 +0800
+@@ -541,9 +541,2 @@ cc_screen_panel_init (CcScreenPanel *sel
+
+- /* bind the screen lock suspend checkbutton */
+- widget = WID ("screen_lock_suspend_checkbutton");
+- g_settings_bind (self->priv->lock_settings,
+- "ubuntu-lock-on-suspend",
+- widget, "active",
+- G_SETTINGS_BIND_DEFAULT);
+-
+ widget = WID ("screen_vbox");
+diff -p1ru a/panels/screen/screen.ui b/panels/screen/screen.ui
+--- a/panels/screen/screen.ui 2023-02-21 02:17:29.000000000 +0800
++++ b/panels/screen/screen.ui 2024-08-06 07:51:13.397039849 +0800
+@@ -300,27 +300,2 @@
+ <child>
+- <object class="GtkHBox" id="screen_suspend_hbox">
+- <property name="visible">True</property>
+- <property name="can_focus">False</property>
+- <property name="spacing">6</property>
+- <child>
+- <object class="GtkCheckButton" id="screen_lock_suspend_checkbutton">
+- <property name="label" translatable="yes">Require my password when waking from suspend</property>
+- <property name="use_action_appearance">False</property>
+- <property name="visible">True</property>
+- <property name="can_focus">True</property>
+- </object>
+- <packing>
+- <property name="expand">False</property>
+- <property name="fill">False</property>
+- <property name="position">0</property>
+- </packing>
+- </child>
+- </object>
+- <packing>
+- <property name="expand">False</property>
+- <property name="fill">False</property>
+- <property name="position">2</property>
+- </packing>
+- </child>
+- <child>
+ <object class="GtkHBox" id="hbox2">
diff --git a/srcpkgs/unity-control-center/template b/srcpkgs/unity-control-center/template
new file mode 100644
index 00000000000000..aba197ea3993b6
--- /dev/null
+++ b/srcpkgs/unity-control-center/template
@@ -0,0 +1,66 @@
+# Template file for 'unity-control-center'
+pkgname=unity-control-center
+version=15.04.0+23.04.20230220
+revision=1
+build_style=gnu-configure
+configure_args="--prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libexecdir=/usr/lib/${pkgname} --disable-static --enable-fcitx \
+ --disable-onlineaccounts"
+hostmakedepends="automake docbook-xsl gettext-devel intltool libtool
+ ModemManager-devel pkg-config ttf-ubuntu-font-family vala wget"
+makedepends="accountsservice-devel cups-pk-helper fcitx-devel
+ gnome-desktop-devel gnome-menus-devel gtk+3-devel ibus-devel libcanberra-devel
+ libgeonames-devel libgtop-devel libnma-devel libnotify-devel
+ libpwquality-devel libtimezonemap-devel libwacom-devel mit-krb5-devel
+ NetworkManager-devel polkit-devel pulseaudio-devel unity-settings-daemon-devel
+ upower-devel"
+depends="clutter-gtk fcitx gnome-color-manager gnome-control-center grilo
+ gsettings-desktop-schemas libgnomekbd network-manager-applet NetworkManager
+ openrc-settingsd smbclient sound-theme-freedesktop system-config-printer
+ webkit2gtk yaru"
+short_desc="Control Center for Unity"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-2.0-only"
+homepage="https://launchpad.net/unity-control-center"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/unity-control-center_${version}.orig.tar.gz"
+checksum=b066a844d54f5c8dac9639a429f4e3d313f1828d265ec39e691c5dcea7d06c0e
+make_check=ci-skip # po/POTFILES.in file doesn't have everything
+
+pre_configure() {
+ autoreconf -vfi
+ intltoolize -f
+}
+
+post_configure() {
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0 /g' -e 's/ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then/ func_append compile_command " -Wl,-O1,--as-needed"\n func_append finalize_command " -Wl,-O1,--as-needed"\n\0/' libtool
+}
+
+post_install() {
+ chmod 750 "${DESTDIR}/usr/share/polkit-1/rules.d/"
+
+ rm -r "${DESTDIR}/usr/share/locale/"
+
+ panels/info/logo-generator \
+ --logo panels/info/UbuntuLogoBlank.png \
+ --text "Unity for Void" \
+ --output "${DESTDIR}/usr/share/unity-control-center/ui/UbuntuLogo.png"
+
+ vinstall "${FILESDIR}/system-config-printer-unity.desktop" 644 \
+ usr/share/applications
+ vinstall "${FILESDIR}/unity-online-accounts-panel.desktop" 644 \
+ usr/share/applications
+ vinstall "${FILESDIR}/unity-region-panel.desktop" 644 \
+ usr/share/applications
+}
+
+unity-control-center-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision} gtk+3-devel
+ libglib-devel"
+ pkg_install() {
+ vmove usr/include
+ vmove "usr/lib/*.so"
+ vmove usr/lib/pkgconfig
+ vmove usr/share/pkgconfig
+ }
+}
diff --git a/srcpkgs/unity-core/template b/srcpkgs/unity-core/template
new file mode 100644
index 00000000000000..ee90fe85bc9db2
--- /dev/null
+++ b/srcpkgs/unity-core/template
@@ -0,0 +1,18 @@
+# Template file for 'unity-core'
+pkgname=unity-core
+version=7.7.0+23.04.20230222.2
+revision=1
+build_style=meta
+depends="bluez compiz-ubuntu gnome-settings-daemon gsettings-desktop-schemas
+ gsettings-ubuntu-schemas indicator-application indicator-appmenu
+ indicator-bluetooth indicator-datetime indicator-keyboard indicator-messages
+ indicator-power indicator-printers indicator-session indicator-sound
+ libayatana-appindicator libayatana-indicator lightdm lightdm-unity-greeter
+ nemo nux unity unity-gtk-module unity-indicator-appearance
+ unity-lens-applications unity-lens-files unity-lens-music unity-lens-photos
+ unity-lens-video unity-scope-home unity-session unity-settings
+ unity-settings-daemon unity-tweak-tool xf86-input-synaptics xorg zeitgeist"
+short_desc="Metapackage for the core Unity desktop environment"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="Public Domain"
+homepage="https://unityd.org"
diff --git a/srcpkgs/unity-devel b/srcpkgs/unity-devel
new file mode 120000
index 00000000000000..5f1526af706b28
--- /dev/null
+++ b/srcpkgs/unity-devel
@@ -0,0 +1 @@
+unity
\ No newline at end of file
diff --git a/srcpkgs/unity-gtk-module-devel b/srcpkgs/unity-gtk-module-devel
new file mode 120000
index 00000000000000..de026caa9bbe88
--- /dev/null
+++ b/srcpkgs/unity-gtk-module-devel
@@ -0,0 +1 @@
+unity-gtk-module
\ No newline at end of file
diff --git a/srcpkgs/unity-gtk-module/files/90unity-gtk-module b/srcpkgs/unity-gtk-module/files/90unity-gtk-module
new file mode 100644
index 00000000000000..9f691453fa6bc0
--- /dev/null
+++ b/srcpkgs/unity-gtk-module/files/90unity-gtk-module
@@ -0,0 +1,2 @@
+export GTK_MODULES=$GTK_MODULES:unity-gtk-module
+dbus-update-activation-environment --verbose
diff --git a/srcpkgs/unity-gtk-module/files/unity-gtk-module/finish b/srcpkgs/unity-gtk-module/files/unity-gtk-module/finish
new file mode 100644
index 00000000000000..609771fe0f8d3c
--- /dev/null
+++ b/srcpkgs/unity-gtk-module/files/unity-gtk-module/finish
@@ -0,0 +1,3 @@
+#!/bin/sh
+GTK_MODULES=$$(echo -n $${GTK_MODULES} | awk -v RS=: -v ORS=: "/^unity-gtk-module$/ {next} {print}" | sed -e "s/:*$//")
+exec dbus-update-activation-environment --verbose GTK_MODULES
diff --git a/srcpkgs/unity-gtk-module/files/unity-gtk-module/run b/srcpkgs/unity-gtk-module/files/unity-gtk-module/run
new file mode 100644
index 00000000000000..fccdec35a0ea61
--- /dev/null
+++ b/srcpkgs/unity-gtk-module/files/unity-gtk-module/run
@@ -0,0 +1,3 @@
+#!/bin/sh
+GTK_MODULES="$${GTK_MODULES:+$GTK_MODULES:}unity-gtk-module"
+exec dbus-update-activation-environment --verbose GTK_MODULES
diff --git a/srcpkgs/unity-gtk-module/template b/srcpkgs/unity-gtk-module/template
new file mode 100644
index 00000000000000..0b639794040a37
--- /dev/null
+++ b/srcpkgs/unity-gtk-module/template
@@ -0,0 +1,37 @@
+# Template file for 'unity-gtk-module'
+pkgname=unity-gtk-module
+version=0.0.0+18.04.20171202
+revision=1
+build_style=gnu-configure
+configure_args="--prefix=/usr --sysconfdir=/etc --with-gtk=3 --enable-gtk-doc \
+ --disable-static"
+hostmakedepends="automake glib-devel gtk-doc libtool pkg-config"
+makedepends="gtk+3-devel"
+depends="dbus"
+short_desc="Unity GTK+ Module"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="LGPL-3.0-only"
+homepage="https://launchpad.net/unity-gtk-module"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/unity-gtk-module_${version}.orig.tar.gz"
+checksum=5a78ae6b021aaf35f573a56c7803773b0accdf34112ebfebd00651be87c0e28e
+replaces="appmenu-gtk3-module>=0"
+conflicts="appmenu-gtk3-module"
+
+pre_configure() {
+ autoreconf -vfi
+}
+
+post_install() {
+ vinstall ${FILESDIR}/90unity-gtk-module 755 etc/X11/xinit/xinitrc.d
+ vsv unity-gtk-module
+}
+
+unity-gtk-module-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision} gtk+3-devel"
+ pkg_install() {
+ vmove usr/include
+ vmove "usr/lib/*.so"
+ vmove usr/lib/pkgconfig
+ }
+}
diff --git a/srcpkgs/unity-indicator-appearance/patches/use-ayatana-libraries.patch b/srcpkgs/unity-indicator-appearance/patches/use-ayatana-libraries.patch
new file mode 100644
index 00000000000000..0eef3796c794c5
--- /dev/null
+++ b/srcpkgs/unity-indicator-appearance/patches/use-ayatana-libraries.patch
@@ -0,0 +1,18 @@
+diff -p1ru a/usr/bin/unity-indicator-appearance b/usr/bin/unity-indicator-appearance
+--- a/usr/bin/unity-indicator-appearance 2022-09-09 23:39:17.000000000 +0800
++++ b/usr/bin/unity-indicator-appearance 2024-07-31 11:16:27.596805842 +0800
+@@ -5,3 +5,3 @@ import gi
+ gi.require_version("Gtk", "3.0")
+-gi.require_version('AppIndicator3', '0.1')
++gi.require_version('AyatanaAppIndicator3', '0.1')
+ gi.require_version('Notify', '0.7')
+@@ -18,3 +18,3 @@ from gi.repository import Gtk as gtk
+ from gi.repository import Gio as gio
+-from gi.repository import AppIndicator3 as appindicator
++from gi.repository import AyatanaAppIndicator3 as appindicator
+ from gi.repository import Notify as notify
+@@ -150,2 +150,2 @@ if __name__ == "__main__":
+ signal.signal(signal.SIGINT, signal.SIG_DFL)
+- main()
+\ No newline at end of file
++ main()
diff --git a/srcpkgs/unity-indicator-appearance/template b/srcpkgs/unity-indicator-appearance/template
new file mode 100644
index 00000000000000..55d4c79d819754
--- /dev/null
+++ b/srcpkgs/unity-indicator-appearance/template
@@ -0,0 +1,15 @@
+# Template file for 'unity-indicator-appearance'
+pkgname=unity-indicator-appearance
+version=1.2
+revision=1
+short_desc="Indicator to change theme or accent color"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-2.0-or-later"
+homepage="https://ubuntuunity.org"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/unity-indicator-appearance_${version}_all.deb"
+checksum=f1b47aabbb4069f6e1cc6bd35cc79961e1a18224d1b3971e9fbcd39c4f0f3306
+
+do_install() {
+ vcopy etc /
+ vcopy usr /
+}
diff --git a/srcpkgs/unity-lens-applications/template b/srcpkgs/unity-lens-applications/template
new file mode 100644
index 00000000000000..694a675af1eabe
--- /dev/null
+++ b/srcpkgs/unity-lens-applications/template
@@ -0,0 +1,42 @@
+# Template file for 'unity-lens-applications'
+pkgname=unity-lens-applications
+version=7.1.0+16.10.20160927
+revision=1
+_ubuntu_rel=0ubuntu8
+#archs="i686 x86_64"
+#build_wrksrc=
+build_style=gnu-configure
+configure_args="--prefix=/usr --sysconfdir=/etc --disable-static \
+ --libexecdir=/usr/lib/${pkgname} --disable-schemas-compile"
+#make_build_args=""
+#make_install_args=""
+#conf_files=""
+#make_dirs="/var/log/dir 0755 root root"
+hostmakedepends="automake gettext-devel intltool libtool pkg-config vala wget"
+makedepends="db-devel dconf-devel gnome-menus-devel libcolumbus-devel
+ libgee-devel libunity-devel libzeitgeist-devel xapian-core-devel
+ zeitgeist-devel"
+depends="dconf"
+short_desc="Daemon that exposes you applications to Unity"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/unity-lens-applications"
+#changelog=""
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/unity-lens-applications_${version}.orig.tar.gz"
+checksum=b5703a9a5cfdd47d9645ea20df1dcd575715e11ae8ecef3a72047d6225a233af
+
+do_patch() {
+ wget https://launchpad.net/ubuntu/+archive/primary/+files/unity-lens-applications_${version}-${_ubuntu_rel}.diff.gz
+ gunzip unity-lens-applications_${version}-${_ubuntu_rel}.diff.gz
+ patch -p1 -i unity-lens-applications_${version}-${_ubuntu_rel}.diff
+}
+
+pre_configure() {
+ aclocal --install --force
+ autoreconf -vfi
+ intltoolize -f
+}
+
+post_install() {
+ rm -r "${DESTDIR}/usr/locale/"
+}
diff --git a/srcpkgs/unity-lens-files/template b/srcpkgs/unity-lens-files/template
new file mode 100644
index 00000000000000..013863eff50cdc
--- /dev/null
+++ b/srcpkgs/unity-lens-files/template
@@ -0,0 +1,34 @@
+# Template file for 'unity-lens-files'
+pkgname=unity-lens-files
+version=7.1.0+17.10.20170605
+revision=1
+#archs="i686 x86_64"
+#build_wrksrc=
+build_style=gnu-configure
+configure_args="--prefix=/usr --libexecdir=/usr/lib/${pkgname} \
+ --disable-static"
+#make_build_args=""
+#make_install_args=""
+#conf_files=""
+#make_dirs="/var/log/dir 0755 root root"
+hostmakedepends="automake gettext-devel glib-devel intltool pkg-config vala"
+makedepends="libgee-devel libunity-devel zeitgeist-devel"
+depends="dconf libxdg-basedir python3-xdg xdg-user-dirs"
+short_desc="Daemon exposing your files and file history to Unity"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/unity-place-files"
+#changelog=""
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/unity-lens-files_${version}.orig.tar.gz"
+checksum=f1642cdf1b6383dd58771c9733b839a6e86d3a79368a07703b91740cf18fac92
+make_check=ci-skip # 'assert_cmpint' and 'assert_cmpstr' ambiguous reference errors
+
+pre_configure() {
+ aclocal --install --force
+ autoreconf -vfi
+ intltoolize -f
+}
+
+post_install() {
+ rm -r "${DESTDIR}/usr/locale/"
+}
diff --git a/srcpkgs/unity-lens-music/template b/srcpkgs/unity-lens-music/template
new file mode 100644
index 00000000000000..3ffc6c30801b86
--- /dev/null
+++ b/srcpkgs/unity-lens-music/template
@@ -0,0 +1,36 @@
+# Template file for 'unity-lens-music'
+pkgname=unity-lens-music
+version=6.9.1+16.04
+revision=1
+_ubuntu_rel=0ubuntu6
+#archs="i686 x86_64"
+#build_wrksrc=
+build_style=gnu-configure
+configure_args="--prefix=/usr --libexecdir=/usr/lib/${pkgname} \
+ --disable-static"
+#make_build_args=""
+#make_install_args=""
+#conf_files=""
+#make_dirs="/var/log/dir 0755 root root"
+hostmakedepends="automake gettext-devel glib-devel intltool json-glib
+ pkg-config vala wget"
+makedepends="gst-plugins-base1-devel gstreamer1-devel libgee-devel
+ libunity-devel tdb-devel"
+depends="libnotify liboauth libsoup"
+short_desc="Music, in the dash"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/unity-place-music"
+#changelog=""
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/unity-lens-music_${version}.orig.tar.gz"
+checksum=fc6970c5f7ee9c8138175ce124f2e522c2deb56e1decfef092affbb7d45b6e37
+
+do_patch() {
+ wget https://launchpad.net/ubuntu/+archive/primary/+files/unity-lens-music_${version}-${_ubuntu_rel}.diff.gz
+ gunzip unity-lens-music_${version}-${_ubuntu_rel}.diff.gz
+ patch -p1 -i unity-lens-music_${version}-${_ubuntu_rel}.diff
+}
+
+pre_configure() {
+ autoreconf -i
+}
diff --git a/srcpkgs/unity-lens-photos/patches/remove-goa-scopes.diff b/srcpkgs/unity-lens-photos/patches/remove-goa-scopes.diff
new file mode 100644
index 00000000000000..09394bc4e80203
--- /dev/null
+++ b/srcpkgs/unity-lens-photos/patches/remove-goa-scopes.diff
@@ -0,0 +1,45 @@
+diff -Nur a/po/POTFILES.in b/po/POTFILES.in
+--- a/po/POTFILES.in 2017-06-05 18:35:51.000000000 +0200
++++ b/po/POTFILES.in 2022-06-13 02:32:35.622115937 +0200
+@@ -1,10 +1,3 @@
+ [encoding: UTF-8]
+-src/unity_facebook_daemon.py
+-src/unity_picasa_daemon.py
+ src/unity_shotwell_daemon.py
+-src/unity_flickr_daemon.py
+-[type: gettext/ini]data/flickr.scope.in
+-[type: gettext/ini]data/facebook.scope.in
+ [type: gettext/ini]data/shotwell.scope.in
+-[type: gettext/ini]data/picasa.scope.in
+-[type: gettext/xml]unity-lens-photos.application.in
+diff -Nur a/setup.cfg b/setup.cfg
+--- a/setup.cfg 2017-06-05 18:35:51.000000000 +0200
++++ b/setup.cfg 2022-06-13 01:46:47.286337106 +0200
+@@ -3,9 +3,4 @@
+
+ [build_i18n]
+ domain=unity-lens-photos
+-desktop_files=[("share/unity/scopes/photos", ("data/facebook.scope.in",
+- "data/flickr.scope.in",
+- "data/picasa.scope.in",
+- "data/shotwell.scope.in",))]
+-xml_files_no_trans=[("share/accounts/applications", ("unity-lens-photos.application.in",))]
+-
++desktop_files=[("share/unity/scopes/photos", ("data/shotwell.scope.in",))]
+diff -Nur a/setup.py b/setup.py
+--- a/setup.py 2017-06-05 18:35:51.000000000 +0200
++++ b/setup.py 2022-06-13 01:46:47.286337106 +0200
+@@ -12,13 +12,7 @@
+ license="GNU General Public License (GPL)",
+ data_files=[
+ ('share/unity-scopes/shotwell', ['src/unity_shotwell_daemon.py']),
+- ('share/unity-scopes/flickr', ['src/unity_flickr_daemon.py']),
+- ('share/unity-scopes/facebook', ['src/unity_facebook_daemon.py']),
+- ('share/unity-scopes/picasa', ['src/unity_picasa_daemon.py']),
+ ('share/dbus-1/services', ['data/unity-scope-shotwell.service']),
+- ('share/dbus-1/services', ['data/unity-scope-flickr.service']),
+- ('share/dbus-1/services', ['data/unity-scope-facebook.service']),
+- ('share/dbus-1/services', ['data/unity-scope-picasa.service']),
+ ('share/applications', ['unity-lens-photos.desktop']),
+ ('share/pixmaps', ['unity-lens-photos.png']),
+ ], cmdclass={"build": build_extra.build_extra,
diff --git a/srcpkgs/unity-lens-photos/template b/srcpkgs/unity-lens-photos/template
new file mode 100644
index 00000000000000..745b3a4c626d65
--- /dev/null
+++ b/srcpkgs/unity-lens-photos/template
@@ -0,0 +1,30 @@
+# Template file for 'unity-lens-photos'
+pkgname=unity-lens-photos
+version=1.0+17.10.20170605
+revision=1
+#archs="i686 x86_64"
+#build_wrksrc=
+#configure_args=""
+#make_build_args=""
+#make_install_args=""
+#conf_files=""
+#make_dirs="/var/log/dir 0755 root root"
+hostmakedepends="intltool python3 python3-distutils-extra"
+makedepends=""
+depends="dee libsoup libunity python3-gobject python3-httplib2
+ python3-oauthlib"
+short_desc="Unity lens for browsing photos"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/unity-lens-photos"
+#changelog=""
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/unity-lens-photos_${version}.orig.tar.gz"
+checksum=ef1f05288c643b6e98d4b4d7b8fcadfd043ed13ae525584c96c65ceb9ea629b7
+
+do_install() {
+ python setup.py install --root="${DESTDIR}/" --optimize=1
+}
+
+post_install() {
+ rm -r "${DESTDIR}/usr/share/locale/"
+}
diff --git a/srcpkgs/unity-lens-video/template b/srcpkgs/unity-lens-video/template
new file mode 100644
index 00000000000000..c28733d99f4b96
--- /dev/null
+++ b/srcpkgs/unity-lens-video/template
@@ -0,0 +1,28 @@
+# Template file for 'unity-lens-video'
+pkgname=unity-lens-video
+version=0.3.15+16.04.20160212.1
+revision=1
+#archs="i686 x86_64"
+#build_wrksrc=
+build_style=gnu-configure
+configure_args="--prefix=/usr --libexecdir=/usr/lib --enable-headless-tests"
+#make_build_args=""
+#make_install_args=""
+#conf_files=""
+#make_dirs="/var/log/dir 0755 root root"
+hostmakedepends="automake gettext-devel glib-devel intltool pkg-config vala"
+makedepends="dee-devel json-glib-devel libgee-devel libsoup-gnome-devel
+ libunity-devel libzeitgeist-devel unity-lens-music"
+depends="unity-lens-music"
+short_desc="Unity Video lens"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/unity-lens-videos"
+#changelog=""
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/unity-lens-video_${version}.orig.tar.gz"
+checksum=51a9bceb02587051e374f0914c6ca505c12e04bf3bf978ea4319a391e76fd867
+
+pre_configure() {
+ autoreconf -vfi
+ intltoolize -f
+}
diff --git a/srcpkgs/unity-scope-home/INSTALL b/srcpkgs/unity-scope-home/INSTALL
new file mode 100644
index 00000000000000..ba3d0d0b7f4941
--- /dev/null
+++ b/srcpkgs/unity-scope-home/INSTALL
@@ -0,0 +1,6 @@
+#INSTALL
+case "$ACTION" in
+post)
+ trust extract-compat
+ ;;
+esac
diff --git a/srcpkgs/unity-scope-home/REMOVE b/srcpkgs/unity-scope-home/REMOVE
new file mode 100644
index 00000000000000..454d55c8d93151
--- /dev/null
+++ b/srcpkgs/unity-scope-home/REMOVE
@@ -0,0 +1,6 @@
+#REMOVE
+case "$ACTION" in
+post)
+ trust extract-compat
+ ;;
+esac
diff --git a/srcpkgs/unity-scope-home/patches/0002-productsearch.ubuntu.com-only-accepts-locale-string-.patch b/srcpkgs/unity-scope-home/patches/0002-productsearch.ubuntu.com-only-accepts-locale-string-.patch
new file mode 100644
index 00000000000000..37230f7f35aa9e
--- /dev/null
+++ b/srcpkgs/unity-scope-home/patches/0002-productsearch.ubuntu.com-only-accepts-locale-string-.patch
@@ -0,0 +1,44 @@
+From 2e685f380bdfc611c6de8a46615868afa4c11599 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Mon, 7 Apr 2014 20:27:16 -0400
+Subject: [PATCH 2/4] productsearch.ubuntu.com only accepts locale string
+ without encoding
+
+---
+ src/smart-scopes-search.vala | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/smart-scopes-search.vala b/src/smart-scopes-search.vala
+index eabe963..55a1bfd 100644
+--- a/src/smart-scopes-search.vala
++++ b/src/smart-scopes-search.vala
+@@ -238,7 +238,7 @@ namespace Unity.HomeScope.SmartScopes {
+ var query_dict = new HashTable<string, string> (str_hash, str_equal);
+ if (info.locale != null)
+ {
+- query_dict["locale"] = info.locale;
++ query_dict["locale"] = info.locale.split (".")[0];
+ }
+ if (info.build_id != null)
+ {
+@@ -393,7 +393,7 @@ namespace Unity.HomeScope.SmartScopes {
+ if (info.locale != null)
+ {
+ sb.append ("&locale=");
+- sb.append (info.locale);
++ sb.append (info.locale.split (".")[0]);
+ }
+ if (info.build_id != null)
+ {
+@@ -453,7 +453,7 @@ namespace Unity.HomeScope.SmartScopes {
+ if (info.locale != null)
+ {
+ sb.append ("&locale=");
+- sb.append (info.locale);
++ sb.append (info.locale.split (".")[0]);
+ }
+
+ return sb.str;
+--
+2.1.1
+
diff --git a/srcpkgs/unity-scope-home/patches/0003-Show-description-of-error-code.patch b/srcpkgs/unity-scope-home/patches/0003-Show-description-of-error-code.patch
new file mode 100644
index 00000000000000..eabab955c48821
--- /dev/null
+++ b/srcpkgs/unity-scope-home/patches/0003-Show-description-of-error-code.patch
@@ -0,0 +1,29 @@
+From 8211b626ded5384d64361585733452a7e472476b Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Mon, 7 Apr 2014 20:27:48 -0400
+Subject: [PATCH 3/4] Show description of error code
+
+---
+ src/smart-scopes-search.vala | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/smart-scopes-search.vala b/src/smart-scopes-search.vala
+index 55a1bfd..80b97ea 100644
+--- a/src/smart-scopes-search.vala
++++ b/src/smart-scopes-search.vala
+@@ -493,9 +493,11 @@ namespace Unity.HomeScope.SmartScopes {
+
+ if (cancellable != null)
+ cancellable.disconnect (cancel_id);
++
++ string reason = Soup.Status.get_phrase (msg.status_code);
+
+ if (msg.status_code < 100)
+- throw new IOError.FAILED ("Request failed with error %u", msg.status_code);
++ throw new IOError.FAILED ("Request failed with error %u: %s", msg.status_code, reason);
+
+ if (msg.status_code != 200)
+ {
+--
+2.1.1
+
diff --git a/srcpkgs/unity-scope-home/patches/fix-vala-0.56-errors.patch b/srcpkgs/unity-scope-home/patches/fix-vala-0.56-errors.patch
new file mode 100644
index 00000000000000..f8770a5eb49993
--- /dev/null
+++ b/srcpkgs/unity-scope-home/patches/fix-vala-0.56-errors.patch
@@ -0,0 +1,48 @@
+From 2f35f93d7619932fb21cd1408165e9b95731d4e6 Mon Sep 17 00:00:00 2001
+From: c4pp4
+Date: Fri, 16 Sep 2022 22:28:14 +0200
+Subject: [PATCH 1/1] Fix build against vala-0.56
+
+Signed-off-by: c4pp4
+---
+ src/client-scopes-info.vala | 2 --
+ src/scope.vala | 3 ++-
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/src/client-scopes-info.vala b/src/client-scopes-info.vala
+index c3f1a66..8291afa 100644
+--- a/src/client-scopes-info.vala
++++ b/src/client-scopes-info.vala
+@@ -25,8 +25,6 @@ namespace Unity.HomeScope
+ */
+ public class ClientScopesInfo
+ {
+- public static const string CLIENT_SCOPES_FILE = Config.PKGDATADIR + "/client-scopes.json";
+-
+ private Gee.ArrayList<string> added_scopes = new Gee.ArrayList<string> ();
+ private Gee.ArrayList<string> removed_scopes = new Gee.ArrayList<string> ();
+
+diff --git a/src/scope.vala b/src/scope.vala
+index 78cda0f..136f544 100644
+--- a/src/scope.vala
++++ b/src/scope.vala
+@@ -19,6 +19,7 @@
+
+ namespace Unity.HomeScope {
+
++const string CLIENT_SCOPES_FILE = Config.PKGDATADIR + "/client-scopes.json";
+ const string ICON_PATH = Config.DATADIR + "/icons/unity-icon-theme/places/svg/";
+ const int ICON_COLUMN = 1;
+
+@@ -187,7 +188,7 @@ public class HomeScope : Unity.AggregatorScope
+
+ try
+ {
+- client_scopes_info = ClientScopesInfo.from_file (ClientScopesInfo.CLIENT_SCOPES_FILE, ScopeRegistry.instance ().flatten ());
++ client_scopes_info = ClientScopesInfo.from_file (CLIENT_SCOPES_FILE, ScopeRegistry.instance ().flatten ());
+ }
+ catch (Error e)
+ {
+--
+2.35.1
+
diff --git a/srcpkgs/unity-scope-home/template b/srcpkgs/unity-scope-home/template
new file mode 100644
index 00000000000000..80ba7960d1ea15
--- /dev/null
+++ b/srcpkgs/unity-scope-home/template
@@ -0,0 +1,35 @@
+# Template file for 'unity-scope-home'
+pkgname=unity-scope-home
+version=6.8.2+19.04.20190412
+revision=1
+_ubuntu_rel=0ubuntu6
+#archs="i686 x86_64"
+#build_wrksrc=
+build_style=gnu-configure
+configure_args="--prefix=/usr --libexecdir=/usr/lib/unity-scope-home"
+#make_build_args=""
+#make_install_args=""
+#conf_files=""
+#make_dirs="/var/log/dir 0755 root root"
+hostmakedepends="automake gettext-devel intltool libtool pkg-config vala wget"
+makedepends="dee-devel glib-devel json-glib-devel libgee-devel
+ libsoup-gnome-devel libunity-devel"
+depends="p11-kit"
+short_desc="Home scope that aggregates results from multiple scopes"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://launchpad.net/unity-scope-home"
+#changelog=""
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/unity-scope-home_${version}.orig.tar.gz"
+checksum=070acae8dce62240c1ea2f8afcc7a6ea80704e95e525e294c7b0d79f32e2dcb1
+
+do_patch() {
+ wget https://launchpad.net/ubuntu/+archive/primary/+files/unity-scope-home_${version}-${_ubuntu_rel}.diff.gz
+ gunzip unity-scope-home_${version}-${_ubuntu_rel}.diff.gz
+ patch -p1 -i unity-scope-home_${version}-${_ubuntu_rel}.diff
+}
+
+pre_configure() {
+ autoreconf -vfi
+ intltoolize -f
+}
diff --git a/srcpkgs/unity-session/files/hud-service.desktop b/srcpkgs/unity-session/files/hud-service.desktop
new file mode 100644
index 00000000000000..bc48b7fd6fe7a9
--- /dev/null
+++ b/srcpkgs/unity-session/files/hud-service.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Type=Application
+Name=Unity HUD Service
+NoDisplay=true
+TryExec=/usr/lib/hud/hud-service
+Exec=/usr/lib/hud/hud-service
diff --git a/srcpkgs/unity-session/files/indicator-bluetooth.desktop b/srcpkgs/unity-session/files/indicator-bluetooth.desktop
new file mode 100644
index 00000000000000..c28665756a4614
--- /dev/null
+++ b/srcpkgs/unity-session/files/indicator-bluetooth.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Type=Application
+Name=Bluetooth Indicator
+NoDisplay=true
+TryExec=/usr/lib/indicator-bluetooth/indicator-bluetooth-service
+Exec=/usr/lib/indicator-bluetooth/indicator-bluetooth-service
diff --git a/srcpkgs/unity-session/files/indicator-datetime.desktop b/srcpkgs/unity-session/files/indicator-datetime.desktop
new file mode 100644
index 00000000000000..bc71e4da07df2d
--- /dev/null
+++ b/srcpkgs/unity-session/files/indicator-datetime.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Type=Application
+Name=Date/Time Indicator
+NoDisplay=true
+TryExec=/usr/lib/indicator-datetime/indicator-datetime-service
+Exec=/usr/lib/indicator-datetime/indicator-datetime-service
diff --git a/srcpkgs/unity-session/files/indicator-power.desktop b/srcpkgs/unity-session/files/indicator-power.desktop
new file mode 100644
index 00000000000000..cc0fb38ab885bb
--- /dev/null
+++ b/srcpkgs/unity-session/files/indicator-power.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Type=Application
+Name=Power Indicator
+NoDisplay=true
+TryExec=/usr/lib/indicator-power/indicator-power-service
+Exec=/usr/lib/indicator-power/indicator-power-service
diff --git a/srcpkgs/unity-session/files/indicator-printers.desktop b/srcpkgs/unity-session/files/indicator-printers.desktop
new file mode 100644
index 00000000000000..ccdb2bac6150fd
--- /dev/null
+++ b/srcpkgs/unity-session/files/indicator-printers.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Type=Application
+Name=Printers Indicator
+NoDisplay=true
+TryExec=/usr/lib/indicator-printers/indicator-printers-service
+Exec=/usr/lib/indicator-printers/indicator-printers-service
diff --git a/srcpkgs/unity-session/files/indicator-session.desktop b/srcpkgs/unity-session/files/indicator-session.desktop
new file mode 100644
index 00000000000000..2648c09e042854
--- /dev/null
+++ b/srcpkgs/unity-session/files/indicator-session.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Type=Application
+Name=Session Indicator
+NoDisplay=true
+TryExec=/usr/lib/indicator-session/indicator-session-service
+Exec=/usr/lib/indicator-session/indicator-session-service
diff --git a/srcpkgs/unity-session/files/indicator-sound.desktop b/srcpkgs/unity-session/files/indicator-sound.desktop
new file mode 100644
index 00000000000000..113fe0c3e2bd96
--- /dev/null
+++ b/srcpkgs/unity-session/files/indicator-sound.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Type=Application
+Name=Sound Indicator
+NoDisplay=true
+TryExec=/usr/lib/indicator-sound/indicator-sound-service
+Exec=/usr/lib/indicator-sound/indicator-sound-service
diff --git a/srcpkgs/unity-session/files/unity-indicator-appearance.desktop b/srcpkgs/unity-session/files/unity-indicator-appearance.desktop
new file mode 100644
index 00000000000000..662aa4264a8adc
--- /dev/null
+++ b/srcpkgs/unity-session/files/unity-indicator-appearance.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Type=Application
+Name=Unity Appearance Indicator
+NoDisplay=true
+TryExec=/usr/bin/unity-indicator-appearance
+Exec=unity-indicator-appearance
diff --git a/srcpkgs/unity-session/files/unity-panel-service-lockscreen.desktop b/srcpkgs/unity-session/files/unity-panel-service-lockscreen.desktop
new file mode 100644
index 00000000000000..64d67db10fd0bb
--- /dev/null
+++ b/srcpkgs/unity-session/files/unity-panel-service-lockscreen.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Type=Application
+Name=Unity Panel Service (lockscreen)
+NoDisplay=true
+TryExec=/usr/lib/unity/unity-panel-service
+Exec=/usr/lib/unity/unity-panel-service --lockscreen-mode
diff --git a/srcpkgs/unity-session/files/unity-panel-service.desktop b/srcpkgs/unity-session/files/unity-panel-service.desktop
new file mode 100644
index 00000000000000..d3c115d64aef56
--- /dev/null
+++ b/srcpkgs/unity-session/files/unity-panel-service.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Type=Application
+Name=Unity Panel Service
+NoDisplay=true
+TryExec=/usr/lib/unity/unity-panel-service
+Exec=/usr/lib/unity/unity-panel-service
diff --git a/srcpkgs/unity-session/files/unity-polkit-authentication-agent.desktop b/srcpkgs/unity-session/files/unity-polkit-authentication-agent.desktop
new file mode 100644
index 00000000000000..bf82892b8ef2c0
--- /dev/null
+++ b/srcpkgs/unity-session/files/unity-polkit-authentication-agent.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Type=Application
+Name=Unity PolicyKit Authentication Agent
+NoDisplay=true
+TryExec=/usr/libexec/polkit-gnome-authentication-agent-1
+Exec=/usr/libexec/polkit-gnome-authentication-agent-1
diff --git a/srcpkgs/unity-session/files/unity.desktop b/srcpkgs/unity-session/files/unity.desktop
new file mode 100644
index 00000000000000..52e15f71068807
--- /dev/null
+++ b/srcpkgs/unity-session/files/unity.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Type=Application
+Name=Unity
+NoDisplay=true
+TryExec=/usr/bin/unity
+Exec=unity
diff --git a/srcpkgs/unity-session/files/window-stack-bridge.desktop b/srcpkgs/unity-session/files/window-stack-bridge.desktop
new file mode 100644
index 00000000000000..f35fd0fc10f2bf
--- /dev/null
+++ b/srcpkgs/unity-session/files/window-stack-bridge.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Type=Application
+Name=Window Stack Bridge
+NoDisplay=true
+TryExec=/usr/lib/hud/window-stack-bridge
+Exec=/usr/lib/hud/window-stack-bridge
diff --git a/srcpkgs/unity-session/patches/use-gnome-session.patch b/srcpkgs/unity-session/patches/use-gnome-session.patch
new file mode 100644
index 00000000000000..32eb1348d67c9f
--- /dev/null
+++ b/srcpkgs/unity-session/patches/use-gnome-session.patch
@@ -0,0 +1,16 @@
+diff -p1ru a/usr/share/gnome-session/sessions/unity.session b/usr/share/gnome-session/sessions/unity.session
+--- a/usr/share/gnome-session/sessions/unity.session 2024-04-25 08:35:39.000000000 +0800
++++ b/usr/share/gnome-session/sessions/unity.session 2024-07-30 10:05:42.107319782 +0800
+@@ -2,3 +2,3 @@
+ Name=Unity
+-RequiredComponents=unity-settings-daemon;
++RequiredComponents=unity-polkit-authentication-agent;unity-settings-daemon;unity;unity-panel-service;unity-panel-service-lockscreen;indicator-bluetooth;indicator-datetime;indicator-power;indicator-printers;indicator-session;indicator-sound;unity-indicator-appearance;window-stack-bridge;hud-service;
+ DesktopName=Unity;Unity7;ubuntu;
+diff -p1ru a/usr/share/xsessions/unity.desktop b/usr/share/xsessions/unity.desktop
+--- a/usr/share/xsessions/unity.desktop 2024-04-25 08:35:39.000000000 +0800
++++ b/usr/share/xsessions/unity.desktop 2024-07-30 10:05:17.451998273 +0800
+@@ -3,3 +3,3 @@ Name=Unity
+ Comment=This session logs you into Unity
+-Exec=/usr/libexec/run-systemd-session unity-session.target
++Exec=gnome-session --session=unity
+ TryExec=/usr/bin/unity
diff --git a/srcpkgs/unity-session/template b/srcpkgs/unity-session/template
new file mode 100644
index 00000000000000..8da15186db1e5a
--- /dev/null
+++ b/srcpkgs/unity-session/template
@@ -0,0 +1,34 @@
+# Template file for 'unity-session'
+pkgname=unity-session
+version=46.0
+revision=1
+_ubuntu_rel=1ubuntu4.1
+hostmakedepends="binutils zstd"
+depends="dbus polkit-gnome unity-settings-daemon"
+short_desc="Unity desktop experience"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-2.0-or-later"
+homepage="https://ubuntuunity.org"
+distfiles="${UBUNTU_SITE}/universe/g/gnome-session/unity-session_${version}-${_ubuntu_rel}_all.deb"
+checksum=a81108ffefcf7b8e1578b9600ec26e36519e8c8a2e7e4d8e183863198be12a02
+
+do_install() {
+ vcopy etc /
+ vcopy usr /
+ rm -rf ${DESTDIR}/usr/share/doc
+ vmkdir usr/share/applications
+
+ cp ${FILESDIR}/hud-service.desktop ${DESTDIR}/usr/share/applications/
+ cp ${FILESDIR}/indicator-bluetooth.desktop ${DESTDIR}/usr/share/applications/
+ cp ${FILESDIR}/indicator-datetime.desktop ${DESTDIR}/usr/share/applications/
+ cp ${FILESDIR}/indicator-power.desktop ${DESTDIR}/usr/share/applications/
+ cp ${FILESDIR}/indicator-printers.desktop ${DESTDIR}/usr/share/applications/
+ cp ${FILESDIR}/indicator-session.desktop ${DESTDIR}/usr/share/applications/
+ cp ${FILESDIR}/indicator-sound.desktop ${DESTDIR}/usr/share/applications/
+ cp ${FILESDIR}/unity.desktop ${DESTDIR}/usr/share/applications/
+ cp ${FILESDIR}/unity-indicator-appearance.desktop ${DESTDIR}/usr/share/applications/
+ cp ${FILESDIR}/unity-panel-service.desktop ${DESTDIR}/usr/share/applications/
+ cp ${FILESDIR}/unity-panel-service-lockscreen.desktop ${DESTDIR}/usr/share/applications/
+ cp ${FILESDIR}/unity-polkit-authentication-agent.desktop ${DESTDIR}/usr/share/applications/
+ cp ${FILESDIR}/window-stack-bridge.desktop ${DESTDIR}/usr/share/applications/
+}
diff --git a/srcpkgs/unity-settings-daemon-devel b/srcpkgs/unity-settings-daemon-devel
new file mode 120000
index 00000000000000..87472f2cfb2b16
--- /dev/null
+++ b/srcpkgs/unity-settings-daemon-devel
@@ -0,0 +1 @@
+unity-settings-daemon
\ No newline at end of file
diff --git a/srcpkgs/unity-settings-daemon/files/unity-settings-daemon/run b/srcpkgs/unity-settings-daemon/files/unity-settings-daemon/run
new file mode 100644
index 00000000000000..33c19afe85fee9
--- /dev/null
+++ b/srcpkgs/unity-settings-daemon/files/unity-settings-daemon/run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec unity-settings-daemon
diff --git a/srcpkgs/unity-settings-daemon/patches/0001-Remove-accountsservice-dependency.patch b/srcpkgs/unity-settings-daemon/patches/0001-Remove-accountsservice-dependency.patch
new file mode 100644
index 00000000000000..bd7de12cf05f45
--- /dev/null
+++ b/srcpkgs/unity-settings-daemon/patches/0001-Remove-accountsservice-dependency.patch
@@ -0,0 +1,130 @@
+From a287822a26bfc068cbbd5d0cac4f5655851a7170 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Sun, 8 Jun 2014 16:23:30 -0400
+Subject: [PATCH 1/2] Remove accountsservice dependency
+
+---
+ configure.ac | 2 +-
+ plugins/keyboard/gsd-keyboard-manager.c | 72 ---------------------------------
+ 2 files changed, 1 insertion(+), 73 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index c7ccda5..824d758 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -223,7 +223,7 @@ else
+ fi
+ AM_CONDITIONAL(HAVE_FCITX, test "x$enable_fcitx" == "xyes")
+
+-PKG_CHECK_MODULES(KEYBOARD, accountsservice xkbfile xkeyboard-config $IBUS_MODULE $FCITX_MODULE gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION)
++PKG_CHECK_MODULES(KEYBOARD, xkbfile xkeyboard-config $IBUS_MODULE $FCITX_MODULE gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION)
+
+ XKB_BASE=$($PKG_CONFIG --variable xkb_base xkeyboard-config)
+ AC_SUBST(XKB_BASE)
+diff --git a/plugins/keyboard/gsd-keyboard-manager.c b/plugins/keyboard/gsd-keyboard-manager.c
+index db214a0..9031009 100644
+--- a/plugins/keyboard/gsd-keyboard-manager.c
++++ b/plugins/keyboard/gsd-keyboard-manager.c
+@@ -53,8 +53,6 @@
+ #include <fcitx-gclient/fcitxinputmethod.h>
+ #endif
+
+-#include <act/act.h>
+-
+ #include "gnome-settings-bus.h"
+ #include "gnome-settings-profile.h"
+ #include "gsd-keyboard-manager.h"
+@@ -1052,67 +1050,6 @@ apply_xkb_settings (GsdKeyboardManager *manager,
+ XkbLockModifiers (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), XkbUseCoreKbd, LockMask, 0);
+ }
+
+-static void
+-user_notify_is_loaded_cb (GObject *object,
+- GParamSpec *pspec,
+- gpointer user_data)
+-{
+- ActUser *user = ACT_USER (object);
+- GSettings *settings = user_data;
+-
+- if (act_user_is_loaded (user)) {
+- GVariant *sources;
+- GVariantIter iter;
+- const gchar *type;
+- const gchar *name;
+- GVariantBuilder builder;
+-
+- g_signal_handlers_disconnect_by_data (user, user_data);
+-
+- sources = g_settings_get_value (settings, KEY_INPUT_SOURCES);
+-
+- g_variant_builder_init (&builder, G_VARIANT_TYPE ("aa{ss}"));
+-
+- g_variant_iter_init (&iter, sources);
+- while (g_variant_iter_next (&iter, "(&s&s)", &type, &name)) {
+- g_variant_builder_open (&builder, G_VARIANT_TYPE ("a{ss}"));
+- g_variant_builder_add (&builder, "{ss}", type, name);
+- g_variant_builder_close (&builder);
+- }
+-
+- g_variant_unref (sources);
+-
+- sources = g_variant_ref_sink (g_variant_builder_end (&builder));
+- act_user_set_input_sources (user, sources);
+- g_variant_unref (sources);
+- }
+-}
+-
+-static void
+-manager_notify_is_loaded_cb (GObject *object,
+- GParamSpec *pspec,
+- gpointer user_data)
+-{
+- ActUserManager *manager = ACT_USER_MANAGER (object);
+-
+- gboolean loaded;
+- g_object_get (manager, "is-loaded", &loaded, NULL);
+-
+- if (loaded) {
+- ActUser *user;
+-
+- g_signal_handlers_disconnect_by_data (manager, user_data);
+-
+- user = act_user_manager_get_user (manager, g_get_user_name ());
+-
+- if (act_user_is_loaded (user))
+- user_notify_is_loaded_cb (G_OBJECT (user), NULL, user_data);
+- else
+- g_signal_connect (user, "notify::is-loaded",
+- user_notify_is_loaded_cb, user_data);
+- }
+-}
+-
+ #ifdef HAVE_FCITX
+ static gchar *
+ get_xkb_name (const gchar *name)
+@@ -1661,8 +1598,6 @@ apply_input_sources_settings (GSettings *settings,
+ GVariant *sources;
+ guint n_sources;
+ guint current;
+- ActUserManager *user_manager;
+- gboolean user_manager_loaded;
+
+ #ifdef HAVE_FCITX
+ if (priv->is_fcitx_active) {
+@@ -1704,13 +1639,6 @@ apply_input_sources_settings (GSettings *settings,
+ goto exit;
+ }
+
+- user_manager = act_user_manager_get_default ();
+- g_object_get (user_manager, "is-loaded", &user_manager_loaded, NULL);
+- if (user_manager_loaded)
+- manager_notify_is_loaded_cb (G_OBJECT (user_manager), NULL, priv->input_sources_settings);
+- else
+- g_signal_connect (user_manager, "notify::is-loaded", G_CALLBACK (manager_notify_is_loaded_cb), priv->input_sources_settings);
+-
+ apply_input_source (manager, current);
+
+ exit:
+--
+2.9.0
+
diff --git a/srcpkgs/unity-settings-daemon/patches/0001-usd-test-screensaver-proxy-fails-to-compile.patch b/srcpkgs/unity-settings-daemon/patches/0001-usd-test-screensaver-proxy-fails-to-compile.patch
new file mode 100644
index 00000000000000..396f2b24ceec37
--- /dev/null
+++ b/srcpkgs/unity-settings-daemon/patches/0001-usd-test-screensaver-proxy-fails-to-compile.patch
@@ -0,0 +1,25 @@
+From efd8fc8a231cd1f41aec3584760957e6778b6ec1 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Tue, 19 Jul 2016 20:23:54 -0400
+Subject: [PATCH] usd-test-screensaver-proxy fails to compile
+
+---
+ plugins/screensaver-proxy/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/plugins/screensaver-proxy/Makefile.am b/plugins/screensaver-proxy/Makefile.am
+index 73741d4..470e4db 100644
+--- a/plugins/screensaver-proxy/Makefile.am
++++ b/plugins/screensaver-proxy/Makefile.am
+@@ -21,7 +21,7 @@ libscreensaver_proxy_la_LDFLAGS = $(GSD_PLUGIN_LDFLAGS)
+
+ libscreensaver_proxy_la_LIBADD = $(SETTINGS_PLUGIN_LIBS)
+
+-libexec_PROGRAMS = usd-test-screensaver-proxy
++#libexec_PROGRAMS = usd-test-screensaver-proxy
+
+ usd_test_screensaver_proxy_SOURCES = \
+ test-screensaver-proxy.c \
+--
+2.9.0
+
diff --git a/srcpkgs/unity-settings-daemon/template b/srcpkgs/unity-settings-daemon/template
new file mode 100644
index 00000000000000..05bdd44c032349
--- /dev/null
+++ b/srcpkgs/unity-settings-daemon/template
@@ -0,0 +1,61 @@
+# Template file for 'unity-settings-daemon'
+pkgname=unity-settings-daemon
+version=15.04.1+21.10.20220802
+revision=1
+_ubuntu_rel=0ubuntu5
+build_style=gnu-configure
+configure_args="--prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libexecdir=/usr/lib/unity-settings-daemon --disable-static --enable-fcitx"
+hostmakedepends="automake docbook-xsl gettext-devel intltool libxslt
+ pkg-config python wget xf86-input-wacom-devel"
+makedepends="alsa-lib-devel fcitx-devel gnome-desktop-devel gperf
+ gsettings-ubuntu-schemas-devel ibus-devel libcanberra-devel libnotify-devel
+ librsvg-devel libwacom-devel libxkbfile-devel NetworkManager-devel
+ pulseaudio-devel upower-devel"
+depends="gnome-settings-daemon gperf gsettings-desktop-schemas
+ gsettings-ubuntu-schemas hicolor-icon-theme libayatana-appindicator"
+short_desc="Unity Settings Daemon"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-2.0-only"
+homepage="https://launchpad.net/unity-settings-daemon"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/unity-settings-daemon_${version}.orig.tar.gz"
+checksum=d02929707f36814c2847992d7d4ca0a5115943474a168fadd9ec1e7240d68c6a
+make_check=ci-skip # "gnome-settings-daemon" folder not included when running tests
+
+pre_patch() {
+ wget https://launchpad.net/ubuntu/+archive/primary/+files/unity-settings-daemon_${version}-${_ubuntu_rel}.diff.gz
+ gunzip unity-settings-daemon_${version}-${_ubuntu_rel}.diff.gz
+ patch -p1 -i unity-settings-daemon_${version}-${_ubuntu_rel}.diff
+}
+
+pre_configure() {
+ autoreconf -vfi
+ intltoolize -f
+}
+
+post_configure() {
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+}
+
+post_install() {
+ vmkdir usr/bin 755
+ ln -s usr/lib/unity-settings-daemon/unity-settings-daemon \
+ "${DESTDIR}/usr/bin/unity-settings-daemon"
+
+ rm -r "${DESTDIR}/usr/share/locale/"
+
+ rm -f "${DESTDIR}"/usr/lib/udev/rules.d/61-gnome-settings-daemon-rfkill.rules
+
+ vsv unity-settings-daemon
+}
+
+unity-settings-daemon-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision} gtk+3-devel
+ libglib-devel"
+ pkg_install() {
+ vmove usr/include
+ vmove "usr/lib/*.so"
+ vmove usr/lib/pkgconfig
+ }
+}
diff --git a/srcpkgs/unity-settings/files/10_ubuntu-settings.gschema.override b/srcpkgs/unity-settings/files/10_ubuntu-settings.gschema.override
new file mode 100644
index 00000000000000..e87ed5b9810b55
--- /dev/null
+++ b/srcpkgs/unity-settings/files/10_ubuntu-settings.gschema.override
@@ -0,0 +1,223 @@
+###################
+# global settings #
+###################
+
+[org.gnome.evolution-data-server.calendar]
+notify-with-tray=false
+
+[org.gnome.shell]
+favorite-apps = [ 'ubiquity.desktop', 'firefox_firefox.desktop', 'thunderbird.desktop', 'nemo.desktop', 'rhythmbox.desktop', 'libreoffice-writer.desktop' ]
+
+[org.gnome.desktop.background]
+picture-uri = 'file:///usr/share/backgrounds/warty-final-ubuntu.png'
+picture-uri-dark = 'file:///usr/share/backgrounds/warty-final-ubuntu.png'
+
+[org.gnome.desktop.screensaver]
+picture-uri = 'file:///usr/share/backgrounds/warty-final-ubuntu.png'
+
+[org.gnome.desktop.sound]
+theme-name = 'Yaru'
+input-feedback-sounds = true
+
+[org.gnome.desktop.session]
+session-name = "ubuntu"
+
+[org.gnome.Epiphany]
+default-search-engine = 'Google'
+search-engines = [('DuckDuckGo', 'https://duckduckgo.com/?q=%s&t=canonical', '!ddg'), ('Google', 'https://www.google.com/search?client=ubuntu&channel=es&q=%s', '!g'), ('Bing', 'https://www.bing.com/search?q=%s', '!b')]
+
+[org.gnome.crypto.pgp]
+keyservers = ['hkp://keyserver.ubuntu.com:11371', 'ldap://keyserver.pgp.com']
+
+[org.onboard]
+layout = 'Compact'
+theme = 'Nightshade'
+key-label-font = 'Ubuntu'
+key-label-overrides = ['RWIN::super-group', 'LWIN::super-group']
+xembed-onboard = true
+
+[org.onboard.window]
+docking-enabled = true
+force-to-top = true
+
+[org.gnome.rhythmbox.encoding-settings]
+media-type-presets = {'audio/x-vorbis':'Ubuntu', 'audio/mpeg':'Ubuntu'}
+
+[org.gnome.settings-daemon.plugins.power]
+power-button-action = 'interactive'
+sleep-inactive-ac-timeout = 0
+
+# for GDM/DM
+# FIXME: move to :Ubuntu-Greeter once upstream supports this, see LP: #1788010
+[org.gnome.desktop.interface:GNOME-Greeter]
+gtk-theme = "Yaru"
+icon-theme = "Yaru"
+cursor-theme = "Yaru"
+font-name = "Ubuntu 11"
+monospace-font-name = "Ubuntu Mono 13"
+font-antialiasing = 'rgba'
+
+[org.gnome.login-screen]
+logo='/usr/share/plymouth/ubuntu-logo.png'
+
+##################################
+# ubuntu common session settings #
+##################################
+
+[org.gnome.shell:ubuntu]
+always-show-log-out = true
+
+[org.gnome.shell.extensions.ding:ubuntu]
+show-trash = false
+show-volumes = false
+start-corner = 'bottom-right'
+arrangeorder = 'DESCENDINGNAME'
+
+[org.gnome.desktop.background:ubuntu]
+show-desktop-icons = true
+
+[org.gnome.desktop.interface:ubuntu]
+gtk-theme = "Yaru"
+icon-theme = "Yaru"
+cursor-theme = "Yaru"
+font-name = "Ubuntu 11"
+monospace-font-name = "Ubuntu Mono 13"
+document-font-name = "Sans 11"
+enable-hot-corners = false
+font-antialiasing = 'rgba'
+
+[com.ubuntu.update-notifier:ubuntu]
+notify-ubuntu-advantage-available = true
+
+[org.gtk.Settings.FileChooser:ubuntu]
+sort-directories-first = true
+startup-mode = 'cwd'
+
+# Mirror G-S default experience (in overrides) compared to mutter default
+# as we are using a G-S mode, the default overrides aren't used.
+[org.gnome.mutter:ubuntu]
+attach-modal-dialogs = true
+edge-tiling = true
+dynamic-workspaces = true
+workspaces-only-on-primary = true
+focus-change-on-pointer-rest = true
+
+[org.gnome.desktop.peripherals.touchpad:ubuntu]
+tap-to-click = true
+click-method = 'default'
+
+[org.gnome.desktop.wm.keybindings:ubuntu]
+show-desktop = ['<Primary><Super>d','<Primary><Alt>d','<Super>d']
+switch-applications = ['<Super>Tab']
+switch-windows = ['<Alt>Tab']
+switch-applications-backward = ['<Shift><Super>Tab']
+switch-windows-backward = ['<Shift><Alt>Tab']
+
+[org.gnome.desktop.wm.preferences:ubuntu]
+button-layout = ':minimize,maximize,close'
+titlebar-font = 'Ubuntu Bold 11'
+titlebar-uses-system-font = false
+action-middle-click-titlebar = 'lower'
+
+[org.gnome.eog.ui:ubuntu]
+sidebar = false
+
+[org.gnome.Empathy.conversation:ubuntu]
+theme = "adium"
+theme-variant = "Normal"
+adium-path = "/usr/share/adium/message-styles/ubuntu.AdiumMessageStyle"
+
+[org.gnome.nautilus.desktop:ubuntu]
+home-icon-visible = false
+
+[org.gnome.nautilus.icon-view:ubuntu]
+default-zoom-level = 'small'
+
+[org.gnome.shell.extensions.desktop-icons:ubuntu]
+icon-size = 'small'
+
+[org.gnome.nautilus.preferences:ubuntu]
+open-folder-on-dnd-hover = false
+
+[org.gnome.rhythmbox.rhythmdb:ubuntu]
+monitor-library = true
+
+[org.gnome.rhythmbox.plugins:ubuntu]
+active-plugins = ['alternative-toolbar', 'artsearch', 'audiocd','audioscrobbler','cd-recorder','daap','dbus-media-server','generic-player','ipod','iradio','mmkeys','mpris','mtpdevice','notification','power-manager']
+
+[org.gnome.rhythmbox.plugins.alternative_toolbar:ubuntu]
+display-type=1
+
+[org.gnome.settings-daemon.plugins.print-notifications:ubuntu]
+active = false
+
+[org.gnome.settings-daemon.plugins.background:ubuntu]
+active = false
+
+[org.gnome.software:ubuntu]
+first-run = false
+
+[org.gnome.Terminal.Legacy.Settings:ubuntu]
+theme-variant = 'dark'
+
+##########################
+# unity specific session #
+##########################
+
+[com.canonical.Unity.Launcher]
+favorites = [ 'ubiquity.desktop', 'firefox.desktop', 'thunderbird.desktop', 'nemo.desktop', 'rhythmbox.desktop', 'libreoffice-writer.desktop', 'libreoffice-impress.desktop', 'libreoffice-calc.desktop', 'unity-control-center.desktop', 'org.gnome.Terminal.desktop']
+
+[org.gnome.desktop.wm.preferences:Unity]
+button-layout = 'close,minimize,maximize:'
+mouse-button-modifier = '<Alt>'
+
+[org.gnome.nautilus.desktop:Unity]
+trash-icon-visible = false
+volumes-visible = false
+
+[org.cinnamon.desktop.media-handling:Unity]
+automount = false
+automount-open = false
+
+[org.gnome.desktop.interface:Unity]
+gtk-theme = "Ambiance"
+icon-theme = "ubuntu-mono-dark"
+cursor-theme = "DMZ-White"
+
+[org.gnome.desktop.wm.keybindings:Unity]
+maximize = ['<Primary><Super>Up','<Super>Up','<Primary><Alt>KP_5']
+minimize = ['<Primary><Alt>KP_0']
+move-to-corner-ne = ['<Primary><Alt>KP_Prior']
+move-to-corner-nw = ['<Primary><Alt>KP_Home']
+move-to-corner-se = ['<Primary><Alt>KP_Next']
+move-to-corner-sw = ['<Primary><Alt>KP_End']
+move-to-side-e = ['<Primary><Alt>KP_Right']
+move-to-side-n = ['<Primary><Alt>KP_Up']
+move-to-side-s = ['<Primary><Alt>KP_Down']
+move-to-side-w = ['<Primary><Alt>KP_Left']
+toggle-maximized = ['<Primary><Alt>KP_5']
+toggle-shaded = ['<Primary><Alt>s']
+unmaximize = ['<Primary><Super>Down','<Super>Down','<Alt>F5']
+
+[org.gnome.settings-daemon.plugins.background:Unity]
+active = true
+
+[org.gnome.Terminal.Legacy.Settings:Unity]
+headerbar = false
+
+[com.canonical.unity.settings-daemon.plugins.power]
+button-power = 'interactive'
+button-sleep = 'suspend'
+critical-battery-action = 'suspend'
+
+#############################################
+# communitheme specific session for testers #
+#############################################
+
+[org.gnome.desktop.interface:communitheme]
+cursor-theme = "communitheme"
+icon-theme = "Suru"
+gtk-theme = "Communitheme"
+
+[org.gnome.desktop.sound:communitheme]
+theme-name = "communitheme"
diff --git a/srcpkgs/unity-settings/files/20_ubuntu-unity.gschema.override b/srcpkgs/unity-settings/files/20_ubuntu-unity.gschema.override
new file mode 100644
index 00000000000000..e600f8aa987d39
--- /dev/null
+++ b/srcpkgs/unity-settings/files/20_ubuntu-unity.gschema.override
@@ -0,0 +1,35 @@
+# Part of ubuntu-unity-settings
+
+[org.gnome.desktop.wm.preferences]
+theme = "Yaru-dark"
+
+[org.gnome.desktop.interface:Unity]
+gtk-theme = "Yaru-dark"
+icon-theme = "Yaru-purple-dark"
+cursor-theme = "Yaru"
+
+[com.canonical.unity-greeter]
+draw-grid = false
+theme-name = "Yaru-dark"
+icon-theme-name = "Yaru-purple-dark"
+
+[org.nemo.desktop]
+font = 'Ubuntu 11'
+
+[org.nemo.desktop:Unity]
+home-icon-visible = false
+show-desktop-icons = true
+trash-icon-visible = false
+volumes-visible = false
+
+[org.nemo.icon-view:Unity]
+default-zoom-level = 'small'
+
+[org.nemo.preferences:Unity]
+enable-delete = false
+
+[org.nemo.preferences.menu-config:Unity]
+background-menu-open-as-root = false
+background-menu-show-hidden-files = false
+selection-menu-favorite = false
+selection-menu-open-as-root = false
diff --git a/srcpkgs/unity-settings/template b/srcpkgs/unity-settings/template
new file mode 100644
index 00000000000000..46864d634a7dba
--- /dev/null
+++ b/srcpkgs/unity-settings/template
@@ -0,0 +1,20 @@
+# Template file for 'unity-settings'
+pkgname=unity-settings
+# The files do not have a version, but we are using 22.10 because it is
+# specified as such in the Arch Linux PKGBUILD script. Do not expect the
+# version number to change.
+version=22.10
+revision=1
+depends="glib ttf-ubuntu-font-family unity-backgrounds yaru"
+short_desc="GSettings schemas for Unity"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-or-later"
+homepage="https://ubuntuunity.org/"
+
+do_install() {
+ vmkdir usr/share/glib-2.0/schemas
+ cp ${FILESDIR}/10_ubuntu-settings.gschema.override \
+ ${DESTDIR}/usr/share/glib-2.0/schemas
+ cp ${FILESDIR}/20_ubuntu-unity.gschema.override \
+ ${DESTDIR}/usr/share/glib-2.0/schemas
+}
diff --git a/srcpkgs/unity-tweak-tool/template b/srcpkgs/unity-tweak-tool/template
new file mode 100644
index 00000000000000..d435f6b7ceb876
--- /dev/null
+++ b/srcpkgs/unity-tweak-tool/template
@@ -0,0 +1,27 @@
+# Template file for 'unity-tweak-tool'
+pkgname=unity-tweak-tool
+version=0.0.7+
+revision=1
+_ubuntu_rel=0ubuntu11
+hostmakedepends="intltool python3-distutils-extra wget"
+makedepends="python3-cairo python3-dbus python3-gobject python3-xdg"
+depends="gtk+3 hicolor-icon-theme notify-osd python3 python3-cairo python3-dbus
+ python3-gobject python3-xdg unity"
+short_desc="Configuration tool for the Unity desktop"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-or-later"
+homepage="https://github.com/freyja-dev/unity-tweak-tool"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/unity-tweak-tool_${version}.orig.tar.gz"
+checksum=5d37ec2b57f88a22b2bc2e1cc2d2f37677989b5a585c96d3914adf6a045831c5
+
+do_patch() {
+ wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/unity-tweak-tool/${version}-${_ubuntu_rel}/unity-tweak-tool_${version}-${_ubuntu_rel}.debian.tar.xz
+ vextract --no-strip-components unity-tweak-tool_${version}-${_ubuntu_rel}.debian.tar.xz
+ for i in $(grep -v '#' debian/patches/series); do
+ patch -p1 -i "debian/patches/${i}"
+ done
+}
+
+do_install() {
+ python setup.py install --root="${DESTDIR}/" --optimize=1
+}
diff --git a/srcpkgs/unity/files/launcher_bfb.png b/srcpkgs/unity/files/launcher_bfb.png
new file mode 100755
index 0000000000000000000000000000000000000000..ed34d050a415919bf2dedbbf50d4528b543da35f
GIT binary patch
literal 7378
zcmeHMg;Nxa(>@N4I9j?>Bn1>f`i|~68U#dAQbIU5;y9E>5JWKuN%82eqmh&@LEtFq
zIO#a}eE*K`w==stJG-+x^UTif>};HofhHxG6$}6XD7CfJVE;7oKPDyoCy%jjFa9Y4
zf0(8U!LNSNh<^sz3oR@Ef59{VF@cKUXE*==#2M+Cs{eD|{*V5L!2cTr%Am`i{x$to
z0L;JyKma5p0uhstl7Y!7D5<DvXz$R`GcYpq3fyC2;Sv&NXJz9Q6%&`>=a78B%_H?l
z`Z1q~tlZuE3W`d~f>2d84RtLu>!+^XzJC7C&Goc(G;MvtB2llRW8>lz-z2A`zDs|f
z@#(Xdfqp=6NN9Kj+}+LDB`E1bR!;6iL!+00j!!JD?ChU8d3fd(X3M}{*qE4FIHVO6
zs~CSl=OatL=^~=a<jcQ9zE-wQOfIiZjW@sU+`3(_EsCigyuchE)m4-pRQ2Ki^!Kb>
z|ENjW>up+`zS_U+YG~YU8MxW_+x>HHc5LnA=ILSk@W{^D%x(u3xA1Ez^KIKnJrpQi
z0{}4lYpX#`;a^HWlfmEhEVSPq?WZeNeRfpsQ`h2tLJ-A6MnFg)1_cq&hN^ul2%FR~
zu9-5Q3>UNB@v0U6U|m}a6UpWOLTRM+cs-Sk(t_&Fohn)B-aoUBtsjFAf`aHg<%6pZ
zJX155Zt*`Ao1uq<cU0P2-!ZA%g{wSxjO`T#z4G}>Q#HgDPfZ)e>T?(w=^{Dv^+(#V
zJ<;eHMi)*<qd?j23K`w&&<Vx1k>(sAKD4SS5J5JQxRo2I@WKsm0iC{PFIKWvC?U8%
zcAM)Z$WMq%v(X5E!<Vxt5)wa60{1P_Z>-N=5aB_i8yLQ=Ga|#^CM_&*1u2veE7YX9
ziRY#raM^NJ0VgpE<%O55)l+(Xw?2mw9MA886g+~Fu?Pmv-Q6>>lke6II6ye0{=;Fn
zV$VHb&rFJE4dF7eg*~{Fh^BS$_3kMRYc|!?SRm5cf(xudO!Fg{Yaz?$9Qh4FX0Olr
zr4JP%(h?s%8v(ers{eosOu=C_d^KL!!=$^zf#=E1ih}<oZthpr^Wa6jIiRPk906Q5
z1UbbgtE+TADJN?b{`uW|L?)Dy(>f)XMn!Y3QwZ|)aE>|Pw8o8|_d+grEKbh34ecOC
zP2+2b6I+9lyb*mI297b#A?2>|zwiEH2(nx!u0{b22$TYwI>7^`v!YEeSDQ4t&PtbY
zq%K{JddDLnJ+aIWkfU8mUQW{&Qm!A?hqy@`(wV*tX*ipN=$AeG$iRZztU}Lw>hUm`
zSeZ}*vuYI}-I&-V3hJ8fn$TS;j0DtgkQ|o6>e#gRHx@RCrT<&v6i6<dy{sf#=4sC6
z_jTeUGqGJ+RS3<1tbOcgWsRW%YYP=~78R@V*`|^*TZp*^P1$_1=r-6?Z_Y!sfhHkU
z{^ahTTt>UdJpHdZIrNl)ycS2Muj;~<Ixacfa21=?EeS@yX#C8n9<FVrk}Sr5;{NrL
z6_i@>u)yS=@F)*7l1J4vWqbE;NHw*A+724=?))b=7V6qk?mSwR0^Yoognx>|J0mXM
zDL&NMrGfaj>I8tn)=>1*`g98{F6T*&&$#T7`S<}O(w-=LtY|Pa8+sOJ1hy<;1+fG(
zkq6WrjPOut*8bYR(J`vX(?TOB3Cg*LS5H!B><qbVL;BTq^2H20`7DV=8s`a(+sI#8
zW^iNbE;)*6)6NW(#=&Q|gkJ?qQCjsmIa@XPNZoY?c90t;&(#E!d~g4*f{=nVwUQfE
zr392%|K#3KkoPAHns#)2O0Wg^K`0-HtTZ=m<syf>f52Yg*6Q%9x9rc%H8j$1`;I%^
zzCFe`-F?o+ZZhgZM<2ka4ZSF-00ZQTnx}(n;Fe7xRUm0oqLG2V{F3mUK8MPb>sBf;
zoBm>k?z=H&5*SmXlwKgRP<}Y<VN`GVT7n%It^N8_A?I(p62M32+h~4QCzUV;yW@}h
zzPZ@3sZ^9tMGiMp9QaMqj<*Y;)C<xu6PdG&c@aV6&IIA-?HV}5AHBS@0|lq3e~*l<
zA-!MaJKzEnHm(4JL}t5*^EwHKiw*KKducDLyac!aQhNI6new#*z3#NfCm&-BL1KC-
zX2;pryVkF)LpD+XjA4cL0)nFswW!1`wm&?RgkMvO(fKdA2b0#H*dQk16vnGm`tV0?
z<{HvpiA8-%G+G75y<B_<N>P2XEvUUQS#8`m5&ld=#^Z2NjNj@A`*y+k6||f1_afNd
z)Xmk|X#=k*;QQo*d?9GdHO81GNYrDfUmhQ}Y(?5Mz_*r~Fn81Vs@K2$&`X+m+{#xE
z4Uo-1N*VM92YAy@4A5VnKZHhJaiM_qVx5ZlcZ*B86!cH$#OVNqJuP@XmL+0o;b-Hg
zKG&=u!FVw9RPju0J)i4mYl3=HBbtwoChI3|Ezw{#Mr|)9^n^$?F<%v>dEt2zhm%q0
zvnwhi>_)pqy;qFM-lx}OyjL<3l-T3_H^;0+pHBeLNGdWg`*W7Mp=5b3w24HjIW?ly
zHiS{qX*m-U&wXd98ekdYxoxz<LspibEn6%r36;#h?cIKyx$hqGh~>jwP&Oa5V<W-G
z{d|r+gI0tPmbJ7*<D?X*?ofNoe=@2KalBn111k_0)r$N%`?LzAPaqC?8KPQ*A>MkM
zgB;?nLXAH!9B=TTMiiI_?p<dq@Q5s>$Oju2oOhpktE}>gUql{1przg%o%JWl7kZnW
znlj;n4dB4Uamw7G-+T+}z+FuvBxKMwf-;n)w~jtq3i_8U<xd!TW51$-3ulu)`RDvk
z&z&~C12g3c%#o?Gbla6O0wI%Nt%vzctJfuG9543l&_?b*j%<EA;H0b~q<i?CVieP)
zDn$(=4~T4oJ2%(2>FC})m4XveO)|qG4?=DR2mnFaH-n3RPx|i(Rqi5qW-3P%OFPwZ
zq|BTh3`<Cvse1x~#)i}U7~?9`ETcAbc$bxq#jJ`%tH8!QV!?;#bl(2*&4^j%h|)}1
z`v(Zre+B)o#vNow`A#~0ccU|?k{NgpF!w=NE@K^&8qOyXo?_ecptxKSw;&r`l;%&C
zk?`qrb+%D<Mh+1<RR#hCQvD7B1?cExX4R#e!n`|zowxF`nj%ScQqM`BEoR}j*a>{1
zd8_OKZRO{_!;r+=l!6cjW(W+@yZUpw@eNF_UNP9*_7b_Y|F>H2`h4=*hUR;joTb0k
zLs8}p(ps8Xbb<+%R%$A<)I<n^dn$1U<dSb(@kl;GQ$eWnp#>tM*kkbw<%OG=5*ts}
zU|%|mbN?jq^FlIPC>yt;M_?HJ+fQPyPzfz3t45g8fz-q3MYd{~OE}+bKZZfPHT+YS
zCm(SQM_9^>C541z{NV97eeGqAW5aFz=Pdgs(O=Q;NTm4zQHE%wfi`(eV@CJIH8LAN
znXo}m3uleW1#a3QDpbRz%g%|KrTNQ5bN5*|4gO?)X;69T7rT<8L6DjH?3f%aw>9W*
zGV4`<Ummm{B2&B(9&gwfxZgkWM=|2HonKveIC;+q_vh)fl!eJr+vs$#7JxV#qz&GD
zr$(P|xIRlcgq^q99}Se+O2-b2=F^_e8|WJHDzC+iP#tL#Wb3mzbh%Aw(L)TJj>*7J
z;&M?P3H9m|Of$-Zg;?YAQl4ZMw2C+={rUCeL)gvRD=Ybadpn`!K|qg{j25vaAODVx
z9W+K2MpL;$Z+~JNR6W?Z?n!B56k4%F`d2`!_Nn0V2@BN~=vvgxqlvT8Zh_MAEsTI8
zdBUSm+-awYU2v@zxkO5N_$L#uA+b^*p8x*w1~ibR^?7-0%;KrWd`O8Wkzh1AOhVRu
zd5}JWKbZ@L*oaFw{}OS+*3m!`7;80AOL&}mIv`<6OyPt2QTQWo+nYHG4w@AeVn&SA
zMG_@<$bV)C*zzqt=j#yR@!AfDY~PO<dd75ik9QFi`M$&gr~?v=_AaGZ(}f{9&+D+H
zAJr%iC(uLN`mnel{F9!6h(GaM0Y?W5<(FGb5p@2QcRefgmOx$@2yXMZbV)rzV}rYq
zZJZD?%q{rTWSm300GGiTrNT2G!Jww?+<YbsIc>X*^7(#B7NPk4JlG(*#=7)dPV#v`
zGBRdJSo4zA2Qo&z`Q6gAePrNLGWed*B9QLl`N1Z*vgP;EU<SeI^GD-pW8wnBg}V_L
zkw4)tMVdnusGg9Latc>@RNEcFKrop^6;_b((ZH$@XS2f5uR;6AqVMb7Q}kFu>iynx
zRxN+O?ncyS42GuLPE$IagZq$+S*Z0(J9Rz?)f<ke0q~#2&>s+-(aEaT<@Tn~3Mx_F
z>h6`j;F7Zci<~C|$$}*eezfa)dS0)QG3O1cuMM}-!6}4s;6zV{XIVb2Z?s>V5rik6
zC`qY`&R)b(C{(jgZW(s1U6b@Y^Cq<UYHiPWNUGtzIKONr3<>NO$uYTOCb9OOkB^zN
ztJ(7<i#$}+tJD7uFQ4WjBbm-=AKSf|XOcmEJ@N3j*wy~00W1nlnAyA{pQp%C%Dol>
z{^5bBDvBhtjN?vTX3zZcK)pM<&3I$7N}TFwVNpR_)V6(WBgT{VK$aVeE*Yb<>$Ec_
zct|6}N<*&@){?b+2Hp7Jd_2{|rR74$-;G-Wfey{1-|0754JrDQhlz$Jub|t(3y!(d
zekh<4@g1a2Bz{`No0Ga&<jsTyS2$EO>0n9}W5-C3l=wR#C8;q~s-K&DE}ASZ$l)$;
zKc-6mw3wEg4JIt{^CalW8gA>w8R&954fgY3zoi3EINQx`FV1Jbjzi|UV3xO5LNHZ8
zr*$Wgla6q_lJg%N^ZPxQS(&MVO8Q)|`I^?RWtdlsbi5Md@G8!U4!huW?5_jri&q1A
znh#gj1{MN)WZIpkN$X4Lb$6O+Ta{n~+xs;Bnmb#08^RKy?q6P>P2JDaA*hm2AVHyo
z6wL`D2smBmvE@p4bO&!sU-cO_S9)6x#K(qZWf2yj{N1`D6TAyh07{5Eky;1#?Y?Kb
z(=Z0mg>|TFh#O(hWjlO3M9vyZAA;>ldbSU+(WJUojwUfpYnz^Tr>7?+9#Y71G)Wa#
zocPkWI?~Cki1we5s+96BZ(-=~H>2)xJRMZ^J;tmUu{UO7a`6+UP3k9bV*3j@sv~fP
z#bz|^7Z`LAz;@?Qts7`Q5W3~G?<4s@@`AJH4m(U*NFWdA`)vP@a)s`?RXmB0V@F7k
zExQ@AB^O8^`3{_=<nW!7nBw5oCGY9qn1TV!I?Klg?MjArfaHrPKe@#wogw{*L|Y{e
z1DqXvb&T-6Tmi630xG~MuBV-sN@<QN(qvT}z1iit^uzDL#_Tl&_vJS3kzC+EhV?|P
z$7fRyr<ofqRW&hRSVU_kO?cGRSxJF6eHE9eXFJz!rk9&REn`%Tp2Ct0+A&u?R3y$#
zJyL@t)jJ>1ADnik;~LNLo(LHyN*aZ={h+es=Z;`c+f<;FTD(TPn2a}@0ZyYrm2Ak+
zX}wP*mCgFy{dcG0{t-X!_Z;i*|ITZSvcF<1N+JE?4gI$jv;e8VRKJz&qS$kl>q+%G
zV5LF2&d5!L0r{jr9m2IgH1_0OO<s(Dq$q21ZySTZtd%*|ft;?21}2=bM9b8F_}WQA
zZm~An$CbLTxijcTEz!eAwCso!dp)HGX}06kCJIu+4aeF8&f3sq2@yWbt0L;7c})k}
zY*3TJjolg<ZGgD*DH9-H>B5IK66Y087JM|gn|kL&L!6U7AF#y$f3?5m+0BjRs3^#f
zsVz^m@hBL7$wfh`;m#+Br~Jh@e9f>!$%6Q$G_QzpsO?f`IENGiwjMk4!T;)omb}WQ
z2)-X~Sh4Kb7_guV!cTYh^;}h8LbwL)<+Ztbi381~=l>xmcUKa$3$gSjYExk1La-Al
zVDZWWuC`&n71RwUFlM7Zx<fY??-94j97Yu3Sy@uHgC0q?ONr_rJ5fPyvv!^W6axvd
zIqfxL4m>tGQ6yB6)fLXrlYA~^>XXP?JlpstG*nXA&8%`yb;EG60h#v^r7QGb)#5`^
zF$@-?-L9D?+v4%-26sJn@T<tI;t}~NN>1OpMrd*|csyhd_{oLqcO2eW4Z6ym1Z2ok
z72n(6OvgziRPVa>2Jp2a{Og<6;*u%eepcCDO#a2DJ|D$93mJLNdN7wt%!Ys5)c@72
zeR0I(II4T7+wxBq*7a@Tk{SNDvpMXzdd``f>8j|*(V1p;+i6da%QC=W)LyFSaU|^T
z=nKS=Mdrf<XAl*+38aXhD{R8Rn4Ih*nE_}K+>_wh=;=#Q7^I6LA}PSNnS?={);@CZ
zkJ9eh%t>Sw8@DqGNC9e5^~t^6@9vx_+z9it1>)DGl&3!3G!)&EK3FtYOOZRC0h|O0
zw1jUgX#;v@nZ$&!uFf3fkOJ&hQ$`s50ZIHl8&mv{Sd<2CU0vCN@o!q=_Zsh(77ry0
z{khlT6^+wvDQehW6p-uR1f@PA5M*76*S(YiaYp)EK7V%{t$w76&z=kuEsbd?bqbT)
zfPdQK2+b~OPq+*E(!n;Oq@K4)V&zz-?*ea9)i9E0D*N5^)jRI|{n)0L?&a$IkV@H6
z0+AbHGfG4$<RBNA=nV1__`SM8nBvh9QvXmuC31-r4xN9#Uz@2?Ji$3<#zw3^kz#+J
z2JuWy8$kK#a%>9%5T`8WE*|7MtgkfTwj$`&?^Ad?a#-7b$nj#nyN+WftC)!;Egb*y
zTb}!;RPPW&cfgx^I@W}cvR--fXMqRg%Ai^xdS>G+z<~!~)nQ`iUliLr3Y{iSdF#un
zdg>PZ>$&9<uHUSUwDxxIv-00(Z#*zrv3JAxETpD`K}w>6THbY_>q6o7PR+)(@RUbQ
z4gkT!QY7c${Yy&7;Der|qShy2dKXGfV$X;9dnOu!^5(d%Jur(L?d0@e7kY9q?EXA^
zD{_lhi=YqB{Z}BPPBShBpf|Xv@0K(;RqOMh2;&(a7%;6b=vE5D3$)(9V4DbWjKMHm
zFp+{o$?yK#Me&KpS0x*LPx*)d@!^M0{pRa)+8r$ct^yyo2zGa73{`KR4~#!S7*3>L
zC++bApdI3iZ|O&Ivp!_!Y;qEcBzFi?*gAglxxXBRez)r^x2X!*oYW7nF3(o_TE!K*
zGJHVJ7NCD$Dx8mzp(SPt%>D<GQ<urvtwkV6Kbr;UvWvcV#TXrvUh&OuR{9i2v%j@}
z6o%FGmJzTom$WID&Yf#S0bA6JAp0MLNAZD_r}Z-cI%EOB31rCGuUz;eO<8JbU!lV=
z_{6w+$U&(a<?FoN{LO>$O+$Q_(5zb`a2M^pf%5}!pGA#bxbn@hgmaL>DRkS|#_>Kk
zd=FBpW$`_%r7@m^7R_uvLZ1`!bc-C6%dtCDr9g%1p<kSv#kALhUjHtU*32`=zzlEJ
zZCAkoz(DxH?iy3KtY$@rvGHj7XZO;BrcZ3fuczT58uGdVTqAxpgi5*Q$jTh-h?9aw
zF=2V_M)^rRTpbW^b&=`OjHrPhivO<J>vO-y)!`7;F>d+VcdQLI;oJ4vfj#i_u`alB
zsq*d@6o4i1n%e$#;iW1kt%0~7pbAxUm4o)|*SQgY4@{0}Q|(S^)>$BH0VaT&zXR2;
z<ch`t!*AmDB<DaN;{p__sWBDUL~Yj;;!aVs+ccZkE;5INb?mTtmLVApZ{Y(AOYC1M
z2^^u31!+QuZ^+DzR$(H@hWYpdzc61)r^nw2Q?8)9QAUXPYf#q}w7pADkkfKabVrZ0
zs6FW}NC};TBrF8v`VHPo7Z0z}O|qyX=;>5DQz5Tc<X)9Lgs-f8-EL`G9ZmsPD7K(}
zaULF2XS%_<rjm?gMW~aBcUpo-4Sz6Ae9sv?X&4&%tDRwC6n7Vtmx)4!rPYGxT)aM3
zx%#cy{Di_^G6=e^|L)uzL6BuNSuB6<*JTV`syvCGcq-9M1UktvGg8nsYVVj7bJG)D
zG_ycsf=avybwIc%o(MGZ-o8-QJ|pQOlu?9MS$zy1)DmTZ)teFKe%UVK#%eq*|NKBA
z0H@=8h^ZDICE^ycoLUq2o>-AIQs5-|AeKBLCVjli^3v24ISdBBagGB6W=uokTXk;>
zTfa(9VhC@I?@z&n#r4<|96!}xMlR!XItUF2w6sE2F^m!VyLYQqI<i#kI^sV6j<QyC
znMp?$T&ifDjBCpAyaWDKbZ1>uHtwW5qfdsm*GGc3b2apoe0#MYber~kmcuj3acA{+
z8!cqgLUx&JT2E5tY5p!UWQ!2LB>L+n<wEhrJMs`7%cuNO^LOC-%>r@splo7+RCOz2
zWSz=B12Gfcq*MdEI@HQIj*Knhisgk<fLquS*U$-3Y7x^@Swr!Y!cS&j=LX$B_gD3J
zfiQW(9SYC^#l_JyFfzQVM*^36l&UsQP@FA(^Wd%?*x-%`pvM3=MtFF5VAaM4U$Of^
zcP4|PW{8&t;Xfxo%X1HP74zP3Qg~V3gNR(dYCd~$ZglIKKPxn6BJ1YkB4*fK{hmYv
zc4Do-_TZ}NY*c;+ds_qJWXgXGsIQCumyBLq%=@zStm5ht3own*5R#_&X*>|#%i791
z;(gx<LB4+~Lxa5Rb_$>l4lZIHvF3zZ4btJlWbjI`ZxMke918_$CzWO9Q+roG&KCB3
zL;+@EiM+aQ^|r5X#hdU+L^*PjJWGYl6q%8?#`SF-0MlB4IXSk^{Ps3~e#r=64eCps
zO~iz-x6a3yzTi8rAo#|{8-L7aeR!KQzhnu>`H_}CF;-W$Ieq)Qo?7RYx|V)q`mFy|
S&%ZAWKwI5FtxV-9>i+-@YJ#Q!
literal 0
HcmV?d00001
diff --git a/srcpkgs/unity/files/unity-panel-service-lockscreen/run b/srcpkgs/unity/files/unity-panel-service-lockscreen/run
new file mode 100644
index 00000000000000..fa10e763977764
--- /dev/null
+++ b/srcpkgs/unity/files/unity-panel-service-lockscreen/run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /usr/lib/unity/unity-panel-service --lockscreen-mode
diff --git a/srcpkgs/unity/files/unity-panel-service/run b/srcpkgs/unity/files/unity-panel-service/run
new file mode 100644
index 00000000000000..ee7980b736ced6
--- /dev/null
+++ b/srcpkgs/unity/files/unity-panel-service/run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /usr/lib/unity/unity-panel-service
diff --git a/srcpkgs/unity/files/unity.pam b/srcpkgs/unity/files/unity.pam
new file mode 100644
index 00000000000000..ceeec501e192b8
--- /dev/null
+++ b/srcpkgs/unity/files/unity.pam
@@ -0,0 +1 @@
+auth optional pam_gnome_keyring.so
diff --git a/srcpkgs/unity/files/unity7/run b/srcpkgs/unity/files/unity7/run
new file mode 100644
index 00000000000000..35e0e62c738db5
--- /dev/null
+++ b/srcpkgs/unity/files/unity7/run
@@ -0,0 +1,3 @@
+#!/bin/sh
+/usr/lib/unity/compiz-profile-selector
+exec /usr/bin/compiz
diff --git a/srcpkgs/unity/patches/0004-Remove-social.scope.patch b/srcpkgs/unity/patches/0004-Remove-social.scope.patch
new file mode 100644
index 00000000000000..3919a7f5eadce2
--- /dev/null
+++ b/srcpkgs/unity/patches/0004-Remove-social.scope.patch
@@ -0,0 +1,25 @@
+From 67ad6e4de6ed5771627c9e2c4a77bcff19cd3e60 Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Thu, 10 Apr 2014 20:17:50 -0400
+Subject: [PATCH 4/6] Remove social.scope
+
+---
+ data/com.canonical.Unity.gschema.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/data/com.canonical.Unity.gschema.xml b/data/com.canonical.Unity.gschema.xml
+index 189e705..65c7278 100644
+--- a/data/com.canonical.Unity.gschema.xml
++++ b/data/com.canonical.Unity.gschema.xml
+@@ -188,7 +188,7 @@
+ </schema>
+ <schema path="/com/canonical/unity/dash/" id="com.canonical.Unity.Dash" gettext-domain="unity">
+ <key type="as" name="scopes">
+- <default>[ 'home.scope', 'applications.scope', 'files.scope', 'video.scope', 'music.scope', 'photos.scope', 'social.scope' ]</default>
++ <default>[ 'home.scope', 'applications.scope', 'files.scope', 'video.scope', 'music.scope', 'photos.scope' ]</default>
+ <summary>List of scope ids specifying which scopes should be created and the order to display them in.</summary>
+ <description>The scopes listed in the scope bar will be ordered according to this list.</description>
+ </key>
+--
+2.10.2
+
diff --git a/srcpkgs/unity/patches/0005-Remove-xpathselect-dependency.patch b/srcpkgs/unity/patches/0005-Remove-xpathselect-dependency.patch
new file mode 100644
index 00000000000000..6fa9e71c2da099
--- /dev/null
+++ b/srcpkgs/unity/patches/0005-Remove-xpathselect-dependency.patch
@@ -0,0 +1,563 @@
+From 46aaa3f1bb103cea0cc8da7c9b1b8715f0f2971a Mon Sep 17 00:00:00 2001
+From: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+Date: Mon, 29 Sep 2014 14:49:09 -0400
+Subject: [PATCH 5/6] Remove xpathselect dependency
+
+---
+ CMakeLists.txt | 1 -
+ plugins/unityshell/src/unityshell.cpp | 1 -
+ plugins/unityshell/src/unityshell.h | 2 -
+ unity-shared/CMakeLists.txt | 1 -
+ unity-shared/DebugDBusInterface.cpp | 431 ----------------------------------
+ unity-shared/DebugDBusInterface.h | 45 ----
+ 6 files changed, 481 deletions(-)
+ delete mode 100644 unity-shared/DebugDBusInterface.cpp
+ delete mode 100644 unity-shared/DebugDBusInterface.h
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4358c3f..7c8fa85 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -250,7 +250,6 @@ set(UNITY_PLUGIN_SHARED_DEPS
+ nux-4.0>=4.0.5
+ sigc++-2.0>=2.4.0
+ unity-misc>=0.4.0
+- xpathselect=1.4
+ zeitgeist-2.0
+ )
+
+diff --git a/plugins/unityshell/src/unityshell.cpp b/plugins/unityshell/src/unityshell.cpp
+index ca920df..ff3b476 100644
+--- a/plugins/unityshell/src/unityshell.cpp
++++ b/plugins/unityshell/src/unityshell.cpp
+@@ -196,7 +196,6 @@
+ , WM(PluginAdapter::Initialize(screen))
+ , menus_(std::make_shared<menu::Manager>(std::make_shared<indicator::DBusIndicators>(), std::make_shared<key::GnomeGrabber>()))
+ , deco_manager_(std::make_shared<decoration::Manager>(menus_))
+- , debugger_(this)
+ , session_(std::make_shared<session::GnomeManager>())
+ , needsRelayout(false)
+ , super_keypressed_(false)
+diff --git a/plugins/unityshell/src/unityshell.h b/plugins/unityshell/src/unityshell.h
+index 43df66e..03a8675 100644
+--- a/plugins/unityshell/src/unityshell.h
++++ b/plugins/unityshell/src/unityshell.h
+@@ -64,7 +64,6 @@
+ #include "PanelController.h"
+ #include "PanelStyle.h"
+ #include "UScreen.h"
+-#include "DebugDBusInterface.h"
+ #include "ScreenIntrospection.h"
+ #include "ScreenSaverDBusManager.h"
+ #include "SwitcherController.h"
+@@ -340,7 +339,6 @@ private:
+ lockscreen::DBusManager::Ptr screensaver_dbus_manager_;
+ lockscreen::Controller::Ptr lockscreen_controller_;
+ ui::EdgeBarrierController::Ptr edge_barriers_;
+- debug::DebugDBusInterface debugger_;
+ std::unique_ptr<BGHash> bghash_;
+ spread::Widgets::Ptr spread_widgets_;
+
+diff --git a/unity-shared/CMakeLists.txt b/unity-shared/CMakeLists.txt
+index b0ac7b1..2b61100 100644
+--- a/unity-shared/CMakeLists.txt
++++ b/unity-shared/CMakeLists.txt
+@@ -23,7 +23,6 @@ set (UNITY_SHARED_SOURCES
+ CoverArt.cpp
+ BackgroundEffectHelper.cpp
+ DashStyle.cpp
+- DebugDBusInterface.cpp
+ DecorationStyle.cpp
+ DefaultThumbnailProvider.cpp
+ DeltaRestrainment.cpp
+diff --git a/unity-shared/DebugDBusInterface.cpp b/unity-shared/DebugDBusInterface.cpp
+deleted file mode 100644
+index 73bea0d..0000000
+--- a/unity-shared/DebugDBusInterface.cpp
++++ /dev/null
+@@ -1,431 +0,0 @@
+-// -*- Mode: C++; indent-tabs-mode: nil; tab-width: 2 -*-
+-/*
+- * Copyright (C) 2010-2013 Canonical Ltd
+- *
+- * This program is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License version 3 as
+- * published by the Free Software Foundation.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+- *
+- * Authored by: Alex Launi <alex.launi@canonical.com>
+- * Thomi Richards <thomi.richards@canonical.com>
+- * Marco Trevisan <marco.trevisan@canonical.com>
+- */
+-
+-#include <fstream>
+-#include <iostream>
+-#include <sstream>
+-#include <boost/algorithm/string.hpp>
+-#include <NuxCore/Logger.h>
+-#include <NuxCore/LoggingWriter.h>
+-#include <UnityCore/GLibDBusServer.h>
+-#include <UnityCore/Variant.h>
+-#include <xpathselect/xpathselect.h>
+-#include <dlfcn.h>
+-
+-#include "DebugDBusInterface.h"
+-#include "Introspectable.h"
+-
+-namespace unity
+-{
+-namespace debug
+-{
+-namespace
+-{
+-
+-DECLARE_LOGGER(logger, "unity.debug.interface");
+-
+-namespace local
+-{
+- const std::string PROTOCOL_VERSION = "1.4";
+- const std::string XPATH_SELECT_LIB = "libxpathselect.so.1.4";
+-
+- class IntrospectableAdapter : public std::enable_shared_from_this<IntrospectableAdapter>, public xpathselect::Node
+- {
+- public:
+- typedef std::shared_ptr<IntrospectableAdapter const> Ptr;
+- IntrospectableAdapter(Introspectable* node, IntrospectableAdapter::Ptr const& parent = nullptr)
+- : node_(node)
+- , parent_(parent)
+- , full_path_((parent_ ? parent_->GetPath() : "") + "/" + GetName())
+- {}
+-
+- int32_t GetId() const
+- {
+- return node_->GetIntrospectionId();
+- }
+-
+- std::string GetName() const
+- {
+- return node_->GetName();
+- }
+-
+- std::string GetPath() const
+- {
+- return full_path_;
+- }
+-
+- Node::Ptr GetParent() const
+- {
+- return parent_;
+- }
+-
+- bool MatchStringProperty(std::string const& name, std::string const& value) const
+- {
+- auto const& prop_value = GetPropertyValue(name);
+-
+- if (prop_value)
+- {
+- if (!g_variant_is_of_type(prop_value, G_VARIANT_TYPE_STRING))
+- {
+- LOG_WARNING(logger) << "Unable to match '"<< name << "', '" <<
+- prop_value << "' is not a string property.";
+- return false;
+- }
+-
+- return (prop_value.GetString() == value);
+- }
+-
+- return false;
+- }
+-
+- bool MatchBooleanProperty(std::string const& name, bool value) const
+- {
+- auto const& prop_value = GetPropertyValue(name);
+-
+- if (prop_value)
+- {
+- if (!g_variant_is_of_type(prop_value, G_VARIANT_TYPE_BOOLEAN))
+- {
+- LOG_WARNING(logger) << "Unable to match '"<< name << "', '" <<
+- prop_value << "' is not a boolean property.";
+- return false;
+- }
+-
+- return (prop_value.GetBool() == value);
+- }
+-
+- return false;
+- }
+-
+- bool MatchIntegerProperty(std::string const& name, int32_t value) const
+- {
+- auto const& prop_value = GetPropertyValue(name);
+-
+- if (prop_value)
+- {
+- GVariantClass prop_val_type = g_variant_classify(prop_value);
+- // it'd be nice to be able to do all this with one method.
+- // I can't figure out how to group all the integer types together
+- switch (prop_val_type)
+- {
+- case G_VARIANT_CLASS_BYTE:
+- return static_cast<unsigned char>(value) == prop_value.GetByte();
+- case G_VARIANT_CLASS_INT16:
+- return value == prop_value.GetInt16();
+- case G_VARIANT_CLASS_UINT16:
+- return static_cast<uint16_t>(value) == prop_value.GetUInt16();
+- case G_VARIANT_CLASS_INT32:
+- return value == prop_value.GetInt32();
+- case G_VARIANT_CLASS_UINT32:
+- return static_cast<uint32_t>(value) == prop_value.GetUInt32();
+- case G_VARIANT_CLASS_INT64:
+- return value == prop_value.GetInt64();
+- case G_VARIANT_CLASS_UINT64:
+- return static_cast<uint64_t>(value) == prop_value.GetUInt64();
+- default:
+- LOG_WARNING(logger) << "Unable to match '"<< name << "', '" <<
+- prop_value << "' is not a known integer property.";
+- };
+- }
+-
+- return false;
+- }
+-
+- glib::Variant GetPropertyValue(std::string const& name) const
+- {
+- if (name == "id")
+- return glib::Variant(GetId());
+-
+- IntrospectionData introspection;
+- node_->AddProperties(introspection);
+-
+- glib::Variant value(g_variant_lookup_value(glib::Variant(introspection.Get()), name.c_str(), nullptr), glib::StealRef());
+-
+- if (!value)
+- return nullptr;
+-
+- if (!g_variant_is_of_type(value, G_VARIANT_TYPE_ARRAY) || g_variant_n_children(value) != 2)
+- {
+- LOG_ERROR(logger) << "Property value for '"<< name << "' should be a 2-sized array, got instead '" << value << "'";
+- return nullptr;
+- }
+-
+- glib::Variant child(g_variant_get_child_value(value, 1), glib::StealRef());
+-
+- if (g_variant_is_of_type(child, G_VARIANT_TYPE_VARIANT))
+- return child.GetVariant();
+-
+- return child;
+- }
+-
+- std::vector<xpathselect::Node::Ptr> Children() const
+- {
+- std::vector<xpathselect::Node::Ptr> children;
+- auto const& this_ptr = shared_from_this();
+-
+- for (auto* child : node_->GetIntrospectableChildren())
+- {
+- if (!child)
+- continue;
+-
+- children.push_back(std::make_shared<IntrospectableAdapter>(child, this_ptr));
+- }
+-
+- return children;
+- }
+-
+- Introspectable* Node() const
+- {
+- return node_;
+- }
+-
+- private:
+- Introspectable* node_;
+- IntrospectableAdapter::Ptr parent_;
+- std::string full_path_;
+- };
+-
+- namespace xpathselect
+- {
+-
+- struct NodeSelector
+- {
+- NodeSelector()
+- : driver_(dlopen(XPATH_SELECT_LIB.c_str(), RTLD_LAZY))
+- , node_selector_(driver_ ? reinterpret_cast<select_nodes_t>(dlsym(driver_, "SelectNodes")) : nullptr)
+- {
+- if (const char* err = dlerror())
+- {
+- LOG_WARNING(logger) << "Unable to load entry point in libxpathselect: " << err
+- << " -- full D-Bus introspection will not be available";
+- Close();
+- }
+- }
+-
+- ~NodeSelector() { Close(); }
+- bool IsAvailable() const { return driver_; }
+- operator bool() const { return IsAvailable(); }
+-
+- ::xpathselect::NodeVector SelectNodes(::xpathselect::Node::Ptr const& root, std::string const& query)
+- {
+- if (!IsAvailable())
+- return ::xpathselect::NodeVector();
+-
+- return node_selector_(root, query);
+- }
+-
+- private:
+- void Close()
+- {
+- if (driver_)
+- {
+- dlclose(driver_);
+- driver_ = nullptr;
+- }
+- }
+-
+- void* driver_;
+- typedef decltype(&::xpathselect::SelectNodes) select_nodes_t;
+- select_nodes_t node_selector_;
+- };
+-
+- } // xpathselect namespace
+-
+-} // local namespace
+-} // anonymous namespace
+-
+-namespace dbus
+-{
+-const std::string BUS_NAME = "com.canonical.Unity";
+-const std::string OBJECT_PATH = "/com/canonical/Unity/Debug";
+-
+-const std::string INTROSPECTION_XML =
+- " <node>"
+- " <interface name='com.canonical.Autopilot.Introspection'>"
+- ""
+- " <method name='GetState'>"
+- " <arg type='s' name='piece' direction='in' />"
+- " <arg type='a(sv)' name='state' direction='out' />"
+- " </method>"
+- ""
+- " <method name='GetVersion'>"
+- " <arg type='s' name='version' direction='out' />"
+- " </method>"
+- ""
+- " </interface>"
+- ""
+- " <interface name='com.canonical.Unity.Debug.Logging'>"
+- ""
+- " <method name='StartLogToFile'>"
+- " <arg type='s' name='file_path' direction='in' />"
+- " </method>"
+- ""
+- " <method name='ResetLogging'>"
+- " </method>"
+- ""
+- " <method name='SetLogSeverity'>"
+- " <arg type='s' name='log_component' direction='in' />"
+- " <arg type='s' name='severity' direction='in' />"
+- " </method>"
+- ""
+- " <method name='LogMessage'>"
+- " <arg type='s' name='severity' direction='in' />"
+- " <arg type='s' name='message' direction='in' />"
+- " </method>"
+- ""
+- " </interface>"
+- " </node>";
+-}
+-
+-struct DebugDBusInterface::Impl
+-{
+- Impl(Introspectable*);
+-
+- GVariant* HandleDBusMethodCall(std::string const&, GVariant*);
+- GVariant* GetState(std::string const&);
+-
+- void StartLogToFile(std::string const&);
+- void ResetLogging();
+- void SetLogSeverity(std::string const& log_component, std::string const& severity);
+- void LogMessage(std::string const& severity, std::string const& message);
+-
+- Introspectable* introspection_root_;
+- local::xpathselect::NodeSelector xns_;
+- glib::DBusServer::Ptr server_;
+- std::ofstream output_file_;
+-};
+-
+-DebugDBusInterface::DebugDBusInterface(Introspectable* root)
+- : impl_(new DebugDBusInterface::Impl(root))
+-{}
+-
+-DebugDBusInterface::~DebugDBusInterface()
+-{}
+-
+-DebugDBusInterface::Impl::Impl(Introspectable* root)
+- : introspection_root_(root)
+- , server_((introspection_root_ && xns_) ? std::make_shared<glib::DBusServer>(dbus::BUS_NAME) : nullptr)
+-{
+- if (server_)
+- {
+- server_->AddObjects(dbus::INTROSPECTION_XML, dbus::OBJECT_PATH);
+-
+- for (auto const& obj : server_->GetObjects())
+- obj->SetMethodsCallsHandler(sigc::mem_fun(this, &Impl::HandleDBusMethodCall));
+- }
+-}
+-
+-GVariant* DebugDBusInterface::Impl::HandleDBusMethodCall(std::string const& method, GVariant* parameters)
+-{
+- if (method == "GetState")
+- {
+- const gchar* input;
+- g_variant_get(parameters, "(&s)", &input);
+-
+- return GetState(input);
+- }
+- else if (method == "GetVersion")
+- {
+- return g_variant_new("(s)", local::PROTOCOL_VERSION.c_str());
+- }
+- else if (method == "StartLogToFile")
+- {
+- const gchar* log_path;
+- g_variant_get(parameters, "(&s)", &log_path);
+-
+- StartLogToFile(log_path);
+- }
+- else if (method == "ResetLogging")
+- {
+- ResetLogging();
+- }
+- else if (method == "SetLogSeverity")
+- {
+- const gchar* component;
+- const gchar* severity;
+- g_variant_get(parameters, "(&s&s)", &component, &severity);
+-
+- SetLogSeverity(component, severity);
+- }
+- else if (method == "LogMessage")
+- {
+- const gchar* severity;
+- const gchar* message;
+- g_variant_get(parameters, "(&s&s)", &severity, &message);
+-
+- LogMessage(severity, message);
+- }
+-
+- return nullptr;
+-}
+-
+-GVariant* DebugDBusInterface::Impl::GetState(std::string const& query)
+-{
+- GVariantBuilder builder;
+- g_variant_builder_init(&builder, G_VARIANT_TYPE("a(sv)"));
+-
+- auto root_node = std::make_shared<local::IntrospectableAdapter>(introspection_root_);
+- for (auto const& n : xns_.SelectNodes(root_node, query))
+- {
+- auto p = std::static_pointer_cast<local::IntrospectableAdapter const>(n);
+- if (p)
+- g_variant_builder_add(&builder, "(sv)", p->GetPath().c_str(), p->Node()->Introspect());
+- }
+-
+- return g_variant_new("(a(sv))", &builder);
+-}
+-
+-void DebugDBusInterface::Impl::StartLogToFile(std::string const& file_path)
+-{
+- if (output_file_.is_open())
+- output_file_.close();
+-
+- output_file_.open(file_path);
+- nux::logging::Writer::Instance().SetOutputStream(output_file_);
+-}
+-
+-void DebugDBusInterface::Impl::ResetLogging()
+-{
+- if (output_file_.is_open())
+- output_file_.close();
+-
+- nux::logging::Writer::Instance().SetOutputStream(std::cout);
+- nux::logging::reset_logging();
+-}
+-
+-void DebugDBusInterface::Impl::SetLogSeverity(std::string const& log_component, std::string const& severity)
+-{
+- nux::logging::Logger(log_component).SetLogLevel(nux::logging::get_logging_level(severity));
+-}
+-
+-void DebugDBusInterface::Impl::LogMessage(std::string const& severity, std::string const& message)
+-{
+- nux::logging::Level level = nux::logging::get_logging_level(severity);
+- nux::logging::Logger const& log_ref = Unwrap(logger);
+- if (log_ref.GetEffectiveLogLevel() <= level)
+- {
+- nux::logging::LogStream(level, log_ref.module(), __FILE__, __LINE__).stream()
+- << message;
+- }
+-}
+-
+-} // debug namepsace
+-} // unity namespace
+diff --git a/unity-shared/DebugDBusInterface.h b/unity-shared/DebugDBusInterface.h
+deleted file mode 100644
+index 4083a61..0000000
+--- a/unity-shared/DebugDBusInterface.h
++++ /dev/null
+@@ -1,45 +0,0 @@
+-// -*- Mode: C++; indent-tabs-mode: nil; tab-width: 2 -*-
+-/*
+- * Copyright (C) 2010-2013 Canonical Ltd
+- *
+- * This program is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License version 3 as
+- * published by the Free Software Foundation.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+- *
+- * Authored by: Alex Launi <alex.launi@canonical.com>
+- * Marco Trevisan <marco.trevisan@canonical.com>
+- */
+-
+-#ifndef UNITY_DEBUG_DBUS_INTERFACE_H
+-#define UNITY_DEBUG_DBUS_INTERFACE_H
+-
+-#include <memory>
+-
+-namespace unity
+-{
+-namespace debug
+-{
+-class Introspectable;
+-
+-class DebugDBusInterface
+-{
+-public:
+- DebugDBusInterface(Introspectable* root);
+- ~DebugDBusInterface();
+-
+-private:
+- struct Impl;
+- std::unique_ptr<Impl> impl_;
+-};
+-}
+-}
+-
+-#endif /* _DEBUG_DBUS_INTERFACE_H */
+--
+2.10.2
+
diff --git a/srcpkgs/unity/patches/filemanager.patch b/srcpkgs/unity/patches/filemanager.patch
new file mode 100644
index 00000000000000..a3cb3b15c65aef
--- /dev/null
+++ b/srcpkgs/unity/patches/filemanager.patch
@@ -0,0 +1,11 @@
+--- a/unity-shared/FileManager.cpp 2022-09-13 20:31:15.000000000 +0530
++++ b/unity-shared/FileManager.cpp 2022-11-08 21:06:18.993493949 +0530
+@@ -52,7 +52,7 @@
+ }
+ }
+
+- return fm;
++ return NemoFileManager::Get();
+ }
+
+ } // namespace unity
diff --git a/srcpkgs/unity/patches/fix-systemd-user-dir.patch b/srcpkgs/unity/patches/fix-systemd-user-dir.patch
new file mode 100644
index 00000000000000..e9da307e9041ee
--- /dev/null
+++ b/srcpkgs/unity/patches/fix-systemd-user-dir.patch
@@ -0,0 +1,8 @@
+diff -p1ru a/data/CMakeLists.txt b/data/CMakeLists.txt
+--- a/data/CMakeLists.txt 2023-02-23 02:37:44.000000000 +0800
++++ b/data/CMakeLists.txt 2024-07-27 09:32:29.100314406 +0800
+@@ -41,3 +41,3 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR
+ configure_file(unity7.service.in ${CMAKE_CURRENT_BINARY_DIR}/unity7.service @ONLY)
+-pkg_get_variable(SYSTEMD_USER_DIR systemd systemduserunitdir)
++set(SYSTEMD_USER_DIR "${CMAKE_INSTALL_PREFIX}/lib/systemd/user")
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/unity7.service DESTINATION ${SYSTEMD_USER_DIR})
diff --git a/srcpkgs/unity/patches/fix-unity-python-script.patch b/srcpkgs/unity/patches/fix-unity-python-script.patch
new file mode 100644
index 00000000000000..2491240ff09f6c
--- /dev/null
+++ b/srcpkgs/unity/patches/fix-unity-python-script.patch
@@ -0,0 +1,8 @@
+diff -p1ru a/tools/unity.cmake b/tools/unity.cmake
+--- a/tools/unity.cmake 2023-02-23 02:37:45.000000000 +0800
++++ b/tools/unity.cmake 2024-08-06 08:22:11.142714435 +0800
+@@ -170,3 +170,3 @@ def process_and_start_unity (compiz_args
+
+- if run_command == DEFAULT_COMMAND and not options.ignore_session_manager and \
++ if run_command == DEFAULT_COMMAND and \
+ (is_upstart_session() or is_systemd_session()):
diff --git a/srcpkgs/unity/patches/remove-niceties.patch b/srcpkgs/unity/patches/remove-niceties.patch
new file mode 100644
index 00000000000000..85cb5038b83508
--- /dev/null
+++ b/srcpkgs/unity/patches/remove-niceties.patch
@@ -0,0 +1,58 @@
+diff -p1ru a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt 2023-02-23 02:37:59.000000000 +0800
++++ b/CMakeLists.txt 2024-07-27 12:42:06.728100337 +0800
+@@ -103,54 +103,2 @@ endif (CMAKE_BUILD_TYPE MATCHES coverage
+
+-
+-#
+-# Niceties
+-#
+-set (ARCHIVE_NAME unity-${UNITY_VERSION})
+-
+-add_custom_target (pre-distcheck
+- COMMAND echo ""
+- && echo "• Releasing Unity ${UNITY_VERSION}"
+- && cd ${CMAKE_SOURCE_DIR}
+- && echo "• Generating ChangeLog"
+- && bzr log --gnu-changelog > ChangeLog
+- && echo "• Generating AUTHORS"
+- && bzr log --long --levels=0 | grep -e "^\\s*author:" | cut -d ":" -f 2 | sed "s/,/\n/g" | sed -r -f AUTHOR-glue | sort -u | uniq -i > AUTHORS
+- && echo "• Running Distcheck"
+- )
+-
+-add_custom_target (dist
+- COMMAND echo "• Creating Tarball"
+- && bzr export --root=${ARCHIVE_NAME} ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2
+- && echo "• Signing Tarball"
+- && gpg --armor --sign --detach-sig ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2
+- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+- )
+-add_dependencies(dist pre-distcheck)
+-
+-add_custom_target (distcheck
+- COMMAND cd ${CMAKE_BINARY_DIR}
+- && rm -rf ${ARCHIVE_NAME}
+- && tar xf ${ARCHIVE_NAME}.tar.bz2
+- && mkdir ${ARCHIVE_NAME}/build
+- && cd ${ARCHIVE_NAME}/build
+- && cmake -DCMAKE_INSTALL_PREFIX=../install -DGSETTINGS_LOCALINSTALL=ON .. -DCMAKE_MODULE_PATH=/usr/share/cmake
+- && make
+- && make install
+- && make check-headless
+- )
+-add_dependencies(distcheck dist)
+-
+-add_custom_target (post-distcheck
+- COMMAND echo "• Committing Release"
+- && bzr commit -m\"Release ${UNITY_VERSION}\" --unchanged
+- && echo "• Tagging Release"
+- && bzr tag ${UNITY_VERSION}
+- && echo "• Unity ${UNITY_VERSION} is ready for release."
+- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+- )
+-add_dependencies(post-distcheck distcheck)
+-
+-add_custom_target (release)
+-add_dependencies (release distcheck)
+-
+ #
diff --git a/srcpkgs/unity/patches/remove-ubuntu-specific.patch b/srcpkgs/unity/patches/remove-ubuntu-specific.patch
new file mode 100644
index 00000000000000..2dc8111ab7a750
--- /dev/null
+++ b/srcpkgs/unity/patches/remove-ubuntu-specific.patch
@@ -0,0 +1,37 @@
+diff -p1ru a/lockscreen/LockScreenController.cpp b/lockscreen/LockScreenController.cpp
+--- a/lockscreen/LockScreenController.cpp 2023-02-23 02:37:44.000000000 +0800
++++ b/lockscreen/LockScreenController.cpp 2024-07-27 08:43:21.362157940 +0800
+@@ -96,7 +96,2 @@ Controller::Controller(DBusManager::Ptr
+ suspend_inhibitor_manager_->about_to_suspend.connect([this] () {
+- if (Settings::Instance().lock_on_suspend())
+- {
+- InhibitPaint();
+- session_manager_->PromptLockScreen();
+- }
+ });
+@@ -106,3 +101,2 @@ Controller::Controller(DBusManager::Ptr
+
+- Settings::Instance().lock_on_suspend.changed.connect(sigc::hide(sigc::mem_fun(this, &Controller::SyncInhibitor)));
+ Settings::Instance().use_legacy.changed.connect(sigc::hide(sigc::mem_fun(this, &Controller::SyncInhibitor)));
+@@ -603,3 +597,2 @@ void Controller::SyncInhibitor()
+ !locked &&
+- Settings::Instance().lock_on_suspend() &&
+ !Settings::Instance().use_legacy();
+diff -p1ru a/lockscreen/LockScreenSettings.cpp b/lockscreen/LockScreenSettings.cpp
+--- a/lockscreen/LockScreenSettings.cpp 2023-02-23 02:37:44.000000000 +0800
++++ b/lockscreen/LockScreenSettings.cpp 2024-07-27 08:40:45.324177884 +0800
+@@ -50,3 +50,2 @@ const std::string LOCK_DELAY = "lock-del
+ const std::string LOCK_ENABLED = "lock-enabled";
+-const std::string LOCK_ON_SUSPEND = "ubuntu-lock-on-suspend";
+
+@@ -90,3 +89,2 @@ struct Settings::Impl
+ s->lock_on_blank = g_settings_get_boolean(gs_settings_, LOCK_ENABLED.c_str()) != FALSE;
+- s->lock_on_suspend = g_settings_get_boolean(gs_settings_, LOCK_ON_SUSPEND.c_str()) != FALSE;
+ s->lock_delay = g_settings_get_uint(gs_settings_, LOCK_DELAY.c_str());
+diff -p1ru a/lockscreen/LockScreenSettings.h b/lockscreen/LockScreenSettings.h
+--- a/lockscreen/LockScreenSettings.h 2023-02-23 02:37:44.000000000 +0800
++++ b/lockscreen/LockScreenSettings.h 2024-07-27 08:43:35.025986444 +0800
+@@ -48,3 +48,2 @@ public:
+ nux::Property<bool> lock_on_blank;
+- nux::Property<bool> lock_on_suspend;
+ nux::Property<bool> use_legacy;
diff --git a/srcpkgs/unity/patches/use-ayatana-libraries.patch b/srcpkgs/unity/patches/use-ayatana-libraries.patch
new file mode 100644
index 00000000000000..1fc9d7b51a3c9e
--- /dev/null
+++ b/srcpkgs/unity/patches/use-ayatana-libraries.patch
@@ -0,0 +1,90 @@
+diff -p1ru a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt 2023-02-23 02:37:59.000000000 +0800
++++ b/CMakeLists.txt 2024-07-27 08:48:23.292047534 +0800
+@@ -175,5 +175,5 @@ execute_process (COMMAND ${PKG_CONFIG_EX
+ execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} unity --variable lensesdir OUTPUT_VARIABLE LENSES_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
+-execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} indicator3-0.4 --variable indicatordir OUTPUT_VARIABLE INDICATORDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
+-execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} indicator3-0.4 --variable iconsdir OUTPUT_VARIABLE INDICATORICONDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
+-execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} indicator3-0.4 --variable prefix OUTPUT_VARIABLE INDICATORPREFIX OUTPUT_STRIP_TRAILING_WHITESPACE)
++execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} ayatana-indicator3-0.4 --variable indicatordir OUTPUT_VARIABLE INDICATORDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
++execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} ayatana-indicator3-0.4 --variable iconsdir OUTPUT_VARIABLE INDICATORICONDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
++execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} ayatana-indicator3-0.4 --variable prefix OUTPUT_VARIABLE INDICATORPREFIX OUTPUT_STRIP_TRAILING_WHITESPACE)
+ set (INDICATOR_SERVICE_DIR "${INDICATORPREFIX}/share/${PROJECT_NAME}/indicators")
+@@ -243,3 +243,3 @@ set(UNITY_PLUGIN_SHARED_DEPS
+ gtk+-3.0>=3.1
+- indicator3-0.4>=0.4.90
++ ayatana-indicator3-0.4
+ json-glib-1.0
+diff -p1ru a/launcher/ApplicationLauncherIcon.h b/launcher/ApplicationLauncherIcon.h
+--- a/launcher/ApplicationLauncherIcon.h 2023-02-23 02:37:44.000000000 +0800
++++ b/launcher/ApplicationLauncherIcon.h 2024-07-27 08:49:55.159958565 +0800
+@@ -26,3 +26,3 @@
+
+-#include <libindicator/indicator-desktop-shortcuts.h>
++#include <libayatana-indicator/indicator-desktop-shortcuts.h>
+
+diff -p1ru a/services/CMakeLists.txt b/services/CMakeLists.txt
+--- a/services/CMakeLists.txt 2023-02-23 02:37:44.000000000 +0800
++++ b/services/CMakeLists.txt 2024-07-27 08:48:57.861323543 +0800
+@@ -11,5 +11,5 @@ set(UNITY_PANEL_SERVICE_DEPS
+ gtk+-3.0>=3.3
+- indicator3-0.4>=12.10.2
++ ayatana-indicator3-0.4
+ x11
+- libido3-0.1>=13.0.0
++ libayatana-ido3-0.4
+ )
+diff -p1ru a/services/panel-indicator-accessible.h b/services/panel-indicator-accessible.h
+--- a/services/panel-indicator-accessible.h 2023-02-23 02:37:44.000000000 +0800
++++ b/services/panel-indicator-accessible.h 2024-07-27 08:51:14.274496085 +0800
+@@ -22,4 +22,4 @@
+ #include <atk/atk.h>
+-#include <libindicator/indicator.h>
+-#include <libindicator/indicator-object.h>
++#include <libayatana-indicator/indicator.h>
++#include <libayatana-indicator/indicator-object.h>
+
+diff -p1ru a/services/panel-indicator-entry-accessible.h b/services/panel-indicator-entry-accessible.h
+--- a/services/panel-indicator-entry-accessible.h 2023-02-23 02:37:44.000000000 +0800
++++ b/services/panel-indicator-entry-accessible.h 2024-07-27 08:50:43.352042575 +0800
+@@ -22,4 +22,4 @@
+ #include <atk/atk.h>
+-#include <libindicator/indicator.h>
+-#include <libindicator/indicator-object.h>
++#include <libayatana-indicator/indicator.h>
++#include <libayatana-indicator/indicator-object.h>
+
+diff -p1ru a/services/panel-main.c b/services/panel-main.c
+--- a/services/panel-main.c 2023-02-23 02:37:44.000000000 +0800
++++ b/services/panel-main.c 2024-07-27 08:51:58.115405592 +0800
+@@ -24,3 +24,3 @@
+ #include <gtk/gtk.h>
+-#include <libido/libido.h>
++#include <libayatana-ido/libayatana-ido.h>
+
+diff -p1ru a/services/panel-service.c b/services/panel-service.c
+--- a/services/panel-service.c 2023-02-23 02:37:44.000000000 +0800
++++ b/services/panel-service.c 2024-07-27 08:51:36.358532591 +0800
+@@ -30,3 +30,3 @@
+ #include <glib/gi18n-lib.h>
+-#include <libindicator/indicator-ng.h>
++#include <libayatana-indicator/indicator-ng.h>
+
+diff -p1ru a/services/panel-service.h b/services/panel-service.h
+--- a/services/panel-service.h 2023-02-23 02:37:44.000000000 +0800
++++ b/services/panel-service.h 2024-07-27 08:50:56.180453579 +0800
+@@ -22,4 +22,4 @@
+ #include <glib-object.h>
+-#include <libindicator/indicator.h>
+-#include <libindicator/indicator-object.h>
++#include <libayatana-indicator/indicator.h>
++#include <libayatana-indicator/indicator-object.h>
+
+diff -p1ru a/tests/mock_indicator_object.h b/tests/mock_indicator_object.h
+--- a/tests/mock_indicator_object.h 2023-02-23 02:37:45.000000000 +0800
++++ b/tests/mock_indicator_object.h 2024-07-27 08:50:18.488617071 +0800
+@@ -24,3 +24,3 @@
+
+-#include <libindicator/indicator-object.h>
++#include <libayatana-indicator/indicator-object.h>
+
diff --git a/srcpkgs/unity/template b/srcpkgs/unity/template
new file mode 100644
index 00000000000000..8746a0518096e0
--- /dev/null
+++ b/srcpkgs/unity/template
@@ -0,0 +1,69 @@
+# Template file for 'unity'
+pkgname=unity
+version=7.7.0+23.04.20230222.2
+revision=1
+_ubuntu_rel=0ubuntu7
+build_style=cmake
+configure_args="-Wno-dev -DCOMPIZ_BUILD_WITH_RPATH=FALSE \
+ -DCOMPIZ_PACKAGING_ENABLED=TRUE -DCOMPIZ_PLUGIN_INSTALL_TYPE=package \
+ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_SYSCONFDIR=/etc \
+ -DUSE_GSETTINGS=TRUE -DENABLE_UNIT_TESTS=FALSE \
+ -DCMAKE_MODULE_PATH=/usr/share/cmake/Modules"
+hostmakedepends="chrpath doxygen flex intltool libglvnd patchutils pkg-config
+ python3-setuptools"
+makedepends="appstream-glib-devel ayatana-ido-devel bamf-devel boost-devel
+ cairo-devel compiz-ubuntu-devel glew-devel gnome-desktop-devel
+ libayatana-indicator-devel libnotify-devel libunity-devel libunity-misc-devel
+ libXfixes-devel libXi-devel nux-devel pam-devel unity-settings-daemon-devel
+ zeitgeist-devel"
+depends="boost clutter-gtk dbus-activation-env gjs gnome-desktop gnome-keyring
+ gnome-screensaver gnome-session gsettings-ubuntu-schemas hud
+ lightdm-unity-greeter notify-osd python3-xdg unity-asset-pool"
+short_desc="Desktop platform based on technologies such as Nux, GTK and Compiz"
+maintainer="Earldridge Jazzed Pineda <earldridgejazzedpineda@gmail.com>"
+license="GPL-3.0-only"
+homepage="https://unityd.org"
+distfiles="https://launchpad.net/ubuntu/+archive/primary/+files/unity_${version}-${_ubuntu_rel}.tar.xz"
+checksum=121cc674bf1b901d474f1de10e1d16b7d3dea6d32380af7f47ef4de2ff580c7b
+keep_libtool_archives=yes
+python_version=3
+
+do_patch() {
+ for i in $(grep -v '#' debian/patches/series); do
+ patch -p1 -i "debian/patches/${i}"
+ done
+
+ rm -f resources/launcher_bfb.svg
+ cp ${FILESDIR}/launcher_bfb.png resources
+}
+
+pre_configure() {
+ export CXXFLAGS+=" -g -O0"
+
+ export CCACHE_SLOPPINESS=time_macros
+}
+
+post_install() {
+ cp ${FILESDIR}/unity.pam ${DESTDIR}/etc/pam.d/unity
+
+ mkdir -p ${DESTDIR}/usr/share/unity-control-center/keybindings
+ ln -s \
+ ${DESTDIR}/usr/share/gnome-control-center/keybindings/50-unity-launchers.xml \
+ ${DESTDIR}/usr/share/unity-control-center/keybindings/50-unity-launchers.xml
+
+ vsv unity7
+ vsv unity-panel-service
+ vsv unity-panel-service-lockscreen
+}
+
+unity-devel_package() {
+ short_desc+=" - development files"
+ depends="${sourcepkg}>=${version}_${revision} dee-devel libglib-devel
+ libsigc++-devel nux-devel"
+ pkg_install() {
+ vmove usr/include
+ vmove "usr/lib/*.so"
+ vmove usr/lib/pkgconfig
+ }
+}
diff --git a/srcpkgs/yaru/template b/srcpkgs/yaru/template
index 4632da13a6688e..ac51ad0ba4bcbf 100644
--- a/srcpkgs/yaru/template
+++ b/srcpkgs/yaru/template
@@ -1,9 +1,9 @@
# Template file for 'yaru'
pkgname=yaru
version=24.04.3
-revision=1
+revision=2
build_style=meson
-configure_args="-Dxfwm4=true"
+configure_args="-Dxfwm4=true -Dubuntu-unity=true"
hostmakedepends="glib-devel sassc pkg-config inkscape"
makedepends="gtk+3-devel libglib-devel"
short_desc="Default Ubuntu 18.10+ theme"
next prev parent reply other threads:[~2024-08-10 5:14 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-28 6:03 [PR PATCH] " EarldridgeJazzedPineda
2024-07-28 6:04 ` [PR PATCH] [Updated] " EarldridgeJazzedPineda
2024-07-28 6:13 ` abenson
2024-07-28 6:27 ` [PR PATCH] [Updated] " EarldridgeJazzedPineda
2024-07-28 8:06 ` EarldridgeJazzedPineda
2024-07-29 7:07 ` [PR PATCH] [Updated] " EarldridgeJazzedPineda
2024-07-30 2:46 ` EarldridgeJazzedPineda
2024-07-30 3:11 ` EarldridgeJazzedPineda
2024-07-30 3:12 ` EarldridgeJazzedPineda
2024-07-30 3:35 ` [PR PATCH] [Updated] " EarldridgeJazzedPineda
2024-07-30 3:35 ` EarldridgeJazzedPineda
2024-07-30 5:07 ` EarldridgeJazzedPineda
2024-07-30 23:50 ` [PR PATCH] [Updated] " EarldridgeJazzedPineda
2024-07-31 0:03 ` EarldridgeJazzedPineda
2024-07-31 0:12 ` EarldridgeJazzedPineda
2024-07-31 1:21 ` [PR PATCH] [Updated] " EarldridgeJazzedPineda
2024-07-31 2:42 ` EarldridgeJazzedPineda
2024-07-31 3:21 ` EarldridgeJazzedPineda
2024-07-31 3:29 ` EarldridgeJazzedPineda
2024-07-31 9:24 ` EarldridgeJazzedPineda
2024-08-01 11:59 ` [PR PATCH] [Updated] " EarldridgeJazzedPineda
2024-08-01 11:59 ` EarldridgeJazzedPineda
2024-08-01 12:00 ` EarldridgeJazzedPineda
2024-08-01 12:08 ` [PR PATCH] [Updated] " EarldridgeJazzedPineda
2024-08-01 12:51 ` EarldridgeJazzedPineda
2024-08-02 13:20 ` [PR PATCH] [Updated] " EarldridgeJazzedPineda
2024-08-03 3:08 ` EarldridgeJazzedPineda
2024-08-03 3:50 ` EarldridgeJazzedPineda
2024-08-03 6:15 ` EarldridgeJazzedPineda
2024-08-03 8:00 ` EarldridgeJazzedPineda
2024-08-04 23:51 ` EarldridgeJazzedPineda
2024-08-05 3:36 ` EarldridgeJazzedPineda
2024-08-05 3:38 ` EarldridgeJazzedPineda
2024-08-05 4:25 ` EarldridgeJazzedPineda
2024-08-05 5:10 ` EarldridgeJazzedPineda
2024-08-05 11:44 ` EarldridgeJazzedPineda
2024-08-05 12:21 ` EarldridgeJazzedPineda
2024-08-05 12:50 ` EarldridgeJazzedPineda
2024-08-05 13:00 ` EarldridgeJazzedPineda
2024-08-06 0:07 ` EarldridgeJazzedPineda
2024-08-06 1:26 ` EarldridgeJazzedPineda
2024-08-06 3:20 ` EarldridgeJazzedPineda
2024-08-06 23:38 ` EarldridgeJazzedPineda
2024-08-08 4:38 ` EarldridgeJazzedPineda
2024-08-08 5:09 ` EarldridgeJazzedPineda
2024-08-08 5:33 ` EarldridgeJazzedPineda
2024-08-09 4:57 ` EarldridgeJazzedPineda
2024-08-09 5:00 ` EarldridgeJazzedPineda
2024-08-09 11:35 ` EarldridgeJazzedPineda
2024-08-10 5:14 ` EarldridgeJazzedPineda [this message]
2024-08-13 8:45 ` EarldridgeJazzedPineda
2024-08-13 8:49 ` EarldridgeJazzedPineda
2024-08-13 10:08 ` EarldridgeJazzedPineda
2024-08-13 10:15 ` EarldridgeJazzedPineda
2024-08-13 10:22 ` EarldridgeJazzedPineda
2024-08-15 1:33 ` EarldridgeJazzedPineda
2024-09-02 2:29 ` EarldridgeJazzedPineda
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240810051445.C307522398@inbox.vuxu.org \
--to=earldridgejazzedpineda@users.noreply.github.com \
--cc=ml@inbox.vuxu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).