diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js index 3294d6556..4e2c948dc 100644 --- a/js/gdm/loginDialog.js +++ b/js/gdm/loginDialog.js @@ -425,13 +425,13 @@ var LoginDialog = GObject.registerClass({ this._settings = new Gio.Settings({ schema_id: GdmUtil.LOGIN_SCREEN_SCHEMA }); - this._settings.connect('changed::%s'.format(GdmUtil.BANNER_MESSAGE_KEY), + this._settings.connect(`changed::${GdmUtil.BANNER_MESSAGE_KEY}`, this._updateBanner.bind(this)); - this._settings.connect('changed::%s'.format(GdmUtil.BANNER_MESSAGE_TEXT_KEY), + this._settings.connect(`changed::${GdmUtil.BANNER_MESSAGE_TEXT_KEY}`, this._updateBanner.bind(this)); - this._settings.connect('changed::%s'.format(GdmUtil.DISABLE_USER_LIST_KEY), + this._settings.connect(`changed::${GdmUtil.DISABLE_USER_LIST_KEY}`, this._updateDisableUserList.bind(this)); - this._settings.connect('changed::%s'.format(GdmUtil.LOGO_KEY), + this._settings.connect(`changed::${GdmUtil.LOGO_KEY}`, this._updateLogo.bind(this)); this._textureCache = St.TextureCache.get_default(); diff --git a/js/gdm/util.js b/js/gdm/util.js index d310099a6..771cd18fb 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js @@ -572,14 +572,16 @@ var ShellUserVerifier = class { if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) return; if (!this.serviceIsForeground(serviceName)) { - logError(e, 'Failed to start %s for %s'.format(serviceName, this._userName)); + logError(e, + `Failed to start ${serviceName} for ${this._userName}`); this._hold.release(); return; } - this._reportInitError(this._userName - ? 'Failed to start %s verification for user'.format(serviceName) - : 'Failed to start %s verification'.format(serviceName), e, - serviceName); + this._reportInitError( + this._userName + ? `Failed to start ${serviceName} verification for user` + : `Failed to start ${serviceName} verification`, + e, serviceName); return; } this._hold.release(); diff --git a/js/misc/ibusManager.js b/js/misc/ibusManager.js index 45387877c..55c0d308b 100644 --- a/js/misc/ibusManager.js +++ b/js/misc/ibusManager.js @@ -29,9 +29,9 @@ function _checkIBusVersion(requiredMajor, requiredMinor, requiredMicro) { IBus.MICRO_VERSION >= requiredMicro)) return; - throw "Found IBus version %d.%d.%d but required is %d.%d.%d" - .format(IBus.MAJOR_VERSION, IBus.MINOR_VERSION, IBus.MICRO_VERSION, - requiredMajor, requiredMinor, requiredMicro); + throw new Error(`Found IBus version ${ + IBus.MAJOR_VERSION}.${IBus.MINOR_VERSION}.${IBus.MINOR_VERSION} ` + + `but required is ${requiredMajor}.${requiredMinor}.${requiredMicro}`); } function getIBusManager() { diff --git a/js/misc/systemActions.js b/js/misc/systemActions.js index a45a21c16..48e8d75d8 100644 --- a/js/misc/systemActions.js +++ b/js/misc/systemActions.js @@ -162,17 +162,17 @@ const SystemActions = GObject.registerClass({ this._userManager.connect('user-removed', () => this._updateMultiUser()); - this._lockdownSettings.connect('changed::%s'.format(DISABLE_USER_SWITCH_KEY), + this._lockdownSettings.connect(`changed::${DISABLE_USER_SWITCH_KEY}`, () => this._updateSwitchUser()); - this._lockdownSettings.connect('changed::%s'.format(DISABLE_LOG_OUT_KEY), + this._lockdownSettings.connect(`changed::${DISABLE_LOG_OUT_KEY}`, () => this._updateLogout()); - global.settings.connect('changed::%s'.format(ALWAYS_SHOW_LOG_OUT_KEY), + global.settings.connect(`changed::${ALWAYS_SHOW_LOG_OUT_KEY}`, () => this._updateLogout()); - this._lockdownSettings.connect('changed::%s'.format(DISABLE_LOCK_SCREEN_KEY), + this._lockdownSettings.connect(`changed::${DISABLE_LOCK_SCREEN_KEY}`, () => this._updateLockScreen()); - this._lockdownSettings.connect('changed::%s'.format(DISABLE_LOG_OUT_KEY), + this._lockdownSettings.connect(`changed::${DISABLE_LOG_OUT_KEY}`, () => this._updateHaveShutdown()); this.forceUpdate(); diff --git a/js/misc/util.js b/js/misc/util.js index bea2cfe85..389fdde28 100644 --- a/js/misc/util.js +++ b/js/misc/util.js @@ -22,7 +22,7 @@ const _leadingJunk = '[\\s`(\\[{\'\\"<\u00AB\u201C\u2018]'; const _notTrailingJunk = '[^\\s`!()\\[\\]{};:\'\\".,<>?\u00AB\u00BB\u200E\u200F\u201C\u201D\u2018\u2019\u202A\u202C]'; const _urlRegexp = new RegExp( - '(^|%s)'.format(_leadingJunk) + + `(^|${_leadingJunk})` + '(' + '(?:' + '(?:http|https|ftp)://' + // scheme:// @@ -34,12 +34,12 @@ const _urlRegexp = new RegExp( '(?:' + // one or more: '[^\\s()<>]+' + // run of non-space non-() '|' + // or - '%s'.format(_balancedParens) + // balanced parens + `${_balancedParens}` + // balanced parens ')+' + '(?:' + // end with: - '%s'.format(_balancedParens) + // balanced parens + `${_balancedParens}` + // balanced parens '|' + // or - '%s'.format(_notTrailingJunk) + // last non-junk char + `${_notTrailingJunk}` + // last non-junk char ')' + ')', 'gi'); @@ -161,7 +161,7 @@ function trySpawnCommandLine(commandLine) { } catch (err) { // Replace "Error invoking GLib.shell_parse_argv: " with // something nicer - err.message = err.message.replace(/[^:]*: /, '%s\n'.format(_('Could not parse command:'))); + err.message = err.message.replace(/[^:]*: /, `${_('Could not parse command:')}\n`); throw err; } @@ -550,7 +550,7 @@ var DBusSenderChecker = class { throw new GLib.Error(Gio.DBusError, Gio.DBusError.ACCESS_DENIED, - '%s is not allowed'.format(invocation.get_method_name())); + `${invocation.get_method_name()} is not allowed`); } /** @@ -579,8 +579,8 @@ var Highlighter = class { if (escapedTerms.length === 0) return; - this._highlightRegex = new RegExp('(%s)'.format( - escapedTerms.join('|')), 'gi'); + this._highlightRegex = new RegExp( + `(${escapedTerms.join('|')})`, 'gi'); } /** @@ -604,7 +604,7 @@ var Highlighter = class { escaped.push(unmatched); } let matched = GLib.markup_escape_text(match[0], -1); - escaped.push('%s'.format(matched)); + escaped.push(`${matched}`); lastMatchEnd = match.index + match[0].length; } let unmatched = GLib.markup_escape_text( diff --git a/js/portalHelper/main.js b/js/portalHelper/main.js index f876a48b1..9f9b98718 100644 --- a/js/portalHelper/main.js +++ b/js/portalHelper/main.js @@ -31,6 +31,7 @@ const HTTP_URI_FLAGS = GLib.UriFlags.PARSE_RELAXED; 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'); @@ -110,7 +111,7 @@ class PortalWindow extends Gtk.ApplicationWindow { this._headerBar.show(); if (!url) { - url = 'http://%s'.format(CONNECTIVITY_CHECK_HOST); + url = CONNECTIVITY_CHECK_URI; this._originalUrlWasGnome = true; } else { this._originalUrlWasGnome = false; diff --git a/js/ui/accessDialog.js b/js/ui/accessDialog.js index 7c8d69b80..4c2aa238f 100644 --- a/js/ui/accessDialog.js +++ b/js/ui/accessDialog.js @@ -140,7 +140,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 && '%s.desktop'.format(appId) != this._windowTracker.focus_app.id) { + if (appId && `${appId}.desktop` !== 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 c8f60493d..95bba6402 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -119,7 +119,7 @@ function _findBestFolderName(apps) { }, commonCategories); for (let category of commonCategories) { - const directory = '%s.directory'.format(category); + const directory = `${category}.directory`; const translated = Shell.util_get_translated_folder_name(directory); if (translated !== null) return translated; @@ -870,7 +870,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 %s'.format(id)); + log(`No such application ${id}`); } selectApp(id) { @@ -1533,7 +1533,7 @@ class AppDisplay extends BaseAppView { let folders = this._folderSettings.get_strv('folder-children'); folders.forEach(id => { - let path = '%sfolders/%s/'.format(this._folderSettings.path, id); + let path = `${this._folderSettings.path}folders/${id}/`; let icon = this._items.get(id); if (!icon) { icon = new FolderIcon(id, path, this); @@ -2213,7 +2213,7 @@ class FolderView extends BaseAppView { let icon = new St.Widget({ layout_manager: layout, x_align: Clutter.ActorAlign.CENTER, - style: 'width: %dpx; height: %dpx;'.format(size, size), + style: `width: ${size}px; height: ${size}px;`, }); let subSize = Math.floor(FOLDER_SUBICON_FRACTION * size); @@ -2221,7 +2221,7 @@ class FolderView extends BaseAppView { let numItems = this._orderedItems.length; let rtl = icon.get_text_direction() == Clutter.TextDirection.RTL; for (let i = 0; i < 4; i++) { - const style = 'width: %dpx; height: %dpx;'.format(subSize, subSize); + const style = `width: ${subSize}px; height: ${subSize}px;`; let bin = new St.Bin({ style }); if (i < numItems) bin.child = this._orderedItems[i].app.create_icon_texture(subSize); @@ -3219,7 +3219,7 @@ var AppIcon = GObject.registerClass({ shellWorkspaceLaunch(params) { let { stack } = new Error(); - log('shellWorkspaceLaunch is deprecated, use app.open_new_window() instead\n%s'.format(stack)); + log(`shellWorkspaceLaunch is deprecated, use app.open_new_window() instead\n${stack}`); params = Params.parse(params, { workspace: -1, timestamp: 0 }); diff --git a/js/ui/appFavorites.js b/js/ui/appFavorites.js index 4e372c213..18fc3d020 100644 --- a/js/ui/appFavorites.js +++ b/js/ui/appFavorites.js @@ -75,7 +75,7 @@ class AppFavorites { this.FAVORITE_APPS_KEY = 'favorite-apps'; this._favorites = {}; - global.settings.connect('changed::%s'.format(this.FAVORITE_APPS_KEY), this._onFavsChanged.bind(this)); + global.settings.connect(`changed::${this.FAVORITE_APPS_KEY}`, this._onFavsChanged.bind(this)); this.reload(); } diff --git a/js/ui/audioDeviceSelection.js b/js/ui/audioDeviceSelection.js index 8660663f9..fb78b7922 100644 --- a/js/ui/audioDeviceSelection.js +++ b/js/ui/audioDeviceSelection.js @@ -125,7 +125,7 @@ var AudioDeviceSelectionDialog = GObject.registerClass({ let app = Shell.AppSystem.get_default().lookup_app(desktopFile); if (!app) { - log('Settings panel for desktop file %s could not be loaded!'.format(desktopFile)); + log(`Settings panel for desktop file ${desktopFile} could not be loaded!`); return; } diff --git a/js/ui/background.js b/js/ui/background.js index 9c6a1636d..21359d0a8 100644 --- a/js/ui/background.js +++ b/js/ui/background.js @@ -271,7 +271,7 @@ var Background = GObject.registerClass({ this._settings.connect('changed', this._emitChangedSignal.bind(this)); this._colorSchemeChangedSignalId = - this._interfaceSettings.connect('changed::%s'.format(COLOR_SCHEME_KEY), + this._interfaceSettings.connect(`changed::${COLOR_SCHEME_KEY}`, this._emitChangedSignal.bind(this)); this._load(); diff --git a/js/ui/calendar.js b/js/ui/calendar.js index 54e8e9f15..953517818 100644 --- a/js/ui/calendar.js +++ b/js/ui/calendar.js @@ -16,7 +16,7 @@ var SHOW_WEEKDATE_KEY = 'show-weekdate'; var MESSAGE_ICON_SIZE = -1; // pick up from CSS -var NC_ = (context, str) => '%s\u0004%s'.format(context, str); +var NC_ = (context, str) => `${context}\u0004${str}`; function sameYear(dateA, dateB) { return dateA.getYear() == dateB.getYear(); @@ -104,26 +104,26 @@ var EventSourceBase = GObject.registerClass({ Signals: { 'changed': {} }, }, class EventSourceBase extends GObject.Object { get isLoading() { - throw new GObject.NotImplementedError('isLoading in %s'.format(this.constructor.name)); + throw new GObject.NotImplementedError(`isLoading in ${this.constructor.name}`); } get hasCalendars() { - throw new GObject.NotImplementedError('hasCalendars in %s'.format(this.constructor.name)); + throw new GObject.NotImplementedError(`hasCalendars in ${this.constructor.name}`); } destroy() { } requestRange(_begin, _end) { - throw new GObject.NotImplementedError('requestRange in %s'.format(this.constructor.name)); + throw new GObject.NotImplementedError(`requestRange in ${this.constructor.name}`); } getEvents(_begin, _end) { - throw new GObject.NotImplementedError('getEvents in %s'.format(this.constructor.name)); + throw new GObject.NotImplementedError(`getEvents in ${this.constructor.name}`); } hasEvents(_day) { - throw new GObject.NotImplementedError('hasEvents in %s'.format(this.constructor.name)); + throw new GObject.NotImplementedError(`hasEvents in ${this.constructor.name}`); } }); @@ -222,7 +222,7 @@ class DBusEventSource extends EventSourceBase { // about the HasCalendars property and would cause an exception trying // to read it) if (!e.matches(Gio.DBusError, Gio.DBusError.TIMED_OUT)) { - log('Error loading calendars: %s'.format(e.message)); + log(`Error loading calendars: ${e.message}`); return; } } @@ -390,7 +390,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::%s'.format(SHOW_WEEKDATE_KEY), this._onSettingsChange.bind(this)); + this._settings.connect(`changed::${SHOW_WEEKDATE_KEY}`, this._onSettingsChange.bind(this)); this._useWeekdate = this._settings.get_boolean(SHOW_WEEKDATE_KEY); /** @@ -664,13 +664,13 @@ var Calendar = GObject.registerClass({ // Hack used in lieu of border-collapse - see gnome-shell.css if (row == 2) - styleClass = 'calendar-day-top %s'.format(styleClass); + styleClass = `calendar-day-top ${styleClass}`; let leftMost = rtl ? iter.getDay() == (this._weekStart + 6) % 7 : iter.getDay() == this._weekStart; if (leftMost) - styleClass = 'calendar-day-left %s'.format(styleClass); + styleClass = `calendar-day-left ${styleClass}`; if (sameDay(now, iter)) styleClass += ' calendar-today'; @@ -1029,7 +1029,7 @@ class CalendarMessageList extends St.Widget { for (let prop of ['visible', 'empty', 'can-clear']) { connectionsIds.push( - section.connect('notify::%s'.format(prop), this._sync.bind(this))); + section.connect(`notify::${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 5f0a8aad5..86c3a824e 100644 --- a/js/ui/components/automountManager.js +++ b/js/ui/components/automountManager.js @@ -112,7 +112,7 @@ var AutomountManager = class { try { drive.stop_finish(res); } catch (e) { - log('Unable to stop the drive after drive-eject-button %s'.format(e.toString())); + log(`Unable to stop the drive after drive-eject-button ${e.toString()}`); } }); } else if (drive.can_eject()) { @@ -121,7 +121,7 @@ var AutomountManager = class { try { drive.eject_with_operation_finish(res); } catch (e) { - log('Unable to eject the drive after drive-eject-button %s'.format(e.toString())); + log(`Unable to eject the drive after drive-eject-button ${e.toString()}`); } }); } @@ -208,7 +208,7 @@ var AutomountManager = class { } if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED)) - log('Unable to mount volume %s: %s'.format(volume.get_name(), e.toString())); + log(`Unable to mount volume ${volume.get_name()}: ${e.toString()}`); this._closeOperation(volume); } } diff --git a/js/ui/components/autorunManager.js b/js/ui/components/autorunManager.js index cc7b41274..f26a2e5f7 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 %s: %s'.format(app.get_name(), e.toString())); + log(`Unable to launch the application ${app.get_name()}: ${e}`); } 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 %s: %s'.format(mount.get_name(), e.toString())); + log(`Unable to guess content types on added mount ${mount.get_name()}: ${e}`); } if (contentTypes.length) { diff --git a/js/ui/components/networkAgent.js b/js/ui/components/networkAgent.js index 94772c076..1960ad1e7 100644 --- a/js/ui/components/networkAgent.js +++ b/js/ui/components/networkAgent.js @@ -216,7 +216,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog { case 'none': // static WEP secrets.push({ label: _('Key'), - key: 'wep-key%s'.format(wirelessSecuritySetting.wep_tx_keyidx), + 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, @@ -239,7 +239,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog { this._get8021xSecrets(secrets); break; default: - log('Invalid wireless key management: %s'.format(wirelessSecuritySetting.key_mgmt)); + log(`Invalid wireless key management: ${wirelessSecuritySetting.key_mgmt}`); } } @@ -312,7 +312,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog { }); break; default: - log('Invalid EAP/IEEE802.1x method: %s'.format(ieee8021xSetting.get_eap_method(0))); + log(`Invalid EAP/IEEE802.1x method: ${ieee8021xSetting.get_eap_method(0)}`); } } @@ -404,7 +404,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog { this._getMobileSecrets(content.secrets, connectionType); break; default: - log('Invalid connection type: %s'.format(connectionType)); + log(`Invalid connection type: ${connectionType}`); } return content; @@ -648,12 +648,12 @@ var VPNRequestHandler = class { try { vpnSetting.foreach_data_item((key, value) => { - this._stdin.write('DATA_KEY=%s\n'.format(key), null); - this._stdin.write('DATA_VAL=%s\n\n'.format(value || ''), null); + this._stdin.write(`DATA_KEY=${key}\n`, null); + this._stdin.write(`DATA_VAL=${value || ''}\n\n`, null); }); vpnSetting.foreach_secret((key, value) => { - this._stdin.write('SECRET_KEY=%s\n'.format(key), null); - this._stdin.write('SECRET_VAL=%s\n\n'.format(value || ''), null); + this._stdin.write(`SECRET_KEY=${key}\n`, null); + this._stdin.write(`SECRET_VAL=${value || ''}\n\n`, null); }); this._stdin.write('DONE\n\n', null); } catch (e) { @@ -768,7 +768,7 @@ var NetworkAgent = class { body = _("A password is required to connect to “%s”.").format(connectionSetting.get_id()); break; default: - log('Invalid connection type: %s'.format(connectionType)); + log(`Invalid connection type: ${connectionType}`); this._native.respond(requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR); return; } @@ -855,7 +855,7 @@ var NetworkAgent = class { const fileName = plugin.get_auth_dialog(); if (!GLib.file_test(fileName, GLib.FileTest.IS_EXECUTABLE)) { - log('VPN plugin at %s is not executable'.format(fileName)); + log(`VPN plugin at ${fileName} is not executable`); return null; } diff --git a/js/ui/components/polkitAgent.js b/js/ui/components/polkitAgent.js index 5127ab924..eda2e237c 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 %d '.format(userNames.length) + + log(`polkitAuthenticationAgent: Received ${userNames.length} ` + 'identities that can be used for authentication. Only ' + 'considering one.'); } @@ -193,8 +193,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 %s '.format(this.actionId) + - 'cookie %s'.format(this._cookie)); + `Dismissing authentication request for action-id ${this.actionId} ` + + `cookie ${this._cookie}`); this._emitDone(true); } } diff --git a/js/ui/components/telepathyClient.js b/js/ui/components/telepathyClient.js index 859a7e64f..90c0cbdf4 100644 --- a/js/ui/components/telepathyClient.js +++ b/js/ui/components/telepathyClient.js @@ -114,7 +114,7 @@ var TelepathyComponent = class { try { this._client.register(); } catch (e) { - throw new Error('Could not register Telepathy client. Error: %s'.format(e.toString())); + throw new Error(`Could not register Telepathy client. Error: ${e}`); } if (!this._client.account_manager.is_prepared(Tp.AccountManager.get_feature_quark_core())) @@ -282,7 +282,7 @@ class TelepathyClient extends Tp.BaseClient { await dispatchOp.claim_with_async(this); this._handlingChannels(account, conn, [channel], false); } catch (err) { - log('Failed to Claim channel: %s'.format(err.toString())); + log(`Failed to claim channel: ${err}`); } } @@ -702,7 +702,7 @@ var ChatNotification = HAVE_TP ? GObject.registerClass({ if (message.messageType == Tp.ChannelTextMessageType.ACTION) { let senderAlias = GLib.markup_escape_text(message.sender, -1); - messageBody = '%s %s'.format(senderAlias, messageBody); + messageBody = `${senderAlias} ${messageBody}`; styles.push('chat-action'); } diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js index 89289179b..50a9118da 100644 --- a/js/ui/dateMenu.js +++ b/js/ui/dateMenu.js @@ -13,7 +13,7 @@ const System = imports.system; const { loadInterfaceXML } = imports.misc.fileUtils; -const NC_ = (context, str) => '%s\u0004%s'.format(context, str); +const NC_ = (context, str) => `${context}\u0004${str}`; const T_ = Shell.util_translate_time_string; const MAX_FORECASTS = 5; @@ -187,15 +187,15 @@ class EventsSection extends St.Button { const rtl = Clutter.get_default_text_direction() === Clutter.TextDirection.RTL; if (event.date < this._startDate) { if (rtl) - title = '%s%s'.format(title, ELLIPSIS_CHAR); + title = `${title}${ELLIPSIS_CHAR}`; else - title = '%s%s'.format(ELLIPSIS_CHAR, title); + title = `${ELLIPSIS_CHAR}${title}`; } if (event.end > this._endDate) { if (rtl) - title = '%s%s'.format(ELLIPSIS_CHAR, title); + title = `${ELLIPSIS_CHAR}${title}`; else - title = '%s%s'.format(title, ELLIPSIS_CHAR); + title = `${title}${ELLIPSIS_CHAR}`; } return title; } @@ -427,8 +427,8 @@ class WorldClocksSection extends St.Button { const prefix = offsetCurrentTz >= 0 ? '+' : '-'; const text = offsetMinutes === 0 - ? '%s%d'.format(prefix, offsetHours) - : '%s%d\u2236%d'.format(prefix, offsetHours, offsetMinutes); + ? `${prefix}${offsetHours}` + : `${prefix}${offsetHours}\u2236${offsetMinutes}`; return text; } @@ -449,7 +449,7 @@ class WorldClocksSection extends St.Button { _onProxyReady(proxy, error) { if (error) { - log('Failed to create GNOME Clocks proxy: %s'.format(error)); + log(`Failed to create GNOME Clocks proxy: ${error}`); return; } @@ -583,7 +583,7 @@ class WeatherSection extends St.Button { }); let temp = new St.Label({ style_class: 'weather-forecast-temp', - text: '%s%d°'.format(tempPrefix, Math.round(tempValue)), + text: `${tempPrefix}${Math.round(tempValue)}°`, x_align: Clutter.ActorAlign.CENTER, }); diff --git a/js/ui/endSessionDialog.js b/js/ui/endSessionDialog.js index 9f8bcb1ba..f4227c2e0 100644 --- a/js/ui/endSessionDialog.js +++ b/js/ui/endSessionDialog.js @@ -169,7 +169,7 @@ function findAppFromInhibitor(inhibitor) { } catch (e) { // XXX -- sometimes JIT inhibitors generated by gnome-session // get removed too soon. Don't fail in this case. - log('gnome-session gave us a dead inhibitor: %s'.format(inhibitor.get_object_path())); + log(`gnome-session gave us a dead inhibitor: ${inhibitor.get_object_path()}`); return null; } @@ -322,7 +322,7 @@ class EndSessionDialog extends ModalDialog.ModalDialog { this._updatesPermission = await Polkit.Permission.new( 'org.freedesktop.packagekit.trigger-offline-update', null, null); } catch (e) { - log('No permission to trigger offline updates: %s'.format(e.toString())); + log(`No permission to trigger offline updates: ${e}`); } } @@ -662,7 +662,7 @@ class EndSessionDialog extends ModalDialog.ModalDialog { if (!sessionId) { this._loginManager.getCurrentSessionProxy(currentSessionProxy => { sessionId = currentSessionProxy.Id; - log('endSessionDialog: No XDG_SESSION_ID, fetched from logind: %d'.format(sessionId)); + log(`endSessionDialog: No XDG_SESSION_ID, fetched from logind: ${sessionId}`); }); } @@ -731,7 +731,7 @@ class EndSessionDialog extends ModalDialog.ModalDialog { this._updateInfo = await this._getUpdateInfo(); } catch (e) { if (this._pkOfflineProxy !== null) - log('Failed to get update info from PackageKit: %s'.format(e.message)); + log(`Failed to get update info from PackageKit: ${e.message}`); this._updateInfo = { UpdateTriggered: false, diff --git a/js/ui/extensionDownloader.js b/js/ui/extensionDownloader.js index a3cfbf3f5..94ba8fad5 100644 --- a/js/ui/extensionDownloader.js +++ b/js/ui/extensionDownloader.js @@ -92,7 +92,7 @@ function checkResponse(message) { const { statusCode } = message; const phrase = Soup.Status.get_phrase(statusCode); if (statusCode !== Soup.Status.OK) - throw new Error('Unexpected response: %s'.format(phrase)); + throw new Error(`Unexpected response: ${phrase}`); } /** @@ -141,8 +141,7 @@ async function downloadExtensionUpdate(uuid) { await extractExtensionArchive(bytes, dir); Main.extensionManager.notifyExtensionUpdate(uuid); } catch (e) { - log('Error while downloading update for extension %s: %s' - .format(uuid, e.message)); + log(`Error while downloading update for extension ${uuid}: (${e.message})`); } } @@ -174,12 +173,12 @@ async function checkForUpdates() { 'disable-extension-version-validation'); const params = { shell_version: Config.PACKAGE_VERSION, - disable_version_validation: versionCheck.toString(), + disable_version_validation: `${versionCheck}`, }; const requestBody = new GLib.Bytes(JSON.stringify(metadatas)); const message = Soup.Message.new('POST', - '%s?%s'.format(REPOSITORY_URL_UPDATE, Soup.form_encode_hash(params))); + `${REPOSITORY_URL_UPDATE}?${Soup.form_encode_hash(params)}`); message.set_request_body_from_bytes('application/json', requestBody); let json; @@ -191,7 +190,7 @@ async function checkForUpdates() { checkResponse(message); json = new TextDecoder().decode(bytes.get_data()); } catch (e) { - log('Update check failed: %s'.format(e.message)); + log(`Update check failed: ${e.message}`); return; } @@ -207,7 +206,7 @@ async function checkForUpdates() { await Promise.allSettled( updates.map(uuid => downloadExtensionUpdate(uuid))); } catch (e) { - log('Some extension updates failed to download: %s'.format(e.message)); + log(`Some extension updates failed to download: ${e.message}`); } } @@ -267,11 +266,11 @@ class InstallExtensionDialog extends ModalDialog.ModalDialog { this._uuid, dir, ExtensionUtils.ExtensionType.PER_USER); Main.extensionManager.loadExtension(extension); if (!Main.extensionManager.enableExtension(this._uuid)) - throw new Error('Cannot enable %s'.format(this._uuid)); + throw new Error(`Cannot enable ${this._uuid}`); this._invocation.return_value(new GLib.Variant('(s)', ['successful'])); } catch (e) { - log('Error while installing %s: %s'.format(this._uuid, e.message)); + log(`Error while installing ${this._uuid}: ${e.message}`); this._invocation.return_dbus_error( 'org.gnome.Shell.ExtensionError', e.message); } diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js index eec3693a4..41a03fdf3 100644 --- a/js/ui/extensionSystem.js +++ b/js/ui/extensionSystem.js @@ -43,7 +43,7 @@ var ExtensionManager = class { try { disableFile.create(Gio.FileCreateFlags.REPLACE_DESTINATION, null); } catch (e) { - log('Failed to create file %s: %s'.format(disableFilename, e.message)); + log(`Failed to create file ${disableFilename}: ${e.message}`); } GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 60, () => { @@ -161,7 +161,7 @@ var ExtensionManager = class { if (extension.state != ExtensionState.DISABLED) return; - let stylesheetNames = ['%s.css'.format(global.session_mode), 'stylesheet.css']; + let stylesheetNames = [`${global.session_mode}.css`, 'stylesheet.css']; let theme = St.ThemeContext.get_for_stage(global.stage).get_theme(); for (let i = 0; i < stylesheetNames.length; i++) { try { @@ -286,7 +286,7 @@ var ExtensionManager = class { extension.errors = []; extension.errors.push(message); - logError(error, 'Extension %s'.format(uuid)); + logError(error, `Extension ${uuid}`); this._updateCanChange(extension); this.emit('extension-state-changed', extension); } @@ -301,24 +301,24 @@ var ExtensionManager = class { [success_, metadataContents] = metadataFile.load_contents(null); metadataContents = new TextDecoder().decode(metadataContents); } catch (e) { - throw new Error('Failed to load metadata.json: %s'.format(e.toString())); + throw new Error(`Failed to load metadata.json: ${e}`); } let meta; try { meta = JSON.parse(metadataContents); } catch (e) { - throw new Error('Failed to parse metadata.json: %s'.format(e.toString())); + throw new Error(`Failed to parse metadata.json: ${e}`); } 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 "%s" property in metadata.json'.format(prop)); + throw new Error(`missing "${prop}" property in metadata.json`); } if (uuid != meta.uuid) - throw new Error('uuid "%s" from metadata.json does not match directory name "%s"'.format(meta.uuid, uuid)); + throw new Error(`uuid "${meta.uuid}" from metadata.json does not match directory name "${uuid}"`); let extension = { metadata: meta, @@ -561,7 +561,7 @@ var ExtensionManager = class { FileUtils.recursivelyDeleteDir(extensionDir, false); FileUtils.recursivelyMoveDir(dir, extensionDir); } catch (e) { - log('Failed to install extension updates for %s'.format(uuid)); + log(`Failed to install extension updates for ${uuid}`); } finally { FileUtils.recursivelyDeleteDir(dir, true); } @@ -569,17 +569,17 @@ var ExtensionManager = class { } _loadExtensions() { - global.settings.connect('changed::%s'.format(ENABLED_EXTENSIONS_KEY), + global.settings.connect(`changed::${ENABLED_EXTENSIONS_KEY}`, this._onEnabledExtensionsChanged.bind(this)); - global.settings.connect('changed::%s'.format(DISABLED_EXTENSIONS_KEY), + global.settings.connect(`changed::${DISABLED_EXTENSIONS_KEY}`, this._onEnabledExtensionsChanged.bind(this)); - global.settings.connect('changed::%s'.format(DISABLE_USER_EXTENSIONS_KEY), + global.settings.connect(`changed::${DISABLE_USER_EXTENSIONS_KEY}`, this._onUserExtensionsEnabledChanged.bind(this)); - global.settings.connect('changed::%s'.format(EXTENSION_DISABLE_VERSION_CHECK_KEY), + global.settings.connect(`changed::${EXTENSION_DISABLE_VERSION_CHECK_KEY}`, this._onVersionValidationChanged.bind(this)); - global.settings.connect('writable-changed::%s'.format(ENABLED_EXTENSIONS_KEY), + global.settings.connect(`writable-changed::${ENABLED_EXTENSIONS_KEY}`, this._onSettingsWritableChanged.bind(this)); - global.settings.connect('writable-changed::%s'.format(DISABLED_EXTENSIONS_KEY), + global.settings.connect(`writable-changed::${DISABLED_EXTENSIONS_KEY}`, this._onSettingsWritableChanged.bind(this)); this._onVersionValidationChanged(); @@ -594,7 +594,7 @@ var ExtensionManager = class { let uuid = info.get_name(); let existing = this.lookup(uuid); if (existing) { - log('Extension %s already installed in %s. %s will not be loaded'.format(uuid, existing.path, dir.get_path())); + log(`Extension ${uuid} already installed in ${existing.path}. ${dir.get_path()} will not be loaded`); return; } @@ -605,7 +605,7 @@ var ExtensionManager = class { try { extension = this.createExtensionObject(uuid, dir, type); } catch (e) { - logError(e, 'Could not load extension %s'.format(uuid)); + logError(e, `Could not load extension ${uuid}`); return; } this.loadExtension(extension); diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js index cff4a6f8e..75df02de6 100644 --- a/js/ui/keyboard.js +++ b/js/ui/keyboard.js @@ -555,7 +555,8 @@ var KeyboardModel = class { } _loadModel(groupName) { - let file = Gio.File.new_for_uri('resource:///org/gnome/shell/osk-layouts/%s.json'.format(groupName)); + const file = Gio.File.new_for_uri( + `resource:///org/gnome/shell/osk-layouts/${groupName}.json`); let [success_, contents] = file.load_contents(null); const decoder = new TextDecoder(); diff --git a/js/ui/lookingGlass.js b/js/ui/lookingGlass.js index f2c787478..bff753ec5 100644 --- a/js/ui/lookingGlass.js +++ b/js/ui/lookingGlass.js @@ -252,13 +252,7 @@ function objectToString(o) { // special case this since the default is way, way too verbose return ''; } else { - if (o === undefined) - return 'undefined'; - - if (o === null) - return 'null'; - - return o.toString(); + return `${o}`; } } @@ -305,7 +299,7 @@ class Result extends St.BoxLayout { this.add(cmdTxt); let box = new St.BoxLayout({}); this.add(box); - let resultTxt = new St.Label({ text: 'r(%d) = '.format(index) }); + let resultTxt = new St.Label({ text: `r(${index}) = ` }); resultTxt.clutter_text.ellipsize = Pango.EllipsizeMode.END; box.add(resultTxt); let objLink = new ObjLink(this._lookingGlass, o); @@ -345,7 +339,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: %s'.format(metaWindow.get_wm_class()) })); + propsBox.add(new St.Label({ text: `wmclass: ${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); @@ -403,7 +397,7 @@ class ObjInspector extends St.ScrollView { let hbox = new St.BoxLayout({ style_class: 'lg-obj-inspector-title' }); this._container.add_actor(hbox); let label = new St.Label({ - text: 'Inspecting: %s: %s'.format(typeof obj, objectToString(obj)), + text: `Inspecting: ${typeof obj}: ${objectToString(obj)}`, x_expand: true, }); label.single_line_mode = true; @@ -438,7 +432,7 @@ class ObjInspector extends St.ScrollView { link = new St.Label({ text: '' }); } let box = new St.BoxLayout(); - box.add(new St.Label({ text: '%s: '.format(propName) })); + box.add(new St.Label({ text: `${propName}: ` })); box.add(link); this._container.add_actor(box); } @@ -665,9 +659,9 @@ var Inspector = GObject.registerClass({ this._target = target; this._pointerTarget = target; - let position = '[inspect x: %d y: %d]'.format(stageX, stageY); + let position = `[inspect x: ${stageX} y: ${stageY}]`; this._displayText.text = ''; - this._displayText.text = '%s %s'.format(position, this._target); + this._displayText.text = `${position} ${this._target}`; this._lookingGlass.setBorderPaintTarget(this._target); } @@ -1176,7 +1170,7 @@ class DebugFlags extends St.BoxLayout { // Clutter debug flags for (const [categoryName, props] of CLUTTER_DEBUG_FLAG_CATEGORIES.entries()) { - this._addHeader('Clutter%s'.format(categoryName)); + this._addHeader(`Clutter${categoryName}`); for (const flagName of this._getFlagNames(Clutter[categoryName])) { if (props.exclude.includes(flagName)) continue; @@ -1274,7 +1268,7 @@ class LookingGlass extends St.BoxLayout { inspectButton.connect('clicked', () => { let inspector = new Inspector(this); inspector.connect('target', (i, target, stageX, stageY) => { - this._pushResult('inspect(%d, %d)'.format(Math.round(stageX), Math.round(stageY)), target); + this._pushResult(`inspect(${Math.round(stageX)}, ${Math.round(stageY)})`, target); }); inspector.connect('closed', () => { this.show(); @@ -1388,8 +1382,9 @@ 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: %d%s; font-family: "%s";'.format( - size, unit, fontDesc.get_family()); + this.style = ` + font-size: ${size}${unit}; + font-family: "${fontDesc.get_family()}";`; } setBorderPaintTarget(obj) { @@ -1472,7 +1467,7 @@ class LookingGlass extends St.BoxLayout { return; let lines = command.split(';'); - lines.push('return %s'.format(lines.pop())); + lines.push(`return ${lines.pop()}`); let fullCmd = commandHeader + lines.join(';'); @@ -1480,7 +1475,7 @@ class LookingGlass extends St.BoxLayout { try { resultObj = Function(fullCmd)(); } catch (e) { - resultObj = ''.format(e.toString()); + resultObj = ``; } this._pushResult(command, resultObj); @@ -1499,7 +1494,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 %d'.format(idx)); + throw new Error(`Unknown result at index ${idx}`); } } diff --git a/js/ui/main.js b/js/ui/main.js index ce019471b..908688c5a 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -303,7 +303,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 %s'.format(_startDate), + 'MESSAGE': `GNOME Shell started at ${_startDate}`, 'MESSAGE_ID': GNOMESHELL_STARTED_MESSAGE_ID, }); } @@ -325,7 +325,7 @@ function _initializeUI() { let perfModuleName = GLib.getenv("SHELL_PERF_MODULE"); if (perfModuleName) { let perfOutput = GLib.getenv("SHELL_PERF_OUTPUT"); - let module = eval('imports.perf.%s;'.format(perfModuleName)); + let module = eval(`imports.perf.${perfModuleName};`); Scripting.runPerfScript(module, perfOutput); } }); @@ -340,7 +340,7 @@ function _handleShowWelcomeScreen() { } async function _handleLockScreenWarning() { - const path = '%s/lock-warning-shown'.format(global.userdatadir); + const path = `${global.userdatadir}/lock-warning-shown`; const file = Gio.File.new_for_path(path); const hasLockScreen = screenShield !== null; @@ -368,7 +368,7 @@ async function _handleLockScreenWarning() { function _getStylesheet(name) { let stylesheet; - stylesheet = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/%s'.format(name)); + stylesheet = Gio.File.new_for_uri(`resource:///org/gnome/shell/theme/${name}`); if (stylesheet.query_exists(null)) return stylesheet; @@ -380,7 +380,7 @@ function _getStylesheet(name) { return stylesheet; } - stylesheet = Gio.File.new_for_path('%s/theme/%s'.format(global.datadir, name)); + stylesheet = Gio.File.new_for_path(`${global.datadir}/theme/${name}`); if (stylesheet.query_exists(null)) return stylesheet; @@ -437,19 +437,19 @@ function reloadThemeResource() { if (_themeResource) _themeResource._unregister(); - _themeResource = Gio.Resource.load('%s/%s'.format(global.datadir, - sessionMode.themeResourceName)); + _themeResource = Gio.Resource.load( + `${global.datadir}/${sessionMode.themeResourceName}`); _themeResource._register(); } /** @private */ function _loadIcons() { - _iconResource = Gio.Resource.load('%s/gnome-shell-icons.gresource'.format(global.datadir)); + _iconResource = Gio.Resource.load(`${global.datadir}/gnome-shell-icons.gresource`); _iconResource._register(); } function _loadOskLayouts() { - _oskResource = Gio.Resource.load('%s/gnome-shell-osk-layouts.gresource'.format(global.datadir)); + _oskResource = Gio.Resource.load(`${global.datadir}/gnome-shell-osk-layouts.gresource`); _oskResource._register(); } @@ -468,7 +468,7 @@ function loadTheme() { }); if (theme.default_stylesheet == null) - throw new Error("No valid stylesheet found for '%s'".format(sessionMode.stylesheetName)); + throw new Error(`No valid stylesheet found for '${sessionMode.stylesheetName}'`); if (previousTheme) { let customStylesheets = previousTheme.get_custom_stylesheets(); @@ -503,9 +503,9 @@ function notify(msg, details) { function notifyError(msg, details) { // Also print to stderr so it's logged somewhere if (details) - log('error: %s: %s'.format(msg, details)); + log(`error: ${msg}: ${details}`); else - log('error: %s'.format(msg)); + log(`error: ${msg}`); notify(msg, details); } @@ -787,7 +787,7 @@ function _queueBeforeRedraw(workId) { */ function initializeDeferredWork(actor, callback) { // Turn into a string so we can use as an object property - let workId = (++_deferredWorkSequence).toString(); + let workId = `${++_deferredWorkSequence}`; _deferredWorkData[workId] = { actor, callback }; actor.connect('notify::mapped', () => { @@ -817,7 +817,7 @@ function initializeDeferredWork(actor, callback) { function queueDeferredWork(workId) { let data = _deferredWorkData[workId]; if (!data) { - let message = 'Invalid work id %d'.format(workId); + let message = `Invalid work id ${workId}`; logError(new Error(message), message); return; } diff --git a/js/ui/messageList.js b/js/ui/messageList.js index 77672a592..45ebbf53d 100644 --- a/js/ui/messageList.js +++ b/js/ui/messageList.js @@ -78,7 +78,7 @@ class URLHighlighter extends St.Label { if (urlId != -1) { let url = this._urls[urlId].url; if (!url.includes(':')) - url = 'http://%s'.format(url); + url = `http://${url}`; Gio.app_info_launch_default_for_uri( url, global.create_app_launch_context(0, -1)); @@ -131,7 +131,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 += '%s%s'.format(str, this._linkColor, url.url); + markup += `${str}${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 de30767e5..562d55636 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -229,7 +229,7 @@ var NotificationApplicationPolicy = GObject.registerClass({ 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/%s/'.format(this._canonicalId), + path: `/org/gnome/desktop/notifications/application/${this._canonicalId}/`, }); this._masterSettings.connect('changed', this._changed.bind(this)); @@ -237,7 +237,7 @@ var NotificationApplicationPolicy = GObject.registerClass({ } store() { - this._settings.set_string('application-id', '%s.desktop'.format(this.id)); + this._settings.set_string('application-id', `${this.id}.desktop`); let apps = this._masterSettings.get_strv('application-children'); if (!apps.includes(this._canonicalId)) { @@ -966,7 +966,7 @@ var MessageTray = GObject.registerClass({ add(source) { if (this.contains(source)) { - log('Trying to re-add source %s'.format(source.title)); + log(`Trying to re-add source ${source.title}`); return; } diff --git a/js/ui/mpris.js b/js/ui/mpris.js index b7cc8ea19..c672dcb90 100644 --- a/js/ui/mpris.js +++ b/js/ui/mpris.js @@ -150,7 +150,7 @@ var MprisPlayer = class MprisPlayer { // so prefer activating the app via .desktop file if possible let app = null; if (this._mprisProxy.DesktopEntry) { - let desktopId = '%s.desktop'.format(this._mprisProxy.DesktopEntry); + let desktopId = `${this._mprisProxy.DesktopEntry}.desktop`; app = Shell.AppSystem.get_default().lookup_app(desktopId); } @@ -200,9 +200,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 %s; ' + - 'expected an array of strings, got %s (%s)').format( - this._busName, this._trackArtists, typeof this._trackArtists)); + log(`Received faulty track artist metadata from ${ + this._busName}; expected an array of strings, got ${ + this._trackArtists} (${typeof this._trackArtists})`); } this._trackArtists = [_("Unknown artist")]; } @@ -210,9 +210,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 %s; ' + - 'expected a string, got %s (%s)').format( - this._busName, this._trackTitle, typeof this._trackTitle)); + log(`Received faulty track title metadata from ${ + this._busName}; expected a string, got ${ + this._trackTitle} (${typeof this._trackTitle})`); } this._trackTitle = _("Unknown title"); } @@ -220,9 +220,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 %s; ' + - 'expected a string, got %s (%s)').format( - this._busName, this._trackCoverUrl, typeof this._trackCoverUrl)); + log(`Received faulty track cover art metadata from ${ + this._busName}; expected a string, got ${ + this._trackCoverUrl} (${typeof this._trackCoverUrl})`); } this._trackCoverUrl = ''; } diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js index 954ce8068..c2645586f 100644 --- a/js/ui/notificationDaemon.js +++ b/js/ui/notificationDaemon.js @@ -412,10 +412,10 @@ class FdoNotificationDaemonSource extends MessageTray.Source { return app; if (appId) - app = appSys.lookup_app('%s.desktop'.format(appId)); + app = appSys.lookup_app(`${appId}.desktop`); if (!app) - app = appSys.lookup_app('%s.desktop'.format(this.initialTitle)); + app = appSys.lookup_app(`${this.initialTitle}.desktop`); return app; } @@ -549,7 +549,7 @@ function objectPathFromAppId(appId) { } function getPlatformData() { - let startupId = GLib.Variant.new('s', '_TIME%s'.format(global.get_current_time())); + let startupId = GLib.Variant.new('s', `_TIME${global.get_current_time()}`); return { "desktop-startup-id": startupId }; } @@ -562,7 +562,7 @@ class GtkNotificationDaemonAppSource extends MessageTray.Source { if (!GLib.Variant.is_object_path(objectPath)) throw new InvalidAppError(); - let app = Shell.AppSystem.get_default().lookup_app('%s.desktop'.format(appId)); + let app = Shell.AppSystem.get_default().lookup_app(`${appId}.desktop`); if (!app) throw new InvalidAppError(); @@ -738,7 +738,8 @@ var GtkNotificationDaemon = class GtkNotificationDaemon { source = this._ensureAppSource(appId); } catch (e) { if (e instanceof InvalidAppError) { - invocation.return_dbus_error('org.gtk.Notifications.InvalidApp', 'The app by ID "%s" could not be found'.format(appId)); + invocation.return_dbus_error('org.gtk.Notifications.InvalidApp', + `The app by ID "${appId}" could not be found`); return; } throw e; diff --git a/js/ui/overview.js b/js/ui/overview.js index 2a603ba02..bea093572 100644 --- a/js/ui/overview.js +++ b/js/ui/overview.js @@ -390,7 +390,7 @@ var Overview = class { this._shown = false; this._visibleTarget = false; this.emit('hiding'); - Main.panel.style = 'transition-duration: %dms;'.format(duration); + Main.panel.style = `transition-duration: ${duration}ms;`; onComplete = () => this._hideDone(); } else { onComplete = () => this._showDone(); diff --git a/js/ui/padOsd.js b/js/ui/padOsd.js index 8362b101d..b58e4eeb4 100644 --- a/js/ui/padOsd.js +++ b/js/ui/padOsd.js @@ -354,7 +354,7 @@ var PadDiagram = GObject.registerClass({ return '' + ''.format(this._imageWidth, this._imageHeight) + + `width="${this._imageWidth}" height="${this._imageHeight}"> ` + '%s %s'.format(n.title, body)); + label.clutter_text.set_markup(`${n.title} ${body}`); textBox.add(label); visible = true; @@ -272,7 +272,7 @@ var NotificationsBox = GObject.registerClass({ this._showSource(source, obj, obj.sourceBox); } else { let count = source.unseenCount; - obj.countLabel.text = count.toString(); + obj.countLabel.text = `${count}`; obj.countLabel.visible = count > 1; } diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index 8f102baff..64f6d734a 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -132,8 +132,7 @@ class WindowDimmer extends Clutter.BrightnessContrastEffect { } _syncEnabled() { - let transitionName = '@effects.%s.brightness'.format(this.name); - let animating = this.actor.get_transition(transitionName) != null; + let animating = this.actor.get_transition(`@effects.${this.name}.brightness`) !== null; let dimmed = this.brightness.red != 127; this.enabled = this._enabled && (animating || dimmed); } @@ -147,8 +146,7 @@ class WindowDimmer extends Clutter.BrightnessContrastEffect { let val = 127 * (1 + (dimmed ? 1 : 0) * DIM_BRIGHTNESS); let color = Clutter.Color.new(val, val, val, 255); - let transitionName = '@effects.%s.brightness'.format(this.name); - this.actor.ease_property(transitionName, color, { + this.actor.ease_property(`@effects.${this.name}.brightness`, color, { mode: Clutter.AnimationMode.LINEAR, duration: (dimmed ? DIM_TIME : UNDIM_TIME) * (animate ? 1 : 0), onComplete: () => this._syncEnabled(), @@ -976,7 +974,7 @@ var WindowManager = class { // already. // Note that we do log cancellation from here. if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_SUPPORTED)) { - log('Error starting X11 services: %s'.format(e.message)); + log(`Error starting X11 services: ${e.message}`); status = false; } } finally { @@ -994,7 +992,7 @@ var WindowManager = class { // already. // Note that we do log cancellation from here. if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_SUPPORTED)) - log('Error stopping X11 services: %s'.format(e.message)); + log(`Error stopping X11 services: ${e.message}`); } } @@ -1292,7 +1290,7 @@ var WindowManager = class { actor.freeze(); if (this._clearAnimationInfo(actor)) { - log('Old animationInfo removed from actor %s'.format(actor)); + log(`Old animationInfo removed from actor ${actor}`); this._shellwm.completed_size_change(actor); } diff --git a/subprojects/extensions-app/js/main.js b/subprojects/extensions-app/js/main.js index 09047a939..c32707b61 100644 --- a/subprojects/extensions-app/js/main.js +++ b/subprojects/extensions-app/js/main.js @@ -18,14 +18,14 @@ Gio._promisify(Gio.DBusConnection.prototype, 'call'); Gio._promisify(Shew.WindowExporter.prototype, 'export'); function loadInterfaceXML(iface) { - const uri = 'resource:///org/gnome/Extensions/dbus-interfaces/%s.xml'.format(iface); + const uri = `resource:///org/gnome/Extensions/dbus-interfaces/${iface}.xml`; const f = Gio.File.new_for_uri(uri); try { let [ok_, bytes] = f.load_contents(null); return new TextDecoder().decode(bytes); } catch (e) { - log('Failed to load D-Bus interface %s'.format(iface)); + log(`Failed to load D-Bus interface ${iface}`); } return null; @@ -186,7 +186,7 @@ var ExtensionsWindow = GObject.registerClass({ try { this._exportedHandle = await this._exporter.export(); } catch (e) { - log('Failed to export window: %s'.format(e.message)); + log(`Failed to export window: ${e.message}`); } } @@ -278,7 +278,7 @@ var ExtensionsWindow = GObject.registerClass({ this._shellProxy.ListExtensionsRemote(([extensionsMap], e) => { if (e) { if (e instanceof Gio.DBusError) { - log('Failed to connect to shell proxy: %s'.format(e.toString())); + log(`Failed to connect to shell proxy: ${e}`); this._mainStack.visible_child_name = 'noshell'; } else { throw e; @@ -536,7 +536,7 @@ function initEnvironment() { }, logError(s) { - log('ERROR: %s'.format(s)); + log(`ERROR: ${s}`); }, userdatadir: GLib.build_filenamev([GLib.get_user_data_dir(), 'gnome-shell']),