Bjørn Lie 2024-10-21 18:09:08 +00:00 committed by Git OBS Bridge
commit f094db0265
11 changed files with 2908 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

5
README.SUSE Normal file
View File

@ -0,0 +1,5 @@
GNOME Shell extensions are usually not packaged for openSUSE, unless
needed for the default installation.
It is recommended to install extensions via the extensions website:
https://extensions.gnome.org.

19
_service Normal file
View File

@ -0,0 +1,19 @@
<?xml version="1.0"?>
<services>
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://gitlab.gnome.org/GNOME/gnome-shell-extensions.git</param>
<param name="revision">47.1</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
<param name="versionrewrite-pattern">(.*)\+0</param>
<param name="versionrewrite-replacement">\1</param>
<!-- <param name="changesgenerate">enable</param> -->
</service>
<service name="tar" mode="buildtime"/>
<service name="recompress" mode="buildtime">
<param name="file">*.tar</param>
<param name="compression">zst</param>
</service>
<service name="set_version" mode="manual" />
</services>

View File

@ -0,0 +1,141 @@
Index: gnome-shell-extensions-43.rc/extensions/apps-menu/extension.js
===================================================================
--- gnome-shell-extensions-43.rc.orig/extensions/apps-menu/extension.js
+++ gnome-shell-extensions-43.rc/extensions/apps-menu/extension.js
@@ -5,6 +5,8 @@ const {
Atk, Clutter, Gio, GLib, GMenu, GObject, Gtk, Meta, Shell, St,
} = imports.gi;
const {EventEmitter} = imports.misc.signals;
+const BoxPointer = imports.ui.boxpointer;
+const AppFavorites = imports.ui.appFavorites;
const DND = imports.ui.dnd;
const ExtensionUtils = imports.misc.extensionUtils;
@@ -48,8 +50,19 @@ class ApplicationMenuItem extends PopupM
let textureCache = St.TextureCache.get_default();
let iconThemeChangedId = textureCache.connect('icon-theme-changed',
this._updateIcon.bind(this));
+
+ this.actor.connect('button-press-event', this._onButtonPress.bind(this));
+ this.actor.connect('popup-menu', this._onKeyboardPopupMenu.bind(this));
+ this._menu = null;
+ this._menuManager = new PopupMenu.PopupMenuManager(this);
+
this.connect('destroy', () => {
textureCache.disconnect(iconThemeChangedId);
+ if (this._menu) {
+ this._menu.destroy();
+ this._menu = null;
+ this._menuManager = null;
+ }
});
this._updateIcon();
@@ -64,6 +77,107 @@ class ApplicationMenuItem extends PopupM
};
}
+ _onKeyboardPopupMenu() {
+ this.popupMenu();
+ this._menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
+ }
+
+ _onButtonPress(actor, event) {
+ // close any opened menu to avoid input focus grab
+ if (this._menu && this._menu.isOpen) {
+ this._menu.close();
+ return Clutter.EVENT_STOP;
+ }
+
+ let button = event.get_button();
+ if (button == 3) {
+ this.popupMenu();
+ return Clutter.EVENT_STOP;
+ }
+ return Clutter.EVENT_PROPAGATE
+ }
+
+ popupMenu() {
+ if (!this._menu) {
+ this._menu = new PopupMenu.PopupMenu(this.actor, 0.0, St.Side.TOP, 0);
+ let openItem = new PopupMenu.PopupMenuItem(_("Open"));
+ this._menu.addMenuItem(openItem);
+ openItem.connect('activate', () => {
+ this._menu.destroy();
+ this._menu = null;
+ this._app.open_new_window(-1);
+ this._button.selectCategory(null, null);
+ this._button.menu.toggle();
+ });
+
+ let sepItem = new PopupMenu.PopupSeparatorMenuItem();
+ this._menu.addMenuItem(sepItem);
+
+ let isFavorite = AppFavorites.getAppFavorites().isFavorite(this._app.get_id());
+ let favText = null;
+ if (isFavorite)
+ favText = _("Remove from Favorites");
+ else
+ favText = _("Add to Favorites");
+
+ let favItem = new PopupMenu.PopupMenuItem(favText);
+ this._menu.addMenuItem(favItem);
+ favItem.connect('activate', () => {
+ let favs = AppFavorites.getAppFavorites();
+ let isFavorite = favs.isFavorite(this._app.get_id());
+ if (isFavorite)
+ favs.removeFavorite(this._app.get_id());
+ else
+ favs.addFavorite(this._app.get_id());
+
+ /*As the item text changes, we need to re-generate the menu */
+ this._menu.destroy();
+ this._menu = null;
+
+ this._button.selectCategory(null, null);
+ this._button.menu.toggle();
+ });
+
+ let desktopItem = new PopupMenu.PopupMenuItem(_("Add to Desktop"));
+ this._menu.addMenuItem(desktopItem);
+ desktopItem.connect('activate', () => {
+ let desktopApp = this._app.get_app_info();
+ let sourcePath = desktopApp.get_filename();
+ let sourceFile = Gio.File.new_for_path(sourcePath);
+ let destDirPath = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP);
+ let destDir = Gio.File.new_for_path(destDirPath);
+
+ if (!destDir.query_exists(null)) {
+ destDirPath = Glib.build_filenamev([GLib.get_home_dir(), "Desktop"]);
+ }
+ let destFile = Gio.File.new_for_path(destDirPath + '/' + sourceFile.get_basename());
+ if (sourceFile.copy(destFile, Gio.FileCopyFlags.OVERWRITE, null, null)) {
+ // In order to make the general monitor recognize the setting of metadata,
+ // this function call should before the setting of unix mode.
+ let info = new Gio.FileInfo();
+ info.set_attribute_string('metadata::trusted', 'true');
+ destFile.set_attributes_from_info(info,
+ Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null);
+ destFile.set_attribute_uint32( Gio.FILE_ATTRIBUTE_UNIX_MODE, parseInt("0755", 8),
+ Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null);
+ }
+ this._menu.destroy();
+ this._menu = null;
+ this._button.selectCategory(null, null);
+ this._button.menu.toggle();
+ });
+
+ Main.uiGroup.add_actor(this._menu.actor);
+
+ this._menuManager.addMenu(this._menu);
+ }
+
+ this._menu.open(BoxPointer.PopupAnimation.NONE);
+ this._menuManager.ignoreRelease();
+
+ return false;
+ }
+
activate(event) {
this._app.open_new_window(-1);
this._button.selectCategory(null);

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0eeca39a287d07b470500f0cba10f9ab6e4a5d5a4df9856e2cee274890d7c7f0
size 1534988

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d78f2c8fc0a762c6711187995eaad292bdd51f9fc53e7b375fd8d3eb119dfe86
size 1544204

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:85fa22d398a0ab340e7d15689f75d0d8b8684574dcdcefa0ac584582c96bee09
size 1543692

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,4 @@
name: gnome-shell-extensions
version: 47.1
mtime: 1729281253
commit: 9991f90804e1b09fb5d5346e2d067bc2b28e6ad4

182
gnome-shell-extensions.spec Normal file
View File

@ -0,0 +1,182 @@
#
# spec file for package gnome-shell-extensions
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2011 Dominique Leuenberger, Amsterdam, The Netherlands
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global __requires_exclude typelib\\(Meta\\)
Name: gnome-shell-extensions
Version: 47.1
Release: 0
Summary: A collection of extensions for GNOME Shell
License: GPL-2.0-or-later
Group: System/GUI/GNOME
URL: https://wiki.gnome.org/Projects/GnomeShell/Extensions
Source0: %{name}-%{version}.tar.zst
Source1: README.SUSE
# PATCH-FEATURE-OPENSUSE gnome-shell-add-app-to-desktop.patch bnc#870580 dliang@suse.com -- allow adding app shortcut to desktop easily.
Patch1: gnome-shell-add-app-to-desktop.patch
## NOTE keep SLE Classic patch at the bottom
BuildRequires: fdupes
# Needed for directory ownership
BuildRequires: gnome-shell
# gobject-introspection is needed for the typelib() rpm magic.
BuildRequires: gobject-introspection
BuildRequires: meson >= 0.53.0
BuildRequires: sassc
%description
GNOME Shell Extensions is a collection of extensions providing
additional and optional functionality to GNOME Shell.
%package common
Summary: Common files for GNOME Shell extensions
Group: System/GUI/GNOME
Requires: gnome-shell
# Obsoletes for metapackage and extensions from gnome-shell-extensions that we used to package
Obsoletes: gnome-shell-extension-alternate-tab < %{version}
Obsoletes: gnome-shell-extension-apps-menu < %{version}
Obsoletes: gnome-shell-extension-auto-move-windows < %{version}
Obsoletes: gnome-shell-extension-dock < %{version}
Obsoletes: gnome-shell-extension-drive-menu < %{version}
Obsoletes: gnome-shell-extension-gajim < %{version}
Obsoletes: gnome-shell-extension-native-window-placement < %{version}
Obsoletes: gnome-shell-extension-places-menu < %{version}
Obsoletes: gnome-shell-extension-systemMonitor < %{version}
Obsoletes: gnome-shell-extension-windows-navigator < %{version}
Obsoletes: gnome-shell-extension-workspace-indicator < %{version}
Obsoletes: gnome-shell-extension-xrandr-indicator < %{version}
Obsoletes: gnome-shell-extensions < %{version}
BuildArch: noarch
%description common
This package provides files common to several GNOME Shell Extensions
%package -n gnome-shell-classic
Summary: A collection of extensions for Gnome-shell classic
Group: System/GUI/GNOME
Requires: gnome-shell-extensions-common
Obsoletes: gnome-shell-classic-session < %{version}
Obsoletes: gnome-shell-extension-desktop-icons < %{version}
BuildArch: noarch
%description -n gnome-shell-classic
This GNOME Shell extension adds a power off item in the status
menu, and provides the ability to hibernate.
This package provides the extensions required to switch to
gnome-shell classic.
%package -n gnome-shell-extension-user-theme
Summary: Allow the user to change GNOME Shell Themes
Group: System/GUI/GNOME
BuildArch: noarch
%description -n gnome-shell-extension-user-theme
This extension allows the user to switch to different themes. It's possible
to pick system installed themes or even themes installed in the user's home.
%package -n gnome-shell-extension-system-monitor
Summary: System monitor for GNOME Shell
Group: System/GUI/GNOME
BuildArch: noarch
Recommends: gnome-system-monitor
%description -n gnome-shell-extension-system-monitor
This GNOME Shell extension displays system usage information in the top bar.
%lang_package -n %{name}-common
%prep
%autosetup -N
# Needs rebase
#patch1 -p1
# In openSUSE GNOME, we don't launch gnome-session directly, but wrap this through a shell script, /usr/bin/gnome
sed -i "s:Exec=gnome-session:Exec=gnome:g" data/gnome-classic.desktop.in
cp %{SOURCE1} .
%if 0%{?sle_version}
sed -i -e 's/openSUSE/SUSE Linux Enterprise/g' README.SUSE
%endif
%build
%meson \
-D classic_mode=true \
-D extension_set=classic \
-D enable_extensions="apps-menu,places-menu,launch-new-instance,window-list,workspace-indicator,user-theme,system-monitor,status-icons"
%meson_build
%install
%meson_install
%find_lang %{name} %{?no_lang_C}
%fdupes %{buildroot}%{_datadir}
%if 0%{?sle_version}
# Prepare for 'default.desktop' being update-alternative handled, boo#1039756
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
touch %{buildroot}%{_sysconfdir}/alternatives/default-xsession.desktop
ln -s %{_sysconfdir}/alternatives/default-xsession.desktop %{buildroot}%{_datadir}/xsessions/default.desktop
touch %{buildroot}%{_sysconfdir}/alternatives/default-waylandsession.desktop
install -d -m755 %{buildroot}%{_datadir}/wayland-sessions
ln -s %{_sysconfdir}/alternatives/default-waylandsession.desktop %{buildroot}%{_datadir}/wayland-sessions/default.desktop
%endif
%files common
%license COPYING
%doc README.SUSE HACKING.md NEWS README.md
%files -n gnome-shell-classic
%{_datadir}/glib-2.0/schemas/00_org.gnome.shell.extensions.classic.gschema.override
%{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.apps-menu.gschema.xml
%{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.window-list.gschema.xml
%{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml
%dir %{_datadir}/gnome-shell/extensions
%{_datadir}/gnome-shell/extensions/apps-menu@gnome-shell-extensions.gcampax.github.com/
%{_datadir}/gnome-shell/extensions/launch-new-instance@gnome-shell-extensions.gcampax.github.com/
%{_datadir}/gnome-shell/extensions/places-menu@gnome-shell-extensions.gcampax.github.com/
%{_datadir}/gnome-shell/extensions/workspace-indicator@gnome-shell-extensions.gcampax.github.com/
%{_datadir}/gnome-shell/extensions/window-list@gnome-shell-extensions.gcampax.github.com/
%{_datadir}/gnome-shell/extensions/status-icons@gnome-shell-extensions.gcampax.github.com/
%dir %{_datadir}/gnome-shell/modes
%{_datadir}/gnome-shell/modes/classic.json
%dir %{_datadir}/wayland-sessions
%{_datadir}/wayland-sessions/gnome-classic-wayland.desktop
%{_datadir}/wayland-sessions/gnome-classic.desktop
%{_datadir}/xsessions/gnome-classic-xorg.desktop
%{_datadir}/xsessions/gnome-classic.desktop
%if 0%{?sle_version}
%dir %{_datadir}/wayland-sessions
%{_datadir}/xsessions/default.desktop
%{_datadir}/wayland-sessions/default.desktop
%ghost %{_sysconfdir}/alternatives/default-xsession.desktop
%ghost %{_sysconfdir}/alternatives/default-waylandsession.desktop
%endif
%files -n gnome-shell-extension-user-theme
%license COPYING
%{_datadir}/gnome-shell/extensions/user-theme@gnome-shell-extensions.gcampax.github.com/
%{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.user-theme.gschema.xml
%files -n gnome-shell-extension-system-monitor
%license COPYING
%{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml
%{_datadir}/gnome-shell/extensions/system-monitor@gnome-shell-extensions.gcampax.github.com/
%files common-lang -f %{name}.lang
%changelog