diff --git a/NOTES b/NOTES index 24e1a00f..017c7b83 100644 --- a/NOTES +++ b/NOTES @@ -21,14 +21,14 @@ media-fonts/fonts-noto-cjk # Repacked version with reduced size media-libs/glewmx # Needed by unity-base/nux, MX discontinued as of GLEW v2.0.0 x11-misc/notify-osd::gentoo # The latest version in the Gentoo tree is 0.9.34 (2012-03-23) x11-themes/notify-osd-icons::gentoo # The latest version in the Gentoo tree is 0.7 (2010-11-15) -x11-themes/ubuntu-wallpapers::gentoo # Version in the Gentoo tree doesn't control download size via USE-flags +x11-themes/ubuntu-wallpapers::gentoo # Version in the Gentoo tree doesn't control download size via USE flags * Reasons for maintaining ebuild hooks: app-accessibility/at-spi2-core # Start 'accessibility bus' by default (https://wiki.debian.org/accessibility-devel) app-admin/system-config-printer # Fix Unity Control Center icon and About dialog icon app-backup/deja-dup # Enable Unity7 user interface options dev-cpp/gtest # Install /usr/src/{gmock,gtest}/* source files lacking from main tree ebuild -dev-libs/glib # Patched to call gettext if .desktop file does not have inline translations +dev-libs/glib # Patched to call gettext if .desktop file does not have inline translations, don't try DBusActivatable when in Unity user interface and fallback on Exec= dev-libs/libappindicator # Build with GTK2, see "Using portage tree libindicate packages" item above gnome-base/gconf # Install 'update-gconf-defaults' script - Ubuntu's gconf update tool # Ubuntu patchset: @@ -51,9 +51,9 @@ gnome-base/gnome-menus # Needed for some menu patches but mostly to set XDG_ME # translate-Debian-directories.patch # 80_file_monitor_delayed.patch # ubuntu_gcc_translations.patch -gnome-base/gnome-panel # Make sure gnome-panel and the applets don't pick up menu proxies gnome-base/gnome-session # Installs session files for launching Unity7 user interface # Ubuntu patchset: + # data-Install-GNOME-on-Wayland-session-for-X11-preferred-s.patch # debian/Revert-main-Remove-GNOME_DESKTOP_SESSION_ID-envvar.patch # debian/Make-sure-to-pass-systemd-when-we-re-managing-the-user-se.patch # ubuntu/support_autostart_delay.patch @@ -87,19 +87,12 @@ gnome-base/gnome-settings-daemon # unity-settings-daemon relies on files created # ubuntu/git-media-keys-Add-one-second-delay-between-each-rfkill-.patch gnome-base/gsettings-desktop-schemas # Includes Unity7 user interface settings patches # Ubuntu patchset: - # Restore-peripheral-display-keys.patch - # git_revert_background_key_removal.patch - # git_revert_menu_icon_key_removal.patch - # git_revert_notifications_key_removal.patch - # git_revert_scroll_method_removal.patch # ubuntu_lock-on-suspend.patch gnome-base/nautilus # Give progressbar on Dash launcher nautilus icon # Ubuntu patchset: # 04_suppress_umount_in_ltsp.patch # 12_unity_launcher_support.patch # 18_unity_icon_color.patch - # 19_unity_open_location_xid.patch - # 20_add_timestamp_to_operations.patch # ubuntu_infobars_color.patch # ubuntu_backspace_behaviour.patch # appstream-compulsory.patch @@ -166,7 +159,9 @@ sys-apps/accountsservice # Requires patching for SetInputSources as needed by u # act-user-manager-Watch-for-the-daemon-going-away-and-comi.patch sys-auth/polkit-pkla-compat # Fix localstatedir path (/var/lib) www-client/chromium # Required to support Unity Launcher icon effects (no duplicate icons, quicklist menu, progress bar, window title bar fixes etc.) -www-client/firefox # Add Unity menubar and desktop launcher with quicklist and translations +www-client/firefox # Latest version, add Unity menubar and desktop launcher with quicklist and translations +www-client/firefox-78 # ESR version, add Unity menubar and desktop launcher with quicklist and translations +www-client/firefox-91 # ESR version, add Unity menubar and desktop launcher with quicklist and translations www-client/firefox-bin # Add desktop launcher with quicklist and translations x11-libs/gtk+:2 # Needed for global appmenu # Ubuntu patchset: @@ -195,7 +190,7 @@ x11-libs/gtk+:2 # Needed for global appmenu # use-secrets-service-for-cups-auth_info.patch # Reinstate-marshallers-that-accidentally-became-part-of-th.patch # d-i/textlayout-Clamp-width-to-the-value-we-asked-for-as-a-hac.patch -x11-libs/gtk+:3 # Needed for global appmenu +x11-libs/gtk+:3 # Needed for global appmenu, fix firefox/thunderbird global submenus to be initially populated # Ubuntu patchset: # gdk-Don-t-distribute-generated-files-in-tarballs.patch # gtk-Really-don-t-distribute-built-files.patch @@ -236,20 +231,25 @@ x11-plugins/pidgin-libnotify # Fix Unity messaging menu support # ubuntu_notify_support.patch # messaging_menu.patch -* Optional ebuild hooks managed via unity-extra/ehooks USE-flags: +* Optional ebuild hooks managed via unity-extra/ehooks USE flags: app-office/libreoffice # Add Human icon theme and make it the default, create fontconfig configuration (30-opensymbol.conf) symlink # Add custom icons (savemodified_{large,small}.png) # https://github.com/LibreOffice/core/tree/3498ed37527b7af795f00dc6a55c11e65a313186/icon-themes/human app-office/libreoffice-bin # Create fontconfig configuration (30-opensymbol.conf) symlink app-text/evince # Add traditional menu bar (https://bugzilla.gnome.org/show_bug.cgi?id=736419), add menu translations app-text/foliate # Fix HeaderBar +games-board/iagno # Fix HeaderBar +games-puzzle/gnome-taquin # Fix HeaderBar gnome-extra/gnome-calculator # Fix HeaderBar -gnome-extra/gnome-calendar # Use unity-control-center as the fallback and fix HeaderBar +gnome-extra/gnome-calendar # Use unity-control-center as the fallback, fix HeaderBar +gnome-extra/gnome-contacts # Use unity-control-center as the fallback, fix HeaderBar gnome-extra/gnome-system-monitor # Fix HeaderBar +gnome-extra/gnome-weather # Fix HeaderBar gnome-extra/nemo # Remove 'Open as Root' context menu action gui-libs/libhandy # Fix HeaderBar media-gfx/eog # Add traditional menu bar (https://bugzilla.gnome.org/749976, https://bugs.debian.org/793445), add menu translations media-gfx/gnome-font-viewer # Fix HeaderBar +media-gfx/gnome-photos # Use unity-control-center as the fallback, fix HeaderBar media-gfx/gnome-screenshot # Use Ubuntu help instead of GNOME help, don't use GtkHeaderBar, show the save dialog by default, don't try and use the GNOME Shell D-Bus interface, add quicklist area-shot option media-gfx/simple-scan # Fix HeaderBar media-libs/fontconfig # Adjust fonts configuration according to Ubuntu diff --git a/README.md b/README.md index 8d71fbe2..e0a407b1 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,16 @@ -# Gentoo Unity⁷ +# Gentoo Unity⁷ Desktop -### A Gentoo overlay to install the Unity7 user interface on amd64 architecture. +### A Gentoo overlay to install the Unity7 user interface. - Forked from https://github.com/shiznix/unity-gentoo -- For more information about the Unity7, see: https://en.wikipedia.org/wiki/Unity_(user_interface) - ### How to install: --- **WARNING:** -Some overlay patches will be applied to packages from the Gentoo tree via ebuild hooks patching system. For more details see README_ehooks.txt - Chapter I. Set variable **EHOOK_ACCEPT="yes"** in /etc/portage/make.conf to confirm you agree with it. +Some overlay patches will be applied to packages from the Gentoo tree via ebuild hooks patching system. For more details, see README_ehooks.txt, Chapter I. Set variable **EHOOK_ACCEPT="yes"** in /etc/portage/make.conf to confirm you agree with it. --- @@ -39,3 +37,27 @@ Some overlay patches will be applied to packages from the Gentoo tree via ebuild 6. Install the Unity7: **emerge -av unity-meta** + +--- + +- Gentoo tree packages from testing phase ~amd64 enabled through the overlay: + + - **x11-wm/metacity** - required + + - **app-backup/deja-dup** and **www-client/firefox** - optional + +- Tips and tricks: + + - **enable OpenGL ES 2.0 support**: unity-base/unity **gles2**, unity-base/compiz **gles2**, unity-base/nux **gles2** + + - **enable system tray support for all applications**: unity-base/unity **systray** + + - **disable Evolution Data Server support**: unity-indicators/indicator-datetime **-eds** + + - **unity-extra/diodon**: clipboard manager for the Unity7 - unity-indicators/unity-indicators-meta **paste** + + - **net-mail/mailnag**: mail notification with Messaging menu support - unity-indicators/unity-indicators-meta **mail** + + - **dev-java/jayatana**: Global Menu for Java applications - unity-indicators/unity-indicators-meta **java** + +- For more information about the Unity7, see: https://en.wikipedia.org/wiki/Unity_(user_interface) diff --git a/README_ehooks.txt b/README_ehooks.txt index 461adf5c..e32c230a 100644 --- a/README_ehooks.txt +++ b/README_ehooks.txt @@ -15,7 +15,7 @@ EBUILD HOOKS * Overlay's ebuild hooks are located in /var/lib/layman/gentoo-unity7/profiles/ehooks directory. -* Optional ebuild hooks are managed via unity-extra/ehooks USE-flags. +* Optional ebuild hooks are managed via unity-extra/ehooks USE flags. * Updates or changes are managed via unity-extra/ehooks package. It looks for ebuild hooks changes and generates emerge command needed to apply @@ -111,8 +111,8 @@ EBUILD HOOKS - use filename prefix to control apply order * Query functions: - ehook_use [USE-flag] - - it returns a true value if unity-extra/ehooks USE-flag is declared + ehook_use [USE flag] + - it returns a true value if unity-extra/ehooks USE flag is declared - e.g. 'if ehook_use nemo_noroot; then' see gnome-extra/nemo: 02-pre_src_prepare.ehook @@ -126,8 +126,8 @@ EBUILD HOOKS fi } - ehook_require [USE-flag] - - it skips the rest of the related ebuild hooks if unity-extra/ehooks USE-flag is not declared + ehook_require [USE flag] + - it skips the rest of the related ebuild hooks if unity-extra/ehooks USE flag is not declared - it should be the first command of ebuild hooks - e.g. 'ehook_require gnome-terminal_theme' see x11-terms/gnome-terminal: diff --git a/app-accessibility/onboard/Manifest b/app-accessibility/onboard/Manifest index 84b6bbf1..83d9c560 100644 --- a/app-accessibility/onboard/Manifest +++ b/app-accessibility/onboard/Manifest @@ -1,4 +1,4 @@ DIST onboard_1.4.1-5build2.debian.tar.xz 14352 BLAKE2B 5c3647e99f2a6fc9630eb41816e590af688bbfdd57acbb875a73ddef0db2c66d8edf57851625b0ec989f1139d51b79b8fc732feff2efb5194dae722dc69f2334 SHA512 376d8c1b9d16549c72db533fe0d1dd1e7baf7c5fad1ce83faf1f49153d1e273559f8b22f4d8d9e535fb31ba232661e6c211870c9c7c7f93a4817abf0c02f3163 DIST onboard_1.4.1.orig.tar.gz 9703285 BLAKE2B 9833cda373b4df28a8e4a0c9ae81069633903ec04ad22208390f3cc21b5540ae225aae553ef1b934832b6ba7ab1ba76e6e1c2c5d10cdc16b06dc2f5ac8d152b8 SHA512 ed75c1dce893e3420ecf532faffb15efc9fba56cf6622b03fe5e1cebb88d32304636b0268e4b8b75dc0eb6d7bfc8602c4a93a90bdeb8cd960d3447d16acc7463 -EBUILD onboard-1.4.1_p5_p2.ebuild 1573 BLAKE2B a8456e044ce0496a9c2302400628e44d152cb21f5464bb170a02b2552a87bb2154fbb1f4f4f3f4b37313c24b64684c549f830178b2fdbc6e40d61a6954f362ef SHA512 5bcb2ec6e46db985e0d9e75d59348d8a0d39c9368098d3edc8437ff3fa7cfe363e983c2522dc71486931ee1110c6f1be848598972eb1e0be650f844ad45c5b53 +EBUILD onboard-1.4.1_p5_p2.ebuild 1572 BLAKE2B 5767f83c40c1d9e391e1af8f01adf5154896012ff1059f58a68de32a82a7b7c73ad9204d0c5e22dfebb0c3890a32dc34d61b12185b21791da1792eb0a79aea45 SHA512 5830eed053376a91fa551305b29c467db8a770d982dd746d166bf2f17e324fcb48616f7b2c9367b86a9e1e89a9f1c000ddf1bce519cd70202f399a7ed7b49dda MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/app-accessibility/onboard/onboard-1.4.1_p5_p2.ebuild b/app-accessibility/onboard/onboard-1.4.1_p5_p2.ebuild index 88cb9dfd..9320d518 100644 --- a/app-accessibility/onboard/onboard-1.4.1_p5_p2.ebuild +++ b/app-accessibility/onboard/onboard-1.4.1_p5_p2.ebuild @@ -5,7 +5,7 @@ EAPI=6 PYTHON_COMPAT=( python3_{7..9} ) DISTUTILS_SINGLE_IMPL=1 -URELEASE="hirsute" +URELEASE="impish" inherit gnome2-utils distutils-r1 ubuntu-versionator xdg-utils UVER="-${PVR_MICRO}build${PVR_PL_MAJOR}" diff --git a/dev-libs/dee/Manifest b/dev-libs/dee/Manifest index 95b09310..493dfe0e 100644 --- a/dev-libs/dee/Manifest +++ b/dev-libs/dee/Manifest @@ -1,4 +1,4 @@ -DIST dee_1.2.7+17.10.20170616-6ubuntu1.debian.tar.xz 14452 BLAKE2B fe0387e6e2bfb36a64e217a26934a7d32004c9102229b621fd273cc98dafd517a86b2e05e768455a4287d13c0fc0fa1d2a48fe479ff70419c094b8a47d821918 SHA512 ec342b51e372bc7f1aa5a9ba02db1b6625f5ab8b8cef1362f57c2e491676906cd855edcc329d47ea7e0723ef49c5dfdcb854a2127ac1a7e3cb58f78ba13609eb +DIST dee_1.2.7+17.10.20170616-6ubuntu2.debian.tar.xz 14520 BLAKE2B b60835b65b29a0815d45e59014a9302949dc765a02e100b498e105331fff19de7d137f5ed5c505dcbe1faf9cf10b86480ba8dc9b9a3660e940dcd29918bebb6e SHA512 5575e5bb96fc3822f6c35bdd1bec27c3a244995aebb34532436ae6f2cc8ad8f03ff4cf2acda488296e189bfacf4bc7d2574e3d3bcad663dc97b0272bea26901b DIST dee_1.2.7+17.10.20170616.orig.tar.gz 226370 BLAKE2B ee2130546d6e30ae58ce0e6a26c8c0952a28c286939aa7ed58ccf04266a3b6e914fee88876db29e89ae247b5e8f607779dfc148d64eb8159c75d75c80f62eeea SHA512 3fafa518c8b8aad4eb54e65c533b9b9df6aef98cb361f31813292064646d071d9505200e82f0c47e5a7a27c7eeaad97f1ee469a3ac12a4a13ca0d34703572fc4 -EBUILD dee-1.2.7_p20170616_p6_p01.ebuild 1256 BLAKE2B 816299f0618ec1a8ffaf8aaca4a9fddf84e466a0410fe5f2bdb2af6d53288a631624a84bf27f812ebe88cbc6a1117020297aa8d20ed107a1064a4908c63a9997 SHA512 ce486c84877a548ea788197055e037a0aae3d81910600daee7b2d70dc0bb962463b48dfcac7cd8ac6d4291cfa17f10796a834a0d9f278a72cb388aee43b6ffa6 +EBUILD dee-1.2.7_p20170616_p6_p02.ebuild 1255 BLAKE2B 84aeb6c11da77bf9805284b6f2172dbee9ab04c108cce2af87048c28639fb5ce19991e203e25ef50289e965da8fdb3e96b1aa0b9194a1e8d333e010ca6e990e6 SHA512 e977c15fdddde359b27fa0d7baa23e76a734b2208139f8b58abe34c46a2b527a9a37904db27048ce7f935eab2898d9d8e358334d7021f8e9c1b18168d933e995 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/dev-libs/dee/dee-1.2.7_p20170616_p6_p01.ebuild b/dev-libs/dee/dee-1.2.7_p20170616_p6_p02.ebuild similarity index 98% rename from dev-libs/dee/dee-1.2.7_p20170616_p6_p01.ebuild rename to dev-libs/dee/dee-1.2.7_p20170616_p6_p02.ebuild index e8d83551..c4a1a0e2 100644 --- a/dev-libs/dee/dee-1.2.7_p20170616_p6_p01.ebuild +++ b/dev-libs/dee/dee-1.2.7_p20170616_p6_p02.ebuild @@ -5,7 +5,7 @@ EAPI=7 PYTHON_COMPAT=( python3_{7..9} ) AUTOTOOLS_AUTORECONF=y -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils python-r1 ubuntu-versionator vala UVER_PREFIX="+17.10.${PVR_MICRO}" diff --git a/dev-libs/libcolumbus/Manifest b/dev-libs/libcolumbus/Manifest index 16584ce8..7ba9029e 100644 --- a/dev-libs/libcolumbus/Manifest +++ b/dev-libs/libcolumbus/Manifest @@ -1,4 +1,4 @@ DIST libcolumbus_1.1.0+15.10.20150806-0ubuntu24.diff.gz 5670 BLAKE2B 5e8adaecb7ca0e816762bd8b59e21eeb914a98c61cd53b7d0d39ce542666e56f65b6cb4f41b067885c4dda1af0a7fb2cdd5324184b7603891d8752a92716be92 SHA512 3da46ce403381a4392083f09019b97ea5ae59d36ea3ee4004032e58fe68d4d91baed23f7216df33386bee190f292ac09ce24cbdd182782c3b2f27b47b2010bd7 DIST libcolumbus_1.1.0+15.10.20150806.orig.tar.gz 54362 BLAKE2B 9cba57da3bc34950f3faf93bf5f78940f35ad79053e43b1c910ded62c84323d8a5aa96bfb8f7e0fdc0f1d1d73667136eed2ee30791d5cbc1afeb6ef18b2adfc1 SHA512 72a67115c813ceb575eb237c28eb096232e319524718f8fa4d28dab2fd42bf3eb637366ac829d9fb0999d119413b5259d6802de3beb5dff52983ce80ffe5fe41 -EBUILD libcolumbus-1.1.0_p20150806_p0_p24.ebuild 1666 BLAKE2B 5a8169d9e30eb7cbdab81516b21549e4c591e3c57cb5b481de73d3d026fe9498d4192cec03bcf65b9524d6ec3511413a247624945454abbcb6c791cba1365d17 SHA512 d006e448d73091feb53ab06019e1835ea22bcf82a3dd1884c48653b2b236b14c1e5a4b72ceed02165c6fe70ef87d4a4c7d92231848cfb2b47381313bfa3e135b +EBUILD libcolumbus-1.1.0_p20150806_p0_p24.ebuild 1665 BLAKE2B facc567323eb10d33ba669cff401908fc97880d746d870e83c2d17b01073e2d4c359f3a0d74d1a8a7dfce4cb120363c97f7fc73ba0dda55b211e27686facbfff SHA512 a48a0230fce72ab9a0c442f0d23f4542b5df733d184ac77edac429f9a4e639110a15c8010c7944d9b2c51bccf57de552c615101a44f3d5351219c3c1e30aa6d3 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/dev-libs/libcolumbus/libcolumbus-1.1.0_p20150806_p0_p24.ebuild b/dev-libs/libcolumbus/libcolumbus-1.1.0_p20150806_p0_p24.ebuild index e2f88cc2..36d969aa 100644 --- a/dev-libs/libcolumbus/libcolumbus-1.1.0_p20150806_p0_p24.ebuild +++ b/dev-libs/libcolumbus/libcolumbus-1.1.0_p20150806_p0_p24.ebuild @@ -4,7 +4,7 @@ EAPI=6 PYTHON_COMPAT=( python3_{7..9} ) -URELEASE="hirsute" +URELEASE="impish" inherit cmake-utils eutils python-r1 ubuntu-versionator UVER_PREFIX="+15.10.${PVR_MICRO}" diff --git a/dev-libs/libindicator/Manifest b/dev-libs/libindicator/Manifest index 39ee0855..2426f59f 100644 --- a/dev-libs/libindicator/Manifest +++ b/dev-libs/libindicator/Manifest @@ -1,4 +1,4 @@ DIST libindicator_16.10.0+18.04.20180321.1-0ubuntu4.diff.gz 11888 BLAKE2B 40485e778a2111eda470e0e5d9f6ea87621391615a84803f557016f9c8162274ef5cb3ac71a7b4a97dc57ad6d54a232764ad8cedc8bbb71902e5c0e09bdfe127 SHA512 37a55af6aa3207fdaf333b0d8487a978a568365e2c127685bcd19b943b83da3ed3e9f68119eea65e03813f42a0f21fb4f75f13bb72a9730f11316423eb713548 DIST libindicator_16.10.0+18.04.20180321.1.orig.tar.gz 70462 BLAKE2B 5c97bff16a6cf2eb2f9db854ac4ae7e3bd824830c33230478c16cd5572571b2b5d2cce93f490d6a623fa791af3315fc7ea1bb269861f5851af7e596979f25f6e SHA512 b415dca964225e2d8b6b8a832a5c3450f7a0c5c1461e8e8aba52464c2c30a6c7c3039e185f28dc995184dc33814c04d72177d0ad019b97739bf978012a862f98 -EBUILD libindicator-16.10.0_p2018032101_p0_p04.ebuild 1999 BLAKE2B d1861236431f01c1b12286b88032a23c603c425661387cf5ac1578af83deb1565d3dee73fab8f679d6180bfc2d3aff46ee5cf5336d77f0702cff041474b07a08 SHA512 537b283fdd696060f9009a6986490a8f3daa98665fdf021854671a0e43d32252460a19716cb40b3972def7c5977001aea8e7a0dbe6470f9ba9797030d3d04a7c +EBUILD libindicator-16.10.0_p2018032101_p0_p04.ebuild 1998 BLAKE2B ce6bcb70508010bf0eabe78f9a6127efa24eb2a42ead636c9bd3e3d718c6029de74a120ce80723aa6802a8c554a4e20f0c9ab6803249fa5efaf0b7ef3e20886e SHA512 bf5f49c9bce09c1cbb4854a657b26b89453691d0a4f8f7cdfda48ce4431edbc1ff2c7db458aed8377501c3e32b4c2503578ab9cf3a86b842e8ad66a1f186378f MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/dev-libs/libindicator/libindicator-16.10.0_p2018032101_p0_p04.ebuild b/dev-libs/libindicator/libindicator-16.10.0_p2018032101_p0_p04.ebuild index 5fc629dc..21dec014 100644 --- a/dev-libs/libindicator/libindicator-16.10.0_p2018032101_p0_p04.ebuild +++ b/dev-libs/libindicator/libindicator-16.10.0_p2018032101_p0_p04.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils ubuntu-versionator MY_P="${PN}_${PV}" diff --git a/dev-libs/libqtdbusmock/Manifest b/dev-libs/libqtdbusmock/Manifest index 830dba15..66347221 100644 --- a/dev-libs/libqtdbusmock/Manifest +++ b/dev-libs/libqtdbusmock/Manifest @@ -1,4 +1,4 @@ DIST libqtdbusmock_0.7+bzr49+repack1-5.debian.tar.xz 6340 BLAKE2B 7e888e321ca9c3a52526707925c3983a38e1475f6b68a92214d8ee5110ee9e03621e8aa66d2e0004697c3b02d1d1f18650a9a706a24e694050cbc86fd694f233 SHA512 c96a62a69649ec38411eb08189a90a0245b690a748124639f7fc8c76946604031ef1e026a3fa28144b6b23608a4553c50c4c20be09699b848374a29556cb6ee2 DIST libqtdbusmock_0.7+bzr49+repack1.orig.tar.xz 18156 BLAKE2B 1e4aa58a709f723b2b563b218060d12ee9dd0fa5e37e72766a41c9bfae5afa2e3880b09e8ea110e4a2823e2c3ce1e550f580816c5385dbe7a122c4f8afd7f57e SHA512 b553413b44442edf54dfdc1cc123b19d0deae0c5602daa1980dadd5c34ff662b1f1cc1a0f884098507c96c9ab7e189628992ae6f0659afa963a67dc8a22370f5 -EBUILD libqtdbusmock-0.7_p_p1_p05.ebuild 860 BLAKE2B d6d78ddf79f1fea60412659f7242dfae3ed0d8c678720bcfe95c854d2b12360ad21540906cd790e10a205d6fa7e5c46877c431b40ef7ce3d6875fc65b1c4f0d1 SHA512 256af65ed151d09c15a19e6fb9e5cc4bda002e90c3f9153ca03f4adfab0017e5cde8684b8017f64b8f4755ec2a9900fbcbabb505153fc39480490da3aa928f2c +EBUILD libqtdbusmock-0.7_p_p1_p05.ebuild 859 BLAKE2B e41ae520906d70b8dab1d63f3e5d587d02e2158122e6a60f14c4a4bb8de15f37d0048e0face4e3c893a16be2fe8c42dfba99514bc16c27b904161666c67250fc SHA512 01ec4e81c8a937405236c868a5b851c04cd4a80846fc8728bb93c502d86b47516bed0ba9849116175ebd8a2e3396af15d1d339fb1fd55906673f78027978a1cd MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/dev-libs/libqtdbusmock/libqtdbusmock-0.7_p_p1_p05.ebuild b/dev-libs/libqtdbusmock/libqtdbusmock-0.7_p_p1_p05.ebuild index 34c4a934..1e233ee8 100644 --- a/dev-libs/libqtdbusmock/libqtdbusmock-0.7_p_p1_p05.ebuild +++ b/dev-libs/libqtdbusmock/libqtdbusmock-0.7_p_p1_p05.ebuild @@ -3,7 +3,7 @@ EAPI=7 -URELEASE="hirsute" +URELEASE="impish" inherit cmake-utils ubuntu-versionator UVER_PREFIX="+bzr49+repack${PVR_PL_MAJOR}" diff --git a/dev-libs/libqtdbustest/Manifest b/dev-libs/libqtdbustest/Manifest index d2cf3905..0a588121 100644 --- a/dev-libs/libqtdbustest/Manifest +++ b/dev-libs/libqtdbustest/Manifest @@ -1,4 +1,4 @@ DIST libqtdbustest_0.2+bzr42+repack1-11.debian.tar.xz 6560 BLAKE2B c9145b55178a45e0a9da6f673e008fb715ed26c11a1abb9f179224f6d1f5a63cadde71b6d42e22242776d3664fb61c1e8e5fad5c6283c662cd4da2af769de6e0 SHA512 20aa2c9e9885256b944a797b604200334f13ec15d11d972929cf259730191c0add2952ead752198155ebf7553a3e264e795b50890c50271bfcca6628651311c6 DIST libqtdbustest_0.2+bzr42+repack1.orig.tar.xz 11344 BLAKE2B 91d2acbd5a095a830925f4ba88161b880077b5872272957554c044ea37cc1b1936e3710acd60594368b03c606fa3c533f3afac7dec61ae5a2d1e9a9292b7799a SHA512 57188842cdb0ba23ef9564ded635d56320e541b32d2365438d0209aab2a35d9096a7c0866a18f1ffe9002eaf7f17388d3e764b32b478b8e330ffec7831f365d2 -EBUILD libqtdbustest-0.2_p_p1_p11.ebuild 904 BLAKE2B 1636d90130465105739df2544a5794a9cd0de81db55f4ba6de5cd2e0527b6d81bc2beb2413dee74aaaa060212bf81a4f8782d0b72ab6aca2771887613dd6e9e1 SHA512 5c607bba79065115662016dcca16018fd27cb2ab2d70d071b0c525c516c75ed4e8ca2431d6837bdb9b74e72b4d96fd4a0841d180f51824ead356d81616a4c822 +EBUILD libqtdbustest-0.2_p_p1_p11.ebuild 903 BLAKE2B 1696bb8d676d9b0e7e4b84073ec49e73547cf7c1ec1a50e3a000d2fffad7ac884a05d7c00fc4b5e11070cfd2a2a58de03875f0457c7e00929e7db7482f4f8eae SHA512 1077cdb5566c147d6388ab4eaee6be5f47d437f17c3edf06842c0e28e9380b378e55f8430bfeb8f004df5278c29798f771731a69cf8d7dcd4ccaa055b9ce3500 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/dev-libs/libqtdbustest/libqtdbustest-0.2_p_p1_p11.ebuild b/dev-libs/libqtdbustest/libqtdbustest-0.2_p_p1_p11.ebuild index a7e29cb2..994521fe 100644 --- a/dev-libs/libqtdbustest/libqtdbustest-0.2_p_p1_p11.ebuild +++ b/dev-libs/libqtdbustest/libqtdbustest-0.2_p_p1_p11.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit cmake-utils ubuntu-versionator UVER_PREFIX="+bzr42+repack${PVR_PL_MAJOR}" diff --git a/dev-libs/libunity-misc/Manifest b/dev-libs/libunity-misc/Manifest index 2dccb75d..6b86ccd4 100644 --- a/dev-libs/libunity-misc/Manifest +++ b/dev-libs/libunity-misc/Manifest @@ -1,4 +1,4 @@ DIST libunity-misc_4.0.5+14.04.20140115-0ubuntu3.diff.gz 3569 BLAKE2B cd0ad2e85ccab746298d3b606f5dfe2ae6ee310f37a4d5dbafe59d13a8bf62430ed49ab48408d3228adfc5017c34e7e5ed054258362ce76dfeceff3a290dd4e7 SHA512 ae865170257c2e42a8af2b3b192198bd529b093157c1ca470cdfe4d3825a56355426b98908ea817e54b6a47191b3e8ec5b95492601f20581c42cd36de180924b DIST libunity-misc_4.0.5+14.04.20140115.orig.tar.gz 47082 BLAKE2B 52ccd8e578775ae3e27deaa3303639ad65a77dd797df1f5f37efb16b010dc40613efe087e251317db3114b97cdb9daa4794e9991952e8ad9eb226e3b0b0819bc SHA512 2fc65db5320572cb5d5bcc326759a8e395887d3a408bb2b2823045ade8357d798b93162437878b59c69c8a69dc1055ba7f720b23cdeefc994d5335cbb7474006 -EBUILD libunity-misc-4.0.5_p_p0_p03.ebuild 950 BLAKE2B b24f598ecaa8c7c8ca3cda6c2699a67527e972bfb725b9e4316455f4f80785f7ca8ef017554e5c5762aeb76a63103539392e1771e476f37655b63eb056ee6156 SHA512 b2ce672e4f10c090d4ad224928a16c104df231e084b78c6f8e71d0c87f8062d2d0eeafdf165c335835ad24b12390dba060999473d1a63f235da466d69bed643a +EBUILD libunity-misc-4.0.5_p_p0_p03.ebuild 949 BLAKE2B e8bc798b0b60f3a2ca2033be81a48f330bb103a773b3a23a4fbb45c00025c46b631921cf4e93f27b298c195fa184e56722ad6ef601cf139353e392dcbeef1c06 SHA512 6171c267904f824d3810a6247ea78f8d4ecae4e626a1da55e46864aa1afeb81221a83f5e8449a4a69c53dbc17a9b1ab888b67d033e5d4211f504f36572c64fa3 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/dev-libs/libunity-misc/libunity-misc-4.0.5_p_p0_p03.ebuild b/dev-libs/libunity-misc/libunity-misc-4.0.5_p_p0_p03.ebuild index 5daf52ce..8f3dfd3a 100644 --- a/dev-libs/libunity-misc/libunity-misc-4.0.5_p_p0_p03.ebuild +++ b/dev-libs/libunity-misc/libunity-misc-4.0.5_p_p0_p03.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils flag-o-matic ubuntu-versionator UVER_PREFIX="+14.04.20140115" diff --git a/dev-libs/libunity/Manifest b/dev-libs/libunity/Manifest index 82423f74..b0c8ba81 100644 --- a/dev-libs/libunity/Manifest +++ b/dev-libs/libunity/Manifest @@ -1,5 +1,5 @@ AUX libunity-fix-build-against-vala-0.52.patch 2267 BLAKE2B 526cf8def42e6c02fb50763acdeb1ffb3aee91cf722d59e4cb1b1a78fa1e483bf7d937461ccf5af6b9fed81e3cbd68938e05d76e814ba6f412387fd3163fa2b0 SHA512 e97623b5886fd9d71add1ee4d786c5b81287a97860938fcac43e24754496a97196dcf7c4d3651651bf06f866aa45886489c4c9229e99aba75b3a35dc00243b90 DIST libunity_7.1.4+19.04.20190319-5.diff.gz 32371 BLAKE2B 6d7ac78ad5d584231676a38a5eaf4d3faa00918660d30b0c82e89232f1849da3198902c85def512a88756ea9939ea3871c91183e15627554876d4080f1dbd205 SHA512 3f14dd6638f4084d9c694ebcecaccb6377fa12bf91a472e87a077c3788d1f00faa38fe69be9327e5a3b69da8bba5177841acc93c8da2a8b3c2d74a8b4bb78714 DIST libunity_7.1.4+19.04.20190319.orig.tar.gz 213031 BLAKE2B 96982ec8dc3145c283993f2b908a342a6ff0e30fbf4f192cb49355415f03ffdba90ba1dfa65f5a83d6be18b5f00e3bb457cdaf4d3a50e668eaa09ac332aa9dea SHA512 36e0b6b5213442db3e99c9e88e35e9b6a76dfbb3627bfcbbfa45363fe9fd26f19a96158fc0b6b9c367effa7571225f40cf5a21b224a10343fefb7bc604aed15e -EBUILD libunity-7.1.4_p20190319_p5.ebuild 1448 BLAKE2B 0c575134e27496d979370980781d9cd67772286bbea898024147fac89cf16ca8e9e9ce93d266a150d3cafa860f494decbd85166e93bb84352675d70776fc2326 SHA512 2767c64d2cb1e7aa643f7669c06aa31663c16754bc2fe3ffae15cc76a10d55ba990c34875b5904b1ce3da6315572e59373de9670bc5e413dea093fde5bf5b329 +EBUILD libunity-7.1.4_p20190319_p5.ebuild 1447 BLAKE2B d9df67e50effae289a40f97460097b4fb99b63c534cf403ea9fb9b6c08e3be3ddc0d2f81bc9aaea4cb1c69240002620dc1677006ec0269dcedec0000067be974 SHA512 b9badccc9d7f6482414aad4bd3d1ea85a1541d190199c1e289b60a4c13ac5df7da5b28facd897398867f5e78d01fe230e7de643ebd7106d1ff0ddf39acc30b0f MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/dev-libs/libunity/libunity-7.1.4_p20190319_p5.ebuild b/dev-libs/libunity/libunity-7.1.4_p20190319_p5.ebuild index a15959ae..697043a9 100644 --- a/dev-libs/libunity/libunity-7.1.4_p20190319_p5.ebuild +++ b/dev-libs/libunity/libunity-7.1.4_p20190319_p5.ebuild @@ -5,7 +5,7 @@ EAPI=6 PYTHON_COMPAT=( python3_{7..9} ) MY_PV="${PV}" -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils python-r1 ubuntu-versionator vala UVER_PREFIX="+19.04.${PVR_MICRO}" diff --git a/dev-libs/libzeitgeist/Manifest b/dev-libs/libzeitgeist/Manifest index f6e6619b..896840e9 100644 --- a/dev-libs/libzeitgeist/Manifest +++ b/dev-libs/libzeitgeist/Manifest @@ -1,4 +1,4 @@ DIST libzeitgeist_0.3.18-1ubuntu3.debian.tar.xz 5952 BLAKE2B 8f56748d96cb4b506632a8d99011f263f1bc7ece46f74a9d1cb71791a2d2a5ab90b748bb12807beb39b817e965bd1c7c10f846dadce71bf2b5a20ca9f3fb0aab SHA512 393a3b019b8dccb93dc3a733465c5fab7d3b171bc5bd03f07b982e04be387f5addf558bda267b2d30353e8a101987bf2cc0a17b0cbd4c2fb1507984c02b1aa0b DIST libzeitgeist_0.3.18.orig.tar.gz 527117 BLAKE2B efbeef879be5a72011477e5699ccb8ec7a97ae358800bd6e9ab616a22fef1a6111908f62f22d1f1bafdfa5d6ad49d30354ace02c8660f7cd1cc8456cb7b9a2a6 SHA512 6ad3f0ed74935c20ce23d80208c5a787e4db2e2d58ae5036c6681c3d531e20cc0981be961d66a408a7e1b03909af0212693feddc515240d724acbd5ac5c8cf6e -EBUILD libzeitgeist-0.3.18_p_p1_p03.ebuild 948 BLAKE2B dbab289e1219ef704812fd999310a16cdf6bb2de9fe57fa2e0d275c7e8b8df9ddce4d01dffdfc3d6b62c870ea960a331ac0b3c400fcf93202d9f77245b819d39 SHA512 22a3158fdd0a62e896adad4e3472791204603395afcabd11d8f956f8efe9222fc897a7c8670fe41e652b8965f31ac08aa72a2af08330ca5edf30688ea49fa511 +EBUILD libzeitgeist-0.3.18_p_p1_p03.ebuild 947 BLAKE2B 1e4cdea3ab5b94044804f15cac8339d9f76f7c58a549396360f3ae434a76f43ac6c084ad7c2a91d9ac66071fd0c0c0249aa4e8cff4d86be2f8ba3354d7261ea7 SHA512 c89ba6ba8928b75f050167d67276a51163d04387e893558664f47fb8d1826dbca97b51dd7b2032ae6fa4e4cc048533a9646b496f523256f060762e7c7d1178a9 MISC metadata.xml 300 BLAKE2B ee86bf73125cbe7edf35a0850c0c0837c58677494b33c87181bc99f9cbabce19bde2addd73e066fe03bbb59104a2149a30bba61f2e01d2b9d16ee68cc4167458 SHA512 030744bf1f31f75d40aad5d2a4a3fa0b1f63564097f0be91100a9f164b17a84f471547f24601cb9dfd169c1ff710745f7b53aaed6c705adb6f9905ae1cc24055 diff --git a/dev-libs/libzeitgeist/libzeitgeist-0.3.18_p_p1_p03.ebuild b/dev-libs/libzeitgeist/libzeitgeist-0.3.18_p_p1_p03.ebuild index 35e1c8ce..868564d3 100644 --- a/dev-libs/libzeitgeist/libzeitgeist-0.3.18_p_p1_p03.ebuild +++ b/dev-libs/libzeitgeist/libzeitgeist-0.3.18_p_p1_p03.ebuild @@ -3,7 +3,7 @@ EAPI=7 -URELEASE="hirsute" +URELEASE="impish" inherit autotools ubuntu-versionator DESCRIPTION="Client library to interact with zeitgeist" diff --git a/dev-libs/properties-cpp/Manifest b/dev-libs/properties-cpp/Manifest index edcd6c56..d4455a4a 100644 --- a/dev-libs/properties-cpp/Manifest +++ b/dev-libs/properties-cpp/Manifest @@ -1,4 +1,4 @@ DIST properties-cpp_0.0.2-6.debian.tar.xz 4804 BLAKE2B 04c9c7f912f839491e5fcb581a82b1de386e1b2d0e21e967a235378a9c9383e7c070525db9953c058eeaec2a8065d7780f62d302714a7579dadefcec14d5f3bf SHA512 ff1d9515f4855dc161f61a179d315411d3e6c0cd9ac4bcc09f22b54d88a92d175e5bdd605063c83102f1634a6f748dd15e98b44f15e776fedf8521c5a41e9ac9 DIST properties-cpp_0.0.2.orig.tar.gz 41108 BLAKE2B d5239c27578d524079d1475b851939c0daac8fd71f46da34427cc9888739a52682aaa55e678f07c9ea01aa635a5a62886f5a104162e3220d0a6917f4178c11ca SHA512 7ec94ce495c9630d5acc0b98051b31e7eb3e50fef9dff3a476cd91ca912937f48826fbdab57907b042b13e29786dcb3483151690374b0e09d6e1c12c6329df5a -EBUILD properties-cpp-0.0.2_p6.ebuild 830 BLAKE2B 6ec4a256741051fa3f71ce47b1c313b7f6ce6a79c815ab8e9e22fb7acf38a57cec24aaf84ee59b64b6284c5f4964e7a7a6f0bb36fadc92f1e42a87a39d5df831 SHA512 8acfd6cf322a0b2a183497241a746d25e68eb9de767261402322931afe98652445eccf08d5ba117da71d57ab70fc4572142af78c5ce149a60811266bd953d01b +EBUILD properties-cpp-0.0.2_p6.ebuild 829 BLAKE2B cf7e128ada999852c110962cbbdb4ff6a0e671018da4456b196ed39d687bd22029cb05af6b0515691d59ca0f51a37358caeaa404b70bdc8565f9ef8c22e63228 SHA512 223e343345e1f1c4174eee76ebfd573c4debc707acdfbfa48cc3855caf3f29037f708fe06649af96f716a5489fa52d0c605fcb5719238c1d188ad18e6f893746 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/dev-libs/properties-cpp/properties-cpp-0.0.2_p6.ebuild b/dev-libs/properties-cpp/properties-cpp-0.0.2_p6.ebuild index c994aa0e..c9e3d1ee 100644 --- a/dev-libs/properties-cpp/properties-cpp-0.0.2_p6.ebuild +++ b/dev-libs/properties-cpp/properties-cpp-0.0.2_p6.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit cmake-utils ubuntu-versionator UVER="-${PVR_MICRO}" diff --git a/dev-libs/xpathselect/Manifest b/dev-libs/xpathselect/Manifest index 71341d93..a2ac3a28 100644 --- a/dev-libs/xpathselect/Manifest +++ b/dev-libs/xpathselect/Manifest @@ -1,4 +1,4 @@ DIST gtest-1.8.1.tar.gz 992298 BLAKE2B 40ef3417fe424205c0617f07207347ce671ac87605f8ac9b8a333b0b06e3fbef9f556041ee324c18f957f3258ab9fe06704f31cdd038355fb7890180eb77ced1 SHA512 e6283c667558e1fd6e49fa96e52af0e415a3c8037afe1d28b7ff1ec4c2ef8f49beb70a9327b7fc77eb4052a58c4ccad8b5260ec90e4bceeac7a46ff59c4369d7 DIST xpathselect_1.4+15.10.20150824.1.orig.tar.gz 26491 BLAKE2B 7aca40ab3789843a6c718bf52457bf2b6d933e7c329051ed83dfcfa2b78f5b54de07ce44995a7f40e96ebf256e5ce59b187e79df218df00da7b7cfc79b49d846 SHA512 f04ddfa6cf1b4fc82e03c1ae084126d138d462cc68cdfc5abcf921375b582d3b51cc045a013f379c2fe9a5a309875e0fd596eb29ef2298e852fb650d881cfd7b -EBUILD xpathselect-1.4_p2015082401_p0_p02.ebuild 1001 BLAKE2B df99dda46232eae82d89ab5180dfb51e6678778e8c3e9d543d40064781fe44f0b45a1915a0b0222c73d20a1d93b70e1b65c44b8908b7d3b8a113dec106ba1dbd SHA512 e00a331945430a6ad58941baf8a15dea3a7e72c70f94d2f43611a894b9d7aeb5d2a4ff6096a891df84a08763797060c4622ec48066e2120da62d3ae9ff884cb2 +EBUILD xpathselect-1.4_p2015082401_p0_p02.ebuild 1000 BLAKE2B 08852bdd74ac1857825219dda6b49e2408caf5b311b1f8da9abed1d600c17058f2f2466d371192c9190b73bb1688d5e0030615cfbf17b97a181bad84f2e3e404 SHA512 7e7db11edbd10ca736d92e28362bbc5308bd74f514d5f56356a69827332d5b768abbcae819d1a64ef8a38aea8e62b691639bbe86e32559ab407b948a4cd36fbe MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/dev-libs/xpathselect/xpathselect-1.4_p2015082401_p0_p02.ebuild b/dev-libs/xpathselect/xpathselect-1.4_p2015082401_p0_p02.ebuild index 2fe932e7..ba609cf1 100644 --- a/dev-libs/xpathselect/xpathselect-1.4_p2015082401_p0_p02.ebuild +++ b/dev-libs/xpathselect/xpathselect-1.4_p2015082401_p0_p02.ebuild @@ -4,7 +4,7 @@ EAPI=6 GTESTVER="1.8.1" -URELEASE="hirsute" +URELEASE="impish" inherit cmake-utils ubuntu-versionator UVER_PREFIX="+15.10.${PVR_MICRO}" diff --git a/dev-python/autopilot/Manifest b/dev-python/autopilot/Manifest index 16d3a291..5133d655 100644 --- a/dev-python/autopilot/Manifest +++ b/dev-python/autopilot/Manifest @@ -1,3 +1,3 @@ DIST autopilot_1.6.1+21.04.20210120.orig.tar.gz 486111 BLAKE2B 6f37dfb59b5f409de05d1d051698b67c8a7a31b7e49fb1b36fd6f256745a453112d3243eaa4b32a7fa7a13594a990752a92d150b731f04cf7487a09761d9ddcc SHA512 2df02dcc69b8525b73d8bddea809488a7b12fe9cf4bd3c539d74596c9d394b6258c44ab4b1bdd2fa20dac53e9b455c6dbf4d5b5acc842a6a259a5de0b9b796b3 -EBUILD autopilot-1.6.1_p20210120_p0_p01.ebuild 835 BLAKE2B a31b9f16ea072bd7a8791c2b2993186b568f02d6f0a49821619c35a874926b2dd7938b8353156f3ff56030376f5924e8e41216a5e71ad9665a260e712271cfae SHA512 d7bad209d4f335f4ecaeef71c3e803d85ba2f86d2542216f3958051fac0c9442e51655341fbbf312951b1c7c8fd946c4ddf01e25fff16111244ea7f7d184ca46 +EBUILD autopilot-1.6.1_p20210120_p0_p01.ebuild 824 BLAKE2B f56f65d5de31b8ca0d9ec1adae89ccd2cdc53d0f0c37cf501713d6694742222040fcc61427a6619c73762581d8408fcd74465b8b3b4fb0863672c77cb50828c7 SHA512 6ae409c9e57d5d152a39912e7b73acd878fd56e77dfb34712fcd615d3f292b68e851d703941e6f8e20545d51f774c3b9e62a185aee6f0facbc4d3185ccdeb8fd MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/dev-python/autopilot/autopilot-1.6.1_p20210120_p0_p01.ebuild b/dev-python/autopilot/autopilot-1.6.1_p20210120_p0_p01.ebuild index a4be8ebf..ea0ddc62 100644 --- a/dev-python/autopilot/autopilot-1.6.1_p20210120_p0_p01.ebuild +++ b/dev-python/autopilot/autopilot-1.6.1_p20210120_p0_p01.ebuild @@ -4,10 +4,10 @@ EAPI=6 PYTHON_COMPAT=( python3_{7..9} ) -URELEASE="hirsute" +URELEASE="impish" inherit distutils-r1 ubuntu-versionator -UVER_PREFIX="+${UVER_RELEASE}.${PVR_MICRO}" +UVER_PREFIX="+21.04.${PVR_MICRO}" DESCRIPTION="Utility to write and run integration tests easily" HOMEPAGE="https://launchpad.net/autopilot" diff --git a/dev-python/pyjunitxml/Manifest b/dev-python/pyjunitxml/Manifest index dacd056a..73d52280 100644 --- a/dev-python/pyjunitxml/Manifest +++ b/dev-python/pyjunitxml/Manifest @@ -1,4 +1,4 @@ DIST pyjunitxml_0.6-2build1.debian.tar.xz 3700 BLAKE2B c01f2a72946a8e2c3383b5f97304690c50509b064408fdfe41eade683611d9a6e17a197f13fecf315cb629a5bbd0929374de91ddc063b95c7de3b7f900b429c5 SHA512 5130f99f326b661f6c12d99ff4ad7a20462d36867379e9de94d16c4dbaf192daafdcee727fe07f3cc83bb752f20246bc9fc2546e8b343cce54bd34da3bf4dc25 DIST pyjunitxml_0.6.orig.tar.gz 21619 BLAKE2B 7276c08055b98983bb39c4d74c11ee8f97c24f1339cdaae5b309bc3cf315511d6cebe74093ad1fb96aabccc0270d956ba30bddb146ac6ee59b8146b66b3135f9 SHA512 10078a71c64e937c9ee09d12e2802ea48b3d912094099e99ca8a99b3c4bcd730ff5bf35fd31bd6074dd6f1e4db84d983dded151089a894bd9737b946b49ea0bc -EBUILD pyjunitxml-0.6_p_p2_p01.ebuild 638 BLAKE2B 7f0e015b6985729885cee48d7e66f9ac463cf8d607581a60477674292369aa9b1f2827ac5cf550ab67beb1ab65fcf472f92bd1c1ceb7146c44a39a7e926be897 SHA512 2dde78682dac26eb92066a768d92fccb5dbabf3bd0bc80eebfffb0696a72b27c7f7c0b9c7b758b6a59293365c47c2ca4181ae1a6a7486bd8ae72d98cace25af7 +EBUILD pyjunitxml-0.6_p_p2_p01.ebuild 637 BLAKE2B 28a6ada01641dbd8a3506eb31415c89a2f332a8fa8eddd7ac245722aaa5d6901fb6628eab3a5449d1c13e5f47732d2dc8739f90776e4c3261a4a4d97a1833d80 SHA512 cb3137264b00309e5ea199b40b0b58bafdf944cd0a0b8264038f1cf762a39ec8602434809bc13612514a7560b2d50f09c32f8567dc52fd110b3eafd360c8bdc5 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/dev-python/pyjunitxml/pyjunitxml-0.6_p_p2_p01.ebuild b/dev-python/pyjunitxml/pyjunitxml-0.6_p_p2_p01.ebuild index fb1d387a..07514c42 100644 --- a/dev-python/pyjunitxml/pyjunitxml-0.6_p_p2_p01.ebuild +++ b/dev-python/pyjunitxml/pyjunitxml-0.6_p_p2_p01.ebuild @@ -4,7 +4,7 @@ EAPI=7 PYTHON_COMPAT=( python3_{7..9} ) -URELEASE="hirsute" +URELEASE="impish" inherit distutils-r1 ubuntu-versionator UVER="-${PVR_PL_MAJOR}build${PVR_PL_MINOR}" diff --git a/dev-util/cmake-extras/Manifest b/dev-util/cmake-extras/Manifest index 6a96ec30..dfd21397 100644 --- a/dev-util/cmake-extras/Manifest +++ b/dev-util/cmake-extras/Manifest @@ -1,4 +1,4 @@ DIST cmake-extras_1.5-7.debian.tar.xz 11600 BLAKE2B e66b4da4e8a87b1a8bea83b09ca25cf5dd59330438e2be020de42490683e32a7993f7f7412172df53c71c5d11b94dbe3efdbcff43bbbac3afcf2fea1ba00662c SHA512 5ef596ff72e531405e54b720b729c3a26fa3a8761048823a4fbe1ed8856aaf9926843e2f2122c03cdaacd58e51e5b9febb73330b94a9e602e915f7e13d2ec236 DIST cmake-extras_1.5.orig.tar.gz 75318 BLAKE2B eda9fdb96d7bee278d942e10b751f446e00f421dc37e77536d1a30098eb1901a057a7c0e09248a678f7f5d7942bfce0cb183dd7b86d612c5a69cdbf6d7308d53 SHA512 21262ccb835652818265720fd0851165dedc79d28f6b8a9005a72750e833696b7456b8153d66be1fbed7a4379fdc86c1606f39199267c8bf6ee40af4beae6181 -EBUILD cmake-extras-1.5_p7.ebuild 653 BLAKE2B 0107e9082eda29e8e96dda53fb286debef946d8bee754109db0eb051f1ea1f19ec1bb179e68591fe379c3ed8dbf6087c8e59736c26feee17253a6288b5a1cf84 SHA512 f4074fc36d8e2fb4e1c8ba257b65057cf8430051fd6aebf7cbea5c1ff236b7b34ee29608650c886567fff13fac9fb82392f455aae350e95a4caf6571e56d9c89 +EBUILD cmake-extras-1.5_p7.ebuild 652 BLAKE2B 84875717544ebe2941b109e4dd3cf342a6c6c2e1993f39272cb0384f0063e401965fd7fc3905da8686d9a4f9c4af45adc0f478ea5a2234fc6462daac07f7ae7b SHA512 c5831a7afc4b805b3213392e7a5e63602f482684edb43c8905e96f8a463e5daaabeb55e85814e67f0f7bd77827a6503e461fb56de0fbe536f83c8965277ed4e0 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/dev-util/cmake-extras/cmake-extras-1.5_p7.ebuild b/dev-util/cmake-extras/cmake-extras-1.5_p7.ebuild index 784a11e7..e380ee19 100644 --- a/dev-util/cmake-extras/cmake-extras-1.5_p7.ebuild +++ b/dev-util/cmake-extras/cmake-extras-1.5_p7.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit cmake-utils ubuntu-versionator UVER="-${PVR_MICRO}" diff --git a/eclass/ubuntu-versionator.eclass b/eclass/ubuntu-versionator.eclass index bba36a3e..4c8cd5d4 100644 --- a/eclass/ubuntu-versionator.eclass +++ b/eclass/ubuntu-versionator.eclass @@ -37,9 +37,8 @@ UURL="https://launchpad.net/ubuntu/+archive/primary/+files" #---------------------------------------------------------------------------------------------------------------------------------# -[[ ${URELEASE} == focal* ]] && UVER_RELEASE="20.04" # unity-extra/indicator-evolution-0.2.20_p_p0_p42 -[[ ${URELEASE} == hirsute* ]] && UVER_RELEASE="21.04" -[[ ${URELEASE} == impish* ]] && UVER_RELEASE="21.10" +[[ ${URELEASE} == "impish"* ]] && UVER_RELEASE="21.10" +[[ ${URELEASE} == "jammy"* ]] && UVER_RELEASE="22.04" PV="${PV%%[a-z]_p*}" # For package-3.6.0a_p0_p02 @@ -131,14 +130,6 @@ ubuntu-versionator_pkg_setup() { [[ -n ${CURRENT_PROFILE} ]] && [[ ${CURRENT_PROFILE} == *"${REPO_ROOT}"* ]] \ || die "Invalid profile detected, please select gentoo-unity7 profile shown in 'eselect profile list'." - - # Minimum system-wide GCC version required # - [[ ${URELEASE} == hirsute* ]] && GCC_MINIMUM="10.3.0" - [[ ${URELEASE} == impish* ]] && GCC_MINIMUM="10.3.0" - GCC_CURRENT=$(gcc-fullversion) - - [[ ${GCC_CURRENT//./} -lt ${GCC_MINIMUM//./} ]] \ - && die "The selected '${PROFILE_RELEASE}' profile requires your system be built using >=sys-devel/gcc:${GCC_MINIMUM}, please consult the output of 'gcc-config -l'." } # @FUNCTION: ubuntu-versionator_src_prepare diff --git a/ehooks_version_control.sh b/ehooks_version_control.sh index 5a34e57e..629587ee 100755 --- a/ehooks_version_control.sh +++ b/ehooks_version_control.sh @@ -90,11 +90,11 @@ find_flag_changes() { ## Try another package if slots differ. [[ -z ${slot} ]] || grep -Fqsx "${slot}" "${n}/SLOT" || continue - ## Try another package if modification time is newer or equal to ehook USE-flag change time. + ## Try another package if modification time is newer or equal to ehook USE flag change time. sys_date=$(date -r "${n}" "+%s") [[ ${sys_date} -ge ${ts} ]] && continue - ## Set USE-flag change time equal to package's time when --reset option given. + ## Set USE flag change time equal to package's time when --reset option given. if [[ -n ${reset} ]]; then if portageq has_version / unity-extra/ehooks["${flag}"]; then sed -i -e "/${x/\//\\/}|${flag}/{s/|[0-9]\{10\}|/|${sys_date}|/}" "${ts_file}" 2>/dev/null && reset="applied" && continue @@ -369,28 +369,32 @@ debian_changes() { printf "%s" "Looking for available version changes${color_blink}...${color_norm}" local \ - releases="hirsute hirsute-security hirsute-updates impish impish-security impish-updates" \ + releases="impish jammy" \ sources="main universe" \ - rls src + rls frls src for rls in ${releases}; do - for src in ${sources}; do - wget -q -T 60 http://archive.ubuntu.com/ubuntu/dists/${rls}/${src}/source/Sources.gz -O /tmp/ehooks-${USER}-sources-${src}-${rls}.gz || exit 1 - gunzip -qf /tmp/ehooks-${USER}-sources-${src}-${rls}.gz || exit 1 + for frls in "${rls}" "${rls}"-security "${rls}"-updates; do + for src in ${sources}; do + wget -q -T 60 http://archive.ubuntu.com/ubuntu/dists/${frls}/${src}/source/Sources.gz -O /tmp/ehooks-${USER}-sources-${src}-${frls}.gz || exit 1 + gunzip -qf /tmp/ehooks-${USER}-sources-${src}-${frls}.gz || exit 1 + done done done - local pn un uv + local an pn un uv local -a auvers result for x in "${uvers[@]}"; do auvers=() un="${x#*|}" - for r in ${releases}; do - for s in ${sources}; do - uv=$(grep -A6 "Package: ${un%_*}$" /tmp/ehooks-${USER}-sources-${s}-${r} | sed -n 's/^Version: \(.*\)/\1/p' | sed 's/[0-9]://g') - [[ -n ${uv} ]] && [[ ${un#*_} != ${uv} ]] && auvers+=( "'${uv}'" ) + for rls in ${releases}; do + for frls in "${rls}" "${rls}"-security "${rls}"-updates; do + for src in ${sources}; do + uv=$(grep -A6 "Package: ${un%_*}$" /tmp/ehooks-${USER}-sources-${src}-${frls} | sed -n 's/^Version: \(.*\)/\1/p' | sed 's/[0-9]://g') + [[ -n ${uv} ]] && [[ ${uv} != ${pn} ]] && [[ ${un#*_} != ${uv} ]] && auvers+=( "'${uv}'" ) && pn="${uv}" + done done done @@ -405,12 +409,12 @@ debian_changes() { tar --overwrite -xf "/tmp/ehooks-${USER}-${un%_*}_${uv}.debian.tar.xz" -C /tmp debian/patches/series --strip-components 2 --transform "s/series/ehooks-${USER}-aseries/" if [[ -n $(diff /tmp/ehooks-${USER}-series /tmp/ehooks-${USER}-aseries) ]]; then result[${#result[@]}-1]="${result[${#result[@]}-1]/${uv}/${color_red}${uv}${color_norm}}" - src="anotation" + an="anotation" fi done fi done - [[ ${src} == "anotation" ]] && result+=( "${color_red}[ debian/patches/series differ from local ]${color_norm}" ) + [[ ${an} == "anotation" ]] && result+=( "${color_red}[ debian/patches/series differ from local ]${color_norm}" ) ;; esac printf "\b\b\b%s\n\n" "... done!" diff --git a/gnome-extra/activity-log-manager/Manifest b/gnome-extra/activity-log-manager/Manifest index 178bd97a..9079aa65 100644 --- a/gnome-extra/activity-log-manager/Manifest +++ b/gnome-extra/activity-log-manager/Manifest @@ -1,5 +1,5 @@ AUX translations-artful.tar.xz 72816 BLAKE2B 46e4da073c1f91444487527528d2a9a8a8ff37926b6e2504ba1767373509798aa2e7b289a1a16b42a18cc62eb75ea3c0e83ae8cd546ce77590c71413bc2c1017 SHA512 595fd671b6509ba621adb9df5de950aa3dcb8d15bf09e04010dfaa3fb6a1360f59bf44a63e3ac97b2c55409e48236f9c52910e3de032cf07b3c2f86fdb8c52f3 DIST activity-log-manager_0.9.7-0ubuntu27.debian.tar.xz 37412 BLAKE2B aa14c2ce71f62c17ed492ef221626c1da6dcae1f0d0235a8cddef83b055bfda7e2f74d1557b8995fb6a3a88911267f694073c99cfc480ac59c8970edaf9a4bbb SHA512 b416ed18733fa926e4413d84c76b60b349fae36745807b7edce34554f0bb0211bc7754412b4ff9660580db455e2f6380856081af225e37594921cfaa088d6250 DIST activity-log-manager_0.9.7.orig.tar.xz 332004 BLAKE2B 87abc548f111bd25e86c750b91888cf8f5b6d26c0598cb960f6b391523882475e6c285d7136372363010fcf8a10d6943f582c13b54a2993bb90fc3facf9307d0 SHA512 e0a43cae08e7f86b35ab8a4b0c70a4eb4a2ae821d3ab907a5c4135640e67c572ec2e735a3350099e3febe177d67db83af526c62b7b595894c0df08d84c3bb6ce -EBUILD activity-log-manager-0.9.7_p_p0_p27.ebuild 1342 BLAKE2B db23cdfc845a9aa541089932d35aa76e527f99006eb2384b885601e4f47c13d8e6267804ab3e33c019e12d80c483644575258081fcef204db1e801b110c80b58 SHA512 112d01543123fc25fa8e316ef9b2a4c5ad8a3173e4827547e77e355aa0ae9e2047b34e721c87b60e639615e1a0b07905f120b10060e78051fbc22446c6418546 +EBUILD activity-log-manager-0.9.7_p_p0_p27.ebuild 1341 BLAKE2B 0bf9744eaf1cda40993ea6126e7dba69acae7c9d38a64e4f80f8c27bef1fd9d0ba0980b9080141f9ba5db5457bedb7ba1c9790f4df6186cf884d32dc5e222454 SHA512 51f05faeda8473257809d85e6a49b0be713c99fd49dbffd4f1ac8407a771a1576a41b30ffe7fafb0820086a6393421849759709a63c858e7fb9c4a4fb6ae07b0 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/gnome-extra/activity-log-manager/activity-log-manager-0.9.7_p_p0_p27.ebuild b/gnome-extra/activity-log-manager/activity-log-manager-0.9.7_p_p0_p27.ebuild index 5cb8a758..8acd3a2c 100644 --- a/gnome-extra/activity-log-manager/activity-log-manager-0.9.7_p_p0_p27.ebuild +++ b/gnome-extra/activity-log-manager/activity-log-manager-0.9.7_p_p0_p27.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils gnome2-utils ubuntu-versionator vala xdg-utils DESCRIPTION="Blacklist configuration user interface for Zeitgeist" diff --git a/gnome-extra/zeitgeist/Manifest b/gnome-extra/zeitgeist/Manifest index 990a5289..9134f74a 100644 --- a/gnome-extra/zeitgeist/Manifest +++ b/gnome-extra/zeitgeist/Manifest @@ -2,5 +2,5 @@ AUX 0001-use-genericarray-api-only.patch 814 BLAKE2B 74b451a0c5b6f438df043044b74 AUX mail-clients 150 BLAKE2B ea08db9d84477d7d238dda4a415c7c10cd25c7e316a29fcf3fad14ace7abf261ad8d4181bd6d7429053f8d819882137596660589e8f4e2ba2f0c3730067423a0 SHA512 b46beba39517722b802ace52d3a09701bafe13bbd1e7d1f5543d01ab992402d3650426863ac8721efda0b8b1f6e43d440f2192497555f207f32af8b536a13acd DIST zeitgeist_1.0.3-4ubuntu1.debian.tar.xz 17108 BLAKE2B 33493963f8fd29cf99bb691c5b7f940066cc99fe116e25f1bb2133d9e4b08f4b6993a45f15c8ce7b69698f37c6260055a7cc434d13268da7ab6fb84ae4fcf4e4 SHA512 bd4a1de42e6d14bb9022e7865ac9203781e2a1314cd27a8a37c67075ca7e4efa9b2c78fe0623fb37835b598758de46b9fe287fbe7a76293af365aa4863fc7ed0 DIST zeitgeist_1.0.3.orig.tar.xz 840888 BLAKE2B c37eb48072d2e3b46058c060bedab5e48be9587a7814485e03f67131dface45b0efd5887913751a8c5de348cc81ddf64442eb903e95c447344e72c18c4514dcd SHA512 79ff0972d1bc228ca5f1df63ee52b7b9b732f4e0a5d74db22b94c5066fb3e5fc02fd491b9e7571d1d215adad4fe11010aa5ad398abbd2f159dde5c88015afb33 -EBUILD zeitgeist-1.0.3_p_p4_p01.ebuild 2639 BLAKE2B 4137e03162f72a08675b746cb4c9991be91bbff901b0e73c218c45d3b0f95dcd8fe56ee1f84e1a3076f458059378a08fc398f927e020c10a8e319aad1ca372b9 SHA512 195445d59a750923ab63345604e5a7e4234b741d1627f9ddfdc9a66ac3e39d281ee1a41358656289e64aa53e2244d5b1e28622ea282af8ab274557fcf97578cf +EBUILD zeitgeist-1.0.3_p_p4_p01.ebuild 2638 BLAKE2B 3b1780691eec18400a28d3070f7d0e212ebac1636c18ee9358164cfa9a4179f15e0b8566d9c6e67de39edf926e883b2410f25e8085fd1268be7eba82e074b99e SHA512 c13d0cff9346d83c2b8d3fb34748d0a3d237bedd94a48ef5db35fdbe07673fc9daa09a0efa708218639b156cb85e2b55dc748cbb3b83860b29f88bb2e2e50570 MISC metadata.xml 835 BLAKE2B d0e02315822410468c94f090ef9a0e921891d5057e5a699207d5a333a189a09ae4e1e2a51c9ca82f67f3ca299d6c741d3faf46b9212e11d931504dca433d5787 SHA512 e339fddbdeaf908a75a9862a927a13ea6e8a72b2fc5695aed694e3595099fd901376855fee88bcdfd863bda838b86d57508312dbb1efc8dfbe8fb7abc0486d99 diff --git a/gnome-extra/zeitgeist/zeitgeist-1.0.3_p_p4_p01.ebuild b/gnome-extra/zeitgeist/zeitgeist-1.0.3_p_p4_p01.ebuild index 0c0a0a5b..ca063415 100644 --- a/gnome-extra/zeitgeist/zeitgeist-1.0.3_p_p4_p01.ebuild +++ b/gnome-extra/zeitgeist/zeitgeist-1.0.3_p_p4_p01.ebuild @@ -4,7 +4,7 @@ EAPI=6 PYTHON_COMPAT=( python3_{7..9} ) -URELEASE="hirsute" +URELEASE="impish" inherit autotools bash-completion-r1 python-r1 vala ubuntu-versionator xdg DESCRIPTION="Service to log activities and present to other apps" diff --git a/media-fonts/fonts-noto-cjk/Manifest b/media-fonts/fonts-noto-cjk/Manifest index 7e596d70..47b207ff 100644 --- a/media-fonts/fonts-noto-cjk/Manifest +++ b/media-fonts/fonts-noto-cjk/Manifest @@ -1,5 +1,5 @@ DIST fonts-noto-cjk_20201206-cjk+repack1-1.debian.tar.xz 5712 BLAKE2B 351c37fda5aecfdc9d8ab2e62f01016aaad5030197f39ab2b99571c2f8058452a4d510ed9e5f857143597acc664259f6598d4182be31374f19c49261524642d1 SHA512 31edbae51b1a4ee73ade8bcad85f5f8597fa5a898fe7eafc11ef5a2fa2a38d754f35386f806480e92e8cffd25ba22820bf2d57c2baa4a28bb33cc65ddc08aef6 DIST fonts-noto-cjk_20201206-cjk+repack1.orig.tar.xz 182606672 BLAKE2B 910cf9e44a59c1498bb7644c813c962977e86b58bcb5f00d4aacf543d5713d18e792cb3deab983681912eb26051548e5cb4ee4d7010c767c660ab1ef68ee4d3b SHA512 92557dcf65ffc0a388c56ca5ff3a0072587facf6e89ab1e57270e351f04771b106866caa192b9c60b4253aaa1b637d1d46ba72fad78dd85b304e5a9372c6c0f0 DIST language-selector_0.211.tar.xz 267784 BLAKE2B ce6c458b01ef9625c1c0fffdea7136a4ac76a8e66b3239c16cb396d3fee06bb1a29050e157a8d0562bef4b634e8d64b718368671c9f63e8eb6a5d674c7cdb650 SHA512 757a9efb2c064e4c5be7f2b2a9a961495840852790f78432855a3621b4f41947dada8dc6b02bdbf69dd664017e431bdaa1b5b5375a1e5cf77a0be47b2830e4c0 -EBUILD fonts-noto-cjk-20201206_p1_p1.ebuild 1998 BLAKE2B 6a005de9ae63f29afc18812e6eb1fcb2a78ba2931e5604ab885d18c9d7c7254f78e0b3fea3e02b003bea6c474d4fd2cf3cafdddade447854ccec97450741135a SHA512 f7b1b874fd263273e7f8164e46f2e980091d4d1da4e72dcd2ca4402337a4b66cfebea222c25adfdf41053bfbc1dfcadadfcca33f5909dc6f98bd901bd8b8564f +EBUILD fonts-noto-cjk-20201206_p1_p1.ebuild 2000 BLAKE2B 3162ab40784f0a69b7b61b4253b6e4f793306a53f3fad8dc1a28d79baaf991f1df6f47e2d0fd9a70c04a967cc2047dd4e1b2e714bfdbd1166883e25c7bb21a16 SHA512 d7732dfab5e0a1b300d9bb2423546d5b382c3153aedf60c540d8701ef35f32bec900dbbaa74f6487f224a7bb7fba864eeecc31b55cd9e3aea46ef8b277018988 MISC metadata.xml 270 BLAKE2B 5219ce379e3605084e55f4e2963ea8598f3036db68af20d0b2e270aaf17660b71df39bf9cdc08ac0fd6187fc471d8f7ad8abbb1ad7c33885695c93cba579bb8e SHA512 f21a951497d08772e3119ecb498940274d8d1daa3b29570475695940137039be0f95afb3b03b28105dddf6311c86e023e8d0a2168807adeaf5047fcfcb1b64a8 diff --git a/media-fonts/fonts-noto-cjk/fonts-noto-cjk-20201206_p1_p1.ebuild b/media-fonts/fonts-noto-cjk/fonts-noto-cjk-20201206_p1_p1.ebuild index 73ee8238..5ed51796 100644 --- a/media-fonts/fonts-noto-cjk/fonts-noto-cjk-20201206_p1_p1.ebuild +++ b/media-fonts/fonts-noto-cjk/fonts-noto-cjk-20201206_p1_p1.ebuild @@ -1,8 +1,8 @@ -# Copyright 1999-2021 Gentoo Authors +# Copyright 1999-2021 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 EAPI=7 -URELEASE="hirsute" +URELEASE="impish" inherit font ubuntu-versionator DESCRIPTION="No Tofu font families with large Unicode coverage" diff --git a/media-libs/glewmx/Manifest b/media-libs/glewmx/Manifest index 643c5ae8..abc2e59c 100644 --- a/media-libs/glewmx/Manifest +++ b/media-libs/glewmx/Manifest @@ -1,4 +1,4 @@ DIST glewmx_1.13.0-4ubuntu3.debian.tar.xz 29856 BLAKE2B 5b31931d8bc506c7afe66996e7d2095bff5228bbe7adb5c413633ef186b3a28ee972d87660392c6a4f171a1342bf99bf7f10bae303051d0b77f6507cad283a6a SHA512 1e5cad9b9d8d36e4550b27a796276b0da77912b692317776f6b83484135f91145b82377c6152daf3be6ca872f0da0d1ae7bc7f65ff19a3021362e3249b8ef442 DIST glewmx_1.13.0.orig.tar.gz 616070 BLAKE2B 73a1fa4f3a49a072c7c23c2976775521c85afe4aec7fad6d91d9e3b4df380b37f5410d3e9b2dd31ac903b6d805635e2e1c3db79d6d4864606bf721304cf00379 SHA512 8fc8d7c0d2cd9235ea51db9972f492701827bff40642fdb3cc54c10b0737dba8e6d8d0dcd8c5aa5bfaaae39c6198ba3d4292cd1662fbe1977eb9a5d187ba635f -EBUILD glewmx-1.13.0_p_p4_p03.ebuild 1929 BLAKE2B c6e29a911b35852c05a262c3680da7d276ff51d11bf91ee2c92b1a7025df7c17d14ffbfe2f698a33aeeca8eb22c46b6dbbbf0e29c20a44201b6459cadc841e4d SHA512 234d2746c9bd77b74810ece5789ea99d77aae25cc2206159b2c7b297f0e95212d54198c4c30b22f539070b14c113537819f94ce1950e20fbe15f9647651c0bbc +EBUILD glewmx-1.13.0_p_p4_p03.ebuild 1928 BLAKE2B a8fa2de0172662d0cc9d7ab34b76e54129256b91316aa07358f42822bb6911d2abbd4dd1db1bae84f3289c2c4489410dfcf57098734f2c771d8c2a5191b97ffa SHA512 91743e16bae5f40d58d65ade4c70325a58cc4a3bc14dfe436b653da69faf0a3486570f866f4eb9cbe9a4373fee4afc74fdfca7b8f13e26635ba107b09fb18d4b MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/media-libs/glewmx/glewmx-1.13.0_p_p4_p03.ebuild b/media-libs/glewmx/glewmx-1.13.0_p_p4_p03.ebuild index af0acd17..91839887 100644 --- a/media-libs/glewmx/glewmx-1.13.0_p_p4_p03.ebuild +++ b/media-libs/glewmx/glewmx-1.13.0_p_p4_p03.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit multilib-minimal toolchain-funcs ubuntu-versionator DESCRIPTION="OpenGL Extension Wrangler MX" diff --git a/net-libs/geonames/Manifest b/net-libs/geonames/Manifest index ef768c2c..8bed5c87 100644 --- a/net-libs/geonames/Manifest +++ b/net-libs/geonames/Manifest @@ -1,3 +1,3 @@ DIST geonames_0.2+17.04.20170220-0ubuntu4.tar.xz 78096940 BLAKE2B 0b6a45f7e29d8a1aeb26ce9ed3e9e2a09f60c4d4640c1a39fc300f530769c078017dd627981758bfcc7c502e285592ca9258f0af1082ce217b1631449d807eda SHA512 05bcec91202841d1f337022d22c0c733e71e6ee7ee95e5b65b6275e5acd3b155b64a25518f2ef905dd5ffd9ebd7e63b4b07190241a911751ba03f99fe8e30398 -EBUILD geonames-0.2_p20170220_p0_p04.ebuild 648 BLAKE2B 9beef428c56caad90ae375d7b6800e08e1bff2b17ebfbaec844ff04b286bf2da2a9f007ad34c4aa44d75c0b8da9037cab015e82a2959e665d77e1cf84a4e3041 SHA512 ebf65578042479561fc194f04af5d0b44cda8efa61e15645c65c7a5dbd1b334aaba2ce2ad0afdaefe0648d1612042dd7c79e4edede8587bfc801db31a2c6557e +EBUILD geonames-0.2_p20170220_p0_p04.ebuild 647 BLAKE2B 5779a7752dc75d9ff45b2ab5a09e016c506b034617db2f4cdefff4690b5d9d23d818f4cbb57525255af8d0b94e65f5f5181fb32324d551e85b8c7a28cc782cd3 SHA512 c1001faa03faad08b170c9813d451abadb68fe21a2faa8f54a82704abcd73777f79dbd261dae53f37dc26f5768829d81372034332f7f4f6af32d0d67ad565c90 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/net-libs/geonames/geonames-0.2_p20170220_p0_p04.ebuild b/net-libs/geonames/geonames-0.2_p20170220_p0_p04.ebuild index bdad3973..122af248 100644 --- a/net-libs/geonames/geonames-0.2_p20170220_p0_p04.ebuild +++ b/net-libs/geonames/geonames-0.2_p20170220_p0_p04.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils ubuntu-versionator UVER_PREFIX="+17.04.${PVR_MICRO}" diff --git a/net-libs/telepathy-indicator/Manifest b/net-libs/telepathy-indicator/Manifest index a4d3926e..b6583214 100644 --- a/net-libs/telepathy-indicator/Manifest +++ b/net-libs/telepathy-indicator/Manifest @@ -1,3 +1,3 @@ DIST telepathy-indicator_0.3.1+14.10.20140908.orig.tar.gz 26173 BLAKE2B 1dbcef60b8b97781a395237bea7c3d335740ee6a85f8e518816d74c704521028b4e7be1a4a959beea3cc1ab177a59646b930e25292bfcb31dd47c4d5b5d82a10 SHA512 5c562fda9f7b70a4c4a766f8415bd364b0459d3f055c4c919b2bd9d568180161bfc13882a5aa84bed4e026303a786a1cb2acc6c26e862cb85dcceca6991fa8b7 -EBUILD telepathy-indicator-0.3.1_p20140908_p0_p02.ebuild 766 BLAKE2B 45e4f57a7b1b8661255503306d879bff8f24674ad93577b8c04d78c7528903b4d02f0fae0db71cc3ff57287ec270ce59f9427a8dbbde2578fafe2224304859c0 SHA512 cb7c18844ea95946c99dbc9337ad4e82c5ddcf48a4fbba788c1d59dd269ffc93141610e541cf39ec8143ae6d4c2c6419d612b13e3b37a6d998e3391eff81563c +EBUILD telepathy-indicator-0.3.1_p20140908_p0_p02.ebuild 765 BLAKE2B da573281bd2e11bdf7f25932824ad5953aa484c0d8d77eefb5cbfd4cf39e5d7952c1f2e061101ecc46d4ce93e865c38e9e9f25bc82391419cbc5b9999faaa820 SHA512 61021c517216c24439b4649a9c96c2113b058148b183aa34d36dbdd321c95c3b616bc9f21243ded92b2aa08e6a2a11edf41022ac55656bcb073900dfaac6b46d MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/net-libs/telepathy-indicator/telepathy-indicator-0.3.1_p20140908_p0_p02.ebuild b/net-libs/telepathy-indicator/telepathy-indicator-0.3.1_p20140908_p0_p02.ebuild index a88f77ea..9abfdbe5 100644 --- a/net-libs/telepathy-indicator/telepathy-indicator-0.3.1_p20140908_p0_p02.ebuild +++ b/net-libs/telepathy-indicator/telepathy-indicator-0.3.1_p20140908_p0_p02.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils gnome2-utils ubuntu-versionator UVER_PREFIX="+14.10.${PVR_MICRO}" diff --git a/net-mail/mailnag/Manifest b/net-mail/mailnag/Manifest index ed6517b4..48833b6f 100644 --- a/net-mail/mailnag/Manifest +++ b/net-mail/mailnag/Manifest @@ -1,3 +1,3 @@ DIST mailnag-2.2.0_p20210411.tar.gz 180105 BLAKE2B 2d613df8121fc8631ae280165681e0b7930acf289717226c71888c96164dfb714c93929b750641f6fdb7ec5cfd5a8e6cd0d67fc016a4ec9185ac53b94ad92187 SHA512 d6dac1ec6e80f29e598be99157de9fdcdf2e8c61c1606f85170be3e16429259ccb70d3e01806a525c39939656a58418d1107dc44e6584d344354f5180786fedb -EBUILD mailnag-2.2.0_p20210411.ebuild 1013 BLAKE2B fdf887f8fd4f06bfe5f627cb96d530adba434b173121852fe457e8871adb7f6227a775882eab8a2af816549d042a03c8bf293e6a610707e6e4f5436f8f6d346d SHA512 641e22c815e4f9506f7991a1c6cdc98e2f932f1a47b864e0c6d4f6290169a0edbef3f5456738ca8a584b1dd450c120bea4bcfa298be1a41c156c883a975d9692 +EBUILD mailnag-2.2.0_p20210411.ebuild 1059 BLAKE2B 4ea4c96ae5fe040f764088bf459926950f1a6934529d6afe91ebed072456c5fd9102ae920ef350926801a5330930524b009efb8a796e4c0589108079544b8cff SHA512 6b24a43a0fb7624350ee1b5dcfc607f9261a95a5c57b3a7106e70a4752fdf36c8e4637370dc04de4c8cb25b42893e3ac243f626fb0d53bf81b58298d1641faa0 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/net-mail/mailnag/mailnag-2.2.0_p20210411.ebuild b/net-mail/mailnag/mailnag-2.2.0_p20210411.ebuild index 28c92190..518b5a6e 100644 --- a/net-mail/mailnag/mailnag-2.2.0_p20210411.ebuild +++ b/net-mail/mailnag/mailnag-2.2.0_p20210411.ebuild @@ -4,7 +4,6 @@ EAPI=7 PYTHON_COMPAT=( python{3_8,3_9} ) -DISTUTILS_USE_SETUPTOOLS=no inherit distutils-r1 xdg @@ -17,7 +16,7 @@ HOMEPAGE="https://github.com/pulb/mailnag" LICENSE="GPL-2" SLOT="0" -IUSE="" +IUSE="+messagingmenu" RESTRICT="mirror" BDEPEND="app-crypt/libsecret @@ -28,8 +27,8 @@ BDEPEND="app-crypt/libsecret >=net-misc/networkmanager-0.9.4 x11-libs/gtk+:3 >=x11-libs/libnotify-0.7" - -RDEPEND="${BDEPEND}" +RDEPEND="${BDEPEND} + messagingmenu? ( x11-plugins/mailnag-messagingmenu-plugin )" S="${WORKDIR}/${PN}-${COMMIT}" diff --git a/profiles/amd64/17.1/desktop/unity/profile.bashrc b/profiles/amd64/17.1/desktop/unity/profile.bashrc index ccc9a781..5e3dc859 100644 --- a/profiles/amd64/17.1/desktop/unity/profile.bashrc +++ b/profiles/amd64/17.1/desktop/unity/profile.bashrc @@ -41,15 +41,15 @@ if [[ ${EBUILD_PHASE} == "setup" ]] ; then ## Process EHOOK_SOURCE. if [[ -n ${EHOOK_SOURCE[@]} ]]; then - ## Define function to check if USE-flag is declared. + ## Define function to check if USE flag is declared. ehook_use() { return $(portageq has_version / unity-extra/ehooks["$1"]) } - ## Define function to skip all related ebuild hooks if USE-flag is not declared. + ## Define function to skip all related ebuild hooks if USE flag is not declared. ehook_require() { if ! portageq has_version / unity-extra/ehooks["$1"]; then - echo " * USE-flag '$1' not declared: skipping related ebuild hooks..." + echo " * USE flag '$1' not declared: skipping related ebuild hooks..." exit ${SKIP_CODE} fi } diff --git a/profiles/ehooks/app-office/libreoffice-bin/02-post_pkg_postinst.ehook b/profiles/ehooks/app-office/libreoffice-bin/02-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/app-office/libreoffice-bin/02-post_pkg_postinst.ehook +++ b/profiles/ehooks/app-office/libreoffice-bin/02-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/app-office/libreoffice/04-post_pkg_postinst.ehook b/profiles/ehooks/app-office/libreoffice/04-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/app-office/libreoffice/04-post_pkg_postinst.ehook +++ b/profiles/ehooks/app-office/libreoffice/04-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/app-text/evince/01-post_src_unpack.ehook b/profiles/ehooks/app-text/evince/01-post_src_unpack.ehook index a142cf0f..b19e6998 100644 --- a/profiles/ehooks/app-text/evince/01-post_src_unpack.ehook +++ b/profiles/ehooks/app-text/evince/01-post_src_unpack.ehook @@ -13,8 +13,8 @@ ebuild_hook() { if [[ -f ${po_orig} ]]; then sed -i -e '/msgid \"\"/,/^$/d' "${po_ext}" cat "${po_ext}" >> "${po_orig}" - msguniq --use-first -o "${po_orig}" "${po_orig}" - msgfmt -o "${po_orig/.po/.gmo}" "${po_orig}" 2>&1 + msguniq --use-first -o "${po_orig}" "${po_orig}" 2>&1 # ignore warning messages + msgfmt -o "${po_orig/.po/.gmo}" "${po_orig}" 2>&1 # ignore warning messages fi done fi diff --git a/profiles/ehooks/app-text/evince/03-pre_src_prepare.ehook b/profiles/ehooks/app-text/evince/03-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/app-text/evince/03-pre_src_prepare.ehook +++ b/profiles/ehooks/app-text/evince/03-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/app-text/evince/04-post_pkg_postinst.ehook b/profiles/ehooks/app-text/evince/04-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/app-text/evince/04-post_pkg_postinst.ehook +++ b/profiles/ehooks/app-text/evince/04-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/dev-libs/glib/files/dont-try-dbusactivatable-when-in-unity.patch b/profiles/ehooks/dev-libs/glib/files/dont-try-dbusactivatable-when-in-unity.patch new file mode 100644 index 00000000..42f3b6cf --- /dev/null +++ b/profiles/ehooks/dev-libs/glib/files/dont-try-dbusactivatable-when-in-unity.patch @@ -0,0 +1,58 @@ +From b42d3dfaa4121213eafde8254a94a1a33452c488 Mon Sep 17 00:00:00 2001 +From: c4pp4 +Date: Sun, 3 Oct 2021 19:09:30 +0200 +Subject: [PATCH 1/1] Don't try DBusActivatable when in Unity + +Don't try DBusActivatable when in Unity user interface and fallback on Exec=. + +Signed-off-by: c4pp4 +--- + gio/gdesktopappinfo.c | 25 ++++++++++++++++++++++++- + 1 file changed, 24 insertions(+), 1 deletion(-) + +diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c +index 1a4b979..b9b17f2 100644 +--- a/gio/gdesktopappinfo.c ++++ b/gio/gdesktopappinfo.c +@@ -1754,6 +1754,29 @@ binary_from_exec (const char *exec) + return g_strndup (start, p - start); + } + ++static gboolean ++in_desktop (const gchar *name) ++{ ++ const gchar *desktop_name_list; ++ gchar **names; ++ gboolean in_list = FALSE; ++ gint i; ++ ++ desktop_name_list = g_getenv ("XDG_CURRENT_DESKTOP"); ++ if (!desktop_name_list) ++ return FALSE; ++ ++ names = g_strsplit (desktop_name_list, ":", -1); ++ for (i = 0; names[i] && !in_list; i++) ++ if (strcmp (names[i], name) == 0) { ++ in_list = TRUE; ++ break; ++ } ++ g_strfreev (names); ++ ++ return in_list; ++} ++ + static gboolean + g_desktop_app_info_load_from_keyfile (GDesktopAppInfo *info, + GKeyFile *key_file) +@@ -1893,7 +1916,7 @@ g_desktop_app_info_load_from_keyfile (GDesktopAppInfo *info, + /* Can only be DBusActivatable if we know the filename, which means + * that this won't work for the load-from-keyfile case. + */ +- if (bus_activatable && info->filename) ++ if (bus_activatable && info->filename && !in_desktop("Unity")) + { + gchar *basename; + gchar *last_dot; +-- +2.32.0 + diff --git a/profiles/ehooks/dev-libs/glib/pre_src_prepare.ehook b/profiles/ehooks/dev-libs/glib/pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/dev-libs/glib/pre_src_prepare.ehook +++ b/profiles/ehooks/dev-libs/glib/pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/games-board/iagno/pre_src_prepare.ehook b/profiles/ehooks/games-board/iagno/pre_src_prepare.ehook new file mode 100644 index 00000000..42e5636a --- /dev/null +++ b/profiles/ehooks/games-board/iagno/pre_src_prepare.ehook @@ -0,0 +1,8 @@ +ebuild_hook() { + ehook_require headerbar_adjust + + sed -i \ + -e "s/disable_action_bar = _disable_action_bar/disable_action_bar = false/" \ + -e "/show quit_button_stack/{s/true/false/}" \ + src/base-headerbar.vala +} diff --git a/profiles/ehooks/games-puzzle/gnome-taquin/pre_src_prepare.ehook b/profiles/ehooks/games-puzzle/gnome-taquin/pre_src_prepare.ehook new file mode 100644 index 00000000..42e5636a --- /dev/null +++ b/profiles/ehooks/games-puzzle/gnome-taquin/pre_src_prepare.ehook @@ -0,0 +1,8 @@ +ebuild_hook() { + ehook_require headerbar_adjust + + sed -i \ + -e "s/disable_action_bar = _disable_action_bar/disable_action_bar = false/" \ + -e "/show quit_button_stack/{s/true/false/}" \ + src/base-headerbar.vala +} diff --git a/profiles/ehooks/gnome-base/gconf/01-post_src_unpack.ehook b/profiles/ehooks/gnome-base/gconf/01-post_src_unpack.ehook index d0919b6a..322a3c4f 100644 --- a/profiles/ehooks/gnome-base/gconf/01-post_src_unpack.ehook +++ b/profiles/ehooks/gnome-base/gconf/01-post_src_unpack.ehook @@ -3,6 +3,6 @@ ebuild_hook() { blake=812c843439bdf45282b3da0e1677e621dd3b24f0166b0d6cb16ed5b70b9d922dcab15cdff16312746e6f343f7aecca7d541fa5708c1b4c3a02e6e8883d141746 \ uver=gconf_3.2.6-7ubuntu2 - source "${EHOOK_PATH}"/templates/fetch_debian.fnc + source "${EHOOK_PATH}"/templates/fetch_debian.template fetch_debian "${uver}" "${blake}" } diff --git a/profiles/ehooks/gnome-base/gconf/03-pre_src_prepare.ehook b/profiles/ehooks/gnome-base/gconf/03-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/gnome-base/gconf/03-pre_src_prepare.ehook +++ b/profiles/ehooks/gnome-base/gconf/03-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/gnome-base/gnome-desktop/01-post_src_unpack.ehook b/profiles/ehooks/gnome-base/gnome-desktop/01-post_src_unpack.ehook index 6ed5c436..2fd58666 100644 --- a/profiles/ehooks/gnome-base/gnome-desktop/01-post_src_unpack.ehook +++ b/profiles/ehooks/gnome-base/gnome-desktop/01-post_src_unpack.ehook @@ -1,8 +1,8 @@ ebuild_hook() { local \ - blake=5b2e9e00e18395c0eee91c112c1a7e8380b95e84f6734b3f50adf2eb78a379323b1d4e86564a58649fcadb9e00d2ea367dfb1b85f0381a8aa3a892cd0db4381c \ - uver=gnome-desktop3_40.2-1ubuntu1 + blake=3c639f7e6c4586ccbf604b3018c9f1690ea180d49e4f954d6c5e9c7f4f6e54e8c208823fb217747f7374799467fb139703ec5d5eeb0e9a955e783a7f9afb6d9f \ + uver=gnome-desktop3_40.4-2ubuntu1 - source "${EHOOK_PATH}"/templates/fetch_debian.fnc + source "${EHOOK_PATH}"/templates/fetch_debian.template fetch_debian "${uver}" "${blake}" } diff --git a/profiles/ehooks/gnome-base/gnome-desktop/02-pre_src_prepare.ehook b/profiles/ehooks/gnome-base/gnome-desktop/02-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/gnome-base/gnome-desktop/02-pre_src_prepare.ehook +++ b/profiles/ehooks/gnome-base/gnome-desktop/02-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/gnome-base/gnome-menus/01-post_src_unpack.ehook b/profiles/ehooks/gnome-base/gnome-menus/01-post_src_unpack.ehook index 9b2a25cf..10019717 100644 --- a/profiles/ehooks/gnome-base/gnome-menus/01-post_src_unpack.ehook +++ b/profiles/ehooks/gnome-base/gnome-menus/01-post_src_unpack.ehook @@ -3,6 +3,6 @@ ebuild_hook() { blake=ed304a9379d340a6a74da3c7e25255b4a14224f88a4ce3df3f9672a6ec436d8cc1c103cd27ab3b92c87c9b61ba83eeb48abd0072bc47e597df4955bf4b9eea88 \ uver=gnome-menus_3.36.0-1ubuntu1 - source "${EHOOK_PATH}"/templates/fetch_debian.fnc + source "${EHOOK_PATH}"/templates/fetch_debian.template fetch_debian "${uver}" "${blake}" } diff --git a/profiles/ehooks/gnome-base/gnome-menus/03-pre_src_prepare.ehook b/profiles/ehooks/gnome-base/gnome-menus/03-pre_src_prepare.ehook index 0483528e..0ba1ae2c 120000 --- a/profiles/ehooks/gnome-base/gnome-menus/03-pre_src_prepare.ehook +++ b/profiles/ehooks/gnome-base/gnome-menus/03-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches_eautoreconf.ehook \ No newline at end of file +../../templates/patches_eautoreconf.template \ No newline at end of file diff --git a/profiles/ehooks/gnome-base/gnome-panel/pre_src_prepare.ehook b/profiles/ehooks/gnome-base/gnome-panel/pre_src_prepare.ehook deleted file mode 100644 index 04645978..00000000 --- a/profiles/ehooks/gnome-base/gnome-panel/pre_src_prepare.ehook +++ /dev/null @@ -1,12 +0,0 @@ -ebuild_hook() { - # Description: make sure gnome-panel and the applets don't pick up menu proxies - # Author: Ted Gould - # Author: Dmitry Shachnev - # Author: Alberts Muktupāvels - # Forwarded: not-needed - # Last-Update: 2020-08-22 - # taken from debian/patches/40_unset_menuproxy.patch - sed -i \ - -e '/gtk_init (&argc, &argv);/i g_setenv ("UBUNTU_MENUPROXY", "0", TRUE);' \ - gnome-panel/gp-main.c -} diff --git a/profiles/ehooks/gnome-base/gnome-session/01-post_src_unpack.ehook b/profiles/ehooks/gnome-base/gnome-session/01-post_src_unpack.ehook index 7a4637e5..f17fccef 100644 --- a/profiles/ehooks/gnome-base/gnome-session/01-post_src_unpack.ehook +++ b/profiles/ehooks/gnome-base/gnome-session/01-post_src_unpack.ehook @@ -1,8 +1,8 @@ ebuild_hook() { local \ - blake=fa5016058c52389501945d9bab8362185a99b5b3309c38f3f5e5aed0ac9571d2f2c4b2a8b2ef3b7dc62a331e6539e33b7fa018857f7dfb3b1c06850fa006a670 \ - uver=gnome-session_3.38.0-3ubuntu2 + blake=1294baf1e7d3652c3bdefe3088cfd192e66180e51d1a90e6e00cee172cd6e3ea1b9714564d1f539e21c8767b8008c0ee2332cc60191d3734d44ebdcac0483322 \ + uver=gnome-session_40.1.1-1ubuntu1 - source "${EHOOK_PATH}"/templates/fetch_debian.fnc + source "${EHOOK_PATH}"/templates/fetch_debian.template fetch_debian "${uver}" "${blake}" } diff --git a/profiles/ehooks/gnome-base/gnome-session/02-pre_src_prepare.ehook b/profiles/ehooks/gnome-base/gnome-session/02-pre_src_prepare.ehook deleted file mode 100644 index c07f4277..00000000 --- a/profiles/ehooks/gnome-base/gnome-session/02-pre_src_prepare.ehook +++ /dev/null @@ -1,19 +0,0 @@ -ebuild_hook() { - sed -i \ - -e "s/Update-Latvian-translation/#Update-Latvian-translation/" \ - -e "s/Update-Dutch-translation/#Update-Dutch-translation/" \ - -e "s/Update-Hebrew-translation/#Update-Hebrew-translation/" \ - -e "s/Update-Greek-translation/#Update-Greek-translation/" \ - -e "s/Update-Bengali-India-translation/#Update-Bengali-India-translation/" \ - -e "s/Update-Chinese-Taiwan-translation/#Update-Chinese-Taiwan-translation/" \ - -e "s/Update-Norwegian-Bokm-l-translation/#Update-Norwegian-Bokm-l-translation/" \ - -e "s/data-Fix-indirect-conflict-with-exit.target-via-app.slice/#data-Fix-indirect-conflict-with-exit.target-via-app.slice/" \ - -e "s/Stop-dbus-daemon-instead-of-restarting-it/#Stop-dbus-daemon-instead-of-restarting-it/" \ - -e "s/util-Only-accept-common-space-characters/#util-Only-accept-common-space-characters/" \ - -e "s/util-Log-variables-excluded-from-environment-upload/#util-Log-variables-excluded-from-environment-upload/" \ - -e "s/main-Use-already-defined-error-from-main-function/#main-Use-already-defined-error-from-main-function/" \ - -e "s/main-Warn-about-failures-to-update-the-environment/#main-Warn-about-failures-to-update-the-environment/" \ - -e "s/util-Never-try-to-autostart-systemd/#util-Never-try-to-autostart-systemd/" \ - -e "s/util-Disable-capturing-of-subpatterns/#util-Disable-capturing-of-subpatterns/" \ - "${S}/debian/patches/series" -} diff --git a/profiles/ehooks/gnome-base/gnome-session/02-pre_src_prepare.ehook b/profiles/ehooks/gnome-base/gnome-session/02-pre_src_prepare.ehook new file mode 120000 index 00000000..0d7a2e70 --- /dev/null +++ b/profiles/ehooks/gnome-base/gnome-session/02-pre_src_prepare.ehook @@ -0,0 +1 @@ +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/gnome-base/gnome-session/03-pre_src_prepare.ehook b/profiles/ehooks/gnome-base/gnome-session/03-pre_src_prepare.ehook deleted file mode 120000 index 200f952c..00000000 --- a/profiles/ehooks/gnome-base/gnome-session/03-pre_src_prepare.ehook +++ /dev/null @@ -1 +0,0 @@ -../../templates/patches.ehook \ No newline at end of file diff --git a/profiles/ehooks/gnome-base/gnome-session/03-pre_src_prepare.ehook b/profiles/ehooks/gnome-base/gnome-session/03-pre_src_prepare.ehook new file mode 100644 index 00000000..de9c4772 --- /dev/null +++ b/profiles/ehooks/gnome-base/gnome-session/03-pre_src_prepare.ehook @@ -0,0 +1,9 @@ +ebuild_hook() { + # Disable all language files as they can be incomplete # + # due to being provided by Ubuntu's language-pack packages # + > po/LINGUAS + + # If a .desktop file does not have inline + # translations, fall back to calling gettext + echo "X-GNOME-Gettext-Domain=${PN}-3.0" >> "data/${PN}-properties.desktop.in" +} diff --git a/profiles/ehooks/gnome-base/gnome-session/05-post_src_install.ehook b/profiles/ehooks/gnome-base/gnome-session/04-post_src_install.ehook similarity index 100% rename from profiles/ehooks/gnome-base/gnome-session/05-post_src_install.ehook rename to profiles/ehooks/gnome-base/gnome-session/04-post_src_install.ehook diff --git a/profiles/ehooks/gnome-base/gnome-session/04-pre_src_prepare.ehook b/profiles/ehooks/gnome-base/gnome-session/04-pre_src_prepare.ehook deleted file mode 100644 index de9c4772..00000000 --- a/profiles/ehooks/gnome-base/gnome-session/04-pre_src_prepare.ehook +++ /dev/null @@ -1,9 +0,0 @@ -ebuild_hook() { - # Disable all language files as they can be incomplete # - # due to being provided by Ubuntu's language-pack packages # - > po/LINGUAS - - # If a .desktop file does not have inline - # translations, fall back to calling gettext - echo "X-GNOME-Gettext-Domain=${PN}-3.0" >> "data/${PN}-properties.desktop.in" -} diff --git a/profiles/ehooks/gnome-base/gnome-settings-daemon/01-post_src_unpack.ehook b/profiles/ehooks/gnome-base/gnome-settings-daemon/01-post_src_unpack.ehook index 87e6d415..946eff37 100644 --- a/profiles/ehooks/gnome-base/gnome-settings-daemon/01-post_src_unpack.ehook +++ b/profiles/ehooks/gnome-base/gnome-settings-daemon/01-post_src_unpack.ehook @@ -1,8 +1,8 @@ ebuild_hook() { local \ - blake=bc68ad5a3a47fbb63fb9deb7f8af9d636ce7e0bbe05ab2c8a94a3c23e2ed30cb8aab1d262011c3cec9fd7b54bde68437e01a150d8766c085721f086e017f3cbd \ - uver=gnome-settings-daemon_40.0.1-1ubuntu2 + blake=0ae3f90ad6b1ced5530a146feeac2271337cde5c236e51af7a2d0b038bcce4af8d68b80cbbdda41a419c6f996a8e1ace5ac4087c50a27661b980064dafe50f82 \ + uver=gnome-settings-daemon_40.0.1-1ubuntu3 - source "${EHOOK_PATH}"/templates/fetch_debian.fnc + source "${EHOOK_PATH}"/templates/fetch_debian.template fetch_debian "${uver}" "${blake}" } diff --git a/profiles/ehooks/gnome-base/gnome-settings-daemon/02-pre_src_prepare.ehook b/profiles/ehooks/gnome-base/gnome-settings-daemon/02-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/gnome-base/gnome-settings-daemon/02-pre_src_prepare.ehook +++ b/profiles/ehooks/gnome-base/gnome-settings-daemon/02-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/gnome-base/gnome-settings-daemon/files/revert-gsettings-removals.patch b/profiles/ehooks/gnome-base/gnome-settings-daemon/files/revert-gsettings-removals.patch deleted file mode 100644 index b8f4d298..00000000 --- a/profiles/ehooks/gnome-base/gnome-settings-daemon/files/revert-gsettings-removals.patch +++ /dev/null @@ -1,771 +0,0 @@ -From: Tim Lunn -Date: Sat, 13 Sep 2014 11:57:02 +1000 -Subject: revert-gsettings-removals - ---- - data/gsd-enums.h | 8 ++ - data/meson.build | 5 + - ...nome.settings-daemon.peripherals.gschema.xml.in | 18 +++ - ...ettings-daemon.peripherals.wacom.gschema.xml.in | 106 +++++++++++++++ - ...me.settings-daemon.plugins.color.gschema.xml.in | 10 ++ - ...settings-daemon.plugins.datetime.gschema.xml.in | 15 +++ - ...rg.gnome.settings-daemon.plugins.gschema.xml.in | 149 +++++++++++++++++++++ - ...ings-daemon.plugins.housekeeping.gschema.xml.in | 10 ++ - ...settings-daemon.plugins.keyboard.gschema.xml.in | 15 +++ - ...ttings-daemon.plugins.media-keys.gschema.xml.in | 15 +++ - ...tings-daemon.plugins.orientation.gschema.xml.in | 15 +++ - ...me.settings-daemon.plugins.power.gschema.xml.in | 77 +++++++++++ - ...emon.plugins.print-notifications.gschema.xml.in | 15 +++ - ....settings-daemon.plugins.sharing.gschema.xml.in | 12 ++ - ...e.settings-daemon.plugins.xrandr.gschema.xml.in | 25 ++++ - ...ettings-daemon.plugins.xsettings.gschema.xml.in | 10 ++ - po/POTFILES.in | 5 + - 17 files changed, 510 insertions(+) - create mode 100644 data/org.gnome.settings-daemon.plugins.datetime.gschema.xml.in - create mode 100644 data/org.gnome.settings-daemon.plugins.keyboard.gschema.xml.in - create mode 100644 data/org.gnome.settings-daemon.plugins.orientation.gschema.xml.in - create mode 100644 data/org.gnome.settings-daemon.plugins.print-notifications.gschema.xml.in - create mode 100644 data/org.gnome.settings-daemon.plugins.xrandr.gschema.xml.in - -diff --git a/data/gsd-enums.h b/data/gsd-enums.h -index eea1fb1..ebc7db0 100644 ---- a/data/gsd-enums.h -+++ b/data/gsd-enums.h -@@ -75,6 +75,14 @@ typedef enum - GSD_TOUCHPAD_HANDEDNESS_MOUSE - } GsdTouchpadHandedness; - -+typedef enum -+{ -+ GSD_XRANDR_BOOT_BEHAVIOUR_DO_NOTHING, -+ GSD_XRANDR_BOOT_BEHAVIOUR_CLONE, -+ GSD_XRANDR_BOOT_BEHAVIOUR_DOCK, -+ GSD_XRANDR_BOOT_BEHAVIOUR_FOLLOW_LID -+} GsdXrandrBootBehaviour; -+ - typedef enum - { - GSD_WACOM_ROTATION_NONE, -diff --git a/data/meson.build b/data/meson.build -index d53eb26..702f62a 100644 ---- a/data/meson.build -+++ b/data/meson.build -@@ -5,10 +5,15 @@ schemas = [ - 'org.gnome.settings-daemon.peripherals.wacom.gschema.xml', - 'org.gnome.settings-daemon.plugins.gschema.xml', - 'org.gnome.settings-daemon.plugins.color.gschema.xml', -+ 'org.gnome.settings-daemon.plugins.datetime.gschema.xml', - 'org.gnome.settings-daemon.plugins.housekeeping.gschema.xml', -+ 'org.gnome.settings-daemon.plugins.keyboard.gschema.xml', -+ 'org.gnome.settings-daemon.plugins.orientation.gschema.xml', - 'org.gnome.settings-daemon.plugins.media-keys.gschema.xml', - 'org.gnome.settings-daemon.plugins.power.gschema.xml', -+ 'org.gnome.settings-daemon.plugins.print-notifications.gschema.xml', - 'org.gnome.settings-daemon.plugins.sharing.gschema.xml', -+ 'org.gnome.settings-daemon.plugins.xrandr.gschema.xml', - 'org.gnome.settings-daemon.plugins.xsettings.gschema.xml' - ] - -diff --git a/data/org.gnome.settings-daemon.peripherals.gschema.xml.in b/data/org.gnome.settings-daemon.peripherals.gschema.xml.in -index a670580..40b85f2 100644 ---- a/data/org.gnome.settings-daemon.peripherals.gschema.xml.in -+++ b/data/org.gnome.settings-daemon.peripherals.gschema.xml.in -@@ -1,9 +1,20 @@ - - - -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ - - - -+ - - - -@@ -41,6 +52,13 @@ - Whether the tablet’s orientation is locked, or rotated automatically. - - -+ -+ -+ '' -+ Device hotplug custom command -+ Command to be run when a device is added or removed. An exit value of 1 means that the device will not be handled further by gnome-settings-daemon. -+ -+ - - - -diff --git a/data/org.gnome.settings-daemon.peripherals.wacom.gschema.xml.in b/data/org.gnome.settings-daemon.peripherals.wacom.gschema.xml.in -index f687496..09643af 100644 ---- a/data/org.gnome.settings-daemon.peripherals.wacom.gschema.xml.in -+++ b/data/org.gnome.settings-daemon.peripherals.wacom.gschema.xml.in -@@ -94,4 +94,110 @@ - ["", "", ""] - - -+ -+ -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ -+ -+ -+ -+ -+ -+ -+ true -+ Wacom stylus absolute mode -+ Enable this to set the tablet to absolute mode for unity-settings-daemon. -+ -+ -+ [-1, -1, -1, -1] -+ Wacom tablet area -+ Set this to x1, y1 and x2, y2 of the area usable by the tools. -+ -+ -+ false -+ Wacom tablet aspect ratio -+ Enable this to restrict the Wacom tablet area to match the aspect ratio of the output. -+ -+ -+ 'none' -+ Wacom tablet rotation -+ Set this to “none”, “cw” for 90 degree clockwise, “half” for 180 degree, and “ccw” for 90 degree counterclockwise. -+ -+ -+ true -+ Wacom touch feature -+ Enable this to move the cursor when the user touches the tablet. -+ -+ -+ false -+ Wacom tablet PC feature -+ Enable this to only report stylus events when the tip is pressed. -+ -+ -+ ["", "", ""] -+ Wacom display mapping -+ EDID information of monitor to map tablet to. Must be in the format [vendor, product, serial]. ["","",""] disables mapping. -+ -+ -+ -+ -+ [0, 0, 100, 100] -+ Wacom stylus pressure curve -+ Set this to x1, y1 and x2, y2 of the pressure curve applied to the stylus. -+ -+ -+ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] -+ Wacom stylus button mapping -+ Set this to the logical button mapping. -+ -+ -+ -1 -+ Wacom stylus pressure threshold -+ Set this to the pressure value at which a stylus click event is generated. -+ -+ -+ -+ -+ [0, 0, 100, 100] -+ Wacom eraser pressure curve -+ Set this to x1, y1 and x2, y2 of the pressure curve applied to the eraser. -+ -+ -+ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] -+ Wacom eraser button mapping -+ Set this to the logical button mapping. -+ -+ -+ -1 -+ Wacom eraser pressure threshold -+ Set this to the pressure value at which an eraser click event is generated. -+ -+ -+ -+ -+ 'none' -+ Wacom button action type -+ The type of action triggered by the button being pressed. -+ -+ -+ '' -+ Key combination for the custom action -+ The keyboard shortcut generated when the button is pressed for custom actions. -+ -+ -+ ['', ''] -+ Key combinations for a touchring or touchstrip custom action -+ The keyboard shortcuts generated when a touchring or touchstrip is used for custom actions (up followed by down). -+ -+ - -diff --git a/data/org.gnome.settings-daemon.plugins.color.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.color.gschema.xml.in -index 286ea80..26c204f 100644 ---- a/data/org.gnome.settings-daemon.plugins.color.gschema.xml.in -+++ b/data/org.gnome.settings-daemon.plugins.color.gschema.xml.in -@@ -1,6 +1,16 @@ - - - -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ - - 0 - The duration a display profile is valid -diff --git a/data/org.gnome.settings-daemon.plugins.datetime.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.datetime.gschema.xml.in -new file mode 100644 -index 0000000..d172813 ---- /dev/null -+++ b/data/org.gnome.settings-daemon.plugins.datetime.gschema.xml.in -@@ -0,0 +1,15 @@ -+ -+ -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ -+ -diff --git a/data/org.gnome.settings-daemon.plugins.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.gschema.xml.in -index e53ed17..a643821 100644 ---- a/data/org.gnome.settings-daemon.plugins.gschema.xml.in -+++ b/data/org.gnome.settings-daemon.plugins.gschema.xml.in -@@ -9,10 +9,159 @@ - This is only evaluated on startup. - - -+ -+ -+ -+ - -+ -+ -+ - -+ - -+ -+ - -+ -+ -+ -+ -+ -+ -+ - - -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ - -diff --git a/data/org.gnome.settings-daemon.plugins.housekeeping.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.housekeeping.gschema.xml.in -index cf93ebe..1dac54f 100644 ---- a/data/org.gnome.settings-daemon.plugins.housekeeping.gschema.xml.in -+++ b/data/org.gnome.settings-daemon.plugins.housekeeping.gschema.xml.in -@@ -1,6 +1,16 @@ - - - -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ - - [] - Mount paths to ignore -diff --git a/data/org.gnome.settings-daemon.plugins.keyboard.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.keyboard.gschema.xml.in -new file mode 100644 -index 0000000..9a1f330 ---- /dev/null -+++ b/data/org.gnome.settings-daemon.plugins.keyboard.gschema.xml.in -@@ -0,0 +1,15 @@ -+ -+ -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ -+ -diff --git a/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in -index 5a05d7f..1466f84 100644 ---- a/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in -+++ b/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in -@@ -76,6 +76,11 @@ - Stop playback - Binding to stop playback. - -+ -+ '<Super>p' -+ Video output -+ Binding to switch the video output device. -+ - - 'XF86AudioLowerVolume' - Volume down -@@ -184,6 +189,16 @@ - - - -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ - - [] - Custom keybindings -diff --git a/data/org.gnome.settings-daemon.plugins.orientation.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.orientation.gschema.xml.in -new file mode 100644 -index 0000000..3717f5c ---- /dev/null -+++ b/data/org.gnome.settings-daemon.plugins.orientation.gschema.xml.in -@@ -0,0 +1,15 @@ -+ -+ -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ -+ -diff --git a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in -index 7984f16..ec805d8 100644 ---- a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in -+++ b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in -@@ -1,6 +1,16 @@ - - - -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ - - 30 - The brightness of the screen when idle -@@ -63,5 +73,72 @@ - Power button action - The action to take when the system power button is pressed. This action is hard-coded (and the setting ignored) on virtual machines (power off) and tablets (suspend). - -+ -+ -+ 'suspend' -+ Suspend button action -+ The action to take when the system suspend button is pressed. -+ -+ -+ 'hibernate' -+ Hibernate button action -+ The action to take when the system hibernate button is pressed. -+ -+ -+ 'hibernate' -+ Sleep button action -+ The action to take when the system sleep (non-specific type) button is pressed. -+ -+ -+ -+ 'suspend' -+ Power button action -+ The action to take when the system power button is pressed. -+ -+ -+ 'hibernate' -+ Battery critical low action -+ The action to take when the battery is critically low. -+ -+ -+ 10 -+ Percentage considered low -+ The percentage of the battery when it is considered low. Only valid when use-time-for-policy is false. -+ -+ -+ 3 -+ Percentage considered critical -+ The percentage of the battery when it is considered critical. Only valid when use-time-for-policy is false. -+ -+ -+ 2 -+ Percentage action is taken -+ The percentage of the battery when the critical action is performed. Only valid when use-time-for-policy is false. -+ -+ -+ 1200 -+ The time remaining when low -+ The time remaining in seconds of the battery when it is considered low. Only valid when use-time-for-policy is true. -+ -+ -+ 300 -+ The time remaining when critical -+ The time remaining in seconds of the battery when it is considered critical. Only valid when use-time-for-policy is true. -+ -+ -+ 120 -+ The time remaining when action is taken -+ The time remaining in seconds of the battery when critical action is taken. Only valid when use-time-for-policy is true. -+ -+ -+ true -+ Whether to use time-based notifications -+ If time based notifications should be used. If set to false, then the percentage change is used instead, which may fix a broken ACPI BIOS. -+ -+ -+ true -+ If we should show the recalled battery warning for a broken battery -+ If we should show the recalled battery warning for a broken battery. Set this to false only if you know your battery is okay. -+ - - -diff --git a/data/org.gnome.settings-daemon.plugins.print-notifications.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.print-notifications.gschema.xml.in -new file mode 100644 -index 0000000..d17d2b3 ---- /dev/null -+++ b/data/org.gnome.settings-daemon.plugins.print-notifications.gschema.xml.in -@@ -0,0 +1,15 @@ -+ -+ -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ -+ -diff --git a/data/org.gnome.settings-daemon.plugins.sharing.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.sharing.gschema.xml.in -index 5efdce7..bc45658 100644 ---- a/data/org.gnome.settings-daemon.plugins.sharing.gschema.xml.in -+++ b/data/org.gnome.settings-daemon.plugins.sharing.gschema.xml.in -@@ -1,5 +1,17 @@ - - -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ - - - [] -diff --git a/data/org.gnome.settings-daemon.plugins.xrandr.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.xrandr.gschema.xml.in -new file mode 100644 -index 0000000..ff15c8d ---- /dev/null -+++ b/data/org.gnome.settings-daemon.plugins.xrandr.gschema.xml.in -@@ -0,0 +1,25 @@ -+ -+ -+ -+ -+ '/etc/gnome-settings-daemon/xrandr/monitors.xml' -+ File for default configuration for RandR -+ The XRandR plugin will look for a default configuration in the file specified by this key. This is similar to the ~/.config/monitors.xml that normally gets stored in users’ home directories. If a user does not have such a file, or has one that does not match the user’s setup of monitors, then the file specified by this key will be used instead. -+ -+ -+ 'follow-lid' -+ Whether to turn off specific monitors after boot -+ “clone” will display the same thing on all monitors, “dock” will switch off the internal monitor, “do-nothing” will use the default Xorg behaviour (extend the desktop in recent versions). The default, “follow-lid”, will choose between “do-nothing” and “dock” depending on whether the lid is (respectively) open or closed. -+ -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not -+ -+ -+ -diff --git a/data/org.gnome.settings-daemon.plugins.xsettings.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.xsettings.gschema.xml.in -index ce45ac6..e91be62 100644 ---- a/data/org.gnome.settings-daemon.plugins.xsettings.gschema.xml.in -+++ b/data/org.gnome.settings-daemon.plugins.xsettings.gschema.xml.in -@@ -1,23 +1,16 @@ - - - -- -- [] -- List of explicitly disabled GTK+ modules -- A list of strings representing the GTK+ modules that will not be loaded, even if enabled by default in their configuration. -+ -+ 0 -+ Priority to use for this plugin -+ Priority to use for this plugin in unity-settings-daemon startup queue -+ -+ -+ true -+ Activation of this plugin -+ Whether this plugin would be activated by unity-settings-daemon or not - -- -- [] -- List of explicitly enabled GTK+ modules -- A list of strings representing the GTK+ modules that will be loaded, usually in addition to conditional and forcibly disabled ones. -- -- -- {} -- A dictionary of XSETTINGS to override -- This dictionary maps XSETTINGS names to overrides values. The values must be either strings, signed int32s or (in the case of colors), 4-tuples of uint16 (red, green, blue, alpha; 65535 is fully opaque). -- -- -- - - 'grayscale' - Antialiasing -@@ -33,5 +26,20 @@ - RGBA order - The order of subpixel elements on an LCD screen; only used when antialiasing is set to “rgba”. Possible values are: “rgb” for red on left (most common), “bgr” for blue on left, “vrgb” for red on top, “vbgr” for red on bottom. - -+ -+ [] -+ List of explicitly disabled GTK+ modules -+ A list of strings representing the GTK+ modules that will not be loaded, even if enabled by default in their configuration. -+ -+ -+ [] -+ List of explicitly enabled GTK+ modules -+ A list of strings representing the GTK+ modules that will be loaded, usually in addition to conditional and forcibly disabled ones. -+ -+ -+ {} -+ A dictionary of XSETTINGS to override -+ This dictionary maps XSETTINGS names to overrides values. The values must be either strings, signed int32s or (in the case of colors), 4-tuples of uint16 (red, green, blue, alpha; 65535 is fully opaque). -+ - - -diff --git a/po/POTFILES.in b/po/POTFILES.in -index e721f52..db345ff 100644 ---- a/po/POTFILES.in -+++ b/po/POTFILES.in -@@ -3,11 +3,16 @@ - data/org.gnome.settings-daemon.peripherals.gschema.xml.in - data/org.gnome.settings-daemon.peripherals.wacom.gschema.xml.in - data/org.gnome.settings-daemon.plugins.color.gschema.xml.in -+data/org.gnome.settings-daemon.plugins.datetime.gschema.xml.in - data/org.gnome.settings-daemon.plugins.gschema.xml.in - data/org.gnome.settings-daemon.plugins.housekeeping.gschema.xml.in -+data/org.gnome.settings-daemon.plugins.keyboard.gschema.xml.in - data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in -+data/org.gnome.settings-daemon.plugins.orientation.gschema.xml.in - data/org.gnome.settings-daemon.plugins.power.gschema.xml.in -+data/org.gnome.settings-daemon.plugins.print-notifications.gschema.xml.in - data/org.gnome.settings-daemon.plugins.sharing.gschema.xml.in -+data/org.gnome.settings-daemon.plugins.xrandr.gschema.xml.in - data/org.gnome.settings-daemon.plugins.xsettings.gschema.xml.in - plugins/color/gsd-color-calibrate.c - plugins/color/gsd-color-manager.c diff --git a/profiles/ehooks/gnome-base/gsettings-desktop-schemas/01-post_src_unpack.ehook b/profiles/ehooks/gnome-base/gsettings-desktop-schemas/01-post_src_unpack.ehook index 8ae52e0d..e4c3b9cc 100644 --- a/profiles/ehooks/gnome-base/gsettings-desktop-schemas/01-post_src_unpack.ehook +++ b/profiles/ehooks/gnome-base/gsettings-desktop-schemas/01-post_src_unpack.ehook @@ -1,8 +1,8 @@ ebuild_hook() { local \ - blake=269004501f537e100ad4f15d63f2bedfe625f8e32c48830658002105e6e79c8aea38a2799928eed0864c1123f72db44943c708501ae4abfbb2fbc660191b8ccf \ - uver=gsettings-desktop-schemas_3.38.0-1ubuntu1 + blake=5d0d501faee0f96ed0b5e264c81e65dc0da51de8180b5ebe35fca4fb717b296c13b84e38d2c5cfb4310df249a19a1ba2b893e8d555e13f272df32bdc108cb55e \ + uver=gsettings-desktop-schemas_40.0-1ubuntu1 - source "${EHOOK_PATH}"/templates/fetch_debian.fnc + source "${EHOOK_PATH}"/templates/fetch_debian.template fetch_debian "${uver}" "${blake}" } diff --git a/profiles/ehooks/gnome-base/gsettings-desktop-schemas/02-pre_src_prepare.ehook b/profiles/ehooks/gnome-base/gsettings-desktop-schemas/02-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/gnome-base/gsettings-desktop-schemas/02-pre_src_prepare.ehook +++ b/profiles/ehooks/gnome-base/gsettings-desktop-schemas/02-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/gnome-base/nautilus/01-post_src_unpack.ehook b/profiles/ehooks/gnome-base/nautilus/01-post_src_unpack.ehook index d5507b5f..f6314888 100644 --- a/profiles/ehooks/gnome-base/nautilus/01-post_src_unpack.ehook +++ b/profiles/ehooks/gnome-base/nautilus/01-post_src_unpack.ehook @@ -1,8 +1,8 @@ ebuild_hook() { local \ - blake=483904cdd537a62f5f84871c86715cf9083dc60b127a619ceba0bb5be6a8c58d11112e53944a687af97a23652b208818a4386516303430c975beb44e7c8d3193 \ - uver=nautilus_3.38.2-1ubuntu2 + blake=79dc0186f7e7e83684997e749804524641c65016bc5ed693ba50d15ddbc06045f61b48d7f6659316c807573143295aeb90c4cb86b51937f72551eb1619013b69 \ + uver=nautilus_40.2-1ubuntu1 - source "${EHOOK_PATH}"/templates/fetch_debian.fnc + source "${EHOOK_PATH}"/templates/fetch_debian.template fetch_debian "${uver}" "${blake}" } diff --git a/profiles/ehooks/gnome-base/nautilus/02-pre_src_prepare.ehook b/profiles/ehooks/gnome-base/nautilus/02-pre_src_prepare.ehook index aea61d1d..212f3f9e 100644 --- a/profiles/ehooks/gnome-base/nautilus/02-pre_src_prepare.ehook +++ b/profiles/ehooks/gnome-base/nautilus/02-pre_src_prepare.ehook @@ -5,6 +5,5 @@ ebuild_hook() { sed -i \ -e "s/multiarch_fallback/#multiarch_fallback/" \ - -e "s/revert_tracker_update/#revert_tracker_update/" \ "${S}/debian/patches/series" } diff --git a/profiles/ehooks/gnome-base/nautilus/03-pre_src_prepare.ehook b/profiles/ehooks/gnome-base/nautilus/03-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/gnome-base/nautilus/03-pre_src_prepare.ehook +++ b/profiles/ehooks/gnome-base/nautilus/03-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/gnome-extra/gnome-calendar/01-pre_src_prepare.ehook b/profiles/ehooks/gnome-extra/gnome-calendar/01-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/gnome-extra/gnome-calendar/01-pre_src_prepare.ehook +++ b/profiles/ehooks/gnome-extra/gnome-calendar/01-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/gnome-extra/gnome-contacts/01-pre_src_prepare.ehook b/profiles/ehooks/gnome-extra/gnome-contacts/01-pre_src_prepare.ehook new file mode 120000 index 00000000..0d7a2e70 --- /dev/null +++ b/profiles/ehooks/gnome-extra/gnome-contacts/01-pre_src_prepare.ehook @@ -0,0 +1 @@ +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/gnome-extra/gnome-contacts/02-pre_src_prepare.ehook b/profiles/ehooks/gnome-extra/gnome-contacts/02-pre_src_prepare.ehook new file mode 100644 index 00000000..4c0c7807 --- /dev/null +++ b/profiles/ehooks/gnome-extra/gnome-contacts/02-pre_src_prepare.ehook @@ -0,0 +1,5 @@ +ebuild_hook() { + ehook_use headerbar_adjust && sed -i \ + -e "/show_close_button/{s/True/False/}" \ + data/ui/contacts-main-window.ui +} diff --git a/profiles/ehooks/gnome-extra/gnome-contacts/files/use-unity-control-center-as-the-fallback.patch b/profiles/ehooks/gnome-extra/gnome-contacts/files/use-unity-control-center-as-the-fallback.patch new file mode 100644 index 00000000..16bea88c --- /dev/null +++ b/profiles/ehooks/gnome-extra/gnome-contacts/files/use-unity-control-center-as-the-fallback.patch @@ -0,0 +1,80 @@ +From b22feb1cbc28d6b02e7e892be93bfff16a3c53cf Mon Sep 17 00:00:00 2001 +From: c4pp4 +Date: Thu, 30 Sep 2021 21:19:16 +0200 +Subject: [PATCH 1/1] Use unity-control-center as the fallback + +Try to use unity-control-center as the fallback when gnome-control-center +is not available. + +Signed-off-by: c4pp4 +--- + src/contacts-app.vala | 8 ++++++++ + src/meson.build | 1 + + src/xdg-desktop.vala | 22 ++++++++++++++++++++++ + 3 files changed, 31 insertions(+) + create mode 100644 src/xdg-desktop.vala + +diff --git a/src/contacts-app.vala b/src/contacts-app.vala +index b1adaf4..77d3952 100644 +--- a/src/contacts-app.vala ++++ b/src/contacts-app.vala +@@ -143,8 +143,16 @@ public class Contacts.App : Gtk.Application { + + proxy.call_sync ("Activate", param, DBusCallFlags.NONE, -1); + } catch (Error e) { ++ if (is_desktop ("Unity")) { ++ try { ++ Process.spawn_command_line_async ("unity-control-center online-accounts"); ++ } catch (SpawnError ex) { ++ warning ("Couldn't open Unity Control Center: %s", ex.message); ++ } ++ } else { + // TODO: Show error dialog + warning ("Couldn't open online-accounts: %s", e.message); ++ } + } + } + +diff --git a/src/meson.build b/src/meson.build +index d977638..08e5d31 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -96,6 +96,7 @@ contacts_vala_sources = files( + 'contacts-type-combo.vala', + 'contacts-ui-state.vala', + 'main.vala', ++ 'xdg-desktop.vala', + ) + + contacts_c_sources = [ +diff --git a/src/xdg-desktop.vala b/src/xdg-desktop.vala +new file mode 100644 +index 0000000..cbcbbed +--- /dev/null ++++ b/src/xdg-desktop.vala +@@ -0,0 +1,22 @@ ++/* ++ * Copyright (C) 2014 Robert Ancell. ++ * ++ * 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, either version 2 of the License, or (at your option) any later ++ * version. See http://www.gnu.org/copyleft/gpl.html the full text of the ++ * license. ++ */ ++ ++private bool is_desktop (string name) ++{ ++ var desktop_name_list = Environment.get_variable ("XDG_CURRENT_DESKTOP"); ++ if (desktop_name_list == null) ++ return false; ++ ++ foreach (var n in desktop_name_list.split (":")) ++ if (n == name) ++ return true; ++ ++ return false; ++} +-- +2.32.0 + diff --git a/profiles/ehooks/gnome-extra/gnome-weather/pre_src_prepare.ehook b/profiles/ehooks/gnome-extra/gnome-weather/pre_src_prepare.ehook new file mode 100644 index 00000000..29e0faa4 --- /dev/null +++ b/profiles/ehooks/gnome-extra/gnome-weather/pre_src_prepare.ehook @@ -0,0 +1,5 @@ +ebuild_hook() { + ehook_use headerbar_adjust && sed -i \ + -e "/show_close_button/{s/True/False/}" \ + data/window.ui +} diff --git a/profiles/ehooks/gnome-extra/nemo/01-pre_src_prepare.ehook b/profiles/ehooks/gnome-extra/nemo/01-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/gnome-extra/nemo/01-pre_src_prepare.ehook +++ b/profiles/ehooks/gnome-extra/nemo/01-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/gnome-extra/nemo/04-post_pkg_postinst.ehook b/profiles/ehooks/gnome-extra/nemo/04-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/gnome-extra/nemo/04-post_pkg_postinst.ehook +++ b/profiles/ehooks/gnome-extra/nemo/04-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/gnome-extra/nm-applet/01-post_src_unpack.ehook b/profiles/ehooks/gnome-extra/nm-applet/01-post_src_unpack.ehook index 952b8ad8..fbd3947c 100644 --- a/profiles/ehooks/gnome-extra/nm-applet/01-post_src_unpack.ehook +++ b/profiles/ehooks/gnome-extra/nm-applet/01-post_src_unpack.ehook @@ -3,6 +3,6 @@ ebuild_hook() { blake=0986f055539a16d236485ed99d222403de3bd8551ed3c8a76bc8cf8f9a410735b2bd476e11b0bb1b96d59f49a256142526a14a4a8c426ffa6b4305aaef502c36 \ uver=network-manager-applet_1.22.0-0ubuntu1 - source "${EHOOK_PATH}"/templates/fetch_debian.fnc + source "${EHOOK_PATH}"/templates/fetch_debian.template fetch_debian "${uver}" "${blake}" } diff --git a/profiles/ehooks/gnome-extra/nm-applet/02-pre_src_prepare.ehook b/profiles/ehooks/gnome-extra/nm-applet/02-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/gnome-extra/nm-applet/02-pre_src_prepare.ehook +++ b/profiles/ehooks/gnome-extra/nm-applet/02-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/gnome-extra/polkit-gnome/01-post_src_unpack.ehook b/profiles/ehooks/gnome-extra/polkit-gnome/01-post_src_unpack.ehook index 318a6495..3cc4a665 100644 --- a/profiles/ehooks/gnome-extra/polkit-gnome/01-post_src_unpack.ehook +++ b/profiles/ehooks/gnome-extra/polkit-gnome/01-post_src_unpack.ehook @@ -3,6 +3,6 @@ ebuild_hook() { blake=564ac2bc8061ab76251a4eaae85e96c7a9dccc481326543f08828d2c06f3dae09c6cf5dc9cbdec9cdf4dde8665bf98a6dec41a21d83d210c93eda1c3b0b66efd \ uver=policykit-1-gnome_0.105-7ubuntu2 - source "${EHOOK_PATH}"/templates/fetch_debian.fnc + source "${EHOOK_PATH}"/templates/fetch_debian.template fetch_debian "${uver}" "${blake}" } diff --git a/profiles/ehooks/gnome-extra/polkit-gnome/02-pre_src_prepare.ehook b/profiles/ehooks/gnome-extra/polkit-gnome/02-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/gnome-extra/polkit-gnome/02-pre_src_prepare.ehook +++ b/profiles/ehooks/gnome-extra/polkit-gnome/02-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/mail-client/thunderbird-bin/02-post_pkg_postinst.ehook b/profiles/ehooks/mail-client/thunderbird-bin/02-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/mail-client/thunderbird-bin/02-post_pkg_postinst.ehook +++ b/profiles/ehooks/mail-client/thunderbird-bin/02-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/mail-client/thunderbird/01-pre_src_prepare.ehook b/profiles/ehooks/mail-client/thunderbird/01-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/mail-client/thunderbird/01-pre_src_prepare.ehook +++ b/profiles/ehooks/mail-client/thunderbird/01-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/mail-client/thunderbird/03-post_pkg_postinst.ehook b/profiles/ehooks/mail-client/thunderbird/03-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/mail-client/thunderbird/03-post_pkg_postinst.ehook +++ b/profiles/ehooks/mail-client/thunderbird/03-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/dejavu/post_src_install.ehook b/profiles/ehooks/media-fonts/dejavu/post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/dejavu/post_src_install.ehook +++ b/profiles/ehooks/media-fonts/dejavu/post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/droid/02-post_src_install.ehook b/profiles/ehooks/media-fonts/droid/02-post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/droid/02-post_src_install.ehook +++ b/profiles/ehooks/media-fonts/droid/02-post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/lohit-assamese/post_src_install.ehook b/profiles/ehooks/media-fonts/lohit-assamese/post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/lohit-assamese/post_src_install.ehook +++ b/profiles/ehooks/media-fonts/lohit-assamese/post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/lohit-bengali/post_src_install.ehook b/profiles/ehooks/media-fonts/lohit-bengali/post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/lohit-bengali/post_src_install.ehook +++ b/profiles/ehooks/media-fonts/lohit-bengali/post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/lohit-devanagari/post_src_install.ehook b/profiles/ehooks/media-fonts/lohit-devanagari/post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/lohit-devanagari/post_src_install.ehook +++ b/profiles/ehooks/media-fonts/lohit-devanagari/post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/lohit-gujarati/post_src_install.ehook b/profiles/ehooks/media-fonts/lohit-gujarati/post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/lohit-gujarati/post_src_install.ehook +++ b/profiles/ehooks/media-fonts/lohit-gujarati/post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/lohit-gurmukhi/post_src_install.ehook b/profiles/ehooks/media-fonts/lohit-gurmukhi/post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/lohit-gurmukhi/post_src_install.ehook +++ b/profiles/ehooks/media-fonts/lohit-gurmukhi/post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/lohit-kannada/post_src_install.ehook b/profiles/ehooks/media-fonts/lohit-kannada/post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/lohit-kannada/post_src_install.ehook +++ b/profiles/ehooks/media-fonts/lohit-kannada/post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/lohit-malayalam/post_src_install.ehook b/profiles/ehooks/media-fonts/lohit-malayalam/post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/lohit-malayalam/post_src_install.ehook +++ b/profiles/ehooks/media-fonts/lohit-malayalam/post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/lohit-odia/post_src_install.ehook b/profiles/ehooks/media-fonts/lohit-odia/post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/lohit-odia/post_src_install.ehook +++ b/profiles/ehooks/media-fonts/lohit-odia/post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/lohit-tamil-classical/post_src_install.ehook b/profiles/ehooks/media-fonts/lohit-tamil-classical/post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/lohit-tamil-classical/post_src_install.ehook +++ b/profiles/ehooks/media-fonts/lohit-tamil-classical/post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/lohit-tamil/post_src_install.ehook b/profiles/ehooks/media-fonts/lohit-tamil/post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/lohit-tamil/post_src_install.ehook +++ b/profiles/ehooks/media-fonts/lohit-tamil/post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/lohit-telugu/post_src_install.ehook b/profiles/ehooks/media-fonts/lohit-telugu/post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/lohit-telugu/post_src_install.ehook +++ b/profiles/ehooks/media-fonts/lohit-telugu/post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/nanum/02-post_src_install.ehook b/profiles/ehooks/media-fonts/nanum/02-post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/nanum/02-post_src_install.ehook +++ b/profiles/ehooks/media-fonts/nanum/02-post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/stix-fonts/post_src_install.ehook b/profiles/ehooks/media-fonts/stix-fonts/post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/stix-fonts/post_src_install.ehook +++ b/profiles/ehooks/media-fonts/stix-fonts/post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/takao-fonts/02-post_src_install.ehook b/profiles/ehooks/media-fonts/takao-fonts/02-post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/takao-fonts/02-post_src_install.ehook +++ b/profiles/ehooks/media-fonts/takao-fonts/02-post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-fonts/thaifonts-scalable/post_src_install.ehook b/profiles/ehooks/media-fonts/thaifonts-scalable/post_src_install.ehook index a6a0d24c..0a65b376 120000 --- a/profiles/ehooks/media-fonts/thaifonts-scalable/post_src_install.ehook +++ b/profiles/ehooks/media-fonts/thaifonts-scalable/post_src_install.ehook @@ -1 +1 @@ -../../templates/fontconfig_symlinks.ehook \ No newline at end of file +../../templates/fontconfig_symlinks.template \ No newline at end of file diff --git a/profiles/ehooks/media-gfx/eog/01-post_src_unpack.ehook b/profiles/ehooks/media-gfx/eog/01-post_src_unpack.ehook index b39b04b9..95290209 100644 --- a/profiles/ehooks/media-gfx/eog/01-post_src_unpack.ehook +++ b/profiles/ehooks/media-gfx/eog/01-post_src_unpack.ehook @@ -14,9 +14,7 @@ ebuild_hook() { if [[ -f ${po_orig} ]]; then sed -i -e '/msgid \"\"/,/^$/d' "${po_ext}" cat "${po_ext}" >> "${po_orig}" - ## REVISIT: redirect stderr to stdout to ignore warning message: - ## eog-3.36.3/po/ms.po:110: warning: internationalized messages should not contain the '\v' escape sequence - msguniq --use-first -o "${po_orig}" "${po_orig}" 2>&1 + msguniq --use-first -o "${po_orig}" "${po_orig}" 2>&1 # ignore warning messages fi done } diff --git a/profiles/ehooks/media-gfx/eog/02-pre_src_prepare.ehook b/profiles/ehooks/media-gfx/eog/02-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/media-gfx/eog/02-pre_src_prepare.ehook +++ b/profiles/ehooks/media-gfx/eog/02-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/media-gfx/eog/03-post_pkg_postinst.ehook b/profiles/ehooks/media-gfx/eog/03-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/media-gfx/eog/03-post_pkg_postinst.ehook +++ b/profiles/ehooks/media-gfx/eog/03-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/media-gfx/gnome-photos/01-pre_src_prepare.ehook b/profiles/ehooks/media-gfx/gnome-photos/01-pre_src_prepare.ehook new file mode 120000 index 00000000..0d7a2e70 --- /dev/null +++ b/profiles/ehooks/media-gfx/gnome-photos/01-pre_src_prepare.ehook @@ -0,0 +1 @@ +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/media-gfx/gnome-photos/02-pre_src_prepare.ehook b/profiles/ehooks/media-gfx/gnome-photos/02-pre_src_prepare.ehook new file mode 100644 index 00000000..60323927 --- /dev/null +++ b/profiles/ehooks/media-gfx/gnome-photos/02-pre_src_prepare.ehook @@ -0,0 +1,5 @@ +ebuild_hook() { + ehook_use headerbar_adjust && sed -i \ + -e "/hdy_header_bar_set_show_close_button/{s/TRUE/FALSE/}" \ + src/photos-main-toolbar.c +} diff --git a/profiles/ehooks/media-gfx/gnome-photos/03-post_pkg_postinst.ehook b/profiles/ehooks/media-gfx/gnome-photos/03-post_pkg_postinst.ehook new file mode 120000 index 00000000..a51eb2e2 --- /dev/null +++ b/profiles/ehooks/media-gfx/gnome-photos/03-post_pkg_postinst.ehook @@ -0,0 +1 @@ +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/media-gfx/gnome-photos/files/use-unity-control-center-as-the-fallback.patch b/profiles/ehooks/media-gfx/gnome-photos/files/use-unity-control-center-as-the-fallback.patch new file mode 100644 index 00000000..c073cfbe --- /dev/null +++ b/profiles/ehooks/media-gfx/gnome-photos/files/use-unity-control-center-as-the-fallback.patch @@ -0,0 +1,80 @@ +From bdfd62eba92c2e794dde14114f6c92007c9d4137 Mon Sep 17 00:00:00 2001 +From: c4pp4 +Date: Fri, 1 Oct 2021 02:21:26 +0200 +Subject: [PATCH 1/1] Use unity-control-center as the fallback + +Try to use unity-control-center as the fallback when gnome-control-center +is not available. + +Signed-off-by: c4pp4 +--- + src/photos-utils.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 44 insertions(+), 1 deletion(-) + +diff --git a/src/photos-utils.c b/src/photos-utils.c +index 5cfddaa..ca4b63c 100644 +--- a/src/photos-utils.c ++++ b/src/photos-utils.c +@@ -1141,6 +1141,47 @@ photos_utils_is_flatpak (void) + return ret_val; + } + ++static gboolean ++in_desktop (const gchar *name) ++{ ++ const gchar *desktop_name_list; ++ gchar **names; ++ gboolean in_list = FALSE; ++ gint i; ++ ++ desktop_name_list = g_getenv ("XDG_CURRENT_DESKTOP"); ++ if (!desktop_name_list) ++ return FALSE; ++ ++ names = g_strsplit (desktop_name_list, ":", -1); ++ for (i = 0; names[i] && !in_list; i++) ++ if (strcmp (names[i], name) == 0) { ++ in_list = TRUE; ++ break; ++ } ++ g_strfreev (names); ++ ++ return in_list; ++} ++ ++static void ++photos_utils_launch_uoa (const gchar *account_id) ++{ ++ const gchar* const command[] = { "unity-control-center", ++ "online-accounts", ++ account_id, NULL }; ++ GError *error = NULL; ++ ++ g_spawn_async (NULL, (gchar**) command, ++ NULL, ++ G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL, ++ NULL, NULL, NULL, &error); ++ ++ if (error) { ++ g_warning ("Couldn't open Unity Control Center: %s", error->message); ++ g_error_free (error); ++ } ++} + + void + photos_utils_launch_online_accounts (const gchar *account_id) +@@ -1165,8 +1206,10 @@ photos_utils_launch_online_accounts (const gchar *account_id) + + parameters = g_variant_new ("(s@av)", "online-accounts", g_variant_builder_end (&panel_parameters)); + g_action_group_activate_action (G_ACTION_GROUP (control_center), "launch-panel", parameters); +-} + ++ if (!g_action_group_get_action_enabled (G_ACTION_GROUP (control_center), "launch-panel") && in_desktop ("Unity")) ++ photos_utils_launch_uoa (account_id); ++} + + void + photos_utils_list_box_header_func (GtkListBoxRow *row, GtkListBoxRow *before, gpointer user_data) +-- +2.32.0 + diff --git a/profiles/ehooks/media-gfx/gnome-screenshot/02-pre_src_prepare.ehook b/profiles/ehooks/media-gfx/gnome-screenshot/02-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/media-gfx/gnome-screenshot/02-pre_src_prepare.ehook +++ b/profiles/ehooks/media-gfx/gnome-screenshot/02-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/media-gfx/gnome-screenshot/03-post_pkg_postinst.ehook b/profiles/ehooks/media-gfx/gnome-screenshot/03-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/media-gfx/gnome-screenshot/03-post_pkg_postinst.ehook +++ b/profiles/ehooks/media-gfx/gnome-screenshot/03-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/media-sound/rhythmbox/01-post_src_unpack.ehook b/profiles/ehooks/media-sound/rhythmbox/01-post_src_unpack.ehook index c9580acc..0017c472 100644 --- a/profiles/ehooks/media-sound/rhythmbox/01-post_src_unpack.ehook +++ b/profiles/ehooks/media-sound/rhythmbox/01-post_src_unpack.ehook @@ -1,8 +1,8 @@ ebuild_hook() { local \ - blake=bee02acb3ccb6f530b92c685365470f93caee9a37a7fca937232074dc68c0713e45d7a6c37c5d10485e00fa642e594e6d26f10fd30f8f7c82fe48cb06f82826b \ - uver=rhythmbox_3.4.4-1ubuntu4 + blake=e718c8ab4611d967bc773a87ec16d508b22c0a3de17454d9bde94a77b2f8ce480ce51959c44a52dc618e793bac0be2f0b1c517f3a37205b6e046e9f5156990bc \ + uver=rhythmbox_3.4.4-1ubuntu5 - source "${EHOOK_PATH}"/templates/fetch_debian.fnc + source "${EHOOK_PATH}"/templates/fetch_debian.template fetch_debian "${uver}" "${blake}" } diff --git a/profiles/ehooks/media-sound/rhythmbox/02-pre_src_prepare.ehook b/profiles/ehooks/media-sound/rhythmbox/02-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/media-sound/rhythmbox/02-pre_src_prepare.ehook +++ b/profiles/ehooks/media-sound/rhythmbox/02-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/media-video/totem/01-post_src_unpack.ehook b/profiles/ehooks/media-video/totem/01-post_src_unpack.ehook index 0ec114cd..4dbbe2f9 100644 --- a/profiles/ehooks/media-video/totem/01-post_src_unpack.ehook +++ b/profiles/ehooks/media-video/totem/01-post_src_unpack.ehook @@ -14,7 +14,7 @@ ebuild_hook() { if [[ -f ${po_orig} ]]; then sed -i -e '/msgid \"\"/,/^$/d' "${po_ext}" cat "${po_ext}" >> "${po_orig}" - msguniq --use-first -o "${po_orig}" "${po_orig}" 2>&1 + msguniq --use-first -o "${po_orig}" "${po_orig}" 2>&1 # ignore warning messages fi done } diff --git a/profiles/ehooks/media-video/totem/02-pre_src_prepare.ehook b/profiles/ehooks/media-video/totem/02-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/media-video/totem/02-pre_src_prepare.ehook +++ b/profiles/ehooks/media-video/totem/02-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/media-video/totem/03-post_pkg_postinst.ehook b/profiles/ehooks/media-video/totem/03-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/media-video/totem/03-post_pkg_postinst.ehook +++ b/profiles/ehooks/media-video/totem/03-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/net-im/empathy/01-post_src_unpack.ehook b/profiles/ehooks/net-im/empathy/01-post_src_unpack.ehook index 06ec7a92..9799e261 100644 --- a/profiles/ehooks/net-im/empathy/01-post_src_unpack.ehook +++ b/profiles/ehooks/net-im/empathy/01-post_src_unpack.ehook @@ -3,6 +3,6 @@ ebuild_hook() { blake=d833d67b40b1b039aaa8f84ffaf014c83917c952a0ba5228a586e8a5a970ae88b45bbff429cf993ae0012764108a589f827b5c0b60fac5170628db7c4d328fae \ uver=empathy_3.25.90+really3.12.14-2ubuntu1 - source "${EHOOK_PATH}"/templates/fetch_debian.fnc + source "${EHOOK_PATH}"/templates/fetch_debian.template fetch_debian "${uver}" "${blake}" } diff --git a/profiles/ehooks/net-im/empathy/03-pre_src_prepare.ehook b/profiles/ehooks/net-im/empathy/03-pre_src_prepare.ehook index 0483528e..0ba1ae2c 120000 --- a/profiles/ehooks/net-im/empathy/03-pre_src_prepare.ehook +++ b/profiles/ehooks/net-im/empathy/03-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches_eautoreconf.ehook \ No newline at end of file +../../templates/patches_eautoreconf.template \ No newline at end of file diff --git a/profiles/ehooks/net-im/pidgin/03-post_pkg_postinst.ehook b/profiles/ehooks/net-im/pidgin/03-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/net-im/pidgin/03-post_pkg_postinst.ehook +++ b/profiles/ehooks/net-im/pidgin/03-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/net-im/telegram-desktop-bin/03-post_pkg_postinst.ehook b/profiles/ehooks/net-im/telegram-desktop-bin/03-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/net-im/telegram-desktop-bin/03-post_pkg_postinst.ehook +++ b/profiles/ehooks/net-im/telegram-desktop-bin/03-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/net-im/telegram-desktop-bin/files/ubuntu-mono-dark/status/22/telegram-attention-panel.svg b/profiles/ehooks/net-im/telegram-desktop-bin/files/ubuntu-mono-dark/status/22/telegram-attention-panel.svg index b7f96b21..c5287a90 100644 --- a/profiles/ehooks/net-im/telegram-desktop-bin/files/ubuntu-mono-dark/status/22/telegram-attention-panel.svg +++ b/profiles/ehooks/net-im/telegram-desktop-bin/files/ubuntu-mono-dark/status/22/telegram-attention-panel.svg @@ -1,61 +1,4 @@ - - - - - - - - image/svg+xml - - - - - - - - + + + diff --git a/profiles/ehooks/net-im/telegram-desktop-bin/files/ubuntu-mono-dark/status/22/telegram-mute-panel.svg b/profiles/ehooks/net-im/telegram-desktop-bin/files/ubuntu-mono-dark/status/22/telegram-mute-panel.svg index 37a688c8..e0daef80 100644 --- a/profiles/ehooks/net-im/telegram-desktop-bin/files/ubuntu-mono-dark/status/22/telegram-mute-panel.svg +++ b/profiles/ehooks/net-im/telegram-desktop-bin/files/ubuntu-mono-dark/status/22/telegram-mute-panel.svg @@ -1,61 +1,4 @@ - - - - - - - - image/svg+xml - - - - - - - - + + + diff --git a/profiles/ehooks/net-im/telegram-desktop-bin/files/ubuntu-mono-dark/status/22/telegram-panel.svg b/profiles/ehooks/net-im/telegram-desktop-bin/files/ubuntu-mono-dark/status/22/telegram-panel.svg index c2800fef..517d5fca 100644 --- a/profiles/ehooks/net-im/telegram-desktop-bin/files/ubuntu-mono-dark/status/22/telegram-panel.svg +++ b/profiles/ehooks/net-im/telegram-desktop-bin/files/ubuntu-mono-dark/status/22/telegram-panel.svg @@ -1,61 +1,4 @@ - - - - - - - - image/svg+xml - - - - - - - - + + + diff --git a/profiles/ehooks/net-im/telegram-desktop/03-post_pkg_postinst.ehook b/profiles/ehooks/net-im/telegram-desktop/03-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/net-im/telegram-desktop/03-post_pkg_postinst.ehook +++ b/profiles/ehooks/net-im/telegram-desktop/03-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/net-im/telegram-desktop/files/ubuntu-mono-dark/status/22/telegram-attention-panel.svg b/profiles/ehooks/net-im/telegram-desktop/files/ubuntu-mono-dark/status/22/telegram-attention-panel.svg index b7f96b21..c5287a90 100644 --- a/profiles/ehooks/net-im/telegram-desktop/files/ubuntu-mono-dark/status/22/telegram-attention-panel.svg +++ b/profiles/ehooks/net-im/telegram-desktop/files/ubuntu-mono-dark/status/22/telegram-attention-panel.svg @@ -1,61 +1,4 @@ - - - - - - - - image/svg+xml - - - - - - - - + + + diff --git a/profiles/ehooks/net-im/telegram-desktop/files/ubuntu-mono-dark/status/22/telegram-mute-panel.svg b/profiles/ehooks/net-im/telegram-desktop/files/ubuntu-mono-dark/status/22/telegram-mute-panel.svg index 37a688c8..e0daef80 100644 --- a/profiles/ehooks/net-im/telegram-desktop/files/ubuntu-mono-dark/status/22/telegram-mute-panel.svg +++ b/profiles/ehooks/net-im/telegram-desktop/files/ubuntu-mono-dark/status/22/telegram-mute-panel.svg @@ -1,61 +1,4 @@ - - - - - - - - image/svg+xml - - - - - - - - + + + diff --git a/profiles/ehooks/net-im/telegram-desktop/files/ubuntu-mono-dark/status/22/telegram-panel.svg b/profiles/ehooks/net-im/telegram-desktop/files/ubuntu-mono-dark/status/22/telegram-panel.svg index c2800fef..517d5fca 100644 --- a/profiles/ehooks/net-im/telegram-desktop/files/ubuntu-mono-dark/status/22/telegram-panel.svg +++ b/profiles/ehooks/net-im/telegram-desktop/files/ubuntu-mono-dark/status/22/telegram-panel.svg @@ -1,61 +1,4 @@ - - - - - - - - image/svg+xml - - - - - - - - + + + diff --git a/profiles/ehooks/net-irc/quassel/01-pre_src_prepare.ehook b/profiles/ehooks/net-irc/quassel/01-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/net-irc/quassel/01-pre_src_prepare.ehook +++ b/profiles/ehooks/net-irc/quassel/01-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/net-irc/quassel/02-post_pkg_postinst.ehook b/profiles/ehooks/net-irc/quassel/02-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/net-irc/quassel/02-post_pkg_postinst.ehook +++ b/profiles/ehooks/net-irc/quassel/02-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/net-irc/quassel/files/SNI-systray_fix.patch b/profiles/ehooks/net-irc/quassel/files/SNI-systray_fix.patch index 2f43d9ea..8dde4c15 100644 --- a/profiles/ehooks/net-irc/quassel/files/SNI-systray_fix.patch +++ b/profiles/ehooks/net-irc/quassel/files/SNI-systray_fix.patch @@ -1,3 +1,6 @@ +Notification Icon not appearing +Bug: https://bugs.quassel-irc.org/issues/1269 +--- diff -urN quassel-0.9.3/interfaces/org.kde.StatusNotifierItem.xml quassel-0.9.3-patched/interfaces/org.kde.StatusNotifierItem.xml --- quassel-0.9.3/interfaces/org.kde.StatusNotifierItem.xml 2014-03-26 09:24:54.000000000 +1030 +++ quassel-0.9.3-patched/interfaces/org.kde.StatusNotifierItem.xml 2014-06-08 07:43:51.936441875 +0930 diff --git a/profiles/ehooks/sys-apps/accountsservice/01-post_src_unpack.ehook b/profiles/ehooks/sys-apps/accountsservice/01-post_src_unpack.ehook index 2ff58157..dd27075e 100644 --- a/profiles/ehooks/sys-apps/accountsservice/01-post_src_unpack.ehook +++ b/profiles/ehooks/sys-apps/accountsservice/01-post_src_unpack.ehook @@ -1,8 +1,8 @@ ebuild_hook() { local \ - blake=09bff0b2e67425f697ab1d57fb74d7a82d04854f7b606df0477c98e088935d2b5295d388a7d71e3bb857f9443156fa9fb96e9e9341b4b8ca95a2c58bb3d2f643 \ - uver=accountsservice_0.6.55-0ubuntu13.2 + blake=9599441fe9ca6b404930164f6dc5e6de0dd2b841de97f8a3d8c6730dc22e98fa8fd94517e086aa7589ad03d7e62406a309659788d9b0b9b745ae7369a8138582 \ + uver=accountsservice_0.6.55-0ubuntu14 - source "${EHOOK_PATH}"/templates/fetch_debian.fnc + source "${EHOOK_PATH}"/templates/fetch_debian.template fetch_debian "${uver}" "${blake}" } diff --git a/profiles/ehooks/sys-apps/accountsservice/03-pre_src_prepare.ehook b/profiles/ehooks/sys-apps/accountsservice/03-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/sys-apps/accountsservice/03-pre_src_prepare.ehook +++ b/profiles/ehooks/sys-apps/accountsservice/03-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/templates/fetch_debian.fnc b/profiles/ehooks/templates/fetch_debian.template similarity index 100% rename from profiles/ehooks/templates/fetch_debian.fnc rename to profiles/ehooks/templates/fetch_debian.template diff --git a/profiles/ehooks/templates/fontconfig_symlinks.ehook b/profiles/ehooks/templates/fontconfig_symlinks.template similarity index 91% rename from profiles/ehooks/templates/fontconfig_symlinks.ehook rename to profiles/ehooks/templates/fontconfig_symlinks.template index c7c8d4c5..d144d4f0 100644 --- a/profiles/ehooks/templates/fontconfig_symlinks.ehook +++ b/profiles/ehooks/templates/fontconfig_symlinks.template @@ -4,8 +4,8 @@ ebuild_hook() { ehook_require fontconfig_adjust local \ - f \ - symlink_dir="/etc/fonts/conf.d" + symlink_dir="/etc/fonts/conf.d" \ + f einfo "Creating fontconfig configuration symlinks ..." for f in "${ED%/}"/etc/fonts/conf.avail/*; do diff --git a/profiles/ehooks/templates/patches.ehook b/profiles/ehooks/templates/patches.template similarity index 100% rename from profiles/ehooks/templates/patches.ehook rename to profiles/ehooks/templates/patches.template diff --git a/profiles/ehooks/templates/patches_eautoreconf.ehook b/profiles/ehooks/templates/patches_eautoreconf.template similarity index 100% rename from profiles/ehooks/templates/patches_eautoreconf.ehook rename to profiles/ehooks/templates/patches_eautoreconf.template diff --git a/profiles/ehooks/templates/patches_noelibtoolize.ehook b/profiles/ehooks/templates/patches_noelibtoolize.template similarity index 100% rename from profiles/ehooks/templates/patches_noelibtoolize.ehook rename to profiles/ehooks/templates/patches_noelibtoolize.template diff --git a/profiles/ehooks/templates/ubuntu-versionator_pkg_postinst.ehook b/profiles/ehooks/templates/ubuntu-versionator_pkg_postinst.template similarity index 100% rename from profiles/ehooks/templates/ubuntu-versionator_pkg_postinst.ehook rename to profiles/ehooks/templates/ubuntu-versionator_pkg_postinst.template diff --git a/profiles/ehooks/www-client/chromium/03-post_pkg_postinst.ehook b/profiles/ehooks/www-client/chromium/03-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/www-client/chromium/03-post_pkg_postinst.ehook +++ b/profiles/ehooks/www-client/chromium/03-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/www-client/firefox-78/01-pre_src_prepare.ehook b/profiles/ehooks/www-client/firefox-78/01-pre_src_prepare.ehook new file mode 120000 index 00000000..0d7a2e70 --- /dev/null +++ b/profiles/ehooks/www-client/firefox-78/01-pre_src_prepare.ehook @@ -0,0 +1 @@ +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/www-client/firefox-78/02-post_src_install.ehook b/profiles/ehooks/www-client/firefox-78/02-post_src_install.ehook new file mode 100644 index 00000000..07c6a76f --- /dev/null +++ b/profiles/ehooks/www-client/firefox-78/02-post_src_install.ehook @@ -0,0 +1,11 @@ +ebuild_hook() { + local desktopfile="${ED}/usr/share/applications/${PN}.desktop" + + newmenu "${EHOOK_FILESDIR}/${PN}.desktop.in" "${PN}.desktop" + + sed -i \ + -e "s/@MOZ_APP_NAME@/${PN}/" \ + -e "/%%ifdef/d" \ + -e "/%%else/,+$(( $(grep -n %%endif < ${desktopfile} | cut -d ':' -f 1) - $(grep -n %%else < ${desktopfile} | cut -d ':' -f 1) )) d" \ + "${desktopfile}" || die +} diff --git a/profiles/ehooks/www-client/firefox-78/03-post_pkg_postinst.ehook b/profiles/ehooks/www-client/firefox-78/03-post_pkg_postinst.ehook new file mode 120000 index 00000000..a51eb2e2 --- /dev/null +++ b/profiles/ehooks/www-client/firefox-78/03-post_pkg_postinst.ehook @@ -0,0 +1 @@ +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/www-client/firefox-78/files/firefox.desktop.in b/profiles/ehooks/www-client/firefox-78/files/firefox.desktop.in new file mode 100644 index 00000000..a1474a15 --- /dev/null +++ b/profiles/ehooks/www-client/firefox-78/files/firefox.desktop.in @@ -0,0 +1,263 @@ +[Desktop Entry] +Version=1.0 +%%ifdef MOZ_OFFICIAL_BRANDING +Name=Firefox Web Browser +Name[ar]=متصفح الويب فَيَرفُكْس +Name[ast]=Restolador web Firefox +Name[bn]=ফায়ারফক্স ওয়েব ব্রাউজার +Name[ca]=Navegador web Firefox +Name[cs]=Firefox Webový prohlížeč +Name[da]=Firefox - internetbrowser +Name[el]=Περιηγητής Firefox +Name[es]=Navegador web Firefox +Name[et]=Firefoxi veebibrauser +Name[fa]=مرورگر اینترنتی Firefox +Name[fi]=Firefox-selain +Name[fr]=Navigateur Web Firefox +Name[gl]=Navegador web Firefox +Name[he]=דפדפן האינטרנט Firefox +Name[hr]=Firefox web preglednik +Name[hu]=Firefox webböngésző +Name[it]=Firefox Browser Web +Name[ja]=Firefox ウェブ・ブラウザ +Name[ko]=Firefox 웹 브라우저 +Name[ku]=Geroka torê Firefox +Name[lt]=Firefox interneto naršyklė +Name[nb]=Firefox Nettleser +Name[nl]=Firefox webbrowser +Name[nn]=Firefox Nettlesar +Name[no]=Firefox Nettleser +Name[pl]=Przeglądarka WWW Firefox +Name[pt]=Firefox Navegador Web +Name[pt_BR]=Navegador Web Firefox +Name[ro]=Firefox – Navigator Internet +Name[ru]=Веб-браузер Firefox +Name[sk]=Firefox - internetový prehliadač +Name[sl]=Firefox spletni brskalnik +Name[sv]=Firefox webbläsare +Name[tr]=Firefox Web Tarayıcısı +Name[ug]=Firefox توركۆرگۈ +Name[uk]=Веб-браузер Firefox +Name[vi]=Trình duyệt web Firefox +Name[zh_CN]=Firefox 网络浏览器 +Name[zh_TW]=Firefox 網路瀏覽器 +%%else +Name=@MOZ_DISPLAY_NAME@ Web Browser +Name[ast]=Restolador web @MOZ_DISPLAY_NAME@ +Name[ca]=Navegador web @MOZ_DISPLAY_NAME@ +Name[cs]=@MOZ_DISPLAY_NAME@ Webový prohlížeč +Name[da]=@MOZ_DISPLAY_NAME@ - internetbrowser +Name[el]=Περιηγητής @MOZ_DISPLAY_NAME@ +Name[es]=Navegador web @MOZ_DISPLAY_NAME@ +Name[et]=@MOZ_DISPLAY_NAME@i veebibrauser +Name[fa]=مرورگر اینترنتی @MOZ_DISPLAY_NAME@ +Name[fi]=@MOZ_DISPLAY_NAME@-selain +Name[fr]=Navigateur Web @MOZ_DISPLAY_NAME@ +Name[gl]=Navegador web @MOZ_DISPLAY_NAME@ +Name[he]=דפדפן האינטרנט @MOZ_DISPLAY_NAME@ +Name[hr]=@MOZ_DISPLAY_NAME@ web preglednik +Name[hu]=@MOZ_DISPLAY_NAME@ webböngésző +Name[it]=@MOZ_DISPLAY_NAME@ Browser Web +Name[ja]=@MOZ_DISPLAY_NAME@ ウェブ・ブラウザ +Name[ko]=@MOZ_DISPLAY_NAME@ 웹 브라우저 +Name[ku]=Geroka torê @MOZ_DISPLAY_NAME@ +Name[lt]=@MOZ_DISPLAY_NAME@ interneto naršyklė +Name[nb]=@MOZ_DISPLAY_NAME@ Nettleser +Name[nl]=@MOZ_DISPLAY_NAME@ webbrowser +Name[nn]=@MOZ_DISPLAY_NAME@ Nettlesar +Name[no]=@MOZ_DISPLAY_NAME@ Nettleser +Name[pl]=Przeglądarka WWW @MOZ_DISPLAY_NAME@ +Name[pt]=@MOZ_DISPLAY_NAME@ Navegador Web +Name[pt_BR]=Navegador Web @MOZ_DISPLAY_NAME@ +Name[ro]=@MOZ_DISPLAY_NAME@ – Navigator Internet +Name[ru]=Веб-браузер @MOZ_DISPLAY_NAME@ +Name[sk]=@MOZ_DISPLAY_NAME@ - internetový prehliadač +Name[sl]=@MOZ_DISPLAY_NAME@ spletni brskalnik +Name[sv]=@MOZ_DISPLAY_NAME@ webbläsare +Name[tr]=@MOZ_DISPLAY_NAME@ Web Tarayıcısı +Name[ug]=@MOZ_DISPLAY_NAME@ توركۆرگۈ +Name[uk]=Веб-браузер @MOZ_DISPLAY_NAME@ +Name[vi]=Trình duyệt web @MOZ_DISPLAY_NAME@ +Name[zh_CN]=@MOZ_DISPLAY_NAME@ 网络浏览器 +Name[zh_TW]=@MOZ_DISPLAY_NAME@ 網路瀏覽器 +%%endif +Comment=Browse the World Wide Web +Comment[ar]=تصفح الشبكة العنكبوتية العالمية +Comment[ast]=Restola pela Rede +Comment[bn]=ইন্টারনেট ব্রাউজ করুন +Comment[ca]=Navegueu per la web +Comment[cs]=Prohlížení stránek World Wide Webu +Comment[da]=Surf på internettet +Comment[de]=Im Internet surfen +Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web) +Comment[es]=Navegue por la web +Comment[et]=Lehitse veebi +Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید +Comment[fi]=Selaa Internetin WWW-sivuja +Comment[fr]=Naviguer sur le Web +Comment[gl]=Navegar pola rede +Comment[he]=גלישה ברחבי האינטרנט +Comment[hr]=Pretražite web +Comment[hu]=A világháló böngészése +Comment[it]=Esplora il web +Comment[ja]=ウェブを閲覧します +Comment[ko]=웹을 돌아 다닙니다 +Comment[ku]=Li torê bigere +Comment[lt]=Naršykite internete +Comment[nb]=Surf på nettet +Comment[nl]=Verken het internet +Comment[nn]=Surf på nettet +Comment[no]=Surf på nettet +Comment[pl]=Przeglądanie stron WWW +Comment[pt]=Navegue na Internet +Comment[pt_BR]=Navegue na Internet +Comment[ro]=Navigați pe Internet +Comment[ru]=Доступ в Интернет +Comment[sk]=Prehliadanie internetu +Comment[sl]=Brskajte po spletu +Comment[sv]=Surfa på webben +Comment[tr]=İnternet'te Gezinin +Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ +Comment[uk]=Перегляд сторінок Інтернету +Comment[vi]=Để duyệt các trang web +Comment[zh_CN]=浏览互联网 +Comment[zh_TW]=瀏覽網際網路 +GenericName=Web Browser +GenericName[ar]=متصفح ويب +GenericName[ast]=Restolador Web +GenericName[bn]=ওয়েব ব্রাউজার +GenericName[ca]=Navegador web +GenericName[cs]=Webový prohlížeč +GenericName[da]=Webbrowser +GenericName[el]=Περιηγητής διαδικτύου +GenericName[es]=Navegador web +GenericName[et]=Veebibrauser +GenericName[fa]=مرورگر اینترنتی +GenericName[fi]=WWW-selain +GenericName[fr]=Navigateur Web +GenericName[gl]=Navegador Web +GenericName[he]=דפדפן אינטרנט +GenericName[hr]=Web preglednik +GenericName[hu]=Webböngésző +GenericName[it]=Browser web +GenericName[ja]=ウェブ・ブラウザ +GenericName[ko]=웹 브라우저 +GenericName[ku]=Geroka torê +GenericName[lt]=Interneto naršyklė +GenericName[nb]=Nettleser +GenericName[nl]=Webbrowser +GenericName[nn]=Nettlesar +GenericName[no]=Nettleser +GenericName[pl]=Przeglądarka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador Web +GenericName[ro]=Navigator Internet +GenericName[ru]=Веб-браузер +GenericName[sk]=Internetový prehliadač +GenericName[sl]=Spletni brskalnik +GenericName[sv]=Webbläsare +GenericName[tr]=Web Tarayıcı +GenericName[ug]=توركۆرگۈ +GenericName[uk]=Веб-браузер +GenericName[vi]=Trình duyệt Web +GenericName[zh_CN]=网络浏览器 +GenericName[zh_TW]=網路瀏覽器 +Keywords=Internet;WWW;Browser;Web;Explorer +Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب +Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador +Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer +Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer +Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet +Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen +Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;Firefox;Φιρεφοχ;Ιντερνετ +Keywords[es]=Explorador;Internet;WWW +Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa +Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur +Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה; +Keywords[hr]=Internet;WWW;preglednik;Web +Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer +Keywords[it]=Internet;WWW;Browser;Web;Navigatore +Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk +Keywords[ja]=Internet;WWW;Web;インターネット;ブラウザ;ウェブ;エクスプローラ +Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside +Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online +Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador +Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador +Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис +Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer +Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet +Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara +Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд +Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyệt;Trang web +Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;网页;浏览;上网;火狐;Firefox;ff;互联网;网站; +Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;網際網路;網路;瀏覽器;上網;網頁;火狐 +Exec=@MOZ_APP_NAME@ %u +Terminal=false +X-MultipleArgs=false +Type=Application +Icon=@MOZ_APP_NAME@ +Categories=GNOME;GTK;Network;WebBrowser; +MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall; +StartupNotify=true +Actions=new-window;new-private-window; + +[Desktop Action new-window] +Name=Open a New Window +Name[ar]=افتح نافذة جديدة +Name[ast]=Abrir una ventana nueva +Name[bn]=Abrir una ventana nueva +Name[ca]=Obre una finestra nova +Name[cs]=Otevřít nové okno +Name[da]=Åbn et nyt vindue +Name[de]=Ein neues Fenster öffnen +Name[el]=Νέο παράθυρο +Name[es]=Abrir una ventana nueva +Name[fi]=Avaa uusi ikkuna +Name[fr]=Ouvrir une nouvelle fenêtre +Name[gl]=Abrir unha nova xanela +Name[he]=פתיחת חלון חדש +Name[hr]=Otvori novi prozor +Name[hu]=Új ablak nyitása +Name[it]=Apri una nuova finestra +Name[ja]=新しいウィンドウを開く +Name[ko]=새 창 열기 +Name[ku]=Paceyeke nû veke +Name[lt]=Atverti naują langą +Name[nb]=Åpne et nytt vindu +Name[nl]=Nieuw venster openen +Name[pt]=Abrir nova janela +Name[pt_BR]=Abrir nova janela +Name[ro]=Deschide o fereastră nouă +Name[ru]=Новое окно +Name[sk]=Otvoriť nové okno +Name[sl]=Odpri novo okno +Name[sv]=Öppna ett nytt fönster +Name[tr]=Yeni pencere aç +Name[ug]=يېڭى كۆزنەك ئېچىش +Name[uk]=Відкрити нове вікно +Name[vi]=Mở cửa sổ mới +Name[zh_CN]=新建窗口 +Name[zh_TW]=開啟新視窗 +Exec=@MOZ_APP_NAME@ -new-window + +[Desktop Action new-private-window] +Name=Open a New Private Window +Name[ar]=افتح نافذة جديدة للتصفح الخاص +Name[ca]=Obre una finestra nova en mode d'incògnit +Name[cs]=Otevřít nové anonymní okno +Name[de]=Ein neues privates Fenster öffnen +Name[el]=Νέο ιδιωτικό παράθυρο +Name[es]=Abrir una ventana privada nueva +Name[fi]=Avaa uusi yksityinen ikkuna +Name[fr]=Ouvrir une nouvelle fenêtre de navigation privée +Name[he]=פתיחת חלון גלישה פרטית חדש +Name[hu]=Új privát ablak nyitása +Name[it]=Apri una nuova finestra anonima +Name[nb]=Åpne et nytt privat vindu +Name[ru]=Новое приватное окно +Name[sl]=Odpri novo okno zasebnega brskanja +Name[sv]=Öppna ett nytt privat fönster +Name[tr]=Yeni gizli pencere aç +Name[uk]=Відкрити нове вікно у потайливому режимі +Name[zh_TW]=開啟新隱私瀏覽視窗 +Exec=@MOZ_APP_NAME@ -private-window diff --git a/profiles/ehooks/www-client/firefox-78/files/unity-menubar.patch b/profiles/ehooks/www-client/firefox-78/files/unity-menubar.patch new file mode 100644 index 00000000..ab36cf3e --- /dev/null +++ b/profiles/ehooks/www-client/firefox-78/files/unity-menubar.patch @@ -0,0 +1,5193 @@ +--- a/browser/base/content/browser-menubar.inc ++++ b/browser/base/content/browser-menubar.inc +@@ -5,7 +5,11 @@ + + + +--- a/browser/base/content/browser.js ++++ b/browser/base/content/browser.js +@@ -6301,11 +6301,17 @@ function onViewToolbarsPopupShowing(aEve + + let toolbarNodes = gNavToolbox.querySelectorAll("toolbar"); + ++ let shellShowingMenubar = document.documentElement.getAttribute("shellshowingmenubar") == "true"; ++ + for (let toolbar of toolbarNodes) { + if (!toolbar.hasAttribute("toolbarname")) { + continue; + } + ++ if (shellShowingMenubar && toolbar.id == "toolbar-menubar") { ++ continue; ++ } ++ + let menuItem = document.createXULElement("menuitem"); + let hidingAttribute = + toolbar.getAttribute("type") == "menubar" ? "autohide" : "collapsed"; +--- a/browser/components/places/content/places.xhtml ++++ b/browser/components/places/content/places.xhtml +@@ -169,7 +169,7 @@ + ++ + PopupState()) { +@@ -181,6 +185,11 @@ void XULPopupElement::GetState(nsString& + break; + } + } ++#ifdef MOZ_WIDGET_GTK ++ else if (GetAttr(kNameSpaceID_None, nsGkAtoms::_moz_nativemenupopupstate, nativeState)) { ++ aState = nativeState; ++ } ++#endif + } + + nsINode* XULPopupElement::GetTriggerNode() const { +--- a/dom/xul/moz.build ++++ b/dom/xul/moz.build +@@ -83,6 +83,11 @@ LOCAL_INCLUDES += [ + + include('/ipc/chromium/chromium-config.mozbuild') + ++if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk': ++ LOCAL_INCLUDES += [ ++ '/widget/gtk', ++ ] ++ + FINAL_LIBRARY = 'xul' + + if CONFIG['CC_TYPE'] in ('clang', 'gcc'): +--- a/layout/build/moz.build ++++ b/layout/build/moz.build +@@ -68,6 +68,10 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'an + '/dom/system', + '/dom/system/android', + ] ++elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk': ++ LOCAL_INCLUDES += [ ++ '/widget/gtk', ++ ] + + XPCOM_MANIFESTS += [ + 'components.conf', +--- a/modules/libpref/init/all.js ++++ b/modules/libpref/init/all.js +@@ -313,6 +313,9 @@ pref("dom.mouseevent.click.hack.use_lega + // of content viewers to cache based on the amount of available memory. + pref("browser.sessionhistory.max_total_viewers", -1); + ++#ifdef MOZ_WIDGET_GTK ++pref("ui.use_unity_menubar", true); ++#endif + pref("ui.click_hold_context_menus", false); + // 0 = false, 1 = true, 2 = autodetect. + pref("ui.android.mouse_as_touch", 1); +--- a/toolkit/content/xul.css ++++ b/toolkit/content/xul.css +@@ -200,6 +200,13 @@ toolbar[type="menubar"] { + } + %endif + ++%ifdef MOZ_WIDGET_GTK ++*|*:root[shellshowingmenubar="true"] ++toolbar[type="menubar"]:not([customizing="true"]) { ++ display: none !important; ++} ++%endif ++ + toolbarspring { + -moz-box-flex: 1000; + } +--- a/widget/gtk/moz.build ++++ b/widget/gtk/moz.build +@@ -55,6 +55,15 @@ UNIFIED_SOURCES += [ + + SOURCES += [ + 'MediaKeysEventSourceFactory.cpp', ++ 'nsDbusmenu.cpp', ++ 'nsMenu.cpp', # conflicts with X11 headers ++ 'nsMenuBar.cpp', ++ 'nsMenuContainer.cpp', ++ 'nsMenuItem.cpp', ++ 'nsMenuObject.cpp', ++ 'nsMenuSeparator.cpp', ++ 'nsNativeMenuDocListener.cpp', ++ 'nsNativeMenuService.cpp', + 'nsWindow.cpp', # conflicts with X11 headers + 'WaylandVsyncSource.cpp', # conflicts with X11 headers + ] +@@ -134,6 +143,7 @@ FINAL_LIBRARY = 'xul' + LOCAL_INCLUDES += [ + '/layout/base', + '/layout/generic', ++ '/layout/style', + '/layout/xul', + '/other-licenses/atk-1.0', + '/widget', +--- /dev/null ++++ b/widget/gtk/nsDbusmenu.cpp +@@ -0,0 +1,61 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "nsDbusmenu.h" ++#include "prlink.h" ++#include "mozilla/ArrayUtils.h" ++ ++#define FUNC(name, type, params) \ ++nsDbusmenuFunctions::_##name##_fn nsDbusmenuFunctions::s_##name; ++DBUSMENU_GLIB_FUNCTIONS ++DBUSMENU_GTK_FUNCTIONS ++#undef FUNC ++ ++static PRLibrary *gDbusmenuGlib = nullptr; ++static PRLibrary *gDbusmenuGtk = nullptr; ++ ++typedef void (*nsDbusmenuFunc)(); ++struct nsDbusmenuDynamicFunction { ++ const char *functionName; ++ nsDbusmenuFunc *function; ++}; ++ ++/* static */ nsresult ++nsDbusmenuFunctions::Init() ++{ ++#define FUNC(name, type, params) \ ++ { #name, (nsDbusmenuFunc *)&nsDbusmenuFunctions::s_##name }, ++ static const nsDbusmenuDynamicFunction kDbusmenuGlibSymbols[] = { ++ DBUSMENU_GLIB_FUNCTIONS ++ }; ++ static const nsDbusmenuDynamicFunction kDbusmenuGtkSymbols[] = { ++ DBUSMENU_GTK_FUNCTIONS ++ }; ++ ++#define LOAD_LIBRARY(symbol, name) \ ++ if (!g##symbol) { \ ++ g##symbol = PR_LoadLibrary(name); \ ++ if (!g##symbol) { \ ++ return NS_ERROR_FAILURE; \ ++ } \ ++ } \ ++ for (uint32_t i = 0; i < mozilla::ArrayLength(k##symbol##Symbols); ++i) { \ ++ *k##symbol##Symbols[i].function = \ ++ PR_FindFunctionSymbol(g##symbol, k##symbol##Symbols[i].functionName); \ ++ if (!*k##symbol##Symbols[i].function) { \ ++ return NS_ERROR_FAILURE; \ ++ } \ ++ } ++ ++ LOAD_LIBRARY(DbusmenuGlib, "libdbusmenu-glib.so.4") ++#ifdef MOZ_WIDGET_GTK ++ LOAD_LIBRARY(DbusmenuGtk, "libdbusmenu-gtk3.so.4") ++#endif ++#undef LOAD_LIBRARY ++ ++ return NS_OK; ++} +--- /dev/null ++++ b/widget/gtk/nsDbusmenu.h +@@ -0,0 +1,101 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsDbusmenu_h__ ++#define __nsDbusmenu_h__ ++ ++#include "nsError.h" ++ ++#include ++#include ++ ++#define DBUSMENU_GLIB_FUNCTIONS \ ++ FUNC(dbusmenu_menuitem_child_add_position, gboolean, (DbusmenuMenuitem *mi, DbusmenuMenuitem *child, guint position)) \ ++ FUNC(dbusmenu_menuitem_child_append, gboolean, (DbusmenuMenuitem *mi, DbusmenuMenuitem *child)) \ ++ FUNC(dbusmenu_menuitem_child_delete, gboolean, (DbusmenuMenuitem *mi, DbusmenuMenuitem *child)) \ ++ FUNC(dbusmenu_menuitem_get_children, GList*, (DbusmenuMenuitem *mi)) \ ++ FUNC(dbusmenu_menuitem_new, DbusmenuMenuitem*, (void)) \ ++ FUNC(dbusmenu_menuitem_property_get, const gchar*, (DbusmenuMenuitem *mi, const gchar *property)) \ ++ FUNC(dbusmenu_menuitem_property_get_bool, gboolean, (DbusmenuMenuitem *mi, const gchar *property)) \ ++ FUNC(dbusmenu_menuitem_property_remove, void, (DbusmenuMenuitem *mi, const gchar *property)) \ ++ FUNC(dbusmenu_menuitem_property_set, gboolean, (DbusmenuMenuitem *mi, const gchar *property, const gchar *value)) \ ++ FUNC(dbusmenu_menuitem_property_set_bool, gboolean, (DbusmenuMenuitem *mi, const gchar *property, const gboolean value)) \ ++ FUNC(dbusmenu_menuitem_property_set_int, gboolean, (DbusmenuMenuitem *mi, const gchar *property, const gint value)) \ ++ FUNC(dbusmenu_menuitem_show_to_user, void, (DbusmenuMenuitem *mi, guint timestamp)) \ ++ FUNC(dbusmenu_menuitem_take_children, GList*, (DbusmenuMenuitem *mi)) \ ++ FUNC(dbusmenu_server_new, DbusmenuServer*, (const gchar *object)) \ ++ FUNC(dbusmenu_server_set_root, void, (DbusmenuServer *server, DbusmenuMenuitem *root)) \ ++ FUNC(dbusmenu_server_set_status, void, (DbusmenuServer *server, DbusmenuStatus status)) ++ ++#define DBUSMENU_GTK_FUNCTIONS \ ++ FUNC(dbusmenu_menuitem_property_set_image, gboolean, (DbusmenuMenuitem *menuitem, const gchar *property, const GdkPixbuf *data)) \ ++ FUNC(dbusmenu_menuitem_property_set_shortcut, gboolean, (DbusmenuMenuitem *menuitem, guint key, GdkModifierType modifier)) ++ ++typedef struct _DbusmenuMenuitem DbusmenuMenuitem; ++typedef struct _DbusmenuServer DbusmenuServer; ++ ++enum DbusmenuStatus { ++ DBUSMENU_STATUS_NORMAL, ++ DBUSMENU_STATUS_NOTICE ++}; ++ ++#define DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU "submenu" ++#define DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY "children-display" ++#define DBUSMENU_MENUITEM_PROP_ENABLED "enabled" ++#define DBUSMENU_MENUITEM_PROP_ICON_DATA "icon-data" ++#define DBUSMENU_MENUITEM_PROP_LABEL "label" ++#define DBUSMENU_MENUITEM_PROP_SHORTCUT "shortcut" ++#define DBUSMENU_MENUITEM_PROP_TYPE "type" ++#define DBUSMENU_MENUITEM_PROP_TOGGLE_STATE "toggle-state" ++#define DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE "toggle-type" ++#define DBUSMENU_MENUITEM_PROP_VISIBLE "visible" ++#define DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW "about-to-show" ++#define DBUSMENU_MENUITEM_SIGNAL_EVENT "event" ++#define DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED "item-activated" ++#define DBUSMENU_MENUITEM_TOGGLE_CHECK "checkmark" ++#define DBUSMENU_MENUITEM_TOGGLE_RADIO "radio" ++#define DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED 1 ++#define DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED 0 ++#define DBUSMENU_SERVER_PROP_DBUS_OBJECT "dbus-object" ++ ++class nsDbusmenuFunctions ++{ ++public: ++ nsDbusmenuFunctions() = delete; ++ ++ static nsresult Init(); ++ ++#define FUNC(name, type, params) \ ++ typedef type (*_##name##_fn) params; \ ++ static _##name##_fn s_##name; ++ DBUSMENU_GLIB_FUNCTIONS ++ DBUSMENU_GTK_FUNCTIONS ++#undef FUNC ++ ++}; ++ ++#define dbusmenu_menuitem_child_add_position nsDbusmenuFunctions::s_dbusmenu_menuitem_child_add_position ++#define dbusmenu_menuitem_child_append nsDbusmenuFunctions::s_dbusmenu_menuitem_child_append ++#define dbusmenu_menuitem_child_delete nsDbusmenuFunctions::s_dbusmenu_menuitem_child_delete ++#define dbusmenu_menuitem_get_children nsDbusmenuFunctions::s_dbusmenu_menuitem_get_children ++#define dbusmenu_menuitem_new nsDbusmenuFunctions::s_dbusmenu_menuitem_new ++#define dbusmenu_menuitem_property_get nsDbusmenuFunctions::s_dbusmenu_menuitem_property_get ++#define dbusmenu_menuitem_property_get_bool nsDbusmenuFunctions::s_dbusmenu_menuitem_property_get_bool ++#define dbusmenu_menuitem_property_remove nsDbusmenuFunctions::s_dbusmenu_menuitem_property_remove ++#define dbusmenu_menuitem_property_set nsDbusmenuFunctions::s_dbusmenu_menuitem_property_set ++#define dbusmenu_menuitem_property_set_bool nsDbusmenuFunctions::s_dbusmenu_menuitem_property_set_bool ++#define dbusmenu_menuitem_property_set_int nsDbusmenuFunctions::s_dbusmenu_menuitem_property_set_int ++#define dbusmenu_menuitem_show_to_user nsDbusmenuFunctions::s_dbusmenu_menuitem_show_to_user ++#define dbusmenu_menuitem_take_children nsDbusmenuFunctions::s_dbusmenu_menuitem_take_children ++#define dbusmenu_server_new nsDbusmenuFunctions::s_dbusmenu_server_new ++#define dbusmenu_server_set_root nsDbusmenuFunctions::s_dbusmenu_server_set_root ++#define dbusmenu_server_set_status nsDbusmenuFunctions::s_dbusmenu_server_set_status ++ ++#define dbusmenu_menuitem_property_set_image nsDbusmenuFunctions::s_dbusmenu_menuitem_property_set_image ++#define dbusmenu_menuitem_property_set_shortcut nsDbusmenuFunctions::s_dbusmenu_menuitem_property_set_shortcut ++ ++#endif /* __nsDbusmenu_h__ */ +--- /dev/null ++++ b/widget/gtk/nsMenu.cpp +@@ -0,0 +1,796 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#define _IMPL_NS_LAYOUT ++ ++#include "mozilla/dom/Document.h" ++#include "mozilla/dom/Element.h" ++#include "mozilla/Assertions.h" ++#include "mozilla/ComputedStyleInlines.h" ++#include "mozilla/EventDispatcher.h" ++#include "mozilla/GuardObjects.h" ++#include "mozilla/MouseEvents.h" ++#include "mozilla/PresShell.h" ++#include "mozilla/PresShellInlines.h" ++#include "nsComponentManagerUtils.h" ++#include "nsContentUtils.h" ++#include "nsCSSValue.h" ++#include "nsGkAtoms.h" ++#include "nsGtkUtils.h" ++#include "nsAtom.h" ++#include "nsIContent.h" ++#include "nsIRunnable.h" ++#include "nsITimer.h" ++#include "nsString.h" ++#include "nsStyleStruct.h" ++#include "nsThreadUtils.h" ++ ++#include "nsNativeMenuDocListener.h" ++ ++#include ++ ++#include "nsMenu.h" ++ ++using namespace mozilla; ++ ++class nsMenuContentInsertedEvent : public Runnable ++{ ++public: ++ nsMenuContentInsertedEvent(nsMenu *aMenu, ++ nsIContent *aContainer, ++ nsIContent *aChild, ++ nsIContent *aPrevSibling) : ++ Runnable("nsMenuContentInsertedEvent"), ++ mWeakMenu(aMenu), ++ mContainer(aContainer), ++ mChild(aChild), ++ mPrevSibling(aPrevSibling) { } ++ ++ NS_IMETHODIMP Run() ++ { ++ if (!mWeakMenu) { ++ return NS_OK; ++ } ++ ++ static_cast(mWeakMenu.get())->HandleContentInserted(mContainer, ++ mChild, ++ mPrevSibling); ++ return NS_OK; ++ } ++ ++private: ++ nsWeakMenuObject mWeakMenu; ++ ++ nsCOMPtr mContainer; ++ nsCOMPtr mChild; ++ nsCOMPtr mPrevSibling; ++}; ++ ++class nsMenuContentRemovedEvent : public Runnable ++{ ++public: ++ nsMenuContentRemovedEvent(nsMenu *aMenu, ++ nsIContent *aContainer, ++ nsIContent *aChild) : ++ Runnable("nsMenuContentRemovedEvent"), ++ mWeakMenu(aMenu), ++ mContainer(aContainer), ++ mChild(aChild) { } ++ ++ NS_IMETHODIMP Run() ++ { ++ if (!mWeakMenu) { ++ return NS_OK; ++ } ++ ++ static_cast(mWeakMenu.get())->HandleContentRemoved(mContainer, ++ mChild); ++ return NS_OK; ++ } ++ ++private: ++ nsWeakMenuObject mWeakMenu; ++ ++ nsCOMPtr mContainer; ++ nsCOMPtr mChild; ++}; ++ ++static void ++DispatchMouseEvent(nsIContent *aTarget, mozilla::EventMessage aMsg) ++{ ++ if (!aTarget) { ++ return; ++ } ++ ++ WidgetMouseEvent event(true, aMsg, nullptr, WidgetMouseEvent::eReal); ++ EventDispatcher::Dispatch(aTarget, nullptr, &event); ++} ++ ++void ++nsMenu::SetPopupState(EPopupState aState) ++{ ++ mPopupState = aState; ++ ++ if (!mPopupContent) { ++ return; ++ } ++ ++ nsAutoString state; ++ switch (aState) { ++ case ePopupState_Showing: ++ state.Assign(NS_LITERAL_STRING("showing")); ++ break; ++ case ePopupState_Open: ++ state.Assign(NS_LITERAL_STRING("open")); ++ break; ++ case ePopupState_Hiding: ++ state.Assign(NS_LITERAL_STRING("hiding")); ++ break; ++ default: ++ break; ++ } ++ ++ if (state.IsEmpty()) { ++ mPopupContent->AsElement()->UnsetAttr( ++ kNameSpaceID_None, nsGkAtoms::_moz_nativemenupopupstate, ++ false); ++ } else { ++ mPopupContent->AsElement()->SetAttr( ++ kNameSpaceID_None, nsGkAtoms::_moz_nativemenupopupstate, ++ state, false); ++ } ++} ++ ++/* static */ void ++nsMenu::DoOpenCallback(nsITimer *aTimer, void *aClosure) ++{ ++ nsMenu* self = static_cast(aClosure); ++ ++ dbusmenu_menuitem_show_to_user(self->GetNativeData(), 0); ++ ++ self->mOpenDelayTimer = nullptr; ++} ++ ++/* static */ void ++nsMenu::menu_event_cb(DbusmenuMenuitem *menu, ++ const gchar *name, ++ GVariant *value, ++ guint timestamp, ++ gpointer user_data) ++{ ++ nsMenu *self = static_cast(user_data); ++ ++ nsAutoCString event(name); ++ ++ if (event.Equals(NS_LITERAL_CSTRING("closed"))) { ++ self->OnClose(); ++ return; ++ } ++ ++ if (event.Equals(NS_LITERAL_CSTRING("opened"))) { ++ self->OnOpen(); ++ return; ++ } ++} ++ ++void ++nsMenu::MaybeAddPlaceholderItem() ++{ ++ MOZ_ASSERT(!IsInBatchedUpdate(), ++ "Shouldn't be modifying the native menu structure now"); ++ ++ GList *children = dbusmenu_menuitem_get_children(GetNativeData()); ++ if (!children) { ++ MOZ_ASSERT(!mPlaceholderItem); ++ ++ mPlaceholderItem = dbusmenu_menuitem_new(); ++ if (!mPlaceholderItem) { ++ return; ++ } ++ ++ dbusmenu_menuitem_property_set_bool(mPlaceholderItem, ++ DBUSMENU_MENUITEM_PROP_VISIBLE, ++ false); ++ ++ MOZ_ALWAYS_TRUE( ++ dbusmenu_menuitem_child_append(GetNativeData(), mPlaceholderItem)); ++ } ++} ++ ++void ++nsMenu::EnsureNoPlaceholderItem() ++{ ++ MOZ_ASSERT(!IsInBatchedUpdate(), ++ "Shouldn't be modifying the native menu structure now"); ++ ++ if (!mPlaceholderItem) { ++ return; ++ } ++ ++ MOZ_ALWAYS_TRUE( ++ dbusmenu_menuitem_child_delete(GetNativeData(), mPlaceholderItem)); ++ MOZ_ASSERT(!dbusmenu_menuitem_get_children(GetNativeData())); ++ ++ g_object_unref(mPlaceholderItem); ++ mPlaceholderItem = nullptr; ++} ++ ++void ++nsMenu::OnOpen() ++{ ++ if (mNeedsRebuild) { ++ Build(); ++ } ++ ++ nsWeakMenuObject self(this); ++ nsCOMPtr origPopupContent(mPopupContent); ++ { ++ nsNativeMenuDocListener::BlockUpdatesScope updatesBlocker; ++ ++ SetPopupState(ePopupState_Showing); ++ DispatchMouseEvent(mPopupContent, eXULPopupShowing); ++ ++ ContentNode()->AsElement()->SetAttr(kNameSpaceID_None, nsGkAtoms::open, ++ NS_LITERAL_STRING("true"), true); ++ } ++ ++ if (!self) { ++ // We were deleted! ++ return; ++ } ++ ++ // I guess that the popup could have changed ++ if (origPopupContent != mPopupContent) { ++ return; ++ } ++ ++ nsNativeMenuDocListener::BlockUpdatesScope updatesBlocker; ++ ++ size_t count = ChildCount(); ++ for (size_t i = 0; i < count; ++i) { ++ ChildAt(i)->ContainerIsOpening(); ++ } ++ ++ SetPopupState(ePopupState_Open); ++ DispatchMouseEvent(mPopupContent, eXULPopupShown); ++} ++ ++void ++nsMenu::Build() ++{ ++ mNeedsRebuild = false; ++ ++ while (ChildCount() > 0) { ++ RemoveChildAt(0); ++ } ++ ++ InitializePopup(); ++ ++ if (!mPopupContent) { ++ return; ++ } ++ ++ uint32_t count = mPopupContent->GetChildCount(); ++ for (uint32_t i = 0; i < count; ++i) { ++ nsIContent *childContent = mPopupContent->GetChildAt_Deprecated(i); ++ ++ UniquePtr child = CreateChild(childContent); ++ ++ if (!child) { ++ continue; ++ } ++ ++ AppendChild(std::move(child)); ++ } ++} ++ ++void ++nsMenu::InitializePopup() ++{ ++ nsCOMPtr oldPopupContent; ++ oldPopupContent.swap(mPopupContent); ++ ++ for (uint32_t i = 0; i < ContentNode()->GetChildCount(); ++i) { ++ nsIContent *child = ContentNode()->GetChildAt_Deprecated(i); ++ ++ if (child->NodeInfo()->NameAtom() == nsGkAtoms::menupopup) { ++ mPopupContent = child; ++ break; ++ } ++ } ++ ++ if (oldPopupContent == mPopupContent) { ++ return; ++ } ++ ++ // The popup has changed ++ ++ if (oldPopupContent) { ++ DocListener()->UnregisterForContentChanges(oldPopupContent); ++ } ++ ++ SetPopupState(ePopupState_Closed); ++ ++ if (!mPopupContent) { ++ return; ++ } ++ ++ DocListener()->RegisterForContentChanges(mPopupContent, this); ++} ++ ++void ++nsMenu::RemoveChildAt(size_t aIndex) ++{ ++ MOZ_ASSERT(IsInBatchedUpdate() || !mPlaceholderItem, ++ "Shouldn't have a placeholder menuitem"); ++ ++ nsMenuContainer::RemoveChildAt(aIndex, !IsInBatchedUpdate()); ++ StructureMutated(); ++ ++ if (!IsInBatchedUpdate()) { ++ MaybeAddPlaceholderItem(); ++ } ++} ++ ++void ++nsMenu::RemoveChild(nsIContent *aChild) ++{ ++ size_t index = IndexOf(aChild); ++ if (index == NoIndex) { ++ return; ++ } ++ ++ RemoveChildAt(index); ++} ++ ++void ++nsMenu::InsertChildAfter(UniquePtr aChild, ++ nsIContent *aPrevSibling) ++{ ++ if (!IsInBatchedUpdate()) { ++ EnsureNoPlaceholderItem(); ++ } ++ ++ nsMenuContainer::InsertChildAfter(std::move(aChild), aPrevSibling, ++ !IsInBatchedUpdate()); ++ StructureMutated(); ++} ++ ++void ++nsMenu::AppendChild(UniquePtr aChild) ++{ ++ if (!IsInBatchedUpdate()) { ++ EnsureNoPlaceholderItem(); ++ } ++ ++ nsMenuContainer::AppendChild(std::move(aChild), !IsInBatchedUpdate()); ++ StructureMutated(); ++} ++ ++bool ++nsMenu::IsInBatchedUpdate() const ++{ ++ return mBatchedUpdateState != eBatchedUpdateState_Inactive; ++} ++ ++void ++nsMenu::StructureMutated() ++{ ++ if (!IsInBatchedUpdate()) { ++ return; ++ } ++ ++ mBatchedUpdateState = eBatchedUpdateState_DidMutate; ++} ++ ++bool ++nsMenu::CanOpen() const ++{ ++ bool isVisible = dbusmenu_menuitem_property_get_bool(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_VISIBLE); ++ bool isDisabled = ContentNode()->AsElement()->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::disabled, ++ nsGkAtoms::_true, ++ eCaseMatters); ++ ++ return (isVisible && !isDisabled); ++} ++ ++void ++nsMenu::HandleContentInserted(nsIContent *aContainer, ++ nsIContent *aChild, ++ nsIContent *aPrevSibling) ++{ ++ if (aContainer == mPopupContent) { ++ UniquePtr child = CreateChild(aChild); ++ ++ if (child) { ++ InsertChildAfter(std::move(child), aPrevSibling); ++ } ++ } else { ++ Build(); ++ } ++} ++ ++void ++nsMenu::HandleContentRemoved(nsIContent *aContainer, nsIContent *aChild) ++{ ++ if (aContainer == mPopupContent) { ++ RemoveChild(aChild); ++ } else { ++ Build(); ++ } ++} ++ ++void ++nsMenu::InitializeNativeData() ++{ ++ // Dbusmenu provides an "about-to-show" signal, and also "opened" and ++ // "closed" events. However, Unity is the only thing that sends ++ // both "about-to-show" and "opened" events. Unity 2D and the HUD only ++ // send "opened" events, so we ignore "about-to-show" (I don't think ++ // there's any real difference between them anyway). ++ // To complicate things, there are certain conditions where we don't ++ // get a "closed" event, so we need to be able to handle this :/ ++ g_signal_connect(G_OBJECT(GetNativeData()), "event", ++ G_CALLBACK(menu_event_cb), this); ++ ++ mNeedsRebuild = true; ++ mNeedsUpdate = true; ++ ++ MaybeAddPlaceholderItem(); ++} ++ ++void ++nsMenu::Update(ComputedStyle *aComputedStyle) ++{ ++ if (mNeedsUpdate) { ++ mNeedsUpdate = false; ++ ++ UpdateLabel(); ++ UpdateSensitivity(); ++ } ++ ++ UpdateVisibility(aComputedStyle); ++ UpdateIcon(aComputedStyle); ++} ++ ++nsMenuObject::PropertyFlags ++nsMenu::SupportedProperties() const ++{ ++ return static_cast( ++ nsMenuObject::ePropLabel | ++ nsMenuObject::ePropEnabled | ++ nsMenuObject::ePropVisible | ++ nsMenuObject::ePropIconData | ++ nsMenuObject::ePropChildDisplay ++ ); ++} ++ ++void ++nsMenu::OnAttributeChanged(nsIContent *aContent, nsAtom *aAttribute) ++{ ++ MOZ_ASSERT(aContent == ContentNode() || aContent == mPopupContent, ++ "Received an event that wasn't meant for us!"); ++ ++ if (mNeedsUpdate) { ++ return; ++ } ++ ++ if (aContent != ContentNode()) { ++ return; ++ } ++ ++ if (!Parent()->IsBeingDisplayed()) { ++ mNeedsUpdate = true; ++ return; ++ } ++ ++ if (aAttribute == nsGkAtoms::disabled) { ++ UpdateSensitivity(); ++ } else if (aAttribute == nsGkAtoms::label || ++ aAttribute == nsGkAtoms::accesskey || ++ aAttribute == nsGkAtoms::crop) { ++ UpdateLabel(); ++ } else if (aAttribute == nsGkAtoms::hidden || ++ aAttribute == nsGkAtoms::collapsed) { ++ RefPtr style = GetComputedStyle(); ++ UpdateVisibility(style); ++ } else if (aAttribute == nsGkAtoms::image) { ++ RefPtr style = GetComputedStyle(); ++ UpdateIcon(style); ++ } ++} ++ ++void ++nsMenu::OnContentInserted(nsIContent *aContainer, nsIContent *aChild, ++ nsIContent *aPrevSibling) ++{ ++ MOZ_ASSERT(aContainer == ContentNode() || aContainer == mPopupContent, ++ "Received an event that wasn't meant for us!"); ++ ++ if (mNeedsRebuild) { ++ return; ++ } ++ ++ if (mPopupState == ePopupState_Closed) { ++ mNeedsRebuild = true; ++ return; ++ } ++ ++ nsContentUtils::AddScriptRunner( ++ new nsMenuContentInsertedEvent(this, aContainer, aChild, ++ aPrevSibling)); ++} ++ ++void ++nsMenu::OnContentRemoved(nsIContent *aContainer, nsIContent *aChild) ++{ ++ MOZ_ASSERT(aContainer == ContentNode() || aContainer == mPopupContent, ++ "Received an event that wasn't meant for us!"); ++ ++ if (mNeedsRebuild) { ++ return; ++ } ++ ++ if (mPopupState == ePopupState_Closed) { ++ mNeedsRebuild = true; ++ return; ++ } ++ ++ nsContentUtils::AddScriptRunner( ++ new nsMenuContentRemovedEvent(this, aContainer, aChild)); ++} ++ ++/* ++ * Some menus (eg, the History menu in Firefox) refresh themselves on ++ * opening by removing all children and then re-adding new ones. As this ++ * happens whilst the menu is opening in Unity, it causes some flickering ++ * as the menu popup is resized multiple times. To avoid this, we try to ++ * reuse native menu items when the menu structure changes during a ++ * batched update. If we can handle menu structure changes from Gecko ++ * just by updating properties of native menu items (rather than destroying ++ * and creating new ones), then we eliminate any flickering that occurs as ++ * the menu is opened. To do this, we don't modify any native menu items ++ * until the end of the update batch. ++ */ ++ ++void ++nsMenu::OnBeginUpdates(nsIContent *aContent) ++{ ++ MOZ_ASSERT(aContent == ContentNode() || aContent == mPopupContent, ++ "Received an event that wasn't meant for us!"); ++ MOZ_ASSERT(!IsInBatchedUpdate(), "Already in an update batch!"); ++ ++ if (aContent != mPopupContent) { ++ return; ++ } ++ ++ mBatchedUpdateState = eBatchedUpdateState_Active; ++} ++ ++void ++nsMenu::OnEndUpdates() ++{ ++ if (!IsInBatchedUpdate()) { ++ return; ++ } ++ ++ bool didMutate = mBatchedUpdateState == eBatchedUpdateState_DidMutate; ++ mBatchedUpdateState = eBatchedUpdateState_Inactive; ++ ++ /* Optimize for the case where we only had attribute changes */ ++ if (!didMutate) { ++ return; ++ } ++ ++ EnsureNoPlaceholderItem(); ++ ++ GList *nextNativeChild = dbusmenu_menuitem_get_children(GetNativeData()); ++ DbusmenuMenuitem *nextOwnedNativeChild = nullptr; ++ ++ size_t count = ChildCount(); ++ ++ // Find the first native menu item that is `owned` by a corresponding ++ // Gecko menuitem ++ for (size_t i = 0; i < count; ++i) { ++ if (ChildAt(i)->GetNativeData()) { ++ nextOwnedNativeChild = ChildAt(i)->GetNativeData(); ++ break; ++ } ++ } ++ ++ // Now iterate over all Gecko menuitems ++ for (size_t i = 0; i < count; ++i) { ++ nsMenuObject *child = ChildAt(i); ++ ++ if (child->GetNativeData()) { ++ // This child already has a corresponding native menuitem. ++ // Remove all preceding orphaned native items. At this point, we ++ // modify the native menu structure. ++ while (nextNativeChild && ++ nextNativeChild->data != nextOwnedNativeChild) { ++ ++ DbusmenuMenuitem *data = ++ static_cast(nextNativeChild->data); ++ nextNativeChild = nextNativeChild->next; ++ ++ MOZ_ALWAYS_TRUE(dbusmenu_menuitem_child_delete(GetNativeData(), ++ data)); ++ } ++ ++ if (nextNativeChild) { ++ nextNativeChild = nextNativeChild->next; ++ } ++ ++ // Now find the next native menu item that is `owned` ++ nextOwnedNativeChild = nullptr; ++ for (size_t j = i + 1; j < count; ++j) { ++ if (ChildAt(j)->GetNativeData()) { ++ nextOwnedNativeChild = ChildAt(j)->GetNativeData(); ++ break; ++ } ++ } ++ } else { ++ // This child is new, and doesn't have a native menu item. Find one! ++ if (nextNativeChild && ++ nextNativeChild->data != nextOwnedNativeChild) { ++ ++ DbusmenuMenuitem *data = ++ static_cast(nextNativeChild->data); ++ ++ if (NS_SUCCEEDED(child->AdoptNativeData(data))) { ++ nextNativeChild = nextNativeChild->next; ++ } ++ } ++ ++ // There wasn't a suitable one available, so create a new one. ++ // At this point, we modify the native menu structure. ++ if (!child->GetNativeData()) { ++ child->CreateNativeData(); ++ MOZ_ALWAYS_TRUE( ++ dbusmenu_menuitem_child_add_position(GetNativeData(), ++ child->GetNativeData(), ++ i)); ++ } ++ } ++ } ++ ++ while (nextNativeChild) { ++ DbusmenuMenuitem *data = ++ static_cast(nextNativeChild->data); ++ nextNativeChild = nextNativeChild->next; ++ ++ MOZ_ALWAYS_TRUE(dbusmenu_menuitem_child_delete(GetNativeData(), data)); ++ } ++ ++ MaybeAddPlaceholderItem(); ++} ++ ++nsMenu::nsMenu(nsMenuContainer *aParent, nsIContent *aContent) : ++ nsMenuContainer(aParent, aContent), ++ mNeedsRebuild(false), ++ mNeedsUpdate(false), ++ mPlaceholderItem(nullptr), ++ mPopupState(ePopupState_Closed), ++ mBatchedUpdateState(eBatchedUpdateState_Inactive) ++{ ++ MOZ_COUNT_CTOR(nsMenu); ++} ++ ++nsMenu::~nsMenu() ++{ ++ if (IsInBatchedUpdate()) { ++ OnEndUpdates(); ++ } ++ ++ // Although nsTArray will take care of this in its destructor, ++ // we have to manually ensure children are removed from our native menu ++ // item, just in case our parent recycles us ++ while (ChildCount() > 0) { ++ RemoveChildAt(0); ++ } ++ ++ EnsureNoPlaceholderItem(); ++ ++ if (DocListener() && mPopupContent) { ++ DocListener()->UnregisterForContentChanges(mPopupContent); ++ } ++ ++ if (GetNativeData()) { ++ g_signal_handlers_disconnect_by_func(GetNativeData(), ++ FuncToGpointer(menu_event_cb), ++ this); ++ } ++ ++ MOZ_COUNT_DTOR(nsMenu); ++} ++ ++nsMenuObject::EType ++nsMenu::Type() const ++{ ++ return eType_Menu; ++} ++ ++bool ++nsMenu::IsBeingDisplayed() const ++{ ++ return mPopupState == ePopupState_Open; ++} ++ ++bool ++nsMenu::NeedsRebuild() const ++{ ++ return mNeedsRebuild; ++} ++ ++void ++nsMenu::OpenMenu() ++{ ++ if (!CanOpen()) { ++ return; ++ } ++ ++ if (mOpenDelayTimer) { ++ return; ++ } ++ ++ // Here, we synchronously fire popupshowing and popupshown events and then ++ // open the menu after a short delay. This allows the menu to refresh before ++ // it's shown, and avoids an issue where keyboard focus is not on the first ++ // item of the history menu in Firefox when opening it with the keyboard, ++ // because extra items to appear at the top of the menu ++ ++ OnOpen(); ++ ++ mOpenDelayTimer = do_CreateInstance(NS_TIMER_CONTRACTID); ++ if (!mOpenDelayTimer) { ++ return; ++ } ++ ++ if (NS_FAILED(mOpenDelayTimer->InitWithNamedFuncCallback(DoOpenCallback, ++ this, ++ 100, ++ nsITimer::TYPE_ONE_SHOT, ++ "nsMenu::DoOpenCallback"))) { ++ mOpenDelayTimer = nullptr; ++ } ++} ++ ++void ++nsMenu::OnClose() ++{ ++ if (mPopupState == ePopupState_Closed) { ++ return; ++ } ++ ++ MOZ_ASSERT(nsContentUtils::IsSafeToRunScript()); ++ ++ // We do this to avoid mutating our view of the menu until ++ // after we have finished ++ nsNativeMenuDocListener::BlockUpdatesScope updatesBlocker; ++ ++ SetPopupState(ePopupState_Hiding); ++ DispatchMouseEvent(mPopupContent, eXULPopupHiding); ++ ++ // Sigh, make sure all of our descendants are closed, as we don't ++ // always get closed events for submenus when scrubbing quickly through ++ // the menu ++ size_t count = ChildCount(); ++ for (size_t i = 0; i < count; ++i) { ++ if (ChildAt(i)->Type() == nsMenuObject::eType_Menu) { ++ static_cast(ChildAt(i))->OnClose(); ++ } ++ } ++ ++ SetPopupState(ePopupState_Closed); ++ DispatchMouseEvent(mPopupContent, eXULPopupHidden); ++ ++ ContentNode()->AsElement()->UnsetAttr(kNameSpaceID_None, nsGkAtoms::open, ++ true); ++} ++ +--- /dev/null ++++ b/widget/gtk/nsMenu.h +@@ -0,0 +1,123 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsMenu_h__ ++#define __nsMenu_h__ ++ ++#include "mozilla/Attributes.h" ++#include "mozilla/UniquePtr.h" ++#include "nsCOMPtr.h" ++ ++#include "nsDbusmenu.h" ++#include "nsMenuContainer.h" ++#include "nsMenuObject.h" ++ ++#include ++ ++class nsAtom; ++class nsIContent; ++class nsITimer; ++ ++#define NSMENU_NUMBER_OF_POPUPSTATE_BITS 2U ++#define NSMENU_NUMBER_OF_FLAGS 4U ++ ++// This class represents a menu ++class nsMenu final : public nsMenuContainer ++{ ++public: ++ nsMenu(nsMenuContainer *aParent, nsIContent *aContent); ++ ~nsMenu(); ++ ++ nsMenuObject::EType Type() const override; ++ ++ bool IsBeingDisplayed() const override; ++ bool NeedsRebuild() const override; ++ ++ // Tell the desktop shell to display this menu ++ void OpenMenu(); ++ ++ // Normally called via the shell, but it's public so that child ++ // menuitems can do the shells work. Sigh.... ++ void OnClose(); ++ ++private: ++ friend class nsMenuContentInsertedEvent; ++ friend class nsMenuContentRemovedEvent; ++ ++ enum EPopupState { ++ ePopupState_Closed, ++ ePopupState_Showing, ++ ePopupState_Open, ++ ePopupState_Hiding ++ }; ++ ++ void SetPopupState(EPopupState aState); ++ ++ static void DoOpenCallback(nsITimer *aTimer, void *aClosure); ++ static void menu_event_cb(DbusmenuMenuitem *menu, ++ const gchar *name, ++ GVariant *value, ++ guint timestamp, ++ gpointer user_data); ++ ++ // We add a placeholder item to empty menus so that Unity actually treats ++ // us as a proper menu, rather than a menuitem without a submenu ++ void MaybeAddPlaceholderItem(); ++ ++ // Removes a placeholder item if it exists and asserts that this succeeds ++ void EnsureNoPlaceholderItem(); ++ ++ void OnOpen(); ++ void Build(); ++ void InitializePopup(); ++ void RemoveChildAt(size_t aIndex); ++ void RemoveChild(nsIContent *aChild); ++ void InsertChildAfter(mozilla::UniquePtr aChild, ++ nsIContent *aPrevSibling); ++ void AppendChild(mozilla::UniquePtr aChild); ++ bool IsInBatchedUpdate() const; ++ void StructureMutated(); ++ bool CanOpen() const; ++ ++ void HandleContentInserted(nsIContent *aContainer, ++ nsIContent *aChild, ++ nsIContent *aPrevSibling); ++ void HandleContentRemoved(nsIContent *aContainer, ++ nsIContent *aChild); ++ ++ void InitializeNativeData() override; ++ void Update(mozilla::ComputedStyle *aComputedStyle) override; ++ nsMenuObject::PropertyFlags SupportedProperties() const override; ++ ++ void OnAttributeChanged(nsIContent *aContent, nsAtom *aAttribute) override; ++ void OnContentInserted(nsIContent *aContainer, nsIContent *aChild, ++ nsIContent *aPrevSibling) override; ++ void OnContentRemoved(nsIContent *aContainer, nsIContent *aChild) override; ++ void OnBeginUpdates(nsIContent *aContent) override; ++ void OnEndUpdates() override; ++ ++ bool mNeedsRebuild; ++ bool mNeedsUpdate; ++ ++ DbusmenuMenuitem *mPlaceholderItem; ++ ++ EPopupState mPopupState; ++ ++ enum EBatchedUpdateState { ++ eBatchedUpdateState_Inactive, ++ eBatchedUpdateState_Active, ++ eBatchedUpdateState_DidMutate ++ }; ++ ++ EBatchedUpdateState mBatchedUpdateState; ++ ++ nsCOMPtr mPopupContent; ++ ++ nsCOMPtr mOpenDelayTimer; ++}; ++ ++#endif /* __nsMenu_h__ */ +--- /dev/null ++++ b/widget/gtk/nsMenuBar.cpp +@@ -0,0 +1,548 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "mozilla/Assertions.h" ++#include "mozilla/DebugOnly.h" ++#include "mozilla/dom/Document.h" ++#include "mozilla/dom/Element.h" ++#include "mozilla/dom/Event.h" ++#include "mozilla/dom/KeyboardEvent.h" ++#include "mozilla/dom/KeyboardEventBinding.h" ++#include "mozilla/Preferences.h" ++#include "nsContentUtils.h" ++#include "nsIDOMEventListener.h" ++#include "nsIRunnable.h" ++#include "nsIWidget.h" ++#include "nsTArray.h" ++#include "nsUnicharUtils.h" ++ ++#include "nsMenu.h" ++#include "nsNativeMenuService.h" ++ ++#include ++#include ++#include ++#include ++ ++#include "nsMenuBar.h" ++ ++using namespace mozilla; ++ ++static bool ++ShouldHandleKeyEvent(dom::KeyboardEvent *aEvent) ++{ ++ return !aEvent->DefaultPrevented() && aEvent->IsTrusted(); ++} ++ ++class nsMenuBarContentInsertedEvent : public Runnable ++{ ++public: ++ nsMenuBarContentInsertedEvent(nsMenuBar *aMenuBar, ++ nsIContent *aChild, ++ nsIContent *aPrevSibling) : ++ Runnable("nsMenuBarContentInsertedEvent"), ++ mWeakMenuBar(aMenuBar), ++ mChild(aChild), ++ mPrevSibling(aPrevSibling) { } ++ ++ NS_IMETHODIMP Run() ++ { ++ if (!mWeakMenuBar) { ++ return NS_OK; ++ } ++ ++ static_cast(mWeakMenuBar.get())->HandleContentInserted(mChild, ++ mPrevSibling); ++ return NS_OK; ++ } ++ ++private: ++ nsWeakMenuObject mWeakMenuBar; ++ ++ nsCOMPtr mChild; ++ nsCOMPtr mPrevSibling; ++}; ++ ++class nsMenuBarContentRemovedEvent : public Runnable ++{ ++public: ++ nsMenuBarContentRemovedEvent(nsMenuBar *aMenuBar, ++ nsIContent *aChild) : ++ Runnable("nsMenuBarContentRemovedEvent"), ++ mWeakMenuBar(aMenuBar), ++ mChild(aChild) { } ++ ++ NS_IMETHODIMP Run() ++ { ++ if (!mWeakMenuBar) { ++ return NS_OK; ++ } ++ ++ static_cast(mWeakMenuBar.get())->HandleContentRemoved(mChild); ++ return NS_OK; ++ } ++ ++private: ++ nsWeakMenuObject mWeakMenuBar; ++ ++ nsCOMPtr mChild; ++}; ++ ++class nsMenuBar::DocEventListener final : public nsIDOMEventListener ++{ ++public: ++ NS_DECL_ISUPPORTS ++ NS_DECL_NSIDOMEVENTLISTENER ++ ++ DocEventListener(nsMenuBar *aOwner) : mOwner(aOwner) { }; ++ ++private: ++ ~DocEventListener() { }; ++ ++ nsMenuBar *mOwner; ++}; ++ ++NS_IMPL_ISUPPORTS(nsMenuBar::DocEventListener, nsIDOMEventListener) ++ ++NS_IMETHODIMP ++nsMenuBar::DocEventListener::HandleEvent(dom::Event *aEvent) ++{ ++ nsAutoString type; ++ aEvent->GetType(type); ++ ++ if (type.Equals(NS_LITERAL_STRING("focus"))) { ++ mOwner->Focus(); ++ } else if (type.Equals(NS_LITERAL_STRING("blur"))) { ++ mOwner->Blur(); ++ } ++ ++ RefPtr keyEvent = aEvent->AsKeyboardEvent(); ++ if (!keyEvent) { ++ return NS_OK; ++ } ++ ++ if (type.Equals(NS_LITERAL_STRING("keypress"))) { ++ return mOwner->Keypress(keyEvent); ++ } else if (type.Equals(NS_LITERAL_STRING("keydown"))) { ++ return mOwner->KeyDown(keyEvent); ++ } else if (type.Equals(NS_LITERAL_STRING("keyup"))) { ++ return mOwner->KeyUp(keyEvent); ++ } ++ ++ return NS_OK; ++} ++ ++nsMenuBar::nsMenuBar(nsIContent *aMenuBarNode) : ++ nsMenuContainer(new nsNativeMenuDocListener(aMenuBarNode), aMenuBarNode), ++ mTopLevel(nullptr), ++ mServer(nullptr), ++ mIsActive(false) ++{ ++ MOZ_COUNT_CTOR(nsMenuBar); ++} ++ ++nsresult ++nsMenuBar::Init(nsIWidget *aParent) ++{ ++ MOZ_ASSERT(aParent); ++ ++ GdkWindow *gdkWin = static_cast( ++ aParent->GetNativeData(NS_NATIVE_WINDOW)); ++ if (!gdkWin) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ gpointer user_data = nullptr; ++ gdk_window_get_user_data(gdkWin, &user_data); ++ if (!user_data || !GTK_IS_CONTAINER(user_data)) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ mTopLevel = gtk_widget_get_toplevel(GTK_WIDGET(user_data)); ++ if (!mTopLevel) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ g_object_ref(mTopLevel); ++ ++ nsAutoCString path; ++ path.Append(NS_LITERAL_CSTRING("/com/canonical/menu/")); ++ char xid[10]; ++ sprintf(xid, "%X", static_cast( ++ GDK_WINDOW_XID(gtk_widget_get_window(mTopLevel)))); ++ path.Append(xid); ++ ++ mServer = dbusmenu_server_new(path.get()); ++ if (!mServer) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ CreateNativeData(); ++ if (!GetNativeData()) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ dbusmenu_server_set_root(mServer, GetNativeData()); ++ ++ mEventListener = new DocEventListener(this); ++ ++ mDocument = do_QueryInterface(ContentNode()->OwnerDoc()); ++ ++ mAccessKey = Preferences::GetInt("ui.key.menuAccessKey"); ++ if (mAccessKey == dom::KeyboardEvent_Binding::DOM_VK_SHIFT) { ++ mAccessKeyMask = eModifierShift; ++ } else if (mAccessKey == dom::KeyboardEvent_Binding::DOM_VK_CONTROL) { ++ mAccessKeyMask = eModifierCtrl; ++ } else if (mAccessKey == dom::KeyboardEvent_Binding::DOM_VK_ALT) { ++ mAccessKeyMask = eModifierAlt; ++ } else if (mAccessKey == dom::KeyboardEvent_Binding::DOM_VK_META) { ++ mAccessKeyMask = eModifierMeta; ++ } else { ++ mAccessKeyMask = eModifierAlt; ++ } ++ ++ return NS_OK; ++} ++ ++void ++nsMenuBar::Build() ++{ ++ uint32_t count = ContentNode()->GetChildCount(); ++ for (uint32_t i = 0; i < count; ++i) { ++ nsIContent *childContent = ContentNode()->GetChildAt_Deprecated(i); ++ ++ UniquePtr child = CreateChild(childContent); ++ ++ if (!child) { ++ continue; ++ } ++ ++ AppendChild(std::move(child)); ++ } ++} ++ ++void ++nsMenuBar::DisconnectDocumentEventListeners() ++{ ++ mDocument->RemoveEventListener(NS_LITERAL_STRING("focus"), ++ mEventListener, ++ true); ++ mDocument->RemoveEventListener(NS_LITERAL_STRING("blur"), ++ mEventListener, ++ true); ++ mDocument->RemoveEventListener(NS_LITERAL_STRING("keypress"), ++ mEventListener, ++ false); ++ mDocument->RemoveEventListener(NS_LITERAL_STRING("keydown"), ++ mEventListener, ++ false); ++ mDocument->RemoveEventListener(NS_LITERAL_STRING("keyup"), ++ mEventListener, ++ false); ++} ++ ++void ++nsMenuBar::SetShellShowingMenuBar(bool aShowing) ++{ ++ ContentNode()->OwnerDoc()->GetRootElement()->SetAttr( ++ kNameSpaceID_None, nsGkAtoms::shellshowingmenubar, ++ aShowing ? NS_LITERAL_STRING("true") : NS_LITERAL_STRING("false"), ++ true); ++} ++ ++void ++nsMenuBar::Focus() ++{ ++ ContentNode()->AsElement()->SetAttr(kNameSpaceID_None, ++ nsGkAtoms::openedwithkey, ++ NS_LITERAL_STRING("false"), true); ++} ++ ++void ++nsMenuBar::Blur() ++{ ++ // We do this here in case we lose focus before getting the ++ // keyup event, which leaves the menubar state looking like ++ // the alt key is stuck down ++ dbusmenu_server_set_status(mServer, DBUSMENU_STATUS_NORMAL); ++} ++ ++nsMenuBar::ModifierFlags ++nsMenuBar::GetModifiersFromEvent(dom::KeyboardEvent *aEvent) ++{ ++ ModifierFlags modifiers = static_cast(0); ++ ++ if (aEvent->AltKey()) { ++ modifiers = static_cast(modifiers | eModifierAlt); ++ } ++ ++ if (aEvent->ShiftKey()) { ++ modifiers = static_cast(modifiers | eModifierShift); ++ } ++ ++ if (aEvent->CtrlKey()) { ++ modifiers = static_cast(modifiers | eModifierCtrl); ++ } ++ ++ if (aEvent->MetaKey()) { ++ modifiers = static_cast(modifiers | eModifierMeta); ++ } ++ ++ return modifiers; ++} ++ ++nsresult ++nsMenuBar::Keypress(dom::KeyboardEvent *aEvent) ++{ ++ if (!ShouldHandleKeyEvent(aEvent)) { ++ return NS_OK; ++ } ++ ++ ModifierFlags modifiers = GetModifiersFromEvent(aEvent); ++ if (((modifiers & mAccessKeyMask) == 0) || ++ ((modifiers & ~mAccessKeyMask) != 0)) { ++ return NS_OK; ++ } ++ ++ uint32_t charCode = aEvent->CharCode(); ++ if (charCode == 0) { ++ return NS_OK; ++ } ++ ++ char16_t ch = char16_t(charCode); ++ char16_t chl = ToLowerCase(ch); ++ char16_t chu = ToUpperCase(ch); ++ ++ nsMenuObject *found = nullptr; ++ uint32_t count = ChildCount(); ++ for (uint32_t i = 0; i < count; ++i) { ++ nsAutoString accesskey; ++ ChildAt(i)->ContentNode()->AsElement()->GetAttr(kNameSpaceID_None, ++ nsGkAtoms::accesskey, ++ accesskey); ++ const nsAutoString::char_type *key = accesskey.BeginReading(); ++ if (*key == chu || *key == chl) { ++ found = ChildAt(i); ++ break; ++ } ++ } ++ ++ if (!found || found->Type() != nsMenuObject::eType_Menu) { ++ return NS_OK; ++ } ++ ++ ContentNode()->AsElement()->SetAttr(kNameSpaceID_None, ++ nsGkAtoms::openedwithkey, ++ NS_LITERAL_STRING("true"), true); ++ static_cast(found)->OpenMenu(); ++ ++ aEvent->StopPropagation(); ++ aEvent->PreventDefault(); ++ ++ return NS_OK; ++} ++ ++nsresult ++nsMenuBar::KeyDown(dom::KeyboardEvent *aEvent) ++{ ++ if (!ShouldHandleKeyEvent(aEvent)) { ++ return NS_OK; ++ } ++ ++ uint32_t keyCode = aEvent->KeyCode(); ++ ModifierFlags modifiers = GetModifiersFromEvent(aEvent); ++ if ((keyCode != mAccessKey) || ((modifiers & ~mAccessKeyMask) != 0)) { ++ return NS_OK; ++ } ++ ++ dbusmenu_server_set_status(mServer, DBUSMENU_STATUS_NOTICE); ++ ++ return NS_OK; ++} ++ ++nsresult ++nsMenuBar::KeyUp(dom::KeyboardEvent *aEvent) ++{ ++ if (!ShouldHandleKeyEvent(aEvent)) { ++ return NS_OK; ++ } ++ ++ uint32_t keyCode = aEvent->KeyCode(); ++ if (keyCode == mAccessKey) { ++ dbusmenu_server_set_status(mServer, DBUSMENU_STATUS_NORMAL); ++ } ++ ++ return NS_OK; ++} ++ ++void ++nsMenuBar::HandleContentInserted(nsIContent *aChild, nsIContent *aPrevSibling) ++{ ++ UniquePtr child = CreateChild(aChild); ++ ++ if (!child) { ++ return; ++ } ++ ++ InsertChildAfter(std::move(child), aPrevSibling); ++} ++ ++void ++nsMenuBar::HandleContentRemoved(nsIContent *aChild) ++{ ++ RemoveChild(aChild); ++} ++ ++void ++nsMenuBar::OnContentInserted(nsIContent *aContainer, nsIContent *aChild, ++ nsIContent *aPrevSibling) ++{ ++ MOZ_ASSERT(aContainer == ContentNode(), ++ "Received an event that wasn't meant for us"); ++ ++ nsContentUtils::AddScriptRunner( ++ new nsMenuBarContentInsertedEvent(this, aChild, aPrevSibling)); ++} ++ ++void ++nsMenuBar::OnContentRemoved(nsIContent *aContainer, nsIContent *aChild) ++{ ++ MOZ_ASSERT(aContainer == ContentNode(), ++ "Received an event that wasn't meant for us"); ++ ++ nsContentUtils::AddScriptRunner( ++ new nsMenuBarContentRemovedEvent(this, aChild)); ++} ++ ++nsMenuBar::~nsMenuBar() ++{ ++ nsNativeMenuService *service = nsNativeMenuService::GetSingleton(); ++ if (service) { ++ service->NotifyNativeMenuBarDestroyed(this); ++ } ++ ++ if (ContentNode()) { ++ SetShellShowingMenuBar(false); ++ } ++ ++ // We want to destroy all children before dropping our reference ++ // to the doc listener ++ while (ChildCount() > 0) { ++ RemoveChildAt(0); ++ } ++ ++ if (mTopLevel) { ++ g_object_unref(mTopLevel); ++ } ++ ++ if (DocListener()) { ++ DocListener()->Stop(); ++ } ++ ++ if (mDocument) { ++ DisconnectDocumentEventListeners(); ++ } ++ ++ if (mServer) { ++ g_object_unref(mServer); ++ } ++ ++ MOZ_COUNT_DTOR(nsMenuBar); ++} ++ ++/* static */ UniquePtr ++nsMenuBar::Create(nsIWidget *aParent, nsIContent *aMenuBarNode) ++{ ++ UniquePtr menubar(new nsMenuBar(aMenuBarNode)); ++ if (NS_FAILED(menubar->Init(aParent))) { ++ return nullptr; ++ } ++ ++ return menubar; ++} ++ ++nsMenuObject::EType ++nsMenuBar::Type() const ++{ ++ return eType_MenuBar; ++} ++ ++bool ++nsMenuBar::IsBeingDisplayed() const ++{ ++ return true; ++} ++ ++uint32_t ++nsMenuBar::WindowId() const ++{ ++ return static_cast(GDK_WINDOW_XID(gtk_widget_get_window(mTopLevel))); ++} ++ ++nsCString ++nsMenuBar::ObjectPath() const ++{ ++ gchar *tmp; ++ g_object_get(mServer, DBUSMENU_SERVER_PROP_DBUS_OBJECT, &tmp, NULL); ++ ++ nsCString result; ++ result.Adopt(tmp); ++ ++ return result; ++} ++ ++void ++nsMenuBar::Activate() ++{ ++ if (mIsActive) { ++ return; ++ } ++ ++ mIsActive = true; ++ ++ mDocument->AddEventListener(NS_LITERAL_STRING("focus"), ++ mEventListener, ++ true); ++ mDocument->AddEventListener(NS_LITERAL_STRING("blur"), ++ mEventListener, ++ true); ++ mDocument->AddEventListener(NS_LITERAL_STRING("keypress"), ++ mEventListener, ++ false); ++ mDocument->AddEventListener(NS_LITERAL_STRING("keydown"), ++ mEventListener, ++ false); ++ mDocument->AddEventListener(NS_LITERAL_STRING("keyup"), ++ mEventListener, ++ false); ++ ++ // Clear this. Not sure if we really need to though ++ ContentNode()->AsElement()->SetAttr(kNameSpaceID_None, ++ nsGkAtoms::openedwithkey, ++ NS_LITERAL_STRING("false"), true); ++ ++ DocListener()->Start(); ++ Build(); ++ SetShellShowingMenuBar(true); ++} ++ ++void ++nsMenuBar::Deactivate() ++{ ++ if (!mIsActive) { ++ return; ++ } ++ ++ mIsActive = false; ++ ++ SetShellShowingMenuBar(false); ++ while (ChildCount() > 0) { ++ RemoveChildAt(0); ++ } ++ DocListener()->Stop(); ++ DisconnectDocumentEventListeners(); ++} +--- /dev/null ++++ b/widget/gtk/nsMenuBar.h +@@ -0,0 +1,111 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsMenuBar_h__ ++#define __nsMenuBar_h__ ++ ++#include "mozilla/Attributes.h" ++#include "mozilla/UniquePtr.h" ++#include "nsCOMPtr.h" ++#include "nsString.h" ++ ++#include "nsDbusmenu.h" ++#include "nsMenuContainer.h" ++#include "nsMenuObject.h" ++ ++#include ++ ++class nsIContent; ++class nsIWidget; ++class nsMenuBarDocEventListener; ++ ++namespace mozilla { ++namespace dom { ++class Document; ++class KeyboardEvent; ++} ++} ++ ++/* ++ * The menubar class. There is one of these per window (and the window ++ * owns its menubar). Each menubar has an object path, and the service is ++ * responsible for telling the desktop shell which object path corresponds ++ * to a particular window. A menubar and its hierarchy also own a ++ * nsNativeMenuDocListener. ++ */ ++class nsMenuBar final : public nsMenuContainer ++{ ++public: ++ ~nsMenuBar() override; ++ ++ static mozilla::UniquePtr Create(nsIWidget *aParent, ++ nsIContent *aMenuBarNode); ++ ++ nsMenuObject::EType Type() const override; ++ ++ bool IsBeingDisplayed() const override; ++ ++ // Get the native window ID for this menubar ++ uint32_t WindowId() const; ++ ++ // Get the object path for this menubar ++ nsCString ObjectPath() const; ++ ++ // Get the top-level GtkWindow handle ++ GtkWidget* TopLevelWindow() { return mTopLevel; } ++ ++ // Called from the menuservice when the menubar is about to be registered. ++ // Causes the native menubar to be created, and the XUL menubar to be hidden ++ void Activate(); ++ ++ // Called from the menuservice when the menubar is no longer registered ++ // with the desktop shell. Will cause the XUL menubar to be shown again ++ void Deactivate(); ++ ++private: ++ class DocEventListener; ++ friend class nsMenuBarContentInsertedEvent; ++ friend class nsMenuBarContentRemovedEvent; ++ ++ enum ModifierFlags { ++ eModifierShift = (1 << 0), ++ eModifierCtrl = (1 << 1), ++ eModifierAlt = (1 << 2), ++ eModifierMeta = (1 << 3) ++ }; ++ ++ nsMenuBar(nsIContent *aMenuBarNode); ++ nsresult Init(nsIWidget *aParent); ++ void Build(); ++ void DisconnectDocumentEventListeners(); ++ void SetShellShowingMenuBar(bool aShowing); ++ void Focus(); ++ void Blur(); ++ ModifierFlags GetModifiersFromEvent(mozilla::dom::KeyboardEvent *aEvent); ++ nsresult Keypress(mozilla::dom::KeyboardEvent *aEvent); ++ nsresult KeyDown(mozilla::dom::KeyboardEvent *aEvent); ++ nsresult KeyUp(mozilla::dom::KeyboardEvent *aEvent); ++ ++ void HandleContentInserted(nsIContent *aChild, ++ nsIContent *aPrevSibling); ++ void HandleContentRemoved(nsIContent *aChild); ++ ++ void OnContentInserted(nsIContent *aContainer, nsIContent *aChild, ++ nsIContent *aPrevSibling) override; ++ void OnContentRemoved(nsIContent *aContainer, nsIContent *aChild) override; ++ ++ GtkWidget *mTopLevel; ++ DbusmenuServer *mServer; ++ nsCOMPtr mDocument; ++ RefPtr mEventListener; ++ ++ uint32_t mAccessKey; ++ ModifierFlags mAccessKeyMask; ++ bool mIsActive; ++}; ++ ++#endif /* __nsMenuBar_h__ */ +--- /dev/null ++++ b/widget/gtk/nsMenuContainer.cpp +@@ -0,0 +1,170 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "mozilla/DebugOnly.h" ++#include "nsGkAtoms.h" ++#include "nsIContent.h" ++ ++#include "nsDbusmenu.h" ++#include "nsMenu.h" ++#include "nsMenuItem.h" ++#include "nsMenuSeparator.h" ++ ++#include "nsMenuContainer.h" ++ ++using namespace mozilla; ++ ++const nsMenuContainer::ChildTArray::index_type nsMenuContainer::NoIndex = nsMenuContainer::ChildTArray::NoIndex; ++ ++typedef UniquePtr (*nsMenuObjectConstructor)(nsMenuContainer*, ++ nsIContent*); ++ ++template ++static UniquePtr CreateMenuObject(nsMenuContainer *aContainer, ++ nsIContent *aContent) ++{ ++ return UniquePtr(new T(aContainer, aContent)); ++} ++ ++static nsMenuObjectConstructor ++GetMenuObjectConstructor(nsIContent *aContent) ++{ ++ if (aContent->IsXULElement(nsGkAtoms::menuitem)) { ++ return CreateMenuObject; ++ } else if (aContent->IsXULElement(nsGkAtoms::menu)) { ++ return CreateMenuObject; ++ } else if (aContent->IsXULElement(nsGkAtoms::menuseparator)) { ++ return CreateMenuObject; ++ } ++ ++ return nullptr; ++} ++ ++static bool ++ContentIsSupported(nsIContent *aContent) ++{ ++ return GetMenuObjectConstructor(aContent) ? true : false; ++} ++ ++nsMenuContainer::nsMenuContainer(nsMenuContainer *aParent, ++ nsIContent *aContent) : ++ nsMenuObject(aParent, aContent) ++{ ++} ++ ++nsMenuContainer::nsMenuContainer(nsNativeMenuDocListener *aListener, ++ nsIContent *aContent) : ++ nsMenuObject(aListener, aContent) ++{ ++} ++ ++UniquePtr ++nsMenuContainer::CreateChild(nsIContent *aContent) ++{ ++ nsMenuObjectConstructor ctor = GetMenuObjectConstructor(aContent); ++ if (!ctor) { ++ // There are plenty of node types we might stumble across that ++ // aren't supported ++ return nullptr; ++ } ++ ++ UniquePtr res = ctor(this, aContent); ++ return res; ++} ++ ++size_t ++nsMenuContainer::IndexOf(nsIContent *aChild) const ++{ ++ if (!aChild) { ++ return NoIndex; ++ } ++ ++ size_t count = ChildCount(); ++ for (size_t i = 0; i < count; ++i) { ++ if (ChildAt(i)->ContentNode() == aChild) { ++ return i; ++ } ++ } ++ ++ return NoIndex; ++} ++ ++void ++nsMenuContainer::RemoveChildAt(size_t aIndex, bool aUpdateNative) ++{ ++ MOZ_ASSERT(aIndex < ChildCount()); ++ ++ if (aUpdateNative) { ++ MOZ_ALWAYS_TRUE( ++ dbusmenu_menuitem_child_delete(GetNativeData(), ++ ChildAt(aIndex)->GetNativeData())); ++ } ++ ++ mChildren.RemoveElementAt(aIndex); ++} ++ ++void ++nsMenuContainer::RemoveChild(nsIContent *aChild, bool aUpdateNative) ++{ ++ size_t index = IndexOf(aChild); ++ if (index == NoIndex) { ++ return; ++ } ++ ++ RemoveChildAt(index, aUpdateNative); ++} ++ ++void ++nsMenuContainer::InsertChildAfter(UniquePtr aChild, ++ nsIContent *aPrevSibling, ++ bool aUpdateNative) ++{ ++ size_t index = IndexOf(aPrevSibling); ++ MOZ_ASSERT(!aPrevSibling || index != NoIndex); ++ ++ ++index; ++ ++ if (aUpdateNative) { ++ aChild->CreateNativeData(); ++ MOZ_ALWAYS_TRUE( ++ dbusmenu_menuitem_child_add_position(GetNativeData(), ++ aChild->GetNativeData(), ++ index)); ++ } ++ ++ mChildren.InsertElementAt(index, std::move(aChild)); ++} ++ ++void ++nsMenuContainer::AppendChild(UniquePtr aChild, ++ bool aUpdateNative) ++{ ++ if (aUpdateNative) { ++ aChild->CreateNativeData(); ++ MOZ_ALWAYS_TRUE( ++ dbusmenu_menuitem_child_append(GetNativeData(), ++ aChild->GetNativeData())); ++ } ++ ++ mChildren.AppendElement(std::move(aChild)); ++} ++ ++bool ++nsMenuContainer::NeedsRebuild() const ++{ ++ return false; ++} ++ ++/* static */ nsIContent* ++nsMenuContainer::GetPreviousSupportedSibling(nsIContent *aContent) ++{ ++ do { ++ aContent = aContent->GetPreviousSibling(); ++ } while (aContent && !ContentIsSupported(aContent)); ++ ++ return aContent; ++} +--- /dev/null ++++ b/widget/gtk/nsMenuContainer.h +@@ -0,0 +1,70 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsMenuContainer_h__ ++#define __nsMenuContainer_h__ ++ ++#include "mozilla/UniquePtr.h" ++#include "nsTArray.h" ++ ++#include "nsMenuObject.h" ++ ++class nsIContent; ++class nsNativeMenuDocListener; ++ ++// Base class for containers (menus and menubars) ++class nsMenuContainer : public nsMenuObject ++{ ++public: ++ typedef nsTArray > ChildTArray; ++ ++ // Determine if this container is being displayed on screen. Must be ++ // implemented by subclasses. Must return true if the container is ++ // in the fully open state, or false otherwise ++ virtual bool IsBeingDisplayed() const = 0; ++ ++ // Determine if this container will be rebuilt the next time it opens. ++ // Returns false by default but can be overridden by subclasses ++ virtual bool NeedsRebuild() const; ++ ++ // Return the first previous sibling that is of a type supported by the ++ // menu system ++ static nsIContent* GetPreviousSupportedSibling(nsIContent *aContent); ++ ++ static const ChildTArray::index_type NoIndex; ++ ++protected: ++ nsMenuContainer(nsMenuContainer *aParent, nsIContent *aContent); ++ nsMenuContainer(nsNativeMenuDocListener *aListener, nsIContent *aContent); ++ ++ // Create a new child element for the specified content node ++ mozilla::UniquePtr CreateChild(nsIContent *aContent); ++ ++ // Return the index of the child for the specified content node ++ size_t IndexOf(nsIContent *aChild) const; ++ ++ size_t ChildCount() const { return mChildren.Length(); } ++ nsMenuObject* ChildAt(size_t aIndex) const { return mChildren[aIndex].get(); } ++ ++ void RemoveChildAt(size_t aIndex, bool aUpdateNative = true); ++ ++ // Remove the child that owns the specified content node ++ void RemoveChild(nsIContent *aChild, bool aUpdateNative = true); ++ ++ // Insert a new child after the child that owns the specified content node ++ void InsertChildAfter(mozilla::UniquePtr aChild, ++ nsIContent *aPrevSibling, ++ bool aUpdateNative = true); ++ ++ void AppendChild(mozilla::UniquePtr aChild, ++ bool aUpdateNative = true); ++ ++private: ++ ChildTArray mChildren; ++}; ++ ++#endif /* __nsMenuContainer_h__ */ +--- /dev/null ++++ b/widget/gtk/nsMenuItem.cpp +@@ -0,0 +1,766 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "mozilla/ArrayUtils.h" ++#include "mozilla/Assertions.h" ++#include "mozilla/dom/Document.h" ++#include "mozilla/dom/Element.h" ++#include "mozilla/dom/KeyboardEventBinding.h" ++#include "mozilla/dom/XULCommandEvent.h" ++#include "mozilla/Preferences.h" ++#include "mozilla/TextEvents.h" ++#include "nsContentUtils.h" ++#include "nsCRT.h" ++#include "nsGkAtoms.h" ++#include "nsGlobalWindowInner.h" ++#include "nsGtkUtils.h" ++#include "nsIContent.h" ++#include "nsIRunnable.h" ++#include "nsQueryObject.h" ++#include "nsReadableUtils.h" ++#include "nsString.h" ++#include "nsThreadUtils.h" ++ ++#include "nsMenu.h" ++#include "nsMenuBar.h" ++#include "nsMenuContainer.h" ++#include "nsNativeMenuDocListener.h" ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "nsMenuItem.h" ++ ++using namespace mozilla; ++ ++struct KeyCodeData { ++ const char* str; ++ size_t strlength; ++ uint32_t keycode; ++}; ++ ++static struct KeyCodeData gKeyCodes[] = { ++#define NS_DEFINE_VK(aDOMKeyName, aDOMKeyCode) \ ++ { #aDOMKeyName, sizeof(#aDOMKeyName) - 1, aDOMKeyCode }, ++#include "mozilla/VirtualKeyCodeList.h" ++#undef NS_DEFINE_VK ++ { nullptr, 0, 0 } ++}; ++ ++struct KeyPair { ++ uint32_t DOMKeyCode; ++ guint GDKKeyval; ++}; ++ ++// ++// Netscape keycodes are defined in widget/public/nsGUIEvent.h ++// GTK keycodes are defined in ++// ++static const KeyPair gKeyPairs[] = { ++ { NS_VK_CANCEL, GDK_Cancel }, ++ { NS_VK_BACK, GDK_BackSpace }, ++ { NS_VK_TAB, GDK_Tab }, ++ { NS_VK_TAB, GDK_ISO_Left_Tab }, ++ { NS_VK_CLEAR, GDK_Clear }, ++ { NS_VK_RETURN, GDK_Return }, ++ { NS_VK_SHIFT, GDK_Shift_L }, ++ { NS_VK_SHIFT, GDK_Shift_R }, ++ { NS_VK_SHIFT, GDK_Shift_Lock }, ++ { NS_VK_CONTROL, GDK_Control_L }, ++ { NS_VK_CONTROL, GDK_Control_R }, ++ { NS_VK_ALT, GDK_Alt_L }, ++ { NS_VK_ALT, GDK_Alt_R }, ++ { NS_VK_META, GDK_Meta_L }, ++ { NS_VK_META, GDK_Meta_R }, ++ ++ // Assume that Super or Hyper is always mapped to physical Win key. ++ { NS_VK_WIN, GDK_Super_L }, ++ { NS_VK_WIN, GDK_Super_R }, ++ { NS_VK_WIN, GDK_Hyper_L }, ++ { NS_VK_WIN, GDK_Hyper_R }, ++ ++ // GTK's AltGraph key is similar to Mac's Option (Alt) key. However, ++ // unfortunately, browsers on Mac are using NS_VK_ALT for it even though ++ // it's really different from Alt key on Windows. ++ // On the other hand, GTK's AltGrapsh keys are really different from ++ // Alt key. However, there is no AltGrapsh key on Windows. On Windows, ++ // both Ctrl and Alt keys are pressed internally when AltGr key is pressed. ++ // For some languages' users, AltGraph key is important, so, web ++ // applications on such locale may want to know AltGraph key press. ++ // Therefore, we should map AltGr keycode for them only on GTK. ++ { NS_VK_ALTGR, GDK_ISO_Level3_Shift }, ++ { NS_VK_ALTGR, GDK_ISO_Level5_Shift }, ++ // We assume that Mode_switch is always used for level3 shift. ++ { NS_VK_ALTGR, GDK_Mode_switch }, ++ ++ { NS_VK_PAUSE, GDK_Pause }, ++ { NS_VK_CAPS_LOCK, GDK_Caps_Lock }, ++ { NS_VK_KANA, GDK_Kana_Lock }, ++ { NS_VK_KANA, GDK_Kana_Shift }, ++ { NS_VK_HANGUL, GDK_Hangul }, ++ // { NS_VK_JUNJA, GDK_XXX }, ++ // { NS_VK_FINAL, GDK_XXX }, ++ { NS_VK_HANJA, GDK_Hangul_Hanja }, ++ { NS_VK_KANJI, GDK_Kanji }, ++ { NS_VK_ESCAPE, GDK_Escape }, ++ { NS_VK_CONVERT, GDK_Henkan }, ++ { NS_VK_NONCONVERT, GDK_Muhenkan }, ++ // { NS_VK_ACCEPT, GDK_XXX }, ++ // { NS_VK_MODECHANGE, GDK_XXX }, ++ { NS_VK_SPACE, GDK_space }, ++ { NS_VK_PAGE_UP, GDK_Page_Up }, ++ { NS_VK_PAGE_DOWN, GDK_Page_Down }, ++ { NS_VK_END, GDK_End }, ++ { NS_VK_HOME, GDK_Home }, ++ { NS_VK_LEFT, GDK_Left }, ++ { NS_VK_UP, GDK_Up }, ++ { NS_VK_RIGHT, GDK_Right }, ++ { NS_VK_DOWN, GDK_Down }, ++ { NS_VK_SELECT, GDK_Select }, ++ { NS_VK_PRINT, GDK_Print }, ++ { NS_VK_EXECUTE, GDK_Execute }, ++ { NS_VK_PRINTSCREEN, GDK_Print }, ++ { NS_VK_INSERT, GDK_Insert }, ++ { NS_VK_DELETE, GDK_Delete }, ++ { NS_VK_HELP, GDK_Help }, ++ ++ // keypad keys ++ { NS_VK_LEFT, GDK_KP_Left }, ++ { NS_VK_RIGHT, GDK_KP_Right }, ++ { NS_VK_UP, GDK_KP_Up }, ++ { NS_VK_DOWN, GDK_KP_Down }, ++ { NS_VK_PAGE_UP, GDK_KP_Page_Up }, ++ // Not sure what these are ++ //{ NS_VK_, GDK_KP_Prior }, ++ //{ NS_VK_, GDK_KP_Next }, ++ { NS_VK_CLEAR, GDK_KP_Begin }, // Num-unlocked 5 ++ { NS_VK_PAGE_DOWN, GDK_KP_Page_Down }, ++ { NS_VK_HOME, GDK_KP_Home }, ++ { NS_VK_END, GDK_KP_End }, ++ { NS_VK_INSERT, GDK_KP_Insert }, ++ { NS_VK_DELETE, GDK_KP_Delete }, ++ { NS_VK_RETURN, GDK_KP_Enter }, ++ ++ { NS_VK_NUM_LOCK, GDK_Num_Lock }, ++ { NS_VK_SCROLL_LOCK,GDK_Scroll_Lock }, ++ ++ // Function keys ++ { NS_VK_F1, GDK_F1 }, ++ { NS_VK_F2, GDK_F2 }, ++ { NS_VK_F3, GDK_F3 }, ++ { NS_VK_F4, GDK_F4 }, ++ { NS_VK_F5, GDK_F5 }, ++ { NS_VK_F6, GDK_F6 }, ++ { NS_VK_F7, GDK_F7 }, ++ { NS_VK_F8, GDK_F8 }, ++ { NS_VK_F9, GDK_F9 }, ++ { NS_VK_F10, GDK_F10 }, ++ { NS_VK_F11, GDK_F11 }, ++ { NS_VK_F12, GDK_F12 }, ++ { NS_VK_F13, GDK_F13 }, ++ { NS_VK_F14, GDK_F14 }, ++ { NS_VK_F15, GDK_F15 }, ++ { NS_VK_F16, GDK_F16 }, ++ { NS_VK_F17, GDK_F17 }, ++ { NS_VK_F18, GDK_F18 }, ++ { NS_VK_F19, GDK_F19 }, ++ { NS_VK_F20, GDK_F20 }, ++ { NS_VK_F21, GDK_F21 }, ++ { NS_VK_F22, GDK_F22 }, ++ { NS_VK_F23, GDK_F23 }, ++ { NS_VK_F24, GDK_F24 }, ++ ++ // context menu key, keysym 0xff67, typically keycode 117 on 105-key (Microsoft) ++ // x86 keyboards, located between right 'Windows' key and right Ctrl key ++ { NS_VK_CONTEXT_MENU, GDK_Menu }, ++ { NS_VK_SLEEP, GDK_Sleep }, ++ ++ { NS_VK_ATTN, GDK_3270_Attn }, ++ { NS_VK_CRSEL, GDK_3270_CursorSelect }, ++ { NS_VK_EXSEL, GDK_3270_ExSelect }, ++ { NS_VK_EREOF, GDK_3270_EraseEOF }, ++ { NS_VK_PLAY, GDK_3270_Play }, ++ //{ NS_VK_ZOOM, GDK_XXX }, ++ { NS_VK_PA1, GDK_3270_PA1 }, ++}; ++ ++static guint ++ConvertGeckoKeyNameToGDKKeyval(nsAString& aKeyName) ++{ ++ NS_ConvertUTF16toUTF8 keyName(aKeyName); ++ ToUpperCase(keyName); // We want case-insensitive comparison with data ++ // stored as uppercase. ++ ++ uint32_t keyCode = 0; ++ ++ uint32_t keyNameLength = keyName.Length(); ++ const char* keyNameStr = keyName.get(); ++ for (uint16_t i = 0; i < ArrayLength(gKeyCodes); ++i) { ++ if (keyNameLength == gKeyCodes[i].strlength && ++ !nsCRT::strcmp(gKeyCodes[i].str, keyNameStr)) { ++ keyCode = gKeyCodes[i].keycode; ++ break; ++ } ++ } ++ ++ // First, try to handle alphanumeric input, not listed in nsKeycodes: ++ // most likely, more letters will be getting typed in than things in ++ // the key list, so we will look through these first. ++ ++ if (keyCode >= NS_VK_A && keyCode <= NS_VK_Z) { ++ // gdk and DOM both use the ASCII codes for these keys. ++ return keyCode; ++ } ++ ++ // numbers ++ if (keyCode >= NS_VK_0 && keyCode <= NS_VK_9) { ++ // gdk and DOM both use the ASCII codes for these keys. ++ return keyCode - NS_VK_0 + GDK_0; ++ } ++ ++ switch (keyCode) { ++ // keys in numpad ++ case NS_VK_MULTIPLY: return GDK_KP_Multiply; ++ case NS_VK_ADD: return GDK_KP_Add; ++ case NS_VK_SEPARATOR: return GDK_KP_Separator; ++ case NS_VK_SUBTRACT: return GDK_KP_Subtract; ++ case NS_VK_DECIMAL: return GDK_KP_Decimal; ++ case NS_VK_DIVIDE: return GDK_KP_Divide; ++ case NS_VK_NUMPAD0: return GDK_KP_0; ++ case NS_VK_NUMPAD1: return GDK_KP_1; ++ case NS_VK_NUMPAD2: return GDK_KP_2; ++ case NS_VK_NUMPAD3: return GDK_KP_3; ++ case NS_VK_NUMPAD4: return GDK_KP_4; ++ case NS_VK_NUMPAD5: return GDK_KP_5; ++ case NS_VK_NUMPAD6: return GDK_KP_6; ++ case NS_VK_NUMPAD7: return GDK_KP_7; ++ case NS_VK_NUMPAD8: return GDK_KP_8; ++ case NS_VK_NUMPAD9: return GDK_KP_9; ++ // other prinable keys ++ case NS_VK_SPACE: return GDK_space; ++ case NS_VK_COLON: return GDK_colon; ++ case NS_VK_SEMICOLON: return GDK_semicolon; ++ case NS_VK_LESS_THAN: return GDK_less; ++ case NS_VK_EQUALS: return GDK_equal; ++ case NS_VK_GREATER_THAN: return GDK_greater; ++ case NS_VK_QUESTION_MARK: return GDK_question; ++ case NS_VK_AT: return GDK_at; ++ case NS_VK_CIRCUMFLEX: return GDK_asciicircum; ++ case NS_VK_EXCLAMATION: return GDK_exclam; ++ case NS_VK_DOUBLE_QUOTE: return GDK_quotedbl; ++ case NS_VK_HASH: return GDK_numbersign; ++ case NS_VK_DOLLAR: return GDK_dollar; ++ case NS_VK_PERCENT: return GDK_percent; ++ case NS_VK_AMPERSAND: return GDK_ampersand; ++ case NS_VK_UNDERSCORE: return GDK_underscore; ++ case NS_VK_OPEN_PAREN: return GDK_parenleft; ++ case NS_VK_CLOSE_PAREN: return GDK_parenright; ++ case NS_VK_ASTERISK: return GDK_asterisk; ++ case NS_VK_PLUS: return GDK_plus; ++ case NS_VK_PIPE: return GDK_bar; ++ case NS_VK_HYPHEN_MINUS: return GDK_minus; ++ case NS_VK_OPEN_CURLY_BRACKET: return GDK_braceleft; ++ case NS_VK_CLOSE_CURLY_BRACKET: return GDK_braceright; ++ case NS_VK_TILDE: return GDK_asciitilde; ++ case NS_VK_COMMA: return GDK_comma; ++ case NS_VK_PERIOD: return GDK_period; ++ case NS_VK_SLASH: return GDK_slash; ++ case NS_VK_BACK_QUOTE: return GDK_grave; ++ case NS_VK_OPEN_BRACKET: return GDK_bracketleft; ++ case NS_VK_BACK_SLASH: return GDK_backslash; ++ case NS_VK_CLOSE_BRACKET: return GDK_bracketright; ++ case NS_VK_QUOTE: return GDK_apostrophe; ++ } ++ ++ // misc other things ++ for (uint32_t i = 0; i < ArrayLength(gKeyPairs); ++i) { ++ if (gKeyPairs[i].DOMKeyCode == keyCode) { ++ return gKeyPairs[i].GDKKeyval; ++ } ++ } ++ ++ return 0; ++} ++ ++class nsMenuItemUncheckSiblingsRunnable final : public Runnable ++{ ++public: ++ NS_IMETHODIMP Run() ++ { ++ if (mMenuItem) { ++ static_cast(mMenuItem.get())->UncheckSiblings(); ++ } ++ return NS_OK; ++ } ++ ++ nsMenuItemUncheckSiblingsRunnable(nsMenuItem *aMenuItem) : ++ Runnable("nsMenuItemUncheckSiblingsRunnable"), ++ mMenuItem(aMenuItem) { }; ++ ++private: ++ nsWeakMenuObject mMenuItem; ++}; ++ ++bool ++nsMenuItem::IsCheckboxOrRadioItem() const ++{ ++ return mType == eMenuItemType_Radio || ++ mType == eMenuItemType_CheckBox; ++} ++ ++/* static */ void ++nsMenuItem::item_activated_cb(DbusmenuMenuitem *menuitem, ++ guint timestamp, ++ gpointer user_data) ++{ ++ nsMenuItem *item = static_cast(user_data); ++ item->Activate(timestamp); ++} ++ ++void ++nsMenuItem::Activate(uint32_t aTimestamp) ++{ ++ GdkWindow *window = gtk_widget_get_window(MenuBar()->TopLevelWindow()); ++ gdk_x11_window_set_user_time( ++ window, std::min(aTimestamp, gdk_x11_get_server_time(window))); ++ ++ // We do this to avoid mutating our view of the menu until ++ // after we have finished ++ nsNativeMenuDocListener::BlockUpdatesScope updatesBlocker; ++ ++ if (!ContentNode()->AsElement()->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::autocheck, ++ nsGkAtoms::_false, ++ eCaseMatters) && ++ (mType == eMenuItemType_CheckBox || ++ (mType == eMenuItemType_Radio && !mIsChecked))) { ++ ContentNode()->AsElement()->SetAttr(kNameSpaceID_None, ++ nsGkAtoms::checked, ++ mIsChecked ? ++ NS_LITERAL_STRING("false") ++ : NS_LITERAL_STRING("true"), ++ true); ++ } ++ ++ dom::Document *doc = ContentNode()->OwnerDoc(); ++ ErrorResult rv; ++ RefPtr event = ++ doc->CreateEvent(NS_LITERAL_STRING("xulcommandevent"), ++ dom::CallerType::System, rv); ++ if (!rv.Failed()) { ++ RefPtr command = event->AsXULCommandEvent(); ++ if (command) { ++ command->InitCommandEvent(NS_LITERAL_STRING("command"), true, true, ++ nsGlobalWindowInner::Cast(doc->GetInnerWindow()), ++ 0, false, false, false, false, nullptr, 0, rv); ++ if (!rv.Failed()) { ++ event->SetTrusted(true); ++ ContentNode()->DispatchEvent(*event, rv); ++ if (rv.Failed()) { ++ NS_WARNING("Failed to dispatch event"); ++ rv.SuppressException(); ++ } ++ } else { ++ NS_WARNING("Failed to initialize command event"); ++ rv.SuppressException(); ++ } ++ } ++ } else { ++ NS_WARNING("CreateEvent failed"); ++ rv.SuppressException(); ++ } ++ ++ // This kinda sucks, but Unity doesn't send a closed event ++ // after activating a menuitem ++ nsMenuObject *ancestor = Parent(); ++ while (ancestor && ancestor->Type() == eType_Menu) { ++ static_cast(ancestor)->OnClose(); ++ ancestor = ancestor->Parent(); ++ } ++} ++ ++void ++nsMenuItem::CopyAttrFromNodeIfExists(nsIContent *aContent, nsAtom *aAttribute) ++{ ++ nsAutoString value; ++ if (aContent->AsElement()->GetAttr(kNameSpaceID_None, aAttribute, value)) { ++ ContentNode()->AsElement()->SetAttr(kNameSpaceID_None, aAttribute, ++ value, true); ++ } ++} ++ ++void ++nsMenuItem::UpdateState() ++{ ++ if (!IsCheckboxOrRadioItem()) { ++ return; ++ } ++ ++ mIsChecked = ContentNode()->AsElement()->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::checked, ++ nsGkAtoms::_true, ++ eCaseMatters); ++ dbusmenu_menuitem_property_set_int(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_TOGGLE_STATE, ++ mIsChecked ? ++ DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED : ++ DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED); ++} ++ ++void ++nsMenuItem::UpdateTypeAndState() ++{ ++ static mozilla::dom::Element::AttrValuesArray attrs[] = ++ { nsGkAtoms::checkbox, nsGkAtoms::radio, nullptr }; ++ int32_t type = ContentNode()->AsElement()->FindAttrValueIn(kNameSpaceID_None, ++ nsGkAtoms::type, ++ attrs, eCaseMatters); ++ ++ if (type >= 0 && type < 2) { ++ if (type == 0) { ++ dbusmenu_menuitem_property_set(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE, ++ DBUSMENU_MENUITEM_TOGGLE_CHECK); ++ mType = eMenuItemType_CheckBox; ++ } else if (type == 1) { ++ dbusmenu_menuitem_property_set(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE, ++ DBUSMENU_MENUITEM_TOGGLE_RADIO); ++ mType = eMenuItemType_Radio; ++ } ++ ++ UpdateState(); ++ } else { ++ dbusmenu_menuitem_property_remove(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE); ++ dbusmenu_menuitem_property_remove(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_TOGGLE_STATE); ++ mType = eMenuItemType_Normal; ++ } ++} ++ ++void ++nsMenuItem::UpdateAccel() ++{ ++ dom::Document *doc = ContentNode()->GetUncomposedDoc(); ++ if (doc) { ++ nsCOMPtr oldKeyContent; ++ oldKeyContent.swap(mKeyContent); ++ ++ nsAutoString key; ++ ContentNode()->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::key, ++ key); ++ if (!key.IsEmpty()) { ++ mKeyContent = doc->GetElementById(key); ++ } ++ ++ if (mKeyContent != oldKeyContent) { ++ if (oldKeyContent) { ++ DocListener()->UnregisterForContentChanges(oldKeyContent); ++ } ++ if (mKeyContent) { ++ DocListener()->RegisterForContentChanges(mKeyContent, this); ++ } ++ } ++ } ++ ++ if (!mKeyContent) { ++ dbusmenu_menuitem_property_remove(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_SHORTCUT); ++ return; ++ } ++ ++ nsAutoString modifiers; ++ mKeyContent->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::modifiers, ++ modifiers); ++ ++ uint32_t modifier = 0; ++ ++ if (!modifiers.IsEmpty()) { ++ char* str = ToNewUTF8String(modifiers); ++ char *token = strtok(str, ", \t"); ++ while(token) { ++ if (nsCRT::strcmp(token, "shift") == 0) { ++ modifier |= GDK_SHIFT_MASK; ++ } else if (nsCRT::strcmp(token, "alt") == 0) { ++ modifier |= GDK_MOD1_MASK; ++ } else if (nsCRT::strcmp(token, "meta") == 0) { ++ modifier |= GDK_META_MASK; ++ } else if (nsCRT::strcmp(token, "control") == 0) { ++ modifier |= GDK_CONTROL_MASK; ++ } else if (nsCRT::strcmp(token, "accel") == 0) { ++ int32_t accel = Preferences::GetInt("ui.key.accelKey"); ++ if (accel == dom::KeyboardEvent_Binding::DOM_VK_META) { ++ modifier |= GDK_META_MASK; ++ } else if (accel == dom::KeyboardEvent_Binding::DOM_VK_ALT) { ++ modifier |= GDK_MOD1_MASK; ++ } else { ++ modifier |= GDK_CONTROL_MASK; ++ } ++ } ++ ++ token = strtok(nullptr, ", \t"); ++ } ++ ++ free(str); ++ } ++ ++ nsAutoString keyStr; ++ mKeyContent->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::key, ++ keyStr); ++ ++ guint key = 0; ++ if (!keyStr.IsEmpty()) { ++ key = gdk_unicode_to_keyval(*keyStr.BeginReading()); ++ } ++ ++ if (key == 0) { ++ mKeyContent->AsElement()->GetAttr(kNameSpaceID_None, ++ nsGkAtoms::keycode, keyStr); ++ if (!keyStr.IsEmpty()) { ++ key = ConvertGeckoKeyNameToGDKKeyval(keyStr); ++ } ++ } ++ ++ if (key == 0) { ++ key = GDK_VoidSymbol; ++ } ++ ++ if (key != GDK_VoidSymbol) { ++ dbusmenu_menuitem_property_set_shortcut(GetNativeData(), key, ++ static_cast(modifier)); ++ } else { ++ dbusmenu_menuitem_property_remove(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_SHORTCUT); ++ } ++} ++ ++nsMenuBar* ++nsMenuItem::MenuBar() ++{ ++ nsMenuObject *tmp = this; ++ while (tmp->Parent()) { ++ tmp = tmp->Parent(); ++ } ++ ++ MOZ_ASSERT(tmp->Type() == eType_MenuBar, "The top-level should be a menubar"); ++ ++ return static_cast(tmp); ++} ++ ++void ++nsMenuItem::UncheckSiblings() ++{ ++ if (!ContentNode()->AsElement()->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::type, ++ nsGkAtoms::radio, ++ eCaseMatters)) { ++ // If we're not a radio button, we don't care ++ return; ++ } ++ ++ nsAutoString name; ++ ContentNode()->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::name, ++ name); ++ ++ nsIContent *parent = ContentNode()->GetParent(); ++ if (!parent) { ++ return; ++ } ++ ++ uint32_t count = parent->GetChildCount(); ++ for (uint32_t i = 0; i < count; ++i) { ++ nsIContent *sibling = parent->GetChildAt_Deprecated(i); ++ ++ if (sibling->IsComment()) { ++ continue; ++ } ++ ++ nsAutoString otherName; ++ sibling->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::name, ++ otherName); ++ ++ if (sibling != ContentNode() && otherName == name && ++ sibling->AsElement()->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::type, ++ nsGkAtoms::radio, ++ eCaseMatters)) { ++ sibling->AsElement()->UnsetAttr(kNameSpaceID_None, ++ nsGkAtoms::checked, true); ++ } ++ } ++} ++ ++void ++nsMenuItem::InitializeNativeData() ++{ ++ g_signal_connect(G_OBJECT(GetNativeData()), ++ DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, ++ G_CALLBACK(item_activated_cb), this); ++ mNeedsUpdate = true; ++} ++ ++void ++nsMenuItem::UpdateContentAttributes() ++{ ++ dom::Document *doc = ContentNode()->GetUncomposedDoc(); ++ if (!doc) { ++ return; ++ } ++ ++ nsAutoString command; ++ ContentNode()->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::command, ++ command); ++ if (command.IsEmpty()) { ++ return; ++ } ++ ++ nsCOMPtr commandContent = doc->GetElementById(command); ++ if (!commandContent) { ++ return; ++ } ++ ++ if (commandContent->AsElement()->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::disabled, ++ nsGkAtoms::_true, ++ eCaseMatters)) { ++ ContentNode()->AsElement()->SetAttr(kNameSpaceID_None, ++ nsGkAtoms::disabled, ++ NS_LITERAL_STRING("true"), true); ++ } else { ++ ContentNode()->AsElement()->UnsetAttr(kNameSpaceID_None, ++ nsGkAtoms::disabled, true); ++ } ++ ++ CopyAttrFromNodeIfExists(commandContent, nsGkAtoms::checked); ++ CopyAttrFromNodeIfExists(commandContent, nsGkAtoms::accesskey); ++ CopyAttrFromNodeIfExists(commandContent, nsGkAtoms::label); ++ CopyAttrFromNodeIfExists(commandContent, nsGkAtoms::hidden); ++} ++ ++void ++nsMenuItem::Update(ComputedStyle *aComputedStyle) ++{ ++ if (mNeedsUpdate) { ++ mNeedsUpdate = false; ++ ++ UpdateTypeAndState(); ++ UpdateAccel(); ++ UpdateLabel(); ++ UpdateSensitivity(); ++ } ++ ++ UpdateVisibility(aComputedStyle); ++ UpdateIcon(aComputedStyle); ++} ++ ++bool ++nsMenuItem::IsCompatibleWithNativeData(DbusmenuMenuitem *aNativeData) const ++{ ++ return nsCRT::strcmp(dbusmenu_menuitem_property_get(aNativeData, ++ DBUSMENU_MENUITEM_PROP_TYPE), ++ "separator") != 0; ++} ++ ++nsMenuObject::PropertyFlags ++nsMenuItem::SupportedProperties() const ++{ ++ return static_cast( ++ nsMenuObject::ePropLabel | ++ nsMenuObject::ePropEnabled | ++ nsMenuObject::ePropVisible | ++ nsMenuObject::ePropIconData | ++ nsMenuObject::ePropShortcut | ++ nsMenuObject::ePropToggleType | ++ nsMenuObject::ePropToggleState ++ ); ++} ++ ++void ++nsMenuItem::OnAttributeChanged(nsIContent *aContent, nsAtom *aAttribute) ++{ ++ MOZ_ASSERT(aContent == ContentNode() || aContent == mKeyContent, ++ "Received an event that wasn't meant for us!"); ++ ++ if (aContent == ContentNode() && aAttribute == nsGkAtoms::checked && ++ aContent->AsElement()->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::checked, ++ nsGkAtoms::_true, eCaseMatters)) { ++ nsContentUtils::AddScriptRunner( ++ new nsMenuItemUncheckSiblingsRunnable(this)); ++ } ++ ++ if (mNeedsUpdate) { ++ return; ++ } ++ ++ if (!Parent()->IsBeingDisplayed()) { ++ mNeedsUpdate = true; ++ return; ++ } ++ ++ if (aContent == ContentNode()) { ++ if (aAttribute == nsGkAtoms::key) { ++ UpdateAccel(); ++ } else if (aAttribute == nsGkAtoms::label || ++ aAttribute == nsGkAtoms::accesskey || ++ aAttribute == nsGkAtoms::crop) { ++ UpdateLabel(); ++ } else if (aAttribute == nsGkAtoms::disabled) { ++ UpdateSensitivity(); ++ } else if (aAttribute == nsGkAtoms::type) { ++ UpdateTypeAndState(); ++ } else if (aAttribute == nsGkAtoms::checked) { ++ UpdateState(); ++ } else if (aAttribute == nsGkAtoms::hidden || ++ aAttribute == nsGkAtoms::collapsed) { ++ RefPtr style = GetComputedStyle(); ++ UpdateVisibility(style); ++ } else if (aAttribute == nsGkAtoms::image) { ++ RefPtr style = GetComputedStyle(); ++ UpdateIcon(style); ++ } ++ } else if (aContent == mKeyContent && ++ (aAttribute == nsGkAtoms::key || ++ aAttribute == nsGkAtoms::keycode || ++ aAttribute == nsGkAtoms::modifiers)) { ++ UpdateAccel(); ++ } ++} ++ ++nsMenuItem::nsMenuItem(nsMenuContainer *aParent, nsIContent *aContent) : ++ nsMenuObject(aParent, aContent), ++ mType(eMenuItemType_Normal), ++ mIsChecked(false), ++ mNeedsUpdate(false) ++{ ++ MOZ_COUNT_CTOR(nsMenuItem); ++} ++ ++nsMenuItem::~nsMenuItem() ++{ ++ if (DocListener() && mKeyContent) { ++ DocListener()->UnregisterForContentChanges(mKeyContent); ++ } ++ ++ if (GetNativeData()) { ++ g_signal_handlers_disconnect_by_func(GetNativeData(), ++ FuncToGpointer(item_activated_cb), ++ this); ++ } ++ ++ MOZ_COUNT_DTOR(nsMenuItem); ++} ++ ++nsMenuObject::EType ++nsMenuItem::Type() const ++{ ++ return eType_MenuItem; ++} +--- /dev/null ++++ b/widget/gtk/nsMenuItem.h +@@ -0,0 +1,80 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsMenuItem_h__ ++#define __nsMenuItem_h__ ++ ++#include "mozilla/Attributes.h" ++#include "nsCOMPtr.h" ++ ++#include "nsDbusmenu.h" ++#include "nsMenuObject.h" ++ ++#include ++ ++class nsAtom; ++class nsIContent; ++class nsMenuBar; ++class nsMenuContainer; ++ ++/* ++ * This class represents 3 main classes of menuitems: labels, checkboxes and ++ * radio buttons (with/without an icon) ++ */ ++class nsMenuItem final : public nsMenuObject ++{ ++public: ++ nsMenuItem(nsMenuContainer *aParent, nsIContent *aContent); ++ ~nsMenuItem() override; ++ ++ nsMenuObject::EType Type() const override; ++ ++private: ++ friend class nsMenuItemUncheckSiblingsRunnable; ++ ++ enum { ++ eMenuItemFlag_ToggleState = (1 << 0) ++ }; ++ ++ enum EMenuItemType { ++ eMenuItemType_Normal, ++ eMenuItemType_Radio, ++ eMenuItemType_CheckBox ++ }; ++ ++ bool IsCheckboxOrRadioItem() const; ++ ++ static void item_activated_cb(DbusmenuMenuitem *menuitem, ++ guint timestamp, ++ gpointer user_data); ++ void Activate(uint32_t aTimestamp); ++ ++ void CopyAttrFromNodeIfExists(nsIContent *aContent, nsAtom *aAtom); ++ void UpdateState(); ++ void UpdateTypeAndState(); ++ void UpdateAccel(); ++ nsMenuBar* MenuBar(); ++ void UncheckSiblings(); ++ ++ void InitializeNativeData() override; ++ void UpdateContentAttributes() override; ++ void Update(mozilla::ComputedStyle *aComputedStyle) override; ++ bool IsCompatibleWithNativeData(DbusmenuMenuitem *aNativeData) const override; ++ nsMenuObject::PropertyFlags SupportedProperties() const override; ++ ++ void OnAttributeChanged(nsIContent *aContent, nsAtom *aAttribute) override; ++ ++ EMenuItemType mType; ++ ++ bool mIsChecked; ++ ++ bool mNeedsUpdate; ++ ++ nsCOMPtr mKeyContent; ++}; ++ ++#endif /* __nsMenuItem_h__ */ +--- /dev/null ++++ b/widget/gtk/nsMenuObject.cpp +@@ -0,0 +1,664 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "ImageOps.h" ++#include "imgIContainer.h" ++#include "imgINotificationObserver.h" ++#include "imgLoader.h" ++#include "imgRequestProxy.h" ++#include "mozilla/ArrayUtils.h" ++#include "mozilla/Assertions.h" ++#include "mozilla/dom/Document.h" ++#include "mozilla/dom/Element.h" ++#include "mozilla/Preferences.h" ++#include "mozilla/PresShell.h" ++#include "mozilla/PresShellInlines.h" ++#include "nsAttrValue.h" ++#include "nsComputedDOMStyle.h" ++#include "nsContentUtils.h" ++#include "nsGkAtoms.h" ++#include "nsIContent.h" ++#include "nsIContentPolicy.h" ++#include "nsILoadGroup.h" ++#include "nsImageToPixbuf.h" ++#include "nsIURI.h" ++#include "nsNetUtil.h" ++#include "nsPresContext.h" ++#include "nsRect.h" ++#include "nsServiceManagerUtils.h" ++#include "nsString.h" ++#include "nsStyleConsts.h" ++#include "nsStyleStruct.h" ++#include "nsUnicharUtils.h" ++ ++#include "nsMenuContainer.h" ++#include "nsNativeMenuDocListener.h" ++ ++#include ++#include ++#include ++ ++#include "nsMenuObject.h" ++ ++// X11's None clashes with StyleDisplay::None ++#include "X11UndefineNone.h" ++ ++#undef None ++ ++using namespace mozilla; ++using mozilla::image::ImageOps; ++ ++#define MAX_WIDTH 350000 ++ ++const char *gPropertyStrings[] = { ++#define DBUSMENU_PROPERTY(e, s, b) s, ++ DBUSMENU_PROPERTIES ++#undef DBUSMENU_PROPERTY ++ nullptr ++}; ++ ++nsWeakMenuObject* nsWeakMenuObject::sHead; ++PangoLayout* gPangoLayout = nullptr; ++ ++class nsMenuObjectIconLoader final : public imgINotificationObserver ++{ ++public: ++ NS_DECL_ISUPPORTS ++ NS_DECL_IMGINOTIFICATIONOBSERVER ++ ++ nsMenuObjectIconLoader(nsMenuObject *aOwner) : mOwner(aOwner) { }; ++ ++ void LoadIcon(ComputedStyle *aComputedStyle); ++ void Destroy(); ++ ++private: ++ ~nsMenuObjectIconLoader() { }; ++ ++ nsMenuObject *mOwner; ++ RefPtr mImageRequest; ++ nsCOMPtr mURI; ++ nsIntRect mImageRect; ++}; ++ ++NS_IMPL_ISUPPORTS(nsMenuObjectIconLoader, imgINotificationObserver) ++ ++void ++nsMenuObjectIconLoader::Notify(imgIRequest *aProxy, ++ int32_t aType, const nsIntRect *aRect) ++{ ++ if (!mOwner) { ++ return; ++ } ++ ++ if (aProxy != mImageRequest) { ++ return; ++ } ++ ++ if (aType == imgINotificationObserver::LOAD_COMPLETE) { ++ uint32_t status = imgIRequest::STATUS_ERROR; ++ if (NS_FAILED(mImageRequest->GetImageStatus(&status)) || ++ (status & imgIRequest::STATUS_ERROR)) { ++ mImageRequest->Cancel(NS_BINDING_ABORTED); ++ mImageRequest = nullptr; ++ return; ++ } ++ ++ nsCOMPtr image; ++ mImageRequest->GetImage(getter_AddRefs(image)); ++ MOZ_ASSERT(image); ++ ++ // Ask the image to decode at its intrinsic size. ++ int32_t width = 0, height = 0; ++ image->GetWidth(&width); ++ image->GetHeight(&height); ++ image->RequestDecodeForSize(nsIntSize(width, height), imgIContainer::FLAG_NONE); ++ return; ++ } ++ ++ if (aType == imgINotificationObserver::DECODE_COMPLETE) { ++ mImageRequest->Cancel(NS_BINDING_ABORTED); ++ mImageRequest = nullptr; ++ return; ++ } ++ ++ if (aType != imgINotificationObserver::FRAME_COMPLETE) { ++ return; ++ } ++ ++ nsCOMPtr img; ++ mImageRequest->GetImage(getter_AddRefs(img)); ++ if (!img) { ++ return; ++ } ++ ++ if (!mImageRect.IsEmpty()) { ++ img = ImageOps::Clip(img, mImageRect); ++ } ++ ++ int32_t width, height; ++ img->GetWidth(&width); ++ img->GetHeight(&height); ++ ++ if (width <= 0 || height <= 0) { ++ mOwner->ClearIcon(); ++ return; ++ } ++ ++ if (width > 100 || height > 100) { ++ // The icon data needs to go across DBus. Make sure the icon ++ // data isn't too large, else our connection gets terminated and ++ // GDbus helpfully aborts the application. Thank you :) ++ NS_WARNING("Icon data too large"); ++ mOwner->ClearIcon(); ++ return; ++ } ++ ++ GdkPixbuf *pixbuf = nsImageToPixbuf::ImageToPixbuf(img); ++ if (pixbuf) { ++ dbusmenu_menuitem_property_set_image(mOwner->GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_ICON_DATA, ++ pixbuf); ++ g_object_unref(pixbuf); ++ } ++ ++ return; ++} ++ ++void ++nsMenuObjectIconLoader::LoadIcon(ComputedStyle *aComputedStyle) ++{ ++ dom::Document *doc = mOwner->ContentNode()->OwnerDoc(); ++ ++ nsCOMPtr uri; ++ nsIntRect imageRect; ++ imgRequestProxy *imageRequest = nullptr; ++ ++ nsAutoString uriString; ++ if (mOwner->ContentNode()->AsElement()->GetAttr(kNameSpaceID_None, ++ nsGkAtoms::image, ++ uriString)) { ++ NS_NewURI(getter_AddRefs(uri), uriString); ++ } else { ++ PresShell *shell = doc->GetPresShell(); ++ if (!shell) { ++ return; ++ } ++ ++ nsPresContext *pc = shell->GetPresContext(); ++ if (!pc || !aComputedStyle) { ++ return; ++ } ++ ++ const nsStyleList *list = aComputedStyle->StyleList(); ++ imageRequest = list->GetListStyleImage(); ++ if (imageRequest) { ++ imageRequest->GetURI(getter_AddRefs(uri)); ++ auto& rect = list->mImageRegion.AsRect(); ++ imageRect = rect.ToLayoutRect().ToNearestPixels( ++ pc->AppUnitsPerDevPixel()); ++ } ++ } ++ ++ if (!uri) { ++ mOwner->ClearIcon(); ++ mURI = nullptr; ++ ++ if (mImageRequest) { ++ mImageRequest->Cancel(NS_BINDING_ABORTED); ++ mImageRequest = nullptr; ++ } ++ ++ return; ++ } ++ ++ bool same; ++ if (mURI && NS_SUCCEEDED(mURI->Equals(uri, &same)) && same && ++ (!imageRequest || imageRect == mImageRect)) { ++ return; ++ } ++ ++ if (mImageRequest) { ++ mImageRequest->Cancel(NS_BINDING_ABORTED); ++ mImageRequest = nullptr; ++ } ++ ++ mURI = uri; ++ ++ if (imageRequest) { ++ mImageRect = imageRect; ++ imageRequest->Clone(this, nullptr, getter_AddRefs(mImageRequest)); ++ } else { ++ mImageRect.SetEmpty(); ++ nsCOMPtr loadGroup = doc->GetDocumentLoadGroup(); ++ RefPtr loader = ++ nsContentUtils::GetImgLoaderForDocument(doc); ++ if (!loader || !loadGroup) { ++ NS_WARNING("Failed to get loader or load group for image load"); ++ return; ++ } ++ ++ loader->LoadImage(uri, nullptr, nullptr, ++ nullptr, 0, loadGroup, this, nullptr, nullptr, ++ nsIRequest::LOAD_NORMAL, nullptr, ++ nsIContentPolicy::TYPE_IMAGE, EmptyString(), ++ false, false, getter_AddRefs(mImageRequest)); ++ } ++} ++ ++void ++nsMenuObjectIconLoader::Destroy() ++{ ++ if (mImageRequest) { ++ mImageRequest->CancelAndForgetObserver(NS_BINDING_ABORTED); ++ mImageRequest = nullptr; ++ } ++ ++ mOwner = nullptr; ++} ++ ++static int ++CalculateTextWidth(const nsAString& aText) ++{ ++ if (!gPangoLayout) { ++ PangoFontMap *fontmap = pango_cairo_font_map_get_default(); ++ PangoContext *ctx = pango_font_map_create_context(fontmap); ++ gPangoLayout = pango_layout_new(ctx); ++ g_object_unref(ctx); ++ } ++ ++ pango_layout_set_text(gPangoLayout, NS_ConvertUTF16toUTF8(aText).get(), -1); ++ ++ int width, dummy; ++ pango_layout_get_size(gPangoLayout, &width, &dummy); ++ ++ return width; ++} ++ ++static const nsDependentString ++GetEllipsis() ++{ ++ static char16_t sBuf[4] = { 0, 0, 0, 0 }; ++ if (!sBuf[0]) { ++ nsString ellipsis; ++ Preferences::GetLocalizedString("intl.ellipsis", ellipsis); ++ if (!ellipsis.IsEmpty()) { ++ uint32_t l = ellipsis.Length(); ++ const nsString::char_type *c = ellipsis.BeginReading(); ++ uint32_t i = 0; ++ while (i < 3 && i < l) { ++ sBuf[i++] = *(c++); ++ } ++ } else { ++ sBuf[0] = '.'; ++ sBuf[1] = '.'; ++ sBuf[2] = '.'; ++ } ++ } ++ ++ return nsDependentString(sBuf); ++} ++ ++static int ++GetEllipsisWidth() ++{ ++ static int sEllipsisWidth = -1; ++ ++ if (sEllipsisWidth == -1) { ++ sEllipsisWidth = CalculateTextWidth(GetEllipsis()); ++ } ++ ++ return sEllipsisWidth; ++} ++ ++nsMenuObject::nsMenuObject(nsMenuContainer *aParent, nsIContent *aContent) : ++ mContent(aContent), ++ mListener(aParent->DocListener()), ++ mParent(aParent), ++ mNativeData(nullptr) ++{ ++ MOZ_ASSERT(mContent); ++ MOZ_ASSERT(mListener); ++ MOZ_ASSERT(mParent); ++} ++ ++nsMenuObject::nsMenuObject(nsNativeMenuDocListener *aListener, ++ nsIContent *aContent) : ++ mContent(aContent), ++ mListener(aListener), ++ mParent(nullptr), ++ mNativeData(nullptr) ++{ ++ MOZ_ASSERT(mContent); ++ MOZ_ASSERT(mListener); ++} ++ ++void ++nsMenuObject::UpdateLabel() ++{ ++ // Gecko stores the label and access key in separate attributes ++ // so we need to convert label="Foo_Bar"/accesskey="F" in to ++ // label="_Foo__Bar" for dbusmenu ++ ++ nsAutoString label; ++ mContent->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::label, label); ++ ++ nsAutoString accesskey; ++ mContent->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::accesskey, ++ accesskey); ++ ++ const nsAutoString::char_type *akey = accesskey.BeginReading(); ++ char16_t keyLower = ToLowerCase(*akey); ++ char16_t keyUpper = ToUpperCase(*akey); ++ ++ const nsAutoString::char_type *iter = label.BeginReading(); ++ const nsAutoString::char_type *end = label.EndReading(); ++ uint32_t length = label.Length(); ++ uint32_t pos = 0; ++ bool foundAccessKey = false; ++ ++ while (iter != end) { ++ if (*iter != char16_t('_')) { ++ if ((*iter != keyLower && *iter != keyUpper) || foundAccessKey) { ++ ++iter; ++ ++pos; ++ continue; ++ } ++ foundAccessKey = true; ++ } ++ ++ label.SetLength(++length); ++ ++ iter = label.BeginReading() + pos; ++ end = label.EndReading(); ++ nsAutoString::char_type *cur = label.BeginWriting() + pos; ++ ++ memmove(cur + 1, cur, (length - 1 - pos) * sizeof(nsAutoString::char_type)); ++ *cur = nsAutoString::char_type('_'); ++ ++ iter += 2; ++ pos += 2; ++ } ++ ++ if (CalculateTextWidth(label) <= MAX_WIDTH) { ++ dbusmenu_menuitem_property_set(mNativeData, ++ DBUSMENU_MENUITEM_PROP_LABEL, ++ NS_ConvertUTF16toUTF8(label).get()); ++ return; ++ } ++ ++ // This sucks. ++ // This should be done at the point where the menu is drawn (hello Unity), ++ // but unfortunately it doesn't do that and will happily fill your entire ++ // screen width with a menu if you have a bookmark with a really long title. ++ // This leaves us with no other option but to ellipsize here, with no proper ++ // knowledge of Unity's render path, font size etc. This is better than nothing ++ nsAutoString truncated; ++ int target = MAX_WIDTH - GetEllipsisWidth(); ++ length = label.Length(); ++ ++ static mozilla::dom::Element::AttrValuesArray strings[] = { ++ nsGkAtoms::left, nsGkAtoms::start, ++ nsGkAtoms::center, nsGkAtoms::right, ++ nsGkAtoms::end, nullptr ++ }; ++ ++ int32_t type = mContent->AsElement()->FindAttrValueIn(kNameSpaceID_None, ++ nsGkAtoms::crop, ++ strings, eCaseMatters); ++ ++ switch (type) { ++ case 0: ++ case 1: ++ // FIXME: Implement left cropping ++ case 2: ++ // FIXME: Implement center cropping ++ case 3: ++ case 4: ++ default: ++ for (uint32_t i = 0; i < length; i++) { ++ truncated.Append(label.CharAt(i)); ++ if (CalculateTextWidth(truncated) > target) { ++ break; ++ } ++ } ++ ++ truncated.Append(GetEllipsis()); ++ } ++ ++ dbusmenu_menuitem_property_set(mNativeData, ++ DBUSMENU_MENUITEM_PROP_LABEL, ++ NS_ConvertUTF16toUTF8(truncated).get()); ++} ++ ++void ++nsMenuObject::UpdateVisibility(ComputedStyle *aComputedStyle) ++{ ++ bool vis = true; ++ ++ if (aComputedStyle && ++ (aComputedStyle->StyleDisplay()->mDisplay == StyleDisplay::None || ++ aComputedStyle->StyleVisibility()->mVisible == ++ StyleVisibility::Collapse)) { ++ vis = false; ++ } ++ ++ dbusmenu_menuitem_property_set_bool(mNativeData, ++ DBUSMENU_MENUITEM_PROP_VISIBLE, ++ vis); ++} ++ ++void ++nsMenuObject::UpdateSensitivity() ++{ ++ bool disabled = mContent->AsElement()->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::disabled, ++ nsGkAtoms::_true, ++ eCaseMatters); ++ ++ dbusmenu_menuitem_property_set_bool(mNativeData, ++ DBUSMENU_MENUITEM_PROP_ENABLED, ++ !disabled); ++ ++} ++ ++void ++nsMenuObject::UpdateIcon(ComputedStyle *aComputedStyle) ++{ ++ if (ShouldShowIcon()) { ++ if (!mIconLoader) { ++ mIconLoader = new nsMenuObjectIconLoader(this); ++ } ++ ++ mIconLoader->LoadIcon(aComputedStyle); ++ } else { ++ if (mIconLoader) { ++ mIconLoader->Destroy(); ++ mIconLoader = nullptr; ++ } ++ ++ ClearIcon(); ++ } ++} ++ ++already_AddRefed ++nsMenuObject::GetComputedStyle() ++{ ++ RefPtr style = ++ nsComputedDOMStyle::GetComputedStyleNoFlush( ++ mContent->AsElement(), nullptr); ++ ++ return style.forget(); ++} ++ ++void ++nsMenuObject::InitializeNativeData() ++{ ++} ++ ++nsMenuObject::PropertyFlags ++nsMenuObject::SupportedProperties() const ++{ ++ return static_cast(0); ++} ++ ++bool ++nsMenuObject::IsCompatibleWithNativeData(DbusmenuMenuitem *aNativeData) const ++{ ++ return true; ++} ++ ++void ++nsMenuObject::UpdateContentAttributes() ++{ ++} ++ ++void ++nsMenuObject::Update(ComputedStyle *aComputedStyle) ++{ ++} ++ ++bool ++nsMenuObject::ShouldShowIcon() const ++{ ++ // Ideally we want to know the visibility of the anonymous XUL image in ++ // our menuitem, but this isn't created because we don't have a frame. ++ // The following works by default (because xul.css hides images in menuitems ++ // that don't have the "menuitem-with-favicon" class). It's possible a third ++ // party theme could override this, but, oh well... ++ const nsAttrValue *classes = mContent->AsElement()->GetClasses(); ++ if (!classes) { ++ return false; ++ } ++ ++ for (uint32_t i = 0; i < classes->GetAtomCount(); ++i) { ++ if (classes->AtomAt(i) == nsGkAtoms::menuitem_with_favicon) { ++ return true; ++ } ++ } ++ ++ return false; ++} ++ ++void ++nsMenuObject::ClearIcon() ++{ ++ dbusmenu_menuitem_property_remove(mNativeData, ++ DBUSMENU_MENUITEM_PROP_ICON_DATA); ++} ++ ++nsMenuObject::~nsMenuObject() ++{ ++ nsWeakMenuObject::NotifyDestroyed(this); ++ ++ if (mIconLoader) { ++ mIconLoader->Destroy(); ++ } ++ ++ if (mListener) { ++ mListener->UnregisterForContentChanges(mContent); ++ } ++ ++ if (mNativeData) { ++ g_object_unref(mNativeData); ++ mNativeData = nullptr; ++ } ++} ++ ++void ++nsMenuObject::CreateNativeData() ++{ ++ MOZ_ASSERT(mNativeData == nullptr, "This node already has a DbusmenuMenuitem. The old one will be leaked"); ++ ++ mNativeData = dbusmenu_menuitem_new(); ++ InitializeNativeData(); ++ if (mParent && mParent->IsBeingDisplayed()) { ++ ContainerIsOpening(); ++ } ++ ++ mListener->RegisterForContentChanges(mContent, this); ++} ++ ++nsresult ++nsMenuObject::AdoptNativeData(DbusmenuMenuitem *aNativeData) ++{ ++ MOZ_ASSERT(mNativeData == nullptr, "This node already has a DbusmenuMenuitem. The old one will be leaked"); ++ ++ if (!IsCompatibleWithNativeData(aNativeData)) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ mNativeData = aNativeData; ++ g_object_ref(mNativeData); ++ ++ PropertyFlags supported = SupportedProperties(); ++ PropertyFlags mask = static_cast(1); ++ ++ for (uint32_t i = 0; gPropertyStrings[i]; ++i) { ++ if (!(mask & supported)) { ++ dbusmenu_menuitem_property_remove(mNativeData, gPropertyStrings[i]); ++ } ++ mask = static_cast(mask << 1); ++ } ++ ++ InitializeNativeData(); ++ if (mParent && mParent->IsBeingDisplayed()) { ++ ContainerIsOpening(); ++ } ++ ++ mListener->RegisterForContentChanges(mContent, this); ++ ++ return NS_OK; ++} ++ ++void ++nsMenuObject::ContainerIsOpening() ++{ ++ MOZ_ASSERT(nsContentUtils::IsSafeToRunScript()); ++ ++ UpdateContentAttributes(); ++ ++ RefPtr style = GetComputedStyle(); ++ Update(style); ++} ++ ++/* static */ void ++nsWeakMenuObject::AddWeakReference(nsWeakMenuObject *aWeak) ++{ ++ aWeak->mPrev = sHead; ++ sHead = aWeak; ++} ++ ++/* static */ void ++nsWeakMenuObject::RemoveWeakReference(nsWeakMenuObject *aWeak) ++{ ++ if (aWeak == sHead) { ++ sHead = aWeak->mPrev; ++ return; ++ } ++ ++ nsWeakMenuObject *weak = sHead; ++ while (weak && weak->mPrev != aWeak) { ++ weak = weak->mPrev; ++ } ++ ++ if (weak) { ++ weak->mPrev = aWeak->mPrev; ++ } ++} ++ ++/* static */ void ++nsWeakMenuObject::NotifyDestroyed(nsMenuObject *aMenuObject) ++{ ++ nsWeakMenuObject *weak = sHead; ++ while (weak) { ++ if (weak->mMenuObject == aMenuObject) { ++ weak->mMenuObject = nullptr; ++ } ++ ++ weak = weak->mPrev; ++ } ++} +--- /dev/null ++++ b/widget/gtk/nsMenuObject.h +@@ -0,0 +1,169 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsMenuObject_h__ ++#define __nsMenuObject_h__ ++ ++#include "mozilla/Attributes.h" ++#include "mozilla/ComputedStyleInlines.h" ++#include "nsCOMPtr.h" ++ ++#include "nsDbusmenu.h" ++#include "nsNativeMenuDocListener.h" ++ ++class nsIContent; ++class nsMenuContainer; ++class nsMenuObjectIconLoader; ++ ++#define DBUSMENU_PROPERTIES \ ++ DBUSMENU_PROPERTY(Label, DBUSMENU_MENUITEM_PROP_LABEL, 0) \ ++ DBUSMENU_PROPERTY(Enabled, DBUSMENU_MENUITEM_PROP_ENABLED, 1) \ ++ DBUSMENU_PROPERTY(Visible, DBUSMENU_MENUITEM_PROP_VISIBLE, 2) \ ++ DBUSMENU_PROPERTY(IconData, DBUSMENU_MENUITEM_PROP_ICON_DATA, 3) \ ++ DBUSMENU_PROPERTY(Type, DBUSMENU_MENUITEM_PROP_TYPE, 4) \ ++ DBUSMENU_PROPERTY(Shortcut, DBUSMENU_MENUITEM_PROP_SHORTCUT, 5) \ ++ DBUSMENU_PROPERTY(ToggleType, DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE, 6) \ ++ DBUSMENU_PROPERTY(ToggleState, DBUSMENU_MENUITEM_PROP_TOGGLE_STATE, 7) \ ++ DBUSMENU_PROPERTY(ChildDisplay, DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY, 8) ++ ++/* ++ * This is the base class for all menu nodes. Each instance represents ++ * a single node in the menu hierarchy. It wraps the corresponding DOM node and ++ * native menu node, keeps them in sync and transfers events between the two. ++ * It is not reference counted - each node is owned by its parent (the top ++ * level menubar is owned by the window) and keeps a weak pointer to its ++ * parent (which is guaranteed to always be valid because a node will never ++ * outlive its parent). It is not safe to keep a reference to nsMenuObject ++ * externally. ++ */ ++class nsMenuObject : public nsNativeMenuChangeObserver ++{ ++public: ++ enum EType { ++ eType_MenuBar, ++ eType_Menu, ++ eType_MenuItem ++ }; ++ ++ virtual ~nsMenuObject(); ++ ++ // Get the native menu item node ++ DbusmenuMenuitem* GetNativeData() const { return mNativeData; } ++ ++ // Get the parent menu object ++ nsMenuContainer* Parent() const { return mParent; } ++ ++ // Get the content node ++ nsIContent* ContentNode() const { return mContent; } ++ ++ // Get the type of this node. Must be provided by subclasses ++ virtual EType Type() const = 0; ++ ++ // Get the document listener ++ nsNativeMenuDocListener* DocListener() const { return mListener; } ++ ++ // Create the native menu item node (called by containers) ++ void CreateNativeData(); ++ ++ // Adopt the specified native menu item node (called by containers) ++ nsresult AdoptNativeData(DbusmenuMenuitem *aNativeData); ++ ++ // Called by the container to tell us that it's opening ++ void ContainerIsOpening(); ++ ++protected: ++ nsMenuObject(nsMenuContainer *aParent, nsIContent *aContent); ++ nsMenuObject(nsNativeMenuDocListener *aListener, nsIContent *aContent); ++ ++ enum PropertyFlags { ++#define DBUSMENU_PROPERTY(e, s, b) eProp##e = (1 << b), ++ DBUSMENU_PROPERTIES ++#undef DBUSMENU_PROPERTY ++ }; ++ ++ void UpdateLabel(); ++ void UpdateVisibility(mozilla::ComputedStyle *aComputedStyle); ++ void UpdateSensitivity(); ++ void UpdateIcon(mozilla::ComputedStyle *aComputedStyle); ++ ++ already_AddRefed GetComputedStyle(); ++ ++private: ++ friend class nsMenuObjectIconLoader; ++ ++ // Set up initial properties on the native data, connect to signals etc. ++ // This should be implemented by subclasses ++ virtual void InitializeNativeData(); ++ ++ // Return the properties that this menu object type supports ++ // This should be implemented by subclasses ++ virtual PropertyFlags SupportedProperties() const; ++ ++ // Determine whether this menu object could use the specified ++ // native item. Returns true by default but can be overridden by subclasses ++ virtual bool ++ IsCompatibleWithNativeData(DbusmenuMenuitem *aNativeData) const; ++ ++ // Update attributes on this objects content node when the container opens. ++ // This is called before style resolution, and should be implemented by ++ // subclasses who want to modify attributes that might affect style. ++ // This will not be called when there are script blockers ++ virtual void UpdateContentAttributes(); ++ ++ // Update properties that should be refreshed when the container opens. ++ // This should be implemented by subclasses that have properties which ++ // need refreshing ++ virtual void Update(mozilla::ComputedStyle *aComputedStyle); ++ ++ bool ShouldShowIcon() const; ++ void ClearIcon(); ++ ++ nsCOMPtr mContent; ++ // mListener is a strong ref for simplicity - someone in the tree needs to ++ // own it, and this only really needs to be the top-level object (as no ++ // children outlives their parent). However, we need to keep it alive until ++ // after running the nsMenuObject destructor for the top-level menu object, ++ // hence the strong ref ++ RefPtr mListener; ++ nsMenuContainer *mParent; // [weak] ++ DbusmenuMenuitem *mNativeData; // [strong] ++ RefPtr mIconLoader; ++}; ++ ++// Keep a weak pointer to a menu object ++class nsWeakMenuObject ++{ ++public: ++ nsWeakMenuObject() : mPrev(nullptr), mMenuObject(nullptr) {} ++ ++ nsWeakMenuObject(nsMenuObject *aMenuObject) : ++ mPrev(nullptr), mMenuObject(aMenuObject) ++ { ++ AddWeakReference(this); ++ } ++ ++ ~nsWeakMenuObject() { RemoveWeakReference(this); } ++ ++ nsMenuObject* get() const { return mMenuObject; } ++ ++ nsMenuObject* operator->() const { return mMenuObject; } ++ ++ explicit operator bool() const { return !!mMenuObject; } ++ ++ static void NotifyDestroyed(nsMenuObject *aMenuObject); ++ ++private: ++ static void AddWeakReference(nsWeakMenuObject *aWeak); ++ static void RemoveWeakReference(nsWeakMenuObject *aWeak); ++ ++ nsWeakMenuObject *mPrev; ++ static nsWeakMenuObject *sHead; ++ ++ nsMenuObject *mMenuObject; ++}; ++ ++#endif /* __nsMenuObject_h__ */ +--- /dev/null ++++ b/widget/gtk/nsMenuSeparator.cpp +@@ -0,0 +1,82 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "mozilla/Assertions.h" ++#include "nsCRT.h" ++#include "nsGkAtoms.h" ++ ++#include "nsDbusmenu.h" ++ ++#include "nsMenuContainer.h" ++#include "nsMenuSeparator.h" ++ ++using namespace mozilla; ++ ++void ++nsMenuSeparator::InitializeNativeData() ++{ ++ dbusmenu_menuitem_property_set(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_TYPE, ++ "separator"); ++} ++ ++void ++nsMenuSeparator::Update(ComputedStyle *aComputedStyle) ++{ ++ UpdateVisibility(aComputedStyle); ++} ++ ++bool ++nsMenuSeparator::IsCompatibleWithNativeData(DbusmenuMenuitem *aNativeData) const ++{ ++ return nsCRT::strcmp(dbusmenu_menuitem_property_get(aNativeData, ++ DBUSMENU_MENUITEM_PROP_TYPE), ++ "separator") == 0; ++} ++ ++nsMenuObject::PropertyFlags ++nsMenuSeparator::SupportedProperties() const ++{ ++ return static_cast( ++ nsMenuObject::ePropVisible | ++ nsMenuObject::ePropType ++ ); ++} ++ ++void ++nsMenuSeparator::OnAttributeChanged(nsIContent *aContent, nsAtom *aAttribute) ++{ ++ MOZ_ASSERT(aContent == ContentNode(), "Received an event that wasn't meant for us!"); ++ ++ if (!Parent()->IsBeingDisplayed()) { ++ return; ++ } ++ ++ if (aAttribute == nsGkAtoms::hidden || ++ aAttribute == nsGkAtoms::collapsed) { ++ RefPtr style = GetComputedStyle(); ++ UpdateVisibility(style); ++ } ++} ++ ++nsMenuSeparator::nsMenuSeparator(nsMenuContainer *aParent, ++ nsIContent *aContent) : ++ nsMenuObject(aParent, aContent) ++{ ++ MOZ_COUNT_CTOR(nsMenuSeparator); ++} ++ ++nsMenuSeparator::~nsMenuSeparator() ++{ ++ MOZ_COUNT_DTOR(nsMenuSeparator); ++} ++ ++nsMenuObject::EType ++nsMenuSeparator::Type() const ++{ ++ return eType_MenuItem; ++} +--- /dev/null ++++ b/widget/gtk/nsMenuSeparator.h +@@ -0,0 +1,37 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsMenuSeparator_h__ ++#define __nsMenuSeparator_h__ ++ ++#include "mozilla/Attributes.h" ++ ++#include "nsMenuObject.h" ++ ++class nsIContent; ++class nsAtom; ++class nsMenuContainer; ++ ++// Menu separator class ++class nsMenuSeparator final : public nsMenuObject ++{ ++public: ++ nsMenuSeparator(nsMenuContainer *aParent, nsIContent *aContent); ++ ~nsMenuSeparator(); ++ ++ nsMenuObject::EType Type() const override; ++ ++private: ++ void InitializeNativeData() override; ++ void Update(mozilla::ComputedStyle *aComputedStyle) override; ++ bool IsCompatibleWithNativeData(DbusmenuMenuitem *aNativeData) const override; ++ nsMenuObject::PropertyFlags SupportedProperties() const override; ++ ++ void OnAttributeChanged(nsIContent *aContent, nsAtom *aAttribute) override; ++}; ++ ++#endif /* __nsMenuSeparator_h__ */ +--- /dev/null ++++ b/widget/gtk/nsNativeMenuDocListener.cpp +@@ -0,0 +1,350 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "mozilla/Assertions.h" ++#include "mozilla/DebugOnly.h" ++#include "mozilla/dom/Document.h" ++#include "mozilla/dom/Element.h" ++#include "nsContentUtils.h" ++#include "nsAtom.h" ++#include "nsIContent.h" ++ ++#include "nsMenuContainer.h" ++ ++#include "nsNativeMenuDocListener.h" ++ ++using namespace mozilla; ++ ++uint32_t nsNativeMenuDocListener::sUpdateBlockersCount = 0; ++ ++nsNativeMenuDocListenerTArray *gPendingListeners; ++ ++/* ++ * Small helper which caches a single listener, so that consecutive ++ * events which go to the same node avoid multiple hash table lookups ++ */ ++class MOZ_STACK_CLASS DispatchHelper ++{ ++public: ++ DispatchHelper(nsNativeMenuDocListener *aListener, ++ nsIContent *aContent ++ MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : ++ mObserver(nullptr) ++ { ++ MOZ_GUARD_OBJECT_NOTIFIER_INIT; ++ if (aContent == aListener->mLastSource) { ++ mObserver = aListener->mLastTarget; ++ } else { ++ mObserver = aListener->mContentToObserverTable.Get(aContent); ++ if (mObserver) { ++ aListener->mLastSource = aContent; ++ aListener->mLastTarget = mObserver; ++ } ++ } ++ } ++ ++ ~DispatchHelper() { }; ++ ++ nsNativeMenuChangeObserver* Observer() const { return mObserver; } ++ ++ bool HasObserver() const { return !!mObserver; } ++ ++private: ++ nsNativeMenuChangeObserver *mObserver; ++ MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER ++}; ++ ++NS_IMPL_ISUPPORTS(nsNativeMenuDocListener, nsIMutationObserver) ++ ++nsNativeMenuDocListener::~nsNativeMenuDocListener() ++{ ++ MOZ_ASSERT(mContentToObserverTable.Count() == 0, ++ "Some nodes forgot to unregister listeners. This is bad! (and we're lucky we made it this far)"); ++ MOZ_COUNT_DTOR(nsNativeMenuDocListener); ++} ++ ++void ++nsNativeMenuDocListener::AttributeChanged(mozilla::dom::Element *aElement, ++ int32_t aNameSpaceID, ++ nsAtom *aAttribute, ++ int32_t aModType, ++ const nsAttrValue* aOldValue) ++{ ++ if (sUpdateBlockersCount == 0) { ++ DoAttributeChanged(aElement, aAttribute); ++ return; ++ } ++ ++ MutationRecord *m = mPendingMutations.AppendElement(MakeUnique())->get(); ++ m->mType = MutationRecord::eAttributeChanged; ++ m->mTarget = aElement; ++ m->mAttribute = aAttribute; ++ ++ ScheduleFlush(this); ++} ++ ++void ++nsNativeMenuDocListener::ContentAppended(nsIContent *aFirstNewContent) ++{ ++ for (nsIContent *c = aFirstNewContent; c; c = c->GetNextSibling()) { ++ ContentInserted(c); ++ } ++} ++ ++void ++nsNativeMenuDocListener::ContentInserted(nsIContent *aChild) ++{ ++ nsIContent* container = aChild->GetParent(); ++ if (!container) { ++ return; ++ } ++ ++ nsIContent *prevSibling = nsMenuContainer::GetPreviousSupportedSibling(aChild); ++ ++ if (sUpdateBlockersCount == 0) { ++ DoContentInserted(container, aChild, prevSibling); ++ return; ++ } ++ ++ MutationRecord *m = mPendingMutations.AppendElement(MakeUnique())->get(); ++ m->mType = MutationRecord::eContentInserted; ++ m->mTarget = container; ++ m->mChild = aChild; ++ m->mPrevSibling = prevSibling; ++ ++ ScheduleFlush(this); ++} ++ ++void ++nsNativeMenuDocListener::ContentRemoved(nsIContent *aChild, ++ nsIContent *aPreviousSibling) ++{ ++ nsIContent* container = aChild->GetParent(); ++ if (!container) { ++ return; ++ } ++ ++ if (sUpdateBlockersCount == 0) { ++ DoContentRemoved(container, aChild); ++ return; ++ } ++ ++ MutationRecord *m = mPendingMutations.AppendElement(MakeUnique())->get(); ++ m->mType = MutationRecord::eContentRemoved; ++ m->mTarget = container; ++ m->mChild = aChild; ++ ++ ScheduleFlush(this); ++} ++ ++void ++nsNativeMenuDocListener::NodeWillBeDestroyed(const nsINode *aNode) ++{ ++ mDocument = nullptr; ++} ++ ++void ++nsNativeMenuDocListener::DoAttributeChanged(nsIContent *aContent, ++ nsAtom *aAttribute) ++{ ++ DispatchHelper h(this, aContent); ++ if (h.HasObserver()) { ++ h.Observer()->OnAttributeChanged(aContent, aAttribute); ++ } ++} ++ ++void ++nsNativeMenuDocListener::DoContentInserted(nsIContent *aContainer, ++ nsIContent *aChild, ++ nsIContent *aPrevSibling) ++{ ++ DispatchHelper h(this, aContainer); ++ if (h.HasObserver()) { ++ h.Observer()->OnContentInserted(aContainer, aChild, aPrevSibling); ++ } ++} ++ ++void ++nsNativeMenuDocListener::DoContentRemoved(nsIContent *aContainer, ++ nsIContent *aChild) ++{ ++ DispatchHelper h(this, aContainer); ++ if (h.HasObserver()) { ++ h.Observer()->OnContentRemoved(aContainer, aChild); ++ } ++} ++ ++void ++nsNativeMenuDocListener::DoBeginUpdates(nsIContent *aTarget) ++{ ++ DispatchHelper h(this, aTarget); ++ if (h.HasObserver()) { ++ h.Observer()->OnBeginUpdates(aTarget); ++ } ++} ++ ++void ++nsNativeMenuDocListener::DoEndUpdates(nsIContent *aTarget) ++{ ++ DispatchHelper h(this, aTarget); ++ if (h.HasObserver()) { ++ h.Observer()->OnEndUpdates(); ++ } ++} ++ ++void ++nsNativeMenuDocListener::FlushPendingMutations() ++{ ++ nsIContent *currentTarget = nullptr; ++ bool inUpdateSequence = false; ++ ++ while (mPendingMutations.Length() > 0) { ++ MutationRecord *m = mPendingMutations[0].get(); ++ ++ if (m->mTarget != currentTarget) { ++ if (inUpdateSequence) { ++ DoEndUpdates(currentTarget); ++ inUpdateSequence = false; ++ } ++ ++ currentTarget = m->mTarget; ++ ++ if (mPendingMutations.Length() > 1 && ++ mPendingMutations[1]->mTarget == currentTarget) { ++ DoBeginUpdates(currentTarget); ++ inUpdateSequence = true; ++ } ++ } ++ ++ switch (m->mType) { ++ case MutationRecord::eAttributeChanged: ++ DoAttributeChanged(m->mTarget, m->mAttribute); ++ break; ++ case MutationRecord::eContentInserted: ++ DoContentInserted(m->mTarget, m->mChild, m->mPrevSibling); ++ break; ++ case MutationRecord::eContentRemoved: ++ DoContentRemoved(m->mTarget, m->mChild); ++ break; ++ default: ++ MOZ_ASSERT_UNREACHABLE("Invalid type"); ++ } ++ ++ mPendingMutations.RemoveElementAt(0); ++ } ++ ++ if (inUpdateSequence) { ++ DoEndUpdates(currentTarget); ++ } ++} ++ ++/* static */ void ++nsNativeMenuDocListener::ScheduleFlush(nsNativeMenuDocListener *aListener) ++{ ++ MOZ_ASSERT(sUpdateBlockersCount > 0, "Shouldn't be doing this now"); ++ ++ if (!gPendingListeners) { ++ gPendingListeners = new nsNativeMenuDocListenerTArray; ++ } ++ ++ if (gPendingListeners->IndexOf(aListener) == ++ nsNativeMenuDocListenerTArray::NoIndex) { ++ gPendingListeners->AppendElement(aListener); ++ } ++} ++ ++/* static */ void ++nsNativeMenuDocListener::CancelFlush(nsNativeMenuDocListener *aListener) ++{ ++ if (!gPendingListeners) { ++ return; ++ } ++ ++ gPendingListeners->RemoveElement(aListener); ++} ++ ++/* static */ void ++nsNativeMenuDocListener::RemoveUpdateBlocker() ++{ ++ if (sUpdateBlockersCount == 1 && gPendingListeners) { ++ while (gPendingListeners->Length() > 0) { ++ (*gPendingListeners)[0]->FlushPendingMutations(); ++ gPendingListeners->RemoveElementAt(0); ++ } ++ } ++ ++ MOZ_ASSERT(sUpdateBlockersCount > 0, "Negative update blockers count!"); ++ sUpdateBlockersCount--; ++} ++ ++nsNativeMenuDocListener::nsNativeMenuDocListener(nsIContent *aRootNode) : ++ mRootNode(aRootNode), ++ mDocument(nullptr), ++ mLastSource(nullptr), ++ mLastTarget(nullptr) ++{ ++ MOZ_COUNT_CTOR(nsNativeMenuDocListener); ++} ++ ++void ++nsNativeMenuDocListener::RegisterForContentChanges(nsIContent *aContent, ++ nsNativeMenuChangeObserver *aObserver) ++{ ++ MOZ_ASSERT(aContent, "Need content parameter"); ++ MOZ_ASSERT(aObserver, "Need observer parameter"); ++ if (!aContent || !aObserver) { ++ return; ++ } ++ ++ DebugOnly old; ++ MOZ_ASSERT(!mContentToObserverTable.Get(aContent, &old) || old == aObserver, ++ "Multiple observers for the same content node are not supported"); ++ ++ mContentToObserverTable.Put(aContent, aObserver); ++} ++ ++void ++nsNativeMenuDocListener::UnregisterForContentChanges(nsIContent *aContent) ++{ ++ MOZ_ASSERT(aContent, "Need content parameter"); ++ if (!aContent) { ++ return; ++ } ++ ++ mContentToObserverTable.Remove(aContent); ++ if (aContent == mLastSource) { ++ mLastSource = nullptr; ++ mLastTarget = nullptr; ++ } ++} ++ ++void ++nsNativeMenuDocListener::Start() ++{ ++ if (mDocument) { ++ return; ++ } ++ ++ mDocument = mRootNode->OwnerDoc(); ++ if (!mDocument) { ++ return; ++ } ++ ++ mDocument->AddMutationObserver(this); ++} ++ ++void ++nsNativeMenuDocListener::Stop() ++{ ++ if (mDocument) { ++ mDocument->RemoveMutationObserver(this); ++ mDocument = nullptr; ++ } ++ ++ CancelFlush(this); ++ mPendingMutations.Clear(); ++} +--- /dev/null ++++ b/widget/gtk/nsNativeMenuDocListener.h +@@ -0,0 +1,157 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsNativeMenuDocListener_h__ ++#define __nsNativeMenuDocListener_h__ ++ ++#include "mozilla/Attributes.h" ++#include "mozilla/GuardObjects.h" ++#include "mozilla/RefPtr.h" ++#include "mozilla/UniquePtr.h" ++#include "nsDataHashtable.h" ++#include "nsStubMutationObserver.h" ++#include "nsTArray.h" ++ ++class nsAtom; ++class nsIContent; ++class nsNativeMenuChangeObserver; ++ ++namespace mozilla { ++namespace dom { ++class Document; ++} ++} ++ ++/* ++ * This class keeps a mapping of content nodes to observers and forwards DOM ++ * mutations to these. There is exactly one of these for every menubar. ++ */ ++class nsNativeMenuDocListener final : nsStubMutationObserver ++{ ++public: ++ NS_DECL_ISUPPORTS ++ ++ nsNativeMenuDocListener(nsIContent *aRootNode); ++ ++ // Register an observer to receive mutation events for the specified ++ // content node. The caller must keep the observer alive until ++ // UnregisterForContentChanges is called. ++ void RegisterForContentChanges(nsIContent *aContent, ++ nsNativeMenuChangeObserver *aObserver); ++ ++ // Unregister the registered observer for the specified content node ++ void UnregisterForContentChanges(nsIContent *aContent); ++ ++ // Start listening to the document and forwarding DOM mutations to ++ // registered observers. ++ void Start(); ++ ++ // Stop listening to the document. No DOM mutations will be forwarded ++ // to registered observers. ++ void Stop(); ++ ++ /* ++ * This class is intended to be used inside GObject signal handlers. ++ * It allows us to queue updates until we have finished delivering ++ * events to Gecko, and then we can batch updates to our view of the ++ * menu. This allows us to do menu updates without altering the structure ++ * seen by the OS. ++ */ ++ class MOZ_STACK_CLASS BlockUpdatesScope ++ { ++ public: ++ BlockUpdatesScope(MOZ_GUARD_OBJECT_NOTIFIER_ONLY_PARAM) ++ { ++ MOZ_GUARD_OBJECT_NOTIFIER_INIT; ++ nsNativeMenuDocListener::AddUpdateBlocker(); ++ } ++ ++ ~BlockUpdatesScope() ++ { ++ nsNativeMenuDocListener::RemoveUpdateBlocker(); ++ } ++ ++ private: ++ MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER ++ }; ++ ++private: ++ friend class DispatchHelper; ++ ++ struct MutationRecord { ++ enum RecordType { ++ eAttributeChanged, ++ eContentInserted, ++ eContentRemoved ++ } mType; ++ ++ nsCOMPtr mTarget; ++ nsCOMPtr mChild; ++ nsCOMPtr mPrevSibling; ++ RefPtr mAttribute; ++ }; ++ ++ ~nsNativeMenuDocListener(); ++ ++ NS_DECL_NSIMUTATIONOBSERVER_ATTRIBUTECHANGED ++ NS_DECL_NSIMUTATIONOBSERVER_CONTENTAPPENDED ++ NS_DECL_NSIMUTATIONOBSERVER_CONTENTINSERTED ++ NS_DECL_NSIMUTATIONOBSERVER_CONTENTREMOVED ++ NS_DECL_NSIMUTATIONOBSERVER_NODEWILLBEDESTROYED ++ ++ void DoAttributeChanged(nsIContent *aContent, nsAtom *aAttribute); ++ void DoContentInserted(nsIContent *aContainer, ++ nsIContent *aChild, ++ nsIContent *aPrevSibling); ++ void DoContentRemoved(nsIContent *aContainer, nsIContent *aChild); ++ void DoBeginUpdates(nsIContent *aTarget); ++ void DoEndUpdates(nsIContent *aTarget); ++ ++ void FlushPendingMutations(); ++ static void ScheduleFlush(nsNativeMenuDocListener *aListener); ++ static void CancelFlush(nsNativeMenuDocListener *aListener); ++ ++ static void AddUpdateBlocker() { ++sUpdateBlockersCount; } ++ static void RemoveUpdateBlocker(); ++ ++ nsCOMPtr mRootNode; ++ mozilla::dom::Document *mDocument; ++ nsIContent *mLastSource; ++ nsNativeMenuChangeObserver *mLastTarget; ++ nsTArray > mPendingMutations; ++ nsDataHashtable, nsNativeMenuChangeObserver *> mContentToObserverTable; ++ ++ static uint32_t sUpdateBlockersCount; ++}; ++ ++typedef nsTArray > nsNativeMenuDocListenerTArray; ++ ++/* ++ * Implemented by classes that want to listen to mutation events from content ++ * nodes. ++ */ ++class nsNativeMenuChangeObserver ++{ ++public: ++ virtual void OnAttributeChanged(nsIContent *aContent, nsAtom *aAttribute) {} ++ ++ virtual void OnContentInserted(nsIContent *aContainer, ++ nsIContent *aChild, ++ nsIContent *aPrevSibling) {} ++ ++ virtual void OnContentRemoved(nsIContent *aContainer, nsIContent *aChild) {} ++ ++ // Signals the start of a sequence of more than 1 event for the specified ++ // node. This only happens when events are flushed as all BlockUpdatesScope ++ // instances go out of scope ++ virtual void OnBeginUpdates(nsIContent *aContent) {}; ++ ++ // Signals the end of a sequence of events ++ virtual void OnEndUpdates() {}; ++}; ++ ++#endif /* __nsNativeMenuDocListener_h__ */ +--- /dev/null ++++ b/widget/gtk/nsNativeMenuService.cpp +@@ -0,0 +1,503 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "mozilla/Assertions.h" ++#include "mozilla/Preferences.h" ++#include "mozilla/UniquePtr.h" ++#include "nsCOMPtr.h" ++#include "nsCRT.h" ++#include "nsGtkUtils.h" ++#include "nsIContent.h" ++#include "nsIWidget.h" ++#include "nsServiceManagerUtils.h" ++#include "nsWindow.h" ++#include "prlink.h" ++ ++#include "nsDbusmenu.h" ++#include "nsMenuBar.h" ++#include "nsNativeMenuDocListener.h" ++ ++#include ++#include ++#include ++ ++#include "nsNativeMenuService.h" ++ ++using namespace mozilla; ++ ++nsNativeMenuService* nsNativeMenuService::sService = nullptr; ++ ++extern PangoLayout* gPangoLayout; ++extern nsNativeMenuDocListenerTArray* gPendingListeners; ++ ++#if not GLIB_CHECK_VERSION(2,26,0) ++enum GBusType { ++ G_BUS_TYPE_STARTER = -1, ++ G_BUS_TYPE_NONE = 0, ++ G_BUS_TYPE_SYSTEM = 1, ++ G_BUS_TYPE_SESSION = 2 ++}; ++ ++enum GDBusProxyFlags { ++ G_DBUS_PROXY_FLAGS_NONE = 0, ++ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES = 1 << 0, ++ G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS = 1 << 1, ++ G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START = 1 << 2, ++ G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES = 1 << 3 ++}; ++ ++enum GDBusCallFlags { ++ G_DBUS_CALL_FLAGS_NONE = 0, ++ G_DBUS_CALL_FLAGS_NO_AUTO_START = 1 << 0 ++}; ++ ++typedef _GDBusInterfaceInfo GDBusInterfaceInfo; ++typedef _GDBusProxy GDBusProxy; ++typedef _GVariant GVariant; ++#endif ++ ++#undef g_dbus_proxy_new_for_bus ++#undef g_dbus_proxy_new_for_bus_finish ++#undef g_dbus_proxy_call ++#undef g_dbus_proxy_call_finish ++#undef g_dbus_proxy_get_name_owner ++ ++typedef void (*_g_dbus_proxy_new_for_bus_fn)(GBusType, GDBusProxyFlags, ++ GDBusInterfaceInfo*, ++ const gchar*, const gchar*, ++ const gchar*, GCancellable*, ++ GAsyncReadyCallback, gpointer); ++ ++typedef GDBusProxy* (*_g_dbus_proxy_new_for_bus_finish_fn)(GAsyncResult*, ++ GError**); ++typedef void (*_g_dbus_proxy_call_fn)(GDBusProxy*, const gchar*, GVariant*, ++ GDBusCallFlags, gint, GCancellable*, ++ GAsyncReadyCallback, gpointer); ++typedef GVariant* (*_g_dbus_proxy_call_finish_fn)(GDBusProxy*, GAsyncResult*, ++ GError**); ++typedef gchar* (*_g_dbus_proxy_get_name_owner_fn)(GDBusProxy*); ++ ++static _g_dbus_proxy_new_for_bus_fn _g_dbus_proxy_new_for_bus; ++static _g_dbus_proxy_new_for_bus_finish_fn _g_dbus_proxy_new_for_bus_finish; ++static _g_dbus_proxy_call_fn _g_dbus_proxy_call; ++static _g_dbus_proxy_call_finish_fn _g_dbus_proxy_call_finish; ++static _g_dbus_proxy_get_name_owner_fn _g_dbus_proxy_get_name_owner; ++ ++#define g_dbus_proxy_new_for_bus _g_dbus_proxy_new_for_bus ++#define g_dbus_proxy_new_for_bus_finish _g_dbus_proxy_new_for_bus_finish ++#define g_dbus_proxy_call _g_dbus_proxy_call ++#define g_dbus_proxy_call_finish _g_dbus_proxy_call_finish ++#define g_dbus_proxy_get_name_owner _g_dbus_proxy_get_name_owner ++ ++static PRLibrary *gGIOLib = nullptr; ++ ++static nsresult ++GDBusInit() ++{ ++ gGIOLib = PR_LoadLibrary("libgio-2.0.so.0"); ++ if (!gGIOLib) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ g_dbus_proxy_new_for_bus = (_g_dbus_proxy_new_for_bus_fn)PR_FindFunctionSymbol(gGIOLib, "g_dbus_proxy_new_for_bus"); ++ g_dbus_proxy_new_for_bus_finish = (_g_dbus_proxy_new_for_bus_finish_fn)PR_FindFunctionSymbol(gGIOLib, "g_dbus_proxy_new_for_bus_finish"); ++ g_dbus_proxy_call = (_g_dbus_proxy_call_fn)PR_FindFunctionSymbol(gGIOLib, "g_dbus_proxy_call"); ++ g_dbus_proxy_call_finish = (_g_dbus_proxy_call_finish_fn)PR_FindFunctionSymbol(gGIOLib, "g_dbus_proxy_call_finish"); ++ g_dbus_proxy_get_name_owner = (_g_dbus_proxy_get_name_owner_fn)PR_FindFunctionSymbol(gGIOLib, "g_dbus_proxy_get_name_owner"); ++ ++ if (!g_dbus_proxy_new_for_bus || ++ !g_dbus_proxy_new_for_bus_finish || ++ !g_dbus_proxy_call || ++ !g_dbus_proxy_call_finish || ++ !g_dbus_proxy_get_name_owner) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ return NS_OK; ++} ++ ++NS_IMPL_ISUPPORTS(nsNativeMenuService, nsINativeMenuService) ++ ++nsNativeMenuService::nsNativeMenuService() : ++ mCreateProxyCancellable(nullptr), mDbusProxy(nullptr), mOnline(false) ++{ ++} ++ ++nsNativeMenuService::~nsNativeMenuService() ++{ ++ SetOnline(false); ++ ++ if (mCreateProxyCancellable) { ++ g_cancellable_cancel(mCreateProxyCancellable); ++ g_object_unref(mCreateProxyCancellable); ++ mCreateProxyCancellable = nullptr; ++ } ++ ++ // Make sure we disconnect map-event handlers ++ while (mMenuBars.Length() > 0) { ++ NotifyNativeMenuBarDestroyed(mMenuBars[0]); ++ } ++ ++ Preferences::UnregisterCallback(PrefChangedCallback, ++ "ui.use_unity_menubar"); ++ ++ if (mDbusProxy) { ++ g_signal_handlers_disconnect_by_func(mDbusProxy, ++ FuncToGpointer(name_owner_changed_cb), ++ NULL); ++ g_object_unref(mDbusProxy); ++ } ++ ++ if (gPendingListeners) { ++ delete gPendingListeners; ++ gPendingListeners = nullptr; ++ } ++ if (gPangoLayout) { ++ g_object_unref(gPangoLayout); ++ gPangoLayout = nullptr; ++ } ++ ++ MOZ_ASSERT(sService == this); ++ sService = nullptr; ++} ++ ++nsresult ++nsNativeMenuService::Init() ++{ ++ nsresult rv = nsDbusmenuFunctions::Init(); ++ if (NS_FAILED(rv)) { ++ return rv; ++ } ++ ++ rv = GDBusInit(); ++ if (NS_FAILED(rv)) { ++ return rv; ++ } ++ ++ Preferences::RegisterCallback(PrefChangedCallback, ++ "ui.use_unity_menubar"); ++ ++ mCreateProxyCancellable = g_cancellable_new(); ++ ++ g_dbus_proxy_new_for_bus(G_BUS_TYPE_SESSION, ++ static_cast( ++ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | ++ G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS | ++ G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START), ++ nullptr, ++ "com.canonical.AppMenu.Registrar", ++ "/com/canonical/AppMenu/Registrar", ++ "com.canonical.AppMenu.Registrar", ++ mCreateProxyCancellable, proxy_created_cb, ++ nullptr); ++ ++ /* We don't technically know that the shell will draw the menubar until ++ * we know whether anybody owns the name of the menubar service on the ++ * session bus. However, discovering this happens asynchronously so ++ * we optimize for the common case here by assuming that the shell will ++ * draw window menubars if we are running inside Unity. This should ++ * mean that we avoid temporarily displaying the window menubar ourselves ++ */ ++ const char *desktop = getenv("XDG_CURRENT_DESKTOP"); ++ if (nsCRT::strcmp(desktop, "Unity") == 0) { ++ SetOnline(true); ++ } ++ ++ return NS_OK; ++} ++ ++/* static */ void ++nsNativeMenuService::EnsureInitialized() ++{ ++ if (sService) { ++ return; ++ } ++ nsCOMPtr service = ++ do_GetService("@mozilla.org/widget/nativemenuservice;1"); ++} ++ ++void ++nsNativeMenuService::SetOnline(bool aOnline) ++{ ++ if (!Preferences::GetBool("ui.use_unity_menubar", true)) { ++ aOnline = false; ++ } ++ ++ mOnline = aOnline; ++ if (aOnline) { ++ for (uint32_t i = 0; i < mMenuBars.Length(); ++i) { ++ RegisterNativeMenuBar(mMenuBars[i]); ++ } ++ } else { ++ for (uint32_t i = 0; i < mMenuBars.Length(); ++i) { ++ mMenuBars[i]->Deactivate(); ++ } ++ } ++} ++ ++void ++nsNativeMenuService::RegisterNativeMenuBar(nsMenuBar *aMenuBar) ++{ ++ if (!mOnline) { ++ return; ++ } ++ ++ // This will effectively create the native menubar for ++ // exporting over the session bus, and hide the XUL menubar ++ aMenuBar->Activate(); ++ ++ if (!mDbusProxy || ++ !gtk_widget_get_mapped(aMenuBar->TopLevelWindow()) || ++ mMenuBarRegistrationCancellables.Get(aMenuBar, nullptr)) { ++ // Don't go further if we don't have a proxy for the shell menu ++ // service, the window isn't mapped or there is a request in progress. ++ return; ++ } ++ ++ uint32_t xid = aMenuBar->WindowId(); ++ nsCString path = aMenuBar->ObjectPath(); ++ if (xid == 0 || path.IsEmpty()) { ++ NS_WARNING("Menubar has invalid XID or object path"); ++ return; ++ } ++ ++ GCancellable *cancellable = g_cancellable_new(); ++ mMenuBarRegistrationCancellables.Put(aMenuBar, cancellable); ++ ++ // We keep a weak ref because we can't assume that GDBus cancellation ++ // is reliable (see https://launchpad.net/bugs/953562) ++ ++ g_dbus_proxy_call(mDbusProxy, "RegisterWindow", ++ g_variant_new("(uo)", xid, path.get()), ++ G_DBUS_CALL_FLAGS_NONE, -1, ++ cancellable, ++ register_native_menubar_cb, aMenuBar); ++} ++ ++/* static */ void ++nsNativeMenuService::name_owner_changed_cb(GObject *gobject, ++ GParamSpec *pspec, ++ gpointer user_data) ++{ ++ nsNativeMenuService::GetSingleton()->OnNameOwnerChanged(); ++} ++ ++/* static */ void ++nsNativeMenuService::proxy_created_cb(GObject *source_object, ++ GAsyncResult *res, ++ gpointer user_data) ++{ ++ GError *error = nullptr; ++ GDBusProxy *proxy = g_dbus_proxy_new_for_bus_finish(res, &error); ++ if (error && g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { ++ g_error_free(error); ++ return; ++ } ++ ++ if (error) { ++ g_error_free(error); ++ } ++ ++ // We need this check because we can't assume that GDBus cancellation ++ // is reliable (see https://launchpad.net/bugs/953562) ++ nsNativeMenuService *self = nsNativeMenuService::GetSingleton(); ++ if (!self) { ++ if (proxy) { ++ g_object_unref(proxy); ++ } ++ return; ++ } ++ ++ self->OnProxyCreated(proxy); ++} ++ ++/* static */ void ++nsNativeMenuService::register_native_menubar_cb(GObject *source_object, ++ GAsyncResult *res, ++ gpointer user_data) ++{ ++ nsMenuBar *menuBar = static_cast(user_data); ++ ++ GError *error = nullptr; ++ GVariant *results = g_dbus_proxy_call_finish(G_DBUS_PROXY(source_object), ++ res, &error); ++ if (results) { ++ // There's nothing useful in the response ++ g_variant_unref(results); ++ } ++ ++ bool success = error ? false : true; ++ if (error && g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { ++ g_error_free(error); ++ return; ++ } ++ ++ if (error) { ++ g_error_free(error); ++ } ++ ++ nsNativeMenuService *self = nsNativeMenuService::GetSingleton(); ++ if (!self) { ++ return; ++ } ++ ++ self->OnNativeMenuBarRegistered(menuBar, success); ++} ++ ++/* static */ gboolean ++nsNativeMenuService::map_event_cb(GtkWidget *widget, ++ GdkEvent *event, ++ gpointer user_data) ++{ ++ nsMenuBar *menubar = static_cast(user_data); ++ nsNativeMenuService::GetSingleton()->RegisterNativeMenuBar(menubar); ++ ++ return FALSE; ++} ++ ++void ++nsNativeMenuService::OnNameOwnerChanged() ++{ ++ char *owner = g_dbus_proxy_get_name_owner(mDbusProxy); ++ SetOnline(owner ? true : false); ++ g_free(owner); ++} ++ ++void ++nsNativeMenuService::OnProxyCreated(GDBusProxy *aProxy) ++{ ++ mDbusProxy = aProxy; ++ ++ g_object_unref(mCreateProxyCancellable); ++ mCreateProxyCancellable = nullptr; ++ ++ if (!mDbusProxy) { ++ SetOnline(false); ++ return; ++ } ++ ++ g_signal_connect(mDbusProxy, "notify::g-name-owner", ++ G_CALLBACK(name_owner_changed_cb), nullptr); ++ ++ OnNameOwnerChanged(); ++} ++ ++void ++nsNativeMenuService::OnNativeMenuBarRegistered(nsMenuBar *aMenuBar, ++ bool aSuccess) ++{ ++ // Don't assume that GDBus cancellation is reliable (ie, |aMenuBar| might ++ // have already been deleted (see https://launchpad.net/bugs/953562) ++ GCancellable *cancellable = nullptr; ++ if (!mMenuBarRegistrationCancellables.Get(aMenuBar, &cancellable)) { ++ return; ++ } ++ ++ g_object_unref(cancellable); ++ mMenuBarRegistrationCancellables.Remove(aMenuBar); ++ ++ if (!aSuccess) { ++ aMenuBar->Deactivate(); ++ } ++} ++ ++/* static */ void ++nsNativeMenuService::PrefChangedCallback(const char *aPref, ++ void *aClosure) ++{ ++ nsNativeMenuService::GetSingleton()->PrefChanged(); ++} ++ ++void ++nsNativeMenuService::PrefChanged() ++{ ++ if (!mDbusProxy) { ++ SetOnline(false); ++ return; ++ } ++ ++ OnNameOwnerChanged(); ++} ++ ++NS_IMETHODIMP ++nsNativeMenuService::CreateNativeMenuBar(nsIWidget *aParent, ++ mozilla::dom::Element *aMenuBarNode) ++{ ++ NS_ENSURE_ARG(aParent); ++ NS_ENSURE_ARG(aMenuBarNode); ++ ++ if (aMenuBarNode->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::_moz_menubarkeeplocal, ++ nsGkAtoms::_true, ++ eCaseMatters)) { ++ return NS_OK; ++ } ++ ++ UniquePtr menubar(nsMenuBar::Create(aParent, aMenuBarNode)); ++ if (!menubar) { ++ NS_WARNING("Failed to create menubar"); ++ return NS_ERROR_FAILURE; ++ } ++ ++ // Unity forgets our window if it is unmapped by the application, which ++ // happens with some extensions that add "minimize to tray" type ++ // functionality. We hook on to the MapNotify event to re-register our menu ++ // with Unity ++ g_signal_connect(G_OBJECT(menubar->TopLevelWindow()), ++ "map-event", G_CALLBACK(map_event_cb), ++ menubar.get()); ++ ++ mMenuBars.AppendElement(menubar.get()); ++ RegisterNativeMenuBar(menubar.get()); ++ ++ static_cast(aParent)->SetMenuBar(std::move(menubar)); ++ ++ return NS_OK; ++} ++ ++/* static */ already_AddRefed ++nsNativeMenuService::GetInstanceForServiceManager() ++{ ++ RefPtr service(sService); ++ ++ if (service) { ++ return service.forget(); ++ } ++ ++ service = new nsNativeMenuService(); ++ ++ if (NS_FAILED(service->Init())) { ++ return nullptr; ++ } ++ ++ sService = service.get(); ++ return service.forget(); ++} ++ ++/* static */ nsNativeMenuService* ++nsNativeMenuService::GetSingleton() ++{ ++ EnsureInitialized(); ++ return sService; ++} ++ ++void ++nsNativeMenuService::NotifyNativeMenuBarDestroyed(nsMenuBar *aMenuBar) ++{ ++ g_signal_handlers_disconnect_by_func(aMenuBar->TopLevelWindow(), ++ FuncToGpointer(map_event_cb), ++ aMenuBar); ++ ++ mMenuBars.RemoveElement(aMenuBar); ++ ++ GCancellable *cancellable = nullptr; ++ if (mMenuBarRegistrationCancellables.Get(aMenuBar, &cancellable)) { ++ mMenuBarRegistrationCancellables.Remove(aMenuBar); ++ g_cancellable_cancel(cancellable); ++ g_object_unref(cancellable); ++ } ++} +--- /dev/null ++++ b/widget/gtk/nsNativeMenuService.h +@@ -0,0 +1,84 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsNativeMenuService_h__ ++#define __nsNativeMenuService_h__ ++ ++#include "mozilla/Attributes.h" ++#include "nsCOMPtr.h" ++#include "nsDataHashtable.h" ++#include "nsINativeMenuService.h" ++#include "nsTArray.h" ++ ++#include ++#include ++#include ++ ++class nsMenuBar; ++ ++/* ++ * The main native menu service singleton. nsWebShellWindow calls in to this when ++ * a new top level window is created. ++ * ++ * Menubars are owned by their nsWindow. This service holds a weak reference to ++ * each menubar for the purpose of re-registering them with the shell if it ++ * needs to. The menubar is responsible for notifying the service when the last ++ * reference to it is dropped. ++ */ ++class nsNativeMenuService final : public nsINativeMenuService ++{ ++public: ++ NS_DECL_ISUPPORTS ++ ++ NS_IMETHOD CreateNativeMenuBar(nsIWidget* aParent, mozilla::dom::Element* aMenuBarNode) override; ++ ++ // Returns the singleton addref'd for the service manager ++ static already_AddRefed GetInstanceForServiceManager(); ++ ++ // Returns the singleton without increasing the reference count ++ static nsNativeMenuService* GetSingleton(); ++ ++ // Called by a menubar when it is deleted ++ void NotifyNativeMenuBarDestroyed(nsMenuBar *aMenuBar); ++ ++private: ++ nsNativeMenuService(); ++ ~nsNativeMenuService(); ++ nsresult Init(); ++ ++ static void EnsureInitialized(); ++ void SetOnline(bool aOnline); ++ void RegisterNativeMenuBar(nsMenuBar *aMenuBar); ++ static void name_owner_changed_cb(GObject *gobject, ++ GParamSpec *pspec, ++ gpointer user_data); ++ static void proxy_created_cb(GObject *source_object, ++ GAsyncResult *res, ++ gpointer user_data); ++ static void register_native_menubar_cb(GObject *source_object, ++ GAsyncResult *res, ++ gpointer user_data); ++ static gboolean map_event_cb(GtkWidget *widget, GdkEvent *event, ++ gpointer user_data); ++ void OnNameOwnerChanged(); ++ void OnProxyCreated(GDBusProxy *aProxy); ++ void OnNativeMenuBarRegistered(nsMenuBar *aMenuBar, ++ bool aSuccess); ++ static void PrefChangedCallback(const char *aPref, void *aClosure); ++ void PrefChanged(); ++ ++ GCancellable *mCreateProxyCancellable; ++ GDBusProxy *mDbusProxy; ++ bool mOnline; ++ nsTArray mMenuBars; ++ nsDataHashtable, GCancellable*> mMenuBarRegistrationCancellables; ++ ++ static bool sShutdown; ++ static nsNativeMenuService *sService; ++}; ++ ++#endif /* __nsNativeMenuService_h__ */ +--- a/widget/gtk/nsWindow.cpp ++++ b/widget/gtk/nsWindow.cpp +@@ -6069,6 +6069,10 @@ void nsWindow::HideWindowChrome(bool aSh + SetWindowDecoration(aShouldHide ? eBorderStyle_none : mBorderStyle); + } + ++void nsWindow::SetMenuBar(UniquePtr aMenuBar) { ++ mMenuBar = std::move(aMenuBar); ++} ++ + bool nsWindow::CheckForRollup(gdouble aMouseX, gdouble aMouseY, bool aIsWheel, + bool aAlwaysRollup) { + nsIRollupListener* rollupListener = GetActiveRollupListener(); +--- a/widget/gtk/nsWindow.h ++++ b/widget/gtk/nsWindow.h +@@ -39,6 +39,8 @@ + + #include "IMContextWrapper.h" + ++#include "nsMenuBar.h" ++ + #undef LOG + #ifdef MOZ_LOGGING + +@@ -186,6 +188,8 @@ class nsWindow final : public nsBaseWidg + nsIScreen* aTargetScreen = nullptr) override; + virtual void HideWindowChrome(bool aShouldHide) override; + ++ void SetMenuBar(mozilla::UniquePtr aMenuBar); ++ + /** + * GetLastUserInputTime returns a timestamp for the most recent user input + * event. This is intended for pointer grab requests (including drags). +@@ -721,6 +725,8 @@ class nsWindow final : public nsBaseWidg + + mozilla::UniquePtr mCurrentTimeGetter; + static CSDSupportLevel sCSDSupportLevel; ++ ++ mozilla::UniquePtr mMenuBar; + }; + + #endif /* __nsWindow_h__ */ +--- a/widget/moz.build ++++ b/widget/moz.build +@@ -69,9 +69,9 @@ elif toolkit == 'cocoa': + 'nsITouchBarInput.idl', + 'nsITouchBarUpdater.idl', + ] +- EXPORTS += [ +- 'nsINativeMenuService.h', +- ] ++ ++if toolkit in ('cocoa', 'gtk'): ++ EXPORTS += ['nsINativeMenuService.h'] + + TEST_DIRS += [ + 'tests', +--- /dev/null ++++ b/xpcom/ds/NativeMenuAtoms.py +@@ -0,0 +1,9 @@ ++from Atom import Atom ++ ++NATIVE_MENU_ATOMS = [ ++ Atom("menuitem_with_favicon", "menuitem-with-favicon"), ++ Atom("_moz_menubarkeeplocal", "_moz-menubarkeeplocal"), ++ Atom("_moz_nativemenupopupstate", "_moz-nativemenupopupstate"), ++ Atom("openedwithkey", "openedwithkey"), ++ Atom("shellshowingmenubar", "shellshowingmenubar"), ++] +--- a/xpcom/ds/StaticAtoms.py ++++ b/xpcom/ds/StaticAtoms.py +@@ -7,6 +7,7 @@ + from Atom import Atom, InheritingAnonBoxAtom, NonInheritingAnonBoxAtom + from Atom import PseudoElementAtom + from HTMLAtoms import HTML_PARSER_ATOMS ++from NativeMenuAtoms import NATIVE_MENU_ATOMS + import sys + + # Static atom definitions, used to generate nsGkAtomList.h. +@@ -2553,7 +2554,7 @@ STATIC_ATOMS = [ + InheritingAnonBoxAtom("AnonBox_mozSVGForeignContent", ":-moz-svg-foreign-content"), + InheritingAnonBoxAtom("AnonBox_mozSVGText", ":-moz-svg-text"), + # END ATOMS +-] + HTML_PARSER_ATOMS ++] + HTML_PARSER_ATOMS + NATIVE_MENU_ATOMS + + + def verify(): +--- a/widget/gtk/components.conf ++++ b/widget/gtk/components.conf +@@ -82,6 +82,14 @@ Classes = [ + 'headers': ['/widget/gtk/nsApplicationChooser.h'], + 'processes': ProcessSelector.MAIN_PROCESS_ONLY, + }, ++ { ++ 'cid': '{0B3FE5AA-BC72-4303-85AE-76365DF1251D}', ++ 'contract_ids': ['@mozilla.org/widget/nativemenuservice;1'], ++ 'singleton': True, ++ 'type': 'nsNativeMenuService', ++ 'constructor': 'nsNativeMenuService::GetInstanceForServiceManager', ++ 'headers': ['/widget/gtk/nsNativeMenuService.h'], ++ }, + ] + + if defined('MOZ_X11'): +--- a/xpfe/appshell/AppWindow.cpp ++++ b/xpfe/appshell/AppWindow.cpp +@@ -67,7 +67,7 @@ + # include "mozilla/XULStore.h" + #endif + +-#ifdef XP_MACOSX ++#if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK) + # include "nsINativeMenuService.h" + # define USE_NATIVE_MENUS + #endif diff --git a/profiles/ehooks/www-client/firefox-91/01-pre_src_prepare.ehook b/profiles/ehooks/www-client/firefox-91/01-pre_src_prepare.ehook new file mode 120000 index 00000000..0d7a2e70 --- /dev/null +++ b/profiles/ehooks/www-client/firefox-91/01-pre_src_prepare.ehook @@ -0,0 +1 @@ +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/www-client/firefox-91/02-post_src_install.ehook b/profiles/ehooks/www-client/firefox-91/02-post_src_install.ehook new file mode 100644 index 00000000..07c6a76f --- /dev/null +++ b/profiles/ehooks/www-client/firefox-91/02-post_src_install.ehook @@ -0,0 +1,11 @@ +ebuild_hook() { + local desktopfile="${ED}/usr/share/applications/${PN}.desktop" + + newmenu "${EHOOK_FILESDIR}/${PN}.desktop.in" "${PN}.desktop" + + sed -i \ + -e "s/@MOZ_APP_NAME@/${PN}/" \ + -e "/%%ifdef/d" \ + -e "/%%else/,+$(( $(grep -n %%endif < ${desktopfile} | cut -d ':' -f 1) - $(grep -n %%else < ${desktopfile} | cut -d ':' -f 1) )) d" \ + "${desktopfile}" || die +} diff --git a/profiles/ehooks/www-client/firefox-91/03-post_pkg_postinst.ehook b/profiles/ehooks/www-client/firefox-91/03-post_pkg_postinst.ehook new file mode 120000 index 00000000..a51eb2e2 --- /dev/null +++ b/profiles/ehooks/www-client/firefox-91/03-post_pkg_postinst.ehook @@ -0,0 +1 @@ +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/www-client/firefox-91/files/firefox.desktop.in b/profiles/ehooks/www-client/firefox-91/files/firefox.desktop.in new file mode 100644 index 00000000..a1474a15 --- /dev/null +++ b/profiles/ehooks/www-client/firefox-91/files/firefox.desktop.in @@ -0,0 +1,263 @@ +[Desktop Entry] +Version=1.0 +%%ifdef MOZ_OFFICIAL_BRANDING +Name=Firefox Web Browser +Name[ar]=متصفح الويب فَيَرفُكْس +Name[ast]=Restolador web Firefox +Name[bn]=ফায়ারফক্স ওয়েব ব্রাউজার +Name[ca]=Navegador web Firefox +Name[cs]=Firefox Webový prohlížeč +Name[da]=Firefox - internetbrowser +Name[el]=Περιηγητής Firefox +Name[es]=Navegador web Firefox +Name[et]=Firefoxi veebibrauser +Name[fa]=مرورگر اینترنتی Firefox +Name[fi]=Firefox-selain +Name[fr]=Navigateur Web Firefox +Name[gl]=Navegador web Firefox +Name[he]=דפדפן האינטרנט Firefox +Name[hr]=Firefox web preglednik +Name[hu]=Firefox webböngésző +Name[it]=Firefox Browser Web +Name[ja]=Firefox ウェブ・ブラウザ +Name[ko]=Firefox 웹 브라우저 +Name[ku]=Geroka torê Firefox +Name[lt]=Firefox interneto naršyklė +Name[nb]=Firefox Nettleser +Name[nl]=Firefox webbrowser +Name[nn]=Firefox Nettlesar +Name[no]=Firefox Nettleser +Name[pl]=Przeglądarka WWW Firefox +Name[pt]=Firefox Navegador Web +Name[pt_BR]=Navegador Web Firefox +Name[ro]=Firefox – Navigator Internet +Name[ru]=Веб-браузер Firefox +Name[sk]=Firefox - internetový prehliadač +Name[sl]=Firefox spletni brskalnik +Name[sv]=Firefox webbläsare +Name[tr]=Firefox Web Tarayıcısı +Name[ug]=Firefox توركۆرگۈ +Name[uk]=Веб-браузер Firefox +Name[vi]=Trình duyệt web Firefox +Name[zh_CN]=Firefox 网络浏览器 +Name[zh_TW]=Firefox 網路瀏覽器 +%%else +Name=@MOZ_DISPLAY_NAME@ Web Browser +Name[ast]=Restolador web @MOZ_DISPLAY_NAME@ +Name[ca]=Navegador web @MOZ_DISPLAY_NAME@ +Name[cs]=@MOZ_DISPLAY_NAME@ Webový prohlížeč +Name[da]=@MOZ_DISPLAY_NAME@ - internetbrowser +Name[el]=Περιηγητής @MOZ_DISPLAY_NAME@ +Name[es]=Navegador web @MOZ_DISPLAY_NAME@ +Name[et]=@MOZ_DISPLAY_NAME@i veebibrauser +Name[fa]=مرورگر اینترنتی @MOZ_DISPLAY_NAME@ +Name[fi]=@MOZ_DISPLAY_NAME@-selain +Name[fr]=Navigateur Web @MOZ_DISPLAY_NAME@ +Name[gl]=Navegador web @MOZ_DISPLAY_NAME@ +Name[he]=דפדפן האינטרנט @MOZ_DISPLAY_NAME@ +Name[hr]=@MOZ_DISPLAY_NAME@ web preglednik +Name[hu]=@MOZ_DISPLAY_NAME@ webböngésző +Name[it]=@MOZ_DISPLAY_NAME@ Browser Web +Name[ja]=@MOZ_DISPLAY_NAME@ ウェブ・ブラウザ +Name[ko]=@MOZ_DISPLAY_NAME@ 웹 브라우저 +Name[ku]=Geroka torê @MOZ_DISPLAY_NAME@ +Name[lt]=@MOZ_DISPLAY_NAME@ interneto naršyklė +Name[nb]=@MOZ_DISPLAY_NAME@ Nettleser +Name[nl]=@MOZ_DISPLAY_NAME@ webbrowser +Name[nn]=@MOZ_DISPLAY_NAME@ Nettlesar +Name[no]=@MOZ_DISPLAY_NAME@ Nettleser +Name[pl]=Przeglądarka WWW @MOZ_DISPLAY_NAME@ +Name[pt]=@MOZ_DISPLAY_NAME@ Navegador Web +Name[pt_BR]=Navegador Web @MOZ_DISPLAY_NAME@ +Name[ro]=@MOZ_DISPLAY_NAME@ – Navigator Internet +Name[ru]=Веб-браузер @MOZ_DISPLAY_NAME@ +Name[sk]=@MOZ_DISPLAY_NAME@ - internetový prehliadač +Name[sl]=@MOZ_DISPLAY_NAME@ spletni brskalnik +Name[sv]=@MOZ_DISPLAY_NAME@ webbläsare +Name[tr]=@MOZ_DISPLAY_NAME@ Web Tarayıcısı +Name[ug]=@MOZ_DISPLAY_NAME@ توركۆرگۈ +Name[uk]=Веб-браузер @MOZ_DISPLAY_NAME@ +Name[vi]=Trình duyệt web @MOZ_DISPLAY_NAME@ +Name[zh_CN]=@MOZ_DISPLAY_NAME@ 网络浏览器 +Name[zh_TW]=@MOZ_DISPLAY_NAME@ 網路瀏覽器 +%%endif +Comment=Browse the World Wide Web +Comment[ar]=تصفح الشبكة العنكبوتية العالمية +Comment[ast]=Restola pela Rede +Comment[bn]=ইন্টারনেট ব্রাউজ করুন +Comment[ca]=Navegueu per la web +Comment[cs]=Prohlížení stránek World Wide Webu +Comment[da]=Surf på internettet +Comment[de]=Im Internet surfen +Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web) +Comment[es]=Navegue por la web +Comment[et]=Lehitse veebi +Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید +Comment[fi]=Selaa Internetin WWW-sivuja +Comment[fr]=Naviguer sur le Web +Comment[gl]=Navegar pola rede +Comment[he]=גלישה ברחבי האינטרנט +Comment[hr]=Pretražite web +Comment[hu]=A világháló böngészése +Comment[it]=Esplora il web +Comment[ja]=ウェブを閲覧します +Comment[ko]=웹을 돌아 다닙니다 +Comment[ku]=Li torê bigere +Comment[lt]=Naršykite internete +Comment[nb]=Surf på nettet +Comment[nl]=Verken het internet +Comment[nn]=Surf på nettet +Comment[no]=Surf på nettet +Comment[pl]=Przeglądanie stron WWW +Comment[pt]=Navegue na Internet +Comment[pt_BR]=Navegue na Internet +Comment[ro]=Navigați pe Internet +Comment[ru]=Доступ в Интернет +Comment[sk]=Prehliadanie internetu +Comment[sl]=Brskajte po spletu +Comment[sv]=Surfa på webben +Comment[tr]=İnternet'te Gezinin +Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ +Comment[uk]=Перегляд сторінок Інтернету +Comment[vi]=Để duyệt các trang web +Comment[zh_CN]=浏览互联网 +Comment[zh_TW]=瀏覽網際網路 +GenericName=Web Browser +GenericName[ar]=متصفح ويب +GenericName[ast]=Restolador Web +GenericName[bn]=ওয়েব ব্রাউজার +GenericName[ca]=Navegador web +GenericName[cs]=Webový prohlížeč +GenericName[da]=Webbrowser +GenericName[el]=Περιηγητής διαδικτύου +GenericName[es]=Navegador web +GenericName[et]=Veebibrauser +GenericName[fa]=مرورگر اینترنتی +GenericName[fi]=WWW-selain +GenericName[fr]=Navigateur Web +GenericName[gl]=Navegador Web +GenericName[he]=דפדפן אינטרנט +GenericName[hr]=Web preglednik +GenericName[hu]=Webböngésző +GenericName[it]=Browser web +GenericName[ja]=ウェブ・ブラウザ +GenericName[ko]=웹 브라우저 +GenericName[ku]=Geroka torê +GenericName[lt]=Interneto naršyklė +GenericName[nb]=Nettleser +GenericName[nl]=Webbrowser +GenericName[nn]=Nettlesar +GenericName[no]=Nettleser +GenericName[pl]=Przeglądarka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador Web +GenericName[ro]=Navigator Internet +GenericName[ru]=Веб-браузер +GenericName[sk]=Internetový prehliadač +GenericName[sl]=Spletni brskalnik +GenericName[sv]=Webbläsare +GenericName[tr]=Web Tarayıcı +GenericName[ug]=توركۆرگۈ +GenericName[uk]=Веб-браузер +GenericName[vi]=Trình duyệt Web +GenericName[zh_CN]=网络浏览器 +GenericName[zh_TW]=網路瀏覽器 +Keywords=Internet;WWW;Browser;Web;Explorer +Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب +Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador +Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer +Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer +Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet +Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen +Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;Firefox;Φιρεφοχ;Ιντερνετ +Keywords[es]=Explorador;Internet;WWW +Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa +Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur +Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה; +Keywords[hr]=Internet;WWW;preglednik;Web +Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer +Keywords[it]=Internet;WWW;Browser;Web;Navigatore +Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk +Keywords[ja]=Internet;WWW;Web;インターネット;ブラウザ;ウェブ;エクスプローラ +Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside +Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online +Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador +Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador +Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис +Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer +Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet +Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara +Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд +Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyệt;Trang web +Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;网页;浏览;上网;火狐;Firefox;ff;互联网;网站; +Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;網際網路;網路;瀏覽器;上網;網頁;火狐 +Exec=@MOZ_APP_NAME@ %u +Terminal=false +X-MultipleArgs=false +Type=Application +Icon=@MOZ_APP_NAME@ +Categories=GNOME;GTK;Network;WebBrowser; +MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall; +StartupNotify=true +Actions=new-window;new-private-window; + +[Desktop Action new-window] +Name=Open a New Window +Name[ar]=افتح نافذة جديدة +Name[ast]=Abrir una ventana nueva +Name[bn]=Abrir una ventana nueva +Name[ca]=Obre una finestra nova +Name[cs]=Otevřít nové okno +Name[da]=Åbn et nyt vindue +Name[de]=Ein neues Fenster öffnen +Name[el]=Νέο παράθυρο +Name[es]=Abrir una ventana nueva +Name[fi]=Avaa uusi ikkuna +Name[fr]=Ouvrir une nouvelle fenêtre +Name[gl]=Abrir unha nova xanela +Name[he]=פתיחת חלון חדש +Name[hr]=Otvori novi prozor +Name[hu]=Új ablak nyitása +Name[it]=Apri una nuova finestra +Name[ja]=新しいウィンドウを開く +Name[ko]=새 창 열기 +Name[ku]=Paceyeke nû veke +Name[lt]=Atverti naują langą +Name[nb]=Åpne et nytt vindu +Name[nl]=Nieuw venster openen +Name[pt]=Abrir nova janela +Name[pt_BR]=Abrir nova janela +Name[ro]=Deschide o fereastră nouă +Name[ru]=Новое окно +Name[sk]=Otvoriť nové okno +Name[sl]=Odpri novo okno +Name[sv]=Öppna ett nytt fönster +Name[tr]=Yeni pencere aç +Name[ug]=يېڭى كۆزنەك ئېچىش +Name[uk]=Відкрити нове вікно +Name[vi]=Mở cửa sổ mới +Name[zh_CN]=新建窗口 +Name[zh_TW]=開啟新視窗 +Exec=@MOZ_APP_NAME@ -new-window + +[Desktop Action new-private-window] +Name=Open a New Private Window +Name[ar]=افتح نافذة جديدة للتصفح الخاص +Name[ca]=Obre una finestra nova en mode d'incògnit +Name[cs]=Otevřít nové anonymní okno +Name[de]=Ein neues privates Fenster öffnen +Name[el]=Νέο ιδιωτικό παράθυρο +Name[es]=Abrir una ventana privada nueva +Name[fi]=Avaa uusi yksityinen ikkuna +Name[fr]=Ouvrir une nouvelle fenêtre de navigation privée +Name[he]=פתיחת חלון גלישה פרטית חדש +Name[hu]=Új privát ablak nyitása +Name[it]=Apri una nuova finestra anonima +Name[nb]=Åpne et nytt privat vindu +Name[ru]=Новое приватное окно +Name[sl]=Odpri novo okno zasebnega brskanja +Name[sv]=Öppna ett nytt privat fönster +Name[tr]=Yeni gizli pencere aç +Name[uk]=Відкрити нове вікно у потайливому режимі +Name[zh_TW]=開啟新隱私瀏覽視窗 +Exec=@MOZ_APP_NAME@ -private-window diff --git a/profiles/ehooks/www-client/firefox-91/files/unity-menubar.patch b/profiles/ehooks/www-client/firefox-91/files/unity-menubar.patch new file mode 100644 index 00000000..0c4103b6 --- /dev/null +++ b/profiles/ehooks/www-client/firefox-91/files/unity-menubar.patch @@ -0,0 +1,5299 @@ +--- a/browser/base/content/browser-menubar.inc ++++ b/browser/base/content/browser-menubar.inc +@@ -7,7 +7,12 @@ + # On macOS, we don't track whether activation of the native menubar happened + # with the keyboard. + #ifndef XP_MACOSX +- onpopupshowing="if (event.target.parentNode.parentNode == this) ++ onpopupshowing="if (event.target.parentNode.parentNode == this && ++#ifdef MOZ_WIDGET_GTK ++ document.documentElement.getAttribute('shellshowingmenubar') != 'true') ++#else ++ true) ++#endif + this.setAttribute('openedwithkey', + event.target.parentNode.openedWithKey);" + #endif +--- a/browser/base/content/browser.js ++++ b/browser/base/content/browser.js +@@ -6251,11 +6251,18 @@ function onViewToolbarsPopupShowing(aEve + MozXULElement.insertFTLIfNeeded("browser/toolbarContextMenu.ftl"); + let firstMenuItem = aInsertPoint || popup.firstElementChild; + let toolbarNodes = gNavToolbox.querySelectorAll("toolbar"); ++ ++ let shellShowingMenubar = document.documentElement.getAttribute("shellshowingmenubar") == "true"; ++ + for (let toolbar of toolbarNodes) { + if (!toolbar.hasAttribute("toolbarname")) { + continue; + } + ++ if (shellShowingMenubar && toolbar.id == "toolbar-menubar") { ++ continue; ++ } ++ + if (toolbar.id == "PersonalToolbar" && gBookmarksToolbar2h2020) { + let menu = BookmarkingUI.buildBookmarksToolbarSubmenu(toolbar); + popup.insertBefore(menu, firstMenuItem); +--- a/browser/components/places/content/places.xhtml ++++ b/browser/components/places/content/places.xhtml +@@ -169,7 +169,7 @@ + ++ + GetPopupState(this)) { + case ePopupShown: +@@ -233,6 +237,11 @@ void XULPopupElement::GetState(nsString& + break; + } + } ++#ifdef MOZ_WIDGET_GTK ++ else if (GetAttr(kNameSpaceID_None, nsGkAtoms::_moz_nativemenupopupstate, nativeState)) { ++ aState = nativeState; ++ } ++#endif + } + + nsINode* XULPopupElement::GetTriggerNode() const { +--- a/dom/xul/moz.build ++++ b/dom/xul/moz.build +@@ -83,6 +83,11 @@ LOCAL_INCLUDES += [ + + include("/ipc/chromium/chromium-config.mozbuild") + ++if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk": ++ LOCAL_INCLUDES += [ ++ "/widget/gtk", ++ ] ++ + FINAL_LIBRARY = "xul" + + if CONFIG["CC_TYPE"] in ("clang", "gcc"): +--- a/layout/build/moz.build ++++ b/layout/build/moz.build +@@ -68,6 +68,10 @@ elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "an + "/dom/system", + "/dom/system/android", + ] ++elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk": ++ LOCAL_INCLUDES += [ ++ "/widget/gtk", ++ ] + + XPCOM_MANIFESTS += [ + "components.conf", +--- a/modules/libpref/init/all.js ++++ b/modules/libpref/init/all.js +@@ -301,6 +301,9 @@ pref("dom.mouseevent.click.hack.use_lega + // Fastback caching - if this pref is negative, then we calculate the number + // of content viewers to cache based on the amount of available memory. + pref("browser.sessionhistory.max_total_viewers", -1); ++#ifdef MOZ_WIDGET_GTK ++pref("ui.use_unity_menubar", true); ++#endif + + pref("browser.display.force_inline_alttext", false); // true = force ALT text for missing images to be layed out inline + // 0 = no external leading, +--- a/toolkit/content/xul.css ++++ b/toolkit/content/xul.css +@@ -230,6 +230,13 @@ toolbar[type="menubar"] { + } + %endif + ++%ifdef MOZ_WIDGET_GTK ++*|*:root[shellshowingmenubar="true"] ++toolbar[type="menubar"]:not([customizing="true"]) { ++ display: none !important; ++} ++%endif ++ + toolbarspring { + -moz-box-flex: 1000; + } +--- a/widget/gtk/moz.build ++++ b/widget/gtk/moz.build +@@ -33,6 +33,7 @@ + EXPORTS.mozilla += ["WidgetUtilsGtk.h"] + + EXPORTS.mozilla.widget += [ ++ "NativeMenuSupport.h", + "WindowSurface.h", + "WindowSurfaceProvider.h", + ] +@@ -45,6 +46,7 @@ + "MozContainer.cpp", + "MPRISServiceHandler.cpp", + "NativeKeyBindings.cpp", ++ "NativeMenuSupport.cpp", + "nsApplicationChooser.cpp", + "nsAppShell.cpp", + "nsBidiKeyboard.cpp", +@@ -70,6 +72,15 @@ + + SOURCES += [ + "MediaKeysEventSourceFactory.cpp", ++ "nsDbusmenu.cpp", ++ "nsMenu.cpp", # conflicts with X11 headers ++ "nsMenuBar.cpp", ++ "nsMenuContainer.cpp", ++ "nsMenuItem.cpp", ++ "nsMenuObject.cpp", ++ "nsMenuSeparator.cpp", ++ "nsNativeMenuDocListener.cpp", ++ "nsNativeMenuService.cpp", + "nsNativeThemeGTK.cpp", # conflicts with X11 headers + "nsWindow.cpp", # conflicts with X11 headers + "WaylandVsyncSource.cpp", # conflicts with X11 headers +@@ -138,6 +149,7 @@ + "/layout/base", + "/layout/forms", + "/layout/generic", ++ "/layout/style", + "/layout/xul", + "/other-licenses/atk-1.0", + "/third_party/cups/include", +--- /dev/null ++++ b/widget/gtk/nsDbusmenu.cpp +@@ -0,0 +1,61 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "nsDbusmenu.h" ++#include "prlink.h" ++#include "mozilla/ArrayUtils.h" ++ ++#define FUNC(name, type, params) \ ++nsDbusmenuFunctions::_##name##_fn nsDbusmenuFunctions::s_##name; ++DBUSMENU_GLIB_FUNCTIONS ++DBUSMENU_GTK_FUNCTIONS ++#undef FUNC ++ ++static PRLibrary *gDbusmenuGlib = nullptr; ++static PRLibrary *gDbusmenuGtk = nullptr; ++ ++typedef void (*nsDbusmenuFunc)(); ++struct nsDbusmenuDynamicFunction { ++ const char *functionName; ++ nsDbusmenuFunc *function; ++}; ++ ++/* static */ nsresult ++nsDbusmenuFunctions::Init() ++{ ++#define FUNC(name, type, params) \ ++ { #name, (nsDbusmenuFunc *)&nsDbusmenuFunctions::s_##name }, ++ static const nsDbusmenuDynamicFunction kDbusmenuGlibSymbols[] = { ++ DBUSMENU_GLIB_FUNCTIONS ++ }; ++ static const nsDbusmenuDynamicFunction kDbusmenuGtkSymbols[] = { ++ DBUSMENU_GTK_FUNCTIONS ++ }; ++ ++#define LOAD_LIBRARY(symbol, name) \ ++ if (!g##symbol) { \ ++ g##symbol = PR_LoadLibrary(name); \ ++ if (!g##symbol) { \ ++ return NS_ERROR_FAILURE; \ ++ } \ ++ } \ ++ for (uint32_t i = 0; i < mozilla::ArrayLength(k##symbol##Symbols); ++i) { \ ++ *k##symbol##Symbols[i].function = \ ++ PR_FindFunctionSymbol(g##symbol, k##symbol##Symbols[i].functionName); \ ++ if (!*k##symbol##Symbols[i].function) { \ ++ return NS_ERROR_FAILURE; \ ++ } \ ++ } ++ ++ LOAD_LIBRARY(DbusmenuGlib, "libdbusmenu-glib.so.4") ++#ifdef MOZ_WIDGET_GTK ++ LOAD_LIBRARY(DbusmenuGtk, "libdbusmenu-gtk3.so.4") ++#endif ++#undef LOAD_LIBRARY ++ ++ return NS_OK; ++} +--- /dev/null ++++ b/widget/gtk/nsDbusmenu.h +@@ -0,0 +1,101 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsDbusmenu_h__ ++#define __nsDbusmenu_h__ ++ ++#include "nsError.h" ++ ++#include ++#include ++ ++#define DBUSMENU_GLIB_FUNCTIONS \ ++ FUNC(dbusmenu_menuitem_child_add_position, gboolean, (DbusmenuMenuitem *mi, DbusmenuMenuitem *child, guint position)) \ ++ FUNC(dbusmenu_menuitem_child_append, gboolean, (DbusmenuMenuitem *mi, DbusmenuMenuitem *child)) \ ++ FUNC(dbusmenu_menuitem_child_delete, gboolean, (DbusmenuMenuitem *mi, DbusmenuMenuitem *child)) \ ++ FUNC(dbusmenu_menuitem_get_children, GList*, (DbusmenuMenuitem *mi)) \ ++ FUNC(dbusmenu_menuitem_new, DbusmenuMenuitem*, (void)) \ ++ FUNC(dbusmenu_menuitem_property_get, const gchar*, (DbusmenuMenuitem *mi, const gchar *property)) \ ++ FUNC(dbusmenu_menuitem_property_get_bool, gboolean, (DbusmenuMenuitem *mi, const gchar *property)) \ ++ FUNC(dbusmenu_menuitem_property_remove, void, (DbusmenuMenuitem *mi, const gchar *property)) \ ++ FUNC(dbusmenu_menuitem_property_set, gboolean, (DbusmenuMenuitem *mi, const gchar *property, const gchar *value)) \ ++ FUNC(dbusmenu_menuitem_property_set_bool, gboolean, (DbusmenuMenuitem *mi, const gchar *property, const gboolean value)) \ ++ FUNC(dbusmenu_menuitem_property_set_int, gboolean, (DbusmenuMenuitem *mi, const gchar *property, const gint value)) \ ++ FUNC(dbusmenu_menuitem_show_to_user, void, (DbusmenuMenuitem *mi, guint timestamp)) \ ++ FUNC(dbusmenu_menuitem_take_children, GList*, (DbusmenuMenuitem *mi)) \ ++ FUNC(dbusmenu_server_new, DbusmenuServer*, (const gchar *object)) \ ++ FUNC(dbusmenu_server_set_root, void, (DbusmenuServer *server, DbusmenuMenuitem *root)) \ ++ FUNC(dbusmenu_server_set_status, void, (DbusmenuServer *server, DbusmenuStatus status)) ++ ++#define DBUSMENU_GTK_FUNCTIONS \ ++ FUNC(dbusmenu_menuitem_property_set_image, gboolean, (DbusmenuMenuitem *menuitem, const gchar *property, const GdkPixbuf *data)) \ ++ FUNC(dbusmenu_menuitem_property_set_shortcut, gboolean, (DbusmenuMenuitem *menuitem, guint key, GdkModifierType modifier)) ++ ++typedef struct _DbusmenuMenuitem DbusmenuMenuitem; ++typedef struct _DbusmenuServer DbusmenuServer; ++ ++enum DbusmenuStatus { ++ DBUSMENU_STATUS_NORMAL, ++ DBUSMENU_STATUS_NOTICE ++}; ++ ++#define DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU "submenu" ++#define DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY "children-display" ++#define DBUSMENU_MENUITEM_PROP_ENABLED "enabled" ++#define DBUSMENU_MENUITEM_PROP_ICON_DATA "icon-data" ++#define DBUSMENU_MENUITEM_PROP_LABEL "label" ++#define DBUSMENU_MENUITEM_PROP_SHORTCUT "shortcut" ++#define DBUSMENU_MENUITEM_PROP_TYPE "type" ++#define DBUSMENU_MENUITEM_PROP_TOGGLE_STATE "toggle-state" ++#define DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE "toggle-type" ++#define DBUSMENU_MENUITEM_PROP_VISIBLE "visible" ++#define DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW "about-to-show" ++#define DBUSMENU_MENUITEM_SIGNAL_EVENT "event" ++#define DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED "item-activated" ++#define DBUSMENU_MENUITEM_TOGGLE_CHECK "checkmark" ++#define DBUSMENU_MENUITEM_TOGGLE_RADIO "radio" ++#define DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED 1 ++#define DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED 0 ++#define DBUSMENU_SERVER_PROP_DBUS_OBJECT "dbus-object" ++ ++class nsDbusmenuFunctions ++{ ++public: ++ nsDbusmenuFunctions() = delete; ++ ++ static nsresult Init(); ++ ++#define FUNC(name, type, params) \ ++ typedef type (*_##name##_fn) params; \ ++ static _##name##_fn s_##name; ++ DBUSMENU_GLIB_FUNCTIONS ++ DBUSMENU_GTK_FUNCTIONS ++#undef FUNC ++ ++}; ++ ++#define dbusmenu_menuitem_child_add_position nsDbusmenuFunctions::s_dbusmenu_menuitem_child_add_position ++#define dbusmenu_menuitem_child_append nsDbusmenuFunctions::s_dbusmenu_menuitem_child_append ++#define dbusmenu_menuitem_child_delete nsDbusmenuFunctions::s_dbusmenu_menuitem_child_delete ++#define dbusmenu_menuitem_get_children nsDbusmenuFunctions::s_dbusmenu_menuitem_get_children ++#define dbusmenu_menuitem_new nsDbusmenuFunctions::s_dbusmenu_menuitem_new ++#define dbusmenu_menuitem_property_get nsDbusmenuFunctions::s_dbusmenu_menuitem_property_get ++#define dbusmenu_menuitem_property_get_bool nsDbusmenuFunctions::s_dbusmenu_menuitem_property_get_bool ++#define dbusmenu_menuitem_property_remove nsDbusmenuFunctions::s_dbusmenu_menuitem_property_remove ++#define dbusmenu_menuitem_property_set nsDbusmenuFunctions::s_dbusmenu_menuitem_property_set ++#define dbusmenu_menuitem_property_set_bool nsDbusmenuFunctions::s_dbusmenu_menuitem_property_set_bool ++#define dbusmenu_menuitem_property_set_int nsDbusmenuFunctions::s_dbusmenu_menuitem_property_set_int ++#define dbusmenu_menuitem_show_to_user nsDbusmenuFunctions::s_dbusmenu_menuitem_show_to_user ++#define dbusmenu_menuitem_take_children nsDbusmenuFunctions::s_dbusmenu_menuitem_take_children ++#define dbusmenu_server_new nsDbusmenuFunctions::s_dbusmenu_server_new ++#define dbusmenu_server_set_root nsDbusmenuFunctions::s_dbusmenu_server_set_root ++#define dbusmenu_server_set_status nsDbusmenuFunctions::s_dbusmenu_server_set_status ++ ++#define dbusmenu_menuitem_property_set_image nsDbusmenuFunctions::s_dbusmenu_menuitem_property_set_image ++#define dbusmenu_menuitem_property_set_shortcut nsDbusmenuFunctions::s_dbusmenu_menuitem_property_set_shortcut ++ ++#endif /* __nsDbusmenu_h__ */ +--- /dev/null ++++ b/widget/gtk/nsMenu.cpp +@@ -0,0 +1,795 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#define _IMPL_NS_LAYOUT ++ ++#include "mozilla/dom/Document.h" ++#include "mozilla/dom/Element.h" ++#include "mozilla/Assertions.h" ++#include "mozilla/ComputedStyleInlines.h" ++#include "mozilla/EventDispatcher.h" ++#include "mozilla/MouseEvents.h" ++#include "mozilla/PresShell.h" ++#include "mozilla/PresShellInlines.h" ++#include "nsComponentManagerUtils.h" ++#include "nsContentUtils.h" ++#include "nsCSSValue.h" ++#include "nsGkAtoms.h" ++#include "nsGtkUtils.h" ++#include "nsAtom.h" ++#include "nsIContent.h" ++#include "nsIRunnable.h" ++#include "nsITimer.h" ++#include "nsString.h" ++#include "nsStyleStruct.h" ++#include "nsThreadUtils.h" ++ ++#include "nsNativeMenuDocListener.h" ++ ++#include ++ ++#include "nsMenu.h" ++ ++using namespace mozilla; ++ ++class nsMenuContentInsertedEvent : public Runnable ++{ ++public: ++ nsMenuContentInsertedEvent(nsMenu *aMenu, ++ nsIContent *aContainer, ++ nsIContent *aChild, ++ nsIContent *aPrevSibling) : ++ Runnable("nsMenuContentInsertedEvent"), ++ mWeakMenu(aMenu), ++ mContainer(aContainer), ++ mChild(aChild), ++ mPrevSibling(aPrevSibling) { } ++ ++ NS_IMETHODIMP Run() ++ { ++ if (!mWeakMenu) { ++ return NS_OK; ++ } ++ ++ static_cast(mWeakMenu.get())->HandleContentInserted(mContainer, ++ mChild, ++ mPrevSibling); ++ return NS_OK; ++ } ++ ++private: ++ nsWeakMenuObject mWeakMenu; ++ ++ nsCOMPtr mContainer; ++ nsCOMPtr mChild; ++ nsCOMPtr mPrevSibling; ++}; ++ ++class nsMenuContentRemovedEvent : public Runnable ++{ ++public: ++ nsMenuContentRemovedEvent(nsMenu *aMenu, ++ nsIContent *aContainer, ++ nsIContent *aChild) : ++ Runnable("nsMenuContentRemovedEvent"), ++ mWeakMenu(aMenu), ++ mContainer(aContainer), ++ mChild(aChild) { } ++ ++ NS_IMETHODIMP Run() ++ { ++ if (!mWeakMenu) { ++ return NS_OK; ++ } ++ ++ static_cast(mWeakMenu.get())->HandleContentRemoved(mContainer, ++ mChild); ++ return NS_OK; ++ } ++ ++private: ++ nsWeakMenuObject mWeakMenu; ++ ++ nsCOMPtr mContainer; ++ nsCOMPtr mChild; ++}; ++ ++static void ++DispatchMouseEvent(nsIContent *aTarget, mozilla::EventMessage aMsg) ++{ ++ if (!aTarget) { ++ return; ++ } ++ ++ WidgetMouseEvent event(true, aMsg, nullptr, WidgetMouseEvent::eReal); ++ EventDispatcher::Dispatch(aTarget, nullptr, &event); ++} ++ ++void ++nsMenu::SetPopupState(EPopupState aState) ++{ ++ mPopupState = aState; ++ ++ if (!mPopupContent) { ++ return; ++ } ++ ++ nsAutoString state; ++ switch (aState) { ++ case ePopupState_Showing: ++ state.Assign(u"showing"_ns); ++ break; ++ case ePopupState_Open: ++ state.Assign(u"open"_ns); ++ break; ++ case ePopupState_Hiding: ++ state.Assign(u"hiding"_ns); ++ break; ++ default: ++ break; ++ } ++ ++ if (state.IsEmpty()) { ++ mPopupContent->AsElement()->UnsetAttr( ++ kNameSpaceID_None, nsGkAtoms::_moz_nativemenupopupstate, ++ false); ++ } else { ++ mPopupContent->AsElement()->SetAttr( ++ kNameSpaceID_None, nsGkAtoms::_moz_nativemenupopupstate, ++ state, false); ++ } ++} ++ ++/* static */ void ++nsMenu::DoOpenCallback(nsITimer *aTimer, void *aClosure) ++{ ++ nsMenu* self = static_cast(aClosure); ++ ++ dbusmenu_menuitem_show_to_user(self->GetNativeData(), 0); ++ ++ self->mOpenDelayTimer = nullptr; ++} ++ ++/* static */ void ++nsMenu::menu_event_cb(DbusmenuMenuitem *menu, ++ const gchar *name, ++ GVariant *value, ++ guint timestamp, ++ gpointer user_data) ++{ ++ nsMenu *self = static_cast(user_data); ++ ++ nsAutoCString event(name); ++ ++ if (event.Equals("closed"_ns)) { ++ self->OnClose(); ++ return; ++ } ++ ++ if (event.Equals("opened"_ns)) { ++ self->OnOpen(); ++ return; ++ } ++} ++ ++void ++nsMenu::MaybeAddPlaceholderItem() ++{ ++ MOZ_ASSERT(!IsInBatchedUpdate(), ++ "Shouldn't be modifying the native menu structure now"); ++ ++ GList *children = dbusmenu_menuitem_get_children(GetNativeData()); ++ if (!children) { ++ MOZ_ASSERT(!mPlaceholderItem); ++ ++ mPlaceholderItem = dbusmenu_menuitem_new(); ++ if (!mPlaceholderItem) { ++ return; ++ } ++ ++ dbusmenu_menuitem_property_set_bool(mPlaceholderItem, ++ DBUSMENU_MENUITEM_PROP_VISIBLE, ++ false); ++ ++ MOZ_ALWAYS_TRUE( ++ dbusmenu_menuitem_child_append(GetNativeData(), mPlaceholderItem)); ++ } ++} ++ ++void ++nsMenu::EnsureNoPlaceholderItem() ++{ ++ MOZ_ASSERT(!IsInBatchedUpdate(), ++ "Shouldn't be modifying the native menu structure now"); ++ ++ if (!mPlaceholderItem) { ++ return; ++ } ++ ++ MOZ_ALWAYS_TRUE( ++ dbusmenu_menuitem_child_delete(GetNativeData(), mPlaceholderItem)); ++ MOZ_ASSERT(!dbusmenu_menuitem_get_children(GetNativeData())); ++ ++ g_object_unref(mPlaceholderItem); ++ mPlaceholderItem = nullptr; ++} ++ ++void ++nsMenu::OnOpen() ++{ ++ if (mNeedsRebuild) { ++ Build(); ++ } ++ ++ nsWeakMenuObject self(this); ++ nsCOMPtr origPopupContent(mPopupContent); ++ { ++ nsNativeMenuDocListener::BlockUpdatesScope updatesBlocker; ++ ++ SetPopupState(ePopupState_Showing); ++ DispatchMouseEvent(mPopupContent, eXULPopupShowing); ++ ++ ContentNode()->AsElement()->SetAttr(kNameSpaceID_None, nsGkAtoms::open, ++ u"true"_ns, true); ++ } ++ ++ if (!self) { ++ // We were deleted! ++ return; ++ } ++ ++ // I guess that the popup could have changed ++ if (origPopupContent != mPopupContent) { ++ return; ++ } ++ ++ nsNativeMenuDocListener::BlockUpdatesScope updatesBlocker; ++ ++ size_t count = ChildCount(); ++ for (size_t i = 0; i < count; ++i) { ++ ChildAt(i)->ContainerIsOpening(); ++ } ++ ++ SetPopupState(ePopupState_Open); ++ DispatchMouseEvent(mPopupContent, eXULPopupShown); ++} ++ ++void ++nsMenu::Build() ++{ ++ mNeedsRebuild = false; ++ ++ while (ChildCount() > 0) { ++ RemoveChildAt(0); ++ } ++ ++ InitializePopup(); ++ ++ if (!mPopupContent) { ++ return; ++ } ++ ++ uint32_t count = mPopupContent->GetChildCount(); ++ for (uint32_t i = 0; i < count; ++i) { ++ nsIContent *childContent = mPopupContent->GetChildAt_Deprecated(i); ++ ++ UniquePtr child = CreateChild(childContent); ++ ++ if (!child) { ++ continue; ++ } ++ ++ AppendChild(std::move(child)); ++ } ++} ++ ++void ++nsMenu::InitializePopup() ++{ ++ nsCOMPtr oldPopupContent; ++ oldPopupContent.swap(mPopupContent); ++ ++ for (uint32_t i = 0; i < ContentNode()->GetChildCount(); ++i) { ++ nsIContent *child = ContentNode()->GetChildAt_Deprecated(i); ++ ++ if (child->NodeInfo()->NameAtom() == nsGkAtoms::menupopup) { ++ mPopupContent = child; ++ break; ++ } ++ } ++ ++ if (oldPopupContent == mPopupContent) { ++ return; ++ } ++ ++ // The popup has changed ++ ++ if (oldPopupContent) { ++ DocListener()->UnregisterForContentChanges(oldPopupContent); ++ } ++ ++ SetPopupState(ePopupState_Closed); ++ ++ if (!mPopupContent) { ++ return; ++ } ++ ++ DocListener()->RegisterForContentChanges(mPopupContent, this); ++} ++ ++void ++nsMenu::RemoveChildAt(size_t aIndex) ++{ ++ MOZ_ASSERT(IsInBatchedUpdate() || !mPlaceholderItem, ++ "Shouldn't have a placeholder menuitem"); ++ ++ nsMenuContainer::RemoveChildAt(aIndex, !IsInBatchedUpdate()); ++ StructureMutated(); ++ ++ if (!IsInBatchedUpdate()) { ++ MaybeAddPlaceholderItem(); ++ } ++} ++ ++void ++nsMenu::RemoveChild(nsIContent *aChild) ++{ ++ size_t index = IndexOf(aChild); ++ if (index == NoIndex) { ++ return; ++ } ++ ++ RemoveChildAt(index); ++} ++ ++void ++nsMenu::InsertChildAfter(UniquePtr aChild, ++ nsIContent *aPrevSibling) ++{ ++ if (!IsInBatchedUpdate()) { ++ EnsureNoPlaceholderItem(); ++ } ++ ++ nsMenuContainer::InsertChildAfter(std::move(aChild), aPrevSibling, ++ !IsInBatchedUpdate()); ++ StructureMutated(); ++} ++ ++void ++nsMenu::AppendChild(UniquePtr aChild) ++{ ++ if (!IsInBatchedUpdate()) { ++ EnsureNoPlaceholderItem(); ++ } ++ ++ nsMenuContainer::AppendChild(std::move(aChild), !IsInBatchedUpdate()); ++ StructureMutated(); ++} ++ ++bool ++nsMenu::IsInBatchedUpdate() const ++{ ++ return mBatchedUpdateState != eBatchedUpdateState_Inactive; ++} ++ ++void ++nsMenu::StructureMutated() ++{ ++ if (!IsInBatchedUpdate()) { ++ return; ++ } ++ ++ mBatchedUpdateState = eBatchedUpdateState_DidMutate; ++} ++ ++bool ++nsMenu::CanOpen() const ++{ ++ bool isVisible = dbusmenu_menuitem_property_get_bool(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_VISIBLE); ++ bool isDisabled = ContentNode()->AsElement()->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::disabled, ++ nsGkAtoms::_true, ++ eCaseMatters); ++ ++ return (isVisible && !isDisabled); ++} ++ ++void ++nsMenu::HandleContentInserted(nsIContent *aContainer, ++ nsIContent *aChild, ++ nsIContent *aPrevSibling) ++{ ++ if (aContainer == mPopupContent) { ++ UniquePtr child = CreateChild(aChild); ++ ++ if (child) { ++ InsertChildAfter(std::move(child), aPrevSibling); ++ } ++ } else { ++ Build(); ++ } ++} ++ ++void ++nsMenu::HandleContentRemoved(nsIContent *aContainer, nsIContent *aChild) ++{ ++ if (aContainer == mPopupContent) { ++ RemoveChild(aChild); ++ } else { ++ Build(); ++ } ++} ++ ++void ++nsMenu::InitializeNativeData() ++{ ++ // Dbusmenu provides an "about-to-show" signal, and also "opened" and ++ // "closed" events. However, Unity is the only thing that sends ++ // both "about-to-show" and "opened" events. Unity 2D and the HUD only ++ // send "opened" events, so we ignore "about-to-show" (I don't think ++ // there's any real difference between them anyway). ++ // To complicate things, there are certain conditions where we don't ++ // get a "closed" event, so we need to be able to handle this :/ ++ g_signal_connect(G_OBJECT(GetNativeData()), "event", ++ G_CALLBACK(menu_event_cb), this); ++ ++ mNeedsRebuild = true; ++ mNeedsUpdate = true; ++ ++ MaybeAddPlaceholderItem(); ++} ++ ++void ++nsMenu::Update(ComputedStyle *aComputedStyle) ++{ ++ if (mNeedsUpdate) { ++ mNeedsUpdate = false; ++ ++ UpdateLabel(); ++ UpdateSensitivity(); ++ } ++ ++ UpdateVisibility(aComputedStyle); ++ UpdateIcon(aComputedStyle); ++} ++ ++nsMenuObject::PropertyFlags ++nsMenu::SupportedProperties() const ++{ ++ return static_cast( ++ nsMenuObject::ePropLabel | ++ nsMenuObject::ePropEnabled | ++ nsMenuObject::ePropVisible | ++ nsMenuObject::ePropIconData | ++ nsMenuObject::ePropChildDisplay ++ ); ++} ++ ++void ++nsMenu::OnAttributeChanged(nsIContent *aContent, nsAtom *aAttribute) ++{ ++ MOZ_ASSERT(aContent == ContentNode() || aContent == mPopupContent, ++ "Received an event that wasn't meant for us!"); ++ ++ if (mNeedsUpdate) { ++ return; ++ } ++ ++ if (aContent != ContentNode()) { ++ return; ++ } ++ ++ if (!Parent()->IsBeingDisplayed()) { ++ mNeedsUpdate = true; ++ return; ++ } ++ ++ if (aAttribute == nsGkAtoms::disabled) { ++ UpdateSensitivity(); ++ } else if (aAttribute == nsGkAtoms::label || ++ aAttribute == nsGkAtoms::accesskey || ++ aAttribute == nsGkAtoms::crop) { ++ UpdateLabel(); ++ } else if (aAttribute == nsGkAtoms::hidden || ++ aAttribute == nsGkAtoms::collapsed) { ++ RefPtr style = GetComputedStyle(); ++ UpdateVisibility(style); ++ } else if (aAttribute == nsGkAtoms::image) { ++ RefPtr style = GetComputedStyle(); ++ UpdateIcon(style); ++ } ++} ++ ++void ++nsMenu::OnContentInserted(nsIContent *aContainer, nsIContent *aChild, ++ nsIContent *aPrevSibling) ++{ ++ MOZ_ASSERT(aContainer == ContentNode() || aContainer == mPopupContent, ++ "Received an event that wasn't meant for us!"); ++ ++ if (mNeedsRebuild) { ++ return; ++ } ++ ++ if (mPopupState == ePopupState_Closed) { ++ mNeedsRebuild = true; ++ return; ++ } ++ ++ nsContentUtils::AddScriptRunner( ++ new nsMenuContentInsertedEvent(this, aContainer, aChild, ++ aPrevSibling)); ++} ++ ++void ++nsMenu::OnContentRemoved(nsIContent *aContainer, nsIContent *aChild) ++{ ++ MOZ_ASSERT(aContainer == ContentNode() || aContainer == mPopupContent, ++ "Received an event that wasn't meant for us!"); ++ ++ if (mNeedsRebuild) { ++ return; ++ } ++ ++ if (mPopupState == ePopupState_Closed) { ++ mNeedsRebuild = true; ++ return; ++ } ++ ++ nsContentUtils::AddScriptRunner( ++ new nsMenuContentRemovedEvent(this, aContainer, aChild)); ++} ++ ++/* ++ * Some menus (eg, the History menu in Firefox) refresh themselves on ++ * opening by removing all children and then re-adding new ones. As this ++ * happens whilst the menu is opening in Unity, it causes some flickering ++ * as the menu popup is resized multiple times. To avoid this, we try to ++ * reuse native menu items when the menu structure changes during a ++ * batched update. If we can handle menu structure changes from Gecko ++ * just by updating properties of native menu items (rather than destroying ++ * and creating new ones), then we eliminate any flickering that occurs as ++ * the menu is opened. To do this, we don't modify any native menu items ++ * until the end of the update batch. ++ */ ++ ++void ++nsMenu::OnBeginUpdates(nsIContent *aContent) ++{ ++ MOZ_ASSERT(aContent == ContentNode() || aContent == mPopupContent, ++ "Received an event that wasn't meant for us!"); ++ MOZ_ASSERT(!IsInBatchedUpdate(), "Already in an update batch!"); ++ ++ if (aContent != mPopupContent) { ++ return; ++ } ++ ++ mBatchedUpdateState = eBatchedUpdateState_Active; ++} ++ ++void ++nsMenu::OnEndUpdates() ++{ ++ if (!IsInBatchedUpdate()) { ++ return; ++ } ++ ++ bool didMutate = mBatchedUpdateState == eBatchedUpdateState_DidMutate; ++ mBatchedUpdateState = eBatchedUpdateState_Inactive; ++ ++ /* Optimize for the case where we only had attribute changes */ ++ if (!didMutate) { ++ return; ++ } ++ ++ EnsureNoPlaceholderItem(); ++ ++ GList *nextNativeChild = dbusmenu_menuitem_get_children(GetNativeData()); ++ DbusmenuMenuitem *nextOwnedNativeChild = nullptr; ++ ++ size_t count = ChildCount(); ++ ++ // Find the first native menu item that is `owned` by a corresponding ++ // Gecko menuitem ++ for (size_t i = 0; i < count; ++i) { ++ if (ChildAt(i)->GetNativeData()) { ++ nextOwnedNativeChild = ChildAt(i)->GetNativeData(); ++ break; ++ } ++ } ++ ++ // Now iterate over all Gecko menuitems ++ for (size_t i = 0; i < count; ++i) { ++ nsMenuObject *child = ChildAt(i); ++ ++ if (child->GetNativeData()) { ++ // This child already has a corresponding native menuitem. ++ // Remove all preceding orphaned native items. At this point, we ++ // modify the native menu structure. ++ while (nextNativeChild && ++ nextNativeChild->data != nextOwnedNativeChild) { ++ ++ DbusmenuMenuitem *data = ++ static_cast(nextNativeChild->data); ++ nextNativeChild = nextNativeChild->next; ++ ++ MOZ_ALWAYS_TRUE(dbusmenu_menuitem_child_delete(GetNativeData(), ++ data)); ++ } ++ ++ if (nextNativeChild) { ++ nextNativeChild = nextNativeChild->next; ++ } ++ ++ // Now find the next native menu item that is `owned` ++ nextOwnedNativeChild = nullptr; ++ for (size_t j = i + 1; j < count; ++j) { ++ if (ChildAt(j)->GetNativeData()) { ++ nextOwnedNativeChild = ChildAt(j)->GetNativeData(); ++ break; ++ } ++ } ++ } else { ++ // This child is new, and doesn't have a native menu item. Find one! ++ if (nextNativeChild && ++ nextNativeChild->data != nextOwnedNativeChild) { ++ ++ DbusmenuMenuitem *data = ++ static_cast(nextNativeChild->data); ++ ++ if (NS_SUCCEEDED(child->AdoptNativeData(data))) { ++ nextNativeChild = nextNativeChild->next; ++ } ++ } ++ ++ // There wasn't a suitable one available, so create a new one. ++ // At this point, we modify the native menu structure. ++ if (!child->GetNativeData()) { ++ child->CreateNativeData(); ++ MOZ_ALWAYS_TRUE( ++ dbusmenu_menuitem_child_add_position(GetNativeData(), ++ child->GetNativeData(), ++ i)); ++ } ++ } ++ } ++ ++ while (nextNativeChild) { ++ DbusmenuMenuitem *data = ++ static_cast(nextNativeChild->data); ++ nextNativeChild = nextNativeChild->next; ++ ++ MOZ_ALWAYS_TRUE(dbusmenu_menuitem_child_delete(GetNativeData(), data)); ++ } ++ ++ MaybeAddPlaceholderItem(); ++} ++ ++nsMenu::nsMenu(nsMenuContainer *aParent, nsIContent *aContent) : ++ nsMenuContainer(aParent, aContent), ++ mNeedsRebuild(false), ++ mNeedsUpdate(false), ++ mPlaceholderItem(nullptr), ++ mPopupState(ePopupState_Closed), ++ mBatchedUpdateState(eBatchedUpdateState_Inactive) ++{ ++ MOZ_COUNT_CTOR(nsMenu); ++} ++ ++nsMenu::~nsMenu() ++{ ++ if (IsInBatchedUpdate()) { ++ OnEndUpdates(); ++ } ++ ++ // Although nsTArray will take care of this in its destructor, ++ // we have to manually ensure children are removed from our native menu ++ // item, just in case our parent recycles us ++ while (ChildCount() > 0) { ++ RemoveChildAt(0); ++ } ++ ++ EnsureNoPlaceholderItem(); ++ ++ if (DocListener() && mPopupContent) { ++ DocListener()->UnregisterForContentChanges(mPopupContent); ++ } ++ ++ if (GetNativeData()) { ++ g_signal_handlers_disconnect_by_func(GetNativeData(), ++ FuncToGpointer(menu_event_cb), ++ this); ++ } ++ ++ MOZ_COUNT_DTOR(nsMenu); ++} ++ ++nsMenuObject::EType ++nsMenu::Type() const ++{ ++ return eType_Menu; ++} ++ ++bool ++nsMenu::IsBeingDisplayed() const ++{ ++ return mPopupState == ePopupState_Open; ++} ++ ++bool ++nsMenu::NeedsRebuild() const ++{ ++ return mNeedsRebuild; ++} ++ ++void ++nsMenu::OpenMenu() ++{ ++ if (!CanOpen()) { ++ return; ++ } ++ ++ if (mOpenDelayTimer) { ++ return; ++ } ++ ++ // Here, we synchronously fire popupshowing and popupshown events and then ++ // open the menu after a short delay. This allows the menu to refresh before ++ // it's shown, and avoids an issue where keyboard focus is not on the first ++ // item of the history menu in Firefox when opening it with the keyboard, ++ // because extra items to appear at the top of the menu ++ ++ OnOpen(); ++ ++ mOpenDelayTimer = do_CreateInstance(NS_TIMER_CONTRACTID); ++ if (!mOpenDelayTimer) { ++ return; ++ } ++ ++ if (NS_FAILED(mOpenDelayTimer->InitWithNamedFuncCallback(DoOpenCallback, ++ this, ++ 100, ++ nsITimer::TYPE_ONE_SHOT, ++ "nsMenu::DoOpenCallback"))) { ++ mOpenDelayTimer = nullptr; ++ } ++} ++ ++void ++nsMenu::OnClose() ++{ ++ if (mPopupState == ePopupState_Closed) { ++ return; ++ } ++ ++ MOZ_ASSERT(nsContentUtils::IsSafeToRunScript()); ++ ++ // We do this to avoid mutating our view of the menu until ++ // after we have finished ++ nsNativeMenuDocListener::BlockUpdatesScope updatesBlocker; ++ ++ SetPopupState(ePopupState_Hiding); ++ DispatchMouseEvent(mPopupContent, eXULPopupHiding); ++ ++ // Sigh, make sure all of our descendants are closed, as we don't ++ // always get closed events for submenus when scrubbing quickly through ++ // the menu ++ size_t count = ChildCount(); ++ for (size_t i = 0; i < count; ++i) { ++ if (ChildAt(i)->Type() == nsMenuObject::eType_Menu) { ++ static_cast(ChildAt(i))->OnClose(); ++ } ++ } ++ ++ SetPopupState(ePopupState_Closed); ++ DispatchMouseEvent(mPopupContent, eXULPopupHidden); ++ ++ ContentNode()->AsElement()->UnsetAttr(kNameSpaceID_None, nsGkAtoms::open, ++ true); ++} ++ +--- /dev/null ++++ b/widget/gtk/nsMenu.h +@@ -0,0 +1,123 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsMenu_h__ ++#define __nsMenu_h__ ++ ++#include "mozilla/Attributes.h" ++#include "mozilla/UniquePtr.h" ++#include "nsCOMPtr.h" ++ ++#include "nsDbusmenu.h" ++#include "nsMenuContainer.h" ++#include "nsMenuObject.h" ++ ++#include ++ ++class nsAtom; ++class nsIContent; ++class nsITimer; ++ ++#define NSMENU_NUMBER_OF_POPUPSTATE_BITS 2U ++#define NSMENU_NUMBER_OF_FLAGS 4U ++ ++// This class represents a menu ++class nsMenu final : public nsMenuContainer ++{ ++public: ++ nsMenu(nsMenuContainer *aParent, nsIContent *aContent); ++ ~nsMenu(); ++ ++ nsMenuObject::EType Type() const override; ++ ++ bool IsBeingDisplayed() const override; ++ bool NeedsRebuild() const override; ++ ++ // Tell the desktop shell to display this menu ++ void OpenMenu(); ++ ++ // Normally called via the shell, but it's public so that child ++ // menuitems can do the shells work. Sigh.... ++ void OnClose(); ++ ++private: ++ friend class nsMenuContentInsertedEvent; ++ friend class nsMenuContentRemovedEvent; ++ ++ enum EPopupState { ++ ePopupState_Closed, ++ ePopupState_Showing, ++ ePopupState_Open, ++ ePopupState_Hiding ++ }; ++ ++ void SetPopupState(EPopupState aState); ++ ++ static void DoOpenCallback(nsITimer *aTimer, void *aClosure); ++ static void menu_event_cb(DbusmenuMenuitem *menu, ++ const gchar *name, ++ GVariant *value, ++ guint timestamp, ++ gpointer user_data); ++ ++ // We add a placeholder item to empty menus so that Unity actually treats ++ // us as a proper menu, rather than a menuitem without a submenu ++ void MaybeAddPlaceholderItem(); ++ ++ // Removes a placeholder item if it exists and asserts that this succeeds ++ void EnsureNoPlaceholderItem(); ++ ++ void OnOpen(); ++ void Build(); ++ void InitializePopup(); ++ void RemoveChildAt(size_t aIndex); ++ void RemoveChild(nsIContent *aChild); ++ void InsertChildAfter(mozilla::UniquePtr aChild, ++ nsIContent *aPrevSibling); ++ void AppendChild(mozilla::UniquePtr aChild); ++ bool IsInBatchedUpdate() const; ++ void StructureMutated(); ++ bool CanOpen() const; ++ ++ void HandleContentInserted(nsIContent *aContainer, ++ nsIContent *aChild, ++ nsIContent *aPrevSibling); ++ void HandleContentRemoved(nsIContent *aContainer, ++ nsIContent *aChild); ++ ++ void InitializeNativeData() override; ++ void Update(mozilla::ComputedStyle *aComputedStyle) override; ++ nsMenuObject::PropertyFlags SupportedProperties() const override; ++ ++ void OnAttributeChanged(nsIContent *aContent, nsAtom *aAttribute) override; ++ void OnContentInserted(nsIContent *aContainer, nsIContent *aChild, ++ nsIContent *aPrevSibling) override; ++ void OnContentRemoved(nsIContent *aContainer, nsIContent *aChild) override; ++ void OnBeginUpdates(nsIContent *aContent) override; ++ void OnEndUpdates() override; ++ ++ bool mNeedsRebuild; ++ bool mNeedsUpdate; ++ ++ DbusmenuMenuitem *mPlaceholderItem; ++ ++ EPopupState mPopupState; ++ ++ enum EBatchedUpdateState { ++ eBatchedUpdateState_Inactive, ++ eBatchedUpdateState_Active, ++ eBatchedUpdateState_DidMutate ++ }; ++ ++ EBatchedUpdateState mBatchedUpdateState; ++ ++ nsCOMPtr mPopupContent; ++ ++ nsCOMPtr mOpenDelayTimer; ++}; ++ ++#endif /* __nsMenu_h__ */ +--- /dev/null ++++ b/widget/gtk/nsMenuBar.cpp +@@ -0,0 +1,548 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "mozilla/Assertions.h" ++#include "mozilla/DebugOnly.h" ++#include "mozilla/dom/Document.h" ++#include "mozilla/dom/Element.h" ++#include "mozilla/dom/Event.h" ++#include "mozilla/dom/KeyboardEvent.h" ++#include "mozilla/dom/KeyboardEventBinding.h" ++#include "mozilla/Preferences.h" ++#include "nsContentUtils.h" ++#include "nsIDOMEventListener.h" ++#include "nsIRunnable.h" ++#include "nsIWidget.h" ++#include "nsTArray.h" ++#include "nsUnicharUtils.h" ++ ++#include "nsMenu.h" ++#include "nsNativeMenuService.h" ++ ++#include ++#include ++#include ++#include ++ ++#include "nsMenuBar.h" ++ ++using namespace mozilla; ++ ++static bool ++ShouldHandleKeyEvent(dom::KeyboardEvent *aEvent) ++{ ++ return !aEvent->DefaultPrevented() && aEvent->IsTrusted(); ++} ++ ++class nsMenuBarContentInsertedEvent : public Runnable ++{ ++public: ++ nsMenuBarContentInsertedEvent(nsMenuBar *aMenuBar, ++ nsIContent *aChild, ++ nsIContent *aPrevSibling) : ++ Runnable("nsMenuBarContentInsertedEvent"), ++ mWeakMenuBar(aMenuBar), ++ mChild(aChild), ++ mPrevSibling(aPrevSibling) { } ++ ++ NS_IMETHODIMP Run() ++ { ++ if (!mWeakMenuBar) { ++ return NS_OK; ++ } ++ ++ static_cast(mWeakMenuBar.get())->HandleContentInserted(mChild, ++ mPrevSibling); ++ return NS_OK; ++ } ++ ++private: ++ nsWeakMenuObject mWeakMenuBar; ++ ++ nsCOMPtr mChild; ++ nsCOMPtr mPrevSibling; ++}; ++ ++class nsMenuBarContentRemovedEvent : public Runnable ++{ ++public: ++ nsMenuBarContentRemovedEvent(nsMenuBar *aMenuBar, ++ nsIContent *aChild) : ++ Runnable("nsMenuBarContentRemovedEvent"), ++ mWeakMenuBar(aMenuBar), ++ mChild(aChild) { } ++ ++ NS_IMETHODIMP Run() ++ { ++ if (!mWeakMenuBar) { ++ return NS_OK; ++ } ++ ++ static_cast(mWeakMenuBar.get())->HandleContentRemoved(mChild); ++ return NS_OK; ++ } ++ ++private: ++ nsWeakMenuObject mWeakMenuBar; ++ ++ nsCOMPtr mChild; ++}; ++ ++class nsMenuBar::DocEventListener final : public nsIDOMEventListener ++{ ++public: ++ NS_DECL_ISUPPORTS ++ NS_DECL_NSIDOMEVENTLISTENER ++ ++ DocEventListener(nsMenuBar *aOwner) : mOwner(aOwner) { }; ++ ++private: ++ ~DocEventListener() { }; ++ ++ nsMenuBar *mOwner; ++}; ++ ++NS_IMPL_ISUPPORTS(nsMenuBar::DocEventListener, nsIDOMEventListener) ++ ++NS_IMETHODIMP ++nsMenuBar::DocEventListener::HandleEvent(dom::Event *aEvent) ++{ ++ nsAutoString type; ++ aEvent->GetType(type); ++ ++ if (type.Equals(u"focus"_ns)) { ++ mOwner->Focus(); ++ } else if (type.Equals(u"blur"_ns)) { ++ mOwner->Blur(); ++ } ++ ++ RefPtr keyEvent = aEvent->AsKeyboardEvent(); ++ if (!keyEvent) { ++ return NS_OK; ++ } ++ ++ if (type.Equals(u"keypress"_ns)) { ++ return mOwner->Keypress(keyEvent); ++ } else if (type.Equals(u"keydown"_ns)) { ++ return mOwner->KeyDown(keyEvent); ++ } else if (type.Equals(u"keyup"_ns)) { ++ return mOwner->KeyUp(keyEvent); ++ } ++ ++ return NS_OK; ++} ++ ++nsMenuBar::nsMenuBar(nsIContent *aMenuBarNode) : ++ nsMenuContainer(new nsNativeMenuDocListener(aMenuBarNode), aMenuBarNode), ++ mTopLevel(nullptr), ++ mServer(nullptr), ++ mIsActive(false) ++{ ++ MOZ_COUNT_CTOR(nsMenuBar); ++} ++ ++nsresult ++nsMenuBar::Init(nsIWidget *aParent) ++{ ++ MOZ_ASSERT(aParent); ++ ++ GdkWindow *gdkWin = static_cast( ++ aParent->GetNativeData(NS_NATIVE_WINDOW)); ++ if (!gdkWin) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ gpointer user_data = nullptr; ++ gdk_window_get_user_data(gdkWin, &user_data); ++ if (!user_data || !GTK_IS_CONTAINER(user_data)) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ mTopLevel = gtk_widget_get_toplevel(GTK_WIDGET(user_data)); ++ if (!mTopLevel) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ g_object_ref(mTopLevel); ++ ++ nsAutoCString path; ++ path.Append("/com/canonical/menu/"_ns); ++ char xid[10]; ++ sprintf(xid, "%X", static_cast( ++ GDK_WINDOW_XID(gtk_widget_get_window(mTopLevel)))); ++ path.Append(xid); ++ ++ mServer = dbusmenu_server_new(path.get()); ++ if (!mServer) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ CreateNativeData(); ++ if (!GetNativeData()) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ dbusmenu_server_set_root(mServer, GetNativeData()); ++ ++ mEventListener = new DocEventListener(this); ++ ++ mDocument = do_QueryInterface(ContentNode()->OwnerDoc()); ++ ++ mAccessKey = Preferences::GetInt("ui.key.menuAccessKey"); ++ if (mAccessKey == dom::KeyboardEvent_Binding::DOM_VK_SHIFT) { ++ mAccessKeyMask = eModifierShift; ++ } else if (mAccessKey == dom::KeyboardEvent_Binding::DOM_VK_CONTROL) { ++ mAccessKeyMask = eModifierCtrl; ++ } else if (mAccessKey == dom::KeyboardEvent_Binding::DOM_VK_ALT) { ++ mAccessKeyMask = eModifierAlt; ++ } else if (mAccessKey == dom::KeyboardEvent_Binding::DOM_VK_META) { ++ mAccessKeyMask = eModifierMeta; ++ } else { ++ mAccessKeyMask = eModifierAlt; ++ } ++ ++ return NS_OK; ++} ++ ++void ++nsMenuBar::Build() ++{ ++ uint32_t count = ContentNode()->GetChildCount(); ++ for (uint32_t i = 0; i < count; ++i) { ++ nsIContent *childContent = ContentNode()->GetChildAt_Deprecated(i); ++ ++ UniquePtr child = CreateChild(childContent); ++ ++ if (!child) { ++ continue; ++ } ++ ++ AppendChild(std::move(child)); ++ } ++} ++ ++void ++nsMenuBar::DisconnectDocumentEventListeners() ++{ ++ mDocument->RemoveEventListener(u"focus"_ns, ++ mEventListener, ++ true); ++ mDocument->RemoveEventListener(u"blur"_ns, ++ mEventListener, ++ true); ++ mDocument->RemoveEventListener(u"keypress"_ns, ++ mEventListener, ++ false); ++ mDocument->RemoveEventListener(u"keydown"_ns, ++ mEventListener, ++ false); ++ mDocument->RemoveEventListener(u"keyup"_ns, ++ mEventListener, ++ false); ++} ++ ++void ++nsMenuBar::SetShellShowingMenuBar(bool aShowing) ++{ ++ ContentNode()->OwnerDoc()->GetRootElement()->SetAttr( ++ kNameSpaceID_None, nsGkAtoms::shellshowingmenubar, ++ aShowing ? u"true"_ns : u"false"_ns, ++ true); ++} ++ ++void ++nsMenuBar::Focus() ++{ ++ ContentNode()->AsElement()->SetAttr(kNameSpaceID_None, ++ nsGkAtoms::openedwithkey, ++ u"false"_ns, true); ++} ++ ++void ++nsMenuBar::Blur() ++{ ++ // We do this here in case we lose focus before getting the ++ // keyup event, which leaves the menubar state looking like ++ // the alt key is stuck down ++ dbusmenu_server_set_status(mServer, DBUSMENU_STATUS_NORMAL); ++} ++ ++nsMenuBar::ModifierFlags ++nsMenuBar::GetModifiersFromEvent(dom::KeyboardEvent *aEvent) ++{ ++ ModifierFlags modifiers = static_cast(0); ++ ++ if (aEvent->AltKey()) { ++ modifiers = static_cast(modifiers | eModifierAlt); ++ } ++ ++ if (aEvent->ShiftKey()) { ++ modifiers = static_cast(modifiers | eModifierShift); ++ } ++ ++ if (aEvent->CtrlKey()) { ++ modifiers = static_cast(modifiers | eModifierCtrl); ++ } ++ ++ if (aEvent->MetaKey()) { ++ modifiers = static_cast(modifiers | eModifierMeta); ++ } ++ ++ return modifiers; ++} ++ ++nsresult ++nsMenuBar::Keypress(dom::KeyboardEvent *aEvent) ++{ ++ if (!ShouldHandleKeyEvent(aEvent)) { ++ return NS_OK; ++ } ++ ++ ModifierFlags modifiers = GetModifiersFromEvent(aEvent); ++ if (((modifiers & mAccessKeyMask) == 0) || ++ ((modifiers & ~mAccessKeyMask) != 0)) { ++ return NS_OK; ++ } ++ ++ uint32_t charCode = aEvent->CharCode(); ++ if (charCode == 0) { ++ return NS_OK; ++ } ++ ++ char16_t ch = char16_t(charCode); ++ char16_t chl = ToLowerCase(ch); ++ char16_t chu = ToUpperCase(ch); ++ ++ nsMenuObject *found = nullptr; ++ uint32_t count = ChildCount(); ++ for (uint32_t i = 0; i < count; ++i) { ++ nsAutoString accesskey; ++ ChildAt(i)->ContentNode()->AsElement()->GetAttr(kNameSpaceID_None, ++ nsGkAtoms::accesskey, ++ accesskey); ++ const nsAutoString::char_type *key = accesskey.BeginReading(); ++ if (*key == chu || *key == chl) { ++ found = ChildAt(i); ++ break; ++ } ++ } ++ ++ if (!found || found->Type() != nsMenuObject::eType_Menu) { ++ return NS_OK; ++ } ++ ++ ContentNode()->AsElement()->SetAttr(kNameSpaceID_None, ++ nsGkAtoms::openedwithkey, ++ u"true"_ns, true); ++ static_cast(found)->OpenMenu(); ++ ++ aEvent->StopPropagation(); ++ aEvent->PreventDefault(); ++ ++ return NS_OK; ++} ++ ++nsresult ++nsMenuBar::KeyDown(dom::KeyboardEvent *aEvent) ++{ ++ if (!ShouldHandleKeyEvent(aEvent)) { ++ return NS_OK; ++ } ++ ++ uint32_t keyCode = aEvent->KeyCode(); ++ ModifierFlags modifiers = GetModifiersFromEvent(aEvent); ++ if ((keyCode != mAccessKey) || ((modifiers & ~mAccessKeyMask) != 0)) { ++ return NS_OK; ++ } ++ ++ dbusmenu_server_set_status(mServer, DBUSMENU_STATUS_NOTICE); ++ ++ return NS_OK; ++} ++ ++nsresult ++nsMenuBar::KeyUp(dom::KeyboardEvent *aEvent) ++{ ++ if (!ShouldHandleKeyEvent(aEvent)) { ++ return NS_OK; ++ } ++ ++ uint32_t keyCode = aEvent->KeyCode(); ++ if (keyCode == mAccessKey) { ++ dbusmenu_server_set_status(mServer, DBUSMENU_STATUS_NORMAL); ++ } ++ ++ return NS_OK; ++} ++ ++void ++nsMenuBar::HandleContentInserted(nsIContent *aChild, nsIContent *aPrevSibling) ++{ ++ UniquePtr child = CreateChild(aChild); ++ ++ if (!child) { ++ return; ++ } ++ ++ InsertChildAfter(std::move(child), aPrevSibling); ++} ++ ++void ++nsMenuBar::HandleContentRemoved(nsIContent *aChild) ++{ ++ RemoveChild(aChild); ++} ++ ++void ++nsMenuBar::OnContentInserted(nsIContent *aContainer, nsIContent *aChild, ++ nsIContent *aPrevSibling) ++{ ++ MOZ_ASSERT(aContainer == ContentNode(), ++ "Received an event that wasn't meant for us"); ++ ++ nsContentUtils::AddScriptRunner( ++ new nsMenuBarContentInsertedEvent(this, aChild, aPrevSibling)); ++} ++ ++void ++nsMenuBar::OnContentRemoved(nsIContent *aContainer, nsIContent *aChild) ++{ ++ MOZ_ASSERT(aContainer == ContentNode(), ++ "Received an event that wasn't meant for us"); ++ ++ nsContentUtils::AddScriptRunner( ++ new nsMenuBarContentRemovedEvent(this, aChild)); ++} ++ ++nsMenuBar::~nsMenuBar() ++{ ++ nsNativeMenuService *service = nsNativeMenuService::GetSingleton(); ++ if (service) { ++ service->NotifyNativeMenuBarDestroyed(this); ++ } ++ ++ if (ContentNode()) { ++ SetShellShowingMenuBar(false); ++ } ++ ++ // We want to destroy all children before dropping our reference ++ // to the doc listener ++ while (ChildCount() > 0) { ++ RemoveChildAt(0); ++ } ++ ++ if (mTopLevel) { ++ g_object_unref(mTopLevel); ++ } ++ ++ if (DocListener()) { ++ DocListener()->Stop(); ++ } ++ ++ if (mDocument) { ++ DisconnectDocumentEventListeners(); ++ } ++ ++ if (mServer) { ++ g_object_unref(mServer); ++ } ++ ++ MOZ_COUNT_DTOR(nsMenuBar); ++} ++ ++/* static */ UniquePtr ++nsMenuBar::Create(nsIWidget *aParent, nsIContent *aMenuBarNode) ++{ ++ UniquePtr menubar(new nsMenuBar(aMenuBarNode)); ++ if (NS_FAILED(menubar->Init(aParent))) { ++ return nullptr; ++ } ++ ++ return menubar; ++} ++ ++nsMenuObject::EType ++nsMenuBar::Type() const ++{ ++ return eType_MenuBar; ++} ++ ++bool ++nsMenuBar::IsBeingDisplayed() const ++{ ++ return true; ++} ++ ++uint32_t ++nsMenuBar::WindowId() const ++{ ++ return static_cast(GDK_WINDOW_XID(gtk_widget_get_window(mTopLevel))); ++} ++ ++nsCString ++nsMenuBar::ObjectPath() const ++{ ++ gchar *tmp; ++ g_object_get(mServer, DBUSMENU_SERVER_PROP_DBUS_OBJECT, &tmp, NULL); ++ ++ nsCString result; ++ result.Adopt(tmp); ++ ++ return result; ++} ++ ++void ++nsMenuBar::Activate() ++{ ++ if (mIsActive) { ++ return; ++ } ++ ++ mIsActive = true; ++ ++ mDocument->AddEventListener(u"focus"_ns, ++ mEventListener, ++ true); ++ mDocument->AddEventListener(u"blur"_ns, ++ mEventListener, ++ true); ++ mDocument->AddEventListener(u"keypress"_ns, ++ mEventListener, ++ false); ++ mDocument->AddEventListener(u"keydown"_ns, ++ mEventListener, ++ false); ++ mDocument->AddEventListener(u"keyup"_ns, ++ mEventListener, ++ false); ++ ++ // Clear this. Not sure if we really need to though ++ ContentNode()->AsElement()->SetAttr(kNameSpaceID_None, ++ nsGkAtoms::openedwithkey, ++ u"false"_ns, true); ++ ++ DocListener()->Start(); ++ Build(); ++ SetShellShowingMenuBar(true); ++} ++ ++void ++nsMenuBar::Deactivate() ++{ ++ if (!mIsActive) { ++ return; ++ } ++ ++ mIsActive = false; ++ ++ SetShellShowingMenuBar(false); ++ while (ChildCount() > 0) { ++ RemoveChildAt(0); ++ } ++ DocListener()->Stop(); ++ DisconnectDocumentEventListeners(); ++} +--- /dev/null ++++ b/widget/gtk/nsMenuBar.h +@@ -0,0 +1,111 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsMenuBar_h__ ++#define __nsMenuBar_h__ ++ ++#include "mozilla/Attributes.h" ++#include "mozilla/UniquePtr.h" ++#include "nsCOMPtr.h" ++#include "nsString.h" ++ ++#include "nsDbusmenu.h" ++#include "nsMenuContainer.h" ++#include "nsMenuObject.h" ++ ++#include ++ ++class nsIContent; ++class nsIWidget; ++class nsMenuBarDocEventListener; ++ ++namespace mozilla { ++namespace dom { ++class Document; ++class KeyboardEvent; ++} ++} ++ ++/* ++ * The menubar class. There is one of these per window (and the window ++ * owns its menubar). Each menubar has an object path, and the service is ++ * responsible for telling the desktop shell which object path corresponds ++ * to a particular window. A menubar and its hierarchy also own a ++ * nsNativeMenuDocListener. ++ */ ++class nsMenuBar final : public nsMenuContainer ++{ ++public: ++ ~nsMenuBar() override; ++ ++ static mozilla::UniquePtr Create(nsIWidget *aParent, ++ nsIContent *aMenuBarNode); ++ ++ nsMenuObject::EType Type() const override; ++ ++ bool IsBeingDisplayed() const override; ++ ++ // Get the native window ID for this menubar ++ uint32_t WindowId() const; ++ ++ // Get the object path for this menubar ++ nsCString ObjectPath() const; ++ ++ // Get the top-level GtkWindow handle ++ GtkWidget* TopLevelWindow() { return mTopLevel; } ++ ++ // Called from the menuservice when the menubar is about to be registered. ++ // Causes the native menubar to be created, and the XUL menubar to be hidden ++ void Activate(); ++ ++ // Called from the menuservice when the menubar is no longer registered ++ // with the desktop shell. Will cause the XUL menubar to be shown again ++ void Deactivate(); ++ ++private: ++ class DocEventListener; ++ friend class nsMenuBarContentInsertedEvent; ++ friend class nsMenuBarContentRemovedEvent; ++ ++ enum ModifierFlags { ++ eModifierShift = (1 << 0), ++ eModifierCtrl = (1 << 1), ++ eModifierAlt = (1 << 2), ++ eModifierMeta = (1 << 3) ++ }; ++ ++ nsMenuBar(nsIContent *aMenuBarNode); ++ nsresult Init(nsIWidget *aParent); ++ void Build(); ++ void DisconnectDocumentEventListeners(); ++ void SetShellShowingMenuBar(bool aShowing); ++ void Focus(); ++ void Blur(); ++ ModifierFlags GetModifiersFromEvent(mozilla::dom::KeyboardEvent *aEvent); ++ nsresult Keypress(mozilla::dom::KeyboardEvent *aEvent); ++ nsresult KeyDown(mozilla::dom::KeyboardEvent *aEvent); ++ nsresult KeyUp(mozilla::dom::KeyboardEvent *aEvent); ++ ++ void HandleContentInserted(nsIContent *aChild, ++ nsIContent *aPrevSibling); ++ void HandleContentRemoved(nsIContent *aChild); ++ ++ void OnContentInserted(nsIContent *aContainer, nsIContent *aChild, ++ nsIContent *aPrevSibling) override; ++ void OnContentRemoved(nsIContent *aContainer, nsIContent *aChild) override; ++ ++ GtkWidget *mTopLevel; ++ DbusmenuServer *mServer; ++ nsCOMPtr mDocument; ++ RefPtr mEventListener; ++ ++ uint32_t mAccessKey; ++ ModifierFlags mAccessKeyMask; ++ bool mIsActive; ++}; ++ ++#endif /* __nsMenuBar_h__ */ +--- /dev/null ++++ b/widget/gtk/nsMenuContainer.cpp +@@ -0,0 +1,170 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "mozilla/DebugOnly.h" ++#include "nsGkAtoms.h" ++#include "nsIContent.h" ++ ++#include "nsDbusmenu.h" ++#include "nsMenu.h" ++#include "nsMenuItem.h" ++#include "nsMenuSeparator.h" ++ ++#include "nsMenuContainer.h" ++ ++using namespace mozilla; ++ ++const nsMenuContainer::ChildTArray::index_type nsMenuContainer::NoIndex = nsMenuContainer::ChildTArray::NoIndex; ++ ++typedef UniquePtr (*nsMenuObjectConstructor)(nsMenuContainer*, ++ nsIContent*); ++ ++template ++static UniquePtr CreateMenuObject(nsMenuContainer *aContainer, ++ nsIContent *aContent) ++{ ++ return UniquePtr(new T(aContainer, aContent)); ++} ++ ++static nsMenuObjectConstructor ++GetMenuObjectConstructor(nsIContent *aContent) ++{ ++ if (aContent->IsXULElement(nsGkAtoms::menuitem)) { ++ return CreateMenuObject; ++ } else if (aContent->IsXULElement(nsGkAtoms::menu)) { ++ return CreateMenuObject; ++ } else if (aContent->IsXULElement(nsGkAtoms::menuseparator)) { ++ return CreateMenuObject; ++ } ++ ++ return nullptr; ++} ++ ++static bool ++ContentIsSupported(nsIContent *aContent) ++{ ++ return GetMenuObjectConstructor(aContent) ? true : false; ++} ++ ++nsMenuContainer::nsMenuContainer(nsMenuContainer *aParent, ++ nsIContent *aContent) : ++ nsMenuObject(aParent, aContent) ++{ ++} ++ ++nsMenuContainer::nsMenuContainer(nsNativeMenuDocListener *aListener, ++ nsIContent *aContent) : ++ nsMenuObject(aListener, aContent) ++{ ++} ++ ++UniquePtr ++nsMenuContainer::CreateChild(nsIContent *aContent) ++{ ++ nsMenuObjectConstructor ctor = GetMenuObjectConstructor(aContent); ++ if (!ctor) { ++ // There are plenty of node types we might stumble across that ++ // aren't supported ++ return nullptr; ++ } ++ ++ UniquePtr res = ctor(this, aContent); ++ return res; ++} ++ ++size_t ++nsMenuContainer::IndexOf(nsIContent *aChild) const ++{ ++ if (!aChild) { ++ return NoIndex; ++ } ++ ++ size_t count = ChildCount(); ++ for (size_t i = 0; i < count; ++i) { ++ if (ChildAt(i)->ContentNode() == aChild) { ++ return i; ++ } ++ } ++ ++ return NoIndex; ++} ++ ++void ++nsMenuContainer::RemoveChildAt(size_t aIndex, bool aUpdateNative) ++{ ++ MOZ_ASSERT(aIndex < ChildCount()); ++ ++ if (aUpdateNative) { ++ MOZ_ALWAYS_TRUE( ++ dbusmenu_menuitem_child_delete(GetNativeData(), ++ ChildAt(aIndex)->GetNativeData())); ++ } ++ ++ mChildren.RemoveElementAt(aIndex); ++} ++ ++void ++nsMenuContainer::RemoveChild(nsIContent *aChild, bool aUpdateNative) ++{ ++ size_t index = IndexOf(aChild); ++ if (index == NoIndex) { ++ return; ++ } ++ ++ RemoveChildAt(index, aUpdateNative); ++} ++ ++void ++nsMenuContainer::InsertChildAfter(UniquePtr aChild, ++ nsIContent *aPrevSibling, ++ bool aUpdateNative) ++{ ++ size_t index = IndexOf(aPrevSibling); ++ MOZ_ASSERT(!aPrevSibling || index != NoIndex); ++ ++ ++index; ++ ++ if (aUpdateNative) { ++ aChild->CreateNativeData(); ++ MOZ_ALWAYS_TRUE( ++ dbusmenu_menuitem_child_add_position(GetNativeData(), ++ aChild->GetNativeData(), ++ index)); ++ } ++ ++ mChildren.InsertElementAt(index, std::move(aChild)); ++} ++ ++void ++nsMenuContainer::AppendChild(UniquePtr aChild, ++ bool aUpdateNative) ++{ ++ if (aUpdateNative) { ++ aChild->CreateNativeData(); ++ MOZ_ALWAYS_TRUE( ++ dbusmenu_menuitem_child_append(GetNativeData(), ++ aChild->GetNativeData())); ++ } ++ ++ mChildren.AppendElement(std::move(aChild)); ++} ++ ++bool ++nsMenuContainer::NeedsRebuild() const ++{ ++ return false; ++} ++ ++/* static */ nsIContent* ++nsMenuContainer::GetPreviousSupportedSibling(nsIContent *aContent) ++{ ++ do { ++ aContent = aContent->GetPreviousSibling(); ++ } while (aContent && !ContentIsSupported(aContent)); ++ ++ return aContent; ++} +--- /dev/null ++++ b/widget/gtk/nsMenuContainer.h +@@ -0,0 +1,70 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsMenuContainer_h__ ++#define __nsMenuContainer_h__ ++ ++#include "mozilla/UniquePtr.h" ++#include "nsTArray.h" ++ ++#include "nsMenuObject.h" ++ ++class nsIContent; ++class nsNativeMenuDocListener; ++ ++// Base class for containers (menus and menubars) ++class nsMenuContainer : public nsMenuObject ++{ ++public: ++ typedef nsTArray > ChildTArray; ++ ++ // Determine if this container is being displayed on screen. Must be ++ // implemented by subclasses. Must return true if the container is ++ // in the fully open state, or false otherwise ++ virtual bool IsBeingDisplayed() const = 0; ++ ++ // Determine if this container will be rebuilt the next time it opens. ++ // Returns false by default but can be overridden by subclasses ++ virtual bool NeedsRebuild() const; ++ ++ // Return the first previous sibling that is of a type supported by the ++ // menu system ++ static nsIContent* GetPreviousSupportedSibling(nsIContent *aContent); ++ ++ static const ChildTArray::index_type NoIndex; ++ ++protected: ++ nsMenuContainer(nsMenuContainer *aParent, nsIContent *aContent); ++ nsMenuContainer(nsNativeMenuDocListener *aListener, nsIContent *aContent); ++ ++ // Create a new child element for the specified content node ++ mozilla::UniquePtr CreateChild(nsIContent *aContent); ++ ++ // Return the index of the child for the specified content node ++ size_t IndexOf(nsIContent *aChild) const; ++ ++ size_t ChildCount() const { return mChildren.Length(); } ++ nsMenuObject* ChildAt(size_t aIndex) const { return mChildren[aIndex].get(); } ++ ++ void RemoveChildAt(size_t aIndex, bool aUpdateNative = true); ++ ++ // Remove the child that owns the specified content node ++ void RemoveChild(nsIContent *aChild, bool aUpdateNative = true); ++ ++ // Insert a new child after the child that owns the specified content node ++ void InsertChildAfter(mozilla::UniquePtr aChild, ++ nsIContent *aPrevSibling, ++ bool aUpdateNative = true); ++ ++ void AppendChild(mozilla::UniquePtr aChild, ++ bool aUpdateNative = true); ++ ++private: ++ ChildTArray mChildren; ++}; ++ ++#endif /* __nsMenuContainer_h__ */ +--- /dev/null ++++ b/widget/gtk/nsMenuItem.cpp +@@ -0,0 +1,766 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "mozilla/ArrayUtils.h" ++#include "mozilla/Assertions.h" ++#include "mozilla/dom/Document.h" ++#include "mozilla/dom/Element.h" ++#include "mozilla/dom/KeyboardEventBinding.h" ++#include "mozilla/dom/XULCommandEvent.h" ++#include "mozilla/Preferences.h" ++#include "mozilla/TextEvents.h" ++#include "nsContentUtils.h" ++#include "nsCRT.h" ++#include "nsGkAtoms.h" ++#include "nsGlobalWindowInner.h" ++#include "nsGtkUtils.h" ++#include "nsIContent.h" ++#include "nsIRunnable.h" ++#include "nsQueryObject.h" ++#include "nsReadableUtils.h" ++#include "nsString.h" ++#include "nsThreadUtils.h" ++ ++#include "nsMenu.h" ++#include "nsMenuBar.h" ++#include "nsMenuContainer.h" ++#include "nsNativeMenuDocListener.h" ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "nsMenuItem.h" ++ ++using namespace mozilla; ++ ++struct KeyCodeData { ++ const char* str; ++ size_t strlength; ++ uint32_t keycode; ++}; ++ ++static struct KeyCodeData gKeyCodes[] = { ++#define NS_DEFINE_VK(aDOMKeyName, aDOMKeyCode) \ ++ { #aDOMKeyName, sizeof(#aDOMKeyName) - 1, aDOMKeyCode }, ++#include "mozilla/VirtualKeyCodeList.h" ++#undef NS_DEFINE_VK ++ { nullptr, 0, 0 } ++}; ++ ++struct KeyPair { ++ uint32_t DOMKeyCode; ++ guint GDKKeyval; ++}; ++ ++// ++// Netscape keycodes are defined in widget/public/nsGUIEvent.h ++// GTK keycodes are defined in ++// ++static const KeyPair gKeyPairs[] = { ++ { NS_VK_CANCEL, GDK_Cancel }, ++ { NS_VK_BACK, GDK_BackSpace }, ++ { NS_VK_TAB, GDK_Tab }, ++ { NS_VK_TAB, GDK_ISO_Left_Tab }, ++ { NS_VK_CLEAR, GDK_Clear }, ++ { NS_VK_RETURN, GDK_Return }, ++ { NS_VK_SHIFT, GDK_Shift_L }, ++ { NS_VK_SHIFT, GDK_Shift_R }, ++ { NS_VK_SHIFT, GDK_Shift_Lock }, ++ { NS_VK_CONTROL, GDK_Control_L }, ++ { NS_VK_CONTROL, GDK_Control_R }, ++ { NS_VK_ALT, GDK_Alt_L }, ++ { NS_VK_ALT, GDK_Alt_R }, ++ { NS_VK_META, GDK_Meta_L }, ++ { NS_VK_META, GDK_Meta_R }, ++ ++ // Assume that Super or Hyper is always mapped to physical Win key. ++ { NS_VK_WIN, GDK_Super_L }, ++ { NS_VK_WIN, GDK_Super_R }, ++ { NS_VK_WIN, GDK_Hyper_L }, ++ { NS_VK_WIN, GDK_Hyper_R }, ++ ++ // GTK's AltGraph key is similar to Mac's Option (Alt) key. However, ++ // unfortunately, browsers on Mac are using NS_VK_ALT for it even though ++ // it's really different from Alt key on Windows. ++ // On the other hand, GTK's AltGrapsh keys are really different from ++ // Alt key. However, there is no AltGrapsh key on Windows. On Windows, ++ // both Ctrl and Alt keys are pressed internally when AltGr key is pressed. ++ // For some languages' users, AltGraph key is important, so, web ++ // applications on such locale may want to know AltGraph key press. ++ // Therefore, we should map AltGr keycode for them only on GTK. ++ { NS_VK_ALTGR, GDK_ISO_Level3_Shift }, ++ { NS_VK_ALTGR, GDK_ISO_Level5_Shift }, ++ // We assume that Mode_switch is always used for level3 shift. ++ { NS_VK_ALTGR, GDK_Mode_switch }, ++ ++ { NS_VK_PAUSE, GDK_Pause }, ++ { NS_VK_CAPS_LOCK, GDK_Caps_Lock }, ++ { NS_VK_KANA, GDK_Kana_Lock }, ++ { NS_VK_KANA, GDK_Kana_Shift }, ++ { NS_VK_HANGUL, GDK_Hangul }, ++ // { NS_VK_JUNJA, GDK_XXX }, ++ // { NS_VK_FINAL, GDK_XXX }, ++ { NS_VK_HANJA, GDK_Hangul_Hanja }, ++ { NS_VK_KANJI, GDK_Kanji }, ++ { NS_VK_ESCAPE, GDK_Escape }, ++ { NS_VK_CONVERT, GDK_Henkan }, ++ { NS_VK_NONCONVERT, GDK_Muhenkan }, ++ // { NS_VK_ACCEPT, GDK_XXX }, ++ // { NS_VK_MODECHANGE, GDK_XXX }, ++ { NS_VK_SPACE, GDK_space }, ++ { NS_VK_PAGE_UP, GDK_Page_Up }, ++ { NS_VK_PAGE_DOWN, GDK_Page_Down }, ++ { NS_VK_END, GDK_End }, ++ { NS_VK_HOME, GDK_Home }, ++ { NS_VK_LEFT, GDK_Left }, ++ { NS_VK_UP, GDK_Up }, ++ { NS_VK_RIGHT, GDK_Right }, ++ { NS_VK_DOWN, GDK_Down }, ++ { NS_VK_SELECT, GDK_Select }, ++ { NS_VK_PRINT, GDK_Print }, ++ { NS_VK_EXECUTE, GDK_Execute }, ++ { NS_VK_PRINTSCREEN, GDK_Print }, ++ { NS_VK_INSERT, GDK_Insert }, ++ { NS_VK_DELETE, GDK_Delete }, ++ { NS_VK_HELP, GDK_Help }, ++ ++ // keypad keys ++ { NS_VK_LEFT, GDK_KP_Left }, ++ { NS_VK_RIGHT, GDK_KP_Right }, ++ { NS_VK_UP, GDK_KP_Up }, ++ { NS_VK_DOWN, GDK_KP_Down }, ++ { NS_VK_PAGE_UP, GDK_KP_Page_Up }, ++ // Not sure what these are ++ //{ NS_VK_, GDK_KP_Prior }, ++ //{ NS_VK_, GDK_KP_Next }, ++ { NS_VK_CLEAR, GDK_KP_Begin }, // Num-unlocked 5 ++ { NS_VK_PAGE_DOWN, GDK_KP_Page_Down }, ++ { NS_VK_HOME, GDK_KP_Home }, ++ { NS_VK_END, GDK_KP_End }, ++ { NS_VK_INSERT, GDK_KP_Insert }, ++ { NS_VK_DELETE, GDK_KP_Delete }, ++ { NS_VK_RETURN, GDK_KP_Enter }, ++ ++ { NS_VK_NUM_LOCK, GDK_Num_Lock }, ++ { NS_VK_SCROLL_LOCK,GDK_Scroll_Lock }, ++ ++ // Function keys ++ { NS_VK_F1, GDK_F1 }, ++ { NS_VK_F2, GDK_F2 }, ++ { NS_VK_F3, GDK_F3 }, ++ { NS_VK_F4, GDK_F4 }, ++ { NS_VK_F5, GDK_F5 }, ++ { NS_VK_F6, GDK_F6 }, ++ { NS_VK_F7, GDK_F7 }, ++ { NS_VK_F8, GDK_F8 }, ++ { NS_VK_F9, GDK_F9 }, ++ { NS_VK_F10, GDK_F10 }, ++ { NS_VK_F11, GDK_F11 }, ++ { NS_VK_F12, GDK_F12 }, ++ { NS_VK_F13, GDK_F13 }, ++ { NS_VK_F14, GDK_F14 }, ++ { NS_VK_F15, GDK_F15 }, ++ { NS_VK_F16, GDK_F16 }, ++ { NS_VK_F17, GDK_F17 }, ++ { NS_VK_F18, GDK_F18 }, ++ { NS_VK_F19, GDK_F19 }, ++ { NS_VK_F20, GDK_F20 }, ++ { NS_VK_F21, GDK_F21 }, ++ { NS_VK_F22, GDK_F22 }, ++ { NS_VK_F23, GDK_F23 }, ++ { NS_VK_F24, GDK_F24 }, ++ ++ // context menu key, keysym 0xff67, typically keycode 117 on 105-key (Microsoft) ++ // x86 keyboards, located between right 'Windows' key and right Ctrl key ++ { NS_VK_CONTEXT_MENU, GDK_Menu }, ++ { NS_VK_SLEEP, GDK_Sleep }, ++ ++ { NS_VK_ATTN, GDK_3270_Attn }, ++ { NS_VK_CRSEL, GDK_3270_CursorSelect }, ++ { NS_VK_EXSEL, GDK_3270_ExSelect }, ++ { NS_VK_EREOF, GDK_3270_EraseEOF }, ++ { NS_VK_PLAY, GDK_3270_Play }, ++ //{ NS_VK_ZOOM, GDK_XXX }, ++ { NS_VK_PA1, GDK_3270_PA1 }, ++}; ++ ++static guint ++ConvertGeckoKeyNameToGDKKeyval(nsAString& aKeyName) ++{ ++ NS_ConvertUTF16toUTF8 keyName(aKeyName); ++ ToUpperCase(keyName); // We want case-insensitive comparison with data ++ // stored as uppercase. ++ ++ uint32_t keyCode = 0; ++ ++ uint32_t keyNameLength = keyName.Length(); ++ const char* keyNameStr = keyName.get(); ++ for (uint16_t i = 0; i < ArrayLength(gKeyCodes); ++i) { ++ if (keyNameLength == gKeyCodes[i].strlength && ++ !nsCRT::strcmp(gKeyCodes[i].str, keyNameStr)) { ++ keyCode = gKeyCodes[i].keycode; ++ break; ++ } ++ } ++ ++ // First, try to handle alphanumeric input, not listed in nsKeycodes: ++ // most likely, more letters will be getting typed in than things in ++ // the key list, so we will look through these first. ++ ++ if (keyCode >= NS_VK_A && keyCode <= NS_VK_Z) { ++ // gdk and DOM both use the ASCII codes for these keys. ++ return keyCode; ++ } ++ ++ // numbers ++ if (keyCode >= NS_VK_0 && keyCode <= NS_VK_9) { ++ // gdk and DOM both use the ASCII codes for these keys. ++ return keyCode - NS_VK_0 + GDK_0; ++ } ++ ++ switch (keyCode) { ++ // keys in numpad ++ case NS_VK_MULTIPLY: return GDK_KP_Multiply; ++ case NS_VK_ADD: return GDK_KP_Add; ++ case NS_VK_SEPARATOR: return GDK_KP_Separator; ++ case NS_VK_SUBTRACT: return GDK_KP_Subtract; ++ case NS_VK_DECIMAL: return GDK_KP_Decimal; ++ case NS_VK_DIVIDE: return GDK_KP_Divide; ++ case NS_VK_NUMPAD0: return GDK_KP_0; ++ case NS_VK_NUMPAD1: return GDK_KP_1; ++ case NS_VK_NUMPAD2: return GDK_KP_2; ++ case NS_VK_NUMPAD3: return GDK_KP_3; ++ case NS_VK_NUMPAD4: return GDK_KP_4; ++ case NS_VK_NUMPAD5: return GDK_KP_5; ++ case NS_VK_NUMPAD6: return GDK_KP_6; ++ case NS_VK_NUMPAD7: return GDK_KP_7; ++ case NS_VK_NUMPAD8: return GDK_KP_8; ++ case NS_VK_NUMPAD9: return GDK_KP_9; ++ // other prinable keys ++ case NS_VK_SPACE: return GDK_space; ++ case NS_VK_COLON: return GDK_colon; ++ case NS_VK_SEMICOLON: return GDK_semicolon; ++ case NS_VK_LESS_THAN: return GDK_less; ++ case NS_VK_EQUALS: return GDK_equal; ++ case NS_VK_GREATER_THAN: return GDK_greater; ++ case NS_VK_QUESTION_MARK: return GDK_question; ++ case NS_VK_AT: return GDK_at; ++ case NS_VK_CIRCUMFLEX: return GDK_asciicircum; ++ case NS_VK_EXCLAMATION: return GDK_exclam; ++ case NS_VK_DOUBLE_QUOTE: return GDK_quotedbl; ++ case NS_VK_HASH: return GDK_numbersign; ++ case NS_VK_DOLLAR: return GDK_dollar; ++ case NS_VK_PERCENT: return GDK_percent; ++ case NS_VK_AMPERSAND: return GDK_ampersand; ++ case NS_VK_UNDERSCORE: return GDK_underscore; ++ case NS_VK_OPEN_PAREN: return GDK_parenleft; ++ case NS_VK_CLOSE_PAREN: return GDK_parenright; ++ case NS_VK_ASTERISK: return GDK_asterisk; ++ case NS_VK_PLUS: return GDK_plus; ++ case NS_VK_PIPE: return GDK_bar; ++ case NS_VK_HYPHEN_MINUS: return GDK_minus; ++ case NS_VK_OPEN_CURLY_BRACKET: return GDK_braceleft; ++ case NS_VK_CLOSE_CURLY_BRACKET: return GDK_braceright; ++ case NS_VK_TILDE: return GDK_asciitilde; ++ case NS_VK_COMMA: return GDK_comma; ++ case NS_VK_PERIOD: return GDK_period; ++ case NS_VK_SLASH: return GDK_slash; ++ case NS_VK_BACK_QUOTE: return GDK_grave; ++ case NS_VK_OPEN_BRACKET: return GDK_bracketleft; ++ case NS_VK_BACK_SLASH: return GDK_backslash; ++ case NS_VK_CLOSE_BRACKET: return GDK_bracketright; ++ case NS_VK_QUOTE: return GDK_apostrophe; ++ } ++ ++ // misc other things ++ for (uint32_t i = 0; i < ArrayLength(gKeyPairs); ++i) { ++ if (gKeyPairs[i].DOMKeyCode == keyCode) { ++ return gKeyPairs[i].GDKKeyval; ++ } ++ } ++ ++ return 0; ++} ++ ++class nsMenuItemUncheckSiblingsRunnable final : public Runnable ++{ ++public: ++ NS_IMETHODIMP Run() ++ { ++ if (mMenuItem) { ++ static_cast(mMenuItem.get())->UncheckSiblings(); ++ } ++ return NS_OK; ++ } ++ ++ nsMenuItemUncheckSiblingsRunnable(nsMenuItem *aMenuItem) : ++ Runnable("nsMenuItemUncheckSiblingsRunnable"), ++ mMenuItem(aMenuItem) { }; ++ ++private: ++ nsWeakMenuObject mMenuItem; ++}; ++ ++bool ++nsMenuItem::IsCheckboxOrRadioItem() const ++{ ++ return mType == eMenuItemType_Radio || ++ mType == eMenuItemType_CheckBox; ++} ++ ++/* static */ void ++nsMenuItem::item_activated_cb(DbusmenuMenuitem *menuitem, ++ guint timestamp, ++ gpointer user_data) ++{ ++ nsMenuItem *item = static_cast(user_data); ++ item->Activate(timestamp); ++} ++ ++void ++nsMenuItem::Activate(uint32_t aTimestamp) ++{ ++ GdkWindow *window = gtk_widget_get_window(MenuBar()->TopLevelWindow()); ++ gdk_x11_window_set_user_time( ++ window, std::min(aTimestamp, gdk_x11_get_server_time(window))); ++ ++ // We do this to avoid mutating our view of the menu until ++ // after we have finished ++ nsNativeMenuDocListener::BlockUpdatesScope updatesBlocker; ++ ++ if (!ContentNode()->AsElement()->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::autocheck, ++ nsGkAtoms::_false, ++ eCaseMatters) && ++ (mType == eMenuItemType_CheckBox || ++ (mType == eMenuItemType_Radio && !mIsChecked))) { ++ ContentNode()->AsElement()->SetAttr(kNameSpaceID_None, ++ nsGkAtoms::checked, ++ mIsChecked ? ++ u"false"_ns ++ : u"true"_ns, ++ true); ++ } ++ ++ dom::Document *doc = ContentNode()->OwnerDoc(); ++ ErrorResult rv; ++ RefPtr event = ++ doc->CreateEvent(u"xulcommandevent"_ns, ++ dom::CallerType::System, rv); ++ if (!rv.Failed()) { ++ RefPtr command = event->AsXULCommandEvent(); ++ if (command) { ++ command->InitCommandEvent(u"command"_ns, true, true, ++ nsGlobalWindowInner::Cast(doc->GetInnerWindow()), ++ 0, false, false, false, false, 0, nullptr, 0, rv); ++ if (!rv.Failed()) { ++ event->SetTrusted(true); ++ ContentNode()->DispatchEvent(*event, rv); ++ if (rv.Failed()) { ++ NS_WARNING("Failed to dispatch event"); ++ rv.SuppressException(); ++ } ++ } else { ++ NS_WARNING("Failed to initialize command event"); ++ rv.SuppressException(); ++ } ++ } ++ } else { ++ NS_WARNING("CreateEvent failed"); ++ rv.SuppressException(); ++ } ++ ++ // This kinda sucks, but Unity doesn't send a closed event ++ // after activating a menuitem ++ nsMenuObject *ancestor = Parent(); ++ while (ancestor && ancestor->Type() == eType_Menu) { ++ static_cast(ancestor)->OnClose(); ++ ancestor = ancestor->Parent(); ++ } ++} ++ ++void ++nsMenuItem::CopyAttrFromNodeIfExists(nsIContent *aContent, nsAtom *aAttribute) ++{ ++ nsAutoString value; ++ if (aContent->AsElement()->GetAttr(kNameSpaceID_None, aAttribute, value)) { ++ ContentNode()->AsElement()->SetAttr(kNameSpaceID_None, aAttribute, ++ value, true); ++ } ++} ++ ++void ++nsMenuItem::UpdateState() ++{ ++ if (!IsCheckboxOrRadioItem()) { ++ return; ++ } ++ ++ mIsChecked = ContentNode()->AsElement()->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::checked, ++ nsGkAtoms::_true, ++ eCaseMatters); ++ dbusmenu_menuitem_property_set_int(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_TOGGLE_STATE, ++ mIsChecked ? ++ DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED : ++ DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED); ++} ++ ++void ++nsMenuItem::UpdateTypeAndState() ++{ ++ static mozilla::dom::Element::AttrValuesArray attrs[] = ++ { nsGkAtoms::checkbox, nsGkAtoms::radio, nullptr }; ++ int32_t type = ContentNode()->AsElement()->FindAttrValueIn(kNameSpaceID_None, ++ nsGkAtoms::type, ++ attrs, eCaseMatters); ++ ++ if (type >= 0 && type < 2) { ++ if (type == 0) { ++ dbusmenu_menuitem_property_set(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE, ++ DBUSMENU_MENUITEM_TOGGLE_CHECK); ++ mType = eMenuItemType_CheckBox; ++ } else if (type == 1) { ++ dbusmenu_menuitem_property_set(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE, ++ DBUSMENU_MENUITEM_TOGGLE_RADIO); ++ mType = eMenuItemType_Radio; ++ } ++ ++ UpdateState(); ++ } else { ++ dbusmenu_menuitem_property_remove(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE); ++ dbusmenu_menuitem_property_remove(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_TOGGLE_STATE); ++ mType = eMenuItemType_Normal; ++ } ++} ++ ++void ++nsMenuItem::UpdateAccel() ++{ ++ dom::Document *doc = ContentNode()->GetUncomposedDoc(); ++ if (doc) { ++ nsCOMPtr oldKeyContent; ++ oldKeyContent.swap(mKeyContent); ++ ++ nsAutoString key; ++ ContentNode()->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::key, ++ key); ++ if (!key.IsEmpty()) { ++ mKeyContent = doc->GetElementById(key); ++ } ++ ++ if (mKeyContent != oldKeyContent) { ++ if (oldKeyContent) { ++ DocListener()->UnregisterForContentChanges(oldKeyContent); ++ } ++ if (mKeyContent) { ++ DocListener()->RegisterForContentChanges(mKeyContent, this); ++ } ++ } ++ } ++ ++ if (!mKeyContent) { ++ dbusmenu_menuitem_property_remove(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_SHORTCUT); ++ return; ++ } ++ ++ nsAutoString modifiers; ++ mKeyContent->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::modifiers, ++ modifiers); ++ ++ uint32_t modifier = 0; ++ ++ if (!modifiers.IsEmpty()) { ++ char* str = ToNewUTF8String(modifiers); ++ char *token = strtok(str, ", \t"); ++ while(token) { ++ if (nsCRT::strcmp(token, "shift") == 0) { ++ modifier |= GDK_SHIFT_MASK; ++ } else if (nsCRT::strcmp(token, "alt") == 0) { ++ modifier |= GDK_MOD1_MASK; ++ } else if (nsCRT::strcmp(token, "meta") == 0) { ++ modifier |= GDK_META_MASK; ++ } else if (nsCRT::strcmp(token, "control") == 0) { ++ modifier |= GDK_CONTROL_MASK; ++ } else if (nsCRT::strcmp(token, "accel") == 0) { ++ int32_t accel = Preferences::GetInt("ui.key.accelKey"); ++ if (accel == dom::KeyboardEvent_Binding::DOM_VK_META) { ++ modifier |= GDK_META_MASK; ++ } else if (accel == dom::KeyboardEvent_Binding::DOM_VK_ALT) { ++ modifier |= GDK_MOD1_MASK; ++ } else { ++ modifier |= GDK_CONTROL_MASK; ++ } ++ } ++ ++ token = strtok(nullptr, ", \t"); ++ } ++ ++ free(str); ++ } ++ ++ nsAutoString keyStr; ++ mKeyContent->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::key, ++ keyStr); ++ ++ guint key = 0; ++ if (!keyStr.IsEmpty()) { ++ key = gdk_unicode_to_keyval(*keyStr.BeginReading()); ++ } ++ ++ if (key == 0) { ++ mKeyContent->AsElement()->GetAttr(kNameSpaceID_None, ++ nsGkAtoms::keycode, keyStr); ++ if (!keyStr.IsEmpty()) { ++ key = ConvertGeckoKeyNameToGDKKeyval(keyStr); ++ } ++ } ++ ++ if (key == 0) { ++ key = GDK_VoidSymbol; ++ } ++ ++ if (key != GDK_VoidSymbol) { ++ dbusmenu_menuitem_property_set_shortcut(GetNativeData(), key, ++ static_cast(modifier)); ++ } else { ++ dbusmenu_menuitem_property_remove(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_SHORTCUT); ++ } ++} ++ ++nsMenuBar* ++nsMenuItem::MenuBar() ++{ ++ nsMenuObject *tmp = this; ++ while (tmp->Parent()) { ++ tmp = tmp->Parent(); ++ } ++ ++ MOZ_ASSERT(tmp->Type() == eType_MenuBar, "The top-level should be a menubar"); ++ ++ return static_cast(tmp); ++} ++ ++void ++nsMenuItem::UncheckSiblings() ++{ ++ if (!ContentNode()->AsElement()->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::type, ++ nsGkAtoms::radio, ++ eCaseMatters)) { ++ // If we're not a radio button, we don't care ++ return; ++ } ++ ++ nsAutoString name; ++ ContentNode()->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::name, ++ name); ++ ++ nsIContent *parent = ContentNode()->GetParent(); ++ if (!parent) { ++ return; ++ } ++ ++ uint32_t count = parent->GetChildCount(); ++ for (uint32_t i = 0; i < count; ++i) { ++ nsIContent *sibling = parent->GetChildAt_Deprecated(i); ++ ++ if (sibling->IsComment()) { ++ continue; ++ } ++ ++ nsAutoString otherName; ++ sibling->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::name, ++ otherName); ++ ++ if (sibling != ContentNode() && otherName == name && ++ sibling->AsElement()->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::type, ++ nsGkAtoms::radio, ++ eCaseMatters)) { ++ sibling->AsElement()->UnsetAttr(kNameSpaceID_None, ++ nsGkAtoms::checked, true); ++ } ++ } ++} ++ ++void ++nsMenuItem::InitializeNativeData() ++{ ++ g_signal_connect(G_OBJECT(GetNativeData()), ++ DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, ++ G_CALLBACK(item_activated_cb), this); ++ mNeedsUpdate = true; ++} ++ ++void ++nsMenuItem::UpdateContentAttributes() ++{ ++ dom::Document *doc = ContentNode()->GetUncomposedDoc(); ++ if (!doc) { ++ return; ++ } ++ ++ nsAutoString command; ++ ContentNode()->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::command, ++ command); ++ if (command.IsEmpty()) { ++ return; ++ } ++ ++ nsCOMPtr commandContent = doc->GetElementById(command); ++ if (!commandContent) { ++ return; ++ } ++ ++ if (commandContent->AsElement()->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::disabled, ++ nsGkAtoms::_true, ++ eCaseMatters)) { ++ ContentNode()->AsElement()->SetAttr(kNameSpaceID_None, ++ nsGkAtoms::disabled, ++ u"true"_ns, true); ++ } else { ++ ContentNode()->AsElement()->UnsetAttr(kNameSpaceID_None, ++ nsGkAtoms::disabled, true); ++ } ++ ++ CopyAttrFromNodeIfExists(commandContent, nsGkAtoms::checked); ++ CopyAttrFromNodeIfExists(commandContent, nsGkAtoms::accesskey); ++ CopyAttrFromNodeIfExists(commandContent, nsGkAtoms::label); ++ CopyAttrFromNodeIfExists(commandContent, nsGkAtoms::hidden); ++} ++ ++void ++nsMenuItem::Update(ComputedStyle *aComputedStyle) ++{ ++ if (mNeedsUpdate) { ++ mNeedsUpdate = false; ++ ++ UpdateTypeAndState(); ++ UpdateAccel(); ++ UpdateLabel(); ++ UpdateSensitivity(); ++ } ++ ++ UpdateVisibility(aComputedStyle); ++ UpdateIcon(aComputedStyle); ++} ++ ++bool ++nsMenuItem::IsCompatibleWithNativeData(DbusmenuMenuitem *aNativeData) const ++{ ++ return nsCRT::strcmp(dbusmenu_menuitem_property_get(aNativeData, ++ DBUSMENU_MENUITEM_PROP_TYPE), ++ "separator") != 0; ++} ++ ++nsMenuObject::PropertyFlags ++nsMenuItem::SupportedProperties() const ++{ ++ return static_cast( ++ nsMenuObject::ePropLabel | ++ nsMenuObject::ePropEnabled | ++ nsMenuObject::ePropVisible | ++ nsMenuObject::ePropIconData | ++ nsMenuObject::ePropShortcut | ++ nsMenuObject::ePropToggleType | ++ nsMenuObject::ePropToggleState ++ ); ++} ++ ++void ++nsMenuItem::OnAttributeChanged(nsIContent *aContent, nsAtom *aAttribute) ++{ ++ MOZ_ASSERT(aContent == ContentNode() || aContent == mKeyContent, ++ "Received an event that wasn't meant for us!"); ++ ++ if (aContent == ContentNode() && aAttribute == nsGkAtoms::checked && ++ aContent->AsElement()->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::checked, ++ nsGkAtoms::_true, eCaseMatters)) { ++ nsContentUtils::AddScriptRunner( ++ new nsMenuItemUncheckSiblingsRunnable(this)); ++ } ++ ++ if (mNeedsUpdate) { ++ return; ++ } ++ ++ if (!Parent()->IsBeingDisplayed()) { ++ mNeedsUpdate = true; ++ return; ++ } ++ ++ if (aContent == ContentNode()) { ++ if (aAttribute == nsGkAtoms::key) { ++ UpdateAccel(); ++ } else if (aAttribute == nsGkAtoms::label || ++ aAttribute == nsGkAtoms::accesskey || ++ aAttribute == nsGkAtoms::crop) { ++ UpdateLabel(); ++ } else if (aAttribute == nsGkAtoms::disabled) { ++ UpdateSensitivity(); ++ } else if (aAttribute == nsGkAtoms::type) { ++ UpdateTypeAndState(); ++ } else if (aAttribute == nsGkAtoms::checked) { ++ UpdateState(); ++ } else if (aAttribute == nsGkAtoms::hidden || ++ aAttribute == nsGkAtoms::collapsed) { ++ RefPtr style = GetComputedStyle(); ++ UpdateVisibility(style); ++ } else if (aAttribute == nsGkAtoms::image) { ++ RefPtr style = GetComputedStyle(); ++ UpdateIcon(style); ++ } ++ } else if (aContent == mKeyContent && ++ (aAttribute == nsGkAtoms::key || ++ aAttribute == nsGkAtoms::keycode || ++ aAttribute == nsGkAtoms::modifiers)) { ++ UpdateAccel(); ++ } ++} ++ ++nsMenuItem::nsMenuItem(nsMenuContainer *aParent, nsIContent *aContent) : ++ nsMenuObject(aParent, aContent), ++ mType(eMenuItemType_Normal), ++ mIsChecked(false), ++ mNeedsUpdate(false) ++{ ++ MOZ_COUNT_CTOR(nsMenuItem); ++} ++ ++nsMenuItem::~nsMenuItem() ++{ ++ if (DocListener() && mKeyContent) { ++ DocListener()->UnregisterForContentChanges(mKeyContent); ++ } ++ ++ if (GetNativeData()) { ++ g_signal_handlers_disconnect_by_func(GetNativeData(), ++ FuncToGpointer(item_activated_cb), ++ this); ++ } ++ ++ MOZ_COUNT_DTOR(nsMenuItem); ++} ++ ++nsMenuObject::EType ++nsMenuItem::Type() const ++{ ++ return eType_MenuItem; ++} +--- /dev/null ++++ b/widget/gtk/nsMenuItem.h +@@ -0,0 +1,80 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsMenuItem_h__ ++#define __nsMenuItem_h__ ++ ++#include "mozilla/Attributes.h" ++#include "nsCOMPtr.h" ++ ++#include "nsDbusmenu.h" ++#include "nsMenuObject.h" ++ ++#include ++ ++class nsAtom; ++class nsIContent; ++class nsMenuBar; ++class nsMenuContainer; ++ ++/* ++ * This class represents 3 main classes of menuitems: labels, checkboxes and ++ * radio buttons (with/without an icon) ++ */ ++class nsMenuItem final : public nsMenuObject ++{ ++public: ++ nsMenuItem(nsMenuContainer *aParent, nsIContent *aContent); ++ ~nsMenuItem() override; ++ ++ nsMenuObject::EType Type() const override; ++ ++private: ++ friend class nsMenuItemUncheckSiblingsRunnable; ++ ++ enum { ++ eMenuItemFlag_ToggleState = (1 << 0) ++ }; ++ ++ enum EMenuItemType { ++ eMenuItemType_Normal, ++ eMenuItemType_Radio, ++ eMenuItemType_CheckBox ++ }; ++ ++ bool IsCheckboxOrRadioItem() const; ++ ++ static void item_activated_cb(DbusmenuMenuitem *menuitem, ++ guint timestamp, ++ gpointer user_data); ++ void Activate(uint32_t aTimestamp); ++ ++ void CopyAttrFromNodeIfExists(nsIContent *aContent, nsAtom *aAtom); ++ void UpdateState(); ++ void UpdateTypeAndState(); ++ void UpdateAccel(); ++ nsMenuBar* MenuBar(); ++ void UncheckSiblings(); ++ ++ void InitializeNativeData() override; ++ void UpdateContentAttributes() override; ++ void Update(mozilla::ComputedStyle *aComputedStyle) override; ++ bool IsCompatibleWithNativeData(DbusmenuMenuitem *aNativeData) const override; ++ nsMenuObject::PropertyFlags SupportedProperties() const override; ++ ++ void OnAttributeChanged(nsIContent *aContent, nsAtom *aAttribute) override; ++ ++ EMenuItemType mType; ++ ++ bool mIsChecked; ++ ++ bool mNeedsUpdate; ++ ++ nsCOMPtr mKeyContent; ++}; ++ ++#endif /* __nsMenuItem_h__ */ +--- /dev/null ++++ b/widget/gtk/nsMenuObject.cpp +@@ -0,0 +1,664 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "ImageOps.h" ++#include "imgIContainer.h" ++#include "imgINotificationObserver.h" ++#include "imgLoader.h" ++#include "imgRequestProxy.h" ++#include "mozilla/ArrayUtils.h" ++#include "mozilla/Assertions.h" ++#include "mozilla/dom/Document.h" ++#include "mozilla/dom/Element.h" ++#include "mozilla/Preferences.h" ++#include "mozilla/PresShell.h" ++#include "mozilla/PresShellInlines.h" ++#include "nsAttrValue.h" ++#include "nsComputedDOMStyle.h" ++#include "nsContentUtils.h" ++#include "nsGkAtoms.h" ++#include "nsIContent.h" ++#include "nsIContentPolicy.h" ++#include "nsILoadGroup.h" ++#include "nsImageToPixbuf.h" ++#include "nsIURI.h" ++#include "nsNetUtil.h" ++#include "nsPresContext.h" ++#include "nsRect.h" ++#include "nsServiceManagerUtils.h" ++#include "nsString.h" ++#include "nsStyleConsts.h" ++#include "nsStyleStruct.h" ++#include "nsUnicharUtils.h" ++ ++#include "nsMenuContainer.h" ++#include "nsNativeMenuDocListener.h" ++ ++#include ++#include ++#include ++ ++#include "nsMenuObject.h" ++ ++// X11's None clashes with StyleDisplay::None ++#include "X11UndefineNone.h" ++ ++#undef None ++ ++using namespace mozilla; ++using mozilla::image::ImageOps; ++ ++#define MAX_WIDTH 350000 ++ ++const char *gPropertyStrings[] = { ++#define DBUSMENU_PROPERTY(e, s, b) s, ++ DBUSMENU_PROPERTIES ++#undef DBUSMENU_PROPERTY ++ nullptr ++}; ++ ++nsWeakMenuObject* nsWeakMenuObject::sHead; ++PangoLayout* gPangoLayout = nullptr; ++ ++class nsMenuObjectIconLoader final : public imgINotificationObserver ++{ ++public: ++ NS_DECL_ISUPPORTS ++ NS_DECL_IMGINOTIFICATIONOBSERVER ++ ++ nsMenuObjectIconLoader(nsMenuObject *aOwner) : mOwner(aOwner) { }; ++ ++ void LoadIcon(ComputedStyle *aComputedStyle); ++ void Destroy(); ++ ++private: ++ ~nsMenuObjectIconLoader() { }; ++ ++ nsMenuObject *mOwner; ++ RefPtr mImageRequest; ++ nsCOMPtr mURI; ++ nsIntRect mImageRect; ++}; ++ ++NS_IMPL_ISUPPORTS(nsMenuObjectIconLoader, imgINotificationObserver) ++ ++void ++nsMenuObjectIconLoader::Notify(imgIRequest *aProxy, ++ int32_t aType, const nsIntRect *aRect) ++{ ++ if (!mOwner) { ++ return; ++ } ++ ++ if (aProxy != mImageRequest) { ++ return; ++ } ++ ++ if (aType == imgINotificationObserver::LOAD_COMPLETE) { ++ uint32_t status = imgIRequest::STATUS_ERROR; ++ if (NS_FAILED(mImageRequest->GetImageStatus(&status)) || ++ (status & imgIRequest::STATUS_ERROR)) { ++ mImageRequest->Cancel(NS_BINDING_ABORTED); ++ mImageRequest = nullptr; ++ return; ++ } ++ ++ nsCOMPtr image; ++ mImageRequest->GetImage(getter_AddRefs(image)); ++ MOZ_ASSERT(image); ++ ++ // Ask the image to decode at its intrinsic size. ++ int32_t width = 0, height = 0; ++ image->GetWidth(&width); ++ image->GetHeight(&height); ++ image->RequestDecodeForSize(nsIntSize(width, height), imgIContainer::FLAG_NONE); ++ return; ++ } ++ ++ if (aType == imgINotificationObserver::DECODE_COMPLETE) { ++ mImageRequest->Cancel(NS_BINDING_ABORTED); ++ mImageRequest = nullptr; ++ return; ++ } ++ ++ if (aType != imgINotificationObserver::FRAME_COMPLETE) { ++ return; ++ } ++ ++ nsCOMPtr img; ++ mImageRequest->GetImage(getter_AddRefs(img)); ++ if (!img) { ++ return; ++ } ++ ++ if (!mImageRect.IsEmpty()) { ++ img = ImageOps::Clip(img, mImageRect); ++ } ++ ++ int32_t width, height; ++ img->GetWidth(&width); ++ img->GetHeight(&height); ++ ++ if (width <= 0 || height <= 0) { ++ mOwner->ClearIcon(); ++ return; ++ } ++ ++ if (width > 100 || height > 100) { ++ // The icon data needs to go across DBus. Make sure the icon ++ // data isn't too large, else our connection gets terminated and ++ // GDbus helpfully aborts the application. Thank you :) ++ NS_WARNING("Icon data too large"); ++ mOwner->ClearIcon(); ++ return; ++ } ++ ++ GdkPixbuf *pixbuf = nsImageToPixbuf::ImageToPixbuf(img); ++ if (pixbuf) { ++ dbusmenu_menuitem_property_set_image(mOwner->GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_ICON_DATA, ++ pixbuf); ++ g_object_unref(pixbuf); ++ } ++ ++ return; ++} ++ ++void ++nsMenuObjectIconLoader::LoadIcon(ComputedStyle *aComputedStyle) ++{ ++ dom::Document *doc = mOwner->ContentNode()->OwnerDoc(); ++ ++ nsCOMPtr uri; ++ nsIntRect imageRect; ++ imgRequestProxy *imageRequest = nullptr; ++ ++ nsAutoString uriString; ++ if (mOwner->ContentNode()->AsElement()->GetAttr(kNameSpaceID_None, ++ nsGkAtoms::image, ++ uriString)) { ++ NS_NewURI(getter_AddRefs(uri), uriString); ++ } else { ++ PresShell *shell = doc->GetPresShell(); ++ if (!shell) { ++ return; ++ } ++ ++ nsPresContext *pc = shell->GetPresContext(); ++ if (!pc || !aComputedStyle) { ++ return; ++ } ++ ++ const nsStyleList *list = aComputedStyle->StyleList(); ++ imageRequest = list->mListStyleImage.GetImageRequest(); ++ if (imageRequest) { ++ imageRequest->GetURI(getter_AddRefs(uri)); ++ auto& rect = list->mImageRegion.AsRect(); ++ imageRect = rect.ToLayoutRect().ToNearestPixels( ++ pc->AppUnitsPerDevPixel()); ++ } ++ } ++ ++ if (!uri) { ++ mOwner->ClearIcon(); ++ mURI = nullptr; ++ ++ if (mImageRequest) { ++ mImageRequest->Cancel(NS_BINDING_ABORTED); ++ mImageRequest = nullptr; ++ } ++ ++ return; ++ } ++ ++ bool same; ++ if (mURI && NS_SUCCEEDED(mURI->Equals(uri, &same)) && same && ++ (!imageRequest || imageRect == mImageRect)) { ++ return; ++ } ++ ++ if (mImageRequest) { ++ mImageRequest->Cancel(NS_BINDING_ABORTED); ++ mImageRequest = nullptr; ++ } ++ ++ mURI = uri; ++ ++ if (imageRequest) { ++ mImageRect = imageRect; ++ imageRequest->Clone(this, nullptr, getter_AddRefs(mImageRequest)); ++ } else { ++ mImageRect.SetEmpty(); ++ nsCOMPtr loadGroup = doc->GetDocumentLoadGroup(); ++ RefPtr loader = ++ nsContentUtils::GetImgLoaderForDocument(doc); ++ if (!loader || !loadGroup) { ++ NS_WARNING("Failed to get loader or load group for image load"); ++ return; ++ } ++ ++ loader->LoadImage(uri, nullptr, nullptr, ++ nullptr, 0, loadGroup, this, nullptr, nullptr, ++ nsIRequest::LOAD_NORMAL, nullptr, ++ nsIContentPolicy::TYPE_IMAGE, EmptyString(), ++ false, false, getter_AddRefs(mImageRequest)); ++ } ++} ++ ++void ++nsMenuObjectIconLoader::Destroy() ++{ ++ if (mImageRequest) { ++ mImageRequest->CancelAndForgetObserver(NS_BINDING_ABORTED); ++ mImageRequest = nullptr; ++ } ++ ++ mOwner = nullptr; ++} ++ ++static int ++CalculateTextWidth(const nsAString& aText) ++{ ++ if (!gPangoLayout) { ++ PangoFontMap *fontmap = pango_cairo_font_map_get_default(); ++ PangoContext *ctx = pango_font_map_create_context(fontmap); ++ gPangoLayout = pango_layout_new(ctx); ++ g_object_unref(ctx); ++ } ++ ++ pango_layout_set_text(gPangoLayout, NS_ConvertUTF16toUTF8(aText).get(), -1); ++ ++ int width, dummy; ++ pango_layout_get_size(gPangoLayout, &width, &dummy); ++ ++ return width; ++} ++ ++static const nsDependentString ++GetEllipsis() ++{ ++ static char16_t sBuf[4] = { 0, 0, 0, 0 }; ++ if (!sBuf[0]) { ++ nsString ellipsis; ++ Preferences::GetLocalizedString("intl.ellipsis", ellipsis); ++ if (!ellipsis.IsEmpty()) { ++ uint32_t l = ellipsis.Length(); ++ const nsString::char_type *c = ellipsis.BeginReading(); ++ uint32_t i = 0; ++ while (i < 3 && i < l) { ++ sBuf[i++] = *(c++); ++ } ++ } else { ++ sBuf[0] = '.'; ++ sBuf[1] = '.'; ++ sBuf[2] = '.'; ++ } ++ } ++ ++ return nsDependentString(sBuf); ++} ++ ++static int ++GetEllipsisWidth() ++{ ++ static int sEllipsisWidth = -1; ++ ++ if (sEllipsisWidth == -1) { ++ sEllipsisWidth = CalculateTextWidth(GetEllipsis()); ++ } ++ ++ return sEllipsisWidth; ++} ++ ++nsMenuObject::nsMenuObject(nsMenuContainer *aParent, nsIContent *aContent) : ++ mContent(aContent), ++ mListener(aParent->DocListener()), ++ mParent(aParent), ++ mNativeData(nullptr) ++{ ++ MOZ_ASSERT(mContent); ++ MOZ_ASSERT(mListener); ++ MOZ_ASSERT(mParent); ++} ++ ++nsMenuObject::nsMenuObject(nsNativeMenuDocListener *aListener, ++ nsIContent *aContent) : ++ mContent(aContent), ++ mListener(aListener), ++ mParent(nullptr), ++ mNativeData(nullptr) ++{ ++ MOZ_ASSERT(mContent); ++ MOZ_ASSERT(mListener); ++} ++ ++void ++nsMenuObject::UpdateLabel() ++{ ++ // Gecko stores the label and access key in separate attributes ++ // so we need to convert label="Foo_Bar"/accesskey="F" in to ++ // label="_Foo__Bar" for dbusmenu ++ ++ nsAutoString label; ++ mContent->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::label, label); ++ ++ nsAutoString accesskey; ++ mContent->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::accesskey, ++ accesskey); ++ ++ const nsAutoString::char_type *akey = accesskey.BeginReading(); ++ char16_t keyLower = ToLowerCase(*akey); ++ char16_t keyUpper = ToUpperCase(*akey); ++ ++ const nsAutoString::char_type *iter = label.BeginReading(); ++ const nsAutoString::char_type *end = label.EndReading(); ++ uint32_t length = label.Length(); ++ uint32_t pos = 0; ++ bool foundAccessKey = false; ++ ++ while (iter != end) { ++ if (*iter != char16_t('_')) { ++ if ((*iter != keyLower && *iter != keyUpper) || foundAccessKey) { ++ ++iter; ++ ++pos; ++ continue; ++ } ++ foundAccessKey = true; ++ } ++ ++ label.SetLength(++length); ++ ++ iter = label.BeginReading() + pos; ++ end = label.EndReading(); ++ nsAutoString::char_type *cur = label.BeginWriting() + pos; ++ ++ memmove(cur + 1, cur, (length - 1 - pos) * sizeof(nsAutoString::char_type)); ++ *cur = nsAutoString::char_type('_'); ++ ++ iter += 2; ++ pos += 2; ++ } ++ ++ if (CalculateTextWidth(label) <= MAX_WIDTH) { ++ dbusmenu_menuitem_property_set(mNativeData, ++ DBUSMENU_MENUITEM_PROP_LABEL, ++ NS_ConvertUTF16toUTF8(label).get()); ++ return; ++ } ++ ++ // This sucks. ++ // This should be done at the point where the menu is drawn (hello Unity), ++ // but unfortunately it doesn't do that and will happily fill your entire ++ // screen width with a menu if you have a bookmark with a really long title. ++ // This leaves us with no other option but to ellipsize here, with no proper ++ // knowledge of Unity's render path, font size etc. This is better than nothing ++ nsAutoString truncated; ++ int target = MAX_WIDTH - GetEllipsisWidth(); ++ length = label.Length(); ++ ++ static mozilla::dom::Element::AttrValuesArray strings[] = { ++ nsGkAtoms::left, nsGkAtoms::start, ++ nsGkAtoms::center, nsGkAtoms::right, ++ nsGkAtoms::end, nullptr ++ }; ++ ++ int32_t type = mContent->AsElement()->FindAttrValueIn(kNameSpaceID_None, ++ nsGkAtoms::crop, ++ strings, eCaseMatters); ++ ++ switch (type) { ++ case 0: ++ case 1: ++ // FIXME: Implement left cropping ++ case 2: ++ // FIXME: Implement center cropping ++ case 3: ++ case 4: ++ default: ++ for (uint32_t i = 0; i < length; i++) { ++ truncated.Append(label.CharAt(i)); ++ if (CalculateTextWidth(truncated) > target) { ++ break; ++ } ++ } ++ ++ truncated.Append(GetEllipsis()); ++ } ++ ++ dbusmenu_menuitem_property_set(mNativeData, ++ DBUSMENU_MENUITEM_PROP_LABEL, ++ NS_ConvertUTF16toUTF8(truncated).get()); ++} ++ ++void ++nsMenuObject::UpdateVisibility(ComputedStyle *aComputedStyle) ++{ ++ bool vis = true; ++ ++ if (aComputedStyle && ++ (aComputedStyle->StyleDisplay()->mDisplay == StyleDisplay::None || ++ aComputedStyle->StyleVisibility()->mVisible == ++ StyleVisibility::Collapse)) { ++ vis = false; ++ } ++ ++ dbusmenu_menuitem_property_set_bool(mNativeData, ++ DBUSMENU_MENUITEM_PROP_VISIBLE, ++ vis); ++} ++ ++void ++nsMenuObject::UpdateSensitivity() ++{ ++ bool disabled = mContent->AsElement()->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::disabled, ++ nsGkAtoms::_true, ++ eCaseMatters); ++ ++ dbusmenu_menuitem_property_set_bool(mNativeData, ++ DBUSMENU_MENUITEM_PROP_ENABLED, ++ !disabled); ++ ++} ++ ++void ++nsMenuObject::UpdateIcon(ComputedStyle *aComputedStyle) ++{ ++ if (ShouldShowIcon()) { ++ if (!mIconLoader) { ++ mIconLoader = new nsMenuObjectIconLoader(this); ++ } ++ ++ mIconLoader->LoadIcon(aComputedStyle); ++ } else { ++ if (mIconLoader) { ++ mIconLoader->Destroy(); ++ mIconLoader = nullptr; ++ } ++ ++ ClearIcon(); ++ } ++} ++ ++already_AddRefed ++nsMenuObject::GetComputedStyle() ++{ ++ RefPtr style = ++ nsComputedDOMStyle::GetComputedStyleNoFlush( ++ mContent->AsElement(), nullptr); ++ ++ return style.forget(); ++} ++ ++void ++nsMenuObject::InitializeNativeData() ++{ ++} ++ ++nsMenuObject::PropertyFlags ++nsMenuObject::SupportedProperties() const ++{ ++ return static_cast(0); ++} ++ ++bool ++nsMenuObject::IsCompatibleWithNativeData(DbusmenuMenuitem *aNativeData) const ++{ ++ return true; ++} ++ ++void ++nsMenuObject::UpdateContentAttributes() ++{ ++} ++ ++void ++nsMenuObject::Update(ComputedStyle *aComputedStyle) ++{ ++} ++ ++bool ++nsMenuObject::ShouldShowIcon() const ++{ ++ // Ideally we want to know the visibility of the anonymous XUL image in ++ // our menuitem, but this isn't created because we don't have a frame. ++ // The following works by default (because xul.css hides images in menuitems ++ // that don't have the "menuitem-with-favicon" class). It's possible a third ++ // party theme could override this, but, oh well... ++ const nsAttrValue *classes = mContent->AsElement()->GetClasses(); ++ if (!classes) { ++ return false; ++ } ++ ++ for (uint32_t i = 0; i < classes->GetAtomCount(); ++i) { ++ if (classes->AtomAt(i) == nsGkAtoms::menuitem_with_favicon) { ++ return true; ++ } ++ } ++ ++ return false; ++} ++ ++void ++nsMenuObject::ClearIcon() ++{ ++ dbusmenu_menuitem_property_remove(mNativeData, ++ DBUSMENU_MENUITEM_PROP_ICON_DATA); ++} ++ ++nsMenuObject::~nsMenuObject() ++{ ++ nsWeakMenuObject::NotifyDestroyed(this); ++ ++ if (mIconLoader) { ++ mIconLoader->Destroy(); ++ } ++ ++ if (mListener) { ++ mListener->UnregisterForContentChanges(mContent); ++ } ++ ++ if (mNativeData) { ++ g_object_unref(mNativeData); ++ mNativeData = nullptr; ++ } ++} ++ ++void ++nsMenuObject::CreateNativeData() ++{ ++ MOZ_ASSERT(mNativeData == nullptr, "This node already has a DbusmenuMenuitem. The old one will be leaked"); ++ ++ mNativeData = dbusmenu_menuitem_new(); ++ InitializeNativeData(); ++ if (mParent && mParent->IsBeingDisplayed()) { ++ ContainerIsOpening(); ++ } ++ ++ mListener->RegisterForContentChanges(mContent, this); ++} ++ ++nsresult ++nsMenuObject::AdoptNativeData(DbusmenuMenuitem *aNativeData) ++{ ++ MOZ_ASSERT(mNativeData == nullptr, "This node already has a DbusmenuMenuitem. The old one will be leaked"); ++ ++ if (!IsCompatibleWithNativeData(aNativeData)) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ mNativeData = aNativeData; ++ g_object_ref(mNativeData); ++ ++ PropertyFlags supported = SupportedProperties(); ++ PropertyFlags mask = static_cast(1); ++ ++ for (uint32_t i = 0; gPropertyStrings[i]; ++i) { ++ if (!(mask & supported)) { ++ dbusmenu_menuitem_property_remove(mNativeData, gPropertyStrings[i]); ++ } ++ mask = static_cast(mask << 1); ++ } ++ ++ InitializeNativeData(); ++ if (mParent && mParent->IsBeingDisplayed()) { ++ ContainerIsOpening(); ++ } ++ ++ mListener->RegisterForContentChanges(mContent, this); ++ ++ return NS_OK; ++} ++ ++void ++nsMenuObject::ContainerIsOpening() ++{ ++ MOZ_ASSERT(nsContentUtils::IsSafeToRunScript()); ++ ++ UpdateContentAttributes(); ++ ++ RefPtr style = GetComputedStyle(); ++ Update(style); ++} ++ ++/* static */ void ++nsWeakMenuObject::AddWeakReference(nsWeakMenuObject *aWeak) ++{ ++ aWeak->mPrev = sHead; ++ sHead = aWeak; ++} ++ ++/* static */ void ++nsWeakMenuObject::RemoveWeakReference(nsWeakMenuObject *aWeak) ++{ ++ if (aWeak == sHead) { ++ sHead = aWeak->mPrev; ++ return; ++ } ++ ++ nsWeakMenuObject *weak = sHead; ++ while (weak && weak->mPrev != aWeak) { ++ weak = weak->mPrev; ++ } ++ ++ if (weak) { ++ weak->mPrev = aWeak->mPrev; ++ } ++} ++ ++/* static */ void ++nsWeakMenuObject::NotifyDestroyed(nsMenuObject *aMenuObject) ++{ ++ nsWeakMenuObject *weak = sHead; ++ while (weak) { ++ if (weak->mMenuObject == aMenuObject) { ++ weak->mMenuObject = nullptr; ++ } ++ ++ weak = weak->mPrev; ++ } ++} +--- /dev/null ++++ b/widget/gtk/nsMenuObject.h +@@ -0,0 +1,169 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsMenuObject_h__ ++#define __nsMenuObject_h__ ++ ++#include "mozilla/Attributes.h" ++#include "mozilla/ComputedStyleInlines.h" ++#include "nsCOMPtr.h" ++ ++#include "nsDbusmenu.h" ++#include "nsNativeMenuDocListener.h" ++ ++class nsIContent; ++class nsMenuContainer; ++class nsMenuObjectIconLoader; ++ ++#define DBUSMENU_PROPERTIES \ ++ DBUSMENU_PROPERTY(Label, DBUSMENU_MENUITEM_PROP_LABEL, 0) \ ++ DBUSMENU_PROPERTY(Enabled, DBUSMENU_MENUITEM_PROP_ENABLED, 1) \ ++ DBUSMENU_PROPERTY(Visible, DBUSMENU_MENUITEM_PROP_VISIBLE, 2) \ ++ DBUSMENU_PROPERTY(IconData, DBUSMENU_MENUITEM_PROP_ICON_DATA, 3) \ ++ DBUSMENU_PROPERTY(Type, DBUSMENU_MENUITEM_PROP_TYPE, 4) \ ++ DBUSMENU_PROPERTY(Shortcut, DBUSMENU_MENUITEM_PROP_SHORTCUT, 5) \ ++ DBUSMENU_PROPERTY(ToggleType, DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE, 6) \ ++ DBUSMENU_PROPERTY(ToggleState, DBUSMENU_MENUITEM_PROP_TOGGLE_STATE, 7) \ ++ DBUSMENU_PROPERTY(ChildDisplay, DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY, 8) ++ ++/* ++ * This is the base class for all menu nodes. Each instance represents ++ * a single node in the menu hierarchy. It wraps the corresponding DOM node and ++ * native menu node, keeps them in sync and transfers events between the two. ++ * It is not reference counted - each node is owned by its parent (the top ++ * level menubar is owned by the window) and keeps a weak pointer to its ++ * parent (which is guaranteed to always be valid because a node will never ++ * outlive its parent). It is not safe to keep a reference to nsMenuObject ++ * externally. ++ */ ++class nsMenuObject : public nsNativeMenuChangeObserver ++{ ++public: ++ enum EType { ++ eType_MenuBar, ++ eType_Menu, ++ eType_MenuItem ++ }; ++ ++ virtual ~nsMenuObject(); ++ ++ // Get the native menu item node ++ DbusmenuMenuitem* GetNativeData() const { return mNativeData; } ++ ++ // Get the parent menu object ++ nsMenuContainer* Parent() const { return mParent; } ++ ++ // Get the content node ++ nsIContent* ContentNode() const { return mContent; } ++ ++ // Get the type of this node. Must be provided by subclasses ++ virtual EType Type() const = 0; ++ ++ // Get the document listener ++ nsNativeMenuDocListener* DocListener() const { return mListener; } ++ ++ // Create the native menu item node (called by containers) ++ void CreateNativeData(); ++ ++ // Adopt the specified native menu item node (called by containers) ++ nsresult AdoptNativeData(DbusmenuMenuitem *aNativeData); ++ ++ // Called by the container to tell us that it's opening ++ void ContainerIsOpening(); ++ ++protected: ++ nsMenuObject(nsMenuContainer *aParent, nsIContent *aContent); ++ nsMenuObject(nsNativeMenuDocListener *aListener, nsIContent *aContent); ++ ++ enum PropertyFlags { ++#define DBUSMENU_PROPERTY(e, s, b) eProp##e = (1 << b), ++ DBUSMENU_PROPERTIES ++#undef DBUSMENU_PROPERTY ++ }; ++ ++ void UpdateLabel(); ++ void UpdateVisibility(mozilla::ComputedStyle *aComputedStyle); ++ void UpdateSensitivity(); ++ void UpdateIcon(mozilla::ComputedStyle *aComputedStyle); ++ ++ already_AddRefed GetComputedStyle(); ++ ++private: ++ friend class nsMenuObjectIconLoader; ++ ++ // Set up initial properties on the native data, connect to signals etc. ++ // This should be implemented by subclasses ++ virtual void InitializeNativeData(); ++ ++ // Return the properties that this menu object type supports ++ // This should be implemented by subclasses ++ virtual PropertyFlags SupportedProperties() const; ++ ++ // Determine whether this menu object could use the specified ++ // native item. Returns true by default but can be overridden by subclasses ++ virtual bool ++ IsCompatibleWithNativeData(DbusmenuMenuitem *aNativeData) const; ++ ++ // Update attributes on this objects content node when the container opens. ++ // This is called before style resolution, and should be implemented by ++ // subclasses who want to modify attributes that might affect style. ++ // This will not be called when there are script blockers ++ virtual void UpdateContentAttributes(); ++ ++ // Update properties that should be refreshed when the container opens. ++ // This should be implemented by subclasses that have properties which ++ // need refreshing ++ virtual void Update(mozilla::ComputedStyle *aComputedStyle); ++ ++ bool ShouldShowIcon() const; ++ void ClearIcon(); ++ ++ nsCOMPtr mContent; ++ // mListener is a strong ref for simplicity - someone in the tree needs to ++ // own it, and this only really needs to be the top-level object (as no ++ // children outlives their parent). However, we need to keep it alive until ++ // after running the nsMenuObject destructor for the top-level menu object, ++ // hence the strong ref ++ RefPtr mListener; ++ nsMenuContainer *mParent; // [weak] ++ DbusmenuMenuitem *mNativeData; // [strong] ++ RefPtr mIconLoader; ++}; ++ ++// Keep a weak pointer to a menu object ++class nsWeakMenuObject ++{ ++public: ++ nsWeakMenuObject() : mPrev(nullptr), mMenuObject(nullptr) {} ++ ++ nsWeakMenuObject(nsMenuObject *aMenuObject) : ++ mPrev(nullptr), mMenuObject(aMenuObject) ++ { ++ AddWeakReference(this); ++ } ++ ++ ~nsWeakMenuObject() { RemoveWeakReference(this); } ++ ++ nsMenuObject* get() const { return mMenuObject; } ++ ++ nsMenuObject* operator->() const { return mMenuObject; } ++ ++ explicit operator bool() const { return !!mMenuObject; } ++ ++ static void NotifyDestroyed(nsMenuObject *aMenuObject); ++ ++private: ++ static void AddWeakReference(nsWeakMenuObject *aWeak); ++ static void RemoveWeakReference(nsWeakMenuObject *aWeak); ++ ++ nsWeakMenuObject *mPrev; ++ static nsWeakMenuObject *sHead; ++ ++ nsMenuObject *mMenuObject; ++}; ++ ++#endif /* __nsMenuObject_h__ */ +--- /dev/null ++++ b/widget/gtk/nsMenuSeparator.cpp +@@ -0,0 +1,82 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "mozilla/Assertions.h" ++#include "nsCRT.h" ++#include "nsGkAtoms.h" ++ ++#include "nsDbusmenu.h" ++ ++#include "nsMenuContainer.h" ++#include "nsMenuSeparator.h" ++ ++using namespace mozilla; ++ ++void ++nsMenuSeparator::InitializeNativeData() ++{ ++ dbusmenu_menuitem_property_set(GetNativeData(), ++ DBUSMENU_MENUITEM_PROP_TYPE, ++ "separator"); ++} ++ ++void ++nsMenuSeparator::Update(ComputedStyle *aComputedStyle) ++{ ++ UpdateVisibility(aComputedStyle); ++} ++ ++bool ++nsMenuSeparator::IsCompatibleWithNativeData(DbusmenuMenuitem *aNativeData) const ++{ ++ return nsCRT::strcmp(dbusmenu_menuitem_property_get(aNativeData, ++ DBUSMENU_MENUITEM_PROP_TYPE), ++ "separator") == 0; ++} ++ ++nsMenuObject::PropertyFlags ++nsMenuSeparator::SupportedProperties() const ++{ ++ return static_cast( ++ nsMenuObject::ePropVisible | ++ nsMenuObject::ePropType ++ ); ++} ++ ++void ++nsMenuSeparator::OnAttributeChanged(nsIContent *aContent, nsAtom *aAttribute) ++{ ++ MOZ_ASSERT(aContent == ContentNode(), "Received an event that wasn't meant for us!"); ++ ++ if (!Parent()->IsBeingDisplayed()) { ++ return; ++ } ++ ++ if (aAttribute == nsGkAtoms::hidden || ++ aAttribute == nsGkAtoms::collapsed) { ++ RefPtr style = GetComputedStyle(); ++ UpdateVisibility(style); ++ } ++} ++ ++nsMenuSeparator::nsMenuSeparator(nsMenuContainer *aParent, ++ nsIContent *aContent) : ++ nsMenuObject(aParent, aContent) ++{ ++ MOZ_COUNT_CTOR(nsMenuSeparator); ++} ++ ++nsMenuSeparator::~nsMenuSeparator() ++{ ++ MOZ_COUNT_DTOR(nsMenuSeparator); ++} ++ ++nsMenuObject::EType ++nsMenuSeparator::Type() const ++{ ++ return eType_MenuItem; ++} +--- /dev/null ++++ b/widget/gtk/nsMenuSeparator.h +@@ -0,0 +1,37 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsMenuSeparator_h__ ++#define __nsMenuSeparator_h__ ++ ++#include "mozilla/Attributes.h" ++ ++#include "nsMenuObject.h" ++ ++class nsIContent; ++class nsAtom; ++class nsMenuContainer; ++ ++// Menu separator class ++class nsMenuSeparator final : public nsMenuObject ++{ ++public: ++ nsMenuSeparator(nsMenuContainer *aParent, nsIContent *aContent); ++ ~nsMenuSeparator(); ++ ++ nsMenuObject::EType Type() const override; ++ ++private: ++ void InitializeNativeData() override; ++ void Update(mozilla::ComputedStyle *aComputedStyle) override; ++ bool IsCompatibleWithNativeData(DbusmenuMenuitem *aNativeData) const override; ++ nsMenuObject::PropertyFlags SupportedProperties() const override; ++ ++ void OnAttributeChanged(nsIContent *aContent, nsAtom *aAttribute) override; ++}; ++ ++#endif /* __nsMenuSeparator_h__ */ +--- /dev/null ++++ b/widget/gtk/nsNativeMenuDocListener.cpp +@@ -0,0 +1,347 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "mozilla/Assertions.h" ++#include "mozilla/DebugOnly.h" ++#include "mozilla/dom/Document.h" ++#include "mozilla/dom/Element.h" ++#include "nsContentUtils.h" ++#include "nsAtom.h" ++#include "nsIContent.h" ++ ++#include "nsMenuContainer.h" ++ ++#include "nsNativeMenuDocListener.h" ++ ++using namespace mozilla; ++ ++uint32_t nsNativeMenuDocListener::sUpdateBlockersCount = 0; ++ ++nsNativeMenuDocListenerTArray *gPendingListeners; ++ ++/* ++ * Small helper which caches a single listener, so that consecutive ++ * events which go to the same node avoid multiple hash table lookups ++ */ ++class MOZ_STACK_CLASS DispatchHelper ++{ ++public: ++ DispatchHelper(nsNativeMenuDocListener *aListener, ++ nsIContent *aContent) : ++ mObserver(nullptr) ++ { ++ if (aContent == aListener->mLastSource) { ++ mObserver = aListener->mLastTarget; ++ } else { ++ mObserver = aListener->mContentToObserverTable.Get(aContent); ++ if (mObserver) { ++ aListener->mLastSource = aContent; ++ aListener->mLastTarget = mObserver; ++ } ++ } ++ } ++ ++ ~DispatchHelper() { }; ++ ++ nsNativeMenuChangeObserver* Observer() const { return mObserver; } ++ ++ bool HasObserver() const { return !!mObserver; } ++ ++private: ++ nsNativeMenuChangeObserver *mObserver; ++}; ++ ++NS_IMPL_ISUPPORTS(nsNativeMenuDocListener, nsIMutationObserver) ++ ++nsNativeMenuDocListener::~nsNativeMenuDocListener() ++{ ++ MOZ_ASSERT(mContentToObserverTable.Count() == 0, ++ "Some nodes forgot to unregister listeners. This is bad! (and we're lucky we made it this far)"); ++ MOZ_COUNT_DTOR(nsNativeMenuDocListener); ++} ++ ++void ++nsNativeMenuDocListener::AttributeChanged(mozilla::dom::Element *aElement, ++ int32_t aNameSpaceID, ++ nsAtom *aAttribute, ++ int32_t aModType, ++ const nsAttrValue* aOldValue) ++{ ++ if (sUpdateBlockersCount == 0) { ++ DoAttributeChanged(aElement, aAttribute); ++ return; ++ } ++ ++ MutationRecord *m = mPendingMutations.AppendElement(MakeUnique())->get(); ++ m->mType = MutationRecord::eAttributeChanged; ++ m->mTarget = aElement; ++ m->mAttribute = aAttribute; ++ ++ ScheduleFlush(this); ++} ++ ++void ++nsNativeMenuDocListener::ContentAppended(nsIContent *aFirstNewContent) ++{ ++ for (nsIContent *c = aFirstNewContent; c; c = c->GetNextSibling()) { ++ ContentInserted(c); ++ } ++} ++ ++void ++nsNativeMenuDocListener::ContentInserted(nsIContent *aChild) ++{ ++ nsIContent* container = aChild->GetParent(); ++ if (!container) { ++ return; ++ } ++ ++ nsIContent *prevSibling = nsMenuContainer::GetPreviousSupportedSibling(aChild); ++ ++ if (sUpdateBlockersCount == 0) { ++ DoContentInserted(container, aChild, prevSibling); ++ return; ++ } ++ ++ MutationRecord *m = mPendingMutations.AppendElement(MakeUnique())->get(); ++ m->mType = MutationRecord::eContentInserted; ++ m->mTarget = container; ++ m->mChild = aChild; ++ m->mPrevSibling = prevSibling; ++ ++ ScheduleFlush(this); ++} ++ ++void ++nsNativeMenuDocListener::ContentRemoved(nsIContent *aChild, ++ nsIContent *aPreviousSibling) ++{ ++ nsIContent* container = aChild->GetParent(); ++ if (!container) { ++ return; ++ } ++ ++ if (sUpdateBlockersCount == 0) { ++ DoContentRemoved(container, aChild); ++ return; ++ } ++ ++ MutationRecord *m = mPendingMutations.AppendElement(MakeUnique())->get(); ++ m->mType = MutationRecord::eContentRemoved; ++ m->mTarget = container; ++ m->mChild = aChild; ++ ++ ScheduleFlush(this); ++} ++ ++void ++nsNativeMenuDocListener::NodeWillBeDestroyed(const nsINode *aNode) ++{ ++ mDocument = nullptr; ++} ++ ++void ++nsNativeMenuDocListener::DoAttributeChanged(nsIContent *aContent, ++ nsAtom *aAttribute) ++{ ++ DispatchHelper h(this, aContent); ++ if (h.HasObserver()) { ++ h.Observer()->OnAttributeChanged(aContent, aAttribute); ++ } ++} ++ ++void ++nsNativeMenuDocListener::DoContentInserted(nsIContent *aContainer, ++ nsIContent *aChild, ++ nsIContent *aPrevSibling) ++{ ++ DispatchHelper h(this, aContainer); ++ if (h.HasObserver()) { ++ h.Observer()->OnContentInserted(aContainer, aChild, aPrevSibling); ++ } ++} ++ ++void ++nsNativeMenuDocListener::DoContentRemoved(nsIContent *aContainer, ++ nsIContent *aChild) ++{ ++ DispatchHelper h(this, aContainer); ++ if (h.HasObserver()) { ++ h.Observer()->OnContentRemoved(aContainer, aChild); ++ } ++} ++ ++void ++nsNativeMenuDocListener::DoBeginUpdates(nsIContent *aTarget) ++{ ++ DispatchHelper h(this, aTarget); ++ if (h.HasObserver()) { ++ h.Observer()->OnBeginUpdates(aTarget); ++ } ++} ++ ++void ++nsNativeMenuDocListener::DoEndUpdates(nsIContent *aTarget) ++{ ++ DispatchHelper h(this, aTarget); ++ if (h.HasObserver()) { ++ h.Observer()->OnEndUpdates(); ++ } ++} ++ ++void ++nsNativeMenuDocListener::FlushPendingMutations() ++{ ++ nsIContent *currentTarget = nullptr; ++ bool inUpdateSequence = false; ++ ++ while (mPendingMutations.Length() > 0) { ++ MutationRecord *m = mPendingMutations[0].get(); ++ ++ if (m->mTarget != currentTarget) { ++ if (inUpdateSequence) { ++ DoEndUpdates(currentTarget); ++ inUpdateSequence = false; ++ } ++ ++ currentTarget = m->mTarget; ++ ++ if (mPendingMutations.Length() > 1 && ++ mPendingMutations[1]->mTarget == currentTarget) { ++ DoBeginUpdates(currentTarget); ++ inUpdateSequence = true; ++ } ++ } ++ ++ switch (m->mType) { ++ case MutationRecord::eAttributeChanged: ++ DoAttributeChanged(m->mTarget, m->mAttribute); ++ break; ++ case MutationRecord::eContentInserted: ++ DoContentInserted(m->mTarget, m->mChild, m->mPrevSibling); ++ break; ++ case MutationRecord::eContentRemoved: ++ DoContentRemoved(m->mTarget, m->mChild); ++ break; ++ default: ++ MOZ_ASSERT_UNREACHABLE("Invalid type"); ++ } ++ ++ mPendingMutations.RemoveElementAt(0); ++ } ++ ++ if (inUpdateSequence) { ++ DoEndUpdates(currentTarget); ++ } ++} ++ ++/* static */ void ++nsNativeMenuDocListener::ScheduleFlush(nsNativeMenuDocListener *aListener) ++{ ++ MOZ_ASSERT(sUpdateBlockersCount > 0, "Shouldn't be doing this now"); ++ ++ if (!gPendingListeners) { ++ gPendingListeners = new nsNativeMenuDocListenerTArray; ++ } ++ ++ if (gPendingListeners->IndexOf(aListener) == ++ nsNativeMenuDocListenerTArray::NoIndex) { ++ gPendingListeners->AppendElement(aListener); ++ } ++} ++ ++/* static */ void ++nsNativeMenuDocListener::CancelFlush(nsNativeMenuDocListener *aListener) ++{ ++ if (!gPendingListeners) { ++ return; ++ } ++ ++ gPendingListeners->RemoveElement(aListener); ++} ++ ++/* static */ void ++nsNativeMenuDocListener::RemoveUpdateBlocker() ++{ ++ if (sUpdateBlockersCount == 1 && gPendingListeners) { ++ while (gPendingListeners->Length() > 0) { ++ (*gPendingListeners)[0]->FlushPendingMutations(); ++ gPendingListeners->RemoveElementAt(0); ++ } ++ } ++ ++ MOZ_ASSERT(sUpdateBlockersCount > 0, "Negative update blockers count!"); ++ sUpdateBlockersCount--; ++} ++ ++nsNativeMenuDocListener::nsNativeMenuDocListener(nsIContent *aRootNode) : ++ mRootNode(aRootNode), ++ mDocument(nullptr), ++ mLastSource(nullptr), ++ mLastTarget(nullptr) ++{ ++ MOZ_COUNT_CTOR(nsNativeMenuDocListener); ++} ++ ++void ++nsNativeMenuDocListener::RegisterForContentChanges(nsIContent *aContent, ++ nsNativeMenuChangeObserver *aObserver) ++{ ++ MOZ_ASSERT(aContent, "Need content parameter"); ++ MOZ_ASSERT(aObserver, "Need observer parameter"); ++ if (!aContent || !aObserver) { ++ return; ++ } ++ ++ DebugOnly old; ++ MOZ_ASSERT(!mContentToObserverTable.Get(aContent, &old) || old == aObserver, ++ "Multiple observers for the same content node are not supported"); ++ ++ mContentToObserverTable.InsertOrUpdate(aContent, aObserver); ++} ++ ++void ++nsNativeMenuDocListener::UnregisterForContentChanges(nsIContent *aContent) ++{ ++ MOZ_ASSERT(aContent, "Need content parameter"); ++ if (!aContent) { ++ return; ++ } ++ ++ mContentToObserverTable.Remove(aContent); ++ if (aContent == mLastSource) { ++ mLastSource = nullptr; ++ mLastTarget = nullptr; ++ } ++} ++ ++void ++nsNativeMenuDocListener::Start() ++{ ++ if (mDocument) { ++ return; ++ } ++ ++ mDocument = mRootNode->OwnerDoc(); ++ if (!mDocument) { ++ return; ++ } ++ ++ mDocument->AddMutationObserver(this); ++} ++ ++void ++nsNativeMenuDocListener::Stop() ++{ ++ if (mDocument) { ++ mDocument->RemoveMutationObserver(this); ++ mDocument = nullptr; ++ } ++ ++ CancelFlush(this); ++ mPendingMutations.Clear(); ++} +--- /dev/null ++++ b/widget/gtk/nsNativeMenuDocListener.h +@@ -0,0 +1,152 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsNativeMenuDocListener_h__ ++#define __nsNativeMenuDocListener_h__ ++ ++#include "mozilla/Attributes.h" ++#include "mozilla/RefPtr.h" ++#include "mozilla/UniquePtr.h" ++#include "nsTHashMap.h" ++#include "nsStubMutationObserver.h" ++#include "nsTArray.h" ++ ++class nsAtom; ++class nsIContent; ++class nsNativeMenuChangeObserver; ++ ++namespace mozilla { ++namespace dom { ++class Document; ++} ++} ++ ++/* ++ * This class keeps a mapping of content nodes to observers and forwards DOM ++ * mutations to these. There is exactly one of these for every menubar. ++ */ ++class nsNativeMenuDocListener final : nsStubMutationObserver ++{ ++public: ++ NS_DECL_ISUPPORTS ++ ++ nsNativeMenuDocListener(nsIContent *aRootNode); ++ ++ // Register an observer to receive mutation events for the specified ++ // content node. The caller must keep the observer alive until ++ // UnregisterForContentChanges is called. ++ void RegisterForContentChanges(nsIContent *aContent, ++ nsNativeMenuChangeObserver *aObserver); ++ ++ // Unregister the registered observer for the specified content node ++ void UnregisterForContentChanges(nsIContent *aContent); ++ ++ // Start listening to the document and forwarding DOM mutations to ++ // registered observers. ++ void Start(); ++ ++ // Stop listening to the document. No DOM mutations will be forwarded ++ // to registered observers. ++ void Stop(); ++ ++ /* ++ * This class is intended to be used inside GObject signal handlers. ++ * It allows us to queue updates until we have finished delivering ++ * events to Gecko, and then we can batch updates to our view of the ++ * menu. This allows us to do menu updates without altering the structure ++ * seen by the OS. ++ */ ++ class MOZ_STACK_CLASS BlockUpdatesScope ++ { ++ public: ++ BlockUpdatesScope() ++ { ++ nsNativeMenuDocListener::AddUpdateBlocker(); ++ } ++ ++ ~BlockUpdatesScope() ++ { ++ nsNativeMenuDocListener::RemoveUpdateBlocker(); ++ } ++ }; ++ ++private: ++ friend class DispatchHelper; ++ ++ struct MutationRecord { ++ enum RecordType { ++ eAttributeChanged, ++ eContentInserted, ++ eContentRemoved ++ } mType; ++ ++ nsCOMPtr mTarget; ++ nsCOMPtr mChild; ++ nsCOMPtr mPrevSibling; ++ RefPtr mAttribute; ++ }; ++ ++ ~nsNativeMenuDocListener(); ++ ++ NS_DECL_NSIMUTATIONOBSERVER_ATTRIBUTECHANGED ++ NS_DECL_NSIMUTATIONOBSERVER_CONTENTAPPENDED ++ NS_DECL_NSIMUTATIONOBSERVER_CONTENTINSERTED ++ NS_DECL_NSIMUTATIONOBSERVER_CONTENTREMOVED ++ NS_DECL_NSIMUTATIONOBSERVER_NODEWILLBEDESTROYED ++ ++ void DoAttributeChanged(nsIContent *aContent, nsAtom *aAttribute); ++ void DoContentInserted(nsIContent *aContainer, ++ nsIContent *aChild, ++ nsIContent *aPrevSibling); ++ void DoContentRemoved(nsIContent *aContainer, nsIContent *aChild); ++ void DoBeginUpdates(nsIContent *aTarget); ++ void DoEndUpdates(nsIContent *aTarget); ++ ++ void FlushPendingMutations(); ++ static void ScheduleFlush(nsNativeMenuDocListener *aListener); ++ static void CancelFlush(nsNativeMenuDocListener *aListener); ++ ++ static void AddUpdateBlocker() { ++sUpdateBlockersCount; } ++ static void RemoveUpdateBlocker(); ++ ++ nsCOMPtr mRootNode; ++ mozilla::dom::Document *mDocument; ++ nsIContent *mLastSource; ++ nsNativeMenuChangeObserver *mLastTarget; ++ nsTArray > mPendingMutations; ++ nsTHashMap, nsNativeMenuChangeObserver *> mContentToObserverTable; ++ ++ static uint32_t sUpdateBlockersCount; ++}; ++ ++typedef nsTArray > nsNativeMenuDocListenerTArray; ++ ++/* ++ * Implemented by classes that want to listen to mutation events from content ++ * nodes. ++ */ ++class nsNativeMenuChangeObserver ++{ ++public: ++ virtual void OnAttributeChanged(nsIContent *aContent, nsAtom *aAttribute) {} ++ ++ virtual void OnContentInserted(nsIContent *aContainer, ++ nsIContent *aChild, ++ nsIContent *aPrevSibling) {} ++ ++ virtual void OnContentRemoved(nsIContent *aContainer, nsIContent *aChild) {} ++ ++ // Signals the start of a sequence of more than 1 event for the specified ++ // node. This only happens when events are flushed as all BlockUpdatesScope ++ // instances go out of scope ++ virtual void OnBeginUpdates(nsIContent *aContent) {}; ++ ++ // Signals the end of a sequence of events ++ virtual void OnEndUpdates() {}; ++}; ++ ++#endif /* __nsNativeMenuDocListener_h__ */ +--- /dev/null ++++ b/widget/gtk/nsNativeMenuService.cpp +@@ -0,0 +1,478 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "mozilla/dom/Element.h" ++#include "mozilla/Assertions.h" ++#include "mozilla/Preferences.h" ++#include "mozilla/UniquePtr.h" ++#include "nsCOMPtr.h" ++#include "nsCRT.h" ++#include "nsGtkUtils.h" ++#include "nsIContent.h" ++#include "nsIWidget.h" ++#include "nsServiceManagerUtils.h" ++#include "nsWindow.h" ++#include "prlink.h" ++ ++#include "nsDbusmenu.h" ++#include "nsMenuBar.h" ++#include "nsNativeMenuDocListener.h" ++ ++#include ++#include ++#include ++ ++#include "nsNativeMenuService.h" ++ ++using namespace mozilla; ++ ++nsNativeMenuService* nsNativeMenuService::sService = nullptr; ++ ++extern PangoLayout* gPangoLayout; ++extern nsNativeMenuDocListenerTArray* gPendingListeners; ++ ++#undef g_dbus_proxy_new_for_bus ++#undef g_dbus_proxy_new_for_bus_finish ++#undef g_dbus_proxy_call ++#undef g_dbus_proxy_call_finish ++#undef g_dbus_proxy_get_name_owner ++ ++typedef void (*_g_dbus_proxy_new_for_bus_fn)(GBusType, GDBusProxyFlags, ++ GDBusInterfaceInfo*, ++ const gchar*, const gchar*, ++ const gchar*, GCancellable*, ++ GAsyncReadyCallback, gpointer); ++ ++typedef GDBusProxy* (*_g_dbus_proxy_new_for_bus_finish_fn)(GAsyncResult*, ++ GError**); ++typedef void (*_g_dbus_proxy_call_fn)(GDBusProxy*, const gchar*, GVariant*, ++ GDBusCallFlags, gint, GCancellable*, ++ GAsyncReadyCallback, gpointer); ++typedef GVariant* (*_g_dbus_proxy_call_finish_fn)(GDBusProxy*, GAsyncResult*, ++ GError**); ++typedef gchar* (*_g_dbus_proxy_get_name_owner_fn)(GDBusProxy*); ++ ++static _g_dbus_proxy_new_for_bus_fn _g_dbus_proxy_new_for_bus; ++static _g_dbus_proxy_new_for_bus_finish_fn _g_dbus_proxy_new_for_bus_finish; ++static _g_dbus_proxy_call_fn _g_dbus_proxy_call; ++static _g_dbus_proxy_call_finish_fn _g_dbus_proxy_call_finish; ++static _g_dbus_proxy_get_name_owner_fn _g_dbus_proxy_get_name_owner; ++ ++#define g_dbus_proxy_new_for_bus _g_dbus_proxy_new_for_bus ++#define g_dbus_proxy_new_for_bus_finish _g_dbus_proxy_new_for_bus_finish ++#define g_dbus_proxy_call _g_dbus_proxy_call ++#define g_dbus_proxy_call_finish _g_dbus_proxy_call_finish ++#define g_dbus_proxy_get_name_owner _g_dbus_proxy_get_name_owner ++ ++static PRLibrary *gGIOLib = nullptr; ++ ++static nsresult ++GDBusInit() ++{ ++ gGIOLib = PR_LoadLibrary("libgio-2.0.so.0"); ++ if (!gGIOLib) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ g_dbus_proxy_new_for_bus = (_g_dbus_proxy_new_for_bus_fn)PR_FindFunctionSymbol(gGIOLib, "g_dbus_proxy_new_for_bus"); ++ g_dbus_proxy_new_for_bus_finish = (_g_dbus_proxy_new_for_bus_finish_fn)PR_FindFunctionSymbol(gGIOLib, "g_dbus_proxy_new_for_bus_finish"); ++ g_dbus_proxy_call = (_g_dbus_proxy_call_fn)PR_FindFunctionSymbol(gGIOLib, "g_dbus_proxy_call"); ++ g_dbus_proxy_call_finish = (_g_dbus_proxy_call_finish_fn)PR_FindFunctionSymbol(gGIOLib, "g_dbus_proxy_call_finish"); ++ g_dbus_proxy_get_name_owner = (_g_dbus_proxy_get_name_owner_fn)PR_FindFunctionSymbol(gGIOLib, "g_dbus_proxy_get_name_owner"); ++ ++ if (!g_dbus_proxy_new_for_bus || ++ !g_dbus_proxy_new_for_bus_finish || ++ !g_dbus_proxy_call || ++ !g_dbus_proxy_call_finish || ++ !g_dbus_proxy_get_name_owner) { ++ return NS_ERROR_FAILURE; ++ } ++ ++ return NS_OK; ++} ++ ++NS_IMPL_ISUPPORTS(nsNativeMenuService, nsINativeMenuService) ++ ++nsNativeMenuService::nsNativeMenuService() : ++ mCreateProxyCancellable(nullptr), mDbusProxy(nullptr), mOnline(false) ++{ ++} ++ ++nsNativeMenuService::~nsNativeMenuService() ++{ ++ SetOnline(false); ++ ++ if (mCreateProxyCancellable) { ++ g_cancellable_cancel(mCreateProxyCancellable); ++ g_object_unref(mCreateProxyCancellable); ++ mCreateProxyCancellable = nullptr; ++ } ++ ++ // Make sure we disconnect map-event handlers ++ while (mMenuBars.Length() > 0) { ++ NotifyNativeMenuBarDestroyed(mMenuBars[0]); ++ } ++ ++ Preferences::UnregisterCallback(PrefChangedCallback, ++ "ui.use_unity_menubar"); ++ ++ if (mDbusProxy) { ++ g_signal_handlers_disconnect_by_func(mDbusProxy, ++ FuncToGpointer(name_owner_changed_cb), ++ NULL); ++ g_object_unref(mDbusProxy); ++ } ++ ++ if (gPendingListeners) { ++ delete gPendingListeners; ++ gPendingListeners = nullptr; ++ } ++ if (gPangoLayout) { ++ g_object_unref(gPangoLayout); ++ gPangoLayout = nullptr; ++ } ++ ++ MOZ_ASSERT(sService == this); ++ sService = nullptr; ++} ++ ++nsresult ++nsNativeMenuService::Init() ++{ ++ nsresult rv = nsDbusmenuFunctions::Init(); ++ if (NS_FAILED(rv)) { ++ return rv; ++ } ++ ++ rv = GDBusInit(); ++ if (NS_FAILED(rv)) { ++ return rv; ++ } ++ ++ Preferences::RegisterCallback(PrefChangedCallback, ++ "ui.use_unity_menubar"); ++ ++ mCreateProxyCancellable = g_cancellable_new(); ++ ++ g_dbus_proxy_new_for_bus(G_BUS_TYPE_SESSION, ++ static_cast( ++ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | ++ G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS | ++ G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START), ++ nullptr, ++ "com.canonical.AppMenu.Registrar", ++ "/com/canonical/AppMenu/Registrar", ++ "com.canonical.AppMenu.Registrar", ++ mCreateProxyCancellable, proxy_created_cb, ++ nullptr); ++ ++ /* We don't technically know that the shell will draw the menubar until ++ * we know whether anybody owns the name of the menubar service on the ++ * session bus. However, discovering this happens asynchronously so ++ * we optimize for the common case here by assuming that the shell will ++ * draw window menubars if we are running inside Unity. This should ++ * mean that we avoid temporarily displaying the window menubar ourselves ++ */ ++ const char *desktop = getenv("XDG_CURRENT_DESKTOP"); ++ if (nsCRT::strcmp(desktop, "Unity") == 0) { ++ SetOnline(true); ++ } ++ ++ return NS_OK; ++} ++ ++/* static */ void ++nsNativeMenuService::EnsureInitialized() ++{ ++ if (sService) { ++ return; ++ } ++ nsCOMPtr service = ++ do_GetService("@mozilla.org/widget/nativemenuservice;1"); ++} ++ ++void ++nsNativeMenuService::SetOnline(bool aOnline) ++{ ++ if (!Preferences::GetBool("ui.use_unity_menubar", true)) { ++ aOnline = false; ++ } ++ ++ mOnline = aOnline; ++ if (aOnline) { ++ for (uint32_t i = 0; i < mMenuBars.Length(); ++i) { ++ RegisterNativeMenuBar(mMenuBars[i]); ++ } ++ } else { ++ for (uint32_t i = 0; i < mMenuBars.Length(); ++i) { ++ mMenuBars[i]->Deactivate(); ++ } ++ } ++} ++ ++void ++nsNativeMenuService::RegisterNativeMenuBar(nsMenuBar *aMenuBar) ++{ ++ if (!mOnline) { ++ return; ++ } ++ ++ // This will effectively create the native menubar for ++ // exporting over the session bus, and hide the XUL menubar ++ aMenuBar->Activate(); ++ ++ if (!mDbusProxy || ++ !gtk_widget_get_mapped(aMenuBar->TopLevelWindow()) || ++ mMenuBarRegistrationCancellables.Get(aMenuBar, nullptr)) { ++ // Don't go further if we don't have a proxy for the shell menu ++ // service, the window isn't mapped or there is a request in progress. ++ return; ++ } ++ ++ uint32_t xid = aMenuBar->WindowId(); ++ nsCString path = aMenuBar->ObjectPath(); ++ if (xid == 0 || path.IsEmpty()) { ++ NS_WARNING("Menubar has invalid XID or object path"); ++ return; ++ } ++ ++ GCancellable *cancellable = g_cancellable_new(); ++ mMenuBarRegistrationCancellables.InsertOrUpdate(aMenuBar, cancellable); ++ ++ // We keep a weak ref because we can't assume that GDBus cancellation ++ // is reliable (see https://launchpad.net/bugs/953562) ++ ++ g_dbus_proxy_call(mDbusProxy, "RegisterWindow", ++ g_variant_new("(uo)", xid, path.get()), ++ G_DBUS_CALL_FLAGS_NONE, -1, ++ cancellable, ++ register_native_menubar_cb, aMenuBar); ++} ++ ++/* static */ void ++nsNativeMenuService::name_owner_changed_cb(GObject *gobject, ++ GParamSpec *pspec, ++ gpointer user_data) ++{ ++ nsNativeMenuService::GetSingleton()->OnNameOwnerChanged(); ++} ++ ++/* static */ void ++nsNativeMenuService::proxy_created_cb(GObject *source_object, ++ GAsyncResult *res, ++ gpointer user_data) ++{ ++ GError *error = nullptr; ++ GDBusProxy *proxy = g_dbus_proxy_new_for_bus_finish(res, &error); ++ if (error && g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { ++ g_error_free(error); ++ return; ++ } ++ ++ if (error) { ++ g_error_free(error); ++ } ++ ++ // We need this check because we can't assume that GDBus cancellation ++ // is reliable (see https://launchpad.net/bugs/953562) ++ nsNativeMenuService *self = nsNativeMenuService::GetSingleton(); ++ if (!self) { ++ if (proxy) { ++ g_object_unref(proxy); ++ } ++ return; ++ } ++ ++ self->OnProxyCreated(proxy); ++} ++ ++/* static */ void ++nsNativeMenuService::register_native_menubar_cb(GObject *source_object, ++ GAsyncResult *res, ++ gpointer user_data) ++{ ++ nsMenuBar *menuBar = static_cast(user_data); ++ ++ GError *error = nullptr; ++ GVariant *results = g_dbus_proxy_call_finish(G_DBUS_PROXY(source_object), ++ res, &error); ++ if (results) { ++ // There's nothing useful in the response ++ g_variant_unref(results); ++ } ++ ++ bool success = error ? false : true; ++ if (error && g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { ++ g_error_free(error); ++ return; ++ } ++ ++ if (error) { ++ g_error_free(error); ++ } ++ ++ nsNativeMenuService *self = nsNativeMenuService::GetSingleton(); ++ if (!self) { ++ return; ++ } ++ ++ self->OnNativeMenuBarRegistered(menuBar, success); ++} ++ ++/* static */ gboolean ++nsNativeMenuService::map_event_cb(GtkWidget *widget, ++ GdkEvent *event, ++ gpointer user_data) ++{ ++ nsMenuBar *menubar = static_cast(user_data); ++ nsNativeMenuService::GetSingleton()->RegisterNativeMenuBar(menubar); ++ ++ return FALSE; ++} ++ ++void ++nsNativeMenuService::OnNameOwnerChanged() ++{ ++ char *owner = g_dbus_proxy_get_name_owner(mDbusProxy); ++ SetOnline(owner ? true : false); ++ g_free(owner); ++} ++ ++void ++nsNativeMenuService::OnProxyCreated(GDBusProxy *aProxy) ++{ ++ mDbusProxy = aProxy; ++ ++ g_object_unref(mCreateProxyCancellable); ++ mCreateProxyCancellable = nullptr; ++ ++ if (!mDbusProxy) { ++ SetOnline(false); ++ return; ++ } ++ ++ g_signal_connect(mDbusProxy, "notify::g-name-owner", ++ G_CALLBACK(name_owner_changed_cb), nullptr); ++ ++ OnNameOwnerChanged(); ++} ++ ++void ++nsNativeMenuService::OnNativeMenuBarRegistered(nsMenuBar *aMenuBar, ++ bool aSuccess) ++{ ++ // Don't assume that GDBus cancellation is reliable (ie, |aMenuBar| might ++ // have already been deleted (see https://launchpad.net/bugs/953562) ++ GCancellable *cancellable = nullptr; ++ if (!mMenuBarRegistrationCancellables.Get(aMenuBar, &cancellable)) { ++ return; ++ } ++ ++ g_object_unref(cancellable); ++ mMenuBarRegistrationCancellables.Remove(aMenuBar); ++ ++ if (!aSuccess) { ++ aMenuBar->Deactivate(); ++ } ++} ++ ++/* static */ void ++nsNativeMenuService::PrefChangedCallback(const char *aPref, ++ void *aClosure) ++{ ++ nsNativeMenuService::GetSingleton()->PrefChanged(); ++} ++ ++void ++nsNativeMenuService::PrefChanged() ++{ ++ if (!mDbusProxy) { ++ SetOnline(false); ++ return; ++ } ++ ++ OnNameOwnerChanged(); ++} ++ ++NS_IMETHODIMP ++nsNativeMenuService::CreateNativeMenuBar(nsIWidget *aParent, ++ mozilla::dom::Element *aMenuBarNode) ++{ ++ NS_ENSURE_ARG(aParent); ++ NS_ENSURE_ARG(aMenuBarNode); ++ ++ if (aMenuBarNode->AttrValueIs(kNameSpaceID_None, ++ nsGkAtoms::_moz_menubarkeeplocal, ++ nsGkAtoms::_true, ++ eCaseMatters)) { ++ return NS_OK; ++ } ++ ++ UniquePtr menubar(nsMenuBar::Create(aParent, aMenuBarNode)); ++ if (!menubar) { ++ NS_WARNING("Failed to create menubar"); ++ return NS_ERROR_FAILURE; ++ } ++ ++ // Unity forgets our window if it is unmapped by the application, which ++ // happens with some extensions that add "minimize to tray" type ++ // functionality. We hook on to the MapNotify event to re-register our menu ++ // with Unity ++ g_signal_connect(G_OBJECT(menubar->TopLevelWindow()), ++ "map-event", G_CALLBACK(map_event_cb), ++ menubar.get()); ++ ++ mMenuBars.AppendElement(menubar.get()); ++ RegisterNativeMenuBar(menubar.get()); ++ ++ static_cast(aParent)->SetMenuBar(std::move(menubar)); ++ ++ return NS_OK; ++} ++ ++/* static */ already_AddRefed ++nsNativeMenuService::GetInstanceForServiceManager() ++{ ++ RefPtr service(sService); ++ ++ if (service) { ++ return service.forget(); ++ } ++ ++ service = new nsNativeMenuService(); ++ ++ if (NS_FAILED(service->Init())) { ++ return nullptr; ++ } ++ ++ sService = service.get(); ++ return service.forget(); ++} ++ ++/* static */ nsNativeMenuService* ++nsNativeMenuService::GetSingleton() ++{ ++ EnsureInitialized(); ++ return sService; ++} ++ ++void ++nsNativeMenuService::NotifyNativeMenuBarDestroyed(nsMenuBar *aMenuBar) ++{ ++ g_signal_handlers_disconnect_by_func(aMenuBar->TopLevelWindow(), ++ FuncToGpointer(map_event_cb), ++ aMenuBar); ++ ++ mMenuBars.RemoveElement(aMenuBar); ++ ++ GCancellable *cancellable = nullptr; ++ if (mMenuBarRegistrationCancellables.Get(aMenuBar, &cancellable)) { ++ mMenuBarRegistrationCancellables.Remove(aMenuBar); ++ g_cancellable_cancel(cancellable); ++ g_object_unref(cancellable); ++ } ++} +--- /dev/null ++++ b/widget/gtk/nsNativeMenuService.h +@@ -0,0 +1,85 @@ ++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* vim:expandtab:shiftwidth=4:tabstop=4: ++ */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef __nsNativeMenuService_h__ ++#define __nsNativeMenuService_h__ ++ ++#include "mozilla/Attributes.h" ++#include "nsCOMPtr.h" ++#include "nsTHashMap.h" ++#include "nsINativeMenuService.h" ++#include "nsTArray.h" ++ ++#include ++#include ++#include ++ ++class nsMenuBar; ++ ++/* ++ * The main native menu service singleton. ++ * NativeMenuSupport::CreateNativeMenuBar calls in to this when a new top level ++ * window is created. ++ * ++ * Menubars are owned by their nsWindow. This service holds a weak reference to ++ * each menubar for the purpose of re-registering them with the shell if it ++ * needs to. The menubar is responsible for notifying the service when the last ++ * reference to it is dropped. ++ */ ++class nsNativeMenuService final : public nsINativeMenuService ++{ ++public: ++ NS_DECL_ISUPPORTS ++ ++ NS_IMETHOD CreateNativeMenuBar(nsIWidget* aParent, mozilla::dom::Element* aMenuBarNode) override; ++ ++ // Returns the singleton addref'd for the service manager ++ static already_AddRefed GetInstanceForServiceManager(); ++ ++ // Returns the singleton without increasing the reference count ++ static nsNativeMenuService* GetSingleton(); ++ ++ // Called by a menubar when it is deleted ++ void NotifyNativeMenuBarDestroyed(nsMenuBar *aMenuBar); ++ ++private: ++ nsNativeMenuService(); ++ ~nsNativeMenuService(); ++ nsresult Init(); ++ ++ static void EnsureInitialized(); ++ void SetOnline(bool aOnline); ++ void RegisterNativeMenuBar(nsMenuBar *aMenuBar); ++ static void name_owner_changed_cb(GObject *gobject, ++ GParamSpec *pspec, ++ gpointer user_data); ++ static void proxy_created_cb(GObject *source_object, ++ GAsyncResult *res, ++ gpointer user_data); ++ static void register_native_menubar_cb(GObject *source_object, ++ GAsyncResult *res, ++ gpointer user_data); ++ static gboolean map_event_cb(GtkWidget *widget, GdkEvent *event, ++ gpointer user_data); ++ void OnNameOwnerChanged(); ++ void OnProxyCreated(GDBusProxy *aProxy); ++ void OnNativeMenuBarRegistered(nsMenuBar *aMenuBar, ++ bool aSuccess); ++ static void PrefChangedCallback(const char *aPref, void *aClosure); ++ void PrefChanged(); ++ ++ GCancellable *mCreateProxyCancellable; ++ GDBusProxy *mDbusProxy; ++ bool mOnline; ++ nsTArray mMenuBars; ++ nsTHashMap, GCancellable*> mMenuBarRegistrationCancellables; ++ ++ static bool sShutdown; ++ static nsNativeMenuService *sService; ++}; ++ ++#endif /* __nsNativeMenuService_h__ */ +--- a/widget/gtk/nsWindow.cpp ++++ b/widget/gtk/nsWindow.cpp +@@ -6436,6 +6436,10 @@ void nsWindow::HideWindowChrome(bool aSh + SetWindowDecoration(aShouldHide ? eBorderStyle_none : mBorderStyle); + } + ++void nsWindow::SetMenuBar(UniquePtr aMenuBar) { ++ mMenuBar = std::move(aMenuBar); ++} ++ + bool nsWindow::CheckForRollup(gdouble aMouseX, gdouble aMouseY, bool aIsWheel, + bool aAlwaysRollup) { + nsIRollupListener* rollupListener = GetActiveRollupListener(); +--- a/widget/gtk/nsWindow.h ++++ b/widget/gtk/nsWindow.h +@@ -39,6 +39,8 @@ + #include "nsRefPtrHashtable.h" + #include "IMContextWrapper.h" + ++#include "nsMenuBar.h" ++ + #ifdef ACCESSIBILITY + # include "mozilla/a11y/LocalAccessible.h" + #endif +@@ -168,6 +170,8 @@ class nsWindow final : public nsBaseWidg + nsIScreen* aTargetScreen = nullptr) override; + virtual void HideWindowChrome(bool aShouldHide) override; + ++ void SetMenuBar(mozilla::UniquePtr aMenuBar); ++ + /** + * GetLastUserInputTime returns a timestamp for the most recent user input + * event. This is intended for pointer grab requests (including drags). +@@ -708,6 +712,8 @@ class nsWindow final : public nsBaseWidg + static GtkWindowDecoration sGtkWindowDecoration; + + static bool sTransparentMainWindow; ++ ++ mozilla::UniquePtr mMenuBar; + + #ifdef ACCESSIBILITY + RefPtr mRootAccessible; +--- /dev/null ++++ b/xpcom/ds/NativeMenuAtoms.py +@@ -0,0 +1,9 @@ ++from Atom import Atom ++ ++NATIVE_MENU_ATOMS = [ ++ Atom("menuitem_with_favicon", "menuitem-with-favicon"), ++ Atom("_moz_menubarkeeplocal", "_moz-menubarkeeplocal"), ++ Atom("_moz_nativemenupopupstate", "_moz-nativemenupopupstate"), ++ Atom("openedwithkey", "openedwithkey"), ++ Atom("shellshowingmenubar", "shellshowingmenubar"), ++] +--- a/xpcom/ds/StaticAtoms.py ++++ b/xpcom/ds/StaticAtoms.py +@@ -7,6 +7,7 @@ + from Atom import Atom, InheritingAnonBoxAtom, NonInheritingAnonBoxAtom + from Atom import PseudoElementAtom + from HTMLAtoms import HTML_PARSER_ATOMS ++from NativeMenuAtoms import NATIVE_MENU_ATOMS + import sys + + # Static atom definitions, used to generate nsGkAtomList.h. +@@ -2506,7 +2507,7 @@ STATIC_ATOMS = [ + InheritingAnonBoxAtom("AnonBox_mozSVGForeignContent", ":-moz-svg-foreign-content"), + InheritingAnonBoxAtom("AnonBox_mozSVGText", ":-moz-svg-text"), + # END ATOMS +-] + HTML_PARSER_ATOMS ++] + HTML_PARSER_ATOMS + NATIVE_MENU_ATOMS + # fmt: on + + +--- a/widget/gtk/components.conf ++++ b/widget/gtk/components.conf +@@ -82,6 +82,14 @@ Classes = [ + 'headers': ['/widget/gtk/nsApplicationChooser.h'], + 'processes': ProcessSelector.MAIN_PROCESS_ONLY, + }, ++ { ++ 'cid': '{0b3fe5aa-bc72-4303-85ae-76365df1251d}', ++ 'contract_ids': ['@mozilla.org/widget/nativemenuservice;1'], ++ 'singleton': True, ++ 'type': 'nsNativeMenuService', ++ 'constructor': 'nsNativeMenuService::GetInstanceForServiceManager', ++ 'headers': ['/widget/gtk/nsNativeMenuService.h'], ++ }, + ] + + if defined('MOZ_X11'): +--- a/xpfe/appshell/AppWindow.cpp ++++ b/xpfe/appshell/AppWindow.cpp +@@ -80,7 +80,7 @@ + + #include "mozilla/dom/DocumentL10n.h" + +-#ifdef XP_MACOSX ++#if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK) + # include "mozilla/widget/NativeMenuSupport.h" + # define USE_NATIVE_MENUS + #endif +--- /dev/null ++++ b/widget/gtk/NativeMenuSupport.cpp +@@ -0,0 +1,25 @@ ++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#include "mozilla/widget/NativeMenuSupport.h" ++ ++#include "MainThreadUtils.h" ++#include "nsINativeMenuService.h" ++ ++namespace mozilla::widget { ++ ++void NativeMenuSupport::CreateNativeMenuBar(nsIWidget* aParent, dom::Element* aMenuBarElement) { ++ MOZ_RELEASE_ASSERT(NS_IsMainThread(), "Attempting to create native menu bar on wrong thread!"); ++ ++ nsCOMPtr nms = ++ do_GetService("@mozilla.org/widget/nativemenuservice;1"); ++ if (!nms) { ++ return; ++ } ++ ++ nms->CreateNativeMenuBar(aParent, aMenuBarElement); ++} ++ ++} // namespace mozilla::widget +--- /dev/null ++++ b/widget/gtk/NativeMenuSupport.h +@@ -0,0 +1,31 @@ ++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef mozilla_widget_NativeMenuSupport_h ++#define mozilla_widget_NativeMenuSupport_h ++ ++class nsIWidget; ++ ++namespace mozilla { ++ ++namespace dom { ++class Element; ++} ++ ++namespace widget { ++ ++class NativeMenuSupport final { ++public: ++ // Given a top-level window widget and a menu bar DOM node, sets up native ++ // menus. Once created, native menus are controlled via the DOM, including ++ // destruction. ++ static void CreateNativeMenuBar(nsIWidget* aParent, ++ dom::Element* aMenuBarElement); ++}; ++ ++} // namespace widget ++} // namespace mozilla ++ ++#endif // mozilla_widget_NativeMenuSupport_h +--- a/widget/moz.build ++++ b/widget/moz.build +@@ -144,6 +144,11 @@ EXPORTS += [ + "PuppetWidget.h", + ] + ++if toolkit == "gtk": ++ EXPORTS += [ ++ "nsINativeMenuService.h", ++ ] ++ + EXPORTS.mozilla += [ + "BasicEvents.h", + "CommandList.h", +--- /dev/null ++++ b/widget/nsINativeMenuService.h +@@ -0,0 +1,39 @@ ++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifndef nsINativeMenuService_h_ ++#define nsINativeMenuService_h_ ++ ++#include "nsISupports.h" ++ ++class nsIWidget; ++class nsIContent; ++namespace mozilla { ++namespace dom { ++class Element; ++} ++} // namespace mozilla ++ ++// {90DF88F9-F084-4EF3-829A-49496E636DED} ++#define NS_INATIVEMENUSERVICE_IID \ ++ { \ ++ 0x90DF88F9, 0xF084, 0x4EF3, { \ ++ 0x82, 0x9A, 0x49, 0x49, 0x6E, 0x63, 0x6D, 0xED \ ++ } \ ++ } ++ ++class nsINativeMenuService : public nsISupports { ++ public: ++ NS_DECLARE_STATIC_IID_ACCESSOR(NS_INATIVEMENUSERVICE_IID) ++ // Given a top-level window widget and a menu bar DOM node, sets up native ++ // menus. Once created, native menus are controlled via the DOM, including ++ // destruction. ++ NS_IMETHOD CreateNativeMenuBar(nsIWidget* aParent, ++ mozilla::dom::Element* aMenuBarNode) = 0; ++}; ++ ++NS_DEFINE_STATIC_IID_ACCESSOR(nsINativeMenuService, NS_INATIVEMENUSERVICE_IID) ++ ++#endif // nsINativeMenuService_h_ +--- a/widget/nsWidgetsCID.h ++++ b/widget/nsWidgetsCID.h +@@ -66,6 +66,14 @@ + // Menus + //----------------------------------------------------------- + ++// {0B3FE5AA-BC72-4303-85AE-76365DF1251D} ++#define NS_NATIVEMENUSERVICE_CID \ ++ { \ ++ 0x0B3FE5AA, 0xBC72, 0x4303, { \ ++ 0x85, 0xAE, 0x76, 0x36, 0x5D, 0xF1, 0x25, 0x1D \ ++ } \ ++ } ++ + // {F6CD4F21-53AF-11d2-8DC4-00609703C14E} + #define NS_POPUPMENU_CID \ + { \ diff --git a/profiles/ehooks/www-client/firefox-bin/02-post_pkg_postinst.ehook b/profiles/ehooks/www-client/firefox-bin/02-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/www-client/firefox-bin/02-post_pkg_postinst.ehook +++ b/profiles/ehooks/www-client/firefox-bin/02-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/www-client/firefox/01-pre_src_prepare.ehook b/profiles/ehooks/www-client/firefox/01-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/www-client/firefox/01-pre_src_prepare.ehook +++ b/profiles/ehooks/www-client/firefox/01-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/www-client/firefox/03-post_pkg_postinst.ehook b/profiles/ehooks/www-client/firefox/03-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/www-client/firefox/03-post_pkg_postinst.ehook +++ b/profiles/ehooks/www-client/firefox/03-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/x11-libs/gtk+:2/01-post_src_unpack.ehook b/profiles/ehooks/x11-libs/gtk+:2/01-post_src_unpack.ehook index c34ace65..52febf21 100644 --- a/profiles/ehooks/x11-libs/gtk+:2/01-post_src_unpack.ehook +++ b/profiles/ehooks/x11-libs/gtk+:2/01-post_src_unpack.ehook @@ -3,6 +3,6 @@ ebuild_hook() { blake=6a0b6da23741df58d0fac742368a94246f16dd1ae1f9655b1d069fd8ec343e731144103226ca70b8500c1883044980f18036e53cd52bd95ffba1a8bc38157cd8 \ uver=gtk+2.0_2.24.33-2ubuntu1 - source "${EHOOK_PATH}"/templates/fetch_debian.fnc + source "${EHOOK_PATH}"/templates/fetch_debian.template fetch_debian "${uver}" "${blake}" } diff --git a/profiles/ehooks/x11-libs/gtk+:2/03-pre_src_prepare.ehook b/profiles/ehooks/x11-libs/gtk+:2/03-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/x11-libs/gtk+:2/03-pre_src_prepare.ehook +++ b/profiles/ehooks/x11-libs/gtk+:2/03-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/x11-libs/gtk+:2/files/fix-ubuntumenuproxy-build.patch b/profiles/ehooks/x11-libs/gtk+:2/files/fix-ubuntumenuproxy-build.patch deleted file mode 100644 index 83552865..00000000 --- a/profiles/ehooks/x11-libs/gtk+:2/files/fix-ubuntumenuproxy-build.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -Naur gtk+-2.24.8.orig/gtk/gtkmenushell.h gtk+-2.24.8/gtk/gtkmenushell.h ---- gtk+-2.24.8.orig/gtk/gtkmenushell.h 2011-11-10 18:38:03.000000000 +0100 -+++ gtk+-2.24.8/gtk/gtkmenushell.h 2012-01-12 21:13:12.851805399 +0100 -@@ -135,6 +135,8 @@ - void _gtk_menu_shell_set_keyboard_mode (GtkMenuShell *menu_shell, - gboolean keyboard_mode); - gboolean _gtk_menu_shell_get_keyboard_mode (GtkMenuShell *menu_shell); -+gboolean ubuntu_gtk_menu_shell_activate_mnemonic (GtkMenuShell *shell, GtkWidget *item); -+gboolean ubuntu_gtk_menu_shell_activate_first (GtkMenuShell *menu_shell, gboolean search_sensitive); - - G_END_DECLS diff --git a/profiles/ehooks/x11-libs/gtk+:3/01-post_src_unpack.ehook b/profiles/ehooks/x11-libs/gtk+:3/01-post_src_unpack.ehook index c9c07174..45763f26 100644 --- a/profiles/ehooks/x11-libs/gtk+:3/01-post_src_unpack.ehook +++ b/profiles/ehooks/x11-libs/gtk+:3/01-post_src_unpack.ehook @@ -1,8 +1,8 @@ ebuild_hook() { local \ - blake=d6f605e6e90830ab91c51eefb3e36cc4bf369ba61436ab98f4751d82623246f32bbc8eb4b9b36ad4071cc8ec0a0e0e6cb43b586d916cc5d5dbca9959cb7b0ed0 \ - uver=gtk+3.0_3.24.29-1ubuntu1 + blake=8209c9ada3019ac9dc73e1dea352137ac97828e675515f78f16037b48692ed66bf66f327d96829684f543d8a876e9dab7de882efb94fe39b2b059a7b708a6384 \ + uver=gtk+3.0_3.24.30-1ubuntu1 - source "${EHOOK_PATH}"/templates/fetch_debian.fnc + source "${EHOOK_PATH}"/templates/fetch_debian.template fetch_debian "${uver}" "${blake}" } diff --git a/profiles/ehooks/x11-libs/gtk+:3/02-pre_src_prepare.ehook b/profiles/ehooks/x11-libs/gtk+:3/02-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/x11-libs/gtk+:3/02-pre_src_prepare.ehook +++ b/profiles/ehooks/x11-libs/gtk+:3/02-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/x11-libs/gtk+:3/files/gtk+-3.24.12-revert_gtkmenu_gtkwindow.diff b/profiles/ehooks/x11-libs/gtk+:3/files/fix-global-submenus-to-be-initially-populated.diff similarity index 96% rename from profiles/ehooks/x11-libs/gtk+:3/files/gtk+-3.24.12-revert_gtkmenu_gtkwindow.diff rename to profiles/ehooks/x11-libs/gtk+:3/files/fix-global-submenus-to-be-initially-populated.diff index 9d393f14..e9ac2dbb 100644 --- a/profiles/ehooks/x11-libs/gtk+:3/files/gtk+-3.24.12-revert_gtkmenu_gtkwindow.diff +++ b/profiles/ehooks/x11-libs/gtk+:3/files/fix-global-submenus-to-be-initially-populated.diff @@ -1,3 +1,6 @@ +Fix firefox/thunderbird global submenus to be initially populated +Bug: https://launchpad.net/bugs/1854753 +--- diff -Nur a/gtk/gtkmenu.c b/gtk/gtkmenu.c --- a/gtk/gtkmenu.c 2019-10-04 05:03:04.000000000 +0200 +++ b/gtk/gtkmenu.c 2020-02-08 21:39:32.723931948 +0100 diff --git a/profiles/ehooks/x11-libs/vte:2.91/02-post_src_prepare.ehook b/profiles/ehooks/x11-libs/vte:2.91/02-post_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/x11-libs/vte:2.91/02-post_src_prepare.ehook +++ b/profiles/ehooks/x11-libs/vte:2.91/02-post_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/x11-misc/lightdm/01-post_src_unpack.ehook b/profiles/ehooks/x11-misc/lightdm/01-post_src_unpack.ehook index ad45135b..e4146d28 100644 --- a/profiles/ehooks/x11-misc/lightdm/01-post_src_unpack.ehook +++ b/profiles/ehooks/x11-misc/lightdm/01-post_src_unpack.ehook @@ -3,6 +3,6 @@ ebuild_hook() { blake=afea24d38af57b484e2dc6f6d987dcbd76ace96efceb48210ea53c11a9f2a0845e5b975f5ba894d098aafc13d1b52d9605751a54fd164d2e3b676fc91700226a \ uver=lightdm_1.30.0-0ubuntu4 - source "${EHOOK_PATH}"/templates/fetch_debian.fnc + source "${EHOOK_PATH}"/templates/fetch_debian.template fetch_debian "${uver}" "${blake}" } diff --git a/profiles/ehooks/x11-misc/lightdm/02-pre_src_prepare.ehook b/profiles/ehooks/x11-misc/lightdm/02-pre_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/x11-misc/lightdm/02-pre_src_prepare.ehook +++ b/profiles/ehooks/x11-misc/lightdm/02-pre_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/x11-misc/zim/02-post_src_prepare.ehook b/profiles/ehooks/x11-misc/zim/02-post_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/x11-misc/zim/02-post_src_prepare.ehook +++ b/profiles/ehooks/x11-misc/zim/02-post_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/x11-misc/zim/03-post_pkg_postinst.ehook b/profiles/ehooks/x11-misc/zim/03-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/x11-misc/zim/03-post_pkg_postinst.ehook +++ b/profiles/ehooks/x11-misc/zim/03-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/ehooks/x11-plugins/pidgin-libnotify/01-post_src_unpack.ehook b/profiles/ehooks/x11-plugins/pidgin-libnotify/01-post_src_unpack.ehook index df5ec37a..798aa5bf 100644 --- a/profiles/ehooks/x11-plugins/pidgin-libnotify/01-post_src_unpack.ehook +++ b/profiles/ehooks/x11-plugins/pidgin-libnotify/01-post_src_unpack.ehook @@ -3,6 +3,6 @@ ebuild_hook() { blake=31d29bb0d3b68ef8d70d3aa1a73027d8521b0ee97a741db8a265ee9ae206ea1e58a93aec494841b618139f7d3ea5b3007cce0a6ec47d2e491ce7125509e2892e \ uver=pidgin-libnotify_0.14-9ubuntu2 - source <(cat "${EHOOK_PATH}"/templates/fetch_debian.fnc | sed -e "s/xz/gz/") + source <(cat "${EHOOK_PATH}"/templates/fetch_debian.template | sed -e "s/xz/gz/") fetch_debian "${uver}" "${blake}" } diff --git a/profiles/ehooks/x11-plugins/pidgin-libnotify/03-post_src_prepare.ehook b/profiles/ehooks/x11-plugins/pidgin-libnotify/03-post_src_prepare.ehook index 0483528e..0ba1ae2c 120000 --- a/profiles/ehooks/x11-plugins/pidgin-libnotify/03-post_src_prepare.ehook +++ b/profiles/ehooks/x11-plugins/pidgin-libnotify/03-post_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches_eautoreconf.ehook \ No newline at end of file +../../templates/patches_eautoreconf.template \ No newline at end of file diff --git a/profiles/ehooks/x11-terms/gnome-terminal/02-post_src_prepare.ehook b/profiles/ehooks/x11-terms/gnome-terminal/02-post_src_prepare.ehook index 200f952c..0d7a2e70 120000 --- a/profiles/ehooks/x11-terms/gnome-terminal/02-post_src_prepare.ehook +++ b/profiles/ehooks/x11-terms/gnome-terminal/02-post_src_prepare.ehook @@ -1 +1 @@ -../../templates/patches.ehook \ No newline at end of file +../../templates/patches.template \ No newline at end of file diff --git a/profiles/ehooks/x11-terms/gnome-terminal/03-post_pkg_postinst.ehook b/profiles/ehooks/x11-terms/gnome-terminal/03-post_pkg_postinst.ehook index f515b843..a51eb2e2 120000 --- a/profiles/ehooks/x11-terms/gnome-terminal/03-post_pkg_postinst.ehook +++ b/profiles/ehooks/x11-terms/gnome-terminal/03-post_pkg_postinst.ehook @@ -1 +1 @@ -../../templates/ubuntu-versionator_pkg_postinst.ehook \ No newline at end of file +../../templates/ubuntu-versionator_pkg_postinst.template \ No newline at end of file diff --git a/profiles/unity-portage-dev.paccept_keywords b/profiles/unity-portage-dev.paccept_keywords index c5c65c5e..7691e986 100644 --- a/profiles/unity-portage-dev.paccept_keywords +++ b/profiles/unity-portage-dev.paccept_keywords @@ -48,7 +48,6 @@ unity-extra/indicator-psensor ** unity-extra/unity-greeter ** unity-extra/unity-tweak-tool ** unity-indicators/ido ** -unity-indicators/indicator-applet ** unity-indicators/indicator-application ** unity-indicators/indicator-appmenu ** unity-indicators/indicator-bluetooth ** diff --git a/profiles/unity-portage-minimal.puse b/profiles/unity-portage-minimal.puse index 8c34e08e..c243a08e 100644 --- a/profiles/unity-portage-minimal.puse +++ b/profiles/unity-portage-minimal.puse @@ -1,6 +1,6 @@ */* -accessibility -bluetooth -colord -cups -eds -fcitx -gnome-online-accounts -wayland -## Unity related +## Overlay related ## unity-base/compiz gles2 unity-base/nux gles2 unity-base/unity gles2 -hud -nemo @@ -11,12 +11,10 @@ unity-indicators/indicator-keyboard -charmap unity-indicators/indicator-power -powerman unity-indicators/indicator-session -help unity-lenses/unity-lens-meta -files -music -photos -plugins -video - -## Overlay related x11-misc/notify-osd minimal x11-themes/ubuntu-themes -nemo -## Gentoo tree related +## Gentoo tree related ## app-crypt/pinentry -qt5 app-i18n/ibus -emoji -unicode app-misc/tracker-miners -exif -ffmpeg -gif -gstreamer -iso -jpeg -pdf -playlist -rss -taglib -tiff -xml diff --git a/profiles/unity-portage.paccept_keywords b/profiles/unity-portage.paccept_keywords index 77f970f1..b8c40727 100644 --- a/profiles/unity-portage.paccept_keywords +++ b/profiles/unity-portage.paccept_keywords @@ -1,13 +1,10 @@ ## A set of packages that require keyword unmasking for Unity installation ## - */*::gentoo-unity7 -# www-client/firefox related # +app-backup/deja-dup::gentoo +x11-wm/metacity::gentoo + +## www-client/firefox related ## ~dev-libs/nspr-4.32::gentoo ~dev-libs/nss-3.70::gentoo www-client/firefox::gentoo - -## Other packages keyword unmasking ## -app-backup/deja-dup::gentoo -gnome-base/gnome-panel::gentoo -x11-wm/metacity::gentoo diff --git a/profiles/unity-portage.pmask b/profiles/unity-portage.pmask index 1404db19..ce869933 100644 --- a/profiles/unity-portage.pmask +++ b/profiles/unity-portage.pmask @@ -9,11 +9,13 @@ >gnome-base/gsettings-desktop-schemas-40.0 >gnome-base/nautilus-40.2 >gnome-extra/gnome-calendar-40.2 +>gnome-extra/gnome-contacts-40.0 >gnome-extra/nemo-4.8.4-r1 >gnome-extra/nm-applet-1.22.0-r1 >gnome-extra/polkit-gnome-0.105-r2 >mail-client/thunderbird-78.13.0 >media-gfx/eog-40.3 +>media-gfx/gnome-photos-40.0 >media-gfx/gnome-screenshot-40.0-r1 >media-sound/rhythmbox-3.4.4 >media-video/totem-3.38.1 @@ -30,4 +32,4 @@ dev-libs/libindicator::gentoo ## the latest version in the Gentoo tree is 12.10.1 (2012-09-19) x11-misc/notify-osd::gentoo ## the latest version in the Gentoo tree is 0.9.34 (2012-03-23) x11-themes/notify-osd-icons::gentoo ## the latest version in the Gentoo tree is 0.7 (2010-11-15) -x11-themes/ubuntu-wallpapers::gentoo ## version in the Gentoo tree doesn't control download size via USE-flags +x11-themes/ubuntu-wallpapers::gentoo ## version in the Gentoo tree doesn't control download size via USE flags diff --git a/sys-apps/xorg-gtest/Manifest b/sys-apps/xorg-gtest/Manifest index 20971da6..70d04582 100644 --- a/sys-apps/xorg-gtest/Manifest +++ b/sys-apps/xorg-gtest/Manifest @@ -1,4 +1,4 @@ DIST xorg-gtest_0.7.1-5ubuntu1.debian.tar.xz 40792 BLAKE2B 356d84000cfd6d4990830380a5c37e049de4cf1a0db4a417841450c79b431c1aa860c25c76c474e9b1606a71ab90e87d1c787d5d8bf5f5f8cd73d848c37980fd SHA512 701cc456b83d5b76248985f938be685f4e75b1d752e49005f21f1ea34665180562954e2fd7f349f853b43033eee74aa9d3e18d17188117bea6ef4f5d393fa005 DIST xorg-gtest_0.7.1.orig.tar.bz2 371980 BLAKE2B e75b2b8c51d49ddeef0a9d3d287f28b2fa34465df3b879bf1cac20e2f1ddb22769a63a114299aa2c0873ef3c9fa7ae8f207dfffb77cd1e40f7dde5adb4c18e30 SHA512 2bd900b86337e904e074ea0b68b96d72529a85a2c88ade1a20a7b7baeaa26e8813e2bc8b45ef016dfe132487b10091c67ec786b160b711a37b92d219f71a85d1 -EBUILD xorg-gtest-0.7.1_p_p5_p01.ebuild 872 BLAKE2B f57358e5925a62c65a3539d60fedc27b53fef55cbdf02f28b56527bb818c17636a855a84df975c5435fafafca59055707f09b5ac5f4e15a314e29c49eabc082d SHA512 1a9917c062f9c6638871c33ee69228541e128c13bdfc266b38773515c90dcbf5b1dffc88bcbe891c76325945e56bacd57a1d8c25e3361bde97c8e661484def8b +EBUILD xorg-gtest-0.7.1_p_p5_p01.ebuild 871 BLAKE2B 390bd5c598114317c65db24c2d1e5de06e8401c085ccc393e841b8089a5777d0eed4838c14b195baf5ec4709f08f87663232b38b2dba707466da7c0980a8dfc4 SHA512 1522ade9f58ef4e9c63298229ffda5c4050e7dfc77248355f93418ff43e9baa9ae0a2e30a297e7b7039954c2bdb3d71e8be8ffac3d6a59cb490daa2cafb3d2df MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/sys-apps/xorg-gtest/xorg-gtest-0.7.1_p_p5_p01.ebuild b/sys-apps/xorg-gtest/xorg-gtest-0.7.1_p_p5_p01.ebuild index b42c4147..d0ece2ea 100644 --- a/sys-apps/xorg-gtest/xorg-gtest-0.7.1_p_p5_p01.ebuild +++ b/sys-apps/xorg-gtest/xorg-gtest-0.7.1_p_p5_p01.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools ubuntu-versionator DESCRIPTION="X.Org dummy testing environment for Google Test" diff --git a/sys-power/cpufrequtils/Manifest b/sys-power/cpufrequtils/Manifest index 5f4a57a1..a2b0f9c6 100644 --- a/sys-power/cpufrequtils/Manifest +++ b/sys-power/cpufrequtils/Manifest @@ -6,5 +6,5 @@ AUX cpufrequtils-init.d-007 328 BLAKE2B 866341e6be08d5e2dd4f0c675d80d8583f3dc6d3 AUX cpufrequtils.service 303 BLAKE2B 253cfa82a8badf3c8a1edfbfde482f069b8496e2672296cc9ce14e93e89d7bce9a8be4a7847a24faba5c8166cb8b390e53527c3361cac03796592cb206aa464f SHA512 cc7df5acba936b0b4b46ad8c298c1b70ae18c1b9a8cc91360f33fde09e1fd78947281fd477ac9eace0f6fa6ecae87c8bcd1b6084ca0c5c8b9889fe05509efa38 DIST cpufrequtils_008-2.debian.tar.xz 25872 BLAKE2B bb64a73b335893662b17ab57d1ee19e0f2e5328aa27119699dea6f321675894de93b7e71461c124e4daa762210fe4ca505360c00836320bc72a99501a1c5c0bf SHA512 3085e6e7971d961b32e38ec22f74f885d0124f86bb631afeee124543a9bed2c5e64f19d359a1ec29955f663023109a6887d5846f3bae6c1df9b3ff4444552f8e DIST cpufrequtils_008.orig.tar.bz2 52128 BLAKE2B 5033f047a673a23595ee6614e60c5debc2a767c85150ac1775165249832cb81bc1b08bc736650bde0366592cdbafff0cf5704ec95305ec9a7940cdc5d18a9862 SHA512 ea502369ae714bd79d0d9d1128fcece863902795d7cc20c19ca89280ec337f25e4648556d5d31595317832bcf9d7b98a6545bf1dee94e32fa731484c599efa25 -EBUILD cpufrequtils-008_p2.ebuild 1722 BLAKE2B e2559864660c488376b2766a3aff317084feb1042e5a3b839e1197817f508a37f19d76d24a187f1259fc8570a361fc12079332cae97d9eae78729c9fb210e869 SHA512 842a36eba7aae8d31a6c957be35f278754107efc2973a343d4920ad992babdbd7fcb8a13f1e6589a9dd65da70831ecfdcf4125379ce1ff6cc7c53cd577427c87 +EBUILD cpufrequtils-008_p2.ebuild 1721 BLAKE2B e403fbfc29fab330a4cb30b2953ee649392e021e9434cdccb981b0542aac22841d66ce778c9630eac3912edfe7c2c4aead835969318b69a392a17e6100e1f688 SHA512 c6a68904c1332ca0d0a988fb0ba75d1845d22f2cd5f2641c3a4c77cb3d273590ca61655c02c90404475f0acc72a3dc43f9e163ce5a8af5d2bcacd00928cba9b6 MISC metadata.xml 210 BLAKE2B 62d5493ab10537a29c653df77ab216cf136f958410a45cc15ca6a7935453fb8ddcf1d58f7b965c825830abb3f3c7aea22733e1f4d86292132946166520e30f8b SHA512 533740d93dc818fe6523cb7ea447c6a590bcce65da93591b68124b60cdd3af3a595dee102f7cda5cb0426f75c46e647c75b80202f33d983797a0ee96082e631c diff --git a/sys-power/cpufrequtils/cpufrequtils-008_p2.ebuild b/sys-power/cpufrequtils/cpufrequtils-008_p2.ebuild index 6cdec4e6..c305aa84 100644 --- a/sys-power/cpufrequtils/cpufrequtils-008_p2.ebuild +++ b/sys-power/cpufrequtils/cpufrequtils-008_p2.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit eutils toolchain-funcs multilib systemd ubuntu-versionator UVER="-${PVR_MICRO}" diff --git a/unity-base/bamf/Manifest b/unity-base/bamf/Manifest index 170d95a6..9d2901ad 100644 --- a/unity-base/bamf/Manifest +++ b/unity-base/bamf/Manifest @@ -1,7 +1,4 @@ -DIST bamf_0.5.5+21.04.20210119-0ubuntu1.diff.gz 16515 BLAKE2B 3fa85f5eb336f7e456bdc6c3b9cbebe1ff8f0257b02e1febbb0991fb37d387068ffc92c2eff98dd2a2b5555ae5d562fc6a1b2467318253e57379c3fffb57ce09 SHA512 e9d250f663198f07896a0c0b1f5cd099d612b33f9735e5941784379ee98793f9e02c600da84102aea146dab16b0a56f89470011a388c9e80347d25762684e45d -DIST bamf_0.5.5+21.04.20210119.orig.tar.gz 206700 BLAKE2B 9c5877dead5e7c889cdad4a23d0168399fd857167752c6d113fd1ba19997a3f60b7649a628812a1b0db9c8ebe646c209a1b1cf111dd640d8db878ca98913a813 SHA512 cb5feeb439c42109f2a5044c8dbcbae0f256ef7726813851870aed5b2ab46fc2e65aad2dc335818bc8d5f05077e86c01b051a8f7d514a2d9c49c2325f71381e3 DIST bamf_0.5.5+21.10.20210710-0ubuntu1.diff.gz 16535 BLAKE2B daedaceb1525f453b4902a0d8558fd94b4631c9ecf14242deaeaecf3f892884bcc760d2c520e3c0288c2ed3a44f0939bb74261b548f558244bf4e5b3663d2f0d SHA512 63399d449a15c3d7c6589d6ce446a99d94d02f00102210af04a65c430b96d274386a7cb3aa0e093de695f52b048fb16f8028a5486d032663b4c6b1a83e104517 DIST bamf_0.5.5+21.10.20210710.orig.tar.gz 206215 BLAKE2B faa946c3f249400dffa45b146564fd840ab10b2fed2a8533a0eebefc17e0abefeb540a21c5144c2bd8892eb80245d1dfe5e8928fe0aba2d7d070d7234c94f7ab SHA512 844e54593b5f567771ee082b8c216cd5ac7d2e2679de81ca4658f5d4bfe34d7a164977f489329dd63c16932bee11f9581124c273791f5fd2708bd1fe0d356424 -EBUILD bamf-0.5.5_p20210119_p0_p01.ebuild 3147 BLAKE2B 4c0899a74bd36caf704a68a43f062c78ec76012a2f1edd6dd30d452a216e88b1751b0ade7969ee119fd6d697e85ced019e7bd2421d6f760c4609c486482657a9 SHA512 c9bbfff3a72a6f133fc71931201532309c83abb34d8910939b685720dcfc8c0fcbd52b37774828b548171313e57840769095377b0a6dffa55382bd9b010b63f6 -EBUILD bamf-0.5.5_p20210710_p0_p01.ebuild 3134 BLAKE2B a53c3a22b1c2dd9a009ab3eed0faf591a179e7309c7ef70fa617d554e5500869a20b7f15fe65bc6cc8f719bdd83a34140fce5e4909ece4227500fa8bd16cbbb4 SHA512 43c59667424007d667b640108ab0fc1b6a45a85c6d799b6685230217dd055fd5997b1150114aa2f49163c4d614295237ed2c2c254a523d50f02cac6e7516e571 +EBUILD bamf-0.5.5_p20210710_p0_p01.ebuild 3146 BLAKE2B f42b91436b305b89b88e2d25144eedebba7da03962a2c607ab083a37a34f01010e999c0c570ec88a042c5f22602e4b44232af75166a4aee771879fc2bc5ee6c4 SHA512 126730216aadf843e7ff5cc1ad89045c42927c9d4a01ec4dfdf770c26eee5a09138c10578132d7be6ffbf8ea0ac6350d55dd0cca7b8a1789f3177d05967f645d MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-base/bamf/bamf-0.5.5_p20210119_p0_p01.ebuild b/unity-base/bamf/bamf-0.5.5_p20210119_p0_p01.ebuild deleted file mode 100644 index dffb389e..00000000 --- a/unity-base/bamf/bamf-0.5.5_p20210119_p0_p01.ebuild +++ /dev/null @@ -1,103 +0,0 @@ -# Copyright 1999-2021 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 -PYTHON_COMPAT=( python3_{7..9} ) - -URELEASE="hirsute" -inherit autotools eutils python-single-r1 ubuntu-versionator vala xdummy - -UVER_PREFIX="+${UVER_RELEASE}.${PVR_MICRO}" - -DESCRIPTION="BAMF Application Matching Framework" -HOMEPAGE="https://launchpad.net/bamf" -SRC_URI="${UURL}/${MY_P}${UVER_PREFIX}.orig.tar.gz - ${UURL}/${MY_P}${UVER_PREFIX}-${UVER}.diff.gz" - -LICENSE="LGPL-3" -SLOT="0/1.0.0" -KEYWORDS="~amd64" -IUSE="test" -RESTRICT="mirror" - -DEPEND="dev-libs/gobject-introspection - dev-libs/libdbusmenu[gtk3] - dev-util/gdbus-codegen - gnome-base/libgtop - x11-libs/gtk+:2 - x11-libs/gtk+:3 - x11-libs/libwnck:1 - x11-libs/libwnck:3 - x11-libs/libXfixes - $(python_gen_cond_dep ' - dev-libs/libunity[${PYTHON_MULTI_USEDEP}] - dev-libs/libxml2[${PYTHON_MULTI_USEDEP}] - dev-python/lxml[${PYTHON_MULTI_USEDEP}] - ') - $(vala_depend)" - -S="${WORKDIR}" - -pkg_setup() { - ubuntu-versionator_pkg_setup - python-single-r1_pkg_setup -} - -src_prepare() { - eapply "${WORKDIR}/${MY_P}${UVER_PREFIX}-${UVER}.diff" # This needs to be applied for the debian/ directory to be present # - ubuntu-versionator_src_prepare - - # 'After=graphical-session-pre.target' must be explicitly set in the unit files that require it # - # Relying on the upstart job /usr/share/upstart/systemd-session/upstart/systemd-graphical-session.conf # - # to create "$XDG_RUNTIME_DIR/systemd/user/${unit}.d/graphical-session-pre.conf" drop-in units # - # results in weird race problems on desktop logout where the reliant desktop services # - # stop in a different jumbled order each time # - sed -i \ - -e '/PartOf=/i After=graphical-session-pre.target' \ - data/bamfdaemon.service.in || die "Sed failed for data/bamfdaemon.service.in" - - # Remove 'Restart=on-failure' and instead bind to unity7.service so as not to create false fail triggers for both services # - sed -i \ - -e 's:Restart=on-failure::g' \ - -e '/PartOf=/a BindsTo=unity7.service' \ - data/bamfdaemon.service.in || die "Sed failed for data/bamfdaemon.service.in" - - vala_src_prepare - export VALA_API_GEN=$VAPIGEN - python_fix_shebang . - eautoreconf -} - -src_configure() { - econf \ - --enable-compile-warnings=maximum \ - --enable-export-actions-menu=yes \ - --enable-introspection=yes \ - --disable-static || die -} - -src_test() { - local XDUMMY_COMMAND="make check" - xdummymake -} - -src_install() { - emake DESTDIR="${ED}" install || die - - # Install dbus interfaces # - insinto /usr/share/dbus-1/interfaces - doins lib/libbamf-private/org.ayatana.bamf.*xml - - # Install bamf-2.index creation script # - # Run at postinst of *.desktop files from ubuntu-versionator.eclass # - # bamf-index-create only indexes *.desktop files in /usr/share/applications # - # Why not also /usr/share/applications/kde4/ ? - exeinto /usr/bin - newexe debian/bamfdaemon.postinst bamf-index-create - - # Tell upstart not to start bamf as it will instead be started by systemd # - dodir /usr/share/upstart/systemd-session/upstart - echo manual > "${ED}"usr/share/upstart/systemd-session/upstart/bamfdaemon.override - - prune_libtool_files --modules -} diff --git a/unity-base/bamf/bamf-0.5.5_p20210710_p0_p01.ebuild b/unity-base/bamf/bamf-0.5.5_p20210710_p0_p01.ebuild index d373abaf..a249501b 100644 --- a/unity-base/bamf/bamf-0.5.5_p20210710_p0_p01.ebuild +++ b/unity-base/bamf/bamf-0.5.5_p20210710_p0_p01.ebuild @@ -16,7 +16,7 @@ SRC_URI="${UURL}/${MY_P}${UVER_PREFIX}.orig.tar.gz LICENSE="LGPL-3" SLOT="0/1.0.0" -#KEYWORDS="~amd64" +KEYWORDS="~amd64" IUSE="test" RESTRICT="mirror" @@ -65,6 +65,7 @@ src_prepare() { vala_src_prepare export VALA_API_GEN=$VAPIGEN python_fix_shebang . + eautoreconf } src_configure() { diff --git a/unity-base/compiz/Manifest b/unity-base/compiz/Manifest index 40d86861..bcc03dc0 100644 --- a/unity-base/compiz/Manifest +++ b/unity-base/compiz/Manifest @@ -1,6 +1,3 @@ -AUX compiz-build-python-extension.patch 12349 BLAKE2B 68ff0f131fd64a15a6e700c0a8e17dbe10827c92a59340c6761af239288d9962dd57e24a5a6d16f08c13fb75efc269caeef07b52c972ef5c74ec05a155c2db96 SHA512 e9b0d5a035e845c0519fe0a001c7f9b3bdb66581316fd8b4159946ba76231d0dff89db54c64911473abdc1df87e5f44be46ced6c6ffebbb4000cf8f23d5b4bad -DIST compiz_0.9.14.1+20.10.20200813-0ubuntu4.tar.xz 3985924 BLAKE2B 7a14d757713fcb99369c0592db6d2fc5ddb6a75641a6f3f3568b9f12f2d9f2b61f834422fbe745ee43794007e8b23dc87957d0c07c351a77aab332655646c846 SHA512 8d700bedad920009a742d153c2a1bfba5d95bca5e8cdbe6fbdd20644d71021364956ed7d06fee1ca73cfd12280dc4307ca89464ff17d1103076d3fed6258ceb3 DIST compiz_0.9.14.1+21.10.20210501-0ubuntu1.tar.xz 4005152 BLAKE2B e6ab5e3b0da9dc80cc5e0c43a46872062fe8a4fa78910fc4193e0c4ac2a300aadda38b84b2915fc9598a7fbca5844a8c86d1e1d6d4ba78e7b14a8333f816580c SHA512 14701bd42a333b3297903430909675e2eacc4dd5cf7a2f468a318c313d4d585cec00d58eda6ce905909bbd91b11b45dfb9f8ff0ef5de1e1746b535f4b97979a7 -EBUILD compiz-0.9.14.1_p20200813_p0_p04.ebuild 5597 BLAKE2B 6baa4a009372a2f4e314f86de1016d44d784afd602adf09ff7af4182840e3e01de0b63db82f413f748bc9def06cd2fdff25dab05cee5ae4e1ebbbccd6dd7ba9c SHA512 5a6f7cba74810910ef97f4199cfe6a075e81f43ccb55f03903b5babf962cc39aa20fec2a4132c50b7cd9aa6f6b6bed79c2c0af8c591a419cc52bd0a532c72e1e -EBUILD compiz-0.9.14.1_p20210501_p0_p01.ebuild 5550 BLAKE2B d171ae2e83c8b869a1f141a0efd1bc1917a636236a23b187e86717d8cb0c65117dcafc1874fe8018532540aed528bdb5f322005c62ee5a22f9850d674ae56e25 SHA512 e32bc26fd9555e0b04edbe175e0e5ac2e7009bd9ba1e24503cf6a4ddfa9a7f4b87d2affd285cb8d902c1414abe36af05b1f5ddb067de8c9cadca460f68166f03 +EBUILD compiz-0.9.14.1_p20210501_p0_p01.ebuild 5529 BLAKE2B 9c4fcb0a372539081cf9d3aeb7ba092417be4c72d81f610ddaabef310d78a0e9541da483d3d5d445c51d66665cca05a2a3e0c4647276c46c0b817bbe79800340 SHA512 c70d7938af0cc5aa838b66c27b95d75c3dd180d76e2e7b831cb0a78c8178666e3d9bea0007c08530c656b3070dcc09fcf897963b4d78568a5753d5517628db20 MISC metadata.xml 273 BLAKE2B f1d431db79bf1bae7c5a887f0c134d0cb3ef589f8d006231d9f3115faed360711f5b7a7f00725ba72ce147351d0aebde9d40a8a02e8abfe431ec4a12f53ef573 SHA512 d72012b1766de57243d21484049e408e5b9a1277a93b658bfcb83dbad95f0444ed9cebf139e50a0f5971a4ed49b0a6938c1011e1ca288656a096670462470f07 diff --git a/unity-base/compiz/compiz-0.9.14.1_p20200813_p0_p04.ebuild b/unity-base/compiz/compiz-0.9.14.1_p20200813_p0_p04.ebuild deleted file mode 100644 index 4a662b3e..00000000 --- a/unity-base/compiz/compiz-0.9.14.1_p20200813_p0_p04.ebuild +++ /dev/null @@ -1,193 +0,0 @@ -# Copyright 1999-2021 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 -PYTHON_COMPAT=( python3_{7..9} ) - -URELEASE="hirsute" -inherit gnome2-utils cmake-utils eutils python-r1 ubuntu-versionator xdg-utils xdummy - -UVER_PREFIX="+20.10.${PVR_MICRO}" - -DESCRIPTION="Compiz Fusion OpenGL window and compositing manager patched for the Unity7 user interface" -HOMEPAGE="https://launchpad.net/compiz" -SRC_URI="${UURL}/${MY_P}${UVER_PREFIX}-${UVER}.tar.xz" - -LICENSE="GPL-2 LGPL-2.1 MIT" -SLOT="0/${PV}" -KEYWORDS="~amd64" -IUSE="+debug gles2 test" -RESTRICT="mirror" - -S="${WORKDIR}/${PN}-${PV}${UVER_PREFIX}" - -COMMONDEPEND="!!x11-wm/compiz - !!x11-libs/compiz-bcop - !!x11-libs/libcompizconfig - !!x11-plugins/compiz-plugins-main - dev-libs/boost:=[${PYTHON_USEDEP}] - dev-libs/glib:2 - dev-cpp/glibmm - dev-libs/libxml2[${PYTHON_USEDEP}] - dev-libs/libxslt - dev-libs/protobuf - dev-python/cython[${PYTHON_USEDEP}] - dev-python/python-distutils-extra[${PYTHON_USEDEP}] - >=gnome-base/gsettings-desktop-schemas-3.8 - >=gnome-base/librsvg-2.14.0:2 - media-libs/glew:= - media-libs/libpng:0= - media-libs/mesa[gallium,llvm] - x11-base/xorg-server[dmx] - >=x11-libs/cairo-1.0 - x11-libs/gtk+:3 - x11-libs/libnotify - x11-libs/pango - x11-libs/libwnck:1 - x11-libs/libX11 - x11-libs/libXcomposite - x11-libs/libXdamage - x11-libs/libXext - x11-libs/libXfixes - x11-libs/libXrandr - x11-libs/libXrender - x11-libs/libXinerama - x11-libs/libICE - x11-libs/libSM - >=x11-libs/startup-notification-0.7 - >=x11-wm/metacity-3.12 - !gles2? ( media-libs/glewmx ) - ${PYTHON_DEPS}" - -DEPEND="${COMMONDEPEND} - dev-python/cython[${PYTHON_USEDEP}] - sys-devel/gettext - virtual/pkgconfig - x11-base/xorg-proto - test? ( dev-cpp/gtest - >=dev-cpp/gtest-1.8.1 - sys-apps/xorg-gtest )" - -RDEPEND="${COMMONDEPEND} - dev-libs/protobuf:= - unity-base/unity-language-pack - x11-apps/mesa-progs - x11-apps/xvinfo" - -src_prepare() { - eapply "${FILESDIR}/${PN}"-build-python-extension.patch - ubuntu-versionator_src_prepare - - # Gentoo's www-client/chromium Window Class ID is "Chromium-browser-chromium" for CCSMs Composite plugin "Undirect" list # - # www-client/google-chrome Window Class ID is "Google-chrome" - # media-tv/kodi Window Class ID is "Kodi" - # Fixes desktop freeze when returning from fullscreen video when using proprietary gfx drivers # - sed -e 's:!(class=chromium-browser):!(class=chromium-browser) \& !(class=Chromium-browser-chromium) \& !(class=Google-chrome) \& !(class=Kodi):g' \ - -i plugins/composite/composite.xml.in - - # Don't let compiz install /etc/compizconfig/config, violates sandbox and we install it from "${WORKDIR}/debian/compizconfig" anyway # - sed '/add_subdirectory (config)/d' \ - -i compizconfig/libcompizconfig/CMakeLists.txt || die - - # Fix libdir # - sed "s:/lib/:/$(get_libdir)/:g" \ - -i compizconfig/compizconfig-python/CMakeLists.txt || die - - # Unset CMAKE_BUILD_TYPE env variable so that cmake-utils.eclass doesn't try to "append-cppflags -DNDEBUG" # - # resulting in compiz window placement not working # - export CMAKE_BUILD_TYPE=none - - # Gentoo 'cython3' binary is called 'cython' # - sed -e 's:cython3:cython:g' \ - -i compizconfig/compizconfig-python/CMakeLists.txt || die - - # Need to do a 'python_foreach_impl' run from python-r1 eclass to workaround corrupt generated python shebang for /usr/bin/ccsm # - # Due to the way CMake invokes distutils setup.py, shebang will be inherited from the sandbox leading to runtime failure # - python_copy_sources - cmake-utils_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DBUILD_GLES=$(usex gles2 ON OFF) - -DCMAKE_INSTALL_PREFIX="/usr" - -DCOMPIZ_BUILD_TESTING=$(usex test ON OFF) - -DCOMPIZ_BUILD_WITH_RPATH=FALSE - -DCOMPIZ_DEFAULT_PLUGINS="ccp" - -DCOMPIZ_DISABLE_GS_SCHEMAS_INSTALL=OFF - -DCOMPIZ_PACKAGING_ENABLED=TRUE - -DCOMPIZ_WERROR=OFF - ) - configuration() { - cmake-utils_src_configure - } - python_foreach_impl run_in_build_dir configuration -} - -src_test() { - # Current test results: # - # 99% tests passed, 1 tests failed out of 1362 # - # The following tests FAILED: # - # 15 - GWDMockSettingsTest.TestMock (Failed) # - - local XDUMMY_COMMAND="cmake-utils_src_test" - xdummymake -} - -src_compile() { - compilation() { - cmake-utils_src_compile VERBOSE=1 - } - python_foreach_impl run_in_build_dir compilation -} - -src_install() { - installation() { - pushd ${CMAKE_BUILD_DIR} - addpredict /usr/share/glib-2.0/schemas/ - emake DESTDIR="${ED}" install - - # Window manager desktop file for GNOME # - insinto /usr/share/gnome/wm-properties/ - doins gtk/gnome/compiz.desktop - - # Keybinding files # - insinto /usr/share/gnome-control-center/keybindings - doins gtk/gnome/*.xml - popd &> /dev/null - } - python_foreach_impl run_in_build_dir installation - python_foreach_impl python_optimize - - pushd ${CMAKE_USE_DIR} - CMAKE_DIR=$(cmake --system-information | grep '^CMAKE_ROOT' | awk -F\" '{print $2}') - insinto "${CMAKE_DIR}/Modules/" - doins cmake/FindCompiz.cmake - doins cmake/FindOpenGLES2.cmake - doins compizconfig/libcompizconfig/cmake/FindCompizConfig.cmake - - # Docs # - dodoc AUTHORS NEWS README - doman debian/{ccsm,compiz,gtk-window-decorator}.1 - - insinto /usr/$(get_libdir)/compiz/migration/ - doins postinst/convert-files/*.convert - - # Default GSettings settings # - insinto /usr/share/glib-2.0/schemas - newins debian/compiz-gnome.gsettings-override 10_compiz-ubuntu.gschema.override - popd &> /dev/null -} - -pkg_preinst() { gnome2_schemas_savelist; } - -pkg_postinst() { - gnome2_schemas_update - xdg_icon_cache_update - ubuntu-versionator_pkg_postinst -} - -pkg_postrm() { - gnome2_schemas_update - xdg_icon_cache_update -} diff --git a/unity-base/compiz/compiz-0.9.14.1_p20210501_p0_p01.ebuild b/unity-base/compiz/compiz-0.9.14.1_p20210501_p0_p01.ebuild index e0168f08..f3c3ed3c 100644 --- a/unity-base/compiz/compiz-0.9.14.1_p20210501_p0_p01.ebuild +++ b/unity-base/compiz/compiz-0.9.14.1_p20210501_p0_p01.ebuild @@ -15,11 +15,11 @@ SRC_URI="${UURL}/${MY_P}${UVER_PREFIX}-${UVER}.tar.xz" LICENSE="GPL-2 LGPL-2.1 MIT" SLOT="0/${PV}" -#KEYWORDS="~amd64" +KEYWORDS="~amd64" IUSE="+debug gles2 test" RESTRICT="mirror" -S="${WORKDIR}/${PN}-${PV}${UVER_PREFIX}" +S="${WORKDIR}/${PN}" COMMONDEPEND="!!x11-wm/compiz !!x11-libs/compiz-bcop diff --git a/unity-base/compiz/files/compiz-build-python-extension.patch b/unity-base/compiz/files/compiz-build-python-extension.patch deleted file mode 100644 index 75da4ef9..00000000 --- a/unity-base/compiz/files/compiz-build-python-extension.patch +++ /dev/null @@ -1,258 +0,0 @@ -author Dmitry Shachnev 2021-05-01 17:29:17 +0000 -committer Bileto Bot 2021-05-01 17:29:17 +0000 -Build the compizconfig Python extension using distutils. Bump required CMake version to 3.17 to make this possible. (LP: #1926046) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 170c46b..26df7b8 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -3,7 +3,7 @@ - # - project (compiz C CXX) - --cmake_minimum_required (VERSION 3.10.0) -+cmake_minimum_required (VERSION 3.17.0) - - if (POLICY CMP0072) - cmake_policy (SET CMP0072 OLD) -diff --git a/cmake/CompizCommon.cmake b/cmake/CompizCommon.cmake -index 3bdba7a..766b22f 100644 ---- a/cmake/CompizCommon.cmake -+++ b/cmake/CompizCommon.cmake -@@ -1,4 +1,4 @@ --cmake_minimum_required (VERSION 3.10.0) -+cmake_minimum_required (VERSION 3.17.0) - - if (POLICY CMP0072) - cmake_policy (SET CMP0072 OLD) -diff --git a/compizconfig/ccsm/CMakeLists.txt b/compizconfig/ccsm/CMakeLists.txt -index 913cd22..85a29c0 100644 ---- a/compizconfig/ccsm/CMakeLists.txt -+++ b/compizconfig/ccsm/CMakeLists.txt -@@ -13,9 +13,9 @@ execute_process (COMMAND uname -p OUTPUT_VARIABLE PROC_ARCH) - string (REPLACE "\n" "" PROC_ARCH ${PROC_ARCH}) - - # Get Python Version --find_package (PythonInterp 3.0 REQUIRED) -+find_package (Python3 REQUIRED) - --set (PY_VERSION "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}") -+set (PY_VERSION "${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}") - set (PY_BUILD_DIR lib.linux-${PROC_ARCH}-${PY_VERSION}) - set (PY_SCRIPTS_DIR scripts-${PY_VERSION}) - -@@ -34,17 +34,17 @@ string (STRIP ${COMPIZ_RELEASE_VERSION} COMPIZ_RELEASE_VERSION) - set (VERSION ${COMPIZ_RELEASE_VERSION}) - - add_custom_command (OUTPUT ${PY_CCSM_LIB} -- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py build --build-base=${CMAKE_CURRENT_BINARY_DIR}/build --version=${VERSION} -+ COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py build --build-base=${CMAKE_CURRENT_BINARY_DIR}/build --version=${VERSION} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - COMMENT "Generating Python Bytecode") - - add_custom_target (ccsm_module ALL DEPENDS - ${PY_CCSM_LIB}) - --set (UNINSTALL_COMMAND "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py uninstall --prefix=${CMAKE_INSTALL_PREFIX} --version=${VERSION}") -+set (UNINSTALL_COMMAND "${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py uninstall --prefix=${CMAKE_INSTALL_PREFIX} --version=${VERSION}") - - compiz_add_code_to_uninstall_target (${UNINSTALL_COMMAND} ${CMAKE_CURRENT_SOURCE_DIR}) - - install (CODE - "message (\"Installing python files\") -- execute_process (COMMAND cmake -DPY_EXECUTABLE=${PYTHON_EXECUTABLE} -DSETUP=${CMAKE_CURRENT_SOURCE_DIR}/setup.py -DPREFIX=${CMAKE_INSTALL_PREFIX} -DWDIR=${CMAKE_CURRENT_SOURCE_DIR} -DVERSION=${VERSION} -P ${compiz_SOURCE_DIR}/compizconfig/cmake/exec_setup_py_with_destdir.cmake)") -+ execute_process (COMMAND cmake -DPY_EXECUTABLE=${Python3_EXECUTABLE} -DSETUP=${CMAKE_CURRENT_SOURCE_DIR}/setup.py -DPREFIX=${CMAKE_INSTALL_PREFIX} -DWDIR=${CMAKE_CURRENT_SOURCE_DIR} -DVERSION=${VERSION} -P ${compiz_SOURCE_DIR}/compizconfig/cmake/exec_setup_py_with_destdir.cmake)") -diff --git a/compizconfig/compizconfig-python/CMakeLists.txt b/compizconfig/compizconfig-python/CMakeLists.txt -index 9041098..f1f6bc2 100644 ---- a/compizconfig/compizconfig-python/CMakeLists.txt -+++ b/compizconfig/compizconfig-python/CMakeLists.txt -@@ -5,93 +5,43 @@ set (CMAKE_PROJECT_NAME compizconfig-python) - execute_process (COMMAND uname -p OUTPUT_VARIABLE PROC_ARCH) - string (REPLACE "\n" "" PROC_ARCH ${PROC_ARCH}) - --find_package (PythonInterp 3.0 REQUIRED) --find_package (PythonLibs 3.0 REQUIRED) -+find_package (Python3 COMPONENTS Interpreter Development REQUIRED) - - set (COMPIZCONFIG_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/compizconfig/libcompizconfig/include) - --set (PY_VERSION "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}") -+set (PY_VERSION "${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}") - set (PY_BUILD_DIR lib.linux-${PROC_ARCH}-${PY_VERSION}) --set (PY_SCRIPTS_DIR scripts-${PY_VERSION}) --set (PY_COMPIZCONFIG_SRC ${CMAKE_CURRENT_BINARY_DIR}/compizconfig.c) - set (PY_COMPIZCONFIG_CYTHON ${CMAKE_CURRENT_SOURCE_DIR}/src/compizconfig.pyx) -- --find_program(CYTHON_BIN cython3) --if(NOT CYTHON_BIN) -- message(FATAL_ERROR "Can not build because cython binary not found.") --endif() -- --add_custom_command (OUTPUT ${PY_COMPIZCONFIG_SRC} -- COMMAND ${CYTHON_BIN} -o ${PY_COMPIZCONFIG_SRC} ${PY_COMPIZCONFIG_CYTHON} -- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -- DEPENDS ${PY_COMPIZCONFIG_CYTHON}) -+set (COMPIZCONFIG_PYTHON_MODULE ${CMAKE_CURRENT_BINARY_DIR}/build/${PY_BUILD_DIR}/compizconfig.${Python3_SOABI}.so) - - file (READ ${CMAKE_SOURCE_DIR}/VERSION COMPIZ_RELEASE_VERSION LIMIT 12 OFFSET 0) - string (STRIP ${COMPIZ_RELEASE_VERSION} COMPIZ_RELEASE_VERSION) - set (VERSION ${COMPIZ_RELEASE_VERSION}) - --include_directories (${PYTHON_INCLUDE_DIRS} -- ${COMPIZCONFIG_INCLUDE_DIRS}) -- --# cython generates code that does type-punning, this trips --# up -Werror --set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-strict-aliasing") -- --# We need to remove the "lib" --set (CMAKE_SHARED_LIBRARY_PREFIX "") -- --# We must build the python module using CMake instead of distutils. --# --# The only way in which the python module can be built using distutils --# is by using add_custom_command to "generate" it into existence. --# Unfortunately this has drawbacks. Namely, it is not possible for --# add_custom_command to depend on library targets. Because of that, there's --# no way that we can guarantee that libcompizconfig.so will be linked --# before compizconfig.so (which is required). The best that we can do --# there is to use add_custom_target, and make that target depend on the --# file, --add_library (compizconfig_python_module SHARED -- ${PY_COMPIZCONFIG_SRC}) -+add_custom_command (OUTPUT ${COMPIZCONFIG_PYTHON_MODULE} -+ COMMAND ${CMAKE_COMMAND} -E copy ${PY_COMPIZCONFIG_CYTHON} ${CMAKE_CURRENT_BINARY_DIR} -+ COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py build --version=${VERSION} -+ DEPENDS ${PY_COMPIZCONFIG_CYTHON} compizconfig) - --set_target_properties (compizconfig_python_module -- PROPERTIES -- OUTPUT_NAME -- compizconfig) -+add_custom_target (compizconfig_python_module ALL -+ DEPENDS ${COMPIZCONFIG_PYTHON_MODULE}) - --target_link_libraries (compizconfig_python_module -- ${PYTHON_LIBRARIES} -- compizconfig) -- --set (UNINSTALL_COMMAND "${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py uninstall --prefix=${CMAKE_INSTALL_PREFIX} --version=${VERSION}") -+set (UNINSTALL_COMMAND "${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py uninstall --prefix=${CMAKE_INSTALL_PREFIX} --version=${VERSION}") - - compiz_add_code_to_uninstall_target (${UNINSTALL_COMMAND} ${CMAKE_CURRENT_BINARY_DIR}) - --# This is probably not very portable, but we can't install using distutils --# as we cannot build with it safely -- --if ($ENV{COMPIZ_DEB_BUILD}) -- set (INSTALL_LAYOUT_DIR dist-packages) --else ($ENV{COMPIZ_DEB_BUILD}) -- set (INSTALL_LAYOUT_DIR site-packages) --endif ($ENV{COMPIZ_DEB_BUILD}) -- --set (PYTHON_MODULE_DIR ${CMAKE_INSTALL_PREFIX}/lib/python${PY_VERSION}/${INSTALL_LAYOUT_DIR}) -- --install (TARGETS compizconfig_python_module -- DESTINATION ${PYTHON_MODULE_DIR}) -- - install (CODE - "message (\"Installing python files\") -- execute_process (COMMAND cmake -DPY_EXECUTABLE=${PYTHON_EXECUTABLE} -DSETUP=${CMAKE_CURRENT_SOURCE_DIR}/setup.py -DPREFIX=${CMAKE_INSTALL_PREFIX} -DWDIR=${CMAKE_CURRENT_BINARY_DIR} -DVERSION=${VERSION} -P ${compiz_SOURCE_DIR}/compizconfig/cmake/exec_setup_py_with_destdir.cmake)") -+ execute_process (COMMAND cmake -DPY_EXECUTABLE=${Python3_EXECUTABLE} -DSETUP=${CMAKE_CURRENT_SOURCE_DIR}/setup.py -DPREFIX=${CMAKE_INSTALL_PREFIX} -DWDIR=${CMAKE_CURRENT_BINARY_DIR} -DVERSION=${VERSION} -P ${compiz_SOURCE_DIR}/compizconfig/cmake/exec_setup_py_with_destdir.cmake)") - - if (COMPIZ_BUILD_TESTING) - - find_program (BASH_EXECUTABLE bash) -- mark_as_advanced (FORCE PYTHON_EXECUTABLE) -+ mark_as_advanced (FORCE Python3_EXECUTABLE) - - file (GLOB PYTHON_TESTS "tests/test_*.py") - -- if (PYTHON_EXECUTABLE AND -+ if (Python3_EXECUTABLE AND - BASH_EXECUTABLE) - set (MOCK_XML_SRC ${CMAKE_CURRENT_SOURCE_DIR}/tests/mock.xml) - set (MOCK_XML_FILE ${CMAKE_CURRENT_BINARY_DIR}/mock.xml) -@@ -116,9 +66,9 @@ if (COMPIZ_BUILD_TESTING) - COMMAND ${BASH_EXECUTABLE} - ${CMAKE_SOURCE_DIR}/tests/util/run_with_ld_library_path.sh - ${CMAKE_BINARY_DIR}/compizconfig/libcompizconfig/src -- ${PYTHON_EXECUTABLE} ${PYTHON_TEST_FILE}) -+ ${Python3_EXECUTABLE} ${PYTHON_TEST_FILE}) - endforeach (PYTHON_TEST_FILE) -- endif (PYTHON_EXECUTABLE AND -+ endif (Python3_EXECUTABLE AND - BASH_EXECUTABLE) - - endif (COMPIZ_BUILD_TESTING) -diff --git a/compizconfig/compizconfig-python/setup.py b/compizconfig/compizconfig-python/setup.py -index 963364d..db60746 100644 ---- a/compizconfig/compizconfig-python/setup.py -+++ b/compizconfig/compizconfig-python/setup.py -@@ -4,6 +4,8 @@ from distutils.command.build import build as _build - from distutils.command.install import install as _install - from distutils.command.install_data import install_data as _install_data - from distutils.command.sdist import sdist as _sdist -+from distutils.extension import Extension -+from Cython.Build import cythonize - import os - import subprocess - import sys -@@ -145,6 +147,11 @@ setup ( - license = "GPL", - maintainer = "Guillaume Seguin", - maintainer_email = "guillaume@segu.in", -+ ext_modules = cythonize([ -+ Extension("compizconfig", ["compizconfig.pyx"], -+ libraries=["compizconfig"], -+ library_dirs=["../libcompizconfig/src"]) -+ ]), - cmdclass = {"uninstall" : uninstall, - "install" : install, - "install_data" : install_data, -diff --git a/compizconfig/compizconfig-python/tests/compiz_config_test.py b/compizconfig/compizconfig-python/tests/compiz_config_test.py -index 5007eaf..cb6dc22 100644 ---- a/compizconfig/compizconfig-python/tests/compiz_config_test.py -+++ b/compizconfig/compizconfig-python/tests/compiz_config_test.py -@@ -1,8 +1,8 @@ - import os - import sys --import subprocess -+from distutils.util import get_platform - --arch = subprocess.Popen (["uname", "-p"], stdout=subprocess.PIPE).communicate ()[0][:-1] -+arch = get_platform() - - os.environ["G_SLICE"] = "always-malloc" - os.environ["COMPIZ_METADATA_PATH"] = "compizconfig/compizconfig-python/" -@@ -11,7 +11,7 @@ os.environ["XDG_CONFIG_HOME"] = "compizconfig/libcompizconfig/config" - os.environ["LIBCOMPIZCONFIG_BACKEND_PATH"] = "compizconfig/libcompizconfig/backend/" - os.environ["XDG_DATA_DIRS"] = "generated/" - --sys.path.insert (0, "compizconfig/compizconfig-python") -+sys.path.insert (0, "compizconfig/compizconfig-python/build/lib.%s-%s.%s" % (arch, *sys.version_info[:2])) - - import unittest - import compizconfig -diff --git a/debian/control b/debian/control -index 3fe9285..54edd0b 100644 ---- a/debian/control -+++ b/debian/control -@@ -4,7 +4,7 @@ Priority: optional - Maintainer: Ubuntu Developers - XSBC-Original-Maintainer: Debian X Strike Force - Uploaders: David Nusinow , Sean Finney , Cyril Brulebois --Build-Depends: cmake (>= 3.10.0), -+Build-Depends: cmake (>= 3.17.0), - debhelper (>= 9~), - dh-python, - dh-translations, -diff --git a/debian/python3-compizconfig.install b/debian/python3-compizconfig.install -index 71b2a32..2e35966 100644 ---- a/debian/python3-compizconfig.install -+++ b/debian/python3-compizconfig.install -@@ -1,2 +1,2 @@ --usr/lib/*/*/compizconfig.so --usr/lib/*/dist-packages/compizconfig_python* -+usr/lib/python3/dist-packages/compizconfig.*.so -+usr/lib/python3/dist-packages/compizconfig_python* diff --git a/unity-base/evemu/Manifest b/unity-base/evemu/Manifest index 1acbb619..bd216191 100644 --- a/unity-base/evemu/Manifest +++ b/unity-base/evemu/Manifest @@ -1,4 +1,4 @@ DIST evemu_2.7.0-3.debian.tar.xz 12104 BLAKE2B 5699470a0f347aa1381ac0368b4e7145c88a89af7c3da2889c881709d1873e2b99a93d6854147030d493a8c258bfb7c5405b4ba76fb885a035c019c8f348efd4 SHA512 6adf2cb04d4420a08b134c08c21ab04c3059f4d575d0441b684ed5f40c4c145b9e8a68f06d3b8387e4996cf028291e13ce837253db3a29ba8c7ef13c6df985db DIST evemu_2.7.0.orig.tar.xz 509308 BLAKE2B 0fec24d4cbd57a2b8d9eb6c7e4734a069148e20dea819bf8409adc95928410bfdabc93dbe58faad1137fb086d4534668e2cbd77f939f9a44a9aee99835fa7d2d SHA512 a8b09717f84df440c230bb65d3d50d81ce6a722a7cdb281981792435ea591186c28dbec215a0314542e0e36bab06bb1800851bbe32cf2a0e7712adaeaceaeb76 -EBUILD evemu-2.7.0_p3.ebuild 954 BLAKE2B 0bbc022aee9f27065bb22a256712fb83215186bb91302eb8aa5ba848a2105b770a7d7237aed0ed5344f5554c7adee12a6387ee3299576a9380f069d659c3704f SHA512 815376b1f8a09fce94678785b16a81a8a10a795546c37ca52de13b21969017a568baa1b6fc48406afca717d6be131fb229087f8411d0210ae5c9ce43a6196965 +EBUILD evemu-2.7.0_p3.ebuild 953 BLAKE2B e6922787fa3e94f037e7f2c99bf0f32fdb49530c380cf3cd1c47fe007d30a7159f8c073519670f3662260047a0b2597c8091fd00b92677ca46f64666969aed76 SHA512 8ca838bb2c274c41be6adc5d6bc5a68fde8d66238be3329f43aa2013ff64fb00a7a8e4b01879f544ab40c662bffa03daa5139e53c2b8182c776a9c58a889f2d6 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-base/evemu/evemu-2.7.0_p3.ebuild b/unity-base/evemu/evemu-2.7.0_p3.ebuild index 2746d279..de1098ab 100644 --- a/unity-base/evemu/evemu-2.7.0_p3.ebuild +++ b/unity-base/evemu/evemu-2.7.0_p3.ebuild @@ -4,7 +4,7 @@ EAPI=6 PYTHON_COMPAT=( python3_{7..9} ) -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils python-single-r1 ubuntu-versionator UVER="-${PVR_MICRO}" diff --git a/unity-base/frame/Manifest b/unity-base/frame/Manifest index af925c70..dbeb2147 100644 --- a/unity-base/frame/Manifest +++ b/unity-base/frame/Manifest @@ -1,4 +1,4 @@ DIST frame_2.5.0daily13.06.05+16.10.20160809-0ubuntu3.diff.gz 3581 BLAKE2B 5df87ee4c893c44c3f808012c168d3967e467d270305cf61701849753240606b6ff9220a37ed114d48cd407f6a914638f9dcacd083974df970eff7796d05ea2b SHA512 13ea0cb9fa3810b76fc6a8d5d4d1dffbf5217e554c4b4a897a208486e60f650e6da0c9f79ebee574d5dcdf4a38466c3c3873c1c5b5c8092cf9b5d54e3645b559 DIST frame_2.5.0daily13.06.05+16.10.20160809.orig.tar.gz 100938 BLAKE2B 22b7fef9f7ca3cdd843d272a4a43afe0df1d718614965c71f5c8650c6442c1a900e50f7ff76c8af53307c08cae5fb4e33188ace07d19a85ccca49e2baf0f4eec SHA512 4f5d5db2760d9a625d98909d214fdeadddf8245b471010f44195be6f46abe3e27d9fec0eefd1d2087675fa3c24ff8a808f4e7841e40cab767bd27a8a5dea64c2 -EBUILD frame-2.5.0_p20160809_p0_p03.ebuild 943 BLAKE2B 176fd624db495a5b5f3a8027c52eacb6faecea3f5f8b9cfdcaad2212f1e2120789b19f77b79c07e53bcfe9545c8bab6e3400cf8b32491ec0cb561a44d0e0b579 SHA512 0d6145442c42118a39d8567c1790e9baba831e75120d77f731dd8de7a974621c083b139e30fe9e769b7fa7924fa36df498fce49c5a31de3cf513919ca26a5a0b +EBUILD frame-2.5.0_p20160809_p0_p03.ebuild 942 BLAKE2B dc0c972344d21dfd70367eb8d39ad33e424d16c4a1465ee12cd0a85be473c1ff5a605344b40f0c3178e640a09fdc854728fb1e8d3bdf72132a67b1daad4c00c2 SHA512 695b859d3d271345bd96099ff8ae57fc0a290c72efd8803579d9763bd3df0ad60835c6b4b5e4202b805560212445646789e362cb44b6e3826ca976edd8184742 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-base/frame/frame-2.5.0_p20160809_p0_p03.ebuild b/unity-base/frame/frame-2.5.0_p20160809_p0_p03.ebuild index e4c46f78..1e6f9e4f 100644 --- a/unity-base/frame/frame-2.5.0_p20160809_p0_p03.ebuild +++ b/unity-base/frame/frame-2.5.0_p20160809_p0_p03.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils ubuntu-versionator UVER_PREFIX="daily13.06.05+16.10.${PVR_MICRO}" diff --git a/unity-base/geis/Manifest b/unity-base/geis/Manifest index 8feb5431..66ccfa01 100644 --- a/unity-base/geis/Manifest +++ b/unity-base/geis/Manifest @@ -1,4 +1,4 @@ DIST geis_2.2.17+16.04.20160126-0ubuntu7.diff.gz 6848 BLAKE2B 65f5409c50c8705009cbae27ce8a763e234f89ae8c5f440e4846d5a707cc9d4d29dfb85a966b8e17b08e26da01dd2b626bc63f3684f2093d551694256e43f1f2 SHA512 13f321bfb2c8dd46ccd866629a8c03c236cfc1087d559bd123cc3e667369999c9ef414c1a47697753e385e1440fdcd5cf75eea4114ee96a34c33a5c39218f941 DIST geis_2.2.17+16.04.20160126.orig.tar.gz 325184 BLAKE2B 256c7a32776123bc693c35a0b5e371cf9ef30add044ae835798f7abaa6161ec0b0f2a241629b9e6c186d468aea037338b2f42c97b4b6f1d58b26bf409654727e SHA512 5d50405e0b4520f163239a8d65adc6e71844eaf95d96c3c9683db4de995c8af960991ff29450c1d9ce7bfceb74acd97623274a978e509bf09ac9ba1d3983c0cc -EBUILD geis-2.2.17_p20160126_p0_p07.ebuild 1152 BLAKE2B d1ddc4c872df4a475fc8b987c19cbe9bc7aa0c66d7e3359c75d1bb59ef39953976c09221575d8944816cd2b00f6356386d384b19ccc2efc129ce77b1c2c077df SHA512 02c44a3974cc8ce883eefcccea95877e87dfa66bbcab1a0317c46aab854130a23ab276761d679dee7b9fda28ca56d1fd8e23ef3af326f91feec9545984cd4a42 +EBUILD geis-2.2.17_p20160126_p0_p07.ebuild 1151 BLAKE2B 219534b4c99e70bf66065e788c3d4029cc66ac898eca90b0da569703b53b7f58f37001cef70e6386eaab5fff455021882dfa25e66da2c0b5e8242f2f8e76865f SHA512 ac4dd29c1a910f7204fc5eda7ba3f2ff850356d651dc5d79d9073623ef7fd02e164488850227edde9897e2eb62890b3746252373bc1bc556c31d13131188e8df MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-base/geis/geis-2.2.17_p20160126_p0_p07.ebuild b/unity-base/geis/geis-2.2.17_p20160126_p0_p07.ebuild index 84cdcc5f..ccff35c1 100644 --- a/unity-base/geis/geis-2.2.17_p20160126_p0_p07.ebuild +++ b/unity-base/geis/geis-2.2.17_p20160126_p0_p07.ebuild @@ -4,7 +4,7 @@ EAPI=6 PYTHON_COMPAT=( python3_{7..9} ) -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils python-r1 ubuntu-versionator UVER_PREFIX="+16.04.${PVR_MICRO}" diff --git a/unity-base/grail/Manifest b/unity-base/grail/Manifest index 3d2f0782..ae420405 100644 --- a/unity-base/grail/Manifest +++ b/unity-base/grail/Manifest @@ -1,3 +1,3 @@ DIST grail_3.1.1.orig.tar.bz2 422911 BLAKE2B 962916ea2a61bf94a13d0b7f3a2120ed6f0b12411180525d0470af2460c8f74007397f0044df4250d96e86ac4ac13bae4d145d7333d8f5b5f2bff6aab4ea9e69 SHA512 1e26b784287a480041932b2e37576b5e9142570cdae7870f021e55bbd626784720af8601a8e52c38f56097bceb91a6f8d34abf099f31fd92d283e67b6f3da7ad -EBUILD grail-3.1.1_p3.ebuild 875 BLAKE2B bbe4a95219376299b1cbd8dd399f5404094fbf9f4b6577aa8e88b9487dcb309d869b157ba7817948817c6841f15e40067834ffc9e37e4d8b25032a600b3171c7 SHA512 b05aa8f2ed76d505b00faebbf23cd29cb6ec5a124478f258f07e96355916e5349bf6abe260a4045b7638eef89f43d79c24dba23c66a38f058365513cb4a95118 +EBUILD grail-3.1.1_p3.ebuild 874 BLAKE2B 6b37e49f83711d161917e790b15bcb80725d9ac200e644b128a90c6ca87eb05b8f5b3064cf0ae3de48e454f132d7a44ba71fb7a252323776c0b4cd96bc50a494 SHA512 1763e00722eb629e18ceda273e1d3269fc35e548a61cf4318da8365833b7af4f6ff0dbedd987f673ae9b4322f4c237e56fc613d5ef2080609b80cda033a96f75 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-base/grail/grail-3.1.1_p3.ebuild b/unity-base/grail/grail-3.1.1_p3.ebuild index ce0edbe6..1c93d76e 100644 --- a/unity-base/grail/grail-3.1.1_p3.ebuild +++ b/unity-base/grail/grail-3.1.1_p3.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils ubuntu-versionator UVER="-${PVR_MICRO}" diff --git a/unity-base/gsettings-ubuntu-touch-schemas/Manifest b/unity-base/gsettings-ubuntu-touch-schemas/Manifest index b38656d4..9853d032 100644 --- a/unity-base/gsettings-ubuntu-touch-schemas/Manifest +++ b/unity-base/gsettings-ubuntu-touch-schemas/Manifest @@ -1,5 +1,3 @@ -DIST gsettings-ubuntu-touch-schemas_0.0.7+17.10.20170922.orig.tar.gz 16090 BLAKE2B 2abcbee133e1fabb6015a68dff2d0fafe9f77f6052b188fae7ae25eff0490187677c11c29a0e25b756cdf3fc3c697b12da8f2a67280d0f1a583aba8336054bdf SHA512 11ccd501ae284bca232be43c82607153dc8607ec1f068c610418a3e8a2a7ce013f6b9a672f8d22bcce15c77c4d80f4f1a327419859532c8bbe3bad84f7bed0cd DIST gsettings-ubuntu-touch-schemas_0.0.7+21.10.20210712.orig.tar.gz 16865 BLAKE2B 8b0b654ef9160b2974bdc4bf4b57bfdad28d0f74aef05d7e60bd83ad34fd3a5ea63931c5c00a4b97b50584362183213f7a35996e64f8b672e7a8c220268b287d SHA512 c6f5d20cdbd0552ba3902ad96acc44f04ff093588ef6c49d2821f2abce097ffad9f86aeef68992b770a1699ab789b36cbb2614adbb5f395579398cb2046e9e6b -EBUILD gsettings-ubuntu-touch-schemas-0.0.7_p20170922_p0_p01.ebuild 1026 BLAKE2B a34a4ac89b830104f3332343c5c5b0061e50bdc9076126bed5c26d025f4c9774770e44988e61000a8f9ce584c9b9a014333a6346b22213005042fa7f54297918 SHA512 159165a9504a943cbb00c2e64dae8000bb4e4e8e580542444e21d7f133862e587e9aeed162dd811ae11ebef1d1a6b801f8b2d0e7b63fc061626a0cd3c32cec01 -EBUILD gsettings-ubuntu-touch-schemas-0.0.7_p20210712_p0_p01.ebuild 1036 BLAKE2B 411ca557b81e3fa99abc3bf2a70ecae8cd998decfe5e82b28384e38143b0c4b57fec4701498a774b413a47f74bab4ad5247745e5fb773272b4aa7f1b86e1cb32 SHA512 48ec59046a7160bca937d8d9bf43f6fb23b7f2e701f87d5791ddb2f242d75aac6e448efaa0af57832ddb3c3d15ee0a37a2054722301f029759d1060d77b8904a +EBUILD gsettings-ubuntu-touch-schemas-0.0.7_p20210712_p0_p01.ebuild 1035 BLAKE2B 724f40f513fb5fe0f0d8103790a588d580022241b3dfaff813c503612179b14837a1ee0a5ae06658390c4f205b2c767be5db11d0078befdcebeb864cad9a4052 SHA512 d5954e55f3f345937fe549e3b94de170417051ae21b1b9df8285366eda460bba404cf047e8d906f4499675c82214b5de822c7b0ed46b1372cb156fa8acfe25b7 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-base/gsettings-ubuntu-touch-schemas/gsettings-ubuntu-touch-schemas-0.0.7_p20170922_p0_p01.ebuild b/unity-base/gsettings-ubuntu-touch-schemas/gsettings-ubuntu-touch-schemas-0.0.7_p20170922_p0_p01.ebuild deleted file mode 100644 index d7da62c7..00000000 --- a/unity-base/gsettings-ubuntu-touch-schemas/gsettings-ubuntu-touch-schemas-0.0.7_p20170922_p0_p01.ebuild +++ /dev/null @@ -1,55 +0,0 @@ -# Copyright 1999-2021 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -URELEASE="hirsute" -inherit autotools gnome2-utils ubuntu-versionator - -UVER_PREFIX="+17.10.${PVR_MICRO}" - -DESCRIPTION="GSettings desktop-wide schemas for the Unity7 user interface" -HOMEPAGE="https://launchpad.net/gsettings-ubuntu-touch-schemas" -SRC_URI="${UURL}/${MY_P}${UVER_PREFIX}.orig.tar.gz" - -LICENSE="LGPL-2.1" -SLOT="0" -IUSE="" -KEYWORDS="~amd64" -RESTRICT="mirror" - -RDEPEND="sys-auth/polkit-pkla-compat" -DEPEND="${RDEPEND} - gnome-base/dconf - sys-devel/gettext - >=dev-util/intltool-0.40 - virtual/pkgconfig" - -S="${WORKDIR}" - -src_prepare() { - ubuntu-versionator_src_prepare - eautoreconf -} - -src_configure() { - econf --localstatedir=/var -} - -src_install() { - emake DESTDIR="${ED}" install - find "${ED}" -name "*.pkla" -exec chown root:polkitd {} \; -} - -pkg_preinst() { - gnome2_schemas_savelist -} - -pkg_postinst() { - gnome2_schemas_update - ubuntu-versionator_pkg_postinst -} - -pkg_postrm() { - gnome2_schemas_update -} diff --git a/unity-base/gsettings-ubuntu-touch-schemas/gsettings-ubuntu-touch-schemas-0.0.7_p20210712_p0_p01.ebuild b/unity-base/gsettings-ubuntu-touch-schemas/gsettings-ubuntu-touch-schemas-0.0.7_p20210712_p0_p01.ebuild index 18312309..f51ccfda 100644 --- a/unity-base/gsettings-ubuntu-touch-schemas/gsettings-ubuntu-touch-schemas-0.0.7_p20210712_p0_p01.ebuild +++ b/unity-base/gsettings-ubuntu-touch-schemas/gsettings-ubuntu-touch-schemas-0.0.7_p20210712_p0_p01.ebuild @@ -15,7 +15,7 @@ SRC_URI="${UURL}/${MY_P}${UVER_PREFIX}.orig.tar.gz" LICENSE="LGPL-2.1" SLOT="0" IUSE="" -#KEYWORDS="~amd64" +KEYWORDS="~amd64" RESTRICT="mirror" RDEPEND="sys-auth/polkit-pkla-compat" diff --git a/unity-base/hud/Manifest b/unity-base/hud/Manifest index cfb47cc3..367bbca7 100644 --- a/unity-base/hud/Manifest +++ b/unity-base/hud/Manifest @@ -1,4 +1,4 @@ DIST hud_14.10+17.10.20170619-0ubuntu4.diff.gz 13038 BLAKE2B d77fc44b8e2ed36f1f7d7cd63538b16c5b146d1853d0e1851300b2673bee48e1dd9d2224ca2e926957df8f42465852f2364eb703986380d6d13f00c56f0f4eba SHA512 633da56d62f1bfd76040003b761c66aacb354f732c76ee99272486d12975c8757d1d69dddbd403d58d0f009fab592059d03a1280bbb7409514cd62dd846cae1b DIST hud_14.10+17.10.20170619.orig.tar.gz 181237 BLAKE2B f5b32b034c1de6dea7579a0ae55e9624fab857dd573046c36dc43d9cbc6447587a78f4d4b94ad22af24dc628dc2a990f649a5695995f61a9a4dfbb177a962875 SHA512 0cdb46b1795294ad3db052d991d33063f61c3007657ae5df5d98af8b32b1e525c8a363a4e309b913b878dbafcfd44a394b3cdc7417831a28e4b08f928e9e8a43 -EBUILD hud-14.10_p20170619_p0_p04.ebuild 2397 BLAKE2B bcd1bce31d499de41e47ca4c3f74205ff176b299952537fe3c33f6e029a9328c97f0afcf2394218e325f5646eb2885849b8606d78d682f81f586adb9660c47a9 SHA512 3efbe7f07ec9989ac614e755c165cb827118e9062e71132eb49741370460233128ab3bd90730d001b8b98f0a89d1786a60b87141b90289748379b13243a09c69 +EBUILD hud-14.10_p20170619_p0_p04.ebuild 2396 BLAKE2B a1e1b43060c572e0264f9e4282bab7fe66cfe63a266daed85c6a3541d87ecc06a5ec03e4eb5a0936102d873fbb41f21ca803d2114c43b1fc5bcc3f65f893cf64 SHA512 689d139d58dfb9a2d9eb06458a3ff9695e32031a73d89bf6bc26af0d30e0a0b3c0b4b9334f366fe44dd66930506911106805faac87900ce206d9ecc1ab27e080 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-base/hud/hud-14.10_p20170619_p0_p04.ebuild b/unity-base/hud/hud-14.10_p20170619_p0_p04.ebuild index 5fee9627..906e3591 100644 --- a/unity-base/hud/hud-14.10_p20170619_p0_p04.ebuild +++ b/unity-base/hud/hud-14.10_p20170619_p0_p04.ebuild @@ -5,7 +5,7 @@ EAPI=6 PYTHON_COMPAT=( python3_{7..9} ) DISTUTILS_SINGLE_IMPL=1 -URELEASE="hirsute" +URELEASE="impish" inherit cmake-utils distutils-r1 flag-o-matic gnome2-utils ubuntu-versionator vala UVER_PREFIX="+17.10.${PVR_MICRO}" diff --git a/unity-base/nux/Manifest b/unity-base/nux/Manifest index 7acf4250..5002cd36 100644 --- a/unity-base/nux/Manifest +++ b/unity-base/nux/Manifest @@ -1,4 +1,4 @@ DIST nux_4.0.8+18.10.20180623-0ubuntu3.diff.gz 28237 BLAKE2B ff3c3c08c8c65459a5ce532e1f7eb2ea326d5ac77e972ff1989b027e2dbf2d6dd1fc4f186baac34d6a18024833e427866e7d3c0b15c4ac4ddbbb5629492e8857 SHA512 d2314e719e3e5638201de51e608819992926f5dcf9147d1bce069d297c6610b9df4d3d71aa1d3dd1d9a80e501a49768152fd610c58155cd6f5f33ebcf94d35fb DIST nux_4.0.8+18.10.20180623.orig.tar.gz 1038139 BLAKE2B 4ba14190df4c55286ebf34c76d7cd7c1b923c865a63f9be8a143f16c615921e2cd2d3d0d0759a1b5c7c0fdfe8a5d7aabd4e591e4d49da9778e2b9d6e6ef71793 SHA512 aab7b83cd2f4309ab44482d7767e4832756f3acdd17e4f7b3a777295feb0101dff7911e733d38592c1b37fd9dc1dffad2073cca415ce3e6dcab34475066251fd -EBUILD nux-4.0.8_p20180623_p0_p03.ebuild 2505 BLAKE2B 4c43245b693bb99586e0f5881774f9c000cded416007c75ce541e535d9c651005bfcdf39d4be2b4209e3ea6f30c1be48f240cfdfae3adad0cf9739b3e7e0b961 SHA512 473e14b4c2d3d1a20c6a0f97eee93ca214b80b5a78880b59f380aec3c63da6f0b048d7644045f5c1b10c116577e5f8755536af2332245889b9a6bf42f21ef799 +EBUILD nux-4.0.8_p20180623_p0_p03.ebuild 2504 BLAKE2B 3a48d4b0524b39fcd9ec69343b2e555dcbb657a06e756d78f87deabf0c5a9229515e3efd80023c9268c803a205bddaf4d43c7a006b92375ccc3e95eddb01e445 SHA512 5866a40f3d63c355ed3a1d10f40665bac1132c42965548fb7ccf5bb7517e889a372b2320ace2c13cdaad78ed4d8dd3982031393f01856e165ace123641cc5527 MISC metadata.xml 273 BLAKE2B f1d431db79bf1bae7c5a887f0c134d0cb3ef589f8d006231d9f3115faed360711f5b7a7f00725ba72ce147351d0aebde9d40a8a02e8abfe431ec4a12f53ef573 SHA512 d72012b1766de57243d21484049e408e5b9a1277a93b658bfcb83dbad95f0444ed9cebf139e50a0f5971a4ed49b0a6938c1011e1ca288656a096670462470f07 diff --git a/unity-base/nux/nux-4.0.8_p20180623_p0_p03.ebuild b/unity-base/nux/nux-4.0.8_p20180623_p0_p03.ebuild index 0dbf54a4..702433c8 100644 --- a/unity-base/nux/nux-4.0.8_p20180623_p0_p03.ebuild +++ b/unity-base/nux/nux-4.0.8_p20180623_p0_p03.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils ubuntu-versionator xdummy UVER_PREFIX="+18.10.${PVR_MICRO}" diff --git a/unity-base/overlay-scrollbar/Manifest b/unity-base/overlay-scrollbar/Manifest index 90600e6b..f047679b 100644 --- a/unity-base/overlay-scrollbar/Manifest +++ b/unity-base/overlay-scrollbar/Manifest @@ -1,3 +1,3 @@ DIST overlay-scrollbar_0.2.17.1+16.04.20151117.orig.tar.gz 52252 BLAKE2B aae81445fd146428565c4c167b48c5104ebc9b1551a8488dc480ed2e02c6e6ae6b7190f4af9f9b00b984171ad4942b5426116e8ada640833e265b2f4a7298e11 SHA512 0e718acb39307c6aa92747eb7b353a8468c358c5a25525ae2df830a4b3cb1c1bf7a3ee03410330db12c253be2d09211603cfc7274e67fa19917463b57eda899b -EBUILD overlay-scrollbar-0.2.17.1_p20151117_p0_p02.ebuild 1285 BLAKE2B 15bf45a8e66d4ce37a45c8ab7b7eac03509c72d4999da35e96879d2560d839713d66425c341a0ce7eec0ff9eadfca2734cf018738feb2b5ee374b2d4557fa3e7 SHA512 c113b7f1d8f4e7256ff1de4fb2e2335b633fe923aa164ec539cb531c808f789d98d73fc52ad092c3b5c2295021c342109cafcaf350ccaabc59980a5b4dc6bddf +EBUILD overlay-scrollbar-0.2.17.1_p20151117_p0_p02.ebuild 1284 BLAKE2B 1e6d9c1229280d5551ba1a5846b357f9b9bcc675ebafd20c20067c7df7ae5d6b2ec915c729c6f46452628ac1c3fae2bc63d3ece4745cb90732790736fb23d04b SHA512 fe51c45ac34f824ae57ef50437f4c76f4bb8f61b409315f7a72a8c38bdbcf67ac0d3d7ea661437ec6fe9536ccd7e6a53be148e54de7b5886fb53310e3bb66360 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-base/overlay-scrollbar/overlay-scrollbar-0.2.17.1_p20151117_p0_p02.ebuild b/unity-base/overlay-scrollbar/overlay-scrollbar-0.2.17.1_p20151117_p0_p02.ebuild index d998755c..abe777a6 100644 --- a/unity-base/overlay-scrollbar/overlay-scrollbar-0.2.17.1_p20151117_p0_p02.ebuild +++ b/unity-base/overlay-scrollbar/overlay-scrollbar-0.2.17.1_p20151117_p0_p02.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils gnome2-utils ubuntu-versionator UVER_PREFIX="+16.04.${PVR_MICRO}" diff --git a/unity-base/session-shortcuts/Manifest b/unity-base/session-shortcuts/Manifest index 000f5b5b..acf6ac39 100644 --- a/unity-base/session-shortcuts/Manifest +++ b/unity-base/session-shortcuts/Manifest @@ -1,3 +1,3 @@ DIST session-shortcuts_1.4.tar.xz 2956 BLAKE2B c06df37211df799db941af86f901690c86ba1edd2d18768e621ebc8dee1cbcdb3480e830cdf5044942dc73b1a4057089da0b72ef2e340cc6ec494337cb375ebd SHA512 32b1f9f3504a913509d31fdf1a7ada18cfc4e920dcad2413cbf92673a71cac0628920d61251e7487ad0181beba01f116129bc3ef2d28d8173649917740162b26 -EBUILD session-shortcuts-1.4.ebuild 776 BLAKE2B 29b67d2559dd8bc595ffdc11f026d235b6996f7f8c360a913432bd84efc3c5d967d7341c7cea617b034c6edcbb7f05fff2c19fe110c99790868c425980b6964f SHA512 3071c3fdb710b306b2435ccf4adf0c6efbfc972937e8f89d0d00dd74d1c99a1df3b8d2c82366996e3dbac3c5d9764325fd9d2a2e980bc3f235783e197f334bd6 +EBUILD session-shortcuts-1.4.ebuild 775 BLAKE2B 856ecfae4f0a6c79b0d280cd1098526123ad0dd0112ade20f38914ee8bb5087efc4c6cf3d279436ac84f5d0b221800e106863d8704306c72cee0e6bfc26f325d SHA512 012f3e88242cf50e41a3f3d3c0c5d58b2be01c55f28a50d9dd6305dc8f6bec4a3ec3603c30e7aec21c8d192d2ba53e08ebaf6218b7bdc49f04c8c8178f99bc87 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-base/session-shortcuts/session-shortcuts-1.4.ebuild b/unity-base/session-shortcuts/session-shortcuts-1.4.ebuild index 483fdb1c..7fb093d1 100644 --- a/unity-base/session-shortcuts/session-shortcuts-1.4.ebuild +++ b/unity-base/session-shortcuts/session-shortcuts-1.4.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit ubuntu-versionator UVER= diff --git a/unity-base/ubuntu-docs/Manifest b/unity-base/ubuntu-docs/Manifest index 52cae3e9..6230cd62 100644 --- a/unity-base/ubuntu-docs/Manifest +++ b/unity-base/ubuntu-docs/Manifest @@ -1,3 +1,5 @@ +AUX gentoo_signet.png 2054 BLAKE2B da61988b338ee74e815b96b4ac6874644861b813353e14125fe919b3b2f2540034be90d1069e80e9c8d1b31594d54ad9167601c94e220e59d0ffdbcb308cc992 SHA512 a14bbf804571e5984f5f7a9f7b1ffdbe9a80e057f1f1cd5f8fc69fc80acd239c59c0abc3b404e82ae029dcc45fcbd6a8dd881ae3244fcc08bb51bce76b01dd0d +AUX unity_logo.png 7919 BLAKE2B a67291689a9c509b1d01db182b78a1873bdbab9b3e20ffcf22b1d0715ae677da56e3c0d9b0383ed0f5b8245789bc6cf9ac734dec604b78dbf6db5e4a6d75d926 SHA512 7ed3db75c0544affb752a8050709d51b04d7bd6dd9287a96541331a8f8b98d867cc2c937e7843e156e1b6de6864b0ef90421f3054a4ff10af9403e0faa28fd94 DIST ubuntu-docs_16.04.4.tar.xz 6029992 BLAKE2B f81600b95af3098101da500ef271603ef8b13e1b399b9c1724b84bea9fe1d3d9780c73ccf754bed6b3d699c4dd0ac0698bb9304673f1705e88a0b57e0dc04386 SHA512 432c42d27db3c23ed53f58d09c0a2ea427875d05d9efa697938cf72ba7d28f223a2db64904980f8c173335b5a83c2cf67c49a658c7963fc22137172c368eec7e -EBUILD ubuntu-docs-16.04.4.ebuild 697 BLAKE2B 766a462dc68276846535b6e683222fde06bcb259f194ebdeb3dac9cbd2fcb705394099ef1782d7e500c4ab79060af7bb18eb369bf579e4be5745d74d51c2a9dc SHA512 8625c2704bd4bc7082e074106965f96aa4b7d3909c59060f3731626362151bd965b1e61fe70c77c836f1bec63bc26ca8735b40b1f8366b4bac56c9eb193f92ab +EBUILD ubuntu-docs-16.04.4.ebuild 1482 BLAKE2B 14e51e061086bb37f0441ca2ce0511d44a06dbc24d953a33b8aaf586ba96c27dbefffd2d5d5e3317392491f157bb47ab4ea478fac9bc2f1b9c5e7125aa7549e6 SHA512 b2b9f176d615561afacfdfa900b9d4a4bbeecd5c6952a2a82d40c9af2126684ce96a3f346096cf5670db9ea4a821842ebc4ea1f1092fd9bd862ac9ac918710b9 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-base/ubuntu-docs/files/gentoo_signet.png b/unity-base/ubuntu-docs/files/gentoo_signet.png new file mode 100644 index 00000000..f5892f70 Binary files /dev/null and b/unity-base/ubuntu-docs/files/gentoo_signet.png differ diff --git a/unity-base/ubuntu-docs/files/unity_logo.png b/unity-base/ubuntu-docs/files/unity_logo.png new file mode 100644 index 00000000..d708c0e6 Binary files /dev/null and b/unity-base/ubuntu-docs/files/unity_logo.png differ diff --git a/unity-base/ubuntu-docs/ubuntu-docs-16.04.4.ebuild b/unity-base/ubuntu-docs/ubuntu-docs-16.04.4.ebuild index 4a5eb0b9..1049b5a5 100644 --- a/unity-base/ubuntu-docs/ubuntu-docs-16.04.4.ebuild +++ b/unity-base/ubuntu-docs/ubuntu-docs-16.04.4.ebuild @@ -4,7 +4,7 @@ EAPI=6 ## Keep at Xenial as it's the last version that contains Unity Help ## -#URELEASE="xenial" +URELEASE="xenial" inherit autotools eutils gnome2-utils ubuntu-versionator UVER= @@ -16,7 +16,7 @@ SRC_URI="${UURL}/${MY_P}.tar.xz" LICENSE="CC-BY-SA-3.0" SLOT="0" KEYWORDS="~amd64" -IUSE="" +IUSE="+branding" # This ebuild does not install any binaries RESTRICT="binchecks mirror strip" @@ -26,6 +26,26 @@ DEPEND="app-text/gnome-doc-utils gnome-extra/yelp" src_prepare() { + if use branding; then + local -a files=( $(find ubuntu-help -maxdepth 2 -type f -name "*.po" -o -name "*.page") ) + + sed -i \ + -e "s/Ubuntu Desktop/Gentoo Unity⁷ Desktop/" \ + -e "s/Ubuntu desktop/Gentoo Unity⁷ Desktop/" \ + -e "s/Welcome to Ubuntu/Welcome to Gentoo Unity⁷/" \ + -e "s/Ubuntu features/Gentoo Unity⁷ features/" \ + -e "s/d2369e87106064d4c4ff65a0e65dca11/0afc24559ae1018b9433d2ef48e35a14/" \ + "${files[@]}" + + files=( $(find ubuntu-help -maxdepth 2 -type f -name "*.po") ) + sed -i \ + -e ":bgn;/Unity⁷/{:loop;n;/^#/b bgn;s/Ubuntu/Gentoo Unity⁷/g;b loop;}" \ + "${files[@]}" + + cp "${FILESDIR}"/gentoo_signet.png ubuntu-help/C/figures/ubuntu-logo.png + cp "${FILESDIR}"/unity_logo.png ubuntu-help/C/figures/ubuntu-mascot-creature.png + fi + ubuntu-versionator_src_prepare eautoreconf } diff --git a/unity-base/unity-api/Manifest b/unity-base/unity-api/Manifest index d6a9e31e..1b28ef94 100644 --- a/unity-base/unity-api/Manifest +++ b/unity-base/unity-api/Manifest @@ -1,4 +1,4 @@ DIST unity-api_8.7+17.04.20170404-0ubuntu5.diff.gz 10392 BLAKE2B 797e3f717b7dae7326da5f7273c66d8bd6c9644151838c5e1c63e322d089f69b96357a0466b8a35b374261a5f470c0a538f6f6601d4d91f3838812a4de488d33 SHA512 98fdb7885273e012003ee27a5f29cb744a4ec5918c72ce8edd96131455cb45b7ed7a403ab5c57b01d117d8e659380d064c11f027a30bf27d3d4bcfe73e3a5685 DIST unity-api_8.7+17.04.20170404.orig.tar.gz 134328 BLAKE2B a708ff2efc62fb2b3327eae0af48cb2bab11d6ebd617bc3c50ec375c2109a4cc215d0c5473cabc2095179f891f5c5412d9609a0fcb85f4c21d3ebe40b2801694 SHA512 e704b099383dd67523637994d623f0cb6a15aa5ad63ad74e32615fff3e708041e39fccc516a06b5ae02dfd51825f22ae99b2724b556ea899bf49b3b248290011 -EBUILD unity-api-8.7_p20170404_p0_p05.ebuild 920 BLAKE2B 2c49cc566d37886b9d77dada975b49da096582ab0f5695ab1fd491937d2e4f326b2cd8df66deeae2d135e7ff31ffcd888974460b9b8ab2eaa1efcc217112b717 SHA512 09b76c1fb937659e2436b78cf3c3cc35e89ff33bdcbc8b798229b54b0b6fbe8f4652ea1a5e33fd174cdceb3ba8847825662bd648480c9278e9372e5207acc7bf +EBUILD unity-api-8.7_p20170404_p0_p05.ebuild 919 BLAKE2B 8a68063274bda0ede45193a487acffe33806ed8e959730ff6d323ee2828c4024597a0e59cdda7836b1079a2345eadea636965404f45ea8e12b1bc3ce50e47e24 SHA512 6af54e32e8253526e0c38f1fff7d281185c401d328aaa6e3845b37ae6dad0a1a9c35f4bd24777aab47c1d37dba17f31693db37964556028877471001bc5bb8c4 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-base/unity-api/unity-api-8.7_p20170404_p0_p05.ebuild b/unity-base/unity-api/unity-api-8.7_p20170404_p0_p05.ebuild index f2db9b11..8a70e7c1 100644 --- a/unity-base/unity-api/unity-api-8.7_p20170404_p0_p05.ebuild +++ b/unity-base/unity-api/unity-api-8.7_p20170404_p0_p05.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit cmake-utils ubuntu-versionator UVER_PREFIX="+17.04.${PVR_MICRO}" diff --git a/unity-base/unity-build-env/Manifest b/unity-base/unity-build-env/Manifest index 71643691..5de426a1 100644 --- a/unity-base/unity-build-env/Manifest +++ b/unity-base/unity-build-env/Manifest @@ -1,2 +1,2 @@ -EBUILD unity-build-env-21.04.ebuild 1437 BLAKE2B 43d5ad0ad93c342438e4c8e70ab29e7e06c2960d67bc8a510575ab6027d169a6215ba48cd16147438e67281ef61cf42c0127c2096aead4631281b2e7cd088a9f SHA512 553eeb11eaa0a2502f86002a46343f11cc25b8d57e82545fed9e1b027a58535a0aae56ea836da65bb3504b5ed44adc481dd3585eb23d7eaebbb93d4bb40302e2 +EBUILD unity-build-env-21.10.ebuild 1436 BLAKE2B 3251fa254314ba98ae106beb6859068f7545581821b7efa933db014e9f73ccee32b43b32a495eb0850ddace1d3bf0a849dbba22351704f689bfcf128ae9ca581 SHA512 a84a67853f5c2dc3742103da14e0ac6927c1725dd3b2c1934c43427b4c347d805a01c818ca836452e8528c7391b4a72bfe4ecce7d21924afb1d98459da66ff9b MISC metadata.xml 384 BLAKE2B 374713db089966ddbb33ceb728a54f79dc7dfa06979efa43f76272ccdc494b0d347b22030a7c4100fe210b209d44bd8fece3a983315478a64e2180fd753e1a04 SHA512 4642fca460e0da6bd1e1a0a873376b1cbf1a38c846388b618182cef9211ca3207795124546f6ddfea37793273fb448502ac15e7bf7bf5d79c0d702a9575fad57 diff --git a/unity-base/unity-build-env/unity-build-env-21.04.ebuild b/unity-base/unity-build-env/unity-build-env-21.10.ebuild similarity index 98% rename from unity-base/unity-build-env/unity-build-env-21.04.ebuild rename to unity-base/unity-build-env/unity-build-env-21.10.ebuild index d8575c3f..5fa2766f 100644 --- a/unity-base/unity-build-env/unity-build-env-21.04.ebuild +++ b/unity-base/unity-build-env/unity-build-env-21.10.ebuild @@ -3,7 +3,7 @@ EAPI=7 -URELEASE="hirsute" +URELEASE="impish" inherit ubuntu-versionator DESCRIPTION="Merge this to setup the Unity7 build environment package.{accept_keywords,env,mask,unmask,use} files" diff --git a/unity-base/unity-control-center/Manifest b/unity-base/unity-control-center/Manifest index ca044eb9..635e5a6f 100644 --- a/unity-base/unity-control-center/Manifest +++ b/unity-base/unity-control-center/Manifest @@ -1,12 +1,9 @@ AUX 01_unity-control-center-2019-langselector.patch 178697 BLAKE2B 051669bcfc28749872795adde0d489d989c92c67a89a12b0fe45d0786040c179801f2f426df029982db0bbaed4fc79510eca4d65fd71b0e666efb5babf15ad4a SHA512 b4f2644ccecda016e3588589567302d23f0780c9bb212be2bdbce8efde3afd4d0d3f9b7c98ad6acf265f2c33a1286925f4b4ddd269b632a3e5e257967e6ae88b AUX 02_unity-control-center-2020-optional-bt-colord-kerberos-wacom-webkit.patch 11752 BLAKE2B c6334c1a2bbfb3aee91005dbe8e1a70da46156b6ae9340f1822a6f9dd34f915527537a74e35c1c22f8c39d2a6727eca57eeefac19985a4957a1b44df459b3302 SHA512 f752557c005b293c2107e60e843db1d9fc36e90d40068550dec62f3583f29a132160dd4f979adc47465aaa9f4e6275e6b4bee44424a886335b745d806a42cc55 -AUX branding/GnomeLogoVerticalMedium.svg 13340 BLAKE2B fe5c245184a66f3385f96bc174d0fbb8cd598831edea1dfacad9008b54304f35f9bec96b1198c2f6a9e943d08a5a895a252db389e9cc1f2c0dd3ce65681ef855 SHA512 2bf3297fd99433423cf481470ab1b67bc0cc127214773631c42b7369350e59ccc86bbb41110b970cbc7bc84080ae7683ca1f0fabde21497a15637b27f0f2bd00 +AUX branding/UnityLogo.svg 2111 BLAKE2B a8cc82a952f8d32c1c0961df3ecee0bb59ffff964f15c6cb14a8b68d611bb06d05287061cc732e4fb88e927a2d6bd6040c09a963bb02e2c0dc7654397e451cbc SHA512 b7b9a17f43f2bc3723f08c19776c37dbbc86d3ed468467d4ec542930314b4ff650503294969a9be74fac0ae77463e085d67606880364a29a9a6ab4e539f7a9a2 AUX unity-control-center-online-accounts-enable_passing_data.patch 3849 BLAKE2B abf775cc07c87c218beb269e229dd4cadc208d354b7e696a86d523e2a29e8a2c01fc86f2e39899de3f4903e1d1359f5afcdf2163be7e36add5c51b6150139759 SHA512 87c4d8c16db2f24570e05f12985e5b3dda4ea2f781560f1dc29c1a7ccb28c0f7238c7ac37f500f0ab989435950b4a7ea455f307fec4a33afbc2db12290cc3372 AUX unity-control-center-printers-fix_launcher.patch 2751 BLAKE2B 125cd3353fb2a159f423b3ea656f928cae05cd1e14989bfcfc7b7327c832956a97510a13640832177f3597a342f507b89c9e0c14af5535578f7da5cf81e68a91 SHA512 2e57137191ad16dbcc39eb20cc2f7ce629dc9a0c143b00701fd84644194d44669ebac7bbcc503d9e13da4277ccf1f679b4fd4f694ac3e8f55462ef15e3f04089 -DIST unity-control-center_15.04.0+19.10.20190921-0ubuntu4.diff.gz 16124 BLAKE2B 96afe5688177f2dacfcebadba5e79e48eb985abda98a92ab2ae1a51663ce257bfd728a60190a10dabdf22cf0c9a01c3e36ddc055f7ea72949942ec8dee910fda SHA512 2162bc9e9bc2d5e9d05b064a37b67258ced0683334101e5f1bab0fff55f850840e268521e277de519f322f083fc1f7c13be8bd037be315b7d6995edf38b5bced -DIST unity-control-center_15.04.0+19.10.20190921.orig.tar.gz 5302385 BLAKE2B 8aeee6a8629e255f330875823752a1954e1afb53b9ae6da12d0f789c59557689b21b8383b32ea97f80523894a09136aba414589f429a6525c0929955085ca8c3 SHA512 e167938bde701e3a5093f6dbc3a0b9a5e211bc14ce0e7f48484a1eed29320543413111cd25f6ece8d231c4bb475df3268a910f83b6e12eff9afa9dee971f24ba DIST unity-control-center_15.04.0+21.10.20210715-0ubuntu1.diff.gz 13697 BLAKE2B 8fe83ec84fd5ebcb5d2f4494b549b879c67b5e4d93ebc5e52e4650abfdcb102485eb30893791fdedde3c0db301abb8175dddf5697be2b0883108a4c520f83679 SHA512 f4020b597d3833405e3dffbb204eeb92a847603f3d5baf5430112a65688ef0b289d5b4feda210abb946043cd0b63eb02fb67c8867c944b165fad567380d54522 DIST unity-control-center_15.04.0+21.10.20210715.orig.tar.gz 5375020 BLAKE2B 1444d8f5bdf71446191d1abe6263be1f430aac135e672dd391c8e6344b23f03294e14fdbe3646c3ef11cc208837bff9929ea8f3594e23a1654ffb0a7a0284aef SHA512 49048ce83aac8b5c4c786653ba581a18cd78959f7037455222cda1b61005a141632eb1f5a20278bb444f9aa3947ff025b15c98d5ce440f19fe5940ba711be62c -EBUILD unity-control-center-15.04.0_p20190921_p0_p04.ebuild 7480 BLAKE2B caf5cf991c30f0d1bee3db544e3b5fbc334a0e18a8292dc89859d2bd4dfa31f78b7193fbfe8b4e24badca06cadede18cefdd6f8ee0c8886b114133902648eff7 SHA512 20b9d5a0d142dccc1e6c6c68b2c445bc3e5c68c1516cb5fdc9dc4efe58e1c6879616cc11551536c88a6d47386faecc9f7a1d2913507d4c79eb75c94fcc516f2c -EBUILD unity-control-center-15.04.0_p20210715_p0_p01.ebuild 7464 BLAKE2B db5c4f9fc30cd0073d87a20a872189f608db282d53a89b192f6217625eed97c7a84ab5f20ac7f72a8cba25500f7acd7950c7f68a29967897366b2991b93977f6 SHA512 57de46ed1d5b5a4db9b6b9d2fc286c9eaaebe09d2edef1556d54a5e8d99eb10aecf910fcedbffd55987143e9c2c48f02b9f5c88879065a253483221e8489b56b -MISC metadata.xml 658 BLAKE2B 878ecda415fa8195bab087d543339c0941a7e92fca93c6f0e0edf764db6a0a4bb1bf62b6967de7ccbff5d5cbb5d357d406dbf90a91bb482691f47cafacec40d3 SHA512 032e89ba37eb2172b4ac1f2ce8f7efc0760da97ed37c492fcd95f4659d15c2976fdc55cf3ed43b90b96136b517e9101aa0f9fa3fc0c957e7c4971d107fdaff70 +EBUILD unity-control-center-15.04.0_p20210715_p0_p01.ebuild 7556 BLAKE2B d1b4c8a038c05b75fc71465b0e74aade6a9fa2f6a23bd67275cc7dd3dff54d29d362c4b6980e6af9c015a5ca41a7401a76e8cab8253d49260ec1e577354a4314 SHA512 b0f78f91c4008c669fc3b0a37365713b127e73cf805918a96c2ccb4f08d5e73c7278a6a6e6ed304e486e1907b658de1c605c9231de7b7b1b3797cf910c7d0079 +MISC metadata.xml 728 BLAKE2B 7d74fce04d8445aa8dff6b5b80435eadcaf8a7af562459969c606a69e29494711e8320cfebb89819596cfe3c89a2d0b6b590130b7f373f06d75b98f360a45178 SHA512 c7ccd723883c3e696548e1dbff69fb3bbaf659918d9bb68a86a929e47fed3da1c02031ffc11a3d361c9f70b148fae266b2ff944f0e73b367624fef3329ec86e4 diff --git a/unity-base/unity-control-center/files/branding/GnomeLogoVerticalMedium.svg b/unity-base/unity-control-center/files/branding/GnomeLogoVerticalMedium.svg deleted file mode 100644 index cb8a96da..00000000 --- a/unity-base/unity-control-center/files/branding/GnomeLogoVerticalMedium.svg +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/unity-base/unity-control-center/files/branding/UnityLogo.svg b/unity-base/unity-control-center/files/branding/UnityLogo.svg new file mode 100644 index 00000000..051aba8c --- /dev/null +++ b/unity-base/unity-control-center/files/branding/UnityLogo.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/unity-base/unity-control-center/metadata.xml b/unity-base/unity-control-center/metadata.xml index 95358126..7095b475 100644 --- a/unity-base/unity-control-center/metadata.xml +++ b/unity-base/unity-control-center/metadata.xml @@ -5,6 +5,7 @@ gentoo-unity7 + Enable Gentoo Unity7 specific branding Support color management using x11-misc/colord Enable support for enhanced input methods through diff --git a/unity-base/unity-control-center/unity-control-center-15.04.0_p20190921_p0_p04.ebuild b/unity-base/unity-control-center/unity-control-center-15.04.0_p20190921_p0_p04.ebuild deleted file mode 100644 index 74daa1e9..00000000 --- a/unity-base/unity-control-center/unity-control-center-15.04.0_p20190921_p0_p04.ebuild +++ /dev/null @@ -1,248 +0,0 @@ -# Copyright 1999-2021 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -URELEASE="hirsute" -inherit autotools gnome2 ubuntu-versionator vala xdg-utils - -UVER_PREFIX="+19.10.${PVR_MICRO}" - -DESCRIPTION="Unity Desktop Configuration Tool" -HOMEPAGE="http://www.gnome.org/" -SRC_URI="${UURL}/${MY_P}${UVER_PREFIX}.orig.tar.gz - ${UURL}/${MY_P}${UVER_PREFIX}-${UVER}.diff.gz" - -LICENSE="GPL-2+" -SLOT="0" -IUSE="+bluetooth +branding +colord +cups +fcitx +gnome-online-accounts +i18n +input_devices_wacom +kerberos networkmanager +samba +v4l +webkit" -REQUIRED_USE="samba? ( cups )" -KEYWORDS="~amd64" -RESTRICT="mirror" - -# gnome-session-2.91.6-r1 is needed so that 10-user-dirs-update is run at login -# g-s-d[policykit] needed for bug #403527 -# kerberos unfortunately means mit-krb5; build fails with heimdal -# udev could be made optional, only conditions gsd-device-panel -# (mouse, keyboards, touchscreen, etc) -DEPEND=" - >=dev-libs/glib-2.39.91:2[dbus] - >=x11-libs/gdk-pixbuf-2.23.0:2 - >=x11-libs/gtk+-3.15:3[X] - >=gnome-base/gsettings-desktop-schemas-3.15.4 - >=gnome-base/gnome-desktop-3.17.4:3= - >=gnome-base/gnome-settings-daemon-3.8.3 - - app-text/iso-codes - dev-libs/libpwquality - dev-libs/libtimezonemap - dev-libs/libxml2:2 - gnome-base/gnome-menus:3 - gnome-base/libgtop:2= - media-libs/fontconfig - - >=media-libs/libcanberra-0.13[gtk3] - >=media-sound/pulseaudio-2[glib] - >=sys-auth/polkit-0.97 - >=sys-power/upower-0.99:= - unity-base/unity-settings-daemon[colord?,input_devices_wacom?] - >=x11-libs/libnotify-0.7.3:0= - - net-libs/geonames - - dev-libs/libgudev - virtual/opengl - x11-apps/xmodmap - x11-libs/cairo - x11-libs/libX11 - >=x11-libs/libXi-1.2 - - dev-util/desktop-file-utils - media-libs/mesa - unity-indicators/indicator-datetime - x11-libs/libXft - x11-libs/libxkbfile - x11-libs/libxklavier - - bluetooth? ( >=net-wireless/gnome-bluetooth-3.18.0:= ) - colord? ( - >=x11-misc/colord-0.1.34:0= - >=x11-libs/colord-gtk-0.1.24 ) - cups? ( >=net-print/cups-1.4[dbus] - samba? ( || ( >=net-fs/samba-3.6.14-r1[smbclient] >=net-fs/samba-4.0.0[client] ) ) ) - fcitx? ( app-i18n/fcitx ) - gnome-online-accounts? ( net-libs/gnome-online-accounts ) - i18n? ( - >=app-i18n/ibus-1.5.2 - >=gnome-base/libgnomekbd-3 ) - input_devices_wacom? ( >=dev-libs/libwacom-0.7 ) - kerberos? ( app-crypt/mit-krb5 ) - networkmanager? ( - >=gnome-extra/nm-applet-1.2.0 - >=net-misc/modemmanager-0.7 - >=net-misc/networkmanager-1.2.0 ) - v4l? ( - media-libs/gstreamer:1.0 - media-libs/clutter-gtk:1.0 - >=media-video/cheese-3.5.91 ) - webkit? ( net-libs/webkit-gtk:4 ) - - $(vala_depend)" -RDEPEND="${DEPEND} - || ( ( app-admin/openrc-settingsd sys-auth/consolekit ) >=sys-apps/systemd-31 ) - >=sys-apps/accountsservice-0.6.39 - - gnome-extra/mousetweaks - unity-base/gsettings-ubuntu-touch-schemas - x11-themes/adwaita-icon-theme - - colord? ( >=gnome-extra/gnome-color-manager-3 ) - cups? ( - app-admin/system-config-printer - net-print/cups-pk-helper ) - - ! panels/info/hostnames-test.txt - - eapply "${FILESDIR}/01_${PN}-2019-langselector.patch" # Based on g-c-c v3.24 Region & Language panel - eapply "${FILESDIR}/02_${PN}-2020-optional-bt-colord-kerberos-wacom-webkit.patch" - - # Fix typo # - sed -i \ - -e "/Name=/{s/Sha­ring/Sharing/}" \ - panels/sharing/unity-sharing-panel.desktop.in.in - - if use branding; then - cp "${FILESDIR}"/branding/GnomeLogoVerticalMedium.svg panels/info/ - sed -i \ - -e "/gtk_widget_hide (WID (\"version_label\")/d" \ - -e "s/Version %s/Gentoo Unity⁷ - ${UVER_RELEASE} ${URELEASE^}/" \ - panels/info/cc-info-panel.c - sed -i \ - -e "s/UbuntuLogo.png/GnomeLogoVerticalMedium.svg/" \ - panels/info/info.ui - fi - - use cups && eapply "${FILESDIR}/${PN}-printers-fix_launcher.patch" - - if use gnome-online-accounts; then - # Needed by gnome-extra/gnome-calendar # - eapply "${FILESDIR}/${PN}-online-accounts-enable_passing_data.patch" - - # Use .desktop Comment from g-c-c we can translate # - sed -i \ - -e "/Comment/{s/your online accounts/to your online accounts and decide what to use them for/}" \ - panels/online-accounts/unity-online-accounts-panel.desktop.in.in - fi - - # Fix metadata path # - sed -i \ - -e "/appdatadir/{s/\/appdata/\/metainfo/}" \ - shell/appdata/Makefile.am - - # Rename cc-remote-login-helper as is provided by gnome-base/gnome-control-center # - sed -i \ - -e "s/cc-remote-login-helper/ucc-remote-login-helper/g" \ - panels/sharing/{cc-remote-login.c,com.canonical.controlcenter.remote-login-helper.policy.in.in,Makefile.am} - sed -i \ - -e "s/cc_remote_login_helper/ucc_remote_login_helper/g" \ - panels/sharing/Makefile.am - mv panels/sharing/cc-remote-login-helper.c panels/sharing/ucc-remote-login-helper.c - - # Rename /usr/share/pixmaps/faces/ as is provided by gnome-base/gnome-control-center # - sed -i \ - -e "s/faces/ucc-faces/" \ - panels/user-accounts/data/faces/Makefile.am - sed -i \ - -e 's/"faces"/"ucc-faces"/' \ - panels/user-accounts/um-photo-dialog.c - - # Disable all language files as they can be incomplete # - # due to being provided by Ubuntu's language-pack packages # - > po/LINGUAS - - eautoreconf - gnome2_src_prepare - vala_src_prepare -} - -src_configure() { - gnome2_src_configure \ - --disable-update-mimedb \ - --disable-static \ - --enable-documentation \ - $(use_enable bluetooth) \ - $(use_enable colord color) \ - $(use_enable cups) \ - $(use_enable fcitx) \ - $(use_enable i18n ibus) \ - $(use_enable input_devices_wacom wacom) \ - $(use_enable kerberos) \ - $(use_enable gnome-online-accounts onlineaccounts) \ - $(use_with v4l cheese) \ - $(use_enable webkit) -} - -src_install() { - gnome2_src_install - - # Remove libgnome-bluetooth.so symlink as is provided by net-wireless/gnome-bluetooth # - rm "${ED}/usr/$(get_libdir)/libgnome-bluetooth.so" 2>/dev/null - - # If a .desktop file does not have inline - # translations, fall back to calling gettext - local file - for file in "${ED}"/usr/share/applications/*.desktop; do - echo "X-GNOME-Gettext-Domain=${PN}" >> "${file}" - done - - if ! use branding; then - pushd "${WORKDIR}"/panels/info 1>/dev/null - ./logo-generator --logo UbuntuLogoBlank.png --text "ubuntu ${UVER_RELEASE}" --output "${ED}"/usr/share/"${PN}"/ui/UbuntuLogo.png - popd 1>/dev/null - fi -} - -pkg_postinst() { - xdg_icon_cache_update - ubuntu-versionator_pkg_postinst - if ! use webkit; then - echo - elog "Searching in the dash - Legal notice:" - elog "file:///usr/share/unity-control-center/searchingthedashlegalnotice.html" - echo - fi -} - -pkg_postrm() { xdg_icon_cache_update; } diff --git a/unity-base/unity-control-center/unity-control-center-15.04.0_p20210715_p0_p01.ebuild b/unity-base/unity-control-center/unity-control-center-15.04.0_p20210715_p0_p01.ebuild index 7373d277..6f25fbee 100644 --- a/unity-base/unity-control-center/unity-control-center-15.04.0_p20210715_p0_p01.ebuild +++ b/unity-base/unity-control-center/unity-control-center-15.04.0_p20210715_p0_p01.ebuild @@ -17,7 +17,7 @@ LICENSE="GPL-2+" SLOT="0" IUSE="+bluetooth +branding +colord +cups +fcitx +gnome-online-accounts +i18n +input_devices_wacom +kerberos networkmanager +samba +v4l +webkit" REQUIRED_USE="samba? ( cups )" -#KEYWORDS="~amd64" +KEYWORDS="~amd64" RESTRICT="mirror" # gnome-session-2.91.6-r1 is needed so that 10-user-dirs-update is run at login @@ -144,10 +144,10 @@ src_prepare() { panels/sharing/unity-sharing-panel.desktop.in.in if use branding; then - cp "${FILESDIR}"/branding/GnomeLogoVerticalMedium.svg panels/info/ + cp "${FILESDIR}"/branding/UnityLogo.svg panels/info/GnomeLogoVerticalMedium.svg sed -i \ -e "/gtk_widget_hide (WID (\"version_label\")/d" \ - -e "s/Version %s/Gentoo Unity⁷ - ${UVER_RELEASE} ${URELEASE^}/" \ + -e "s/Version %s/Version $(portageq 'unity-base/unity' best_version | tail -1 | sed -e 's:^.*-::' -e 's:_.*$::') (${UVER_RELEASE} ${URELEASE^})/" \ panels/info/cc-info-panel.c sed -i \ -e "s/UbuntuLogo.png/GnomeLogoVerticalMedium.svg/" \ diff --git a/unity-base/unity-gtk-module/Manifest b/unity-base/unity-gtk-module/Manifest index 99b8272f..59463b72 100644 --- a/unity-base/unity-gtk-module/Manifest +++ b/unity-base/unity-gtk-module/Manifest @@ -1,5 +1,4 @@ AUX 81unity-gtk-module 427 BLAKE2B 5e5eefeae4eaadeeb6025d91104b316972ea8333ded6242c0dcf19c49c5334c46a424603ce3bf2caf728a7f24a2e7093e69d2fecf069083b4a97ba196a16c0e3 SHA512 29703796cd2da60bda8dff0fbcc7ab6934ca041a49c70a72e302ad1527604958e06f687cee7b94b09d9b2069f6483e82de89b1d4cb874c458222af5d98ef4802 -AUX unity-gtk-module-0.0.0+14.04-deprecated-api.patch 450 BLAKE2B 22b73ecbb03cd0a21e94f6502f1cbaf571e8c2fce39c914b8b4f695495afa51ee0b42e63cee5fe6a022b8349a4252da71b34b9bb14eb71006e70db099de0d9c5 SHA512 16ff39799d139ba2cfa8cbcc5736f34b7ff78a4136bd3a56f18a909dfc21492c879211e0bc63d819bb4b7e8e529a3893ca56dd3321237f2f2d641174a223c6d7 DIST unity-gtk-module_0.0.0+18.04.20171202.orig.tar.gz 63928 BLAKE2B ec26c5b2ab5e19e92fb6848cd38428d20167a5f3ac2367d0be186c4533340e64b206b1464033164a2cd712f73ea5b351719a427bfcbc2ae048ac55f4f4f444aa SHA512 6df4d36a49d4ad78cd3ab591219945e25617bb4e0a40143df0d5ddf515dfb2a71888e75d5cd751cf4aea5ed1642f547e1e57b0c140c6d9225608078fc71fadcf -EBUILD unity-gtk-module-0.0.0_p20171202_p0_p02.ebuild 1945 BLAKE2B 040e30c5d569ba079f7835927b824e708cd34da379dda64c219166f8aeddb4b11d8bd66e9ae42e980abc104d5feef92cba09805edfbadce8650accd19f0832b3 SHA512 e0dd969f1c40776804b8d7b73d7a89bb8767aded9f48d91ab46d89d69e6d6de6e0c41599eaaac0009b5ec19204444acd054581509edec3113b858270743d847e +EBUILD unity-gtk-module-0.0.0_p20171202_p0_p02.ebuild 1872 BLAKE2B ffaf1e9a3bc1332820da34dc77d42177099ef0384f47b07ff9330b59c6b6cdfde3c174dbcc0148cc739399dd786286f50e751c17182716d69d09e4a7d38d0090 SHA512 91918e415f5f1d45bb1ec36e72ee64a2af4bcae02a851d959a7f9232821fa7c380975636e13cfdd138e6445398f988d24f5e4b74e537b3cd187e387e371301c5 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-base/unity-gtk-module/files/unity-gtk-module-0.0.0+14.04-deprecated-api.patch b/unity-base/unity-gtk-module/files/unity-gtk-module-0.0.0+14.04-deprecated-api.patch deleted file mode 100644 index 369a9194..00000000 --- a/unity-base/unity-gtk-module/files/unity-gtk-module-0.0.0+14.04-deprecated-api.patch +++ /dev/null @@ -1,9 +0,0 @@ -diff -Naur unity-gtk-module-0.0.0+14.04.20131125_orig/lib/Makefile.am unity-gtk-module-0.0.0+14.04.20131125/lib/Makefile.am ---- unity-gtk-module-0.0.0+14.04.20131125_orig/lib/Makefile.am 2013-11-25 04:54:53.000000000 +0100 -+++ unity-gtk-module-0.0.0+14.04.20131125/lib/Makefile.am 2013-12-29 23:41:28.463576903 +0100 -@@ -1,4 +1,4 @@ --AM_CFLAGS = -Wall -+AM_CFLAGS = -Wall -Wno-error=deprecated-declarations - - SOURCES = \ - unity-gtk-menu-shell.h \ diff --git a/unity-base/unity-gtk-module/unity-gtk-module-0.0.0_p20171202_p0_p02.ebuild b/unity-base/unity-gtk-module/unity-gtk-module-0.0.0_p20171202_p0_p02.ebuild index cf088d80..d34c8ead 100644 --- a/unity-base/unity-gtk-module/unity-gtk-module-0.0.0_p20171202_p0_p02.ebuild +++ b/unity-base/unity-gtk-module/unity-gtk-module-0.0.0_p20171202_p0_p02.ebuild @@ -4,7 +4,7 @@ EAPI=6 PYTHON_COMPAT=( python3_{7..9} ) -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils python-r1 ubuntu-versionator UVER_PREFIX="+18.04.${PVR_MICRO}" @@ -30,7 +30,6 @@ S="${WORKDIR}" src_prepare() { ubuntu-versionator_src_prepare - eapply "${FILESDIR}/unity-gtk-module-0.0.0+14.04-deprecated-api.patch" # Fix "SyntaxError: Missing parentheses in call to 'print'" # sed -i \ diff --git a/unity-base/unity-language-pack/Manifest b/unity-base/unity-language-pack/Manifest index dbafe79c..0c79d69f 100644 --- a/unity-base/unity-language-pack/Manifest +++ b/unity-base/unity-language-pack/Manifest @@ -1,397 +1,242 @@ AUX session-shortcuts-translations-artful.tar.xz 7856 BLAKE2B 7db5ef822c59909997002e1f8a45725a7cdd0bd26f70a8c3db5e4b159d95e0c06891f2ea981a7001762db789fed88187ea388a7314809472ba5c641276accece SHA512 fc55947b6168d5526c46103cecca9a8401e7e2d55f2c76d5c1afd5a687a6c8beba057149649cf4ba6915105afb864ba615ccb40b013f363f0c0c85a72fcb0571 -DIST language-pack-af-base_21.04+20210415.tar.xz 683764 BLAKE2B e0ecaf16ec21aedf55bdfe3cb30bcb6164eb0d2ab0597e5fdba00a0e97a6e617750fc77774ac962d32fe6bd6e2270c80a37aa97ec3fe723c19b9a96ff058603c SHA512 70befe8ba6dec5554b15f352497a9506e584521beb0c52b34074126f63e70a70785fc5614bbd9d8f2b165a8a53edccbe9a355528fc73d2c8da9fb43097397236 DIST language-pack-af-base_21.10+20210514.tar.xz 687448 BLAKE2B 4d85b5a8110f3fa5c3305b8ad4177a1139658e79410da594ef69762e8003855758b91154be7c9e071af412978ee0b7c6e7e93dd5f2ebeb83412a832a35cbb1b7 SHA512 3804a463e3941807fa9cc8f2b96bb23e345dc7c39d9079c395dfc51f74cf87cb29bd8d5fe8705ac465da42d69011062a766aab317c040bcc3ab11904b7561698 -DIST language-pack-am-base_21.04+20210415.tar.xz 328092 BLAKE2B 8d24d3c992a5192d0dd913ac7195acc59ebc7b18f90277b39e3b8056a20c9001b3f1bf0d43e1365e39f498c89379d5dfaf5cb80d3094f19537c4188781ccde77 SHA512 a96ed7e572aa3e3c7ec4a05fb63e47a95d22a2a17f82d625e2281f9e89b41d4fa43499b18c7231841bb725ad4c89243c2a4cb50e0966800b9eac0689b0d31866 DIST language-pack-am-base_21.10+20210514.tar.xz 329784 BLAKE2B 1a3f990543c07d4e0cb0e9311568e439c07e14f60c84b6e9e9ced96ad77b1d9f630ed1767186217e2f8a563cf2377757499c76a3db77317c1c242eab31e6be4d SHA512 3e48aea0ed4849bd6a11a8b2db693403fd65b9bc3938057d3662c37ae83614efaf4d34fac71cb7e6c3e707343d96e8b6c50620a3ba7679d8e3a58201f3d7777f -DIST language-pack-an-base_21.04+20210415.tar.xz 27096 BLAKE2B 8935008d0a20e1b8a2f633a1688916b2d992ac6eeda6aefaef19cce9017abf631311f7e1e405e2356b8de4815e009885a2798bff21f56a53cf26450c101e4959 SHA512 a8a712b97c7f725e7fe1d6645e721ce4e6af42bc9ee9f6c5a57b46ebf4843017bc4810f8ac1608e4d91660eb61aa6e1249674eaf07d589b242f4cbdd7c2a64b8 DIST language-pack-an-base_21.10+20210514.tar.xz 27120 BLAKE2B 6d2ba033fa9a0020aa4ff29b06fbdefd7f9c5e7495bdcf2d1b2cc483c7430aec68020582e8b19ed8bfe9663a150570f2f3b4da1247416c520512585445f2db87 SHA512 b41c3f616138c6be6ac56e8dd0ca0ce37c00c0b83ed4cb9d57fa6fb0a29d1bfb814fec6cf936b57b6a00a4d9cfdd4e6855d3465d3f9d64f860431c6f8b316399 -DIST language-pack-ar-base_21.04+20210415.tar.xz 416468 BLAKE2B 23c6da3f1e52b26ae2506c14f89cc9e0603714fa4dab052900b0d9e0077b2ae3ed60a1874b77bf9edc28a1dfc13a31c8280a69181fbdff7a1ec2fc6642db04e7 SHA512 9521136dd96f73e2e8fb59440b80884fb7d12cc2a0d556d783df6fa97802e6a98fdee18313dd1112607f4edaf1bb279daa21f8ccdf67122629318877141a3dbe DIST language-pack-ar-base_21.10+20210514.tar.xz 416380 BLAKE2B ef3a163e204ae7fd5b2d4d8d2dff0175695667dd5291364260b73f69ae35bd8621177772065ae1d2133eb355543a974c66f71dcef0bf3febc8561a79bc7e605d SHA512 b18c651aaf984f62052391907119733bffaa45ff23a566cbc32f114827d6b03d41098626b226d19e9b2b7399ac233d390ff30bd9f0a0f6cfd7be1968ed97116e -DIST language-pack-as-base_21.04+20210415.tar.xz 118664 BLAKE2B 23650904f7ba2554cbd2a0218fb91afaf6d6bee5409174ffff51f1af4f28dc3b6b1305fc3f9acc9ce53535009541109845f74fbfb3b431b06de39827c0a930e1 SHA512 3fbb06d415605e0200106ab1da03edcaa51441e2f30af4b1c8cdf514e767394146d9e13a68014ea311d15ed0a7238be1bba51b56b1fe6d7025e8631973579805 DIST language-pack-as-base_21.10+20210514.tar.xz 118620 BLAKE2B 97caf67ee03d0d32df95c70d6f48903f2ff584d874bee5164924421d5b0f5e4dd90cd13b8b0b8131f6ecf7b0d68df5e0b7443330f546d886a2a05131784d001f SHA512 a9f524250cda625f01ea63639712eb269037e995d54f6867393f942c27b55c475b3e80795911fd2ea9ed35c4d501d5da2e25e5bc8d2a1ee401e7d5532d5a4e44 -DIST language-pack-ast-base_21.04+20210415.tar.xz 1639856 BLAKE2B 0808598179ed9764c30a8a95a44fe6dc9b6737a9fad347dc54c65bd68b5f8e53f9777dce16bed77fdcfd1b10e10dba0c2f82006519b4cef526390608813ab53f SHA512 c39577e5746c60ec531901d3fbef922e7055cc372d61974b95357e30e15ec9f7ee953917c4d80ff2304b90b376ad63d87035228ac2492359d8ce83825c122d5b DIST language-pack-ast-base_21.10+20210514.tar.xz 1644588 BLAKE2B da9c2e63f531c0813701735678af15ab4f683d5b88d97ee1276f73416d1f810b4a0d6b61fa8a67344b6ae729b2d3f309925026a2f11165dc5eac8429da7db9e3 SHA512 24d483e54c1704f989f1eb38b6b26a9b842b1eea9f90641295f03d9b9f1ab622116618c9b441caa209b5599d579bdce2e271614544633c4a84f014240de75367 DIST language-pack-az-base_17.10+20171012.tar.xz 248588 BLAKE2B 570eafd4710cd6796ddfd7d6c06b433ff9f696be08d5b4ccdb32da2773dd62c550b2f32ef9e3d4a08b19b803d396de7ce4168c4e39cd76a8e332a19f3c74ea64 SHA512 1a38d52e1229ece5004f520d738519ef84bc14f73001b93a5164837ada74ac03682ead7e37174680a9402115722df2c75ff32224e02ae64a74a7a10e35a4200f -DIST language-pack-be-base_21.04+20210415.tar.xz 1665968 BLAKE2B 5067483c686fe4e4f3907a618e2b101da347d2a5d2c2b2805fc7e7c70e0d873f9aab70681e27fcbcd927d8c80fc9a6c15c58a7eb17dd5b14a64971497883322c SHA512 3859afe9605ad7102e30ea163900f77aae939cd2637f81a92658a26456f82e25dcb9a21a52a52a48630c530d87f3c8ee1832aca70d978532767bb68f2118d347 DIST language-pack-be-base_21.10+20210514.tar.xz 1668916 BLAKE2B 3edded894f8d8d6f37fbfbf6ad5ad379cb75bb396f97afcfe0eff9c088fe650adcfbca208415106b54c396f0c6ec0660c864c385e88e1ebb01b26dbccb2be169 SHA512 ec07370217fe3c413b99473a1b247f6059f6def10e6a6505e99b223951945ee1e605aff3998bdc3d90506314041387985decd935ba01c836d3a0a7e1d6cb65c8 -DIST language-pack-bg-base_21.04+20210415.tar.xz 1531748 BLAKE2B 24d2178ba6541884959f647bbc189d403b73041c917501800b5df02a110cf3f7c0d6bfdd9bd2bf89cfbab57522be31ec1cc894420d57d630bfb908e91e08a12a SHA512 764d8a8b6742984dc06282f73e882f4bbead8f9b43dd61f7fae937f778551cda099eb287a1c94cf042dfe5f537797bd4ec0f06b36fef549ba4589378c69a3660 DIST language-pack-bg-base_21.10+20210514.tar.xz 1536796 BLAKE2B 1ec656664e0bd4a71f4b4a4cbd7fffb2e2de9a147d1e934708cb8155dd45dccc101d47f3ee02b573554713cb893009a46674ee44037e92a28a28af996a18e21a SHA512 813e0d54bbf5a464fb0d379e540a2af4d3972357e8c79f2fe779ab354bcdb09a70c0b5a92d51ca1aa70d6e3e88c3cebf71e29929a6a34cc13b5e44a5e42b8037 -DIST language-pack-bn-base_21.04+20210415.tar.xz 529888 BLAKE2B 536a3bc28a6ed64bc4883c5ba74de5be27fd39b5910e91c0eb7cf95c67d7761cf8c03fec276564437996c6695d5bfa1946117ca652f7a73fdb5dd9b1df8f3d34 SHA512 1c20ab0e0f35c2df8bfd2c210742f0e0b3f22fed8648e45a374cbdee57430377d8fb7f176db79f692541467d705fcff71a438cda24cfd10f98db16f6b4c279ac DIST language-pack-bn-base_21.10+20210514.tar.xz 533660 BLAKE2B 5a30c587601d85b5a42f67d7f26765783c1da6fa84d03ebbdf929c1b930cd2c4dcb9672fc1fc2f36a605daed4fc35a55bbc0804482fdb2530c5d9b6a4ae75e1d SHA512 6a255a00b7d21b60e67135a47fa503e3ad859be73c84f9a03615fb0471d09d0e99851b5d801e183c292b9423aa1eb8379a1b4d2a8b68417bba4184ce9d74b623 DIST language-pack-bo-base_14.10+20140909.tar.gz 88465 BLAKE2B f7bb1eb5cbadcc01a33ec0c355e4019b0d927e32c79ba98c8b1944016a8876263895e2c4cfeb66efd21329d58b6c9978472002e7e825927d7db4915715223e51 SHA512 9010d2c9e9436efafee65368e20d705a6d158ef92c9640c4de4511efbb2e2b00461034ec123a0014800103a2428e0bb02def7050f91fc2e8e067ed41cdb86b03 -DIST language-pack-br-base_21.04+20210415.tar.xz 503204 BLAKE2B 819eccb07e127d3729c2b614eef383ec66515c7d17fdb374043ae2e6c145791b3b29a6a1275bb5e9da97f594ab0aab73fa0aa5b500fa25babf2d603dad3d8b35 SHA512 c0aae56e22b8565db58a5b84c857052c6752c5964fb522fdd7d8f0958edacc26d6ee2b7bb79a072eceaa2b41e07a76a0681a7eba714110874f41f8a2127c8bcc DIST language-pack-br-base_21.10+20210514.tar.xz 505372 BLAKE2B 757ab49bdbf31691e2e896fac321b91517aab59f90803e6c8dc62cca80e27ccb255e2a82c19fa053c8439cfc932a70710a2ab0e33007edea75365416d48d3fbe SHA512 ea9f117f22690fd0396772dbad2f22507defbb5acb350e13a4ac27e3f81c240a1f0d340bada0f2255ae8dd767a69c29fc30f1b9268a7ef4c1d9c38e8b223d1f8 -DIST language-pack-bs-base_21.04+20210415.tar.xz 3258512 BLAKE2B d71e83ef9a277cc9c86e1fed31d4c2cb5736af3ed3199f8cf2fd6f899e270e53bdfe0f3428a4e4037940c75f12ac95304201aef5f5e7c406a162b4c7dc45ba23 SHA512 65cbfc4d4f98fbbee5c04eeb7a5e26c21554b6b951926624f6991247bb7e8256dec44339fbb820985d61223c0a4a574148e83f3b4c6c1ee6e323013aacc0e243 DIST language-pack-bs-base_21.10+20210514.tar.xz 3259684 BLAKE2B f2ff37bf52b6ec9a052bf895e72cc0a606d67b5ae99d4ce06d6cd96a4f2fe339236feac6d9c9d73377d18fb6f602a5578fc1535076deaf865d8c838d59f81f52 SHA512 fbe0b361c0062db3a45a09abbd994ff5db681ea78551d955f4862eb67ba2b923ce854236569d6b9575506f900705c8dad8bc67980180281c4334b750206c79fe -DIST language-pack-ca-base_21.04+20210415.tar.xz 2771752 BLAKE2B 93d392978bf32a21843fc3fe9aa13fe2e1fd672d2483dcd623a6763fc4e26510f23c8b9ec937c0e7c54f50668040f55bd45fcc497cf7544c3c86473fe8d13987 SHA512 527f74d0661ecd577c3a71c36f26b02124870d2598fe470038f995b621b556213c7acd6a697fe2279fe0e359c38bc73e9cdb123e28e20f131921f9260fd5ee1a DIST language-pack-ca-base_21.10+20210514.tar.xz 2774760 BLAKE2B 0228b4f29ab0b109793096d6ab7a39d1d71c0bad9e3ece62a0ae1af7a0a97c9f998adbf5fde2ef4169c505b41acf0e6ef9dacad76000e23b90e52215fee69252 SHA512 01ada13c6a06e9642f80d25081d8c39c4142b8a6c2cd1ee72fb853f64154436dba831b325433df494d103dcff0629c7bf6fd5f90f6634eb675b86b3ac229bb8c -DIST language-pack-cs-base_21.04+20210415.tar.xz 2185960 BLAKE2B 06d082076615c943b2583e95b4f7ff7a5953d58df9c2a028221ef3423fb1da03a716a418e2b054d9a9a5cdaf0c08fdd79fda257b0f0f6ad63bde6e111cfd3905 SHA512 95a153e9e6401aff65fb997d5c16764d1ca9e7add57969c1d775f49ab065265f7354ded54bf677ada10b2bc7312019afe1e51186e9de1fbfb69dc4398e22770c DIST language-pack-cs-base_21.10+20210514.tar.xz 2188980 BLAKE2B 2a20b450c69b1ea72370c0603ad844ba1b54ec1280bc8701a2fde38c984edaea87109a1a5457b324fbc35655db8b70b2b1718dba9bb32aa68ea1823bddefb08b SHA512 6ba6246029b607981adafa92a8e52a4d4f72c8ccaf7a355af345d592d609aa875071a432de8bb04694cdef507a8937c2d29b92e3b10dd553e31c460043103894 -DIST language-pack-cy-base_21.04+20210415.tar.xz 185260 BLAKE2B fec636706b21b2d291c813fc4b4d5d7ce3fbc52335add6295faa05bfd1da8c0028ab3e77491b5e43213a29fc02fd8a062b530cbe32d7fb87b75d4f68f46ce588 SHA512 44d761c89aeefcdc31cb7f43aa46e29a923482a28099b2452b91f206487f083ba4e0190f171a266ed6e748ccd4f2d4635cd69d6006663cae4f325b3ca919055e DIST language-pack-cy-base_21.10+20210514.tar.xz 185160 BLAKE2B adae4dd98db70ef3e1c26cf643d464f49020d729cfc2e39550d01fa023619b10d75d8daa7d486f5d8dff03fc5faab4d34212c8b0cf2ef278abab206d2a3b1036 SHA512 692c3e691024aebee62b3405cc50cccaaedaf98fa613e231822859bee5f790cf3dc45a7d20c9564d1c863269ff5f71a05214f0ac521807cda7a1f4a5fe120e24 -DIST language-pack-da-base_21.04+20210415.tar.xz 1958528 BLAKE2B 614983089d278320d0fd50f3406b8cbe204482c2d2d7310c38b53880cd5de6dfeda3fd0bce92ccf526b5f3fe2db30a1cf6c1a42c89475d2e9d2718d84b90d3fa SHA512 261be8a06b114307fdc11480297936e2c7c0b1e3449f29f4683378a73980bd7ddef5a0c6065d9b3539462dddede7658cac84c22803fcee2d3bac17c5eb38a936 DIST language-pack-da-base_21.10+20210514.tar.xz 1957796 BLAKE2B 617bfae6596b6274aaf32bb992cf23a75f0ff81e749f0eb2a2e80479d19d1b16a90c55ce9b9766d04752c8e90dc341dbc15625a85c5020b3e3b878c8815ff708 SHA512 bf879b31ef8aa67f17a4e40d54605ab18e40585251ffde988875f598e4acf1339b7e93594283b0496d3b471c3e00b6100a043cc7894652f5dc452698c31114f6 -DIST language-pack-de-base_21.04+20210415.tar.xz 3871832 BLAKE2B 0d8ca19aa5c3fabfc8a32bfb3416a5ef051b495effb80cc19ce80167e8345521d1efb081070510b13ccce1fec4d9f9abfb4a200bc01f6b04b3ca0a48943b5fa3 SHA512 990bce23a0c8d601a45bfabbabb7b854ae3badb5fce854858bba6e64ab2c7a7e395b77cb758258152e75465d1aaee774fbc7523b11d5fd29a1428cc6be4c8178 DIST language-pack-de-base_21.10+20210514.tar.xz 3877760 BLAKE2B 8ea28d9810d56281573ec0bb78bc4d71de07826669c5f63fc750ade5903d0e11f9219ed25fa40e43371a8a75692ee740a8fa219666b7965603ce79acd6668f6d SHA512 b8db5a7e69f0b270e7fc0fcb2d3b2433e2d55f0e3d94c35fdc1a9461c6f446a9613047026cff45e6247c7efe813d9d9722c300dce20102aeccbb546e15d9b901 DIST language-pack-dv-base_14.04+20150804.tar.gz 125329 BLAKE2B c855139539ba3a446f7a8a0e3ee4dd7dedb7c8d7f5dee9bb1de31d76e801185a4d2fc0a5d9bbed49de686af1873b7626af39ca0ec2a93c86f609ede035a28c96 SHA512 9ac55d7ad1f6f083081b0894c1f6f43c2f236db8f32bb60f127f67541fc59028c2847103b19fc94f141960eeeea0f2d145af2c2f4d21d2666780ecebed14cdcc -DIST language-pack-dz-base_21.04+20210415.tar.xz 180068 BLAKE2B 5533530da490cf902c942cd651448a65ad495bcb702a6144a9c5d747185746c994903cf899112aeb285f0ad16406aea54233291b800b41739b24f7102153d2b0 SHA512 0fb7baef59a595bc26e5cda4fc95dc6efb5ca321386b163e6813ede6ad0fe70ac92aac801bd04768c377f43d5b6ebea83336c148a7e71d36960767bb6f1da053 DIST language-pack-dz-base_21.10+20210514.tar.xz 182060 BLAKE2B c3afcec540568bba00e1570f4294c678c4e34fccfd75983ce7a3ffcff93ac013055089f5e5da8969ef6064d42d845c930e8ad862ada7fe7717a01bf8a0a58743 SHA512 ceed0214ed0156e510bd1931bf36207ff42a1f447adc9dde7ab869930fd4b1791c3902996da56f02ea171242a4dc53c708c9dcc6fee6f8b18113e5a6655a83e0 -DIST language-pack-el-base_21.04+20210415.tar.xz 2103908 BLAKE2B fb2fcd421ee320ffd6b0a2a3efc2c83c704280b6575d50879e9d4f9128d4718f14379b63ba8091c1b5c648d06e15d2ed891da340b9c34be427da92b3346a7c70 SHA512 b6b003ded1519a15a16a3d36dd5db4cf9967a41b6b49bc2b95de1b2278fa45024990d1fdc32d2aa396a4aad85685a94aed73c083659dd4bad905614f0d4d7a87 DIST language-pack-el-base_21.10+20210514.tar.xz 2107324 BLAKE2B c135d5afcd3c60b159b8533b062a8e1071f0cbf16f898dc08811f6e4eb5d7a7d5b0afc75428de062031262f3bee8ac0cb0a6e434d1918c232796bb98cec3be00 SHA512 c330c67e892409b9d16ea8924614f3671680d21e2cf7bf536498c3936a3efbb05b332a7ee0e2517348ad006d2b9f2242f3654c985017099f112a8ee9020a2340 -DIST language-pack-en-base_21.04+20210415.tar.xz 1641748 BLAKE2B 4d00ce9b33b84232849305b534a2e54ad611abb58dc0568dfe3b2a73b69c790822f4097598182b0c4016d8697ede2f3f6666f6dc2cfbaab63e5d3e7facb28805 SHA512 1fcb51c9c03218acda9859504212c1deaf9a72d73cf30678c0afb03e91f775d17eac59954f10db929ae517e8d0c1c1e610190e8d1dc90e2662d200b1f3ce6337 DIST language-pack-en-base_21.10+20210514.tar.xz 1645732 BLAKE2B bf51251fead27ef40801fa672fd5e8feedf3001ece0a38afc036e0cf27017158454ac6dfb6c44b22ca16c0fceda7e0998366998bf4595850f8f4012eef03ff71 SHA512 5f49fbad74eb0479fb862f2acd15c16b3f5fa9222f54dcb017d5371b43eb81ac1fec6ce95dd9e937c170eba9e52844e5212f55742546d2378fd1c50bddf1616b -DIST language-pack-eo-base_21.04+20210415.tar.xz 1070660 BLAKE2B 7ddc560dd6ee85da4fe3da733750469adf56d05e8b583cb027448f018be01962c7f2ddaac2b7309ddc3bfbdcf25d73ec4fc9dc832034979e98fa1c67c1f673b6 SHA512 27fb3e0388e7f39cde8a8ed34d5e48baf028410e91c1b48777830caa78f9e69a01d7c19f43e525decdec8a4c66f2ebaf6f201b100de839aeacdda19bafcb13d4 DIST language-pack-eo-base_21.10+20210514.tar.xz 1074820 BLAKE2B 6fe93defd955c471aa9cd2574470959a46e2dc5690dfe0968a40fb150137c165f1ab0640fce20a511b40e2d3941e694b3b09aa94658ecd84f2e37c9c092f9c1a SHA512 262c53ed9b407e488387271a43bde6766e031ed11b0cc842f94d0d7a9ad8430e812d68f1673324ad92acab324e5a919efe500d38d87ff7e296c6ff3b7a9384e1 -DIST language-pack-es-base_21.04+20210415.tar.xz 3656756 BLAKE2B 2f9608aafdf39547d8cd857dbb8f026446c4ae50189f05ec508539e6631b43ad334db310895d30bfb691784fb3cdb71dd7b04af9e6dc89ef9f9e1d03b3ed7097 SHA512 0a9f62ea4a1c3b0607d7dfe8d1a3c106dcc6db21c20b21a785c7961b911b5e04bfcc490557967d94b9bb8c1a764a2e987f3fdffc2b8f65fd1b9a1980ec5fbc1d DIST language-pack-es-base_21.10+20210514.tar.xz 3659024 BLAKE2B d0abbb88cd1de32cf7f585ad4b6d9f8c3b57cf236d38daf1414cd12d25fd10e6ebd5d815379d8e060a82d4406e7730c0ca256b8976c6c9247d2e4378ffcd321b SHA512 715540eb950aecdd6cbc894b15cd3486181ca6683f666360f0be0f4f9bdaedfca58602e54a5d3e2d577e122bef5543cf066d8428c3b7c63d0eae80f24ece56d1 -DIST language-pack-et-base_21.04+20210415.tar.xz 848240 BLAKE2B cca5003c8c6d38ba3532691119bad9b5b40453ccbb740964de6f73f6eae75674112ee188e4909da817dc135f61bb91b9783bde92f72a4534c8ca93640b171b33 SHA512 8d3f3b35b9183d9d516866ba6f2f396eb5bb294c736e755fecac69681df5a900e01ba091403cc95081820d3e6202d714bd75a977f06f95a3f846cd1ab5d15f57 DIST language-pack-et-base_21.10+20210514.tar.xz 851164 BLAKE2B 59294155d43f89d252fbe8d70d096b95c1ca5f61cf4551550691350a863bd3f83f88d763b08f351180571978bd2045e5b5f62d06781f2da7dbf1017531ac572c SHA512 8d7a616b8569b37a4a53916097339fb6350352cf890b4811782284332afae2b484b0f01886197d7cd25ae8c27a60dd11857bcc6cdb422204018bb7d5d7170049 -DIST language-pack-eu-base_21.04+20210415.tar.xz 1014740 BLAKE2B 89aab192eafa0820399facae3bf3aea7089883705ee722d8e542730541f90081ce8c5fd2a936178cd1c9e3b2cc57f8cc74a451bb8cfdfbda938494834293d07c SHA512 e186d4d8378481cf24ce2dd156993dffb88897ce1d4d2e3652e7b2d66a4a28e998a68d71e539c97a35f13b424b2997867028a1dd12ca2193c2d31d0bc2eed8a4 DIST language-pack-eu-base_21.10+20210514.tar.xz 1017868 BLAKE2B c5d6b524de4c87ebc851d068e920a8bbf14c5c825211357ff40989c26ccf868dae028fd6291e7c5a040ad3090b7254417ef36d336c801b16c52c5a1e35b2545a SHA512 65cfb6f4011733fdf8f2c47dbc95421740355e5808610682ceb43cd357b92a15c5046ba97d293bd994d82337a8292b785e0c63ae3a26d079eca66cb38d4e1034 -DIST language-pack-fa-base_21.04+20210415.tar.xz 174232 BLAKE2B a0bf03add3e0d73d7acbce520b09a28fb7b0d9fd916d6bde892bae559fb89fe0659be9fc781e712a136f4af4c0e30b3afe2aa69673b9cc593aaa861105d62bad SHA512 edafcf8f9d438ae854bf8037476766a716e36ad52271f247ce90d9442f16c2c0ba068874f76094e22c8ac0171a518935e08076d092d4aa371eb8d785a244f650 DIST language-pack-fa-base_21.10+20210514.tar.xz 174136 BLAKE2B 581770208f2d3120cd4b7259811aab4451f1b07073c13ec768daa0a31cfea72edf8ae0a8d833c3e302fb043b185eb6e14a59d2b5d9f1e4624736de3651c85a7a SHA512 b24576146eb2be03322c10cb1ffaba3a98975bc2713d3b19b904ad69f2223e0a6523ebc942162f486ec48447f326374f8a47c4ab6b1367823b2dd348e699581a DIST language-pack-ff-base_14.04+20150804.tar.gz 11656 BLAKE2B 769d60a6b1782521e4f0661940c3ae10e047103fe71e027c10c64d867dffccadf23f40fadeb6544cffe1448bafdea31a4151b5ed667d7104763a2280a09c3b85 SHA512 81d30a65784d15cce9722cc59e06285ef3812b7d595d5a511350417c237b6924145c4148babdd5c7d63ebfd2a564113fe26afe6e07fc8b35d71621efc364c523 -DIST language-pack-fi-base_21.04+20210415.tar.xz 2174044 BLAKE2B 61d433a5bbd2b522a27928e235d92cbddd7a07f949360da188088ef41c19cf504023c587d2f1d74af01f8ec0a1a52ea9a8dc0632e0418cefeabb91218ff66b21 SHA512 91047bf2486e1e888ee7843ffa860fd50a7fcdbdd230f6e2552573338ca7a5c0ea32b7c1a0184a117311827c62a931eaf95fddc4932f794566e794b16ba6f17e DIST language-pack-fi-base_21.10+20210514.tar.xz 2178172 BLAKE2B cea9fcc2df32a3e6d8c4f6d7e5ed2055a46e8404d7a35cfee40b4bea2fc7d02cacfd209c6b342aa87c10b3f68a268265b5ddc6500127953db3b631fda74154ce SHA512 a088016cbce4a9e97bdc227b42a64fda56dc6a43b043cbf1d86ba8da217c5b9f04b7e2085399569a8f27b0b06975c021312e990e027e79b77626d93929651a20 DIST language-pack-fil-base_14.04+20150804.tar.gz 96889 BLAKE2B ae50d1895d1dbc52e725532649eba95c5806371523ad440f97639883845850c8ba519de67478a3297cfca74efbe2438860a393320d11d4ae8dc2a21496fd4a95 SHA512 0c65fe256084a94db5a8ca38b8a918f94c8a4287d7be6e6c69814a873230fdb05ed354ec65fe59f6e15cd5f91e3a20f33412aac3aa06675d9329f29455c2c6d3 DIST language-pack-fo-base_14.04+20150804.tar.gz 372223 BLAKE2B 04d29dd6fd276fe5670f4108383d96e8cdeddb3aac8d2e84488693b9a05befe961fde3c72fd5f71768010ba2b86e28c8e963798ab21af8470519a27f2e9e4692 SHA512 82a04fc9f00983b1fce54ec8ebe60cec00bf5978ae10010bbebedddf4de719fe87950dc194d36d7ca7d6f8283860f6155d9801fcc95223d5b437e8aef74269d7 -DIST language-pack-fr-base_21.04+20210415.tar.xz 3657360 BLAKE2B 7251b4a6750bdea87478f38e91dfcffa75c21f4c7adef8aa76a4791e1cdf2fac18bf8b3832a48c579a2594dfae1df7257623c21c16339a1b17da882f6a7f13d5 SHA512 123d5f5656b97844cc5653ef46762f83fe15741a4bbf0feb8e49af5b7421a658fa633688d117d092486d0d288d886fe2c3fc8a5c7f4aa030be54cc319d904d6a DIST language-pack-fr-base_21.10+20210514.tar.xz 3659532 BLAKE2B be557f9805ca0479e6d8a5e13fbcbeb1fb36c6b22e34fc7aad0c878edfcd65e0d9aad50275a0566beedfcd8d0a2fb9bac66fc15762e8c86a06d3435b457bc643 SHA512 9b2eaaa95a06134aabe0dcc13663c2f92e67c93d3dae855f6c622cab1b98c5848e000a8b56163a0804e18b496ae0bc90c2f9debd5a02e2ee00cbadda74e5d61a DIST language-pack-fy-base_14.04+20150804.tar.gz 324839 BLAKE2B c0aa026f39b3c089708d18b0d0470019986ea8f92d68b13fb5ed71d9797a2cbf357d92d2fea4d1d5a128ae48aa8cc3b10173e8274f78ea2d84ae88c3559bfef4 SHA512 35f89f545e96ed139a6e985b6281509a71434d6fcd6f4458eaafec1f5386e3c5aecbe5823df7fe90a698e9aa9ecdea1288b3f410ecd8f990732854ce6340b17a -DIST language-pack-ga-base_21.04+20210415.tar.xz 480064 BLAKE2B 365449cc1dea057fefce924e85245afc0926e4b14374398314c8fd42e76bb460ff5c381cd2e8591b41ea451b8d6d9c89199fd9d95ebf17909c0deda43d682649 SHA512 7e05069f03ba0d86944d7f081fe4f9802540cd2264b93b3ecb5e5907496a4175296a2a81c655c48de4ca3d61eb6fd19c3451b24ecd44ae47954dff33c2747094 DIST language-pack-ga-base_21.10+20210514.tar.xz 480012 BLAKE2B a9790383f8a39ac8301b637a9ab4efc1a4e963df905ffa298a30c8dfd127f79f03a4c881cd6bdd7ee02a2a4ce4032e410f24bba49f750c6a536be90dee506e99 SHA512 d42d50d6fd6fc81d919d9572f8d164715933c872ab898cde9200c6f90e2455f279c0faefd555db7d33015dafef69da5e6e19f4b5208040a36db8e7c4cc55a6cc -DIST language-pack-gd-base_21.04+20210415.tar.xz 301184 BLAKE2B bbeb9f108c2cf6b8a9fc02768cf3e54df49eaa1a2d0cfd32770553fbb6a8c491b196351ba4cbe4cb196642fa9c6cde8c37eb1f5fcd140c5c09c4529e6ff35e27 SHA512 6fee0ee54237e02c1068ebc7ab8ca437002f27eadd2d03abd8df6dd4e292bf899fb4972d8f1e8da4fe39a8a272a558c68f07be1ae710634bb644992a4470f439 DIST language-pack-gd-base_21.10+20210514.tar.xz 303096 BLAKE2B bcbb67f67c4a9d4a66fa4fbdf42113e0791e05657092ae897d800dfbe6fa2feb35032f424dbc54479cee9115074f2deabd79876aeaec34610c0a0c1da807872a SHA512 07f3e7b266345b25bb0ba58abfddb6a755d0fa3937838d1bdfa700d2c83a9cf4c79e35ff423ccbbc75fc619b35b63984c8d8de86b5444cf84561bf4b466abbf3 -DIST language-pack-gl-base_21.04+20210415.tar.xz 2620740 BLAKE2B edee6cdcc51851f925a073808a6cb00685482a1da718e27fafadfc800fac2df855afd41b5ebb635614740e3fdc72f1d7d4edf2616fc2553e73a1ec27bfebb3e2 SHA512 7734e38080d037dae8b94fe1f818e435e88b2d9eb93b97613dff73dca7b1b35b3f21cd53c0edff0444c90d7675413d1058a5020e863c67ff81f59c8fb02f5c02 DIST language-pack-gl-base_21.10+20210514.tar.xz 2623208 BLAKE2B 0e24f7d355f23f0fee753b0372f2c6e9dd2fe37efcdea20da010852fb2685c3fbfffa591bee1db115c39ffd8b8b3e1791cc7d7058e80cefee2a1fee906502855 SHA512 0b186ff2a60883bfd2a858ba4db85dceb8dfde572b29b275cfe5c48eae7bc49f948d70b470f480f0490d6e44a4c49d61a442b1a0a4a5ad99c74ce55d9d98018e -DIST language-pack-gnome-af-base_21.04+20210415.tar.xz 1200712 BLAKE2B 8502ffc0992704e597d8e97efa7e2ee767108f3ec9a16f5b243f6eafc3d38c85640635b702d47633949cd0c3ec37f3f02e5e7ce51ecaf66fe03253a27660da48 SHA512 8d21022181c05084210550dbb77d3f776bfd16d94a09314c5ae10c56ecea2a85b4e99eb5b5478c24f594259f2c3c09dd6764b692cfb377e951a90e3bc2a35277 DIST language-pack-gnome-af-base_21.10+20210514.tar.xz 1174776 BLAKE2B 1def6a29026356b94f420b665b4c15c1af23f3f2755a3fb8f494bd1c25ef9b4870f5201ef60890c6a4406b4b79c9d50cea310d989871b1491bcd09382f66bd1c SHA512 81e9193dc118cf43fc653e4a8826c2b3c56092b8f8576164cc47f6dbad53d07fbf9b2a6cd091db0a59638d55df531d5dd5d16eb8ad9b40124e2ecdfcadcb9ce2 -DIST language-pack-gnome-am-base_21.04+20210415.tar.xz 818880 BLAKE2B 67eb432da2357e0945e7ba67334f8e6497031f50e07a9db3fcb99548287591aaae9a867f33a6e701c9b811290317065dc5aae8e6a344998ed1b4b9ed9a983c70 SHA512 9f905e3ce2df120ad9e154cacb3c8776ca1da6c8e64b149cd6144310cfa4cbd277ab122a2964c0e6d3aefd8d3ce1c92a2f4bc30162de368f480257312392b32d DIST language-pack-gnome-am-base_21.10+20210514.tar.xz 818712 BLAKE2B cd55e61d53a42078208544e697e281d7dac7fcfd43568ff96cd755a6a84dc2c571e0593ed8e58ae8fdce4c3d68457150e131bf736b40632aaed026a685b6460f SHA512 eac4f67bf869b065b4255fc57fb2859ed9611c0d481cbcbcdee65287babbcd1fbabd26e2983afbddd844e3e6d755d420aad3566bbedce32dbba28f868b0b309c -DIST language-pack-gnome-an-base_21.04+20210415.tar.xz 738588 BLAKE2B 26415fb383c996eba8026e375f88a7422320b6149c27add5a3651fba67118a1d76523a791c6d9b7c1b2d164b77329881728d55a3bdf28d44878f6804f20f8b1d SHA512 59c5b26c458a878c764773750cdd761ee09f9935e52298a47779a48bee2dea5f47f00e1352ced45a74a57b8584fa05c91f87b940bba5fb76c9624d852578f21e DIST language-pack-gnome-an-base_21.10+20210514.tar.xz 738380 BLAKE2B 71b3f0fda2c56a4a57ea11c6c86892cf2bae4f317ded24ffe9275bdee55e3fa784f83a5a7f9f9ba577a50ccbab706ef841fd250a527842329eb54e5f3a927802 SHA512 ff1c6c4fad73dfc376d74779a7152fe6c2bf5e8626d90c06ccbf77418bde680a74e8d70793d4c7c705a1284e503a82441cdaa94583e983a46cef63044b44cf47 -DIST language-pack-gnome-ar-base_21.04+20210415.tar.xz 1445432 BLAKE2B 23a622c94ca369b7b7b1e2848a4d431eb8af8cdd8fe61bbd06e5ecf83883675519626532f141460adc7373a89a50bed91c9f82120ae61653fdc5575a92ecd330 SHA512 c7fbcd6daf4a3c79b25d8748af8d8055277c72584e8c97eea8395a87c821e9794dc8c88690f7ba5be0d6db1db21fc55e80fe5ee3d162d52955cad81741b0dfff DIST language-pack-gnome-ar-base_21.10+20210514.tar.xz 1431060 BLAKE2B b1e10a8e020c90bb925f9ebaa5ab748c1b70f1c165d2f172ab3774c80024ab099072c856869d75aeb512662bb48c9ca590212d1b99521ce107b36a190304f3fb SHA512 a9d154ef51b83a6b21b31d260698b0a2febfb4a9d45289bc008d12483f991400fbececcf44afb819c6fd5c7193534dbbffc4bc7d35d35c51e3779c483af098fa -DIST language-pack-gnome-as-base_21.04+20210415.tar.xz 1028144 BLAKE2B 901f5ac77ad8e4984c4d9dfc7b0b9e087d7cb1a6f55c108e162ae9434f1f8a7d2046231f1b6b71bb6301c79cfe4dc6cd24e0ec5a4e5149de52ea537911aec28b SHA512 0933dd91afbab3e32605bd4309778a783bb2cd1bc1b6fe7e07d4ef74e6d0229389178b4424453d308d133fab834a3bd1e0b7e14dc5199c73d2917d026fcc361e DIST language-pack-gnome-as-base_21.10+20210514.tar.xz 1013412 BLAKE2B 48c5a45e7877add6161cd4ea26d8ee22e52618c4a6c26afe596477d9acfda32bd26d85d84383a983c3ab9abbc645a7dc10a43ac8e68cdf3bd62e222f32f93f57 SHA512 1cb5ab100dbfa6c6a7c349e9c029e2a1009ea7f7c2fe2e34b5030f97044240e124983c16f58be77d471a85828e0b82b0b63035bd243fc3693d05d7eda56cfdb9 -DIST language-pack-gnome-ast-base_21.04+20210415.tar.xz 1289452 BLAKE2B 6b294ebadec2b4c18845c4e727eb57655e37c636b02e323c4779cb77e08eac3617f76f59ce1ea5c220403d1ae07ee09c08b289fe9f420563e7e3cebb401de017 SHA512 e1d9eb74192dd0f277507cbf77443ed20a642dcbd55c91ec45c593e498df00dd30e835a1ad6463ea68232e262b1ee8bdf0233ef3113a16378cf6f372444db223 DIST language-pack-gnome-ast-base_21.10+20210514.tar.xz 1275480 BLAKE2B 4d4d894e2da11f0769f94e651757b40f01bf598fb85ac6973f01a30f5bd3858f137b095b815bcb659e00d9b68087307722710e85f365eec216739ca75b4be531 SHA512 d6a1628fa5461d848ff9e5d2b7a999b44049ae46add0ff39cdae1baef60112ad6ce6a32df4783d338742210f81564f4cdd5ed9760613673aee62b6f944989f06 DIST language-pack-gnome-az-base_17.10+20171012.tar.xz 915260 BLAKE2B 080b2f7e2dc021eebdc0ead86b4b9f1d8954ecf4e18a148a75bdef6669d4cadba2af2ac0afed1524fe38fec63117f39b172fca1629354cfe83174f1fa3a0f7e8 SHA512 ff0ebbe2af0cbbc4b1e14b1eb8dc4f5075ccbbc5e19e0d9588f2b5fe8cb1c3484bab375b9921530fb4f75395ebdbde5cba01bb10af626dd532bf46d0507d6760 -DIST language-pack-gnome-be-base_21.04+20210415.tar.xz 1824752 BLAKE2B 73d932c743435ebba37ba86ff28e2f895acf8e18a0bdd249230d60eaaf3677899aaa8ff6c3ac59e06f2d365f0a078d987b5489ca743cd8222544e6e085d0d742 SHA512 cee1a16a9bef566ed420089a15324dc63811f78a45f6ea5f201b345599e56c63576ed5103819def7eacae94286e4dd2dabf5165fe6c8295ab3e87760b1f0872f DIST language-pack-gnome-be-base_21.10+20210514.tar.xz 1807196 BLAKE2B 5af7a2b7f2c5562abeac335d130b2b6e4d162be59ce60324cc90491d878b088e7196d95ec853be180f190f281a2a49f027447bbf5d77d300c93de28c7849a8b2 SHA512 133d39ed26e88c6baadb480653c8303534827383f5ebe930254a3fd5a9b0a1944f98e36826f4681aa046dca65e22c097ba2b8f20f4d37628af071dd139c674de -DIST language-pack-gnome-bg-base_21.04+20210415.tar.xz 1792676 BLAKE2B 54532cf7ad225a23a91bca02e49700077712059b98446caa36ea1fc9799692af705217419f81dbc9760707e1be327058468e17c3d7f7de75e370dc28e2d5cf63 SHA512 74031d462a514b2d7fe90881faeb4a94de7d676e13e6631e52c42b9faad4a40fc7db5afdda9359e595df130c36f3f19048b8181932cbc75c7d8864ee36b46cb9 DIST language-pack-gnome-bg-base_21.10+20210514.tar.xz 1778020 BLAKE2B a26b41c95f90afe91c80ff6c53629539227c5ca578ab2674247456951fe6648beec5e6ed8488cda4a830a2ede558547b3f13580198ef9abcaeba98a123ffd241 SHA512 264cebe946267ff403ee5313269845e631707445b7f49e77ca76cbb6da79d83970720499ea684c903c93de5928d50010fb312eb45eeb18f0bebf34e1fb1da878 -DIST language-pack-gnome-bn-base_21.04+20210415.tar.xz 1042684 BLAKE2B e8eefe340a442c75153bac6db0e17806b65a89d1d35952269f4d353c7349817ade69a5290c2168de40e0426caa91e3562c533e638333ef68f229efd361628472 SHA512 8cbff26b0e0175ebacf672d9158e6a119945cf24db34c0a4783d8f91318583287d99ece5d3dca74bab0589a7fabda653f8dcc7675d8fcc100208ed0f5ecd01eb DIST language-pack-gnome-bn-base_21.10+20210514.tar.xz 1028136 BLAKE2B 0f9073a49edec23a502482184dd0f9875436c5105897618c8b7f5b11fd32e95389a53e7d6c89f2f597ccba3994a0e2716c315a5dae9a7a26ac7f2eeec0bd81e4 SHA512 2dc3fa7f014bd25840529868fc2dfd9a9cd926ab07726000f602ad7e954dbff4ecd64106c004f3c9ff64090ffcc4aaf0d168607db300215753c36303a1f9ca9f DIST language-pack-gnome-bo-base_14.10+20140909.tar.gz 640798 BLAKE2B 2d2724660072b590a981bfb00c55785310c8a370ddb91ff30502c3144fe8e37e7b74a8294689fe53acdd038bb3ee86105a3a1586809a581401a19dc90ac64cb5 SHA512 2520720109309b4c6832596bdbcfe139204b43cbab20a1bfff6dadcb93f0a11b062778aca6f8facc1c325ac0b67c94869acd97c5f2667e0100b7b71b02c6be89 -DIST language-pack-gnome-br-base_21.04+20210415.tar.xz 848684 BLAKE2B 76486a3bb8b61f91a56e9268f47847f12462f7730895b97135337cd27a3472a15322c87db9d4f21cd25a9e40cfe0a7df7dfa00444d25e58c70e8f9913d58518f SHA512 e5dea72173b08a81dd6180442cef6a225d145476bacc2ff02fd00d2606a1d153ef9660b7cc88cfe62edfec32d57c74e4e0abd196b3f119efe8d398f55a2a3627 DIST language-pack-gnome-br-base_21.10+20210514.tar.xz 848388 BLAKE2B f68b8f534a7b4f3371804b87d7d37b1d62b03d4cdbc82739f624a3c8f0a16ecdb11d066c6eb0b9c65a669c3c44149c7ec0f6bceb59cba4074573305a6c8b94c9 SHA512 e4b95c24a4920abca5dbfe35880c079c6c6c9052d7fc20b079968a6214a1aaec43601e455da484d6e50e0fb14d113e253044d891d71e0e40b150fcc07e3cc2d4 -DIST language-pack-gnome-bs-base_21.04+20210415.tar.xz 1628720 BLAKE2B 4fd428ec22f9434f1b3b82b1e7479e6d2130d28fa2b44aacac01acf8ead667a95026f9d69b3a48a330bcf33389d1eae961a82c85a29fd42f3c79df381b8fa697 SHA512 915734bddabfeb886adbfcf88140142b6cc2afe8faad237ff6a79ac628dc9ea0224dc2ef5df1e51b965aa296d766a9f4c1f3b715c3aab990e678481763d2f4f0 DIST language-pack-gnome-bs-base_21.10+20210514.tar.xz 1614000 BLAKE2B 73e554f958c7ef2a2fa5bc637e1b1c8c9607e2fc007c10065e9f93a510ff937e9488aeabf5e07931bd0190ea90ba56e14910efc6cbc314cdff8d3b24c634debe SHA512 1f42e4c00eee291bcbbe0da063c6a884304ebe9512f75d4b1efe01c4d793b9c8407654d86447beb96c806e2c95437994b69f28c577c374e0e69cd60885532152 -DIST language-pack-gnome-ca-base_21.04+20210415.tar.xz 3822664 BLAKE2B 3c69be5db3f5c0dde0ea224ed1fad3ee5167674d0410c3837916775b6561a7e3259367b169864db5f9e97d59cf9e797fa8e1e915a494639933fb30aecde304cc SHA512 2d2d4628eca893f18ef11a34c998c09e69fbee03875a0e7a4ed40dd1bbc4ee8d88a6dd348ec2b72f60065a5c6e676bf7f0a211a054e161d7017dbbb6bb029e55 DIST language-pack-gnome-ca-base_21.10+20210514.tar.xz 3793620 BLAKE2B 528cdc7b18b7edd9082e3f5bd5919d82b0262682304e4fc6893474b20496855e6b426ba819f44c84bf961b22f9549c5fcb19e786294ae64bbda2fd93f3b2b21d SHA512 aed0dceb1fbaf90a31a3dd661c25eebfbba00b89d9dc075feef483ae4387078cf8e52fb30bb6f0a23adebdd4c91b34114f76849de6f675f892b51f1956a85fcd -DIST language-pack-gnome-cs-base_21.04+20210415.tar.xz 3019488 BLAKE2B a65af76ee98d9bceaaa935ee975bbd91ce55066334b01f953d5ee5e2cf066624996ce661ef9018e2ebc9a23c20386f0957128b8a9ab63d4f7cb52a02584b678c SHA512 343ce60e7dc7c49b26dda87b4423778fa0b5f3cec3804893114fb48835c9926b2b017d488a244c8bc7c04a62773adb394b43e96b67e20d3ec25027f31ed54cb0 DIST language-pack-gnome-cs-base_21.10+20210514.tar.xz 2999168 BLAKE2B e95376e750b4ba27985b4608d4845e8e06ca7ca2e98d56468ef43bf5b3671ed4b5ab344b78dfe856fc85ef4c84e4f4bc4cb5dcd58f6f869bf916e05343c446db SHA512 a3037d4e3348245941475f1a7d77c02c001d0259997b0d9ede31b58731ce81072895acaeb53f1fedde878d029314f0c7a1e31a605122479cd6cac983e1db930f -DIST language-pack-gnome-cy-base_21.04+20210415.tar.xz 837952 BLAKE2B 3b97840977b42c3d2074f4fb2d9bd97e597cf34c2105a153467ac125e258231d27a542cb140bc29ecff26cb5a41295c742f5f08806ecd651ac3d1cf4d7fb2ba4 SHA512 10389cf7425d3f29db5267710b2cbdd78c4e9c8d10d8b561cf5eedaa781781ec1d7b10121906ac9b3b11c9343e5cbacfc6fb94b961b26c14f9c66e79cee6ae9b DIST language-pack-gnome-cy-base_21.10+20210514.tar.xz 823576 BLAKE2B e27084cf8acf0fc25a2b7429ca0e9ee5f13c6de2ca5344f85ea693e6fac05251ede8eaf3182451e4cb759137a40f2738a594a1f5aa5cd343731f79d91b4913a2 SHA512 b253608c314f25bca84f1e7656c4d1a069ca1f9031524bced3b304fe4b1401a794b38aae95adab99a8916ef09d4dc008aa3f3c54d6fa53eaf98b20839efe5c47 -DIST language-pack-gnome-da-base_21.04+20210415.tar.xz 2437164 BLAKE2B 26f4c721a01ecc0c7f54cb945daf5468c102a464ec8c7b0cbb1c4e49560e94955388c0d3609c9fe510acc665ed2b8377279679aa34da13d48b993040d4a11a4a SHA512 4c854fad74d53110d5bc53b73e47d79206cfcd23bc9ae74eaaf194fc915bb4c2595764b6610a7668dd888643c0bee7d891674077eb0dfd7ad12cf2deae469ff2 DIST language-pack-gnome-da-base_21.10+20210514.tar.xz 2450340 BLAKE2B 595d382921679b0865496e20ef2ff1628de5e437bfce53c3dc0b83e3285fab22e234ba73b3eb42d20e0d21d8f56b23a50ddeeaf73464e67de5c6c1ddc648ba21 SHA512 a047347c3d60bef9e39ead794fb299c87268f67ef04d549c3cf41e03575cf459a0011d684a9ad32d4da07a63190d8b7d3eb85656a5164d50351bf5ded7370544 -DIST language-pack-gnome-de-base_21.04+20210415.tar.xz 4112204 BLAKE2B 17ec4972dc0714c38b30f47132c337256817766220cab7aa00a6c9a100dae1cd1a09579abc10834c46ac887444a214afc4d4daa789f57d762c956d588194cff3 SHA512 8ea3d3ffd0252cd55e058d63ed94eb92318012137251fb6e8b4a7c01eb69d8b08b54702554ac3dd470cbd141c91a4595aeac20ee2aeb04741a8e58ef4fb4a465 DIST language-pack-gnome-de-base_21.10+20210514.tar.xz 4084472 BLAKE2B 41ce81eafe415b8fca621f915df6bb547d00a84ab2549d806dd106b6d917c4aee3a9f9c554f7b802bc814e94ef47b8ffc76705e9e6c380a79b8ac0e1384070f8 SHA512 3e25aa2bbf7e2a35078a5bd7fbcbe72c8fd57b1f05dd3e1e1f523dffa8c840bb3a925f51c6c4a2f77fd1f22278a545965a7164d7a24e12b30cb1d13880bb5168 DIST language-pack-gnome-dv-base_14.04+20150804.tar.gz 482538 BLAKE2B 3119f37d4f1f3419607d4507e6034150b0b807b869c4469d7f94eaa9a314d8c7c118e1ba7af50e431304877b259871fc42876a5ebcca0e3004a12e989531c903 SHA512 023169f936e3d0a6720287f521bc8dab7f5af7d19a0817e764e70c15c6bfde28f5754f0335b26aa3998da327ba4a7d9200634f1d70c6c92de3c8f7da38b41d82 -DIST language-pack-gnome-dz-base_21.04+20210415.tar.xz 941972 BLAKE2B 353dfcedaf870ffadde5e6f25b5576eec8c8ca834f946c2f7f37dd2d58c874d14d8d75f0c0b645e99ce773ff62d0ce42e171c3f625f014c479b900541d1f2f5a SHA512 82ac3be09e1c717fd19c9856cc8479716352a85c6f318bc2e2725f3de4f90048a8ebe2655e5ab40b36d927a5d81021f4684ca8b952a10251878929d69eb77078 DIST language-pack-gnome-dz-base_21.10+20210514.tar.xz 941616 BLAKE2B 8811c724b1f86312193c14a180c56c44e43e6cfadfb1d5890eb8b42068f9de1e31d564df6db43f449fe785d48801413297a52d9bf915632283cccd603d994060 SHA512 52f28035ddb0a02458a75926226ce1e24ecea1d02e3b1812bef83ed2b7d5e958c54a6637f4d005dd534f44b05dc0d373e04ea97d34997fb761e3c11d371a86ee -DIST language-pack-gnome-el-base_21.04+20210415.tar.xz 3431040 BLAKE2B 26a573f1141e5f5964d08eea8faa1bf3f6f6ef910e6184b4f7afd3fa7082f03cc789c41fda3ebca30db125807a02b5e4e7f802c3376e9446180c8f8eb1c11860 SHA512 05c46ffeb85b5c097c82c6e0f3f0b83de9d8b57c3718ccf26fae239407820eaf8f8f921214c3d5ed6ed944743886325fcd355772eacf06220b2a3417051853a0 DIST language-pack-gnome-el-base_21.10+20210514.tar.xz 3415932 BLAKE2B a297ea8350ba12d8eb094b47a1f51d3085d5a230d5dca4dc048bc27b772ee88bebc7e1afc869b0b2c32a50b235a500561878fc684746fe3a9e88b3b8a3fbee8c SHA512 1a34d872592c5be11334ca56b43fc41e4b27e89eca7903529186bfd8312559c0d3b21e98843b87ac11afb12c1bdb04e852b3886766ce6d457ee8937ac84a55f9 -DIST language-pack-gnome-en-base_21.04+20210415.tar.xz 1215380 BLAKE2B 5c501f984805b48bc505e9391ba94c84974d3f8e5026f6771b3d76f1121690b754bd2e98e157f19348e5a5c74f48737ac4725d712d25ab257ee9a9a2a96b4169 SHA512 4d082412ab751ae84fe909175fd96424890f68ccccfb8bb0d13fb7274e30ee5b9b7820b3c6075ebe541d0f2fe75ad770b8c786db4a515f1e08e8f664d656b480 DIST language-pack-gnome-en-base_21.10+20210514.tar.xz 1196236 BLAKE2B dc9693e6cb57828eae5b684c2598313220487b4fd8f65092db6359a9680a9f4b9936c6fdd25103ffb4e31d3baec229d93c84834227e760795a9d1cddf5f1a53a SHA512 8956c674a927172ff11c3c89094571ac30d6ecb9499300e251b1a2143f99bb232ee8301cffc307455145ad2a7b2c7233b82b25ac09660ce73132e93bbd2d0547 -DIST language-pack-gnome-eo-base_21.04+20210415.tar.xz 1479144 BLAKE2B e7a3fc3b297c89ba7efa4b7b3d6476fb24f27daf99a0a634a470263eb0e10e98c9a3b43573334f609f1eb4505b33e4729950f4d80a0fd5fe39458790c929e74e SHA512 5f442a10101bd320f79396742ad0c9acb231f6fe7faeed01aa637298eb5f85dc3f28658c26ad40fb35aa3382d0dfca57c2ab0b6c5cfe96641b867269c05f7dd9 DIST language-pack-gnome-eo-base_21.10+20210514.tar.xz 1464720 BLAKE2B 0f8dfb6d0e482bbbdd73dd714a1bb80f48baf50485155f8194095cc9701489cafcd277fdd959c6827c59841356a408e05c54b75507ea208b4c43f0b376a23207 SHA512 f1029d9a229bbd1495ca33ee1ccbb6e5af494dae34d8156652d8da6622b4f4379aa29de6ac1db643e5bcb8ab7c3ce5fbec6e1df5c64c9f260681a8ad79911614 -DIST language-pack-gnome-es-base_21.04+20210415.tar.xz 3453820 BLAKE2B f248183cc1efe66ed2c720618cba0ba635d638491a962c7ea47d270816eb77f7054d44b2241da5be61b26521cf97f21ad6ef1dfe5776ed8b0cc6a052fa8a9342 SHA512 f9829ae0ba1578db3adc198051157ef47b8125b93360938520a8a960a00adfe29dbff115468a2fc3972501ae56b74b2bb749056c632f1febb2e312c9f295a108 DIST language-pack-gnome-es-base_21.10+20210514.tar.xz 3428676 BLAKE2B c59c0fd82ca69108c2f860a9b3a561a7ed8324cff26103635285a8ea7818fa09701c5594660198574e507ff1e8a53211c22062441b689e09240fc624dd60c4ed SHA512 d05abb72fb4ad4e50ca7f4b7a81860389fb5c729bfe715bc15ca6b457fcd1e55081087ab44d12c282000c1d1a5facd132385232e137d6f251583851fff857ed3 -DIST language-pack-gnome-et-base_21.04+20210415.tar.xz 1292776 BLAKE2B d2bc27fc344baefedd3aad8ac01153775efb476d2bca62c97917afa534c4a94456f5648db5398f351fa38dfdf17c3e2945b646bb61347cfc623592bdb3f47ab2 SHA512 934ba152f78f7d784d5da9a37354b757176721764b1f4419887c9d0d17a5ffb7a1aa93fe91e2dcc19a20d99679c241f842881e8e0266e9ec2fbcf78fd215e446 DIST language-pack-gnome-et-base_21.10+20210514.tar.xz 1278236 BLAKE2B d8958079679d1bbac10308c8cda3fe061289b666062295d1630d1d4a8a9d77177c4d6633ddca68a4a5c69ccca55919d3a52ec6ad8da4fa76422de292ff0414fd SHA512 05656863e707183d9d8a68d6cc884b318526e3c7bdbd8f9346dcfa54ebaf4cb3b936f0cb7537737381a781a69ae95808a8a463b14ced489a03983d2d2f71333c -DIST language-pack-gnome-eu-base_21.04+20210415.tar.xz 2232072 BLAKE2B d565d86a22805dda85f426a74df40e77d270eb72382234a28c3c9eb9f6a9deeeba373fad6584ac8932f4cb433f04d0e8b162399c0da4478390e0a807edd55d2c SHA512 ed24b665a78d569516cc574e1d992506cda43d94524128333d9e6ce4efbf44296c0c5e7eaec16ff8c1b1129c9d7090f52f39b081abcf2edf777cfaeb2d12aa71 DIST language-pack-gnome-eu-base_21.10+20210514.tar.xz 2216900 BLAKE2B f35c4385a61e0ff187038db927deb06a35c7f391d1ec7d32855e7845a855df2df1831ffbeacce0fe546d4893f5a209b3cb88c44afb9541bf8fef34d6e259079a SHA512 39d4cf0ee4e8c7eb4bcbcc4704e9eda0588ed00f27a3a4053329837fbe4c14b5622cb20cc0ac99834b580c0e3bf2689688021a041b10ece226d550293242ca1b -DIST language-pack-gnome-fa-base_21.04+20210415.tar.xz 1236112 BLAKE2B 4b318a53be62247163223385f85095e00ba7538402828b2461328c3eaeb3c9b26f9a08eb83e5ca97a778163d4652ed75ce29122de159059497c272e052349616 SHA512 2938739ce7f911453691c82c1a9044e2f5eb1b673097fcbe0e07be65ec6e2b18d2fd158d6b3056ff555d9c730ea71e66f6f80270959b2029e72dc8427e972457 DIST language-pack-gnome-fa-base_21.10+20210514.tar.xz 1221508 BLAKE2B adf596dc1c66be98af8cfc6e1132051d83c3a433af85259dcfac29de347c0ac72c1bfc0bf7143b2932b019179818a0371146a37f7f9748d4bab82a270c951e68 SHA512 ad6cd6b143614aa7855d4641cf6422e4312dde818c6796a26cdd74a4721a134d82a8f6181c1d225ff313f1c56efddca484869f4212168a4fa99db5ff42edab3c DIST language-pack-gnome-ff-base_14.04+20150804.tar.gz 14935 BLAKE2B 799ae95ae95a0d901aaa72e65222930208dc9fd0a492b5a4540a210b8f91f3e91f7dac4c4cd4b864ab95f68b9c9d8cd1a3f91d922df5bc8368a534fe0c793c25 SHA512 87f15c2c01ec6476ad197fa2ff75fb9a3b2df8bca1ed0dce67acae4f424e4461bc3f68237218548577a3cd469c0a05708f953faa18a28fbb622698d6a5e06410 -DIST language-pack-gnome-fi-base_21.04+20210415.tar.xz 1957968 BLAKE2B ac150fe87f698538fb1364f016dbd823c3719ff013934aaeb51adfe6b5e23521c51764678c325321c4be143e06d16814df34d6baff5048b4c4e4b55e6e3d464e SHA512 05b665fe115787280cf2a9789a32755541b1529f8ed588b2ac5f843ca6f50ab212f76c60d0b2572533027150c426fff088685818ed6b72ba18455283f11fe9bb DIST language-pack-gnome-fi-base_21.10+20210514.tar.xz 1943320 BLAKE2B 373b80e85eb1f5f71defab43e95640b20c1f6e29b5a5059bf71f016e305abcc2e35a4c060035aa907a6688e1786633e47f3b6a91c9e07ca8d7862538b30aa53f SHA512 65f6f5536fd68db956d56d88589861865934420f21095019230c7e620168e5ac95a92abf9124abd6ea366e347eb7047bd1d9435d37c5ec8503c129244531ff99 DIST language-pack-gnome-fil-base_14.04+20150804.tar.gz 171944 BLAKE2B f2613028b642d396b07e86512d01ab4dd39dbfba9a7efcb91493b4e26663885742f4d7c1ca251dca03c50241a5024a7a2fcbb23d102ec11421bc1515a8abce03 SHA512 cbf24bb3192dd3b30ccda8895dab9d399a985251d69d11ec02281b2eb1dca4c851116c9fef5881d0e105076f7981dbce0d367162033b0b3994c4bb1c4ca8e71c DIST language-pack-gnome-fo-base_14.04+20150804.tar.gz 629374 BLAKE2B 594c49c30be85bc196ead820d989d478113e246ed83ec0d226a089f36ec6068bcc4601ffeba867b634a3303c4a5fd727d77b98e177a9e1ee4fb61bf6397e9d46 SHA512 ed9328fd530aafa9a32736403f21e64d25699c0acccb1c9c73f306c93804b1b2beb3c10235d41161e182d8815ead4c635ee264665100b5fc0d4b5912972d22b3 -DIST language-pack-gnome-fr-base_21.04+20210415.tar.xz 5185500 BLAKE2B 1701f7e5d01e2caa0fabc2241e721c6fe98b3a2d8ac3fc8fdbaca4ea5d0c5f184b7cde18a4949cf32ae4edd0c8df0b783dc67c7263ea25687dda9789bb254483 SHA512 1d1fb63db33440128157d6d73c13070e74beab0704fe05b4738014087659ff2ebe08adae85daf20781338c41897fa6e67ecbc8d9ec12077b177bdb3b3b2e93e3 DIST language-pack-gnome-fr-base_21.10+20210514.tar.xz 5169960 BLAKE2B e4d601f86c5a2da074e30fce87457fcca56cd9e9118778121fb3b2a0039a8d99677f269fcc97c3efc25a4f22abe65e26e9138e7cab069367143847ea8085a7d2 SHA512 6edcce203b7d7a6083cd7ce7bb53df8cc3eed1aa51b595f1879d6981dc98b53a54264a1674e9907362d7cbea9f20ff82460167daeaecaadca6b1b1d4a6b26639 DIST language-pack-gnome-fy-base_14.04+20150804.tar.gz 633225 BLAKE2B 505aceb469940ea6b3f7b0fef171f0f404004ab48b3abacd045eb2761cb8b4c63c287f297fcd2ab509fc78b34c6664e91013e9b99ae8bd674e91ac554535c955 SHA512 b29c302bc65e0fd3ab52535d8da7df7f95e6dec6a89f270f9cdb1f8806f98e592c2976b97e8bf89d76bfdd52142e1056489548b551a41d8f66567257d051eb89 -DIST language-pack-gnome-ga-base_21.04+20210415.tar.xz 1014148 BLAKE2B 418b41f639998289bf3f8ca7d6dfab6c07dcc2dc6c9bb1247736dc07375c8d47f6746e1593b907dc850850c2ecfb1dfc9b7b8552b31a79755c0239e23a8d8dfd SHA512 9d641a787c00f18a47d09fcb6f7f1821a0e10ea1b97a876c4a8a1eaf0b3f2cc9b45cad63242f6a315e34a01ae4dc0ad67edfc8f20c23780af2e9a82fa5eeb345 DIST language-pack-gnome-ga-base_21.10+20210514.tar.xz 999616 BLAKE2B bea1e521b18f0655ff5623e32c6dac92e56b1f1545d818a327b9002f7c32890e9cf9056bb4ff2b4b93b7889fe26de6ebf6ea26a28cc3d1aa542287ac7e82e2cd SHA512 2253650bd0807ab88fe643e07242e7afe9ec3a53170578c977606add5847a7e53b4beae95c01e54a024873457c5b000c2c63eb177e1eb702e8f1371c708f6ee3 -DIST language-pack-gnome-gd-base_21.04+20210415.tar.xz 873320 BLAKE2B 2fb07f2ba3413d9e4ea2f20e0d661b0105d45cc539f2402a47908babc1e706bb013b7a99d5be9d70ab5bf31477790387aae8974f835db71a45ee524b6da8a639 SHA512 73f8d8c2eefa9df0005f692d55214244d0642fa81d2048a75e2c18f6cd55ac159df5694f8e73d94a0f91f9c29193237cd7e64a1098d6a351a1db251dfd24a40d DIST language-pack-gnome-gd-base_21.10+20210514.tar.xz 858776 BLAKE2B 162f3977b7e849dca467e1e3c81c6cb4254fd76243ff00af616227be60ee9b6f8d09525592fda770c21751d689fe913045a7c768908c8dc8d11199fe7b26057f SHA512 aaecb88c8d86f06556bbbd77ac5fa74626386b268b42c3f46efe4e79bf8313153aab6cf810035e34ad865d1d59a56a494ae809d0e578ce680fb769b96163f442 -DIST language-pack-gnome-gl-base_21.04+20210415.tar.xz 2010352 BLAKE2B 940cc5008a02d54d3ffb76e31ca35f17d04c30369144dbf9f543dd9be44727e45f4ab035205204d710433aceb478998dce151e92afe74adc764cf744c09b7036 SHA512 27ba6cf2cda57f0da0cda2c3fe92ae2d342c133baf167b06e4b2dbf779243c047e6e4d2dd989ecb3540c4c8ebd0fedcae91b80c9c1e5ac6296b42a191c2f67c3 DIST language-pack-gnome-gl-base_21.10+20210514.tar.xz 1994908 BLAKE2B 0eddbd62b8d38e9c3703072ed4714ea30e307351fdc48fd8a6a5ac719a7d9a13bd2ce151bafd06384ca2a62bde9bda6ca37b805f3c697e5d212d16e05fc222e9 SHA512 f025318b7cec103800642958b4a4a67f99896e47b756545cc20fc226ca26d07ffbaf24a85eb2fe6985f94848b48238bc1f19c9c4c85db82ed96fe4267e89df53 -DIST language-pack-gnome-gu-base_21.04+20210415.tar.xz 1227388 BLAKE2B 4edb27cfb909ddf897a177e2a3a8f3b2d99c38633a1df9eda2ce593fcb1961316e5df1a47e50763a5241e5597938460685264c8da39a5978735f880ffd407892 SHA512 e431db0aacb7ae10d93af517cbe3e3b9fd258566788b17da9ff20636f05801fbcdab8e82f6c99c52604117c40f0ddd86d062094a989d63875d95d549e3811d04 DIST language-pack-gnome-gu-base_21.10+20210514.tar.xz 1227292 BLAKE2B 7bf9d85387a4fb6967bd6a3ce29d1683380c944bdb45ea0b41746a4f96e1e522f8abd875a9d533ab8de9be40dd95e85d98becc16c626e9f9e4f661eb95a2a142 SHA512 84640789964a3cc18fd97249143fe17ba91e0b40c72c4c0f982b863469e0bf344cc725ddaaf74c90dafd60eedb9ab6dde549dc0fc4ea51fc7605a0875c0ec8c4 -DIST language-pack-gnome-he-base_21.04+20210415.tar.xz 1449156 BLAKE2B 427e7239a864120d066e2739ff62be8b9d3d45175e6815fa55bd69d198b92f618b0d889b4d090cd657624f2d22e8457583bbdaa9726a3edb3f57982f4cdafd53 SHA512 f82c49c9f88ec85ef46c6986251ee7f2f2f0caf066bfc58e183c5790e9eb56b9ff1b82a6ba1c332b73dc3cba7db06559f603d8daa6f3061a6ee66150469824f1 DIST language-pack-gnome-he-base_21.10+20210514.tar.xz 1436304 BLAKE2B f6068d7b0c00fbefa1fda75d070be8ee4e25ac3293a06dd34db5eda52294b1f708c4d80e4d322cf150ce0ac1e695d680a0ce1160472db9db29c969e6e53d192f SHA512 294e4d3f9018a231bed5ef646d3b80314fe333faba6cbcd8f355fd31c8cb21fb03e3593c04bad0645aac95a5f21125e3e5f6e94dd178d9af5b1422560c6aedcf -DIST language-pack-gnome-hi-base_21.04+20210415.tar.xz 1378148 BLAKE2B ee421df4db6dc964790120d88bf286ddf4702fce2f3aa7ca69fdc2c2d83a97dd020e64e54a87ecd7036c0c53c9d06ec7ceea2485de425353d2d48f296e785c13 SHA512 ad679ed351a8dfab4eff95fcea9ffee3642820c1390f9387016d4856ea9dd2630e18b48a9c5798a13720ef03c254116883c35003eaa7236bd1426fdd2ac0b89c DIST language-pack-gnome-hi-base_21.10+20210514.tar.xz 1363764 BLAKE2B fe9d0fcc59ac6930b305a800e3838c34e087243cddd6976299e89afe1aaeeb8c040b62b71848f6623e142f6efdf9f124c9aebb418388c2026147148d78c867ca SHA512 bee322b95e3300d1188a475eb0d468fdba6bed18815ee94afb5b8b702fcee9cee4dab1e5af9258dce5d48e368e27e716a4abac238945417db155aa0b7cc38f21 -DIST language-pack-gnome-hr-base_21.04+20210415.tar.xz 1918064 BLAKE2B 5729b16b57ad2d53fd6359c1c237918d977e53518086b8f8674fac333b9ed87cee6978e7fe468275b5ee9133283dc2756aa10cd37a1f2f2d38be73ecd17b1e06 SHA512 81efcfdfeaec3c7f79aa457404fd05e3b4ec90ddfc15db3ebd103af905ccfe0ee19b443271063d2488f49c3eba80a86cc37ed913730f78c561c30c2a1ba97c46 DIST language-pack-gnome-hr-base_21.10+20210514.tar.xz 1891508 BLAKE2B f1f36b01610d2ad7c5ee98bc09edde4bab21d4f0b5fcc0c71f522caa77b7b67e25b3982fa994db716ec627a19b962dbcd69dccfdd7fe1262602080905f93170b SHA512 c13be2f65333a78933679fd1cc0f9522a2a1bc6d97fbcf4fd06957a3c32e116f216161a98000b09cbf2f8d951f0175dfe04b851ad6ded38e61a5462445c4085c DIST language-pack-gnome-ht-base_14.04+20150804.tar.gz 27703 BLAKE2B 5db43adb5a17f23fd90b67d23f4e74e708d5f9e112b0edd83b67831b9df21b293f7a8f34c171f46de2f02f2fa2eaf88a9be94768945995b1e9426f388f08c44f SHA512 ef3f3f5862b88a47ef1d3bff5c0f2bec1ec2c6d774618c82e58dc117e81dd96a945e20b9228ec35449b31aca9aa2cd8a6db65d585853edfa5c56d582f9337559 -DIST language-pack-gnome-hu-base_21.04+20210415.tar.xz 2673048 BLAKE2B 7485cad0def375d98f0c3a0c43462859b28d4d580166219bf50e04e1356f837c4921e0e6a8d15f0471f7b68c0d23e402ed7e4e4f4fa9b2cb5642c6900571bccc SHA512 81a62263bb16bd711999c2de9b23d9f7ff215ad45fa10c95ffd792b010015c2dff67d17e6c98546f7016c1cabb94d42c61d7ec6912e5b5aa37207ecb08047177 DIST language-pack-gnome-hu-base_21.10+20210514.tar.xz 2658204 BLAKE2B 06a9850890acf8d08c7dea9e008dd103c73e1b527525532ae72a899592fcd602fc0c35ee4b3a8c50c4e2f3a655b5cad67a770bea3429dd3a79a6140be2b77733 SHA512 7a3b58e21a0ba3d2684fe71eab15857ecaf1c5a2a7130a515dcc19402b80e449a0109510cbeacb8cad76088a2f127a553f5b3ac20bccf6c6bafe2627f7188302 DIST language-pack-gnome-hy-base_14.04+20150804.tar.gz 967760 BLAKE2B 508a92db2aa340ee888dcab65ca11743aa1bf53482ab476fc82bde8ccd626aebc7cbef5b12e931da3674859ae1e90e0356c3b269ce0435181c1c6dfb52373512 SHA512 9630563b80519b754e8c10ed54371d81541643bfec0990915563b236cf211cfd9e8edca7cbe238fbbd460cac33ac56d93c8a3af8410caa557f0eed56b9112e5e -DIST language-pack-gnome-ia-base_21.04+20210415.tar.xz 827428 BLAKE2B 73580da1792e6e46bbbe7451d0cbc5f0a2a01cfa632637a4ae5a217c9265abfb379b551ec976748943bf49a5d4e0a98b4f23cbdb9cd3a46a71e50d4eba939251 SHA512 9bff173f244296add3a8148a9cd55e1ee7a754e24e2ee5d344015e345b47292a0715e5dfa962dea782d4d899a50dcc4daeda6306db8cbe5da23c01bcb5bc8f1d DIST language-pack-gnome-ia-base_21.10+20210514.tar.xz 813044 BLAKE2B 1fd9be47ba2deb5810f69a4acad24d7a8871bcd53040ae8c99909aa25ee909f7f7db7c5f716c047f32ef50822f1832d9b06089a3d3eacaaf74000dd31b4ea3a0 SHA512 bf5d4ca1475bab8662ea78bf950ccef4fd96d44d68aba9bb98a9ea6ea8c0b454e6353c14c4af862ef12b577795d812b2c4e48a6a4403bea11edf3b80a643b210 -DIST language-pack-gnome-id-base_21.04+20210415.tar.xz 1889028 BLAKE2B 3d47dfa1c14329e952da2a06bfdc9888f8d47f84cb4f8b6ac96d7800fdc4bcf3b15be519cc9786eb78509acf2951287ceb01800187a7fe6b76fabcb2eb5d347f SHA512 43ec89d20d4d907b082980866b7031e9b87661f98c17de1cba9a43a98e4e3f52e7259dac10518b13f3f90c3d71626b035df3397e2440cf58a8ce533b9e7bbfa7 DIST language-pack-gnome-id-base_21.10+20210514.tar.xz 1873640 BLAKE2B 58adc75ab8588d9ccc499428be223579e358f4de580e025df16e7ea6d611371a8703270d128fdb80d7fb1be682d9e8d89a757cf0f1122543f964b93ab629f2b6 SHA512 c12e16b5f9e300c2bedafc2da51387d9e6cd363e15fd430d76803385b57e928e669e792a337b1644a8c38222c1e045f31422ae333f28ea76b1cb400cc2554e93 -DIST language-pack-gnome-is-base_21.04+20210415.tar.xz 1180836 BLAKE2B c0fd909aca0a208d74c783e8495d190aedc4ceb57ffaf54cf215c4c7eeba75dababd8c1f5df27374971f6c910b96435dd5334f92a1e01dead3d144a28be8e48d SHA512 0cfd0ccfcd4430d281f2ab689946f037109750f372ecf9798d0a2c03806156166729226eb64c4fedc30e52280de1ba60a33b19a1c8fc4bd8db9e81c40fab32dd DIST language-pack-gnome-is-base_21.10+20210514.tar.xz 1166580 BLAKE2B d62ed43c7721c73f1bcac953cfd0c3d36c1a6d4cf70ea1a4224ac58ae1de4d37bbebe47799cbaec0c7ab7046b4cfbc5352f5eb73d1b009e98c2d26be8e426869 SHA512 5d74ddaabcc35e27e7bf64f6d2c4451799972294c47bd75c363075aed602fa5c837f7559c4d1d015b1e9496ceaf7f4f23ec6d630a09a5c94dee7c01fcb25e364 -DIST language-pack-gnome-it-base_21.04+20210415.tar.xz 2118012 BLAKE2B 716aa5e488982d929eb0bd0e09485c7b540b4b8e2491885f0157ceaa10785ebff255d63bb1353dd03c56753f345f068488b2677bddc556e1e43feec2403bebf8 SHA512 f8858f29fd9c65a119efa592678addcafedf78f3c3032348989f8c7ef5b1b6f4f9ccb5118ef68c9216e55845ae32d6df324839003339325baabe4b7ef3695a25 DIST language-pack-gnome-it-base_21.10+20210514.tar.xz 2103548 BLAKE2B 14cc1e834aec770280cb8b63974ea5fc1714444acf8df2c46539feab56323ad0d2b9c303a64d2b69c1090465770c96d133ed0151439ff9b7bd6bfabb45c24b12 SHA512 b756e44628d87831fd636e09a9610ad6276f9f9b6cf52b7110e0127def3ec463f3190b8986e989fda924f20102b6f3f9a09771f19bd5b76124474cfdda555719 -DIST language-pack-gnome-ja-base_21.04+20210415.tar.xz 2247504 BLAKE2B dc4fe7b82f7164ed16d7246815afd90b1a26bd222fc143b6ac695c790675f889f2ea77bcdad0910b8c3143be12e9482b6039443ac15c658104e9959770828d53 SHA512 74a16122f7c3ab35eacd8689751ac541cb580dada63ef5b948a94894d55e7366996a27376112f09e1588839c7a2d72edb2ac5285ae53c545c43a333752350408 DIST language-pack-gnome-ja-base_21.10+20210514.tar.xz 2232832 BLAKE2B 86c8135e6ddd4de53e44a17b5bfcdae8f3de4e5ff12f66d22619706d5891f22887389d52afb080de3bd6a8c6f781eba6f2689ee2b404a4888973e46086e54317 SHA512 a25a2a179af0d962640d9066b5097cd89b05786efccc93655408ec5c56bf24c27442043addf61c6f076da6a28e0456a553d0bfc9f4704fbcea7253d04a4c082c DIST language-pack-gnome-ka-base_17.10+20171012.tar.xz 807540 BLAKE2B b23c5bedace74250e003e47ef3165ae2a859e671f9fa34416e08dc8e3215f08da698ab20fd34505493315e090f7973b9d69c6fe4ae30d9be835829b3ed4ab3c3 SHA512 18386b0f9e29f51fd6b93941fad77e190a58d663c0e17bfad40d5b0a76eb78c9f67b1bd20263a86e753092a570871ad937d7a64aa9877d06edf1a320e354b3ad -DIST language-pack-gnome-kk-base_21.04+20210415.tar.xz 1208632 BLAKE2B 227f8bc253ed34bfee239d68e89c871f47a1a02f16599ecc28b74556365505c6ed6104a7813949f4c6801455e2815b5711745cf6a3e3fafc1140b5ab39734880 SHA512 add4de48810ddaede7819372a7be0d62264197c43ed45dba9d5ae3ac2cac47c8eebf72ac7049a7bbe8a2ed40de3c0e8548b8a4f7e26a5280ea1b01a7175462f3 DIST language-pack-gnome-kk-base_21.10+20210514.tar.xz 1194072 BLAKE2B a7ddaaa4ceaaa1a55b57d58623e7df6ff7eadb49f2e656df551d8ee48f4c6c9e01c88fc43d4f1b2691e15644a8b1da72fe67c4a0bd29ef75a6613f029799c55c SHA512 9978583276f46db8631a862237a04ea753536a3abf40948c03b4897229e6946d4d858968c38b36b5a9bdf3c62ad373ac26c17ef63a793d2cb1091268008209a0 -DIST language-pack-gnome-km-base_21.04+20210415.tar.xz 1265848 BLAKE2B 838ca3dcbe516353a58466f58b1ffb5e22d3a4c4e310afd3aa25eeb0b50158ab09503250917a47ecba14df938eaf0745330987539aaf17eacb1858c09f017c12 SHA512 b96b715a1338a04332c271a28faa1952a2da65fd260a36154990e892f9b7ecd35d1a4b6a362b3560c4252130e56bbf325fe86f072f532531f8b8f35ba4dd5494 DIST language-pack-gnome-km-base_21.10+20210514.tar.xz 1251516 BLAKE2B 5ca34a49808c7dc8f1a3d29bc40194bb5dc9bb4f39d84c496acb4654ea18c1d0bf63e27d3430b43f5928f03a0bba79810dd27328285eeebcc4df799277ec17bc SHA512 9a6a29b358ca6e83a569cf8c2943221f65c50da65b05885f40d56416c54fbee79a0e1989630bae092852f77c6b31a08e759a7b5d4884eb4f8b130b0be3d0b20e -DIST language-pack-gnome-kn-base_21.04+20210415.tar.xz 1242608 BLAKE2B b737532f17b10f7560d2f1a93eba67b8404151ba1edb63d38c8a58634e7130f8a7574b49e0eda0ac61a39f89be86ba97ccc22480952e62162ef521f3025f965a SHA512 54ecd8438b2c0b22bff289afe618aae1616f44c5cc5998ac8e62e308f3a99a62ce04fc181d8792d418de9f0ec0ffd815a7f40cb9368bfe1b84e4c124cb51fe86 DIST language-pack-gnome-kn-base_21.10+20210514.tar.xz 1228200 BLAKE2B 196ca1b0753fde17ea45c6da732120fb61b69d02ecccc96230dd51479f73724f4eca19f24ee3654e6eaa4049fcfb4b202ae1eea0d1fbe1491f85799fe0cb4f40 SHA512 58ef579c778b747fbc5665567c090c70a5df0b2e7043aa47277c5d6bfa868cb7e0667dbd6e6d5be39e11187804fa58ed3e59386eca4c6709af1eb128f8446dd5 -DIST language-pack-gnome-ko-base_21.04+20210415.tar.xz 2112648 BLAKE2B 74b437a2723e555dd243302f018005b8fa1b3ef6d6e34fb3aa8703f4c6028eb67675031c99587bb41f857d79bcd642504faec68d600a1549f8ba8f1402ce356e SHA512 a962f87a4bf16619e98c1a587284bd72dbfaf70381245931962befe692e1bed6ec98c2048a44c126b5c57e9305838a17c1d42ffdbe5f13d0b88fa64f46bb4faa DIST language-pack-gnome-ko-base_21.10+20210514.tar.xz 2092744 BLAKE2B ab450e19d1beb293911f2ce6685934d7560e9b91be50603653c90295d5cfcee129d6d70cc705ad6bd7d6faac26027ac3344b08ba7fc856d405b223bf0631319f SHA512 9bfd4d910ae812615719cb8d2dc961c59cc76305d4348617337d93aaf755e81f9b8bb7c3b70be1900d4306f5c56f49429a6f4d5c85ffaf7e117822f287d7b7d3 DIST language-pack-gnome-ks-base_14.04+20150804.tar.gz 30678 BLAKE2B 0a98e4dee09b3b9a063f44b9cd3365ae20efdf593803b358baba907cbd067d3ea7c941e742e1aa8c7d16bd89b2d751dc2884fec21f0288d3c7a7d3a2209f5975 SHA512 237ec8f7d6667c3d09ca844492891cdc705034c2d7027207b00a98cfb13473ee5b7ee514f9a0a7316fb275567727060e949fcf60bafddd10096e599b2d801f36 -DIST language-pack-gnome-ku-base_21.04+20210415.tar.xz 957484 BLAKE2B 9bf18dcfe3ca7c7b67d1ab204683113e0b52418a7ccbe8eeba01a9971f6b937cf2e31109524586837f58f80f878eaf02fe8247c47452db5cd9c9a539a41af2ea SHA512 6f9f253b72ec7ce3e74c41e9c70e476c4861f8afe2f51b9712d85fa02e6ded4e652b0c8e64f4e0ca61a607e3b17d4d867bafec06edaf9c381acd9bc21bc962cd DIST language-pack-gnome-ku-base_21.10+20210514.tar.xz 943052 BLAKE2B 46a12e3f181066626d7e494efb15675fc54c64a201a2b88f3e06da2feea1cfd58ba09c015e109e35e02fad84607a7a8b96d06f622934dd82958e3a40fb1aeb17 SHA512 86f1938acfd7c52e39688da2d3957683280653942af63e14602338273fc534b7489396ceed79e88c318f429e0e635bd9a43cc7d61f9585a678568d31eefe9082 DIST language-pack-gnome-ky-base_14.04+20150804.tar.gz 539128 BLAKE2B 6cc98c9601e9c758eae907ed5d43e27cd0653b51b3cce1baaae360acf96fa1d3f95624cf235becea92431d8e4bcedf93650e34751d0a1c40314c3e168604c5b0 SHA512 b254306017e5d9047d98f924752278182bd1555807e22f60679656268b2a2246684d8fc203e9ccfbd5e0e9c2bd46eff4beed859e9c551d7c0079731b8633afa0 DIST language-pack-gnome-la-base_12.04+20130128.tar.gz 104966 BLAKE2B 46031ede0ad8f550db64127c42013130c0fc4a655a0580dfe76ff61f510133430fc5413b8906a2df0fe903e211f6057f52d5ea0c92d8e1e7f84f1194b1a925e0 SHA512 9d5bf2dd68d4d57438a8a98f065944845222c1e49c28daa8d5e9f28045b9b7711cd5eae3705903322058aaabb04e5a219bbaf35fe609eadfa9e20a3daa33cfc0 DIST language-pack-gnome-lb-base_14.04+20150804.tar.gz 200040 BLAKE2B e23fd1bde72305a4122f61c26632c2bc9acbeefa043c3d42fca94f7ee064a3c215a5c720c98b234455f8549da81ccf1563292d7ff23e1dd988c6ae763ba7ce1a SHA512 efbefef6eea6d9994e89a67400c33ae7e14387875c65c83f3db5ab05df38e3c578c5f0ad1fdca84e40d36b12fd20610ac3deeb12fd8c3283adbb01e1327131a6 DIST language-pack-gnome-lo-base_14.04+20150804.tar.gz 332841 BLAKE2B 823e8a0fc7e534ffc5299d597f0586e62210ece751f0801560c20efeaa9bca89e684e43c6aca598a5ee368071c8acbe35afa599d0d267001db13c169ee2b3940 SHA512 a7ab06a94f9cbae72dd05b63ab647780362ef3c4030ebbd06305680746b785dcfb593bf1dc2ccfce1a7563abe6e32b98614b437e3566685d81c48db04ec26a40 -DIST language-pack-gnome-lt-base_21.04+20210415.tar.xz 1654100 BLAKE2B b28d47c4c531ba391a433b6dd976cb5bd108625010e621ec3dc5b0e5409203b8e795c71af110ecb75b1b032e0c340bcb23b158fa75112a4791266f18bd248f1d SHA512 5d8798b67d5db851e53c9d951b65bda0e6baed9fe3ea5fa6d0a1b293537d6560f63e20d7b443eb2ec8aba4b49088c165a7d01323a6afc6811ed4449f8284c1eb DIST language-pack-gnome-lt-base_21.10+20210514.tar.xz 1639248 BLAKE2B 053c10034107e88cbdca1462d023964375b39cdff8290aa0c95329691bfb5d9a7c722bc427b6af8a574cc138218db40bae406f7f1d99580e6b39438b1ac0a878 SHA512 4fb22200707edf61429ece4f27216e1317328b5c37fff8da6a8a5b8f8fb20c0602773ff6172a1a092f5cca0884e96386d71d908d018b822efd989621e4af89b8 -DIST language-pack-gnome-lv-base_21.04+20210415.tar.xz 1957612 BLAKE2B 9ccf49b1d1a085ba85f64416a8c12442005dc5e3c4d4634b7edb989e9addc01729db6964bcadef1539b780b01b09f43cbb8ed34117257848f381032b965e2666 SHA512 d78f104be9130f1dea63881700758c5c739c6bc9b673cc366781e68e8a7e93cbb3fb31c9c635f4170fef98dab9ec7bfe0914555b9bc017c4d1d146c59c575c91 DIST language-pack-gnome-lv-base_21.10+20210514.tar.xz 1942768 BLAKE2B 075d53c71323a0bdd5a464b2dca37c84b085083fcfe9ce262761b7d23141d7e3d990c37eadb1949ea336e69ded71aba7e0e1aaac722eb140fe659c5eb7574d66 SHA512 ffdb53e0de31b0c9fe5bcc6cd6aefc43e85e322630091685d5748a163c5bca44ac321f4aec21949c579bf83150804e14be5ba849d516ecf174bd167dbac845b4 DIST language-pack-gnome-mai-base_18.04+20180423.tar.xz 592240 BLAKE2B 82c5cf7a6e82e4527eb1bbbb93bc35f98c021b9bf9ac17109a667da333fcf6d903890892b694e49e521414fb5c6707710b178f359121a00495b696434c2fd6e7 SHA512 df766c0e1eadedcb2b964c30e766c7e64237d63ae5f4b093772c27c9d71357bcf8c1b8bc895c63ed6e7faf304d7988c3042d33f8afc0f950e20dcf38891c068a DIST language-pack-gnome-mi-base_14.04+20150804.tar.gz 331101 BLAKE2B 3d0fb0c29704365683d50c885d289442b330f932e76b08173853279fb8dbadcffc9cf41039d452313e049bf7cd117c389747e301fa918a7cf9d3db1cc2ad45de SHA512 f3b27b4ba12e7f775dc99dbbc414464105a67c4d4a7f28d23fb286290c5cda638b4fdd91dc70e387653281e705a6ffa4151dae31cba2e8dd2fb76fc294a34828 -DIST language-pack-gnome-mk-base_21.04+20210415.tar.xz 1195464 BLAKE2B 19761a2d6512cb94ae2faf65ef5bcd82439f9987800fd56ab1e72d740f11f4708e2b686f0807a34b032e6657180d292595076722358d3366ef43023bc299d3ba SHA512 595a15731dc94bc6e79b177bd509631f64449a2d2e1e379a57da78567e3dc3a47d6de8cb75fdb689c23007e636277bcb9e30edcfe9412ae173478c2d0b774657 DIST language-pack-gnome-mk-base_21.10+20210514.tar.xz 1195260 BLAKE2B e324f5c119dc4653548b033489a9a3b1c12e99f52885a97f74af04ec6a0fe335aa8287cf15073e02ababe4ec574583b98c32961da924d63cacb3edb5a965f769 SHA512 f84418d491da8ecba769ed6db0bf3750ac2639013752254d516752f5a6c72189e09cc424f9734ea66379fc327b56a741d15e853ded906319ec1f82c05d454520 -DIST language-pack-gnome-ml-base_21.04+20210415.tar.xz 1405872 BLAKE2B 582900852b828b89c8bbac4270817f3db182ab26a6f1556ea5383be69d896234ca28943bcf87c120d5a13e7ae489a031cfe5397ddc6c06783795905f9d05f2e0 SHA512 cdfa0584c32871bebc5c5e26823fceec4ca99842d2e78decdd3889ee0d72afc74ff86960f0e7e0e8e9765f3ad666a94e3debacc768ea9b18d327d4732a5805bb DIST language-pack-gnome-ml-base_21.10+20210514.tar.xz 1391216 BLAKE2B 19d02bf5d5ff78dbf2743dc7ab9365c6214daadb85f4fd3f4d2dc9b91dbc744b25cb57adbd174036d336cd2a50a33df8685d54e4b9a1299f13427695d74d9e71 SHA512 9e75e8d3e558ad42acd8d44005c817ca5659617e609c3c5593e7850813d45e79749a24bb3aad341e7571be4de04bbed0f3b7a50766d9f0a8f091dd119b68b76d DIST language-pack-gnome-mn-base_16.04+20160214.tar.gz 992437 BLAKE2B e514e5f54ab7d13c03b982c0be1cacb1d8d904add91d197ce197a744c939993a335b056a746bc5c12b0e81a540c9a3c1bb09c370b500fa453a4932f472d970c3 SHA512 c2c0bb977b3e2f764077d083dd657eb9944a8c216d45246998b1eb1255bd3c88df27145af59d25b5a5f80f8bf65298186fa3f0f300f7acd4173be1b24f47afb6 -DIST language-pack-gnome-mr-base_21.04+20210415.tar.xz 1381472 BLAKE2B 103b6fdaa7d75e8caebee089e2e836f4898ae51a50f9742696ff090bd07206f06ebcb5f18885e0bfe87f1f27f8017e32e85a3fe1ebeeeecdce021fda852fd8c9 SHA512 d84b43682639e69cfc79497ab63e56d90104f87bde2508371bb70574cb0915efdea6aecfea7bde0280b08818234f614575ba3fbbf07f20015a283ddeb9d146e9 DIST language-pack-gnome-mr-base_21.10+20210514.tar.xz 1367100 BLAKE2B f68ba82a036aa3c367dc9ca13e49d1a0d44ad244915b58b293d3a9b98b75be3fcc4ad7610a182b482b5333124d95af73ecee3bcec109845957e3a8d3940c6f42 SHA512 982e634209bf8ba4938b40e0c43e4fc57d33a6fba3ae528f4f381a74c50591de22339048adfd46e8fc3324efe92dd30dab54cf18cab6e6264b563c30d50ba40f -DIST language-pack-gnome-ms-base_21.04+20210415.tar.xz 1573304 BLAKE2B e933093fe9bb028b0cae1c8a181420f149551ed8d2de2eeb044dc9254746c8ff50dfa288a15542793a8512dd12d7fb9fcbaf7f60c9588c904ccebcb25a1140c8 SHA512 7fff1d547d6eebd84a7b429b550050d04e6f5aac15b8557aa1c39f419cd9aec348c452fb3621d19e6ad47853dde0fbb931b6fd244cb97632e58e458f8ce8c9ce DIST language-pack-gnome-ms-base_21.10+20210514.tar.xz 1559024 BLAKE2B 744c16f6871b47606d0cee0403cb9ca879e9f00cd15d24422941b8cfa70cbf5c0eb31c8e18707f3394d302b8f31b6e9bafe412c6efeca55e0095c7fd5df69547 SHA512 d7a0af6e6388115b7ebdb0cb169770ba88721e02b46b819044d6dd2548548ae4261674e2e8e7616d7c52d6fda2b2293a4eb651310be29c3622fdf080d110288d DIST language-pack-gnome-mt-base_14.04+20150804.tar.gz 28472 BLAKE2B c46520ce0f4a540f6b0b9f1f18f63e27c498b490877de3ffd8f641c758012ad32bf0c703747ec1441cd600c88710df6715f5176ffdfc4a51529f6d7cecc99cc3 SHA512 67130f5e68b679c51431b414f39d31bc1db4e41e4588fc366778e9bdf8f4bb321506698ff889ed38563d27c97dd229a5d3c64e1a0d827676ceb84f8a6ba023c5 -DIST language-pack-gnome-my-base_21.04+20210415.tar.xz 982588 BLAKE2B da694c013c1cb664eb94aa567e6d3b7d3c48822a309bc1bee1822c5fc285295b80dd4e5bf86ed27c3e949e73f87170b22570100f3b9da499443718e2f0260199 SHA512 b23456e57121d39e40b65a09fc487c436c7358bea7138022d1a66fe7ea0b2256ef40e1c3564a0d9e1688e9cfedf2cbf793d97872708343764041745f73a4b412 DIST language-pack-gnome-my-base_21.10+20210514.tar.xz 975280 BLAKE2B 4c1eaab38cf4e2a81f95a23a40f6be859e6a079982c38c1d72ef6a8296c5c33bfd7d69ae6e5d201cd5f144d549764dc335a8c7c990d37145a90e85a782d4603e SHA512 10ad69bb86ffda2d362ce2502f9bcc37c4b7467a009b0a83240d2d346f2d87b1979c10727bb0163c8a97af9fdfdfb638d413a22e2ac40f8c10930038a5c2ebf7 -DIST language-pack-gnome-nb-base_21.04+20210415.tar.xz 1569220 BLAKE2B bb749d24c0069235519d8fe3c26566d6897ee1f552c9231ee3f8c94a94a3f17fccb33cebaa9ebd56dd3c08d489b0fdc5618dc70a8d135eee67a858cdf2de9093 SHA512 d1e8d8f66be3076c6c9a530251733388703e0493dfca3ca8ad6d569bd31a88984152bba903b30b72cd605e1a57e9adaa75cc2855700d75643a9b2afab3bc94a1 DIST language-pack-gnome-nb-base_21.10+20210514.tar.xz 1554688 BLAKE2B 96deb0f549e66dd8618d51f99ffcdd91067824fc49df869440dccf12dffa30f7dc4cc5c1c80936a5689987db0c3dff23a11d40d635e5614c1b5142f783fb9085 SHA512 ec8b475748ea64d589bc49bd6f0ec210ebf6259b0d49a4dd6a92bf8e51b5f1723269742eb0f9764e0f3ba8edc34f1878b40e14b09e67181f59dbd8cce9130935 -DIST language-pack-gnome-ne-base_21.04+20210415.tar.xz 1324720 BLAKE2B c64a14ee272a15da1db259a39b5a030a36a48f145e67d65ca174eae5022f9692f47ccba7d413924522617d1c3c49ec0315880a226b08b74d3b0bd2fdac52d263 SHA512 c6e0294e015b96644ca3561a3e80aee8c8fb17819cbd1164970929fecc4f3533f09a8d2d53dcd9cb2be5ca9b96b3495bc3a1888ddb123506b5e73cba54e6dcaa DIST language-pack-gnome-ne-base_21.10+20210514.tar.xz 1310012 BLAKE2B c227d95646f6762262be6bea758950322860e208db989da5861843c4130e881015628b26577651902ec9b3d9e999d59cb28a4a43dfee1d7e1bf2ed114e4c6cd4 SHA512 a931eadd897154b75c64b1133f47fcefacb8ba577b53e84f05733e8a5af6f40ed5a7d98fd6bc52a5a09bced5606c5edf219dd21959178ff49e65cbe902946b46 -DIST language-pack-gnome-nl-base_21.04+20210415.tar.xz 1763660 BLAKE2B d91e17a93b0764bf9c41a19113d25b0e5cf366810f93ccb88b1a765ae402b42d68750e4be2909442786359843e8b47c0c89b1e54ca2ef04d6f56ce43cd88070f SHA512 3c4786781c86b4b66e9d267f15727f9b5aaa2c27b5caa782efe2667834a8578d39445e9003f99722c8a558d9d7896515dd13ec74427da181ccb12d7f7f14e4ba DIST language-pack-gnome-nl-base_21.10+20210514.tar.xz 1748520 BLAKE2B 7e045a8461c74eb2bb97b148a31a255217138d7f714d536f177cb82df192f9a9e5bd4c6ece96c7ca552e483ec0c11ba16e064a8d9fae82f7582d82ecd233158b SHA512 4452bf6550535b09f24ad968449027d06147450e9b9a3df1ce9f1095a4e19ec20cc8792159d8056c5224cbf7105caa7242a00db5d89bb6c99ec9cdabe2826301 -DIST language-pack-gnome-nn-base_21.04+20210415.tar.xz 1104428 BLAKE2B 9635c64b9c508731bdb103eadc5880b8c4f022f62c7c096ede69e1eabc395e6a7a777b5e934fd01597d8684f05f611cb66e822573326ceab59086bec16760e95 SHA512 9170d9ac65745eb5d56aeac73767ce05da9307eb10bd38d2be9e250a653a088ad3069c80c86e9103b0d8e1e260562eec38e70de75544dcf2102183191ec461c3 DIST language-pack-gnome-nn-base_21.10+20210514.tar.xz 1089932 BLAKE2B 69aa393d4b981222b992fcef9833635f6179fe2305e9d9c967204e2112900134a2852b29944090d1299fcbff00705b93fe1f1c6a926338e6d475a66500bb505f SHA512 863201bae1de36e57fd854b19fc89f18d1bd773f5b93482d86f85da3250b73fc7c2f1174785f884dc79dc42b9ba75f2b41199f0504f964030d50c40ce5be31b2 DIST language-pack-gnome-nso-base_14.04+20150804.tar.gz 283525 BLAKE2B 26f43b053403407df326bccf50e9ab11d7ac5e252f43050fe8009a0d5f402ab60de1f9bc3a5279be08168851b0b82dd8d83825fc3d406378d588f026f30e97ec SHA512 e087c7d0f6f512a0cff9fd152c2bb577d20db5d5fee6f5f2f4c0e8af6de0347c188a501625dd666c5b3c72f879988872a34518970914802daac91619f110c033 -DIST language-pack-gnome-oc-base_21.04+20210415.tar.xz 1877240 BLAKE2B 595b0853deac1032940944cb92af4cf04cc5ce71cb1169b147be4fc973caea7ebd2caa89b36409006a8e0effafacb92ccef626a1f475d5913ecc7eee9b2c0399 SHA512 a6f2c6f8503cbe668849f591c027f1e4cfa7704ae8344ac44674c6c08b9e2645608d11df2dc54c0b66e5e736b0132953ba16177cfc3ba1f3c030151946ec32fd DIST language-pack-gnome-oc-base_21.10+20210514.tar.xz 1873884 BLAKE2B 15a5d0254578e9444369e2497a344b77ac5308c71adbc4e9bda9bd7fe584093a192cb594d8bf81eda7bee9d5f9633c1ed5c94a2aa177ee44979a7d0ebe42db7f SHA512 5cccc38cd78669aae3bbd95ac9c7a104cd2728342daab46d64823167f1525223e77d24dbbfc039118580837aad9218589ed56c42486e3120fe9cc6623a7386c3 DIST language-pack-gnome-om-base_14.04+20150804.tar.gz 32310 BLAKE2B 0b0b36e84fa889f110820e0852fbad9a91f2740fe31f4ea86d0003ea5dcd4b06db38d80c0df4a327c672f5e726440535e72aae5de41df6ef949b719ccb90e2d1 SHA512 f0c123e128d5f90eb38ae90d082eaee9e80ce30a49a9af640c97e65299aff3b8c68ae6e43a1b4cd9500f406452461cad7d16212df0bf57f3a01b0847b07922ce -DIST language-pack-gnome-or-base_21.04+20210415.tar.xz 1133912 BLAKE2B 85971040b1792fcccc2f8e10683435debf34078b44037594471ab28a22a1f6a3ace7ac21544b947a90ecd54e091c0f44ed4cb47b9cdc38e72d7bcd0f9ec644d0 SHA512 d66fb6153aaa039084ac20b348d81fab0d09004e88933c2ee81a721368a976702a74a4058aa6ba0b781117b66455e983a315dd98607614d3b44489bdc201e1a8 DIST language-pack-gnome-or-base_21.10+20210514.tar.xz 1133596 BLAKE2B f79c12983c667a79eb9da306bd942e54a121b6a3fd8d62895e3d4a710f2a93e0ba96eafd2d0b3801077d0e7ad0549ef95b219938364aaabbc1475d0598368ef4 SHA512 f6acc8bfdad9b5d1f41a4bf221f45f56a320ea0367dcdef23456a6ae1e72943e82dfcabc24e4808fc9c74839aa8de7f6e194cb1ae892105ce552e3ac8a0f5fbd -DIST language-pack-gnome-pa-base_21.04+20210415.tar.xz 1513928 BLAKE2B 5f6e6be44638a58e261176912cde00edb076dcd9055cc4f709990633c9ec5c53049d02b2bab4f5e8ea76f4ae175a266c94ccc00414ae5d0665612df5fee79dca SHA512 6b5e229dc636709e36a5b09544f9520ba24e74444fa7385b596db573c280fddaf6afd950118a37e7488a3ea7fc241c8c43dedaa2879e9635f8c323808adfc1bd DIST language-pack-gnome-pa-base_21.10+20210514.tar.xz 1499312 BLAKE2B d1d03b9fae63553f3d667cc5de4b5835345900aba0ac95a8ab00522b924f817663a5f2762a869f495bdbcc51876faa814c3cd186ffbe0e65fa0f9e5fe8f08090 SHA512 1f72029d0a341097fdc348e1ef875f6b72223e58a5c8745999f800e5c58e84a5384f1a239ef8e60a548ecc61d7c9c15b924c668cfc530beadd9b14fc4be26026 -DIST language-pack-gnome-pl-base_21.04+20210415.tar.xz 3120028 BLAKE2B 88ccf9ca63988573a2d5df78b1ff937ec84735eb87eb8ea66dbe2a09397a64472c9f33b17b811a9a71d452e872a40ca9b831fb62f9afadb0c04c7ad517461390 SHA512 3ce35085419633ceac6444765bdac3a3fd0659ed954be8f01d3725e50ec69a828332aa2e06b08a7803e1873f04a492d107efeeaa48296598c877f47e65c807d5 DIST language-pack-gnome-pl-base_21.10+20210514.tar.xz 3104888 BLAKE2B f9cc57b3b97515571fad30f846323fc35f40b8291bad831d649bf3ecc8d8c6459c3993d14dc2bd31201f43b7fab0982e0e3d1f35541571ff722e20a1279c1c40 SHA512 f8cda18e8ec5705a3da535af17fb64fe4ced1256067c0b5e2bc463b5317527e911e9da1e4a539ad8474fc188e051b60b4809f2908fa094f5de16f6c50e6db694 DIST language-pack-gnome-ps-base_14.04+20150804.tar.gz 676007 BLAKE2B 26e5f1f5d75cf39a022ea410167163f57c4c5783ec39dbdfa8b71f2366a4de14c9ca3426cfb8c3e2c12372394b5f2e220f6cc30054a4efa5dbca0b20547dff1b SHA512 c77b5b4401702fab09cf7fed4d089d251ba155d2f4a18fc572c0ba8334c49401470a7f5330ab311b27b7c07cd9a6e7491d51103a0de57c030938b9c3bd5ed6a4 -DIST language-pack-gnome-pt-base_21.04+20210415.tar.xz 5019404 BLAKE2B 53925321f00388029cd66e6c4deb166505948277352a4485a311799ebc33f5e86454bb004dfe5e946f7d20c19d6c309fe6aa9be0253fef65b8d2f39ca8f8fab8 SHA512 ba01b957ef7e1027b3c84038c15899669beda1cd6c18b3a3217ee55b2207fcbfe778e852aaed56154bd0167b859f98ee354a0756dbbd9c3b51f358e78ad09070 DIST language-pack-gnome-pt-base_21.10+20210514.tar.xz 4978368 BLAKE2B a94efd5cbf945478dc479a68c5248f08446fb11f3966972d72147da6efca75fbcd8ba80af6a996f70d0e4116505629968c3933ec956c12164ddd10ba8f7c26c5 SHA512 25ac5cb170dce5a3bda76064dcd0e614708068d54199c29655d484095f94f23ece25fd8ebd5056cd7fdb2d93f7ead596f115d7ce27e3c1802d7620a5ace04727 -DIST language-pack-gnome-ro-base_21.04+20210415.tar.xz 1973092 BLAKE2B 1b9b036940fe0c07db89ef64f5f83fd8f2dc96934e30be64ef5151a651070a4558069e568191891c9be887a2d50b32a20161ed4da0f4eac61370fb3df0349548 SHA512 6701d4d167b10f0954d82706d651f2b38cdb1ab8297bc6595e1bf9b6385abc6fcf2b10e759d29632c3f444d5e9ec8a4d0e830f23e04457805f0dece6b22c43de DIST language-pack-gnome-ro-base_21.10+20210514.tar.xz 1957600 BLAKE2B 24a223f80c3589c718e4a455c0f3c34fbc8d0deb9045b82407eb03914c01ffe98734eeeb59ad3c8c7ca8a0876467fb98bee0ecfa7d58b2a48838f91acd9b1998 SHA512 c7f69d4f612ef5890cf4ff7b6f9faa7dc3c30ab7524608a48797f5307ca973168bd9b2bf64dd37868d55c1e95db0bdb157c56fbfcb20c75c812b07ef11f9b102 -DIST language-pack-gnome-ru-base_21.04+20210415.tar.xz 2422248 BLAKE2B fc9d140972780eae7b56c5c2958d31605c1d712b255f1cbd68e9602994e1613e86c378b353cd9ce44d147a7ca2d8f51c52a149d8a5b71f6efa0460a08fa3bd8b SHA512 2b503bfcfc35aafe8f9919aa8ba14161109db20e457fb7558e8f285663fd55ef8fb6b0bd6777a438a89f984a2158e9e58550679e706b5ea45fc866a2601f56a4 DIST language-pack-gnome-ru-base_21.10+20210514.tar.xz 2403260 BLAKE2B b58ff73e4925713207c6e4c978c85bfdd4f5147c8f1dc4cd7fe51984d95663ea66f43f42168f9c49585d6df91ece19b68dce170be693b20dba92fbd8806f0633 SHA512 8686f911605a6e26722a356393ea6e253a148377e6291e8270456c07d54cc0213535f533f2fecf71c57be7e2d2290ed6ff60d75ed31066d0de9547b142a84efb DIST language-pack-gnome-rw-base_14.04+20150804.tar.gz 990858 BLAKE2B 409360fcf61bfb29f6fe1abebd2d138bc007d717a1b57fa675e64775bc1a406416dd0355dabe52fb03641c3ad8aca76a811e121003ae603d884dd30a0b7729c0 SHA512 0b22f6beb0783fe53715fb4fd2f49a60eb9eab33cad887c20c33793c5c7c3350b3113dccae986d252c33ff3821f0841232b31f8d50353645012ddbe1cbe0e34b DIST language-pack-gnome-sa-base_14.04+20150804.tar.gz 185041 BLAKE2B 403ec2b63003c0bc041d314779194f80c960c8cb179ee3b010d04abe71fd2b83f48ea0f7646d52939ade39ee1efb93d9bd0a6a2501ded4a72479aa712ed51c43 SHA512 7275975ca21cca142e115942da3881a88fa17787984c1ca4c4a57ee74d8bfd032855d748388450389478201617f357d3fcc1c488f5f18f9f9661864679e97d0f DIST language-pack-gnome-sc-base_14.04+20150804.tar.gz 117434 BLAKE2B 4077368e8a695bae7878af9a815e97386fb03208c5adba8a26370c14d34e546dcb29d63100b5cb7c8a3624f229e02f41da42df37255a116a92fb704e81a8623e SHA512 f443e5a76b3f9b0df9d0b73ebef5eed8d50c5d60866ae7b7611cd8824374a0e1dd0192086af8466eb6374b0e6618d96fec023cb4a5025ec6e4057105223581ac DIST language-pack-gnome-sd-base_14.04+20150804.tar.gz 760508 BLAKE2B 4717c46ee62ee6142f66cb6e27145ecdb0e61a52374b2d293a2d4ee62a53f45c43cde97324ee0feb59fde488eca8dbe40a9feb65403fe1e345f8879fc58fa7fc SHA512 a45fa91cc9d27497f2a6b8ad8c67a7be852a6152be7853d66bc1eb8a00ae2f3f1a58653edc22ec0e4a3086cefb8312fb1e36f9c0a4f9c45ff285b4358b5c5222 DIST language-pack-gnome-si-base_18.10+20180731.tar.xz 726692 BLAKE2B 3fd1db2a32a4f97267ad45780bc804438cd290883b157bf3c9c242a77a5a3a8e83a54b4dcbaba28a2be1f5702805ca74de6eccb298a64900758a9ea928ff2f1b SHA512 bf8ff1e49be6c25fe5c06ed465cc7c8cd701ebe891630779cb6389ad4e01826bf9d5cde8fb1b090451774ffffe8750cd8499b3eed3e7b19f7d280b99e3f8420c -DIST language-pack-gnome-sk-base_21.04+20210415.tar.xz 1741032 BLAKE2B d69aad81fd9cd87b55d70f9189483d1d62ea98da3d4a4d10ec446bbbce6126ad4bbd0ffedc66d084dbfafeeefd56f68d0fd5f9d4fdf73e36db580bec59bb354f SHA512 c1a3a0955a23e0d03c0fdee29c68964af025dbb120dcad1e203e950cab0472004c0b31630f222904a0347a5735b2db5b645da8262d4451316f80a37f1c07608e DIST language-pack-gnome-sk-base_21.10+20210514.tar.xz 1726936 BLAKE2B 1d4139f75503e85fc8847d7271d371fb79217188bf22ede3ca64d1630f650536c36d6abbf013369abdcf3b317c9e17ccbfdd5108b5fd80a41be5aec9eae751db SHA512 c4e6a284698da9a38306f4da8917fbb44155f735db3abf2476c58889fea443f0f76d6ba43e946b33c812dcfe40e2088b0ad4f34e15ce2f22cd17002fe1ed74e6 -DIST language-pack-gnome-sl-base_21.04+20210415.tar.xz 2203960 BLAKE2B 81d09d5bbcf293335506e3208a1d855dc0663a7bc6aeccb6629fcdf20bec315936cf71ec0fd25b65e289209c1a863d07d072ce8f013c865312b277b47768ed0a SHA512 f6f562d56b582ddecb22ae3819499889ab7236fa559e346c885d4abdae1428e97f08440eca4d2ff51fb27937d46e31f3d3520d69f00be13ed2033d9f7c1c6946 DIST language-pack-gnome-sl-base_21.10+20210514.tar.xz 2189164 BLAKE2B 7f12286ef12126363444c9cd7e6d2dbfddc5d3088bd0c583a2eef78a6d05a66cfa95a8e6e3560207b7be90e323b56551a75828c696026ae6499955ad5527988b SHA512 355fc04713dfcf766aee3602d3288998ad7ba2eb6d2521fb1a3ce6ece860830535b67aa0470ccb7324df29bdc805f3927a8f287e6c40e260589a9ea33eb162aa DIST language-pack-gnome-so-base_13.04+20130418.tar.gz 11117 BLAKE2B 344aeaffc67978f7dd83a906e37572b55a283c98f118bc8888a495b51913987ead41d7ea445933fa60779188a06c76146dc3a4bd3d4f914e43dc245d5e7c12f8 SHA512 0138be3b71070be3563762d3336c851565bff1481513cc2fd9538bfd68baf88acfbaba0ee45fc7a0c6b8ad7d04acc95a3c3015dab642756a404646a12b2c0667 -DIST language-pack-gnome-sq-base_21.04+20210415.tar.xz 1168748 BLAKE2B fc39172c9252eed12bb57ad5e72c5d49df1f97d8c5c4c631e3bedc596cdac5aedbb4a13959387cb803644f65c3f9aa7576c2f4cf8ffcaa0f157cbd47a4f4ff29 SHA512 27a9c750d79bc4813a6efb938f2b12271caa0bece81a37ae0b86a677ece44117dcbc9d6d13b4ae54807dccebe1a49d7ea1fd25631c809c7859fe87744d5e2092 DIST language-pack-gnome-sq-base_21.10+20210514.tar.xz 1154024 BLAKE2B 3296b5a9c5edcffd908a4481ed163298fd646ac577ac80fc265999a4b6c1dc358fa4daf2a3d53e5a00e9c952919f04434a493e512e87d7feddfc915424381962 SHA512 e34dce250d041d91f6f80023e9d8663e3e62169ac4ee6ae34feaa27b059b162f17f9a2592a4459986a58dcf61ca5fecd6a99ecfbd29ea4b65e2e086ad5f66098 -DIST language-pack-gnome-sr-base_21.04+20210415.tar.xz 3780940 BLAKE2B 567caf687882b05984362c556ef15d521d2df122de69ea08ca1624f03048dc83ae20be4d2cce0ee161e5cbdca7e3b06f9b8f6ee6bb940e0796f3643d67109c5c SHA512 70e69cd2653dc8f275ac6bfba4b7de4c0eae4057bba970e0c0b81f5bc82e049ff7212bc6e22b9da443907f930fb5b3eb86d44aed702deab537c4fe3e2b18515c DIST language-pack-gnome-sr-base_21.10+20210514.tar.xz 3751328 BLAKE2B 31a75a718cb50981aa1fd3f79aef4583b3fcc29b05c108b5556cccaa8614bbe89845a457d4645d1590f461a6be72326150d472a40e031a864bbaaa181fb9232a SHA512 f344c5f914ff463023ea2ab6a6ac63f118d780ea1e8b4c726d01a4410bceb26d8ce1eceada2f012d03a44c7bc6329b08462828d3fcb4116a4a4995432c4f5acf DIST language-pack-gnome-st-base_14.04+20150804.tar.gz 12511 BLAKE2B 264195ab36abf47b8f6abf97128cc5c5fc744c537e4922b7589cb5003ff1cf2c56d9ccaef9f40bd04c372c3a6f88d103bea2f0fc7e0df707dfe54a7701bdfef6 SHA512 0b302c89e5362b20e3d0dd727f8d3af6252660a7ec74b6d4f49941b7be9335126a28ca25a1208e1143846651b9ab3d909237a2c29b73d2dacf6e82a4dd8026df -DIST language-pack-gnome-sv-base_21.04+20210415.tar.xz 3374136 BLAKE2B 1d9e403c134f5b97f0a290f8ccc4ef51d7c9e0d4f31bbc3832b10e0e488040d51c6321a11c331b890da680035c1665491d0513774b073056f92a117a4152c18c SHA512 766504b28e2e512f6a402700d2ba4b0bbd7bc6319d0077c547941be7a7cf7d1d11892b537b4d31ef92a8f349ead1bd77b40f607276fe69cbcbe23efa26757301 DIST language-pack-gnome-sv-base_21.10+20210514.tar.xz 3360384 BLAKE2B b1cf530fd23b9e7d897d8c05ff716d8b89ac338e22d1d4d59daf65c513d491b0e5b8b21d91fe9522ddbbd780dd3b87fb5025065ea806a43ad06d946161ffb29e SHA512 9050d30c487fa5cd472e019b2ee9b84f7f1fda35755460a67ee45a943b91070613b7d4aab1c160074b67d25803ef309c894e9c3d3d7220030e28930cec2eea85 DIST language-pack-gnome-sw-base_14.04+20150804.tar.gz 126049 BLAKE2B cc4b87a85ca385e65583eb9071b2f90d2eca8933166dece37b4af9109cd16d0298d525e76d50757afd8cab1a959f7f4265a8b2688c51613e64fe20483cd57c54 SHA512 df3eb949cd2c5a0909855dd8464c70e00330baaed52de1946266d232fae33aa82df3dc74a9cda7a2cdd12216d3e0d44f01148f3974017be557b0f100a1f0aa93 -DIST language-pack-gnome-ta-base_21.04+20210415.tar.xz 1308104 BLAKE2B bce00c8dd53242f99bd279f1ba7e06c7814dee88439eda5e1943a340236b3ef3fb364d47c8228b5883453496bb0c3d5245cf42a51e8aab0839cc35972862120b SHA512 81014a1c43485b987cfbd9ecaee2d8803646a54b0dac93e811b10b974147b699cb333ee6b357544f7ff5f40a5afebd4f71a8b1ac9a07d91e837abf0164a9d872 DIST language-pack-gnome-ta-base_21.10+20210514.tar.xz 1293608 BLAKE2B bd8c952138fc352e84b9fc9fa814a1a684c2d256f3f8f4aaf2e9084eee56a3dd218aa2cf39540f81676a4497ee6cceec2c0b5499f59ace747c18a3dcbae64007 SHA512 a60b7502f40be8c03f97480235cde53c352fb5c895bd32635a2e53884a20ed90cd3462276959b46f76331764d2a8a351ec088738dbefc095a548841c9a23016a -DIST language-pack-gnome-te-base_21.04+20210415.tar.xz 1526504 BLAKE2B 9ffffb5cd5e556a329a4aac4b998558b7b0e96f2c972cbad0531ecb197f679d9ab91ff9210073d930e6354d47475f9ddd17eadbb24ae8bdc6b0b4445a1da5edf SHA512 1c5f0257f460f4e78ec2131f72567a12e0adeea34d26f1dfa1bfc044626ffd78ef9c830349948286f2b5ee756789497d223ef2d57b4c61181ce73af02788de55 DIST language-pack-gnome-te-base_21.10+20210514.tar.xz 1511740 BLAKE2B df892a45bd363f3c7bde52963f9eea3d8bb9484339b8b6c632de0b170bc512a06a0149a620a919ae8b05cb5fb811997bea407f1910e16886541af0c657879fb2 SHA512 23c99a4bb781ba20d4e1c1233700da1c3f15c4f761cdd8e19a87c33df53d5e464bf386374c3abc71ae15a1e8914ad5d8c3793c1bd5caaaf4ec1b385cbbc81466 -DIST language-pack-gnome-tg-base_21.04+20210415.tar.xz 832632 BLAKE2B dcd404230c459cfe0b5eebf36916f75daf9344e50a60c2ecceb1d678351e6737c2455a08caa3ca4cd76318560795531b89781a9ea72dd099283ae216a40d62d7 SHA512 08a30c7d94caabe1d69d60deecf50f19ea43d4a7122dab05ca2febfb7506b80ebb46108f45f358e4067b5df503af9d25e6d52353288aee12200d8c10bdebe878 DIST language-pack-gnome-tg-base_21.10+20210514.tar.xz 818240 BLAKE2B 86f93d567a1b88e1b3c40653f9ead570bda7eabfddddc389a27361416caf160221c9c4655dbd72a86f20ef9602c30615041b1b2eb2d13f276c45a3790c813991 SHA512 d00cee9115624fb701b120db8675320a822ff0fab8c2416136d80605bbb5165c859b0d82c78c8059051601cbf4f239f53527670c39118faebb84878d27716fe3 -DIST language-pack-gnome-th-base_21.04+20210415.tar.xz 1403404 BLAKE2B bfad48990a0cf3825f2d269f64f78ea1e18379f3c7e7656387e77429cd9810482b6ff81a3199e2ffb1f0456ab04b3cebcebe10b5b5a8a924afa47cf94d6a68d6 SHA512 03f5cd300a5fcc203ff066e1adab95bd014e6e2b9ecb9c32d25bbb968d70589427e986fde1c26f5c23ed51aabcf4895edf92d66c646c92ba7a82c0af1556dce1 DIST language-pack-gnome-th-base_21.10+20210514.tar.xz 1388892 BLAKE2B f38009d3c164cd191290baf9c5a259471cc21c0723cca2c7983d876b1dff16375a4776a68b67c23173a1382fdf4efc7e8d0c69fa7987bd9f6c467d80f90ee902 SHA512 3529ba2d5e7fa29a62ce3480f319fac6d9ec9458787424d3d86c14f1093c6bc937b9708cead78afc8ea089f046dc9ac138388b44694c6c04b5d8fe138f55aa2e DIST language-pack-gnome-ti-base_14.04+20150804.tar.gz 120560 BLAKE2B aad803f7fb4d901553f190e256a52d0a421827eaf5026faf96b281dd402a12dd6a864c3e725fa458c083a607dacfd5447a9d006efaf84f9b46cb1dd433a4b168 SHA512 b390c74127be08f4c45571d5167ac701cb9d192f644eb71611a90c7fd269bce64b1375341324fe4751749cd90fca47fe153218436757a2089e6806d1cf9d140e DIST language-pack-gnome-tk-base_14.04+20150804.tar.gz 206022 BLAKE2B 54790f4f438ed632e8fbf5425ac121228966e2f83ac378ccea733192f427d31bef860b69a164cfa555bc3aaa086532cbef949e60e3606a64c3234f1e6e161f72 SHA512 770443611d5d5efe49272c9e0aeed172c62d3689b723ec14376b83eafe62535ffcf7c637ad43b98f5a4afc255bfcc2ddc5a43c6eff239424ab7fb082ccbc3112 DIST language-pack-gnome-tl-base_14.04+20150804.tar.gz 567133 BLAKE2B 618e3320224296988a66d9acc161a23cf12d20d19b8d4a52096ebeb4f3c87c980aebf3dddccbfbae6ade7a5f4983572f2668570c80e783274edc61b64645af7f SHA512 e69814528bd44eee99c78f0cf43fe78715c218ec33d257aaee31b0b112860ab0ad715d3c6304fe5731b26adb37a6cbe2aef008de64123fce5a2a462dbe5789aa -DIST language-pack-gnome-tr-base_21.04+20210415.tar.xz 1882088 BLAKE2B f1e1da655c5e066496ebc63e769cb90aed6d8236f4e5d04cda2d75726aa15505bade8ff8cee0e9a967b94b394a5d117dbf0b438031d3a141e19f370f89a08598 SHA512 830decd4de14c1ac5ada828c382d1d0ac7e584511f69fc4e6d79457ecad51533f7371e97a9a7f90e8e9cbe1e6a89947b071648a48fdefa5576b4c46ac58b3d6c DIST language-pack-gnome-tr-base_21.10+20210514.tar.xz 1865404 BLAKE2B 953fb99f2adf09bb1be8b112cb20f7eabab17ae972ca0a18c2c149c5184d9da8f734622aaa524595361926c4179f65ea40e64d4e4686c618f4f5a890d81bb0d3 SHA512 c567f2547c644b60420b38fe8860812b353198dc0d302ab5001306a172563485856da359bde500027077cc74740a268d4653242c83371ad541a09a49fb8dfce3 DIST language-pack-gnome-ts-base_14.04+20150804.tar.gz 22296 BLAKE2B 3d4f403eb841684e3bb87408966c84466167ecb6fec2735fbe776e0c0e967ec123bcf27e54bab3d60bf8751c76d868cdffbf53d4da57d8439a5b84473f4fd1bd SHA512 c8f2cb1d9793ca6c2844d65857cce2134df9a17c1c4e68020f6ac493b87f77ce0b0d52e973a62c2ed3ff78d7c6776d304336a571a7198e6e4e99038cebf380ed DIST language-pack-gnome-tt-base_14.04+20150804.tar.gz 261110 BLAKE2B 0e3ad1075694f8ef37441d0149399ffb0d7c5a6b470815a3d3542d8f6c2b50105830b4caf0c39682aa5d606cc8c320d3496d29f64e3f24aea9b4855c3e36c00f SHA512 170638b14a1c0605ff78f8aebb653e80b4bb997d657839668120fd2d509c15359931942c8b60eafb21fee15c3f250fd4bebefae921880044e9791a49aba10de5 -DIST language-pack-gnome-ug-base_21.04+20210415.tar.xz 1353848 BLAKE2B be1f5fc8a652e70308b3b90eaf22be83d8ed57dd13e7437e3b69a3e6aa18af8e25265aaab4a44f96311cb3de549485f5283cdba980e18789f15e85ebca5bbbd0 SHA512 e2c4a6403a723098bc6322f1c5e258008231ea9c355412110ce0bcd28e143836b7ec2b18f08c6b282c349c123a3aecb9d120bcf409a2da25eab44b60af8fb008 DIST language-pack-gnome-ug-base_21.10+20210514.tar.xz 1339328 BLAKE2B 22fb25b7a969b07352bc926ee6fec21d0bbb750c94435888edebfc620f1dedc758e9e72b7ad335810dd481816799c97b2b43b061fd04e2b756440a4b047ca02d SHA512 741dc7c23f75ddff00d20cfe3de807bfd0b8fac66f10308c5a8e73e5541b5b40704ddd76867d070e6bcb5f08b8c7bb34fb8ec092d925d6cdbfeff3086f2752cf -DIST language-pack-gnome-uk-base_21.04+20210415.tar.xz 2416232 BLAKE2B 0e9abc93aad926364321b39f730879725fe14ff869c26c2fcfa9e98690a9a0d5e4f97a537a0284ed37367a05e3b23e390a32c6e75fd08ff25bf3679b168409de SHA512 699efd535d8bfffa741f8d90fb291af13ece894a3f12662a09ed71d4fe186934b5a6b2808a36af2e2a9670ef86348befece6fb69714731fdb3156e19aacfccac DIST language-pack-gnome-uk-base_21.10+20210514.tar.xz 2394620 BLAKE2B 498dea6c5a36f4e6db521bebee3d37508d88fe3c96190807d1c22cb1264b0c418e7c9c46baf2e7ad308a058e607927785136d6c4fa9f8dfca707fb935240c1d6 SHA512 2233450e10a70046e667379485745b10b8647b3c7ffd0eda0c5fc294a57b54c5a86ffa933b452a47e1ab30c21d50e06971d5102a146bbea9db1d2656506a3442 DIST language-pack-gnome-ur-base_14.04+20150804.tar.gz 590431 BLAKE2B 03851313fda4ffdb84ce687f8f779dc587534909bfd99859a757ee382b697f84efb839ee53f343aaeb4cefae32c0772402b0fcd0834eab7ec1d521999b2d9921 SHA512 aaaa90fb0b56141696992793736a0110e6a5ff6013aaea71c3dd6fa1a8c34956619ad601abe84c649c6cf0c7af6405af4942ca14df4c21b976114a0dd91c0360 DIST language-pack-gnome-uz-base_16.04+20160214.tar.gz 994688 BLAKE2B 6b14cb9391c8a01e09b83d6b94e4d97c93445457a1aab744b42ea9ac413754736b3897941a57c56972fdca5bf22553f1750d557b165cc3cc06cf33961d593de8 SHA512 d7319b02cc80beac7fdc9b0e880a4c8a652079bf6e1e316628368e9303c7e2cd9a3564b82ecc7bf223d2c1fe82d12955d69a038a70e89399aaff2c74ba75d2a0 DIST language-pack-gnome-ve-base_14.04+20150804.tar.gz 9840 BLAKE2B d2c080acd88be3fc0bcf068e6593ac526ca6dd5365f0eba63d08f44ebc61cebf7840990a90db35cf79da70551aca05af9a6a105d88111d552b0578af405eec26 SHA512 7aaed1ea97c3889d8ae22771d622fc7419013ec147debb3978f4061410918c2994304b6d1be9d88146f5fe36d8938cea480d73469353dea8705ca050a62d2862 -DIST language-pack-gnome-vi-base_21.04+20210415.tar.xz 1511588 BLAKE2B 68e5a43f59fbf02eed858d262e575f097bf052a164aeeed54982eea029bc906bd4e56570c501db8844150ca605a9c719b7a5ad2a22a962249c5056b67c335972 SHA512 b2dcf48c42822caeeaf0af950fed1a4e0f22d86aeb016dded5855f1ea39096be5a5cb718ff498f298955a460ea73e578ce716ea2b25d91696dd37b9c74b434c9 DIST language-pack-gnome-vi-base_21.10+20210514.tar.xz 1497944 BLAKE2B 665c9bcb2061a2790e5582d08ac2dafe9dcd938908c9e081886ac448a677f2adbccf14db2f533179703b52b967d35bb7d6b5fed27b4c124a879fd948110a1d85 SHA512 7a8c981b2d756e1285adccf63e0f628b3624bdde797d1dda6b42a3cd3d019e88cd77a085c1107dc6004128df8a656246a49fdd8d79011c560ae9a4a01d1bd059 DIST language-pack-gnome-xh-base_17.10+20171012.tar.xz 619192 BLAKE2B 114e79e9f0eda70112f11fe592d3b9f862348f79df706bd9afd53a60bb00df57b083057bd77cde228a6aea5943701e040626c48a1a02288485ee875f6975c361 SHA512 22c62c644f18de6cc66b53055fc672eca2981ccb3f20522906687f73e35995981221d2520c133b880ba93721bbe7f382681c190a8206d27b03383a06905ce9f1 DIST language-pack-gnome-yi-base_14.04+20150804.tar.gz 357475 BLAKE2B 12663b8944480dab9bf9f710b312cd7b77495884c037563cd4fd25159102a04bb12f8b91866ffc34d752c08203f9518e1fb5ac5507043b45ca8d830ce0200e8b SHA512 9465599bfacc3f30ad82a0f4bd30028298156aa4119957731f2a243c18646f600cd0422e807f07cdd6eb12813ca3c193b0589bbd5229d0eb6bf202d501128307 DIST language-pack-gnome-yo-base_14.04+20150804.tar.gz 52661 BLAKE2B 7142a839d584e1b975e13ddaa08c75584307056cabb3b79514fb5af260b81bf1a03582df1c2bb20aa218606ada12575995e34e181ad2d538de9b9524753eca69 SHA512 a6e5707e836ddba31b35364ca68685e5d1ef4dca28cc79f8676409894cc5b7cd990e767c238aad43d04a7a98b57699f1cfd0daf1bcb9ff7e11f0fae718028db2 -DIST language-pack-gnome-zh-hans-base_21.04+20210415.tar.xz 2130324 BLAKE2B 7d118d6659dc0855a3f29258f24245829ad0106f686de1a78b2eabc4e40b986d91286aa8546225b7a42b0deba589f1c9b3d999bc95b8e5db145bb73876fa501e SHA512 5a3e8571adab679b9e8b6292624d4337d95b7d09c9447decf7219517d44a6febbebb3611fab6a92d72b576913cc6db1b073a94dcc00eecc0332aa5e9e87c392c DIST language-pack-gnome-zh-hans-base_21.10+20210514.tar.xz 2116172 BLAKE2B 641aa79d1b3df3815a5e992904a3a405ec63806ff4a67815ede056c43808789eee3826116295ce228d2fa86ecbc5e4d12e180053e2ac23f75f82a96ad3716549 SHA512 ea292bef43d38036a39e0b69654f9e37acdbe0738d729c4ae6674c90939394114469cdf3463cb39a05c4bc7212a5834a69197cb2c858878e7963347bded0109b -DIST language-pack-gnome-zh-hant-base_21.04+20210415.tar.xz 3052276 BLAKE2B 1b51c9a0b3be9ca86a917d6b7a68a80e4cf1146e084bed2e645bea8f04dcd9463bf8c4f00abc890c1b7ff21f5c9262a57279936d1412485eb97c82a161b94308 SHA512 a0c751f87cde033669e4d68d60e3e2238978ebe06f0c6f27b3a1f328030d8fb95fd753ca17a18fd6ed8977017e813fec0c2917832987d97af19e5c905a7de112 DIST language-pack-gnome-zh-hant-base_21.10+20210514.tar.xz 3022820 BLAKE2B c8d73a681f3961a1a3ee03d3bf0c1488dfdbacc9b01ee24e3f8535c621a0b195fd50c6b7e0588c160dc6e28528e85eba41ae24044ff9cf8cdbdf3febb1a93b74 SHA512 22b1fb4f68aeffc463bb787c466c5830614b750c2bb9f452fa83f5e2cee25a3924214c009d7b388c7736e76ca4a757e5e5581f6a4447412bfed86de4f2c8d098 DIST language-pack-gnome-zu-base_14.04+20150804.tar.gz 368445 BLAKE2B 74f12606e30376df775253d86dabfcfff2d529aace3262d89d2e01c95d974d15f65e8038665ac655e74dba2c4708fbeda1d8ac9f2cc4408c0964b4a03b108a14 SHA512 c42ca20c8b363db2fef40e7677fd5d88bd4ef53cd5962ba6196ab3fb90169d51adbf34f630326ceba599a422c68f08622759da90373cd360d68e59def0b00c42 -DIST language-pack-gu-base_21.04+20210415.tar.xz 348872 BLAKE2B c31f3e7247e4706296ae1f45143d55b726b42e2d0846cea0e926fa6fbdc610fb440b45fd0682a4f3479cf47efc2e4e3fa30c8254ed4184c40684e43f8f67522b SHA512 10f0608a94fb2721b3dd8ea0de463bbde8bfbf8b4218e6da38f327266999fe88890809ebe750cc283f0d8032db4c6df8c4c481c033d4b55f326d24c0b1e3b431 DIST language-pack-gu-base_21.10+20210514.tar.xz 350776 BLAKE2B 009982d4b307ebfab806839de8b6cf5a7a9cf4d61676e66577c9c2d0bf6d828d51f52bb1b55062fb567e85142e3799dc33476a64370787430505a78c3cec7d3f SHA512 5ecfc5b4af9d13f42732fcf86e87a630daa21b4449ba764c4e8c69b3e9ecd21cc27e332631770138d4e7daaf600cad9dd9a8831ba159990a37a7ae929e858fdf -DIST language-pack-he-base_21.04+20210415.tar.xz 809828 BLAKE2B db3f93974ba21b6f3e0052ecfab46d7429abe14355d1ac484a21046c633c346ff0bfb84f57444f71eee79c175e3ff816af2d9bc73304258b826c8f71efb28f01 SHA512 3536963547b4234ae46759ada4cd5283f822b900885f0d40835db161ed748bff07f063eb691470f3d932b1b1c9075a04b5215f4479932920841195df8157cd2a DIST language-pack-he-base_21.10+20210514.tar.xz 824824 BLAKE2B ae9164e529e0222c3ea77e70b0351baa226309242d6ccab7bcfc26ed7627e01d948a0d5e1eed7ca36be61585be7da40c671a9ce9244db4872f4b3db6f7a122be SHA512 a5c2b1183fc530a1a999e7cea945d7fa02cca0ee323dcf325e04609eb294d5977c7870792c79670efc8526f34dfe01e17d234192e8e3787a7d3a129469b2eebc -DIST language-pack-hi-base_21.04+20210415.tar.xz 375948 BLAKE2B 8c6fc6282530251984da34cc8ba97bf732b13f3dd75b41baf249148c0f48dbc4eca065e8745500af4fc64374440a0788effee8d9da8c52a096ccdf38a51ba7f8 SHA512 7fbb2607957a8e6472e7ac899bb9de11c966f05a0e8e04a9811156901ec58fa6b3cd070f995310d13e3a3148441576220f2c1ae7c3502182e5b63a5b3a919031 DIST language-pack-hi-base_21.10+20210514.tar.xz 377972 BLAKE2B bd99380072636b7eda4f14f20e71ec528288b20c2ae4ecb5ab80aa704f5e9a1b6e626f90feee9f79757bc574589458bf35dacc3a533d73df8d4c5ab0f1fc80a5 SHA512 d27b2f355457df5808fea5ce513d3fcf16ecf2d110a2d05c41315f7a3ff64ed0e97459fca704698264da027043e4f12f3732a2728d3611b510128b1ea82daefc -DIST language-pack-hr-base_21.04+20210415.tar.xz 1626736 BLAKE2B 78b2e18c64ef004b4288db95793982034f7525e306be1c6a1960331703471dfad06844bf7a1c2b8b7349344d622488324c3341c5411c3504141f7f82a2936cdb SHA512 22ae097305a230c0e98ddbfe1d9a3918aca189bb5f1f5bef46c33895f10183e26ffd52bd590cf9561eefbba51a5c58b98f5aed1e8c69fd28289b2c0787433da3 DIST language-pack-hr-base_21.10+20210514.tar.xz 1627308 BLAKE2B e9391430f6e2eb24ddd38cbaf9185e7cdd82aeab2511d8f441b8e01181092661909abc8994c716bafed6b674eef83b85617e9e9142be2cc03af46c77b4bf91e8 SHA512 2d4b7f1656ce5d47dbe2f4c001aa1f7ad79d0039cda91822c2076f5f18c03043c4b5afe4923016447979efde82f81ed41002b30c27dcdb8e2e1f2865db284508 DIST language-pack-ht-base_14.04+20150804.tar.gz 17009 BLAKE2B f5474f1dc60daebbec82ce8717ec42726eedb6e4965084945a49e52adf19e5d2872f2dc295b90fd919750ed436e77128eb22a535caf23840706467a70c70b22e SHA512 48b5fab87fb90026909446246e203bd3c31d4fa8820ff3adb9939b8a2465b6895f9f15d84ed3e7880aeffad5fbf107aeb329a39456d861888bd8ce08aa03f16d -DIST language-pack-hu-base_21.04+20210415.tar.xz 1470008 BLAKE2B 73c0a16acc3dee879bc482be32bde117dbbd461513f7d4b1061d2eda8ec68e86efdb8434f400b914207131d5206807218d67b8a3fa9fa741f37fad07605805f6 SHA512 22bfe20e471a68b7d59972030f71fa95f7f422686f726e5c3107451bb040daf61694942e7e45cbf2149b6a429130c546b7a78e389f4a5d7c88248a354a6b917a DIST language-pack-hu-base_21.10+20210514.tar.xz 1472920 BLAKE2B 70f63f00342387e0d831d3238ad509549500f8353ed97e9a1944ad2c09e5bc253dcd2070df688df14a95a8ffba0a475b9878e232c412c5a04aa96eb0e943d475 SHA512 c672c2aa746a8f48d671100bd365b9340c672eec3dfd0ea1eca47e2d37b88845c2ab834f10fe31a4e688960e199743ce29b95fdbceeb2143568a398d233d4d05 DIST language-pack-hy-base_14.04+20150804.tar.gz 435991 BLAKE2B 92d3e965ef026a3ed4f7bb4759cddcf867966b10b8a60aee31bedd2a1d06a81525b64f9860b08f71fd46b96899db5a03f5bd7d7e0cc4fb4d10fb831fabaf3c2f SHA512 f5bd3dbcaca1092315218d9381001c23651ad6298424248e574a0481467c194f2053d98ae41c7cf6315acc2a0d29804578af526cbfe6e814e56ff7794a81b406 -DIST language-pack-ia-base_21.04+20210415.tar.xz 462988 BLAKE2B b95ca9eff6ac7de3e3e0ba0ada5d9b405947a54065d9afdd52cdf6c477a28406b908b74a779e04a134112eb664919e6d9d734db1e61da2bb85af6de805b26892 SHA512 4f02ff0f47d66753296ac4b8588aebe7f2ceb4a21ff61854d7a9c1f46a99edc7a0c455481b72fc1f91ff9579262e879d5cd8898235cb9c7c3de57bd1e33d2d29 DIST language-pack-ia-base_21.10+20210514.tar.xz 462836 BLAKE2B dda4a1ad0d42795ae8c3fd7ec4d2f8a4575e4fe43344eae9d10402a2cf77b6e7de2a02e964336eb51dad47ed2514fe588f74efa6a7033858c9899725ce221dc6 SHA512 e1da4b9efec71fe7478c40316e53c5ca1f7c6bd15beb0bd354a8d8c1d17967a7f8174cc98900417905b5c5572e21ba24d01afe0e23866939f73ccf17ac99300c -DIST language-pack-id-base_21.04+20210415.tar.xz 2243644 BLAKE2B 8356c1939e72845a0e74b177054e8be870ffd072b26d6b8a086f353aa71ecd78ea8d684b1597d5c1d886fe8a96a949942747e0d7b1dad15dd09a560f444cbdbc SHA512 ab99edcf5ecbd5ebbc196dc1237f9a2403704a23cc9ccd95d9e2b9fb250a2bb92bc07b1fa4a19e239753eb655025e11d4d7eb1abc0888fd533d014b59ac66dbb DIST language-pack-id-base_21.10+20210514.tar.xz 2267496 BLAKE2B 63e6c3f640e0c76ad0e66a4db7b28a9e51c7a520a402959677cb62a2a1ce36b6b1f19dd757f39aa868ba5cc4068bdbe1099ed792c9ce749de77f829f07195da5 SHA512 d4e4d87659fd66cae289f8abdc05b41ea9d9b662bbe705eaa04483f9beffd3fd360216c0aa9150b8baa9f4eb4e2f90fe75c13276f784da773de824db90dd08ff -DIST language-pack-is-base_21.04+20210415.tar.xz 633060 BLAKE2B 12482c9b5152b1070fe660b66bedadf4d67c5673ee0bb9a60f12f145f9c30e7a2020638ce7eec63e32f191b2b97527f77874e214e7ec6bc6fb7ca58aef64136d SHA512 f2bde3b0be924526a36e0884b9e1f433db897f3d8fc17400d8c401876c2b8bb6ba9fdcdbb7ac63d6213e8a6ce35f095ad503a049ee862bbb5f28c8b42fd15d5a DIST language-pack-is-base_21.10+20210514.tar.xz 637508 BLAKE2B 4ddabe81669a36133119238cf548df1bfdab18dcab9eb6580c8bbf421ef06fbef0e7ae53e43ffbc191a31485eacd3f5b71bf1e439c9b045d825d2947b28d805e SHA512 30615365ced02d1996dd32bfc421bf356fd6573b536b6cb2d724ac72f3e33932ee39608104b0e7c3ca506de584fcacf80f08f8b149f87c17251c71b6c190060e -DIST language-pack-it-base_21.04+20210415.tar.xz 2284344 BLAKE2B 3932ec6cd0ddd0fc3b12667d93a2d5937f6addd74e5a0bc5175302f045b539df93f30439106212f747f4e1b6534cd0f9089e9d740f347e2656c3d0677d525590 SHA512 86a5efbb9cf06927af7c9b9dd9e107e08a002b69f5ca005587c295d13b0ca51e65dd6509aa0300afa9ceec06599f7a4301ab82145e16f2b5405e1c9f7dc9b678 DIST language-pack-it-base_21.10+20210514.tar.xz 2288260 BLAKE2B d4faeb4be57e3166e38616aee9767107f6690a9d7a75eda87b65240aa8b95fe1442a9af64712fd350dc34bcf97c98c86f6fc21f9b736b8fe232596eb2a7ad7ce SHA512 c737a4a37fda7ef51ef8186ed1f2e5462859430a258235cc8b2c00d2d613cd2c053eb5806e1b6ca4fb64a4363dc9abfda97700fd2bd8ee87c21d91944883ee43 -DIST language-pack-ja-base_21.04+20210415.tar.xz 2509444 BLAKE2B a9225c7c9b7a8aaed316436a93e23781929e45abf9c47128e168549ba0fc2e1db91e5078e0942bff5a25714cf7c26dc0f8a810e77e535f0501d9b9870ef7917f SHA512 7b4c72cd443ee39432a9d69d3fc30ddf337f258ae26bdf49cc71a9b1b65c9bee42010e6993b4f50354ef8802fd73731ac636a509e00ec090ea97fdad85c61b45 DIST language-pack-ja-base_21.10+20210514.tar.xz 2513132 BLAKE2B 9c1f784a54d88984ab71a810cad5905d9022fd9ff3c28c2604688fd0163679609e5bd610393bcc93248e563119931cffe0eeb9f19b01012b018dba58449fa47a SHA512 82d27a0ff2471ff2e4fd7f09ae252a099af3fa695bcb539c6a9a6a0375175f79ffebb22890a9ab445ea498884f2ddb3f1579c6a129e105ff99b6f8d3de1f5d84 DIST language-pack-ka-base_17.10+20171012.tar.xz 412536 BLAKE2B 34b40dfac82593469eb2f436af14a26061afae55d95d7482d182f79085056570b8ef48ccfafc2acad2dccad8d7d677fe9bab6ab1210fce4c4f907321034c50d4 SHA512 d1da944b3444992957b897c20e78273304f0b998873ff9b7a882d82a96a17377e26de4806bcfb2e0f42207feb7a319439375be1990f94dc7539abe8d53c6b0e0 -DIST language-pack-kk-base_21.04+20210415.tar.xz 402384 BLAKE2B 29aa7cbf1f36393361053faab90e887d619877cb254af4ad03a211c2d3243127fcdc12bf7b8e3e404db18dd1fa75e84bea62b05cf9f88b70bb3b2df5ebbf98de SHA512 3c3964c8aa8e40f0ea4dc93b30ffbb7d09585c8db12f160dda6de23102a0711da1b069f921a0f332a2774662e56cb9de9fc59538c8c5ce8cebc800b2c3a36681 DIST language-pack-kk-base_21.10+20210514.tar.xz 405732 BLAKE2B 5cd4cbcf08e0f8b14f340abd92cb8e92285e7fd8542e8352be4a85bf40330a881adee1734d154d364be23a205f880658e346c7983473515a9e66336813aeefdf SHA512 ffa2da35b0fc38112b118323f4569b09e948a4388fe3ef2bde8ba6d4d2eacd8748bbf5ec378aedc2382f00534f9a2409c91d4d1e7c881ff4e6bd7f97ae6ae458 -DIST language-pack-km-base_21.04+20210415.tar.xz 1232996 BLAKE2B 918ae6b43c125997d36f63196e2a46d51fc641ef1b9ce9e59168bc73f1aacac1607ca302a42cefcc0fa9ef27f4ce1e5c894d5f7ab6f3385d6c60760f7cd3ba77 SHA512 7243df058492b4bdb240800bacb0cca35cb1a1223eee1e0f9bce7a3e5890efdcfba3117c1012a07f79f521fc03f5afa4834244c78e1a2ce4b001f805579d7540 DIST language-pack-km-base_21.10+20210514.tar.xz 1236536 BLAKE2B e5b6292326202fcdd40f75a7026c25cf7a36dc80e8c9fff5f0b99b9d6c7d269376d067ca80a6158becd42d27f7b6e6af574724d835d54ebc7d2b715f59d10dca SHA512 da99e995875e94066a5715e419d1688838be5538abbdc990b34c15cfafb8a2d3387e2f228f77aad205c44bffbaf9dafbfcbf9acb00cd61e5ab9fed5c9e7462d4 -DIST language-pack-kn-base_21.04+20210415.tar.xz 362092 BLAKE2B 49a0e0b36d2939be1f647af3b0d41ba01471ec756f63f8743f9f0a96cdf1b7e983bc9a102d9a8ba165cca6e4adfdd5ddf4e6f4e979b8edade521b751474ba3a3 SHA512 73ab0c5da9f3d85f011d5efe4f1e66c57f95c931ea8599a5b7ec03bb04dae654b19bdde26cdb2c1fce9536102b2d541e1ca0f3a5f7cba01d5e5e4ecd8f8d5f51 DIST language-pack-kn-base_21.10+20210514.tar.xz 364152 BLAKE2B d915a91c515e3ed4654877d1af91b4ff9fcf5f4fe92c1305ed3ff5cf4ba293e69880499147e520dfb040eb3106cc42b800620e7111bfdbca1dafc2c8680e8e49 SHA512 0d30a5e1f1ecc2f7a697453b3b4cf098f8d935fb86088b703e6daa2f29edfead2ccb32968ea85fc08f87c90d6c5bea10750c564363d545f6ceaae1f509ca3f0d -DIST language-pack-ko-base_21.04+20210415.tar.xz 2183640 BLAKE2B 9937f329a7ebb014013d8f0269e34e91e8ba666cf3b33546105a2ced9d2022cd81aaac70c8a053abb96466a03e45aba1592da30e4feae347ea6d5807828b06d5 SHA512 2f01410298a74405c52edd6ad7c6099ae2dac7c11836f5fad706b98db4d1e9e55fe8a2c5e1b45d2f2e10160a8c4df320bc0749950bbf3c0ec51c4c6cf50c26b5 DIST language-pack-ko-base_21.10+20210514.tar.xz 2186716 BLAKE2B 76164725594233990b14f9d50740b5af3b07354ab2b26a5ef7ba8c72ffe2c20d323f178d9f3239c0c6c024a92c8868964ffd3460537dd0d716abb2bdc9ed56ab SHA512 33213b77a3550a41b1d97290d6d8246e8eec46751b5e0394ba1ae1f6f8d94f1cabdc53c4cfcec95c93af47115be0960166f8ec13670186a35537dca567b511e3 DIST language-pack-ks-base_14.04+20150804.tar.gz 8681 BLAKE2B 1cb765d97f33fa0003bbfaf96cdcbe6408df5dee6567132e3ea735febb286c4609bc5c54229f97043a60cef65d21605925a69cbb6dad40625d332f6d782f7799 SHA512 c6504b2c7e611032462f9ea6f9560c05f987c83a5c8ff063b69ab681fd6a157371b18c5c822445246829d5abe0c3266d62185e7cdb489ef450dee8bb47213907 -DIST language-pack-ku-base_21.04+20210415.tar.xz 825984 BLAKE2B 172b3f5de91acec7fe0b43447f1e72aafc7f2a7a0ec1ec41ddc80085ab6d0351cf66b98ef0272d3550bf126f89cc724ff30e93276dfd1dad6089855dfe2e1ffa SHA512 c6296611f513b2b46001883835047db80772fa5fa6eec2e8e4f0dc63763ea8ac64e907f6684b6501e4f2f907ad385dcd1c098049dc5fd7db549b1ea453bfdabc DIST language-pack-ku-base_21.10+20210514.tar.xz 828808 BLAKE2B 5c6b7ed63a33866332b1882fc783a6072ed1b8363b3bf234afe540a528798f271def13814349d8b0135906b681deb9c4f608b5d24bc5a6ebf06a69c250c0d47a SHA512 4bb2ec7c5df02b6a66c7f3d1b325c315a1a62c6931086fafe2a70c308d22f2578994a6322cb22f335db40fe46a823861da326864b39625a35bc6c0c2ca48ebc0 DIST language-pack-ky-base_14.04+20150804.tar.gz 70057 BLAKE2B 73ea056d1c69d375fdbbc8128eeecc4be96782c1dff0a396d1ec186c609a2f6a5a47256b65c572a333a15a3e227c63eae5d01aa943819dced4228a7bf308f1f6 SHA512 c311bd1007ca5e358f043b79e50778c188e8bc4cdd4413e92db62345fb28e70952e68b3659676d2864137ece116f5b64034e0db11680a06df65cd0bc186f3008 DIST language-pack-la-base_12.04+20130128.tar.gz 10617 BLAKE2B a18fd799510ef7fdd3875416f1fad186195b46f9b3d8da4fbdb00460b0be4560f322ec4efd6f8e5f3d0c39555c521a5cba4b498931815dd1962d1da7e9dce1c4 SHA512 4a4c82047b7b8b3801be7f4743bc93316d91653b79bbabebff24672e82236b865f7f276bcda3f1869e0b1f0abe77e50186ecf9f228157b8967e2a1b734c541ac DIST language-pack-lb-base_14.04+20150804.tar.gz 158824 BLAKE2B e61ba5d0b408e8e26815a9706b042249cec87a9f186cff873936c4a6649d8382ed2f604159504e6ee6685b81a66ab87e5523d8a50d097805fdf41f574892ae58 SHA512 2cc3be39bbba071be39dad632bb561bcdf43a84e5ec5bfee5db78cd2c6c2eddcd1eede75d03891eb7db1d53b15cb9b17340518d92d84a14dc3931fc6fcab0d53 DIST language-pack-lo-base_14.04+20150804.tar.gz 278573 BLAKE2B f3cf111b09663729a032fcaa319dd489be4e3f1d7f4ef7c5849b31c1765298c9e048455a9dcfc7a7a250052ff1f171bef2b04212f184ec88f7c67cf50335bda1 SHA512 e5c546323e891aa33eabc32a056121d70eead3c9a14e3bd4109baa59ebe52d94bebe72fb17c3cacb13136a740baa179467b3f997a8cc1227838c99239e45f8f4 -DIST language-pack-lt-base_21.04+20210415.tar.xz 838972 BLAKE2B 8729f26b1961b098133ab21e8889bc1b849f79193f0926c6f90940acf4fc0a7e7906fbc28d12801143380aac627a3fa5f1d86b6cb6a652f062fdfb123472088a SHA512 70b64060cf2048968c1fa9df67d348081d400abf84f323110296079ab995b7c36cd2224cdb026ce1d46422370dbb6287ea63cafa246577d14842fd561ffb8616 DIST language-pack-lt-base_21.10+20210514.tar.xz 841476 BLAKE2B 352e85fbd205419c768330abe1b79313a4ea5da0a0901866fe99259830a5c9955011efbc0b81d23767495773a9801ab76514bd356276ee7d75d78cfdddc1ebd8 SHA512 5fde59af73d76f23ee86c7fed92bd088d970cc2a61d6137800809a5eb4467dde8f1bb6eccdfdba1b92636fc6bc453f9ca0e4a62219b28cfd13383a1101024508 -DIST language-pack-lv-base_21.04+20210415.tar.xz 817464 BLAKE2B 388079abc06d7c52a22bf091507081bd09243e9df65ad2ebc104b02e290a4e3a2a13c8f6d7587e1f70f8e165782a4e3ee23b78a9001b5f221024ea49efc97dfd SHA512 c8b9f6354b35f84d41297364c49b4ad2f39d3966352ddc27b66541ca5cfb06c1ae21ba0d44092e4eca5d4a9ea12e7a09cfca809a014d18a9e3b58df2ccd0fb16 DIST language-pack-lv-base_21.10+20210514.tar.xz 817740 BLAKE2B 2ccd12037e4da923d7f11c6aee1af6a527233993cf20e50d2e8d05a52bf033ff1b315aaf4472aa3f2b8182d82e13c18a4d8c3a3e07fc4c9c39f81080db97d6e4 SHA512 97c94fa7644ca98d4f956ee5819b1411954fa26b0d5edf8689cc3fa792943b0f38cda15aa30a1f01f62300fbc1e6038770800d005f8b81f96520fa57c439277d DIST language-pack-mai-base_18.04+20180423.tar.xz 8180 BLAKE2B ea3650d983c0ac01d9cb4110420faf664ffa64d5217b77ca68a438a24bc259bcac0213d874d330545ad9e38d122f430e2d167e5885cbbb33db18df22f7d4240d SHA512 97b112e2fceaca0b73aa5c7fc75336f054c4d40ee6724cc9403442b831987473161f91ada278807078a0c3b6a9e6dd72c91fcc803b8eee5388246642f1dc5729 DIST language-pack-mi-base_14.04+20150804.tar.gz 34675 BLAKE2B 0ced98e07294702368c85a03bd4a636d8fb6a4aa734fbeb95148375961290712516fdbee8ffd99977e511807bf6a5120461ae213f37fd643c5dec32eca9d5976 SHA512 77905d434a83a30e60a6c03c53d17dd3201fd74d40bd645f75cfc3225b03f3a758d5001528452b88de834e360c6b5ba6919e9647c232ae9234502266a3873738 -DIST language-pack-mk-base_21.04+20210415.tar.xz 172328 BLAKE2B 13a466c237d4d8169d41306ad94afae2a80d8a40034740762f2828a0f77ff6b25c96f26ad98b22d25c3a83e1e73b20f6f936b332150e3d6ce46dd1792eb3c8f1 SHA512 0fd869beb4dc72e03ace518f006373b8d584a9d8a205b01190373bf4c20163884ec4da3b7092f648d3186c6335527e78eccc2d0b7048cfc9029bef1d611f67ba DIST language-pack-mk-base_21.10+20210514.tar.xz 172384 BLAKE2B 48a815fd3de3eb95c64c8f2c61e868bd55108b4e4d3718686691b08f720874d335fcb65c5e17c12474dfd8a194dc31dcecea48f6940051a3175b1d279235d29b SHA512 bbf45d937a76225aa1dafe259e7952425c0f636d76edeb2897fcd1b75349f19acb951766c6a0f3ead5da31bb416e9c4677336f077ad4b63c911945ca9b995590 -DIST language-pack-ml-base_21.04+20210415.tar.xz 271204 BLAKE2B 90136feb80b49f022b9e04c07f9d7f013f618196ffede0cb14e5a8cd6a6eaae701a20f401757a9f06b40f72339751e679ea37073e89c762a834ce97eea612841 SHA512 68ada13e4093fc5d71684cd6157ec45385a9655961e037849923a3551f510e699c47a92054d24621c0a6e03a34b50ce3415a53de1921f30e02f3a89ff6e33a18 DIST language-pack-ml-base_21.10+20210514.tar.xz 273104 BLAKE2B da302797f7f8f8830aa51960d284bae75dc6628e2d137b76f3577d4e0a538e0598af401dc57ba3679118c339bf5c81343118c43fcee73dac79ec642e338066ce SHA512 6d3c16cb31054a5f56be94f46253f08e1ed9cd7c0b51121c39ec35488fd015eb6ed92c6b5d3da6837bab6e8ee685390bf9214271c5d7c28cacd35ceb760cb397 DIST language-pack-mn-base_16.04+20160214.tar.gz 257504 BLAKE2B 870085acdb53f38fc212c32b1464d5132d6ac862766fd970fabe068187e5fb0e0c58373e10a504c1f02a0ca4f9b9c08b78067a94845f045e2c78bf46764aee40 SHA512 d076ea978d6a4e2118494959900f6a57767913db85e1e83c330c8a1ecff45921b089f76a71685dffde44680f7dba30e5a786068b98be2f52ab14fe0794ea3c71 -DIST language-pack-mr-base_21.04+20210415.tar.xz 668424 BLAKE2B cda2bdef91fdbd2f94a5780569ae35b68415ad005e59eba9626fb9bd87c4c7c8dff3a2366675b76fe1a6509bb358d09317e259b248f8cd57b0b012a2ffa1d9cc SHA512 bf42f85718250c7b36e5cf726e5d6feeded0accd7fbe29c7af3cb2de1bab90424963792070a65360ab3334993fbe8db2d0b0586939bcef900ecf6a6930d8f57b DIST language-pack-mr-base_21.10+20210514.tar.xz 671604 BLAKE2B 25db9c15a1c13a25ba244d8f0f633e7b27e5090a55a61710c35c7843486f4d6c99bf3e995be4c1989ab5edf76a6bd8ffbba4cae2996b0bbac9d58fbf56cbcf5d SHA512 538499dc0e70527b6f72a0776264935540f721768c06e8e1ded6f6eecf516717ed74ab0205bd55e6db3b6e406009d54050488854ea1f739ecef5390e558cb7a0 -DIST language-pack-ms-base_21.04+20210415.tar.xz 2373220 BLAKE2B fcaca21f144a1dd2d2ad2fb300d68efed1093bcd8ea6ac103dd88c9383a5825c382471a09d59cf248e120518eb318e9d77647522e5b094756e2e97d305e49db9 SHA512 a1cb1a5d9a357a99ea71637dd3931b58b2d81b86ad0160911c61735755e9e624b204235ce2e64ee036957ddeaad8648fac2854db8edeff658871a8f87c2beb0f DIST language-pack-ms-base_21.10+20210514.tar.xz 2374844 BLAKE2B 2c9cc4f79f6dc9aae25be14fc93c9144f65feb2ede3d2a24157dd1c5946b91c24e7aaa7f5d52af82b14b42246420efa77da8d9f433bc68690a66553aab5d5ded SHA512 f5f2da7b075f965ae4e1faa2b102d112a62d02e6c2ccca076c6cc4380aeac6cf12a9d7fc4be26fdb2e59d87c58cdc4024f49de887587818250bd1b905779cf97 DIST language-pack-mt-base_14.04+20150804.tar.gz 16968 BLAKE2B 2ef3327fa41b6abacf4d74cf2b1da1e1a42d63182d4cbc9bd55af365a99b03e46578f065b6591b2652493c3021b91fc972d1ee1ba5809acda4510348b1f0adc7 SHA512 d51d8162f450e307bd1ae4579cec9ca707abe933a79f410495392db905818965539080994b24801634dd90ad370a6ffe97a5157df1e809de53dde63616718504 -DIST language-pack-my-base_21.04+20210415.tar.xz 702668 BLAKE2B af2a944022defb08f0971652d859243759d5d22f5e6f013d65ef989ce904d832f3d6ca6916dbb84944e2ff5cdce5c980f90998dad9d3199d002b229db9ba1807 SHA512 067de663c80168fc2afe7a8f00ee0e33e6c5517a13f3beb91dfd59e39c8306b5282a9e567b94576d2d59b542f6a209d5b635805f32b6ba8e97ed46c9d0b4ac7d DIST language-pack-my-base_21.10+20210514.tar.xz 704552 BLAKE2B 95cf3796f2a13afd701fc4c8bbaa9a55916bae1ca1cfc6f00f7a021dba1cf15f6e0b3f247484ab092e1fc4dc39bc6c779ad3429aec8d455164effa5cba56cb8c SHA512 e6dbd8a60728080e5694cb67b06cb70436817564386f8aea54f1c35681857c534b2d81067e830f3a75abf58575d7c207796dad6801dcc373dee0d3a82fa0fcd5 -DIST language-pack-nb-base_21.04+20210415.tar.xz 1366212 BLAKE2B 9c24587ca6d1f91367c4a1a499974ec0d34641d3e3cc2fc932186952dca4a5ff32542af07bfc3df782f2fd2b8a6fe3216bb8cbc476930b1d905e3bcc1566226d SHA512 508ca08b4dbce794ceb3f72d11f0479ce9f533b7a914df5ec09c72a425beb8f58d4897a507b39d8e518642fada9e64cd0a3fee6467822b318a4f8d5ae850a502 DIST language-pack-nb-base_21.10+20210514.tar.xz 1368120 BLAKE2B 8298d37330dc70564f994c0aa099a45bf20e10df291c422430b9a5f5099210c920b0cd5fa95fa69ec9288bb81b120af436cc852acecf8947443b75f2d557b630 SHA512 3ed5b28497a0799c2f24d0e62f4573ef2dcbdc30e8e76401d10cd7296c229911f06e99aa3be1e80e9c66948fb15a90ead443d50b9cc495f9db80dba2ecb47318 -DIST language-pack-ne-base_21.04+20210415.tar.xz 602144 BLAKE2B a6515993c84482b1641947d4a8fb68f51e2684e7334056db1a3e81729b3b4610d8f150fb34e785daad37591d459d8587b2fb978a267c24e646c9c2c44fec6a64 SHA512 00469acd80d1b8530dd08ef78d88721e18a5b791269831db495850d39badaebb54f8edca756095faa97e30480da08bedb39c9898c4361fb66c207027e0734d9c DIST language-pack-ne-base_21.10+20210514.tar.xz 603576 BLAKE2B 9b673c1733cb41dbe90efc4738a55828d77211ff9ab1caaf34b65d15682e7f3cb540e873ae5997de2d2741e6698c68942ceb89ddd6b554d20ce52370d996479b SHA512 0f2ed4a75a5ecf764051198b226cbcdb31432d196c7df576335f5e0e5cbf51cb1737e4e3becadb1c64d07918f206b6471819851623d53642e024d258bf43a321 -DIST language-pack-nl-base_21.04+20210415.tar.xz 2109028 BLAKE2B 45d55b53c4cc1134b5a8c360baa02bdbc953c9d6a12e00e5786a37d9bd2ceddcdcd87ccf12671a78f4b2093a37454386570fe840f5d931b659070d2c9e0e4a68 SHA512 b554c81051cf071d5edf7c7e10d730c97998efa4ece9a95c1464b23f4b6e307624f3aefb761c845d0211a39fd7f9b835255d24b4d44539a8a1f1149e32e4b994 DIST language-pack-nl-base_21.10+20210514.tar.xz 2111172 BLAKE2B 4762c894a964ee27d9c50b1e180c109aaa1e2a0be9ceb8f394ed8493f8812e94c064ab51bc6463fb03fe1404134c70e001f62cd9483e75cffb89a1eae7840880 SHA512 78912fa392a5e362b163db89f10b592ef04f800c634c4684bf1971321830b2f5244e18aee129a65a897dc3dda703c822041f57c517685313dfbed3bbf44a2e84 -DIST language-pack-nn-base_21.04+20210415.tar.xz 420204 BLAKE2B 4e7bfcd75c5709371fb8b4e3d4b39bfd5339f9d440d075e4834d6ee4ce51531e1f637139b9c09a55696abd92c6b06ca1bb5ec1725385b8016bea747cb9a22a59 SHA512 30b79321f64f899e31604d64acfb3d9180ee179731728615990879e6ac8f6b7446c57d2a561117eb4cfe8dbd268ee475d96c6e0a44cda39eff8f752147349eab DIST language-pack-nn-base_21.10+20210514.tar.xz 422456 BLAKE2B f11d0870d137a43f8c1394db6154d61bfe8f7ee5b3d6f44d2c5fde76ff3ae5ce71284edd519ef8cfc1f5bedaf0f6d082180dcff73604ec8ae2a809d2a1181ee2 SHA512 f56619b889c027fe9bcf1d6105a329e76a0c8c4b38b6ec82c1cfb7c14e2c78c82fe0434b6c31eae21a072a5df6984e7528f819124bdc929ec7b6ec228cc282c7 DIST language-pack-nso-base_14.04+20150804.tar.gz 149341 BLAKE2B 683bd295af1197da286fe261af665df4d4ff66cede8e54da78423e5f781458805618dd6bf3d50a77d95ce21b0614c001b031bff45f7a59a8aa8fba0d877b36ae SHA512 c30c3ea2d7e830af404c7001b47f6b1afb16a6dc82bf497e69029a3ca821144e33a02ee23a44004cc181c6f90b2af457754f773f5ddbd4e05f39b52cacfc0c89 -DIST language-pack-oc-base_21.04+20210415.tar.xz 2579984 BLAKE2B 299c3ec7a07b70af7c63d6d924dabd16a7f978300f0cea8fcfcf5176c359dd277f5603a75fc2a02d945422f2129984be0916d47e23a80242259b14b795a643b1 SHA512 07f9b47ad61924fedd99737bf689bdc05c039dc521fc0f6593faf126879d2f26edaca5dae64a74cfba65cccf9dd0e37c1637b5dbdeff8fee227dd326403f19ba DIST language-pack-oc-base_21.10+20210514.tar.xz 2590372 BLAKE2B 79fedc5512aefad182a6689c8ca8e3e5939aeb019efff5105c31f9d051ede7ca86d6a36a1dea121db384a1199dc4dd11b7fa88c1324ed07f3348b631cdc04221 SHA512 18266bbae70db8822d7eb1adf974a495db7de1da0f4e15383ac68f5bf797f95dfaabf1ad6c71600062233ce36c5cefd86ba51c69d2f5024befe2c1a27b225df1 DIST language-pack-om-base_14.04+20150804.tar.gz 15814 BLAKE2B bf4781fd6e044842cad54348128b406d60e995ff9256ae46a31af26db93f5fb36c48903ed3fffd53c119e5c22c590e98c084157b9b2ac273b4bf7afee98e42b7 SHA512 50c8c3097046a2347fb5ccd4145d66be3e59634c466d8fd8598f5114c5251ccf36ac24529cce90f64325130ee4661479d2a419188307206e7ff870605cb8bb66 -DIST language-pack-or-base_21.04+20210415.tar.xz 106912 BLAKE2B 5d1a43395e6d5f2153c7b1afe13558ced136ff5f8b189399b1b2dd83883fcae3abda65bea0d00119dc01377bea5ab20f90763b79a81b017bc6330712e058d67d SHA512 5510efc7bf4053ae532230c4b76890cc43b516b831aa306e52b72cd5d23de178fe6154a48e72162d02c301acfc232e3d4aa3d80c3906a579ba48f167060fc3e3 DIST language-pack-or-base_21.10+20210514.tar.xz 106912 BLAKE2B fbdd5f8097978149a4c1afa7031ede070cba8e1fc43dff506d12d8a987999e23c3a756f4d8555b361d60bfaf874821e1d769e8a7e4685f27da7ec2b2b98dd0e7 SHA512 1c71ee57631ce09ae37991a1e6877da93f3d22775d9ed44dfa35e20f31f5f4781d92d3a6bc968275a03a19d144a80089aa120c607231e0a07dde35e0b586d990 -DIST language-pack-pa-base_21.04+20210415.tar.xz 359788 BLAKE2B b0fc8500fee57df06645787bdcdb1124068192444007e0256ee86593f5ad767ea8ca02ebfa5484ea707389092d9f06dd375e3dd056f603d53944676bd1fbe9e9 SHA512 deeff8c8579f3f22c8c9b252668618a695b9fbd7792b0ea4198a928b719ad1533fdd7d5a933ceaf7f3b955df197a55f6c6aa5f57816278488ec0b6981a2751af DIST language-pack-pa-base_21.10+20210514.tar.xz 365972 BLAKE2B ec597cf16cabd960ae6021bf80fefd56c7c32347096f8678fd7448d1a50e1803811cd16528b835fd30324f2c9eb3c4f28fe3fd128bbb7b436fe35f1d1cd3e074 SHA512 20bf56d4ba587f33a75f4017324f2da87cebcb298ba8a9959a5446b03436ed918bb3c7a4d6728e4edc76d00c1f64a765a5b2c24f0a3bdee883a61f940f4141dc -DIST language-pack-pl-base_21.04+20210415.tar.xz 2446000 BLAKE2B b7188489591293d3bec2ad96d26252605ed4616609eb00716fe5b496a8692f891ff8bd2eec01cf08b713bc6fb74e5bca8d15984151328b8e6425fd5767cc26b5 SHA512 49befde034ab429739dd2a62bfd6a86ffc2635d4203d95364bae3242fa9a9ca8ddbe95120c416e64dc52cf949e55f1ccdbdf95b812ca25aeae1505d79f099714 DIST language-pack-pl-base_21.10+20210514.tar.xz 2449448 BLAKE2B 4075628ec329908c8789ac2be13f2cdd1ae9ffb978dd344f22455a505cd8864e3b1cd6b86047d525110860a919afcd24a5d4871e5c2c48771c001bca57bc9777 SHA512 3b62dde0f2b628c5f0f7777791682bdcde570e4e740a2681b4613539f1d99d121a8446745cde02236958d721279c4f09ea8659ca7d3e7bfd9bfbb79d37ad8f1b DIST language-pack-ps-base_14.04+20150804.tar.gz 110721 BLAKE2B d52f4ac1fd554c851f8318b4942df9b343c42dee5a3823368da1d5d56023e5940f4b3ab52d3943cc1745303d4e77259466e970cae80eca8c9b0ef0eafd04fb4a SHA512 b6682d6c7b348475458f6cf4b24a9fc3ec0b5aed89aca1e484ff2ad7bf5218300a0feb6284f1a1e8f76c1e1b4b00631632130377eb3877e8033e34004473fbf3 -DIST language-pack-pt-base_21.04+20210415.tar.xz 5617712 BLAKE2B 8a0e84a7fe9163565ef872e2f1aee0e582662b0044a72f5aec0fe39d3955132a8fc85bcfc5a249f1490f343f84853ba656948bcb506c08eb658dff3c8a97c555 SHA512 37fdb4176fc9ba3eb5667222670794b5feeb2e064dfea08bee3643bf7678425598d7e0bc3f33f613b50e1b3ae2b38d5d22ddc31a683a6e4ba028111fe4016c62 DIST language-pack-pt-base_21.10+20210514.tar.xz 5711100 BLAKE2B 23b53a5d2acb4ae842fa4b61b5147a1061ecd25cbf21ec67c189b1d618c11b8ca464cbb13ab682096ff4831213ed89079cd27d287934cd58efab5cff3a13db79 SHA512 8f1f0f77bfa4ef36155dd18faef8bd18c32786730b513adf7285e7580dd98437c2ea4115cbbe5d9caca434e1e18466f24c32781b22ad3bfae0ae717956e3a5e0 -DIST language-pack-ro-base_21.04+20210415.tar.xz 1537984 BLAKE2B 724430707e9126ee124c908d13b616ea5dd615ec4f4bb402a108f9eca9516dfc8b55f355bde7aa11fdd9b68c6a1cba9a12770f1f484bb27d00bfa457bddd3254 SHA512 db48eeda9c73373174d496019535654708607ff98ac59f3df51e89e3aedd55202c9eae513079c776cfe01429e3629e45fdac61c49185536ee083c9a0c6ae85f0 DIST language-pack-ro-base_21.10+20210514.tar.xz 1541620 BLAKE2B 56b37c0bd4f993ca470538faa85200b6bff1983066f5692b148bda0e8fac3fb1cb655edf0b005e777a93ecb1a1c12b6c14d722f4f0c411736fcb6fa068f79138 SHA512 f00aaebde6d04f97fc5affa15a4f10e9c28d2091a74aa4df54c4dc6737a2d60a7ed10c8ee7d090e67785687ec68510c27684b2ea2c8cbb6eed55449be60b9f96 -DIST language-pack-ru-base_21.04+20210415.tar.xz 3441324 BLAKE2B ab7d23b9605d14f33b764869362c6af6fdcd638c71bb89053b047dde16c4a959f2cccfd5a017bed3a9ecf3a65c5dadf29f16ad75bfe5ec320b935e8cbece64f8 SHA512 ade7c2afce41ae161a1e8dca26ecb5add23ad845b90e6ebae4d488bae803685c3795a7f644aff81fbeed3ee9cbd9206995c58c91395ed557335eb43cd61fe77f DIST language-pack-ru-base_21.10+20210514.tar.xz 3443340 BLAKE2B 890d53cd087609b6cb2eb9f37c92336dc27ab7ccae9f8ab9d7045017934f7ae16243aa1d93fd361ad33b08f6000ae5c0444e4bcff565772998d83fbf98ea56f8 SHA512 4a5f9159b88b169301a72e60072527be0fdbdd271b27a201e8e8aa160d5eedc73005dc00391447a2c0ea0ef7b6dcd45c7831029ca226e7aea53718f40882722e DIST language-pack-rw-base_14.04+20150804.tar.gz 446568 BLAKE2B b5b04945741c1fa70ed2e6fce66e0c9742d5afa316c9194791ba964859d751c92303e16650211261e38b2ed2466b40a5fd60e0a102c5349a7df9d624cf327b49 SHA512 2ec8049e4a9f9971b8c01103da934446ff66a26806210aa4af4d40a715ef0a3d8b49ade7d4f3355e49670dedede2b1bca3bb5101c022b6a7d458b1df2e9ff9fa DIST language-pack-sa-base_14.04+20150804.tar.gz 58508 BLAKE2B 1c0bf525b9ddef064992279f2a8af6339c24612d2a41c9b916d59c60c49a4e2c298be27de99c1b4702928dac9623ff5a5a9feff736c8a82184d7f00b2486548d SHA512 a453cca5a2853b33c756a376aacc678b72bd9a9335536cea1e315afb62fcd09f0363089087c5da838b4bd081a3f567dd3f125cd430efd1921d42dd70c45ed22b DIST language-pack-sc-base_14.04+20150804.tar.gz 116549 BLAKE2B 0095fc4b9eb0af169fa4cb8891c39612dde42a8f0e2a3ae6378063f1a8133f911efdcb3adfb96a862fc63e6fec6579a6109b31ab6a97656568ad223f8351fec0 SHA512 d0242846df563df893c2a67768c4c6f805496b28dfcbf2a8b48e1b634e904b9722772915efba7191adcd576ba10544bad12400bffdf2d946dbf32c663e3b2f72 DIST language-pack-sd-base_14.04+20150804.tar.gz 176912 BLAKE2B fe426e4c68a4c3d73014c4bf825ba462942d77ceaf08ac9364ac26d00666815f249c646a3ffe45ed9b834a1b6b6feed6dd3752828f1e7932e425ef6e2aea4e0c SHA512 ff3ec215da5ad78e55721055544783daad67afc2824034a9a3f63598db1b7cee726b4d35347d6aa3ad13a29f724144a13af42c0a1b6cc2c54e2445cf1f7ef2e2 DIST language-pack-si-base_18.10+20180731.tar.xz 336508 BLAKE2B 24d7ab4656d84f342b9c66279a2969d759df71d4a2d4f6286cf581e65a0cf46365feaad0137bc694bcf604bfa3a22e758394b1ea3faf45a10afeb8f579453ad5 SHA512 824a83605373bff185b46ee04aa270323770feb13161e9264d9901ac3e8dd62160bc539279da0301074a88dea2ac16183b66b136486ec9d4a2544479c57090da -DIST language-pack-sk-base_21.04+20210415.tar.xz 1475980 BLAKE2B 19892909736a4f2b2d27acae3e7289bea5827d5b4f5b11ad78d063cfbbb554165dbcc60352dd909814ec48e01101b04634c67e2858a3a84e968cb3c9453a36b0 SHA512 e5d439032a366e43af25962b24380ffa5897b6ed4dc744ad933a309ff1057d897b7df77121769462cf3cb07fbb38d73861bec8275c35a71a6abe577e26ac9f30 DIST language-pack-sk-base_21.10+20210514.tar.xz 1479124 BLAKE2B 715f7d06266003f5860cbaaa38758a529c24ebbdf6b0003a7d4e9ef4942c096ebd4a2feac770fa2f3b7aa719bd282924823c2224ae70f733144809038bf65517 SHA512 29b92c779416b68f1cfc633ff196a99a34f64ec0f6cec2f9238d37f2c7a10390133eea694c735cf8974f1371c62bc4da2085f3d58dd7ff29e030ee8bc94a84fd -DIST language-pack-sl-base_21.04+20210415.tar.xz 1559184 BLAKE2B e7e00a3154e38a15b619004e2e45f0875f4c9b118f76a51438c86f3cf3bb270161278a8946485332f25f1c30a07d6d3c8b061760f1406570814f84f5d75235ba SHA512 c164b22b628e77d9706ce2c0d96caea0e2ca4d4ecd521bce0f68806d2101963c981c0d80263af06581e58862010e210c2f3a0c0649c374b84bf3f29a579d15df DIST language-pack-sl-base_21.10+20210514.tar.xz 1561032 BLAKE2B f26e4f0d0528d7248466809ab6138245b68bf0ef06f267267ed02e8a4c2dbdd748b3c863fe30a511c326620182f63e64710202aca34aabf7c979815f11122696 SHA512 09539f679773ceef0f2cd191ad125f3a3ee114279b259f36869f767e5012899c3a6119fe1da4125108c44c74e2e65b7d6c0e2b357122d7b73323d9e02a3dd737 DIST language-pack-so-base_14.04+20150804.tar.gz 12445 BLAKE2B 2914ef2b43cde931d469542274d83bbf92bc971c1aa89864fc325a3d7feaa6d3771a357c0c95b5dfecec663e7dd01b45ca0fafa82f8d2f2e04413380920aec28 SHA512 a95d40a51708faafa146afc97d8f35d605b7493d93e35c856f569376e449a96aadc1f374a8036bc348072cef284fd722dcc3fcc7af1e34700d314e746d0f6061 -DIST language-pack-sq-base_21.04+20210415.tar.xz 2224516 BLAKE2B 3ff0deaff5b72d58c4e3ecb7796f404232ebbd551aa0a2973df6bc9cba9fb38cfe6c6bb2573a949ea8f4c15be7964216e2a93b103ba54c078b27ce2c6626a33e SHA512 b5a6bca7fac187335738dc725f01c5e5946fd8e12f4a3192a0b8a8ed1705e239f464e4e03cda3f129ccf6566b5e204240cda1d6e1170cbb422094f5a536f0ff1 DIST language-pack-sq-base_21.10+20210514.tar.xz 2226964 BLAKE2B 3f635fca1c67ae7835e728a2e4e177c27d27982c3363f0558c6f99784b4627fec771c2ebba293544b55c24f28f070760f52d3eeda88cc3c0a03618986dca7085 SHA512 6f75a828ae925dc3ec5d3b10ea566b048e13ac8187a9298f319141cb67e1eb861d270abec379251bdc41d070f1f8c2cc9cca8bac7447d30195f4b288c84109a1 -DIST language-pack-sr-base_21.04+20210415.tar.xz 2007372 BLAKE2B dcce9935df3f6b7be7ec487cb5c5b31be0dfe55513f02cbad7e3558ee025af5e2e00a60f0b46862177808e0df375a30d3cc669aaedbecc3308806480690ec768 SHA512 0d5b2ce89db0ddefbcffc9043fafcbab2959e44d3952213d917627a0e6d037c81ddb051312c31ddc0e5ec2cddd9af77d5e9aa373fc26e6bd79f1818ee9e589b6 DIST language-pack-sr-base_21.10+20210514.tar.xz 2009224 BLAKE2B de722dcb78961946e216d1cd532a1042d67b90b8859fca19853f1411947c2078622c9d74732d068a2089db7c063a46ef4bf9c4e144a24e8678d7a71c82842db6 SHA512 aca6e2693944b4492a10086d9d6c31dc8843210945e9909b955872103260f17ceefb6b6a1a4598dfb3ce21c53cc8a5eb1f1f1d4d044ca3aada2c339ef5ff69c0 DIST language-pack-st-base_14.04+20150804.tar.gz 10639 BLAKE2B f4c9ef807bd60ee48d30c7592c4787477a8dd0352ecdaef50ce18400abdbf1df6a95e8ebc13c30235900c07bba86425dd1571805f5712a8a21db94b5b1070012 SHA512 8c21764b1fcff6f16a3aad289ed6130f344224a9a906877c11b0752240ef352c8bacba487d6e7f37b8dbf323db80280b1ced6416405d68a5bbf8a0f9ca063de6 -DIST language-pack-sv-base_21.04+20210415.tar.xz 3223360 BLAKE2B ad9de3db968ed9e1302911286c4f0c916d427e9ef6f2d5cfdd7c8eab819dd6270d4438fbdb4a0b595a7e9d807f1c6741ab2da21e68176623fa77cd292e7282f1 SHA512 8ff6212eb6c090048aa241f9ea6539e09bdddbad2631b310a66b5e725297afef9e6cc6909bbbbae139f7f38406301a94433b30ecb0a772277292cf87a3ec2d10 DIST language-pack-sv-base_21.10+20210514.tar.xz 3230636 BLAKE2B 9cd1ea83dbaa833f47c65da07fe6f0c04267aa2c222fee1884385a0408facc414514c1dfc90e02598debe2e1ffaf7d4e35c16a8cf6f6192faf0fa7ee9c0e4b61 SHA512 52c29935d3cb1b5cdb7c4ac0d7f770ec0ba1d0ceaeacf18d1e3fffe3f3c4210e7ba3be535b0e32f93b2aeda25c48928a4f91c4ad0d5d62de178048c628d45fd0 DIST language-pack-sw-base_14.04+20150804.tar.gz 103564 BLAKE2B d8db1c5fd0725ac043422cd754c50f87bf07e8307470899aae937aa35c248010136ae5cdec9b8693032093daff446628d5c9b9d5bf436bfc03815d9200dee31c SHA512 0f7660034f50a810493fbe9194452042f2aa30fb63c900fb4478e53d296abff278f16ad7c5d64c493aa66eab9bf69b65556f9a53845b0c9e34ecfab710693357 -DIST language-pack-ta-base_21.04+20210415.tar.xz 415972 BLAKE2B 727b6da31c9dbc0ca97bb307f48957569ca1aad5625465281dc6e9e2d4079798e504f4d9318c3210b1c79ec2a13400c9bec2e261eb537c68ed89fe7bd68ff7e3 SHA512 e69086dd5bf5c0f4fbe5c557488dc025f76a6e07f8824ca1f2a43223b9d30084625b68bf7426638bd7f09c346c9913c88ccdbbc7c2a47c234295e94230a097cc DIST language-pack-ta-base_21.10+20210514.tar.xz 419796 BLAKE2B fabb371ee345e4fa08b090a448ed7d37b5cee00241fc7a74c28467cd84efac331340cdf85bcbd90494c95ae2fe45640505d5db37c41641763b776b2718fe90f0 SHA512 22474d408b2ca65ccc766eae047ebd97000d7474d0c73dc56f96e1ce94c88bb91310c360169c4a7494d9cdfe8a6b8078a7b5b0a5ed1590ce455072b1064036b6 -DIST language-pack-te-base_21.04+20210415.tar.xz 384004 BLAKE2B c8ecdede8733448f27869df4f51100014af44dc76eba9819dec5e453850b7b43b2054467be8722c35f0a62b55c5f9c4284625d53765f581f832f371bbdcccfd1 SHA512 d94a08b09035410309b9b958b7839ca6c85f0754166ebba7464923b6cfc0620c7ce7cc47e90388e65bbedd2b090ad668416d8177f0491f43af7e8573fe6cfc16 DIST language-pack-te-base_21.10+20210514.tar.xz 388320 BLAKE2B 33d94a2346efd18b1203132f4547d7a2276b1931edc2422e3a89ca8f5726c4025c36a91230c1351878a691d150e8784c0b87e9e2974b5bde3c17a813ecaa9bf5 SHA512 cf98c4b0dac4bb4d4e6498e459e32636c5c94f3a226eb8995f7511e7d2b1b6818389652553e74f2d5e80e84e8bb7a0e51c26541ade551b0a750e410775ffe426 -DIST language-pack-tg-base_21.04+20210415.tar.xz 281092 BLAKE2B f41c18dbda37a36da01c08955d2144fd8e485c3099aba5a6fd626c7893e760d0b26261feac5826a81b1a872cc3fa9abe6a884f5a9425a71653f23dc70d748cc7 SHA512 9917854ee419d67dd91db7bdf342a6f7855380f3daeceeddc6a843f4176c31da925729e8a78df1ae63b7f2e33be29c576b0ff539c3a20425959f5579b7389c47 DIST language-pack-tg-base_21.10+20210514.tar.xz 280808 BLAKE2B 7932a9d7b7207fc76b1db94a4f72cc72b424358f2be15d73e13e97204f728e037b6ca30b8a3eba4b634f8c3c9a1765442826d7b17aa4b59ffdeb10b251e70099 SHA512 58c9b4b5eb4800389c0bb5b520692f94ee34571699d102dc910da944797dd07574b6593f02d11b4b004b6532757ec6dd91cbfca18fc6ffef0b7fd9569563ba63 -DIST language-pack-th-base_21.04+20210415.tar.xz 649840 BLAKE2B d6ca7f90d21ce4b3bd13f107ae4be56c21c0d72dc36e4857a46668e26e3e78df74c99330d07df7db59c8dfae1cb5e198481919e3b4d1420c28c3c50a3219a372 SHA512 049a289e3ee3555940e88d66f693dcc33d3c1e5b4590c4aa6158e83aa5dd977f38c164aaf78dfab8f8d38b32227c15b1f0121c7348482d3c120992f29485b751 DIST language-pack-th-base_21.10+20210514.tar.xz 653756 BLAKE2B 2ab61fe281fa58418b8ebd7b0c393af65aafa3d2d0ffb7e074d3589877ddfa1e517ca29477b8764378dcee2dd9e097090876b81898d174c1a58b88017997e1d4 SHA512 9bdcbeb778e7ffce9533a030144a1ae9d9dcd7db75af2fbfd148748f9616cf62badd4048addcc8705caf5770dffdda609c23d7243d7d62016adfc7d12578d26d DIST language-pack-ti-base_14.04+20150804.tar.gz 10662 BLAKE2B 0f6de36bd193801e870c806545d532ea9bf730b5f3f12c977da27daeaa8a0ab20fe64b1b412b11aa703abf9a728a8935ff7e1490add06ce451efda5c8794f8c7 SHA512 24db013469b6bfe57d80b5768e9fbcc46d8aa01a17b06a2ed7e6a2b04f409dd4f06b3bb5c13f89f6d5b57f8d3847e75d2fbd5f14500e8b2e99bf0ebe18e09bbc DIST language-pack-tk-base_14.04+20150804.tar.gz 8650 BLAKE2B 775bdc47da744da9654359c585e33d3966738a11c9a734f6b60689481d2825c82f7f208ce9a2321eef13a1d8aef18a40e60812ad899d0a77ac0c9f665cc59480 SHA512 d8a599c7b8b73c7aa588fe96f6244f18a452a27428c6991c43b4724f91d85c3f9355dfc10b1a04376c0029c4e54cc8665cf8ef094a4ad26192cff710d45e2d67 DIST language-pack-tl-base_14.04+20150804.tar.gz 165428 BLAKE2B 4c258d5ab0abbf020511932e8207c48459dd7b1b5a258bbf73e17abd3137b27b6536be55cdd7a53f51ae793dfaf0f217d1d35ef716addda9616350b3a7968cfc SHA512 f776e41c3c41ceef9565194573e950b7bd884be0284c0a188bf9d0360fb0b3465c138b42100624dabfafb0e7206ec35e0fd7ccc0b0fb403e93eedaf5c4318f60 -DIST language-pack-tr-base_21.04+20210415.tar.xz 2953628 BLAKE2B 7cf3dded348b69b1cb8daecdd78a59f717ffaeb67fde2e6d71a540e04c191d6a42a88fee1623ce19fd67fea85f11eee7de290863e4d8d63e7e93696e7625b0f2 SHA512 ab6269a54c9ae9b849bedf68c48fdc5475f945bc5a4e5c319084fec07feeac491f008b473e21769c86db9de752937e1c34153681021b4be18977c7f109975fab DIST language-pack-tr-base_21.10+20210514.tar.xz 2956004 BLAKE2B ddfa5d96560c5e8fff386b91b3244dc5816d88484a09a4934ac33b93aacd207c3eab391f4f1c985fded90fe5595f99e1f3e2d4afa3cfb503a2c4fefc88a1a954 SHA512 e45ce67050828de8ba8ba8d7f012b4c1bb8fda6b924041edf60f52f58def7b2c0a94e3be61f2584b7b3f1cece27e3411f1d66cc60a32f4c04a7a584cd33ca802 DIST language-pack-ts-base_14.04+20150804.tar.gz 11699 BLAKE2B afdfc6600416c7c9b3b59ba1580e9603a3b50f6c52ad81e9cd6411c23146b04b73d84d96970b74a4ca6949cada6af867cd9fbd9413499c77802d86d6d7e91c1b SHA512 552b291def9e2009fe64aa9230dd801b8317d6cb576194167b0ff0861d20459d099c911d65c0d0063739eac1f31b27344c2111c02c002dea3329fd7dd7d38b17 DIST language-pack-tt-base_14.04+20150804.tar.gz 111264 BLAKE2B 0cee86ed7ea1237664b46c9ffa13b6683d50c220c9aaed7b2efce91d6ddf980281c62af9d39fe92707175c42fe42fa6ba9826e641abf178c7962fa074c3960d9 SHA512 4411aaa53ccbbe004a4de8d447e30fcc5ca31fb032551bc812c58ca57e5e964e27444adf7c58b318ad48612bed76f038632ade25bbb9ce0c3bfeaab482bc57cc -DIST language-pack-ug-base_21.04+20210415.tar.xz 2009392 BLAKE2B 6269b959126ff09df37904bae5f5750c7ed582a5c722d32b19d83254903553136a9467946e6b08a001339cd89a4843bd34779010c9088c97f3f53aad2ca2cd79 SHA512 36ec4377412d97134c5eb6e499b95971f84c1dde3492e890fef6d35767c385acecc033956139daa6dfce305a8596fe41e6325c99c7c6dd10099e680fbaaedc01 DIST language-pack-ug-base_21.10+20210514.tar.xz 2014424 BLAKE2B 5cf11150e9dfc4c5cc0fbed2582ee94481b27f8b59b417371a06da0c60e875bb8783c866912d78695a1e15267a82cee9b584d2c5fd312e3ecc5c89b8d129c0af SHA512 650dae1a17fd79b51ed1414db15dd5b0e4038321e5acdb1517843b008486cc5bea8d1ef738d7b2877bfcf1fbb7f5cd4f5c8c4bd1f65de17e4d79e20674df7f12 -DIST language-pack-uk-base_21.04+20210415.tar.xz 3871208 BLAKE2B cf0bd4cb19a71d313c0fcadd01f75ab794064354e739a8fd595475fe166210b356b7dfb4b5caa6e1da2ec7a231b1f0ee0ecc18491711bc2f4c1e1dc61022bd9e SHA512 cb9e3021c3b77eb9b164402259ea5022867a61dead5170e02d7bce3c355a5e6793788aa15e37786f51f49c350de4bea424d6ef503b5abfc69837a3552d6cf251 DIST language-pack-uk-base_21.10+20210514.tar.xz 3873360 BLAKE2B 8939ea6f8ccf3f33888c01e206d0f35223265b694f14a7e11e1ce12d341f7c5eb290e74b4f499dc70ede5d5b5a9a9df256044ca2340b0177b64f99b17069caf1 SHA512 d78d68178e89ed0ac199fdc9ce3002182309b64ec10e2b6da17a82c286ad93a8c1ad26fa61d6bd515581956c76580e93f58190cfff32af7afe7f35442850b1c2 DIST language-pack-ur-base_14.04+20150804.tar.gz 325881 BLAKE2B 51a4c7243675ae7623fbf2e6063ca78008d59b615f4ca436c3936cbc4f470c622629f24f44e9dba16cd9242b2689e815eb26a374eab14467c46ff97c434e123d SHA512 188f66d06798f333f2517df33762dc19d8af6ecb05080eb0a2d5aff8794e2744990ecef3334fb25afff80d08b62f7b693b597cdfa0c1a2c9a90c585923cc15ff DIST language-pack-uz-base_16.04+20160214.tar.gz 394455 BLAKE2B d1103cbda968a98d7eead5a487a59a5f4afbd0fc1005c2a07f955fb548b4d8c88f3b104a7837335f4dcd116a27bf35ade5f7b27e26457e0e1d9715a8195e9372 SHA512 70eeb148e51f183a97c908975ab4c36fab9a5855f12bd6f9717bdac16db9724b504c3414329a1cc2c70c4788e0c97eae71932756c89d17367f1d65fc7bf8b3d2 DIST language-pack-ve-base_14.04+20150804.tar.gz 8676 BLAKE2B 4ff7eeceb275a6d2f1a2b92b9fbbdb4ae5ff970eba9a2525814c3e7647deedd20aca5bc140662bfec55387a5fc3483c6f5992e7d9f2cb775baff4a995fc85862 SHA512 1976ccf11272d4d2a24e6eb77be20353240762b0117bed1eeaf7a03681c456fda503909247ac087d7951e400d35b21c8fca1825f2ba65adf2fba3fd0e5922804 -DIST language-pack-vi-base_21.04+20210415.tar.xz 2010996 BLAKE2B fe68d0d349c591347063e4db448bc920b79aee70ee032ba1b1ae02e423ac303665d88f2b1bf5e1c0a0e54a3efac84a2e8a6f7b5753fab1c740c2eb5581600303 SHA512 a9fe40a0a68bb8a3933bcd17b5bf0bac51af7f6c2974539a694dc928edb0eef2974418498f3c3976deada7c7afb99c51b2fd12b4c0201e282320a3808d04a3af DIST language-pack-vi-base_21.10+20210514.tar.xz 2016508 BLAKE2B a28b25e6746c16b31103dfd4c9e7d344d1168f978650dea68640eec1865ab671e22e867a4aa6977a5a6d21785c8f0636ca5dbf7de41abe93d7a444e672363151 SHA512 488de20cf4c29c921c97514d0b62395ddf67d15cb61f5ae7c7627e9b9a7650fe8e64e33cb6f2359963489966c1dafdc063a429b98d0c9ab9d45409a2c8723aea DIST language-pack-xh-base_17.10+20171012.tar.xz 25172 BLAKE2B 50f22515ca8c4472ffc46a9e24053b2181e27922d91f61fcfbf2f0c2035380960eb869e2f34b536ad0efc29e07b1d34c0cfef0e2677434449d787ad9290f9c18 SHA512 cf97e189ffdcf888eac01aadf73b8fb9bb4d41131e25ffe25e5e582aa0d9bd063eb31542fe18e91468297f989f331ea28de97720f1c4ab21375b037a8200654b DIST language-pack-yi-base_14.04+20150804.tar.gz 10930 BLAKE2B 43938c346ff4468c244f7b1df5512e942eaa8b06f57a88c303cacad426ebc5e53156cfd4f30bfd68076ff0c0cbbaa978742cd3d8960a34343081ab7f59852a43 SHA512 9f06541316b9fc1eefb07c3e97e810dd006a59f4386ad037b3b64f39efd62c1528d29efebbe41aaf17e5eb1d4ba710f23bdd3f0605b477c78ff198cf315b17cb DIST language-pack-yo-base_14.04+20150804.tar.gz 8703 BLAKE2B 9fb7128b4888aef7adc712c77ab514a354354cce23767ff8d5d2a83940fcef3e3986be94b56cb7b9fd2830b5ea40f5439a44aef8f8bd2b301ec482fe8e367373 SHA512 da04d0e0e6ddd23415160567a08b9f18859a7650f555534bda6d2d1b578a7fdf5992ee42f94d6b2a7ea6dd2af00224a371a8640e8c56c3385e59e40813df7e29 -DIST language-pack-zh-hans-base_21.04+20210415.tar.xz 2829164 BLAKE2B 6c02b64a30565867012b4648765e92ba43c600062af5f31d234247492665fed538c4e7fa2b04b5595b99c1f1fef72b07f24929460c5487282e1fe42a34c955cc SHA512 0e4194ca7fa634b625618af4e41ee8035222f24a5bf6abc16d79f20a8d8eee4905f5b47306b1133c91c6e6438ff05e8b15e8ba4282c9a0315cfeee301f4608de DIST language-pack-zh-hans-base_21.10+20210514.tar.xz 2832216 BLAKE2B c566d315b6308dd7cb9e5e3a50fe55d66317835233f043107d377a88bc68c5323a51e7b07f1e4085820b8bb4a060d0ea5d62e093894a3cd5cecdafef1425f273 SHA512 257afd435d39b2c65372a11eeddea63cfe37cf7d35af0b597ccb8cf7566b9e18cdb2f3131c085e73ebf8d7e3606d01edc0d09e5388fb601340d2588cbd6abd28 -DIST language-pack-zh-hant-base_21.04+20210415.tar.xz 2801152 BLAKE2B 346d82fe6d6c4378022e0b8c56d0969b44fabf8d6155e113b89cb92a2bf34403ffe77c01a40b4a0201dfed3795aee5e362ee09fb289d1e2888a2f8f6651d418a SHA512 20432afd629346be9738dbe7b82c011feac810900f54444b04ad3361954b3ed2be17d36f74fb3527b73856a12253940cec92b584ab0bbc7e7a6147fe64596feb DIST language-pack-zh-hant-base_21.10+20210514.tar.xz 2806172 BLAKE2B 17075f1cada349084ee9928a37a36e488c663bf4836df0f9d3c03519c8fe3855304ab6f6f8d1b4a7a06bc691ce38ac3ec99602f2d2828b4e211ba25146c9c05f SHA512 d79e8825e808fac4344083c8a9cf4951b076dd828a3d31b0517156d6b1bd889819dfd3131ae441e520b4e7f17b91c0645155704b4578e4b38002c3995af263aa DIST language-pack-zu-base_14.04+20150804.tar.gz 250947 BLAKE2B 57e8a7ccba411f222af27103184bc59823735c6a4c0315db641405c63564aa7151cb40fd4f79596ab574573ebfc53545a04a241eb200afc4ed21f8a43d4654ad SHA512 83565c4b52bdec2d6c93ee31160d2173043e6936c6152e7d818b5b987d2e82699405a61751526641ea5772e80d8cb676f25b9d011af21b60701086b0157bb728 -EBUILD unity-language-pack-21.04.ebuild 12209 BLAKE2B 78fe214237ddb99bacc2d759ba15bbdeb186e90c7c5676540fad70fc531aab2c5345d4098e81e7ab403ae49bd1cd0e0a2d33c177bdb35c86b8f6a001a5bad34d SHA512 1ea058810fa2ea971c29efd08741d45a6f9e169a8f78508b1386fcf5ffd9da78e013f4035db7fce74f4de12340a0fab298ffdcc787a04ed4746ab88b384721c1 -EBUILD unity-language-pack-21.10.ebuild 12209 BLAKE2B 2b49898152c6e0f6554e12b77908a3116b0509b9449a6ab377d858cbd8ebac022d9b3de119d1544a81bc3d13cf4a998a6176c11267eb294b72959da7bac405f0 SHA512 ab7e8c6df0afcf8621ed59bd099d186258b4fb146da99db2c0952b05384aeb0062dde3669d75ef297dde3efd6d60e3a462dbf5da2b39efeb6a5e88c248231ec2 +EBUILD unity-language-pack-21.10.ebuild 12628 BLAKE2B 92c67204f4a71128d7adbac1d3b19bf5a87a7ef74ff8c067521779ed088504e403bc2220f13f7a5c3e95dc4dbe6d43ad3ee45366887a0d0bae88bd387aef698c SHA512 6d2d8423cc8ccfab8f8cb178370bc5d292ab94a9801f58758e4c9d13c9fc9144015e7a20190b141a2bde109af4df7c8ce47dd528d513ca4c1931e47645bfae0b MISC lang_version_check.sh 6671 BLAKE2B 177be6998d1767a35e85ee57acae3ea13daff9eec4c59abe6c8b8421c923192ece7b4e485cf86afb464badf00dac872b2da0fd54b6a97377bd9f1771af15d7b3 SHA512 19f117da84b373f75f5e37ed68230ac8696547df008e1235bc1dd7b5c5c796f55c589d176e0f6bccb6ba6937ba1894a8f4915f464177740abbe3096223cc8b67 -MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 +MISC metadata.xml 297 BLAKE2B dd18361387621332e243c5069b264f0567452d4e638f6fa7531467e8d8abd75b592def1614123409085aa8b18adaba2f697a75a057f4fc81006ef5a29208d051 SHA512 9fdc53e1a9c05d7ab4f6c680514626b42a763c2caa7dd81f3834b1164e7f0a9e12a1733be0cff0ed4f88385b6d986454adcfefcff82395fc11e05450bb2b8cbd diff --git a/unity-base/unity-language-pack/metadata.xml b/unity-base/unity-language-pack/metadata.xml index a5705f67..c0c82935 100644 --- a/unity-base/unity-language-pack/metadata.xml +++ b/unity-base/unity-language-pack/metadata.xml @@ -4,4 +4,7 @@ gentoo-unity7 + + Enable Gentoo Unity7 specific branding + diff --git a/unity-base/unity-language-pack/unity-language-pack-21.04.ebuild b/unity-base/unity-language-pack/unity-language-pack-21.04.ebuild deleted file mode 100644 index e75dcad0..00000000 --- a/unity-base/unity-language-pack/unity-language-pack-21.04.ebuild +++ /dev/null @@ -1,372 +0,0 @@ -# Copyright 1999-2021 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -URELEASE="hirsute" -inherit ubuntu-versionator - -UURL="http://archive.ubuntu.com/ubuntu/pool/main/l" - -DESCRIPTION="Language translations pack for Unity7 user interface" -HOMEPAGE="https://translations.launchpad.net/ubuntu" -SRC_URI="" - -LICENSE="GPL-3" -SLOT="0" -KEYWORDS="~amd64" -IUSE="" -RESTRICT="mirror" - -DEPEND="sys-devel/gettext - !!/dev/null - done - rm -r "${S}"/po - - for pofile in $( \ - find "${S}" -type f -name "*.po" \ - ! -name "${gcc_po}" \ - ! -name "${ls_po}" \ - ! -name "${ylp_po}" \ - ); do - if [[ ${pofile##*/} == ${ucc_po} ]]; then - _progress_indicator - - # Add translations for sharing panel and online-accounts desktop launcher - sed -i -e "/\"Sharing\"/,+1 d" "${pofile}" # remove old identical msgid - gcc_src=${pofile/${ucc_po}/${gcc_po}} - for msgid in "${sh_msgids[@]}" "${oa_msgids[@]}"; do - if ! grep -q "^\(msgid\|msgctxt\)\s\"${msgid}\"$" "${pofile}"; then - msgid="$(awk "/^(msgid\s|msgctxt\s|)\"${msgid}\"\$/ { p = 1 } p { print } /^\$/ { p = 0 }" "${gcc_src}" 2>/dev/null)" - case ${msgid:0:1} in - m) - echo "${msgid}" >> "${pofile}" - ;; - \") - echo "msgid \"\"${newline}${msgid}" >> "${pofile}" - ;; - esac - fi - done - - _progress_indicator - - # Add translations for langselector panel - ls_src=${pofile/${ucc_po}/${ls_po}} - ls_src=${ls_src/gnome-} - for msgid in "${ls_msgids[@]}"; do - if ! grep -q "^\(msgid\|msgctxt\)\s\"${msgid}\"$" "${pofile}"; then - echo "$(awk "/^(msgid|msgctxt)\s\"${msgid}\"\$/ { p = 1 } p { print } /^\$/ { p = 0 }" "${gcc_src}" "${ls_src}" 2>/dev/null)" \ - >> "${pofile}" - fi - done - rm "${gcc_src}" "${ls_src}" 2>/dev/null - fi - - # Add translations for Unity help desktop launcher - if [[ ${pofile##*/} == ${is_po} ]]; then - _progress_indicator - - ylp_src=${pofile/${is_po}/${ylp_po}} - for msgid in "${is_msgids[@]}"; do - sed -i -e "s/GNOME/Unity/g" "${ylp_src}" - if ! grep -q "^\(msgid\|msgctxt\)\s\"${msgid}\"$" "${pofile}"; then - echo "$(awk "/^(msgid|msgctxt)\s\"${msgid}\"\$/ { p = 1 } p { print } /^\$/ { p = 0 }" "${ylp_src}" 2>/dev/null)" \ - >> "${pofile}" - fi - done - rm "${ylp_src}" 2>/dev/null - fi - - msgfmt -o "${pofile%.po}.mo" "${pofile}" - rm "${pofile}" - done - - insinto /usr/share/locale - doins -r "${S}"/language-pack-*-base/data/* - - printf "\b\b%s\n" "... done!" -} diff --git a/unity-base/unity-language-pack/unity-language-pack-21.10.ebuild b/unity-base/unity-language-pack/unity-language-pack-21.10.ebuild index c155d85b..057f8516 100644 --- a/unity-base/unity-language-pack/unity-language-pack-21.10.ebuild +++ b/unity-base/unity-language-pack/unity-language-pack-21.10.ebuild @@ -14,7 +14,7 @@ SRC_URI="" LICENSE="GPL-3" SLOT="0" -#KEYWORDS="~amd64" +KEYWORDS="~amd64" IUSE="" RESTRICT="mirror" @@ -178,7 +178,7 @@ for use_flag in ${IUSE_L10N}; do done REQUIRED_USE="|| ( ${IUSE} )" -IUSE="${IUSE/l10n_en/+l10n_en}" +IUSE="+branding ${IUSE/l10n_en/+l10n_en}" S="${WORKDIR}" @@ -271,7 +271,8 @@ src_install() { ) local \ - lng flg pofile msgid gcc_src ls_src ylp_src \ + pofile msgid gcc_src ls_src x ylp_src \ + u_po="unity.po" \ ucc_po="unity-control-center.po" \ gcc_po="gnome-control-center-2.0.po" \ ls_po="language-selector.po" \ @@ -300,9 +301,8 @@ src_install() { printf "%s " "Processing translation files" _progress_indicator - for lng in "${langs[@]}"; do - flg=${lng##*data/} - cp "${S}"/po/"${flg}".po "${lng}"/LC_MESSAGES/session-shortcuts.po 2>/dev/null + for x in "${langs[@]}"; do + cp "${S}"/po/"${x##*data/}".po "${x}"/LC_MESSAGES/session-shortcuts.po 2>/dev/null done rm -r "${S}"/po @@ -344,6 +344,10 @@ src_install() { fi done rm "${gcc_src}" "${ls_src}" 2>/dev/null + + # Add Version + x="$(portageq 'unity-base/unity' best_version | tail -1 | sed -e 's:^.*-::' -e 's:_.*$::') (${UVER_RELEASE} ${URELEASE^})" + sed -i -e "s/Version %s/Version ${x}/" -e "/${x}/{n;s/%s/${x}/;}" "${pofile}" fi # Add translations for Unity help desktop launcher @@ -351,8 +355,8 @@ src_install() { _progress_indicator ylp_src=${pofile/${is_po}/${ylp_po}} + sed -i -e "s/GNOME/Unity/g" "${ylp_src}" for msgid in "${is_msgids[@]}"; do - sed -i -e "s/GNOME/Unity/g" "${ylp_src}" if ! grep -q "^\(msgid\|msgctxt\)\s\"${msgid}\"$" "${pofile}"; then echo "$(awk "/^(msgid|msgctxt)\s\"${msgid}\"\$/ { p = 1 } p { print } /^\$/ { p = 0 }" "${ylp_src}" 2>/dev/null)" \ >> "${pofile}" @@ -361,6 +365,9 @@ src_install() { rm "${ylp_src}" 2>/dev/null fi + # Rename Ubuntu Desktop + use branding && [[ ${pofile##*/} == ${u_po} ]] && sed -i -e "s/Ubuntu Desktop/Gentoo Unity⁷ Desktop/" -e "/Unity⁷/{n;s/Ubuntu/Gentoo Unity⁷/;}" "${pofile}" + msgfmt -o "${pofile%.po}.mo" "${pofile}" rm "${pofile}" done diff --git a/unity-base/unity-meta/Manifest b/unity-base/unity-meta/Manifest index 79c5c84c..f0616170 100644 --- a/unity-base/unity-meta/Manifest +++ b/unity-base/unity-meta/Manifest @@ -1,2 +1,2 @@ -EBUILD unity-meta-21.04.ebuild 3236 BLAKE2B 6ce589c83531ddc1cddec4c1be8a2786df9f3521fdd412ef6444a9e1f9f4136c7565e56f912206677acd49cde3600d6e9f4613794a2654ac87e642834691b442 SHA512 10cf5fd5179099d7ce60263cbe483542448bc357813614791652884782d15c7a3cd592b5beb29645404acc43feed9e014f0ea13ab4d0b4d398da6c2e4f9b4dcb -MISC metadata.xml 765 BLAKE2B 2f5fe5ca37e39dfa39c2d468ed1e9547f8cce35c769caf9e010c24421015c893f29ff710051ab06a729a8bbb6f8a005f6e94385c61030cda070518cca82cd2ec SHA512 886fe624a02a60886bf5cb5208243e11a36e2571b24f63a27999a00570823441f93b831d73e3e72451e3695344e5bd5023646112ff4d322e5b78fc7394b22742 +EBUILD unity-meta-21.10.ebuild 3680 BLAKE2B ce721ac496580ade1b533e6031f6c7dbdb4ea80cfa676fa1faa750643b6fc03f7f45d0b16f1a6a972db4a8a9ea1a5826fa49449c434db968912ccd3a89d82dbb SHA512 86fc3174006095dda78163409bc0b21791a847bd59922ec0920c1405d0b5c7ba98e7f691763ba011f202b377be8cd943e43a771f89db1c09c47eb0bf57987132 +MISC metadata.xml 728 BLAKE2B af10f395b0eb3132ad95f6465df313d3dad11d4a0ba9c13593851bf57b4d65e11605835a0d8e6b100189d51c96b4e8dca6fb30f89ef314f3eea1a43fbd20a402 SHA512 7e15b611da742236ad41094beb37be828cda6bf074756b16c7ace0c60a1d864e8c20f139e3d8faa772a37d656555d615f5a929dd61250af5afce76e6f73ce574 diff --git a/unity-base/unity-meta/metadata.xml b/unity-base/unity-meta/metadata.xml index 971a1e15..cabe9c5d 100644 --- a/unity-base/unity-meta/metadata.xml +++ b/unity-base/unity-meta/metadata.xml @@ -5,13 +5,15 @@ gentoo-unity7 - Gnome accessibility packages - Install Unity core applications - Instant messaging desktop integration via the messages indicator, defaults to pidgin - Install additional Unity applications - Install Unity fonts - Install Unity games - Install Unity utilities - Use a display manager, defaults to lightdm and unity-greeter + Install accessibility packages + Install instant messenger, defaults to + net-im/pidgin + Install core applications + Install extra applications + Install additional fonts + Install games + Use a display manager, defaults to + x11-misc/lightdm and + unity-extra/unity-greeter diff --git a/unity-base/unity-meta/unity-meta-21.04.ebuild b/unity-base/unity-meta/unity-meta-21.10.ebuild similarity index 75% rename from unity-base/unity-meta/unity-meta-21.04.ebuild rename to unity-base/unity-meta/unity-meta-21.10.ebuild index 2fb1e452..f11c7e0a 100644 --- a/unity-base/unity-meta/unity-meta-21.04.ebuild +++ b/unity-base/unity-meta/unity-meta-21.10.ebuild @@ -8,13 +8,13 @@ inherit ubuntu-versionator DESCRIPTION="Unity Desktop - merge this to pull in all Unity packages" HOMEPAGE="http://unity.ubuntu.com/" -URELEASE="hirsute" +URELEASE="impish" UVER= LICENSE="metapackage" SLOT="0" KEYWORDS="~amd64" -IUSE="+accessibility +apps chat extras +fonts +games +utils +xdm" +IUSE="+accessibility chat +core +extras +fonts +games +xdm" RESTRICT="mirror" DEPEND="unity-base/unity-build-env @@ -39,22 +39,47 @@ RDEPEND="gnome-base/gnome-core-libs app-accessibility/at-spi2-core app-accessibility/onboard app-accessibility/orca ) - apps? ( - || ( app-office/libreoffice app-office/libreoffice-bin ) - || ( mail-client/thunderbird mail-client/thunderbird-bin mail-client/evolution ) - media-gfx/shotwell - media-sound/rhythmbox - media-video/totem - || ( www-client/firefox www-client/firefox-bin www-client/chromium ) ) - chat? ( || ( + chat? ( + || ( ( net-im/pidgin x11-plugins/pidgin-libnotify ) ( net-im/empathy net-libs/telepathy-indicator ) net-im/telegram-desktop net-im/telegram-desktop-bin ) ) + core? ( + app-crypt/seahorse + app-editors/gedit + || ( app-office/libreoffice app-office/libreoffice-bin ) + app-text/evince + || ( mail-client/thunderbird mail-client/thunderbird-bin mail-client/evolution ) + media-gfx/eog + || ( media-gfx/shotwell media-gfx/gnome-photos ) + || ( media-sound/rhythmbox media-sound/gnome-music ) + media-video/totem + unity-indicators/indicator-session[help] + || ( www-client/firefox www-client/firefox-bin www-client/chromium www-client/epiphany ) + x11-terms/gnome-terminal ) extras? ( - app-cdr/brasero + app-admin/gnome-system-log + app-backup/deja-dup + app-arch/file-roller gnome-base/dconf-editor - sys-block/gparted - unity-extra/unity-tweak-tool ) + gnome-extra/gnome-calculator + gnome-extra/gnome-calendar + gnome-extra/gnome-contacts + gnome-extra/gnome-system-monitor + gnome-extra/gnome-weather + media-gfx/gnome-font-viewer + media-gfx/gnome-screenshot + media-gfx/simple-scan + media-video/cheese + || ( net-misc/remmina net-misc/vinagre ) + net-misc/vino + net-p2p/transmission[appindicator] + sys-apps/baobab + sys-apps/gnome-disk-utility + unity-base/unity-control-center[gnome-online-accounts] + unity-extra/unity-tweak-tool + || ( unity-indicators/indicator-keyboard[charmap] gnome-extra/gnome-characters ) + unity-indicators/indicator-power[powerman] ) fonts? ( media-fonts/droid media-fonts/font-bitstream-type1 @@ -86,34 +111,20 @@ RDEPEND="gnome-base/gnome-core-libs media-fonts/tibetan-machine-font media-fonts/urw-fonts ) games? ( + games-arcade/gnome-nibbles + games-arcade/gnome-robots + games-board/four-in-a-row games-board/gnome-mahjongg games-board/gnome-mines - games-puzzle/gnome-sudoku ) - utils? ( - app-admin/gnome-system-log - app-backup/deja-dup - app-arch/file-roller - app-crypt/seahorse - app-editors/gedit - app-text/evince - gnome-extra/gnome-calculator - gnome-extra/gnome-calendar - gnome-extra/gnome-power-manager - gnome-extra/gnome-system-monitor - gnome-extra/gucharmap:2.90 - gnome-extra/yelp - media-gfx/eog - media-gfx/gnome-font-viewer - media-gfx/gnome-screenshot - media-gfx/simple-scan - media-video/cheese - net-misc/remmina - net-misc/vino - net-p2p/transmission[appindicator] - sys-apps/baobab - sys-apps/gnome-disk-utility - unity-base/unity-control-center[gnome-online-accounts] - unity-indicators/indicator-keyboard[charmap] - unity-indicators/indicator-power[powerman] - x11-terms/gnome-terminal ) + games-board/iagno + games-board/tali + games-puzzle/five-or-more + games-puzzle/gnome-klotski + games-puzzle/gnome-sudoku + games-puzzle/gnome-taquin + games-puzzle/gnome-tetravex + games-puzzle/hitori + games-puzzle/lightsoff + games-puzzle/quadrapassel + games-puzzle/swell-foop ) xdm? ( || ( unity-extra/unity-greeter gnome-base/gdm ) )" diff --git a/unity-base/unity-settings-daemon/Manifest b/unity-base/unity-settings-daemon/Manifest index 55bdbf36..e2bc5d1c 100644 --- a/unity-base/unity-settings-daemon/Manifest +++ b/unity-base/unity-settings-daemon/Manifest @@ -1,11 +1,7 @@ AUX 01_unity-settings-daemon-optional-color-wacom.patch 4469 BLAKE2B 40807560ee8ecb279118431cbdd1746928a371760e0159bf1f3962737d00b8a6ee89e1bd136b6b823b3bdcbd000524be1cc4c44e3db39a9378955009cdb36fd6 SHA512 b8d684a48cd8769e60c92e509367ff17b961e58af103ab883d4feae48822036020e7a0d22b3e04d62ddc98f004dad87dbcd2168eef2cafd3919e1b6ee2f1ca92 -AUX 02_unity-settings-daemon-2020-optional-pnp-ids.patch 11965 BLAKE2B a0ded6ed1323da9b9e7d140902cdce63f7a46b557f1bd840c045f541f94637eecb4f093825410e8ee578bcbefc5461c07cb19afe049da22cdc4ad5a077b1e67f SHA512 e0eb86f0c19e1b51207904f6662d2816c44169cddc38a2c982a10693ed3d9c63f0ca1ad8145750ca0bcfa0ec1afcc852b7e047d7c592755496bdad9fb541ba48 AUX 02_unity-settings-daemon-2021-optional-pnp-ids.patch 12031 BLAKE2B 6472bc92605f9c92f8c54dee5303ae22d532186deb66aec75d514682b3102f5530e10c986d7ddf31ac4242f3a1c1091c471d7a3e20d5868eae30635c03a41f32 SHA512 852a3c89309564b64c5821fe3d6fee73dd7767601808a964cfb97d84066eccd7462e2b7f31ff4724ef9a8da1ff8351c02fd28df5622ade6a1fe7fbd19546e753 AUX unity-settings-daemon-3.7.90-short-touchpad-timeout.patch 960 BLAKE2B d7c529f341a3155cca80f3fac49732d1cc66c39952fb30b2f2c6b79e80c008917111ce2b36bb52ece7daeb109ad66418c231f9c5c003fd37a5368c54d5b97448 SHA512 c431973f6d5b461a3d8bc1702522ac20d3c54252341e4ba5f712dd524a322e28d1a6a5f89920e9be9438217a6c418c5b254112be68f47d2ceb6b62790497e16f -DIST unity-settings-daemon_15.04.1+20.04.20200325-0ubuntu2.diff.gz 15083 BLAKE2B 14247aabe422e4ecf4b87680599a3b09d488d6ba6c065c71d10085a7793a237329c4c009093b75e96767e68bc15c7fc9f13af41b8e57297a6b47409b28a40a3f SHA512 feb6c53f42c6fe5ffe2ae971d6b3a3ccd8005ca0440a4d5aba3befcd113741a793cb84397a10749909eb2564522af28fca0d8e4542b80ea1eb414dbe54de7473 -DIST unity-settings-daemon_15.04.1+20.04.20200325.orig.tar.gz 2847097 BLAKE2B 7bc27deb495459221b3113a1d659bf844462939dd4c475b9671b5681d2a1c99a637766ad0ec8c779cf09e8ff87cb59fe6449d1a9a6bdecace2b49e6cbbc4717e SHA512 53f0b57b6d1cd084b0ca3c56f290013082e6d4b0bbf7f9a336407df98f5ff47a0fe60ea6c0f749a49c6aa97731ff8cee53545d284f4935b3da931cea4ce4c994 DIST unity-settings-daemon_15.04.1+21.10.20210715-0ubuntu1.diff.gz 15119 BLAKE2B 4a5429c16562b6833db41ad325e1c62fbc4e3cf053edc5486f25fe13826e0b1a7623901192662f9a3444aa234ce7d62c48a15bafdc6fc1898b4faeec6f16da61 SHA512 eea475bcc4610fb71c595f553e9bed61e695277199aee3b733c790e29faf7ab2692abf1e6d7918774a18bf615db59b1c999a98b44798ed4d323edc2f0d86a818 DIST unity-settings-daemon_15.04.1+21.10.20210715.orig.tar.gz 2847155 BLAKE2B 47cf148c1f9bc8f712d845af95992b92034c39c8e590824b7b33f0d6aa1f026a2de56954955ac5e019ccd6bb8ef060d6ce9271faa6a03eaf222c4b49c2655022 SHA512 f39690be0541c2079ef71a79474858f00fa7cb1c25146bf8c79d234f96c9eb2fed41436bd8f50f6cb4589b6b84804d4e33a3be270da38a15ce72828ed58c4bb5 -EBUILD unity-settings-daemon-15.04.1_p20200325_p0_p02.ebuild 5457 BLAKE2B 2bad15c23e76625f37a0749a765cddfd40e7ffdf444a9c77e58e84e172269c748ebaadef50f35c09ad28fb0a161e228243bc3ad1c085a115925b12e789d3bc63 SHA512 22d29d8eaec9d02daec83e20879b41fea6cda477d32f44fef96fce96f1193bcfb698aa43f06f49427826baeb9a496b4c4f4f6aef959c4c98f67f6e4ada695cef -EBUILD unity-settings-daemon-15.04.1_p20210715_p0_p01.ebuild 5510 BLAKE2B 847f8bd03d918981fb0cc3f934bca1be6a68554b3e6994e75a52a5fbc8ef6e47def3b0bfd952b446aa24310d795ffceddeeb061c2299fc295e0417444e819b97 SHA512 50386b6a2c9e0fcf54610cee1c2423b2a1b5044e2eba373e7338619dadbe49e001615aa6ccc031d3b385170632ea806c30058a08189ba83af2ec614940c3bacb +EBUILD unity-settings-daemon-15.04.1_p20210715_p0_p01.ebuild 5509 BLAKE2B e966795fac6f8ddf509fbf564e6129488e8ef854b3160aec76fd8286c23d8e61816159000ac792f8931a334ec0dc8b301596698735b4281abc6c76784139cc41 SHA512 8ed737d5fb1639372836c15fbcebd72fcb87d4319202bf8f4319e0f9aab99ec87c6239806656891ace0281443fa5374de777b21b9341c38d83760b433b1a8201 MISC metadata.xml 645 BLAKE2B b836e974a2dc0ed89a0b29c5f20b838d523d26a2b894d13ebb430c750f1f2186095cac7b9f1b92b6707b34076c1e71978ac51aa7050a3780623b5ece21662036 SHA512 4db461dc121ebf4b590019fe249a678aac6f05350bf1feaac0fecbef1931679f5c41fd5cd823d8b4a70bae5cf0f44240ee4e9b6e29a3665a7c1b53847164d706 diff --git a/unity-base/unity-settings-daemon/files/02_unity-settings-daemon-2020-optional-pnp-ids.patch b/unity-base/unity-settings-daemon/files/02_unity-settings-daemon-2020-optional-pnp-ids.patch deleted file mode 100644 index 3bbc2c9f..00000000 --- a/unity-base/unity-settings-daemon/files/02_unity-settings-daemon-2020-optional-pnp-ids.patch +++ /dev/null @@ -1,397 +0,0 @@ -diff -Nur a/configure.ac b/configure.ac ---- a/configure.ac 2020-01-10 22:34:04.622258100 +0100 -+++ b/configure.ac 2020-01-10 22:31:07.867100734 +0100 -@@ -62,12 +62,27 @@ - - EXTRA_COMPILE_WARNINGS(yes) - -+dnl --------------------------------------------------------------------------- -+dnl - hwdb for pnp IDs (default enabled) -+dnl --------------------------------------------------------------------------- -+UDEV_PKG="" -+AC_ARG_ENABLE([udev], [ -+ AS_HELP_STRING([--disable-udev], [Disable udev support]) -+]) -+AS_IF([test "x$enable_udev" != "xno"], [ -+ PKG_CHECK_MODULES([UDEV], [libudev], [ -+ AC_DEFINE([HAVE_UDEV], [1], [define if libudev is available]) -+ UDEV_PKG="libudev" -+ ]) -+]) -+ - PKG_CHECK_MODULES(SETTINGS_DAEMON, - gtk+-3.0 >= $GTK_REQUIRED_VERSION - gio-2.0 >= $GIO_REQUIRED_VERSION - gmodule-2.0 - gthread-2.0 - gsettings-desktop-schemas >= $GSETTINGS_DESKTOP_SCHEMAS_REQUIRED_VERSION -+ $UDEV_PKG - ) - - PKG_CHECK_MODULES(SETTINGS_PLUGIN, -@@ -614,6 +629,7 @@ - Color support: ${enable_color} - Wacom support: ${have_wacom} - RFKill support: ${enable_rfkill} -+ Udev support: ${enable_udev} - ${NSS_DATABASE:+\ - System nssdb: ${NSS_DATABASE} - }\ -diff -Nur a/gnome-settings-daemon/gsd-pnp-ids.c b/gnome-settings-daemon/gsd-pnp-ids.c ---- a/gnome-settings-daemon/gsd-pnp-ids.c 2019-09-21 12:58:37.000000000 +0200 -+++ b/gnome-settings-daemon/gsd-pnp-ids.c 2020-01-10 22:29:39.105023030 +0100 -@@ -20,8 +20,10 @@ - #include "config.h" - - #include -- - #include "gsd-pnp-ids.h" -+#ifdef HAVE_UDEV -+#include -+#endif - - static void gsd_pnp_ids_finalize (GObject *object); - -@@ -29,221 +31,16 @@ - - struct _GsdPnpIdsPrivate - { -- gchar *table_data; -- GHashTable *pnp_table; -+#ifdef HAVE_UDEV -+ struct udev *udev; -+ struct udev_hwdb *hwdb; -+#else -+ char *placeholder; -+#endif - }; - --static gpointer gsd_pnp_ids_object = NULL; -- - G_DEFINE_TYPE (GsdPnpIds, gsd_pnp_ids, G_TYPE_OBJECT) - --typedef struct Vendor Vendor; --struct Vendor --{ -- const char vendor_id[4]; -- const char vendor_name[28]; --}; -- --/* This list of vendor codes derived from lshw -- * -- * http://ezix.org/project/wiki/HardwareLiSter -- * -- * Note: we now prefer to use data coming from hwdata (and shipped with -- * gnome-desktop). See -- * http://git.fedorahosted.org/git/?p=hwdata.git;a=blob_plain;f=pnp.ids;hb=HEAD -- * All contributions to the list of vendors should go there. -- */ --static const struct Vendor vendors[] = --{ -- { "AIC", "AG Neovo" }, -- { "ACR", "Acer" }, -- { "DEL", "DELL" }, -- { "SAM", "SAMSUNG" }, -- { "SNY", "SONY" }, -- { "SEC", "Epson" }, -- { "WAC", "Wacom" }, -- { "NEC", "NEC" }, -- { "CMO", "CMO" }, /* Chi Mei */ -- { "BNQ", "BenQ" }, -- -- { "ABP", "Advansys" }, -- { "ACC", "Accton" }, -- { "ACE", "Accton" }, -- { "ADP", "Adaptec" }, -- { "ADV", "AMD" }, -- { "AIR", "AIR" }, -- { "AMI", "AMI" }, -- { "ASU", "ASUS" }, -- { "ATI", "ATI" }, -- { "ATK", "Allied Telesyn" }, -- { "AZT", "Aztech" }, -- { "BAN", "Banya" }, -- { "BRI", "Boca Research" }, -- { "BUS", "Buslogic" }, -- { "CCI", "Cache Computers Inc." }, -- { "CHA", "Chase" }, -- { "CMD", "CMD Technology, Inc." }, -- { "COG", "Cogent" }, -- { "CPQ", "Compaq" }, -- { "CRS", "Crescendo" }, -- { "CSC", "Crystal" }, -- { "CSI", "CSI" }, -- { "CTL", "Creative Labs" }, -- { "DBI", "Digi" }, -- { "DEC", "Digital Equipment" }, -- { "DBK", "Databook" }, -- { "EGL", "Eagle Technology" }, -- { "ELS", "ELSA" }, -- { "ESS", "ESS" }, -- { "FAR", "Farallon" }, -- { "FDC", "Future Domain" }, -- { "HWP", "Hewlett-Packard" }, -- { "IBM", "IBM" }, -- { "INT", "Intel" }, -- { "ISA", "Iomega" }, -- { "LEN", "Lenovo" }, -- { "MDG", "Madge" }, -- { "MDY", "Microdyne" }, -- { "MET", "Metheus" }, -- { "MIC", "Micronics" }, -- { "MLX", "Mylex" }, -- { "NVL", "Novell" }, -- { "OLC", "Olicom" }, -- { "PRO", "Proteon" }, -- { "RII", "Racal" }, -- { "RTL", "Realtek" }, -- { "SCM", "SCM" }, -- { "SKD", "SysKonnect" }, -- { "SGI", "SGI" }, -- { "SMC", "SMC" }, -- { "SNI", "Siemens Nixdorf" }, -- { "STL", "Stallion Technologies" }, -- { "SUN", "Sun" }, -- { "SUP", "SupraExpress" }, -- { "SVE", "SVEC" }, -- { "TCC", "Thomas-Conrad" }, -- { "TCI", "Tulip" }, -- { "TCM", "3Com" }, -- { "TCO", "Thomas-Conrad" }, -- { "TEC", "Tecmar" }, -- { "TRU", "Truevision" }, -- { "TOS", "Toshiba" }, -- { "TYN", "Tyan" }, -- { "UBI", "Ungermann-Bass" }, -- { "USC", "UltraStor" }, -- { "VDM", "Vadem" }, -- { "VMI", "Vermont" }, -- { "WDC", "Western Digital" }, -- { "ZDS", "Zeos" }, -- -- /* From http://faydoc.tripod.com/structures/01/0136.htm */ -- { "ACT", "Targa" }, -- { "ADI", "ADI" }, -- { "AOC", "AOC Intl" }, -- { "API", "Acer America" }, -- { "APP", "Apple Computer" }, -- { "ART", "ArtMedia" }, -- { "AST", "AST Research" }, -- { "CPL", "Compal" }, -- { "CTX", "Chuntex Electronic Co." }, -- { "DPC", "Delta Electronics" }, -- { "DWE", "Daewoo" }, -- { "ECS", "ELITEGROUP" }, -- { "EIZ", "EIZO" }, -- { "FCM", "Funai" }, -- { "GSM", "LG Electronics" }, -- { "GWY", "Gateway 2000" }, -- { "HEI", "Hyundai" }, -- { "HIT", "Hitachi" }, -- { "HSL", "Hansol" }, -- { "HTC", "Hitachi" }, -- { "ICL", "Fujitsu ICL" }, -- { "IVM", "Idek Iiyama" }, -- { "KFC", "KFC Computek" }, -- { "LKM", "ADLAS" }, -- { "LNK", "LINK Tech" }, -- { "LTN", "Lite-On" }, -- { "MAG", "MAG InnoVision" }, -- { "MAX", "Maxdata" }, -- { "MEI", "Panasonic" }, -- { "MEL", "Mitsubishi" }, -- { "MIR", "miro" }, -- { "MTC", "MITAC" }, -- { "NAN", "NANAO" }, -- { "NEC", "NEC Tech" }, -- { "NOK", "Nokia" }, -- { "OQI", "OPTIQUEST" }, -- { "PBN", "Packard Bell" }, -- { "PGS", "Princeton" }, -- { "PHL", "Philips" }, -- { "REL", "Relisys" }, -- { "SDI", "Samtron" }, -- { "SMI", "Smile" }, -- { "SPT", "Sceptre" }, -- { "SRC", "Shamrock Technology" }, -- { "STP", "Sceptre" }, -- { "TAT", "Tatung" }, -- { "TRL", "Royal Information Company" }, -- { "TSB", "Toshiba, Inc." }, -- { "UNM", "Unisys" }, -- { "VSC", "ViewSonic" }, -- { "WTC", "Wen Tech" }, -- { "ZCM", "Zenith Data Systems" }, -- -- { "???", "Unknown" }, --}; -- --static gboolean --gsd_pnp_ids_load (GsdPnpIds *pnp_ids, GError **error) --{ -- gchar *retval = NULL; -- GsdPnpIdsPrivate *priv = pnp_ids->priv; -- guint i; -- -- /* load the contents */ -- g_debug ("loading: %s", PNP_IDS); -- if (g_file_get_contents (PNP_IDS, &priv->table_data, NULL, error) == FALSE) -- return FALSE; -- -- /* parse into lines */ -- retval = priv->table_data; -- for (i = 0; priv->table_data[i] != '\0'; i++) { -- -- /* ignore */ -- if (priv->table_data[i] != '\n') -- continue; -- -- /* convert newline to NULL */ -- priv->table_data[i] = '\0'; -- -- /* the ID to text is a fixed offset */ -- if (retval[0] && retval[1] && retval[2] && retval[3] == '\t' && retval[4]) { -- retval[3] = '\0'; -- g_hash_table_insert (priv->pnp_table, -- retval, -- retval+4); -- retval = &priv->table_data[i+1]; -- } -- } -- -- g_debug ("Added %i items to the vendor hashtable", i); -- -- return TRUE; --} -- --static const char * --find_vendor (const char *pnp_id) --{ -- guint i; -- -- for (i = 0; i < G_N_ELEMENTS (vendors); i++) { -- if (g_strcmp0 (vendors[i].vendor_id, pnp_id) == 0) -- return vendors[i].vendor_name; -- } -- -- return NULL; --} -- - /** - * gsd_pnp_ids_get_pnp_id: - * @pnp_ids: a #GsdPnpIds object -@@ -257,33 +54,32 @@ - gchar * - gsd_pnp_ids_get_pnp_id (GsdPnpIds *pnp_ids, const gchar *pnp_id) - { -+#ifdef HAVE_UDEV - GsdPnpIdsPrivate *priv = pnp_ids->priv; -- const char *found; -- GError *error = NULL; -- guint size; -- -- g_return_val_if_fail (GSD_IS_PNP_IDS (pnp_ids), NULL); -- g_return_val_if_fail (pnp_id != NULL, NULL); -- -- /* if table is empty, try to load it */ -- size = g_hash_table_size (priv->pnp_table); -- if (size == 0) { -- if (gsd_pnp_ids_load (pnp_ids, &error) == FALSE) { -- g_warning ("Failed to load PNP ids: %s", error->message); -- g_error_free (error); -- return NULL; -- } -- } -- -- /* look this up in the table */ -- found = g_hash_table_lookup (priv->pnp_table, pnp_id); -- if (found == NULL) { -- found = find_vendor (pnp_id); -- if (found == NULL) -- return NULL; -- } -- -- return g_strdup (found); -+ struct udev_list_entry *list_entry, *l; -+ char *modalias; -+ char *ret = NULL; -+ -+ modalias = g_strdup_printf ("acpi:%s:", pnp_id); -+ list_entry = udev_hwdb_get_properties_list_entry(priv->hwdb, modalias, 0); -+ g_free (modalias); -+ if (list_entry == NULL) -+ return ret; -+ -+ /* Try to get the model specific string */ -+ l = udev_list_entry_get_by_name (list_entry, "ID_MODEL_FROM_DATABASE"); -+ if (l == NULL) -+ l = udev_list_entry_get_by_name (list_entry, "ID_VENDOR_FROM_DATABASE"); -+ -+ if (l == NULL) -+ return ret; -+ -+ ret = g_strdup (udev_list_entry_get_value (l)); -+ -+ return ret; -+#else -+ return g_strdup ("Undefined"); -+#endif /* HAVE_UDEV */ - } - - static void -@@ -298,13 +94,10 @@ - gsd_pnp_ids_init (GsdPnpIds *pnp_ids) - { - pnp_ids->priv = GSD_PNP_IDS_GET_PRIVATE (pnp_ids); -- -- /* we don't keep malloc'd data in the hash; instead we read it -- * out into priv->table_data and then link to it in the hash */ -- pnp_ids->priv->pnp_table = g_hash_table_new_full (g_str_hash, -- g_str_equal, -- NULL, -- NULL); -+#ifdef HAVE_UDEV -+ pnp_ids->priv->udev = udev_new(); -+ pnp_ids->priv->hwdb = udev_hwdb_new (pnp_ids->priv->udev); -+#endif - } - - static void -@@ -313,8 +106,10 @@ - GsdPnpIds *pnp_ids = GSD_PNP_IDS (object); - GsdPnpIdsPrivate *priv = pnp_ids->priv; - -- g_free (priv->table_data); -- g_hash_table_unref (priv->pnp_table); -+#ifdef HAVE_UDEV -+ g_clear_pointer (&priv->udev, udev_unref); -+ g_clear_pointer (&priv->hwdb, udev_hwdb_unref); -+#endif - - G_OBJECT_CLASS (gsd_pnp_ids_parent_class)->finalize (object); - } -@@ -330,12 +125,6 @@ - GsdPnpIds * - gsd_pnp_ids_new (void) - { -- if (gsd_pnp_ids_object != NULL) { -- g_object_ref (gsd_pnp_ids_object); -- } else { -- gsd_pnp_ids_object = g_object_new (GSD_TYPE_PNP_IDS, NULL); -- g_object_add_weak_pointer (gsd_pnp_ids_object, &gsd_pnp_ids_object); -- } -- return GSD_PNP_IDS (gsd_pnp_ids_object); -+ return g_object_new (GSD_TYPE_PNP_IDS, NULL); - } - -diff -Nur a/gnome-settings-daemon/Makefile.am b/gnome-settings-daemon/Makefile.am ---- a/gnome-settings-daemon/Makefile.am 2019-09-21 12:58:37.000000000 +0200 -+++ b/gnome-settings-daemon/Makefile.am 2020-01-10 22:29:39.105023030 +0100 -@@ -47,7 +47,6 @@ - - libunity_settings_daemon_la_CFLAGS = \ - -DLIBEXECDIR=\""$(libexecdir)\"" \ -- -DPNP_IDS=\""$(datadir)/hwdata/pnp.ids"\" \ - -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ - $(LIBUNITY_SETTINGS_DAEMON_CFLAGS) - diff --git a/unity-base/unity-settings-daemon/unity-settings-daemon-15.04.1_p20200325_p0_p02.ebuild b/unity-base/unity-settings-daemon/unity-settings-daemon-15.04.1_p20200325_p0_p02.ebuild deleted file mode 100644 index 041681fd..00000000 --- a/unity-base/unity-settings-daemon/unity-settings-daemon-15.04.1_p20200325_p0_p02.ebuild +++ /dev/null @@ -1,183 +0,0 @@ -# Copyright 1999-2021 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -URELEASE="hirsute" -inherit autotools flag-o-matic gnome2 virtualx ubuntu-versionator xdg-utils - -UVER_PREFIX="+20.04.${PVR_MICRO}" - -DESCRIPTION="Unity Settings Daemon" -HOMEPAGE="https://launchpad.net/unity-settings-daemon" -SRC_URI="${UURL}/${MY_P}${UVER_PREFIX}.orig.tar.gz - ${UURL}/${MY_P}${UVER_PREFIX}-${UVER}.diff.gz" - -LICENSE="GPL-2" -SLOT="0" -IUSE="+colord debug +fcitx +i18n +input_devices_wacom nls +short-touchpad-timeout smartcard +udev" -KEYWORDS="~amd64" -REQUIRED_USE="input_devices_wacom? ( udev ) - smartcard? ( udev )" -RESTRICT="mirror" - -# require colord-0.1.27 dependency for connection type support -DEPEND="dev-libs/glib:2 - dev-libs/libappindicator:= - x11-libs/gtk+:3 - >=gnome-base/gnome-desktop-3.36:3= - gnome-base/gsettings-desktop-schemas - gnome-base/librsvg - media-libs/fontconfig - media-libs/lcms:2 - media-libs/libcanberra[gtk3] - media-sound/pulseaudio - sys-apps/accountsservice - >=sys-apps/systemd-232 - >=sys-power/upower-0.99:= - x11-apps/xinput - x11-libs/cairo - x11-libs/gdk-pixbuf:2 - x11-libs/libnotify:= - x11-libs/libX11 - x11-libs/libxkbfile - x11-libs/libXi - x11-libs/libXext - x11-libs/libXfixes - x11-libs/libXtst - - sys-auth/polkit - - colord? ( x11-misc/colord:= ) - fcitx? ( app-i18n/fcitx-configtool ) - i18n? ( app-i18n/ibus ) - input_devices_wacom? ( - dev-libs/libwacom - x11-drivers/xf86-input-wacom ) - smartcard? ( dev-libs/nss ) - udev? ( - sys-apps/hwids - dev-libs/libgudev:= - virtual/libudev:= )" -RDEPEND="${DEPEND} - gnome-base/dconf - x11-themes/gnome-themes-standard - x11-themes/adwaita-icon-theme - !=gnome-base/gnome-desktop-3.21.4 # - # use udev's hwdb to query PNP IDs instead # - eapply "${FILESDIR}/02_${PN}-2020-optional-pnp-ids.patch" - - # Correct path to unity-settings-daemon executable in upstart and systemd files # - sed -i \ - -e 's:/usr/lib/unity-settings-daemon:/usr/libexec:g' \ - debian/unity-settings-daemon.user-session.{desktop,upstart} \ - debian/user/unity-settings-daemon.service || die - - # 'After=graphical-session-pre.target' must be explicitly set in the unit files that require it # - # Relying on the upstart job /usr/share/upstart/systemd-session/upstart/systemd-graphical-session.conf # - # to create "$XDG_RUNTIME_DIR/systemd/user/${unit}.d/graphical-session-pre.conf" drop-in units # - # results in weird race problems on desktop logout where the reliant desktop services # - # stop in a different jumbled order each time # - sed -i \ - -e '/PartOf=/i After=graphical-session-pre.target' \ - debian/user/unity-settings-daemon.service || die "Sed failed for debian/user/unity-settings-daemon.service" - - # Ensure libunity-settings-daemon.so.1 gets linked to libudev.so # - sed -i \ - -e 's:-lm :-lm -ludev :g' \ - gnome-settings-daemon/Makefile.am - - # Disable all language files as they can be incomplete # - # due to being provided by Ubuntu's language-pack packages # - > po/LINGUAS - - eautoreconf - gnome2_src_prepare -} - -src_configure() { - append-ldflags -Wl,--warn-unresolved-symbols - append-cflags -Wno-deprecated-declarations -I/usr/include/librsvg-2.0 - - gnome2_src_configure \ - --disable-static \ - --enable-man \ - --disable-packagekit \ - $(use_enable colord color) \ - $(use_enable debug) \ - $(use_enable debug more-warnings) \ - $(use_enable fcitx) \ - $(use_enable i18n ibus) \ - $(use_enable nls) \ - $(use_enable smartcard smartcard-support) \ - $(use_enable udev gudev) \ - $(use_enable udev) \ - $(use_enable input_devices_wacom wacom) -} - -src_compile() { - gnome2_src_compile -} - -src_install() { - gnome2_src_install - - # Install upstart files # - insinto /usr/share/upstart/xdg/autostart - newins debian/unity-settings-daemon.user-session.desktop unity-settings-daemon.desktop - insinto /usr/share/upstart/sessions/ - newins debian/unity-settings-daemon.user-session.upstart unity-settings-daemon.conf - - # Install systemd units # - insinto /usr/lib/systemd/user - doins debian/user/unity-settings-daemon.service - insinto /usr/share/upstart/systemd-session/upstart - doins debian/user/unity-settings-daemon.override - - find "${D}" -name "*.la" -delete || die -} - -src_test() { - Xemake check -} - -pkg_preinst() { - # Modified gnome2_schemas_savelist to find *.gschema.override files # - export GNOME2_ECLASS_GLIB_SCHEMAS=$(find "${ED}/usr/share/glib-2.0/schemas" -name "*.gschema.override" 2>/dev/null) -} - -pkg_postinst() { - gnome2_schemas_update - xdg_icon_cache_update - ubuntu-versionator_pkg_postinst -} - -pkg_postrm() { - gnome2_schemas_update - xdg_icon_cache_update -} diff --git a/unity-base/unity-settings-daemon/unity-settings-daemon-15.04.1_p20210715_p0_p01.ebuild b/unity-base/unity-settings-daemon/unity-settings-daemon-15.04.1_p20210715_p0_p01.ebuild index 2cc7350f..ddf6dc7a 100644 --- a/unity-base/unity-settings-daemon/unity-settings-daemon-15.04.1_p20210715_p0_p01.ebuild +++ b/unity-base/unity-settings-daemon/unity-settings-daemon-15.04.1_p20210715_p0_p01.ebuild @@ -16,7 +16,7 @@ SRC_URI="${UURL}/${MY_P}${UVER_PREFIX}.orig.tar.gz LICENSE="GPL-2" SLOT="0" IUSE="+colord debug +fcitx +i18n +input_devices_wacom nls +short-touchpad-timeout smartcard +udev" -#KEYWORDS="~amd64" +KEYWORDS="~amd64" REQUIRED_USE="input_devices_wacom? ( udev ) smartcard? ( udev )" RESTRICT="mirror" diff --git a/unity-base/unity-settings/Manifest b/unity-base/unity-settings/Manifest index a6cf25a8..cb3d6871 100644 --- a/unity-base/unity-settings/Manifest +++ b/unity-base/unity-settings/Manifest @@ -1,4 +1,4 @@ AUX index.theme 32 BLAKE2B c609cba7d8055225c0c31634b21744fd9e50dcc9b290f205a553ebee6516890ad73ddbe76db2596d552546a290e40fc13ee10b2d14eb7d47123855e8512a5226 SHA512 ff47e1f1a08639c01e9645ad3481c77f5d49379ebdd00ebb0f0192735e82f5e2c3a62e2856644c43b7a92f2cffd928177ac085f01208c290a698486bad521e66 -AUX unity-settings_21.04.gsettings-override 2711 BLAKE2B 9fda814362885c8cbffad4ff1decdcf63ceb4f7c53b40691e4592c01649f9949202c3e80da4757c5a42669e857938a73b9e046e1ef6aea6f85bead07b0626ad0 SHA512 4a3a4c944ac512390cf59b519c7d61131dfd8d25f5194d3c3aa2119bcfd7f7c9ade52359742a599bd133893af8e4f8bbb315952f7be6611938f0736411a3fa75 -EBUILD unity-settings-7.5.0.ebuild 2590 BLAKE2B 3933a39cc1795ad1b8f5ed264334e5dad370b94b16dcc3698ab9764c0c9cd01d92aea91e70705640a3426d87b7649275e9594241bd15e43f3c70e38c31ae69ea SHA512 eb90cc8603df4d8aaa335d6ec2f3879ed6bcc9e88bc26b4e36c7ecf565fa7c02cf7f5ff4c62e050d14df8d4c9fc65ca949c15870dc043c2f794c791a12c30c7a +AUX unity-settings.gsettings-override 2888 BLAKE2B dd3552161dac14fff681e6f91e422a08cd3c918a77f507945c21c619b632a047c9e261f0eeb13983360e6e26df19afd91aee9596504059b5026656803aa06b74 SHA512 02c97aef0de2528c9aff63d26d72425520a02e6e997cce1b9e02c88dbeb2bb1db61eeae1f2f58795f28e3727c3bec1cc103fb424c5fe627492b4bf893c506467 +EBUILD unity-settings-7.5.1.ebuild 2602 BLAKE2B ea261eb1988e21d5f94372f491b433e413a5cbf1b3828115925f92e77ff37b5ce6c318527109603054537724102b1799fabeec566a1fa792cac9fbc233003f05 SHA512 7f6c4be6af975c0a59236f98293e5360ea247a21a9fbdd45b3cfd974338e570d112b2325c9a8980c50bbc036980cdbaf4199a5dbbb1a76fc16cd04d2181963ea MISC metadata.xml 656 BLAKE2B 2fff618105341065e8857949c60c31dba0e62991d99ed3c9e597a77796ef03159e4d235ebe1e946771541ac12e307719315d01bf9d212463e766855b07be1822 SHA512 9b57138e424e6cbc35172e73cc71cbeb7a1758a9769bc939cdcfd5ae794beafda4249e940b5ae809cab9a380964be62522b801cbbe7808b952b7ebc3a9a68b39 diff --git a/unity-base/unity-settings/files/unity-settings_21.04.gsettings-override b/unity-base/unity-settings/files/unity-settings.gsettings-override similarity index 93% rename from unity-base/unity-settings/files/unity-settings_21.04.gsettings-override rename to unity-base/unity-settings/files/unity-settings.gsettings-override index 4ee0073b..3849fc29 100644 --- a/unity-base/unity-settings/files/unity-settings_21.04.gsettings-override +++ b/unity-base/unity-settings/files/unity-settings.gsettings-override @@ -11,6 +11,9 @@ font = 'Ubuntu 11' [org.nemo.desktop:Unity] show-desktop-icons = true +[org.nemo.icon-view:Unity] +default-zoom-level = 'small' + [org.gnome.desktop.interface:Unity] gtk-theme = 'Ambiance' icon-theme = 'ubuntu-mono-dark' @@ -58,6 +61,10 @@ titlebar-uses-system-font = false [org.gnome.eog.ui:Unity] sidebar = false +# Tango and Classic scheme is misconfigured with Ambiance # +[org.gnome.gedit.preferences.editor:Unity] +scheme = 'kate' + [org.gnome.nautilus.desktop:Unity] home-icon-visible = false trash-icon-visible = false diff --git a/unity-base/unity-settings/unity-settings-7.5.0.ebuild b/unity-base/unity-settings/unity-settings-7.5.1.ebuild similarity index 95% rename from unity-base/unity-settings/unity-settings-7.5.0.ebuild rename to unity-base/unity-settings/unity-settings-7.5.1.ebuild index 9c43600f..54d5749b 100644 --- a/unity-base/unity-settings/unity-settings-7.5.0.ebuild +++ b/unity-base/unity-settings/unity-settings-7.5.1.ebuild @@ -3,13 +3,13 @@ EAPI=7 -inherit gnome2-utils +inherit gnome2-utils ubuntu-versionator DESCRIPTION="Default settings for the Unity" HOMEPAGE="https://launchpad.net/ubuntu/+source/ubuntu-settings" SRC_URI="" ## We are providing own gschema overrides based on Zesty ## -URELEASE="hirsute" +URELEASE="impish" UVER= LICENSE="GPL-2+" @@ -33,7 +33,7 @@ src_install() { gschema_dir="/usr/share/glib-2.0/schemas" insinto "${gschema_dir}" - newins "${FILESDIR}"/unity-settings_21.04.gsettings-override \ + newins "${FILESDIR}"/unity-settings.gsettings-override \ "${gschema}" if use ubuntu-cursor; then diff --git a/unity-base/unity/Manifest b/unity-base/unity/Manifest index 85206b88..ddb46b07 100644 --- a/unity-base/unity/Manifest +++ b/unity-base/unity/Manifest @@ -1,15 +1,11 @@ AUX 70im-config 996 BLAKE2B 0b699b35f783cd5379fac7cc2bad364a853dd6ba2e4dbf4b851faee188926aa27b2aaecfe24a0694b7f4fce912d11b626ed74c0a0d973d9c66bc255c0346de6e SHA512 0b5488d83243343a8582bfd2f1f7dc94103f4760f0647908f569cc1d4a2720aef8df2023f3f4fe65df3ca334c9a8efc62d704c4837d5d7dc5767983f5fe808e1 AUX 99unity-debug 501 BLAKE2B 0a05bf051c9c4298625075d414b16fa6c94611131241ec1ed5aeefdd61edfcc39221624814b2f94d088f3b18f69eba2441ee00460ee35ad29045b70d5b1aeb7e SHA512 d8291a806c9feb86ae3b608aa6c4017b715711d708b7366684ee792dcd3925a06d677c0f5c0c9f86cf596f0fdf2456e0c557b643ae63b18074026adb93db9f45 AUX 99unity-session_systemd 607 BLAKE2B b2d7b29e50aa8fe6e062cc095ee0d1d5d3a7155e25e6efa335f3a7459f2f43afea4a58beb5a07a127a76420247a549fe11a58650bb434ae00c04386f930ac894 SHA512 7d1b80fc7604941557874504ece4019713fa3d1a03af4a7077174d0bc1a47edc67aa1d4ddd04c07731e7983b9c2a595db1559c12820b312aeed03742546b8008 -AUX branding/cof.png 4463 BLAKE2B 0c4b9973bd8202ec0c281be4e32cf846244314984ec746aa4ca01bc48eecab3f19e9dd9615e8cb2a48572ad8a32831c3daeea92524136530c1b3b3eefe02a629 SHA512 65727db35e662a2dde2cdb34e5a6052092b443f865df8dac4f542f4540a31c8eaee742c632faece7509ff3515a402d06e29438c18de7ecc2db2264fb01ee70da -AUX branding/launcher_bfb.png 55190 BLAKE2B 892338383fae613ff22463de26c7400d3998a7a8fade56ab5291daa48d45abbf930d0bf61a996452120f9753d6faa03e73a0368db917b6f3f17e0f9c1fb1bb39 SHA512 ccb760372757dafedfc1cab78052db90612ba7c918ff6a14112a19bbcc924e1abb0ee3dd0126c0086f70f60aefa4627d5d9b3a6573f9c6839305e09445c5757f +AUX branding/launcher_bfb.svg 8495 BLAKE2B 473bac1412cd5bf2f0d4aa6a084e2a75343428684585a671b2ade505dca320c3560acea253d0ad12828923a509357dce693431a53ba9427b7c4cc4c45718f6b2 SHA512 0547c80226764a15f41e603c16e28f444ca16c3d6bc829d19bd6aa603c9b8202801ec61e93b7ab90b68f7dc75692ef01c3ca74e6c3699ac141636c8a3ea6c226 +AUX branding/lockscreen_cof.png 4463 BLAKE2B 0c4b9973bd8202ec0c281be4e32cf846244314984ec746aa4ca01bc48eecab3f19e9dd9615e8cb2a48572ad8a32831c3daeea92524136530c1b3b3eefe02a629 SHA512 65727db35e662a2dde2cdb34e5a6052092b443f865df8dac4f542f4540a31c8eaee742c632faece7509ff3515a402d06e29438c18de7ecc2db2264fb01ee70da AUX com.ubuntu.desktop.pkla 1856 BLAKE2B 933d1a6bf753a1f5f1891e4f3466dae924d60224c06db416dbc23601789edc381b84db230b70b1b85384126979c9ecc022be653eae397c3907a1c6eafff60f3e SHA512 3f246f3b24eb02b763b9e9a4abfd1bcfa633d69aede7b82736e16467fbd74cbdb31d34d8b30a5bf41658187f7d7052c6a6411a56deb64fc7fa1d45b48838d02d -AUX keep-const.patch 864 BLAKE2B c9d8823f70f4db8863a5bc9078d8966d35c3d6c3a453cdc666edf9d11cfe2e2d580c83b53e6c85fb33ea0907e8050dda1b9f8525244258f0f71506a93cb705b0 SHA512 943002bdcd844c4bb312683ba9b72c926135f4ca5bcd2b0213758f376dccc1567cd55f6c04f683b2582594ad17009f8db7d53781920f153f06df4882b3d893e5 -AUX systray-fix_disco.diff 3679 BLAKE2B 5fce7d196c302c5b62eb512c37b8a363a28b8ba258ed5aea87cb10602a72c1fa49b574e8b1aef1de3f8152370212caf947a028bc0d40a00d237878b8bef48682 SHA512 20a0fe468f95600c5b5cb9af7c968dc42a9525fc3c8e4860a5d0cd4bdbb4b3809a0365f3a324b1d71faf1dd97959249c56314e6a0ff873e5a6690f40acd883dd -AUX use-proper-casting.patch 1083 BLAKE2B 1fd2a20e506c94daaefd16f6b8b18dd059f53a76e19f057f709886c958da0d1a5b70038fa2a604a018ba382a754b4e2ab77cc097619e91343260399ff0953937 SHA512 7724c33e6755358f3a7a221c6a9653afaafbe81153352c75899894bad179ca6769320908322e1d3826327d8fdf701aac1b04f2297f749573a250abafc95d4b58 +AUX show-all-in-systray.diff 470 BLAKE2B 2e749c05642144c0d4608cbbbc21457a0baded56850e2abbd4999bed4ff1fcf16f4150ab811ec1b2f69d58ead18edb7ea952cae68301ceb1c4a9729100374052 SHA512 70ba7b7a888398e6ec814b57cafd1177264eb7b8f51daa66b31728ddcf2793a1984bf70003a71a9a98a0e6eff25e5306981ce726ba341f6024a2f1395309f0d4 AUX www-clients 104 BLAKE2B d330e8f993b65dbc1f840f36ffe47c777b5b05b29e1256b963d41e08e1274153fac4d88a91d60478b3fae1b55c9d9f6f61a121b050656e6f2b704f948f042408 SHA512 c0a13d2112926bda15169019b7e3cb1ff2ff681ca891249e0796678e262491c97730d20e25f280943e135e33e32468f86f6da8c196807349a79cbf3d987e6286 -DIST unity_7.5.0+20.04.20200312-0ubuntu1.tar.xz 2104052 BLAKE2B 5dff6f2dcfeacf629c9d34e4a69e02502949b5d19e642f9754dfdcf8ef7468c9c851415144a507844e286c1ad062a59ffe9cc33a72ddd775a388d40bb705f5cb SHA512 ce34837df0989b0806ebab7c3b723734e54086063227d3276f53237561ba5cd924511b80e8bf0d9d54d7bd6b8e06e0491ef6190f959eb302f245ae52bac508ee DIST unity_7.5.1+21.10.20210601.1-0ubuntu1.tar.xz 2105408 BLAKE2B b49707ce3694212731706c2de6cce92b05f69722e7e489b95a17e77da3920de35385083df73cc42494c2a703e689fcf2560ead5f526f5f9be556443d21b2d2ad SHA512 4adebbacdfad911b38d6b64ef371976073fa8075bbc4ccc34fbdb2f475c5f1c713025c89a601620dcc16828ebd46fc592ae1749584e72b49d875c3522cdf68f0 -EBUILD unity-7.5.0_p20200312_p0_p01.ebuild 10560 BLAKE2B 65c5d88e3ef9c9aba1b35d745cd7aefd027ad7848ebc0f063af2de2077f59d6edc9bf24fc5be4f33f1b8bc2a6b9976a96a140a422eac6a13957796eb00e64a84 SHA512 2e3cdd2875a542810e9ab03160cc2ffa41689a9ffc2b775f749af0290f6b80b64ac79ef10ca3ddea84f816964388731141ad68ff51b13c5a892fcbd7b8e14ee7 -EBUILD unity-7.5.1_p2021060101_p0_p01.ebuild 10395 BLAKE2B 18140c6be2c7b42aca70b966466e9b8ccc3dfe62b0ac7e5727ab77c8bfa7f4ceadf6d5e400820b2bb72fa812298e7eae2835bee759c6b083c85c8fae49c58df3 SHA512 a3bc464b71c91c3d0699cc63f963d3abc5728f92f36b23b0b0a2796ce781a73285867158c480937f43c55f7fb5ef9ff745e5d874cb87d1f45369177af2a213a4 -MISC metadata.xml 493 BLAKE2B b1d05b694f555fdf20817bfea565dfa60c6deb3a1c7170e2ba04594491269996b9d1d6677be057994ec7bbe9a25fd0248bf37e59f6a428f87c415eb219cd4fd3 SHA512 ce70f96304b25c0c20a14cfc42cbb7fdc92bc12782a74c1b0d0753999a90d12d87e837612482d8f1e008777cddfa196a562903ca81e805cd3202872ab2f559e1 +EBUILD unity-7.5.1_p2021060101_p0_p01.ebuild 10340 BLAKE2B 602d237aef484cc068a927eb106299010044f728dd2d4ee5bbb25ca617cfc2bda4500ae880babe119489cc8c99d53bdb0f7d742cf2f9888d62f24962e80b437e SHA512 395a007fec0af1e1577829a90eb6660b1d5e5fc1253d021639336cfa0984d5d7de1ab6e1fed5e10079a2a0f71c24fdfecf48edbe0a2997040c24f607c003405e +MISC metadata.xml 587 BLAKE2B 0a9dc04588ac93ad407902e5f52f63c1dfcfce7f068a66b357120e667ec0a038998c46ca0977570b7fafbe5f6e3a19c0f43aae8b1fd930afa3b2c841e607bc64 SHA512 90a8e14dd5c4a21acbf8502674f10693d8943fd2e93b060127cdb1a82cc817012d8f8f608267c767880722ddf61d9258f2470fd19dffd9f7a80af98f8c0fd32a diff --git a/unity-base/unity/files/branding/launcher_bfb.png b/unity-base/unity/files/branding/launcher_bfb.png deleted file mode 100644 index 4cd921ad..00000000 Binary files a/unity-base/unity/files/branding/launcher_bfb.png and /dev/null differ diff --git a/unity-base/unity/files/branding/launcher_bfb.svg b/unity-base/unity/files/branding/launcher_bfb.svg new file mode 100644 index 00000000..ed3af97f --- /dev/null +++ b/unity-base/unity/files/branding/launcher_bfb.svg @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/unity-base/unity/files/branding/cof.png b/unity-base/unity/files/branding/lockscreen_cof.png similarity index 100% rename from unity-base/unity/files/branding/cof.png rename to unity-base/unity/files/branding/lockscreen_cof.png diff --git a/unity-base/unity/files/keep-const.patch b/unity-base/unity/files/keep-const.patch deleted file mode 100644 index 7de610e7..00000000 --- a/unity-base/unity/files/keep-const.patch +++ /dev/null @@ -1,19 +0,0 @@ -author Marco Trevisan (Treviño) 2021-06-01 14:49:06 +0200 -committer Marco Trevisan (Treviño) 2021-06-01 14:49:50 +0200 -commit ffc5be4ee8e2a44d61a51485fae66aafca91ca7d (patch) -tree b2932f87004b8885057bd19d804639412900dac0 -parent b947384158d8f8136d8fba6a265d76219cd4a27e (diff) -IntrospectionData: Keep Get() const as it should be -The builder is now invalid but unreffing will happne in the destructor - -diff --git a/unity-shared/IntrospectionData.cpp b/unity-shared/IntrospectionData.cpp -index 2dbb393..495e175 100644 ---- a/unity-shared/IntrospectionData.cpp -+++ b/unity-shared/IntrospectionData.cpp -@@ -55,7 +55,6 @@ IntrospectionData::~IntrospectionData() - GVariant* IntrospectionData::Get() const - { - GVariant* data = g_variant_builder_end(builder_); -- g_clear_pointer(&builder_, g_variant_builder_unref); - return data; - } diff --git a/unity-base/unity/files/show-all-in-systray.diff b/unity-base/unity/files/show-all-in-systray.diff new file mode 100644 index 00000000..52504055 --- /dev/null +++ b/unity-base/unity/files/show-all-in-systray.diff @@ -0,0 +1,14 @@ +# https://launchpad.net/bugs/974480 # +--- +diff -Nur a/panel/PanelTray.cpp b/panel/PanelTray.cpp +--- a/panel/PanelTray.cpp 2021-06-01 21:58:04.000000000 +0200 ++++ b/panel/PanelTray.cpp 2021-10-05 03:48:28.012356376 +0200 +@@ -158,7 +158,7 @@ + if (title.find(item) == 0 || res_name.find(item) == 0 || res_class.find(item) == 0) + return true; + +- return false; ++ return true; + } + + void PanelTray::OnTrayIconRemoved(NaTrayManager* manager, NaTrayChild* removed) diff --git a/unity-base/unity/files/systray-fix_disco.diff b/unity-base/unity/files/systray-fix_disco.diff deleted file mode 100644 index 17a45a62..00000000 --- a/unity-base/unity/files/systray-fix_disco.diff +++ /dev/null @@ -1,81 +0,0 @@ -diff -urN unity/panel/PanelTray.cpp unity-patched/panel/PanelTray.cpp ---- unity/panel/PanelTray.cpp 2019-03-05 03:36:44.000000000 +1030 -+++ unity-patched/panel/PanelTray.cpp 2019-05-25 19:54:20.699329664 +0930 -@@ -133,7 +133,7 @@ - glib::String res_name; - na_tray_child_get_wm_class(icon, &res_name, &res_class); - -- bool accept = FilterTray(title.Str(), res_name.Str(), res_class.Str()); -+ bool accept = true; - - if (accept) - { -diff -urN unity/tests/test_panel_tray.cpp unity-patched/tests/test_panel_tray.cpp ---- unity/tests/test_panel_tray.cpp 2019-03-05 03:36:44.000000000 +1030 -+++ unity-patched/tests/test_panel_tray.cpp 1970-01-01 09:30:00.000000000 +0930 -@@ -1,65 +0,0 @@ --/* -- * Copyright 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 warranties of -- * MERCHANTABILITY, SATISFACTORY QUALITY 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 -- * version 3 along with this program. If not, see -- * -- * -- * Authored by: Andrea Azzarone -- * -- */ -- --#include -- --#include "panel/PanelTray.h" -- -- TEST(TestPanelTray, FilterTray) -- { -- EXPECT_TRUE(unity::PanelTray::FilterTray("JavaEmbeddedFrame", "", "")); -- EXPECT_TRUE(unity::PanelTray::FilterTray("", "JavaEmbeddedFrame", "")); -- EXPECT_TRUE(unity::PanelTray::FilterTray("", "", "JavaEmbeddedFrame")); -- -- EXPECT_TRUE(unity::PanelTray::FilterTray("Wine", "", "")); -- EXPECT_TRUE(unity::PanelTray::FilterTray("", "Wine", "")); -- EXPECT_TRUE(unity::PanelTray::FilterTray("", "", "Wine")); -- -- EXPECT_TRUE(unity::PanelTray::FilterTray("JavaEmbeddedFrameUbuntu", "", "")); -- EXPECT_TRUE(unity::PanelTray::FilterTray("", "JavaEmbeddedFrameUbuntu", "")); -- EXPECT_TRUE(unity::PanelTray::FilterTray("", "", "JavaEmbeddedFrameUbuntu")); -- -- EXPECT_TRUE(unity::PanelTray::FilterTray("WineUbuntu", "", "")); -- EXPECT_TRUE(unity::PanelTray::FilterTray("", "WineUbuntu", "")); -- EXPECT_TRUE(unity::PanelTray::FilterTray("", "", "WineUbuntu")); -- -- EXPECT_FALSE(unity::PanelTray::FilterTray("UbuntuJavaEmbeddedFrame", "", "")); -- EXPECT_FALSE(unity::PanelTray::FilterTray("", "UbuntuJavaEmbeddedFrame", "")); -- EXPECT_FALSE(unity::PanelTray::FilterTray("", "", "UbuntuJavaEmbeddedFrame")); -- -- EXPECT_FALSE(unity::PanelTray::FilterTray("UbuntuWine", "", "")); -- EXPECT_FALSE(unity::PanelTray::FilterTray("", "UbuntuWine", "")); -- EXPECT_FALSE(unity::PanelTray::FilterTray("", "", "UbuntuWine")); -- -- EXPECT_FALSE(unity::PanelTray::FilterTray("UbuntuJavaEmbeddedFrameUbuntu", "", "")); -- EXPECT_FALSE(unity::PanelTray::FilterTray("", "UbuntuJavaEmbeddedFrameUbuntu", "")); -- EXPECT_FALSE(unity::PanelTray::FilterTray("", "", "UbuntuJavaEmbeddedFrameUbuntu")); -- -- EXPECT_FALSE(unity::PanelTray::FilterTray("UbuntuWineUbuntu", "", "")); -- EXPECT_FALSE(unity::PanelTray::FilterTray("", "UbuntuWineUbuntu", "")); -- EXPECT_FALSE(unity::PanelTray::FilterTray("", "", "UbuntuWineUbuntu")); -- -- EXPECT_TRUE(unity::PanelTray::FilterTray("Wine", "Ubuntu", "")); -- EXPECT_TRUE(unity::PanelTray::FilterTray("Ubuntu", "JavaEmbeddedFrame", "")); -- EXPECT_TRUE(unity::PanelTray::FilterTray("Wine", "JavaEmbeddedFrame", "Ubuntu")); -- -- EXPECT_FALSE(unity::PanelTray::FilterTray("Ubuntu", "Unity", "Hello world!")); --} -- diff --git a/unity-base/unity/files/use-proper-casting.patch b/unity-base/unity/files/use-proper-casting.patch deleted file mode 100644 index 3e51a092..00000000 --- a/unity-base/unity/files/use-proper-casting.patch +++ /dev/null @@ -1,20 +0,0 @@ -author Marco Trevisan (Treviño) 2021-06-01 14:50:07 +0200 -committer Marco Trevisan (Treviño) 2021-06-01 14:50:07 +0200 -commit e7a54a7d4fbd26aace9bd856eebd3ebc3d965df5 (patch) -tree 3383c44030c514583ba8864f73a4a51afb479cc2 -parent ffc5be4ee8e2a44d61a51485fae66aafca91ca7d (diff) -ResultRendererTile: Use proper casting to GdkPixbuf for drag icon - -diff --git a/dash/ResultRendererTile.cpp b/dash/ResultRendererTile.cpp -index ae0fc22..94a26ff 100644 ---- a/dash/ResultRendererTile.cpp -+++ b/dash/ResultRendererTile.cpp -@@ -259,7 +259,7 @@ nux::NBitmapData* ResultRendererTile::GetDndImage(Result const& row) const - if (container && container->drag_icon && container->drag_icon.IsType(GDK_TYPE_PIXBUF)) - { - // Need to ref the drag icon because GdkGraphics will unref it. -- nux::GdkGraphics graphics(GDK_PIXBUF(g_object_ref(container->drag_icon))); -+ nux::GdkGraphics graphics(g_object_ref(static_cast(container->drag_icon))); - bitmap = graphics.GetBitmap(); - } - return bitmap ? bitmap : ResultRenderer::GetDndImage(row); diff --git a/unity-base/unity/metadata.xml b/unity-base/unity/metadata.xml index f6b2e67b..8b1f4020 100644 --- a/unity-base/unity/metadata.xml +++ b/unity-base/unity/metadata.xml @@ -5,9 +5,10 @@ gentoo-unity7 + Enable Gentoo Unity7 specific branding Use OpenGL ES 2.0 Enable the backend for Unity's HUD Enable desktop icons via gnome-extra/nemo - Enable system tray support in the Unity menu bar + Enable system tray support in the notification area for all applications diff --git a/unity-base/unity/unity-7.5.0_p20200312_p0_p01.ebuild b/unity-base/unity/unity-7.5.0_p20200312_p0_p01.ebuild deleted file mode 100644 index 510c2e06..00000000 --- a/unity-base/unity/unity-7.5.0_p20200312_p0_p01.ebuild +++ /dev/null @@ -1,304 +0,0 @@ - -# Copyright 1999-2021 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 -PYTHON_COMPAT=( python3_{7..9} ) -DISTUTILS_SINGLE_IMPL=1 - -URELEASE="hirsute" -inherit cmake-utils distutils-r1 eutils gnome2-utils pam systemd toolchain-funcs ubuntu-versionator xdummy - -UVER_PREFIX="+20.04.${PVR_MICRO}" - -DESCRIPTION="The Ubuntu Unity Desktop" -HOMEPAGE="https://launchpad.net/unity" -SRC_URI="${UURL}/${MY_P}${UVER_PREFIX}-${UVER}.tar.xz" - -LICENSE="GPL-3 LGPL-3" -SLOT="0" -KEYWORDS="~amd64" -IUSE="+branding debug doc gles2 +hud +nemo pch systray test" -RESTRICT="mirror" - -S="${WORKDIR}/${PN}" - -RDEPEND="app-i18n/ibus[gtk,gtk2] - >=sys-apps/systemd-232 - sys-auth/polkit-pkla-compat - unity-base/gsettings-ubuntu-touch-schemas - unity-base/session-shortcuts - unity-base/unity-language-pack - x11-themes/humanity-icon-theme - x11-themes/gtk-engines-murrine - x11-themes/unity-asset-pool - hud? ( unity-base/hud ) - nemo? ( gnome-extra/nemo )" -DEPEND="${RDEPEND} - !sys-apps/upstart - !unity-base/dconf-qt - dev-libs/appstream-glib - >=dev-libs/boost-1.71:= - dev-libs/dee:= - dev-libs/dbus-glib - dev-libs/icu:= - dev-libs/libappindicator - dev-libs/libdbusmenu:= - dev-libs/libffi - dev-libs/libindicate[gtk,introspection] - dev-libs/libindicator - dev-libs/libsigc++:2 - dev-libs/libunity - dev-libs/libunity-misc:= - dev-libs/xpathselect - gnome-base/gnome-desktop:3= - gnome-base/gnome-menus:3 - gnome-base/gnome-session[systemd] - gnome-base/gsettings-desktop-schemas - gnome-extra/polkit-gnome:0 - media-libs/glew:= - media-libs/mesa - sys-apps/dbus[systemd,user-session,X] - sys-auth/pambase - unity-base/bamf:= - unity-base/compiz:=[gles2=] - unity-base/nux:=[debug?,gles2=] - unity-base/overlay-scrollbar - unity-base/unity-control-center - unity-base/unity-settings-daemon - x11-base/xorg-server[dmx] - >=x11-libs/cairo-1.13.1 - x11-libs/libXfixes - x11-libs/startup-notification - unity-base/unity-gtk-module - doc? ( app-doc/doxygen ) - test? ( >=dev-cpp/gtest-1.8.1 - dev-python/autopilot - dev-util/dbus-test-runner - sys-apps/xorg-gtest )" - -pkg_setup() { - ubuntu-versionator_pkg_setup - python-single-r1_pkg_setup -} - -src_prepare() { - ## Disable source trying to run it's own dummy-xorg-test-runner.sh script ## - use test && sed -i \ - -e 's:set (DUMMY_XORG_TEST_RUNNER.*:set (DUMMY_XORG_TEST_RUNNER /bin/true):g' \ - tests/CMakeLists.txt - - ubuntu-versionator_src_prepare - - # Taken from http://ppa.launchpad.net/timekiller/unity-systrayfix/ubuntu/pool/main/u/unity/ # - use systray \ - && eapply "${FILESDIR}/systray-fix_disco.diff" - - # Setup Unity side launcher default applications # - sed -i \ - -e "/firefox/r ${FILESDIR}/www-clients" \ - -e '/ubiquity/d' \ - -e '/org.gnome.Software/d' \ - data/com.canonical.Unity.gschema.xml || die - - sed -i \ - -e 's:"Ubuntu":"Gentoo":g' \ - -e 's:"Ubuntu Desktop":"Gentoo Unity⁷":g' \ - panel/PanelMenuView.cpp || die - - # Remove testsuite cmake installation # - sed -i \ - -e '/setup.py install/d' \ - tests/CMakeLists.txt || die "Sed failed for tests/CMakeLists.txt" - - # Unset CMAKE_BUILD_TYPE env variable so that cmake-utils.eclass doesn't try to 'append-cppflags -DNDEBUG' # - # resulting in build failure with 'fatal error: unitycore_pch.hh: No such file or directory' # - export CMAKE_BUILD_TYPE=none - - # Don't kill -9 unity-panel-service when launched using PANEL_USE_LOCAL_SERVICE env variable # - # It slows down the launch of unity-panel-service in lockscreen mode # - sed -i \ - -e '/killall -9 unity-panel-service/,+1d' \ - UnityCore/DBusIndicators.cpp || die "Sed failed for UnityCore/DBusIndicators.cpp" - - # New stable dev-libs/boost-1.71 compatibility changes # - sed -i \ - -e 's:boost/utility.hpp:boost/next_prior.hpp:g' \ - launcher/FavoriteStorePrivate.cpp || die - - # DESKTOP_SESSION and SESSION is 'unity' not 'ubuntu' # - sed -i \ - -e 's:SESSION=ubuntu:SESSION=unity:g' \ - -e 's:ubuntu-session:unity-session:g' \ - {data/unity7.conf.in,data/unity7.service.in,services/unity-panel-service.conf.in} || die "Sed failed for {data/unity7.conf.in,services/unity-panel-service.conf.in}" - sed -i \ - -e 's:ubuntu.session:unity.session:g' \ - tools/{systemd,upstart}-prestart-check || die "Sed failed for tools/{systemd,upstart}-prestart-check" - - # 'After=graphical-session-pre.target' must be explicitly set in the unit files that require it # - # Relying on the upstart job /usr/share/upstart/systemd-session/upstart/systemd-graphical-session.conf # - # to create "$XDG_RUNTIME_DIR/systemd/user/${unit}.d/graphical-session-pre.conf" drop-in units # - # results in weird race problems on desktop logout where the reliant desktop services # - # stop in a different jumbled order each time # - sed -i \ - -e 's:After=\(unity-settings-daemon.service\):After=graphical-session-pre.target gnome-session.service bamfdaemon.service \1:' \ - data/unity7.service.in || die "Sed failed for data/unity7.service.in" - - # Apps launched from u-c-c need GTK_MODULES environment variable with unity-gtk-module value # - # to use unity global/titlebar menu. Disable unity-gtk-module.service as it sets only # - # dbus/systemd environment variable. We are providing xinit.d script to set GTK_MODULES # - # environment variable to load unity-gtk-module (see unity-base/unity-gtk-module package) # - sed -i \ - -e 's:unity-gtk-module.service ::' \ - data/unity7.service.in - - # Don't use drop-down menu icon from Adwaita theme as it's too dark since v3.30 # - sed -i \ - -e "s/go-down-symbolic/drop-down-symbolic/" \ - decorations/DecorationsMenuDropdown.cpp - - # Include directly iostream needed for std::ostream # - sed -i 's/.*GLibWrapper.h.*/#include \n&/' UnityCore/GLibWrapper.cpp - - # Fix building with GCC 10 # - sed -i '/#include /a #include ' UnityCore/GLibSource.h - sed -i '/#include /a #include ' unity-shared/CompizUtils.cpp - sed -i '/#include "GLibWrapper.h"/a #include ' UnityCore/ScopeData.h - sed -i '/#include /a #include ' unity-shared/ThemeSettings.h - - eapply "${FILESDIR}/keep-const.patch" - eapply "${FILESDIR}/use-proper-casting.patch" - - cmake-utils_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DBUILD_GLES=$(usex gles2 ON OFF) - -DBUILD_XORG_GTEST=$(usex test ON OFF) - -DCMAKE_INSTALL_SYSCONFDIR=/etc - -DCMAKE_INSTALL_LOCALSTATEDIR=/var - -DCOMPIZ_BUILD_TESTING=$(usex test ON OFF) - -DCOMPIZ_BUILD_WITH_RPATH=FALSE - -DCOMPIZ_DISABLE_PLUGIN_UNITYMTGRABHANDLES=OFF - -DCOMPIZ_DISABLE_PLUGIN_UNITYSHELL=OFF - -DCOMPIZ_PACKAGING_ENABLED=TRUE - -DCOMPIZ_PLUGIN_INSTALL_TYPE=package - -DENABLE_UNIT_TESTS=$(usex test ON OFF) - -DI18N_SUPPORT=OFF - -Duse_pch=$(usex pch ON OFF) - ) - cmake-utils_src_configure || die -} - -src_compile() { - if use test; then - pushd tests/autopilot - distutils-r1_src_compile - popd - fi - - cmake-utils_src_compile || die -} - -src_test() { - pushd ${CMAKE_BUILD_DIR} - local XDUMMY_COMMAND="make check-headless" - xdummymake - popd -} - -src_install() { - pushd ${CMAKE_BUILD_DIR} - addpredict /usr/share/glib-2.0/schemas/ # FIXME - emake DESTDIR="${D}" install - popd - - if use debug; then - exeinto /etc/X11/xinit/xinitrc.d/ - doexe "${FILESDIR}/99unity-debug" - fi - - if use test; then - pushd tests/autopilot - distutils-r1_src_install - popd - fi - - python_fix_shebang "${ED}" - - # Gentoo dash launcher icon # - if use branding; then - insinto /usr/share/unity/icons - doins "${FILESDIR}/branding/launcher_bfb.png" - doins "${FILESDIR}/branding/cof.png" - - # Gentoo logo on lock-screen on multi head system - newins "${FILESDIR}/branding/cof.png" lockscreen_cof.png - - fi - - exeinto /etc/X11/xinit/xinitrc.d/ - doexe "${FILESDIR}/70im-config" # Configure input method (xim/ibus) - doexe "${FILESDIR}/99unity-session_systemd" # Unity session environment setup and 'startx' launcher - - # Some newer multilib profiles have different /usr/lib(32,64)/ paths so insert the correct one - local fixlib=$(get_libdir) - sed -e "s:/usr/lib/:/usr/${fixlib}/:g" \ - -i "${ED}/etc/X11/xinit/xinitrc.d/70im-config" || die - sed -e "/nux\/unity_support_test/{s/lib/${fixlib}/}" \ - -i "${ED}/usr/${fixlib}/unity/compiz-profile-selector" || die - - # Clean up pam file installation as used in lockscreen (LP# 1305440) # - rm -rf "${ED}etc/pam.d" - pamd_mimic system-local-login ${PN} auth account session - - # Set base desktop user privileges # - insinto /var/lib/polkit-1/localauthority/10-vendor.d - doins "${FILESDIR}/com.ubuntu.desktop.pkla" - fowners root:polkitd /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla - - # Make 'unity-session.target' systemd user unit auto-start 'unity7.service' # - dosym $(systemd_get_userunitdir)/unity7.service $(systemd_get_userunitdir)/unity-session.target.requires/unity7.service - # Disable service, see unity-gtk-module.service in src_prepare phase - #dosym $(systemd_get_userunitdir)/unity-gtk-module.service $(systemd_get_userunitdir)/unity-session.target.wants/unity-gtk-module.service - dosym $(systemd_get_userunitdir)/unity-settings-daemon.service $(systemd_get_userunitdir)/unity-session.target.wants/unity-settings-daemon.service - dosym $(systemd_get_userunitdir)/window-stack-bridge.service $(systemd_get_userunitdir)/unity-session.target.wants/window-stack-bridge.service - - # Top panel systemd indicator services required for unity-panel-service # - for each in {application,bluetooth,datetime,keyboard,messages,power,printers,session,sound}; do - dosym $(systemd_get_userunitdir)/indicator-${each}.service $(systemd_get_userunitdir)/unity-panel-service.service.wants/indicator-${each}.service - done - - # Top panel systemd indicator services required for unity-panel-service-lockscreen # - for each in {datetime,keyboard,power,session,sound}; do - dosym $(systemd_get_userunitdir)/indicator-${each}.service $(systemd_get_userunitdir)/unity-panel-service-lockscreen.service.wants/indicator-${each}.service - done -} - -pkg_preinst() { gnome2_schemas_savelist; } - -pkg_postinst() { - gnome2_schemas_update - ubuntu-versionator_pkg_postinst - echo - elog "If you use a custom ~/.xinitrc to startx" - elog "then you should add the following to the top of your ~/.xinitrc file" - elog "to ensure all needed services are started:" - elog ' XSESSION=unity' - elog ' if [ -d /etc/X11/xinit/xinitrc.d ] ; then' - elog ' for f in /etc/X11/xinit/xinitrc.d/* ; do' - elog ' [ -x "$f" ] && . "$f"' - elog ' done' - elog ' unset f' - elog ' fi' - if use test; then - elog - elog "To run autopilot tests, do the following:" - elog "cd /usr/$(get_libdir)/${EPYTHON}/site-packages/unity/tests" - elog "and run 'autopilot run unity'" - fi - echo -} - -pkg_postrm() { gnome2_schemas_update; } diff --git a/unity-base/unity/unity-7.5.1_p2021060101_p0_p01.ebuild b/unity-base/unity/unity-7.5.1_p2021060101_p0_p01.ebuild index d50d1f86..2fe409f6 100644 --- a/unity-base/unity/unity-7.5.1_p2021060101_p0_p01.ebuild +++ b/unity-base/unity/unity-7.5.1_p2021060101_p0_p01.ebuild @@ -17,7 +17,7 @@ SRC_URI="${UURL}/${MY_P}${UVER_PREFIX}-${UVER}.tar.xz" LICENSE="GPL-3 LGPL-3" SLOT="0" -#KEYWORDS="~amd64" +KEYWORDS="~amd64" IUSE="+branding debug doc gles2 +hud +nemo pch systray test" RESTRICT="mirror" @@ -28,7 +28,7 @@ RDEPEND="app-i18n/ibus[gtk,gtk2] sys-auth/polkit-pkla-compat unity-base/gsettings-ubuntu-touch-schemas unity-base/session-shortcuts - unity-base/unity-language-pack + unity-base/unity-language-pack[branding=] x11-themes/humanity-icon-theme x11-themes/gtk-engines-murrine x11-themes/unity-asset-pool @@ -90,9 +90,8 @@ src_prepare() { ubuntu-versionator_src_prepare - # Taken from http://ppa.launchpad.net/timekiller/unity-systrayfix/ubuntu/pool/main/u/unity/ # - use systray \ - && eapply "${FILESDIR}/systray-fix_disco.diff" + # https://launchpad.net/bugs/974480 # + use systray && eapply "${FILESDIR}/show-all-in-systray.diff" # Setup Unity side launcher default applications # sed -i \ @@ -103,8 +102,11 @@ src_prepare() { sed -i \ -e 's:"Ubuntu":"Gentoo":g' \ - -e 's:"Ubuntu Desktop":"Gentoo Unity⁷":g' \ - panel/PanelMenuView.cpp || die + panel/PanelMenuView.cpp + + use branding && sed -i \ + -e 's:"Ubuntu Desktop":"Gentoo Unity⁷ Desktop":g' \ + panel/PanelMenuView.cpp # Remove testsuite cmake installation # sed -i \ @@ -223,15 +225,12 @@ src_install() { python_fix_shebang "${ED}" - # Gentoo dash launcher icon # if use branding; then insinto /usr/share/unity/icons - doins "${FILESDIR}/branding/launcher_bfb.png" - doins "${FILESDIR}/branding/cof.png" - + # Gentoo dash launcher icon # + doins "${FILESDIR}/branding/launcher_bfb.svg" # Gentoo logo on lock-screen on multi head system - newins "${FILESDIR}/branding/cof.png" lockscreen_cof.png - + doins "${FILESDIR}/branding/lockscreen_cof.png" fi exeinto /etc/X11/xinit/xinitrc.d/ diff --git a/unity-extra/diodon/Manifest b/unity-extra/diodon/Manifest index c9a070c9..30067738 100644 --- a/unity-extra/diodon/Manifest +++ b/unity-extra/diodon/Manifest @@ -1,5 +1,3 @@ -DIST diodon_1.11.0.orig.tar.xz 92604 BLAKE2B 2d46062b8152b7ba2e405ab0c4bca3d2f930d0135e458fe2ca27f54a65593b9384e8b7d9a3c34547e9670b82e6ef39119f97ba56b1ace199f9486e3267542a51 SHA512 38929e91f343d8c8497f7ea6b51b97f6874aa0e738c70e93e3c1a44365be388769d0995ccca928905a04b6f691c31d3ae387708f44196e36030a712c47c94ac5 DIST diodon_1.11.1.orig.tar.xz 92464 BLAKE2B 58ee9fca3670f81c5001addd4e6055a20506bf352076bb516c043f134c306eb8bad025eac58b1f2e7a2514e8e59417a1216e9a24ea88d5638ed25064215649ff SHA512 d7fa2c0fa51decc59620c3ca789063055ebdd28bce1ac9fcda6a9987f14f6e1d201a2e5103310bb0a68914977a8d5bb0023edcdd9c077cb4676ed2b233911c06 -EBUILD diodon-1.11.0_p1.ebuild 1143 BLAKE2B 816e546bdcf00c9437fe62b8736e31559072985c5066ed317aa47529b9a5fe6dc942d23d5cc7d6f6ee5617a239668032f59795858fc0c4b9b943ec3a7fada791 SHA512 62427205b6e4c64d7cf53bea88303454793d6815b0838b11529611e297a83b69eb4f626bc0c41ab2e6b6d329e97f00e795ab70c0f922df8f0d14cd9f89697656 -EBUILD diodon-1.11.1_p1.ebuild 1156 BLAKE2B 6777dfe1ff8d5effeb85e872a3f98f9ae62f5a0935f81c90004aadf5f4d090c232bafd64a1843e450bcb86aa4cbada9f32ae4b7fe60d41b7314beb78657c7742 SHA512 ea853c78b8f48d334d5d537abeeda7e841cdf3e12aed3ae9c8402f2c40a1e2f529ef3724b582dc9979bb8826de54c627fdd93aa0fb03aaed9d7eea30575d0d4a +EBUILD diodon-1.11.1_p1.ebuild 1158 BLAKE2B 396e0913692f7240831deeb9478af1bb957660b4770ba2e1b6d2d4d3b97118eca0e7ab7dbba37f0578f8b98fae2664e5f44ee6e70ff84e00c0cad35177dc4219 SHA512 ea22dae0e52eab6791980ca6b2e4e415ee7365285406a546832e25148b5e11738e407c632a2976fd7f279ef7714b40f59523a10a1698fddb08c6f126009c9e8a MISC metadata.xml 348 BLAKE2B 01546acfc5427c2576a6c1f1856772adc775df0ab1033ca96e6b6063c0b823cd154888d1fc9cdff4a64c29826f927a5eb7244e918cebf6e0e8b16e123b32aaf5 SHA512 caffc1922ca5a1356dc005afeade196b3bb202eaeb7d87094f9a9adc670d683c079d489b4925b08e35a7eac84ae5c53d7da50f942843b5fd67c1bd262860aedb diff --git a/unity-extra/diodon/diodon-1.11.0_p1.ebuild b/unity-extra/diodon/diodon-1.11.0_p1.ebuild deleted file mode 100644 index a83d6d4d..00000000 --- a/unity-extra/diodon/diodon-1.11.0_p1.ebuild +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -URELEASE="hirsute" -inherit meson vala xdg ubuntu-versionator - -UVER="-${PVR_MICRO}" - -DESCRIPTION="GTK+ Clipboard manager" -HOMEPAGE="https://launchpad.net/diodon" -SRC_URI="${UURL}/${MY_P}.orig.tar.xz" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~amd64" -IUSE="+indicator scope" -RESTRICT="mirror" - -DEPEND=">=dev-libs/glib-2.46:2[dbus] - >=dev-libs/libpeas-1.1.1[gtk] - dev-util/desktop-file-utils - >=gnome-extra/zeitgeist-0.9.14[introspection] - x11-apps/xauth - x11-base/xorg-server[xvfb] - >=x11-libs/gtk+-3.22:3 - >=x11-libs/libXtst-1.2.0 - x11-misc/xvfb-run - - indicator? ( >=dev-libs/libappindicator-0.3.0:3 ) - scope? ( >=unity-base/unity-7.1.0 ) - - $(vala_depend)" - -src_prepare() { - # Revert dependency to deprecated appindicator # - sed -i \ - -e "/appindicator_dep/{s/ayatana-//}" \ - -e "/appindicator_dep/{s/0.5.3/0.3.0/}" \ - meson.build - - xdg_src_prepare - vala_src_prepare - default -} - -src_configure() { - local emesonargs=( - $(meson_use !indicator disable-indicator-plugin) - $(meson_use scope enable-unity-scope) - ) - meson_src_configure -} diff --git a/unity-extra/diodon/diodon-1.11.1_p1.ebuild b/unity-extra/diodon/diodon-1.11.1_p1.ebuild index b157ef91..82643599 100644 --- a/unity-extra/diodon/diodon-1.11.1_p1.ebuild +++ b/unity-extra/diodon/diodon-1.11.1_p1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2020 Gentoo Authors +# Copyright 1999-2021 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 EAPI=6 @@ -14,7 +14,7 @@ SRC_URI="${UURL}/${MY_P}.orig.tar.xz" LICENSE="GPL-2" SLOT="0" -#KEYWORDS="~amd64" +KEYWORDS="~amd64" IUSE="+indicator scope" RESTRICT="mirror" diff --git a/unity-extra/ehooks/Manifest b/unity-extra/ehooks/Manifest index c9886623..c5d1227c 100644 --- a/unity-extra/ehooks/Manifest +++ b/unity-extra/ehooks/Manifest @@ -1,2 +1,2 @@ -EBUILD ehooks-21.04.ebuild 3789 BLAKE2B bdb8e15b619e2d4073c8b740e3651674a4289f2a6128b9b1b680c244842bf98ebb6550ee0368b7377a190aa63871ab043c285d35fd7fcb8392bbea57c9cbf1d2 SHA512 5d3cf44d436f94980fe803cfb77f98722e9ecb0de3f45caff2e5384ee039622e59d9f862173def92ff25989da320d03297f530e7067bfe47aea589d08099261f +EBUILD ehooks-21.10.ebuild 3788 BLAKE2B cfb6db035a78a83b67bc0eb6c0e89275f45625960fd5c93293467a0b8bfb2278470cb1705e46986ff3aeee21d061be38dd831d6f3ed9e51e18e03c599b71f35b SHA512 8d2c6bdc2f43d6154d517c574b904fe62e1b7237b7c10343cc34684d8aeab59b87ab05b98c4dbdb255a4605c8aa5ed4273b17fc2f8b9fc6b5b051a2d610f3948 MISC metadata.xml 1522 BLAKE2B c27dbd19fabbc7d07080da55aa52ee08dce5455cbeb6f5ba1f577ab4915cd53b2c42d7e44b4f0dc21a96e4d280c18fb4949eac11583db261b05ea873a63d64f5 SHA512 ceb965d527d1a3f9d9c48bbd0d96c4fd7fb924ab04a0768bd918d5734599b06dada475ed042c9b3e6808a4b46bf28da5e698cc29934107a382185e0835d3d6ea diff --git a/unity-extra/ehooks/ehooks-21.04.ebuild b/unity-extra/ehooks/ehooks-21.10.ebuild similarity index 96% rename from unity-extra/ehooks/ehooks-21.04.ebuild rename to unity-extra/ehooks/ehooks-21.10.ebuild index a2b5d168..272a4acd 100644 --- a/unity-extra/ehooks/ehooks-21.04.ebuild +++ b/unity-extra/ehooks/ehooks-21.10.ebuild @@ -3,7 +3,7 @@ EAPI=7 -URELEASE="hirsute" +URELEASE="impish" inherit ubuntu-versionator DESCRIPTION="Ebuild hooks patching system" @@ -49,12 +49,12 @@ src_install() { printf "\b\b %s" "${indicator[${count}]}" count=$((count + 1)) - ## Try another USE-flag if there is no change. + ## Try another USE flag if there is no change. use "${x}" && pkg_flag=1 || pkg_flag=0 portageq has_version / unity-extra/ehooks["${x}"] && sys_flag=1 || sys_flag=0 [[ ${pkg_flag} -eq ${sys_flag} ]] || change="yes" - ## Get ebuild hooks containing recently changed USE-flag. + ## Get ebuild hooks containing recently changed USE flag. prev_shopt=$(shopt -p nullglob) shopt -s nullglob ehk=( $(grep -Fl "${x}" "${REPO_ROOT}"/profiles/ehooks/*/*/*.ehook) ) diff --git a/unity-extra/indicator-cpufreq/Manifest b/unity-extra/indicator-cpufreq/Manifest index 75a40a19..e1b41953 100644 --- a/unity-extra/indicator-cpufreq/Manifest +++ b/unity-extra/indicator-cpufreq/Manifest @@ -1,4 +1,4 @@ DIST indicator-cpufreq_0.2.2-0ubuntu3.debian.tar.xz 2792 BLAKE2B 034c216aadc517c3569bbb592f9c8fc05819ad184dac915eec87f9a2ed8d39e00f754f2dcc0457df14007f8809d93b746e1393609202648225e43221bd99ac76 SHA512 4918a26a7977085421c847c5455377c01fac8057393726b1dce0151e59aed03c457b266d0406a3e0c7a9b1debb10d8d10d8e56a806cd90ea2c360e41b73b4d61 DIST indicator-cpufreq_0.2.2.orig.tar.gz 35051 BLAKE2B 9a478c32935418b06dea39c58e620a35a44482fddf59efcd30fa68f7a6b14af935f91a74ace792e5dd11759c38ffc2d902d5dc01b3d637bec3a05e9f93eacf94 SHA512 210695489a717e71c01550c5a37625a1baf6f196e47a1d80bacd2723daf537dc7d4f4640604fe6bf5631807dd29ae68fca726a4638b7ea29317c60bb064ab9a1 -EBUILD indicator-cpufreq-0.2.2_p_p0_p03.ebuild 1454 BLAKE2B 2ea21cf9d0e7c40a5d62649df16c41c4f4bb3c805f9857171b16d14d27902fdcd61fa595c37c3efb96cf08bc4cd6191733b0479dccee14d827f35fac668faa98 SHA512 61e24c6b9b47f97d1e693ded6527690395197c737dd1bd59db63c57947b6ee5540fa03510455814b080415d3c19f90f902167f3e531c7829e28d625763511236 +EBUILD indicator-cpufreq-0.2.2_p_p0_p03.ebuild 1453 BLAKE2B 45e810ba8e5a45bb5bab32abf6a460ec045336b2a8bff7ef8ad105fb066b8ff6ce9ec7f8b6f4e596f822320eb7fe375c7ce2777920959458638694c553e02e0b SHA512 502544054102f78c334a07e7c872c78c402dc2108339ac0e317dc88f5e49aa8bb811d7947d06041799163ea05616a276a7323ddcebd00ce4d587360d89b00ddb MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-extra/indicator-cpufreq/indicator-cpufreq-0.2.2_p_p0_p03.ebuild b/unity-extra/indicator-cpufreq/indicator-cpufreq-0.2.2_p_p0_p03.ebuild index 18fd02bc..4788d7dc 100644 --- a/unity-extra/indicator-cpufreq/indicator-cpufreq-0.2.2_p_p0_p03.ebuild +++ b/unity-extra/indicator-cpufreq/indicator-cpufreq-0.2.2_p_p0_p03.ebuild @@ -4,7 +4,7 @@ EAPI=6 PYTHON_COMPAT=( python3_{7..9} ) -URELEASE="hirsute" +URELEASE="impish" inherit distutils-r1 gnome2-utils ubuntu-versionator xdg-utils DESCRIPTION="CPU frequency scaling indicator for the Unity7 user interface" diff --git a/unity-extra/indicator-multiload/Manifest b/unity-extra/indicator-multiload/Manifest index 122d9738..1ff60740 100644 --- a/unity-extra/indicator-multiload/Manifest +++ b/unity-extra/indicator-multiload/Manifest @@ -1,3 +1,3 @@ DIST indicator-multiload_0.4.orig.tar.gz 438388 BLAKE2B 6b3ac952012d936ea1c17a9efdfbf14f02253f947abaae268a7baebc4d660270d554ae1719d41f60e8614bdf3aa96fd6b1cdaea0e6d103da0834a1e89090bc79 SHA512 3455d551d8287f74288fbcaae9abbb0be1189581ab11ef4b2f8dd5d5f711bbf16219fbf58a0d9080b330c69c7b54f9df423795db53f0303d86fb79c238a9e4a9 -EBUILD indicator-multiload-0.4_p_p0_p05.ebuild 935 BLAKE2B 423192c97fcb6edddf9fca98d307c884d6ac8e047538cfea0db536c1fdcdb39b546a626c3e2f85d285940f5dfe4cb0855fb716ee4ee0e0669d2ab676a0257b64 SHA512 2208d248053f05c54826a7263ceeaf542fb9253420372e090f171852a310dc60eb1f2551ce18bcf7c2e11069b4eab008b49ed08586edfae907d7e1772168adb7 +EBUILD indicator-multiload-0.4_p_p0_p05.ebuild 934 BLAKE2B aa9875648a9a23cefdf3ac894eedd01f85796dc5f62d5eeb5d13dc1b8a9c4a577f604671674ca2a47bca8e688e147d01ece7098bf7c278320d4d19114aed745f SHA512 0f73f7d093f6d5f2521ed90e853249bba7e8134cdc9997418ac6451161082ddd31a5abb76b8076b5ce4c9f1e222a24f3dc8bf3b16b7e6f463ae3cf91ea104469 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-extra/indicator-multiload/indicator-multiload-0.4_p_p0_p05.ebuild b/unity-extra/indicator-multiload/indicator-multiload-0.4_p_p0_p05.ebuild index cd138cd3..05a50c41 100644 --- a/unity-extra/indicator-multiload/indicator-multiload-0.4_p_p0_p05.ebuild +++ b/unity-extra/indicator-multiload/indicator-multiload-0.4_p_p0_p05.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit gnome2-utils ubuntu-versionator DESCRIPTION="Graphical system load indicator for CPU, ram, etc. used by the Unity7 user interface" diff --git a/unity-extra/indicator-netspeed/Manifest b/unity-extra/indicator-netspeed/Manifest index 389256af..0c92be9b 100644 --- a/unity-extra/indicator-netspeed/Manifest +++ b/unity-extra/indicator-netspeed/Manifest @@ -1,2 +1,3 @@ -EBUILD indicator-netspeed-9999.ebuild 605 BLAKE2B b998e53fe9d8f4922a9ef4d6805854c7f602d6d09d8815d0715240e4556bc05592bf60a3aac8aa864bc3d3be85b0ad486395254140deef44ac6812ae21edad49 SHA512 10db678b483b6adf53cd0f4c34a790efa64ef5149d34a1852bbe41b98b9368ec2ef593ad6db572deb50cdd3f34802d89f3fd550303992c5c2cf689530ce7f16b +DIST indicator-netspeed-1.05_p20180123.tar.gz 96574 BLAKE2B f17936f4c9ebc28e9220e24cfa50e78cfcab9369abfb8b629bb4e192a568e0c37ae817ff76f7bfd2477ddea64cf179fcc890bc048a5baea80686e2eb5959f4b2 SHA512 a43c6572556bf4fd65709164e06c52405e209ba009c4cdb0b3d5b663dbe5475add4250d42bcaa50b183ecf44fdb85a0fd680a9901e148c25eaca91e24593bfda +EBUILD indicator-netspeed-1.05_p20180123.ebuild 795 BLAKE2B 341623a6029cedd6b6f402da39d4ddca6c0ee4165e12ea526fa4b00ceba8cb0bfe35a91d7c7b9a35ccfee8e8dd98a9f990400a3393f0a6ade8d6baa3d6f3e008 SHA512 0b36a5d28f0340e8c23ceb75ecbb694b9ba569a9d1f7f0f7c627745b7d996cca21dfc6031ef0be71cdf42cfd75a9dd99d9f4e66d61ecab702b2f2d7226a2b451 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-extra/indicator-netspeed/indicator-netspeed-9999.ebuild b/unity-extra/indicator-netspeed/indicator-netspeed-1.05_p20180123.ebuild similarity index 65% rename from unity-extra/indicator-netspeed/indicator-netspeed-9999.ebuild rename to unity-extra/indicator-netspeed/indicator-netspeed-1.05_p20180123.ebuild index 7c850f6b..9f611536 100644 --- a/unity-extra/indicator-netspeed/indicator-netspeed-9999.ebuild +++ b/unity-extra/indicator-netspeed/indicator-netspeed-1.05_p20180123.ebuild @@ -4,13 +4,14 @@ EAPI=6 PYTHON_COMPAT=( python3_{7..9} ) -inherit git-r3 gnome2-utils - -MY_PN="indicator-netspeed-unity" +inherit gnome2-utils DESCRIPTION="Network speed indicator for Unity" HOMEPAGE="https://github.com/GGleb/indicator-netspeed-unity" -EGIT_REPO_URI="https://github.com/GGleb/${MY_PN}.git" + +MY_PN="indicator-netspeed-unity" +COMMIT="41a9b524efc767a8990532667a92748235ed6917" +SRC_URI="https://github.com/GGleb/${MY_PN}/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" LICENSE="GPL-2+" SLOT="0" @@ -20,6 +21,15 @@ RESTRICT="mirror" DEPEND="net-analyzer/nethogs" +S="${WORKDIR}/${MY_PN}-${COMMIT}" + +src_prepare() { + sed -i \ + -e "s/-s ${MY_PN}/${MY_PN}/" \ + Makefile + default +} + pkg_preinst() { gnome2_schemas_savelist } diff --git a/unity-extra/indicator-psensor/Manifest b/unity-extra/indicator-psensor/Manifest index e336ff85..dca762e3 100644 --- a/unity-extra/indicator-psensor/Manifest +++ b/unity-extra/indicator-psensor/Manifest @@ -1,4 +1,4 @@ DIST psensor_1.1.5-1.3ubuntu2.debian.tar.xz 9832 BLAKE2B 1331fbab5c851a7c5cbfa7f38febcc88e023b981abb1ca39c7e5d9087dd5cb58be2a7e806365788e1e839a382692ed1d7db85c1511c4f88065f7c6282288297b SHA512 37d8360d2f544ac35e12fcf9a6d07134ba150f43226b98ad807adb34464ca43a59aeff2e2c2debdfaa8494506f5d321183fb3cd2aa5ed744f67fb21fcc0ab491 DIST psensor_1.1.5.orig.tar.gz 642301 BLAKE2B fdf2a1ee4667c6c9a57c83b86223f77da4d395b72cfa5f23779a21e04336c6b5509244700d972f05f0ae83c608a1a3d25427bd6e21f02a98908744ef81b96fb5 SHA512 fed8e5bd8d8c6a8566d5cacf147107f34fdc6b0026825cc187e656fdfb91733b202f59608c8161dcded57f91562152bec2715ca166c9752b844eb685e195e0c4 -EBUILD indicator-psensor-1.1.5_p_p0103_p02.ebuild 1290 BLAKE2B 2bc80d4ed7ee79beaf7abfd3197b00c02e1f42bc261d695fd60b363c8743034ca9629ca07833886e2da95eec8c5d2b6cae366400b5f5ffaea1789bbc6cf21746 SHA512 ad990f51e61b95a8ea688062abac2f2461f13abf56cd07944f4f9358386a1acefbf53bf2c51eb606d1e901ef99e225421259cf292de11434add69bf5096bda58 +EBUILD indicator-psensor-1.1.5_p_p0103_p02.ebuild 1289 BLAKE2B 107d52fdbb8311081b6ccf3bca602d22b138f4ed7ce48e1b635588ef945155419cc48b1e7184a49d84030cf2f50bf4f4b698c282cfe43c95e6e5d4dd71765846 SHA512 6fad58e96eeab4beb6fa8eb1aec150770e062a1f06c64f976bd8eeb38ba074be5340c4cda5ade0f61374e3aa8739b1f58943b5585c3909b43e628114190fb25e MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-extra/indicator-psensor/indicator-psensor-1.1.5_p_p0103_p02.ebuild b/unity-extra/indicator-psensor/indicator-psensor-1.1.5_p_p0103_p02.ebuild index 05fb1753..af8c4a6f 100644 --- a/unity-extra/indicator-psensor/indicator-psensor-1.1.5_p_p0103_p02.ebuild +++ b/unity-extra/indicator-psensor/indicator-psensor-1.1.5_p_p0103_p02.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit gnome2-utils ubuntu-versionator xdg-utils MY_PN="psensor" diff --git a/unity-extra/meteo-qt/Manifest b/unity-extra/meteo-qt/Manifest index 802fe0a9..ae52166b 100644 --- a/unity-extra/meteo-qt/Manifest +++ b/unity-extra/meteo-qt/Manifest @@ -1,3 +1,3 @@ DIST meteo-qt_2.1.orig.tar.gz 900752 BLAKE2B ee18abb05f40b547635c2c388afdd1dccfe0e073f1416d1442cf11508b275e26b50bb5961225f4124721e570f7db39997fecede5168353347c5efb4488954716 SHA512 234de31046479a592a80f8aeca04072a936a5895e7e49762c34da9f976393c3056cab39d2dbc1628a444496076ba774d55d690198cd57c1f97c0d57590c84b0f -EBUILD meteo-qt-2.1_p1.ebuild 817 BLAKE2B 57a142472e5e9eca1b2860f31080b933b5110edfd8eab36c449a58ab77d138dd33cb22fdc539d96ac761f8ffb6dc80f2ad8f5a5b7cea459a474d7fd5345f3ff8 SHA512 8ca956673c43d3e70dea54d9f5bda486980127ddad1dd5e09791c54c9b5a19661bc9d0c73759325aa873adb5ccacdc175121aa654781c97b180e933951c8c197 +EBUILD meteo-qt-2.1_p1.ebuild 816 BLAKE2B 2988319ff7762a6e5fb8a62100dfefa7844b54614e96e020a1d4b88f371beed4302b901cf43da79b906a40919cb2d9dbb0818782dfa61fe51c09a46b1079da1b SHA512 97f2f9cd3ab37989a22e12560391376d60420802227f3ef48c220b53810834e323a27e748d2b52fa7b1b8d8b977e92844e9e6d018ab37dfacf58f01e36fc7296 MISC metadata.xml 210 BLAKE2B 62d5493ab10537a29c653df77ab216cf136f958410a45cc15ca6a7935453fb8ddcf1d58f7b965c825830abb3f3c7aea22733e1f4d86292132946166520e30f8b SHA512 533740d93dc818fe6523cb7ea447c6a590bcce65da93591b68124b60cdd3af3a595dee102f7cda5cb0426f75c46e647c75b80202f33d983797a0ee96082e631c diff --git a/unity-extra/meteo-qt/meteo-qt-2.1_p1.ebuild b/unity-extra/meteo-qt/meteo-qt-2.1_p1.ebuild index bd48edbd..50ac059a 100644 --- a/unity-extra/meteo-qt/meteo-qt-2.1_p1.ebuild +++ b/unity-extra/meteo-qt/meteo-qt-2.1_p1.ebuild @@ -4,7 +4,7 @@ EAPI=6 PYTHON_COMPAT=( python3_{7..9} ) -URELEASE="hirsute" +URELEASE="impish" inherit distutils-r1 ubuntu-versionator UVER="-${PVR_MICRO}" diff --git a/unity-extra/unity-greeter/Manifest b/unity-extra/unity-greeter/Manifest index f2b87ebe..cad65683 100644 --- a/unity-extra/unity-greeter/Manifest +++ b/unity-extra/unity-greeter/Manifest @@ -1,7 +1,7 @@ AUX branding/gentoo_cof.png 4463 BLAKE2B 0c4b9973bd8202ec0c281be4e32cf846244314984ec746aa4ca01bc48eecab3f19e9dd9615e8cb2a48572ad8a32831c3daeea92524136530c1b3b3eefe02a629 SHA512 65727db35e662a2dde2cdb34e5a6052092b443f865df8dac4f542f4540a31c8eaee742c632faece7509ff3515a402d06e29438c18de7ecc2db2264fb01ee70da -AUX branding/gentoo_logo.png 2005 BLAKE2B d32eaf138a8c652bde148207674b4347ae993b02932e6296cf49a18dce2c807529da96e419f5effa9fafeb34fe62e28604723c2e18859658329e92f7b660470d SHA512 1949848f6de120c0e039c01c824f16031a80e64a805a34c666db81fb934b6dfe1d928246b63d032138d976bd29607cede432d85dccc8f3a4eedf235128f0506e +AUX branding/gentoo_logo.png 2307 BLAKE2B 7c861143bf29b4b13bfbe9c2ec7e54175cd27b0a944c6bda5bb0c8bcf7aa787fa48332dc9c217d37a70ffae904c468ef0e93b32b4b1cc578d7916565761492cd SHA512 e16abd4cc7416b4bd56f59352c56dfaee39995f0df3b03453194e78ee5c6fdda4eb56d0c8ba2b449a68a0196f277937b798760972de7a95130e9765199534fd4 AUX environment-variables.patch 1434 BLAKE2B d954267c7d10f79812494bf9b648136a0525da4acad68baa50b299ec4267ab6ab6e41d28e60fdeef0070abfd745b56ee671ca806e81b3d1f91b3d77607fa8e0c SHA512 ae51e0cc3a901d9b5da3423cf1a19f5d04b70c1f470e008d823523257a5c33e930ce219d15ee9842d5fd1b7dde2d9cea16a4e5e67883a19d85e2665b15c69e91 -AUX unity-greeter.gsettings-override 493 BLAKE2B 5cf5956ad585d3fb766487ff9a8a24ff370404afc0387a1df99b63cab259feb8739f27358da847612adb48e03440405bfcf21336be7fba9fd35894da7cff581f SHA512 7a683812cf7be9ce5645dbd137e50b96471878fd0388a1fa27bc89b9d8a46e1cae2556e3dd2b344c497d2d7dd40c8ca0462f3cf322378fd5ccf1b447209ee0f7 +AUX unity-greeter.gsettings-override 561 BLAKE2B 4b4262d23f0ea4c97008b62aabcb4d92abacb6ef795521cb7eef240147d27a6058a32e9244b944900c1ed0daf88475f300597a46bd69f72279071b6d5b379345 SHA512 d739f1a06d3655e157240bac528f927b5643cfdc8552cd3bc892bdfb07e2972574e9d25ed4c1667aac9b214e4fc1d59698a0b0d30674fcdfb01b7f2d2d0ea44b DIST unity-greeter_18.04.0+20.04.20200312-0ubuntu3.tar.xz 180104 BLAKE2B ae93591c04007cfc5c50f20183bfccfa673b629b7803ab72e7cb5300ead295b6f5d814e6e6c8b768032b7d7667b5c13365b5cc6243827d1f19b3b3d5cae04533 SHA512 2e19b669aa7fb43437ccdbd1cd9c4bc51671b15d08b8e661566c171b3da030213b6d232ce86cd2330133ba1619d961d8fa85200f608820c122a27b7c8cbc5c53 -EBUILD unity-greeter-18.04.0_p20200312_p0_p03.ebuild 4330 BLAKE2B 81d82b3d37c263438b85f4cff4926437cff959d1fd87a553e8f4ab85e59875d1ee69a48abd40eb1ffc16b89c976e643f1ad296b6315971737b694eebde75d341 SHA512 39296aa951a50706238b1fda0ba6e1a31eacec163185dc3913d09a4b79cd0aafc0e6d92d3fac766a3da1a29426b08a3de471799fe738344c3d66dbdcfc58a682 -MISC metadata.xml 365 BLAKE2B f9b8c4d3541e660352b7c5d7fd8273b2368e7de2a25bc4d55f776191cb3b61ba13f4db5ea326b919d511efa08e10f7ae46836515af2902bc7c940837f483b801 SHA512 6d644ac2b69e92ef0d1fdd0b2330adc9ef8ce4ae991dec575eb99037a034cad9e44f917f929af2187bd78504b14f8ce095d6cd595609d4acffb0ca41bb237a12 +EBUILD unity-greeter-18.04.0_p20200312_p0_p03.ebuild 4386 BLAKE2B 965acaffa9d4f6a62722677d6d6f2f4d609ff7dd6104a5038a4ade17be291db81214527c69b63f4fb143ee7ee1a156330551d39cdeaebdbcc3e9c87a8c12353d SHA512 53f1abec1d70a7c4f22ac8276994360e74ed0f8aa15855daff5dacb5565ba9978a47c3ab7814b5b55925a08a33bcc3b44976c4f62ab382a5ce2e1c90b2dfd0f9 +MISC metadata.xml 435 BLAKE2B cc457f785e65c7c60978184242362a1c123ad1da140e776b3f85e85b6ac8c5ca3f5a0b7271385403bb2ea39556e90e689bb72a08546a7ec7af5a509a3bd1dcb6 SHA512 e8f4e9b74e1f2a4a650bfc2cee6ccc80d5900d88a467b02c680fa3952c845a778f2679dc797d32f6c95ef54d20a995323f63901642af7e8df81ebdb358d401ad diff --git a/unity-extra/unity-greeter/files/branding/gentoo_logo.png b/unity-extra/unity-greeter/files/branding/gentoo_logo.png index f0211a33..7e7ff70d 100644 Binary files a/unity-extra/unity-greeter/files/branding/gentoo_logo.png and b/unity-extra/unity-greeter/files/branding/gentoo_logo.png differ diff --git a/unity-extra/unity-greeter/files/unity-greeter.gsettings-override b/unity-extra/unity-greeter/files/unity-greeter.gsettings-override index 6ee54d43..8b978b56 100644 --- a/unity-extra/unity-greeter/files/unity-greeter.gsettings-override +++ b/unity-extra/unity-greeter/files/unity-greeter.gsettings-override @@ -1,16 +1,17 @@ [com.canonical.unity-greeter:unity-greeter] -logo = '' play-ready-sound = false +[com.canonical.unity.settings-daemon.plugins.power:unity-greeter] +button-sleep = 'suspend' +critical-battery-action = 'suspend' + ## nm-applet and indicator-keyboard icon theme ## [org.gnome.desktop.interface:unity-greeter] icon-theme = 'ubuntu-mono-dark' [org.gnome.settings-daemon.plugins.power:unity-greeter] -button-sleep = 'suspend' -critical-battery-action = 'suspend' sleep-inactive-ac-timeout = 0 ## libnotify font rendering (nm-applet notification) ## -[org.gnome.settings-daemon.plugins.xsettings:unity-greeter] +[org.gnome.settings-daemon.plugins.xsettings.deprecated:unity-greeter] antialiasing = 'rgba' diff --git a/unity-extra/unity-greeter/metadata.xml b/unity-extra/unity-greeter/metadata.xml index 50ab2b29..83f7fd07 100644 --- a/unity-extra/unity-greeter/metadata.xml +++ b/unity-extra/unity-greeter/metadata.xml @@ -6,6 +6,7 @@ Use power state indicator for login screen + Enable Gentoo Unity7 specific branding Use sound indicator for login screen diff --git a/unity-extra/unity-greeter/unity-greeter-18.04.0_p20200312_p0_p03.ebuild b/unity-extra/unity-greeter/unity-greeter-18.04.0_p20200312_p0_p03.ebuild index c9b671a3..d2723fb9 100644 --- a/unity-extra/unity-greeter/unity-greeter-18.04.0_p20200312_p0_p03.ebuild +++ b/unity-extra/unity-greeter/unity-greeter-18.04.0_p20200312_p0_p03.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools flag-o-matic gnome2-utils ubuntu-versionator vala UVER_PREFIX="+20.04.${PVR_MICRO}" @@ -102,14 +102,13 @@ src_install() { newins "${FILESDIR}"/unity-greeter.gsettings-override \ "${gschema}" - # Branding # insinto /usr/share/unity-greeter - newins "${FILESDIR}/branding/gentoo_logo.png" logo.png if use branding; then + newins "${FILESDIR}/branding/gentoo_logo.png" logo.png newins "${FILESDIR}/branding/gentoo_cof.png" cof.png # Gentoo logo for multi monitor usage # - sed -i \ - -e "/logo/d" \ - "${ED}${gschema_dir}/${gschema}" + else + "${S}"/src/logo-generator --logo "${S}"/data/logo-bare.png --text " ${UVER_RELEASE}" --output logo.png + doins "${S}/logo.png" fi use sound && sed -i \ diff --git a/unity-extra/unity-tweak-tool/Manifest b/unity-extra/unity-tweak-tool/Manifest index c15f763f..fe4c06bb 100644 --- a/unity-extra/unity-tweak-tool/Manifest +++ b/unity-extra/unity-tweak-tool/Manifest @@ -1,6 +1,6 @@ AUX 95-xcursor-theme 96 BLAKE2B 06c549ae47b16c7c8e50e50b425b828cb19355014e66501f6e2d2f60047e0daad8abff9176fa477841efbfbb24ae5c154416bd7ee5ad6a1aba46068b895d9044 SHA512 bd5bc08f7993027b883d04daa05004ec580b120fcd02fa130062c93c59e971ebc1420914c8a61e8bd6cf56757ef146f9dacb4d0d28551ff0fea7b773fd9e54b0 AUX xorg-cursor-themes-path.diff 1417 BLAKE2B b84b636421a367975e64845b816e7f922ab5a62cf30fe22362daa4375a7af18cf5706cdb8a816c91060dbbcb1138007a3a4f1b4a253fc25214f303973c247cc2 SHA512 355744a7471db3eaa4ef4e3c2e0adab4bead7773c2b824de6c5b79ba43ecd516fc15118758fc6ed88cf8eae30cb58422dd2c39d770c17ae97f5e1309b684bcc1 -DIST unity-tweak-tool_0.0.7+-0ubuntu6.debian.tar.xz 21940 BLAKE2B d0f37dbceaaa2e1c3cde4b584284b89769d18e85316d147c60f217fed0d6b59f5fd413ce415ab05d07147376ed7b0aab08c8fd1330524afeb290eab696f91c70 SHA512 d8b1cdaa8df7e3bbf3599700bcacfc4990e27c1b4c0d35f7d5487b76e60796b2df0251f21afcd576fcffd72f3e1b5f165770cd022e178b1d5157bb57be431b61 +DIST unity-tweak-tool_0.0.7+-0ubuntu9.debian.tar.xz 22392 BLAKE2B bb0d396030366d37a8fefa8ef3a2dcbda247dca5a576a5019e1d088d0f8c445f6495421be06536bf45db56f6f06938e8969a35ff43ea8a277d099fb8c45ff46b SHA512 44bb4b73a0e2813e837a500524429e2eee3da79ba32e4431b25aa128cd2d2e192bcc14ebf273828f36e058314b96c61b9de09dd175226de1d4979ce33de2a391 DIST unity-tweak-tool_0.0.7+.orig.tar.gz 888531 BLAKE2B 9cb38cf40d7bb1cec00a11c01dc455ee6e9b60f69fce340f7444b580aabc5fd7ce322549af676673c49bd1e0c70a4fd96a80d9073e50a1800c644965727db1c8 SHA512 6f844f087ebff6004d9de3b4e161423883ef8ed4d010d25288ab60134ade02fd0685762825bf2ab1d7962ba1d4619eaee0937019fbcc04a5e0b67e06b5cc0b6f -EBUILD unity-tweak-tool-0.0.7_p_p0_p06.ebuild 3311 BLAKE2B a020015d2ac33e0bac9ec2884dc3f788a6d9ab8fbbcbb367cfe91f3f5f06aa1d539da5a420202333eb31f22b3b74a10d9c1b3b6e08368f04da900d51fe25eef4 SHA512 906178c19aaca2a3720d39fff32f078ec020adbcda48f7d340d37ebb29dda6145a23d616ead31138bbdfc3d29cbbe483856a0a4cf12807114ae77d6f0e061f07 +EBUILD unity-tweak-tool-0.0.7_p_p0_p09.ebuild 3833 BLAKE2B 9883b23c1eb6e7d6cefe0fb3b02b286f77238ee58616044394cde1a0bdacff6b9f1723f17a1212f03ffb6f474c082c2f945ec82b0cdcbcb0bd98e70979eab0c2 SHA512 0812df1f076aec1e32813785e3eaf0b2b47bf2bced4f943e0c32786c6a9e9de36ebf292615ffd21667534a1498ac5ea4ab6af9c98c931c92e57c6c60f2d8c31e MISC metadata.xml 281 BLAKE2B a5d2d3b09593b8f6f5966b3903223148140086212eb845e8032169b2b21d8fee5f9de14a3daf1b16cc13f0fed8a2be6fcd895057f21e5e1e54bfc09a26252c96 SHA512 b256df4652e5731918fee8e4d37c45c95b0b7eaf5c54a3589408d24fe1b198cb696b79e63bc5b249665c23270d457b1f820d87db9ebe5dbf4b039803ec4ee0ed diff --git a/unity-extra/unity-tweak-tool/unity-tweak-tool-0.0.7_p_p0_p06.ebuild b/unity-extra/unity-tweak-tool/unity-tweak-tool-0.0.7_p_p0_p09.ebuild similarity index 85% rename from unity-extra/unity-tweak-tool/unity-tweak-tool-0.0.7_p_p0_p06.ebuild rename to unity-extra/unity-tweak-tool/unity-tweak-tool-0.0.7_p_p0_p09.ebuild index 26ef38cb..f5332220 100644 --- a/unity-extra/unity-tweak-tool/unity-tweak-tool-0.0.7_p_p0_p06.ebuild +++ b/unity-extra/unity-tweak-tool/unity-tweak-tool-0.0.7_p_p0_p09.ebuild @@ -6,7 +6,7 @@ PYTHON_COMPAT=( python3_{7..9} ) inherit distutils-r1 ubuntu-versionator xdg-utils -URELEASE="hirsute" +URELEASE="impish" UVER="+-${PVR_PL_MAJOR}ubuntu${PVR_PL_MINOR}" DESCRIPTION="Configuration manager for the Unity7 user interface" @@ -77,6 +77,23 @@ src_prepare() { # installs cursor themes in both /usr/share/cursors/xorg-x11/ and /usr/share/icons/ # eapply "${FILESDIR}/xorg-cursor-themes-path.diff" + # Fix antialiasing and hinting key names # + sed -i \ + -e "s/'antialiasing'/'font-antialiasing'/" \ + -e "s/'hinting'/'font-hinting'/" \ + UnityTweakTool/section/{appearance.py,spaghetti/theme.py} + + # Fix SyntaxWarning: "is not"/"is" with a literal # + sed -i \ + -e "s/is not -1/!= -1/" \ + -e "s/is 48/== 48/" \ + UnityTweakTool/{__init__.py,section/spaghetti/theme.py} + + # Fix Missing parentheses in call to 'print' # + sed -i \ + -e "s/context.CurrentProfile.Name/(context.CurrentProfile.Name)/" \ + notes/wizardry.py + use bluetooth || sed -i \ -e "/indicator.bluetooth/d" \ UnityTweakTool/section/spaghetti/gsettings.py diff --git a/unity-indicators/ido/Manifest b/unity-indicators/ido/Manifest index 8a6b957b..ef2d37bd 100644 --- a/unity-indicators/ido/Manifest +++ b/unity-indicators/ido/Manifest @@ -1,4 +1,4 @@ DIST ido_13.10.0+17.04.20161028-0ubuntu2.diff.gz 9289 BLAKE2B e69b962b7f92db247002407cbc1df94143c8c2b4f417541b4ec0d692355e4273fd826b2b2bed6d1e18ae1d8dd2f98c7da38d3f87a4cdcd56de1d2a883e52281d SHA512 189fb257d0dc1d290f32715ca574e33cf472d52cabe10a1924b7872fea7b4312ec37d8c9c4b3a10eeda7ccfb7d96409e5dd3cad85354167a96e4e5620e0eeab1 DIST ido_13.10.0+17.04.20161028.orig.tar.gz 81415 BLAKE2B 77a11e37ba04cc3bd0f93b0e9bac3ce60e7a60393591b0358d01f129dd1f192bc6cac62a5d57f67c18d44b85a4930b6b1540b8a8ee7d1b80b24ba5724269692e SHA512 867157c9e316eb5ed69ebdf1017ed86990aabf7a885ba26acab36782f0f27e10b4621a7db15ac90335e808022490a98560d5ff443e6f697c578eed5868385ebd -EBUILD ido-13.10.0_p20161028_p0_p02.ebuild 882 BLAKE2B cec72959fce198e20f9575a7f17405231d253d5945534bbc57f4fae215d1c30b8c2d42f115066892027fbfec4d24c5aff7fbb5b862df401e43f2732b4409c021 SHA512 a7d19d296efe06584498d7690d70ff6ddd5afd1eac167028e3a52007a2d1fdd31c6917b8d7c43b880b25554545ea440551531819e6d13d4888cced33e9d00114 +EBUILD ido-13.10.0_p20161028_p0_p02.ebuild 881 BLAKE2B e7d15d071b578bba0bc4cf8a1a94ac65a0796e0d049fe22acf637893dc57228449702a0fd348151d168d2a20164608e955c8f2f9f5302f2473197128e585bb03 SHA512 68519824b4bf290c777eede36a4df1f66b5849ec7aa8c028c9fc6f8de087618390cee8a6f1b2b7f7941e8f1aa852a6dd99748bbf17a1b006e8c68185dee9af86 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-indicators/ido/ido-13.10.0_p20161028_p0_p02.ebuild b/unity-indicators/ido/ido-13.10.0_p20161028_p0_p02.ebuild index ef61510a..67d064f1 100644 --- a/unity-indicators/ido/ido-13.10.0_p20161028_p0_p02.ebuild +++ b/unity-indicators/ido/ido-13.10.0_p20161028_p0_p02.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils flag-o-matic ubuntu-versionator vala UVER_PREFIX="+17.04.${PVR_MICRO}" diff --git a/unity-indicators/indicator-applet/Manifest b/unity-indicators/indicator-applet/Manifest deleted file mode 100644 index 31f2227f..00000000 --- a/unity-indicators/indicator-applet/Manifest +++ /dev/null @@ -1,3 +0,0 @@ -DIST indicator-applet_12.10.2+20.10.20200915.orig.tar.gz 108470 BLAKE2B 97a7cddb52165ea9d063bab16c8f9d1b0e418d3b477f150898e0a59e7c80a901685df9f376d8d1cb9bbc8ccf0b161ed04500a54fafbce2ed39981da8dc7558b3 SHA512 139f94e861d1cc31916cc08bd8909fce45493b50535d2a9b92450a7109e948a7386452d7106863d79bd31bfdd569330dd926391d4f5ca0db81a3aaa05490e790 -EBUILD indicator-applet-12.10.2_p20200915_p0_p01.ebuild 737 BLAKE2B b7e3ed8888f63412d3d8f4e178fd9d7d38b3c0948114ef88c19e9f03e02860f3622043b87191670bdf24d2251961a03f33468e7741fbc8ef6669c21a21db4f78 SHA512 05fe4bfb1552cfb62bff7c6992d0b2876fe396a7494644f0195f320b2c5f6893a56a56208c63ecfaa5d52e1bd632c8ec98c3057f195463f4b905b8c53709cc73 -MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-indicators/indicator-applet/indicator-applet-12.10.2_p20200915_p0_p01.ebuild b/unity-indicators/indicator-applet/indicator-applet-12.10.2_p20200915_p0_p01.ebuild deleted file mode 100644 index 71c096c0..00000000 --- a/unity-indicators/indicator-applet/indicator-applet-12.10.2_p20200915_p0_p01.ebuild +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright 1999-2021 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -URELEASE="hirsute" -inherit autotools eutils ubuntu-versionator - -UVER_PREFIX="+20.10.${PVR_MICRO}" - -DESCRIPTION="Gnome panel indicator for the Unity7 user interface" -HOMEPAGE="https://launchpad.net/indicator-applet" -SRC_URI="${UURL}/${MY_P}${UVER_PREFIX}.orig.tar.gz" - -LICENSE="LGPL-2.1 LGPL-3 GPL-3" -SLOT="0" -KEYWORDS="~amd64" -IUSE="" -RESTRICT="mirror" - -DEPEND="dev-libs/libindicator:3 - x11-libs/gtk+:3 - gnome-base/gnome-panel" - -S="${WORKDIR}" - -src_prepare() { - ubuntu-versionator_src_prepare - - # "Only can be included directly." # - sed -e "s:glib/gtypes.h:glib.h:g" \ - -i src/tomboykeybinder.h - - eautoreconf -} diff --git a/unity-indicators/indicator-applet/metadata.xml b/unity-indicators/indicator-applet/metadata.xml deleted file mode 100644 index a5705f67..00000000 --- a/unity-indicators/indicator-applet/metadata.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - gentoo-unity7 - - diff --git a/unity-indicators/indicator-application/Manifest b/unity-indicators/indicator-application/Manifest index 206e5a1d..9e203f86 100644 --- a/unity-indicators/indicator-application/Manifest +++ b/unity-indicators/indicator-application/Manifest @@ -1,5 +1,5 @@ AUX sni-systray_show-passive_v2.diff 846 BLAKE2B 2726df1e62ba11601d6d0ff866975e7af8310b35e0d7676b5b32e7988190a37114acbe96d3e0ca71ebdcff76574541c08b187d91612e0f18a6fe5defadfecae3 SHA512 26ca3cb51108f8f97a6cc70de0faba5213b0e56796cfdf958df521a9dee0aa709224b6ae1158e900088e45eb36b4bebf2883446a7df1ba1bae1a4bef95414ead DIST indicator-application_12.10.1+19.04.20190308.1-0ubuntu3.diff.gz 10588 BLAKE2B a3f72a910d1cca58ad6b19f2c668bbd7bb4c2c5596457217d395377f19ee61a8a0abde3947f721cc7796d7495e06882012046f1eb4863410011ee1f1ffb16ffa SHA512 739f901331a459d0905be1f409c75965437708bbbcc636a75ac17d75c011b99dfa24b6aac4baa00c93859890db355aa155e93aef15abd63197a618df31b0c907 DIST indicator-application_12.10.1+19.04.20190308.1.orig.tar.gz 44131 BLAKE2B 4bf60fa97f58697bef8a7cbb002967569645ab923729d0d19942115dc4da8bb771e002162057a8a59c009669397bf00703a6d2dcaaf49a5d012f44e4d9b0edf2 SHA512 2ad85089a3290613711fb5966fda632d1630d821031ae75839898db681480bb469fee2fc97ca44a66d314e28f929f02404c0e0c455dd675cb1a4e3004e7718fc -EBUILD indicator-application-12.10.1_p2019030801_p0_p03.ebuild 1505 BLAKE2B e4a7da416bdbefce8c6ba6647fbef0eb3387b3788b775ddf2f1b68552fb5bdbf16057f18f22f8cdbf25fa394aec6d52783362cae35c784d2189e9b2eeaadec02 SHA512 8b4226d1ff6b98fa6373ae81ee9e9cd4365a20eb1167a92af2cc92c698efc7e892aedf439d17dcabc9bb2e29e7410dee88d4a5febcf8ed092c1e191e06ffc832 +EBUILD indicator-application-12.10.1_p2019030801_p0_p03.ebuild 1504 BLAKE2B 69cee5cfe6fffdee60639f59dd9ce66f94d0d2a7cea3ffdf4ce2d13b3bf5ce2991c2802fc00bba020f63b522e80ac561d14215ea009ec0d961b11a46e8d9e868 SHA512 32c8c0ce87621735c8bae5826540f3f2214f5c46a11b3a28bc72310eaaa6a784f18904b2eb07dc722b42b9dc430850ac14474bbbbf92e3d07c05c1447d6f618d MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-indicators/indicator-application/indicator-application-12.10.1_p2019030801_p0_p03.ebuild b/unity-indicators/indicator-application/indicator-application-12.10.1_p2019030801_p0_p03.ebuild index d5c93eb1..5a6ee1fe 100644 --- a/unity-indicators/indicator-application/indicator-application-12.10.1_p2019030801_p0_p03.ebuild +++ b/unity-indicators/indicator-application/indicator-application-12.10.1_p2019030801_p0_p03.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils flag-o-matic ubuntu-versionator UVER_PREFIX="+19.04.${PVR_MICRO}" diff --git a/unity-indicators/indicator-appmenu/Manifest b/unity-indicators/indicator-appmenu/Manifest index 9e57fc0a..13c3d1b2 100644 --- a/unity-indicators/indicator-appmenu/Manifest +++ b/unity-indicators/indicator-appmenu/Manifest @@ -1,4 +1,4 @@ DIST indicator-appmenu_15.02.0+20.10.20200617.2-0ubuntu1.diff.gz 12084 BLAKE2B b025a973a9f3dcc399876ca90c3dd2660fff2f2cd313b49e4f677f1620739d225dc88b9f7b2e4953e6a300cecb23a7d83b35b2afa8c9e6ba3ee581887e30a150 SHA512 b8639bb22b1d46fd5fe13b99c93ffaedf191fd8dcf19a0b50e55842ca027e4655f8fd680a4df7b1f94ff7355f2c011d60ce4232f0e31fbec781b17bc7997df27 DIST indicator-appmenu_15.02.0+20.10.20200617.2.orig.tar.gz 52087 BLAKE2B debc771b925e8c8b83d86d16bdbbf23262c11b038a2f62e28175922a16aa6c480d00ea6c47b37202fdfa51ac248132ace7a0faf44195a081fcb4b6f65749c89c SHA512 c204d3365c255572596b2633020be10b49b7ccb707f89d419bae722cbe958b6dd47ac68bb2e0adcb1236e81e836a9f3c72929124545a6948ed586c549e9a83cc -EBUILD indicator-appmenu-15.02.0_p2020061702_p0_p01.ebuild 981 BLAKE2B 77557dbdd2bb73b612dc6089bb5539aa77494512cc4f3e9475b3d691815ccff5db1eb03f9bd2b373f382a99764e61cdc44895d8087a0381604f6f6aca07c03b0 SHA512 aae963b83a28eaf07543a3a8c777dbbbbcadf5de17b5580d940ede0a1956428fb2bf77c80ff73e079aa838c9500ec66ccb1524fec5d74915a87d24f8dd0202af +EBUILD indicator-appmenu-15.02.0_p2020061702_p0_p01.ebuild 946 BLAKE2B aa57c5fd02e60acd9d3f0ee58935cca292c215c546b09471db8233fc87c12ec5317951e826a63ad5f1f74f54347c4a799ec6b53107dd4e6cd292405cc895105a SHA512 5ceaf7082154d09c394084fade83aeea0d672be04028dd38cfe8f0d7abee69371514270f19cdf0549720ef942ea5a56bbd436e71a9355c0cb5b69706461c7d0c MISC metadata.xml 295 BLAKE2B 4845abfd06d249dceb5b730b683de342d65879ef7244c726f8b484d4b31dbf0125432e7285996390864a5c9af8db0e0f3bba01532005c5c28e37a4a8908aa2cd SHA512 aec6610632e45b00f0aac1b956a3458110cd6836859727153e37dbce43e5872b7efe3012f6cc67073d16b2d02e857e4a4434661ca30b421305422e4ce71adc34 diff --git a/unity-indicators/indicator-appmenu/indicator-appmenu-15.02.0_p2020061702_p0_p01.ebuild b/unity-indicators/indicator-appmenu/indicator-appmenu-15.02.0_p2020061702_p0_p01.ebuild index 879f504f..aac4d901 100644 --- a/unity-indicators/indicator-appmenu/indicator-appmenu-15.02.0_p2020061702_p0_p01.ebuild +++ b/unity-indicators/indicator-appmenu/indicator-appmenu-15.02.0_p2020061702_p0_p01.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils flag-o-matic gnome2-utils ubuntu-versionator UVER_PREFIX="+20.10.${PVR_MICRO}" @@ -16,7 +16,7 @@ SRC_URI="${UURL}/${MY_P}${UVER_PREFIX}.orig.tar.gz LICENSE="GPL-3" SLOT="0" KEYWORDS="~amd64" -IUSE="java" +IUSE="" RESTRICT="mirror" DEPEND="dev-libs/libdbusmenu:= @@ -24,9 +24,7 @@ DEPEND="dev-libs/libdbusmenu:= unity-base/bamf:= x11-libs/gtk+:3 x11-libs/libwnck:1 - x11-libs/libwnck:3 - - java? ( dev-java/jayatana )" + x11-libs/libwnck:3" S="${WORKDIR}" diff --git a/unity-indicators/indicator-bluetooth/Manifest b/unity-indicators/indicator-bluetooth/Manifest index b490f687..1ce4fa10 100644 --- a/unity-indicators/indicator-bluetooth/Manifest +++ b/unity-indicators/indicator-bluetooth/Manifest @@ -1,4 +1,4 @@ DIST indicator-bluetooth_0.0.6+17.10.20170605-0ubuntu3.diff.gz 5540 BLAKE2B c5bb05a8fa0d5543ab75e96641b5cdb5adaf7692d68e5896b439426639dfba722bbb83f7d73bd7180f05bb129d86ea887f3f07052cf086217faebc20485c7c2f SHA512 90b27517f9c5918a647dd50f56de9ffa3bdfac1708277cdd2ad1830f28366059a77c18a48b12e458b511288be95ec44fcfad0f723e4c8185d16b943a2d4ff015 DIST indicator-bluetooth_0.0.6+17.10.20170605.orig.tar.gz 27061 BLAKE2B 35ed329bc81f7fab7aea6457822ca4aa8e4336691de31b83d9100e4b3120b0608dd281437def218f17c7da73d16644ee10d1b2bd4744bea2c5d5b80a1e7da80a SHA512 6e8412d590ad45a1d10868556f28814ace30d80a99d10b84afee05c55cef707554ad66078b54e6d3f3051a90d63fdbfae4f3e6e60c2a0442ac32540d96793f03 -EBUILD indicator-bluetooth-0.0.6_p20170605_p0_p03.ebuild 1320 BLAKE2B d11002d9c4a1b6ca0e0c4bc2cbe1f18b3efcfb4fed0699c34b1c7286ae18b36c02bbd0123d6ac5dfdb7a3ec782517d2440119b36407d31fb69c7568b26c61b45 SHA512 3f774e03b2a67e107ca6bb66b421b025e52d2773d3839c91e7eb2b17d21c550e847a0403210bf2a9cbc85dc4408fc3683c27f5b26ad71a9f338409aac4833730 +EBUILD indicator-bluetooth-0.0.6_p20170605_p0_p03.ebuild 1319 BLAKE2B 9d88b369e5895f0edf393b6a7a2d1397fc744168337e9bb01236f02c4482206c4a7fa334851ac835855ac64b948d6649bbfd78d1bd629b9adaf386f14037c111 SHA512 1d52b972aea917cd0ce7fc7217abc85613e7ee884976d6b528ad5baf18721ac1bd460d5e7b6786286d68551cc3cbdb8eee833f4a89792e35f2de7624c9616266 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-indicators/indicator-bluetooth/indicator-bluetooth-0.0.6_p20170605_p0_p03.ebuild b/unity-indicators/indicator-bluetooth/indicator-bluetooth-0.0.6_p20170605_p0_p03.ebuild index 214176dd..d08be1c7 100644 --- a/unity-indicators/indicator-bluetooth/indicator-bluetooth-0.0.6_p20170605_p0_p03.ebuild +++ b/unity-indicators/indicator-bluetooth/indicator-bluetooth-0.0.6_p20170605_p0_p03.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils gnome2-utils ubuntu-versionator vala UVER_PREFIX="+17.10.${PVR_MICRO}" diff --git a/unity-indicators/indicator-datetime/Manifest b/unity-indicators/indicator-datetime/Manifest index 0fbdb6f6..918cf06c 100644 --- a/unity-indicators/indicator-datetime/Manifest +++ b/unity-indicators/indicator-datetime/Manifest @@ -1,4 +1,4 @@ AUX indicator-datetime-optional-eds_19.10.patch 5403 BLAKE2B fec9b2cbe0e5042285865b7ad6fcc25c8a3b135243f2b0e398b17097146c21034aa8c3a04d870518da69f89013ff6d8531e384389ce35966a0420007a7eda395 SHA512 1c5cfae5a8f7d593ba19ef5d85ce2d5a19119897a35d12ffe86aab94996ed31d9399b4742238afcb6a0cc0bd96c5a490794e2058eb593e7509ed79c327adaf4f DIST indicator-datetime_15.10+21.04.20210304.orig.tar.gz 143870 BLAKE2B b37a9387625ead17e412d98ecd563cb368ec3570b8fb7a5cc5c9e4b15e1f4fc5a1a811369f57c8e2ebe47b27c5b4bf8e7ed838c5be1ab427e8f1eccb050139fe SHA512 8c1b0a120d67410c8a8a3956544c51b1c44922754db239aa95927a9ae437c609f67a0b4fd0af48873fce60d52a3e8eb64b9973c0f0722c650d160fdcbab4084f -EBUILD indicator-datetime-15.10_p20210304_p0_p01.ebuild 1977 BLAKE2B 424468098ad71b6a39c82f34f09d4bc2e6ecf9a30de07640af0ac2e44a79743ba67ffb17518bd7496df0514cfa9e61d2d6bafbce36f0570822963646c264a41c SHA512 91ecce822a72127809cd3ffad277dff34a534e1627f70b3b8c18160c3a40b2a0a2094e4a0b1a1696aea8d583e4cda6a0abd2a93edc59f2467ba296a58428aed5 +EBUILD indicator-datetime-15.10_p20210304_p0_p01.ebuild 1966 BLAKE2B 32545c01ae364582f5227695f1fb6128fafdf70cc904546da0c448d4cd907f92ae4f49cf380fdd6f079858978dfbc462673f1f895a8bb76dfd16ea56d3151820 SHA512 6e190df80d59c00862814d5a7b5508f3a04d0a646b9d355cf444ced0ad097296d9ce0cf4702ae8371b3cd4c7491fed6123b7f8cb0581949b47fcdfb060712b14 MISC metadata.xml 294 BLAKE2B aeaf518ca91dc344f737a30da47ee629f71f88e2cefbcdcc118e61fb4d043a4c5b11fa3e9c701683f0b5dbe6d3dff5fae49010d055fd39c1c292368bfa0628ab SHA512 ef261eafa2a2856f7cc69877b5f37018b61ee66b29fcdb3341fafc19d78f0ac2265d49b96586365dad1db01aae28dc0fd927bab0dba1a65a215cc17ab98d17be diff --git a/unity-indicators/indicator-datetime/indicator-datetime-15.10_p20210304_p0_p01.ebuild b/unity-indicators/indicator-datetime/indicator-datetime-15.10_p20210304_p0_p01.ebuild index 3b465336..2d13ed6a 100644 --- a/unity-indicators/indicator-datetime/indicator-datetime-15.10_p20210304_p0_p01.ebuild +++ b/unity-indicators/indicator-datetime/indicator-datetime-15.10_p20210304_p0_p01.ebuild @@ -3,10 +3,10 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit cmake-utils gnome2-utils ubuntu-versionator -UVER_PREFIX="+${UVER_RELEASE}.${PVR_MICRO}" +UVER_PREFIX="+21.04.${PVR_MICRO}" DESCRIPTION="Date and Time Indicator used by the Unity7 user interface" HOMEPAGE="https://launchpad.net/indicator-datetime" diff --git a/unity-indicators/indicator-keyboard/Manifest b/unity-indicators/indicator-keyboard/Manifest index 4d220ba0..963b5e39 100644 --- a/unity-indicators/indicator-keyboard/Manifest +++ b/unity-indicators/indicator-keyboard/Manifest @@ -1,5 +1,5 @@ AUX indicator-keyboard-fix-build-against-vala-0.52.patch 2461 BLAKE2B 0e51a9e21603db0655788da41b01495873a1f03075f0f4b7b7c2c0882f225ce7bf4e1128cdb349180dd0dcd8dc4adddac95ac42cf0341bdfc28df64c531f51e1 SHA512 e548920b35e17a85ed785b3812d8705f0c26f529981ab0415a5d77d18cbb5db2cc0dd0f3af634cba24472b27873272062a4c9646613132954316f7f8c26bd3fe AUX indicator-keyboard-optional-fcitx.patch 9187 BLAKE2B cc3e2d0a0e265682b28bac683644d7824eb58c1c44d42aad990fc35f6bceef9ddb07a713b2514b009d0edc49f6614a409f90542d712fbd5f44b0395451df49d7 SHA512 2d66b5ebe75d25bac702b6f71d0c5bd99b2d66abf1d1b04bd7770550e7ed15338f8eb12a6f7c50b7c6774e234bac2f7aa0347fe84ac8d53376ce002231f5252f DIST indicator-keyboard_0.0.0+19.10.20190716.orig.tar.gz 63626 BLAKE2B 9aa76b17a7ae8149e887a767b0fb773d8d8fd52658f643b580c530d05166a7998b7c105f289fbd10600d11be430304845a99b75f793e7fce713afecf1b0f030a SHA512 d150288ae4b64f08ebb7d33f81eaf6c09e68962ee28822b6904481999e7ecdcd932976c130705851e664d1c42687a19f5711c0d4ed10ded18a02499b45ce4048 -EBUILD indicator-keyboard-0.0.0_p20190716_p0_p03.ebuild 2193 BLAKE2B 36a4f648f6164c3e4e92deb7572b2c87014ae3dad7f840c2d3a5b4c94c36c807111e276f092b3e9ce1827fb367dfcd8169677fbaa609ed4954ec42f7ffe40372 SHA512 3d24a041062d5bf67894397ec7ccfc92144af21503ab44a6ed32ecb5c68204f422b881b490fa4498a60ffa5d91e2d9104ac3555be469e9f046cdcd8376d4fda1 +EBUILD indicator-keyboard-0.0.0_p20190716_p0_p03.ebuild 2196 BLAKE2B 338ddcedf319962abb3ec53bfe91d8ae4db4f8cda5d24bbd683103395f4bf29460d0c156fb9690eea9665f81c7266898deef43b9509aacbe8f44c7934bd25ecb SHA512 e7d68f5d0f8c5ca567d217b85326301f631ed5c17301b23e294f391a4f4f848ded7955b48ed42d1fae3155a6edb59b26169fd813ddb0a3982f9d121dfc788f7a MISC metadata.xml 278 BLAKE2B b78cd1d4264d5cfced014fcf9b1b4a460c9929ba43b77b1417fc380265ea5bb63ff35d6235e57962dca5acab8dbfbee108703e91c62c62b050b6fbfbb1b7ca0e SHA512 a9930b6283e6f78c7a532679fae3e51e6d9f3d78575079f7750acdf2854bfe0cee18d4f45a80f98cab7318b2c2d1a1049dffeebfe90e4aba7b25d0ceb7bf15a5 diff --git a/unity-indicators/indicator-keyboard/indicator-keyboard-0.0.0_p20190716_p0_p03.ebuild b/unity-indicators/indicator-keyboard/indicator-keyboard-0.0.0_p20190716_p0_p03.ebuild index fb512fac..5a107036 100644 --- a/unity-indicators/indicator-keyboard/indicator-keyboard-0.0.0_p20190716_p0_p03.ebuild +++ b/unity-indicators/indicator-keyboard/indicator-keyboard-0.0.0_p20190716_p0_p03.ebuild @@ -4,7 +4,7 @@ EAPI=6 PYTHON_COMPAT=( python3_{7..9} ) -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils flag-o-matic gnome2-utils python-r1 ubuntu-versionator vala UVER_PREFIX="+19.10.${PVR_MICRO}" @@ -20,8 +20,7 @@ IUSE="+charmap +fcitx" RESTRICT="mirror" RDEPEND="gnome-base/gnome-desktop:3= - - charmap? ( gnome-extra/gucharmap )" + charmap? ( gnome-extra/gucharmap:2.90 )" DEPEND="${RDEPEND} app-i18n/ibus[vala] >=dev-libs/glib-2.37 diff --git a/unity-indicators/indicator-messages/Manifest b/unity-indicators/indicator-messages/Manifest index 04a85e0b..7110b0ab 100644 --- a/unity-indicators/indicator-messages/Manifest +++ b/unity-indicators/indicator-messages/Manifest @@ -1,4 +1,4 @@ -DIST indicator-messages_13.10.1+18.10.20180918-0ubuntu2.diff.gz 15694 BLAKE2B 47876e853341e49ae4ea1906a2a1e67c5401b308e9c18b9b9900fd0d09c9e3f03439a7b032b8a7c34cd2e736e4d93df9b89e716f282ac8430eea4b1c4f89e170 SHA512 4af823108ee90e3b5aa9770a446d579e7aa5c1c759dacb650dd7059bc7ba5b3a634644eb5ca34aa3b700337ac9509f677703f2e5fde9c896ce360d88f26b5c7b +DIST indicator-messages_13.10.1+18.10.20180918-0ubuntu3.diff.gz 15646 BLAKE2B bd5a4228de6ca6cf06f58439ef46dcda52a34b669ddcc07f5c73e6a88db5761e5813fb180ba9385106c67a87dab7785f6bade662e95a54254770571adb69d6ae SHA512 bd7b2948ff1a0d0c82f69dc6449761093c887db3ba29c0f9555188b13428f5bef0985732aa8e0c28e4e0615799eb842ddf8571c24b40fdd35bd6341c63b2c0c0 DIST indicator-messages_13.10.1+18.10.20180918.orig.tar.gz 115019 BLAKE2B 5c30e9e29294b1db6e76b083b8310aec92477644b7c9010f5f8653a90f64a0d82665d5dcc2ca84424eceafda561b41aebf1a216761c2e9ff3b317845028b0c59 SHA512 17e7f5c0a74fe4143f9ffedbfb5a995f23bd2b2061313358ff75efa4e873e1121bb587347976d5810c6b4ee62d474307ef83317845320b27d6003240dbc1394e -EBUILD indicator-messages-13.10.1_p20180918_p0_p02.ebuild 1160 BLAKE2B 9aa75ce8e51a8f4fc3350b07f08041ceeb57c651d6cb566fe6f039eb2e9917588a4e8a614fa0525cf2bf14d41cd0cd8c6ac2924b675213895c8d654136ff00b9 SHA512 ebeb086a721dd8072c18878d0a6c0b648418244e83316ff212563640d579bcde03cd89943e873236e31c281655d48a9a61cc5ab728b4c996349a538447f18358 +EBUILD indicator-messages-13.10.1_p20180918_p0_p03.ebuild 1159 BLAKE2B 9c4c29cdcccd658f8f965c83d8bb0b376be9ea1575c0094f37817664fc95aa259ead99ac0c5492e90653fb4fc1be170795c2bfa03685b309ad957ddfe7e63856 SHA512 b241e80ae4512403468fda6960c0922d556f2fd4ab53875ae778e68fb483a017eacbfec7a317e48c362b6a82c2489e359d81901add397c9a68d1aea827d1722d MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-indicators/indicator-messages/indicator-messages-13.10.1_p20180918_p0_p02.ebuild b/unity-indicators/indicator-messages/indicator-messages-13.10.1_p20180918_p0_p03.ebuild similarity index 98% rename from unity-indicators/indicator-messages/indicator-messages-13.10.1_p20180918_p0_p02.ebuild rename to unity-indicators/indicator-messages/indicator-messages-13.10.1_p20180918_p0_p03.ebuild index 4488ce44..6882c58b 100644 --- a/unity-indicators/indicator-messages/indicator-messages-13.10.1_p20180918_p0_p02.ebuild +++ b/unity-indicators/indicator-messages/indicator-messages-13.10.1_p20180918_p0_p03.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils flag-o-matic gnome2-utils ubuntu-versionator vala xdg-utils UVER_PREFIX="+18.10.${PVR_MICRO}" diff --git a/unity-indicators/indicator-power/Manifest b/unity-indicators/indicator-power/Manifest index cb34e684..920cfb5c 100644 --- a/unity-indicators/indicator-power/Manifest +++ b/unity-indicators/indicator-power/Manifest @@ -1,5 +1,5 @@ AUX disable-powerman.diff 920 BLAKE2B d5623e2716cbeed52376d76b056a0f13de1ccf6ff5fc926bdfdb95803dccc71064b4eaf94fdda2bf59802130fd284c218eefa14cef3a7ff951974fd956d33ba9 SHA512 e6243dc92eabec20c714d17e8252894ddf4f616d2103f1a9060cdd8a3fa8e4638b5f724bf9eda97d32bc8a7b82f6086a2a840b9f622595eed63da46c470058fc DIST indicator-power_12.10.6+17.10.20170829.1-0ubuntu7.diff.gz 11820 BLAKE2B e0f1c342b89cb42f1db9a214fb2fc6a95f33ce430ea65457ab53396ffe398e9cbb657f4cdec09e1e8631a388b9fff1ebcae335828df2f6ba1e9fcd9902648a0f SHA512 172f3234af126cdb141f1f45141a5ee192b0bd94a9d2151a5c0fe4d0b9c096c003ede6c070778668f375cdf9c0ce7881c53fec8b79800113a9a2bc96e5d3724a DIST indicator-power_12.10.6+17.10.20170829.1.orig.tar.gz 140122 BLAKE2B d637129fce0a8c000289e12d44c8fcee0873e2681003b2cb47ebcf6362c5b800f95ae53348272cc084701430cd0bc4dcd869aea83a72bb1050208c5a9fecec47 SHA512 7013041232999c9a15ea7e5feafd2b254492700280da11f596e7c32cfc04033388ae2e9e0865ceadcdab8fe8eeec16c48020d5213bb9bb2938e18098e40c73c9 -EBUILD indicator-power-12.10.6_p2017082901_p0_p07.ebuild 1797 BLAKE2B 327953226c4c8721efc89eb644feb69d8315a975151e0d1e4e4911e3bb10edc48cb93333e115770b979606dad40321b65e25be3ed01396dd696e642968deae61 SHA512 1ad1b436034141c8516f21d9ae4a4b77f0041f998724d2b67e8ca9358e28d3e77201976d2f2c37c71e220ffc68124ab85db6259d53b5683f14d4b751e89f8e39 +EBUILD indicator-power-12.10.6_p2017082901_p0_p07.ebuild 1796 BLAKE2B b433f118765bacaeef0b4b2636b6e0f8b0485d36495eaf22b8167f262a6f498ef8f148cdcffa0d9c9c09a74680303c820387462f4c898960819867c3a9af9edf SHA512 f6efea98aee6783b348c2bc0a85a3a12d19bc8f3e2576372cc6b4f4dd02575bf09919407a617b20dd0179088154fd7279f84a30e010b034af62259f14267f329 MISC metadata.xml 285 BLAKE2B 489673e13adfd0872c6d5a9496847509eab2e65156b23b826270f9105c870be36ef4c1bdb27ffe0023809c25f82adc4d707992cba22156512a39dc5fd150617d SHA512 a1a60b033b914d902e14e13033a6c1c94fa8c5fe24d80195b0e9ac06c951d0afc6582a7855daa1ad94701f6f1e6ec77e1f4f2fac136fad0c2195aa15f5f8a495 diff --git a/unity-indicators/indicator-power/indicator-power-12.10.6_p2017082901_p0_p07.ebuild b/unity-indicators/indicator-power/indicator-power-12.10.6_p2017082901_p0_p07.ebuild index 3f5f9cea..8e92a5a3 100644 --- a/unity-indicators/indicator-power/indicator-power-12.10.6_p2017082901_p0_p07.ebuild +++ b/unity-indicators/indicator-power/indicator-power-12.10.6_p2017082901_p0_p07.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit cmake-utils gnome2-utils ubuntu-versionator UVER_PREFIX="+17.10.${PVR_MICRO}" diff --git a/unity-indicators/indicator-printers/Manifest b/unity-indicators/indicator-printers/Manifest index ea2e94d4..cd130bb6 100644 --- a/unity-indicators/indicator-printers/Manifest +++ b/unity-indicators/indicator-printers/Manifest @@ -1,4 +1,4 @@ DIST indicator-printers_0.1.7+17.10.20171101-0ubuntu3.diff.gz 5782 BLAKE2B e68dd411d8a866170a725c5cefefde7e46527ef086d6fd5991d4f25850946ee2e20b9684a74a44972d8441f6d96ae92af06e604e351890b1881834d21be6c665 SHA512 8dba150d184bc835a086ff7163ef4e44526b3049ae44476ed838e3dc9b6c28a2881f96f29d3e6e588aaa3e318aca8ff09dbf1ce305649d775d37db41260bb649 DIST indicator-printers_0.1.7+17.10.20171101.orig.tar.gz 16128 BLAKE2B 26b9d376c84c4be893a61c71e6ecb25c9545ec260f66598c331e6aec3c76c6982de7e1c1d24b07619484bb87f31a17f9a3f1a3cd8a9ec11368d0ea4d1dceb39c SHA512 ef81fe30e639c6140f3fa658b96714203055fb1c388c6378ed758ac82a24d47d71a35b45ff396dbf167109c01b6d33152e7a89144ea777509d2ecfcfad36d5f5 -EBUILD indicator-printers-0.1.7_p20171101_p0_p03.ebuild 1592 BLAKE2B 9ac00974e0a8e8c8ebbba80effbf678eb812979974ca0e3fea3033138d28b0877d7b0f9bd3a4c22c1bf3476583ac12dc003791ec50bffb993035c716440b9aa8 SHA512 932bbcbe7ea4d7bda8d23b2b16fad15f2f0c38726bae1c7b0fdbd5357ee3b930352e2ed6cd7fd3a755eec72f9b63d8b05351229ad5f239f4179d6ea9a91368bf +EBUILD indicator-printers-0.1.7_p20171101_p0_p03.ebuild 1591 BLAKE2B 74566826dcf55c5c30a6ba98698f8465d2d5c497ad1907c0c9cbe92f9f4e2bf8ebbdab5e3380875728446994cf17b86957d38f8c6aae8fe7b8936d73c2db185e SHA512 196537bf5c09667a43ec2d144fd4e2cdbf1092cfeb9f39172af1aa1624a3691607f800025b1f2593e0bed7e7a09ce4a5e317f60b4f1b7a78673d5ad59d520d7f MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-indicators/indicator-printers/indicator-printers-0.1.7_p20171101_p0_p03.ebuild b/unity-indicators/indicator-printers/indicator-printers-0.1.7_p20171101_p0_p03.ebuild index 6bb25544..57761b82 100644 --- a/unity-indicators/indicator-printers/indicator-printers-0.1.7_p20171101_p0_p03.ebuild +++ b/unity-indicators/indicator-printers/indicator-printers-0.1.7_p20171101_p0_p03.ebuild @@ -4,7 +4,7 @@ EAPI=6 GNOME2_LA_PUNT="yes" -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils gnome2 ubuntu-versionator xdg-utils UVER_PREFIX="+17.10.${PVR_MICRO}" diff --git a/unity-indicators/indicator-session/Manifest b/unity-indicators/indicator-session/Manifest index 3a523016..ad7b423d 100644 --- a/unity-indicators/indicator-session/Manifest +++ b/unity-indicators/indicator-session/Manifest @@ -1,6 +1,4 @@ AUX unity-yelp.desktop 312 BLAKE2B 6f115fb64f840585a345fefe4d1f1d4d91d4f22ad4ee8627d852a6f1a047bcc1572337013ae3d78c8c08092337da7d4d3bb2e9d7b5ec265226dc15ae9b42e965 SHA512 038a450071d841643bffde5261b4b678caa152eabdacd5e9511b6158632e9037b42e6d18a17f8d7ae7b59e99ecbd6519b07cc1b02a0b7e5e5e3e8ec8fee3a9d5 -DIST indicator-session_17.3.20+21.04.20210327.orig.tar.gz 204947 BLAKE2B ae5a39bfcfb96a575c53293f37aa71b7af7dce1761cef25bc30fa91ba9573fc6083ec071ced83df9a59c093a6854c71ccff30f8a741d1e37c3a3c8be1a030684 SHA512 50639a551b151c56ab02ba1584de2c961c7e4fe82b52822e5c2d53ccb30315a04426319bdfffa2a4d3126931f17600d7298dc80af844964b84fc09b5215ccb9d DIST indicator-session_17.3.20+21.10.20210613.1.orig.tar.gz 204815 BLAKE2B da6e25122451f3f11407a3c4f7d8e44f56b11fcf4a7f6d6b4dc427565af05f0b4ee5875990bc0236977e95c21a7a3db9e569b4680916e2de95e39861d7489820 SHA512 65799f39462ea7fc71fde84b84f0eabbd97b6e4898998e9b4850573100cda94958330acb99b3fa8d6379ce21c9a4d3049382b7b8366f831c0d7530600640186d -EBUILD indicator-session-17.3.20_p20210327_p0_p01.ebuild 2196 BLAKE2B b7678f8380de1e4bf315914bae44a4689d183c289708bfc16e3481284251cff3d127bca84e08d3ac752d73f5147e15262a0ac07830489af419d4d33b66383f15 SHA512 28028eb2f95660fdbb809f5814d1fd3f5e97018a453072a2b6188f25a8e4b20fb5796fb899990ffb8b83eb0a4361f9210277c26a8d86ab7394df0625e6e9b012 -EBUILD indicator-session-17.3.20_p2021061301_p0_p01.ebuild 2196 BLAKE2B 1421f0668feaf12cd4ba1026f6564586e756a4e40be23ad176db220b80d27916c0945148688437bcf1cb11f3275a824689269cfe5cf93f3434dab685286a7293 SHA512 6b5a7b073cb693b17fae0e6f60434ad06f3ab3b58e13da0a8a158a15c83312757537f10d16e73aff3cd2682b486e7ca3ebb69e56d277c27aa0278e4be0258bb7 +EBUILD indicator-session-17.3.20_p2021061301_p0_p01.ebuild 2195 BLAKE2B ce73ef4541e569ce7c721e80db361a50185a1c19e1c8ba0af28e332a8138f01b7a40625cf5f3ec099055b19c8684838b389c2150ba75487562f86ec95a17c3dc SHA512 c51a90b5269ad9b02948ba11566b6ed802a5116f99fddf4fe641caa074b1a379e3041e4d1c7ff23e7ba08d94f1ac6bed30d73d15126474d2777947e1c4732699 MISC metadata.xml 315 BLAKE2B 3c4757a21d5a74c1945511da1472d153faf71b7e9810a1d58079ef1b83c548d79e257aa5c39239dd4515dc93e8828a93a65127a88baa1dc3a01fbe88fd559856 SHA512 a200a50544b6e24567a6378ede1e0e05c5918757a1d1e4adcfb0b468e36938237424004b0a842fd2e75f344dee2173fbe8916504a86bcb9459d4db0646b0385b diff --git a/unity-indicators/indicator-session/indicator-session-17.3.20_p20210327_p0_p01.ebuild b/unity-indicators/indicator-session/indicator-session-17.3.20_p20210327_p0_p01.ebuild deleted file mode 100644 index 91417b7e..00000000 --- a/unity-indicators/indicator-session/indicator-session-17.3.20_p20210327_p0_p01.ebuild +++ /dev/null @@ -1,91 +0,0 @@ -# Copyright 1999-2021 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -URELEASE="hirsute" -inherit cmake-utils gnome2-utils ubuntu-versionator xdg-utils - -UVER_PREFIX="+${UVER_RELEASE}.${PVR_MICRO}" - -DESCRIPTION="Indicator showing session management, status and user switching used by the Unity7 user interface" -HOMEPAGE="https://launchpad.net/indicator-session" -SRC_URI="${UURL}/${MY_P}${UVER_PREFIX}.orig.tar.gz" - -LICENSE="GPL-3" -SLOT="0" -KEYWORDS="~amd64" -IUSE="+help test" -RESTRICT="mirror" - -RDEPEND="unity-base/unity-language-pack" -DEPEND="${RDEPEND} - dev-libs/glib:2 - dev-libs/libappindicator:= - dev-libs/libdbusmenu:= - help? ( gnome-extra/yelp - gnome-extra/gnome-user-docs - unity-base/ubuntu-docs ) - test? ( >=dev-cpp/gtest-1.8.1 )" - -S="${WORKDIR}" - -src_prepare() { - ubuntu-versionator_src_prepare - - # Fix build attempting to violate sandbox # - sed '/gtk-update-icon-cache/,+1 d' \ - -i data/icons/CMakeLists.txt || die - - # Remove dependency on whoopsie (Ubuntu's error submission tracker) # - sed -e 's:libwhoopsie):):g' \ - -i CMakeLists.txt - for each in $(grep -ri whoopsie | awk -F: '{print $1}'); do - sed -e '/whoopsie/Id' -i "${each}" - done - - if ! use help || has nodoc ${FEATURES}; then - sed -n '/indicator.help/{s|^|//|};p' \ - -i src/service.c - else - sed -e 's:distro_name = g_strdup(value):distro_name = g_strdup(\"Unity\"):g' \ - -i src/service.c - sed -e 's:yelp:yelp help\:ubuntu-help:g' \ - -i src/backend-dbus/actions.c - fi - - # Disable all language files as they can be incomplete # - # due to being provided by Ubuntu's language-pack packages # - sed -i \ - -e "/add_subdirectory (po)/d" \ - CMakeLists.txt - - # Disable tests # - use test || sed -i \ - -e "/enable_testing ()/d" \ - -e "/add_subdirectory (tests)/d" \ - CMakeLists.txt - - cmake-utils_src_prepare -} - -src_install() { - cmake-utils_src_install - - use help && domenu "${FILESDIR}/unity-yelp.desktop" -} - -pkg_preinst() { gnome2_schemas_savelist; } - -pkg_postinst() { - gnome2_schemas_update - xdg_desktop_database_update - xdg_icon_cache_update - ubuntu-versionator_pkg_postinst -} - -pkg_postrm() { - gnome2_schemas_update - xdg_desktop_database_update - xdg_icon_cache_update -} diff --git a/unity-indicators/indicator-session/indicator-session-17.3.20_p2021061301_p0_p01.ebuild b/unity-indicators/indicator-session/indicator-session-17.3.20_p2021061301_p0_p01.ebuild index 5e96b3fa..a0ab3cd6 100644 --- a/unity-indicators/indicator-session/indicator-session-17.3.20_p2021061301_p0_p01.ebuild +++ b/unity-indicators/indicator-session/indicator-session-17.3.20_p2021061301_p0_p01.ebuild @@ -14,7 +14,7 @@ SRC_URI="${UURL}/${MY_P}${UVER_PREFIX}.orig.tar.gz" LICENSE="GPL-3" SLOT="0" -#KEYWORDS="~amd64" +KEYWORDS="~amd64" IUSE="+help test" RESTRICT="mirror" diff --git a/unity-indicators/indicator-sound/Manifest b/unity-indicators/indicator-sound/Manifest index fe46205a..7cafc6c4 100644 --- a/unity-indicators/indicator-sound/Manifest +++ b/unity-indicators/indicator-sound/Manifest @@ -1,4 +1,4 @@ -DIST indicator-sound_12.10.2+18.10.20180612-0ubuntu3.diff.gz 22255 BLAKE2B 1f8d44b1e802258d9d20097a4932ab5c57d165d7fabee2b72c9cc7a231f271def084c88f12944ed642a9b612f192494a15a0b540138838542effba472cc7da07 SHA512 87ca4fd54474293b756119c72483af02b32c9e3423c8264aa4cf17faf2b84bae7791a41d105d7d8d6d5c631af084e08b9bbb7025a469d53902a51dce4ec68da4 +DIST indicator-sound_12.10.2+18.10.20180612-0ubuntu4.diff.gz 27998 BLAKE2B ca589899dc5a5ae4c8976aa9ec2a7adf7ec517fb600a0cb8f24b61ce45060e1ccf8813ac82a7f4e79026bc06780ae5f53acd2c62a391cf176550cec0188a25e2 SHA512 3daf1ebb03315ba0450f22c73ae31963b44fb7988fe6c366a67dd1c2ccb65981c9ee0c79c77f5def087f75ea561c914a1901283a8c564256cf923d975c75a1fd DIST indicator-sound_12.10.2+18.10.20180612.orig.tar.gz 7489116 BLAKE2B 801a1c80cb6e8599883c96928d317768343572dd8dfb4778ef6cbf3e9236ba48fbb7070a0ee0664afda8f355774655ac4989a583fdc17b44f345b77e2deb4cb8 SHA512 1fb4f15c34b0ba121ecf553a709c0f1f0351cc5b3e3ddf887cff4c59f62b3e2fdae4bf1f1a7546fc4777fe24c18d4999b91eebd47a9f6962b9a0dd92b4e6b5d3 -EBUILD indicator-sound-12.10.2_p20180612_p0_p03.ebuild 2005 BLAKE2B d84b466f8af9475ce550f098edf2b635cd1d8346309b3e65c1c295008cad645f49ae06ceed056b655d9fe7f42f834ae16e5ca45898a274162e10d6061aca3d8b SHA512 af91d36b9dae1165f10d2a55e5ab5af06390ccace1a31ece7ddc3b9d11bbf7d2747a0d60dd68599194fa91748b083a256f25ca0ef9fe32f52ec673f67e97790c +EBUILD indicator-sound-12.10.2_p20180612_p0_p04.ebuild 2004 BLAKE2B d4c58f733d07a9e0f5f1bd08b8728922f4114443a91f3c146e23488c46ab095a2533c0fe53e29f1402b80606e1fd28656da7a6fa38851cf1a416773719c0fc66 SHA512 a09f827c904da57af1a587df1998f0a7195512edb36b8885594760e09556970bf1aa3117abdddd6d7ca4b8c920abd6962f6e6eabb0edb2af608272883f69089b MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-indicators/indicator-sound/indicator-sound-12.10.2_p20180612_p0_p03.ebuild b/unity-indicators/indicator-sound/indicator-sound-12.10.2_p20180612_p0_p04.ebuild similarity index 99% rename from unity-indicators/indicator-sound/indicator-sound-12.10.2_p20180612_p0_p03.ebuild rename to unity-indicators/indicator-sound/indicator-sound-12.10.2_p20180612_p0_p04.ebuild index 69d68505..73962310 100644 --- a/unity-indicators/indicator-sound/indicator-sound-12.10.2_p20180612_p0_p03.ebuild +++ b/unity-indicators/indicator-sound/indicator-sound-12.10.2_p20180612_p0_p04.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit cmake-utils gnome2-utils ubuntu-versionator vala xdg-utils UVER_PREFIX="+18.10.${PVR_MICRO}" diff --git a/unity-indicators/unity-indicators-meta/Manifest b/unity-indicators/unity-indicators-meta/Manifest index 9451cb27..35966316 100644 --- a/unity-indicators/unity-indicators-meta/Manifest +++ b/unity-indicators/unity-indicators-meta/Manifest @@ -1,2 +1,2 @@ -EBUILD unity-indicators-meta-7.5.0.ebuild 990 BLAKE2B ac77a16f1ad49668933f33bd0e53dc83b2e29bc8a3c2ca37851cbf9c0b69b42d6bea3d78bc530e96baa28362c507724f3182db8249084675ca196b79e65385da SHA512 78751a2d1a1c0a2a6bdd78fc8c2e8b08e48e18b1dc057e73c8f2630ecd22b886d8ecc93c503672d34df9e740d9e71b1027891f71dfa159ce11bb08bd55e632bd +EBUILD unity-indicators-meta-7.5.1.ebuild 984 BLAKE2B 41a7332dd940642c1b88bde8491831d10a7496f89158a6de47e2a2913ae8f7fe5eba889af44906230ac76160ca8cd4d91d32c90fdd3253dd8ca7c107ba88bd2a SHA512 a80c561d7364f5b422011dcc47b47ea1fa14768c6690687ee8987f976e42f2525ab04d38f1ac7f3b69fcc5a23fa6a599360e5c2fa8a0fc837264272b6ab5b816 MISC metadata.xml 932 BLAKE2B 87560c2ef004cc17d5d65f1dcfab4a546b675751b24f804439cb4484bc52c591325b33262250b1de77bbf1fd1d67ac268d7aa4e285ed38953abe8d7b5795c600 SHA512 a8134aa2b9cd852f8c24a843a8b686b28de3928cec9e5565591f9c703c7bde68485ede341e0906f2387c15a5b14379c12a4cdfa2bb2604005bfa86aeebf7efbe diff --git a/unity-indicators/unity-indicators-meta/unity-indicators-meta-7.5.0.ebuild b/unity-indicators/unity-indicators-meta/unity-indicators-meta-7.5.1.ebuild similarity index 78% rename from unity-indicators/unity-indicators-meta/unity-indicators-meta-7.5.0.ebuild rename to unity-indicators/unity-indicators-meta/unity-indicators-meta-7.5.1.ebuild index 031377a9..759d3092 100644 --- a/unity-indicators/unity-indicators-meta/unity-indicators-meta-7.5.0.ebuild +++ b/unity-indicators/unity-indicators-meta/unity-indicators-meta-7.5.1.ebuild @@ -9,17 +9,18 @@ HOMEPAGE="http://unity.ubuntu.com/" LICENSE="GPL-3" SLOT="0" KEYWORDS="~amd64" -IUSE="+battery bluetooth +cups +datetime +keyboard mail paste sensors +session +sound weather" +IUSE="+battery bluetooth +cups +datetime java +keyboard mail paste sensors +session +sound weather" RESTRICT="mirror" RDEPEND="unity-indicators/indicator-application unity-indicators/indicator-appmenu + unity-indicators/indicator-datetime battery? ( unity-indicators/indicator-power ) bluetooth? ( unity-indicators/indicator-bluetooth ) cups? ( unity-indicators/indicator-printers ) - datetime? ( unity-indicators/indicator-datetime ) + java? ( dev-java/jayatana ) keyboard? ( unity-indicators/indicator-keyboard ) - mail? ( net-mail/mailnag x11-plugins/mailnag-messagingmenu-plugin ) + mail? ( net-mail/mailnag[messagingmenu] ) paste? ( unity-extra/diodon ) sensors? ( unity-extra/indicator-psensor ) session? ( unity-indicators/indicator-session ) diff --git a/unity-lenses/unity-lens-applications/Manifest b/unity-lenses/unity-lens-applications/Manifest index 23430288..fc1bde35 100644 --- a/unity-lenses/unity-lens-applications/Manifest +++ b/unity-lenses/unity-lens-applications/Manifest @@ -1,4 +1,4 @@ AUX unity-lens-applications-fix-build-against-vala-0.52.patch 1506 BLAKE2B 354bf657bb27d00900b7097cec5910cab0f43869d42d31a3ad604136d195570d01a8aa9ad333ffc4c563982c1a424bac5d0ca36ee13c9352b0a9e14f32963617 SHA512 42dbc7e6fb91d92af2ed20d7485e607b2f3afe9d3bdf046d6aa0f62a49e728d9d33f01bf3f30c221e7293cfc735bc74d17f202cdcbd71496b2ad75c1ab5527b1 DIST unity-lens-applications_7.1.0+16.10.20160927.orig.tar.gz 78847 BLAKE2B b155e3853d10f33a0f42e452358d8ae75e16af5d10587fad63092c47053d436fbb982966890c9c1e4f0a1905d9b0dbeedd2d317bd134bbdda7ebc025ede57d98 SHA512 d93d556f2369fbf54b96f42c9c4b4899f3cf029ba22db375bb2549df0e4bd8052d25d77a328330894de7ecab4ae5ab5683bafc6ce6991be050eb1714a9792db5 -EBUILD unity-lens-applications-7.1.0_p20160927_p0_p05.ebuild 1471 BLAKE2B 9a3296ab321bee74cea0c4baffd85b475633d542d726ea58e314ffb83db9f8eb1438b6cb123e1d49063bfe02af1877dec4404519e2bfd5b22df11d4a63aea597 SHA512 0800764059eed33e88fcf118364e50a3169411b4474939a70313b388138572517c450fbab42c814ab9c89877627987456c4c6f4e125781fd0468fe08fb26bd69 +EBUILD unity-lens-applications-7.1.0_p20160927_p0_p05.ebuild 1470 BLAKE2B e5834bf85a8bb092d8d7b7248e9e96d42d129041824ed094192866d4a9613989e9c0887b41bc79ec4319f390971f2e7fd670076a8cfda56c97077d48df27c7eb SHA512 db9f07d294be14c608c62aabceee216aeb9f70888f400f3751d9358d0eb5dbd696e21ad7e33bae9198412e97105b842ae46cdba666a84ffad7d2f467491d580c MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-lenses/unity-lens-applications/unity-lens-applications-7.1.0_p20160927_p0_p05.ebuild b/unity-lenses/unity-lens-applications/unity-lens-applications-7.1.0_p20160927_p0_p05.ebuild index 3f9a234e..c03a067d 100644 --- a/unity-lenses/unity-lens-applications/unity-lens-applications-7.1.0_p20160927_p0_p05.ebuild +++ b/unity-lenses/unity-lens-applications/unity-lens-applications-7.1.0_p20160927_p0_p05.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils gnome2-utils ubuntu-versionator vala UVER_PREFIX="+16.10.${PVR_MICRO}" diff --git a/unity-lenses/unity-lens-files/Manifest b/unity-lenses/unity-lens-files/Manifest index 5dee80c7..7949dcc0 100644 --- a/unity-lenses/unity-lens-files/Manifest +++ b/unity-lenses/unity-lens-files/Manifest @@ -1,4 +1,4 @@ DIST unity-lens-files_7.1.0+17.10.20170605-0ubuntu2.diff.gz 7204 BLAKE2B 2ab935a8eb99a8b635f8f976fad3be5c2e88af766b2567b62ff76ff6f0264abd5173525706d89566f9d244dde49247ef277e87e4194a986925072ce0ba6a94c8 SHA512 05573f308afd92cefdef13bee04734c93172725f0c62fdbf2fc19ca4a1a19f1b24206bb07e8777040c1856f4459e261b990b0f70ee1a1074da88a1e901290905 DIST unity-lens-files_7.1.0+17.10.20170605.orig.tar.gz 46190 BLAKE2B 4ca7c0b8747e13584e4e2a85c0977464a307d13cca20dcdba1d03c0dba4f57fefeb123c6afe6151977be83542445bb56c3074570dae047f4b4b7ace9968f0011 SHA512 a984271c05eedf6318110330c4f7997fd690d7bf0379ad71a344acb1edb6e9efebaec34d6ad175d097fc45509215ed474a77d78a5e8f98fbda18c800e28baa75 -EBUILD unity-lens-files-7.1.0_p20170605_p0_p02.ebuild 1226 BLAKE2B df841359b67c9d94f651d51ad6179555e5b8a3b581ec94bcfbf3878ef26d7afd2fe1d5521e1285b4d63b378962b6596f6ee1cea91eee2a56a8158e8d4dc320f3 SHA512 8a04d1f39996f0fd91bc4aeaff7e13175dd16ad39817d900e32c07ddf7d20ec1eb29c64d12192060bf5a7e0679b91af684e6d5df19f8251a18a2179ec968b0c4 +EBUILD unity-lens-files-7.1.0_p20170605_p0_p02.ebuild 1225 BLAKE2B f0a33c08f13508c1fcbec10beae7843a5dd6964cde3a666c4bee8105cf402e2d5321a24ec332ed815e84018a4fd7a1dd7f334f3927e455d0962728b9a78a244b SHA512 a73b5dbe37b64570e63fa2e807fde7f2e58832dfa829c63865f493df9eae2be0bdb9412a17dd0217c599d37eecc4558244ff5f5552e89e5e17e677b03c616400 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-lenses/unity-lens-files/unity-lens-files-7.1.0_p20170605_p0_p02.ebuild b/unity-lenses/unity-lens-files/unity-lens-files-7.1.0_p20170605_p0_p02.ebuild index c87a2cb0..dd5bf890 100644 --- a/unity-lenses/unity-lens-files/unity-lens-files-7.1.0_p20170605_p0_p02.ebuild +++ b/unity-lenses/unity-lens-files/unity-lens-files-7.1.0_p20170605_p0_p02.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils gnome2-utils ubuntu-versionator vala UVER_PREFIX="+17.10.${PVR_MICRO}" diff --git a/unity-lenses/unity-lens-meta/Manifest b/unity-lenses/unity-lens-meta/Manifest index c686d28f..1d19dd7e 100644 --- a/unity-lenses/unity-lens-meta/Manifest +++ b/unity-lenses/unity-lens-meta/Manifest @@ -1,2 +1,2 @@ -EBUILD unity-lens-meta-7.5.0.ebuild 684 BLAKE2B c694391395b8bed025e224c8e99bdaf2ad625d853210c00107d581adfe66dc46ad82711de15c27ff5fba1d2aeabe37dee71f7674801129258300337ee32b9035 SHA512 c86e3d1545b1215ddd6b8f5b72ae105647bf05ff5be1c75d0bbbd798ccdb16203d3dc7edaa63ec7578f79136a4356d30e0274b5a164e685825ea0e17bbc6259a +EBUILD unity-lens-meta-7.5.1.ebuild 684 BLAKE2B c694391395b8bed025e224c8e99bdaf2ad625d853210c00107d581adfe66dc46ad82711de15c27ff5fba1d2aeabe37dee71f7674801129258300337ee32b9035 SHA512 c86e3d1545b1215ddd6b8f5b72ae105647bf05ff5be1c75d0bbbd798ccdb16203d3dc7edaa63ec7578f79136a4356d30e0274b5a164e685825ea0e17bbc6259a MISC metadata.xml 555 BLAKE2B e517d182cbb3cf72b93781ed5b29b0d82ec43a698cc9e8e75342633ece6940727c1b6a7e81a76de1396e05ea7dd00f50250c55104181450f8735d91f1e396ca1 SHA512 6bf2964832382c4d8961c170977aab29542b83b7bd0c0bb517e0a58d4824e8d65c7a5784de82be1b54ba3be8eb588fcd72b34f28a0e3b8bf1b6d9076c7055dcc diff --git a/unity-lenses/unity-lens-meta/unity-lens-meta-7.5.0.ebuild b/unity-lenses/unity-lens-meta/unity-lens-meta-7.5.1.ebuild similarity index 100% rename from unity-lenses/unity-lens-meta/unity-lens-meta-7.5.0.ebuild rename to unity-lenses/unity-lens-meta/unity-lens-meta-7.5.1.ebuild diff --git a/unity-lenses/unity-lens-music/Manifest b/unity-lenses/unity-lens-music/Manifest index 3710ce42..1351c2ea 100644 --- a/unity-lenses/unity-lens-music/Manifest +++ b/unity-lenses/unity-lens-music/Manifest @@ -1,5 +1,5 @@ AUX unity-lens-music-fix-build-against-vala-0.48.patch 1150 BLAKE2B 383d685b88a1b992cf9baeb70769e23d3e32d0d4893609d5ab4afe389c89a0d4754f7d0d12f9fadcfb0705e934602f5b823adb347ef05515f8cb4d07c49960dd SHA512 0d4cc3ae97a5dc8f4b654395c815ab083d589a7b3e17eee8d9c94826dadc4ae8c127ca477c3f6bd7f282e93ec29c6dfdfa56eba8eda166deb4009fd6ad8befec DIST unity-lens-music_6.9.1+16.04-0ubuntu3.diff.gz 7223 BLAKE2B e6792a206800b5300264da8096c79c9e71682c41e1899a9163f5f145e6ec2cc34e3a79aeccfed5d44a43096402dca65e2bd9c02c34a1232309abab607dd4327a SHA512 8422f95838c37f31879825e685ed3480c51fe0e4e7cb5d32770e3b187d056b9b5f60b0094d3f08b08e6b3840cc807e16442abedc03c2c4efeef25ff3f69b20b8 DIST unity-lens-music_6.9.1+16.04.orig.tar.gz 46476 BLAKE2B 845266a31212c10b8bb41f8cdce12357a3dce4081c89672be955561b2156dedd1402f884e1246774b41d85ea6e51defc6012a5d99eb08c4432f3ab2bf44986cf SHA512 fb97b3d6472fe2f97365c3fbd0864bab7f19aacaeb9cb3439a4bfc5a0506a26b8ecdb9389189db23549bcede288e04e6af6f6b7b58957ef35e0f8145cda23afc -EBUILD unity-lens-music-6.9.1_p_p0_p03.ebuild 1260 BLAKE2B fa61c11684c3e775fb3f11f23782a20b574bd1b08fbb30ebc3eac798fd291b306754f7fdd43654c676311f8e7cdf67739b426b848094c5fab7207a3ecdf64035 SHA512 81f2a4e8d297d08e58f26754e61dc7366cccec90687afa59e7b23fe0ce3a956181cebfcf745033209f79873b46944e65abb88effdd67a5012db4f7ca8c6d2b55 +EBUILD unity-lens-music-6.9.1_p_p0_p03.ebuild 1259 BLAKE2B 00b16727d72adbe8f1f214540262d7f11ab7aaa8b5004cd5b273ecb3579b5c709935c9cd8fd84f97064204e2888db6b6c1776a78e69788d666d0a79ff1cbd0e4 SHA512 13044806251f7759d1df17fa747d11abd389a71ab283005615734340e55b615328c8b288a7384d6ba9e63c43c767c0498593776f2ec68f54e6599a28cd784dce MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-lenses/unity-lens-music/unity-lens-music-6.9.1_p_p0_p03.ebuild b/unity-lenses/unity-lens-music/unity-lens-music-6.9.1_p_p0_p03.ebuild index aafa1125..21ab0c48 100644 --- a/unity-lenses/unity-lens-music/unity-lens-music-6.9.1_p_p0_p03.ebuild +++ b/unity-lenses/unity-lens-music/unity-lens-music-6.9.1_p_p0_p03.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils ubuntu-versionator vala UVER_PREFIX="+16.04" diff --git a/unity-lenses/unity-lens-photos/Manifest b/unity-lenses/unity-lens-photos/Manifest index 26e2e300..92253d72 100644 --- a/unity-lenses/unity-lens-photos/Manifest +++ b/unity-lenses/unity-lens-photos/Manifest @@ -1,5 +1,5 @@ AUX remove-goa-scopes.diff 1606 BLAKE2B 4e3232de5c2ce02ad58054b2878147aca78587fad7215fbfeb2cb483c4c0240667e0387df61fcca33919fe844356361786f86b34185ada2a3a58f50168aa001e SHA512 6b14d75a7795d89414008f96559f1d2452adf500a6b48b3d45e93a565099a2f65f53347f1b3d4dbce3337cf827e2cba27bfb5bba30fa1eac31660b0e9f983bf6 DIST unity-lens-photos_1.0+17.10.20170605-0ubuntu9.diff.gz 4592 BLAKE2B 966924f2cea97f2d4119d3f053b11f01bf85b0f74b089ffe07c61c2fe7d34eefdb1618276e25ff586ae5b25038b8a045f646e4cfdbd63b8ea722622a1c4c988f SHA512 e79cc17b5681652fd07695f5d13ea1388dc980f7f2583f0b9e32bb8415a21d69b29ae5f6569260d35bbc93c8d248e60fa30c7e1d889a065ba47548f22bf07324 DIST unity-lens-photos_1.0+17.10.20170605.orig.tar.gz 91363 BLAKE2B a39b152c5defe39551a98bb2491fa4345181e09fa665b0dfb49596a7648dd427084ec400bbc5fba1abfbd4587dc72b04e05bbd86562d7cec832482f7e688f4d5 SHA512 055e3810a781ec960f4634ddeb2cf7d96f41351ebaa406adc50ea24fe5babc4388d2a604ed2eaedcbbd208822e4bd583e6c8401394255042f2aa7bb6dffbae1a -EBUILD unity-lens-photos-1.0_p20170605_p0_p09.ebuild 2227 BLAKE2B 3142bd7c262c3d58051cd880ad4e56821ec52bfb744de9fec0c18ad219d7fc81142416b0e7c4b77ed5a68d0f0034958d1b80e827e6f5c76030b2f340f6bcdd87 SHA512 27fcbad420736b167789cda3ea45fb5519ebf2267d4a95d075bfe7244f50c5409379fd4d7bb1421569b7af55252a1e5311b1ecbb832c2731133d4e202fe51deb +EBUILD unity-lens-photos-1.0_p20170605_p0_p09.ebuild 2226 BLAKE2B b3d320907a10900f39077cfdf8e1faf30d31e4e529bc9296502e7f46df5bab0e1b4f1cb229af568415c900b142ba5bb85893db336ed70616a045aa9b30433e36 SHA512 7ca4e0d80995d8e6fc07dad1dfd7d121eb9b7ac5d0fdd2f3ed52281082e93174ff162fc96a38bde52ff8f4fbd00567b65fee346ea25ad5e1e830a7988de6edb5 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-lenses/unity-lens-photos/unity-lens-photos-1.0_p20170605_p0_p09.ebuild b/unity-lenses/unity-lens-photos/unity-lens-photos-1.0_p20170605_p0_p09.ebuild index 2db10ca8..8dc628b1 100644 --- a/unity-lenses/unity-lens-photos/unity-lens-photos-1.0_p20170605_p0_p09.ebuild +++ b/unity-lenses/unity-lens-photos/unity-lens-photos-1.0_p20170605_p0_p09.ebuild @@ -6,7 +6,7 @@ EAPI=7 PYTHON_COMPAT=( python3_{7..9} ) DISTUTILS_SINGLE_IMPL=1 -URELEASE="hirsute" +URELEASE="impish" inherit distutils-r1 eutils ubuntu-versionator UVER_PREFIX="+17.10.${PVR_MICRO}" @@ -86,7 +86,7 @@ pkg_postinst() { ubuntu-versionator_pkg_postinst if use gnome-online-accounts; then echo - ewarn "USE-flag 'gnome-online-accounts' declared:" + ewarn "USE flag 'gnome-online-accounts' declared:" ewarn "Facebook, Flickr and Picasa scopes are installed but not maintained and tested anymore." echo fi diff --git a/unity-lenses/unity-lens-video/Manifest b/unity-lenses/unity-lens-video/Manifest index 2c7f43ef..4eea4f95 100644 --- a/unity-lenses/unity-lens-video/Manifest +++ b/unity-lenses/unity-lens-video/Manifest @@ -1,3 +1,3 @@ DIST unity-lens-video_0.3.15+16.04.20160212.1.orig.tar.gz 40790 BLAKE2B a6573ad1b9602c47a51dc72b5dafafad1506a5194d3d5e254b7f81d558595006cf7e02cad7bffe6f27a26dca98e0796b221a17d27ef789a530c4e991b437b411 SHA512 bf23c2a439e309a9b92281511054a67d88efe28d5db462862c8fd27f6805e93d266043ca55c245c4b5699ca964105b3dfe575aef80997e3a56111f3608b711ba -EBUILD unity-lens-video-0.3.15_p2016021201_p0_p03.ebuild 860 BLAKE2B 0fd40629740e27e0bfe12d7106d530ef2d2e3280a66654668a11193cf2f91a2109a159f1b93ca22b93195fc454d7de0ec181ce1ee729654ae6e3085c620625b8 SHA512 a7867a5fdd51a36e39e14d29aeac4580e662a0856f6577ba4a262ac317d73fcaf202cab019916b26cc7379e38e598be6f034ab4fb0bbc4f8bd86ea7d562d0845 +EBUILD unity-lens-video-0.3.15_p2016021201_p0_p03.ebuild 859 BLAKE2B 484995de6d0ee2047f117d2f40af5979e811a9b2c4320329cc13c3ba41ac588c388f7db5f81bb383995b5ca8906bc7c58b7fd113b73ab3f2f565cce85a4ede01 SHA512 bd55640375fad4990f1fcf981ce211e45cc141264a58cbe1944403446423f7512ab957d497a095a23443a8da4831afeefb760db75e2ffd92a0b05d81cbfad0a7 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-lenses/unity-lens-video/unity-lens-video-0.3.15_p2016021201_p0_p03.ebuild b/unity-lenses/unity-lens-video/unity-lens-video-0.3.15_p2016021201_p0_p03.ebuild index 8473c14e..2ba13209 100644 --- a/unity-lenses/unity-lens-video/unity-lens-video-0.3.15_p2016021201_p0_p03.ebuild +++ b/unity-lenses/unity-lens-video/unity-lens-video-0.3.15_p2016021201_p0_p03.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils ubuntu-versionator vala UVER_PREFIX="+16.04.${PVR_MICRO}" diff --git a/unity-scopes/smart-scopes/Manifest b/unity-scopes/smart-scopes/Manifest index d94ba5db..e9aeaff5 100644 --- a/unity-scopes/smart-scopes/Manifest +++ b/unity-scopes/smart-scopes/Manifest @@ -44,6 +44,6 @@ DIST unity-scope-yelp_0.1+13.10.20130723-0ubuntu1.diff.gz 2366 BLAKE2B 9473090c9 DIST unity-scope-yelp_0.1+13.10.20130723.orig.tar.gz 9746 BLAKE2B af07369b7657b0307480732f90c37c8938b5f3091df08f476621980b353d2366ab78e1375d119c785b92d805c40d0faf4992237811985d99ae772b0c529a1d8f SHA512 9009ad8f84bb143cb4b2369958ec42a49a8c0952c991ba9146b9a376f58bd12efb3d498cce8fe969f4b9ac276eed2b17e672c4cdeff9c2a9cb5a1702874f5b4f DIST unity-scope-zotero_0.1+13.10.20130723-0ubuntu2.diff.gz 2128 BLAKE2B 20e669412f00df77158c75393dc7313ce53b1bcb819849e7b9d99ba06b2258f1777ecfa4b12aae3d9c11c9f908c035a9667933ad2d2c999201a30df223fd9204 SHA512 a9c134978e3bbc0b2b315349d8bffc4f18eb672da971aa4454f18eb231c2591de07dc29e8745880da3bd1c5333dc2a41e16766010fb7eadb3e70dba8dd5976c6 DIST unity-scope-zotero_0.1+13.10.20130723.orig.tar.gz 19111 BLAKE2B 51357e3d7b6d76e98d3cd5b4e26e308bb2485f3942e5328d21bb41c143924bde0ffdbc6cc89e0b8b0a4a639394705be5c98cdb0396571a257ef7cdac353b9c5c SHA512 4f8f25a8ca4caf4a2772ce4f5949c480146930bc21233c203a9eb7f6e7fde81821d7cbe8b18b23d47506e8a5767e9e1fab1f97c37305a29b6f7cfcf57920aa16 -EBUILD smart-scopes-7.5.0.ebuild 7483 BLAKE2B 91ab56e3d3402adec004041ee381f247325b244e67851eb7f19623ff2981bf6cada898411895aab73a8849aa9f456365722f053d46cf6b09cc39537f4781ca92 SHA512 ad49e01488f7b15a283f55184eed180d240c5826299e03edc2ab845c7ae32216b5d96fdd9877e2918890522f58f9e4fd238dc904a2e249f7d409914d99edde7d +EBUILD smart-scopes-7.5.1.ebuild 7483 BLAKE2B 91ab56e3d3402adec004041ee381f247325b244e67851eb7f19623ff2981bf6cada898411895aab73a8849aa9f456365722f053d46cf6b09cc39537f4781ca92 SHA512 ad49e01488f7b15a283f55184eed180d240c5826299e03edc2ab845c7ae32216b5d96fdd9877e2918890522f58f9e4fd238dc904a2e249f7d409914d99edde7d MISC metadata.xml 1867 BLAKE2B c6a53a85713b713bf2d5e3d5c2b4616be81e7ef3ff484f8b80493c0bafa40e4ba3fd01616e478460c6d4047ae5088c9fc8794e6e410e7e3f917a8cad9f897763 SHA512 6c674f7be67cd7985fd5b4fbbd586c59905196674af1300e9ea4727a90d3bfb93464e5f0ac985266a94461c26cf805ef3e62eb95cb6d2782aa86542e89c6f682 MISC scopes_version_check.sh 2667 BLAKE2B 23e23277f92d10bd46946f1475ea1244f0b75aeab22056a06a7c65f89c5b7aef588130bbaeb0479e684868811ada68e0440b0d5f810b3afba03f36de6c574fa8 SHA512 6b11fbe36c08f5462f8d0c963634f91ee2e00244e038829b93eb7986d8a7a9df71397137157d9aa81e83cde6221bb08489d976dba32c75e7689d01911260cb73 diff --git a/unity-scopes/smart-scopes/smart-scopes-7.5.0.ebuild b/unity-scopes/smart-scopes/smart-scopes-7.5.1.ebuild similarity index 100% rename from unity-scopes/smart-scopes/smart-scopes-7.5.0.ebuild rename to unity-scopes/smart-scopes/smart-scopes-7.5.1.ebuild diff --git a/unity-scopes/unity-scope-home/Manifest b/unity-scopes/unity-scope-home/Manifest index bc67bfe0..80158e95 100644 --- a/unity-scopes/unity-scope-home/Manifest +++ b/unity-scopes/unity-scope-home/Manifest @@ -1,4 +1,4 @@ AUX 0002-productsearch.ubuntu.com-only-accepts-locale-string.patch 1427 BLAKE2B 863708f6cfe0af773f54226f2850a86bd45f460edcfc7c358eeb142a5588455166007a715f5bd6b41e8195f9cf6b4bd65234863bccf4698a84096e268463b851 SHA512 711a8cb2f5ba75530913f8f47990f9cbb801579026b96c39a010fa1594ee7e025dfac7d873e917e3b0d78d5cc38edadf0cd601193571e89efb477dc5fb2e1445 DIST unity-scope-home_6.8.2+19.04.20190412.orig.tar.gz 125747 BLAKE2B 5b103790a45f9668ff4c5d0d9fa67f3a92adc5697cdefc259d5bedd25339970de4af388718e8b43330d8dc5dd4c7f94f74159cccd02c0a371f95167a7d753c9f SHA512 6f71210cf4cf0a1da15705ee5cc5d3031d9529cf46fec16695ef64ffd3966ef27b3794e0e9ee37aaccd9f1eaee15bc5d0d2579ea01b11d81a3dcf0f86009d3a2 -EBUILD unity-scope-home-6.8.2_p20190412_p0_p02.ebuild 1015 BLAKE2B 996f5c084379ad2e64819991d04964a869ba7fd7d5034975ce9b38dfabad84db16527269e005823a1c2be8650bc4b141258a454e5d4fa70dece9170ef4a423c6 SHA512 05a5dcee6df68884804e2049c813faedf071386df90265044b1c5731b4269194cfe5f954bbacc0cd9475abf07b1780ee81b279fdacd035de75bbe957d88cbdb5 +EBUILD unity-scope-home-6.8.2_p20190412_p0_p02.ebuild 1014 BLAKE2B 5182c81ca4299e9fef8384129127ec4f952ff1b79333061de7ca94fd0db096fc76c2937f95bb28985316e78a824bed837ea2f56c4582a205b99dd522432d3c00 SHA512 408ac30bb3a3faf6e686d2e17d6a6cb5faa698362c360c8f406690beedb821ca9d8a82753beca764b2107faa62da6dffd91335e9caa364b73cd6883b0cb87e01 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/unity-scopes/unity-scope-home/unity-scope-home-6.8.2_p20190412_p0_p02.ebuild b/unity-scopes/unity-scope-home/unity-scope-home-6.8.2_p20190412_p0_p02.ebuild index ca61eebb..fdd4d15b 100644 --- a/unity-scopes/unity-scope-home/unity-scope-home-6.8.2_p20190412_p0_p02.ebuild +++ b/unity-scopes/unity-scope-home/unity-scope-home-6.8.2_p20190412_p0_p02.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils ubuntu-versionator vala virtualx UVER_PREFIX="+19.04.${PVR_MICRO}" diff --git a/version_check.sh b/version_check.sh index 90f65303..9d9b36f3 100755 --- a/version_check.sh +++ b/version_check.sh @@ -1,51 +1,17 @@ #!/bin/bash ## Script to compare upstream versions of packages with versions in overlay tree ## -# If run without any arguments it recurses through the overlay tree and compares versions for all packages # -# Can be run on individual packages as 'version_check.sh category/package/package-version.ebuild' # -# Or 'cd category/package && ../../version_check.sh' # local_to_upstream_packnames() { ## Overlay package names to upstream package names mapping ## - if [ -n "`echo "${packbasename}" | grep 'chromium-[0-9]'`" ]; then treepackname="${packname}"; packname="chromium-browser" - elif [ -n "`echo "${packbasename}" | grep 'fixesproto'`" ]; then treepackname="${packname}"; packname="x11proto-fixes" - elif [ -n "`echo "${packbasename}" | grep '^glib-[0-9]'`" ]; then treepackname="${packname}"; packname="glib2.0" - elif [ -n "`echo "${packbasename}" | grep 'gnome-desktop'`" ]; then treepackname="${packname}"; packname="gnome-desktop3" - elif [ -n "`echo "${packbasename}" | grep 'gobject-introspection-common'`" ]; then treepackname="${packname}"; packname="gobject-introspection" - elif [ -n "`echo "${packbasename}" | grep '^gtest'`" ]; then treepackname="${packname}"; packname="googletest" - elif [ -n "`echo "${packbasename}" | grep 'gtk+-2'`" ]; then treepackname="${packname}"; packname="gtk+2.0" - elif [ -n "`echo "${packbasename}" | grep 'gtk+-3'`" ]; then treepackname="${packname}"; packname="gtk+3.0" - elif [ -n "`echo "${packbasename}" | grep 'indicator-classicmenu'`" ]; then treepackname="${packname}"; packname="classicmenu-indicator" - elif [ -n "`echo "${packbasename}" | grep 'indicator-evolution'`" ]; then treepackname="${packname}"; packname="evolution-indicator" + if [ -n "`echo "${packbasename}" | grep 'indicator-evolution'`" ]; then treepackname="${packname}"; packname="evolution-indicator" elif [ -n "`echo "${packbasename}" | grep 'indicator-psensor'`" ]; then treepackname="${packname}"; packname="psensor" - elif [ -n "`echo "${packbasename}" | grep 'libXfixes'`" ]; then treepackname="${packname}"; packname="libxfixes" - elif [ -n "`echo "${packbasename}" | grep 'libXi'`" ]; then treepackname="${packname}"; packname="libxi" - elif [ -n "`echo "${packbasename}" | grep 'lttng-tools'`" ]; then treepackname="${packname}"; packname="ltt-control" - elif [ -n "`echo "${packbasename}" | grep 'lttng-ust'`" ]; then treepackname="${packname}"; packname="ust" elif [ -n "`echo "${packbasename}" | grep 'nm-applet'`" ]; then treepackname="${packname}"; packname="network-manager-applet" - elif [ -n "`echo "${packbasename}" | grep 'polkit-gnome'`" ]; then treepackname="${packname}"; packname="policykit-1-gnome" - elif [ -n "`echo "${packbasename}" | grep 'qt3d'`" ]; then treepackname="${packname}"; packname="qt3d-opensource-src" - elif [ -n "`echo "${packbasename}" | grep 'qtcore'`" ]; then treepackname="${packname}"; packname="qtbase-opensource-src" - elif [ -n "`echo "${packbasename}" | grep 'qtdeclarative'`" ]; then treepackname="${packname}"; packname="qtdeclarative-opensource-src" - elif [ -n "`echo "${packbasename}" | grep 'qtfeedback'`" ]; then treepackname="${packname}"; packname="qtfeedback-opensource-src" - elif [ -n "`echo "${packbasename}" | grep 'qtgui'`" ]; then treepackname="${packname}"; packname="qtbase-opensource-src" - elif [ -n "`echo "${packbasename}" | grep 'qtmultimedia'`" ]; then treepackname="${packname}"; packname="qtmultimedia-opensource-src" - elif [ -n "`echo "${packbasename}" | grep 'qtpim'`" ]; then treepackname="${packname}"; packname="qtpim-opensource-src" - elif [ -n "`echo "${packbasename}" | grep 'qtwebkit'`" ]; then treepackname="${packname}"; packname="qtwebkit-opensource-src" - elif [ -n "`echo "${packbasename}" | grep 'telepathy-mission-control'`" ]; then treepackname="${packname}"; packname="telepathy-mission-control-5" - elif [ -n "`echo "${packbasename}" | grep 'ubuntu-sources'`" ]; then treepackname="${packname}"; packname="linux" - elif [ -n "`echo "${packbasename}" | grep 'userspace-rcu'`" ]; then treepackname="${packname}"; packname="liburcu" - elif [ -n "`echo "${packbasename}" | grep 'webapps-base'`" ]; then treepackname="${packname}"; packname="webapps-applications" - elif [ -n "`echo "${packbasename}" | grep 'webapps-greasemonkey'`" ]; then treepackname="${packname}"; packname="webapps-greasemonkey" - elif [ -n "`echo "${packbasename}" | grep '^webapps'`" ]; then treepackname="${packname}"; packname="webapps-applications" - elif [ -n "`echo "${packbasename}" | grep 'xf86-video-ati'`" ]; then treepackname="${packname}"; packname="xserver-xorg-video-ati" - elif [ -n "`echo "${packbasename}" | grep 'xf86-video-intel'`" ]; then treepackname="${packname}"; packname="xserver-xorg-video-intel" - elif [ -n "`echo "${packbasename}" | grep 'xf86-video-nouveau'`" ]; then treepackname="${packname}"; packname="xserver-xorg-video-nouveau" elif [ -n "`echo "${packbasename}"`" ]; then treepackname="${packname}" fi } -RELEASES="hirsute hirsute-security hirsute-updates impish impish-security impish-updates" +RELEASES="impish jammy" SOURCES="main universe" sources_download() { @@ -54,28 +20,82 @@ sources_download() { # Use 'find -mmin +1440' as 'find -mtime +1' has strange rounding where it won't return results until file is at least 2 days old # [[ -n $(find /tmp -type f -mmin +1440 2> /dev/null | grep Sources-) ]] && rm /tmp/Sources-* 2> /dev/null for get_release in ${RELEASES}; do - for source in ${SOURCES}; do - if [ ! -f /tmp/Sources-${source}-${get_release} ]; then - echo - wget http://archive.ubuntu.com/ubuntu/dists/${get_release}/${source}/source/Sources.gz -O /tmp/Sources-${source}-${get_release}.gz || exit 1 - gunzip -v /tmp/Sources-${source}-${get_release}.gz || exit 1 - touch /tmp/Sources-${source}-${get_release} - fi + for get_full_release in "${get_release}" "${get_release}"-security "${get_release}"-updates; do + for source in ${SOURCES}; do + if [ ! -f /tmp/Sources-${source}-${get_full_release} ]; then + wget -q http://archive.ubuntu.com/ubuntu/dists/${get_full_release}/${source}/source/Sources.gz -O /tmp/Sources-${source}-${get_full_release}.gz || exit 1 + gunzip -q /tmp/Sources-${source}-${get_full_release}.gz || exit 1 + touch /tmp/Sources-${source}-${get_full_release} + fi + done done done } +color_blink=$(tput blink) +color_green=$(tput bold; tput setaf 2) +color_norm=$(tput sgr0) +color_red=$(tput bold; tput setaf 1) + version_check() { local_to_upstream_packnames - if [ -n "${stream_release}" ]; then - version_check_other_releases - else + sources_download + for ebuild in $(find -name "*.ebuild" 2> /dev/null | grep /"${catpack}"/); do + URELEASE= + pack="${ebuild}" + packbasename=$(basename ${pack} | awk -F.ebuild '{print $1}') + packname=$(echo ${catpack} | awk -F/ '{print $2}') local_version_check - upstream_version_check ${URELEASE} - version_compare - fi -} + [ -z "${current}" ] && return || local_versions+=( " ${current} :: ${URELEASE}" ) + done + local_versions_output=$(IFS=$'\n'; echo "${local_versions[*]}" | sort -k3) + for get_release in ${RELEASES}; do + for release in "${get_release}" "${get_release}"-security "${get_release}"-updates; do + for ebuild in $(find -name "*.ebuild" 2> /dev/null | grep /"${catpack}"/ | sort); do + pack="${ebuild}" + packbasename=$(basename ${pack} | awk -F.ebuild '{print $1}') + packname=$(echo ${catpack} | awk -F/ '{print $2}') + local_to_upstream_packnames + checkmsg_supress=1 + upstream_version_check ${release} + checkmsg_supress= + if [ -n "${upstream_version}" ]; then + if [ -z "$(echo "${upstream_versions[@]}" | grep "${packname}-${upstream_version}")" ]; then + # Only add new release element if not already present + upstream_versions+=( " ${packname}-${upstream_version} :: ${release}" ) + fi + else + if [ -z "$(echo "${upstream_versions[@]}" | grep "${release}"$)" ] && \ + [ -n "${URELEASE}" ]; then + upstream_versions+=( " (none available) :: ${release}" ) + fi + fi + done + done + done + index=0 + while [ "$index" -lt ${#upstream_versions[@]} ]; do + upstream_versions_namespace_stripped=$(echo ${upstream_versions[$index]} | awk 'match($0, /-([0-9].*)/, a) {print a[1]}' | sed 's/[ ]//g') + local_versions_whitespace_stripped=$(echo ${local_versions[@]} | sed 's/[ ]//g') + compare_versions_stripped=$(echo ${local_versions_whitespace_stripped} | grep "${upstream_versions_namespace_stripped}") + upstream_release=$(echo ${upstream_versions[$index]} | awk '{print $3}') + if [ -z "${compare_versions_stripped}" ] && [ -z "$(echo ${upstream_versions[$index]} | grep "none available")" ] && [ -n "${URELEASE}" ]; then + result+=( "Package ${catpack}" ) + result+=( " Local versions:" ) + result+=( "${local_versions_output}" ) + result+=( " Upstream versions:" ) + result+=( "${color_red}${upstream_versions[$index]}${color_norm}" ) + result+=( "" ) + fi + ((index++)) + done + unset local_versions + unset upstream_versions + index= + current= + release= +} local_version_check() { packbasename_saved="${packbasename}" # Save off $packbasename for when uver() loops # @@ -100,7 +120,6 @@ local_version_check() { UVER_SUFFIX= } - upstream_version_check() { upstream_version= if [ -n "$1" ]; then @@ -110,134 +129,12 @@ upstream_version_check() { [[ -z "${upstream_version}" ]] && upstream_version=`grep -A6 "Package: ${packname}$" /tmp/Sources-universe-$1 2> /dev/null | sed -n 's/^Version: \(.*\)/\1/p' | sed 's/[0-9]://g'` [[ -z "${upstream_version}" ]] && upstream_version=`grep -A6 "Package: ${packname}$" /tmp/Sources-main-$1 2> /dev/null | sed -n 's/^Version: \(.*\)/\1/p' | sed 's/[0-9]://g'` [[ -z "${upstream_version}" ]] && upstream_version=`grep -A6 "Package: ${packname}$" /tmp/Sources-universe-$1 2> /dev/null | sed -n 's/^Version: \(.*\)/\1/p' | sed 's/[0-9]://g'` - [ -n "${upstream_version}" ] && [ -z "${CHANGES}" ] && [ -z "${checkmsg_supress}" ] && \ - echo -e "\nChecking ${packname} :: $1" - fi -} - - -version_compare() { - current_version=`echo "${current}" | sed "s/^\${treepackname}-//"` - if [ "${current_version}" = "${upstream_version}" ]; then - [ -n "${CHANGES}" ] && return - if [ -n "${stream_release}" ]; then - if [ -n "`grep "${stream_release}-updates" ${pack}`" ]; then - echo " Local version: ${current} :: ${stream_release}" - echo " Upstream version: ${packname}-${upstream_version} :: ${stream_release}" - else - echo " Local version: ${current} :: ${stream_release}" - echo " Upstream version: ${packname}-${upstream_version} :: ${stream_release}" - fi - else - echo " Local version: ${current} :: ${URELEASE}" - echo " Upstream version: ${packname}-${upstream_version} :: ${URELEASE}" - fi - else - if [ -n "${upstream_version}" ]; then - echo " Local version: ${current} :: ${URELEASE}" - echo -e " Upstream version: \033[1;31m${packname}-${upstream_version}\033[0m :: ${URELEASE}" - fi - fi -} - - -version_check_other_releases() { - if [ -n "${stream_release}" ]; then - if [ "${stream_release}" = all ]; then - sources_download - echo "Checking ${catpack}" - echo " Local versions:" - for ebuild in $(find $(pwd) -name "*.ebuild" 2> /dev/null | grep /"${catpack}"/); do - URELEASE= - pack="${ebuild}" - packbasename=$(basename ${pack} | awk -F.ebuild '{print $1}') - packname=$(echo ${catpack} | awk -F/ '{print $2}') - local_version_check - if [ -z "${current}" ]; then - echo " ${packbasename}" - else - local_versions+=( " ${current} :: ${URELEASE}" ) - fi - done - local_versions_output=$(IFS=$'\n'; echo "${local_versions[*]}" | sort -k3) - echo "${local_versions_output}" - - if [ -n "${URELEASE}" ]; then - echo " Upstream versions:" - else - echo " No URELEASE found in ebuild, not tracking upstream versions!" - fi - for release in ${RELEASES}; do - for ebuild in $(find $(pwd) -name "*.ebuild" 2> /dev/null | grep /"${catpack}"/ | sort); do - pack="${ebuild}" - packbasename=$(basename ${pack} | awk -F.ebuild '{print $1}') - packname=$(echo ${catpack} | awk -F/ '{print $2}') - local_to_upstream_packnames - checkmsg_supress=1 - upstream_version_check ${release} - checkmsg_supress= - if [ -n "${upstream_version}" ]; then - if [ -z "$(echo "${upstream_versions[@]}" | grep "${packname}-${upstream_version}")" ]; then - # Only add new release element if not already present - upstream_versions+=( " ${packname}-${upstream_version} :: ${release}" ) - fi - else - if [ -z "$(echo "${upstream_versions[@]}" | grep "${release}"$)" ] && \ - [ -n "${URELEASE}" ]; then - upstream_versions+=( " (none available) :: ${release}" ) - fi - fi - done - done - index=0 - while [ "$index" -lt ${#upstream_versions[@]} ]; do - upstream_versions_namespace_stripped=$(echo ${upstream_versions[$index]} | awk 'match($0, /-([0-9].*)/, a) {print a[1]}' | sed 's/[ ]//g') - local_versions_whitespace_stripped=$(echo ${local_versions[@]} | sed 's/[ ]//g') - compare_versions_stripped=$(echo ${local_versions_whitespace_stripped} | grep "${upstream_versions_namespace_stripped}") - upstream_release=$(echo ${upstream_versions[$index]} | awk '{print $3}') - if [ -n "${compare_versions_stripped}" ] || [ -n "$(echo ${upstream_versions[$index]} | grep "none available")" ]; then - echo -e "${upstream_versions[$index]}" - elif [ -n "${URELEASE}" ]; then - echo -e "\033[1;31m${upstream_versions[$index]}\033[0m" - fi - ((index++)) - done - unset local_versions - unset upstream_versions - index= - current= - release= - echo - else - if [ -z "`grep ${stream_release} ${pack} | grep URELEASE`" ]; then # Skip over packages that don't contain the queried release # - return - else - local_version_check - upstream_version_check ${URELEASE} - version_compare - fi - fi fi } - uver() { - [[ "${URELEASE}" == *trusty* ]] && UVER_RELEASE="14.04" - [[ "${URELEASE}" == *utopic* ]] && UVER_RELEASE="14.10" - [[ "${URELEASE}" == *vivid* ]] && UVER_RELEASE="15.04" - [[ "${URELEASE}" == *wily* ]] && UVER_RELEASE="15.10" - [[ "${URELEASE}" == *xenial* ]] && UVER_RELEASE="16.04" - [[ "${URELEASE}" == *yakkety* ]] && UVER_RELEASE="16.10" - [[ "${URELEASE}" == *zesty* ]] && UVER_RELEASE="17.04" - [[ "${URELEASE}" == *artful* ]] && UVER_RELEASE="17.10" - [[ "${URELEASE}" == *bionic* ]] && UVER_RELEASE="18.04" - [[ "${URELEASE}" == *cosmic* ]] && UVER_RELEASE="18.10" - [[ "${URELEASE}" == *disco* ]] && UVER_RELEASE="19.04" - [[ "${URELEASE}" == *eoan* ]] && UVER_RELEASE="19.10" - [[ "${URELEASE}" == *focal* ]] && UVER_RELEASE="20.04" - [[ "${URELEASE}" == *groovy* ]] && UVER_RELEASE="20.10" - [[ "${URELEASE}" == *hirsute* ]] && UVER_RELEASE="21.04" - [[ "${URELEASE}" == *impish* ]] && UVER_RELEASE="21.10" + [[ "${URELEASE}" == "impish"* ]] && UVER_RELEASE="21.10" + [[ "${URELEASE}" == "jammy"* ]] && UVER_RELEASE="22.04" PVR=`echo "${packbasename}" | sed -e 's/.*-\([0-9]\)/\1/' -e 's:-r[0-9].*$::g'` PVR="_${PVR#*_}" @@ -322,56 +219,20 @@ uver() { [[ -n "${strarray[@]}" ]] && unset 'strarray[@]' } -while (( "$#" )); do - case $1 in - --changes) - CHANGES=1 && shift;; - --release=*) - stream_release=`echo "$1" | sed 's/--release=/ /' | sed 's/^[ \t]*//'` && shift;; - --help|-h) - echo -e "$0 (--release=|all) (--changes) (category/package/package-version.ebuild)"; exit 0;; - *) - pack="$1" && shift;; - esac +printf "%s" "Looking for available version changes${color_blink}...${color_norm}" +for catpack in `find -name "*.ebuild" | awk -F/ '{print ( $(NF-2) )"/"( $(NF-1) )}' 2> /dev/null | sort -du | grep -Ev "eclass|metadata|profiles"`; do + [[ ${catpack} == "unity-base/ubuntu-docs" ]] && continue + [[ ${catpack} == "unity-extra/indicator-evolution" ]] && continue + packname=`echo ${catpack} | awk -F/ '{print $2}'` + version_check done +printf "\b\b\b%s\n\n" "... done!" -if [ "${stream_release}" = "all" ]; then - for catpack in `find $(pwd) -name "*.ebuild" | awk -F/ '{print ( $(NF-2) )"/"( $(NF-1) )}' 2> /dev/null | sort -du | grep -Ev "eclass|metadata|profiles"`; do - packname=`echo ${catpack} | awk -F/ '{print $2}'` - version_check +if [[ -n "${result[@]}" ]]; then + for x in "${result[@]}"; do + printf "%s\n" "${x}" done -elif [ -n "${pack}" ]; then - packbasename=`basename ${pack} | awk -F.ebuild '{print $1}'` - packname=`echo ${pack} | awk -F/ '{print ( $(NF-1) )}' | sed 's:-[0-9].*::g'` - version_check else - for pack in `find $(pwd) -name "*.ebuild" 2> /dev/null`; do - packbasename=`basename ${pack} | awk -F.ebuild '{print $1}'` - packname=`echo ${pack} | awk -F/ '{print ( $(NF-1) )}'` - version_check - done - if [ -z "${stream_release}" ]; then - ## Check versions in meta type ebuilds that install from multiple sources ## - if [ -d "$(pwd)/unity-base/unity-language-pack" ]; then - pushd $(pwd)/unity-base/unity-language-pack - [ -n "${CHANGES}" ] && \ - ./lang_version_check.sh --changes || \ - ./lang_version_check.sh - popd - fi - if [ -d "$(pwd)/unity-base/webapps" ]; then - pushd $(pwd)/unity-base/webapps - [ -n "${CHANGES}" ] && \ - ./webapps_version_check.sh --changes || \ - ./webapps_version_check.sh - popd - fi - if [ -d "$(pwd)/unity-scopes/smart-scopes" ]; then - pushd $(pwd)/unity-scopes/smart-scopes - [ -n "${CHANGES}" ] && \ - ./scopes_version_check.sh --changes || \ - ./scopes_version_check.sh - popd - fi - fi + echo " ${color_green}*${color_norm} No changes found" + echo fi diff --git a/x11-libs/dee-qt/Manifest b/x11-libs/dee-qt/Manifest index b6442f42..93d347f9 100644 --- a/x11-libs/dee-qt/Manifest +++ b/x11-libs/dee-qt/Manifest @@ -1,4 +1,4 @@ DIST dee-qt_3.3+14.04.20140317-0ubuntu4.diff.gz 4513 BLAKE2B 742183f0bdcdce1971e9f86c8ce5cb51e2be4dfc7578f74dc12263effb10784dfa7bf7f2b0433dbec0eb8b38b5ed869a90b932860aa5123f14479a1fa915d8e2 SHA512 6a096428716986dd275f142f07eccedfcc1665a11f353e7c46388338b152cc683e11c8198136f70dff9b65223b3a38badd6f851ade7909ee2e998637ebe3925b DIST dee-qt_3.3+14.04.20140317.orig.tar.gz 25501 BLAKE2B e465617995fd0b7444df408da331b61b75e13b18518500d93e311092c9b0fc4d0665b61adb617fe00a6dbac16c8c353b04e682e1c33734f581a8d674752c2212 SHA512 a17968ff3775252f12c72a54b442e852668dfbe197c8a19299669adfc79a24913559315086210a2fd1251a203147fb20a26901cc63afc07fa56a01074664a1f2 -EBUILD dee-qt-3.3_p20140317_p0_p04.ebuild 1338 BLAKE2B a873f005e688da8cb6aa2158389ae10b09c883e8d78bfd3e942f8d66c74e58dddd4e376ee4e9a749ad2668f9646bd7d3735b94bcd26f61524fbdab24ceb41103 SHA512 87587b16422d1b8c586b7942f61f17b5486fe2908c20fb0b858f976e494b3e120308ffe7b85ce392f4e29268b38ff1d24ea7398485d27510a52583b775ce02cd +EBUILD dee-qt-3.3_p20140317_p0_p04.ebuild 1337 BLAKE2B 829566e2e5970b8205bdfd9b3625f38bf25c5e41c858da76033010820059ef73a1aa6a32a0a498053a6decbe10822fe6124078fac8909ee78acc25f2e6b8520e SHA512 f53698dcfe7b58330b738a87202b385e300eb7144bac012d5de248d10e4bebbb495281e8d6c0982d1b6fb7e72e28d3070ac64ed2a100499d1375bf746677bda9 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/x11-libs/dee-qt/dee-qt-3.3_p20140317_p0_p04.ebuild b/x11-libs/dee-qt/dee-qt-3.3_p20140317_p0_p04.ebuild index 4f181847..d5aa49c7 100644 --- a/x11-libs/dee-qt/dee-qt-3.3_p20140317_p0_p04.ebuild +++ b/x11-libs/dee-qt/dee-qt-3.3_p20140317_p0_p04.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit cmake-utils ubuntu-versionator UVER_PREFIX="+14.04.${PVR_MICRO}" diff --git a/x11-libs/gsettings-qt/Manifest b/x11-libs/gsettings-qt/Manifest index 7b5e0c4f..39708b5d 100644 --- a/x11-libs/gsettings-qt/Manifest +++ b/x11-libs/gsettings-qt/Manifest @@ -1,4 +1,4 @@ DIST gsettings-qt_0.2-4.debian.tar.xz 9504 BLAKE2B c32fe40e8bd9e0b2b3d131c61c869df081e27148530c9f1a56e68c1747d9a777413d45f1546618fc81fb2640671809f2a0fd31ae00ec72108dfd50c0f21a87d0 SHA512 f71ddb0db9b3853c57458898619b0a61f1766e772e1779c7041de49d648e4f8ffb26bab936c79f6f6ef450f47a4e5151424676f5669f506f082ccc84de084a22 DIST gsettings-qt_0.2.orig.tar.gz 18898 BLAKE2B 37db344213a9745e10ecf390c1e893798ca5465337b96edd97857712bd1209a9126ace74f8ee0c8955a7159d74611c7393fc380ef371a92aae3eb73ef54576c6 SHA512 69ce30da732a0325b7fb588a38bfa99f36988d3aefd654b5cda88ab1a5644fca7df04561ca61baf102830052f8b22417af393915ee5efd7681cc7be15f48f2bd -EBUILD gsettings-qt-0.2_p_p_p04.ebuild 1095 BLAKE2B 833d90def102e59619b22f85d8c50a45263fa1e5c2a4d6de1a4857bea440ea41a8f6b29e01e5049152aa9b5fc15d2ab2b7a21d9e36583a5e8f5d4b01031ea628 SHA512 4632cf23fdd0e14cfb9f405c532f9fed64eb6c6c369a14c8142b907a6d96db60e27f58b27c1e2dfbab6f26be0e65c3a19436c1b48808f96b72207416eab687f5 +EBUILD gsettings-qt-0.2_p_p_p04.ebuild 1094 BLAKE2B 92346cd8d7ba469df492ebf9697c272180399cd20494f66eb45756e1f569fde19732e68a86441fa66fb86d2218444be49ddb8f0c526a5bbb396b662a68df3ea3 SHA512 a8ade9f3467d5d108d8e95a3716e700a7267ecf3e8af038b8f7c6b68102c789170cc31bff50fd60d65321d4b1ecf41671aeeb00efa7621c7a8c9e3bf546341ca MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/x11-libs/gsettings-qt/gsettings-qt-0.2_p_p_p04.ebuild b/x11-libs/gsettings-qt/gsettings-qt-0.2_p_p_p04.ebuild index 57bfff54..161c7e4d 100644 --- a/x11-libs/gsettings-qt/gsettings-qt-0.2_p_p_p04.ebuild +++ b/x11-libs/gsettings-qt/gsettings-qt-0.2_p_p_p04.ebuild @@ -4,7 +4,7 @@ EAPI=7 MY_PV=${PV} -URELEASE="hirsute" +URELEASE="impish" inherit qmake-utils ubuntu-versionator UVER="-${PVR_PL_MINOR}" diff --git a/x11-misc/gtk3-nocsd/Manifest b/x11-misc/gtk3-nocsd/Manifest index 72c65cbb..706f0704 100644 --- a/x11-misc/gtk3-nocsd/Manifest +++ b/x11-misc/gtk3-nocsd/Manifest @@ -1,5 +1,5 @@ AUX gtk3-nocsd-v4.patch 9483 BLAKE2B d6b9e025fbf588958669d3cd9cff37072482245f6c8e854d5fb4ddb9e19e990cfd1f8ce9ad2216acc373ae2203281111543b2bdfd9eaad79687cb5706ff359cb SHA512 eb87c9fc1abd02f4b998b27c15bc60da3e077187b44a9ea75772a79ff2fa203fb63610e79cacedaf924e50768966a5baef05c66ac1e68dddeb7208c570e3164f DIST gtk3-nocsd_3-1ubuntu1.debian.tar.xz 5776 BLAKE2B 1a91a5d9a0aecc6b43f2b88e11e20df2557730d79ec676caf3698e7e11132b4e445d244adfd3860d936ffde0f9e615195b71f566a54a60330e47e2fe78109f53 SHA512 17cd045890d68a92ff621a534a275330875d3b316fe336a265404c1ef096b72615afc5219a99ae65855549b7897703c830d17bf85a36e2b0a03e95040b4e4dd6 DIST gtk3-nocsd_3.orig.tar.gz 69264 BLAKE2B 354e63224827e47b1699c246418b3b344335a9410da11496e4735dad9dcce532ed997f0fcf852d017dea64d367d890f465a29fcdb96d354888389ffad905f868 SHA512 f5448a73dc1d577336eb83d9ae8457e2cc9846fe5990338e8608325083a6449cd066b31313c22c4d2742a443ccf042007f2aacf4d271ad7f6680e807127e6684 -EBUILD gtk3-nocsd-3_p_p1_p01.ebuild 1352 BLAKE2B c6099bd12064e907990ebaf42b7a4e1d39ccba44e1ea0b0b1174979bba3fbd7bf8e139f602964e53efaf763c2f832e50088fc675af23457b507ec0f7a0201650 SHA512 46dd99550c5c5445588493fd51af3b137df34642b0e069fd8feee321787c6a3f3cfc93c85b078a6d3727947125e07e15044b644b7f9ec1e2f0555d298c5f0290 +EBUILD gtk3-nocsd-3_p_p1_p01.ebuild 1351 BLAKE2B 897eb84878946962ce5c8fffea3e8b442a2f114b2c1829bbc0f323f69beae71e7d078b8b5944623b1a56eb85d4c3768f236a4ecafec4c91525efb35d0ceb4a4b SHA512 54b16edb3135848c5e7c7015db7432e2c36234cf0802eddb053cc3441d0060b41c97b3d79336d9bd497b4d079dbeba4d95f12ab20ebb0784c922e1d03e5c1823 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/x11-misc/gtk3-nocsd/gtk3-nocsd-3_p_p1_p01.ebuild b/x11-misc/gtk3-nocsd/gtk3-nocsd-3_p_p1_p01.ebuild index ae93594e..1fda7bd9 100644 --- a/x11-misc/gtk3-nocsd/gtk3-nocsd-3_p_p1_p01.ebuild +++ b/x11-misc/gtk3-nocsd/gtk3-nocsd-3_p_p1_p01.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools eutils ubuntu-versionator DESCRIPTION="Disable Gtk+ 3 client side decorations (CSD)" diff --git a/x11-misc/notify-osd/Manifest b/x11-misc/notify-osd/Manifest index 41e5a69b..5c2be19f 100644 --- a/x11-misc/notify-osd/Manifest +++ b/x11-misc/notify-osd/Manifest @@ -1,4 +1,4 @@ AUX notify-osd.desktop 184 BLAKE2B 0107f4378a753ca53efa90685f720a13c9a7759a79fbcd4ad1eb325dc68c71125a2f9e368f70519499092d57c057e8429375ef5663273c6cfd549ea4444269ef SHA512 c08a3f74e4719b429523a692bda9294561e1920f80fba6f807dd081c8930eee020fe8891bb3de2c08ab111eaa35bd5f1f20d4c8b7a9979145d1346a71bd88453 DIST notify-osd_0.9.35+20.04.20191129.orig.tar.gz 260651 BLAKE2B 719d6c62c7bd0e14996acb03d0f1703b9a9ad7adf717a92403c9e0fd571c0d2c5fe58e1b7c2f1f47d7cf6d43524b0d3b5708875fb275486a6d286d77520f5f1d SHA512 1f2392f0e83a9577ea31edad01faee5d9f2078a776f9cca8ecee8689327bdbdae438592047c3aaf22863c3a3dacb6a5a1b7152b605aeab7b5efb78ec7c7276f9 -EBUILD notify-osd-0.9.35_p20191129_p0_p01.ebuild 2760 BLAKE2B 4a1fff4678ade7d402f425e222223a703c7a4d3b05de9fd4ee01df54932b1e339528a33969e91e53a6b9c30d20b32314ee18a004e24bd3b6beec1a9e893fde3b SHA512 6cd2982b591b551e7d09dffd60722bf1e7a97ccdf980c7532e419ec832fb4d73bcacc4afd66cf3c30536f5b4de654c7ae421abae46067b045287f1918f87a367 +EBUILD notify-osd-0.9.35_p20191129_p0_p01.ebuild 2759 BLAKE2B 89cc6a645d746a682fb092e5f48f9fc4d00077aeb2bae16fcfe269670ee3d6558d1a082f389e27774f2592f612c6636cb9c455f40f8111d5d50145e1a77f0a54 SHA512 77882d53f8cd8621c663504f1992a1485b3585dcccc8e7f0304b1114957e1d4d03bfade45bfc235db1a121c1ff93f4f6fe330856b04ae9a2c0d86bd02c4283d7 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/x11-misc/notify-osd/notify-osd-0.9.35_p20191129_p0_p01.ebuild b/x11-misc/notify-osd/notify-osd-0.9.35_p20191129_p0_p01.ebuild index ec58a411..006e2026 100644 --- a/x11-misc/notify-osd/notify-osd-0.9.35_p20191129_p0_p01.ebuild +++ b/x11-misc/notify-osd/notify-osd-0.9.35_p20191129_p0_p01.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit autotools gnome2-utils multilib savedconfig ubuntu-versionator xdg-utils UVER_PREFIX="+20.04.${PVR_MICRO}" diff --git a/x11-plugins/mailnag-messagingmenu-plugin/Manifest b/x11-plugins/mailnag-messagingmenu-plugin/Manifest index a90c9a31..9c27fbd3 100644 --- a/x11-plugins/mailnag-messagingmenu-plugin/Manifest +++ b/x11-plugins/mailnag-messagingmenu-plugin/Manifest @@ -1,3 +1,3 @@ DIST mailnag-messagingmenu-plugin-1.2.0.tar.gz 10787 BLAKE2B d97403145d7446f4e346e1eccb9a722468ff20c019188e328df71f1f8e32c39cea295057abcd81d7b6e56544af74c3490350cdf48f601d4f0d8a9a374deeb001 SHA512 7da8992063e285c3eb87bf0580ec15960bc2cb1f5943dcfb9e63da468a8bccff4b0c6ec2953a94b0cbf593418d96e8a2fd7f5300b2fd54d7c2605d04647a7906 -EBUILD mailnag-messagingmenu-plugin-1.2.0.ebuild 668 BLAKE2B de58aead11c535e7257faae58e9540e0d17051edc154a8bcd56ba60f4b215f18ff66bc0b6f5886bdfc0623cc9f7c143edb6e3081f6e052a174ebfbf3d9c0efcb SHA512 7e58eec856040f840ada6136f0b1a18b95e19aeccf1b6154e3c624bd010017131435ccabb37a5b018642f76ab5999c0c03bc65e0a29926eeca1e2a267ae2ba4b +EBUILD mailnag-messagingmenu-plugin-1.2.0.ebuild 678 BLAKE2B d0a5c25c1ccdac42015223db785525f3e8ad560df4a6d95eb028c95c93b59be255770da610f4fd52f3ccb90c913c6e9724219f3ffb5e161385835d7b5ad7d86e SHA512 3272cfe25682aee817670c955f7f1025b0880196f1807bc7932e47ccb339f303633a042007d3a557b169e76b9768666356993be7510c8ac15c11e2705694fb20 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/x11-plugins/mailnag-messagingmenu-plugin/mailnag-messagingmenu-plugin-1.2.0.ebuild b/x11-plugins/mailnag-messagingmenu-plugin/mailnag-messagingmenu-plugin-1.2.0.ebuild index bc0a81cd..e14adacc 100644 --- a/x11-plugins/mailnag-messagingmenu-plugin/mailnag-messagingmenu-plugin-1.2.0.ebuild +++ b/x11-plugins/mailnag-messagingmenu-plugin/mailnag-messagingmenu-plugin-1.2.0.ebuild @@ -19,9 +19,10 @@ SLOT="0" IUSE="" RESTRICT="mirror" -BDEPEND=">=net-mail/mailnag-2.0.0 - unity-indicators/indicator-messages" +BDEPEND="unity-indicators/indicator-messages" RDEPEND="${BDEPEND}" +PDEPEND=">=net-mail/mailnag-2.0.0" + S="${WORKDIR}/${PN}-${COMMIT}" diff --git a/x11-themes/humanity-icon-theme/Manifest b/x11-themes/humanity-icon-theme/Manifest index 163bcc29..0a02f6cd 100644 --- a/x11-themes/humanity-icon-theme/Manifest +++ b/x11-themes/humanity-icon-theme/Manifest @@ -1,3 +1,3 @@ DIST humanity-icon-theme_0.6.15.tar.xz 1755216 BLAKE2B ffccabfc65ee1351b59b909436685e41c452cd959810064135aa64fba089a700af80f907bf386f070abc967bdcd30ba2089eeaec084c5fc03885a40a24be4f5b SHA512 dbdd94b03ebe132d193024d1c791b6fa0dd333f3d476954f8628dba8ef8e4cee8ca21e5d769de3f72b0b0d1054e1d4a610532e9d113da5323a14bb6752be9a66 -EBUILD humanity-icon-theme-0.6.15.ebuild 761 BLAKE2B 481436e5a0458daaee142247f5a127e6d60d2a8216a23259113337b0f3012996b2bb279024e65638d98e2691baddddd517c14942bec896b08dae451c5e143224 SHA512 d796551ef3ea5e8ece47b3ec82ca7c81c8db1ad5300c6270d8c25f434d0bdbca7a009490b08b467256e370781b61274fc159b05ffef4068cec7c643a881b0556 +EBUILD humanity-icon-theme-0.6.15.ebuild 760 BLAKE2B 8efc92662e8115f806455a2f709fa8a34787a0156f81ef6401f86178c37bd63c5076ceaa11d9846f65f352ef5311742428dea3d00b7a9a00965cd280f9c9b7d8 SHA512 4af4d2f4ed5e987d244bc02857ccdc0f2e1b3c4758fd5bd232ec283fbbee24b0c289a3870c41b86e72fc32b38e9cd3c430187b2fc11a67e278523dcf4069c13b MISC metadata.xml 305 BLAKE2B 1284665c885414d818d0d1d64d4995f4081547c9dd8882a000032273083fef76ccbd7e1f0ad6ff1bbe653b8e9d8edd15b97298166def8a7fd987f69c030e1bdc SHA512 3e62381f8e6077d6a1770ffac9cd636f205c3ee28f9e2c0f0dd4814b7fa88a88895e2251c7d5a98dc68eb4b19119e5da5fe275395a3cdd1f0aad68a3f39e6e86 diff --git a/x11-themes/humanity-icon-theme/humanity-icon-theme-0.6.15.ebuild b/x11-themes/humanity-icon-theme/humanity-icon-theme-0.6.15.ebuild index 2709c50d..5541a292 100644 --- a/x11-themes/humanity-icon-theme/humanity-icon-theme-0.6.15.ebuild +++ b/x11-themes/humanity-icon-theme/humanity-icon-theme-0.6.15.ebuild @@ -4,7 +4,7 @@ EAPI=6 inherit gnome2-utils ubuntu-versionator xdg-utils -URELEASE="hirsute" +URELEASE="impish" UVER= DESCRIPTION="A nice and well polished icon theme" diff --git a/x11-themes/notify-osd-icons/Manifest b/x11-themes/notify-osd-icons/Manifest index e42de8b6..1e1e55d2 100644 --- a/x11-themes/notify-osd-icons/Manifest +++ b/x11-themes/notify-osd-icons/Manifest @@ -1,3 +1,3 @@ DIST notify-osd-icons_0.8+15.10.20151016.2.orig.tar.gz 563268 BLAKE2B 7750794d922b6dcc76d39438866c4b9d4039bbf0dff9189970220634d30b46322639a84f2eb6f3090afdd9776abba7a7ad0acd85ddc6055f65265857b7486e68 SHA512 2817db8b1000d735ca6013d3fb56ed54e3015ba8d730e7bb6dbc5a3c9481018102b57fe75c2ec4df3e0f04561d19ae49173e6e9e282f3ea0e6b97d83ff37f836 -EBUILD notify-osd-icons-0.8_p2015101602_p0_p03.ebuild 994 BLAKE2B 14c14bd49c4c870b9748ffb4a56e16a44ca05bec6569b863ae911d853e5e3d24431e6ae8b88d0c2292981ad8c19113a034607f2c22bb5d36ea5b20a976196c79 SHA512 57af2d1599655513ed46f2a49d1895928f004bd356bba5d37ec3c4d6df66448c20ab14e0f75981c1a53e00882d5c1a7941ecd20422ff784fe0699807028a90b4 +EBUILD notify-osd-icons-0.8_p2015101602_p0_p03.ebuild 993 BLAKE2B 7dac74d1c129f75924f759bc5f599098471f5a8af9c143513f2614b307edec4e3723fc4e3eda423cd54afc10138b6d48622be839fccba65a05a112dfccee8bc6 SHA512 17fb49d1f3003c082049b9fe6fb296fe292e59bfe987b2147b5b672285cfe7c3b8499eb12670289e15be5aada75186890c97868a3521fc63053209fde7d36ef1 MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/x11-themes/notify-osd-icons/notify-osd-icons-0.8_p2015101602_p0_p03.ebuild b/x11-themes/notify-osd-icons/notify-osd-icons-0.8_p2015101602_p0_p03.ebuild index 1efa8c65..3610e58b 100644 --- a/x11-themes/notify-osd-icons/notify-osd-icons-0.8_p2015101602_p0_p03.ebuild +++ b/x11-themes/notify-osd-icons/notify-osd-icons-0.8_p2015101602_p0_p03.ebuild @@ -3,7 +3,7 @@ EAPI=7 -URELEASE="hirsute" +URELEASE="impish" inherit ubuntu-versionator UVER_PREFIX="+15.10.${PVR_MICRO}" diff --git a/x11-themes/ubuntu-sounds/Manifest b/x11-themes/ubuntu-sounds/Manifest index 79a93f94..52c79118 100644 --- a/x11-themes/ubuntu-sounds/Manifest +++ b/x11-themes/ubuntu-sounds/Manifest @@ -1,3 +1,3 @@ DIST ubuntu-sounds_0.14.tar.xz 2319968 BLAKE2B 0a52d9ae0bc82229b235d7094e3aafab85d420393f8b3acfbd5fc377dbcff32126716153bceb024c6ce3754cbd268d13a81bcb9666f0d24f638ca32e7b3ab720 SHA512 b4f3c8f7f82a6abe1bd3349753018db2dbe0f51d6379f1787c6457150efccbdca945afa389080a96e706f0d026f598e46410d9f66377d092bb93a30968a663db -EBUILD ubuntu-sounds-0.14.ebuild 456 BLAKE2B 720f4cd4b1e0ef865ca663796c0794cd47d808e1361d63e341086e3ddffe65a09f44143fd33817a9603e3e0ac1fd0d2fe335f73c4465bdf6c7e4392e49303341 SHA512 08a543f0f8c4b17e6a795dd809d3bca1351dd8c53c6f2ad7fddaa1bc75e368fa46c87bfd7f1c79ada0cc9d51f7e0e90423db3963f1b29a44f673fb52ab0a7e9d +EBUILD ubuntu-sounds-0.14.ebuild 455 BLAKE2B 62af70868c946f82455120a6d840b9308f7298538116ca077fb925262c33c597ac3b50eadbc8517d116348c64140d20dcbda0179695bf4a34cc05c2fb7acf571 SHA512 7ff1ffae521cb5109f2b7946dc764e69dc14eccddb8953f54210d0fa97f99a4565ca1150b5d36a7f704cba9c46222bd7f993f7b176263616944ea52e86d1686e MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/x11-themes/ubuntu-sounds/ubuntu-sounds-0.14.ebuild b/x11-themes/ubuntu-sounds/ubuntu-sounds-0.14.ebuild index 45bafc4d..3ca91206 100644 --- a/x11-themes/ubuntu-sounds/ubuntu-sounds-0.14.ebuild +++ b/x11-themes/ubuntu-sounds/ubuntu-sounds-0.14.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit ubuntu-versionator UVER= diff --git a/x11-themes/ubuntu-themes/Manifest b/x11-themes/ubuntu-themes/Manifest index 23186998..ad64b93e 100644 --- a/x11-themes/ubuntu-themes/Manifest +++ b/x11-themes/ubuntu-themes/Manifest @@ -1,8 +1,8 @@ -AUX drop-down-icon/ubuntu-mono-dark/actions/16/drop-down-symbolic.svg 1080 BLAKE2B cad64e2d11a95af7d7a6d1cbf58aafeb75ceea47eef6dc045e1dfca80407ea15db868699b1f3393c9830ed0b405d768a1350de210ffda83339ab2f92ca589ada SHA512 78167671e9f61c1c7fdffed74561d474d4f1df7fdd4bbc8608a59ff7d08f05683f0ed704e4ce8ef3b45dd33da476aa0d3108c9d20c98f49cfe7fd3304fa8e398 -AUX drop-down-icon/ubuntu-mono-light/actions/16/drop-down-symbolic.svg 1080 BLAKE2B df41bd6865ee7c6753ce0ae7c814f73142af09100c990dbf031a761223c5b4e01c667a4d7c2c0a93cdf020370502c9c8c7e0a84a303a816e970f94de6f36e4f9 SHA512 87f63d0a9913c1fee19c8bdfdd3e47ede5aed326e72fcabf2063a75901fe23b618d338ba96b06a2497cf152211af7d0bf8394f9253d46a0bf8e676ebf7757840 +AUX drop-down-icon/ubuntu-mono-dark/actions/16/drop-down-symbolic.svg 552 BLAKE2B 43988531f79d477b63e547e5e7dc143c149c6c692bbc29d34a050410c001e8abb957cde8712a55ae4b2a50e1b4f54815b73e9d0d9cb03421b382b4bf5e50615a SHA512 a3e254f7b2bad1297179ca752499aa3c947c42ade37f1329d27d54700fb74d6c500aa5e800488e1aab1cdceb95808e83ce7b0cc13e4a834ddca24a33775ea10d +AUX drop-down-icon/ubuntu-mono-light/actions/16/drop-down-symbolic.svg 552 BLAKE2B 4a65832fbbb37aedc789ed96be9ae9a35af32b1d208529211b63450b9249efb35e8dcab761509b07167608200028998f6d3192a442d25a9d5e51d3e600363dbe SHA512 fbfccfb2711714c0f5852d36dbb37888b905f56ec9c441d521432c3ad121aa7a90c53ec01f83a7c3d9b8e5b0be9213bf94ef749859d0b1a283eeef0f59335f00 AUX nautilus.css 1148 BLAKE2B 248099347fe4af713e70ee5134d03e06105d0dbf204bf5ad64b2978d5ab67accf4187c94adc57a6422243a9fe71ac6779f4d453d88afb1daf25f60b6e2f3a365 SHA512 813e8e671f0ace065b80cf2d9d7196c8436b7054439f08d4770e7bbe40f7020007e8c0fb8855e0dcea83d8afcef44790f55fd35d991fb1200e8d98d45de11b25 AUX nemo.css 2423 BLAKE2B 43053401da1a1e31f9b0160ca2d78eb7ff0edcc4b81d9db1d62ab6f0ce94b1dfd4e53150ddc8421d0550cb1becb4229905fe9dd5b3c904c52505c26487f96df0 SHA512 4ed93e6bbdd462e006aac5f41fc793c2c7f353b793c6f058f8323a9223b78d85c166fde269a98152806ad1bad88d74b8c3a9da9cda3bde3458e9e5d8047ab95d DIST ubuntu-themes_20.10-0ubuntu1.diff.gz 28602 BLAKE2B 7dedfaf4e5b49be6760a08ff5dbeeedb255c24e0507b1e4671c32ccd82df11c9d7013bcce64cbeb90be298474ee7454da15e9b3b30633a2d309d7a1940c6ad43 SHA512 5c401f1ce80dc5e03a7fd28ce5040702f8c12f6b5a8a025f5b74fe787e26c918f13c52552e381f56aa84c616676d832fb261e1c0925460a84a91b33c1b6868f7 DIST ubuntu-themes_20.10.orig.tar.gz 15679746 BLAKE2B bcb1bae746379fe26700b7e88db4e91b0220e7145f55c59b951a31d768c2311d843c5d92c989b049e1009afbfc6e918e65726408298858e8fd689d0bbab1ca42 SHA512 0118f7c2404856216ff2df0246ea2fa98d0d5b25973abc3df13a998f7a41f2eeb32ca08281ba41399a91fa16ab046e3b3292f504503958983a6488c1e3001ac4 -EBUILD ubuntu-themes-20.10_p_p0_p01.ebuild 3100 BLAKE2B 4bbd559284146c4d4c624c52ea67fb29acc5a998b403a0410d9c45ec704e994e803578c8312ab880b3d688487dfc99edd23ffb8bf7e472ea12b1af25254d7c52 SHA512 a5f8d5ed0a250e8f3c8cba96590f13fdd4e1d41af62123c495857076bcde4efcb39e2a38e1af529a448ef8b03a1f29bfdb5d32896ba22140c61328149c856bab +EBUILD ubuntu-themes-20.10_p_p0_p01.ebuild 3099 BLAKE2B d26fa56642aa23bd3700fb64fc4e8348d0ffbe39f8a16161ab5675a703d66ce0be5faa80cfac5e5c58291510a774eb25120b2f4132d51e88e9436adb32a3ec30 SHA512 380979548a0ae67ad3a1a304d663e10b38517a8ae079e64871f65712e9ac2a68b3fbcab76f00829a0cddc023969687e7a87039f207f2bf47c833f6da09e1de63 MISC metadata.xml 297 BLAKE2B 3a3e0831e54f57e5783b8715c68327bb01487ce981975a01629967d95ca3fba1a5808baaf5ed3f4186c1cc6c14e8f47028e79a0b28f96f2669e0551e33ed1261 SHA512 06dd1bd2cd2074d3d977920a8262c5a16e9e9ebb94ca8576d11ae302634aa8d1cf78e1bb8a31646bd7dca7124dfb44429a591674e2eb0d08f210e527ded65e29 diff --git a/x11-themes/ubuntu-themes/files/drop-down-icon/ubuntu-mono-dark/actions/16/drop-down-symbolic.svg b/x11-themes/ubuntu-themes/files/drop-down-icon/ubuntu-mono-dark/actions/16/drop-down-symbolic.svg index ec32d304..e896a146 100644 --- a/x11-themes/ubuntu-themes/files/drop-down-icon/ubuntu-mono-dark/actions/16/drop-down-symbolic.svg +++ b/x11-themes/ubuntu-themes/files/drop-down-icon/ubuntu-mono-dark/actions/16/drop-down-symbolic.svg @@ -1,17 +1,7 @@ - - - Ubuntu Mono Icon Theme (gentoo-unity7) - - - - image/svg+xml - - Ubuntu Mono Icon Theme (gentoo-unity7) - - - - - + + Ubuntu Mono Icon Theme (gentoo-unity7) + + diff --git a/x11-themes/ubuntu-themes/files/drop-down-icon/ubuntu-mono-light/actions/16/drop-down-symbolic.svg b/x11-themes/ubuntu-themes/files/drop-down-icon/ubuntu-mono-light/actions/16/drop-down-symbolic.svg index 10379ea6..7f7a2bc0 100644 --- a/x11-themes/ubuntu-themes/files/drop-down-icon/ubuntu-mono-light/actions/16/drop-down-symbolic.svg +++ b/x11-themes/ubuntu-themes/files/drop-down-icon/ubuntu-mono-light/actions/16/drop-down-symbolic.svg @@ -1,17 +1,7 @@ - - - Ubuntu Mono Icon Theme (gentoo-unity7) - - - - image/svg+xml - - Ubuntu Mono Icon Theme (gentoo-unity7) - - - - - + + Ubuntu Mono Icon Theme (gentoo-unity7) + + diff --git a/x11-themes/ubuntu-themes/ubuntu-themes-20.10_p_p0_p01.ebuild b/x11-themes/ubuntu-themes/ubuntu-themes-20.10_p_p0_p01.ebuild index 9b4cd149..2b59a7ee 100644 --- a/x11-themes/ubuntu-themes/ubuntu-themes-20.10_p_p0_p01.ebuild +++ b/x11-themes/ubuntu-themes/ubuntu-themes-20.10_p_p0_p01.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit eutils gnome2-utils ubuntu-versionator xdg-utils DESCRIPTION="Monochrome icons for the Unity7 user interface (default icon theme)" diff --git a/x11-themes/ubuntu-wallpapers/Manifest b/x11-themes/ubuntu-wallpapers/Manifest index a6c9ebf0..b0d0af82 100644 --- a/x11-themes/ubuntu-wallpapers/Manifest +++ b/x11-themes/ubuntu-wallpapers/Manifest @@ -1,27 +1,28 @@ -DIST ubuntu-wallpapers-artful_21.04.1-0ubuntu1_all.deb 11854528 BLAKE2B a5e9d088b330894271b4420d5bb207bb10b7699ead718fd9fe771ea82d4cf00aceb3e6ca0533e3e3d8f34c2fc7c495d46ac84411fae8fec6935057547d089ceb SHA512 2c38cabd6c3a83374e17676fca318b8701c11c777dc5027ef925a228e20213185529e8cf25819c5aedc5428289b5f77e9469681976a63044f825331523cbcce4 -DIST ubuntu-wallpapers-bionic_21.04.1-0ubuntu1_all.deb 37495008 BLAKE2B 897f6d356dc8fa438bf2fa0f76ff776977102df3794019f418737b7e51692607d4313a9c13fedd5e86cd4bd447e92412b794f763b519de4f06e7da55754f91a0 SHA512 c600861b3fed5c0e424ec0b29c70cbea0058bae1b2459d0cf8fb1b603353a903533fb44bb31fe4789b3b467df139bae5e7ec60db10b3983f7e2ceb6ba623f132 -DIST ubuntu-wallpapers-cosmic_21.04.1-0ubuntu1_all.deb 19167664 BLAKE2B 7a4ff1cff5d4b711d387ad1c3fc893d59c2888d50f50569f01146487c1795261766c1f9de3c976d80f3c109de8637c475cff96a8d4e08bc2f9e88c55526e302e SHA512 304d19592dc894b2c4829fa4802f2d65f3fdd3750eca1e628760d1a5f24c3dc7f825461676def4c1d947c201dc19b58250274d1cf1f31bbc574f87c34c756162 -DIST ubuntu-wallpapers-disco_21.04.1-0ubuntu1_all.deb 14374740 BLAKE2B a8f9b294d2b3e666983e66e40efda1ccaddee87d112593ac5ac7b755e51aef525ce8dfbc9551b9421e889057ccfea56e322bd44e5198f3cdb52fcf3d8a607f9f SHA512 05d59afde8bb8d9fa89f6537766958d6e4d05c45ac6e45c3d152ffdf0721845ed6c28156e1bd6ef8e2674c018425bc421388b8fe25d7b91be8f9b78f0f55e36b -DIST ubuntu-wallpapers-eoan_21.04.1-0ubuntu1_all.deb 6708136 BLAKE2B e79c8bf426edfaad0d3647e2a64a851a05c8036b8832d327621eb07eaf37ba5c04472be6c6e7c71d30a2c971ac0c57b33321c7ba3adc82a86c267dbd924fdfbb SHA512 e7135de91e0a332646eb16ae5ae633d2b42eebc3453ddbe4b5543f1eddaad787041277c7ef32fdbf146b9c884abca84f49fe7058c10c242f2dbe8ff527446db9 -DIST ubuntu-wallpapers-focal_21.04.1-0ubuntu1_all.deb 11830000 BLAKE2B 645bcb858f9c93be2255108c920f4ad38cf3dd5fcfc5d4327ad5b2f6f062a04f8503caab8e78c4513e781acb26bc427bd14164691c03325edbbc4d47c4402c23 SHA512 49246d5c3883e50b20cc281f6c8a6882a0c58e30d089430e4f7a047297ddc79628e145edae91a69a1aca8afd5275491f3bbbf9b4c4aac632d8bc4686b39ccd09 -DIST ubuntu-wallpapers-groovy_21.04.1-0ubuntu1_all.deb 6680948 BLAKE2B 8dc0a3f195a97e4f2a4b21780a6526f1119ae1bcd68911630e3525cc36135791f374c9b9de4c4c02e6b67a8784a012221fa8e9d2ce24d52967cb7769d841f61e SHA512 7b1f967922d0c3eea68b83cbfa2d6b68be6e94b05368f1046bbf3a2760e349699154e741b8ca11ec6763eb63af96ae9947277a58c9cc35a84bb30717ada4fb2d -DIST ubuntu-wallpapers-hirsute_21.04.1-0ubuntu1_all.deb 6215984 BLAKE2B f744df87bd1df8baee55595574fa0281a98d12ce00361d774c84f62152c7cfb4d51076e06e45f0c3c7bccfcbb151236f349482d15a651b25116aa5b5755f483a SHA512 7159d2248d60b5ad7c03100cc9fc7ec4a1f79435b389800d7920a2cab96640506078c7e3fb21a8521d92606eafb71847e94e0ff92213dc65b22e031ae3ec05ad -DIST ubuntu-wallpapers-karmic_21.04.1-0ubuntu1_all.deb 5346892 BLAKE2B 572fb61124e3eec47a3e3aab73aef3e4acc469090e61f6906dbd214e1d90adbc5740aa62b60b5b39f300628654639abf8ccee4ad57d1f93af662b73aaa34f17c SHA512 a1c0b0817a92f9cba4faa257bb32ee5d25359f43e88a40fec49816e96b9d212ec1e6187cb62d852c1b42db4a1ed003afb449daec8601034ff4dd1e1b3ef41817 -DIST ubuntu-wallpapers-lucid_21.04.1-0ubuntu1_all.deb 3866832 BLAKE2B a6ecb251d4cbcb4daa4c65be1079302afd3b6efdd0b9ad214b7d56aad19e4bc7e75e506339670f9fdbaa661f8fee41d8947f9501f2bf22c3e2e1bc46048a6d2b SHA512 6cccc93cd83e09ea3f729cf78ffa27b1a9fe140f1d6a98665b322b79b7cae40a95b42817131a96df22b569b0c58d10b3e686c06aa908b69c170fd5b9aff53c25 -DIST ubuntu-wallpapers-maverick_21.04.1-0ubuntu1_all.deb 2459504 BLAKE2B 24c2801f809b33b23e972108ef69688e7b878ba40cd2bf46dc5c049343f65b9272ede077c46404489062cf3314837fe210bc084834b0dfd3f52d217cdbb2fb3d SHA512 da48e39744b73a69b5f1b5daf6d5aa926cb9f978ee5dfdfd02fcc4dcb22b948043b9abf2360fb6f71f27657696cc3572946bf9e9bf7e1f11553ee0388f8d3c5b -DIST ubuntu-wallpapers-natty_21.04.1-0ubuntu1_all.deb 2842352 BLAKE2B 5e5a32a9288c51f7ddbb694dd9122c3f03a543d287006b36257b1ea058525cf970c6b540184f14536384f85cf49fbc554d537276c697b5244bacd68ed84d5f4a SHA512 ef4d8bf0ac3ddddb518b15a33a14e60c5a9faef825bf12a732cf9c27fd94328236a27bd447d5977b039f2097eceaf29782e33c25015d975b05fcb0cbfb509730 -DIST ubuntu-wallpapers-oneiric_21.04.1-0ubuntu1_all.deb 2300724 BLAKE2B 6ada3ef466ee2d101d1a63ec3bac5048be9dc30280563cd0e906f36b6634151cd796409a0fcab22cf1a40be066cd228ffa32e40c1ab6bc2c1956dec05c8a0f8d SHA512 dbcd933ef600bb0f7ef2e82e697d2ca3af2edb41f0a5fc04fead2d16d0ab77219ea26cc1b21f8ac2033174c7e63b823cb1bbd2c9b3b45b6241bf61f55391b82d -DIST ubuntu-wallpapers-precise_21.04.1-0ubuntu1_all.deb 2520012 BLAKE2B 475282c4636f1b8480dd75d077721be41941a453725ee5af447885efcbc13e6bfb9201f81d07686cb9b0298394b50f58459b9205a8606d0db26220179e8d91fe SHA512 39527ec2124cf4b908fce3911f633e9a494a9da5626da115e927affb7872a75aeb6c3ae39377e29eb94aa3ae67ff12c5c91b096b16e12c69bf04836674ada446 -DIST ubuntu-wallpapers-quantal_21.04.1-0ubuntu1_all.deb 3405080 BLAKE2B df881a1b5fae504c994d1ddafb94e5dd7eb664885c04c46d1d4d055ade302f3af11e9b1baf482da7d359dd3d9e2330af749c096e7b47f1561b3d43e73ec8e16c SHA512 6e38bd7469800b210428469bb3856ec2220f5d58ab60da445f0fa85f2c9d7b431aa0cebdefaebefd0eba641805f3429c579fef38d5b41d391f35409df2086b5a -DIST ubuntu-wallpapers-raring_21.04.1-0ubuntu1_all.deb 2224520 BLAKE2B 37df9bf56b211087c2c016db47d999cc6cb48612f386a40e629f0bb6b37ba492f3acc0d6e396db06ef4ab4f76d1b8c3c3218136ab5ba89d93f946806ad27ea86 SHA512 a447648228548a265c375a2d959a28193f6e86dc071b1aec297f3816cd5404d0c48bcc1b78e86b348e472de7ac8f4f9b805a950e2613c1c4c9565a5b3b9c2c87 -DIST ubuntu-wallpapers-saucy_21.04.1-0ubuntu1_all.deb 4603344 BLAKE2B dba0ca7ef967a92df7ee41e0e4b8f8dd433ca8b57ef766c900eca65ad1e7cc6283d10105362e1613cf6c8d68bc156e7b403538928f8aedac39d183706464f0a5 SHA512 407e38eecdcc7dd5e867951b31c74c99f1cf697f05fdd4b3377a133f16135fd30ac31b68174d6bd42ea1113d5c07e2fe2112bb6a2e0e6be575ea581bdddd1a00 -DIST ubuntu-wallpapers-trusty_21.04.1-0ubuntu1_all.deb 8109620 BLAKE2B 19791c6f530801661b1d340538f7870645a0303dc3916a02f84f547fc697266b0f707272b20e46f43da7b97f0c4a69e9656600f6feb8dfab2a1a8c6dab3a6982 SHA512 0b59851da2ae93e5179f8c75ad2f4d932647a0b7e44a0b71cbe1235cc3b866aed4a7f2e9fb3c5bb0424ad6bf7cf75f52c64f8ef3a413de434db0e12d01f46744 -DIST ubuntu-wallpapers-utopic_21.04.1-0ubuntu1_all.deb 9820764 BLAKE2B f8d84de963ada41878d743740e5de58d0ef1067157cdcabc98f5c2e6619887d1aa85ed792d15c724ae6dc87499b5c8dbfa7afc5444cefc8bc5cc5857c99f3981 SHA512 4503f1415a50172ef24e525f2465413062021482ab847be76d14b968c7692a79ecfe3407fdaa229b1e711e9dc91ecbf1c74066e60211f9698d387e022f7fff21 -DIST ubuntu-wallpapers-vivid_21.04.1-0ubuntu1_all.deb 15107728 BLAKE2B 7945c20f5e7dad61bc92af0d632116df63ac71f58be8f96f77624275c42a2e82ebad1b29e4d8c1c094b3931b01097f97dd6751c70661dfbb22d45c4ea738508d SHA512 28dc3f37390e6b164cd7d4aba9515e1149dec9d24256f2ed3fba7ede810c5feed7fd24e1c1fdc0e1e5fd3515471876ca68ff55735f2f542aeafe58fa11a57b34 -DIST ubuntu-wallpapers-wily_21.04.1-0ubuntu1_all.deb 14399068 BLAKE2B 0cd94c41bb5ff2150cf1a7c7e10a8023267e00625527eeed6df6a4322a0935182873b5bef029b169765df8d04ea00e12d492a43cf0362c85c0f245bbb1998177 SHA512 1162509fca8e327049bfddcf6208078aeaad8e4b4307f1105362e05c97b61b4398b3e7c91624b3b81aba754387c4d6bc19b6d7e74df471fa769f4cd7058b9ecb -DIST ubuntu-wallpapers-xenial_21.04.1-0ubuntu1_all.deb 17132132 BLAKE2B 323b350b3388caf339ba26427dd5a4dc6aa63614cbff0c39360c0e87c8d8f3cd363ce3b8f4deebbac1ff6bc1c760ed24f351c033f6ca6b7daabbdc04b70370c7 SHA512 3eee68bc1ec224d863efe6807df5464a6f38a68e87ca6e1b9456879af9c8a0aac574afca1bfc316efb38749bc75f80d9fab3f08a4ebd02236f12177adcacf2b9 -DIST ubuntu-wallpapers-yakkety_21.04.1-0ubuntu1_all.deb 11099284 BLAKE2B 5b0060df8d6679200aced055729e0e5a80c1d1d1e5e5fff08d5a665b5b1deaf9d9c753169078447dff8fb8e9b333aa1f95e8f4f91b32da70492325aed935688a SHA512 36d465f6c386a1b28dc36adec009418a3775140217155104558319d4f09095718c61a76c7b7c5bb583efd1769e697d0d39efe2cc581202598fff18adcbc168b2 -DIST ubuntu-wallpapers-zesty_21.04.1-0ubuntu1_all.deb 11307868 BLAKE2B 8c711b2b84f96fa67ad51586838fa50c1e2203eeff73958c60a3da5ff737da25b5298ca43b22098aa922ab857890e39a8bbd037c6d8db3f230412ce300c8bd97 SHA512 c09eb00ba363472017daea3fdaa53f298e06b46d30cf3aa4d638c7734a67ec5a4b45e6fb1a1caf42cea50e4885c1e9d67b3ce46c6deaa477ee5c878627b64746 -DIST ubuntu-wallpapers_21.04.1-0ubuntu1_all.deb 1789824 BLAKE2B 53a11a981690c68d021dcc9e490917f61911e753314663858b8ed9306ccc94f3faa37fb9eb8c05f64afc55d112efd989ccb741127d5604edcd50a3d1f253c8a5 SHA512 c9f11b017589ad8c5fea677abdd1f62d5920fe4715d37e400ef00779b911a50d4b02db10653bbbeaa67eda38cd8f3593ec9ce157ab569c7861061d73ea8a8868 -EBUILD ubuntu-wallpapers-21.04.1_p_p0_p01.ebuild 1403 BLAKE2B 30a2cc3a6dd0c6ce96c767dca7fac2286fc0ee7afbd530889b9a4ca52725b7d704950da15d91b6c3c4f42a82f22e3500c4e3457278838c59e63929fd6aa75ab6 SHA512 a4ca8753032394594119c51c63b63501eb57db0159b93bb9bffdbc354ea708116771d86389e705ad4d094f158d0aaac07a8793d768fadf9957168a8121e3ad0f +DIST ubuntu-wallpapers-artful_21.10.1-0ubuntu1_all.deb 11864132 BLAKE2B ea75a763eea25e17b7c4255848267e97a76b463c1e9e86203f43ea48db89aab76e915cd906df7b3fa4afde93b3e2457e3e88ba49039aac6afa40bf444b6b7037 SHA512 03a046656fd583bf0b9f8f6d57a3004b324c6d687d6bfa0022b5e8413eec68a498a588fb2ffe6f50d8f4d5c0b0bccbf35a330f7d96b4e8d5e90bb07d41bbf451 +DIST ubuntu-wallpapers-bionic_21.10.1-0ubuntu1_all.deb 37473798 BLAKE2B 85f9c0f33966a3ae646f176ec8eb69bd51a5f11811aa4b0532d685241c1022f1ee3a8f18b459211bcfcc16f6917d8b0673d08bc20b95dd0f9f2215a0dbaf10e5 SHA512 1ffdc98874fab7ae9fdd1bd913573996e6ab8ec97a2da336734109b6ae303455fe132945ac9be6bfccc170342ab4f757f4d803e9d2e96f7d4999cf9e18e466e8 +DIST ubuntu-wallpapers-cosmic_21.10.1-0ubuntu1_all.deb 19193332 BLAKE2B b5b8d05974f40cf8004970388857ea14807b8804f51acd50fc614fde2a00f8f050ad0856a3bada1838c1c9b66e9e9e6cf77456933cc6edc7443ad8a5cc0b0c3b SHA512 89f2b29e0cd9736e90ce707e64aead4f2c0921217f90e4702dcd29f377dc4df298831ed1772977c39c662a28c11f865ef050112cc09ca0b9af8d2bf573045d73 +DIST ubuntu-wallpapers-disco_21.10.1-0ubuntu1_all.deb 14386622 BLAKE2B da84448f1239ed64e9e54642413b06888091d45a850991e01235eea8fd2c64be19eb5273f22d60302e8ff10eac38ec4b4758de09ca1fcb1be0653bcb831fbca3 SHA512 0b30b68435b6dc344a302c0d61cf550af8adbc831ac66966ef0bb7c6ffc039f7273c84805ecfd2c759e6ce88b747d449613038815de8a985115ce717f74e9758 +DIST ubuntu-wallpapers-eoan_21.10.1-0ubuntu1_all.deb 6739346 BLAKE2B e069375e49f1579b82a159242569ef2f95180580f22a03f31db6670f8fc0832f3ef8213c7401f5c0fea5dcb594488d72563d6b4383ffd103b8cff49a02a1a95d SHA512 eb595bf641a4f8c1510b20e98ef9355bed6545ade1fb798bf1f54afe765c739ff1e553e1cbbacd8bf1a1fe9405e6368b096788dd7cdacb10958a5f7a5936520f +DIST ubuntu-wallpapers-focal_21.10.1-0ubuntu1_all.deb 11843450 BLAKE2B 75228f9dd6aaf45fc55c016b365f75c5488e29a7d00f741384e81a93bfbfff858cd2bafc55a15da40550debfe7a9ee81b3f9b983bdf61cb6a1ca9ccdce44bf5e SHA512 b3ae6cbb35155d34bd238b7a341030f5f76e9bde0f8bd3c22ef4318f09857daf70ddba31b1cab6241e4099515c169fef8966aa22f910351c78fb4f8b9e9173e6 +DIST ubuntu-wallpapers-groovy_21.10.1-0ubuntu1_all.deb 6697488 BLAKE2B 471a1acaec8c7369631b005fc17150dc2e25d9af1104754ef3d39e052ee73fc6b62510c128a29fa620b310c492bccf25231c22a9a197e11194588b3fe7b6ed5e SHA512 a5ea14fd1dd8faee3fb3eb6526a5b5f90cd75e9bd4af011b5fd0659ec0d130f1760080a5437c020246923b0663a8974d5459ba3a26e86471064cfd58d6c6cc57 +DIST ubuntu-wallpapers-hirsute_21.10.1-0ubuntu1_all.deb 6216684 BLAKE2B b3fcc9b997716f85a671fe02324dd76cedebd06ff3c703ab31eb893ca9121a5de84c1a4fd7e39e11c07f1af068132da02b3342c09069ba5115e8ec8ebf3a84c5 SHA512 574119eb981e47370833afa97e9cfb7960a06102107101b7d7141bbe0749f06921f0906cf5aeb965fef2a0d122fcc24e7509440d081c7eeedb828e0c7eed6d9e +DIST ubuntu-wallpapers-impish_21.10.1-0ubuntu1_all.deb 10227988 BLAKE2B b599f166f2f8189b6cc97701105f49679f1c5aced1a017a42559027bd59a123d8a0b8b542490230829c2bfca454bdf2242ba52eabd5ded2cb196f206d2bea191 SHA512 2796d1826456123d79be8fac0c1d85c61725994c01e523012cc6d6af4644d7676d6425ad409edf27a46c032fe5c6c58a5883deb6f5f766b4c6ee69677f7923f9 +DIST ubuntu-wallpapers-karmic_21.10.1-0ubuntu1_all.deb 5351086 BLAKE2B 5477a15f2b756ceebbc53e6da0a6d75c8c053656a77d1b62d766feb0270368f561960f59e9346885fb6e0fcadbfde366da392689b392c236b9dca3de49c1410c SHA512 9c5c8bdbd6553f845f93fb47254b80d9b3ef3f1cdbb077177bd0602589e242758f72f98a4ac3849a664d897316046b206bd8b96099438a19121e2e6105545ed9 +DIST ubuntu-wallpapers-lucid_21.10.1-0ubuntu1_all.deb 3873414 BLAKE2B 17892615c6ee352b89026ed745a127d8df63f8d87d9c988d32add6f5c27fd388c0e6c3a513c2f63f8b56a30712182f1aa29d5c9a1cb91370cf85542c0c5942ca SHA512 15b74b3b0677e7efb66e9908edaa703c85fc08b00f850f5b7f8489558758adf587cb10bc541efa7377895bd82ed0d36acb5d93c405cf3f658c1e160a85ebe454 +DIST ubuntu-wallpapers-maverick_21.10.1-0ubuntu1_all.deb 2470670 BLAKE2B bce336fff37188aa447f9f2eca3c20d5cf2ba538ba2a049bc785072593cce45685a79e6402bf1108aec8f3bc04d104f45d2615895829a996b9a37f32c2483743 SHA512 9f8807286964a071f6313c487f36c28e395abfff0ed172cfdaa21b16472b78570277fdc02f3e2063403de09bac3911dda485d1d925529cd734ad43d84d1109e7 +DIST ubuntu-wallpapers-natty_21.10.1-0ubuntu1_all.deb 2852556 BLAKE2B 2dd4c15934a6b8699d74a5a2334a1976a5d1cff94d42c42d4c5bd3034cbb76acdac494fdca551deb5b418db9a1bfd22c9199a22a1c003cc16297110dffa46a37 SHA512 356962d56d48cd4d8951a73daa136658fcd0d28c42ef3126e3a34cd16af2f3180a86d1293b7ae22b10ac38d556e1bba8f218f649000b849230d7034db4d00a81 +DIST ubuntu-wallpapers-oneiric_21.10.1-0ubuntu1_all.deb 2307936 BLAKE2B 474c4c967714d6f0d409803b099b03f172678ff09216f375f277b049ba4d72d5002d7138618a319ce3b39392fe351dc29c1c0929783de8a6a8a50a6b5492ebf9 SHA512 fc1d5592f0e56e7e33b89e91f4a58cd2bcb4a588af88d7b650a7956e13bfeb6369ac5aec211901c8c8ed85cc81bd680706853863cf608070e63cb8bd10cc7a2d +DIST ubuntu-wallpapers-precise_21.10.1-0ubuntu1_all.deb 2525082 BLAKE2B 1d1a1f1cc848d709e81ec66e717e5b3dc2a96e59a50af317a4a76e285b3b8024e874e4f3e6bf93ecb375109f1bbea31907892f75fa0933f10abcb1195a25b58c SHA512 5827b8c6f7298612195ce1dc6f24c168addb015af1b19245f78925d8ddb7cbad9a2a7cf75729a42ea194e24645026da4a0540c30b9b15c2611a0c1d7c42dea79 +DIST ubuntu-wallpapers-quantal_21.10.1-0ubuntu1_all.deb 3420204 BLAKE2B 8d5c3f4db25b8c415dad5444bd0de4ee32f885a9109d0c966bbca1c85e7c87ee79e0bf4d62bec7d5fa777f146709a2823e9f659ac87300dda898091ef245b388 SHA512 f57750c4a99b41a83d8a971f49810c5903214c5c0342ecaa8385ba7831e5cdc56d9521154bfa8575358300abb39a0c5249888d5dba32da04effdf636c822d2d4 +DIST ubuntu-wallpapers-raring_21.10.1-0ubuntu1_all.deb 2235800 BLAKE2B 99cc31a487e25cbc2535dac0435cef04472613c900efade42e1f286d53a024d11ad3eb76fb21dad81de7c189e551d1716eac0067d9eb8b887ba6d7ee5814a4a5 SHA512 e32247caf14d5ddf62a31f7fa4706b89f3e1d95cd76b4369ae22993c5ec2610447873d7e8aa0d73bbcef5e6fa6102ac4219e629204c7006ddabec3914f89472b +DIST ubuntu-wallpapers-saucy_21.10.1-0ubuntu1_all.deb 4626822 BLAKE2B 6f0ab2d5382ef7f8d6ef55d24f669da93555d84e46c6d18a8132af0b87da5925e70de32907fe0a42faad2a6076403a4b59b545df43330f2dd50a3255935678a7 SHA512 6e4a928710ab8891e9e7fe509913aec60e96933a4f84cd65300a5032fe141ae7cb2d53e7c774a97aac7b393ee90fa25846d0e83bb7073b644b7ddf55714dd93b +DIST ubuntu-wallpapers-trusty_21.10.1-0ubuntu1_all.deb 8115818 BLAKE2B fd9a884a675af1499fa8a36c4566d7c5c19ee70f8ad66f1a95bb377ce3f2d85a2feca7b4b57eaba45af6913a429ff85a4f57b6e5e9739f6083672cf3aa21003e SHA512 7723133b9118bf9a330b45834c7b6a5e2b6cc78353da69c64a7af792ef28e4b83f6386d4af18467e1dd3070a45afdb95a16aa650f2a1ca6f4c05c17f8bf2c412 +DIST ubuntu-wallpapers-utopic_21.10.1-0ubuntu1_all.deb 9839442 BLAKE2B ebc2d51ac76aa8ebe71728ef550e9f616030ecda5936c576b1bc294e39aefaf0c467a5ce8a1afbf0ef8a116113735e022036b6a17a7b8b67897727c081d8fba7 SHA512 441b379071f65858161d3fd7dbd60a41fa76cb3df298322f2c519a4ccc337a08b828c5ce1d47b5b79cf57ab2f567a39ed4b8897a1b9830dba4bd2f17b098e5d6 +DIST ubuntu-wallpapers-vivid_21.10.1-0ubuntu1_all.deb 15071860 BLAKE2B 3b2fd48ad2eb81cafbd2d9cde9906d4d4cf8d0a89e821a3a65e7c7601f8a47f468a6ce3da8b8e44d4695d8cd2ee529a9aab9be993052af179337011fb353871e SHA512 f54aa368545b662bcf8e71ca85bd86f89cd998a9056003a7e9de287d5150f0b0a55f654d00aaf9b7fb736245ee18944f6da7efca196416959a6acb5846fed125 +DIST ubuntu-wallpapers-wily_21.10.1-0ubuntu1_all.deb 14368326 BLAKE2B d29134d5c72546d4d79d8afdce5dd9362faec8fc3cfedd7b2c2f32a208037fa00cbc46e23cb457f04211fc83375247a566634eeab7a3bfa7eacf7d3596f85211 SHA512 f052db57e9c1dd8068ce0302b6ad1bcb5fba65d8893d1417e010c87a2ea4e92c0331a87413185a48885d3607cf7790999c3cbf3a4c86b506355e64805ef9ad10 +DIST ubuntu-wallpapers-xenial_21.10.1-0ubuntu1_all.deb 17161242 BLAKE2B 39f49179d012dda633cf9822cae11dc552bd7a4ac9ea35b5bbb29a6cf91d17aaace1072c9604c03e66db82623ca2ffb2df456255dda7ba8f6f1dd4ca0dcfbf33 SHA512 a1abfb526a0e0a6d6a10432c338408c4b3626a1970711e8d2808b6eb8b0970ba800fe650c22f6cc6df4d46007c192d770e84bf94c6133082fad0c00202f3aeda +DIST ubuntu-wallpapers-yakkety_21.10.1-0ubuntu1_all.deb 11105148 BLAKE2B b2770853473e61fa45a057b4b3e0a2f1a0f47c74a4d6f1ab1c4a360859bbd3f5665be84b7b6102f6d926071318adb3b982b15ce39e181dc45a76c2838603a74d SHA512 0d94ce059c77bcdc799004afd54c063dca58488997c1821fea0f66c92b5196298cf24eb1cdb0985cc98a5e0912255a2738f7cf4ff48e8a2e1b206e5dd3b85d17 +DIST ubuntu-wallpapers-zesty_21.10.1-0ubuntu1_all.deb 11312774 BLAKE2B 77857da763ea39817d3b02711f63631b351854f6649fedb7a104aea0c188791a183a3a44196844de569cda206def435583fb4549aa354d222c524e2e3dd839d7 SHA512 54db161940a5f9844aa23d04d58ebb60f1f59ffea69900901d6f245310c8dbab025100b3cc37a9745c748e1bc81909b59f70b56d46c1e2324fe9341c4c68c123 +DIST ubuntu-wallpapers_21.10.1-0ubuntu1_all.deb 2081830 BLAKE2B 2e0d929c95f6490b59f608399e10a12d79713fa5a900be2b6058aad2dd1d19b8e1bdf38e194cd3a961ed6664bf722e8ce41c8b7f8c6004dcaccd400f51d5d5f8 SHA512 8022140a6770830112c8d3b283b339e11feaf78b80e3335f47c98344520002596b64f50e67a211b8a717f942f8e486f793170ec26559f462508a632c1afd6607 +EBUILD ubuntu-wallpapers-21.10.1_p_p0_p01.ebuild 1541 BLAKE2B 9d32346f546f4fb6bc7596a1c636bf8ae2b2a391a7c16d071c4fc274a2972f66e2a316f3ccd12d31957a7da6216d8e45b9deeb724d8fa4127aa908353c4d6b46 SHA512 61b3a482b5a0eec9f1e2e50258c9e2ee4f3e20354268a848c026c42947a8822912ae4566954d086d228a83a7e6e7715a56ce2af47c7e738bb66dddbc6a3c559c MISC metadata.xml 1621 BLAKE2B 35efe5ab3db71cc4dd41564833789d93aa1b151064a1e2cbdb2fd2e32f39df1f3b0ed88b976031fd29c94624b96e6c838f1dcb59582328db6e53c5b2587efb1a SHA512 2e1e5575b989773fd1f52dcfbde097a1266a36686e7cb9af28621b58b5d4dfe087d17a496c3aa630a81e8e81d6d51b65e5b3c17bf26b8f7108607464a9c986dc diff --git a/x11-themes/ubuntu-wallpapers/ubuntu-wallpapers-21.04.1_p_p0_p01.ebuild b/x11-themes/ubuntu-wallpapers/ubuntu-wallpapers-21.10.1_p_p0_p01.ebuild similarity index 83% rename from x11-themes/ubuntu-wallpapers/ubuntu-wallpapers-21.04.1_p_p0_p01.ebuild rename to x11-themes/ubuntu-wallpapers/ubuntu-wallpapers-21.10.1_p_p0_p01.ebuild index 3162a88e..3c9a9661 100644 --- a/x11-themes/ubuntu-wallpapers/ubuntu-wallpapers-21.04.1_p_p0_p01.ebuild +++ b/x11-themes/ubuntu-wallpapers/ubuntu-wallpapers-21.10.1_p_p0_p01.ebuild @@ -3,7 +3,7 @@ EAPI=6 -URELEASE="hirsute" +URELEASE="impish" inherit ubuntu-versionator DESCRIPTION="Ubuntu wallpapers" @@ -14,7 +14,7 @@ SRC_URI="${UURL}/${MY_P}${UVER_PREFIX}-${UVER}_all.deb CODENAME="karmic lucid maverick natty oneiric precise quantal raring saucy trusty utopic vivid wily xenial yakkety zesty artful bionic cosmic -disco eoan focal groovy" +disco eoan focal groovy hirsute" for c in ${CODENAME}; do SRC_URI+=" ${c}? ( ${UURL}/${PN}-${c}_${PV}${UVER_PREFIX}-${UVER}_all.deb )" @@ -34,8 +34,14 @@ src_unpack() { if [[ -n ${A} ]]; then for a in ${A}; do unpack ${a} - unpack ${PWD}/data.tar.xz - rm control.tar.xz data.tar.xz debian-binary + if [[ -f data.tar.xz ]]; then + unpack ${PWD}/data.tar.xz + rm control.tar.xz data.tar.xz + else + tar -I zstd -xf ${PWD}/data.tar.zst + rm control.tar.zst data.tar.zst + fi + rm debian-binary done else die "Source files not found" diff --git a/x11-themes/unity-asset-pool/Manifest b/x11-themes/unity-asset-pool/Manifest index 6702c8c7..badf4469 100644 --- a/x11-themes/unity-asset-pool/Manifest +++ b/x11-themes/unity-asset-pool/Manifest @@ -1,3 +1,3 @@ DIST unity-asset-pool_0.8.24+17.10.20170507.orig.tar.gz 151341 BLAKE2B 3e5d8aa5e59a5cf6c3c79675675087adf808ed11125b233f4bc9c970ee8de378b1c51e7a97fc599e5e159d21c1e1e0105111f378ed83e9489953f95f6dd6cd8a SHA512 65475ff37803eed7326cd436581c34da05fa2de1820d65e677b4f87bbdaa2c0a6d4c8d76a55e67cd6e9f344b9d95164fb4a86182ce97c54949c62f9b90120c29 -EBUILD unity-asset-pool-0.8.24_p20170507_p0_p03.ebuild 900 BLAKE2B 2551d415d954ba3e527158850cd1ef747d25eaffeea0158d183ad96ce56950e4147bc4717e901463d29701fed26316171eaf940fea3198204a773c54160ece69 SHA512 af3f0d71accbe4774a9e5ffb4703b300bce52779558b18e5130574b40d9e5a716c6c508934707dcfb9ef8aa98ce1431726dde5fd9dfe5cb9428a9dd244f155a1 +EBUILD unity-asset-pool-0.8.24_p20170507_p0_p03.ebuild 899 BLAKE2B cbec48ee37aa57111e423541a511815a529f8036906832ae661d3a141ce93bc5d2ba11fb56d2aa435bb41e88e618fc849c046d76a322708d5a7ffd031a384664 SHA512 bd4ec8077ee3eff1924f5bc90293e6915410054ed04715c4bac72025149393ca92417be2014095b127c0bc0610bdb34c005059272d29e504c768d32ce9e8267c MISC metadata.xml 212 BLAKE2B c256bc6c10e2a8e2d3e0aee721c95d70679943ebf8a66e7422a33076316bd6cd62f0a8fd4deb8216e66861273a80141eaf55ec8ea414a6640157b9e825b0b0cc SHA512 83c54592cc952af161d1aa5576f5d28aa2029b47f5616f303fa8bc0c8697da37fbc34414ab6a1ad4559513dc026806ea22d57f201129b4cb8a1c5e9c12426db3 diff --git a/x11-themes/unity-asset-pool/unity-asset-pool-0.8.24_p20170507_p0_p03.ebuild b/x11-themes/unity-asset-pool/unity-asset-pool-0.8.24_p20170507_p0_p03.ebuild index 4176fe84..b0a908f5 100644 --- a/x11-themes/unity-asset-pool/unity-asset-pool-0.8.24_p20170507_p0_p03.ebuild +++ b/x11-themes/unity-asset-pool/unity-asset-pool-0.8.24_p20170507_p0_p03.ebuild @@ -3,7 +3,7 @@ EAPI=7 -URELEASE="hirsute" +URELEASE="impish" inherit eutils ubuntu-versionator xdg-utils UVER_PREFIX="+17.10.${PVR_MICRO}"