diff --git a/appIcons.js b/appIcons.js
index 2f5e647..01be947 100644
--- a/appIcons.js
+++ b/appIcons.js
@@ -23,27 +23,23 @@
import Clutter from 'gi://Clutter';
+import Gio from 'gi://GLib';
import Gio from 'gi://Gio';
-import GLib from 'gi://GLib';
import Graphene from 'gi://Graphene';
-import Gtk from 'gi://Gtk';
import GObject from 'gi://GObject';
import Mtk from 'gi://Mtk';
import Shell from 'gi://Shell';
import St from 'gi://St';
-import * as Config from 'resource:///org/gnome/shell/misc/config.js';
import * as AppDisplay from 'resource:///org/gnome/shell/ui/appDisplay.js';
import * as AppMenu from 'resource:///org/gnome/shell/ui/appMenu.js';
-import * as AppFavorites from 'resource:///org/gnome/shell/ui/appFavorites.js';
import * as Dash from 'resource:///org/gnome/shell/ui/dash.js';
import * as DND from 'resource:///org/gnome/shell/ui/dnd.js';
-import * as IconGrid from 'resource:///org/gnome/shell/ui/iconGrid.js';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
import * as Util from 'resource:///org/gnome/shell/misc/util.js';
-import * as Workspace from 'resource:///org/gnome/shell/ui/workspace.js';
import * as BoxPointer from 'resource:///org/gnome/shell/ui/boxpointer.js';
+import {EventEmitter} from 'resource:///org/gnome/shell/misc/signals.js';
import * as Utils from './utils.js';
import * as PanelSettings from './panelSettings.js';
@@ -52,9 +48,6 @@ import * as Progress from './progress.js';
import {DTP_EXTENSION, SETTINGS, DESKTOPSETTINGS, EXTENSION_PATH} from './extension.js';
import {gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
-const Mainloop = imports.mainloop;
-const {signals: Signals} = imports;
-
//timeout names
const T2 = 'mouseScrollTimeout';
const T3 = 'showDotsTimeout';
@@ -68,7 +61,7 @@ const DOUBLE_CLICK_DELAY_MS = 450;
let LABEL_GAP = 5;
let MAX_INDICATORS = 4;
-export var DEFAULT_PADDING_SIZE = 4;
+export const DEFAULT_PADDING_SIZE = 4;
let DOT_STYLE = {
DOTS: "DOTS",
@@ -108,7 +101,7 @@ let tracker = Shell.WindowTracker.get_default();
*
*/
-export var TaskbarAppIcon = GObject.registerClass({
+export const TaskbarAppIcon = GObject.registerClass({
}, class TaskbarAppIcon extends AppDisplay.AppIcon {
_init(appInfo, panel, iconParams, previewMenu, iconAnimator) {
@@ -585,7 +578,7 @@ export var TaskbarAppIcon = GObject.registerClass({
let highlightMargin = this._focusedIsWide ? SETTINGS.get_int('dot-size') : 0;
if(!this.window) {
- let containerWidth = this._dtpIconContainer.get_width() / Utils.getScaleFactor();;
+ let containerWidth = this._dtpIconContainer.get_width() / Utils.getScaleFactor();
let backgroundSize = containerWidth + "px " +
(containerWidth - (pos == DOT_POSITION.BOTTOM ? highlightMargin : 0)) + "px;";
@@ -1342,9 +1335,10 @@ export function cycleThroughWindows(app, reversed, shouldMinimize, monitor) {
app_windows.push("MINIMIZE");
if (recentlyClickedAppLoopId > 0)
- Mainloop.source_remove(recentlyClickedAppLoopId);
+ GLib.Source.remove(recentlyClickedAppLoopId);
- recentlyClickedAppLoopId = Mainloop.timeout_add(MEMORY_TIME, resetRecentlyClickedApp);
+ recentlyClickedAppLoopId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
+ MEMORY_TIME, resetRecentlyClickedApp);
// If there isn't already a list of windows for the current app,
// or the stored list is outdated, use the current windows list.
@@ -1374,7 +1368,7 @@ export function cycleThroughWindows(app, reversed, shouldMinimize, monitor) {
export function resetRecentlyClickedApp() {
if (recentlyClickedAppLoopId > 0)
- Mainloop.source_remove(recentlyClickedAppLoopId);
+ GLib.Source.remove(recentlyClickedAppLoopId);
recentlyClickedAppLoopId=0;
recentlyClickedApp =null;
@@ -1418,10 +1412,10 @@ export function getInterestingWindows(app, monitor, isolateMonitors) {
}
export function cssHexTocssRgba(cssHex, opacity) {
- var bigint = parseInt(cssHex.slice(1), 16);
- var r = (bigint >> 16) & 255;
- var g = (bigint >> 8) & 255;
- var b = bigint & 255;
+ let bigint = parseInt(cssHex.slice(1), 16);
+ let r = (bigint >> 16) & 255;
+ let g = (bigint >> 8) & 255;
+ let b = bigint & 255;
return 'rgba(' + [r, g, b].join(',') + ',' + opacity + ')';
}
@@ -1497,11 +1491,14 @@ export class TaskbarSecondaryMenu extends AppMenu.AppMenu {
if (windows.length == this._app.get_windows().length)
this._app.request_quit()
+
+ GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => {
+ windows.forEach((w) => !!w.get_compositor_private() && w.delete(time++));
- Mainloop.idle_add(() =>
- windows.forEach((w) => !!w.get_compositor_private() && w.delete(time++)))
+ return GLib.SOURCE_REMOVE;
+ });
}
-};
+}
/**
* This function is used for extendDashItemContainer
@@ -1573,7 +1570,7 @@ export function ItemShowLabel() {
time: duration,
transition: 'easeOutQuad',
});
-};
+}
/**
* A wrapper class around the ShowAppsIcon class.
@@ -1587,9 +1584,11 @@ export function ItemShowLabel() {
* use of this class in place of the original showAppsButton.
*
*/
-export var ShowAppsIconWrapper = class {
+export const ShowAppsIconWrapper = class extends EventEmitter {
constructor(dtpPanel) {
+ super();
+
this.realShowAppsIcon = new Dash.ShowAppsIcon();
/* the variable equivalent to toggleButton has a different name in the appIcon class
@@ -1731,12 +1730,11 @@ export var ShowAppsIconWrapper = class {
this.realShowAppsIcon.destroy();
}
};
-Signals.addSignalMethods(ShowAppsIconWrapper.prototype);
/**
* A menu for the showAppsIcon
*/
-export var MyShowAppsIconMenu = class extends PopupMenu.PopupMenu {
+export const MyShowAppsIconMenu = class extends PopupMenu.PopupMenu {
constructor(actor, dtpPanel) {
super(actor, 0, dtpPanel.getPosition());
@@ -1835,7 +1833,7 @@ export var MyShowAppsIconMenu = class extends PopupMenu.PopupMenu {
// Only add menu entries for commands that exist in path
_appendItem(info) {
- if (Utils.checkIfCommandExists(info.cmd[0])) {
+ if (GLib.find_program_in_path(info.cmd[0])) {
let item = this._appendMenuItem(_(info.title));
item.connect('activate', function() {
@@ -1853,7 +1851,7 @@ export var MyShowAppsIconMenu = class extends PopupMenu.PopupMenu {
return;
}
- for (var entry = 0; entry < commandList.length; entry++) {
+ for (let entry = 0; entry < commandList.length; entry++) {
_appendItem({
title: titleList[entry],
cmd: commandList[entry].split(' ')
@@ -1875,7 +1873,7 @@ export var MyShowAppsIconMenu = class extends PopupMenu.PopupMenu {
};
-export var getIconContainerStyle = function(isVertical) {
+export const getIconContainerStyle = function(isVertical) {
let style = 'padding: ';
if (SETTINGS.get_boolean('group-apps')) {
diff --git a/desktopIconsIntegration.js b/desktopIconsIntegration.js
index c308b2c..9a93d07 100644
--- a/desktopIconsIntegration.js
+++ b/desktopIconsIntegration.js
@@ -64,7 +64,7 @@ import * as ExtensionUtils from 'resource:///org/gnome/shell/misc/extensionUtils
const IDENTIFIER_UUID = "130cbc66-235c-4bd6-8571-98d2d8bba5e2";
-export var DesktopIconsUsableAreaClass = class {
+export const DesktopIconsUsableAreaClass = class {
constructor() {
this._extensionManager = Main.extensionManager;
this._timedMarginsID = 0;
diff --git a/extension.js b/extension.js
index b270333..f732d3a 100644
--- a/extension.js
+++ b/extension.js
@@ -18,37 +18,31 @@
*/
-import * as Main from 'resource:///org/gnome/shell/ui/main.js';
-import Meta from 'gi://Meta';
import Gio from 'gi://Gio';
-import GLib from 'gi://GLib';
-import Shell from 'gi://Shell';
-import St from 'gi://St';
-import * as WindowManager from 'resource:///org/gnome/shell/ui/windowManager.js';
-import * as ExtensionUtils from 'resource:///org/gnome/shell/misc/extensionUtils.js';;
+
+import * as Main from 'resource:///org/gnome/shell/ui/main.js';
+import {EventEmitter} from 'resource:///org/gnome/shell/misc/signals.js';
+import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
import * as PanelManager from './panelManager.js';
import * as Utils from './utils.js';
import * as AppIcons from './appIcons.js';
-import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
-
-const Mainloop = imports.mainloop;
-const {signals: Signals} = imports;
const UBUNTU_DOCK_UUID = 'ubuntu-dock@ubuntu.com';
let panelManager;
let extensionChangedHandler;
+let startupCompleteHandler;
let disabledUbuntuDock;
let extensionSystem = Main.extensionManager;
-export var DTP_EXTENSION = null;
-export var SETTINGS = null;
-export var DESKTOPSETTINGS = null;
-export var PERSISTENTSTORAGE = null;
-export var EXTENSION_UUID = null;
-export var EXTENSION_PATH = null;
+export let DTP_EXTENSION = null;
+export let SETTINGS = null;
+export let DESKTOPSETTINGS = null;
+export let PERSISTENTSTORAGE = null;
+export let EXTENSION_UUID = null;
+export let EXTENSION_PATH = null;
export default class DashToPanelExtension extends Extension {
constructor(metadata) {
@@ -56,8 +50,6 @@ export default class DashToPanelExtension extends Extension {
console.log(`Initiating ${this.uuid}`);
this._realHasOverview = Main.sessionMode.hasOverview;
-
- this.initTranslations();
//create an object that persists until gnome-shell is restarted, even if the extension is disabled
PERSISTENTSTORAGE = {};
@@ -76,8 +68,7 @@ export default class DashToPanelExtension extends Extension {
});
//create a global object that can emit signals and conveniently expose functionalities to other extensions
- global.dashToPanel = {};
- Signals.addSignalMethods(global.dashToPanel);
+ global.dashToPanel = new EventEmitter();
_enable(this);
}
@@ -87,6 +78,7 @@ export default class DashToPanelExtension extends Extension {
DTP_EXTENSION = null;
SETTINGS = null;
+ DESKTOPSETTINGS = null;
panelManager = null;
if (!reset) {
@@ -101,14 +93,17 @@ export default class DashToPanelExtension extends Extension {
AppIcons.resetRecentlyClickedApp();
}
+ if (startupCompleteHandler) {
+ Main.layoutManager.disconnect(startupCompleteHandler);
+ startupCompleteHandler = null;
+ }
+
Main.sessionMode.hasOverview = this._realHasOverview;
}
}
function _enable(extension) {
- let ubuntuDock = Main.extensionManager ?
- Main.extensionManager.lookup(UBUNTU_DOCK_UUID) : //gnome-shell >= 3.33.4
- ExtensionUtils.extensions[UBUNTU_DOCK_UUID];
+ let ubuntuDock = Main.extensionManager.lookup(UBUNTU_DOCK_UUID);
if (ubuntuDock && ubuntuDock.stateObj && ubuntuDock.stateObj.dockManager) {
// Disable Ubuntu Dock
@@ -122,14 +117,14 @@ function _enable(extension) {
//reset to prevent conflicts with the ubuntu-dock
if (panelManager) {
- disable(true);
+ extension.disable(true);
}
}
if (panelManager) return; //already initialized
SETTINGS = extension.getSettings('org.gnome.shell.extensions.dash-to-panel');
- DESKTOPSETTINGS = extension.getSettings('org.gnome.desktop.interface');
+ DESKTOPSETTINGS = new Gio.Settings({schema_id: 'org.gnome.desktop.interface'});
EXTENSION_UUID = extension.uuid
EXTENSION_PATH = extension.path
@@ -137,7 +132,7 @@ function _enable(extension) {
if (SETTINGS.get_boolean('hide-overview-on-startup') && Main.layoutManager._startingUp) {
Main.sessionMode.hasOverview = false;
- Main.layoutManager.connect('startup-complete', () => {
+ startupCompleteHandler = Main.layoutManager.connect('startup-complete', () => {
Main.sessionMode.hasOverview = extension._realHasOverview
});
}
diff --git a/intellihide.js b/intellihide.js
index d35ade4..e47171f 100644
--- a/intellihide.js
+++ b/intellihide.js
@@ -26,7 +26,6 @@ import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import * as OverviewControls from 'resource:///org/gnome/shell/ui/overviewControls.js';
import * as PointerWatcher from 'resource:///org/gnome/shell/ui/pointerWatcher.js';
-import * as Panel from './panel.js';
import * as Proximity from './proximity.js';
import * as Utils from './utils.js';
import {SETTINGS} from './extension.js';
@@ -43,15 +42,15 @@ const T2 = 'limitUpdateTimeout';
const T3 = 'postAnimateTimeout';
const T4 = 'panelBoxClipTimeout';
-var SIDE_CONTROLS_ANIMATION_TIME = OverviewControls.SIDE_CONTROLS_ANIMATION_TIME / (OverviewControls.SIDE_CONTROLS_ANIMATION_TIME > 1 ? 1000 : 1);
+const SIDE_CONTROLS_ANIMATION_TIME = OverviewControls.SIDE_CONTROLS_ANIMATION_TIME / (OverviewControls.SIDE_CONTROLS_ANIMATION_TIME > 1 ? 1000 : 1);
-export var Hold = {
+export const Hold = {
NONE: 0,
TEMPORARY: 1,
PERMANENT: 2
};
-export var Intellihide = class {
+export const Intellihide = class {
constructor(dtpPanel) {
this._dtpPanel = dtpPanel;
@@ -424,4 +423,4 @@ export var Intellihide = class {
this._hoveredOut = false;
}
-}
\ No newline at end of file
+}
diff --git a/overview.js b/overview.js
index 22626e0..9ce980f 100644
--- a/overview.js
+++ b/overview.js
@@ -28,13 +28,10 @@ import Gio from 'gi://Gio';
import Shell from 'gi://Shell';
import St from 'gi://St';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
-import * as Workspace from 'resource:///org/gnome/shell/ui/workspace.js';
import * as WindowManager from 'resource:///org/gnome/shell/ui/windowManager.js';
import {WindowPreview} from 'resource:///org/gnome/shell/ui/windowPreview.js';
import {SETTINGS} from './extension.js';
-import Meta from 'gi://Meta';
-
const GS_HOTKEYS_KEY = 'switch-to-application-';
// When the dash is shown, workspace window preview bottom labels go over it (default
@@ -46,7 +43,7 @@ const LABEL_MARGIN = 60;
const T1 = 'swipeEndTimeout';
const T2 = 'numberOverlayTimeout';
-export var Overview = class {
+export const Overview = class {
constructor() {
this._numHotkeys = 10;
@@ -518,4 +515,4 @@ export var Overview = class {
return true;
}
-}
\ No newline at end of file
+}
diff --git a/panel.js b/panel.js
index 35a36ba..cb88701 100644
--- a/panel.js
+++ b/panel.js
@@ -28,8 +28,6 @@
*/
import Clutter from 'gi://Clutter';
-import * as Config from 'resource:///org/gnome/shell/misc/config.js';
-import Gtk from 'gi://Gtk';
import GObject from 'gi://GObject';
import * as AppIcons from './appIcons.js';
import * as Utils from './utils.js';
@@ -43,13 +41,11 @@ import * as Dash from 'resource:///org/gnome/shell/ui/dash.js';
import * as CtrlAltTab from 'resource:///org/gnome/shell/ui/ctrlAltTab.js';
import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
import St from 'gi://St';
-import GLib from 'gi://GLib';
import Meta from 'gi://Meta';
import Pango from 'gi://Pango';
import * as DND from 'resource:///org/gnome/shell/ui/dnd.js';
import Shell from 'gi://Shell';
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
-import * as IconGrid from 'resource:///org/gnome/shell/ui/iconGrid.js';
import * as DateMenu from 'resource:///org/gnome/shell/ui/dateMenu.js';
import * as Volume from 'resource:///org/gnome/shell/ui/status/volume.js';
import * as Progress from './progress.js';
@@ -59,11 +55,8 @@ import * as Transparency from './transparency.js';
import {SETTINGS, DESKTOPSETTINGS, PERSISTENTSTORAGE} from './extension.js';
import {gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
-const Mainloop = imports.mainloop;
-const Gi = imports._gi;
-
let tracker = Shell.WindowTracker.get_default();
-export var panelBoxes = ['_leftBox', '_centerBox', '_rightBox'];
+export const panelBoxes = ['_leftBox', '_centerBox', '_rightBox'];
//timeout names
const T2 = 'startIntellihideTimeout';
@@ -72,7 +65,7 @@ const T5 = 'trackerFocusAppTimeout';
const T6 = 'scrollPanelDelayTimeout';
const T7 = 'waitPanelBoxAllocation';
-export var Panel = GObject.registerClass({
+export const Panel = GObject.registerClass({
}, class Panel extends St.Widget {
_init(panelManager, monitor, panelBox, isStandalone) {
@@ -1230,7 +1223,7 @@ export var Panel = GObject.registerClass({
return;
}
- var scrollDelay = SETTINGS.get_int('scroll-panel-delay');
+ const scrollDelay = SETTINGS.get_int('scroll-panel-delay');
if (scrollDelay) {
this._timeoutsHandler.add([T6, scrollDelay, () => {}]);
@@ -1256,7 +1249,7 @@ export var Panel = GObject.registerClass({
}
});
-export var SecondaryPanel = GObject.registerClass({
+export const SecondaryPanel = GObject.registerClass({
}, class SecondaryPanel extends St.Widget {
_init(params) {
@@ -1266,4 +1259,4 @@ export var SecondaryPanel = GObject.registerClass({
vfunc_allocate(box) {
this.set_allocation(box);
}
-});
\ No newline at end of file
+});
diff --git a/panelManager.js b/panelManager.js
index 1dd45e1..48578e2 100755
--- a/panelManager.js
+++ b/panelManager.js
@@ -31,7 +31,6 @@ import * as Overview from './overview.js';
import * as Panel from './panel.js';
import * as PanelSettings from './panelSettings.js';
import * as Proximity from './proximity.js';
-import * as Taskbar from './taskbar.js';
import * as Utils from './utils.js';
import * as DesktopIconsIntegration from './desktopIconsIntegration.js';
@@ -42,21 +41,16 @@ import Meta from 'gi://Meta';
import Shell from 'gi://Shell';
import St from 'gi://St';
-import * as AppDisplay from 'resource:///org/gnome/shell/ui/appDisplay.js';
import * as BoxPointer from 'resource:///org/gnome/shell/ui/boxpointer.js';
-import * as Dash from 'resource:///org/gnome/shell/ui/dash.js';
-import * as IconGrid from 'resource:///org/gnome/shell/ui/iconGrid.js';
import * as LookingGlass from 'resource:///org/gnome/shell/ui/lookingGlass.js';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
import * as Layout from 'resource:///org/gnome/shell/ui/layout.js';
-import * as WM from 'resource:///org/gnome/shell/ui/windowManager.js';
import {SETTINGS} from './extension.js';
import {SecondaryMonitorDisplay, WorkspacesView} from 'resource:///org/gnome/shell/ui/workspacesView.js';
-const Gi = imports._gi;
-export var PanelManager = class {
+export const PanelManager = class {
constructor() {
this.overview = new Overview.Overview();
@@ -529,7 +523,7 @@ export var PanelManager = class {
// This class drives long-running icon animations, to keep them running in sync
// with each other.
-export var IconAnimator = class {
+export const IconAnimator = class {
constructor(actor) {
this._count = 0;
diff --git a/panelPositions.js b/panelPositions.js
index 37bffc2..a970bdd 100644
--- a/panelPositions.js
+++ b/panelPositions.js
@@ -15,31 +15,31 @@
* along with this program. If not, see .
*/
-export var SHOW_APPS_BTN = 'showAppsButton';
-export var ACTIVITIES_BTN = 'activitiesButton';
-export var TASKBAR = 'taskbar';
-export var DATE_MENU = 'dateMenu';
-export var SYSTEM_MENU = 'systemMenu';
-export var LEFT_BOX = 'leftBox';
-export var CENTER_BOX = 'centerBox';
-export var RIGHT_BOX = 'rightBox';
-export var DESKTOP_BTN = 'desktopButton';
+export const SHOW_APPS_BTN = 'showAppsButton';
+export const ACTIVITIES_BTN = 'activitiesButton';
+export const TASKBAR = 'taskbar';
+export const DATE_MENU = 'dateMenu';
+export const SYSTEM_MENU = 'systemMenu';
+export const LEFT_BOX = 'leftBox';
+export const CENTER_BOX = 'centerBox';
+export const RIGHT_BOX = 'rightBox';
+export const DESKTOP_BTN = 'desktopButton';
-export var STACKED_TL = 'stackedTL';
-export var STACKED_BR = 'stackedBR';
-export var CENTERED = 'centered';
-export var CENTERED_MONITOR = 'centerMonitor';
+export const STACKED_TL = 'stackedTL';
+export const STACKED_BR = 'stackedBR';
+export const CENTERED = 'centered';
+export const CENTERED_MONITOR = 'centerMonitor';
-export var TOP = 'TOP';
-export var BOTTOM = 'BOTTOM';
-export var LEFT = 'LEFT';
-export var RIGHT = 'RIGHT';
+export const TOP = 'TOP';
+export const BOTTOM = 'BOTTOM';
+export const LEFT = 'LEFT';
+export const RIGHT = 'RIGHT';
-export var START = 'START';
-export var MIDDLE = 'MIDDLE';
-export var END = 'END';
+export const START = 'START';
+export const MIDDLE = 'MIDDLE';
+export const END = 'END';
-export var defaults = [
+export const defaults = [
{ element: SHOW_APPS_BTN, visible: true, position: STACKED_TL },
{ element: ACTIVITIES_BTN, visible: false, position: STACKED_TL },
{ element: LEFT_BOX, visible: true, position: STACKED_TL },
@@ -51,11 +51,11 @@ export var defaults = [
{ element: DESKTOP_BTN, visible: true, position: STACKED_BR },
];
-export var optionDialogFunctions = {};
+export const optionDialogFunctions = {};
optionDialogFunctions[SHOW_APPS_BTN] = '_showShowAppsButtonOptions';
optionDialogFunctions[DESKTOP_BTN] = '_showDesktopButtonOptions';
export function checkIfCentered(position) {
return position == CENTERED || position == CENTERED_MONITOR;
-}
\ No newline at end of file
+}
diff --git a/panelStyle.js b/panelStyle.js
index c1d4452..e4b1f8e 100644
--- a/panelStyle.js
+++ b/panelStyle.js
@@ -21,19 +21,11 @@
* mathematical.coffee@gmail.com
*/
-import * as ExtensionUtils from 'resource:///org/gnome/shell/misc/extensionUtils.js';;
-import * as Main from 'resource:///org/gnome/shell/ui/main.js';
-import St from 'gi://St';
-import Shell from 'gi://Shell';
-
-import * as Panel from './panel.js';
-import * as Taskbar from './taskbar.js';
import * as Utils from './utils.js';
import {SETTINGS} from './extension.js';
-const Mainloop = imports.mainloop;
-export var PanelStyle = class {
+export const PanelStyle = class {
enable(panel) {
this.panel = panel;
diff --git a/prefs.js b/prefs.js
index 2e78629..6da427e 100644
--- a/prefs.js
+++ b/prefs.js
@@ -25,7 +25,6 @@ import Gio from 'gi://Gio';
import GLib from 'gi://GLib';
import GObject from 'gi://GObject';
import Gtk from 'gi://Gtk';
-import Adw from 'gi://Adw';
import Gdk from 'gi://Gdk';
import * as PanelSettings from './panelSettings.js';
@@ -33,10 +32,6 @@ import * as Pos from './panelPositions.js';
import {ExtensionPreferences, gettext as _, ngettext} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
-const Mainloop = imports.mainloop;
-
-const N_ = function(e) { return e };
-
const SCALE_UPDATE_TIMEOUT = 500;
const DEFAULT_PANEL_SIZES = [ 128, 96, 64, 48, 32, 24, 16 ];
const DEFAULT_FONT_SIZES = [ 96, 64, 48, 32, 24, 16, 0 ];
@@ -147,14 +142,14 @@ function checkHotkeyPrefix(settings) {
}
function mergeObjects(main, bck) {
- for (var prop in bck) {
+ for (const prop in bck) {
if (!main.hasOwnProperty(prop) && bck.hasOwnProperty(prop)) {
main[prop] = bck[prop];
}
}
return main;
-};
+}
const Preferences = class {
@@ -1938,7 +1933,7 @@ const Preferences = class {
{objectName: 'panel_length_scale', valueName: '', range: LENGTH_MARKS }
];
- for(var idx in sizeScales) {
+ for(const idx in sizeScales) {
let size_scale = this._builder.get_object(sizeScales[idx].objectName);
let range = sizeScales[idx].range;
size_scale.set_range(range[range.length - 1], range[0]);
@@ -2228,9 +2223,9 @@ const BuilderScope = GObject.registerClass({
panel_size_scale_value_changed_cb(scale) {
// Avoid settings the size continuously
if (this._preferences._panel_size_timeout > 0)
- Mainloop.source_remove(this._preferences._panel_size_timeout);
+ GLib.Source.remove(this._preferences._panel_size_timeout);
- this._preferences._panel_size_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, (() => {
+ this._preferences._panel_size_timeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, SCALE_UPDATE_TIMEOUT, () => {
const value = scale.get_value();
const monitorSync = this._preferences._settings.get_boolean('panel-element-positions-monitors-sync');
const monitorsToSetFor = monitorSync ? this._preferences.monitors : [this._preferences._currentMonitorIndex];
@@ -2240,15 +2235,15 @@ const BuilderScope = GObject.registerClass({
this._preferences._panel_size_timeout = 0;
return GLib.SOURCE_REMOVE;
- }));
+ });
}
tray_size_scale_value_changed_cb(scale) {
// Avoid settings the size consinuosly
if (this._preferences._tray_size_timeout > 0)
- Mainloop.source_remove(this._preferences._tray_size_timeout);
+ GLib.Source.remove(this._preferences._tray_size_timeout);
- this._preferences._tray_size_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, () => {
+ this._preferences._tray_size_timeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, SCALE_UPDATE_TIMEOUT, () => {)
this._preferences._settings.set_int('tray-size', scale.get_value());
this._preferences._tray_size_timeout = 0;
return GLib.SOURCE_REMOVE;
@@ -2258,9 +2253,9 @@ const BuilderScope = GObject.registerClass({
leftbox_size_scale_value_changed_cb(scale) {
// Avoid settings the size consinuosly
if (this._preferences._leftbox_size_timeout > 0)
- Mainloop.source_remove(this._preferences._leftbox_size_timeout);
+ GLib.Source.remove(this._preferences._leftbox_size_timeout);
- this._preferences._leftbox_size_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, () => {
+ this._preferences._leftbox_size_timeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, SCALE_UPDATE_TIMEOUT, () => {
this._preferences._settings.set_int('leftbox-size', scale.get_value());
this._preferences._leftbox_size_timeout = 0;
return GLib.SOURCE_REMOVE;
@@ -2270,9 +2265,9 @@ const BuilderScope = GObject.registerClass({
appicon_margin_scale_value_changed_cb(scale) {
// Avoid settings the size consinuosly
if (this._preferences._appicon_margin_timeout > 0)
- Mainloop.source_remove(this._preferences._appicon_margin_timeout);
+ GLib.Source.remove(this._preferences._appicon_margin_timeout);
- this._preferences._appicon_margin_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, () => {
+ this._preferences._appicon_margin_timeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, SCALE_UPDATE_TIMEOUT, () => {
this._preferences._settings.set_int('appicon-margin', scale.get_value());
this._preferences._appicon_margin_timeout = 0;
return GLib.SOURCE_REMOVE;
@@ -2282,9 +2277,9 @@ const BuilderScope = GObject.registerClass({
appicon_padding_scale_value_changed_cb(scale) {
// Avoid settings the size consinuosly
if (this._preferences._appicon_padding_timeout > 0)
- Mainloop.source_remove(this._preferences._appicon_padding_timeout);
+ GLib.Source.remove(this._preferences._appicon_padding_timeout);
- this._preferences._appicon_padding_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, () => {
+ this._preferences._appicon_padding_timeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, SCALE_UPDATE_TIMEOUT, () => {
this._preferences._settings.set_int('appicon-padding', scale.get_value());
this._preferences._appicon_padding_timeout = 0;
return GLib.SOURCE_REMOVE;
@@ -2294,9 +2289,9 @@ const BuilderScope = GObject.registerClass({
tray_padding_scale_value_changed_cb(scale) {
// Avoid settings the size consinuosly
if (this._preferences._tray_padding_timeout > 0)
- Mainloop.source_remove(this._preferences._tray_padding_timeout);
+ GLib.Source.remove(this._preferences._tray_padding_timeout);
- this._preferences._tray_padding_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, () => {
+ this._preferences._tray_padding_timeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, SCALE_UPDATE_TIMEOUT, () => {
this._preferences._settings.set_int('tray-padding', scale.get_value());
this._preferences._tray_padding_timeout = 0;
return GLib.SOURCE_REMOVE;
@@ -2306,9 +2301,9 @@ const BuilderScope = GObject.registerClass({
statusicon_padding_scale_value_changed_cb(scale) {
// Avoid settings the size consinuosly
if (this._preferences._statusicon_padding_timeout > 0)
- Mainloop.source_remove(this._preferences._statusicon_padding_timeout);
+ GLib.Source.remove(this._preferences._statusicon_padding_timeout);
- this._preferences._statusicon_padding_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, () => {
+ this._preferences._statusicon_padding_timeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, SCALE_UPDATE_TIMEOUT, () => {
this._preferences._settings.set_int('status-icon-padding', scale.get_value());
this._preferences._statusicon_padding_timeout = 0;
return GLib.SOURCE_REMOVE;
@@ -2318,9 +2313,9 @@ const BuilderScope = GObject.registerClass({
leftbox_padding_scale_value_changed_cb(scale) {
// Avoid settings the size consinuosly
if (this._preferences._leftbox_padding_timeout > 0)
- Mainloop.source_remove(this._preferences._leftbox_padding_timeout);
+ GLib.Source.remove(this._preferences._leftbox_padding_timeout);
- this._preferences._leftbox_padding_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, () => {
+ this._preferences._leftbox_padding_timeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, SCALE_UPDATE_TIMEOUT, () => {
this._preferences._settings.set_int('leftbox-padding', scale.get_value());
this._preferences._leftbox_padding_timeout = 0;
return GLib.SOURCE_REMOVE;
@@ -2332,7 +2327,6 @@ const BuilderScope = GObject.registerClass({
export default class DashToPanelPreferences extends ExtensionPreferences {
fillPreferencesWindow(window) {
window._settings = this.getSettings('org.gnome.shell.extensions.dash-to-panel');
- this.initTranslations();
// use default width or window
window.set_default_size(0, 740);
diff --git a/progress.js b/progress.js
index d22b492..473b19d 100644
--- a/progress.js
+++ b/progress.js
@@ -19,6 +19,7 @@
* This file is based on code from the Dash to Dock extension by micheleg
*/
+import Cairo from 'cairo';
import Gio from 'gi://Gio';
import Clutter from 'gi://Clutter';
import Pango from 'gi://Pango';
@@ -26,13 +27,14 @@ import St from 'gi://St';
import * as Utils from './utils.js';
import {SETTINGS} from './extension.js';
-const Cairo = imports.cairo;
-const {signals: Signals} = imports;
+import {EventEmitter} from 'resource:///org/gnome/shell/misc/signals.js';
-export var ProgressManager = class {
+export const ProgressManager = class extends EventEmitter {
constructor() {
+ super();
+
this._entriesByDBusName = {};
this._launcher_entry_dbus_signal_id =
@@ -163,11 +165,12 @@ export var ProgressManager = class {
}
}
};
-Signals.addSignalMethods(ProgressManager.prototype);
-export class AppProgress {
+export class AppProgress extends EventEmitter {
constructor(dbusName, appId, properties) {
+ super();
+
this._dbusName = dbusName;
this._appId = appId;
this._count = 0;
@@ -277,11 +280,10 @@ export class AppProgress {
}
}
}
-};
-Signals.addSignalMethods(AppProgress.prototype);
+}
-export var ProgressIndicator = class {
+export const ProgressIndicator = class {
constructor(source, progressManager) {
this._source = source;
diff --git a/proximity.js b/proximity.js
index 9dcff42..eff1548 100644
--- a/proximity.js
+++ b/proximity.js
@@ -18,7 +18,6 @@
import Meta from 'gi://Meta';
import Mtk from 'gi://Mtk';
-import * as Layout from 'resource:///org/gnome/shell/ui/layout.js';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import * as Utils from './utils.js';
@@ -29,7 +28,7 @@ const MIN_UPDATE_MS = 200;
//timeout names
const T1 = 'limitUpdateTimeout';
-export var Mode = {
+export const Mode = {
ALL_WINDOWS: 0,
FOCUSED_WINDOWS: 1,
MAXIMIZED_WINDOWS: 2
@@ -66,7 +65,7 @@ export class ProximityWatch {
}
};
-export var ProximityManager = class {
+export const ProximityManager = class {
constructor() {
this._counter = 1;
@@ -254,4 +253,4 @@ export var ProximityManager = class {
metaWindow.get_monitor() == watch.monitorIndex ||
windowRect.overlap(global.display.get_monitor_geometry(watch.monitorIndex)));
}
-};
\ No newline at end of file
+};
diff --git a/taskbar.js b/taskbar.js
index 7565aa8..f3018f3 100644
--- a/taskbar.js
+++ b/taskbar.js
@@ -27,21 +27,16 @@ import Gio from 'gi://Gio';
import GLib from 'gi://GLib';
import GObject from 'gi://GObject';
import Graphene from 'gi://Graphene';
-import Gtk from 'gi://Gtk';
-import Meta from 'gi://Meta';
import Shell from 'gi://Shell';
import St from 'gi://St';
import * as AppFavorites from 'resource:///org/gnome/shell/ui/appFavorites.js';
import * as Dash from 'resource:///org/gnome/shell/ui/dash.js';
import * as DND from 'resource:///org/gnome/shell/ui/dnd.js';
-import * as IconGrid from 'resource:///org/gnome/shell/ui/iconGrid.js';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
-import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
-import * as Workspace from 'resource:///org/gnome/shell/ui/workspace.js';
+import {EventEmitter} from 'resource:///org/gnome/shell/misc/signals.js';
import * as AppIcons from './appIcons.js';
-import * as Panel from './panel.js';
import * as PanelManager from './panelManager.js';
import * as PanelSettings from './panelSettings.js';
import * as Pos from './panelPositions.js';
@@ -49,13 +44,11 @@ import * as Utils from './utils.js';
import * as WindowPreview from './windowPreview.js';
import {SETTINGS} from './extension.js';
-const Mainloop = imports.mainloop;
-const {signals: Signals} = imports;
const SearchController = Main.overview.searchController;
-export var DASH_ANIMATION_TIME = Dash.DASH_ANIMATION_TIME / (Dash.DASH_ANIMATION_TIME > 1 ? 1000 : 1);
-var DASH_ITEM_HOVER_TIMEOUT = Dash.DASH_ITEM_HOVER_TIMEOUT;
-export var MIN_ICON_SIZE = 4;
+export const DASH_ANIMATION_TIME = Dash.DASH_ANIMATION_TIME / (Dash.DASH_ANIMATION_TIME > 1 ? 1000 : 1);
+const DASH_ITEM_HOVER_TIMEOUT = Dash.DASH_ITEM_HOVER_TIMEOUT;
+export const MIN_ICON_SIZE = 4;
const T1 = 'ensureAppIconVisibilityTimeout'
const T2 = 'showLabelTimeout'
@@ -73,7 +66,7 @@ const T3 = 'resetHoverTimeout'
export function extendDashItemContainer(dashItemContainer) {
dashItemContainer.showLabel = AppIcons.ItemShowLabel;
-};
+}
const iconAnimationSettings = {
_getDictValue(key) {
@@ -119,7 +112,7 @@ const iconAnimationSettings = {
* - modified chldBox calculations for when 'show-apps-at-top' option is checked
* - handle horizontal dash
*/
-export var TaskbarActor = GObject.registerClass({
+export const TaskbarActor = GObject.registerClass({
}, class TaskbarActor extends St.Widget {
_init(delegate) {
this._delegate = delegate;
@@ -200,9 +193,11 @@ export var TaskbarActor = GObject.registerClass({
* - Sync minimization application target position.
*/
-export var Taskbar = class {
+export const Taskbar = class extends EventEmitter {
constructor(panel) {
+ super();
+
this.dtpPanel = panel;
// start at smallest size due to running indicator drawing area expanding but not shrinking
@@ -225,8 +220,8 @@ export var Taskbar = class {
this._container = new TaskbarActor(this);
this._scrollView = new St.ScrollView({ name: 'dashtopanelScrollview',
- hscrollbar_policy: Gtk.PolicyType.NEVER,
- vscrollbar_policy: Gtk.PolicyType.NEVER,
+ hscrollbar_policy: St.PolicyType.NEVER,
+ vscrollbar_policy: St.PolicyType.NEVER,
enable_mouse_scrolling: true });
this._scrollView.connect('leave-event', this._onLeaveEvent.bind(this));
@@ -312,9 +307,9 @@ export var Taskbar = class {
}
],
[
- this._appSystem,
- 'app-state-changed',
- this._queueRedisplay.bind(this)
+ this._appSystem,
+ 'app-state-changed',
+ this._queueRedisplay.bind(this)
],
[
AppFavorites.getAppFavorites(),
@@ -564,9 +559,11 @@ export var Taskbar = class {
}
if (initial != this.fullScrollView && !this._waitIdleId) {
- this._waitIdleId = Mainloop.idle_add(() => {
+ this._waitIdleId = GLib.idle_add(() => {
this._getAppIcons().forEach(a => a.updateTitleStyle())
- this._waitIdleId = 0
+ this._waitIdleId = 0;
+
+ return GLib.SOURCE_REMOVE;
});
}
}
@@ -1327,8 +1324,6 @@ export var Taskbar = class {
}
};
-Signals.addSignalMethods(Taskbar.prototype);
-
const CloneContainerConstraint = GObject.registerClass({
}, class CloneContainerConstraint extends Clutter.BindConstraint {
@@ -1344,7 +1339,7 @@ const CloneContainerConstraint = GObject.registerClass({
}
});
-export var TaskbarItemContainer = GObject.registerClass({
+export const TaskbarItemContainer = GObject.registerClass({
}, class TaskbarItemContainer extends Dash.DashItemContainer {
@@ -1439,7 +1434,10 @@ export var TaskbarItemContainer = GObject.registerClass({
this._raisedClone.connect('destroy', () => {
adjustment.disconnect(adjustmentChangedId);
taskbarBox.disconnect(taskbarBoxAllocationChangedId);
- Mainloop.idle_add(() => cloneContainer.destroy());
+ GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => {
+ cloneContainer.destroy();
+ return GLib.SOURCE_REMOVE;
+ });
delete this._raisedClone;
});
@@ -1532,7 +1530,7 @@ export var TaskbarItemContainer = GObject.registerClass({
}
});
-var DragPlaceholderItem = GObject.registerClass({
+const DragPlaceholderItem = GObject.registerClass({
}, class DragPlaceholderItem extends St.Widget {
_init(appIcon, iconSize, isVertical) {
diff --git a/transparency.js b/transparency.js
index 2561f03..25ff00f 100644
--- a/transparency.js
+++ b/transparency.js
@@ -15,19 +15,15 @@
* along with this program. If not, see .
*/
-import Clutter from 'gi://Clutter';
import GdkPixbuf from 'gi://GdkPixbuf';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
-import Meta from 'gi://Meta';
import St from 'gi://St';
-import * as Config from 'resource:///org/gnome/shell/misc/config.js';
-import * as Panel from './panel.js';
import * as Proximity from './proximity.js';
import * as Utils from './utils.js';
import {SETTINGS} from './extension.js';
-export var DynamicTransparency = class {
+export const DynamicTransparency = class {
constructor(dtpPanel) {
this._dtpPanel = dtpPanel;
diff --git a/utils.js b/utils.js
index 8da0def..b1fd40c 100644
--- a/utils.js
+++ b/utils.js
@@ -26,23 +26,20 @@ import GdkPixbuf from 'gi://GdkPixbuf';
import Gio from 'gi://Gio';
import GLib from 'gi://GLib';
import Graphene from 'gi://Graphene';
-import Gtk from 'gi://Gtk';
import Meta from 'gi://Meta';
import Shell from 'gi://Shell';
import St from 'gi://St';
-import * as Config from 'resource:///org/gnome/shell/misc/config.js';
import * as Util from 'resource:///org/gnome/shell/misc/util.js';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import * as MessageTray from 'resource:///org/gnome/shell/ui/messageTray.js';
const Gi = imports._gi;
-const Mainloop = imports.mainloop;
-var SCROLL_TIME = Util.SCROLL_TIME / (Util.SCROLL_TIME > 1 ? 1000 : 1);
+const SCROLL_TIME = Util.SCROLL_TIME / (Util.SCROLL_TIME > 1 ? 1000 : 1);
// simplify global signals and function injections handling
// abstract class
-export var BasicHandler = class {
+export const BasicHandler = class {
constructor() {
this._storage = new Object();
@@ -102,7 +99,7 @@ export var BasicHandler = class {
}
// Manage global signals
-export var GlobalSignalsHandler = class extends BasicHandler {
+export const GlobalSignalsHandler = class extends BasicHandler {
_create(item) {
let handlers = [];
@@ -135,7 +132,7 @@ export var GlobalSignalsHandler = class extends BasicHandler {
* Manage function injection: both instances and prototype can be overridden
* and restored
*/
-export var InjectionsHandler = class extends BasicHandler {
+export const InjectionsHandler = class extends BasicHandler {
_create(item) {
let object = item[0];
@@ -158,7 +155,7 @@ export var InjectionsHandler = class extends BasicHandler {
/**
* Manage timeouts: the added timeouts have their id reset on completion
*/
-export var TimeoutsHandler = class extends BasicHandler {
+export const TimeoutsHandler = class extends BasicHandler {
_create(item) {
let name = item[0];
@@ -167,9 +164,11 @@ export var TimeoutsHandler = class extends BasicHandler {
this._remove(item);
- this[name] = Mainloop.timeout_add(delay, () => {
+ this[name] = GLib.timeout_add(GLib.PRIORITY_DEFAULT, delay, () => {
this[name] = 0;
timeoutHandler();
+
+ return GLib.SOURCE_REMOVE;
});
return [[name]];
@@ -183,7 +182,7 @@ export var TimeoutsHandler = class extends BasicHandler {
let name = item[0];
if (this[name]) {
- Mainloop.source_remove(this[name]);
+ GLib.Source.remove(this[name]);
this[name] = 0;
}
}
@@ -195,7 +194,7 @@ export var TimeoutsHandler = class extends BasicHandler {
// This is wrapper to maintain compatibility with GNOME-Shell 3.30+ as well as
// previous versions.
-export var DisplayWrapper = {
+export const DisplayWrapper = {
getScreen() {
return global.screen || global.display;
},
@@ -210,7 +209,7 @@ export var DisplayWrapper = {
};
let unredirectEnabled = true
-export var setDisplayUnredirect = (enable) => {
+export const setDisplayUnredirect = (enable) => {
if (enable && !unredirectEnabled)
Meta.enable_unredirect_for_display(global.display);
else if (!enable && unredirectEnabled)
@@ -219,34 +218,34 @@ export var setDisplayUnredirect = (enable) => {
unredirectEnabled = enable;
};
-export var getSystemMenuInfo = function() {
+export const getSystemMenuInfo = function() {
return {
name: 'quickSettings',
constructor: Main.panel.statusArea.quickSettings.constructor
};
}
-export var getCurrentWorkspace = function() {
+export const getCurrentWorkspace = function() {
return DisplayWrapper.getWorkspaceManager().get_active_workspace();
};
-export var getWorkspaceByIndex = function(index) {
+export const getWorkspaceByIndex = function(index) {
return DisplayWrapper.getWorkspaceManager().get_workspace_by_index(index);
};
-export var getWorkspaceCount = function() {
+export const getWorkspaceCount = function() {
return DisplayWrapper.getWorkspaceManager().n_workspaces;
};
-export var getStageTheme = function() {
+export const getStageTheme = function() {
return St.ThemeContext.get_for_stage(global.stage);
};
-export var getScaleFactor = function() {
+export const getScaleFactor = function() {
return getStageTheme().scale_factor || 1;
};
-export var findIndex = function(array, predicate) {
+export const findIndex = function(array, predicate) {
if (array) {
if (Array.prototype.findIndex) {
return array.findIndex(predicate);
@@ -262,7 +261,7 @@ export var findIndex = function(array, predicate) {
return -1;
};
-export var find = function(array, predicate) {
+export const find = function(array, predicate) {
let index = findIndex(array, predicate);
if (index > -1) {
@@ -270,8 +269,8 @@ export var find = function(array, predicate) {
}
};
-export var mergeObjects = function(main, bck) {
- for (var prop in bck) {
+export const mergeObjects = function(main, bck) {
+ for (const prop in bck) {
if (!main.hasOwnProperty(prop) && bck.hasOwnProperty(prop)) {
main[prop] = bck[prop];
}
@@ -280,7 +279,7 @@ export var mergeObjects = function(main, bck) {
return main;
};
-export var hookVfunc = function(proto, symbol, func) {
+export const hookVfunc = function(proto, symbol, func) {
if (!func) return
if (Gi.gobject_prototype_symbol && proto[Gi.gobject_prototype_symbol]) {
@@ -290,14 +289,14 @@ export var hookVfunc = function(proto, symbol, func) {
}
};
-export var getTrackedActorData = (actor) => {
+export const getTrackedActorData = (actor) => {
let trackedIndex = Main.layoutManager._findActor(actor);
if (trackedIndex >= 0)
return Main.layoutManager._trackedActors[trackedIndex]
}
-export var getTransformedAllocation = function(actor) {
+export const getTransformedAllocation = function(actor) {
let extents = actor.get_transformed_extents();
let topLeft = extents.get_top_left();
let bottomRight = extents.get_bottom_right();
@@ -305,13 +304,13 @@ export var getTransformedAllocation = function(actor) {
return { x1: topLeft.x, x2: bottomRight.x, y1: topLeft.y, y2: bottomRight.y };
};
-export var setClip = function(actor, x, y, width, height) {
+export const setClip = function(actor, x, y, width, height) {
actor.set_clip(0, 0, width, height);
actor.set_position(x, y);
actor.set_size(width, height);
};
-export var addKeybinding = function(key, settings, handler, modes) {
+export const addKeybinding = function(key, settings, handler, modes) {
if (!Main.wm._allowedKeybindings[key]) {
Main.wm.addKeybinding(
key,
@@ -323,19 +322,19 @@ export var addKeybinding = function(key, settings, handler, modes) {
}
};
-export var removeKeybinding = function(key) {
+export const removeKeybinding = function(key) {
if (Main.wm._allowedKeybindings[key]) {
Main.wm.removeKeybinding(key);
}
};
-export var getrgbColor = function(color) {
+export const getrgbColor = function(color) {
color = typeof color === 'string' ? Clutter.color_from_string(color)[1] : color;
return { red: color.red, green: color.green, blue: color.blue };
};
-export var getrgbaColor = function(color, alpha, offset) {
+export const getrgbaColor = function(color, alpha, offset) {
if (alpha <= 0) {
return 'transparent; ';
}
@@ -355,14 +354,14 @@ export var getrgbaColor = function(color, alpha, offset) {
return 'rgba(' + rgb.red + ',' + rgb.green + ',' + rgb.blue + ',' + (Math.floor(alpha * 100) * 0.01) + '); ' ;
};
-export var checkIfColorIsBright = function(color) {
+export const checkIfColorIsBright = function(color) {
let rgb = getrgbColor(color);
let brightness = 0.2126 * rgb.red + 0.7152 * rgb.green + 0.0722 * rgb.blue;
return brightness > 128;
};
-export var getMouseScrollDirection = function(event) {
+export const getMouseScrollDirection = function(event) {
let direction;
switch (event.get_scroll_direction()) {
@@ -379,7 +378,7 @@ export var getMouseScrollDirection = function(event) {
return direction;
};
-export var checkIfWindowHasTransient = function(window) {
+export const checkIfWindowHasTransient = function(window) {
let hasTransient;
window.foreach_transient(t => !(hasTransient = true));
@@ -387,7 +386,7 @@ export var checkIfWindowHasTransient = function(window) {
return hasTransient;
};
-export var activateSiblingWindow = function(windows, direction, startWindow) {
+export const activateSiblingWindow = function(windows, direction, startWindow) {
let windowIndex = windows.indexOf(global.display.focus_window);
let nextWindowIndex = windowIndex < 0 ?
startWindow ? windows.indexOf(startWindow) : 0 :
@@ -404,7 +403,7 @@ export var activateSiblingWindow = function(windows, direction, startWindow) {
}
};
-export var animateWindowOpacity = function(window, tweenOpts) {
+export const animateWindowOpacity = function(window, tweenOpts) {
//there currently is a mutter bug with the windowactor opacity, starting with 3.34
//https://gitlab.gnome.org/GNOME/mutter/issues/836
@@ -433,7 +432,7 @@ export var animateWindowOpacity = function(window, tweenOpts) {
animate(window, tweenOpts);
};
-export var animate = function(actor, options) {
+export const animate = function(actor, options) {
//the original animations used Tweener instead of Clutter animations, so we
//use "time" and "delay" properties defined in seconds, as opposed to Clutter
//animations "duration" and "delay" which are defined in milliseconds
@@ -466,15 +465,15 @@ export var animate = function(actor, options) {
actor.ease.apply(actor, params);
}
-export var isAnimating = function(actor, prop) {
+export const isAnimating = function(actor, prop) {
return !!actor.get_transition(prop);
}
-export var stopAnimations = function(actor) {
+export const stopAnimations = function(actor) {
actor.remove_all_transitions();
}
-export var getIndicators = function(delegate) {
+export const getIndicators = function(delegate) {
if (delegate instanceof St.BoxLayout) {
return delegate;
}
@@ -482,11 +481,11 @@ export var getIndicators = function(delegate) {
return delegate.indicators;
}
-export var getPoint = function(coords) {
+export const getPoint = function(coords) {
return new Graphene.Point(coords);
}
-export var notify = function(text, iconName, action, isTransient) {
+export const notify = function(text, iconName, action, isTransient) {
let source = new MessageTray.SystemNotificationSource();
let notification = new MessageTray.Notification(source, 'Dash to Panel', text);
let notifyFunc = source.showNotification || source.notify;
@@ -517,7 +516,7 @@ export var notify = function(text, iconName, action, isTransient) {
* it would be clamp to the current one in any case.
* Return the amount of shift applied
*/
-export var ensureActorVisibleInScrollView = function(scrollView, actor, fadeSize, onComplete) {
+export const ensureActorVisibleInScrollView = function(scrollView, actor, fadeSize, onComplete) {
let vadjustment = scrollView.vscroll.adjustment;
let hadjustment = scrollView.hscroll.adjustment;
let [vvalue, vlower, vupper, vstepIncrement, vpageIncrement, vpageSize] = vadjustment.get_values();
@@ -574,7 +573,7 @@ export var ensureActorVisibleInScrollView = function(scrollView, actor, fadeSize
/**
* ColorUtils is adapted from https://github.com/micheleg/dash-to-dock
*/
-export var ColorUtils = {
+export const ColorUtils = {
colorLuminance(r, g, b, dlum) {
// Darken or brighten color by a fraction dlum
// Each rgb value is modified by the same fraction.
@@ -685,7 +684,7 @@ const MAX_CACHED_ITEMS = 1000;
const BATCH_SIZE_TO_DELETE = 50;
const DOMINANT_COLOR_ICON_SIZE = 64;
-export var DominantColorExtractor = class {
+export const DominantColorExtractor = class {
constructor(app){
this._app = app;
@@ -696,14 +695,9 @@ export var DominantColorExtractor = class {
*/
_getIconPixBuf() {
let iconTexture = this._app.create_icon_texture(16);
- let isGtk3 = !!Gtk.IconTheme.prototype.set_custom_theme;
if (themeLoader === null) {
- let ifaceSettings = new Gio.Settings({ schema: "org.gnome.desktop.interface" });
- let themeFunc = isGtk3 ? 'set_custom_theme' : 'set_theme_name';
-
- themeLoader = new Gtk.IconTheme(),
- themeLoader[themeFunc](ifaceSettings.get_string('icon-theme')); // Make sure the correct theme is loaded
+ themeLoader = new St.IconTheme();
}
// Unable to load the icon texture, use fallback
@@ -725,19 +719,11 @@ export var DominantColorExtractor = class {
// Get the pixel buffer from the icon theme
if (iconTexture instanceof Gio.ThemedIcon) {
- let params = [iconTexture.get_names()[0], DOMINANT_COLOR_ICON_SIZE, 0];
-
- if (!isGtk3) {
- params.splice(1, 0, null);
- params.splice(3, 1, 1, 1, 1);
- }
-
- let icon_info = themeLoader.lookup_icon.apply(themeLoader, params);
+ let icon_info = themeLoader.lookup_icon(iconTexture.get_names()[0],
+ DOMINANT_COLOR_ICON_SIZE, 0);
if (icon_info !== null) {
- if (isGtk3) return icon_info.load_icon();
-
- return GdkPixbuf.Pixbuf.new_from_file(icon_info.get_file().get_path());
+ return icon_info.load_icon();
}
}
@@ -875,7 +861,7 @@ export var DominantColorExtractor = class {
};
-export var drawRoundedLine = function(cr, x, y, width, height, isRoundLeft, isRoundRight, stroke, fill) {
+export const drawRoundedLine = function(cr, x, y, width, height, isRoundLeft, isRoundRight, stroke, fill) {
if (height > width) {
y += Math.floor((height - width) / 2.0);
height = width;
@@ -883,8 +869,8 @@ export var drawRoundedLine = function(cr, x, y, width, height, isRoundLeft, isRo
height = 2.0 * Math.floor(height / 2.0);
- var leftRadius = isRoundLeft ? height / 2.0 : 0.0;
- var rightRadius = isRoundRight ? height / 2.0 : 0.0;
+ const leftRadius = isRoundLeft ? height / 2.0 : 0.0;
+ const rightRadius = isRoundRight ? height / 2.0 : 0.0;
cr.moveTo(x + width - rightRadius, y);
cr.lineTo(x + leftRadius, y);
@@ -907,28 +893,3 @@ export var drawRoundedLine = function(cr, x, y, width, height, isRoundLeft, isRo
cr.setSource(stroke);
cr.stroke();
}
-
-/**
- * Check if an app exists in the system.
- */
-var checkedCommandsMap = new Map();
-
-export function checkIfCommandExists(app) {
- let answer = checkedCommandsMap.get(app);
- if (answer === undefined) {
- // Command is a shell built in, use shell to call it.
- // Quotes around app value are important. They let command operate
- // on the whole value, instead of having shell interpret it.
- let cmd = "sh -c 'command -v \"" + app + "\"'";
- try {
- let out = GLib.spawn_command_line_sync(cmd);
- // out contains 1: stdout, 2: stderr, 3: exit code
- answer = out[3] == 0;
- } catch (ex) {
- answer = false;
- }
-
- checkedCommandsMap.set(app, answer);
- }
- return answer;
-}
diff --git a/windowPreview.js b/windowPreview.js
index 1f78a1f..d9c1d67 100644
--- a/windowPreview.js
+++ b/windowPreview.js
@@ -19,21 +19,15 @@ import GObject from 'gi://GObject';
import Clutter from 'gi://Clutter';
import GLib from 'gi://GLib';
import Graphene from 'gi://Graphene';
-import Gtk from 'gi://Gtk';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import Meta from 'gi://Meta';
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
import St from 'gi://St';
-import * as WindowManager from 'resource:///org/gnome/shell/ui/windowManager.js';
-import * as Workspace from 'resource:///org/gnome/shell/ui/workspace.js';
-import * as Panel from './panel.js';
import * as Taskbar from './taskbar.js';
import * as Utils from './utils.js';
import {SETTINGS, DESKTOPSETTINGS} from './extension.js';
-
-const Mainloop = imports.mainloop;
-const {signals: Signals} = imports;
+import {gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
//timeout intervals
const ENSURE_VISIBLE_MS = 200;
@@ -62,7 +56,7 @@ let scaleFactor = 1;
let animationTime = 0;
let aspectRatio = {};
-export var PreviewMenu = GObject.registerClass({
+export const PreviewMenu = GObject.registerClass({
Signals: { 'open-state-changed': {} }
}, class PreviewMenu extends St.Widget {
@@ -95,8 +89,8 @@ export var PreviewMenu = GObject.registerClass({
this._box = new St.BoxLayout({ vertical: this.isVertical });
this._scrollView = new St.ScrollView({
name: 'dashtopanelPreviewScrollview',
- hscrollbar_policy: Gtk.PolicyType.NEVER,
- vscrollbar_policy: Gtk.PolicyType.NEVER,
+ hscrollbar_policy: St.PolicyType.NEVER,
+ vscrollbar_policy: St.PolicyType.NEVER,
enable_mouse_scrolling: true,
y_expand: !this.isVertical
});
@@ -694,7 +688,7 @@ export var PreviewMenu = GObject.registerClass({
}
});
-export var Preview = GObject.registerClass({
+export const Preview = GObject.registerClass({
}, class Preview extends St.Widget {
_init(previewMenu) {
@@ -811,12 +805,14 @@ export var Preview = GObject.registerClass({
this._addClone(cloneBin, animateSize);
this._previewMenu.updatePosition();
} else if (!this._waitWindowId) {
- this._waitWindowId = Mainloop.idle_add(() => {
+ this._waitWindowId = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => {
this._waitWindowId = 0;
if (this._previewMenu.opened) {
_assignWindowClone();
}
+
+ return GLib.SOURCE_REMOVE;
});
}
};
@@ -1112,7 +1108,7 @@ export var Preview = GObject.registerClass({
}
});
-export var WindowCloneLayout = GObject.registerClass({
+export const WindowCloneLayout = GObject.registerClass({
}, class WindowCloneLayout extends Clutter.BinLayout {
_init(frameRect, bufferRect) {