Skip to content

Commit

Permalink
Merge pull request #316 from oae/gnome_47_support
Browse files Browse the repository at this point in the history
Add Gnome 47 support
  • Loading branch information
Totto16 authored Sep 26, 2024
2 parents 739a255 + 8c148b5 commit 6b199fd
Show file tree
Hide file tree
Showing 29 changed files with 830 additions and 738 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ Since Gnome 45 we had to break compatibility with previous Gnome versions, these

- Gnome Shell 45
- Gnome Shell 46
- Gnome Shell 47

## Installation

Expand Down
36 changes: 18 additions & 18 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,24 +36,24 @@
"devDependencies": {
"@commitlint/cli": "^19.3.0",
"@commitlint/config-conventional": "^19.2.2",
"@girs/adw-1": "1.5.0-4.0.0-beta.5",
"@girs/clutter-14": "14.0.0-4.0.0-beta.5",
"@girs/gda-5.0": "5.0.0-4.0.0-beta.5",
"@girs/gda-6.0": "6.0.0-4.0.0-beta.5",
"@girs/gdk-4.0": "4.0.0-4.0.0-beta.5",
"@girs/gdkpixbuf-2.0": "2.0.0-4.0.0-beta.5",
"@girs/gio-2.0": "2.80.0-4.0.0-beta.5",
"@girs/glib-2.0": "2.80.0-4.0.0-beta.5",
"@girs/gnome-shell": "46.0.0-beta9",
"@girs/gobject-2.0": "2.80.0-4.0.0-beta.5",
"@girs/graphene-1.0": "1.0.0-4.0.0-beta.5",
"@girs/gsound-1.0": "1.0.0-4.0.0-beta.5",
"@girs/gtk-4.0": "4.14.3-4.0.0-beta.5",
"@girs/meta-14": "14.0.0-4.0.0-beta.5",
"@girs/pango-1.0": "1.52.2-4.0.0-beta.5",
"@girs/shell-14": "14.0.0-4.0.0-beta.5",
"@girs/soup-3.0": "3.4.4-4.0.0-beta.5",
"@girs/st-14": "14.0.0-4.0.0-beta.5",
"@girs/adw-1": "1.6.0-4.0.0-beta.16",
"@girs/clutter-15": "15.0.0-4.0.0-beta.16",
"@girs/gda-5.0": "5.0.0-4.0.0-beta.16",
"@girs/gda-6.0": "6.0.0-4.0.0-beta.16",
"@girs/gdk-4.0": "4.0.0-4.0.0-beta.16",
"@girs/gdkpixbuf-2.0": "2.0.0-4.0.0-beta.16",
"@girs/gio-2.0": "2.82.0-4.0.0-beta.16",
"@girs/glib-2.0": "2.82.0-4.0.0-beta.16",
"@girs/gnome-shell": "47.0.0-next.4",
"@girs/gobject-2.0": "2.82.0-4.0.0-beta.16",
"@girs/graphene-1.0": "1.0.0-4.0.0-beta.16",
"@girs/gsound-1.0": "1.0.0-4.0.0-beta.16",
"@girs/gtk-4.0": "4.15.5-4.0.0-beta.16",
"@girs/meta-15": "15.0.0-4.0.0-beta.16",
"@girs/pango-1.0": "1.54.0-4.0.0-beta.16",
"@girs/shell-15": "15.0.0-4.0.0-beta.16",
"@girs/soup-3.0": "3.6.0-4.0.0-beta.16",
"@girs/st-15": "15.0.0-4.0.0-beta.16",
"@rollup/plugin-commonjs": "^25.0.8",
"@rollup/plugin-node-resolve": "^15.2.3",
"@rollup/plugin-typescript": "^11.1.6",
Expand Down
4 changes: 2 additions & 2 deletions resources/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
"description": "Next-gen Clipboard manager for Gnome Shell\n\nYou need libgda and gsound for this extension to work.\n\nFedora: sudo dnf install libgda libgda-sqlite\nArch Linux: sudo pacman -S libgda (libgda6 for gnome-43 or later)\nUbuntu/Debian: sudo apt install gir1.2-gda-5.0 gir1.2-gsound-1.0\nopenSUSE: sudo zypper install libgda-6_0-sqlite typelib-1_0-Gda-6_0 typelib-1_0-GSound-1_0",
"uuid": "[email protected]",
"gettext-domain": "[email protected]",
"version": 1001,
"version": 1002,
"donations": {
"github": "oae"
},
"settings-schema": "org.gnome.shell.extensions.pano",
"url": "https://github.com/oae/gnome-shell-pano",
"shell-version": ["45", "46"]
"shell-version": ["45", "46", "47"]
}
12 changes: 7 additions & 5 deletions rollup.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ const importsGeneral = {
'gi://Graphene?version=1.0': { name: 'gi://Graphene' },
'gi://Pango?version=1.0': { name: 'gi://Pango' },
'gi://Soup?version=3.0': { name: 'gi://Soup' },
'gi://Meta?version=14': { name: 'gi://Meta' },
'gi://Clutter?version=14': { name: 'gi://Clutter' },
'gi://Cogl?version=14': { name: 'gi://Cogl' },
'gi://Shell?version=14': { name: 'gi://Shell' },
'gi://St?version=14': { name: 'gi://St' },
'gi://Meta?version=15': { name: 'gi://Meta' },
'gi://Clutter?version=15': { name: 'gi://Clutter' },
'gi://Cogl?version=15': { name: 'gi://Cogl' },
'gi://Shell?version=15': { name: 'gi://Shell' },
'gi://St?version=15': { name: 'gi://St' },

// non core dependencies (can have version specifier!)
'gi://Gda?version=5.0': { name: 'gi://Gda?version>=5.0' }, // We officially support (it's also typed!) both 5.0 and 6.0
Expand All @@ -40,6 +40,7 @@ const importsGeneral = {
'@girs/gnome-shell/dist/ui/modalDialog': { name: 'resource://EXT_ROOT/ui/modalDialog.js' },
'@girs/gnome-shell/dist/ui/popupMenu': { name: 'resource://EXT_ROOT/ui/popupMenu.js' },
'@girs/gnome-shell/dist/ui/panelMenu': { name: 'resource://EXT_ROOT/ui/panelMenu.js' },
'@girs/gnome-shell/dist/misc/config': { name: 'resource://EXT_ROOT/misc/config.js' },
//compatibility imports
'@girs/gnome-shell-45/dist/ui/messageTray': { name: 'resource://EXT_ROOT/ui/messageTray.js' },
};
Expand All @@ -48,6 +49,7 @@ const importsGeneral = {
const importsPrefs = {
...importsGeneral,
'@girs/gnome-shell/dist/extensions/prefs': { name: 'resource://EXT_ROOT/extensions/prefs.js' },
'@custom_types/gnome-shell/dist/extensions/prefs': { name: 'resource://EXT_ROOT/extensions/prefs.js' },
};

const ExtensionEntries = Object.fromEntries(
Expand Down
2 changes: 1 addition & 1 deletion src/components/codePanoItem.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Gio from '@girs/gio-2.0';
import type { ExtensionBase } from '@girs/gnome-shell/dist/extensions/sharedInternals';
import Pango from '@girs/pango-1.0';
import St from '@girs/st-14';
import St from '@girs/st-15';
import { PanoItem } from '@pano/components/panoItem';
import { ClipboardContent, ClipboardManager, ContentType } from '@pano/utils/clipboardManager';
import { DBItem } from '@pano/utils/db';
Expand Down
4 changes: 2 additions & 2 deletions src/components/colorPanoItem.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Clutter from '@girs/clutter-14';
import Clutter from '@girs/clutter-15';
import Gio from '@girs/gio-2.0';
import type { ExtensionBase } from '@girs/gnome-shell/dist/extensions/sharedInternals';
import St from '@girs/st-14';
import St from '@girs/st-15';
import { PanoItem } from '@pano/components/panoItem';
import { ClipboardContent, ClipboardManager, ContentType } from '@pano/utils/clipboardManager';
import { DBItem } from '@pano/utils/db';
Expand Down
4 changes: 2 additions & 2 deletions src/components/emojiPanoItem.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import Clutter from '@girs/clutter-14';
import Clutter from '@girs/clutter-15';
import Gio from '@girs/gio-2.0';
import type { ExtensionBase } from '@girs/gnome-shell/dist/extensions/sharedInternals';
import Pango from '@girs/pango-1.0';
import St from '@girs/st-14';
import St from '@girs/st-15';
import { PanoItem } from '@pano/components/panoItem';
import { ClipboardContent, ClipboardManager, ContentType } from '@pano/utils/clipboardManager';
import { DBItem } from '@pano/utils/db';
Expand Down
4 changes: 2 additions & 2 deletions src/components/filePanoItem.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import Clutter from '@girs/clutter-14';
import Clutter from '@girs/clutter-15';
import Gio from '@girs/gio-2.0';
import type { ExtensionBase } from '@girs/gnome-shell/dist/extensions/sharedInternals';
import Pango from '@girs/pango-1.0';
import St from '@girs/st-14';
import St from '@girs/st-15';
import { PanoItem } from '@pano/components/panoItem';
import { ClipboardContent, ClipboardManager, ContentType, FileOperation } from '@pano/utils/clipboardManager';
import { DBItem } from '@pano/utils/db';
Expand Down
4 changes: 2 additions & 2 deletions src/components/imagePanoItem.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Clutter from '@girs/clutter-14';
import Clutter from '@girs/clutter-15';
import Gio from '@girs/gio-2.0';
import type { ExtensionBase } from '@girs/gnome-shell/dist/extensions/sharedInternals';
import St from '@girs/st-14';
import St from '@girs/st-15';
import { PanoItem } from '@pano/components/panoItem';
import { ClipboardContent, ClipboardManager, ContentType } from '@pano/utils/clipboardManager';
import { DBItem } from '@pano/utils/db';
Expand Down
4 changes: 2 additions & 2 deletions src/components/indicator/clearHistoryDialog.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import Clutter from '@girs/clutter-14';
import Clutter from '@girs/clutter-15';
import type { ExtensionBase } from '@girs/gnome-shell/dist/extensions/sharedInternals';
import { MessageDialogContent } from '@girs/gnome-shell/dist/ui/dialog';
import { ModalDialog } from '@girs/gnome-shell/dist/ui/modalDialog';
import type St from '@girs/st-14';
import type St from '@girs/st-15';
import { registerGObjectClass } from '@pano/utils/gjs';
import { gettext, logger } from '@pano/utils/shell';
const debug = logger('clear-history-dialog');
Expand Down
4 changes: 2 additions & 2 deletions src/components/indicator/settingsMenu.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import Clutter from '@girs/clutter-14';
import Clutter from '@girs/clutter-15';
import Gio from '@girs/gio-2.0';
import type { Extension } from '@girs/gnome-shell/dist/extensions/extension';
import { Button as PanelMenuButton } from '@girs/gnome-shell/dist/ui/panelMenu';
Expand All @@ -9,7 +9,7 @@ import {
PopupSwitchMenuItem,
} from '@girs/gnome-shell/dist/ui/popupMenu';
import GObject from '@girs/gobject-2.0';
import St from '@girs/st-14';
import St from '@girs/st-15';
import { ClearHistoryDialog } from '@pano/components/indicator/clearHistoryDialog';
import { registerGObjectClass, SignalRepresentationType, SignalsDefinition } from '@pano/utils/gjs';
import { ICON_PACKS } from '@pano/utils/panoItemType';
Expand Down
4 changes: 2 additions & 2 deletions src/components/linkPanoItem.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import Clutter from '@girs/clutter-14';
import Clutter from '@girs/clutter-15';
import Gio from '@girs/gio-2.0';
import GLib from '@girs/glib-2.0';
import type { ExtensionBase } from '@girs/gnome-shell/dist/extensions/sharedInternals';
import St from '@girs/st-14';
import St from '@girs/st-15';
import { PanoItem } from '@pano/components/panoItem';
import { ClipboardContent, ClipboardManager, ContentType } from '@pano/utils/clipboardManager';
import { DBItem } from '@pano/utils/db';
Expand Down
8 changes: 4 additions & 4 deletions src/components/monitorBox.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import Clutter from '@girs/clutter-14';
import Clutter from '@girs/clutter-15';
import { MonitorConstraint } from '@girs/gnome-shell/dist/ui/layout';
import { Lightbox } from '@girs/gnome-shell/dist/ui/lightbox';
import * as main from '@girs/gnome-shell/dist/ui/main';
import GObject from '@girs/gobject-2.0';
import Shell from '@girs/shell-14';
import St from '@girs/st-14';
import Shell from '@girs/shell-15';
import St from '@girs/st-15';
import { registerGObjectClass } from '@pano/utils/gjs';

interface MonitorBoxSignals {
Expand Down Expand Up @@ -60,7 +60,7 @@ export class MonitorBox extends St.BoxLayout {

const _eventBlocker = new Clutter.Actor({ reactive: true });
backgroundStack.add_child(_eventBlocker);
main.uiGroup.add_child(this);
main.layoutManager.uiGroup.add_child(this);
}

open() {
Expand Down
8 changes: 4 additions & 4 deletions src/components/panoItem.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import Clutter from '@girs/clutter-14';
import Clutter from '@girs/clutter-15';
import Gio from '@girs/gio-2.0';
import GLib from '@girs/glib-2.0';
import type { ExtensionBase } from '@girs/gnome-shell/dist/extensions/sharedInternals';
import GObject from '@girs/gobject-2.0';
import Graphene from '@girs/graphene-1.0';
import Meta from '@girs/meta-14';
import Shell from '@girs/shell-14';
import St from '@girs/st-14';
import Meta from '@girs/meta-15';
import Shell from '@girs/shell-15';
import St from '@girs/st-15';
import { PanoItemHeader } from '@pano/components/panoItemHeader';
import { ClipboardManager } from '@pano/utils/clipboardManager';
import { DBItem } from '@pano/utils/db';
Expand Down
6 changes: 3 additions & 3 deletions src/components/panoItemHeader.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import Clutter from '@girs/clutter-14';
import Clutter from '@girs/clutter-15';
import Gio from '@girs/gio-2.0';
import GLib from '@girs/glib-2.0';
import type { ExtensionBase } from '@girs/gnome-shell/dist/extensions/sharedInternals';
import GObject from '@girs/gobject-2.0';
import Shell from '@girs/shell-14';
import St from '@girs/st-14';
import Shell from '@girs/shell-15';
import St from '@girs/st-15';
import { registerGObjectClass, SignalsDefinition } from '@pano/utils/gjs';
import { ICON_PACKS, IPanoItemType } from '@pano/utils/panoItemType';
import { getCurrentExtensionSettings } from '@pano/utils/shell';
Expand Down
6 changes: 3 additions & 3 deletions src/components/panoScrollView.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import '@girs/gnome-shell/dist/extensions/global';

import Clutter from '@girs/clutter-14';
import Clutter from '@girs/clutter-15';
import Gio from '@girs/gio-2.0';
import type { ExtensionBase } from '@girs/gnome-shell/dist/extensions/sharedInternals';
import GObject from '@girs/gobject-2.0';
import Shell from '@girs/shell-14';
import St from '@girs/st-14';
import Shell from '@girs/shell-15';
import St from '@girs/st-15';
import { PanoItem } from '@pano/components/panoItem';
import { SearchBox } from '@pano/components/searchBox';
import { ClipboardContent, ClipboardManager } from '@pano/utils/clipboardManager';
Expand Down
8 changes: 4 additions & 4 deletions src/components/searchBox.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import Clutter from '@girs/clutter-14';
import Clutter from '@girs/clutter-15';
import Gio from '@girs/gio-2.0';
import type { ExtensionBase } from '@girs/gnome-shell/dist/extensions/sharedInternals';
import GObject from '@girs/gobject-2.0';
import Meta from '@girs/meta-14';
import Shell from '@girs/shell-14';
import St from '@girs/st-14';
import Meta from '@girs/meta-15';
import Shell from '@girs/shell-15';
import St from '@girs/st-15';
import { ItemType } from '@pano/utils/db';
import { registerGObjectClass, SignalRepresentationType, SignalsDefinition } from '@pano/utils/gjs';
import { getPanoItemTypes, ICON_PACKS } from '@pano/utils/panoItemType';
Expand Down
2 changes: 1 addition & 1 deletion src/components/textPanoItem.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Gio from '@girs/gio-2.0';
import type { ExtensionBase } from '@girs/gnome-shell/dist/extensions/sharedInternals';
import Pango from '@girs/pango-1.0';
import St from '@girs/st-14';
import St from '@girs/st-15';
import { PanoItem } from '@pano/components/panoItem';
import { ClipboardContent, ClipboardManager, ContentType } from '@pano/utils/clipboardManager';
import { DBItem } from '@pano/utils/db';
Expand Down
6 changes: 3 additions & 3 deletions src/containers/panoWindow.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import '@girs/gnome-shell/dist/extensions/global';

import Clutter from '@girs/clutter-14';
import Clutter from '@girs/clutter-15';
import Gio from '@girs/gio-2.0';
import type { ExtensionBase } from '@girs/gnome-shell/dist/extensions/sharedInternals';
import Shell from '@girs/shell-14';
import St from '@girs/st-14';
import Shell from '@girs/shell-15';
import St from '@girs/st-15';
import { MonitorBox } from '@pano/components/monitorBox';
import { PanoScrollView } from '@pano/components/panoScrollView';
import { SearchBox } from '@pano/components/searchBox';
Expand Down
4 changes: 2 additions & 2 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ import Gio from '@girs/gio-2.0';
import GLib from '@girs/glib-2.0';
import { Extensions } from '@girs/gnome-shell';
import type { ExtensionMetadata } from '@girs/gnome-shell/dist/types/extension-metadata';
import Shell from '@girs/shell-14';
import Shell from '@girs/shell-15';
const { Extension } = Extensions.extension;
import Meta from '@girs/meta-14';
import Meta from '@girs/meta-15';
import PanoIndicator from '@pano/components/indicator';
import { PanoWindow } from '@pano/containers/panoWindow';
import { ClipboardContent, ClipboardManager, ContentType } from '@pano/utils/clipboardManager';
Expand Down
10 changes: 10 additions & 0 deletions src/prefs/prefs.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { ExtensionPreferences as ExtensionPreferencesOriginal } from '@girs/gnome-shell/dist/extensions/prefs';
export { gettext, ngettext, pgettext } from '@girs/gnome-shell/dist/extensions/prefs';

export class ExtensionPreferences extends ExtensionPreferencesOriginal {
/**
* @description This is only the type, that overrides the original one, so that we have backwards compatibility
* This returns "Promise<void> | void" instead of just "Promise<void>"
*/
fillPreferencesWindow(window: Adw.PreferencesWindow): Promise<void> | void;
}
14 changes: 12 additions & 2 deletions src/prefs/prefs.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import { ExtensionPreferences, gettext as _ } from '@custom_types/gnome-shell/dist/extensions/prefs';
import Adw from '@girs/adw-1';
import Gdk4 from '@girs/gdk-4.0';
import { ExtensionPreferences, gettext as _ } from '@girs/gnome-shell/dist/extensions/prefs';
import Gtk4 from '@girs/gtk-4.0';
import { CustomizationPage } from '@pano/prefs/customization';
import { DangerZonePage } from '@pano/prefs/dangerZone';
import { GeneralPage } from '@pano/prefs/general';
import { isGnome47 } from '@pano/utils/compatibility';

export default class PanoExtensionPreferences extends ExtensionPreferences {
override fillPreferencesWindow(window: Adw.PreferencesWindow) {
override fillPreferencesWindow(window: Adw.PreferencesWindow): Promise<void> | void {
window.add(new GeneralPage(this));
window.add(new CustomizationPage(this));
window.add(new DangerZonePage(this));
Expand All @@ -17,5 +18,14 @@ export default class PanoExtensionPreferences extends ExtensionPreferences {
if (display) {
Gtk4.IconTheme.get_for_display(display).add_search_path(`${this.path}/icons/`);
}

/**
* gnome 47 explicitly states, that we need to return a Promise, so we check the version at runtime and decide what to return, to support older versions of gnome shell, that don't expected a promise here
* @see https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/extensions/prefs.js#L34
*/
if (isGnome47()) {
return Promise.resolve();
}
return;
}
}
6 changes: 3 additions & 3 deletions src/utils/clipboardManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import Gio from '@girs/gio-2.0';
import GLib from '@girs/glib-2.0';
import type { ExtensionBase } from '@girs/gnome-shell/dist/extensions/sharedInternals';
import GObject from '@girs/gobject-2.0';
import Meta from '@girs/meta-14';
import Shell from '@girs/shell-14';
import St from '@girs/st-14';
import Meta from '@girs/meta-15';
import Shell from '@girs/shell-15';
import St from '@girs/st-15';
import { registerGObjectClass, SignalRepresentationType } from '@pano/utils/gjs';
import { debounce, getCurrentExtensionSettings, logger } from '@pano/utils/shell';

Expand Down
Loading

0 comments on commit 6b199fd

Please sign in to comment.