diff --git a/js/extensionPrefs/main.js b/js/extensionPrefs/main.js index 7f662a931..935ab0c69 100644 --- a/js/extensionPrefs/main.js +++ b/js/extensionPrefs/main.js @@ -277,10 +277,10 @@ var ExtensionsWindow = GObject.registerClass({ }); box.add(expander); - let errortext = `${exc}\n\nStack trace:\n${ - // Indent stack trace. - exc.stack.split('\n').map(line => ` ${line}`).join('\n') - }`; + let errortext = '%s\n\nStack trace:\n'.format(exc); + // Indent stack trace. + errortext += + exc.stack.split('\n').map(line => ' %s'.format(line)).join('\n'); let buffer = new Gtk.TextBuffer({ text: errortext }); let textview = new Gtk.TextView({ @@ -315,9 +315,9 @@ var ExtensionsWindow = GObject.registerClass({ let clipboard = Gtk.Clipboard.get_default(w.get_display()); // markdown for pasting in gitlab issues let lines = [ - `The settings of extension ${row.uuid} had an error:`, + 'The settings of extension %s had an error:'.format(row.uuid), '```', // '`' (xgettext throws up on odd number of backticks) - `${exc}`, + exc.toString(), '```', // '`' '', 'Stack trace:', @@ -403,7 +403,7 @@ var ExtensionsWindow = GObject.registerClass({ this._shellProxy.ListExtensionsRemote(([extensionsMap], e) => { if (e) { if (e instanceof Gio.DBusError) { - log(`Failed to connect to shell proxy: ${e}`); + log('Failed to connect to shell proxy: %s'.format(e.toString())); this._mainStack.visible_child_name = 'noshell'; } else { throw e; @@ -703,10 +703,10 @@ var ExtensionRow = GObject.registerClass({ this._updatesIcon.visible = this.hasUpdate; - this._versionLabel.label = `${this.version}`; + this._versionLabel.label = this.version; this._versionLabel.visible = this.version !== ''; - this._authorLabel.label = `${this.creator}`; + this._authorLabel.label = this.creator; this._authorLabel.visible = this.creator !== ''; } @@ -747,7 +747,7 @@ function initEnvironment() { }, logError(s) { - log(`ERROR: ${s}`); + log('ERROR: %s'.format(s)); }, userdatadir: GLib.build_filenamev([GLib.get_user_data_dir(), 'gnome-shell']), diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js index 92cb256ef..b3a95b838 100644 --- a/js/gdm/loginDialog.js +++ b/js/gdm/loginDialog.js @@ -421,13 +421,13 @@ var LoginDialog = GObject.registerClass({ this._settings = new Gio.Settings({ schema_id: GdmUtil.LOGIN_SCREEN_SCHEMA }); - this._settings.connect(`changed::${GdmUtil.BANNER_MESSAGE_KEY}`, + this._settings.connect('changed::%s'.format(GdmUtil.BANNER_MESSAGE_KEY), this._updateBanner.bind(this)); - this._settings.connect(`changed::${GdmUtil.BANNER_MESSAGE_TEXT_KEY}`, + this._settings.connect('changed::%s'.format(GdmUtil.BANNER_MESSAGE_TEXT_KEY), this._updateBanner.bind(this)); - this._settings.connect(`changed::${GdmUtil.DISABLE_USER_LIST_KEY}`, + this._settings.connect('changed::%s'.format(GdmUtil.DISABLE_USER_LIST_KEY), this._updateDisableUserList.bind(this)); - this._settings.connect(`changed::${GdmUtil.LOGO_KEY}`, + this._settings.connect('changed::%s'.format(GdmUtil.LOGO_KEY), this._updateLogo.bind(this)); this._textureCache = St.TextureCache.get_default(); diff --git a/js/misc/systemActions.js b/js/misc/systemActions.js index 4442a5b71..6248fe9a0 100644 --- a/js/misc/systemActions.js +++ b/js/misc/systemActions.js @@ -151,17 +151,17 @@ const SystemActions = GObject.registerClass({ this._userManager.connect('user-removed', () => this._updateMultiUser()); - this._lockdownSettings.connect(`changed::${DISABLE_USER_SWITCH_KEY}`, + this._lockdownSettings.connect('changed::%s'.format(DISABLE_USER_SWITCH_KEY), () => this._updateSwitchUser()); - this._lockdownSettings.connect(`changed::${DISABLE_LOG_OUT_KEY}`, + this._lockdownSettings.connect('changed::%s'.format(DISABLE_LOG_OUT_KEY), () => this._updateLogout()); - global.settings.connect(`changed::${ALWAYS_SHOW_LOG_OUT_KEY}`, + global.settings.connect('changed::%s'.format(ALWAYS_SHOW_LOG_OUT_KEY), () => this._updateLogout()); - this._lockdownSettings.connect(`changed::${DISABLE_LOCK_SCREEN_KEY}`, + this._lockdownSettings.connect('changed::%s'.format(DISABLE_LOCK_SCREEN_KEY), () => this._updateLockScreen()); - this._lockdownSettings.connect(`changed::${DISABLE_LOG_OUT_KEY}`, + this._lockdownSettings.connect('changed::%s'.format(DISABLE_LOG_OUT_KEY), () => this._updateHaveShutdown()); this.forceUpdate(); diff --git a/js/misc/util.js b/js/misc/util.js index a58ebc5e8..9d30b3f95 100644 --- a/js/misc/util.js +++ b/js/misc/util.js @@ -21,7 +21,7 @@ const _leadingJunk = '[\\s`(\\[{\'\\"<\u00AB\u201C\u2018]'; const _notTrailingJunk = '[^\\s`!()\\[\\]{};:\'\\".,<>?\u00AB\u00BB\u200E\u200F\u201C\u201D\u2018\u2019\u202A\u202C]'; const _urlRegexp = new RegExp( - `(^|${_leadingJunk})` + + '(^|%s)'.format(_leadingJunk) + '(' + '(?:' + '(?:http|https|ftp)://' + // scheme:// @@ -33,12 +33,12 @@ const _urlRegexp = new RegExp( '(?:' + // one or more: '[^\\s()<>]+' + // run of non-space non-() '|' + // or - `${_balancedParens}` + // balanced parens + '%s'.format(_balancedParens) + // balanced parens ')+' + '(?:' + // end with: - `${_balancedParens}` + // balanced parens + '%s'.format(_balancedParens) + // balanced parens '|' + // or - `${_notTrailingJunk}` + // last non-junk char + '%s'.format(_notTrailingJunk) + // last non-junk char ')' + ')', 'gi'); @@ -153,7 +153,7 @@ function trySpawnCommandLine(commandLine) { } catch (err) { // Replace "Error invoking GLib.shell_parse_argv: " with // something nicer - err.message = err.message.replace(/[^:]*: /, `${_("Could not parse command:")}\n`); + err.message = err.message.replace(/[^:]*: /, '%s\n'.format(_('Could not parse command:'))); throw err; } diff --git a/js/portalHelper/main.js b/js/portalHelper/main.js index 88adc1b8d..daaefa886 100644 --- a/js/portalHelper/main.js +++ b/js/portalHelper/main.js @@ -23,7 +23,6 @@ const PortalHelperSecurityLevel = { }; const CONNECTIVITY_CHECK_HOST = 'nmcheck.gnome.org'; -const CONNECTIVITY_CHECK_URI = `http://${CONNECTIVITY_CHECK_HOST}`; const CONNECTIVITY_RECHECK_RATELIMIT_TIMEOUT = 30 * GLib.USEC_PER_SEC; const HelperDBusInterface = loadInterfaceXML('org.gnome.Shell.PortalHelper'); @@ -103,7 +102,7 @@ class PortalWindow extends Gtk.ApplicationWindow { this._headerBar.show(); if (!url) { - url = CONNECTIVITY_CHECK_URI; + url = 'http://%s'.format(CONNECTIVITY_CHECK_HOST); this._originalUrlWasGnome = true; } else { this._originalUrlWasGnome = false; diff --git a/js/ui/accessDialog.js b/js/ui/accessDialog.js index 6d3ede01e..0e417bda7 100644 --- a/js/ui/accessDialog.js +++ b/js/ui/accessDialog.js @@ -138,7 +138,7 @@ var AccessDialogDBus = class { let [handle, appId, parentWindow_, title, description, body, options] = params; // We probably want to use parentWindow and global.display.focus_window // for this check in the future - if (appId && `${appId}.desktop` != this._windowTracker.focus_app.id) { + if (appId && '%s.desktop'.format(appId) != this._windowTracker.focus_app.id) { invocation.return_error_literal(Gio.DBusError, Gio.DBusError.ACCESS_DENIED, 'Only the focused app is allowed to show a system access dialog'); diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index 77868722c..01f87059a 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -72,7 +72,7 @@ function _getFolderName(folder) { if (folder.get_boolean('translate')) { let keyfile = new GLib.KeyFile(); - let path = `desktop-directories/${name}`; + let path = 'desktop-directories/%s'.format(name); try { keyfile.load_from_data_dirs(path, GLib.KeyFileFlags.NONE); @@ -219,7 +219,7 @@ var BaseAppView = GObject.registerClass({ if (this._items.has(id)) this._items.get(id).navigate_focus(null, St.DirectionType.TAB_FORWARD, false); else - log(`No such application ${id}`); + log('No such application %s'.format(id)); } selectApp(id) { @@ -293,7 +293,7 @@ var BaseAppView = GObject.registerClass({ } adaptToSize(_width, _height) { - throw new GObject.NotImplementedError(`adaptToSize in ${this.constructor.name}`); + throw new GObject.NotImplementedError('adaptToSize in %s'.format(this.constructor.name)); } }); @@ -492,7 +492,7 @@ var AllView = GObject.registerClass({ let folders = this._folderSettings.get_strv('folder-children'); folders.forEach(id => { - let path = `${this._folderSettings.path}folders/${id}/`; + let path = '%sfolders/%s/'.format(this._folderSettings.path, id); let icon = this._items.get(id); if (!icon) { icon = new FolderIcon(id, path, this); @@ -2278,7 +2278,7 @@ var AppIcon = GObject.registerClass({ shellWorkspaceLaunch(params) { let { stack } = new Error(); - log(`shellWorkspaceLaunch is deprecated, use app.open_new_window() instead\n${stack}`); + log('shellWorkspaceLaunch is deprecated, use app.open_new_window() instead\n%s'.format(stack)); params = Params.parse(params, { workspace: -1, timestamp: 0 }); diff --git a/js/ui/appFavorites.js b/js/ui/appFavorites.js index 3308dd6b3..653f0cfba 100644 --- a/js/ui/appFavorites.js +++ b/js/ui/appFavorites.js @@ -66,7 +66,7 @@ class AppFavorites { constructor() { this.FAVORITE_APPS_KEY = 'favorite-apps'; this._favorites = {}; - global.settings.connect(`changed::${this.FAVORITE_APPS_KEY}`, this._onFavsChanged.bind(this)); + global.settings.connect('changed::%s'.format(this.FAVORITE_APPS_KEY), this._onFavsChanged.bind(this)); this.reload(); } diff --git a/js/ui/audioDeviceSelection.js b/js/ui/audioDeviceSelection.js index 9bdabc225..15727f4f3 100644 --- a/js/ui/audioDeviceSelection.js +++ b/js/ui/audioDeviceSelection.js @@ -120,7 +120,7 @@ var AudioDeviceSelectionDialog = GObject.registerClass({ let app = Shell.AppSystem.get_default().lookup_app(desktopFile); if (!app) { - log(`Settings panel for desktop file ${desktopFile} could not be loaded!`); + log('Settings panel for desktop file %s could not be loaded!'.format(desktopFile)); return; } diff --git a/js/ui/calendar.js b/js/ui/calendar.js index a5a763d59..524d2dd32 100644 --- a/js/ui/calendar.js +++ b/js/ui/calendar.js @@ -18,7 +18,7 @@ var ELLIPSIS_CHAR = '\u2026'; var MESSAGE_ICON_SIZE = -1; // pick up from CSS -var NC_ = (context, str) => `${context}\u0004${str}`; +var NC_ = (context, str) => '%s\u0004%s'.format(context, str); function sameYear(dateA, dateB) { return dateA.getYear() == dateB.getYear(); @@ -114,26 +114,26 @@ var EventSourceBase = GObject.registerClass({ Signals: { 'changed': {} }, }, class EventSourceBase extends GObject.Object { get isLoading() { - throw new GObject.NotImplementedError(`isLoading in ${this.constructor.name}`); + throw new GObject.NotImplementedError('isLoading in %s'.format(this.constructor.name)); } get hasCalendars() { - throw new GObject.NotImplementedError(`hasCalendars in ${this.constructor.name}`); + throw new GObject.NotImplementedError('hasCalendars in %s'.format(this.constructor.name)); } destroy() { } requestRange(_begin, _end) { - throw new GObject.NotImplementedError(`requestRange in ${this.constructor.name}`); + throw new GObject.NotImplementedError('requestRange in %s'.format(this.constructor.name)); } getEvents(_begin, _end) { - throw new GObject.NotImplementedError(`getEvents in ${this.constructor.name}`); + throw new GObject.NotImplementedError('getEvents in %s'.format(this.constructor.name)); } hasEvents(_day) { - throw new GObject.NotImplementedError(`hasEvents in ${this.constructor.name}`); + throw new GObject.NotImplementedError('hasEvents in %s'.format(this.constructor.name)); } }); @@ -215,7 +215,7 @@ class DBusEventSource extends EventSourceBase { // about the HasCalendars property and would cause an exception trying // to read it) } else { - log(`Error loading calendars: ${e.message}`); + log('Error loading calendars: %s'.format(e.message)); return; } } @@ -359,7 +359,7 @@ var Calendar = GObject.registerClass({ this._weekStart = Shell.util_get_week_start(); this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.calendar' }); - this._settings.connect(`changed::${SHOW_WEEKDATE_KEY}`, this._onSettingsChange.bind(this)); + this._settings.connect('changed::%s'.format(SHOW_WEEKDATE_KEY), this._onSettingsChange.bind(this)); this._useWeekdate = this._settings.get_boolean(SHOW_WEEKDATE_KEY); /** @@ -626,13 +626,13 @@ var Calendar = GObject.registerClass({ // Hack used in lieu of border-collapse - see gnome-shell.css if (row == 2) - styleClass = `calendar-day-top ${styleClass}`; + styleClass = 'calendar-day-top %s'.format(styleClass); let leftMost = rtl ? iter.getDay() == (this._weekStart + 6) % 7 : iter.getDay() == this._weekStart; if (leftMost) - styleClass = `calendar-day-left ${styleClass}`; + styleClass = 'calendar-day-left %s'.format(styleClass); if (sameDay(now, iter)) styleClass += ' calendar-today'; @@ -738,15 +738,15 @@ class EventMessage extends MessageList.Message { let rtl = Clutter.get_default_text_direction() == Clutter.TextDirection.RTL; if (this._event.date < periodBegin && !this._event.allDay) { if (rtl) - title = `${title}${ELLIPSIS_CHAR}`; + title = '%s%s'.format(title, ELLIPSIS_CHAR); else - title = `${ELLIPSIS_CHAR}${title}`; + title = '%s%s'.format(ELLIPSIS_CHAR, title); } if (this._event.end > periodEnd && !this._event.allDay) { if (rtl) - title = `${ELLIPSIS_CHAR}${title}`; + title = '%s%s'.format(ELLIPSIS_CHAR, title); else - title = `${title}${ELLIPSIS_CHAR}`; + title = '%s%s'.format(title, ELLIPSIS_CHAR); } return title; } @@ -1204,7 +1204,7 @@ class CalendarMessageList extends St.Widget { for (let prop of ['visible', 'empty', 'can-clear']) { connectionsIds.push( - section.connect(`notify::${prop}`, this._sync.bind(this))); + section.connect('notify::%s'.format(prop), this._sync.bind(this))); } connectionsIds.push(section.connect('message-focused', (_s, messageActor) => { Util.ensureActorVisibleInScrollView(this._scrollView, messageActor); diff --git a/js/ui/components/automountManager.js b/js/ui/components/automountManager.js index 371bcab7d..1cb84a7ec 100644 --- a/js/ui/components/automountManager.js +++ b/js/ui/components/automountManager.js @@ -113,7 +113,7 @@ var AutomountManager = class { try { drive.stop_finish(res); } catch (e) { - log(`Unable to stop the drive after drive-eject-button ${e.toString()}`); + log('Unable to stop the drive after drive-eject-button %s'.format(e.toString())); } }); } else if (drive.can_eject()) { @@ -122,7 +122,7 @@ var AutomountManager = class { try { drive.eject_with_operation_finish(res); } catch (e) { - log(`Unable to eject the drive after drive-eject-button ${e.toString()}`); + log('Unable to eject the drive after drive-eject-button %s'.format(e.toString())); } }); } @@ -210,7 +210,7 @@ var AutomountManager = class { } if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED)) - log(`Unable to mount volume ${volume.get_name()}: ${e.toString()}`); + log('Unable to mount volume %s: %s'.format(volume.get_name(), e.toString())); this._closeOperation(volume); } } diff --git a/js/ui/components/autorunManager.js b/js/ui/components/autorunManager.js index ad1597108..cfa42834b 100644 --- a/js/ui/components/autorunManager.js +++ b/js/ui/components/autorunManager.js @@ -66,7 +66,7 @@ function startAppForMount(app, mount) { retval = app.launch(files, global.create_app_launch_context(0, -1)); } catch (e) { - log(`Unable to launch the application ${app.get_name()}: ${e}`); + log('Unable to launch the application %s: %s'.format(app.get_name(), e.toString())); } return retval; @@ -105,7 +105,7 @@ var ContentTypeDiscoverer = class { try { contentTypes = mount.guess_content_type_finish(res); } catch (e) { - log(`Unable to guess content types on added mount ${mount.get_name()}: ${e}`); + log('Unable to guess content types on added mount %s: %s'.format(mount.get_name(), e.toString())); } if (contentTypes.length) { diff --git a/js/ui/components/networkAgent.js b/js/ui/components/networkAgent.js index dbd2b2124..4ab598597 100644 --- a/js/ui/components/networkAgent.js +++ b/js/ui/components/networkAgent.js @@ -204,10 +204,14 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog { validate: this._validateWpaPsk, password: true }); break; case 'none': // static WEP - secrets.push({ label: _('Key'), key: `wep-key${wirelessSecuritySetting.wep_tx_keyidx}`, - value: wirelessSecuritySetting.get_wep_key(wirelessSecuritySetting.wep_tx_keyidx) || '', - wep_key_type: wirelessSecuritySetting.wep_key_type, - validate: this._validateStaticWep, password: true }); + secrets.push({ + label: _('Key'), + key: 'wep-key%s'.format(wirelessSecuritySetting.wep_tx_keyidx), + value: wirelessSecuritySetting.get_wep_key(wirelessSecuritySetting.wep_tx_keyidx) || '', + wep_key_type: wirelessSecuritySetting.wep_key_type, + validate: this._validateStaticWep, + password: true, + }); break; case 'ieee8021x': if (wirelessSecuritySetting.auth_alg == 'leap') { // Cisco LEAP @@ -221,7 +225,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog { this._get8021xSecrets(secrets); break; default: - log(`Invalid wireless key management: ${wirelessSecuritySetting.key_mgmt}`); + log('Invalid wireless key management: %s'.format(wirelessSecuritySetting.key_mgmt)); } } @@ -266,7 +270,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog { value: ieee8021xSetting.private_key_password || '', password: true }); break; default: - log(`Invalid EAP/IEEE802.1x method: ${ieee8021xSetting.get_eap_method(0)}`); + log('Invalid EAP/IEEE802.1x method: %s'.format(ieee8021xSetting.get_eap_method(0))); } } @@ -336,7 +340,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog { this._getMobileSecrets(content.secrets, connectionType); break; default: - log(`Invalid connection type: ${connectionType}`); + log('Invalid connection type: %s'.format(connectionType)); } return content; @@ -581,12 +585,12 @@ var VPNRequestHandler = class { try { vpnSetting.foreach_data_item((key, value) => { - this._stdin.write(`DATA_KEY=${key}\n`, null); - this._stdin.write(`DATA_VAL=${value || ''}\n\n`, null); + this._stdin.write('DATA_KEY=%s\n'.format(key), null); + this._stdin.write('DATA_VAL=%s\n\n'.format(value || ''), null); }); vpnSetting.foreach_secret((key, value) => { - this._stdin.write(`SECRET_KEY=${key}\n`, null); - this._stdin.write(`SECRET_VAL=${value || ''}\n\n`, null); + this._stdin.write('SECRET_KEY=%s\n'.format(key), null); + this._stdin.write('SECRET_VAL=%s\n\n'.format(value || ''), null); }); this._stdin.write('DONE\n\n', null); } catch (e) { @@ -616,7 +620,7 @@ var NetworkAgent = class { let monitor = this._pluginDir.monitor(Gio.FileMonitorFlags.NONE, null); monitor.connect('changed', () => (this._vpnCacheBuilt = false)); } catch (e) { - log(`Failed to create monitor for VPN plugin dir: ${e.message}`); + log('Failed to create monitor for VPN plugin dir: %s'.format(e.message)); } this._native.connect('new-request', this._newRequest.bind(this)); @@ -707,7 +711,7 @@ var NetworkAgent = class { body = _("A password is required to connect to ā€œ%sā€.").format(connectionSetting.get_id()); break; default: - log(`Invalid connection type: ${connectionType}`); + log('Invalid connection type: %s'.format(connectionType)); this._native.respond(requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR); return; } diff --git a/js/ui/components/polkitAgent.js b/js/ui/components/polkitAgent.js index 7fdfd1006..4bfbde1bb 100644 --- a/js/ui/components/polkitAgent.js +++ b/js/ui/components/polkitAgent.js @@ -44,7 +44,7 @@ var AuthenticationDialog = GObject.registerClass({ let bodyContent = new Dialog.MessageDialogContent(); if (userNames.length > 1) { - log(`polkitAuthenticationAgent: Received ${userNames.length} ` + + log('polkitAuthenticationAgent: Received %d'.format(userNames.length) + 'identities that can be used for authentication. Only ' + 'considering one.'); } @@ -194,8 +194,8 @@ var AuthenticationDialog = GObject.registerClass({ // We could add retrying if this turns out to be a problem log('polkitAuthenticationAgent: Failed to show modal dialog. ' + - `Dismissing authentication request for action-id ${this.actionId} ` + - `cookie ${this._cookie}`); + 'Dismissing authentication request for action-id %s '.format(this.actionId) + + 'cookie %s'.format(this._cookie)); this._emitDone(true); } } diff --git a/js/ui/components/telepathyClient.js b/js/ui/components/telepathyClient.js index e6ea64224..e6ae34042 100644 --- a/js/ui/components/telepathyClient.js +++ b/js/ui/components/telepathyClient.js @@ -87,7 +87,7 @@ var TelepathyComponent = class { try { this._client.register(); } catch (e) { - throw new Error(`Could not register Telepathy client. Error: ${e}`); + throw new Error('Could not register Telepathy client. Error: %s'.format(e.toString())); } if (!this._client.account_manager.is_prepared(Tp.AccountManager.get_feature_quark_core())) @@ -254,7 +254,7 @@ class TelepathyClient extends Tp.BaseClient { dispatchOp.claim_with_finish(result); this._handlingChannels(account, conn, [channel], false); } catch (err) { - log(`Failed to Claim channel: ${err}`); + log('Failed to Claim channel: %s'.format(err.toString())); } }); diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js index 63bcbdf5e..385cee469 100644 --- a/js/ui/dateMenu.js +++ b/js/ui/dateMenu.js @@ -230,7 +230,7 @@ class WorldClocksSection extends St.Button { _onProxyReady(proxy, error) { if (error) { - log(`Failed to create GNOME Clocks proxy: ${error}`); + log('Failed to create GNOME Clocks proxy: %s'.format(error)); return; } diff --git a/js/ui/endSessionDialog.js b/js/ui/endSessionDialog.js index ff1aa0ddf..42ae0d3f2 100644 --- a/js/ui/endSessionDialog.js +++ b/js/ui/endSessionDialog.js @@ -299,7 +299,7 @@ class EndSessionDialog extends ModalDialog.ModalDialog { try { this._updatesPermission = Polkit.Permission.new_finish(res); } catch (e) { - log(`No permission to trigger offline updates: ${e}`); + log('No permission to trigger offline updates: %s'.format(e.toString())); } }); } @@ -563,7 +563,7 @@ class EndSessionDialog extends ModalDialog.ModalDialog { if (!sessionId) { this._loginManager.getCurrentSessionProxy(currentSessionProxy => { sessionId = currentSessionProxy.Id; - log(`endSessionDialog: No XDG_SESSION_ID, fetched from logind: ${sessionId}`); + log('endSessionDialog: No XDG_SESSION_ID, fetched from logind: %d'.format(sessionId)); }); } diff --git a/js/ui/extensionDownloader.js b/js/ui/extensionDownloader.js index abaa644e0..5f6e74b09 100644 --- a/js/ui/extensionDownloader.js +++ b/js/ui/extensionDownloader.js @@ -10,10 +10,9 @@ const FileUtils = imports.misc.fileUtils; const Main = imports.ui.main; const ModalDialog = imports.ui.modalDialog; -var REPOSITORY_URL_BASE = 'https://extensions.gnome.org'; -var REPOSITORY_URL_DOWNLOAD = `${REPOSITORY_URL_BASE}/download-extension/%s.shell-extension.zip`; -var REPOSITORY_URL_INFO = `${REPOSITORY_URL_BASE}/extension-info/`; -var REPOSITORY_URL_UPDATE = `${REPOSITORY_URL_BASE}/update-info/`; +var REPOSITORY_URL_DOWNLOAD = 'https://extensions.gnome.org/download-extension/%s.shell-extension.zip'; +var REPOSITORY_URL_INFO = 'https://extensions.gnome.org/extension-info/'; +var REPOSITORY_URL_UPDATE = 'https://extensions.gnome.org/update-info/'; let _httpSession; @@ -25,7 +24,7 @@ function installExtension(uuid, invocation) { _httpSession.queue_message(message, () => { if (message.status_code != Soup.KnownStatusCode.OK) { - Main.extensionManager.logExtensionError(uuid, `downloading info: ${message.status_code}`); + Main.extensionManager.logExtensionError(uuid, 'downloading info: %d'.format(message.status_code)); invocation.return_dbus_error('org.gnome.Shell.DownloadInfoError', message.status_code.toString()); return; } @@ -34,7 +33,7 @@ function installExtension(uuid, invocation) { try { info = JSON.parse(message.response_body.data); } catch (e) { - Main.extensionManager.logExtensionError(uuid, `parsing info: ${e}`); + Main.extensionManager.logExtensionError(uuid, 'parsing info: %s'.format(e.toString())); invocation.return_dbus_error('org.gnome.Shell.ParseInfoError', e.toString()); return; } @@ -112,7 +111,7 @@ function downloadExtensionUpdate(uuid) { gotExtensionZipFile(session, message, uuid, dir, () => { Main.extensionManager.notifyExtensionUpdate(uuid); }, (code, msg) => { - log(`Error while downloading update for extension ${uuid}: ${code} (${msg})`); + log('Error while downloading update for extension %s: %s (%s)'.format(uuid, code, msg)); }); }); } @@ -133,7 +132,7 @@ function checkForUpdates() { let params = { shell_version: Config.PACKAGE_VERSION, installed: JSON.stringify(metadatas), - disable_version_validation: `${versionCheck}`, + disable_version_validation: versionCheck.toString(), }; let url = REPOSITORY_URL_UPDATE; @@ -195,8 +194,8 @@ class InstallExtensionDialog extends ModalDialog.ModalDialog { let dir = Gio.File.new_for_path(GLib.build_filenamev([global.userdatadir, 'extensions', uuid])); let invocation = this._invocation; function errback(code, msg) { - log(`Error while installing ${uuid}: ${code} (${msg})`); - invocation.return_dbus_error(`org.gnome.Shell.${code}`, msg || ''); + log('Error while installing %s: %s (%s)'.format(uuid, code, msg)); + invocation.return_dbus_error('org.gnome.Shell.%s'.format(code), msg || ''); } function callback() { @@ -204,7 +203,7 @@ class InstallExtensionDialog extends ModalDialog.ModalDialog { let extension = Main.extensionManager.createExtensionObject(uuid, dir, ExtensionUtils.ExtensionType.PER_USER); Main.extensionManager.loadExtension(extension); if (!Main.extensionManager.enableExtension(uuid)) - throw new Error(`Cannot add ${uuid} to enabled extensions gsettings key`); + throw new Error('Cannot add %s to enabled extensions gsettings key'.format(uuid)); } catch (e) { uninstallExtension(uuid); errback('LoadExtensionError', e); diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js index 9d883505e..3f2ee35ef 100644 --- a/js/ui/extensionSystem.js +++ b/js/ui/extensionSystem.js @@ -42,7 +42,7 @@ var ExtensionManager = class { try { disableFile.create(Gio.FileCreateFlags.REPLACE_DESTINATION, null); } catch (e) { - log(`Failed to create file ${disableFilename}: ${e.message}`); + log('Failed to create file %s: %s'.format(disableFilename, e.message)); } GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 60, () => { @@ -140,7 +140,7 @@ var ExtensionManager = class { if (extension.state != ExtensionState.DISABLED) return; - let stylesheetNames = [`${global.session_mode}.css`, 'stylesheet.css']; + let stylesheetNames = ['%s.css'.format(global.session_mode), 'stylesheet.css']; let theme = St.ThemeContext.get_for_stage(global.stage).get_theme(); for (let i = 0; i < stylesheetNames.length; i++) { try { @@ -236,7 +236,7 @@ var ExtensionManager = class { if (!extension) return; - let message = `${error}`; + let message = error.toString(); extension.error = message; extension.state = ExtensionState.ERROR; @@ -244,7 +244,7 @@ var ExtensionManager = class { extension.errors = []; extension.errors.push(message); - logError(error, `Extension ${uuid}`); + logError(error, 'Extension %s'.format(uuid)); this.emit('extension-state-changed', extension); } @@ -259,24 +259,24 @@ var ExtensionManager = class { if (metadataContents instanceof Uint8Array) metadataContents = imports.byteArray.toString(metadataContents); } catch (e) { - throw new Error(`Failed to load metadata.json: ${e}`); + throw new Error('Failed to load metadata.json: %s'.format(e.toString())); } let meta; try { meta = JSON.parse(metadataContents); } catch (e) { - throw new Error(`Failed to parse metadata.json: ${e}`); + throw new Error('Failed to parse metadata.json: %s'.format(e.toString())); } let requiredProperties = ['uuid', 'name', 'description', 'shell-version']; for (let i = 0; i < requiredProperties.length; i++) { let prop = requiredProperties[i]; if (!meta[prop]) - throw new Error(`missing "${prop}" property in metadata.json`); + throw new Error('missing "%s" property in metadata.json'.format(prop)); } if (uuid != meta.uuid) - throw new Error(`uuid "${meta.uuid}" from metadata.json does not match directory name "${uuid}"`); + throw new Error('uuid "%s" from metadata.json does not match directory name "%s"'.format(meta.uuid, uuid)); let extension = { metadata: meta, @@ -496,17 +496,17 @@ var ExtensionManager = class { } _loadExtensions() { - global.settings.connect(`changed::${ENABLED_EXTENSIONS_KEY}`, + global.settings.connect('changed::%s'.format(ENABLED_EXTENSIONS_KEY), this._onEnabledExtensionsChanged.bind(this)); - global.settings.connect(`changed::${DISABLED_EXTENSIONS_KEY}`, + global.settings.connect('changed::%s'.format(DISABLED_EXTENSIONS_KEY), this._onEnabledExtensionsChanged.bind(this)); - global.settings.connect(`changed::${DISABLE_USER_EXTENSIONS_KEY}`, + global.settings.connect('changed::%s'.format(DISABLE_USER_EXTENSIONS_KEY), this._onUserExtensionsEnabledChanged.bind(this)); - global.settings.connect(`changed::${EXTENSION_DISABLE_VERSION_CHECK_KEY}`, + global.settings.connect('changed::%s'.format(EXTENSION_DISABLE_VERSION_CHECK_KEY), this._onVersionValidationChanged.bind(this)); - global.settings.connect(`writable-changed::${ENABLED_EXTENSIONS_KEY}`, + global.settings.connect('writable-changed::%s'.format(ENABLED_EXTENSIONS_KEY), this._onSettingsWritableChanged.bind(this)); - global.settings.connect(`writable-changed::${DISABLED_EXTENSIONS_KEY}`, + global.settings.connect('writable-changed::%s'.format(DISABLED_EXTENSIONS_KEY), this._onSettingsWritableChanged.bind(this)); this._enabledExtensions = this._getEnabledExtensions(); @@ -519,7 +519,7 @@ var ExtensionManager = class { let uuid = info.get_name(); let existing = this.lookup(uuid); if (existing) { - log(`Extension ${uuid} already installed in ${existing.path}. ${dir.get_path()} will not be loaded`); + log('Extension %s already installed in %s. %s will not be loaded'.format(uuid, existing.path, dir.get_path())); return; } @@ -530,7 +530,7 @@ var ExtensionManager = class { try { extension = this.createExtensionObject(uuid, dir, type); } catch (e) { - logError(e, `Could not load extension ${uuid}`); + logError(e, 'Could not load extension %s'.format(uuid)); return; } this.loadExtension(extension); diff --git a/js/ui/lookingGlass.js b/js/ui/lookingGlass.js index 9e32183a2..d101591ef 100644 --- a/js/ui/lookingGlass.js +++ b/js/ui/lookingGlass.js @@ -244,7 +244,7 @@ function objectToString(o) { // special case this since the default is way, way too verbose return ''; } else { - return `${o}`; + return o.toString(); } } @@ -291,7 +291,7 @@ class Result extends St.BoxLayout { this.add(cmdTxt); let box = new St.BoxLayout({}); this.add(box); - let resultTxt = new St.Label({ text: `r(${index}) = ` }); + let resultTxt = new St.Label({ text: 'r(%d) = '.format(index) }); resultTxt.clutter_text.ellipsize = Pango.EllipsizeMode.END; box.add(resultTxt); let objLink = new ObjLink(this._lookingGlass, o); @@ -331,7 +331,7 @@ var WindowList = GObject.registerClass({ box.add_child(windowLink); let propsBox = new St.BoxLayout({ vertical: true, style: 'padding-left: 6px;' }); box.add(propsBox); - propsBox.add(new St.Label({ text: `wmclass: ${metaWindow.get_wm_class()}` })); + propsBox.add(new St.Label({ text: 'wmclass: %s'.format(metaWindow.get_wm_class()) })); let app = tracker.get_window_app(metaWindow); if (app != null && !app.is_window_backed()) { let icon = app.create_icon_texture(22); @@ -424,7 +424,7 @@ class ObjInspector extends St.ScrollView { link = new St.Label({ text: '' }); } let box = new St.BoxLayout(); - box.add(new St.Label({ text: `${propName}: ` })); + box.add(new St.Label({ text: '%s: '.format(propName) })); box.add(link); this._container.add_actor(box); } @@ -641,9 +641,9 @@ var Inspector = GObject.registerClass({ this._target = target; this._pointerTarget = target; - let position = `[inspect x: ${stageX} y: ${stageY}]`; + let position = '[inspect x: %d y: %d]'.format(stageX, stageY); this._displayText.text = ''; - this._displayText.text = `${position} ${this._target}`; + this._displayText.text = '%s %s'.format(position, this._target); this._lookingGlass.setBorderPaintTarget(this._target); } @@ -846,7 +846,7 @@ class LookingGlass extends St.BoxLayout { inspectIcon.connect('button-press-event', () => { let inspector = new Inspector(this); inspector.connect('target', (i, target, stageX, stageY) => { - this._pushResult(`inspect(${Math.round(stageX)}, ${Math.round(stageY)})`, target); + this._pushResult('inspect(%d, %d)'.format(Math.round(stageX), Math.round(stageY)), target); }); inspector.connect('closed', () => { this.show(); @@ -952,9 +952,8 @@ class LookingGlass extends St.BoxLayout { // monospace font to be bold/oblique/etc. Could easily be added here. let size = fontDesc.get_size() / 1024.; let unit = fontDesc.get_size_is_absolute() ? 'px' : 'pt'; - this.style = ` - font-size: ${size}${unit}; - font-family: "${fontDesc.get_family()}";`; + this.style = 'font-size: %d%s; font-family: "%s";'.format( + size, unit, fontDesc.get_family()); } setBorderPaintTarget(obj) { @@ -1035,7 +1034,7 @@ class LookingGlass extends St.BoxLayout { this._history.addItem(command); let lines = command.split(';'); - lines.push(`return ${lines.pop()}`); + lines.push('return %s'.format(lines.pop())); let fullCmd = commandHeader + lines.join(';'); @@ -1043,7 +1042,7 @@ class LookingGlass extends St.BoxLayout { try { resultObj = Function(fullCmd)(); } catch (e) { - resultObj = ``; + resultObj = ''.format(e.toString()); } this._pushResult(command, resultObj); @@ -1062,7 +1061,7 @@ class LookingGlass extends St.BoxLayout { try { return this._resultsArea.get_child_at_index(idx - this._offset).o; } catch (e) { - throw new Error(`Unknown result at index ${idx}`); + throw new Error('Unknown result at index %d'.format(idx)); } } diff --git a/js/ui/main.js b/js/ui/main.js index 09b0249aa..f0a0ac15f 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -257,7 +257,7 @@ function _initializeUI() { if (sessionMode.currentMode != 'gdm' && sessionMode.currentMode != 'initial-setup') { GLib.log_structured(LOG_DOMAIN, GLib.LogLevelFlags.LEVEL_MESSAGE, { - 'MESSAGE': `GNOME Shell started at ${_startDate}`, + 'MESSAGE': 'GNOME Shell started at %s'.format(_startDate), 'MESSAGE_ID': GNOMESHELL_STARTED_MESSAGE_ID, }); } @@ -280,7 +280,7 @@ function _initializeUI() { let perfModuleName = GLib.getenv("SHELL_PERF_MODULE"); if (perfModuleName) { let perfOutput = GLib.getenv("SHELL_PERF_OUTPUT"); - let module = eval(`imports.perf.${perfModuleName};`); + let module = eval('imports.perf.%s;'.format(perfModuleName)); Scripting.runPerfScript(module, perfOutput); } }); @@ -289,7 +289,7 @@ function _initializeUI() { function _getStylesheet(name) { let stylesheet; - stylesheet = Gio.File.new_for_uri(`resource:///org/gnome/shell/theme/${name}`); + stylesheet = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/%s'.format(name)); if (stylesheet.query_exists(null)) return stylesheet; @@ -301,7 +301,7 @@ function _getStylesheet(name) { return stylesheet; } - stylesheet = Gio.File.new_for_path(`${global.datadir}/theme/${name}`); + stylesheet = Gio.File.new_for_path('%s/theme/%s'.format(global.datadir, name)); if (stylesheet.query_exists(null)) return stylesheet; @@ -359,12 +359,12 @@ function reloadThemeResource() { if (_themeResource) _themeResource._unregister(); - _themeResource = Gio.Resource.load(`${global.datadir}/gnome-shell-theme.gresource`); + _themeResource = Gio.Resource.load('%s/gnome-shell-theme.gresource'.format(global.datadir)); _themeResource._register(); } function _loadOskLayouts() { - _oskResource = Gio.Resource.load(`${global.datadir}/gnome-shell-osk-layouts.gresource`); + _oskResource = Gio.Resource.load('%s/gnome-shell-osk-layouts.gresource'.format(global.datadir)); _oskResource._register(); } @@ -418,9 +418,9 @@ function notify(msg, details) { function notifyError(msg, details) { // Also print to stderr so it's logged somewhere if (details) - log(`error: ${msg}: ${details}`); + log('error: %s: %s'.format(msg, details)); else - log(`error: ${msg}`); + log('error: %s'.format(msg)); notify(msg, details); } @@ -687,7 +687,7 @@ function _queueBeforeRedraw(workId) { */ function initializeDeferredWork(actor, callback) { // Turn into a string so we can use as an object property - let workId = `${++_deferredWorkSequence}`; + let workId = (++_deferredWorkSequence).toString(); _deferredWorkData[workId] = { actor, callback }; actor.connect('notify::mapped', () => { diff --git a/js/ui/messageList.js b/js/ui/messageList.js index e798d0bfc..0b4f7db6f 100644 --- a/js/ui/messageList.js +++ b/js/ui/messageList.js @@ -79,7 +79,7 @@ class URLHighlighter extends St.Label { if (urlId != -1) { let url = this._urls[urlId].url; if (!url.includes(':')) - url = `http://${url}`; + url = 'http://%s'.format(url); Gio.app_info_launch_default_for_uri( url, global.create_app_launch_context(0, -1)); @@ -132,7 +132,7 @@ class URLHighlighter extends St.Label { for (let i = 0; i < urls.length; i++) { let url = urls[i]; let str = this._text.substr(pos, url.pos - pos); - markup += `${str}${url.url}`; + markup += '%s%s'.format(str, this._linkColor, url.url); pos = url.pos + url.url.length; } markup += this._text.substr(pos); diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index ed65130e6..6f03968e9 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -229,15 +229,17 @@ var NotificationApplicationPolicy = GObject.registerClass({ this._canonicalId = this._canonicalizeId(id); this._masterSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.notifications' }); - this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.notifications.application', - path: `/org/gnome/desktop/notifications/application/${this._canonicalId}/` }); + this._settings = new Gio.Settings({ + schema_id: 'org.gnome.desktop.notifications.application', + path: '/org/gnome/desktop/notifications/application/%s/'.format(this._canonicalId), + }); this._masterSettings.connect('changed', this._changed.bind(this)); this._settings.connect('changed', this._changed.bind(this)); } store() { - this._settings.set_string('application-id', `${this.id}.desktop`); + this._settings.set_string('application-id', '%s.desktop'.format(this.id)); let apps = this._masterSettings.get_strv('application-children'); if (!apps.includes(this._canonicalId)) { @@ -1077,7 +1079,7 @@ var MessageTray = GObject.registerClass({ add(source) { if (this.contains(source)) { - log(`Trying to re-add source ${source.title}`); + log('Trying to re-add source %s'.format(source.title)); return; } diff --git a/js/ui/mpris.js b/js/ui/mpris.js index a16e56b5d..bc98c0402 100644 --- a/js/ui/mpris.js +++ b/js/ui/mpris.js @@ -147,7 +147,7 @@ var MprisPlayer = class MprisPlayer { // so prefer activating the app via .desktop file if possible let app = null; if (this._mprisProxy.DesktopEntry) { - let desktopId = `${this._mprisProxy.DesktopEntry}.desktop`; + let desktopId = '%s.desktop'.format(this._mprisProxy.DesktopEntry); app = Shell.AppSystem.get_default().lookup_app(desktopId); } @@ -192,9 +192,9 @@ var MprisPlayer = class MprisPlayer { if (!Array.isArray(this._trackArtists) || !this._trackArtists.every(artist => typeof artist === 'string')) { if (typeof this._trackArtists !== 'undefined') { - log(`Received faulty track artist metadata from ${ - this._busName}; expected an array of strings, got ${ - this._trackArtists} (${typeof this._trackArtists})`); + log(('Received faulty track artist metadata from %s; ' + + 'expected an array of strings, got %s (%s)').format( + this._busName, this._trackArtists, typeof this._trackArtists)); } this._trackArtists = [_("Unknown artist")]; } @@ -202,9 +202,9 @@ var MprisPlayer = class MprisPlayer { this._trackTitle = metadata['xesam:title']; if (typeof this._trackTitle !== 'string') { if (typeof this._trackTitle !== 'undefined') { - log(`Received faulty track title metadata from ${ - this._busName}; expected a string, got ${ - this._trackTitle} (${typeof this._trackTitle})`); + log(('Received faulty track title metadata from %s; ' + + 'expected a string, got %s (%s)').format( + this._busName, this._trackTitle, typeof this._trackTitle)); } this._trackTitle = _("Unknown title"); } @@ -212,9 +212,9 @@ var MprisPlayer = class MprisPlayer { this._trackCoverUrl = metadata['mpris:artUrl']; if (typeof this._trackCoverUrl !== 'string') { if (typeof this._trackCoverUrl !== 'undefined') { - log(`Received faulty track cover art metadata from ${ - this._busName}; expected a string, got ${ - this._trackCoverUrl} (${typeof this._trackCoverUrl})`); + log(('Received faulty track cover art metadata from %s; ' + + 'expected a string, got %s (%s)').format( + this._busName, this._trackCoverUrl, typeof this._trackCoverUrl)); } this._trackCoverUrl = ''; } diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js index 1765ca369..0133affd9 100644 --- a/js/ui/notificationDaemon.js +++ b/js/ui/notificationDaemon.js @@ -477,7 +477,7 @@ class FdoNotificationDaemonSource extends MessageTray.Source { return app; if (appId) { - app = Shell.AppSystem.get_default().lookup_app(`${appId}.desktop`); + app = Shell.AppSystem.get_default().lookup_app('%s.desktop'.format(appId)); if (app != null) return app; } @@ -614,7 +614,7 @@ function objectPathFromAppId(appId) { } function getPlatformData() { - let startupId = GLib.Variant.new('s', `_TIME${global.get_current_time()}`); + let startupId = GLib.Variant.new('s', '_TIME%s'.format(global.get_current_time())); return { "desktop-startup-id": startupId }; } @@ -627,7 +627,7 @@ class GtkNotificationDaemonAppSource extends MessageTray.Source { if (!GLib.Variant.is_object_path(objectPath)) throw new InvalidAppError(); - let app = Shell.AppSystem.get_default().lookup_app(`${appId}.desktop`); + let app = Shell.AppSystem.get_default().lookup_app('%s.desktop'.format(appId)); if (!app) throw new InvalidAppError(); diff --git a/js/ui/overviewControls.js b/js/ui/overviewControls.js index 360143945..cc430f918 100644 --- a/js/ui/overviewControls.js +++ b/js/ui/overviewControls.js @@ -127,7 +127,7 @@ class SlidingControl extends St.Widget { } _getSlide() { - throw new GObject.NotImplementedError(`_getSlide in ${this.constructor.name}`); + throw new GObject.NotImplementedError('_getSlide in %s'.format(this.constructor.name)); } _updateSlide() { diff --git a/js/ui/padOsd.js b/js/ui/padOsd.js index ddcc08bef..632b52781 100644 --- a/js/ui/padOsd.js +++ b/js/ui/padOsd.js @@ -347,9 +347,7 @@ var PadDiagram = GObject.registerClass({ return '' + ' ` + // " + 'width="%d" height="%d">'.format(this._imageWidth, this._imageHeight) + '${title}`); + '%s'.format(title)); } _isEditedAction(type, number, dir) { @@ -932,7 +930,7 @@ var PadOsd = GObject.registerClass({ _startButtonActionEdition(button) { let ch = String.fromCharCode('A'.charCodeAt() + button); - let key = `button${ch}`; + let key = 'button%s'.format(ch); this._startActionEdition(key, Meta.PadActionType.BUTTON, button); } diff --git a/js/ui/panel.js b/js/ui/panel.js index 80e6179b6..eb3a19599 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -1099,7 +1099,7 @@ class Panel extends St.Widget { addToStatusArea(role, indicator, position, box) { if (this.statusArea[role]) - throw new Error(`Extension point conflict: there is already a status indicator for role ${role}`); + throw new Error('Extension point conflict: there is already a status indicator for role %s'.format(role)); if (!(indicator instanceof PanelMenu.Button)) throw new TypeError('Status indicator must be an instance of PanelMenu.Button'); diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index 0cc2803a4..ad827ac5b 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -462,7 +462,7 @@ class PopupImageMenuItem extends PopupBaseMenuItem { var PopupMenuBase = class { constructor(sourceActor, styleClass) { if (this.constructor === PopupMenuBase) - throw new TypeError(`Cannot instantiate abstract class ${this.constructor.name}`); + throw new TypeError('Cannot instantiate abstract class %s'.format(this.constructor.name)); this.sourceActor = sourceActor; this.focusActor = sourceActor; @@ -546,7 +546,7 @@ var PopupMenuBase = class { let app = Shell.AppSystem.get_default().lookup_app(desktopFile); if (!app) { - log(`Settings panel for desktop file ${desktopFile} could not be loaded!`); + log('Settings panel for desktop file %s could not be loaded!'.format(desktopFile)); return; } diff --git a/js/ui/runDialog.js b/js/ui/runDialog.js index 8794f7488..356a97436 100644 --- a/js/ui/runDialog.js +++ b/js/ui/runDialog.js @@ -194,7 +194,7 @@ class RunDialog extends ModalDialog.ModalDialog { if (inTerminal) { let exec = this._terminalSettings.get_string(EXEC_KEY); let execArg = this._terminalSettings.get_string(EXEC_ARG_KEY); - command = `${exec} ${execArg} ${input}`; + command = '%s %s %s'.format(exec, execArg, input); } Util.trySpawnCommandLine(command); } catch (e) { @@ -205,7 +205,7 @@ class RunDialog extends ModalDialog.ModalDialog { } else { if (input.charAt(0) == '~') input = input.slice(1); - path = `${GLib.get_home_dir()}/${input}`; + path = '%s/%s'.format(GLib.get_home_dir(), input); } if (GLib.file_test(path, GLib.FileTest.EXISTS)) { diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js index 0b5e844d8..de43d3da1 100644 --- a/js/ui/screenShield.js +++ b/js/ui/screenShield.js @@ -112,10 +112,10 @@ var ScreenShield = class { }); this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA }); - this._settings.connect(`changed::${LOCK_ENABLED_KEY}`, this._syncInhibitor.bind(this)); + this._settings.connect('changed::%s'.format(LOCK_ENABLED_KEY), this._syncInhibitor.bind(this)); this._lockSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA }); - this._lockSettings.connect(`changed::${DISABLE_LOCK_KEY}`, this._syncInhibitor.bind(this)); + this._lockSettings.connect('changed::%s'.format(DISABLE_LOCK_KEY), this._syncInhibitor.bind(this)); this._isModal = false; this._isGreeter = false; diff --git a/js/ui/search.js b/js/ui/search.js index 37188ffbd..88f06211c 100644 --- a/js/ui/search.js +++ b/js/ui/search.js @@ -231,18 +231,18 @@ var SearchResultsBase = GObject.registerClass({ this.provider.getResultMetas(metasNeeded, metas => { if (this._cancellable.is_cancelled()) { if (metas.length > 0) - log(`Search provider ${this.provider.id} returned results after the request was canceled`); + log('Search provider %s returned results after the request was canceled'.format(this.provider.id)); callback(false); return; } if (metas.length != metasNeeded.length) { - log(`Wrong number of result metas returned by search provider ${this.provider.id}: ` + - `expected ${metasNeeded.length} but got ${metas.length}`); + log('Wrong number of result metas returned by search provider %s: '.format(this.provider.id) + + 'expected %d but got %d'.format(metasNeeded.length, metas.length)); callback(false); return; } if (metas.some(meta => !meta.name || !meta.id)) { - log(`Invalid result meta returned from search provider ${this.provider.id}`); + log('Invalid result meta returned from search provider %s'.format(this.provider.id)); callback(false); return; } @@ -609,7 +609,7 @@ var SearchResultsView = GObject.registerClass({ this._searchTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 150, this._onSearchTimeout.bind(this)); let escapedTerms = this._terms.map(term => Shell.util_regex_escape(term)); - this._highlightRegex = new RegExp(`(${escapedTerms.join('|')})`, 'gi'); + this._highlightRegex = new RegExp('(%s)'.format(escapedTerms.join('|')), 'gi'); this.emit('terms-changed'); } diff --git a/js/ui/shellMountOperation.js b/js/ui/shellMountOperation.js index 702f2c2b6..e17b0bc17 100644 --- a/js/ui/shellMountOperation.js +++ b/js/ui/shellMountOperation.js @@ -570,7 +570,7 @@ var GnomeShellMountOpHandler = class { _setCurrentRequest(invocation, id, type) { let oldId = this._currentId; let oldType = this._currentType; - let requestId = `${id}@${invocation.get_sender()}`; + let requestId = '%s@%s'.format(id, invocation.get_sender()); this._clearCurrentRequest(Gio.MountOperationResult.UNHANDLED, {}); diff --git a/js/ui/status/accessibility.js b/js/ui/status/accessibility.js index aa19bd86d..206ed5114 100644 --- a/js/ui/status/accessibility.js +++ b/js/ui/status/accessibility.js @@ -42,7 +42,7 @@ class ATIndicator extends PanelMenu.Button { this.add_child(this._hbox); this._a11ySettings = new Gio.Settings({ schema_id: A11Y_SCHEMA }); - this._a11ySettings.connect(`changed::${KEY_ALWAYS_SHOW}`, this._queueSyncMenuVisibility.bind(this)); + this._a11ySettings.connect('changed::%s'.format(KEY_ALWAYS_SHOW), this._queueSyncMenuVisibility.bind(this)); let highContrast = this._buildHCItem(); this.menu.addMenuItem(highContrast); @@ -118,7 +118,7 @@ class ATIndicator extends PanelMenu.Button { settings.is_writable(key), enabled => settings.set_boolean(key, enabled)); - settings.connect(`changed::${key}`, () => { + settings.connect('changed::%s'.format(key), () => { widget.setToggleState(settings.get_boolean(key)); this._queueSyncMenuVisibility(); @@ -150,7 +150,7 @@ class ATIndicator extends PanelMenu.Button { } }); - interfaceSettings.connect(`changed::${KEY_GTK_THEME}`, () => { + interfaceSettings.connect('changed::%s'.format(KEY_GTK_THEME), () => { let value = interfaceSettings.get_string(KEY_GTK_THEME); if (value == HIGH_CONTRAST_THEME) { highContrast.setToggleState(true); @@ -162,7 +162,7 @@ class ATIndicator extends PanelMenu.Button { this._queueSyncMenuVisibility(); }); - interfaceSettings.connect(`changed::${KEY_ICON_THEME}`, () => { + interfaceSettings.connect('changed::%s'.format(KEY_ICON_THEME), () => { let value = interfaceSettings.get_string(KEY_ICON_THEME); if (value != HIGH_CONTRAST_THEME) iconTheme = value; @@ -187,7 +187,7 @@ class ATIndicator extends PanelMenu.Button { } }); - settings.connect(`changed::${KEY_TEXT_SCALING_FACTOR}`, () => { + settings.connect('changed::%s'.format(KEY_TEXT_SCALING_FACTOR), () => { factor = settings.get_double(KEY_TEXT_SCALING_FACTOR); let active = factor > 1.0; widget.setToggleState(active); diff --git a/js/ui/status/dwellClick.js b/js/ui/status/dwellClick.js index c194d3329..ce13f73ba 100644 --- a/js/ui/status/dwellClick.js +++ b/js/ui/status/dwellClick.js @@ -45,8 +45,8 @@ class DwellClickIndicator extends PanelMenu.Button { this.add_child(this._hbox); this._a11ySettings = new Gio.Settings({ schema_id: MOUSE_A11Y_SCHEMA }); - this._a11ySettings.connect(`changed::${KEY_DWELL_CLICK_ENABLED}`, this._syncMenuVisibility.bind(this)); - this._a11ySettings.connect(`changed::${KEY_DWELL_MODE}`, this._syncMenuVisibility.bind(this)); + this._a11ySettings.connect('changed::%s'.format(KEY_DWELL_CLICK_ENABLED), this._syncMenuVisibility.bind(this)); + this._a11ySettings.connect('changed::%s'.format(KEY_DWELL_MODE), this._syncMenuVisibility.bind(this)); this._seat = Clutter.get_default_backend().get_default_seat(); this._seat.connect('ptr-a11y-dwell-click-type-changed', this._updateClickType.bind(this)); diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js index ae7acac34..2f0ab94f0 100644 --- a/js/ui/status/keyboard.js +++ b/js/ui/status/keyboard.js @@ -64,7 +64,7 @@ var InputSource = class { return this.id; if (engineDesc.variant && engineDesc.variant.length > 0) - return `${engineDesc.layout}+${engineDesc.variant}`; + return '%s+%s'.format(engineDesc.layout, engineDesc.variant); else return engineDesc.layout; } @@ -138,7 +138,7 @@ class InputSourceSwitcher extends SwitcherPopup.SwitcherList { var InputSourceSettings = class { constructor() { if (this.constructor === InputSourceSettings) - throw new TypeError(`Cannot instantiate abstract class ${this.constructor.name}`); + throw new TypeError('Cannot instantiate abstract class %s'.format(this.constructor.name)); } _emitInputSourcesChanged() { @@ -211,7 +211,7 @@ var InputSourceSystemSettings = class extends InputSourceSettings { try { props = conn.call_finish(result).deep_unpack()[0]; } catch (e) { - log(`Could not get properties from ${this._BUS_NAME}`); + log('Could not get properties from %s'.format(this._BUS_NAME)); return; } let layouts = props['X11Layout'].unpack(); @@ -239,7 +239,7 @@ var InputSourceSystemSettings = class extends InputSourceSettings { for (let i = 0; i < layouts.length && !!layouts[i]; i++) { let id = layouts[i]; if (variants[i]) - id += `+${variants[i]}`; + id += '+%s'.format(variants[i]); sourcesList.push({ type: INPUT_SOURCE_TYPE_XKB, id }); } return sourcesList; @@ -261,9 +261,9 @@ var InputSourceSessionSettings = class extends InputSourceSettings { this._KEY_PER_WINDOW = 'per-window'; this._settings = new Gio.Settings({ schema_id: this._DESKTOP_INPUT_SOURCES_SCHEMA }); - this._settings.connect(`changed::${this._KEY_INPUT_SOURCES}`, this._emitInputSourcesChanged.bind(this)); - this._settings.connect(`changed::${this._KEY_KEYBOARD_OPTIONS}`, this._emitKeyboardOptionsChanged.bind(this)); - this._settings.connect(`changed::${this._KEY_PER_WINDOW}`, this._emitPerWindowChanged.bind(this)); + this._settings.connect('changed::%s'.format(this._KEY_INPUT_SOURCES), this._emitInputSourcesChanged.bind(this)); + this._settings.connect('changed::%s'.format(this._KEY_KEYBOARD_OPTIONS), this._emitKeyboardOptionsChanged.bind(this)); + this._settings.connect('changed::%s'.format(this._KEY_PER_WINDOW), this._emitPerWindowChanged.bind(this)); } _getSourcesList(key) { @@ -1071,7 +1071,7 @@ class InputSourceIndicator extends PanelMenu.Button { let description = xkbLayout; if (xkbVariant.length > 0) - description = `${description}\t${xkbVariant}`; + description = '%s\t%s'.format(description, xkbVariant); Util.spawn(['gkbd-keyboard-display', '-l', description]); } diff --git a/js/ui/status/location.js b/js/ui/status/location.js index 13eefd72c..5cd6718a3 100644 --- a/js/ui/status/location.js +++ b/js/ui/status/location.js @@ -48,9 +48,9 @@ class Indicator extends PanelMenu.SystemIndicator { super._init(); this._settings = new Gio.Settings({ schema_id: LOCATION_SCHEMA }); - this._settings.connect(`changed::${ENABLED}`, + this._settings.connect('changed::%s'.format(ENABLED), this._onMaxAccuracyLevelChanged.bind(this)); - this._settings.connect(`changed::${MAX_ACCURACY_LEVEL}`, + this._settings.connect('changed::%s'.format(MAX_ACCURACY_LEVEL), this._onMaxAccuracyLevelChanged.bind(this)); this._indicator = this._addIndicator(); @@ -244,7 +244,7 @@ var AppAuthorizer = class { this._onAuthDone = onAuthDone; let appSystem = Shell.AppSystem.get_default(); - this._app = appSystem.lookup_app(`${this.desktopId}.desktop`); + this._app = appSystem.lookup_app('%s.desktop'.format(this.desktopId)); if (this._app == null || this._permStoreProxy == null) { this._completeAuth(); diff --git a/js/ui/status/network.js b/js/ui/status/network.js index a8d2d0893..65cb722ff 100644 --- a/js/ui/status/network.js +++ b/js/ui/status/network.js @@ -174,7 +174,7 @@ Signals.addSignalMethods(NMConnectionItem.prototype); var NMConnectionSection = class NMConnectionSection { constructor(client) { if (this.constructor === NMConnectionSection) - throw new TypeError(`Cannot instantiate abstract type ${this.constructor.name}`); + throw new TypeError('Cannot instantiate abstract type %s'.format(this.constructor.name)); this._client = client; @@ -306,7 +306,7 @@ var NMConnectionDevice = class NMConnectionDevice extends NMConnectionSection { super(client); if (this.constructor === NMConnectionDevice) - throw new TypeError(`Cannot instantiate abstract type ${this.constructor.name}`); + throw new TypeError('Cannot instantiate abstract type %s'.format(this.constructor.name)); this._device = device; this._description = ''; @@ -579,7 +579,8 @@ var NMDeviceModem = class extends NMConnectionDevice { } _getSignalIcon() { - return `network-cellular-signal-${signalToIcon(this._mobileDevice.signal_quality)}-symbolic`; + return 'network-cellular-signal-%s-symbolic'.format( + signalToIcon(this._mobileDevice.signal_quality)); } }; @@ -682,10 +683,12 @@ var NMWirelessDialogItem = GObject.registerClass({ } _getSignalIcon() { - if (this._ap.mode == NM80211Mode.ADHOC) + if (this._ap.mode == NM80211Mode.ADHOC) { return 'network-workgroup-symbolic'; - else - return `network-wireless-signal-${signalToIcon(this._ap.strength)}-symbolic`; + } else { + return 'network-wireless-signal-%s-symbolic'.format( + signalToIcon(this._ap.strength)); + } } }); @@ -1369,7 +1372,7 @@ var NMDeviceWireless = class { } if (this._canReachInternet()) - return `network-wireless-signal-${signalToIcon(ap.strength)}-symbolic`; + return 'network-wireless-signal-%s-symbolic'.format(signalToIcon(ap.strength)); else return 'network-wireless-no-route-symbolic'; } @@ -1700,7 +1703,7 @@ class Indicator extends PanelMenu.SystemIndicator { try { this._deviceAdded(this._client, devices[i], true); } catch (e) { - log(`Failed to add device ${devices[i]}: ${e}`); + log('Failed to add device %s: %s'.format(devices[i], e.toString())); } } this._syncDeviceNames(); @@ -1998,7 +2001,7 @@ class Indicator extends PanelMenu.SystemIndicator { } catch (e) { } }); } else { - log(`Invalid result from portal helper: ${result}`); + log('Invalid result from portal helper: %s'.format(result)); } } @@ -2033,7 +2036,7 @@ class Indicator extends PanelMenu.SystemIndicator { new PortalHelperProxy(Gio.DBus.session, 'org.gnome.Shell.PortalHelper', '/org/gnome/Shell/PortalHelper', (proxy, error) => { if (error) { - log(`Error launching the portal helper: ${error}`); + log('Error launching the portal helper: %s'.format(error)); return; } diff --git a/js/ui/status/power.js b/js/ui/status/power.js index 2dd4d26fc..624228c39 100644 --- a/js/ui/status/power.js +++ b/js/ui/status/power.js @@ -23,7 +23,7 @@ class Indicator extends PanelMenu.SystemIndicator { super._init(); this._desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); - this._desktopSettings.connect(`changed::${SHOW_BATTERY_PERCENTAGE}`, + this._desktopSettings.connect('changed::%s'.format(SHOW_BATTERY_PERCENTAGE), this._sync.bind(this)); this._indicator = this._addIndicator(); @@ -117,7 +117,7 @@ class Indicator extends PanelMenu.SystemIndicator { fillLevel === 100) icon = 'battery-level-100-charged-symbolic'; else - icon = `battery-level-${fillLevel}${chargingState}-symbolic`; + icon = 'battery-level-%d%s-symbolic'.format(fillLevel, chargingState); // Make sure we fall back to fallback-icon-name and not GThemedIcon's // default fallbacks diff --git a/js/ui/status/thunderbolt.js b/js/ui/status/thunderbolt.js index a9b3aaf34..52be97583 100644 --- a/js/ui/status/thunderbolt.js +++ b/js/ui/status/thunderbolt.js @@ -315,7 +315,8 @@ class Indicator extends PanelMenu.SystemIndicator { let auth = unlocked && allowed; policy[0] = auth; - log(`thunderbolt: [${device.Name}] auto enrollment: ${auth ? 'yes' : 'no'} (allowed: ${allowed ? 'yes' : 'no'})`); + log('thunderbolt: [%s] auto enrollment: %s (allowed: %s)'.format( + device.Name, auth ? 'yes' : 'no', allowed ? 'yes' : 'no')); if (auth) return; /* we are done */ diff --git a/js/ui/status/volume.js b/js/ui/status/volume.js index 5ffb18989..434dcfbf7 100644 --- a/js/ui/status/volume.js +++ b/js/ui/status/volume.js @@ -36,7 +36,7 @@ var StreamSlider = class { this._slider = new Slider.Slider(0); this._soundSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.sound' }); - this._soundSettings.connect(`changed::${ALLOW_AMPLIFIED_VOLUME_KEY}`, this._amplifySettingsChanged.bind(this)); + this._soundSettings.connect('changed::%s'.format(ALLOW_AMPLIFIED_VOLUME_KEY), this._amplifySettingsChanged.bind(this)); this._amplifySettingsChanged(); this._sliderChangedId = this._slider.connect('notify::value', diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js index 70968ad4d..7f33e68e1 100644 --- a/js/ui/unlockDialog.js +++ b/js/ui/unlockDialog.js @@ -98,7 +98,7 @@ var NotificationsBox = GObject.registerClass({ let count = source.unseenCount; let countLabel = new St.Label({ - text: `${count}`, + text: count.toString(), visible: count > 1, style_class: 'unlock-dialog-notification-count-text', }); @@ -137,7 +137,7 @@ var NotificationsBox = GObject.registerClass({ } let label = new St.Label({ style_class: 'unlock-dialog-notification-count-text' }); - label.clutter_text.set_markup(`${n.title} ${body}`); + label.clutter_text.set_markup('%s %s'.format(n.title, body)); textBox.add(label); visible = true; @@ -262,7 +262,7 @@ var NotificationsBox = GObject.registerClass({ this._showSource(source, obj, obj.sourceBox); } else { let count = source.unseenCount; - obj.countLabel.text = `${count}`; + obj.countLabel.text = count.toString(); obj.countLabel.visible = count > 1; } diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index 8634274a4..075fbb15b 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -123,7 +123,8 @@ class WindowDimmer extends Clutter.BrightnessContrastEffect { } _syncEnabled() { - let animating = this.actor.get_transition(`@effects.${this.name}.brightness`) != null; + let transitionName = '@effects.%s.brightness'.format(this.name); + let animating = this.actor.get_transition(transitionName) != null; let dimmed = this.brightness.red != 127; this.enabled = this._enabled && (animating || dimmed); } @@ -137,7 +138,8 @@ class WindowDimmer extends Clutter.BrightnessContrastEffect { let val = 127 * (1 + (dimmed ? 1 : 0) * DIM_BRIGHTNESS); let color = Clutter.Color.new(val, val, val, 255); - this.actor.ease_property(`@effects.${this.name}.brightness`, color, { + let transitionName = '@effects.%s.brightness'.format(this.name); + this.actor.ease_property(transitionName, color, { mode: Clutter.AnimationMode.LINEAR, duration: (dimmed ? DIM_TIME : UNDIM_TIME) * (animate ? 1 : 0), onComplete: () => this._syncEnabled(),