citadel #1

Closed
isa wants to merge 29 commits from citadel into citadel-45.0
68 changed files with 5801 additions and 2707 deletions

24
NEWS
View File

@ -1,3 +1,27 @@
41.1
====
* Fix icon updates while hidden [Marco; !1983]
* Fix erratic scrolling in GTK apps [Christian, Carlos; !1993, #4647]
* Fix GTK color picker support [Florian; !1990]
* Fix sound-file support in notifications [Florian; !1991]
* Fix high-contrast switches [Florian; !2000]
* Only allow one extension prefs dialog at a time [Florian; #4564]
* Fixed crashes [Ray, Sebastian; !2004, !2014]
* Misc. bug fixes and cleanups [Jonas, Florian, Jakub, Carlos; !1985, !1998,
!1996, !1979, !2007, !2010]
Contributors:
Marco Trevisan (Treviño), Carlos Garnacho, Christian Hergert,
Sebastian Keller, Florian Müllner, Jakub Steiner, Ray Strode, Jonas Ådahl
Translators:
Марко Костић [sr], Ngọc Quân Trần [vi], Emin Tufan Çetin [tr],
Yaron Shahrabani [he], Sveinn í Felli [is], Goran Vidović [hr],
Marek Černocký [cs], Selyan Slimane AMIRI [kab], Rūdolfs Mazurs [lv],
eshagh shahidani [fa], Yuri Chornoivan [uk], Matej Urbančič [sl],
Anders Jonsson [sv], Rafael Fontenelle [pt_BR], Kukuh Syafaat [id],
Hugo Carvalho [pt], Aleksandr Melman [ru], Christian Kirbach [de]
41.0 41.0
==== ====

1
bla bla Normal file
View File

@ -0,0 +1 @@
bla test

View File

@ -230,6 +230,14 @@
<default>["&lt;Super&gt;9"]</default> <default>["&lt;Super&gt;9"]</default>
<summary>Switch to application 9</summary> <summary>Switch to application 9</summary>
</key> </key>
<key name="switch-realm" type="as">
<default><![CDATA[['<Super>Tab']]]></default>
<summary>Open Realm Switcher</summary>
</key>
<key name="switch-realm-backward" type="as">
<default><![CDATA[['<Super><Shift>Tab']]]></default>
<summary>Open Realm Switcher Backwards</summary>
</key>
</schema> </schema>
<schema id="org.gnome.shell.app-switcher" <schema id="org.gnome.shell.app-switcher"

View File

@ -49,3 +49,5 @@
// Lock / login screens // Lock / login screens
@import 'widgets/login-dialog'; @import 'widgets/login-dialog';
@import 'widgets/screen-shield'; @import 'widgets/screen-shield';
@import 'widgets/realms';

View File

@ -0,0 +1,17 @@
.realm-switch-label {
font-size: 36px;
font-weight: bold;
color: #ffffff;
background-color: rgba(10, 10, 10, 0.7);
border-radius: 5px;
padding: .5em;
}
.realm-frame-label {
font-size: 12pt;
font-weight: bold;
}
.realm-config-icon {
color: #8e8e80;
}

View File

@ -29,6 +29,7 @@ theme_sources = files([
'gnome-shell-sass/widgets/_overview.scss', 'gnome-shell-sass/widgets/_overview.scss',
'gnome-shell-sass/widgets/_panel.scss', 'gnome-shell-sass/widgets/_panel.scss',
'gnome-shell-sass/widgets/_popovers.scss', 'gnome-shell-sass/widgets/_popovers.scss',
'gnome-shell-sass/widgets/_realms.scss',
'gnome-shell-sass/widgets/_screen-shield.scss', 'gnome-shell-sass/widgets/_screen-shield.scss',
'gnome-shell-sass/widgets/_scrollbars.scss', 'gnome-shell-sass/widgets/_scrollbars.scss',
'gnome-shell-sass/widgets/_search-entry.scss', 'gnome-shell-sass/widgets/_search-entry.scss',

View File

@ -116,27 +116,37 @@ var ExtensionsService = class extends ServiceImplementation {
if (this._handleError(invocation, error)) if (this._handleError(invocation, error))
return; return;
if (this._prefsDialog) {
this._handleError(invocation,
new Error('Already showing a prefs dialog'));
return;
}
const [serialized] = res; const [serialized] = res;
const extension = ExtensionUtils.deserializeExtension(serialized); const extension = ExtensionUtils.deserializeExtension(serialized);
const window = new ExtensionPrefsDialog(extension); this._prefsDialog = new ExtensionPrefsDialog(extension);
window.connect('realize', () => { this._prefsDialog.connect('realize', () => {
let externalWindow = null; let externalWindow = null;
if (parentWindow) if (parentWindow)
externalWindow = Shew.ExternalWindow.new_from_handle(parentWindow); externalWindow = Shew.ExternalWindow.new_from_handle(parentWindow);
if (externalWindow) if (externalWindow)
externalWindow.set_parent_of(window.get_surface()); externalWindow.set_parent_of(this._prefsDialog.get_surface());
}); });
if (options.modal) if (options.modal)
window.modal = options.modal.get_boolean(); this._prefsDialog.modal = options.modal.get_boolean();
window.connect('destroy', () => this.release()); this._prefsDialog.connect('close-request', () => {
delete this._prefsDialog;
this.release();
return false;
});
this.hold(); this.hold();
window.show(); this._prefsDialog.show();
invocation.return_value(null); invocation.return_value(null);
}); });

View File

@ -27,7 +27,7 @@ foreach service, dir : dbus_services
serviceconf = configuration_data() serviceconf = configuration_data()
serviceconf.set('service', service) serviceconf.set('service', service)
serviceconf.set('gjs', gjs.path()) serviceconf.set('gjs', gjs)
serviceconf.set('pkgdatadir', pkgdatadir) serviceconf.set('pkgdatadir', pkgdatadir)
configure_file( configure_file(

View File

@ -142,5 +142,12 @@
<file>ui/status/remoteAccess.js</file> <file>ui/status/remoteAccess.js</file>
<file>ui/status/system.js</file> <file>ui/status/system.js</file>
<file>ui/status/thunderbolt.js</file> <file>ui/status/thunderbolt.js</file>
<file>ui/realms/realmIndicator.js</file>
<file>ui/realms/realmManager.js</file>
<file>ui/realms/realmSearchProvider.js</file>
<file>ui/realms/realmSwitcher.js</file>
<file>ui/realms/realmWindowFrame.js</file>
<file>ui/realms/realmWindowMenu.js</file>
</gresource> </gresource>
</gresources> </gresources>

View File

@ -111,6 +111,8 @@ class InputMethod extends Clutter.InputMethod {
return; return;
let preedit = text.get_text(); let preedit = text.get_text();
if (preedit === '')
preedit = null;
if (visible) if (visible)
this.set_preedit_text(preedit, pos, mode); this.set_preedit_text(preedit, pos, mode);
@ -165,7 +167,7 @@ class InputMethod extends Clutter.InputMethod {
if (this._context) if (this._context)
this._context.focus_out(); this._context.focus_out();
if (this._preeditStr) { if (this._preeditStr && this._preeditVisible) {
// Unset any preedit text // Unset any preedit text
this.set_preedit_text(null, 0, this._preeditCommitMode); this.set_preedit_text(null, 0, this._preeditCommitMode);
this._preeditStr = null; this._preeditStr = null;
@ -184,11 +186,7 @@ class InputMethod extends Clutter.InputMethod {
this._emitRequestSurrounding(); this._emitRequestSurrounding();
} }
if (this._preeditStr !== null) { this._preeditStr = null;
// Unset any preedit text
this.set_preedit_text(null, 0, Clutter.PreeditResetMode.CLEAR);
this._preeditStr = null;
}
} }
vfunc_set_cursor_location(rect) { vfunc_set_cursor_location(rect) {

View File

@ -201,20 +201,23 @@ function _easeActor(actor, params) {
actor.set(params); actor.set(params);
actor.restore_easing_state(); actor.restore_easing_state();
let transition = animatedProps.map(p => actor.get_transition(p)) const transitions = animatedProps
.find(t => t !== null); .map(p => actor.get_transition(p))
.filter(t => t !== null);
transitions.forEach(t => t.set({ repeatCount, autoReverse }));
const [transition] = transitions;
if (transition && transition.delay) if (transition && transition.delay)
transition.connect('started', () => prepare()); transition.connect('started', () => prepare());
else else
prepare(); prepare();
if (transition) { if (transition)
transition.set({ repeatCount, autoReverse });
transition.connect('stopped', (t, finished) => callback(finished)); transition.connect('stopped', (t, finished) => callback(finished));
} else { else
callback(true); callback(true);
}
} }
function _easeActorProperty(actor, propName, target, params) { function _easeActorProperty(actor, propName, target, params) {

View File

@ -974,9 +974,6 @@ var LayoutManager = GObject.registerClass({
for (i = 0; i < this._trackedActors.length; i++) { for (i = 0; i < this._trackedActors.length; i++) {
let actorData = this._trackedActors[i]; let actorData = this._trackedActors[i];
if (!actorData.actor.get_paint_visibility())
continue;
if (!(actorData.affectsInputRegion && wantsInputRegion) && !actorData.affectsStruts) if (!(actorData.affectsInputRegion && wantsInputRegion) && !actorData.affectsStruts)
continue; continue;
@ -987,7 +984,7 @@ var LayoutManager = GObject.registerClass({
w = Math.round(w); w = Math.round(w);
h = Math.round(h); h = Math.round(h);
if (actorData.affectsInputRegion && wantsInputRegion) if (actorData.affectsInputRegion && wantsInputRegion && actorData.actor.get_paint_visibility())
rects.push(new Meta.Rectangle({ x, y, width: w, height: h })); rects.push(new Meta.Rectangle({ x, y, width: w, height: h }));
let monitor = null; let monitor = null;

View File

@ -49,6 +49,7 @@ const PointerA11yTimeout = imports.ui.pointerA11yTimeout;
const ParentalControlsManager = imports.misc.parentalControlsManager; const ParentalControlsManager = imports.misc.parentalControlsManager;
const Config = imports.misc.config; const Config = imports.misc.config;
const Util = imports.misc.util; const Util = imports.misc.util;
const RealmManager = imports.ui.realms.realmManager;
const WELCOME_DIALOG_LAST_SHOWN_VERSION = 'welcome-dialog-last-shown-version'; const WELCOME_DIALOG_LAST_SHOWN_VERSION = 'welcome-dialog-last-shown-version';
// Make sure to mention the point release, otherwise it will show every time // Make sure to mention the point release, otherwise it will show every time
@ -91,6 +92,7 @@ var kbdA11yDialog = null;
var inputMethod = null; var inputMethod = null;
var introspectService = null; var introspectService = null;
var locatePointer = null; var locatePointer = null;
var realmManager = null;
let _startDate; let _startDate;
let _defaultCssStylesheet = null; let _defaultCssStylesheet = null;
let _cssStylesheet = null; let _cssStylesheet = null;
@ -264,6 +266,8 @@ function _initializeUI() {
extensionManager = new ExtensionSystem.ExtensionManager(); extensionManager = new ExtensionSystem.ExtensionManager();
extensionManager.init(); extensionManager.init();
realmManager = new RealmManager.RealmManager();
if (sessionMode.isGreeter && screenShield) { if (sessionMode.isGreeter && screenShield) {
layoutManager.connect('startup-prepared', () => { layoutManager.connect('startup-prepared', () => {
screenShield.showDialog(); screenShield.showDialog();

View File

@ -251,7 +251,7 @@ var Overview = class {
DND.addDragMonitor(this._dragMonitor); DND.addDragMonitor(this._dragMonitor);
// Remember the workspace we started from // Remember the workspace we started from
let workspaceManager = global.workspace_manager; let workspaceManager = global.workspace_manager;
this._lastActiveWorkspaceIndex = workspaceManager.get_active_workspace_index(); this._lastActiveWorkspaceIndex = workspaceManager.get_active_workspace_id();
} }
_onDragEnd(time) { _onDragEnd(time) {

View File

@ -342,6 +342,8 @@ class ControlsManager extends St.Widget {
workspaceManager.connect('notify::n-workspaces', workspaceManager.connect('notify::n-workspaces',
this._updateAdjustment.bind(this)); this._updateAdjustment.bind(this));
this._contextSwitchedId = workspaceManager.connect('context-switched', this._updateAdjustment.bind(this));
this._searchController = new SearchController.SearchController( this._searchController = new SearchController.SearchController(
this._searchEntry, this._searchEntry,
this.dash.showAppsButton); this.dash.showAppsButton);
@ -653,6 +655,7 @@ class ControlsManager extends St.Widget {
_onDestroy() { _onDestroy() {
global.workspace_manager.disconnect(this._nWorkspacesNotifyId); global.workspace_manager.disconnect(this._nWorkspacesNotifyId);
global.workspace_manager.disconnect(this._contextSwitchedId);
} }
_updateAdjustment() { _updateAdjustment() {

View File

@ -0,0 +1,37 @@
const { Clutter, GObject, Shell, St } = imports.gi;
const PanelMenu = imports.ui.panelMenu;
var RealmPanelIndicator = GObject.registerClass(
class RealmPanelIndicator extends PanelMenu.Button {
_init() {
super._init(0.5, "Current Realm");
this._label = new St.Label({
style_class: 'current-realm-label',
y_align: Clutter.ActorAlign.CENTER
});
this.add_child(this._label);
this.update();
}
clear() {
this._label.set_text('');
}
update() {
let realm_name = '';
const realms = Shell.Realms.get_default();
let current = realms.current_realm;
if (current) {
realm_name = current.realm_name;
this._label.set_text(`realm-${realm_name}`);
}
if (realm_name.length > 0) {
this._label.set_text(`realm-${realm_name}`);
} else {
this._label.set_text('');
}
}
});

View File

@ -0,0 +1,59 @@
const { Clutter, Gio, Meta, Shell, St } = imports.gi;
const Main = imports.ui.main;
const RealmIndicator = imports.ui.realms.realmIndicator;
const RealmSwitcher = imports.ui.realms.realmSwitcher;
const Lightbox = imports.ui.lightbox;
const RealmSearchProvider = imports.ui.realms.realmSearchProvider;
const RealmWindowFrame = imports.ui.realms.realmWindowFrame;
var RealmManager = class {
constructor() {
this._realmIndicator = new RealmIndicator.RealmPanelIndicator();
Main.panel.addToStatusArea('RealmIndicator', this._realmIndicator);
this._switchAction = Main.wm.addKeybinding('switch-realm',
new Gio.Settings({ schema_id: "org.gnome.shell.keybindings"}),
Meta.KeyBindingFlags.NONE,
Shell.ActionMode.NORMAL,
this._switchRealms.bind(this));
this._switchActionBackward = Main.wm.addKeybinding('switch-realm-backward',
new Gio.Settings({ schema_id: "org.gnome.shell.keybindings"}),
Meta.KeyBindingFlags.IS_REVERSED,
Shell.ActionMode.NORMAL,
this._switchRealms.bind(this));
const realms = Shell.Realms.get_default();
realms.connect('realm-context-switched', () => {
Main.overview.dash._queueRedisplay();
this._realmIndicator.update();
});
this._switchAnimation = new RealmSwitcher.ContextSwitchAnimationController(this._realmIndicator);
if (Main.overview._overview) {
this._searchResults = Main.overview._overview.controls._searchController._searchResults;
this._searchProvider = new RealmSearchProvider.RealmSearchProvider();
this._searchProvider.createResultDisplay(this._searchResults);
this._searchResults._registerProvider(this._searchProvider);
} else {
log("Not creating search provider because Main.overview._overview does not exist");
}
this._frameManager = new RealmWindowFrame.WindowFrameManager();
}
animateSwitch(from, to, onComplete) {
this._switchAnimation.animateSwitch(from, to, onComplete);
}
_switchRealms(display, window, binding) {
let popup = new RealmSwitcher.SwitchRealmPopup(this._switchAction, this._switchActionBackward);
if (!popup.show(binding.is_reversed(), binding.get_name(), binding.get_mask()))
popup.fadeAndDestroy();
}
};

View File

@ -0,0 +1,326 @@
const { Clutter, GObject, Pango, Shell, St } = imports.gi;
const Search = imports.ui.search;
const Main = imports.ui.main;
const Util = imports.misc.util;
// Based on ProviderInfo in search.js
var RealmProviderInfo = GObject.registerClass(
class RealmProviderInfo extends St.Button {
_init() {
super._init({
style_class: 'search-provider-icon',
reactive: false,
can_focus: false,
accessible_name: "Realms",
track_hover: false,
y_align: Clutter.ActorAlign.START,
});
this._content = new St.BoxLayout({ vertical: false,
style_class: 'list-search-provider-content' });
this.set_child(this._content);
let icon = new St.Icon({ icon_size: this.PROVIDER_ICON_SIZE,
icon_name: 'computer' });
let detailsBox = new St.BoxLayout({ style_class: 'list-search-provider-details',
vertical: true,
x_expand: true });
let nameLabel = new St.Label({
text: "Realms",
x_align: Clutter.ActorAlign.START
});
this._moreLabel = new St.Label({ x_align: Clutter.ActorAlign.START });
detailsBox.add_actor(nameLabel);
detailsBox.add_actor(this._moreLabel);
this._content.add_actor(icon);
this._content.add_actor(detailsBox);
}
get PROVIDER_ICON_SIZE() {
return 48;
}
setMoreCount(count) {
this._moreLabel.text = ngettext("%d more", "%d more", count).format(count);
this._moreLabel.visible = count > 0;
}
});
var MAX_LIST_SEARCH_RESULTS_ROWS = 10;
// Based on ListSearchResult in search.js
var RealmSearchResult = GObject.registerClass(
class ListSearchResult extends Search.SearchResult {
_init(provider, metaInfo, resultsView) {
super._init(provider, metaInfo, resultsView);
this.style_class = 'list-search-result';
let content = new St.BoxLayout({
style_class: 'list-search-result-content',
vertical: false,
x_align: Clutter.ActorAlign.FILL,
x_expand: true,
y_expand: true,
});
this.set_child(content);
this._termsChangedId = 0;
let titleBox = new St.BoxLayout({
style_class: 'list-search-result-title',
y_align: Clutter.ActorAlign.CENTER,
});
content.add_child(titleBox);
// An icon for, or thumbnail of, content
let icon = this.metaInfo['createIcon'](this.ICON_SIZE);
if (icon)
titleBox.add(icon);
let title = new St.Label({
text: this.metaInfo['name'],
y_align: Clutter.ActorAlign.CENTER,
});
titleBox.add_child(title);
this.label_actor = title;
if (this.metaInfo['description']) {
this._descriptionLabel = new St.Label({
style_class: 'list-search-result-description',
x_expand: true,
x_align: Clutter.ActorAlign.START,
y_align: Clutter.ActorAlign.CENTER,
});
this._descriptionLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
content.add_child(this._descriptionLabel);
this._termsChangedId =
this._resultsView.connect('terms-changed',
this._highlightTerms.bind(this));
this._highlightTerms();
}
let id = this.metaInfo['id'];
if (id != ':new:') {
this.configButton = new St.Button({
style_class: 'button',
track_hover: true,
can_focus: true,
child: new St.Icon({
style_class: 'realm-config-icon',
icon_name: 'emblem-system-symbolic',
icon_size: 24,
}),
});
this.configButton.connect('clicked', () => {
Main.overview.toggle();
Util.spawn(['/usr/libexec/realm-config-ui', id]);
});
content.add_child(this.configButton);
}
this.connect('destroy', this._onDestroy.bind(this));
}
get ICON_SIZE() {
return 24;
}
_highlightTerms() {
let markup = this._resultsView.highlightTerms(this.metaInfo['description'].split('\n')[0]);
this._descriptionLabel.clutter_text.set_markup(markup);
}
_onDestroy() {
if (this._termsChangedId)
this._resultsView.disconnect(this._termsChangedId);
this._termsChangedId = 0;
}
});
// Based on ListSearchResults in search.js
var RealmSearchResults = GObject.registerClass(
class RealmSearchResults extends Search.SearchResultsBase {
_init(provider, resultsView) {
super._init(provider, resultsView);
this._container = new St.BoxLayout({ style_class: 'search-section-content' });
this.providerInfo = new RealmProviderInfo();
this.providerInfo.connect('key-focus-in', this._keyFocusIn.bind(this));
this.providerInfo.connect('clicked', () => {
Main.overview.toggle();
});
this._container.add_child(this.providerInfo);
this._content = new St.BoxLayout({
style_class: 'list-search-results',
vertical: true,
x_expand: true,
});
this._container.add_child(this._content);
this._resultDisplayBin.set_child(this._container);
}
_setMoreCount(count) {
this.providerInfo.setMoreCount(count);
}
_getMaxDisplayedResults() {
return MAX_LIST_SEARCH_RESULTS_ROWS;
}
_clearResultDisplay() {
this._content.remove_all_children();
}
_createResultDisplay(meta) {
return super._createResultDisplay(meta) ||
new RealmSearchResult(this.provider, meta, this._resultsView);
}
_addItem(display) {
this._content.add_actor(display);
}
getFirstResult() {
if (this._content.get_n_children() > 0)
return this._content.get_child_at_index(0);
else
return null;
}
});
var RealmSearchProvider = class RealmSearchProvider {
constructor() {
this._shellRealms = Shell.Realms.get_default();
this.id = 'realms';
this.isRemoteProvider = false;
this.canLaunchSearch = false;
this.display = null;
}
createResultDisplay(resultsView) {
this.display = new RealmSearchResults(this, resultsView);
this.display.connect('notify::focus-child', resultsView._focusChildChanged.bind(resultsView));
this.display.hide();
resultsView._content.add(this.display);
}
createIcon(size, realm) {
if (realm.is_running()) {
return new St.Icon({ icon_name: 'emblem-synchronizing', icon_size: size });
} else {
return new St.Icon({ icon_name: 'exaile', icon_size: size });
}
}
createRealmMeta(realm) {
let id = realm.get_realm_name();
let description = '';
if (realm.is_running()) {
description = `Set realm-${id} as current realm`;
} else {
description = `Start realm-${id}`;
}
return {
id: id,
name: `realm-${id}`,
description: description,
createIcon: size => {
return this.createIcon(size, realm);
},
};
}
createNewRealmMeta() {
return {
id: ':new:',
name: 'New Realm',
description: 'Create a new realm',
createIcon: size => {
return new St.Icon({
icon_name: 'computer',
icon_size: size,
});
}
}
}
getResultMetas (ids, callback) {
let metas = [];
for (let id of ids) {
if (id == ":new:") {
metas.push(this.createNewRealmMeta());
} else {
let realm = this._shellRealms.realm_by_name(id);
if (realm && !realm.is_current()) {
metas.push(this.createRealmMeta(realm));
} else {
log(`No realm found for ${id}`);
}
}
}
callback(metas);
}
activateResult (resultId, _terms) {
if (resultId == ':new:') {
Main.overview.toggle();
Util.spawn(['/usr/libexec/realm-config-ui', '--new']);
return;
}
let realm = this._shellRealms.realm_by_name(resultId);
if (realm) {
realm.set_current();
} else {
log(`No realm found for ${resultId}`);
}
}
filterResults(results, maxNumber) {
return results.slice(0, maxNumber)
}
getInitialResultSet(terms, callback, _cancellable) {
let realms = this._shellRealms.get_all_realms();
let matches = [];
if (terms.length == 1 && "new".startsWith(terms[0])) {
matches.push(":new:");
}
for (let realm of realms) {
if (!realm.is_current()) {
let name = realm.get_realm_name();
if (terms.every(t => name.indexOf(t) != -1)) {
matches.push(name);
}
}
}
callback(matches);
}
getSubsearchResultSet(previousResults, terms, callback, cancellable) {
this.getInitialResultSet(terms, callback, cancellable)
}
}

View File

@ -0,0 +1,325 @@
const { Clutter, GObject, Meta, Shell, St } = imports.gi;
const Background = imports.ui.background;
const SwitcherPopup = imports.ui.switcherPopup;
const Layout = imports.ui.layout;
const Main = imports.ui.main;
const WINDOW_ANIMATION_TIME = 2000;
var APP_ICON_SIZE = 96;
var RealmItem = GObject.registerClass(
class RealmItem extends St.BoxLayout {
_init(realm, workspace_group) {
super._init({ vertical: true });
this.realm = realm;
this.add_child(workspace_group);
this.label = new St.Label({
text: `realm-${this.realm.realm_name}`,
x_align: Clutter.ActorAlign.CENTER,
});
this.add_child(this.label);
}
activate() {
this.realm.set_current();
}
});
function getRealmItems() {
const monitor = Main.layoutManager.primaryMonitor;
const realms = Shell.Realms.get_default();
let realm_list = realms.get_running_realms();
let items = [];
realm_list.forEach(realm => {
let ws = realm.get_active_workspace();
if (ws) {
let size = 256; // default thumbnail size
let scale = Math.min(1.0, size / monitor.width, size / monitor.height);
let wsgroup = new WorkspaceGroup(ws, monitor, scale);
items.push(new RealmItem(realm, wsgroup));
}
});
return items;
}
var SwitchRealmList = GObject.registerClass(
class SwitchRealmList extends SwitcherPopup.SwitcherList {
_init(items) {
super._init(false);
items.forEach(item => {
this.addItem(item, item.label);
});
}
});
var SwitchRealmPopup = GObject.registerClass(
class SwitchRealmPopup extends SwitcherPopup.SwitcherPopup {
_init(action, actionBackward) {
super._init();
this._action = action;
this._actionBackward = actionBackward;
this._items = getRealmItems();
this._switcherList = new SwitchRealmList(this._items);
}
_keyPressHandler(keysym, action) {
if (action == this._action)
this._select(this._next());
else if (action == this._actionBackward)
this._select(this._previous());
else if (keysym == Clutter.KEY_Left)
this._select(this._previous());
else if (keysym == Clutter.KEY_Right)
this._select(this._next());
else
return Clutter.EVENT_PROPAGATE;
return Clutter.EVENT_STOP;
}
_finish() {
super._finish();
this._items[this._selectedIndex].activate();
}
});
const WorkspaceGroup = GObject.registerClass(
class WorkspaceGroup extends Clutter.Actor {
_init(workspace, monitor, scale = 1.0) {
super._init();
this._workspace = workspace;
this._monitor = monitor;
this._scale = scale;
this._windowRecords = [];
this.width = monitor.width * scale;
this.height = monitor.height * scale;
this._background = new Meta.BackgroundGroup({
width: this.width * this._scale,
height: this.height * this._scale,
});
this.add_actor(this._background);
this._bgManager = new Background.BackgroundManager({
container: this._background,
monitorIndex: this._monitor.index,
controlPosition: false,
});
this.clip_to_allocation = true;
this._createWindows();
this.connect('destroy', this._onDestroy.bind(this));
this._restackedId = global.display.connect('restacked', this._syncStacking.bind(this));
}
get workspace() {
return this._workspace;
}
_shouldShowWindow(window) {
if (!window.showing_on_its_workspace())
return false;
const geometry = global.display.get_monitor_geometry(this._monitor.index);
const [intersects] = window.get_frame_rect().intersect(geometry);
if (!intersects)
return false;
const isSticky = window.is_on_all_workspaces();
return !isSticky && window.located_on_workspace(this._workspace);
}
_syncStacking() {
const windowActors = global.get_window_actors().filter(w =>
this._shouldShowWindow(w.meta_window));
let lastRecord;
for (const windowActor of windowActors) {
const record = this._windowRecords.find(r => r.windowActor === windowActor);
this.set_child_above_sibling(record.clone, lastRecord ? lastRecord.clone : this._background);
lastRecord = record;
}
}
_createWindows() {
const windowActors = global.get_window_actors().filter(w =>
this._shouldShowWindow(w.meta_window));
for (const windowActor of windowActors) {
let [width,height] = windowActor.get_size();
const clone = new Clutter.Clone({
source: windowActor,
width: width * this._scale,
height: height * this._scale,
x: (windowActor.x - this._monitor.x) * this._scale,
y: (windowActor.y - this._monitor.y) * this._scale,
});
this.add_child(clone);
const record = {windowActor, clone };
record.windowDestroyId = windowActor.connect('destroy', () => {
clone.destroy();
this._windowRecords.splice(this._windowRecords.indexOf(record), 1);
});
this._windowRecords.push(record);
}
}
_removeWindows() {
for (const record of this._windowRecords) {
record.windowActor.disconnect(record.windowDestroyId);
record.clone.destroy();
}
this._windowRecords = [];
}
_onDestroy() {
global.display.disconnect(this._restackedId);
this._removeWindows();
this._bgManager.destroy();
}
});
const MonitorGroup = GObject.registerClass({
Properties: {
'progress': GObject.ParamSpec.double(
'progress', 'progress', 'progress',
GObject.ParamFlags.READWRITE,
-Infinity, Infinity, 0),
},
}, class MonitorGroup extends St.Widget {
_init(monitor, fromIndex, toIndex) {
super._init({
clip_to_allocation: true,
style_class: 'workspace-animation',
});
this._monitor = monitor;
const constraint = new Layout.MonitorConstraint({ index: monitor.index });
this.add_constraint(constraint);
this._container = new Clutter.Actor();
this.add_child(this._container);
this._progress = 0;
this._fadeOut = true;
this._workspaceGroups = [];
this._blackBackground = new Clutter.Actor();
this._blackBackground.width = monitor.width;
this._blackBackground.height = monitor.height;
let [_res, color] = Clutter.Color.from_string("#000000ff");
this._blackBackground.background_color = color;
this.addWorkspaceByIndex(toIndex, monitor);
// add opaque black actor
this._container.add_child(this._blackBackground);
this.addWorkspaceByIndex(fromIndex, monitor);
// tween 'from' WorkspaceGroup opacity from 255 to 0 fading workspace to black background
// tween 'block' actor opacity from 255 to 0 revealing 'to' WorkspaceGroup
}
addWorkspaceByIndex(idx, monitor) {
const workspaceManager = global.workspace_manager;
const ws = workspaceManager.get_workspace_by_index(idx);
if (ws) {
const fullscreen = ws.list_windows().some(w => w.get_monitor() === monitor.index && w.is_fullscreen());
const group = new WorkspaceGroup(ws, monitor);
this._workspaceGroups.push(group);
this._container.add_child(group);
}
}
get progress() {
return this._progress;
}
// Interpolate opacity from 0 (full opaque) to 50 (full transparent)
calculateOpacity(progress) {
return 255 - (255 * (progress / 50.0));
}
set progress(p) {
const fromGroup = this._workspaceGroups[this._workspaceGroups.length - 1];
this._progress = p;
// 0 - 50
if (p < 50) {
this._blackBackground.opacity = 255;
fromGroup.opacity = this.calculateOpacity(p);
} else if (p < 100) {
if (this._fadeOut) {
this._fadeOut = false;
}
fromGroup.opacity = 0;
this._blackBackground.opacity = this.calculateOpacity(p - 50);
} else {
fromGroup.opacity = 0;
this._blackBackground.opacity = 0;
}
}
});
var ContextSwitchAnimationController = class {
constructor(indicator) {
this._switchData = null;
this._indicator = indicator;
}
_prepareContextSwitch(fromIdx, toIdx) {
if (this._switchData) {
this._switchData.monitors[0].remove_all_transitions();
this._finishContextSwitch(this._switchData);
}
const switchData = {};
this._switchData = switchData;
switchData.monitors = [];
switchData.inProgress = false;
const monitor = Main.layoutManager.primaryMonitor;
const group = new MonitorGroup(monitor, fromIdx, toIdx);
Main.uiGroup.insert_child_above(group, global.window_group);
switchData.monitors.push(group);
Meta.disable_unredirect_for_display(global.display);
}
_finishContextSwitch(switchData) {
Meta.enable_unredirect_for_display(global.display);
this._indicator.update();
this._switchData = null;
switchData.monitors.forEach(m => m.destroy());
if (switchData.onComplete) {
switchData.onComplete();
}
}
animateSwitch(fromIdx, toIdx, onComplete) {
this._prepareContextSwitch(fromIdx, toIdx);
this._switchData.inProgress = true;
this._switchData.onComplete = onComplete;
const params = {
duration: WINDOW_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_IN_OUT_QUAD,
};
params.onComplete = () => {
this._finishContextSwitch(this._switchData);
};
this._indicator.clear();
this._switchData.monitors[0].ease_property('progress', 100, params);
}
}

View File

@ -0,0 +1,323 @@
const { Clutter, Cogl, GObject, Meta, Shell, St } = imports.gi;
var WindowFrameManager = class WindowFrameManager {
constructor() {
this._realms = Shell.Realms.get_default();
let frames = this._realms.window_frames();
this._frame_effects = [];
global.window_manager.connect('map', this._handleWindowMap.bind(this));
global.workspace_manager.connect('context-window-moved', this._onContextWindowMoved.bind(this));
global.workspace_manager.connect('context-removed', this._onContextRemoved.bind(this));
frames.connect('realm-frame-colors-changed', this._onFrameColorsChanged.bind(this));
this.trackWindows();
}
_onContextWindowMoved(workspaceManager, window) {
let actor = window.get_compositor_private();
if (actor) {
this.handleWindow(actor);
}
return Clutter.EVENT_PROPAGATE;
}
_handleWindowMap(shellwm, actor) {
this.handleWindow(actor);
return Clutter.EVENT_PROPAGATE;
}
_onContextRemoved(workspaceManager, id) {
this.trackWindows();
}
_onFrameColorsChanged(realms) {
this.trackWindows();
}
trackWindows() {
var actors = global.get_window_actors();
actors.forEach(a => this.handleWindow(a));
}
handleWindow(actor) {
let win = actor.metaWindow;
let win_id = win.get_stable_sequence();
let effect = this._frame_effects[win_id];
let frames = this._realms.window_frames();
if (frames.has_frame(win) && frames.is_frame_enabled(win)) {
let color = frames.color_for_window(win);
if (effect) {
effect.setColor(color);
} else {
let label = frames.label_for_window(win);
effect = new RealmFrameEffect(actor, color, label);
this._frame_effects[win_id] = effect;
}
} else if (effect) {
effect.removeEffect(actor);
this._frame_effects[win_id] = null;
}
}
}
var RealmFrameEffect = GObject.registerClass(
class RealmFrameEffect extends Clutter.Effect {
_init(actor, color, label_text) {
super._init();
this._frame_width = 2;
this._pipeline = null;
this._color = color;
this._label_on_top = true;
this._label = null;
this._label_text = label_text;
if (label_text) {
this._updateLabel(actor.metaWindow);
}
this._sizeChangedId = actor.metaWindow.connect('size-changed', window => {
this._updateLabel(window);
});
actor.add_effect(this);
}
removeEffect(actor) {
if (this._label) {
actor.remove_child(this._label);
this._label = null;
}
if (this._sizeChangedId) {
let win = actor.metaWindow;
win.disconnect(this._sizeChangedId);
this._sizeChangedId = 0;
}
actor.remove_effect(this);
}
_createLabel(actor, label_text) {
let label = new St.Label({
style_class: 'realm-frame-label',
z_position: 1.0,
});
label.set_text(' '+label_text+' ');
actor.add_child(label);
return label;
}
_updateLabel(window) {
if (!this._label_text) {
return;
}
if (window.is_fullscreen()) {
if (this._label) {
let actor = window.get_compositor_private();
actor.remove_child(this._label);
this._label = null;
}
} else if (!this._label) {
let actor = window.get_compositor_private();
this._label = this._createLabel(actor, this._label_text);
}
if (this._label) {
this._updateLabelPosition(window);
this._updateLabelColor();
}
}
_updateLabelPosition(window) {
if (!this._label_height) {
// If we scale the text, the reported size of the label will not be the value we need so
// save the initial value.
this._label_height = this._label.get_height();
}
let maximized = window.is_fullscreen() === true || // Fullscreen
[Meta.MaximizeFlags.BOTH, Meta.MaximizeFlags.VERTICAL].includes(window.get_maximized()); // Maximized
this._label_on_top = !maximized;
let frame_rect = window.get_frame_rect();
let buffer_rect = window.get_buffer_rect();
let offsetX = frame_rect.x - buffer_rect.x;
let offsetY = frame_rect.y - buffer_rect.y;
if (window.get_client_type() === Meta.WindowClientType.WAYLAND) {
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
if (scaleFactor !== 1) {
offsetX = offsetX / scaleFactor;
this._label.set_style(`font-size: ${12 / scaleFactor}pt;`);
}
offsetX -= 1;
offsetY -= 4;
}
// If label is on top and there is enough space above title bar move position up by label height
if (this._label_on_top && this._label_height <= offsetY) {
offsetY -= this._label_height;
} else if (maximized) {
offsetX = 0;
offsetY = 0;
}
this._label.set_position(offsetX, offsetY);
}
_updateLabelColor() {
let fg = new Clutter.Color({
red: 0,
green: 0,
blue: 0,
alpha: 96,
});
let bg = this._color.copy();
if (this._label_on_top) {
bg.alpha = 100;
} else {
bg.alpha = 200;
}
let clutter_text = this._label.get_clutter_text();
clutter_text.set_color(fg);
clutter_text.set_background_color(bg);
}
setColor(color) {
if (this._color && this._color.equal(color)) {
return;
}
this._color = color;
this.setPipelineColor();
if (this._label) {
this._updateLabelColor();
}
}
setPipelineColor() {
if (!this._color || !this._pipeline) {
return;
}
let s = this._color.to_string();
let cogl_color = new Cogl.Color();
cogl_color.init_from_4ub(this._color.red, this._color.green, this._color.blue, 0xc4);
this._pipeline.set_color(cogl_color);
}
_calculate_frame_box(window, allocation) {
let frame_rect = window.get_frame_rect();
let buffer_rect = window.get_buffer_rect();
let offsetX = frame_rect.x - buffer_rect.x;
let offsetY = frame_rect.y - buffer_rect.y;
let top = offsetY - 3;
let bottom = offsetY - 1;
let left = offsetX - 3;
let right = offsetX - 1;
let wayland = window.get_client_type() == Meta.WindowClientType.WAYLAND;
if (wayland) {
bottom += 4;
}
let fw = this._frame_width;
switch (window.get_maximized()) {
case Meta.MaximizeFlags.BOTH:
top += fw;
right += fw;
bottom += fw - (wayland ? 5 : 0);
left += fw;
break;
case Meta.MaximizeFlags.HORIZONTAL:
right += fw;
left += fw;
break;
case Meta.MaximizeFlags.VERTICAL:
top += fw;
bottom += fw;
break;
}
if (window.is_fullscreen()) {
top += 3;
right += 2;
bottom -= (wayland ? 3 : 0);
left += 3;
}
if (!wayland && !window.decorated && !window.is_fullscreen() && (window.get_maximized() !== Meta.MaximizeFlags.BOTH)) {
bottom += 4;
}
let x = left;
let y = top + fw;
let w = allocation.get_width() - (right + left);
let h = allocation.get_height() - (bottom + top + fw);
return [x, y, w, h];
}
draw_rect(node, x, y, width, height) {
const box = new Clutter.ActorBox();
box.set_origin(x, y);
box.set_size(width, height);
node.add_rectangle(box);
}
draw_hline(node, x, y, width, width_factor = 1) {
this.draw_rect(node, x, y, width, this._frame_width * width_factor);
}
draw_vline(node, x, y, height, width_factor = 1) {
this.draw_rect(node, x, y, this._frame_width * width_factor, height);
}
vfunc_paint_node(node, ctx) {
let actor = this.get_actor();
const actorNode = new Clutter.ActorNode(actor, -1);
node.add_child(actorNode);
if (!this._pipeline) {
let framebuffer = ctx.get_framebuffer();
let coglContext = framebuffer.get_context();
this._pipeline = new Cogl.Pipeline(coglContext);
this.setPipelineColor();
}
const pipelineNode = new Clutter.PipelineNode(this._pipeline);
pipelineNode.set_name('Realm Frame');
node.add_child(pipelineNode);
let [x, y, width, height] = this._calculate_frame_box(actor.metaWindow, actor.get_allocation_box());
// Top
this.draw_hline(pipelineNode, x, y, width, 2);
// Right
this.draw_vline(pipelineNode, x + width, y, height);
// Bottom
this.draw_hline(pipelineNode, x, y + height, width);
// Left
this.draw_vline(pipelineNode, x, y, height);
}
});

View File

@ -0,0 +1,133 @@
const { Shell, GObject } = imports.gi;
const PopupMenu = imports.ui.popupMenu;
function _windowAppId(window) {
const tracker = Shell.WindowTracker.get_default();
const app = tracker.get_window_app(window);
if (app) {
return app.get_id();
} else {
log(`No app found for window ${window.get_description()}`)
return null;
}
}
function windowMenuDebugString(window) {
const id = _windowAppId(window);
const realm_name = windowRealmName(window);
if (!realm_name) {
return id;
} else if (window.is_on_foreign_workspace_context()) {
return `${id} [${realm_name}]`;
} else {
return `${id} (${realm_name})`;
}
}
function _createMoveWindowItem(label, realm_name, window) {
let item = new PopupMenu.PopupMenuItem(label);
item.connect('activate', () => {
let realms = Shell.Realms.get_default();
let realm = realms.realm_by_name(realm_name);
if (realm) {
realm.move_window_to_context(window);
}
});
return item;
}
// Return name of the realm the application this window belongs to is running in.
function windowRealmName(window) {
const realms = Shell.Realms.get_default();
if (realms.is_citadel_window(window)) {
return "Citadel"
}
let realm = realms.realm_by_window(window);
if (realm) {
return realm.realm_name;
} else {
return null;
}
}
// Return name of realm the context this window is currently located on belongs to
function windowContextRealmName(window) {
if (window.on_all_workspaces) {
return windowRealmName(window);
}
let ws = window.get_workspace();
if (!ws) {
return null;
}
const realms = Shell.Realms.get_default();
let realm = realms.realm_by_context_id(ws.get_context_id());
if (realm) {
return realm.realm_name;
} else {
return null;
}
}
function enableFrameItem(window) {
const realms = Shell.Realms.get_default();
const frames = realms.window_frames();
if (!frames.has_frame(window)) {
return null;
}
let enabled = frames.is_frame_enabled(window);
let item = new PopupMenu.PopupMenuItem("Display colored window frame");
if (enabled) {
item.setOrnament(PopupMenu.Ornament.CHECK);
}
item.connect('activate', () => {
let realms = Shell.Realms.get_default();
const frames = realms.window_frames();
frames.set_frame_enabled(window, !enabled);
});
return item;
}
function realmWindowMenu(window) {
const realm_name = windowContextRealmName(window);
if (!realm_name) {
return null;
}
const realms = Shell.Realms.get_default();
let other_realms = [];
let running_realms = realms.get_running_realms();
running_realms.forEach(realm => {
if (realm.realm_name != realm_name) {
other_realms.push(realm.realm_name);
}
});
if (other_realms.length == 0) {
return null;
} else if (other_realms.length == 1) {
let name = other_realms[0];
return _createMoveWindowItem(`Move to realm-${name}`, name, window);
}
let subMenu = new PopupMenu.PopupSubMenuMenuItem('Move to Realm...', true);
other_realms.forEach(name => {
let item = _createMoveWindowItem(`realm-${name}`, name, window);
subMenu.menu.addMenuItem(item);
});
return subMenu;
}

View File

@ -71,7 +71,7 @@ const _modes = {
'user': { 'user': {
hasOverview: true, hasOverview: true,
showCalendarEvents: true, showCalendarEvents: false,
showWelcomeDialog: true, showWelcomeDialog: true,
allowSettings: true, allowSettings: true,
allowExtensions: true, allowExtensions: true,

View File

@ -113,7 +113,7 @@ class Indicator extends PanelMenu.SystemIndicator {
bindFlags); bindFlags);
this._sessionSubMenu = new PopupMenu.PopupSubMenuMenuItem( this._sessionSubMenu = new PopupMenu.PopupSubMenuMenuItem(
_('Power Off / Log Out'), true); _('Power Off'), true);
this._sessionSubMenu.icon.icon_name = 'system-shutdown-symbolic'; this._sessionSubMenu.icon.icon_name = 'system-shutdown-symbolic';
item = new PopupMenu.PopupMenuItem(_('Suspend')); item = new PopupMenu.PopupMenuItem(_('Suspend'));

View File

@ -676,14 +676,16 @@ var UnlockDialog = GObject.registerClass({
} }
_ensureAuthPrompt() { _ensureAuthPrompt() {
if (!this._authPrompt) { if (this._authPrompt)
this._authPrompt = new AuthPrompt.AuthPrompt(this._gdmClient, return;
AuthPrompt.AuthPromptMode.UNLOCK_ONLY);
this._authPrompt.connect('failed', this._fail.bind(this)); this._authPrompt = new AuthPrompt.AuthPrompt(this._gdmClient,
this._authPrompt.connect('cancelled', this._fail.bind(this)); AuthPrompt.AuthPromptMode.UNLOCK_ONLY);
this._authPrompt.connect('reset', this._onReset.bind(this)); this._authPrompt.connect('failed', this._fail.bind(this));
this._promptBox.add_child(this._authPrompt); this._authPrompt.connect('cancelled', this._fail.bind(this));
} this._authPrompt.connect('reset', this._onReset.bind(this));
this._promptBox.add_child(this._authPrompt);
this._authPrompt.reset(); this._authPrompt.reset();
this._authPrompt.updateSensitivity(true); this._authPrompt.updateSensitivity(true);
@ -870,11 +872,7 @@ var UnlockDialog = GObject.registerClass({
} }
finish(onComplete) { finish(onComplete) {
if (!this._authPrompt) { this._ensureAuthPrompt();
onComplete();
return;
}
this._authPrompt.finish(onComplete); this._authPrompt.finish(onComplete);
} }

View File

@ -198,6 +198,8 @@ var WorkspaceTracker = class {
workspaceManager.connect('workspaces-reordered', () => { workspaceManager.connect('workspaces-reordered', () => {
this._workspaces.sort((a, b) => a.index() - b.index()); this._workspaces.sort((a, b) => a.index() - b.index());
}); });
workspaceManager.connect('context-switched',
this._workspaceContextSwitched.bind(this));
global.window_manager.connect('switch-workspace', global.window_manager.connect('switch-workspace',
this._queueCheckWorkspaces.bind(this)); this._queueCheckWorkspaces.bind(this));
@ -253,6 +255,8 @@ var WorkspaceTracker = class {
emptyWorkspaces[index] = false; emptyWorkspaces[index] = false;
} }
let current_context_id = workspaceManager.active_context_id();
let windows = global.get_window_actors(); let windows = global.get_window_actors();
for (i = 0; i < windows.length; i++) { for (i = 0; i < windows.length; i++) {
let actor = windows[i]; let actor = windows[i];
@ -261,7 +265,12 @@ var WorkspaceTracker = class {
if (win.is_on_all_workspaces()) if (win.is_on_all_workspaces())
continue; continue;
let workspaceIndex = win.get_workspace().index(); let workspace = win.get_workspace();
if (workspace.get_context_id() != current_context_id)
continue;
let workspaceIndex = workspace.index();
emptyWorkspaces[workspaceIndex] = false; emptyWorkspaces[workspaceIndex] = false;
} }
@ -339,6 +348,28 @@ var WorkspaceTracker = class {
this._checkWorkspacesId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, this._checkWorkspaces.bind(this)); this._checkWorkspacesId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, this._checkWorkspaces.bind(this));
} }
_workspaceContextSwitched() {
let workspaceManager = global.workspace_manager;
let numWorkspaces = workspaceManager.n_workspaces;
this._workspaces.forEach(workspace => {
workspace.disconnect(workspace._windowAddedId);
workspace.disconnect(workspace._windowRemovedId);
});
this._workspaces = [];
for (let w = 0; w < numWorkspaces; w++) {
let workspace = workspaceManager.get_workspace_by_index(w);
workspace._windowAddedId = workspace.connect('window-added', this._queueCheckWorkspaces.bind(this));
workspace._windowRemovedId = workspace.connect('window-removed', this._windowRemoved.bind(this));
this._workspaces[w] = workspace;
}
this._queueCheckWorkspaces();
return false;
}
_nWorkspacesChanged() { _nWorkspacesChanged() {
let workspaceManager = global.workspace_manager; let workspaceManager = global.workspace_manager;
let oldNumWorkspaces = this._workspaces.length; let oldNumWorkspaces = this._workspaces.length;
@ -1641,6 +1672,14 @@ var WindowManager = class {
this._switchInProgress = true; this._switchInProgress = true;
if (direction == Meta.MotionDirection.CONTEXT_SWITCH) {
Main.realmManager.animateSwitch(from, to, () => {
this._shellwm.completed_switch_workspace();
this._switchInProgress = false;
});
return;
}
this._workspaceAnimation.animateSwitch(from, to, direction, () => { this._workspaceAnimation.animateSwitch(from, to, direction, () => {
this._shellwm.completed_switch_workspace(); this._shellwm.completed_switch_workspace();
this._switchInProgress = false; this._switchInProgress = false;

View File

@ -1,11 +1,12 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -* // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*
/* exported WindowMenuManager */ /* exported WindowMenuManager */
const { GLib, Meta, St } = imports.gi; const { GLib, Meta, Shell, St } = imports.gi;
const BoxPointer = imports.ui.boxpointer; const BoxPointer = imports.ui.boxpointer;
const Main = imports.ui.main; const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const RealmWindowMenu = imports.ui.realms.realmWindowMenu;
var WindowMenu = class extends PopupMenu.PopupMenu { var WindowMenu = class extends PopupMenu.PopupMenu {
constructor(window, sourceActor) { constructor(window, sourceActor) {
@ -24,6 +25,23 @@ var WindowMenu = class extends PopupMenu.PopupMenu {
let item; let item;
let s = RealmWindowMenu.windowMenuDebugString(window);
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem(s));
item = RealmWindowMenu.enableFrameItem(window);
if (item) {
this.addMenuItem(item);
}
if (!window.is_on_all_workspaces()) {
let realmSubmenu = RealmWindowMenu.realmWindowMenu(window);
if (realmSubmenu) {
this.addMenuItem(realmSubmenu);
}
}
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
item = this.addAction(_('Hide'), () => { item = this.addAction(_('Hide'), () => {
window.minimize(); window.minimize();
}); });

View File

@ -122,6 +122,10 @@ class WorkspacesView extends WorkspacesViewBase {
this._updateWorkspacesId = this._updateWorkspacesId =
workspaceManager.connect('notify::n-workspaces', workspaceManager.connect('notify::n-workspaces',
this._updateWorkspaces.bind(this)); this._updateWorkspaces.bind(this));
this._contextSwitchedId =
workspaceManager.connect('context-switched',
this._refreshWorkspaces.bind(this));
this._reorderWorkspacesId = this._reorderWorkspacesId =
workspaceManager.connect('workspaces-reordered', () => { workspaceManager.connect('workspaces-reordered', () => {
this._workspaces.sort((a, b) => { this._workspaces.sort((a, b) => {
@ -450,6 +454,13 @@ class WorkspacesView extends WorkspacesViewBase {
} }
} }
_refreshWorkspaces() {
for (let ws = this._workspaces.pop(); ws; ws = this._workspaces.pop()) {
ws.destroy();
}
this._updateWorkspaces();
}
_updateWorkspaces() { _updateWorkspaces() {
let workspaceManager = global.workspace_manager; let workspaceManager = global.workspace_manager;
let newNumWorkspaces = workspaceManager.n_workspaces; let newNumWorkspaces = workspaceManager.n_workspaces;
@ -499,6 +510,7 @@ class WorkspacesView extends WorkspacesViewBase {
global.window_manager.disconnect(this._switchWorkspaceNotifyId); global.window_manager.disconnect(this._switchWorkspaceNotifyId);
let workspaceManager = global.workspace_manager; let workspaceManager = global.workspace_manager;
workspaceManager.disconnect(this._updateWorkspacesId); workspaceManager.disconnect(this._updateWorkspacesId);
workspaceManager.disconnect(this._contextSwitchedId);
workspaceManager.disconnect(this._reorderWorkspacesId); workspaceManager.disconnect(this._reorderWorkspacesId);
} }

View File

@ -1,5 +1,5 @@
project('gnome-shell', 'c', project('gnome-shell', 'c',
version: '41.0', version: '41.1',
meson_version: '>= 0.53.0', meson_version: '>= 0.53.0',
license: 'GPLv2+' license: 'GPLv2+'
) )
@ -19,8 +19,8 @@ cogl_pango_pc = 'mutter-cogl-pango-' + mutter_api_version
libmutter_pc = 'libmutter-' + mutter_api_version libmutter_pc = 'libmutter-' + mutter_api_version
libmutter_test_pc = 'libmutter-test-' + mutter_api_version libmutter_test_pc = 'libmutter-test-' + mutter_api_version
ecal_req = '>= 3.33.1' #ecal_req = '>= 3.33.1'
eds_req = '>= 3.33.1' #eds_req = '>= 3.33.1'
gcr_req = '>= 3.7.5' gcr_req = '>= 3.7.5'
gio_req = '>= 2.56.0' gio_req = '>= 2.56.0'
gi_req = '>= 1.49.1' gi_req = '>= 1.49.1'
@ -72,8 +72,8 @@ else
endif endif
atk_bridge_dep = dependency('atk-bridge-2.0') atk_bridge_dep = dependency('atk-bridge-2.0')
ecal_dep = dependency('libecal-2.0', version: ecal_req) #ecal_dep = dependency('libecal-2.0', version: ecal_req)
eds_dep = dependency('libedataserver-1.2', version: eds_req) #eds_dep = dependency('libedataserver-1.2', version: eds_req)
gcr_dep = dependency('gcr-base-3', version: gcr_req) gcr_dep = dependency('gcr-base-3', version: gcr_req)
gdk_x11_dep = dependency('gdk-x11-3.0') gdk_x11_dep = dependency('gdk-x11-3.0')
gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0') gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0')
@ -81,7 +81,6 @@ gi_dep = dependency('gobject-introspection-1.0', version: gi_req)
gio_dep = dependency('gio-2.0', version: gio_req) gio_dep = dependency('gio-2.0', version: gio_req)
gio_unix_dep = dependency('gio-unix-2.0', version: gio_req) gio_unix_dep = dependency('gio-unix-2.0', version: gio_req)
gjs_dep = dependency('gjs-1.0', version: gjs_req) gjs_dep = dependency('gjs-1.0', version: gjs_req)
gmodule_dep = dependency('gmodule-2.0')
gtk_dep = dependency('gtk+-3.0', version: gtk_req) gtk_dep = dependency('gtk+-3.0', version: gtk_req)
libxml_dep = dependency('libxml-2.0') libxml_dep = dependency('libxml-2.0')
clutter_dep = dependency(clutter_pc, version: mutter_req) clutter_dep = dependency(clutter_pc, version: mutter_req)
@ -140,7 +139,7 @@ endif
mutter_typelibdir = mutter_dep.get_pkgconfig_variable('typelibdir') mutter_typelibdir = mutter_dep.get_pkgconfig_variable('typelibdir')
python = find_program('python3') python = find_program('python3')
gjs = find_program('gjs') gjs = '/usr/bin/gjs'
cc = meson.get_compiler('c') cc = meson.get_compiler('c')

273
po/de.po
View File

@ -24,9 +24,9 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2021-08-25 14:56+0000\n" "POT-Creation-Date: 2021-11-03 17:53+0000\n"
"PO-Revision-Date: 2021-08-29 19:32+0200\n" "PO-Revision-Date: 2021-11-03 21:32+0100\n"
"Last-Translator: Tim Sabsch <tim@sabsch.com>\n" "Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n" "Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: de\n" "Language: de\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -270,23 +270,11 @@ msgstr ""
"noch nicht existieren. Diese riesige Zahl kann dazu verwendet werden, diesen " "noch nicht existieren. Diese riesige Zahl kann dazu verwendet werden, diesen "
"Dialog praktisch zu deaktivieren." "Dialog praktisch zu deaktivieren."
#: data/org.gnome.shell.gschema.xml.in:109 #: data/org.gnome.shell.gschema.xml.in:133
msgid "Enable introspection API"
msgstr "Introspection-API aktivieren"
#: data/org.gnome.shell.gschema.xml.in:110
msgid ""
"Enables a D-Bus API that allows to introspect the application state of the "
"shell."
msgstr ""
"Aktiviert eine D_Bus-API, die Einblicke in den Anwendungsstatus der Shell "
"gewährt."
#: data/org.gnome.shell.gschema.xml.in:141
msgid "Layout of the app picker" msgid "Layout of the app picker"
msgstr "Ausrichtung der Anwendungsauswahl" msgstr "Ausrichtung der Anwendungsauswahl"
#: data/org.gnome.shell.gschema.xml.in:142 #: data/org.gnome.shell.gschema.xml.in:134
msgid "" msgid ""
"Layout of the app picker. Each entry in the array is a page. Pages are " "Layout of the app picker. Each entry in the array is a page. Pages are "
"stored in the order they appear in GNOME Shell. Each page contains an " "stored in the order they appear in GNOME Shell. Each page contains an "
@ -299,110 +287,110 @@ msgstr ""
"Aktuell werden die folgenden Werte innerhalb von »data« gespeichert: • " "Aktuell werden die folgenden Werte innerhalb von »data« gespeichert: • "
"»position«: Die Position des Anwendungssymbols auf der Seite" "»position«: Die Position des Anwendungssymbols auf der Seite"
#: data/org.gnome.shell.gschema.xml.in:157 #: data/org.gnome.shell.gschema.xml.in:149
msgid "Keybinding to open the application menu" msgid "Keybinding to open the application menu"
msgstr "Tastenkombination zum Öffnen des Anwendungsmenüs" msgstr "Tastenkombination zum Öffnen des Anwendungsmenüs"
#: data/org.gnome.shell.gschema.xml.in:158 #: data/org.gnome.shell.gschema.xml.in:150
msgid "Keybinding to open the application menu." msgid "Keybinding to open the application menu."
msgstr "Tastenkombination zum Öffnen des Anwendungsmenüs." msgstr "Tastenkombination zum Öffnen des Anwendungsmenüs."
#: data/org.gnome.shell.gschema.xml.in:164 #: data/org.gnome.shell.gschema.xml.in:156
#: data/org.gnome.shell.gschema.xml.in:171 #: data/org.gnome.shell.gschema.xml.in:163
msgid "Keybinding to shift between overview states" msgid "Keybinding to shift between overview states"
msgstr "Tastenkürzel, um zwischen Übersichts-Modi zu wechseln" msgstr "Tastenkürzel, um zwischen Übersichts-Modi zu wechseln"
#: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:157
msgid "Keybinding to shift between session, window picker and app grid" msgid "Keybinding to shift between session, window picker and app grid"
msgstr "" msgstr ""
"Tastenkürzel, um zwischen Sitzung, Fensterwähler und Anwendungsraster zu " "Tastenkürzel, um zwischen Sitzung, Fensterwähler und Anwendungsraster zu "
"wechseln" "wechseln"
#: data/org.gnome.shell.gschema.xml.in:172 #: data/org.gnome.shell.gschema.xml.in:164
msgid "Keybinding to shift between app grid, window picker and session" msgid "Keybinding to shift between app grid, window picker and session"
msgstr "" msgstr ""
"Tastenkürzel, um zwischen Anwendungsraster, Fensterwähler und Sitzung zu " "Tastenkürzel, um zwischen Anwendungsraster, Fensterwähler und Sitzung zu "
"wechseln" "wechseln"
#: data/org.gnome.shell.gschema.xml.in:178 #: data/org.gnome.shell.gschema.xml.in:170
msgid "Keybinding to open the “Show Applications” view" msgid "Keybinding to open the “Show Applications” view"
msgstr "Tastenkombination zum Öffnen der »Anwendungen anzeigen«-Ansicht" msgstr "Tastenkombination zum Öffnen der »Anwendungen anzeigen«-Ansicht"
#: data/org.gnome.shell.gschema.xml.in:179 #: data/org.gnome.shell.gschema.xml.in:171
msgid "" msgid ""
"Keybinding to open the “Show Applications” view of the Activities Overview." "Keybinding to open the “Show Applications” view of the Activities Overview."
msgstr "" msgstr ""
"Tastenkombination zum Öffnen der »Anwendungen anzeigen«-Ansicht der " "Tastenkombination zum Öffnen der »Anwendungen anzeigen«-Ansicht der "
"Aktivitätenübersicht." "Aktivitätenübersicht."
#: data/org.gnome.shell.gschema.xml.in:186 #: data/org.gnome.shell.gschema.xml.in:178
msgid "Keybinding to open the overview" msgid "Keybinding to open the overview"
msgstr "Tastenkombination zum Öffnen der Übersicht" msgstr "Tastenkombination zum Öffnen der Übersicht"
#: data/org.gnome.shell.gschema.xml.in:187 #: data/org.gnome.shell.gschema.xml.in:179
msgid "Keybinding to open the Activities Overview." msgid "Keybinding to open the Activities Overview."
msgstr "Tastenkombination zum Öffnen der »Aktivitäten«-Übersicht." msgstr "Tastenkombination zum Öffnen der »Aktivitäten«-Übersicht."
#: data/org.gnome.shell.gschema.xml.in:193 #: data/org.gnome.shell.gschema.xml.in:185
msgid "Keybinding to toggle the visibility of the notification list" msgid "Keybinding to toggle the visibility of the notification list"
msgstr "" msgstr ""
"Tastenkombination zum Umschalten der Sichtbarkeit der Benachrichtigungsliste" "Tastenkombination zum Umschalten der Sichtbarkeit der Benachrichtigungsliste"
#: data/org.gnome.shell.gschema.xml.in:194 #: data/org.gnome.shell.gschema.xml.in:186
msgid "Keybinding to toggle the visibility of the notification list." msgid "Keybinding to toggle the visibility of the notification list."
msgstr "" msgstr ""
"Tastenkombination zum Umschalten der Sichtbarkeit der Benachrichtigungsliste." "Tastenkombination zum Umschalten der Sichtbarkeit der Benachrichtigungsliste."
#: data/org.gnome.shell.gschema.xml.in:200 #: data/org.gnome.shell.gschema.xml.in:192
msgid "Keybinding to focus the active notification" msgid "Keybinding to focus the active notification"
msgstr "Tastenkombination zur Ausrichtung auf die aktiven Benachrichtigungen" msgstr "Tastenkombination zur Ausrichtung auf die aktiven Benachrichtigungen"
#: data/org.gnome.shell.gschema.xml.in:201 #: data/org.gnome.shell.gschema.xml.in:193
msgid "Keybinding to focus the active notification." msgid "Keybinding to focus the active notification."
msgstr "Tastenkombination zur Ausrichtung auf die aktiven Benachrichtigungen." msgstr "Tastenkombination zur Ausrichtung auf die aktiven Benachrichtigungen."
#: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:199
msgid "Switch to application 1" msgid "Switch to application 1"
msgstr "Zu Anwendung 1 wechseln" msgstr "Zu Anwendung 1 wechseln"
#: data/org.gnome.shell.gschema.xml.in:211 #: data/org.gnome.shell.gschema.xml.in:203
msgid "Switch to application 2" msgid "Switch to application 2"
msgstr "Zu Anwendung 2 wechseln" msgstr "Zu Anwendung 2 wechseln"
#: data/org.gnome.shell.gschema.xml.in:215 #: data/org.gnome.shell.gschema.xml.in:207
msgid "Switch to application 3" msgid "Switch to application 3"
msgstr "Zu Anwendung 3 wechseln" msgstr "Zu Anwendung 3 wechseln"
#: data/org.gnome.shell.gschema.xml.in:219 #: data/org.gnome.shell.gschema.xml.in:211
msgid "Switch to application 4" msgid "Switch to application 4"
msgstr "Zu Anwendung 4 wechseln" msgstr "Zu Anwendung 4 wechseln"
#: data/org.gnome.shell.gschema.xml.in:223 #: data/org.gnome.shell.gschema.xml.in:215
msgid "Switch to application 5" msgid "Switch to application 5"
msgstr "Zu Anwendung 5 wechseln" msgstr "Zu Anwendung 5 wechseln"
#: data/org.gnome.shell.gschema.xml.in:227 #: data/org.gnome.shell.gschema.xml.in:219
msgid "Switch to application 6" msgid "Switch to application 6"
msgstr "Zu Anwendung 6 wechseln" msgstr "Zu Anwendung 6 wechseln"
#: data/org.gnome.shell.gschema.xml.in:231 #: data/org.gnome.shell.gschema.xml.in:223
msgid "Switch to application 7" msgid "Switch to application 7"
msgstr "Zu Anwendung 7 wechseln" msgstr "Zu Anwendung 7 wechseln"
#: data/org.gnome.shell.gschema.xml.in:235 #: data/org.gnome.shell.gschema.xml.in:227
msgid "Switch to application 8" msgid "Switch to application 8"
msgstr "Zu Anwendung 8 wechseln" msgstr "Zu Anwendung 8 wechseln"
#: data/org.gnome.shell.gschema.xml.in:239 #: data/org.gnome.shell.gschema.xml.in:231
msgid "Switch to application 9" msgid "Switch to application 9"
msgstr "Zu Anwendung 9 wechseln" msgstr "Zu Anwendung 9 wechseln"
#: data/org.gnome.shell.gschema.xml.in:248 #: data/org.gnome.shell.gschema.xml.in:240
#: data/org.gnome.shell.gschema.xml.in:275 #: data/org.gnome.shell.gschema.xml.in:267
msgid "Limit switcher to current workspace." msgid "Limit switcher to current workspace."
msgstr "Fensterwechsler auf aktuelle Arbeitsfläche einschränken." msgstr "Fensterwechsler auf aktuelle Arbeitsfläche einschränken."
#: data/org.gnome.shell.gschema.xml.in:249 #: data/org.gnome.shell.gschema.xml.in:241
msgid "" msgid ""
"If true, only applications that have windows on the current workspace are " "If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included." "shown in the switcher. Otherwise, all applications are included."
@ -411,11 +399,11 @@ msgstr ""
"Fenster auf der aktuellen Arbeitsfläche haben. Andernfalls sind alle " "Fenster auf der aktuellen Arbeitsfläche haben. Andernfalls sind alle "
"Anwendungen enthalten." "Anwendungen enthalten."
#: data/org.gnome.shell.gschema.xml.in:266 #: data/org.gnome.shell.gschema.xml.in:258
msgid "The application icon mode." msgid "The application icon mode."
msgstr "Der Modus der Anwendungssymbole." msgstr "Der Modus der Anwendungssymbole."
#: data/org.gnome.shell.gschema.xml.in:267 #: data/org.gnome.shell.gschema.xml.in:259
msgid "" msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities " "Configures how the windows are shown in the switcher. Valid possibilities "
"are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-"
@ -425,7 +413,7 @@ msgstr ""
"sind »thumbnail-only« (Vorschaubilder der Fenster werden angezeigt), »app-" "sind »thumbnail-only« (Vorschaubilder der Fenster werden angezeigt), »app-"
"icon-only« (Nur das Anwendungssymbol wird angezeigt) oder »both« (beides)." "icon-only« (Nur das Anwendungssymbol wird angezeigt) oder »both« (beides)."
#: data/org.gnome.shell.gschema.xml.in:276 #: data/org.gnome.shell.gschema.xml.in:268
msgid "" msgid ""
"If true, only windows from the current workspace are shown in the switcher. " "If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included." "Otherwise, all windows are included."
@ -433,60 +421,60 @@ msgstr ""
"Legt fest, ob Fenster der aktuellen Arbeitsfläche im Fensterwechsler " "Legt fest, ob Fenster der aktuellen Arbeitsfläche im Fensterwechsler "
"aufgeführt werden. Andernfalls sind alle Fenster enthalten." "aufgeführt werden. Andernfalls sind alle Fenster enthalten."
#: data/org.gnome.shell.gschema.xml.in:286 #: data/org.gnome.shell.gschema.xml.in:278
msgid "Locations" msgid "Locations"
msgstr "Orte" msgstr "Orte"
#: data/org.gnome.shell.gschema.xml.in:287 #: data/org.gnome.shell.gschema.xml.in:279
msgid "The locations to show in world clocks" msgid "The locations to show in world clocks"
msgstr "Die von den Weltuhren anzuzeigenden Orte" msgstr "Die von den Weltuhren anzuzeigenden Orte"
#: data/org.gnome.shell.gschema.xml.in:297 #: data/org.gnome.shell.gschema.xml.in:289
msgid "Automatic location" msgid "Automatic location"
msgstr "Automatischer Ort" msgstr "Automatischer Ort"
#: data/org.gnome.shell.gschema.xml.in:298 #: data/org.gnome.shell.gschema.xml.in:290
msgid "Whether to fetch the current location or not" msgid "Whether to fetch the current location or not"
msgstr "Legt fest, ob der aktuelle Ort automatisch bestimmt werden soll" msgstr "Legt fest, ob der aktuelle Ort automatisch bestimmt werden soll"
#: data/org.gnome.shell.gschema.xml.in:305 #: data/org.gnome.shell.gschema.xml.in:297
msgid "Location" msgid "Location"
msgstr "Ort" msgstr "Ort"
#: data/org.gnome.shell.gschema.xml.in:306 #: data/org.gnome.shell.gschema.xml.in:298
msgid "The location for which to show a forecast" msgid "The location for which to show a forecast"
msgstr "Der Ort, für den ein Wetterbericht angezeigt werden soll" msgstr "Der Ort, für den ein Wetterbericht angezeigt werden soll"
#: data/org.gnome.shell.gschema.xml.in:318 #: data/org.gnome.shell.gschema.xml.in:310
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
msgstr "Modalen Dialog an übergeordnetes Fenster binden" msgstr "Modalen Dialog an übergeordnetes Fenster binden"
#: data/org.gnome.shell.gschema.xml.in:319 #: data/org.gnome.shell.gschema.xml.in:311
#: data/org.gnome.shell.gschema.xml.in:320
#: data/org.gnome.shell.gschema.xml.in:328 #: data/org.gnome.shell.gschema.xml.in:328
#: data/org.gnome.shell.gschema.xml.in:336 #: data/org.gnome.shell.gschema.xml.in:336
#: data/org.gnome.shell.gschema.xml.in:344 #: data/org.gnome.shell.gschema.xml.in:344
#: data/org.gnome.shell.gschema.xml.in:352
msgid "" msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell." "This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "" msgstr ""
"Dieser Schlüssel überschreibt den Schlüssel in org.gnome.mutter, wenn die " "Dieser Schlüssel überschreibt den Schlüssel in org.gnome.mutter, wenn die "
"GNOME-Shell läuft." "GNOME-Shell läuft."
#: data/org.gnome.shell.gschema.xml.in:327 #: data/org.gnome.shell.gschema.xml.in:319
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "" msgstr ""
"Größenanpassung einschalten, wenn ein Fenster an die Bildschirmkante " "Größenanpassung einschalten, wenn ein Fenster an die Bildschirmkante "
"verschoben wird" "verschoben wird"
#: data/org.gnome.shell.gschema.xml.in:335 #: data/org.gnome.shell.gschema.xml.in:327
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "Arbeitsflächen dynamisch verwalten" msgstr "Arbeitsflächen dynamisch verwalten"
#: data/org.gnome.shell.gschema.xml.in:343 #: data/org.gnome.shell.gschema.xml.in:335
msgid "Workspaces only on primary monitor" msgid "Workspaces only on primary monitor"
msgstr "Arbeitsflächen nur auf dem primären Bildschirm" msgstr "Arbeitsflächen nur auf dem primären Bildschirm"
#: data/org.gnome.shell.gschema.xml.in:351 #: data/org.gnome.shell.gschema.xml.in:343
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "" msgstr ""
"Fokuswechsel im Mausmodus verzögern, bis sich der Zeiger nicht mehr bewegt" "Fokuswechsel im Mausmodus verzögern, bis sich der Zeiger nicht mehr bewegt"
@ -523,18 +511,18 @@ msgid "Visit extension homepage"
msgstr "Internetseite der Erweiterung besuchen" msgstr "Internetseite der Erweiterung besuchen"
#: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61 #: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61
#: js/ui/components/networkAgent.js:111 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:230 #: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:228
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183 #: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183
msgid "Cancel" msgid "Cancel"
msgstr "Abbrechen" msgstr "Abbrechen"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:210 #: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:209
#: js/ui/components/networkAgent.js:226 js/ui/components/networkAgent.js:250 #: js/ui/components/networkAgent.js:225 js/ui/components/networkAgent.js:249
#: js/ui/components/networkAgent.js:271 js/ui/components/networkAgent.js:291 #: js/ui/components/networkAgent.js:270 js/ui/components/networkAgent.js:290
#: js/ui/components/networkAgent.js:301 js/ui/components/polkitAgent.js:275 #: js/ui/components/networkAgent.js:300 js/ui/components/polkitAgent.js:275
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Passwort" msgstr "Passwort"
@ -557,8 +545,8 @@ msgstr "(z.B. Benutzer oder %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:246 #: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:245
#: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:287 #: js/ui/components/networkAgent.js:268 js/ui/components/networkAgent.js:286
msgid "Username" msgid "Username"
msgstr "Benutzername" msgstr "Benutzername"
@ -663,65 +651,65 @@ msgctxt "search-result"
msgid "Lock Screen Rotation" msgid "Lock Screen Rotation"
msgstr "Bildschirmdrehung sperren" msgstr "Bildschirmdrehung sperren"
#: js/misc/util.js:120 #: js/misc/util.js:121
msgid "Command not found" msgid "Command not found"
msgstr "Befehl nicht gefunden" msgstr "Befehl nicht gefunden"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: js/misc/util.js:156 #: js/misc/util.js:157
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Befehl konnte nicht verarbeitet werden:" msgstr "Befehl konnte nicht verarbeitet werden:"
#: js/misc/util.js:164 #: js/misc/util.js:165
#, javascript-format #, javascript-format
msgid "Execution of “%s” failed:" msgid "Execution of “%s” failed:"
msgstr "Ausführung von »%s« ist gescheitert:" msgstr "Ausführung von »%s« ist gescheitert:"
#: js/misc/util.js:181 #: js/misc/util.js:182
msgid "Just now" msgid "Just now"
msgstr "Gerade eben" msgstr "Gerade eben"
#: js/misc/util.js:183 #: js/misc/util.js:184
#, javascript-format #, javascript-format
msgid "%d minute ago" msgid "%d minute ago"
msgid_plural "%d minutes ago" msgid_plural "%d minutes ago"
msgstr[0] "vor %d Minute" msgstr[0] "vor %d Minute"
msgstr[1] "vor %d Minuten" msgstr[1] "vor %d Minuten"
#: js/misc/util.js:187 #: js/misc/util.js:188
#, javascript-format #, javascript-format
msgid "%d hour ago" msgid "%d hour ago"
msgid_plural "%d hours ago" msgid_plural "%d hours ago"
msgstr[0] "vor %d Stunde" msgstr[0] "vor %d Stunde"
msgstr[1] "vor %d Stunden" msgstr[1] "vor %d Stunden"
#: js/misc/util.js:191 js/ui/dateMenu.js:162 #: js/misc/util.js:192 js/ui/dateMenu.js:162
msgid "Yesterday" msgid "Yesterday"
msgstr "Gestern" msgstr "Gestern"
#: js/misc/util.js:193 #: js/misc/util.js:194
#, javascript-format #, javascript-format
msgid "%d day ago" msgid "%d day ago"
msgid_plural "%d days ago" msgid_plural "%d days ago"
msgstr[0] "vor %d Tag" msgstr[0] "vor %d Tag"
msgstr[1] "vor %d Tagen" msgstr[1] "vor %d Tagen"
#: js/misc/util.js:197 #: js/misc/util.js:198
#, javascript-format #, javascript-format
msgid "%d week ago" msgid "%d week ago"
msgid_plural "%d weeks ago" msgid_plural "%d weeks ago"
msgstr[0] "vor %d Woche" msgstr[0] "vor %d Woche"
msgstr[1] "vor %d Wochen" msgstr[1] "vor %d Wochen"
#: js/misc/util.js:201 #: js/misc/util.js:202
#, javascript-format #, javascript-format
msgid "%d month ago" msgid "%d month ago"
msgid_plural "%d months ago" msgid_plural "%d months ago"
msgstr[0] "vor %d Monat" msgstr[0] "vor %d Monat"
msgstr[1] "vor %d Monaten" msgstr[1] "vor %d Monaten"
#: js/misc/util.js:204 #: js/misc/util.js:205
#, javascript-format #, javascript-format
msgid "%d year ago" msgid "%d year ago"
msgid_plural "%d years ago" msgid_plural "%d years ago"
@ -729,20 +717,20 @@ msgstr[0] "vor %d Jahr"
msgstr[1] "vor %d Jahren" msgstr[1] "vor %d Jahren"
#. Translators: Time in 24h format #. Translators: Time in 24h format
#: js/misc/util.js:237 #: js/misc/util.js:238
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" #. time string in 24h format. i.e. "Yesterday, 14:30"
#: js/misc/util.js:243 #: js/misc/util.js:244
#, no-c-format #, no-c-format
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "Gestern, %H:%M" msgstr "Gestern, %H:%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" #. string in 24h format. i.e. "Monday, 14:30"
#: js/misc/util.js:249 #: js/misc/util.js:250
#, no-c-format #, no-c-format
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %H%M" msgstr "%A, %H%M"
@ -750,7 +738,7 @@ msgstr "%A, %H%M"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" #. i.e. "May 25, 14:30"
#: js/misc/util.js:255 #: js/misc/util.js:256
#, no-c-format #, no-c-format
msgid "%B %-d, %H%M" msgid "%B %-d, %H%M"
msgstr "%e. %B, %H%M" msgstr "%e. %B, %H%M"
@ -758,7 +746,7 @@ msgstr "%e. %B, %H%M"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" #. i.e. "May 25 2012, 14:30"
#: js/misc/util.js:261 #: js/misc/util.js:262
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %H%M" msgid "%B %-d %Y, %H%M"
msgstr "%e. %B %Y, %H:%M" msgstr "%e. %B %Y, %H:%M"
@ -766,20 +754,20 @@ msgstr "%e. %B %Y, %H:%M"
#. Show only the time if date is on today #. Show only the time if date is on today
#. eslint-disable-line no-lonely-if #. eslint-disable-line no-lonely-if
#. Translators: Time in 12h format #. Translators: Time in 12h format
#: js/misc/util.js:266 #: js/misc/util.js:267
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%l%M %p" msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" #. time string in 12h format. i.e. "Yesterday, 2:30 pm"
#: js/misc/util.js:272 #: js/misc/util.js:273
#, no-c-format #, no-c-format
msgid "Yesterday, %l%M %p" msgid "Yesterday, %l%M %p"
msgstr "Gestern, %l:%M %p" msgstr "Gestern, %l:%M %p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" #. string in 12h format. i.e. "Monday, 2:30 pm"
#: js/misc/util.js:278 #: js/misc/util.js:279
#, no-c-format #, no-c-format
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %l%M %p" msgstr "%A, %l%M %p"
@ -787,7 +775,7 @@ msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" #. i.e. "May 25, 2:30 pm"
#: js/misc/util.js:284 #: js/misc/util.js:285
#, no-c-format #, no-c-format
msgid "%B %-d, %l%M %p" msgid "%B %-d, %l%M %p"
msgstr "%e. %B, %l%M %p" msgstr "%e. %B, %l%M %p"
@ -795,7 +783,7 @@ msgstr "%e. %B, %l%M %p"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format. #. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm" #. i.e. "May 25 2012, 2:30 pm"
#: js/misc/util.js:290 #: js/misc/util.js:291
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %l%M %p" msgid "%B %-d %Y, %l%M %p"
msgstr "%e. %B %Y, %l:%M %p" msgstr "%e. %B %Y, %l:%M %p"
@ -1054,40 +1042,40 @@ msgstr ""
msgid "Open with %s" msgid "Open with %s"
msgstr "Öffnen mit %s" msgstr "Öffnen mit %s"
#: js/ui/components/networkAgent.js:93 #: js/ui/components/networkAgent.js:92
msgid "" msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router." "Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "" msgstr ""
"Alternativ können Sie sich verbinden, indem Sie den »WPS«-Knopf an Ihrem " "Alternativ können Sie sich verbinden, indem Sie den »WPS«-Knopf an Ihrem "
"Router drücken." "Router drücken."
#: js/ui/components/networkAgent.js:105 js/ui/status/network.js:258 #: js/ui/components/networkAgent.js:104 js/ui/status/network.js:258
#: js/ui/status/network.js:349 js/ui/status/network.js:981 #: js/ui/status/network.js:349 js/ui/status/network.js:981
msgid "Connect" msgid "Connect"
msgstr "Verbinden" msgstr "Verbinden"
#: js/ui/components/networkAgent.js:216 #: js/ui/components/networkAgent.js:215
msgid "Key" msgid "Key"
msgstr "Schlüssel" msgstr "Schlüssel"
#: js/ui/components/networkAgent.js:254 js/ui/components/networkAgent.js:277 #: js/ui/components/networkAgent.js:253 js/ui/components/networkAgent.js:276
msgid "Private key password" msgid "Private key password"
msgstr "Passwort für geheimen Schlüssel" msgstr "Passwort für geheimen Schlüssel"
#: js/ui/components/networkAgent.js:275 #: js/ui/components/networkAgent.js:274
msgid "Identity" msgid "Identity"
msgstr "Identität" msgstr "Identität"
#: js/ui/components/networkAgent.js:289 #: js/ui/components/networkAgent.js:288
msgid "Service" msgid "Service"
msgstr "Dienst" msgstr "Dienst"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:346 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:345
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "Anmeldung erforderlich" msgstr "Anmeldung erforderlich"
#: js/ui/components/networkAgent.js:319 js/ui/components/networkAgent.js:680 #: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:680
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@ -1096,31 +1084,31 @@ msgstr ""
"Passwörter oder Schlüssel sind erforderlich, um auf das Drahtlosnetzwerk " "Passwörter oder Schlüssel sind erforderlich, um auf das Drahtlosnetzwerk "
"»%s« zuzugreifen." "»%s« zuzugreifen."
#: js/ui/components/networkAgent.js:323 js/ui/components/networkAgent.js:684 #: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:684
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Kabelgebundene 802.1X-Anmeldung" msgstr "Kabelgebundene 802.1X-Anmeldung"
#: js/ui/components/networkAgent.js:325 #: js/ui/components/networkAgent.js:324
msgid "Network name" msgid "Network name"
msgstr "Netzwerkname" msgstr "Netzwerkname"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:688 #: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "DSL-Anmeldung" msgstr "DSL-Anmeldung"
#: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:693 #: js/ui/components/networkAgent.js:336 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "PIN-Code ist erforderlich" msgstr "PIN-Code ist erforderlich"
#: js/ui/components/networkAgent.js:338 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Für das mobile Breitbandgerät wird ein PIN-Code benötigt" msgstr "Für das mobile Breitbandgerät wird ein PIN-Code benötigt"
#: js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:338
msgid "PIN" msgid "PIN"
msgstr "PIN" msgstr "PIN"
#: js/ui/components/networkAgent.js:347 js/ui/components/networkAgent.js:685 #: js/ui/components/networkAgent.js:346 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:705 #: js/ui/components/networkAgent.js:705
#, javascript-format #, javascript-format
@ -1413,24 +1401,24 @@ msgstr "%s (Entfernt)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (Konsole)" msgstr "%s (Konsole)"
#: js/ui/extensionDownloader.js:234 #: js/ui/extensionDownloader.js:232
msgid "Install" msgid "Install"
msgstr "Installieren" msgstr "Installieren"
#: js/ui/extensionDownloader.js:240 #: js/ui/extensionDownloader.js:238
msgid "Install Extension" msgid "Install Extension"
msgstr "Erweiterung installieren" msgstr "Erweiterung installieren"
#: js/ui/extensionDownloader.js:241 #: js/ui/extensionDownloader.js:239
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?" msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
#: js/ui/extensionSystem.js:253 #: js/ui/extensionSystem.js:252
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "Aktualisierungen für Erweiterungen verfügbar" msgstr "Aktualisierungen für Erweiterungen verfügbar"
#: js/ui/extensionSystem.js:254 #: js/ui/extensionSystem.js:253
msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed."
msgstr "Aktualisierungen für Erweiterungen stehen bereit zur Installation." msgstr "Aktualisierungen für Erweiterungen stehen bereit zur Installation."
@ -1527,7 +1515,7 @@ msgstr "Ausschalten"
msgid "Leave Off" msgid "Leave Off"
msgstr "Ausgeschaltet lassen" msgstr "Ausgeschaltet lassen"
#: js/ui/keyboard.js:227 #: js/ui/keyboard.js:226
msgid "Region & Language Settings" msgid "Region & Language Settings"
msgstr "Regions- und Spracheinstellungen" msgstr "Regions- und Spracheinstellungen"
@ -1580,11 +1568,11 @@ msgstr "Quelle zeigen"
msgid "Web Page" msgid "Web Page"
msgstr "Webseite" msgstr "Webseite"
#: js/ui/main.js:294 #: js/ui/main.js:290
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Als privilegierter Benutzer angemeldet" msgstr "Als privilegierter Benutzer angemeldet"
#: js/ui/main.js:295 #: js/ui/main.js:291
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@ -1593,11 +1581,11 @@ msgstr ""
"Sicherheitsgründen unterlassen werden. Falls möglich, melden Sie sich bitte " "Sicherheitsgründen unterlassen werden. Falls möglich, melden Sie sich bitte "
"als normaler Benutzer an." "als normaler Benutzer an."
#: js/ui/main.js:344 #: js/ui/main.js:340
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Bildschirmsperre deaktiviert" msgstr "Bildschirmsperre deaktiviert"
#: js/ui/main.js:345 #: js/ui/main.js:341
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "Die Sperrung des Bildschirms erfordert den GNOME Display-Manager." msgstr "Die Sperrung des Bildschirms erfordert den GNOME Display-Manager."
@ -1635,47 +1623,47 @@ msgstr "Rückgängig"
msgid "Overview" msgid "Overview"
msgstr "Übersicht" msgstr "Übersicht"
#: js/ui/padOsd.js:96 #: js/ui/padOsd.js:95
msgid "New shortcut…" msgid "New shortcut…"
msgstr "Neue Tastenkombination …" msgstr "Neue Tastenkombination …"
#: js/ui/padOsd.js:143 #: js/ui/padOsd.js:142
msgid "Application defined" msgid "Application defined"
msgstr "Anwendung festgelegt" msgstr "Anwendung festgelegt"
#: js/ui/padOsd.js:144 #: js/ui/padOsd.js:143
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Bildschirmhilfe anzeigen" msgstr "Bildschirmhilfe anzeigen"
#: js/ui/padOsd.js:145 #: js/ui/padOsd.js:144
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Bildschirm wechseln" msgstr "Bildschirm wechseln"
#: js/ui/padOsd.js:146 #: js/ui/padOsd.js:145
msgid "Assign keystroke" msgid "Assign keystroke"
msgstr "Tastenkombination zuweisen" msgstr "Tastenkombination zuweisen"
#: js/ui/padOsd.js:212 #: js/ui/padOsd.js:211
msgid "Done" msgid "Done"
msgstr "Erledigt" msgstr "Erledigt"
#: js/ui/padOsd.js:718 #: js/ui/padOsd.js:716
msgid "Edit…" msgid "Edit…"
msgstr "Bearbeiten …" msgstr "Bearbeiten …"
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877 #: js/ui/padOsd.js:758 js/ui/padOsd.js:875
msgid "None" msgid "None"
msgstr "Keine" msgstr "Keine"
#: js/ui/padOsd.js:831 #: js/ui/padOsd.js:829
msgid "Press a button to configure" msgid "Press a button to configure"
msgstr "Klicken Sie auf einen Knopf zum Einrichten" msgstr "Klicken Sie auf einen Knopf zum Einrichten"
#: js/ui/padOsd.js:832 #: js/ui/padOsd.js:830
msgid "Press Esc to exit" msgid "Press Esc to exit"
msgstr "Drücken Sie Esc zum Abbrechen" msgstr "Drücken Sie Esc zum Abbrechen"
#: js/ui/padOsd.js:835 #: js/ui/padOsd.js:833
msgid "Press any key to exit" msgid "Press any key to exit"
msgstr "Drücken Sie eine beliebige Taste zum Beenden" msgstr "Drücken Sie eine beliebige Taste zum Beenden"
@ -1685,12 +1673,12 @@ msgstr "Drücken Sie eine beliebige Taste zum Beenden"
msgid "Activities" msgid "Activities"
msgstr "Aktivitäten" msgstr "Aktivitäten"
#: js/ui/panel.js:542 #: js/ui/panel.js:556
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "System" msgstr "System"
#: js/ui/panel.js:658 #: js/ui/panel.js:674
msgid "Top Bar" msgid "Top Bar"
msgstr "Obere Leiste" msgstr "Obere Leiste"
@ -1729,7 +1717,7 @@ msgstr "Sperrung fehlgeschlagen"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Sperrung wurde von einer Anwendung blockiert" msgstr "Sperrung wurde von einer Anwendung blockiert"
#: js/ui/screenshot.js:141 #: js/ui/screenshot.js:155
msgid "Screenshot taken" msgid "Screenshot taken"
msgstr "Bildschirmfoto aufgenommen" msgstr "Bildschirmfoto aufgenommen"
@ -2802,6 +2790,7 @@ msgstr "Es werden eine UUID, ein Name und eine Beschreibung benötigt"
#: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46
#: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-info.c:50
#: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/command-list.c:64
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell\n" msgid "Failed to connect to GNOME Shell\n"
msgstr "Fehler beim Verbinden zur GNOME Shell\n" msgstr "Fehler beim Verbinden zur GNOME Shell\n"
@ -2818,7 +2807,7 @@ msgstr "Eine Erweiterung deaktivieren"
#: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-disable.c:119
#: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119
#: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-info.c:103
#: subprojects/extensions-tool/src/command-prefs.c:97 #: subprojects/extensions-tool/src/command-prefs.c:105
#: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-reset.c:76
#: subprojects/extensions-tool/src/command-uninstall.c:104 #: subprojects/extensions-tool/src/command-uninstall.c:104
msgid "No UUID given" msgid "No UUID given"
@ -2827,7 +2816,7 @@ msgstr "Keine UUID angegeben"
#: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-disable.c:124
#: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124
#: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-info.c:108
#: subprojects/extensions-tool/src/command-prefs.c:102 #: subprojects/extensions-tool/src/command-prefs.c:110
#: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-reset.c:81
#: subprojects/extensions-tool/src/command-uninstall.c:109 #: subprojects/extensions-tool/src/command-uninstall.c:109
msgid "More than one UUID given" msgid "More than one UUID given"
@ -2957,7 +2946,14 @@ msgstr "Mehr als ein Quellordner angegeben"
msgid "Extension “%s” doesn't have preferences\n" msgid "Extension “%s” doesn't have preferences\n"
msgstr "Erweiterung »%s« hat keine Einstellungen\n" msgstr "Erweiterung »%s« hat keine Einstellungen\n"
#: subprojects/extensions-tool/src/command-prefs.c:79 #: subprojects/extensions-tool/src/command-prefs.c:62
#, c-format
msgid "Failed to open prefs for extension “%s”: %s\n"
msgstr ""
"Das Öffnen der Einstellungen für die Erweiterung »%s« ist fehlgeschlagen: "
"%s\n"
#: subprojects/extensions-tool/src/command-prefs.c:87
msgid "Opens extension preferences" msgid "Opens extension preferences"
msgstr "Öffnet die Erweiterungseinstellungen" msgstr "Öffnet die Erweiterungseinstellungen"
@ -2982,10 +2978,6 @@ msgstr "Eine Erweiterung deinstallieren"
msgid "Do not print error messages" msgid "Do not print error messages"
msgstr "Keine Fehlermeldungen ausgeben" msgstr "Keine Fehlermeldungen ausgeben"
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell"
msgstr "Fehler beim Verbinden zur GNOME Shell"
#: subprojects/extensions-tool/src/main.c:244 #: subprojects/extensions-tool/src/main.c:244
msgid "Path" msgid "Path"
msgstr "Pfad" msgstr "Pfad"
@ -3116,6 +3108,19 @@ msgstr[1] "%u Eingänge"
msgid "System Sounds" msgid "System Sounds"
msgstr "Systemklänge" msgstr "Systemklänge"
#~ msgid "Enable introspection API"
#~ msgstr "Introspection-API aktivieren"
#~ msgid ""
#~ "Enables a D-Bus API that allows to introspect the application state of "
#~ "the shell."
#~ msgstr ""
#~ "Aktiviert eine D_Bus-API, die Einblicke in den Anwendungsstatus der Shell "
#~ "gewährt."
#~ msgid "Failed to connect to GNOME Shell"
#~ msgstr "Fehler beim Verbinden zur GNOME Shell"
#~ msgid "Minimize" #~ msgid "Minimize"
#~ msgstr "Minimieren" #~ msgstr "Minimieren"

990
po/fa.po

File diff suppressed because it is too large Load Diff

275
po/id.po
View File

@ -11,8 +11,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2021-08-17 23:56+0000\n" "POT-Creation-Date: 2021-11-03 01:20+0000\n"
"PO-Revision-Date: 2021-08-22 11:44+0700\n" "PO-Revision-Date: 2021-11-03 17:00+0700\n"
"Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n" "Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n" "Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
"Language: id\n" "Language: id\n"
@ -257,23 +257,11 @@ msgstr ""
"sejumlah besar akan mewakili versi yang belum ada. Jumlah besar ini dapat " "sejumlah besar akan mewakili versi yang belum ada. Jumlah besar ini dapat "
"digunakan untuk secara efektif menonaktifkan dialog." "digunakan untuk secara efektif menonaktifkan dialog."
#: data/org.gnome.shell.gschema.xml.in:109 #: data/org.gnome.shell.gschema.xml.in:133
msgid "Enable introspection API"
msgstr "Aktifkan API introspeksi"
#: data/org.gnome.shell.gschema.xml.in:110
msgid ""
"Enables a D-Bus API that allows to introspect the application state of the "
"shell."
msgstr ""
"Aktifkan API D-Bus yang memungkinkan untuk mengintrospeksi status aplikasi "
"shell."
#: data/org.gnome.shell.gschema.xml.in:141
msgid "Layout of the app picker" msgid "Layout of the app picker"
msgstr "Tata letak pemilih aplikasi" msgstr "Tata letak pemilih aplikasi"
#: data/org.gnome.shell.gschema.xml.in:142 #: data/org.gnome.shell.gschema.xml.in:134
msgid "" msgid ""
"Layout of the app picker. Each entry in the array is a page. Pages are " "Layout of the app picker. Each entry in the array is a page. Pages are "
"stored in the order they appear in GNOME Shell. Each page contains an " "stored in the order they appear in GNOME Shell. Each page contains an "
@ -285,108 +273,108 @@ msgstr ""
"berisi pasangan “application id” → 'data'. Saat ini, nilai berikut disimpan " "berisi pasangan “application id” → 'data'. Saat ini, nilai berikut disimpan "
"sebagai 'data': • \"position\": posisi ikon aplikasi di halaman" "sebagai 'data': • \"position\": posisi ikon aplikasi di halaman"
#: data/org.gnome.shell.gschema.xml.in:157 #: data/org.gnome.shell.gschema.xml.in:149
msgid "Keybinding to open the application menu" msgid "Keybinding to open the application menu"
msgstr "Kombinasi tombol untuk membuka menu aplikasi" msgstr "Kombinasi tombol untuk membuka menu aplikasi"
#: data/org.gnome.shell.gschema.xml.in:158 #: data/org.gnome.shell.gschema.xml.in:150
msgid "Keybinding to open the application menu." msgid "Keybinding to open the application menu."
msgstr "Kombinasi tombol untuk membuka menu aplikasi." msgstr "Kombinasi tombol untuk membuka menu aplikasi."
#: data/org.gnome.shell.gschema.xml.in:164 #: data/org.gnome.shell.gschema.xml.in:156
#: data/org.gnome.shell.gschema.xml.in:171 #: data/org.gnome.shell.gschema.xml.in:163
msgid "Keybinding to shift between overview states" msgid "Keybinding to shift between overview states"
msgstr "Kombinasi tombol untuk beralih antara status ringkasan" msgstr "Kombinasi tombol untuk beralih antara status ringkasan"
#: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:157
msgid "Keybinding to shift between session, window picker and app grid" msgid "Keybinding to shift between session, window picker and app grid"
msgstr "" msgstr ""
"Kombinasi tombol untuk beralih antara sesi, pemilih jendela, dan kisi " "Kombinasi tombol untuk beralih antara sesi, pemilih jendela, dan kisi "
"aplikasi" "aplikasi"
#: data/org.gnome.shell.gschema.xml.in:172 #: data/org.gnome.shell.gschema.xml.in:164
msgid "Keybinding to shift between app grid, window picker and session" msgid "Keybinding to shift between app grid, window picker and session"
msgstr "" msgstr ""
"Kombinasi tombol untuk beralih antara kisi aplikasi, pemilih jendela, dan " "Kombinasi tombol untuk beralih antara kisi aplikasi, pemilih jendela, dan "
"sesi" "sesi"
#: data/org.gnome.shell.gschema.xml.in:178 #: data/org.gnome.shell.gschema.xml.in:170
msgid "Keybinding to open the “Show Applications” view" msgid "Keybinding to open the “Show Applications” view"
msgstr "Kombinasi tombol untuk membuka tilikan \"Tampilkan Aplikasi\"" msgstr "Kombinasi tombol untuk membuka tilikan \"Tampilkan Aplikasi\""
#: data/org.gnome.shell.gschema.xml.in:179 #: data/org.gnome.shell.gschema.xml.in:171
msgid "" msgid ""
"Keybinding to open the “Show Applications” view of the Activities Overview." "Keybinding to open the “Show Applications” view of the Activities Overview."
msgstr "" msgstr ""
"Kombinasi tombol untuk membuka tilikan Ringkasan Aktivitas \"Tampilkan " "Kombinasi tombol untuk membuka tilikan Ringkasan Aktivitas \"Tampilkan "
"Aplikasi\"." "Aplikasi\"."
#: data/org.gnome.shell.gschema.xml.in:186 #: data/org.gnome.shell.gschema.xml.in:178
msgid "Keybinding to open the overview" msgid "Keybinding to open the overview"
msgstr "Kombinasi tombol untuk membuka ringkasan" msgstr "Kombinasi tombol untuk membuka ringkasan"
#: data/org.gnome.shell.gschema.xml.in:187 #: data/org.gnome.shell.gschema.xml.in:179
msgid "Keybinding to open the Activities Overview." msgid "Keybinding to open the Activities Overview."
msgstr "Kombinasi tombol untuk membuka Ringkasan Aktivitas." msgstr "Kombinasi tombol untuk membuka Ringkasan Aktivitas."
#: data/org.gnome.shell.gschema.xml.in:193 #: data/org.gnome.shell.gschema.xml.in:185
msgid "Keybinding to toggle the visibility of the notification list" msgid "Keybinding to toggle the visibility of the notification list"
msgstr "Kombinasi tombol untuk kenampakan daftar pemberitahuan" msgstr "Kombinasi tombol untuk kenampakan daftar pemberitahuan"
#: data/org.gnome.shell.gschema.xml.in:194 #: data/org.gnome.shell.gschema.xml.in:186
msgid "Keybinding to toggle the visibility of the notification list." msgid "Keybinding to toggle the visibility of the notification list."
msgstr "Kombinasi tombol untuk kenampakan daftar pemberitahuan." msgstr "Kombinasi tombol untuk kenampakan daftar pemberitahuan."
#: data/org.gnome.shell.gschema.xml.in:200 #: data/org.gnome.shell.gschema.xml.in:192
msgid "Keybinding to focus the active notification" msgid "Keybinding to focus the active notification"
msgstr "Kombinasi tombol untuk fokus pada pemberitahuan yang aktif" msgstr "Kombinasi tombol untuk fokus pada pemberitahuan yang aktif"
#: data/org.gnome.shell.gschema.xml.in:201 #: data/org.gnome.shell.gschema.xml.in:193
msgid "Keybinding to focus the active notification." msgid "Keybinding to focus the active notification."
msgstr "Kombinasi tombol untuk fokus pada pemberitahuan yang aktif." msgstr "Kombinasi tombol untuk fokus pada pemberitahuan yang aktif."
#: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:199
msgid "Switch to application 1" msgid "Switch to application 1"
msgstr "Beralih ke aplikasi 1" msgstr "Beralih ke aplikasi 1"
#: data/org.gnome.shell.gschema.xml.in:211 #: data/org.gnome.shell.gschema.xml.in:203
msgid "Switch to application 2" msgid "Switch to application 2"
msgstr "Beralih ke aplikasi 2" msgstr "Beralih ke aplikasi 2"
#: data/org.gnome.shell.gschema.xml.in:215 #: data/org.gnome.shell.gschema.xml.in:207
msgid "Switch to application 3" msgid "Switch to application 3"
msgstr "Beralih ke aplikasi 3" msgstr "Beralih ke aplikasi 3"
#: data/org.gnome.shell.gschema.xml.in:219 #: data/org.gnome.shell.gschema.xml.in:211
msgid "Switch to application 4" msgid "Switch to application 4"
msgstr "Beralih ke aplikasi 4" msgstr "Beralih ke aplikasi 4"
#: data/org.gnome.shell.gschema.xml.in:223 #: data/org.gnome.shell.gschema.xml.in:215
msgid "Switch to application 5" msgid "Switch to application 5"
msgstr "Beralih ke aplikasi 5" msgstr "Beralih ke aplikasi 5"
#: data/org.gnome.shell.gschema.xml.in:227 #: data/org.gnome.shell.gschema.xml.in:219
msgid "Switch to application 6" msgid "Switch to application 6"
msgstr "Beralih ke aplikasi 6" msgstr "Beralih ke aplikasi 6"
#: data/org.gnome.shell.gschema.xml.in:231 #: data/org.gnome.shell.gschema.xml.in:223
msgid "Switch to application 7" msgid "Switch to application 7"
msgstr "Beralih ke aplikasi 7" msgstr "Beralih ke aplikasi 7"
#: data/org.gnome.shell.gschema.xml.in:235 #: data/org.gnome.shell.gschema.xml.in:227
msgid "Switch to application 8" msgid "Switch to application 8"
msgstr "Beralih ke aplikasi 8" msgstr "Beralih ke aplikasi 8"
#: data/org.gnome.shell.gschema.xml.in:239 #: data/org.gnome.shell.gschema.xml.in:231
msgid "Switch to application 9" msgid "Switch to application 9"
msgstr "Beralih ke aplikasi 9" msgstr "Beralih ke aplikasi 9"
#: data/org.gnome.shell.gschema.xml.in:248 #: data/org.gnome.shell.gschema.xml.in:240
#: data/org.gnome.shell.gschema.xml.in:275 #: data/org.gnome.shell.gschema.xml.in:267
msgid "Limit switcher to current workspace." msgid "Limit switcher to current workspace."
msgstr "Batasi pengalih ke ruang kerja saat ini." msgstr "Batasi pengalih ke ruang kerja saat ini."
#: data/org.gnome.shell.gschema.xml.in:249 #: data/org.gnome.shell.gschema.xml.in:241
msgid "" msgid ""
"If true, only applications that have windows on the current workspace are " "If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included." "shown in the switcher. Otherwise, all applications are included."
@ -394,11 +382,11 @@ msgstr ""
"Bila berisi true, hanya aplikasi yang punya jendela pada ruang kerja saat " "Bila berisi true, hanya aplikasi yang punya jendela pada ruang kerja saat "
"ini ditampilkan pada penukar. Bila tidak, semua aplikasi disertakan." "ini ditampilkan pada penukar. Bila tidak, semua aplikasi disertakan."
#: data/org.gnome.shell.gschema.xml.in:266 #: data/org.gnome.shell.gschema.xml.in:258
msgid "The application icon mode." msgid "The application icon mode."
msgstr "Mode ikon aplikasi." msgstr "Mode ikon aplikasi."
#: data/org.gnome.shell.gschema.xml.in:267 #: data/org.gnome.shell.gschema.xml.in:259
msgid "" msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities " "Configures how the windows are shown in the switcher. Valid possibilities "
"are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-"
@ -408,7 +396,7 @@ msgstr ""
"adalah \"thumbnail-only\" (menampilkan gambar mini dari jendela), \"app-icon-" "adalah \"thumbnail-only\" (menampilkan gambar mini dari jendela), \"app-icon-"
"only\" (hanya menampilkan ikon aplikasi), atau \"both\" (keduanya)." "only\" (hanya menampilkan ikon aplikasi), atau \"both\" (keduanya)."
#: data/org.gnome.shell.gschema.xml.in:276 #: data/org.gnome.shell.gschema.xml.in:268
msgid "" msgid ""
"If true, only windows from the current workspace are shown in the switcher. " "If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included." "Otherwise, all windows are included."
@ -416,59 +404,59 @@ msgstr ""
"Bila berisi true, hanya jendela dari ruang kerja saat ini ditampilkan pada " "Bila berisi true, hanya jendela dari ruang kerja saat ini ditampilkan pada "
"penukar. Bila tidak, semua jendela disertakan." "penukar. Bila tidak, semua jendela disertakan."
#: data/org.gnome.shell.gschema.xml.in:286 #: data/org.gnome.shell.gschema.xml.in:278
msgid "Locations" msgid "Locations"
msgstr "Lokasi" msgstr "Lokasi"
#: data/org.gnome.shell.gschema.xml.in:287 #: data/org.gnome.shell.gschema.xml.in:279
msgid "The locations to show in world clocks" msgid "The locations to show in world clocks"
msgstr "Lokasi untuk ditampilkan di jam dunia" msgstr "Lokasi untuk ditampilkan di jam dunia"
#: data/org.gnome.shell.gschema.xml.in:297 #: data/org.gnome.shell.gschema.xml.in:289
msgid "Automatic location" msgid "Automatic location"
msgstr "Lokasi otomatis" msgstr "Lokasi otomatis"
#: data/org.gnome.shell.gschema.xml.in:298 #: data/org.gnome.shell.gschema.xml.in:290
msgid "Whether to fetch the current location or not" msgid "Whether to fetch the current location or not"
msgstr "Apakah akan mengambil lokasi saat ini atau tidak" msgstr "Apakah akan mengambil lokasi saat ini atau tidak"
#: data/org.gnome.shell.gschema.xml.in:305 #: data/org.gnome.shell.gschema.xml.in:297
msgid "Location" msgid "Location"
msgstr "Lokasi" msgstr "Lokasi"
#: data/org.gnome.shell.gschema.xml.in:306 #: data/org.gnome.shell.gschema.xml.in:298
msgid "The location for which to show a forecast" msgid "The location for which to show a forecast"
msgstr "Lokasi yang menunjukkan perkiraan" msgstr "Lokasi yang menunjukkan perkiraan"
#: data/org.gnome.shell.gschema.xml.in:318 #: data/org.gnome.shell.gschema.xml.in:310
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
msgstr "Mencantolkan dialog modal ke jendela induk" msgstr "Mencantolkan dialog modal ke jendela induk"
#: data/org.gnome.shell.gschema.xml.in:319 #: data/org.gnome.shell.gschema.xml.in:311
#: data/org.gnome.shell.gschema.xml.in:320
#: data/org.gnome.shell.gschema.xml.in:328 #: data/org.gnome.shell.gschema.xml.in:328
#: data/org.gnome.shell.gschema.xml.in:336 #: data/org.gnome.shell.gschema.xml.in:336
#: data/org.gnome.shell.gschema.xml.in:344 #: data/org.gnome.shell.gschema.xml.in:344
#: data/org.gnome.shell.gschema.xml.in:352
msgid "" msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell." "This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "" msgstr ""
"Kunci ini menimpa kunci dalam org.gnome.mutter ketika menjalankan GNOME " "Kunci ini menimpa kunci dalam org.gnome.mutter ketika menjalankan GNOME "
"Shell." "Shell."
#: data/org.gnome.shell.gschema.xml.in:327 #: data/org.gnome.shell.gschema.xml.in:319
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "" msgstr ""
"Memfungsikan pengubinan tepi ketika menjatuhkan jendela pada tepi layar" "Memfungsikan pengubinan tepi ketika menjatuhkan jendela pada tepi layar"
#: data/org.gnome.shell.gschema.xml.in:335 #: data/org.gnome.shell.gschema.xml.in:327
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "Ruang kerja dikelola secara dinamis" msgstr "Ruang kerja dikelola secara dinamis"
#: data/org.gnome.shell.gschema.xml.in:343 #: data/org.gnome.shell.gschema.xml.in:335
msgid "Workspaces only on primary monitor" msgid "Workspaces only on primary monitor"
msgstr "Ruang kerja hanya pada monitor primer" msgstr "Ruang kerja hanya pada monitor primer"
#: data/org.gnome.shell.gschema.xml.in:351 #: data/org.gnome.shell.gschema.xml.in:343
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "" msgstr ""
"Tunda perubahan fokus dalam mode tetikus sampai penunjuk berhenti bergerak" "Tunda perubahan fokus dalam mode tetikus sampai penunjuk berhenti bergerak"
@ -505,18 +493,18 @@ msgid "Visit extension homepage"
msgstr "Kunjungi halaman web ekstensi" msgstr "Kunjungi halaman web ekstensi"
#: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61 #: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61
#: js/ui/components/networkAgent.js:111 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:190 #: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:228
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183 #: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183
msgid "Cancel" msgid "Cancel"
msgstr "Batal" msgstr "Batal"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:210 #: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:209
#: js/ui/components/networkAgent.js:226 js/ui/components/networkAgent.js:250 #: js/ui/components/networkAgent.js:225 js/ui/components/networkAgent.js:249
#: js/ui/components/networkAgent.js:271 js/ui/components/networkAgent.js:291 #: js/ui/components/networkAgent.js:270 js/ui/components/networkAgent.js:290
#: js/ui/components/networkAgent.js:301 js/ui/components/polkitAgent.js:275 #: js/ui/components/networkAgent.js:300 js/ui/components/polkitAgent.js:275
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Kata Sandi" msgstr "Kata Sandi"
@ -539,8 +527,8 @@ msgstr "(cth., pengguna dari %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:246 #: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:245
#: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:287 #: js/ui/components/networkAgent.js:268 js/ui/components/networkAgent.js:286
msgid "Username" msgid "Username"
msgstr "Nama pengguna" msgstr "Nama pengguna"
@ -645,65 +633,65 @@ msgctxt "search-result"
msgid "Lock Screen Rotation" msgid "Lock Screen Rotation"
msgstr "Kunci Rotasi Layar" msgstr "Kunci Rotasi Layar"
#: js/misc/util.js:120 #: js/misc/util.js:121
msgid "Command not found" msgid "Command not found"
msgstr "Perintah tidak ditemukan" msgstr "Perintah tidak ditemukan"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: js/misc/util.js:156 #: js/misc/util.js:157
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Tak dapat mengurai perintah:" msgstr "Tak dapat mengurai perintah:"
#: js/misc/util.js:164 #: js/misc/util.js:165
#, javascript-format #, javascript-format
msgid "Execution of “%s” failed:" msgid "Execution of “%s” failed:"
msgstr "Eksekusi \"%s\" gagal:" msgstr "Eksekusi \"%s\" gagal:"
#: js/misc/util.js:181 #: js/misc/util.js:182
msgid "Just now" msgid "Just now"
msgstr "Baru saja" msgstr "Baru saja"
#: js/misc/util.js:183 #: js/misc/util.js:184
#, javascript-format #, javascript-format
msgid "%d minute ago" msgid "%d minute ago"
msgid_plural "%d minutes ago" msgid_plural "%d minutes ago"
msgstr[0] "%d menit yang lalu" msgstr[0] "%d menit yang lalu"
msgstr[1] "%d menit yang lalu" msgstr[1] "%d menit yang lalu"
#: js/misc/util.js:187 #: js/misc/util.js:188
#, javascript-format #, javascript-format
msgid "%d hour ago" msgid "%d hour ago"
msgid_plural "%d hours ago" msgid_plural "%d hours ago"
msgstr[0] "%d jam yang lalu" msgstr[0] "%d jam yang lalu"
msgstr[1] "%d jam yang lalu" msgstr[1] "%d jam yang lalu"
#: js/misc/util.js:191 js/ui/dateMenu.js:162 #: js/misc/util.js:192 js/ui/dateMenu.js:162
msgid "Yesterday" msgid "Yesterday"
msgstr "Kemarin" msgstr "Kemarin"
#: js/misc/util.js:193 #: js/misc/util.js:194
#, javascript-format #, javascript-format
msgid "%d day ago" msgid "%d day ago"
msgid_plural "%d days ago" msgid_plural "%d days ago"
msgstr[0] "%d hari yang lalu" msgstr[0] "%d hari yang lalu"
msgstr[1] "%d hari yang lalu" msgstr[1] "%d hari yang lalu"
#: js/misc/util.js:197 #: js/misc/util.js:198
#, javascript-format #, javascript-format
msgid "%d week ago" msgid "%d week ago"
msgid_plural "%d weeks ago" msgid_plural "%d weeks ago"
msgstr[0] "%d minggu yang lalu" msgstr[0] "%d minggu yang lalu"
msgstr[1] "%d minggu yang lalu" msgstr[1] "%d minggu yang lalu"
#: js/misc/util.js:201 #: js/misc/util.js:202
#, javascript-format #, javascript-format
msgid "%d month ago" msgid "%d month ago"
msgid_plural "%d months ago" msgid_plural "%d months ago"
msgstr[0] "%d bulan yang lalu" msgstr[0] "%d bulan yang lalu"
msgstr[1] "%d bulan yang lalu" msgstr[1] "%d bulan yang lalu"
#: js/misc/util.js:204 #: js/misc/util.js:205
#, javascript-format #, javascript-format
msgid "%d year ago" msgid "%d year ago"
msgid_plural "%d years ago" msgid_plural "%d years ago"
@ -711,20 +699,20 @@ msgstr[0] "%d tahun yang lalu"
msgstr[1] "%d tahun yang lalu" msgstr[1] "%d tahun yang lalu"
#. Translators: Time in 24h format #. Translators: Time in 24h format
#: js/misc/util.js:237 #: js/misc/util.js:238
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" #. time string in 24h format. i.e. "Yesterday, 14:30"
#: js/misc/util.js:243 #: js/misc/util.js:244
#, no-c-format #, no-c-format
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "Kemarin, %H:%M" msgstr "Kemarin, %H:%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" #. string in 24h format. i.e. "Monday, 14:30"
#: js/misc/util.js:249 #: js/misc/util.js:250
#, no-c-format #, no-c-format
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %H%M" msgstr "%A, %H%M"
@ -732,7 +720,7 @@ msgstr "%A, %H%M"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" #. i.e. "May 25, 14:30"
#: js/misc/util.js:255 #: js/misc/util.js:256
#, no-c-format #, no-c-format
msgid "%B %-d, %H%M" msgid "%B %-d, %H%M"
msgstr "%d %B, %H%M" msgstr "%d %B, %H%M"
@ -740,7 +728,7 @@ msgstr "%d %B, %H%M"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" #. i.e. "May 25 2012, 14:30"
#: js/misc/util.js:261 #: js/misc/util.js:262
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %H%M" msgid "%B %-d %Y, %H%M"
msgstr "%d %B %Y, %H%M" msgstr "%d %B %Y, %H%M"
@ -748,20 +736,20 @@ msgstr "%d %B %Y, %H%M"
#. Show only the time if date is on today #. Show only the time if date is on today
#. eslint-disable-line no-lonely-if #. eslint-disable-line no-lonely-if
#. Translators: Time in 12h format #. Translators: Time in 12h format
#: js/misc/util.js:266 #: js/misc/util.js:267
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" #. time string in 12h format. i.e. "Yesterday, 2:30 pm"
#: js/misc/util.js:272 #: js/misc/util.js:273
#, no-c-format #, no-c-format
msgid "Yesterday, %l%M %p" msgid "Yesterday, %l%M %p"
msgstr "Kemarin, %l%M %p" msgstr "Kemarin, %l%M %p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" #. string in 12h format. i.e. "Monday, 2:30 pm"
#: js/misc/util.js:278 #: js/misc/util.js:279
#, no-c-format #, no-c-format
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %l%M %p" msgstr "%A, %l%M %p"
@ -769,7 +757,7 @@ msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" #. i.e. "May 25, 2:30 pm"
#: js/misc/util.js:284 #: js/misc/util.js:285
#, no-c-format #, no-c-format
msgid "%B %-d, %l%M %p" msgid "%B %-d, %l%M %p"
msgstr "%d %B, %l%M %p" msgstr "%d %B, %l%M %p"
@ -777,17 +765,17 @@ msgstr "%d %B, %l%M %p"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format. #. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm" #. i.e. "May 25 2012, 2:30 pm"
#: js/misc/util.js:290 #: js/misc/util.js:291
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %l%M %p" msgid "%B %-d %Y, %l%M %p"
msgstr "%d %B %Y, %l%M %p" msgstr "%d %B %Y, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login window #. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:42 #: js/portalHelper/main.js:49
msgid "Hotspot Login" msgid "Hotspot Login"
msgstr "Log Masuk Area Bersinyal (hotspot)" msgstr "Log Masuk Area Bersinyal (hotspot)"
#: js/portalHelper/main.js:88 #: js/portalHelper/main.js:95
msgid "" msgid ""
"Your connection to this hotspot login is not secure. Passwords or other " "Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby." "information you enter on this page can be viewed by people nearby."
@ -1033,40 +1021,40 @@ msgstr "Versi udisks yang dipasang tidak mendukung pengaturan PIM"
msgid "Open with %s" msgid "Open with %s"
msgstr "Buka dengan %s" msgstr "Buka dengan %s"
#: js/ui/components/networkAgent.js:93 #: js/ui/components/networkAgent.js:92
msgid "" msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router." "Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "" msgstr ""
"Sebagai alternatif Anda dapat terhubung dengan menekan tombol \"WPS\" pada " "Sebagai alternatif Anda dapat terhubung dengan menekan tombol \"WPS\" pada "
"router Anda." "router Anda."
#: js/ui/components/networkAgent.js:105 js/ui/status/network.js:258 #: js/ui/components/networkAgent.js:104 js/ui/status/network.js:258
#: js/ui/status/network.js:349 js/ui/status/network.js:981 #: js/ui/status/network.js:349 js/ui/status/network.js:981
msgid "Connect" msgid "Connect"
msgstr "Sambung" msgstr "Sambung"
#: js/ui/components/networkAgent.js:216 #: js/ui/components/networkAgent.js:215
msgid "Key" msgid "Key"
msgstr "Kunci" msgstr "Kunci"
#: js/ui/components/networkAgent.js:254 js/ui/components/networkAgent.js:277 #: js/ui/components/networkAgent.js:253 js/ui/components/networkAgent.js:276
msgid "Private key password" msgid "Private key password"
msgstr "Kata sandi kunci privat" msgstr "Kata sandi kunci privat"
#: js/ui/components/networkAgent.js:275 #: js/ui/components/networkAgent.js:274
msgid "Identity" msgid "Identity"
msgstr "Identitas" msgstr "Identitas"
#: js/ui/components/networkAgent.js:289 #: js/ui/components/networkAgent.js:288
msgid "Service" msgid "Service"
msgstr "Layanan" msgstr "Layanan"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:346 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:345
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "Diperlukan autentikasi" msgstr "Diperlukan autentikasi"
#: js/ui/components/networkAgent.js:319 js/ui/components/networkAgent.js:680 #: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:680
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@ -1075,31 +1063,31 @@ msgstr ""
"Kata sandi atau kunci enkripsi diperlukan untuk mengakses jaringan nirkabel " "Kata sandi atau kunci enkripsi diperlukan untuk mengakses jaringan nirkabel "
"\"%s\"." "\"%s\"."
#: js/ui/components/networkAgent.js:323 js/ui/components/networkAgent.js:684 #: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:684
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Autentikasi 802.1X kabel" msgstr "Autentikasi 802.1X kabel"
#: js/ui/components/networkAgent.js:325 #: js/ui/components/networkAgent.js:324
msgid "Network name" msgid "Network name"
msgstr "Nama jaringan" msgstr "Nama jaringan"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:688 #: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Autentikasi DSL" msgstr "Autentikasi DSL"
#: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:693 #: js/ui/components/networkAgent.js:336 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "Perlu kode PIN" msgstr "Perlu kode PIN"
#: js/ui/components/networkAgent.js:338 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Kode PIN diperlukan untuk perangkat data seluler" msgstr "Kode PIN diperlukan untuk perangkat data seluler"
#: js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:338
msgid "PIN" msgid "PIN"
msgstr "PIN" msgstr "PIN"
#: js/ui/components/networkAgent.js:347 js/ui/components/networkAgent.js:685 #: js/ui/components/networkAgent.js:346 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:705 #: js/ui/components/networkAgent.js:705
#, javascript-format #, javascript-format
@ -1390,24 +1378,24 @@ msgstr "%s (jarak jauh)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konsol)" msgstr "%s (konsol)"
#: js/ui/extensionDownloader.js:194 #: js/ui/extensionDownloader.js:232
msgid "Install" msgid "Install"
msgstr "Pasang" msgstr "Pasang"
#: js/ui/extensionDownloader.js:200 #: js/ui/extensionDownloader.js:238
msgid "Install Extension" msgid "Install Extension"
msgstr "Pasang Ekstensi" msgstr "Pasang Ekstensi"
#: js/ui/extensionDownloader.js:201 #: js/ui/extensionDownloader.js:239
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?" msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?"
#: js/ui/extensionSystem.js:253 #: js/ui/extensionSystem.js:252
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "Pemutakhiran Ekstensi Tersedia" msgstr "Pemutakhiran Ekstensi Tersedia"
#: js/ui/extensionSystem.js:254 #: js/ui/extensionSystem.js:253
msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed."
msgstr "Pemutakhiran ekstensi siap dipasang." msgstr "Pemutakhiran ekstensi siap dipasang."
@ -1502,7 +1490,7 @@ msgstr "Matikan"
msgid "Leave Off" msgid "Leave Off"
msgstr "Biarkan Mati" msgstr "Biarkan Mati"
#: js/ui/keyboard.js:227 #: js/ui/keyboard.js:226
msgid "Region & Language Settings" msgid "Region & Language Settings"
msgstr "Pengaturan Wilayah & Bahasa" msgstr "Pengaturan Wilayah & Bahasa"
@ -1555,11 +1543,11 @@ msgstr "Tilik Sumber"
msgid "Web Page" msgid "Web Page"
msgstr "Halaman Web" msgstr "Halaman Web"
#: js/ui/main.js:294 #: js/ui/main.js:290
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Masuk sebagai pengguna istimewa" msgstr "Masuk sebagai pengguna istimewa"
#: js/ui/main.js:295 #: js/ui/main.js:291
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@ -1567,15 +1555,15 @@ msgstr ""
"Menjalankan sesi sebagai pengguna istimewa harus dihindari untuk alasan " "Menjalankan sesi sebagai pengguna istimewa harus dihindari untuk alasan "
"keamanan. Jika memungkinkan, Anda harus masuk sebagai pengguna biasa." "keamanan. Jika memungkinkan, Anda harus masuk sebagai pengguna biasa."
#: js/ui/main.js:344 #: js/ui/main.js:340
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Kunci Layar dinonaktifkan" msgstr "Kunci Layar dinonaktifkan"
#: js/ui/main.js:345 #: js/ui/main.js:341
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "Penguncian Layar memerlukan manajer tampilan GNOME." msgstr "Penguncian Layar memerlukan manajer tampilan GNOME."
#: js/ui/messageTray.js:1440 #: js/ui/messageTray.js:1443
msgid "System Information" msgid "System Information"
msgstr "Informasi Sistem" msgstr "Informasi Sistem"
@ -1609,47 +1597,47 @@ msgstr "Batal"
msgid "Overview" msgid "Overview"
msgstr "Gambaran" msgstr "Gambaran"
#: js/ui/padOsd.js:96 #: js/ui/padOsd.js:95
msgid "New shortcut…" msgid "New shortcut…"
msgstr "Pintasan baru…" msgstr "Pintasan baru…"
#: js/ui/padOsd.js:143 #: js/ui/padOsd.js:142
msgid "Application defined" msgid "Application defined"
msgstr "Aplikasi yang didefinisikan" msgstr "Aplikasi yang didefinisikan"
#: js/ui/padOsd.js:144 #: js/ui/padOsd.js:143
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Tampilkan bantuan di layar" msgstr "Tampilkan bantuan di layar"
#: js/ui/padOsd.js:145 #: js/ui/padOsd.js:144
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Ganti monitor" msgstr "Ganti monitor"
#: js/ui/padOsd.js:146 #: js/ui/padOsd.js:145
msgid "Assign keystroke" msgid "Assign keystroke"
msgstr "Tetapkan keystroke" msgstr "Tetapkan keystroke"
#: js/ui/padOsd.js:212 #: js/ui/padOsd.js:211
msgid "Done" msgid "Done"
msgstr "Selesai" msgstr "Selesai"
#: js/ui/padOsd.js:718 #: js/ui/padOsd.js:716
msgid "Edit…" msgid "Edit…"
msgstr "Sunting…" msgstr "Sunting…"
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877 #: js/ui/padOsd.js:758 js/ui/padOsd.js:875
msgid "None" msgid "None"
msgstr "Nihil" msgstr "Nihil"
#: js/ui/padOsd.js:831 #: js/ui/padOsd.js:829
msgid "Press a button to configure" msgid "Press a button to configure"
msgstr "Tekan tombol untuk mengkonfigurasi" msgstr "Tekan tombol untuk mengkonfigurasi"
#: js/ui/padOsd.js:832 #: js/ui/padOsd.js:830
msgid "Press Esc to exit" msgid "Press Esc to exit"
msgstr "Tekan Esc untuk keluar" msgstr "Tekan Esc untuk keluar"
#: js/ui/padOsd.js:835 #: js/ui/padOsd.js:833
msgid "Press any key to exit" msgid "Press any key to exit"
msgstr "Tekan tombol apa saja untuk keluar" msgstr "Tekan tombol apa saja untuk keluar"
@ -1659,12 +1647,12 @@ msgstr "Tekan tombol apa saja untuk keluar"
msgid "Activities" msgid "Activities"
msgstr "Aktivitas" msgstr "Aktivitas"
#: js/ui/panel.js:542 #: js/ui/panel.js:556
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Sistem" msgstr "Sistem"
#: js/ui/panel.js:658 #: js/ui/panel.js:674
msgid "Top Bar" msgid "Top Bar"
msgstr "Bar Atas" msgstr "Bar Atas"
@ -1703,7 +1691,7 @@ msgstr "Tak bisa mengunci"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Kunci diblokir oleh suatu aplikasi" msgstr "Kunci diblokir oleh suatu aplikasi"
#: js/ui/screenshot.js:141 #: js/ui/screenshot.js:155
msgid "Screenshot taken" msgid "Screenshot taken"
msgstr "Cuplikan layar telah diambil" msgstr "Cuplikan layar telah diambil"
@ -2766,6 +2754,7 @@ msgstr "Diperlukan UUID, nama, dan deskripsi"
#: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46
#: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-info.c:50
#: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/command-list.c:64
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell\n" msgid "Failed to connect to GNOME Shell\n"
msgstr "Gagal terhubung ke GNOME Shell\n" msgstr "Gagal terhubung ke GNOME Shell\n"
@ -2782,7 +2771,7 @@ msgstr "Nonaktifkan ekstensi"
#: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-disable.c:119
#: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119
#: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-info.c:103
#: subprojects/extensions-tool/src/command-prefs.c:97 #: subprojects/extensions-tool/src/command-prefs.c:105
#: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-reset.c:76
#: subprojects/extensions-tool/src/command-uninstall.c:104 #: subprojects/extensions-tool/src/command-uninstall.c:104
msgid "No UUID given" msgid "No UUID given"
@ -2791,7 +2780,7 @@ msgstr "Tidak ada UUID yang diberikan"
#: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-disable.c:124
#: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124
#: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-info.c:108
#: subprojects/extensions-tool/src/command-prefs.c:102 #: subprojects/extensions-tool/src/command-prefs.c:110
#: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-reset.c:81
#: subprojects/extensions-tool/src/command-uninstall.c:109 #: subprojects/extensions-tool/src/command-uninstall.c:109
msgid "More than one UUID given" msgid "More than one UUID given"
@ -2921,7 +2910,12 @@ msgstr "Lebih dari satu direktori sumber ditentukan"
msgid "Extension “%s” doesn't have preferences\n" msgid "Extension “%s” doesn't have preferences\n"
msgstr "Ekstensi \"%s\" tidak memiliki preferensi\n" msgstr "Ekstensi \"%s\" tidak memiliki preferensi\n"
#: subprojects/extensions-tool/src/command-prefs.c:79 #: subprojects/extensions-tool/src/command-prefs.c:62
#, c-format
msgid "Failed to open prefs for extension “%s”: %s\n"
msgstr "Gagal membuka preferensi untuk ekstensi \"%s\": %s\n"
#: subprojects/extensions-tool/src/command-prefs.c:87
msgid "Opens extension preferences" msgid "Opens extension preferences"
msgstr "Buka preferensi ekstensi" msgstr "Buka preferensi ekstensi"
@ -2946,10 +2940,6 @@ msgstr "Hapus ekstensi"
msgid "Do not print error messages" msgid "Do not print error messages"
msgstr "Jangan cetak pesan kesalahan" msgstr "Jangan cetak pesan kesalahan"
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell"
msgstr "Gagal terhubung ke GNOME Shell"
#: subprojects/extensions-tool/src/main.c:244 #: subprojects/extensions-tool/src/main.c:244
msgid "Path" msgid "Path"
msgstr "Path" msgstr "Path"
@ -3080,6 +3070,19 @@ msgstr[1] "%u Masukan"
msgid "System Sounds" msgid "System Sounds"
msgstr "Suara Sistem" msgstr "Suara Sistem"
#~ msgid "Enable introspection API"
#~ msgstr "Aktifkan API introspeksi"
#~ msgid ""
#~ "Enables a D-Bus API that allows to introspect the application state of "
#~ "the shell."
#~ msgstr ""
#~ "Aktifkan API D-Bus yang memungkinkan untuk mengintrospeksi status "
#~ "aplikasi shell."
#~ msgid "Failed to connect to GNOME Shell"
#~ msgstr "Gagal terhubung ke GNOME Shell"
#~ msgid "Minimize" #~ msgid "Minimize"
#~ msgstr "Minimalkan" #~ msgstr "Minimalkan"

1080
po/kab.po

File diff suppressed because it is too large Load Diff

621
po/lv.po

File diff suppressed because it is too large Load Diff

279
po/pt.po
View File

@ -16,8 +16,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 3.14\n" "Project-Id-Version: 3.14\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2021-08-17 23:56+0000\n" "POT-Creation-Date: 2021-11-03 10:04+0000\n"
"PO-Revision-Date: 2021-08-18 12:11+0100\n" "PO-Revision-Date: 2021-11-03 11:49+0000\n"
"Last-Translator: Hugo Carvalho <hugokarvalho@hotmail.com>\n" "Last-Translator: Hugo Carvalho <hugokarvalho@hotmail.com>\n"
"Language-Team: Português <https://l10n.gnome.org/teams/pt/>\n" "Language-Team: Português <https://l10n.gnome.org/teams/pt/>\n"
"Language: pt\n" "Language: pt\n"
@ -265,23 +265,11 @@ msgstr ""
"possível, e um número enorme representará versões que ainda não existem. " "possível, e um número enorme representará versões que ainda não existem. "
"Este número enorme pode ser usado para efetivamente desativar a janela." "Este número enorme pode ser usado para efetivamente desativar a janela."
#: data/org.gnome.shell.gschema.xml.in:109 #: data/org.gnome.shell.gschema.xml.in:133
msgid "Enable introspection API"
msgstr "Ativar API de introspecção"
#: data/org.gnome.shell.gschema.xml.in:110
msgid ""
"Enables a D-Bus API that allows to introspect the application state of the "
"shell."
msgstr ""
"Ativa uma API de D-Bus que permite a introspeção do estado de aplicação da "
"\"Shell\"."
#: data/org.gnome.shell.gschema.xml.in:141
msgid "Layout of the app picker" msgid "Layout of the app picker"
msgstr "Esquema do seletor de aplicações" msgstr "Esquema do seletor de aplicações"
#: data/org.gnome.shell.gschema.xml.in:142 #: data/org.gnome.shell.gschema.xml.in:134
msgid "" msgid ""
"Layout of the app picker. Each entry in the array is a page. Pages are " "Layout of the app picker. Each entry in the array is a page. Pages are "
"stored in the order they appear in GNOME Shell. Each page contains an " "stored in the order they appear in GNOME Shell. Each page contains an "
@ -294,109 +282,109 @@ msgstr ""
"valores são armazenados como “dados”: • “posição”: a posição do ícone da " "valores são armazenados como “dados”: • “posição”: a posição do ícone da "
"aplicação na página" "aplicação na página"
#: data/org.gnome.shell.gschema.xml.in:157 #: data/org.gnome.shell.gschema.xml.in:149
msgid "Keybinding to open the application menu" msgid "Keybinding to open the application menu"
msgstr "Atalho de teclado para abrir o menu de aplicações" msgstr "Atalho de teclado para abrir o menu de aplicações"
#: data/org.gnome.shell.gschema.xml.in:158 #: data/org.gnome.shell.gschema.xml.in:150
msgid "Keybinding to open the application menu." msgid "Keybinding to open the application menu."
msgstr "Atalho de teclado para abrir o menu de aplicações." msgstr "Atalho de teclado para abrir o menu de aplicações."
#: data/org.gnome.shell.gschema.xml.in:164 #: data/org.gnome.shell.gschema.xml.in:156
#: data/org.gnome.shell.gschema.xml.in:171 #: data/org.gnome.shell.gschema.xml.in:163
msgid "Keybinding to shift between overview states" msgid "Keybinding to shift between overview states"
msgstr "Atalho de teclado para mudar de estado de visão geral" msgstr "Atalho de teclado para mudar de estado de visão geral"
#: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:157
msgid "Keybinding to shift between session, window picker and app grid" msgid "Keybinding to shift between session, window picker and app grid"
msgstr "" msgstr ""
"Atalho de teclado para mudar de sessão, seletor de janela e grelha de " "Atalho de teclado para mudar de sessão, seletor de janela e grelha de "
"aplicação" "aplicação"
#: data/org.gnome.shell.gschema.xml.in:172 #: data/org.gnome.shell.gschema.xml.in:164
msgid "Keybinding to shift between app grid, window picker and session" msgid "Keybinding to shift between app grid, window picker and session"
msgstr "" msgstr ""
"Atalho de teclado para mudar a grelha de aplicação, seletor de janela e " "Atalho de teclado para mudar a grelha de aplicação, seletor de janela e "
"sessão" "sessão"
#: data/org.gnome.shell.gschema.xml.in:178 #: data/org.gnome.shell.gschema.xml.in:170
msgid "Keybinding to open the “Show Applications” view" msgid "Keybinding to open the “Show Applications” view"
msgstr "Atalho de teclado para abrir a vista \"Mostrar aplicações\"" msgstr "Atalho de teclado para abrir a vista \"Mostrar aplicações\""
#: data/org.gnome.shell.gschema.xml.in:179 #: data/org.gnome.shell.gschema.xml.in:171
msgid "" msgid ""
"Keybinding to open the “Show Applications” view of the Activities Overview." "Keybinding to open the “Show Applications” view of the Activities Overview."
msgstr "" msgstr ""
"Atalho de teclado para abrir a vista \"Mostrar aplicações\" da Vista geral " "Atalho de teclado para abrir a vista \"Mostrar aplicações\" da Vista geral "
"de atividades." "de atividades."
#: data/org.gnome.shell.gschema.xml.in:186 #: data/org.gnome.shell.gschema.xml.in:178
msgid "Keybinding to open the overview" msgid "Keybinding to open the overview"
msgstr "Atalho de teclado para abrir a vista geral" msgstr "Atalho de teclado para abrir a vista geral"
#: data/org.gnome.shell.gschema.xml.in:187 #: data/org.gnome.shell.gschema.xml.in:179
msgid "Keybinding to open the Activities Overview." msgid "Keybinding to open the Activities Overview."
msgstr "Atalho de teclado para abrir a Vista geral de atividades." msgstr "Atalho de teclado para abrir a Vista geral de atividades."
#: data/org.gnome.shell.gschema.xml.in:193 #: data/org.gnome.shell.gschema.xml.in:185
msgid "Keybinding to toggle the visibility of the notification list" msgid "Keybinding to toggle the visibility of the notification list"
msgstr "Atalho de teclado para mostrar/ocultar a lista de notificação" msgstr "Atalho de teclado para mostrar/ocultar a lista de notificação"
#: data/org.gnome.shell.gschema.xml.in:194 #: data/org.gnome.shell.gschema.xml.in:186
msgid "Keybinding to toggle the visibility of the notification list." msgid "Keybinding to toggle the visibility of the notification list."
msgstr "" msgstr ""
"Atalho de teclado para alternar a visibilidade da lista de notificação." "Atalho de teclado para alternar a visibilidade da lista de notificação."
#: data/org.gnome.shell.gschema.xml.in:200 #: data/org.gnome.shell.gschema.xml.in:192
msgid "Keybinding to focus the active notification" msgid "Keybinding to focus the active notification"
msgstr "Atalho de teclado para focar a notificação ativa" msgstr "Atalho de teclado para focar a notificação ativa"
#: data/org.gnome.shell.gschema.xml.in:201 #: data/org.gnome.shell.gschema.xml.in:193
msgid "Keybinding to focus the active notification." msgid "Keybinding to focus the active notification."
msgstr "Atalho de teclado para focar a notificação ativa." msgstr "Atalho de teclado para focar a notificação ativa."
#: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:199
msgid "Switch to application 1" msgid "Switch to application 1"
msgstr "Mudar para a aplicação 1" msgstr "Mudar para a aplicação 1"
#: data/org.gnome.shell.gschema.xml.in:211 #: data/org.gnome.shell.gschema.xml.in:203
msgid "Switch to application 2" msgid "Switch to application 2"
msgstr "Mudar para a aplicação 2" msgstr "Mudar para a aplicação 2"
#: data/org.gnome.shell.gschema.xml.in:215 #: data/org.gnome.shell.gschema.xml.in:207
msgid "Switch to application 3" msgid "Switch to application 3"
msgstr "Mudar para a aplicação 3" msgstr "Mudar para a aplicação 3"
#: data/org.gnome.shell.gschema.xml.in:219 #: data/org.gnome.shell.gschema.xml.in:211
msgid "Switch to application 4" msgid "Switch to application 4"
msgstr "Mudar para a aplicação 4" msgstr "Mudar para a aplicação 4"
#: data/org.gnome.shell.gschema.xml.in:223 #: data/org.gnome.shell.gschema.xml.in:215
msgid "Switch to application 5" msgid "Switch to application 5"
msgstr "Mudar para a aplicação 5" msgstr "Mudar para a aplicação 5"
#: data/org.gnome.shell.gschema.xml.in:227 #: data/org.gnome.shell.gschema.xml.in:219
msgid "Switch to application 6" msgid "Switch to application 6"
msgstr "Mudar para a aplicação 6" msgstr "Mudar para a aplicação 6"
#: data/org.gnome.shell.gschema.xml.in:231 #: data/org.gnome.shell.gschema.xml.in:223
msgid "Switch to application 7" msgid "Switch to application 7"
msgstr "Mudar para a aplicação 7" msgstr "Mudar para a aplicação 7"
#: data/org.gnome.shell.gschema.xml.in:235 #: data/org.gnome.shell.gschema.xml.in:227
msgid "Switch to application 8" msgid "Switch to application 8"
msgstr "Mudar para a aplicação 8" msgstr "Mudar para a aplicação 8"
#: data/org.gnome.shell.gschema.xml.in:239 #: data/org.gnome.shell.gschema.xml.in:231
msgid "Switch to application 9" msgid "Switch to application 9"
msgstr "Mudar para a aplicação 9" msgstr "Mudar para a aplicação 9"
#: data/org.gnome.shell.gschema.xml.in:248 #: data/org.gnome.shell.gschema.xml.in:240
#: data/org.gnome.shell.gschema.xml.in:275 #: data/org.gnome.shell.gschema.xml.in:267
msgid "Limit switcher to current workspace." msgid "Limit switcher to current workspace."
msgstr "Limitar a comutação à área de trabalho atual." msgstr "Limitar a comutação à área de trabalho atual."
#: data/org.gnome.shell.gschema.xml.in:249 #: data/org.gnome.shell.gschema.xml.in:241
msgid "" msgid ""
"If true, only applications that have windows on the current workspace are " "If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included." "shown in the switcher. Otherwise, all applications are included."
@ -405,11 +393,11 @@ msgstr ""
"mostradas para troca. Senão, são incluídas todas as aplicações com janelas " "mostradas para troca. Senão, são incluídas todas as aplicações com janelas "
"abertas." "abertas."
#: data/org.gnome.shell.gschema.xml.in:266 #: data/org.gnome.shell.gschema.xml.in:258
msgid "The application icon mode." msgid "The application icon mode."
msgstr "O modo do ícone da aplicação." msgstr "O modo do ícone da aplicação."
#: data/org.gnome.shell.gschema.xml.in:267 #: data/org.gnome.shell.gschema.xml.in:259
msgid "" msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities " "Configures how the windows are shown in the switcher. Valid possibilities "
"are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-"
@ -419,7 +407,7 @@ msgstr ""
"\" (mostra uma miniatura da janela), \"apenas-ícone-aplicação\" (mostra só o " "\" (mostra uma miniatura da janela), \"apenas-ícone-aplicação\" (mostra só o "
"ícone da aplicação) ou \"ambas\"." "ícone da aplicação) ou \"ambas\"."
#: data/org.gnome.shell.gschema.xml.in:276 #: data/org.gnome.shell.gschema.xml.in:268
msgid "" msgid ""
"If true, only windows from the current workspace are shown in the switcher. " "If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included." "Otherwise, all windows are included."
@ -427,57 +415,57 @@ msgstr ""
"Se verdadeiro, só janelas da área de trabalho atual são apresentadas para " "Se verdadeiro, só janelas da área de trabalho atual são apresentadas para "
"troca. Senão, são incluídas todas as aplicações com janelas abertas." "troca. Senão, são incluídas todas as aplicações com janelas abertas."
#: data/org.gnome.shell.gschema.xml.in:286 #: data/org.gnome.shell.gschema.xml.in:278
msgid "Locations" msgid "Locations"
msgstr "Localizações" msgstr "Localizações"
#: data/org.gnome.shell.gschema.xml.in:287 #: data/org.gnome.shell.gschema.xml.in:279
msgid "The locations to show in world clocks" msgid "The locations to show in world clocks"
msgstr "As localizações a mostrar nos relógios mundiais" msgstr "As localizações a mostrar nos relógios mundiais"
#: data/org.gnome.shell.gschema.xml.in:297 #: data/org.gnome.shell.gschema.xml.in:289
msgid "Automatic location" msgid "Automatic location"
msgstr "Localização automática" msgstr "Localização automática"
#: data/org.gnome.shell.gschema.xml.in:298 #: data/org.gnome.shell.gschema.xml.in:290
msgid "Whether to fetch the current location or not" msgid "Whether to fetch the current location or not"
msgstr "Se deve ser obtida a localização atual ou não" msgstr "Se deve ser obtida a localização atual ou não"
#: data/org.gnome.shell.gschema.xml.in:305 #: data/org.gnome.shell.gschema.xml.in:297
msgid "Location" msgid "Location"
msgstr "Localização" msgstr "Localização"
#: data/org.gnome.shell.gschema.xml.in:306 #: data/org.gnome.shell.gschema.xml.in:298
msgid "The location for which to show a forecast" msgid "The location for which to show a forecast"
msgstr "A localização para a qual deve ser mostrada uma previsão" msgstr "A localização para a qual deve ser mostrada uma previsão"
#: data/org.gnome.shell.gschema.xml.in:318 #: data/org.gnome.shell.gschema.xml.in:310
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
msgstr "Anexar diálogo modal à janela principal" msgstr "Anexar diálogo modal à janela principal"
#: data/org.gnome.shell.gschema.xml.in:319 #: data/org.gnome.shell.gschema.xml.in:311
#: data/org.gnome.shell.gschema.xml.in:320
#: data/org.gnome.shell.gschema.xml.in:328 #: data/org.gnome.shell.gschema.xml.in:328
#: data/org.gnome.shell.gschema.xml.in:336 #: data/org.gnome.shell.gschema.xml.in:336
#: data/org.gnome.shell.gschema.xml.in:344 #: data/org.gnome.shell.gschema.xml.in:344
#: data/org.gnome.shell.gschema.xml.in:352
msgid "" msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell." "This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "" msgstr ""
"Esta chave ignora a chave em org.gnome.mutter ao executar a interface GNOME." "Esta chave ignora a chave em org.gnome.mutter ao executar a interface GNOME."
#: data/org.gnome.shell.gschema.xml.in:327 #: data/org.gnome.shell.gschema.xml.in:319
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Ativar prender nas margens ao largar janelas junto às margens do ecrã" msgstr "Ativar prender nas margens ao largar janelas junto às margens do ecrã"
#: data/org.gnome.shell.gschema.xml.in:335 #: data/org.gnome.shell.gschema.xml.in:327
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "As áreas de trabalho são geridas dinamicamente" msgstr "As áreas de trabalho são geridas dinamicamente"
#: data/org.gnome.shell.gschema.xml.in:343 #: data/org.gnome.shell.gschema.xml.in:335
msgid "Workspaces only on primary monitor" msgid "Workspaces only on primary monitor"
msgstr "Áreas de trabalho só no monitor principal" msgstr "Áreas de trabalho só no monitor principal"
#: data/org.gnome.shell.gschema.xml.in:351 #: data/org.gnome.shell.gschema.xml.in:343
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "" msgstr ""
"Atrasar alterações de foco no modo de rato até que o ponteiro pare de se " "Atrasar alterações de foco no modo de rato até que o ponteiro pare de se "
@ -514,18 +502,18 @@ msgid "Visit extension homepage"
msgstr "Visitar o sítio web da extensão" msgstr "Visitar o sítio web da extensão"
#: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61 #: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61
#: js/ui/components/networkAgent.js:111 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:190 #: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:228
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183 #: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:210 #: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:209
#: js/ui/components/networkAgent.js:226 js/ui/components/networkAgent.js:250 #: js/ui/components/networkAgent.js:225 js/ui/components/networkAgent.js:249
#: js/ui/components/networkAgent.js:271 js/ui/components/networkAgent.js:291 #: js/ui/components/networkAgent.js:270 js/ui/components/networkAgent.js:290
#: js/ui/components/networkAgent.js:301 js/ui/components/polkitAgent.js:275 #: js/ui/components/networkAgent.js:300 js/ui/components/polkitAgent.js:275
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Palavra-passe" msgstr "Palavra-passe"
@ -548,8 +536,8 @@ msgstr "(por ex., utilizador ou %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:246 #: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:245
#: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:287 #: js/ui/components/networkAgent.js:268 js/ui/components/networkAgent.js:286
msgid "Username" msgid "Username"
msgstr "Utilizador" msgstr "Utilizador"
@ -654,65 +642,65 @@ msgctxt "search-result"
msgid "Lock Screen Rotation" msgid "Lock Screen Rotation"
msgstr "Bloquear rotação de ecrã" msgstr "Bloquear rotação de ecrã"
#: js/misc/util.js:120 #: js/misc/util.js:121
msgid "Command not found" msgid "Command not found"
msgstr "Comando não encontrado" msgstr "Comando não encontrado"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: js/misc/util.js:156 #: js/misc/util.js:157
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Impossível analisar o comando:" msgstr "Impossível analisar o comando:"
#: js/misc/util.js:164 #: js/misc/util.js:165
#, javascript-format #, javascript-format
msgid "Execution of “%s” failed:" msgid "Execution of “%s” failed:"
msgstr "Falha ao executar “%s”:" msgstr "Falha ao executar “%s”:"
#: js/misc/util.js:181 #: js/misc/util.js:182
msgid "Just now" msgid "Just now"
msgstr "Agora mesmo" msgstr "Agora mesmo"
#: js/misc/util.js:183 #: js/misc/util.js:184
#, javascript-format #, javascript-format
msgid "%d minute ago" msgid "%d minute ago"
msgid_plural "%d minutes ago" msgid_plural "%d minutes ago"
msgstr[0] "há %d minuto atrás" msgstr[0] "há %d minuto atrás"
msgstr[1] "há %d minutos atrás" msgstr[1] "há %d minutos atrás"
#: js/misc/util.js:187 #: js/misc/util.js:188
#, javascript-format #, javascript-format
msgid "%d hour ago" msgid "%d hour ago"
msgid_plural "%d hours ago" msgid_plural "%d hours ago"
msgstr[0] "há %d hora atrás" msgstr[0] "há %d hora atrás"
msgstr[1] "há %d horas atrás" msgstr[1] "há %d horas atrás"
#: js/misc/util.js:191 js/ui/dateMenu.js:162 #: js/misc/util.js:192 js/ui/dateMenu.js:162
msgid "Yesterday" msgid "Yesterday"
msgstr "Ontem" msgstr "Ontem"
#: js/misc/util.js:193 #: js/misc/util.js:194
#, javascript-format #, javascript-format
msgid "%d day ago" msgid "%d day ago"
msgid_plural "%d days ago" msgid_plural "%d days ago"
msgstr[0] "há %d dia atrás" msgstr[0] "há %d dia atrás"
msgstr[1] "há %d dias atrás" msgstr[1] "há %d dias atrás"
#: js/misc/util.js:197 #: js/misc/util.js:198
#, javascript-format #, javascript-format
msgid "%d week ago" msgid "%d week ago"
msgid_plural "%d weeks ago" msgid_plural "%d weeks ago"
msgstr[0] "há %d semana atrás" msgstr[0] "há %d semana atrás"
msgstr[1] "há %d semanas atrás" msgstr[1] "há %d semanas atrás"
#: js/misc/util.js:201 #: js/misc/util.js:202
#, javascript-format #, javascript-format
msgid "%d month ago" msgid "%d month ago"
msgid_plural "%d months ago" msgid_plural "%d months ago"
msgstr[0] "há %d mês atrás" msgstr[0] "há %d mês atrás"
msgstr[1] "há %d meses atrás" msgstr[1] "há %d meses atrás"
#: js/misc/util.js:204 #: js/misc/util.js:205
#, javascript-format #, javascript-format
msgid "%d year ago" msgid "%d year ago"
msgid_plural "%d years ago" msgid_plural "%d years ago"
@ -720,20 +708,20 @@ msgstr[0] "há %d ano atrás"
msgstr[1] "há %d anos atrás" msgstr[1] "há %d anos atrás"
#. Translators: Time in 24h format #. Translators: Time in 24h format
#: js/misc/util.js:237 #: js/misc/util.js:238
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" #. time string in 24h format. i.e. "Yesterday, 14:30"
#: js/misc/util.js:243 #: js/misc/util.js:244
#, no-c-format #, no-c-format
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "Ontem às %H%M" msgstr "Ontem às %H%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" #. string in 24h format. i.e. "Monday, 14:30"
#: js/misc/util.js:249 #: js/misc/util.js:250
#, no-c-format #, no-c-format
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %H%M" msgstr "%A, %H%M"
@ -741,7 +729,7 @@ msgstr "%A, %H%M"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" #. i.e. "May 25, 14:30"
#: js/misc/util.js:255 #: js/misc/util.js:256
#, no-c-format #, no-c-format
msgid "%B %-d, %H%M" msgid "%B %-d, %H%M"
msgstr "%d de %B, %H%M" msgstr "%d de %B, %H%M"
@ -749,7 +737,7 @@ msgstr "%d de %B, %H%M"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" #. i.e. "May 25 2012, 14:30"
#: js/misc/util.js:261 #: js/misc/util.js:262
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %H%M" msgid "%B %-d %Y, %H%M"
msgstr "%d de %B de %Y, %H%M" msgstr "%d de %B de %Y, %H%M"
@ -757,20 +745,20 @@ msgstr "%d de %B de %Y, %H%M"
#. Show only the time if date is on today #. Show only the time if date is on today
#. eslint-disable-line no-lonely-if #. eslint-disable-line no-lonely-if
#. Translators: Time in 12h format #. Translators: Time in 12h format
#: js/misc/util.js:266 #: js/misc/util.js:267
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%l%M %p" msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" #. time string in 12h format. i.e. "Yesterday, 2:30 pm"
#: js/misc/util.js:272 #: js/misc/util.js:273
#, no-c-format #, no-c-format
msgid "Yesterday, %l%M %p" msgid "Yesterday, %l%M %p"
msgstr "Ontem às %l%M %p" msgstr "Ontem às %l%M %p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" #. string in 12h format. i.e. "Monday, 2:30 pm"
#: js/misc/util.js:278 #: js/misc/util.js:279
#, no-c-format #, no-c-format
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %l%M %p" msgstr "%A, %l%M %p"
@ -778,7 +766,7 @@ msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" #. i.e. "May 25, 2:30 pm"
#: js/misc/util.js:284 #: js/misc/util.js:285
#, no-c-format #, no-c-format
msgid "%B %-d, %l%M %p" msgid "%B %-d, %l%M %p"
msgstr "%d de %B, %l%M %p" msgstr "%d de %B, %l%M %p"
@ -786,17 +774,17 @@ msgstr "%d de %B, %l%M %p"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format. #. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm" #. i.e. "May 25 2012, 2:30 pm"
#: js/misc/util.js:290 #: js/misc/util.js:291
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %l%M %p" msgid "%B %-d %Y, %l%M %p"
msgstr "%d de %B de %Y, %l%M %p" msgstr "%d de %B de %Y, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login window #. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:42 #: js/portalHelper/main.js:49
msgid "Hotspot Login" msgid "Hotspot Login"
msgstr "Acesso por ponto wi-fi público" msgstr "Acesso por ponto wi-fi público"
#: js/portalHelper/main.js:88 #: js/portalHelper/main.js:95
msgid "" msgid ""
"Your connection to this hotspot login is not secure. Passwords or other " "Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby." "information you enter on this page can be viewed by people nearby."
@ -1041,39 +1029,39 @@ msgstr "A versão do udisks instalada não suporta a configuração do PIM"
msgid "Open with %s" msgid "Open with %s"
msgstr "Abrir com %s" msgstr "Abrir com %s"
#: js/ui/components/networkAgent.js:93 #: js/ui/components/networkAgent.js:92
msgid "" msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router." "Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "" msgstr ""
"Alternativamente, pode ligar premindo o botão “WPS” no encaminhador (router)." "Alternativamente, pode ligar premindo o botão “WPS” no encaminhador (router)."
#: js/ui/components/networkAgent.js:105 js/ui/status/network.js:258 #: js/ui/components/networkAgent.js:104 js/ui/status/network.js:258
#: js/ui/status/network.js:349 js/ui/status/network.js:981 #: js/ui/status/network.js:349 js/ui/status/network.js:981
msgid "Connect" msgid "Connect"
msgstr "Ligar" msgstr "Ligar"
#: js/ui/components/networkAgent.js:216 #: js/ui/components/networkAgent.js:215
msgid "Key" msgid "Key"
msgstr "Chave" msgstr "Chave"
#: js/ui/components/networkAgent.js:254 js/ui/components/networkAgent.js:277 #: js/ui/components/networkAgent.js:253 js/ui/components/networkAgent.js:276
msgid "Private key password" msgid "Private key password"
msgstr "Palavra-passe da chave privada" msgstr "Palavra-passe da chave privada"
#: js/ui/components/networkAgent.js:275 #: js/ui/components/networkAgent.js:274
msgid "Identity" msgid "Identity"
msgstr "Identidade" msgstr "Identidade"
#: js/ui/components/networkAgent.js:289 #: js/ui/components/networkAgent.js:288
msgid "Service" msgid "Service"
msgstr "Serviço" msgstr "Serviço"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:346 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:345
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "Autenticação necessária" msgstr "Autenticação necessária"
#: js/ui/components/networkAgent.js:319 js/ui/components/networkAgent.js:680 #: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:680
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@ -1082,31 +1070,31 @@ msgstr ""
"São necessárias palavras-passe ou chaves de encriptação para aceder à rede " "São necessárias palavras-passe ou chaves de encriptação para aceder à rede "
"sem fios “%s”." "sem fios “%s”."
#: js/ui/components/networkAgent.js:323 js/ui/components/networkAgent.js:684 #: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:684
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Autenticação para 802.1X por cabo" msgstr "Autenticação para 802.1X por cabo"
#: js/ui/components/networkAgent.js:325 #: js/ui/components/networkAgent.js:324
msgid "Network name" msgid "Network name"
msgstr "Nome da rede" msgstr "Nome da rede"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:688 #: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Autenticação DSL" msgstr "Autenticação DSL"
#: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:693 #: js/ui/components/networkAgent.js:336 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "Necessário código PIN" msgstr "Necessário código PIN"
#: js/ui/components/networkAgent.js:338 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "É necessário o código PIN para o dispositivo de banda larga móvel" msgstr "É necessário o código PIN para o dispositivo de banda larga móvel"
#: js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:338
msgid "PIN" msgid "PIN"
msgstr "PIN" msgstr "PIN"
#: js/ui/components/networkAgent.js:347 js/ui/components/networkAgent.js:685 #: js/ui/components/networkAgent.js:346 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:705 #: js/ui/components/networkAgent.js:705
#, javascript-format #, javascript-format
@ -1397,24 +1385,24 @@ msgstr "%s (remoto)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (consola)" msgstr "%s (consola)"
#: js/ui/extensionDownloader.js:194 #: js/ui/extensionDownloader.js:232
msgid "Install" msgid "Install"
msgstr "Instalar" msgstr "Instalar"
#: js/ui/extensionDownloader.js:200 #: js/ui/extensionDownloader.js:238
msgid "Install Extension" msgid "Install Extension"
msgstr "Instalar extensão" msgstr "Instalar extensão"
#: js/ui/extensionDownloader.js:201 #: js/ui/extensionDownloader.js:239
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Transferir e instalar \"%s\" a partir de extensions.gnome.org?" msgstr "Transferir e instalar \"%s\" a partir de extensions.gnome.org?"
#: js/ui/extensionSystem.js:253 #: js/ui/extensionSystem.js:252
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "Há atualizações de extensões disponíveis" msgstr "Há atualizações de extensões disponíveis"
#: js/ui/extensionSystem.js:254 #: js/ui/extensionSystem.js:253
msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed."
msgstr "As atualizações de extensões estão prontas para serem instaladas." msgstr "As atualizações de extensões estão prontas para serem instaladas."
@ -1510,7 +1498,7 @@ msgstr "Desligar"
msgid "Leave Off" msgid "Leave Off"
msgstr "Deixar desativado" msgstr "Deixar desativado"
#: js/ui/keyboard.js:227 #: js/ui/keyboard.js:226
msgid "Region & Language Settings" msgid "Region & Language Settings"
msgstr "Definições de Região e Idioma" msgstr "Definições de Região e Idioma"
@ -1563,11 +1551,11 @@ msgstr "Ver fonte"
msgid "Web Page" msgid "Web Page"
msgstr "Página Web" msgstr "Página Web"
#: js/ui/main.js:294 #: js/ui/main.js:290
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Em sessão como utilizador privilegiado" msgstr "Em sessão como utilizador privilegiado"
#: js/ui/main.js:295 #: js/ui/main.js:291
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@ -1575,15 +1563,15 @@ msgstr ""
"Executar uma sessão como utilizador privilegiado deve ser evitado por " "Executar uma sessão como utilizador privilegiado deve ser evitado por "
"motivos de segurança. Se possível, aceder como utilizador normal." "motivos de segurança. Se possível, aceder como utilizador normal."
#: js/ui/main.js:344 #: js/ui/main.js:340
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Bloqueio de ecrã desligado" msgstr "Bloqueio de ecrã desligado"
#: js/ui/main.js:345 #: js/ui/main.js:341
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "O bloqueio de ecrã requer o gestor de exibição do GNOME." msgstr "O bloqueio de ecrã requer o gestor de exibição do GNOME."
#: js/ui/messageTray.js:1440 #: js/ui/messageTray.js:1443
msgid "System Information" msgid "System Information"
msgstr "Informação do sistema" msgstr "Informação do sistema"
@ -1617,47 +1605,47 @@ msgstr "Desfazer"
msgid "Overview" msgid "Overview"
msgstr "Visão geral" msgstr "Visão geral"
#: js/ui/padOsd.js:96 #: js/ui/padOsd.js:95
msgid "New shortcut…" msgid "New shortcut…"
msgstr "Novo atalho…" msgstr "Novo atalho…"
#: js/ui/padOsd.js:143 #: js/ui/padOsd.js:142
msgid "Application defined" msgid "Application defined"
msgstr "Aplicação definida" msgstr "Aplicação definida"
#: js/ui/padOsd.js:144 #: js/ui/padOsd.js:143
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Mostrar ajuda no ecrã" msgstr "Mostrar ajuda no ecrã"
#: js/ui/padOsd.js:145 #: js/ui/padOsd.js:144
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Mudar de monitor" msgstr "Mudar de monitor"
#: js/ui/padOsd.js:146 #: js/ui/padOsd.js:145
msgid "Assign keystroke" msgid "Assign keystroke"
msgstr "Atribuir atalho" msgstr "Atribuir atalho"
#: js/ui/padOsd.js:212 #: js/ui/padOsd.js:211
msgid "Done" msgid "Done"
msgstr "Concluído" msgstr "Concluído"
#: js/ui/padOsd.js:718 #: js/ui/padOsd.js:716
msgid "Edit…" msgid "Edit…"
msgstr "Editar…" msgstr "Editar…"
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877 #: js/ui/padOsd.js:758 js/ui/padOsd.js:875
msgid "None" msgid "None"
msgstr "Nenhum" msgstr "Nenhum"
#: js/ui/padOsd.js:831 #: js/ui/padOsd.js:829
msgid "Press a button to configure" msgid "Press a button to configure"
msgstr "Premir um botão para configurar" msgstr "Premir um botão para configurar"
#: js/ui/padOsd.js:832 #: js/ui/padOsd.js:830
msgid "Press Esc to exit" msgid "Press Esc to exit"
msgstr "Premir Esc para sair" msgstr "Premir Esc para sair"
#: js/ui/padOsd.js:835 #: js/ui/padOsd.js:833
msgid "Press any key to exit" msgid "Press any key to exit"
msgstr "Premir qualquer tecla para sair" msgstr "Premir qualquer tecla para sair"
@ -1667,12 +1655,12 @@ msgstr "Premir qualquer tecla para sair"
msgid "Activities" msgid "Activities"
msgstr "Atividades" msgstr "Atividades"
#: js/ui/panel.js:542 #: js/ui/panel.js:556
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Sistema" msgstr "Sistema"
#: js/ui/panel.js:658 #: js/ui/panel.js:674
msgid "Top Bar" msgid "Top Bar"
msgstr "Barra superior" msgstr "Barra superior"
@ -1711,7 +1699,7 @@ msgstr "Impossível bloquear"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Uma aplicação impediu o bloqueio" msgstr "Uma aplicação impediu o bloqueio"
#: js/ui/screenshot.js:141 #: js/ui/screenshot.js:155
msgid "Screenshot taken" msgid "Screenshot taken"
msgstr "Captura de ecrã tirada" msgstr "Captura de ecrã tirada"
@ -2779,6 +2767,7 @@ msgstr "São necessários o UUID, o nome e a descrição"
#: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46
#: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-info.c:50
#: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/command-list.c:64
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell\n" msgid "Failed to connect to GNOME Shell\n"
msgstr "Ligar à Interface GNOME falhou\n" msgstr "Ligar à Interface GNOME falhou\n"
@ -2795,7 +2784,7 @@ msgstr "Desativar uma extensão"
#: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-disable.c:119
#: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119
#: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-info.c:103
#: subprojects/extensions-tool/src/command-prefs.c:97 #: subprojects/extensions-tool/src/command-prefs.c:105
#: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-reset.c:76
#: subprojects/extensions-tool/src/command-uninstall.c:104 #: subprojects/extensions-tool/src/command-uninstall.c:104
msgid "No UUID given" msgid "No UUID given"
@ -2804,7 +2793,7 @@ msgstr "Nenhum UUID fornecido"
#: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-disable.c:124
#: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124
#: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-info.c:108
#: subprojects/extensions-tool/src/command-prefs.c:102 #: subprojects/extensions-tool/src/command-prefs.c:110
#: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-reset.c:81
#: subprojects/extensions-tool/src/command-uninstall.c:109 #: subprojects/extensions-tool/src/command-uninstall.c:109
msgid "More than one UUID given" msgid "More than one UUID given"
@ -2930,14 +2919,19 @@ msgstr "Criar um pacote de extensões"
#: subprojects/extensions-tool/src/command-pack.c:501 #: subprojects/extensions-tool/src/command-pack.c:501
msgid "More than one source directory specified" msgid "More than one source directory specified"
msgstr "Especificado mais do que um diretório origem" msgstr "Mais do que um diretório de origem especificado"
#: subprojects/extensions-tool/src/command-prefs.c:47 #: subprojects/extensions-tool/src/command-prefs.c:47
#, c-format #, c-format
msgid "Extension “%s” doesn't have preferences\n" msgid "Extension “%s” doesn't have preferences\n"
msgstr "A extensão “%s” não tem preferências\n" msgstr "A extensão “%s” não tem preferências\n"
#: subprojects/extensions-tool/src/command-prefs.c:79 #: subprojects/extensions-tool/src/command-prefs.c:62
#, c-format
msgid "Failed to open prefs for extension “%s”: %s\n"
msgstr "Falha ao abrir prefs para extensão \"%s\": %s\n"
#: subprojects/extensions-tool/src/command-prefs.c:87
msgid "Opens extension preferences" msgid "Opens extension preferences"
msgstr "Abre as preferências da extensão" msgstr "Abre as preferências da extensão"
@ -2962,10 +2956,6 @@ msgstr "Desinstalar uma extensão"
msgid "Do not print error messages" msgid "Do not print error messages"
msgstr "Não mostrar mensagens de erro" msgstr "Não mostrar mensagens de erro"
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell"
msgstr "Ligar à Interface GNOME falhou"
#: subprojects/extensions-tool/src/main.c:244 #: subprojects/extensions-tool/src/main.c:244
msgid "Path" msgid "Path"
msgstr "Caminho" msgstr "Caminho"
@ -3094,7 +3084,20 @@ msgstr[1] "%u entradas"
#: subprojects/gvc/gvc-mixer-control.c:2867 #: subprojects/gvc/gvc-mixer-control.c:2867
msgid "System Sounds" msgid "System Sounds"
msgstr "Sons de sistema" msgstr "Sons do sistema"
#~ msgid "Enable introspection API"
#~ msgstr "Ativar API de introspecção"
#~ msgid ""
#~ "Enables a D-Bus API that allows to introspect the application state of "
#~ "the shell."
#~ msgstr ""
#~ "Ativa uma API de D-Bus que permite a introspeção do estado de aplicação "
#~ "da \"Shell\"."
#~ msgid "Failed to connect to GNOME Shell"
#~ msgstr "Ligar à Interface GNOME falhou"
#~ msgid "Minimize" #~ msgid "Minimize"
#~ msgstr "Minimizar" #~ msgstr "Minimizar"

View File

@ -24,16 +24,16 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2021-08-17 23:56+0000\n" "POT-Creation-Date: 2021-11-02 21:05+0000\n"
"PO-Revision-Date: 2021-08-18 10:26-0300\n" "PO-Revision-Date: 2021-11-02 22:18-0300\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n" "Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n" "Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
"Language: pt_BR\n" "Language: pt_BR\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Gtranslator 40.0\n" "X-Generator: Poedit 3.0\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
#: data/50-gnome-shell-launchers.xml:6 #: data/50-gnome-shell-launchers.xml:6
@ -274,23 +274,11 @@ msgstr ""
"existem. Este grande número pode ser usado para desativar efetivamente o " "existem. Este grande número pode ser usado para desativar efetivamente o "
"diálogo." "diálogo."
#: data/org.gnome.shell.gschema.xml.in:109 #: data/org.gnome.shell.gschema.xml.in:133
msgid "Enable introspection API"
msgstr "Habilitar API de introspecção"
#: data/org.gnome.shell.gschema.xml.in:110
msgid ""
"Enables a D-Bus API that allows to introspect the application state of the "
"shell."
msgstr ""
"Habilita uma API de D-Bus que permite introspectar o estado do aplicativo do "
"shell."
#: data/org.gnome.shell.gschema.xml.in:141
msgid "Layout of the app picker" msgid "Layout of the app picker"
msgstr "Layout do seletor de aplicativo" msgstr "Layout do seletor de aplicativo"
#: data/org.gnome.shell.gschema.xml.in:142 #: data/org.gnome.shell.gschema.xml.in:134
msgid "" msgid ""
"Layout of the app picker. Each entry in the array is a page. Pages are " "Layout of the app picker. Each entry in the array is a page. Pages are "
"stored in the order they appear in GNOME Shell. Each page contains an " "stored in the order they appear in GNOME Shell. Each page contains an "
@ -303,109 +291,109 @@ msgstr ""
"são armazenados como “dados”: • “posição”: a posição do ícone do aplicativo " "são armazenados como “dados”: • “posição”: a posição do ícone do aplicativo "
"na página" "na página"
#: data/org.gnome.shell.gschema.xml.in:157 #: data/org.gnome.shell.gschema.xml.in:149
msgid "Keybinding to open the application menu" msgid "Keybinding to open the application menu"
msgstr "Atalho de teclado para abrir um menu de aplicativo" msgstr "Atalho de teclado para abrir um menu de aplicativo"
#: data/org.gnome.shell.gschema.xml.in:158 #: data/org.gnome.shell.gschema.xml.in:150
msgid "Keybinding to open the application menu." msgid "Keybinding to open the application menu."
msgstr "Atalho de teclado para abrir um menu de aplicativo." msgstr "Atalho de teclado para abrir um menu de aplicativo."
#: data/org.gnome.shell.gschema.xml.in:164 #: data/org.gnome.shell.gschema.xml.in:156
#: data/org.gnome.shell.gschema.xml.in:171 #: data/org.gnome.shell.gschema.xml.in:163
msgid "Keybinding to shift between overview states" msgid "Keybinding to shift between overview states"
msgstr "Atalho de teclado para alternar entre estados de panorama" msgstr "Atalho de teclado para alternar entre estados de panorama"
#: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:157
msgid "Keybinding to shift between session, window picker and app grid" msgid "Keybinding to shift between session, window picker and app grid"
msgstr "" msgstr ""
"Atalho de teclado para alternar entre sessão, seletor de janelas e a grade " "Atalho de teclado para alternar entre sessão, seletor de janelas e a grade "
"de aplicativos" "de aplicativos"
#: data/org.gnome.shell.gschema.xml.in:172 #: data/org.gnome.shell.gschema.xml.in:164
msgid "Keybinding to shift between app grid, window picker and session" msgid "Keybinding to shift between app grid, window picker and session"
msgstr "" msgstr ""
"Atalho de teclado para alternar entre grade de aplicativos, seletor de " "Atalho de teclado para alternar entre grade de aplicativos, seletor de "
"janelas e a sessão" "janelas e a sessão"
#: data/org.gnome.shell.gschema.xml.in:178 #: data/org.gnome.shell.gschema.xml.in:170
msgid "Keybinding to open the “Show Applications” view" msgid "Keybinding to open the “Show Applications” view"
msgstr "Atalho de teclado para abrir a visualização “Mostrar aplicativos”" msgstr "Atalho de teclado para abrir a visualização “Mostrar aplicativos”"
#: data/org.gnome.shell.gschema.xml.in:179 #: data/org.gnome.shell.gschema.xml.in:171
msgid "" msgid ""
"Keybinding to open the “Show Applications” view of the Activities Overview." "Keybinding to open the “Show Applications” view of the Activities Overview."
msgstr "" msgstr ""
"Atalho de teclado para abrir a visualização “Mostrar aplicativos” do " "Atalho de teclado para abrir a visualização “Mostrar aplicativos” do "
"panorama de atividades." "panorama de atividades."
#: data/org.gnome.shell.gschema.xml.in:186 #: data/org.gnome.shell.gschema.xml.in:178
msgid "Keybinding to open the overview" msgid "Keybinding to open the overview"
msgstr "Atalho de teclado para abrir o panorama" msgstr "Atalho de teclado para abrir o panorama"
#: data/org.gnome.shell.gschema.xml.in:187 #: data/org.gnome.shell.gschema.xml.in:179
msgid "Keybinding to open the Activities Overview." msgid "Keybinding to open the Activities Overview."
msgstr "Atalho de teclado para abrir o panorama de atividades." msgstr "Atalho de teclado para abrir o panorama de atividades."
#: data/org.gnome.shell.gschema.xml.in:193 #: data/org.gnome.shell.gschema.xml.in:185
msgid "Keybinding to toggle the visibility of the notification list" msgid "Keybinding to toggle the visibility of the notification list"
msgstr "Atalho de teclado para alternar a visibilidade da lista de notificação" msgstr "Atalho de teclado para alternar a visibilidade da lista de notificação"
#: data/org.gnome.shell.gschema.xml.in:194 #: data/org.gnome.shell.gschema.xml.in:186
msgid "Keybinding to toggle the visibility of the notification list." msgid "Keybinding to toggle the visibility of the notification list."
msgstr "" msgstr ""
"Atalho de teclado para alternar a visibilidade da lista de notificação." "Atalho de teclado para alternar a visibilidade da lista de notificação."
#: data/org.gnome.shell.gschema.xml.in:200 #: data/org.gnome.shell.gschema.xml.in:192
msgid "Keybinding to focus the active notification" msgid "Keybinding to focus the active notification"
msgstr "Atalho de teclado para ativar a notificação ativa" msgstr "Atalho de teclado para ativar a notificação ativa"
#: data/org.gnome.shell.gschema.xml.in:201 #: data/org.gnome.shell.gschema.xml.in:193
msgid "Keybinding to focus the active notification." msgid "Keybinding to focus the active notification."
msgstr "Atalho de teclado para ativar a notificação ativa." msgstr "Atalho de teclado para ativar a notificação ativa."
#: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:199
msgid "Switch to application 1" msgid "Switch to application 1"
msgstr "Alternar para o aplicativo 1" msgstr "Alternar para o aplicativo 1"
#: data/org.gnome.shell.gschema.xml.in:211 #: data/org.gnome.shell.gschema.xml.in:203
msgid "Switch to application 2" msgid "Switch to application 2"
msgstr "Alternar para o aplicativo 2" msgstr "Alternar para o aplicativo 2"
#: data/org.gnome.shell.gschema.xml.in:215 #: data/org.gnome.shell.gschema.xml.in:207
msgid "Switch to application 3" msgid "Switch to application 3"
msgstr "Alternar para o aplicativo 3" msgstr "Alternar para o aplicativo 3"
#: data/org.gnome.shell.gschema.xml.in:219 #: data/org.gnome.shell.gschema.xml.in:211
msgid "Switch to application 4" msgid "Switch to application 4"
msgstr "Alternar para o aplicativo 4" msgstr "Alternar para o aplicativo 4"
#: data/org.gnome.shell.gschema.xml.in:223 #: data/org.gnome.shell.gschema.xml.in:215
msgid "Switch to application 5" msgid "Switch to application 5"
msgstr "Alternar para o aplicativo 5" msgstr "Alternar para o aplicativo 5"
#: data/org.gnome.shell.gschema.xml.in:227 #: data/org.gnome.shell.gschema.xml.in:219
msgid "Switch to application 6" msgid "Switch to application 6"
msgstr "Alternar para o aplicativo 6" msgstr "Alternar para o aplicativo 6"
#: data/org.gnome.shell.gschema.xml.in:231 #: data/org.gnome.shell.gschema.xml.in:223
msgid "Switch to application 7" msgid "Switch to application 7"
msgstr "Alternar para o aplicativo 7" msgstr "Alternar para o aplicativo 7"
#: data/org.gnome.shell.gschema.xml.in:235 #: data/org.gnome.shell.gschema.xml.in:227
msgid "Switch to application 8" msgid "Switch to application 8"
msgstr "Alternar para o aplicativo 8" msgstr "Alternar para o aplicativo 8"
#: data/org.gnome.shell.gschema.xml.in:239 #: data/org.gnome.shell.gschema.xml.in:231
msgid "Switch to application 9" msgid "Switch to application 9"
msgstr "Alternar para o aplicativo 9" msgstr "Alternar para o aplicativo 9"
#: data/org.gnome.shell.gschema.xml.in:248 #: data/org.gnome.shell.gschema.xml.in:240
#: data/org.gnome.shell.gschema.xml.in:275 #: data/org.gnome.shell.gschema.xml.in:267
msgid "Limit switcher to current workspace." msgid "Limit switcher to current workspace."
msgstr "Limitar o alternador ao espaço de trabalho atual." msgstr "Limitar o alternador ao espaço de trabalho atual."
#: data/org.gnome.shell.gschema.xml.in:249 #: data/org.gnome.shell.gschema.xml.in:241
msgid "" msgid ""
"If true, only applications that have windows on the current workspace are " "If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included." "shown in the switcher. Otherwise, all applications are included."
@ -414,11 +402,11 @@ msgstr ""
"janelas no espaço de trabalho atual. Caso contrário, todos os aplicativos " "janelas no espaço de trabalho atual. Caso contrário, todos os aplicativos "
"serão incluídos." "serão incluídos."
#: data/org.gnome.shell.gschema.xml.in:266 #: data/org.gnome.shell.gschema.xml.in:258
msgid "The application icon mode." msgid "The application icon mode."
msgstr "O modo ícone do aplicativo." msgstr "O modo ícone do aplicativo."
#: data/org.gnome.shell.gschema.xml.in:267 #: data/org.gnome.shell.gschema.xml.in:259
msgid "" msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities " "Configures how the windows are shown in the switcher. Valid possibilities "
"are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-"
@ -428,7 +416,7 @@ msgstr ""
"válidas são “thumbnail-only” (mostra uma miniatura da janela), “app-icon-" "válidas são “thumbnail-only” (mostra uma miniatura da janela), “app-icon-"
"only” (mostra apenas o ícone do aplicativo) ou “both”." "only” (mostra apenas o ícone do aplicativo) ou “both”."
#: data/org.gnome.shell.gschema.xml.in:276 #: data/org.gnome.shell.gschema.xml.in:268
msgid "" msgid ""
"If true, only windows from the current workspace are shown in the switcher. " "If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included." "Otherwise, all windows are included."
@ -436,58 +424,58 @@ msgstr ""
"Se verdadeiro, o alternador mostrará somente as janelas do espaço de " "Se verdadeiro, o alternador mostrará somente as janelas do espaço de "
"trabalho atual. Caso contrário, todos as janelas serão incluídas." "trabalho atual. Caso contrário, todos as janelas serão incluídas."
#: data/org.gnome.shell.gschema.xml.in:286 #: data/org.gnome.shell.gschema.xml.in:278
msgid "Locations" msgid "Locations"
msgstr "Localizações" msgstr "Localizações"
#: data/org.gnome.shell.gschema.xml.in:287 #: data/org.gnome.shell.gschema.xml.in:279
msgid "The locations to show in world clocks" msgid "The locations to show in world clocks"
msgstr "As localizações para mostrar nos relógios mundiais" msgstr "As localizações para mostrar nos relógios mundiais"
#: data/org.gnome.shell.gschema.xml.in:297 #: data/org.gnome.shell.gschema.xml.in:289
msgid "Automatic location" msgid "Automatic location"
msgstr "Localização automática" msgstr "Localização automática"
#: data/org.gnome.shell.gschema.xml.in:298 #: data/org.gnome.shell.gschema.xml.in:290
msgid "Whether to fetch the current location or not" msgid "Whether to fetch the current location or not"
msgstr "Se deve-se obter a localização atual ou não" msgstr "Se deve-se obter a localização atual ou não"
#: data/org.gnome.shell.gschema.xml.in:305 #: data/org.gnome.shell.gschema.xml.in:297
msgid "Location" msgid "Location"
msgstr "Localização" msgstr "Localização"
#: data/org.gnome.shell.gschema.xml.in:306 #: data/org.gnome.shell.gschema.xml.in:298
msgid "The location for which to show a forecast" msgid "The location for which to show a forecast"
msgstr "A localização para a qual deve-se mostrar uma previsão do tempo" msgstr "A localização para a qual deve-se mostrar uma previsão do tempo"
#: data/org.gnome.shell.gschema.xml.in:318 #: data/org.gnome.shell.gschema.xml.in:310
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
msgstr "Anexar diálogo modal à janela pai" msgstr "Anexar diálogo modal à janela pai"
#: data/org.gnome.shell.gschema.xml.in:319 #: data/org.gnome.shell.gschema.xml.in:311
#: data/org.gnome.shell.gschema.xml.in:320
#: data/org.gnome.shell.gschema.xml.in:328 #: data/org.gnome.shell.gschema.xml.in:328
#: data/org.gnome.shell.gschema.xml.in:336 #: data/org.gnome.shell.gschema.xml.in:336
#: data/org.gnome.shell.gschema.xml.in:344 #: data/org.gnome.shell.gschema.xml.in:344
#: data/org.gnome.shell.gschema.xml.in:352
msgid "" msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell." "This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "" msgstr ""
"Esta chave sobrescreve a chave em org.gnome.mutter ao executar o GNOME Shell." "Esta chave sobrescreve a chave em org.gnome.mutter ao executar o GNOME Shell."
#: data/org.gnome.shell.gschema.xml.in:327 #: data/org.gnome.shell.gschema.xml.in:319
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "" msgstr ""
"Habilitar contorno ladrilhado ao arrastar janelas sobre as bordas da tela" "Habilitar contorno ladrilhado ao arrastar janelas sobre as bordas da tela"
#: data/org.gnome.shell.gschema.xml.in:335 #: data/org.gnome.shell.gschema.xml.in:327
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "Espaços de trabalho são gerenciados dinamicamente" msgstr "Espaços de trabalho são gerenciados dinamicamente"
#: data/org.gnome.shell.gschema.xml.in:343 #: data/org.gnome.shell.gschema.xml.in:335
msgid "Workspaces only on primary monitor" msgid "Workspaces only on primary monitor"
msgstr "Espaços de trabalho apenas no monitor primário" msgstr "Espaços de trabalho apenas no monitor primário"
#: data/org.gnome.shell.gschema.xml.in:351 #: data/org.gnome.shell.gschema.xml.in:343
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Atrasar foco altera o modo do mouse até o ponteiro parar de mover" msgstr "Atrasar foco altera o modo do mouse até o ponteiro parar de mover"
@ -523,18 +511,18 @@ msgid "Visit extension homepage"
msgstr "Visita a página web da extensão" msgstr "Visita a página web da extensão"
#: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61 #: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61
#: js/ui/components/networkAgent.js:111 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:190 #: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:228
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183 #: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:210 #: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:209
#: js/ui/components/networkAgent.js:226 js/ui/components/networkAgent.js:250 #: js/ui/components/networkAgent.js:225 js/ui/components/networkAgent.js:249
#: js/ui/components/networkAgent.js:271 js/ui/components/networkAgent.js:291 #: js/ui/components/networkAgent.js:270 js/ui/components/networkAgent.js:290
#: js/ui/components/networkAgent.js:301 js/ui/components/polkitAgent.js:275 #: js/ui/components/networkAgent.js:300 js/ui/components/polkitAgent.js:275
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Senha" msgstr "Senha"
@ -557,8 +545,8 @@ msgstr "(ex.: usuário ou %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:246 #: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:245
#: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:287 #: js/ui/components/networkAgent.js:268 js/ui/components/networkAgent.js:286
msgid "Username" msgid "Username"
msgstr "Nome de usuário" msgstr "Nome de usuário"
@ -663,65 +651,65 @@ msgctxt "search-result"
msgid "Lock Screen Rotation" msgid "Lock Screen Rotation"
msgstr "Bloquear rotação de tela" msgstr "Bloquear rotação de tela"
#: js/misc/util.js:120 #: js/misc/util.js:121
msgid "Command not found" msgid "Command not found"
msgstr "Comando não encontrado" msgstr "Comando não encontrado"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: js/misc/util.js:156 #: js/misc/util.js:157
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Não foi possível analisar comando:" msgstr "Não foi possível analisar comando:"
#: js/misc/util.js:164 #: js/misc/util.js:165
#, javascript-format #, javascript-format
msgid "Execution of “%s” failed:" msgid "Execution of “%s” failed:"
msgstr "A execução de “%s” falhou:" msgstr "A execução de “%s” falhou:"
#: js/misc/util.js:181 #: js/misc/util.js:182
msgid "Just now" msgid "Just now"
msgstr "Agora mesmo" msgstr "Agora mesmo"
#: js/misc/util.js:183 #: js/misc/util.js:184
#, javascript-format #, javascript-format
msgid "%d minute ago" msgid "%d minute ago"
msgid_plural "%d minutes ago" msgid_plural "%d minutes ago"
msgstr[0] "%d minuto atrás" msgstr[0] "%d minuto atrás"
msgstr[1] "%d minutos atrás" msgstr[1] "%d minutos atrás"
#: js/misc/util.js:187 #: js/misc/util.js:188
#, javascript-format #, javascript-format
msgid "%d hour ago" msgid "%d hour ago"
msgid_plural "%d hours ago" msgid_plural "%d hours ago"
msgstr[0] "%d hora atrás" msgstr[0] "%d hora atrás"
msgstr[1] "%d horas atrás" msgstr[1] "%d horas atrás"
#: js/misc/util.js:191 js/ui/dateMenu.js:162 #: js/misc/util.js:192 js/ui/dateMenu.js:162
msgid "Yesterday" msgid "Yesterday"
msgstr "Ontem" msgstr "Ontem"
#: js/misc/util.js:193 #: js/misc/util.js:194
#, javascript-format #, javascript-format
msgid "%d day ago" msgid "%d day ago"
msgid_plural "%d days ago" msgid_plural "%d days ago"
msgstr[0] "%d dia atrás" msgstr[0] "%d dia atrás"
msgstr[1] "%d dias atrás" msgstr[1] "%d dias atrás"
#: js/misc/util.js:197 #: js/misc/util.js:198
#, javascript-format #, javascript-format
msgid "%d week ago" msgid "%d week ago"
msgid_plural "%d weeks ago" msgid_plural "%d weeks ago"
msgstr[0] "%d semana atrás" msgstr[0] "%d semana atrás"
msgstr[1] "%d semanas atrás" msgstr[1] "%d semanas atrás"
#: js/misc/util.js:201 #: js/misc/util.js:202
#, javascript-format #, javascript-format
msgid "%d month ago" msgid "%d month ago"
msgid_plural "%d months ago" msgid_plural "%d months ago"
msgstr[0] "%d mês atrás" msgstr[0] "%d mês atrás"
msgstr[1] "%d meses atrás" msgstr[1] "%d meses atrás"
#: js/misc/util.js:204 #: js/misc/util.js:205
#, javascript-format #, javascript-format
msgid "%d year ago" msgid "%d year ago"
msgid_plural "%d years ago" msgid_plural "%d years ago"
@ -729,20 +717,20 @@ msgstr[0] "%d ano atrás"
msgstr[1] "%d anos atrás" msgstr[1] "%d anos atrás"
#. Translators: Time in 24h format #. Translators: Time in 24h format
#: js/misc/util.js:237 #: js/misc/util.js:238
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" #. time string in 24h format. i.e. "Yesterday, 14:30"
#: js/misc/util.js:243 #: js/misc/util.js:244
#, no-c-format #, no-c-format
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "Ontem, %H%M" msgstr "Ontem, %H%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" #. string in 24h format. i.e. "Monday, 14:30"
#: js/misc/util.js:249 #: js/misc/util.js:250
#, no-c-format #, no-c-format
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %H%M" msgstr "%A, %H%M"
@ -750,7 +738,7 @@ msgstr "%A, %H%M"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" #. i.e. "May 25, 14:30"
#: js/misc/util.js:255 #: js/misc/util.js:256
#, no-c-format #, no-c-format
msgid "%B %-d, %H%M" msgid "%B %-d, %H%M"
msgstr "%-d de %B, %H%M" msgstr "%-d de %B, %H%M"
@ -758,7 +746,7 @@ msgstr "%-d de %B, %H%M"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" #. i.e. "May 25 2012, 14:30"
#: js/misc/util.js:261 #: js/misc/util.js:262
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %H%M" msgid "%B %-d %Y, %H%M"
msgstr "%-d de %B de %Y, %H%M" msgstr "%-d de %B de %Y, %H%M"
@ -766,20 +754,20 @@ msgstr "%-d de %B de %Y, %H%M"
#. Show only the time if date is on today #. Show only the time if date is on today
#. eslint-disable-line no-lonely-if #. eslint-disable-line no-lonely-if
#. Translators: Time in 12h format #. Translators: Time in 12h format
#: js/misc/util.js:266 #: js/misc/util.js:267
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%l%M %p" msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" #. time string in 12h format. i.e. "Yesterday, 2:30 pm"
#: js/misc/util.js:272 #: js/misc/util.js:273
#, no-c-format #, no-c-format
msgid "Yesterday, %l%M %p" msgid "Yesterday, %l%M %p"
msgstr "Ontem, %l%M %p" msgstr "Ontem, %l%M %p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" #. string in 12h format. i.e. "Monday, 2:30 pm"
#: js/misc/util.js:278 #: js/misc/util.js:279
#, no-c-format #, no-c-format
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %l%M %p" msgstr "%A, %l%M %p"
@ -787,7 +775,7 @@ msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" #. i.e. "May 25, 2:30 pm"
#: js/misc/util.js:284 #: js/misc/util.js:285
#, no-c-format #, no-c-format
msgid "%B %-d, %l%M %p" msgid "%B %-d, %l%M %p"
msgstr "%-d de %B, %l%M %p" msgstr "%-d de %B, %l%M %p"
@ -795,17 +783,17 @@ msgstr "%-d de %B, %l%M %p"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format. #. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm" #. i.e. "May 25 2012, 2:30 pm"
#: js/misc/util.js:290 #: js/misc/util.js:291
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %l%M %p" msgid "%B %-d %Y, %l%M %p"
msgstr "%-d de %B de %Y, %l%M %p" msgstr "%-d de %B de %Y, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login window #. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:42 #: js/portalHelper/main.js:49
msgid "Hotspot Login" msgid "Hotspot Login"
msgstr "Autenticação de ponto de acesso" msgstr "Autenticação de ponto de acesso"
#: js/portalHelper/main.js:88 #: js/portalHelper/main.js:95
msgid "" msgid ""
"Your connection to this hotspot login is not secure. Passwords or other " "Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby." "information you enter on this page can be viewed by people nearby."
@ -1051,40 +1039,40 @@ msgstr "A versão do udisks instalado não possui suporte à configuração do P
msgid "Open with %s" msgid "Open with %s"
msgstr "Abrir com %s" msgstr "Abrir com %s"
#: js/ui/components/networkAgent.js:93 #: js/ui/components/networkAgent.js:92
msgid "" msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router." "Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "" msgstr ""
"Alternativamente, você pode conectar pressionando o botão “WPS” em seu " "Alternativamente, você pode conectar pressionando o botão “WPS” em seu "
"roteador." "roteador."
#: js/ui/components/networkAgent.js:105 js/ui/status/network.js:258 #: js/ui/components/networkAgent.js:104 js/ui/status/network.js:258
#: js/ui/status/network.js:349 js/ui/status/network.js:981 #: js/ui/status/network.js:349 js/ui/status/network.js:981
msgid "Connect" msgid "Connect"
msgstr "Conectar" msgstr "Conectar"
#: js/ui/components/networkAgent.js:216 #: js/ui/components/networkAgent.js:215
msgid "Key" msgid "Key"
msgstr "Chave" msgstr "Chave"
#: js/ui/components/networkAgent.js:254 js/ui/components/networkAgent.js:277 #: js/ui/components/networkAgent.js:253 js/ui/components/networkAgent.js:276
msgid "Private key password" msgid "Private key password"
msgstr "Senha da chave privada" msgstr "Senha da chave privada"
#: js/ui/components/networkAgent.js:275 #: js/ui/components/networkAgent.js:274
msgid "Identity" msgid "Identity"
msgstr "Identidade" msgstr "Identidade"
#: js/ui/components/networkAgent.js:289 #: js/ui/components/networkAgent.js:288
msgid "Service" msgid "Service"
msgstr "Serviço" msgstr "Serviço"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:346 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:345
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "Autenticação necessária" msgstr "Autenticação necessária"
#: js/ui/components/networkAgent.js:319 js/ui/components/networkAgent.js:680 #: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:680
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@ -1093,31 +1081,31 @@ msgstr ""
"Senhas ou chaves criptografadas são necessárias para acessar a rede sem fio " "Senhas ou chaves criptografadas são necessárias para acessar a rede sem fio "
"“%s”." "“%s”."
#: js/ui/components/networkAgent.js:323 js/ui/components/networkAgent.js:684 #: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:684
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Autenticação 802.1X cabeada" msgstr "Autenticação 802.1X cabeada"
#: js/ui/components/networkAgent.js:325 #: js/ui/components/networkAgent.js:324
msgid "Network name" msgid "Network name"
msgstr "Nome da rede" msgstr "Nome da rede"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:688 #: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Autenticação DSL" msgstr "Autenticação DSL"
#: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:693 #: js/ui/components/networkAgent.js:336 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "Código PIN requisitado" msgstr "Código PIN requisitado"
#: js/ui/components/networkAgent.js:338 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "O código PIN é necessário para o dispositivo móvel de banda larga" msgstr "O código PIN é necessário para o dispositivo móvel de banda larga"
#: js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:338
msgid "PIN" msgid "PIN"
msgstr "PIN" msgstr "PIN"
#: js/ui/components/networkAgent.js:347 js/ui/components/networkAgent.js:685 #: js/ui/components/networkAgent.js:346 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:705 #: js/ui/components/networkAgent.js:705
#, javascript-format #, javascript-format
@ -1408,24 +1396,24 @@ msgstr "%s (remoto)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (console)" msgstr "%s (console)"
#: js/ui/extensionDownloader.js:194 #: js/ui/extensionDownloader.js:232
msgid "Install" msgid "Install"
msgstr "Instalar" msgstr "Instalar"
#: js/ui/extensionDownloader.js:200 #: js/ui/extensionDownloader.js:238
msgid "Install Extension" msgid "Install Extension"
msgstr "Instalar extensão" msgstr "Instalar extensão"
#: js/ui/extensionDownloader.js:201 #: js/ui/extensionDownloader.js:239
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Baixar e instalar “%s” de extensions.gnome.org?" msgstr "Baixar e instalar “%s” de extensions.gnome.org?"
#: js/ui/extensionSystem.js:253 #: js/ui/extensionSystem.js:252
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "Atualizações de extensões disponíveis" msgstr "Atualizações de extensões disponíveis"
#: js/ui/extensionSystem.js:254 #: js/ui/extensionSystem.js:253
msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed."
msgstr "Atualizações de extensões estão prontas para serem instaladas." msgstr "Atualizações de extensões estão prontas para serem instaladas."
@ -1522,7 +1510,7 @@ msgstr "Desligar"
msgid "Leave Off" msgid "Leave Off"
msgstr "Deixar desativado" msgstr "Deixar desativado"
#: js/ui/keyboard.js:227 #: js/ui/keyboard.js:226
msgid "Region & Language Settings" msgid "Region & Language Settings"
msgstr "Configurações regionais e de idioma" msgstr "Configurações regionais e de idioma"
@ -1575,11 +1563,11 @@ msgstr "Ver fonte"
msgid "Web Page" msgid "Web Page"
msgstr "Página web" msgstr "Página web"
#: js/ui/main.js:294 #: js/ui/main.js:290
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Sessão aberta como um usuário privilegiado" msgstr "Sessão aberta como um usuário privilegiado"
#: js/ui/main.js:295 #: js/ui/main.js:291
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@ -1587,15 +1575,15 @@ msgstr ""
"Usar uma sessão como um usuário privilegiado deve ser evitado por motivos de " "Usar uma sessão como um usuário privilegiado deve ser evitado por motivos de "
"segurança. Se possível, você deve abrir uma sessão como um usuário normal." "segurança. Se possível, você deve abrir uma sessão como um usuário normal."
#: js/ui/main.js:344 #: js/ui/main.js:340
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Bloqueio de tela desabilitado" msgstr "Bloqueio de tela desabilitado"
#: js/ui/main.js:345 #: js/ui/main.js:341
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "O bloqueio de tela requer o gerenciador de exibição do GNOME." msgstr "O bloqueio de tela requer o gerenciador de exibição do GNOME."
#: js/ui/messageTray.js:1440 #: js/ui/messageTray.js:1443
msgid "System Information" msgid "System Information"
msgstr "Informações do sistema" msgstr "Informações do sistema"
@ -1629,47 +1617,47 @@ msgstr "Desfazer"
msgid "Overview" msgid "Overview"
msgstr "Panorama" msgstr "Panorama"
#: js/ui/padOsd.js:96 #: js/ui/padOsd.js:95
msgid "New shortcut…" msgid "New shortcut…"
msgstr "Novo atalho…" msgstr "Novo atalho…"
#: js/ui/padOsd.js:143 #: js/ui/padOsd.js:142
msgid "Application defined" msgid "Application defined"
msgstr "Aplicativo definido" msgstr "Aplicativo definido"
#: js/ui/padOsd.js:144 #: js/ui/padOsd.js:143
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Mostrar ajuda na tela" msgstr "Mostrar ajuda na tela"
#: js/ui/padOsd.js:145 #: js/ui/padOsd.js:144
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Trocar monitor" msgstr "Trocar monitor"
#: js/ui/padOsd.js:146 #: js/ui/padOsd.js:145
msgid "Assign keystroke" msgid "Assign keystroke"
msgstr "Atribuir atalho" msgstr "Atribuir atalho"
#: js/ui/padOsd.js:212 #: js/ui/padOsd.js:211
msgid "Done" msgid "Done"
msgstr "Concluído" msgstr "Concluído"
#: js/ui/padOsd.js:718 #: js/ui/padOsd.js:716
msgid "Edit…" msgid "Edit…"
msgstr "Editar…" msgstr "Editar…"
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877 #: js/ui/padOsd.js:758 js/ui/padOsd.js:875
msgid "None" msgid "None"
msgstr "Nenhum" msgstr "Nenhum"
#: js/ui/padOsd.js:831 #: js/ui/padOsd.js:829
msgid "Press a button to configure" msgid "Press a button to configure"
msgstr "Pressione um botão para configurar" msgstr "Pressione um botão para configurar"
#: js/ui/padOsd.js:832 #: js/ui/padOsd.js:830
msgid "Press Esc to exit" msgid "Press Esc to exit"
msgstr "Pressione Esc para sair" msgstr "Pressione Esc para sair"
#: js/ui/padOsd.js:835 #: js/ui/padOsd.js:833
msgid "Press any key to exit" msgid "Press any key to exit"
msgstr "Pressione qualquer tecla para sair" msgstr "Pressione qualquer tecla para sair"
@ -1679,12 +1667,12 @@ msgstr "Pressione qualquer tecla para sair"
msgid "Activities" msgid "Activities"
msgstr "Atividades" msgstr "Atividades"
#: js/ui/panel.js:542 #: js/ui/panel.js:556
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Sistema" msgstr "Sistema"
#: js/ui/panel.js:658 #: js/ui/panel.js:674
msgid "Top Bar" msgid "Top Bar"
msgstr "Barra superior" msgstr "Barra superior"
@ -1723,7 +1711,7 @@ msgstr "Não foi possível bloquear"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "O bloqueio foi impedido por um aplicativo" msgstr "O bloqueio foi impedido por um aplicativo"
#: js/ui/screenshot.js:141 #: js/ui/screenshot.js:155
msgid "Screenshot taken" msgid "Screenshot taken"
msgstr "Captura de tela obtida" msgstr "Captura de tela obtida"
@ -2426,13 +2414,10 @@ msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
#: js/ui/windowMenu.js:27 #: js/ui/windowMenu.js:27
#| msgid "Hide Text"
msgid "Hide" msgid "Hide"
msgstr "Ocultar" msgstr "Ocultar"
#: js/ui/windowMenu.js:34 #: js/ui/windowMenu.js:34
#| msgctxt "search-result"
#| msgid "Restart"
msgid "Restore" msgid "Restore"
msgstr "Restaurar" msgstr "Restaurar"
@ -2786,6 +2771,7 @@ msgstr "UUID, nome e descrição são necessários"
#: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46
#: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-info.c:50
#: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/command-list.c:64
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell\n" msgid "Failed to connect to GNOME Shell\n"
msgstr "Falha ao conectar ao GNOME Shell\n" msgstr "Falha ao conectar ao GNOME Shell\n"
@ -2802,7 +2788,7 @@ msgstr "Desabilita uma extensão"
#: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-disable.c:119
#: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119
#: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-info.c:103
#: subprojects/extensions-tool/src/command-prefs.c:97 #: subprojects/extensions-tool/src/command-prefs.c:105
#: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-reset.c:76
#: subprojects/extensions-tool/src/command-uninstall.c:104 #: subprojects/extensions-tool/src/command-uninstall.c:104
msgid "No UUID given" msgid "No UUID given"
@ -2811,7 +2797,7 @@ msgstr "Nenhuma UUID dado"
#: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-disable.c:124
#: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124
#: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-info.c:108
#: subprojects/extensions-tool/src/command-prefs.c:102 #: subprojects/extensions-tool/src/command-prefs.c:110
#: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-reset.c:81
#: subprojects/extensions-tool/src/command-uninstall.c:109 #: subprojects/extensions-tool/src/command-uninstall.c:109
msgid "More than one UUID given" msgid "More than one UUID given"
@ -2941,7 +2927,12 @@ msgstr "Mais de um diretório fonte especificado"
msgid "Extension “%s” doesn't have preferences\n" msgid "Extension “%s” doesn't have preferences\n"
msgstr "A extensão “%s” não tem preferências\n" msgstr "A extensão “%s” não tem preferências\n"
#: subprojects/extensions-tool/src/command-prefs.c:79 #: subprojects/extensions-tool/src/command-prefs.c:62
#, c-format
msgid "Failed to open prefs for extension “%s”: %s\n"
msgstr "Falha ao abrir as preferências para a extensão “%s”: %s\n"
#: subprojects/extensions-tool/src/command-prefs.c:87
msgid "Opens extension preferences" msgid "Opens extension preferences"
msgstr "Abre as preferências da extensão" msgstr "Abre as preferências da extensão"
@ -2966,10 +2957,6 @@ msgstr "Desinstala uma extensão"
msgid "Do not print error messages" msgid "Do not print error messages"
msgstr "Não exibir mensagens de erro" msgstr "Não exibir mensagens de erro"
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell"
msgstr "Falha ao conectar ao GNOME Shell"
#: subprojects/extensions-tool/src/main.c:244 #: subprojects/extensions-tool/src/main.c:244
msgid "Path" msgid "Path"
msgstr "Caminho" msgstr "Caminho"
@ -3100,6 +3087,19 @@ msgstr[1] "%u entradas"
msgid "System Sounds" msgid "System Sounds"
msgstr "Sons do sistema" msgstr "Sons do sistema"
#~ msgid "Enable introspection API"
#~ msgstr "Habilitar API de introspecção"
#~ msgid ""
#~ "Enables a D-Bus API that allows to introspect the application state of "
#~ "the shell."
#~ msgstr ""
#~ "Habilita uma API de D-Bus que permite introspectar o estado do aplicativo "
#~ "do shell."
#~ msgid "Failed to connect to GNOME Shell"
#~ msgstr "Falha ao conectar ao GNOME Shell"
#~ msgid "Minimize" #~ msgid "Minimize"
#~ msgstr "Minimizar" #~ msgstr "Minimizar"

463
po/ru.po
View File

@ -15,22 +15,28 @@
# Stas Solovey <whats_up@tut.by>, 2011, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020. # Stas Solovey <whats_up@tut.by>, 2011, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020.
# Ivan Molodetskikh <yalterz@gmail.com>, 2020. # Ivan Molodetskikh <yalterz@gmail.com>, 2020.
# Konstantin Nezhbert <zhbert@yandex.ru>, 2021. # Konstantin Nezhbert <zhbert@yandex.ru>, 2021.
# Melman <Alexmelman88@gmail.com>, 2021.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2021-08-17 23:56+0000\n" "POT-Creation-Date: 2021-11-03 10:04+0000\n"
"PO-Revision-Date: 2021-08-19 08:44+0300\n" "PO-Revision-Date: 2021-11-03 14:58+0300\n"
"Last-Translator: Alexey Rubtsov <rushills@gmail.com>\n" "Last-Translator: Melman <Alexmelman88@gmail.com>\n"
"Language-Team: Russian <gnome-cyr@gnome.org>\n" "Language-Team: Russian <gnome-cyr@gnome.org>\n"
"Language: ru\n" "Language: ru\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"X-Generator: Poedit 3.0\n" "X-Generator: Gtranslator 40.0\n"
"X-DL-Team: ru\n"
"X-DL-Module: gnome-shell\n"
"X-DL-Branch: gnome-41\n"
"X-DL-Domain: po\n"
"X-DL-State: None\n"
# Запуск приложений, как другой вариант # Запуск приложений, как другой вариант
#: data/50-gnome-shell-launchers.xml:6 #: data/50-gnome-shell-launchers.xml:6
@ -263,23 +269,11 @@ msgstr ""
"существуют. Это большое число может быть использовано для эффективного " "существуют. Это большое число может быть использовано для эффективного "
"отключения диалога." "отключения диалога."
#: data/org.gnome.shell.gschema.xml.in:109 #: data/org.gnome.shell.gschema.xml.in:133
msgid "Enable introspection API"
msgstr "Включить API самоанализа"
#: data/org.gnome.shell.gschema.xml.in:110
msgid ""
"Enables a D-Bus API that allows to introspect the application state of the "
"shell."
msgstr ""
"Включает D-Bus API, который позволяет анализировать состояние приложения "
"gnome shell."
#: data/org.gnome.shell.gschema.xml.in:141
msgid "Layout of the app picker" msgid "Layout of the app picker"
msgstr "Макет меню выбора приложений" msgstr "Макет меню выбора приложений"
#: data/org.gnome.shell.gschema.xml.in:142 #: data/org.gnome.shell.gschema.xml.in:134
msgid "" msgid ""
"Layout of the app picker. Each entry in the array is a page. Pages are " "Layout of the app picker. Each entry in the array is a page. Pages are "
"stored in the order they appear in GNOME Shell. Each page contains an " "stored in the order they appear in GNOME Shell. Each page contains an "
@ -292,107 +286,107 @@ msgstr ""
"настоящее время в качестве “data” хранятся следующие значения: • \"position" "настоящее время в качестве “data” хранятся следующие значения: • \"position"
"\" - положение значка приложения на странице" "\" - положение значка приложения на странице"
#: data/org.gnome.shell.gschema.xml.in:157 #: data/org.gnome.shell.gschema.xml.in:149
msgid "Keybinding to open the application menu" msgid "Keybinding to open the application menu"
msgstr "Комбинация клавиш для открытия меню приложения" msgstr "Комбинация клавиш для открытия меню приложения"
#: data/org.gnome.shell.gschema.xml.in:158 #: data/org.gnome.shell.gschema.xml.in:150
msgid "Keybinding to open the application menu." msgid "Keybinding to open the application menu."
msgstr "Комбинация клавиш для открытия меню приложения." msgstr "Комбинация клавиш для открытия меню приложения."
#: data/org.gnome.shell.gschema.xml.in:164 #: data/org.gnome.shell.gschema.xml.in:156
#: data/org.gnome.shell.gschema.xml.in:171 #: data/org.gnome.shell.gschema.xml.in:163
msgid "Keybinding to shift between overview states" msgid "Keybinding to shift between overview states"
msgstr "Сочетание клавиш для переключения между состояниями обзора" msgstr "Сочетание клавиш для переключения между состояниями обзора"
#: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:157
msgid "Keybinding to shift between session, window picker and app grid" msgid "Keybinding to shift between session, window picker and app grid"
msgstr "" msgstr ""
"Сочетание клавиш для переключения между сеансом, меню выбора окон и сеткой " "Сочетание клавиш для переключения между сеансом, меню выбора окон и сеткой "
"приложений" "приложений"
#: data/org.gnome.shell.gschema.xml.in:172 #: data/org.gnome.shell.gschema.xml.in:164
msgid "Keybinding to shift between app grid, window picker and session" msgid "Keybinding to shift between app grid, window picker and session"
msgstr "" msgstr ""
"Сочетание клавиш для переключения между сеткой приложений, меню выбора окон " "Сочетание клавиш для переключения между сеткой приложений, меню выбора окон "
"и сеансом" "и сеансом"
#: data/org.gnome.shell.gschema.xml.in:178 #: data/org.gnome.shell.gschema.xml.in:170
msgid "Keybinding to open the “Show Applications” view" msgid "Keybinding to open the “Show Applications” view"
msgstr "Комбинация клавиш для перехода в режим просмотра приложений" msgstr "Комбинация клавиш для перехода в режим просмотра приложений"
#: data/org.gnome.shell.gschema.xml.in:179 #: data/org.gnome.shell.gschema.xml.in:171
msgid "" msgid ""
"Keybinding to open the “Show Applications” view of the Activities Overview." "Keybinding to open the “Show Applications” view of the Activities Overview."
msgstr "" msgstr ""
"Комбинация клавиш для перехода в режим просмотра приложений в меню «Обзор»." "Комбинация клавиш для перехода в режим просмотра приложений в меню «Обзор»."
#: data/org.gnome.shell.gschema.xml.in:186 #: data/org.gnome.shell.gschema.xml.in:178
msgid "Keybinding to open the overview" msgid "Keybinding to open the overview"
msgstr "Комбинация клавиш для перехода в режим обзора" msgstr "Комбинация клавиш для перехода в режим обзора"
#: data/org.gnome.shell.gschema.xml.in:187 #: data/org.gnome.shell.gschema.xml.in:179
msgid "Keybinding to open the Activities Overview." msgid "Keybinding to open the Activities Overview."
msgstr "Комбинация клавиш для перехода в режим обзора." msgstr "Комбинация клавиш для перехода в режим обзора."
#: data/org.gnome.shell.gschema.xml.in:193 #: data/org.gnome.shell.gschema.xml.in:185
msgid "Keybinding to toggle the visibility of the notification list" msgid "Keybinding to toggle the visibility of the notification list"
msgstr "Комбинация клавиш для отображения или скрытия списка уведомлений" msgstr "Комбинация клавиш для отображения или скрытия списка уведомлений"
#: data/org.gnome.shell.gschema.xml.in:194 #: data/org.gnome.shell.gschema.xml.in:186
msgid "Keybinding to toggle the visibility of the notification list." msgid "Keybinding to toggle the visibility of the notification list."
msgstr "Комбинация клавиш для отображения или скрытия списка уведомлений." msgstr "Комбинация клавиш для отображения или скрытия списка уведомлений."
#: data/org.gnome.shell.gschema.xml.in:200 #: data/org.gnome.shell.gschema.xml.in:192
msgid "Keybinding to focus the active notification" msgid "Keybinding to focus the active notification"
msgstr "Комбинация клавиш для перевода фокуса на текущее уведомление" msgstr "Комбинация клавиш для перевода фокуса на текущее уведомление"
#: data/org.gnome.shell.gschema.xml.in:201 #: data/org.gnome.shell.gschema.xml.in:193
msgid "Keybinding to focus the active notification." msgid "Keybinding to focus the active notification."
msgstr "Комбинация клавиш для перевода фокуса на текущее уведомление." msgstr "Комбинация клавиш для перевода фокуса на текущее уведомление."
#: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:199
msgid "Switch to application 1" msgid "Switch to application 1"
msgstr "Переключиться на приложение 1" msgstr "Переключиться на приложение 1"
#: data/org.gnome.shell.gschema.xml.in:211 #: data/org.gnome.shell.gschema.xml.in:203
msgid "Switch to application 2" msgid "Switch to application 2"
msgstr "Переключиться на приложение 2" msgstr "Переключиться на приложение 2"
#: data/org.gnome.shell.gschema.xml.in:215 #: data/org.gnome.shell.gschema.xml.in:207
msgid "Switch to application 3" msgid "Switch to application 3"
msgstr "Переключиться на приложение 3" msgstr "Переключиться на приложение 3"
#: data/org.gnome.shell.gschema.xml.in:219 #: data/org.gnome.shell.gschema.xml.in:211
msgid "Switch to application 4" msgid "Switch to application 4"
msgstr "Переключиться на приложение 4" msgstr "Переключиться на приложение 4"
#: data/org.gnome.shell.gschema.xml.in:223 #: data/org.gnome.shell.gschema.xml.in:215
msgid "Switch to application 5" msgid "Switch to application 5"
msgstr "Переключиться на приложение 5" msgstr "Переключиться на приложение 5"
#: data/org.gnome.shell.gschema.xml.in:227 #: data/org.gnome.shell.gschema.xml.in:219
msgid "Switch to application 6" msgid "Switch to application 6"
msgstr "Переключиться на приложение 6" msgstr "Переключиться на приложение 6"
#: data/org.gnome.shell.gschema.xml.in:231 #: data/org.gnome.shell.gschema.xml.in:223
msgid "Switch to application 7" msgid "Switch to application 7"
msgstr "Переключиться на приложение 7" msgstr "Переключиться на приложение 7"
#: data/org.gnome.shell.gschema.xml.in:235 #: data/org.gnome.shell.gschema.xml.in:227
msgid "Switch to application 8" msgid "Switch to application 8"
msgstr "Переключиться на приложение 8" msgstr "Переключиться на приложение 8"
#: data/org.gnome.shell.gschema.xml.in:239 #: data/org.gnome.shell.gschema.xml.in:231
msgid "Switch to application 9" msgid "Switch to application 9"
msgstr "Переключиться на приложение 9" msgstr "Переключиться на приложение 9"
#: data/org.gnome.shell.gschema.xml.in:248 #: data/org.gnome.shell.gschema.xml.in:240
#: data/org.gnome.shell.gschema.xml.in:275 #: data/org.gnome.shell.gschema.xml.in:267
msgid "Limit switcher to current workspace." msgid "Limit switcher to current workspace."
msgstr "Ограничить переключатель текущим рабочим местом." msgstr "Ограничить переключатель текущим рабочим местом."
#: data/org.gnome.shell.gschema.xml.in:249 #: data/org.gnome.shell.gschema.xml.in:241
msgid "" msgid ""
"If true, only applications that have windows on the current workspace are " "If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included." "shown in the switcher. Otherwise, all applications are included."
@ -401,11 +395,11 @@ msgstr ""
"чьи окна находятся на текущем рабочем месте. Иначе все приложения будут " "чьи окна находятся на текущем рабочем месте. Иначе все приложения будут "
"включены." "включены."
#: data/org.gnome.shell.gschema.xml.in:266 #: data/org.gnome.shell.gschema.xml.in:258
msgid "The application icon mode." msgid "The application icon mode."
msgstr "Режим значка приложения." msgstr "Режим значка приложения."
#: data/org.gnome.shell.gschema.xml.in:267 #: data/org.gnome.shell.gschema.xml.in:259
msgid "" msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities " "Configures how the windows are shown in the switcher. Valid possibilities "
"are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-"
@ -415,7 +409,7 @@ msgstr ""
"«thumbnail-only» (показывать миниатюру окна), «app-icon-only» (показывать " "«thumbnail-only» (показывать миниатюру окна), «app-icon-only» (показывать "
"только значок приложения), «both» (показывать миниатюру и значок)." "только значок приложения), «both» (показывать миниатюру и значок)."
#: data/org.gnome.shell.gschema.xml.in:276 #: data/org.gnome.shell.gschema.xml.in:268
msgid "" msgid ""
"If true, only windows from the current workspace are shown in the switcher. " "If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included." "Otherwise, all windows are included."
@ -423,59 +417,59 @@ msgstr ""
"Если выбрано, то в переключателе будут показываться только окна из текущего " "Если выбрано, то в переключателе будут показываться только окна из текущего "
"рабочего места. Иначе все окна будут включены." "рабочего места. Иначе все окна будут включены."
#: data/org.gnome.shell.gschema.xml.in:286 #: data/org.gnome.shell.gschema.xml.in:278
msgid "Locations" msgid "Locations"
msgstr "Местоположения" msgstr "Местоположения"
#: data/org.gnome.shell.gschema.xml.in:287 #: data/org.gnome.shell.gschema.xml.in:279
msgid "The locations to show in world clocks" msgid "The locations to show in world clocks"
msgstr "Местоположения для отображения в мировых часах" msgstr "Местоположения для отображения в мировых часах"
#: data/org.gnome.shell.gschema.xml.in:297 #: data/org.gnome.shell.gschema.xml.in:289
msgid "Automatic location" msgid "Automatic location"
msgstr "Автоматическое местоположение" msgstr "Автоматическое местоположение"
#: data/org.gnome.shell.gschema.xml.in:298 #: data/org.gnome.shell.gschema.xml.in:290
msgid "Whether to fetch the current location or not" msgid "Whether to fetch the current location or not"
msgstr "Определяет получать местоположение или нет" msgstr "Определяет получать местоположение или нет"
#: data/org.gnome.shell.gschema.xml.in:305 #: data/org.gnome.shell.gschema.xml.in:297
msgid "Location" msgid "Location"
msgstr "Местоположение" msgstr "Местоположение"
#: data/org.gnome.shell.gschema.xml.in:306 #: data/org.gnome.shell.gschema.xml.in:298
msgid "The location for which to show a forecast" msgid "The location for which to show a forecast"
msgstr "Местоположение для которого отображается прогноз погоды" msgstr "Местоположение для которого отображается прогноз погоды"
#: data/org.gnome.shell.gschema.xml.in:318 #: data/org.gnome.shell.gschema.xml.in:310
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
msgstr "Прикреплять модальное диалоговое окно к родительскому окну" msgstr "Прикреплять модальное диалоговое окно к родительскому окну"
#: data/org.gnome.shell.gschema.xml.in:319 #: data/org.gnome.shell.gschema.xml.in:311
#: data/org.gnome.shell.gschema.xml.in:320
#: data/org.gnome.shell.gschema.xml.in:328 #: data/org.gnome.shell.gschema.xml.in:328
#: data/org.gnome.shell.gschema.xml.in:336 #: data/org.gnome.shell.gschema.xml.in:336
#: data/org.gnome.shell.gschema.xml.in:344 #: data/org.gnome.shell.gschema.xml.in:344
#: data/org.gnome.shell.gschema.xml.in:352
msgid "" msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell." "This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "" msgstr ""
"Этот ключ переопределяет ключ в org.gnome.mutter при запуске GNOME Shell." "Этот ключ переопределяет ключ в org.gnome.mutter при запуске GNOME Shell."
#: data/org.gnome.shell.gschema.xml.in:327 #: data/org.gnome.shell.gschema.xml.in:319
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "" msgstr ""
"Включить автоматическое изменение размеров окон при перемещении окон к краям " "Включить автоматическое изменение размеров окон при перемещении окон к краям "
"экрана" "экрана"
#: data/org.gnome.shell.gschema.xml.in:335 #: data/org.gnome.shell.gschema.xml.in:327
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "Рабочие места управляются динамически" msgstr "Рабочие места управляются динамически"
#: data/org.gnome.shell.gschema.xml.in:343 #: data/org.gnome.shell.gschema.xml.in:335
msgid "Workspaces only on primary monitor" msgid "Workspaces only on primary monitor"
msgstr "Рабочие места только на основном мониторе" msgstr "Рабочие места только на основном мониторе"
#: data/org.gnome.shell.gschema.xml.in:351 #: data/org.gnome.shell.gschema.xml.in:343
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Задержка изменения фокуса в режиме мыши после остановки указателя" msgstr "Задержка изменения фокуса в режиме мыши после остановки указателя"
@ -510,18 +504,18 @@ msgid "Visit extension homepage"
msgstr "Посетить домашнюю страницу расширения" msgstr "Посетить домашнюю страницу расширения"
#: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61 #: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61
#: js/ui/components/networkAgent.js:111 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:190 #: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:228
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183 #: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183
msgid "Cancel" msgid "Cancel"
msgstr "Отмена" msgstr "Отмена"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:210 #: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:209
#: js/ui/components/networkAgent.js:226 js/ui/components/networkAgent.js:250 #: js/ui/components/networkAgent.js:225 js/ui/components/networkAgent.js:249
#: js/ui/components/networkAgent.js:271 js/ui/components/networkAgent.js:291 #: js/ui/components/networkAgent.js:270 js/ui/components/networkAgent.js:290
#: js/ui/components/networkAgent.js:301 js/ui/components/polkitAgent.js:275 #: js/ui/components/networkAgent.js:300 js/ui/components/polkitAgent.js:275
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Пароль" msgstr "Пароль"
@ -544,8 +538,8 @@ msgstr "(например, пользователь или %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:246 #: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:245
#: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:287 #: js/ui/components/networkAgent.js:268 js/ui/components/networkAgent.js:286
msgid "Username" msgid "Username"
msgstr "Имя пользователя" msgstr "Имя пользователя"
@ -650,26 +644,26 @@ msgctxt "search-result"
msgid "Lock Screen Rotation" msgid "Lock Screen Rotation"
msgstr "Заблокировать ориентацию экрана" msgstr "Заблокировать ориентацию экрана"
#: js/misc/util.js:120 #: js/misc/util.js:121
msgid "Command not found" msgid "Command not found"
msgstr "Команда не найдена" msgstr "Команда не найдена"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: js/misc/util.js:156 #: js/misc/util.js:157
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Не удалось разобрать команду:" msgstr "Не удалось разобрать команду:"
#: js/misc/util.js:164 #: js/misc/util.js:165
#, javascript-format #, javascript-format
msgid "Execution of “%s” failed:" msgid "Execution of “%s” failed:"
msgstr "Не удалось выполнить «%s»:" msgstr "Не удалось выполнить «%s»:"
#: js/misc/util.js:181 #: js/misc/util.js:182
msgid "Just now" msgid "Just now"
msgstr "Прямо сейчас" msgstr "Прямо сейчас"
#: js/misc/util.js:183 #: js/misc/util.js:184
#, javascript-format #, javascript-format
msgid "%d minute ago" msgid "%d minute ago"
msgid_plural "%d minutes ago" msgid_plural "%d minutes ago"
@ -677,7 +671,7 @@ msgstr[0] "%d минута назад"
msgstr[1] "%d минуты назад" msgstr[1] "%d минуты назад"
msgstr[2] "%d минут назад" msgstr[2] "%d минут назад"
#: js/misc/util.js:187 #: js/misc/util.js:188
#, javascript-format #, javascript-format
msgid "%d hour ago" msgid "%d hour ago"
msgid_plural "%d hours ago" msgid_plural "%d hours ago"
@ -685,11 +679,11 @@ msgstr[0] "%d час назад"
msgstr[1] "%d часа назад" msgstr[1] "%d часа назад"
msgstr[2] "%d часов назад" msgstr[2] "%d часов назад"
#: js/misc/util.js:191 js/ui/dateMenu.js:162 #: js/misc/util.js:192 js/ui/dateMenu.js:162
msgid "Yesterday" msgid "Yesterday"
msgstr "Вчера" msgstr "Вчера"
#: js/misc/util.js:193 #: js/misc/util.js:194
#, javascript-format #, javascript-format
msgid "%d day ago" msgid "%d day ago"
msgid_plural "%d days ago" msgid_plural "%d days ago"
@ -697,7 +691,7 @@ msgstr[0] "%d день назад"
msgstr[1] "%d дня назад" msgstr[1] "%d дня назад"
msgstr[2] "%d дней назад" msgstr[2] "%d дней назад"
#: js/misc/util.js:197 #: js/misc/util.js:198
#, javascript-format #, javascript-format
msgid "%d week ago" msgid "%d week ago"
msgid_plural "%d weeks ago" msgid_plural "%d weeks ago"
@ -705,7 +699,7 @@ msgstr[0] "%d неделя назад"
msgstr[1] "%d недели назад" msgstr[1] "%d недели назад"
msgstr[2] "%d недель назад" msgstr[2] "%d недель назад"
#: js/misc/util.js:201 #: js/misc/util.js:202
#, javascript-format #, javascript-format
msgid "%d month ago" msgid "%d month ago"
msgid_plural "%d months ago" msgid_plural "%d months ago"
@ -713,7 +707,7 @@ msgstr[0] "%d месяц назад"
msgstr[1] "%d месяца назад" msgstr[1] "%d месяца назад"
msgstr[2] "%d месяцев назад" msgstr[2] "%d месяцев назад"
#: js/misc/util.js:204 #: js/misc/util.js:205
#, javascript-format #, javascript-format
msgid "%d year ago" msgid "%d year ago"
msgid_plural "%d years ago" msgid_plural "%d years ago"
@ -722,20 +716,20 @@ msgstr[1] "%d года назад"
msgstr[2] "%d лет назад" msgstr[2] "%d лет назад"
#. Translators: Time in 24h format #. Translators: Time in 24h format
#: js/misc/util.js:237 #: js/misc/util.js:238
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" #. time string in 24h format. i.e. "Yesterday, 14:30"
#: js/misc/util.js:243 #: js/misc/util.js:244
#, no-c-format #, no-c-format
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "Вчера, %H%M" msgstr "Вчера, %H%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" #. string in 24h format. i.e. "Monday, 14:30"
#: js/misc/util.js:249 #: js/misc/util.js:250
#, no-c-format #, no-c-format
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %H%M" msgstr "%A, %H%M"
@ -743,7 +737,7 @@ msgstr "%A, %H%M"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" #. i.e. "May 25, 14:30"
#: js/misc/util.js:255 #: js/misc/util.js:256
#, no-c-format #, no-c-format
msgid "%B %-d, %H%M" msgid "%B %-d, %H%M"
msgstr "%-d %B, %H%M" msgstr "%-d %B, %H%M"
@ -751,7 +745,7 @@ msgstr "%-d %B, %H%M"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" #. i.e. "May 25 2012, 14:30"
#: js/misc/util.js:261 #: js/misc/util.js:262
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %H%M" msgid "%B %-d %Y, %H%M"
msgstr "%-d %B %Y, %H%M" msgstr "%-d %B %Y, %H%M"
@ -759,20 +753,20 @@ msgstr "%-d %B %Y, %H%M"
#. Show only the time if date is on today #. Show only the time if date is on today
#. eslint-disable-line no-lonely-if #. eslint-disable-line no-lonely-if
#. Translators: Time in 12h format #. Translators: Time in 12h format
#: js/misc/util.js:266 #: js/misc/util.js:267
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%-l%M%p" msgstr "%-l%M%p"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" #. time string in 12h format. i.e. "Yesterday, 2:30 pm"
#: js/misc/util.js:272 #: js/misc/util.js:273
#, no-c-format #, no-c-format
msgid "Yesterday, %l%M %p" msgid "Yesterday, %l%M %p"
msgstr "Вчера, %-l%M%p" msgstr "Вчера, %-l%M%p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" #. string in 12h format. i.e. "Monday, 2:30 pm"
#: js/misc/util.js:278 #: js/misc/util.js:279
#, no-c-format #, no-c-format
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %-l%M%p" msgstr "%A, %-l%M%p"
@ -780,7 +774,7 @@ msgstr "%A, %-l%M%p"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" #. i.e. "May 25, 2:30 pm"
#: js/misc/util.js:284 #: js/misc/util.js:285
#, no-c-format #, no-c-format
msgid "%B %-d, %l%M %p" msgid "%B %-d, %l%M %p"
msgstr "%-d %B, %l%M %p" msgstr "%-d %B, %l%M %p"
@ -789,17 +783,17 @@ msgstr "%-d %B, %l%M %p"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format. #. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm" #. i.e. "May 25 2012, 2:30 pm"
#: js/misc/util.js:290 #: js/misc/util.js:291
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %l%M %p" msgid "%B %-d %Y, %l%M %p"
msgstr "%-d %B %Y, %l%M %p" msgstr "%-d %B %Y, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login window #. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:42 #: js/portalHelper/main.js:49
msgid "Hotspot Login" msgid "Hotspot Login"
msgstr "Авторизация в точке доступа" msgstr "Авторизация в точке доступа"
#: js/portalHelper/main.js:88 #: js/portalHelper/main.js:95
msgid "" msgid ""
"Your connection to this hotspot login is not secure. Passwords or other " "Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby." "information you enter on this page can be viewed by people nearby."
@ -1045,40 +1039,40 @@ msgstr "Установленная версия udisks не поддержива
msgid "Open with %s" msgid "Open with %s"
msgstr "Открыть с помощью %s" msgstr "Открыть с помощью %s"
#: js/ui/components/networkAgent.js:93 #: js/ui/components/networkAgent.js:92
msgid "" msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router." "Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "" msgstr ""
"В качестве альтернативы вы можете подключиться, нажав кнопку «WPS» на вашем " "В качестве альтернативы вы можете подключиться, нажав кнопку «WPS» на вашем "
"маршрутизаторе." "маршрутизаторе."
#: js/ui/components/networkAgent.js:105 js/ui/status/network.js:258 #: js/ui/components/networkAgent.js:104 js/ui/status/network.js:258
#: js/ui/status/network.js:349 js/ui/status/network.js:981 #: js/ui/status/network.js:349 js/ui/status/network.js:981
msgid "Connect" msgid "Connect"
msgstr "Соединиться" msgstr "Соединиться"
#: js/ui/components/networkAgent.js:216 #: js/ui/components/networkAgent.js:215
msgid "Key" msgid "Key"
msgstr "Ключ" msgstr "Ключ"
#: js/ui/components/networkAgent.js:254 js/ui/components/networkAgent.js:277 #: js/ui/components/networkAgent.js:253 js/ui/components/networkAgent.js:276
msgid "Private key password" msgid "Private key password"
msgstr "Пароль личного ключа" msgstr "Пароль личного ключа"
#: js/ui/components/networkAgent.js:275 #: js/ui/components/networkAgent.js:274
msgid "Identity" msgid "Identity"
msgstr "Идентичность" msgstr "Идентичность"
#: js/ui/components/networkAgent.js:289 #: js/ui/components/networkAgent.js:288
msgid "Service" msgid "Service"
msgstr "Служба" msgstr "Служба"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:346 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:345
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "Требуется подтверждение подлинности" msgstr "Требуется подтверждение подлинности"
#: js/ui/components/networkAgent.js:319 js/ui/components/networkAgent.js:680 #: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:680
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@ -1086,31 +1080,31 @@ msgid ""
msgstr "" msgstr ""
"Для доступа к беспроводной сети «%s» требуется пароль или ключ шифрования." "Для доступа к беспроводной сети «%s» требуется пароль или ключ шифрования."
#: js/ui/components/networkAgent.js:323 js/ui/components/networkAgent.js:684 #: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:684
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Аутентификация Wired 802.1X" msgstr "Аутентификация Wired 802.1X"
#: js/ui/components/networkAgent.js:325 #: js/ui/components/networkAgent.js:324
msgid "Network name" msgid "Network name"
msgstr "Название сети" msgstr "Название сети"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:688 #: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Аутентификация DSL" msgstr "Аутентификация DSL"
#: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:693 #: js/ui/components/networkAgent.js:336 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "Требуется PIN-код" msgstr "Требуется PIN-код"
#: js/ui/components/networkAgent.js:338 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Для устройства мобильной связи требуется PIN-код" msgstr "Для устройства мобильной связи требуется PIN-код"
#: js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:338
msgid "PIN" msgid "PIN"
msgstr "PIN" msgstr "PIN"
#: js/ui/components/networkAgent.js:347 js/ui/components/networkAgent.js:685 #: js/ui/components/networkAgent.js:346 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:705 #: js/ui/components/networkAgent.js:705
#, javascript-format #, javascript-format
@ -1409,24 +1403,24 @@ msgstr "%s (удалённый)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (консоль)" msgstr "%s (консоль)"
#: js/ui/extensionDownloader.js:194 #: js/ui/extensionDownloader.js:232
msgid "Install" msgid "Install"
msgstr "Установить" msgstr "Установить"
#: js/ui/extensionDownloader.js:200 #: js/ui/extensionDownloader.js:238
msgid "Install Extension" msgid "Install Extension"
msgstr "Установить расширение" msgstr "Установить расширение"
#: js/ui/extensionDownloader.js:201 #: js/ui/extensionDownloader.js:239
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Загрузить и установить расширение «%s» из extensions.gnome.org?" msgstr "Загрузить и установить расширение «%s» из extensions.gnome.org?"
#: js/ui/extensionSystem.js:253 #: js/ui/extensionSystem.js:252
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "Доступны обновления расширений" msgstr "Доступны обновления расширений"
#: js/ui/extensionSystem.js:254 #: js/ui/extensionSystem.js:253
msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed."
msgstr "Обновления расширений готовы к установке." msgstr "Обновления расширений готовы к установке."
@ -1523,7 +1517,7 @@ msgstr "Выключить"
msgid "Leave Off" msgid "Leave Off"
msgstr "Оставить выключенными" msgstr "Оставить выключенными"
#: js/ui/keyboard.js:227 #: js/ui/keyboard.js:226
msgid "Region & Language Settings" msgid "Region & Language Settings"
msgstr "Настройки языка и региона" msgstr "Настройки языка и региона"
@ -1576,11 +1570,11 @@ msgstr "Показать код"
msgid "Web Page" msgid "Web Page"
msgstr "Веб-страница" msgstr "Веб-страница"
#: js/ui/main.js:294 #: js/ui/main.js:290
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Авторизован как привилегированный пользователь" msgstr "Авторизован как привилегированный пользователь"
#: js/ui/main.js:295 #: js/ui/main.js:291
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@ -1589,15 +1583,15 @@ msgstr ""
"привилегированного пользователя. Если это возможно, вам следует войти от " "привилегированного пользователя. Если это возможно, вам следует войти от "
"имени обычного пользователя." "имени обычного пользователя."
#: js/ui/main.js:344 #: js/ui/main.js:340
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Блокировка экрана отключена" msgstr "Блокировка экрана отключена"
#: js/ui/main.js:345 #: js/ui/main.js:341
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "Для блокировки экрана требуется GNOME display manager." msgstr "Для блокировки экрана требуется GNOME display manager."
#: js/ui/messageTray.js:1440 #: js/ui/messageTray.js:1443
msgid "System Information" msgid "System Information"
msgstr "Системная информация" msgstr "Системная информация"
@ -1631,47 +1625,47 @@ msgstr "Отменить"
msgid "Overview" msgid "Overview"
msgstr "Обзор" msgstr "Обзор"
#: js/ui/padOsd.js:96 #: js/ui/padOsd.js:95
msgid "New shortcut…" msgid "New shortcut…"
msgstr "Создать комбинацию клавиш…" msgstr "Создать комбинацию клавиш…"
#: js/ui/padOsd.js:143 #: js/ui/padOsd.js:142
msgid "Application defined" msgid "Application defined"
msgstr "Определено приложением" msgstr "Определено приложением"
#: js/ui/padOsd.js:144 #: js/ui/padOsd.js:143
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Показывать экранную справку" msgstr "Показывать экранную справку"
#: js/ui/padOsd.js:145 #: js/ui/padOsd.js:144
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Переключить монитор" msgstr "Переключить монитор"
#: js/ui/padOsd.js:146 #: js/ui/padOsd.js:145
msgid "Assign keystroke" msgid "Assign keystroke"
msgstr "Назначение клавишь" msgstr "Назначение клавишь"
#: js/ui/padOsd.js:212 #: js/ui/padOsd.js:211
msgid "Done" msgid "Done"
msgstr "Готово" msgstr "Готово"
#: js/ui/padOsd.js:718 #: js/ui/padOsd.js:716
msgid "Edit…" msgid "Edit…"
msgstr "Правка…" msgstr "Правка…"
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877 #: js/ui/padOsd.js:758 js/ui/padOsd.js:875
msgid "None" msgid "None"
msgstr "Нет" msgstr "Нет"
#: js/ui/padOsd.js:831 #: js/ui/padOsd.js:829
msgid "Press a button to configure" msgid "Press a button to configure"
msgstr "Нажмите кнопку для настройки" msgstr "Нажмите кнопку для настройки"
#: js/ui/padOsd.js:832 #: js/ui/padOsd.js:830
msgid "Press Esc to exit" msgid "Press Esc to exit"
msgstr "Нажмите Esc для выхода" msgstr "Нажмите Esc для выхода"
#: js/ui/padOsd.js:835 #: js/ui/padOsd.js:833
msgid "Press any key to exit" msgid "Press any key to exit"
msgstr "Нажмите любую клавишу для выхода" msgstr "Нажмите любую клавишу для выхода"
@ -1681,12 +1675,12 @@ msgstr "Нажмите любую клавишу для выхода"
msgid "Activities" msgid "Activities"
msgstr "Обзор" msgstr "Обзор"
#: js/ui/panel.js:542 #: js/ui/panel.js:556
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Система" msgstr "Система"
#: js/ui/panel.js:658 #: js/ui/panel.js:674
msgid "Top Bar" msgid "Top Bar"
msgstr "Верхняя панель" msgstr "Верхняя панель"
@ -1725,7 +1719,7 @@ msgstr "Не удалось заблокировать"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Блокировке помешало приложение" msgstr "Блокировке помешало приложение"
#: js/ui/screenshot.js:141 #: js/ui/screenshot.js:155
msgid "Screenshot taken" msgid "Screenshot taken"
msgstr "Сделан снимок экрана" msgstr "Сделан снимок экрана"
@ -2832,6 +2826,7 @@ msgstr "Необходимо указать UUID, имя и описание"
#: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46
#: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-info.c:50
#: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/command-list.c:64
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell\n" msgid "Failed to connect to GNOME Shell\n"
msgstr "Невозможно подключиться к GNOME Shell\n" msgstr "Невозможно подключиться к GNOME Shell\n"
@ -2848,7 +2843,7 @@ msgstr "Выключить расширение"
#: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-disable.c:119
#: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119
#: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-info.c:103
#: subprojects/extensions-tool/src/command-prefs.c:97 #: subprojects/extensions-tool/src/command-prefs.c:105
#: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-reset.c:76
#: subprojects/extensions-tool/src/command-uninstall.c:104 #: subprojects/extensions-tool/src/command-uninstall.c:104
msgid "No UUID given" msgid "No UUID given"
@ -2857,7 +2852,7 @@ msgstr "UUID не указан"
#: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-disable.c:124
#: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124
#: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-info.c:108
#: subprojects/extensions-tool/src/command-prefs.c:102 #: subprojects/extensions-tool/src/command-prefs.c:110
#: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-reset.c:81
#: subprojects/extensions-tool/src/command-uninstall.c:109 #: subprojects/extensions-tool/src/command-uninstall.c:109
msgid "More than one UUID given" msgid "More than one UUID given"
@ -2987,7 +2982,12 @@ msgstr "Указано больше одной исходной директор
msgid "Extension “%s” doesn't have preferences\n" msgid "Extension “%s” doesn't have preferences\n"
msgstr "Расширение «%s» не имеет настроек\n" msgstr "Расширение «%s» не имеет настроек\n"
#: subprojects/extensions-tool/src/command-prefs.c:79 #: subprojects/extensions-tool/src/command-prefs.c:62
#, c-format
msgid "Failed to open prefs for extension “%s”: %s\n"
msgstr "Не удалось открыть настройки для расширения \"%s\": %s\n"
#: subprojects/extensions-tool/src/command-prefs.c:87
msgid "Opens extension preferences" msgid "Opens extension preferences"
msgstr "Открыть параметры расширения" msgstr "Открыть параметры расширения"
@ -3012,10 +3012,6 @@ msgstr "Удалить расширение"
msgid "Do not print error messages" msgid "Do not print error messages"
msgstr "Не показывать сообщения об ошибках" msgstr "Не показывать сообщения об ошибках"
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell"
msgstr "Невозможно подключиться к GNOME Shell"
#: subprojects/extensions-tool/src/main.c:244 #: subprojects/extensions-tool/src/main.c:244
msgid "Path" msgid "Path"
msgstr "Путь" msgstr "Путь"
@ -3148,192 +3144,3 @@ msgstr[2] "%u входов"
msgid "System Sounds" msgid "System Sounds"
msgstr "Системные звуки" msgstr "Системные звуки"
#~ msgid "Minimize"
#~ msgstr "Свернуть"
#~ msgid "Unmaximize"
#~ msgstr "Вернуть прежний размер"
#~ msgid "App Picker View"
#~ msgstr "Экран выбора приложений"
#~ msgid "Index of the currently selected view in the application picker."
#~ msgstr "Индекс текущего выбранного экрана приложений."
#~ msgid "Frequently used applications will appear here"
#~ msgstr "Здесь появляются часто используемые приложения"
#~ msgid "Frequent"
#~ msgstr "Популярные"
#~ msgid "All"
#~ msgstr "Все"
#~ msgctxt "calendar heading"
#~ msgid "%A, %B %-d"
#~ msgstr "%A, %-d %B"
#~ msgctxt "calendar heading"
#~ msgid "%A, %B %-d, %Y"
#~ msgstr "%A, %-d %B %Y"
#~ msgid "Copy Error"
#~ msgstr "Скопировать ошибку"
#~ msgid "Off"
#~ msgstr "Выключено"
#~ msgid "On"
#~ msgstr "Включено"
# tweens — что-то типа анимации
#~ msgid ""
#~ "Keybinding that pauses and resumes all running tweens, for debugging "
#~ "purposes"
#~ msgstr ""
#~ "Комбинация клавиш, которая приостанавливает и возобновляет все запущенные "
#~ "анимации (для отладки)"
#~ msgid "Which keyboard to use"
#~ msgstr "Какую клавиатуру использовать"
#~ msgid "The type of keyboard to use."
#~ msgstr "Тип используемой клавиатуры."
#~ msgid "network-workgroup"
#~ msgstr "network-workgroup"
#~ msgid "Browse in Software"
#~ msgstr "Просмотреть в Центре приложений"
#~ msgid "Next"
#~ msgstr "Далее"
#~ msgctxt "button"
#~ msgid "Sign In"
#~ msgstr "Войти"
#~ msgid "Password:"
#~ msgstr "Пароль:"
#~ msgid "Type again:"
#~ msgstr "Введите ещё раз:"
#~ msgid "Password: "
#~ msgstr "Пароль: "
#~ msgid "Authentication required by wireless network"
#~ msgstr "Беспроводная сеть требует аутентификацию"
#~ msgid "Mobile broadband network password"
#~ msgstr "Пароль сети мобильной связи"
#~ msgid "toggle-switch-us"
#~ msgstr "toggle-switch-intl"
#~ msgid "%A, %B %d"
#~ msgstr "%A, %-d %B"
#~ msgid "%d new message"
#~ msgid_plural "%d new messages"
#~ msgstr[0] "%d новое сообщение"
#~ msgstr[1] "%d новых сообщения"
#~ msgstr[2] "%d новых сообщений"
#~ msgid "%d new notification"
#~ msgid_plural "%d new notifications"
#~ msgstr[0] "%d новое уведомление"
#~ msgstr[1] "%d новых уведомления"
#~ msgstr[2] "%d новых уведомлений"
#~ msgid "Account Settings"
#~ msgstr "Параметры учётных записей"
#~ msgid "Orientation Lock"
#~ msgstr "Заблокировать ориентацию"
#~ msgid "evolution"
#~ msgstr "evolution"
#~ msgid "There was an error loading the preferences dialog for %s:"
#~ msgstr "Возникла ошибка загрузки диалогового окна параметров для %s:"
#~ msgid "%s all day."
#~ msgstr "%s весь день."
#~ msgid "%s, then %s later."
#~ msgstr "%s, затем позднее %s."
#~ msgid "%s, then %s, followed by %s later."
#~ msgstr "%s, затем %s, позже %s."
#~ msgid "Feels like %s."
#~ msgstr "Ощущается как %s."
#~ msgctxt "search-result"
#~ msgid "Power off"
#~ msgstr "Выключение"
#~ msgctxt "search-result"
#~ msgid "Log out"
#~ msgstr "Завершение сеанса"
#~ msgctxt "search-result"
#~ msgid "Switch user"
#~ msgstr "Смена пользователя"
#~ msgid "Hide tray"
#~ msgstr "Скрыть лоток"
#~ msgid "Status Icons"
#~ msgstr "Значки состояния"
#~ msgid "Web Authentication Redirect"
#~ msgstr "Перенаправление для проверки подлинности"
#~ msgid "Events"
#~ msgstr "События"
#~ msgid "Notifications"
#~ msgstr "Уведомления"
#~ msgid "Clear section"
#~ msgstr "Очистить секцию"
#~ msgid "Media"
#~ msgstr "Медиа"
#~ msgid "Not In Use"
#~ msgstr "Не используется"
#~ msgid "%d x %d"
#~ msgstr "%d x %d"
#~ msgid "Show the week date in the calendar"
#~ msgstr "Показывать в календаре нумерацию недель"
#~ msgid "If true, display the ISO week date in the calendar."
#~ msgstr ""
#~ "Если включено, календарь будет показывать нумерацию недель в формате ISO."
#~ msgid "Use as Internet connection"
#~ msgstr "Использовать как Интернет-соединение"
#~ msgid "%s is requesting access to your location."
#~ msgstr "%s запрашивает доступ к вашему положению."
#~ msgid "GNOME Shell (wayland compositor)"
#~ msgstr "GNOME Shell (компоновщик wayland)"
#~ msgid "%d Connected Device"
#~ msgid_plural "%d Connected Devices"
#~ msgstr[0] "Подключено %d устройство"
#~ msgstr[1] "Подключено %d устройства"
#~ msgstr[2] "Подключено %d устройств"
# Источник Бесперебойного Питания
#~ msgid "UPS"
#~ msgstr "ИБП"
#~ msgid "Battery"
#~ msgstr "Батарея"

267
po/sl.po
View File

@ -8,8 +8,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2021-08-29 17:33+0000\n" "POT-Creation-Date: 2021-11-02 16:32+0000\n"
"PO-Revision-Date: 2021-08-30 21:12+0200\n" "PO-Revision-Date: 2021-11-02 17:49+0100\n"
"Last-Translator: Matej Urbančič <mateju@src.gnome.org>\n" "Last-Translator: Matej Urbančič <mateju@src.gnome.org>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n" "Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
"Language: sl\n" "Language: sl\n"
@ -19,7 +19,7 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
"%100==4 ? 3 : 0);\n" "%100==4 ? 3 : 0);\n"
"X-Poedit-SourceCharset: utf-8\n" "X-Poedit-SourceCharset: utf-8\n"
"X-Generator: Poedit 2.4.2\n" "X-Generator: Poedit 3.0\n"
#: data/50-gnome-shell-launchers.xml:6 #: data/50-gnome-shell-launchers.xml:6
msgid "Launchers" msgid "Launchers"
@ -251,21 +251,11 @@ msgstr ""
"različico in velike številke različice, ki še ne obstajajo. S temi velikimi " "različico in velike številke različice, ki še ne obstajajo. S temi velikimi "
"vrednostmi je mogoče preprečiti prikaz tega okna." "vrednostmi je mogoče preprečiti prikaz tega okna."
#: data/org.gnome.shell.gschema.xml.in:109 #: data/org.gnome.shell.gschema.xml.in:133
msgid "Enable introspection API"
msgstr "Omogoči API nadzora"
#: data/org.gnome.shell.gschema.xml.in:110
msgid ""
"Enables a D-Bus API that allows to introspect the application state of the "
"shell."
msgstr "Omogoči API sistema D-Bus, ki mogoča nadzor stanja programa lupine."
#: data/org.gnome.shell.gschema.xml.in:141
msgid "Layout of the app picker" msgid "Layout of the app picker"
msgstr "Pogled izbirnika programov" msgstr "Pogled izbirnika programov"
#: data/org.gnome.shell.gschema.xml.in:142 #: data/org.gnome.shell.gschema.xml.in:134
msgid "" msgid ""
"Layout of the app picker. Each entry in the array is a page. Pages are " "Layout of the app picker. Each entry in the array is a page. Pages are "
"stored in the order they appear in GNOME Shell. Each page contains an " "stored in the order they appear in GNOME Shell. Each page contains an "
@ -277,105 +267,105 @@ msgstr ""
"»ID programa« → »podatki«. Trenutno so kot podatki shranjeni:: • »položaj«: " "»ID programa« → »podatki«. Trenutno so kot podatki shranjeni:: • »položaj«: "
"položaj ikone programa na strani" "položaj ikone programa na strani"
#: data/org.gnome.shell.gschema.xml.in:157 #: data/org.gnome.shell.gschema.xml.in:149
msgid "Keybinding to open the application menu" msgid "Keybinding to open the application menu"
msgstr "Tipkovna bližnjica, ki odpre meni programov" msgstr "Tipkovna bližnjica, ki odpre meni programov"
#: data/org.gnome.shell.gschema.xml.in:158 #: data/org.gnome.shell.gschema.xml.in:150
msgid "Keybinding to open the application menu." msgid "Keybinding to open the application menu."
msgstr "Tipkovna bližnjica, ki odpre meni programov." msgstr "Tipkovna bližnjica, ki odpre meni programov."
#: data/org.gnome.shell.gschema.xml.in:164 #: data/org.gnome.shell.gschema.xml.in:156
#: data/org.gnome.shell.gschema.xml.in:171 #: data/org.gnome.shell.gschema.xml.in:163
msgid "Keybinding to shift between overview states" msgid "Keybinding to shift between overview states"
msgstr "Tipkovna bližnjica za preklop med stanji pregleda" msgstr "Tipkovna bližnjica za preklop med stanji pregleda"
#: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:157
msgid "Keybinding to shift between session, window picker and app grid" msgid "Keybinding to shift between session, window picker and app grid"
msgstr "" msgstr ""
"Tipkovna bližnjica za preklop med sejo, izbirniki oken in programsko mrežo" "Tipkovna bližnjica za preklop med sejo, izbirniki oken in programsko mrežo"
#: data/org.gnome.shell.gschema.xml.in:172 #: data/org.gnome.shell.gschema.xml.in:164
msgid "Keybinding to shift between app grid, window picker and session" msgid "Keybinding to shift between app grid, window picker and session"
msgstr "" msgstr ""
"Tipkovna bližnjica za preklop med programsko mrežo, izbirniki oken in sejo" "Tipkovna bližnjica za preklop med programsko mrežo, izbirniki oken in sejo"
#: data/org.gnome.shell.gschema.xml.in:178 #: data/org.gnome.shell.gschema.xml.in:170
msgid "Keybinding to open the “Show Applications” view" msgid "Keybinding to open the “Show Applications” view"
msgstr "Tipkovna bližnjica, ki odpre pogled »Pokaži programe«" msgstr "Tipkovna bližnjica, ki odpre pogled »Pokaži programe«"
#: data/org.gnome.shell.gschema.xml.in:179 #: data/org.gnome.shell.gschema.xml.in:171
msgid "" msgid ""
"Keybinding to open the “Show Applications” view of the Activities Overview." "Keybinding to open the “Show Applications” view of the Activities Overview."
msgstr "" msgstr ""
"Tipkovna bližnjica, ki odpre pogled »Pokaži programe« v pregledu dejavnosti." "Tipkovna bližnjica, ki odpre pogled »Pokaži programe« v pregledu dejavnosti."
#: data/org.gnome.shell.gschema.xml.in:186 #: data/org.gnome.shell.gschema.xml.in:178
msgid "Keybinding to open the overview" msgid "Keybinding to open the overview"
msgstr "Tipkovna bližnjica, ki odpre pogled pregleda" msgstr "Tipkovna bližnjica, ki odpre pogled pregleda"
#: data/org.gnome.shell.gschema.xml.in:187 #: data/org.gnome.shell.gschema.xml.in:179
msgid "Keybinding to open the Activities Overview." msgid "Keybinding to open the Activities Overview."
msgstr "Tipkovna bližnjica, ki odpre pogled pregleda dejavnosti." msgstr "Tipkovna bližnjica, ki odpre pogled pregleda dejavnosti."
#: data/org.gnome.shell.gschema.xml.in:193 #: data/org.gnome.shell.gschema.xml.in:185
msgid "Keybinding to toggle the visibility of the notification list" msgid "Keybinding to toggle the visibility of the notification list"
msgstr "Tipkovna bližnjica za preklop vidnosti seznama obvestil" msgstr "Tipkovna bližnjica za preklop vidnosti seznama obvestil"
#: data/org.gnome.shell.gschema.xml.in:194 #: data/org.gnome.shell.gschema.xml.in:186
msgid "Keybinding to toggle the visibility of the notification list." msgid "Keybinding to toggle the visibility of the notification list."
msgstr "Tipkovna bližnjica za preklop vidnosti seznama obvestil." msgstr "Tipkovna bližnjica za preklop vidnosti seznama obvestil."
#: data/org.gnome.shell.gschema.xml.in:200 #: data/org.gnome.shell.gschema.xml.in:192
msgid "Keybinding to focus the active notification" msgid "Keybinding to focus the active notification"
msgstr "Tipkovna bližnjica za prikaz dejavnega obvestila" msgstr "Tipkovna bližnjica za prikaz dejavnega obvestila"
#: data/org.gnome.shell.gschema.xml.in:201 #: data/org.gnome.shell.gschema.xml.in:193
msgid "Keybinding to focus the active notification." msgid "Keybinding to focus the active notification."
msgstr "Tipkovna bližnjica za prikaz dejavnega obvestila." msgstr "Tipkovna bližnjica za prikaz dejavnega obvestila."
#: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:199
msgid "Switch to application 1" msgid "Switch to application 1"
msgstr "Preklopi na program 1" msgstr "Preklopi na program 1"
#: data/org.gnome.shell.gschema.xml.in:211 #: data/org.gnome.shell.gschema.xml.in:203
msgid "Switch to application 2" msgid "Switch to application 2"
msgstr "Preklopi na program 2" msgstr "Preklopi na program 2"
#: data/org.gnome.shell.gschema.xml.in:215 #: data/org.gnome.shell.gschema.xml.in:207
msgid "Switch to application 3" msgid "Switch to application 3"
msgstr "Preklopi na program 3" msgstr "Preklopi na program 3"
#: data/org.gnome.shell.gschema.xml.in:219 #: data/org.gnome.shell.gschema.xml.in:211
msgid "Switch to application 4" msgid "Switch to application 4"
msgstr "Preklopi na program 4" msgstr "Preklopi na program 4"
#: data/org.gnome.shell.gschema.xml.in:223 #: data/org.gnome.shell.gschema.xml.in:215
msgid "Switch to application 5" msgid "Switch to application 5"
msgstr "Preklopi na program 5" msgstr "Preklopi na program 5"
#: data/org.gnome.shell.gschema.xml.in:227 #: data/org.gnome.shell.gschema.xml.in:219
msgid "Switch to application 6" msgid "Switch to application 6"
msgstr "Preklopi na program 6" msgstr "Preklopi na program 6"
#: data/org.gnome.shell.gschema.xml.in:231 #: data/org.gnome.shell.gschema.xml.in:223
msgid "Switch to application 7" msgid "Switch to application 7"
msgstr "Preklopi na program 7" msgstr "Preklopi na program 7"
#: data/org.gnome.shell.gschema.xml.in:235 #: data/org.gnome.shell.gschema.xml.in:227
msgid "Switch to application 8" msgid "Switch to application 8"
msgstr "Preklopi na program 8" msgstr "Preklopi na program 8"
#: data/org.gnome.shell.gschema.xml.in:239 #: data/org.gnome.shell.gschema.xml.in:231
msgid "Switch to application 9" msgid "Switch to application 9"
msgstr "Preklopi na program 9" msgstr "Preklopi na program 9"
#: data/org.gnome.shell.gschema.xml.in:248 #: data/org.gnome.shell.gschema.xml.in:240
#: data/org.gnome.shell.gschema.xml.in:275 #: data/org.gnome.shell.gschema.xml.in:267
msgid "Limit switcher to current workspace." msgid "Limit switcher to current workspace."
msgstr "Omeji preklopnik na trenutno delovno površino." msgstr "Omeji preklopnik na trenutno delovno površino."
#: data/org.gnome.shell.gschema.xml.in:249 #: data/org.gnome.shell.gschema.xml.in:241
msgid "" msgid ""
"If true, only applications that have windows on the current workspace are " "If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included." "shown in the switcher. Otherwise, all applications are included."
@ -384,11 +374,11 @@ msgstr ""
"v izbrani delovni površini v preklopniku. V nasprotnem primeru so prikazana " "v izbrani delovni površini v preklopniku. V nasprotnem primeru so prikazana "
"vsa okna." "vsa okna."
#: data/org.gnome.shell.gschema.xml.in:266 #: data/org.gnome.shell.gschema.xml.in:258
msgid "The application icon mode." msgid "The application icon mode."
msgstr "Ikonski način programa." msgstr "Ikonski način programa."
#: data/org.gnome.shell.gschema.xml.in:267 #: data/org.gnome.shell.gschema.xml.in:259
msgid "" msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities " "Configures how the windows are shown in the switcher. Valid possibilities "
"are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-"
@ -398,7 +388,7 @@ msgstr ""
"sličice»« (pokaže le sličice oken), »le ikona« (pokaže ikono programa) in pa " "sličice»« (pokaže le sličice oken), »le ikona« (pokaže ikono programa) in pa "
"možnost »oboje«." "možnost »oboje«."
#: data/org.gnome.shell.gschema.xml.in:276 #: data/org.gnome.shell.gschema.xml.in:268
msgid "" msgid ""
"If true, only windows from the current workspace are shown in the switcher. " "If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included." "Otherwise, all windows are included."
@ -406,57 +396,57 @@ msgstr ""
"Izbrana možnost določa, da bodo v trenutnem pogledu prikazana le okna v " "Izbrana možnost določa, da bodo v trenutnem pogledu prikazana le okna v "
"preklopniku. V nasprotnem primeru so prikazana vsa okna." "preklopniku. V nasprotnem primeru so prikazana vsa okna."
#: data/org.gnome.shell.gschema.xml.in:286 #: data/org.gnome.shell.gschema.xml.in:278
msgid "Locations" msgid "Locations"
msgstr "Mesta" msgstr "Mesta"
#: data/org.gnome.shell.gschema.xml.in:287 #: data/org.gnome.shell.gschema.xml.in:279
msgid "The locations to show in world clocks" msgid "The locations to show in world clocks"
msgstr "Mesta, za katere naj bodo prikazani svetovni časi" msgstr "Mesta, za katere naj bodo prikazani svetovni časi"
#: data/org.gnome.shell.gschema.xml.in:297 #: data/org.gnome.shell.gschema.xml.in:289
msgid "Automatic location" msgid "Automatic location"
msgstr "Samodejno določanje mesta" msgstr "Samodejno določanje mesta"
#: data/org.gnome.shell.gschema.xml.in:298 #: data/org.gnome.shell.gschema.xml.in:290
msgid "Whether to fetch the current location or not" msgid "Whether to fetch the current location or not"
msgstr "Ali naj program pridobi trenutno mesto ali ne" msgstr "Ali naj program pridobi trenutno mesto ali ne"
#: data/org.gnome.shell.gschema.xml.in:305 #: data/org.gnome.shell.gschema.xml.in:297
msgid "Location" msgid "Location"
msgstr "Trenutno mesto" msgstr "Trenutno mesto"
#: data/org.gnome.shell.gschema.xml.in:306 #: data/org.gnome.shell.gschema.xml.in:298
msgid "The location for which to show a forecast" msgid "The location for which to show a forecast"
msgstr "Mesto, za katero naj bo pokazana napoved" msgstr "Mesto, za katero naj bo pokazana napoved"
#: data/org.gnome.shell.gschema.xml.in:318 #: data/org.gnome.shell.gschema.xml.in:310
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
msgstr "Pripni modalno pogovorno okno na glavno okno" msgstr "Pripni modalno pogovorno okno na glavno okno"
#: data/org.gnome.shell.gschema.xml.in:319 #: data/org.gnome.shell.gschema.xml.in:311
#: data/org.gnome.shell.gschema.xml.in:320
#: data/org.gnome.shell.gschema.xml.in:328 #: data/org.gnome.shell.gschema.xml.in:328
#: data/org.gnome.shell.gschema.xml.in:336 #: data/org.gnome.shell.gschema.xml.in:336
#: data/org.gnome.shell.gschema.xml.in:344 #: data/org.gnome.shell.gschema.xml.in:344
#: data/org.gnome.shell.gschema.xml.in:352
msgid "" msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell." "This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "" msgstr ""
"Ključ prepiše vrednost v org.gnome.mutter med zaganjanjem lupine GNOME." "Ključ prepiše vrednost v org.gnome.mutter med zaganjanjem lupine GNOME."
#: data/org.gnome.shell.gschema.xml.in:327 #: data/org.gnome.shell.gschema.xml.in:319
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Omogoči utripanje črte med spuščanjem okna na robove zaslona" msgstr "Omogoči utripanje črte med spuščanjem okna na robove zaslona"
#: data/org.gnome.shell.gschema.xml.in:335 #: data/org.gnome.shell.gschema.xml.in:327
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "Delovne površine se obravnavajo dinamično" msgstr "Delovne površine se obravnavajo dinamično"
#: data/org.gnome.shell.gschema.xml.in:343 #: data/org.gnome.shell.gschema.xml.in:335
msgid "Workspaces only on primary monitor" msgid "Workspaces only on primary monitor"
msgstr "Delovne površine so le na osnovnem zaslonu" msgstr "Delovne površine so le na osnovnem zaslonu"
#: data/org.gnome.shell.gschema.xml.in:351 #: data/org.gnome.shell.gschema.xml.in:343
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "" msgstr ""
"Zamik žarišča se v načinu miške spreminja, dokler se kazalnik ne neha " "Zamik žarišča se v načinu miške spreminja, dokler se kazalnik ne neha "
@ -493,18 +483,18 @@ msgid "Visit extension homepage"
msgstr "Odpri spletno stran razširitev" msgstr "Odpri spletno stran razširitev"
#: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61 #: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61
#: js/ui/components/networkAgent.js:111 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:230 #: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:228
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183 #: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183
msgid "Cancel" msgid "Cancel"
msgstr "Prekliči" msgstr "Prekliči"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:210 #: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:209
#: js/ui/components/networkAgent.js:226 js/ui/components/networkAgent.js:250 #: js/ui/components/networkAgent.js:225 js/ui/components/networkAgent.js:249
#: js/ui/components/networkAgent.js:271 js/ui/components/networkAgent.js:291 #: js/ui/components/networkAgent.js:270 js/ui/components/networkAgent.js:290
#: js/ui/components/networkAgent.js:301 js/ui/components/polkitAgent.js:275 #: js/ui/components/networkAgent.js:300 js/ui/components/polkitAgent.js:275
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Geslo" msgstr "Geslo"
@ -527,8 +517,8 @@ msgstr "(na primer, uporabnika ali %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:246 #: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:245
#: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:287 #: js/ui/components/networkAgent.js:268 js/ui/components/networkAgent.js:286
msgid "Username" msgid "Username"
msgstr "Uporabniško ime" msgstr "Uporabniško ime"
@ -634,26 +624,26 @@ msgctxt "search-result"
msgid "Lock Screen Rotation" msgid "Lock Screen Rotation"
msgstr "Vrtenje zaklepanja zaslona" msgstr "Vrtenje zaklepanja zaslona"
#: js/misc/util.js:120 #: js/misc/util.js:121
msgid "Command not found" msgid "Command not found"
msgstr "Ukaz ni mogoče najti" msgstr "Ukaz ni mogoče najti"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: js/misc/util.js:156 #: js/misc/util.js:157
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Ukaza ni mogoče razčleniti:" msgstr "Ukaza ni mogoče razčleniti:"
#: js/misc/util.js:164 #: js/misc/util.js:165
#, javascript-format #, javascript-format
msgid "Execution of “%s” failed:" msgid "Execution of “%s” failed:"
msgstr "Izvedba »%s« je spodletela:" msgstr "Izvedba »%s« je spodletela:"
#: js/misc/util.js:181 #: js/misc/util.js:182
msgid "Just now" msgid "Just now"
msgstr "Ravnokar" msgstr "Ravnokar"
#: js/misc/util.js:183 #: js/misc/util.js:184
#, javascript-format #, javascript-format
msgid "%d minute ago" msgid "%d minute ago"
msgid_plural "%d minutes ago" msgid_plural "%d minutes ago"
@ -662,7 +652,7 @@ msgstr[1] "Pred %d minuto"
msgstr[2] "Pred %d minutama" msgstr[2] "Pred %d minutama"
msgstr[3] "Pred %d minutami" msgstr[3] "Pred %d minutami"
#: js/misc/util.js:187 #: js/misc/util.js:188
#, javascript-format #, javascript-format
msgid "%d hour ago" msgid "%d hour ago"
msgid_plural "%d hours ago" msgid_plural "%d hours ago"
@ -671,11 +661,11 @@ msgstr[1] "Pred %d uro"
msgstr[2] "Pred %d urama" msgstr[2] "Pred %d urama"
msgstr[3] "Pred %d urami" msgstr[3] "Pred %d urami"
#: js/misc/util.js:191 js/ui/dateMenu.js:162 #: js/misc/util.js:192 js/ui/dateMenu.js:162
msgid "Yesterday" msgid "Yesterday"
msgstr "Včeraj" msgstr "Včeraj"
#: js/misc/util.js:193 #: js/misc/util.js:194
#, javascript-format #, javascript-format
msgid "%d day ago" msgid "%d day ago"
msgid_plural "%d days ago" msgid_plural "%d days ago"
@ -684,7 +674,7 @@ msgstr[1] "Pred %d dnevom"
msgstr[2] "Pred %d dnevoma" msgstr[2] "Pred %d dnevoma"
msgstr[3] "Pred %d dnevi" msgstr[3] "Pred %d dnevi"
#: js/misc/util.js:197 #: js/misc/util.js:198
#, javascript-format #, javascript-format
msgid "%d week ago" msgid "%d week ago"
msgid_plural "%d weeks ago" msgid_plural "%d weeks ago"
@ -693,7 +683,7 @@ msgstr[1] "Pred %d tednom"
msgstr[2] "Pred %d tednoma" msgstr[2] "Pred %d tednoma"
msgstr[3] "Pred %d tedni" msgstr[3] "Pred %d tedni"
#: js/misc/util.js:201 #: js/misc/util.js:202
#, javascript-format #, javascript-format
msgid "%d month ago" msgid "%d month ago"
msgid_plural "%d months ago" msgid_plural "%d months ago"
@ -702,7 +692,7 @@ msgstr[1] "Pred %d mesecem"
msgstr[2] "Pred %d mesecema" msgstr[2] "Pred %d mesecema"
msgstr[3] "Pred %d meseci" msgstr[3] "Pred %d meseci"
#: js/misc/util.js:204 #: js/misc/util.js:205
#, javascript-format #, javascript-format
msgid "%d year ago" msgid "%d year ago"
msgid_plural "%d years ago" msgid_plural "%d years ago"
@ -712,20 +702,20 @@ msgstr[2] "Pred %d letoma"
msgstr[3] "Pred %d leti" msgstr[3] "Pred %d leti"
#. Translators: Time in 24h format #. Translators: Time in 24h format
#: js/misc/util.js:237 #: js/misc/util.js:238
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" #. time string in 24h format. i.e. "Yesterday, 14:30"
#: js/misc/util.js:243 #: js/misc/util.js:244
#, no-c-format #, no-c-format
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "Včeraj, %H:%M" msgstr "Včeraj, %H:%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" #. string in 24h format. i.e. "Monday, 14:30"
#: js/misc/util.js:249 #: js/misc/util.js:250
#, no-c-format #, no-c-format
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %H%M" msgstr "%A, %H%M"
@ -733,7 +723,7 @@ msgstr "%A, %H%M"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" #. i.e. "May 25, 14:30"
#: js/misc/util.js:255 #: js/misc/util.js:256
#, no-c-format #, no-c-format
msgid "%B %-d, %H%M" msgid "%B %-d, %H%M"
msgstr "%d %B, %H%M" msgstr "%d %B, %H%M"
@ -741,7 +731,7 @@ msgstr "%d %B, %H%M"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" #. i.e. "May 25 2012, 14:30"
#: js/misc/util.js:261 #: js/misc/util.js:262
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %H%M" msgid "%B %-d %Y, %H%M"
msgstr "%d. %B %Y, %H%M" msgstr "%d. %B %Y, %H%M"
@ -749,20 +739,20 @@ msgstr "%d. %B %Y, %H%M"
#. Show only the time if date is on today #. Show only the time if date is on today
#. eslint-disable-line no-lonely-if #. eslint-disable-line no-lonely-if
#. Translators: Time in 12h format #. Translators: Time in 12h format
#: js/misc/util.js:266 #: js/misc/util.js:267
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%l%M %p" msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" #. time string in 12h format. i.e. "Yesterday, 2:30 pm"
#: js/misc/util.js:272 #: js/misc/util.js:273
#, no-c-format #, no-c-format
msgid "Yesterday, %l%M %p" msgid "Yesterday, %l%M %p"
msgstr "Včeraj, %l%M %p" msgstr "Včeraj, %l%M %p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" #. string in 12h format. i.e. "Monday, 2:30 pm"
#: js/misc/util.js:278 #: js/misc/util.js:279
#, no-c-format #, no-c-format
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %l%M %p" msgstr "%A, %l%M %p"
@ -770,7 +760,7 @@ msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" #. i.e. "May 25, 2:30 pm"
#: js/misc/util.js:284 #: js/misc/util.js:285
#, no-c-format #, no-c-format
msgid "%B %-d, %l%M %p" msgid "%B %-d, %l%M %p"
msgstr "%d. %B, %l%M %p" msgstr "%d. %B, %l%M %p"
@ -778,7 +768,7 @@ msgstr "%d. %B, %l%M %p"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format. #. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm" #. i.e. "May 25 2012, 2:30 pm"
#: js/misc/util.js:290 #: js/misc/util.js:291
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %l%M %p" msgid "%B %-d %Y, %l%M %p"
msgstr "%d. %B %Y, %l%M %p" msgstr "%d. %B %Y, %l%M %p"
@ -1033,38 +1023,38 @@ msgstr "Nameščena različica udisks ne podpira nastavitev PIM"
msgid "Open with %s" msgid "Open with %s"
msgstr "Odpri s programom %s" msgstr "Odpri s programom %s"
#: js/ui/components/networkAgent.js:93 #: js/ui/components/networkAgent.js:92
msgid "" msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router." "Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "Vzpostavitev povezave je mogoča tudi z gumbom »WPS« na usmerjevalniku." msgstr "Vzpostavitev povezave je mogoča tudi z gumbom »WPS« na usmerjevalniku."
#: js/ui/components/networkAgent.js:105 js/ui/status/network.js:258 #: js/ui/components/networkAgent.js:104 js/ui/status/network.js:258
#: js/ui/status/network.js:349 js/ui/status/network.js:981 #: js/ui/status/network.js:349 js/ui/status/network.js:981
msgid "Connect" msgid "Connect"
msgstr "Poveži" msgstr "Poveži"
#: js/ui/components/networkAgent.js:216 #: js/ui/components/networkAgent.js:215
msgid "Key" msgid "Key"
msgstr "Ključ" msgstr "Ključ"
#: js/ui/components/networkAgent.js:254 js/ui/components/networkAgent.js:277 #: js/ui/components/networkAgent.js:253 js/ui/components/networkAgent.js:276
msgid "Private key password" msgid "Private key password"
msgstr "Geslo zasebnega ključa" msgstr "Geslo zasebnega ključa"
#: js/ui/components/networkAgent.js:275 #: js/ui/components/networkAgent.js:274
msgid "Identity" msgid "Identity"
msgstr "Istovetnost" msgstr "Istovetnost"
#: js/ui/components/networkAgent.js:289 #: js/ui/components/networkAgent.js:288
msgid "Service" msgid "Service"
msgstr "Storitev" msgstr "Storitev"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:346 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:345
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "Zahtevana je overitev" msgstr "Zahtevana je overitev"
#: js/ui/components/networkAgent.js:319 js/ui/components/networkAgent.js:680 #: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:680
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@ -1073,31 +1063,31 @@ msgstr ""
"Za povezavo v brezžično omrežje »%s« je zahtevano geslo oziroma šifrirni " "Za povezavo v brezžično omrežje »%s« je zahtevano geslo oziroma šifrirni "
"ključ." "ključ."
#: js/ui/components/networkAgent.js:323 js/ui/components/networkAgent.js:684 #: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:684
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Žična overitev 802.1X" msgstr "Žična overitev 802.1X"
#: js/ui/components/networkAgent.js:325 #: js/ui/components/networkAgent.js:324
msgid "Network name" msgid "Network name"
msgstr "Naziv omrežja" msgstr "Naziv omrežja"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:688 #: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Overitev DSL" msgstr "Overitev DSL"
#: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:693 #: js/ui/components/networkAgent.js:336 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "Zahtevana koda PIN" msgstr "Zahtevana koda PIN"
#: js/ui/components/networkAgent.js:338 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Za napravo mobilnega širokopasovnega dostopa je zahtevana koda PIN." msgstr "Za napravo mobilnega širokopasovnega dostopa je zahtevana koda PIN."
#: js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:338
msgid "PIN" msgid "PIN"
msgstr "Koda PIN" msgstr "Koda PIN"
#: js/ui/components/networkAgent.js:347 js/ui/components/networkAgent.js:685 #: js/ui/components/networkAgent.js:346 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:705 #: js/ui/components/networkAgent.js:705
#, javascript-format #, javascript-format
@ -1401,24 +1391,24 @@ msgstr "%s (oddaljeno)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konzola)" msgstr "%s (konzola)"
#: js/ui/extensionDownloader.js:234 #: js/ui/extensionDownloader.js:232
msgid "Install" msgid "Install"
msgstr "Namesti" msgstr "Namesti"
#: js/ui/extensionDownloader.js:240 #: js/ui/extensionDownloader.js:238
msgid "Install Extension" msgid "Install Extension"
msgstr "Namesti razširitev" msgstr "Namesti razširitev"
#: js/ui/extensionDownloader.js:241 #: js/ui/extensionDownloader.js:239
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Ali želite prejeti in namestiti »%s« prek extensions.gnome.org?" msgstr "Ali želite prejeti in namestiti »%s« prek extensions.gnome.org?"
#: js/ui/extensionSystem.js:253 #: js/ui/extensionSystem.js:252
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "Na voljo so posodobitve razširitev" msgstr "Na voljo so posodobitve razširitev"
#: js/ui/extensionSystem.js:254 #: js/ui/extensionSystem.js:253
msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed."
msgstr "Posodobitve razširitev so pripravljene na namestitev." msgstr "Posodobitve razširitev so pripravljene na namestitev."
@ -1513,7 +1503,7 @@ msgstr "Onemogoči"
msgid "Leave Off" msgid "Leave Off"
msgstr "Pusti onemogočeno" msgstr "Pusti onemogočeno"
#: js/ui/keyboard.js:227 #: js/ui/keyboard.js:226
msgid "Region & Language Settings" msgid "Region & Language Settings"
msgstr "Nastavitve območja in jezika" msgstr "Nastavitve območja in jezika"
@ -1566,11 +1556,11 @@ msgstr "Poglej vir"
msgid "Web Page" msgid "Web Page"
msgstr "Spletna stran" msgstr "Spletna stran"
#: js/ui/main.js:294 #: js/ui/main.js:290
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Zaznana je prijava s skrbniškimi dovoljenji" msgstr "Zaznana je prijava s skrbniškimi dovoljenji"
#: js/ui/main.js:295 #: js/ui/main.js:291
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@ -1578,11 +1568,11 @@ msgstr ""
"Zagona seje s skrbniškim računom se je treba iz varnostnih razlogov " "Zagona seje s skrbniškim računom se je treba iz varnostnih razlogov "
"izogibati. Priporočljivo je uporabljati običajen uporabniški račun." "izogibati. Priporočljivo je uporabljati običajen uporabniški račun."
#: js/ui/main.js:344 #: js/ui/main.js:340
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Zaklep zaslona je onemogočen" msgstr "Zaklep zaslona je onemogočen"
#: js/ui/main.js:345 #: js/ui/main.js:341
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "" msgstr ""
"Zaklepanje zaslona zahteva namestitev upravljalnika zaslona za okolje GNOME." "Zaklepanje zaslona zahteva namestitev upravljalnika zaslona za okolje GNOME."
@ -1621,47 +1611,47 @@ msgstr "Razveljavi"
msgid "Overview" msgid "Overview"
msgstr "Pregled" msgstr "Pregled"
#: js/ui/padOsd.js:96 #: js/ui/padOsd.js:95
msgid "New shortcut…" msgid "New shortcut…"
msgstr "Nova bližnjica …" msgstr "Nova bližnjica …"
#: js/ui/padOsd.js:143 #: js/ui/padOsd.js:142
msgid "Application defined" msgid "Application defined"
msgstr "Program je določen" msgstr "Program je določen"
#: js/ui/padOsd.js:144 #: js/ui/padOsd.js:143
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Pokaži zaslonsko pomoč" msgstr "Pokaži zaslonsko pomoč"
#: js/ui/padOsd.js:145 #: js/ui/padOsd.js:144
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Nadzornik preklopa" msgstr "Nadzornik preklopa"
#: js/ui/padOsd.js:146 #: js/ui/padOsd.js:145
msgid "Assign keystroke" msgid "Assign keystroke"
msgstr "Dodeli tipkovno bližnjico" msgstr "Dodeli tipkovno bližnjico"
#: js/ui/padOsd.js:212 #: js/ui/padOsd.js:211
msgid "Done" msgid "Done"
msgstr "Končano" msgstr "Končano"
#: js/ui/padOsd.js:718 #: js/ui/padOsd.js:716
msgid "Edit…" msgid "Edit…"
msgstr "Uredi …" msgstr "Uredi …"
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877 #: js/ui/padOsd.js:758 js/ui/padOsd.js:875
msgid "None" msgid "None"
msgstr "Brez" msgstr "Brez"
#: js/ui/padOsd.js:831 #: js/ui/padOsd.js:829
msgid "Press a button to configure" msgid "Press a button to configure"
msgstr "Pritisnite gumb za nastavitev" msgstr "Pritisnite gumb za nastavitev"
#: js/ui/padOsd.js:832 #: js/ui/padOsd.js:830
msgid "Press Esc to exit" msgid "Press Esc to exit"
msgstr "Pritisnite tipko Esc za končanje" msgstr "Pritisnite tipko Esc za končanje"
#: js/ui/padOsd.js:835 #: js/ui/padOsd.js:833
msgid "Press any key to exit" msgid "Press any key to exit"
msgstr "Pritisnite katerokoli tipko za končanje" msgstr "Pritisnite katerokoli tipko za končanje"
@ -1671,12 +1661,12 @@ msgstr "Pritisnite katerokoli tipko za končanje"
msgid "Activities" msgid "Activities"
msgstr "Dejavnosti" msgstr "Dejavnosti"
#: js/ui/panel.js:542 #: js/ui/panel.js:556
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Sistem" msgstr "Sistem"
#: js/ui/panel.js:658 #: js/ui/panel.js:674
msgid "Top Bar" msgid "Top Bar"
msgstr "Vrhnja vrstica" msgstr "Vrhnja vrstica"
@ -1715,7 +1705,7 @@ msgstr "Zaklep ni mogoč"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Zaklep je preprečil program" msgstr "Zaklep je preprečil program"
#: js/ui/screenshot.js:141 #: js/ui/screenshot.js:155
msgid "Screenshot taken" msgid "Screenshot taken"
msgstr "Zaslonska slika je zajeta" msgstr "Zaslonska slika je zajeta"
@ -2781,6 +2771,7 @@ msgstr "Zahtevani so določilo UUID, ime in opis"
#: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46
#: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-info.c:50
#: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/command-list.c:64
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell\n" msgid "Failed to connect to GNOME Shell\n"
msgstr "Povezava z Lupino GNOME je spodletela\n" msgstr "Povezava z Lupino GNOME je spodletela\n"
@ -2797,7 +2788,7 @@ msgstr "Onemogoči razširitev"
#: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-disable.c:119
#: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119
#: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-info.c:103
#: subprojects/extensions-tool/src/command-prefs.c:97 #: subprojects/extensions-tool/src/command-prefs.c:105
#: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-reset.c:76
#: subprojects/extensions-tool/src/command-uninstall.c:104 #: subprojects/extensions-tool/src/command-uninstall.c:104
msgid "No UUID given" msgid "No UUID given"
@ -2806,7 +2797,7 @@ msgstr "Ni podanega UUID"
#: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-disable.c:124
#: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124
#: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-info.c:108
#: subprojects/extensions-tool/src/command-prefs.c:102 #: subprojects/extensions-tool/src/command-prefs.c:110
#: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-reset.c:81
#: subprojects/extensions-tool/src/command-uninstall.c:109 #: subprojects/extensions-tool/src/command-uninstall.c:109
msgid "More than one UUID given" msgid "More than one UUID given"
@ -2936,7 +2927,12 @@ msgstr "Določena je več kot ena izvorna mapa"
msgid "Extension “%s” doesn't have preferences\n" msgid "Extension “%s” doesn't have preferences\n"
msgstr "Razširitev »%s« nima posebnih nastavitev\n" msgstr "Razširitev »%s« nima posebnih nastavitev\n"
#: subprojects/extensions-tool/src/command-prefs.c:79 #: subprojects/extensions-tool/src/command-prefs.c:62
#, c-format
msgid "Failed to open prefs for extension “%s”: %s\n"
msgstr "Odpiranje lastnosti razširitve »%s« je spodletelo: %s\n"
#: subprojects/extensions-tool/src/command-prefs.c:87
msgid "Opens extension preferences" msgid "Opens extension preferences"
msgstr "Odpre možnosti razširitve" msgstr "Odpre možnosti razširitve"
@ -2961,10 +2957,6 @@ msgstr "Odstrani razširitev"
msgid "Do not print error messages" msgid "Do not print error messages"
msgstr "Ne izpisuj sporočil o napakah" msgstr "Ne izpisuj sporočil o napakah"
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell"
msgstr "Povezava z Lupino GNOME je spodletela"
#: subprojects/extensions-tool/src/main.c:244 #: subprojects/extensions-tool/src/main.c:244
msgid "Path" msgid "Path"
msgstr "Pot" msgstr "Pot"
@ -3099,6 +3091,17 @@ msgstr[3] "%u dovodi naprave"
msgid "System Sounds" msgid "System Sounds"
msgstr "Sistemski zvoki" msgstr "Sistemski zvoki"
#~ msgid "Enable introspection API"
#~ msgstr "Omogoči API nadzora"
#~ msgid ""
#~ "Enables a D-Bus API that allows to introspect the application state of "
#~ "the shell."
#~ msgstr "Omogoči API sistema D-Bus, ki mogoča nadzor stanja programa lupine."
#~ msgid "Failed to connect to GNOME Shell"
#~ msgstr "Povezava z Lupino GNOME je spodletela"
#~ msgid "Minimize" #~ msgid "Minimize"
#~ msgstr "Skrči" #~ msgstr "Skrči"

277
po/sv.po
View File

@ -12,9 +12,9 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2021-08-17 23:56+0000\n" "POT-Creation-Date: 2021-11-02 16:54+0000\n"
"PO-Revision-Date: 2021-08-18 12:41+0200\n" "PO-Revision-Date: 2021-11-02 22:03+0100\n"
"Last-Translator: Luna Jernberg <droidbittin@gmail.com>\n" "Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n" "Language: sv\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -254,23 +254,11 @@ msgstr ""
"ett enormt tal kommer motsvara versioner som inte finns ännu. Detta enorma " "ett enormt tal kommer motsvara versioner som inte finns ännu. Detta enorma "
"tal kan användas för att inaktivera dialogrutan." "tal kan användas för att inaktivera dialogrutan."
#: data/org.gnome.shell.gschema.xml.in:109 #: data/org.gnome.shell.gschema.xml.in:133
msgid "Enable introspection API"
msgstr "Aktivera introspektions-API"
#: data/org.gnome.shell.gschema.xml.in:110
msgid ""
"Enables a D-Bus API that allows to introspect the application state of the "
"shell."
msgstr ""
"Aktiverar ett D-Bus-API som tillåter introspektion av programtillståndet för "
"skalet."
#: data/org.gnome.shell.gschema.xml.in:141
msgid "Layout of the app picker" msgid "Layout of the app picker"
msgstr "Layout för programväljaren" msgstr "Layout för programväljaren"
#: data/org.gnome.shell.gschema.xml.in:142 #: data/org.gnome.shell.gschema.xml.in:134
msgid "" msgid ""
"Layout of the app picker. Each entry in the array is a page. Pages are " "Layout of the app picker. Each entry in the array is a page. Pages are "
"stored in the order they appear in GNOME Shell. Each page contains an " "stored in the order they appear in GNOME Shell. Each page contains an "
@ -282,104 +270,104 @@ msgstr ""
"”program-ID” → ”data”. För närvarande lagras följande värde som ”data”: • " "”program-ID” → ”data”. För närvarande lagras följande värde som ”data”: • "
"”position”: positionen för programikonen på sidan" "”position”: positionen för programikonen på sidan"
#: data/org.gnome.shell.gschema.xml.in:157 #: data/org.gnome.shell.gschema.xml.in:149
msgid "Keybinding to open the application menu" msgid "Keybinding to open the application menu"
msgstr "Snabbtangent för att öppna programmenyn" msgstr "Snabbtangent för att öppna programmenyn"
#: data/org.gnome.shell.gschema.xml.in:158 #: data/org.gnome.shell.gschema.xml.in:150
msgid "Keybinding to open the application menu." msgid "Keybinding to open the application menu."
msgstr "Snabbtangent för att öppna programmenyn." msgstr "Snabbtangent för att öppna programmenyn."
#: data/org.gnome.shell.gschema.xml.in:164 #: data/org.gnome.shell.gschema.xml.in:156
#: data/org.gnome.shell.gschema.xml.in:171 #: data/org.gnome.shell.gschema.xml.in:163
msgid "Keybinding to shift between overview states" msgid "Keybinding to shift between overview states"
msgstr "Snabbtangent för att växla mellan översiktstillstånd" msgstr "Snabbtangent för att växla mellan översiktstillstånd"
#: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:157
msgid "Keybinding to shift between session, window picker and app grid" msgid "Keybinding to shift between session, window picker and app grid"
msgstr "" msgstr ""
"Snabbtangent för att växla mellan session, fönsterväljare och programrutnät" "Snabbtangent för att växla mellan session, fönsterväljare och programrutnät"
#: data/org.gnome.shell.gschema.xml.in:172 #: data/org.gnome.shell.gschema.xml.in:164
msgid "Keybinding to shift between app grid, window picker and session" msgid "Keybinding to shift between app grid, window picker and session"
msgstr "" msgstr ""
"Snabbtangent för att växla mellan programrutnät, fönsterväljare och session" "Snabbtangent för att växla mellan programrutnät, fönsterväljare och session"
#: data/org.gnome.shell.gschema.xml.in:178 #: data/org.gnome.shell.gschema.xml.in:170
msgid "Keybinding to open the “Show Applications” view" msgid "Keybinding to open the “Show Applications” view"
msgstr "Snabbtangent för att öppna ”Visa program”-vyn" msgstr "Snabbtangent för att öppna ”Visa program”-vyn"
#: data/org.gnome.shell.gschema.xml.in:179 #: data/org.gnome.shell.gschema.xml.in:171
msgid "" msgid ""
"Keybinding to open the “Show Applications” view of the Activities Overview." "Keybinding to open the “Show Applications” view of the Activities Overview."
msgstr "Snabbtangent för att öppna ”Visa program”-vyn i översiktsvyn." msgstr "Snabbtangent för att öppna ”Visa program”-vyn i översiktsvyn."
#: data/org.gnome.shell.gschema.xml.in:186 #: data/org.gnome.shell.gschema.xml.in:178
msgid "Keybinding to open the overview" msgid "Keybinding to open the overview"
msgstr "Snabbtangent för att öppna översiktsvyn" msgstr "Snabbtangent för att öppna översiktsvyn"
#: data/org.gnome.shell.gschema.xml.in:187 #: data/org.gnome.shell.gschema.xml.in:179
msgid "Keybinding to open the Activities Overview." msgid "Keybinding to open the Activities Overview."
msgstr "Snabbtangent för att öppna översiktsvyn." msgstr "Snabbtangent för att öppna översiktsvyn."
#: data/org.gnome.shell.gschema.xml.in:193 #: data/org.gnome.shell.gschema.xml.in:185
msgid "Keybinding to toggle the visibility of the notification list" msgid "Keybinding to toggle the visibility of the notification list"
msgstr "Snabbtangent för att växla synligheten för aviseringslistan" msgstr "Snabbtangent för att växla synligheten för aviseringslistan"
#: data/org.gnome.shell.gschema.xml.in:194 #: data/org.gnome.shell.gschema.xml.in:186
msgid "Keybinding to toggle the visibility of the notification list." msgid "Keybinding to toggle the visibility of the notification list."
msgstr "Snabbtangent för att växla synligheten för aviseringslistan." msgstr "Snabbtangent för att växla synligheten för aviseringslistan."
#: data/org.gnome.shell.gschema.xml.in:200 #: data/org.gnome.shell.gschema.xml.in:192
msgid "Keybinding to focus the active notification" msgid "Keybinding to focus the active notification"
msgstr "Snabbtangent för att fokusera på den aktiva aviseringen" msgstr "Snabbtangent för att fokusera på den aktiva aviseringen"
#: data/org.gnome.shell.gschema.xml.in:201 #: data/org.gnome.shell.gschema.xml.in:193
msgid "Keybinding to focus the active notification." msgid "Keybinding to focus the active notification."
msgstr "Snabbtangent för att fokusera på den aktiva aviseringen." msgstr "Snabbtangent för att fokusera på den aktiva aviseringen."
#: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:199
msgid "Switch to application 1" msgid "Switch to application 1"
msgstr "Växla till program 1" msgstr "Växla till program 1"
#: data/org.gnome.shell.gschema.xml.in:211 #: data/org.gnome.shell.gschema.xml.in:203
msgid "Switch to application 2" msgid "Switch to application 2"
msgstr "Växla till program 2" msgstr "Växla till program 2"
#: data/org.gnome.shell.gschema.xml.in:215 #: data/org.gnome.shell.gschema.xml.in:207
msgid "Switch to application 3" msgid "Switch to application 3"
msgstr "Växla till program 3" msgstr "Växla till program 3"
#: data/org.gnome.shell.gschema.xml.in:219 #: data/org.gnome.shell.gschema.xml.in:211
msgid "Switch to application 4" msgid "Switch to application 4"
msgstr "Växla till program 4" msgstr "Växla till program 4"
#: data/org.gnome.shell.gschema.xml.in:223 #: data/org.gnome.shell.gschema.xml.in:215
msgid "Switch to application 5" msgid "Switch to application 5"
msgstr "Växla till program 5" msgstr "Växla till program 5"
#: data/org.gnome.shell.gschema.xml.in:227 #: data/org.gnome.shell.gschema.xml.in:219
msgid "Switch to application 6" msgid "Switch to application 6"
msgstr "Växla till program 6" msgstr "Växla till program 6"
#: data/org.gnome.shell.gschema.xml.in:231 #: data/org.gnome.shell.gschema.xml.in:223
msgid "Switch to application 7" msgid "Switch to application 7"
msgstr "Växla till program 7" msgstr "Växla till program 7"
#: data/org.gnome.shell.gschema.xml.in:235 #: data/org.gnome.shell.gschema.xml.in:227
msgid "Switch to application 8" msgid "Switch to application 8"
msgstr "Växla till program 8" msgstr "Växla till program 8"
#: data/org.gnome.shell.gschema.xml.in:239 #: data/org.gnome.shell.gschema.xml.in:231
msgid "Switch to application 9" msgid "Switch to application 9"
msgstr "Växla till program 9" msgstr "Växla till program 9"
#: data/org.gnome.shell.gschema.xml.in:248 #: data/org.gnome.shell.gschema.xml.in:240
#: data/org.gnome.shell.gschema.xml.in:275 #: data/org.gnome.shell.gschema.xml.in:267
msgid "Limit switcher to current workspace." msgid "Limit switcher to current workspace."
msgstr "Begränsa väljare till aktuell arbetsyta." msgstr "Begränsa väljare till aktuell arbetsyta."
#: data/org.gnome.shell.gschema.xml.in:249 #: data/org.gnome.shell.gschema.xml.in:241
msgid "" msgid ""
"If true, only applications that have windows on the current workspace are " "If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included." "shown in the switcher. Otherwise, all applications are included."
@ -387,11 +375,11 @@ msgstr ""
"Om satt till true (sant), visas endast program som har fönster på den " "Om satt till true (sant), visas endast program som har fönster på den "
"aktuella arbetsytan i väljaren. I annat fall inkluderas alla program." "aktuella arbetsytan i väljaren. I annat fall inkluderas alla program."
#: data/org.gnome.shell.gschema.xml.in:266 #: data/org.gnome.shell.gschema.xml.in:258
msgid "The application icon mode." msgid "The application icon mode."
msgstr "Programikonsläget." msgstr "Programikonsläget."
#: data/org.gnome.shell.gschema.xml.in:267 #: data/org.gnome.shell.gschema.xml.in:259
msgid "" msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities " "Configures how the windows are shown in the switcher. Valid possibilities "
"are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-"
@ -401,7 +389,7 @@ msgstr ""
"only” (visar en miniatyrbild av fönstret), ”app-icon-only” (visar endast " "only” (visar en miniatyrbild av fönstret), ”app-icon-only” (visar endast "
"programikonen) eller ”both” (visar båda)." "programikonen) eller ”both” (visar båda)."
#: data/org.gnome.shell.gschema.xml.in:276 #: data/org.gnome.shell.gschema.xml.in:268
msgid "" msgid ""
"If true, only windows from the current workspace are shown in the switcher. " "If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included." "Otherwise, all windows are included."
@ -409,57 +397,57 @@ msgstr ""
"Om satt till \"true\", visas endast fönster från den aktuella arbetsytan i " "Om satt till \"true\", visas endast fönster från den aktuella arbetsytan i "
"väljaren. I annat fall inkluderas alla fönster." "väljaren. I annat fall inkluderas alla fönster."
#: data/org.gnome.shell.gschema.xml.in:286 #: data/org.gnome.shell.gschema.xml.in:278
msgid "Locations" msgid "Locations"
msgstr "Platser" msgstr "Platser"
#: data/org.gnome.shell.gschema.xml.in:287 #: data/org.gnome.shell.gschema.xml.in:279
msgid "The locations to show in world clocks" msgid "The locations to show in world clocks"
msgstr "Platserna att visa i världsklockor" msgstr "Platserna att visa i världsklockor"
#: data/org.gnome.shell.gschema.xml.in:297 #: data/org.gnome.shell.gschema.xml.in:289
msgid "Automatic location" msgid "Automatic location"
msgstr "Automatisk plats" msgstr "Automatisk plats"
#: data/org.gnome.shell.gschema.xml.in:298 #: data/org.gnome.shell.gschema.xml.in:290
msgid "Whether to fetch the current location or not" msgid "Whether to fetch the current location or not"
msgstr "Huruvida den aktuella platsen ska hämtas eller ej" msgstr "Huruvida den aktuella platsen ska hämtas eller ej"
#: data/org.gnome.shell.gschema.xml.in:305 #: data/org.gnome.shell.gschema.xml.in:297
msgid "Location" msgid "Location"
msgstr "Plats" msgstr "Plats"
#: data/org.gnome.shell.gschema.xml.in:306 #: data/org.gnome.shell.gschema.xml.in:298
msgid "The location for which to show a forecast" msgid "The location for which to show a forecast"
msgstr "Platsen för vilken en väderprognos ska visas" msgstr "Platsen för vilken en väderprognos ska visas"
#: data/org.gnome.shell.gschema.xml.in:318 #: data/org.gnome.shell.gschema.xml.in:310
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
msgstr "Fäst modal dialog till föräldrafönstret" msgstr "Fäst modal dialog till föräldrafönstret"
#: data/org.gnome.shell.gschema.xml.in:319 #: data/org.gnome.shell.gschema.xml.in:311
#: data/org.gnome.shell.gschema.xml.in:320
#: data/org.gnome.shell.gschema.xml.in:328 #: data/org.gnome.shell.gschema.xml.in:328
#: data/org.gnome.shell.gschema.xml.in:336 #: data/org.gnome.shell.gschema.xml.in:336
#: data/org.gnome.shell.gschema.xml.in:344 #: data/org.gnome.shell.gschema.xml.in:344
#: data/org.gnome.shell.gschema.xml.in:352
msgid "" msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell." "This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "" msgstr ""
"Denna nyckel åsidosätter nyckeln i org.gnome.mutter när GNOME-skalet körs." "Denna nyckel åsidosätter nyckeln i org.gnome.mutter när GNOME-skalet körs."
#: data/org.gnome.shell.gschema.xml.in:327 #: data/org.gnome.shell.gschema.xml.in:319
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Slå på kantdockning när fönster släpps på skärmkanter" msgstr "Slå på kantdockning när fönster släpps på skärmkanter"
#: data/org.gnome.shell.gschema.xml.in:335 #: data/org.gnome.shell.gschema.xml.in:327
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "Arbetsytor hanteras dynamiskt" msgstr "Arbetsytor hanteras dynamiskt"
#: data/org.gnome.shell.gschema.xml.in:343 #: data/org.gnome.shell.gschema.xml.in:335
msgid "Workspaces only on primary monitor" msgid "Workspaces only on primary monitor"
msgstr "Arbetsytor endast på primär skärm" msgstr "Arbetsytor endast på primär skärm"
#: data/org.gnome.shell.gschema.xml.in:351 #: data/org.gnome.shell.gschema.xml.in:343
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Fördröj fokusändringar i musläge tills pekare slutar röra sig" msgstr "Fördröj fokusändringar i musläge tills pekare slutar röra sig"
@ -495,18 +483,18 @@ msgid "Visit extension homepage"
msgstr "Besök webbsida för tillägg" msgstr "Besök webbsida för tillägg"
#: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61 #: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61
#: js/ui/components/networkAgent.js:111 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:190 #: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:228
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183 #: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183
msgid "Cancel" msgid "Cancel"
msgstr "Avbryt" msgstr "Avbryt"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:210 #: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:209
#: js/ui/components/networkAgent.js:226 js/ui/components/networkAgent.js:250 #: js/ui/components/networkAgent.js:225 js/ui/components/networkAgent.js:249
#: js/ui/components/networkAgent.js:271 js/ui/components/networkAgent.js:291 #: js/ui/components/networkAgent.js:270 js/ui/components/networkAgent.js:290
#: js/ui/components/networkAgent.js:301 js/ui/components/polkitAgent.js:275 #: js/ui/components/networkAgent.js:300 js/ui/components/polkitAgent.js:275
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Lösenord" msgstr "Lösenord"
@ -529,8 +517,8 @@ msgstr "(till exempel användare eller %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:246 #: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:245
#: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:287 #: js/ui/components/networkAgent.js:268 js/ui/components/networkAgent.js:286
msgid "Username" msgid "Username"
msgstr "Användarnamn" msgstr "Användarnamn"
@ -637,65 +625,65 @@ msgctxt "search-result"
msgid "Lock Screen Rotation" msgid "Lock Screen Rotation"
msgstr "Lås skärmrotation" msgstr "Lås skärmrotation"
#: js/misc/util.js:120 #: js/misc/util.js:121
msgid "Command not found" msgid "Command not found"
msgstr "Kommandot hittades inte" msgstr "Kommandot hittades inte"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: js/misc/util.js:156 #: js/misc/util.js:157
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Kunde inte tolka kommando:" msgstr "Kunde inte tolka kommando:"
#: js/misc/util.js:164 #: js/misc/util.js:165
#, javascript-format #, javascript-format
msgid "Execution of “%s” failed:" msgid "Execution of “%s” failed:"
msgstr "Körning av ”%s” misslyckades:" msgstr "Körning av ”%s” misslyckades:"
#: js/misc/util.js:181 #: js/misc/util.js:182
msgid "Just now" msgid "Just now"
msgstr "Just nu" msgstr "Just nu"
#: js/misc/util.js:183 #: js/misc/util.js:184
#, javascript-format #, javascript-format
msgid "%d minute ago" msgid "%d minute ago"
msgid_plural "%d minutes ago" msgid_plural "%d minutes ago"
msgstr[0] "%d minut sedan" msgstr[0] "%d minut sedan"
msgstr[1] "%d minuter sedan" msgstr[1] "%d minuter sedan"
#: js/misc/util.js:187 #: js/misc/util.js:188
#, javascript-format #, javascript-format
msgid "%d hour ago" msgid "%d hour ago"
msgid_plural "%d hours ago" msgid_plural "%d hours ago"
msgstr[0] "%d timme sedan" msgstr[0] "%d timme sedan"
msgstr[1] "%d timmar sedan" msgstr[1] "%d timmar sedan"
#: js/misc/util.js:191 js/ui/dateMenu.js:162 #: js/misc/util.js:192 js/ui/dateMenu.js:162
msgid "Yesterday" msgid "Yesterday"
msgstr "Igår" msgstr "Igår"
#: js/misc/util.js:193 #: js/misc/util.js:194
#, javascript-format #, javascript-format
msgid "%d day ago" msgid "%d day ago"
msgid_plural "%d days ago" msgid_plural "%d days ago"
msgstr[0] "%d dag sedan" msgstr[0] "%d dag sedan"
msgstr[1] "%d dagar sedan" msgstr[1] "%d dagar sedan"
#: js/misc/util.js:197 #: js/misc/util.js:198
#, javascript-format #, javascript-format
msgid "%d week ago" msgid "%d week ago"
msgid_plural "%d weeks ago" msgid_plural "%d weeks ago"
msgstr[0] "%d vecka sedan" msgstr[0] "%d vecka sedan"
msgstr[1] "%d veckor sedan" msgstr[1] "%d veckor sedan"
#: js/misc/util.js:201 #: js/misc/util.js:202
#, javascript-format #, javascript-format
msgid "%d month ago" msgid "%d month ago"
msgid_plural "%d months ago" msgid_plural "%d months ago"
msgstr[0] "%d månad sedan" msgstr[0] "%d månad sedan"
msgstr[1] "%d månader sedan" msgstr[1] "%d månader sedan"
#: js/misc/util.js:204 #: js/misc/util.js:205
#, javascript-format #, javascript-format
msgid "%d year ago" msgid "%d year ago"
msgid_plural "%d years ago" msgid_plural "%d years ago"
@ -703,20 +691,20 @@ msgstr[0] "%d år sedan"
msgstr[1] "%d år sedan" msgstr[1] "%d år sedan"
#. Translators: Time in 24h format #. Translators: Time in 24h format
#: js/misc/util.js:237 #: js/misc/util.js:238
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" #. time string in 24h format. i.e. "Yesterday, 14:30"
#: js/misc/util.js:243 #: js/misc/util.js:244
#, no-c-format #, no-c-format
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "Igår, %H%M" msgstr "Igår, %H%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" #. string in 24h format. i.e. "Monday, 14:30"
#: js/misc/util.js:249 #: js/misc/util.js:250
#, no-c-format #, no-c-format
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %H%M" msgstr "%A, %H%M"
@ -724,7 +712,7 @@ msgstr "%A, %H%M"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" #. i.e. "May 25, 14:30"
#: js/misc/util.js:255 #: js/misc/util.js:256
#, no-c-format #, no-c-format
msgid "%B %-d, %H%M" msgid "%B %-d, %H%M"
msgstr "%-d %B, %H%M" msgstr "%-d %B, %H%M"
@ -732,7 +720,7 @@ msgstr "%-d %B, %H%M"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" #. i.e. "May 25 2012, 14:30"
#: js/misc/util.js:261 #: js/misc/util.js:262
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %H%M" msgid "%B %-d %Y, %H%M"
msgstr "%-d %B %Y, %H%M" msgstr "%-d %B %Y, %H%M"
@ -740,20 +728,20 @@ msgstr "%-d %B %Y, %H%M"
#. Show only the time if date is on today #. Show only the time if date is on today
#. eslint-disable-line no-lonely-if #. eslint-disable-line no-lonely-if
#. Translators: Time in 12h format #. Translators: Time in 12h format
#: js/misc/util.js:266 #: js/misc/util.js:267
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%l%M%p" msgstr "%l%M%p"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" #. time string in 12h format. i.e. "Yesterday, 2:30 pm"
#: js/misc/util.js:272 #: js/misc/util.js:273
#, no-c-format #, no-c-format
msgid "Yesterday, %l%M %p" msgid "Yesterday, %l%M %p"
msgstr "Igår, %l%M%p" msgstr "Igår, %l%M%p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" #. string in 12h format. i.e. "Monday, 2:30 pm"
#: js/misc/util.js:278 #: js/misc/util.js:279
#, no-c-format #, no-c-format
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %I%M%p" msgstr "%A, %I%M%p"
@ -761,7 +749,7 @@ msgstr "%A, %I%M%p"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" #. i.e. "May 25, 2:30 pm"
#: js/misc/util.js:284 #: js/misc/util.js:285
#, no-c-format #, no-c-format
msgid "%B %-d, %l%M %p" msgid "%B %-d, %l%M %p"
msgstr "%-d %B, %l%M%p" msgstr "%-d %B, %l%M%p"
@ -769,17 +757,17 @@ msgstr "%-d %B, %l%M%p"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format. #. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm" #. i.e. "May 25 2012, 2:30 pm"
#: js/misc/util.js:290 #: js/misc/util.js:291
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %l%M %p" msgid "%B %-d %Y, %l%M %p"
msgstr "%-d %B %Y, %l%M%p" msgstr "%-d %B %Y, %l%M%p"
#. TRANSLATORS: this is the title of the wifi captive portal login window #. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:42 #: js/portalHelper/main.js:49
msgid "Hotspot Login" msgid "Hotspot Login"
msgstr "Surfzonsinloggning" msgstr "Surfzonsinloggning"
#: js/portalHelper/main.js:88 #: js/portalHelper/main.js:95
msgid "" msgid ""
"Your connection to this hotspot login is not secure. Passwords or other " "Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby." "information you enter on this page can be viewed by people nearby."
@ -1025,39 +1013,39 @@ msgstr "Den installerade udisks-versionen stöder inte PIM-inställningen"
msgid "Open with %s" msgid "Open with %s"
msgstr "Öppna med %s" msgstr "Öppna med %s"
#: js/ui/components/networkAgent.js:93 #: js/ui/components/networkAgent.js:92
msgid "" msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router." "Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "" msgstr ""
"Alternativt kan du ansluta genom att trycka på ”WPS”-knappen på din router." "Alternativt kan du ansluta genom att trycka på ”WPS”-knappen på din router."
#: js/ui/components/networkAgent.js:105 js/ui/status/network.js:258 #: js/ui/components/networkAgent.js:104 js/ui/status/network.js:258
#: js/ui/status/network.js:349 js/ui/status/network.js:981 #: js/ui/status/network.js:349 js/ui/status/network.js:981
msgid "Connect" msgid "Connect"
msgstr "Anslut" msgstr "Anslut"
#: js/ui/components/networkAgent.js:216 #: js/ui/components/networkAgent.js:215
msgid "Key" msgid "Key"
msgstr "Nyckel" msgstr "Nyckel"
#: js/ui/components/networkAgent.js:254 js/ui/components/networkAgent.js:277 #: js/ui/components/networkAgent.js:253 js/ui/components/networkAgent.js:276
msgid "Private key password" msgid "Private key password"
msgstr "Lösenord för privat nyckel" msgstr "Lösenord för privat nyckel"
#: js/ui/components/networkAgent.js:275 #: js/ui/components/networkAgent.js:274
msgid "Identity" msgid "Identity"
msgstr "Identitet" msgstr "Identitet"
#: js/ui/components/networkAgent.js:289 #: js/ui/components/networkAgent.js:288
msgid "Service" msgid "Service"
msgstr "Tjänst" msgstr "Tjänst"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:346 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:345
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "Autentisering krävs" msgstr "Autentisering krävs"
#: js/ui/components/networkAgent.js:319 js/ui/components/networkAgent.js:680 #: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:680
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@ -1066,31 +1054,31 @@ msgstr ""
"Lösenord eller krypteringsnycklar krävs för att komma åt det trådlösa " "Lösenord eller krypteringsnycklar krävs för att komma åt det trådlösa "
"nätverket ”%s”." "nätverket ”%s”."
#: js/ui/components/networkAgent.js:323 js/ui/components/networkAgent.js:684 #: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:684
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Trådbunden 802.1X-autentisering" msgstr "Trådbunden 802.1X-autentisering"
#: js/ui/components/networkAgent.js:325 #: js/ui/components/networkAgent.js:324
msgid "Network name" msgid "Network name"
msgstr "Nätverksnamn" msgstr "Nätverksnamn"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:688 #: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "DSL-autentisering" msgstr "DSL-autentisering"
#: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:693 #: js/ui/components/networkAgent.js:336 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "PIN-kod krävs" msgstr "PIN-kod krävs"
#: js/ui/components/networkAgent.js:338 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "PIN-koden krävs för den mobila bredbandsenheten" msgstr "PIN-koden krävs för den mobila bredbandsenheten"
#: js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:338
msgid "PIN" msgid "PIN"
msgstr "PIN" msgstr "PIN"
#: js/ui/components/networkAgent.js:347 js/ui/components/networkAgent.js:685 #: js/ui/components/networkAgent.js:346 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:705 #: js/ui/components/networkAgent.js:705
#, javascript-format #, javascript-format
@ -1382,24 +1370,24 @@ msgstr "%s (fjärransluten)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konsol)" msgstr "%s (konsol)"
#: js/ui/extensionDownloader.js:194 #: js/ui/extensionDownloader.js:232
msgid "Install" msgid "Install"
msgstr "Installera" msgstr "Installera"
#: js/ui/extensionDownloader.js:200 #: js/ui/extensionDownloader.js:238
msgid "Install Extension" msgid "Install Extension"
msgstr "Installera tillägg" msgstr "Installera tillägg"
#: js/ui/extensionDownloader.js:201 #: js/ui/extensionDownloader.js:239
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Hämta och installera ”%s” från extensions.gnome.org?" msgstr "Hämta och installera ”%s” från extensions.gnome.org?"
#: js/ui/extensionSystem.js:253 #: js/ui/extensionSystem.js:252
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "Uppdateringar för tillägg finns tillgängliga" msgstr "Uppdateringar för tillägg finns tillgängliga"
#: js/ui/extensionSystem.js:254 #: js/ui/extensionSystem.js:253
msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed."
msgstr "Uppdateringar för tillägg är redo att installeras." msgstr "Uppdateringar för tillägg är redo att installeras."
@ -1495,7 +1483,7 @@ msgstr "Stäng av"
msgid "Leave Off" msgid "Leave Off"
msgstr "Lämna avstängd" msgstr "Lämna avstängd"
#: js/ui/keyboard.js:227 #: js/ui/keyboard.js:226
msgid "Region & Language Settings" msgid "Region & Language Settings"
msgstr "Re­gion- & språkinställningar" msgstr "Re­gion- & språkinställningar"
@ -1548,11 +1536,11 @@ msgstr "Visa källa"
msgid "Web Page" msgid "Web Page"
msgstr "Webbsida" msgstr "Webbsida"
#: js/ui/main.js:294 #: js/ui/main.js:290
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Inloggad som en privilegierad användare" msgstr "Inloggad som en privilegierad användare"
#: js/ui/main.js:295 #: js/ui/main.js:291
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@ -1560,15 +1548,15 @@ msgstr ""
"Att köra en session som en privilegierad användare bör undvikas av " "Att köra en session som en privilegierad användare bör undvikas av "
"säkerhetsskäl. Om möjligt bör du logga in som en normal användare." "säkerhetsskäl. Om möjligt bör du logga in som en normal användare."
#: js/ui/main.js:344 #: js/ui/main.js:340
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Skärmlås inaktiverat" msgstr "Skärmlås inaktiverat"
#: js/ui/main.js:345 #: js/ui/main.js:341
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "Skärmlås kräver GNOME:s displayhanterare." msgstr "Skärmlås kräver GNOME:s displayhanterare."
#: js/ui/messageTray.js:1440 #: js/ui/messageTray.js:1443
msgid "System Information" msgid "System Information"
msgstr "Systeminformation" msgstr "Systeminformation"
@ -1602,47 +1590,47 @@ msgstr "Ångra"
msgid "Overview" msgid "Overview"
msgstr "Översikt" msgstr "Översikt"
#: js/ui/padOsd.js:96 #: js/ui/padOsd.js:95
msgid "New shortcut…" msgid "New shortcut…"
msgstr "Nytt kortkommando…" msgstr "Nytt kortkommando…"
#: js/ui/padOsd.js:143 #: js/ui/padOsd.js:142
msgid "Application defined" msgid "Application defined"
msgstr "Programdefinierad" msgstr "Programdefinierad"
#: js/ui/padOsd.js:144 #: js/ui/padOsd.js:143
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Visa hjälp på skärmen" msgstr "Visa hjälp på skärmen"
#: js/ui/padOsd.js:145 #: js/ui/padOsd.js:144
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Växla skärm" msgstr "Växla skärm"
#: js/ui/padOsd.js:146 #: js/ui/padOsd.js:145
msgid "Assign keystroke" msgid "Assign keystroke"
msgstr "Tilldela tangenttryckning" msgstr "Tilldela tangenttryckning"
#: js/ui/padOsd.js:212 #: js/ui/padOsd.js:211
msgid "Done" msgid "Done"
msgstr "Färdig" msgstr "Färdig"
#: js/ui/padOsd.js:718 #: js/ui/padOsd.js:716
msgid "Edit…" msgid "Edit…"
msgstr "Redigera…" msgstr "Redigera…"
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877 #: js/ui/padOsd.js:758 js/ui/padOsd.js:875
msgid "None" msgid "None"
msgstr "Ingen" msgstr "Ingen"
#: js/ui/padOsd.js:831 #: js/ui/padOsd.js:829
msgid "Press a button to configure" msgid "Press a button to configure"
msgstr "Tryck på en knapp för att konfigurera" msgstr "Tryck på en knapp för att konfigurera"
#: js/ui/padOsd.js:832 #: js/ui/padOsd.js:830
msgid "Press Esc to exit" msgid "Press Esc to exit"
msgstr "Tryck Esc för att avsluta" msgstr "Tryck Esc för att avsluta"
#: js/ui/padOsd.js:835 #: js/ui/padOsd.js:833
msgid "Press any key to exit" msgid "Press any key to exit"
msgstr "Tryck på valfri tangent för att avsluta" msgstr "Tryck på valfri tangent för att avsluta"
@ -1652,12 +1640,12 @@ msgstr "Tryck på valfri tangent för att avsluta"
msgid "Activities" msgid "Activities"
msgstr "Aktiviteter" msgstr "Aktiviteter"
#: js/ui/panel.js:542 #: js/ui/panel.js:556
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "System" msgstr "System"
#: js/ui/panel.js:658 #: js/ui/panel.js:674
msgid "Top Bar" msgid "Top Bar"
msgstr "Systemrad" msgstr "Systemrad"
@ -1696,7 +1684,7 @@ msgstr "Kunde inte låsa"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Låsning hindrades av ett program" msgstr "Låsning hindrades av ett program"
#: js/ui/screenshot.js:141 #: js/ui/screenshot.js:155
msgid "Screenshot taken" msgid "Screenshot taken"
msgstr "Skärmbild tagen" msgstr "Skärmbild tagen"
@ -2753,6 +2741,7 @@ msgstr "UUID, namn och beskrivning krävs"
#: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46
#: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-info.c:50
#: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/command-list.c:64
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell\n" msgid "Failed to connect to GNOME Shell\n"
msgstr "Misslyckades med att ansluta till GNOME-skalet\n" msgstr "Misslyckades med att ansluta till GNOME-skalet\n"
@ -2769,7 +2758,7 @@ msgstr "Inaktivera ett tillägg"
#: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-disable.c:119
#: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119
#: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-info.c:103
#: subprojects/extensions-tool/src/command-prefs.c:97 #: subprojects/extensions-tool/src/command-prefs.c:105
#: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-reset.c:76
#: subprojects/extensions-tool/src/command-uninstall.c:104 #: subprojects/extensions-tool/src/command-uninstall.c:104
msgid "No UUID given" msgid "No UUID given"
@ -2778,7 +2767,7 @@ msgstr "Inget UUID angivet"
#: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-disable.c:124
#: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124
#: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-info.c:108
#: subprojects/extensions-tool/src/command-prefs.c:102 #: subprojects/extensions-tool/src/command-prefs.c:110
#: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-reset.c:81
#: subprojects/extensions-tool/src/command-uninstall.c:109 #: subprojects/extensions-tool/src/command-uninstall.c:109
msgid "More than one UUID given" msgid "More than one UUID given"
@ -2908,7 +2897,12 @@ msgstr "Mer än en källkatalog angiven"
msgid "Extension “%s” doesn't have preferences\n" msgid "Extension “%s” doesn't have preferences\n"
msgstr "Tillägget ”%s” har inga inställningar\n" msgstr "Tillägget ”%s” har inga inställningar\n"
#: subprojects/extensions-tool/src/command-prefs.c:79 #: subprojects/extensions-tool/src/command-prefs.c:62
#, c-format
msgid "Failed to open prefs for extension “%s”: %s\n"
msgstr "Misslyckades med att öppna inställningar för tillägget ”%s”: %s\n"
#: subprojects/extensions-tool/src/command-prefs.c:87
msgid "Opens extension preferences" msgid "Opens extension preferences"
msgstr "Öppnar inställningar för tillägg" msgstr "Öppnar inställningar för tillägg"
@ -2933,10 +2927,6 @@ msgstr "Avinstallera ett tillägg"
msgid "Do not print error messages" msgid "Do not print error messages"
msgstr "Skriv inte ut felmeddelanden" msgstr "Skriv inte ut felmeddelanden"
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell"
msgstr "Misslyckades med att ansluta till GNOME-skalet"
#: subprojects/extensions-tool/src/main.c:244 #: subprojects/extensions-tool/src/main.c:244
msgid "Path" msgid "Path"
msgstr "Sökväg" msgstr "Sökväg"
@ -3067,6 +3057,19 @@ msgstr[1] "%u ingångar"
msgid "System Sounds" msgid "System Sounds"
msgstr "Systemljud" msgstr "Systemljud"
#~ msgid "Enable introspection API"
#~ msgstr "Aktivera introspektions-API"
#~ msgid ""
#~ "Enables a D-Bus API that allows to introspect the application state of "
#~ "the shell."
#~ msgstr ""
#~ "Aktiverar ett D-Bus-API som tillåter introspektion av programtillståndet "
#~ "för skalet."
#~ msgid "Failed to connect to GNOME Shell"
#~ msgstr "Misslyckades med att ansluta till GNOME-skalet"
#~ msgid "Minimize" #~ msgid "Minimize"
#~ msgstr "Minimera" #~ msgstr "Minimera"

275
po/uk.po
View File

@ -10,8 +10,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2021-08-17 23:56+0000\n" "POT-Creation-Date: 2021-11-02 15:41+0000\n"
"PO-Revision-Date: 2021-08-18 09:35+0300\n" "PO-Revision-Date: 2021-11-02 18:31+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n" "Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
"Language: uk\n" "Language: uk\n"
@ -253,21 +253,11 @@ msgstr ""
"велике число — версіям, яких іще не існує. Таким великим числом можна " "велике число — версіям, яких іще не існує. Таким великим числом можна "
"скористатися для того, щоб вимкнути показ вікна." "скористатися для того, щоб вимкнути показ вікна."
#: data/org.gnome.shell.gschema.xml.in:109 #: data/org.gnome.shell.gschema.xml.in:133
msgid "Enable introspection API"
msgstr "Увімкнути API для самоаналізу"
#: data/org.gnome.shell.gschema.xml.in:110
msgid ""
"Enables a D-Bus API that allows to introspect the application state of the "
"shell."
msgstr "Вмикає D-Bus API для самоаналізу стану оболонки."
#: data/org.gnome.shell.gschema.xml.in:141
msgid "Layout of the app picker" msgid "Layout of the app picker"
msgstr "Компонування засобу вибору програм" msgstr "Компонування засобу вибору програм"
#: data/org.gnome.shell.gschema.xml.in:142 #: data/org.gnome.shell.gschema.xml.in:134
msgid "" msgid ""
"Layout of the app picker. Each entry in the array is a page. Pages are " "Layout of the app picker. Each entry in the array is a page. Pages are "
"stored in the order they appear in GNOME Shell. Each page contains an " "stored in the order they appear in GNOME Shell. Each page contains an "
@ -280,106 +270,106 @@ msgstr ""
"поточній версії як 'дані' може бути збережено такі значення: • “позиція”: " "поточній версії як 'дані' може бути збережено такі значення: • “позиція”: "
"позиція піктограми програми на сторінці" "позиція піктограми програми на сторінці"
#: data/org.gnome.shell.gschema.xml.in:157 #: data/org.gnome.shell.gschema.xml.in:149
msgid "Keybinding to open the application menu" msgid "Keybinding to open the application menu"
msgstr "Комбінація клавіш, щоб відкрити меню програм" msgstr "Комбінація клавіш, щоб відкрити меню програм"
#: data/org.gnome.shell.gschema.xml.in:158 #: data/org.gnome.shell.gschema.xml.in:150
msgid "Keybinding to open the application menu." msgid "Keybinding to open the application menu."
msgstr "Комбінація клавіш, щоб відкрити меню програм." msgstr "Комбінація клавіш, щоб відкрити меню програм."
#: data/org.gnome.shell.gschema.xml.in:164 #: data/org.gnome.shell.gschema.xml.in:156
#: data/org.gnome.shell.gschema.xml.in:171 #: data/org.gnome.shell.gschema.xml.in:163
msgid "Keybinding to shift between overview states" msgid "Keybinding to shift between overview states"
msgstr "Комбінація клавіш для перемикання між станами огляду" msgstr "Комбінація клавіш для перемикання між станами огляду"
#: data/org.gnome.shell.gschema.xml.in:165 #: data/org.gnome.shell.gschema.xml.in:157
msgid "Keybinding to shift between session, window picker and app grid" msgid "Keybinding to shift between session, window picker and app grid"
msgstr "" msgstr ""
"Комбінація клавіш для переходу між сеансом, засобом вибору вікна та таблицею " "Комбінація клавіш для переходу між сеансом, засобом вибору вікна та таблицею "
"програм" "програм"
#: data/org.gnome.shell.gschema.xml.in:172 #: data/org.gnome.shell.gschema.xml.in:164
msgid "Keybinding to shift between app grid, window picker and session" msgid "Keybinding to shift between app grid, window picker and session"
msgstr "" msgstr ""
"Комбінація клавіш для переходу між таблицею програм, засобом вибору вікна та " "Комбінація клавіш для переходу між таблицею програм, засобом вибору вікна та "
"сеансом" "сеансом"
#: data/org.gnome.shell.gschema.xml.in:178 #: data/org.gnome.shell.gschema.xml.in:170
msgid "Keybinding to open the “Show Applications” view" msgid "Keybinding to open the “Show Applications” view"
msgstr "Комбінація клавіш, щоб «Показати програми»" msgstr "Комбінація клавіш, щоб «Показати програми»"
#: data/org.gnome.shell.gschema.xml.in:179 #: data/org.gnome.shell.gschema.xml.in:171
msgid "" msgid ""
"Keybinding to open the “Show Applications” view of the Activities Overview." "Keybinding to open the “Show Applications” view of the Activities Overview."
msgstr "Комбінація клавіш, щоб «Показати програми» в огляді діяльності." msgstr "Комбінація клавіш, щоб «Показати програми» в огляді діяльності."
#: data/org.gnome.shell.gschema.xml.in:186 #: data/org.gnome.shell.gschema.xml.in:178
msgid "Keybinding to open the overview" msgid "Keybinding to open the overview"
msgstr "Комбінація клавіш, щоб відкрити огляд" msgstr "Комбінація клавіш, щоб відкрити огляд"
#: data/org.gnome.shell.gschema.xml.in:187 #: data/org.gnome.shell.gschema.xml.in:179
msgid "Keybinding to open the Activities Overview." msgid "Keybinding to open the Activities Overview."
msgstr "Комбінація клавіш, щоб відкрити огляд діяльності." msgstr "Комбінація клавіш, щоб відкрити огляд діяльності."
#: data/org.gnome.shell.gschema.xml.in:193 #: data/org.gnome.shell.gschema.xml.in:185
msgid "Keybinding to toggle the visibility of the notification list" msgid "Keybinding to toggle the visibility of the notification list"
msgstr "Комбінація клавіш, щоб змінювати видимість переліку сповіщень" msgstr "Комбінація клавіш, щоб змінювати видимість переліку сповіщень"
#: data/org.gnome.shell.gschema.xml.in:194 #: data/org.gnome.shell.gschema.xml.in:186
msgid "Keybinding to toggle the visibility of the notification list." msgid "Keybinding to toggle the visibility of the notification list."
msgstr "Комбінація клавіш, щоб змінювати видимість переліку сповіщень." msgstr "Комбінація клавіш, щоб змінювати видимість переліку сповіщень."
#: data/org.gnome.shell.gschema.xml.in:200 #: data/org.gnome.shell.gschema.xml.in:192
msgid "Keybinding to focus the active notification" msgid "Keybinding to focus the active notification"
msgstr "Комбінація клавіш, щоб перейти до активних сповіщень" msgstr "Комбінація клавіш, щоб перейти до активних сповіщень"
#: data/org.gnome.shell.gschema.xml.in:201 #: data/org.gnome.shell.gschema.xml.in:193
msgid "Keybinding to focus the active notification." msgid "Keybinding to focus the active notification."
msgstr "Комбінація клавіш, щоб перейти до активних сповіщень." msgstr "Комбінація клавіш, щоб перейти до активних сповіщень."
#: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:199
msgid "Switch to application 1" msgid "Switch to application 1"
msgstr "Перемкнутися на програму 1" msgstr "Перемкнутися на програму 1"
#: data/org.gnome.shell.gschema.xml.in:211 #: data/org.gnome.shell.gschema.xml.in:203
msgid "Switch to application 2" msgid "Switch to application 2"
msgstr "Перемкнутися на програму 2" msgstr "Перемкнутися на програму 2"
#: data/org.gnome.shell.gschema.xml.in:215 #: data/org.gnome.shell.gschema.xml.in:207
msgid "Switch to application 3" msgid "Switch to application 3"
msgstr "Перемкнутися на програму 3" msgstr "Перемкнутися на програму 3"
#: data/org.gnome.shell.gschema.xml.in:219 #: data/org.gnome.shell.gschema.xml.in:211
msgid "Switch to application 4" msgid "Switch to application 4"
msgstr "Перемкнутися на програму 4" msgstr "Перемкнутися на програму 4"
#: data/org.gnome.shell.gschema.xml.in:223 #: data/org.gnome.shell.gschema.xml.in:215
msgid "Switch to application 5" msgid "Switch to application 5"
msgstr "Перемкнутися на програму 5" msgstr "Перемкнутися на програму 5"
#: data/org.gnome.shell.gschema.xml.in:227 #: data/org.gnome.shell.gschema.xml.in:219
msgid "Switch to application 6" msgid "Switch to application 6"
msgstr "Перемкнутися на програму 6" msgstr "Перемкнутися на програму 6"
#: data/org.gnome.shell.gschema.xml.in:231 #: data/org.gnome.shell.gschema.xml.in:223
msgid "Switch to application 7" msgid "Switch to application 7"
msgstr "Перемкнутися на програму 7" msgstr "Перемкнутися на програму 7"
#: data/org.gnome.shell.gschema.xml.in:235 #: data/org.gnome.shell.gschema.xml.in:227
msgid "Switch to application 8" msgid "Switch to application 8"
msgstr "Перемкнутися на програму 8" msgstr "Перемкнутися на програму 8"
#: data/org.gnome.shell.gschema.xml.in:239 #: data/org.gnome.shell.gschema.xml.in:231
msgid "Switch to application 9" msgid "Switch to application 9"
msgstr "Перемкнутися на програму 9" msgstr "Перемкнутися на програму 9"
#: data/org.gnome.shell.gschema.xml.in:248 #: data/org.gnome.shell.gschema.xml.in:240
#: data/org.gnome.shell.gschema.xml.in:275 #: data/org.gnome.shell.gschema.xml.in:267
msgid "Limit switcher to current workspace." msgid "Limit switcher to current workspace."
msgstr "Обмежити перемикач на поточний робочий простір." msgstr "Обмежити перемикач на поточний робочий простір."
#: data/org.gnome.shell.gschema.xml.in:249 #: data/org.gnome.shell.gschema.xml.in:241
msgid "" msgid ""
"If true, only applications that have windows on the current workspace are " "If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included." "shown in the switcher. Otherwise, all applications are included."
@ -387,11 +377,11 @@ msgstr ""
"Якщо це вказано, то тільки програми з поточного робочого простору будуть " "Якщо це вказано, то тільки програми з поточного робочого простору будуть "
"показані в перемикачі. Інакше — програми з усіх просторів." "показані в перемикачі. Інакше — програми з усіх просторів."
#: data/org.gnome.shell.gschema.xml.in:266 #: data/org.gnome.shell.gschema.xml.in:258
msgid "The application icon mode." msgid "The application icon mode."
msgstr "Режим піктограм для програм." msgstr "Режим піктограм для програм."
#: data/org.gnome.shell.gschema.xml.in:267 #: data/org.gnome.shell.gschema.xml.in:259
msgid "" msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities " "Configures how the windows are shown in the switcher. Valid possibilities "
"are “thumbnail-only” (shows a thumbnail of the window), “app-icon-" "are “thumbnail-only” (shows a thumbnail of the window), “app-icon-"
@ -401,7 +391,7 @@ msgstr ""
"«thumbnail-only» (показує мініатюру вікна), «app-icon-only» (показує тільки " "«thumbnail-only» (показує мініатюру вікна), «app-icon-only» (показує тільки "
"піктограми програм) або «both» (обидва)." "піктограми програм) або «both» (обидва)."
#: data/org.gnome.shell.gschema.xml.in:276 #: data/org.gnome.shell.gschema.xml.in:268
msgid "" msgid ""
"If true, only windows from the current workspace are shown in the switcher. " "If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included." "Otherwise, all windows are included."
@ -409,57 +399,57 @@ msgstr ""
"Якщо це вказано, то тільки вікна з поточного робочого простору будуть " "Якщо це вказано, то тільки вікна з поточного робочого простору будуть "
"показані в перемикачі. Інакше — вікна з усіх просторів." "показані в перемикачі. Інакше — вікна з усіх просторів."
#: data/org.gnome.shell.gschema.xml.in:286 #: data/org.gnome.shell.gschema.xml.in:278
msgid "Locations" msgid "Locations"
msgstr "Місцевості" msgstr "Місцевості"
#: data/org.gnome.shell.gschema.xml.in:287 #: data/org.gnome.shell.gschema.xml.in:279
msgid "The locations to show in world clocks" msgid "The locations to show in world clocks"
msgstr "Місцевість для світового годинника" msgstr "Місцевість для світового годинника"
#: data/org.gnome.shell.gschema.xml.in:297 #: data/org.gnome.shell.gschema.xml.in:289
msgid "Automatic location" msgid "Automatic location"
msgstr "Автоматичне визначення місцевості" msgstr "Автоматичне визначення місцевості"
#: data/org.gnome.shell.gschema.xml.in:298 #: data/org.gnome.shell.gschema.xml.in:290
msgid "Whether to fetch the current location or not" msgid "Whether to fetch the current location or not"
msgstr "Чи одержувати поточну локацію" msgstr "Чи одержувати поточну локацію"
#: data/org.gnome.shell.gschema.xml.in:305 #: data/org.gnome.shell.gschema.xml.in:297
msgid "Location" msgid "Location"
msgstr "Місцевість" msgstr "Місцевість"
#: data/org.gnome.shell.gschema.xml.in:306 #: data/org.gnome.shell.gschema.xml.in:298
msgid "The location for which to show a forecast" msgid "The location for which to show a forecast"
msgstr "Місцевість для прогнозу погоди" msgstr "Місцевість для прогнозу погоди"
#: data/org.gnome.shell.gschema.xml.in:318 #: data/org.gnome.shell.gschema.xml.in:310
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
msgstr "Приєднати модальне вікно до батьківського вікна" msgstr "Приєднати модальне вікно до батьківського вікна"
#: data/org.gnome.shell.gschema.xml.in:319 #: data/org.gnome.shell.gschema.xml.in:311
#: data/org.gnome.shell.gschema.xml.in:320
#: data/org.gnome.shell.gschema.xml.in:328 #: data/org.gnome.shell.gschema.xml.in:328
#: data/org.gnome.shell.gschema.xml.in:336 #: data/org.gnome.shell.gschema.xml.in:336
#: data/org.gnome.shell.gschema.xml.in:344 #: data/org.gnome.shell.gschema.xml.in:344
#: data/org.gnome.shell.gschema.xml.in:352
msgid "" msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell." "This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "" msgstr ""
"Цей ключ перевизначає ключ у org.gnome.mutter, коли запущено GNOME Shell." "Цей ключ перевизначає ключ у org.gnome.mutter, коли запущено GNOME Shell."
#: data/org.gnome.shell.gschema.xml.in:327 #: data/org.gnome.shell.gschema.xml.in:319
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Увімкнути розбиття країв, коли кладуться вікна на краї екрана" msgstr "Увімкнути розбиття країв, коли кладуться вікна на краї екрана"
#: data/org.gnome.shell.gschema.xml.in:335 #: data/org.gnome.shell.gschema.xml.in:327
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "Робочі простори організовуються динамічно" msgstr "Робочі простори організовуються динамічно"
#: data/org.gnome.shell.gschema.xml.in:343 #: data/org.gnome.shell.gschema.xml.in:335
msgid "Workspaces only on primary monitor" msgid "Workspaces only on primary monitor"
msgstr "Робочий простір лише на основному моніторі" msgstr "Робочий простір лише на основному моніторі"
#: data/org.gnome.shell.gschema.xml.in:351 #: data/org.gnome.shell.gschema.xml.in:343
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Затримувати зміни фокусу миші, поки вказівник не перестане рухатись" msgstr "Затримувати зміни фокусу миші, поки вказівник не перестане рухатись"
@ -494,18 +484,18 @@ msgid "Visit extension homepage"
msgstr "Відвідати сторінку розширення" msgstr "Відвідати сторінку розширення"
#: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61 #: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61
#: js/ui/components/networkAgent.js:111 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:190 #: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:228
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183 #: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183
msgid "Cancel" msgid "Cancel"
msgstr "Скасувати" msgstr "Скасувати"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:210 #: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:209
#: js/ui/components/networkAgent.js:226 js/ui/components/networkAgent.js:250 #: js/ui/components/networkAgent.js:225 js/ui/components/networkAgent.js:249
#: js/ui/components/networkAgent.js:271 js/ui/components/networkAgent.js:291 #: js/ui/components/networkAgent.js:270 js/ui/components/networkAgent.js:290
#: js/ui/components/networkAgent.js:301 js/ui/components/polkitAgent.js:275 #: js/ui/components/networkAgent.js:300 js/ui/components/polkitAgent.js:275
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Пароль" msgstr "Пароль"
@ -528,8 +518,8 @@ msgstr "(наприклад, користувач або %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:246 #: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:245
#: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:287 #: js/ui/components/networkAgent.js:268 js/ui/components/networkAgent.js:286
msgid "Username" msgid "Username"
msgstr "Користувач" msgstr "Користувач"
@ -636,26 +626,26 @@ msgctxt "search-result"
msgid "Lock Screen Rotation" msgid "Lock Screen Rotation"
msgstr "Заблокувати обертання екрана" msgstr "Заблокувати обертання екрана"
#: js/misc/util.js:120 #: js/misc/util.js:121
msgid "Command not found" msgid "Command not found"
msgstr "Команди не знайдено" msgstr "Команди не знайдено"
#. Replace "Error invoking GLib.shell_parse_argv: " with #. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer #. something nicer
#: js/misc/util.js:156 #: js/misc/util.js:157
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "Неможливо розібрати команду:" msgstr "Неможливо розібрати команду:"
#: js/misc/util.js:164 #: js/misc/util.js:165
#, javascript-format #, javascript-format
msgid "Execution of “%s” failed:" msgid "Execution of “%s” failed:"
msgstr "Не вдалось виконати «%s»:" msgstr "Не вдалось виконати «%s»:"
#: js/misc/util.js:181 #: js/misc/util.js:182
msgid "Just now" msgid "Just now"
msgstr "Просто зараз" msgstr "Просто зараз"
#: js/misc/util.js:183 #: js/misc/util.js:184
#, javascript-format #, javascript-format
msgid "%d minute ago" msgid "%d minute ago"
msgid_plural "%d minutes ago" msgid_plural "%d minutes ago"
@ -664,7 +654,7 @@ msgstr[1] "%d хвилини тому"
msgstr[2] "%d хвилин тому" msgstr[2] "%d хвилин тому"
msgstr[3] "%d хвилина тому" msgstr[3] "%d хвилина тому"
#: js/misc/util.js:187 #: js/misc/util.js:188
#, javascript-format #, javascript-format
msgid "%d hour ago" msgid "%d hour ago"
msgid_plural "%d hours ago" msgid_plural "%d hours ago"
@ -673,11 +663,11 @@ msgstr[1] "%d години тому"
msgstr[2] "%d годин тому" msgstr[2] "%d годин тому"
msgstr[3] "%d година тому" msgstr[3] "%d година тому"
#: js/misc/util.js:191 js/ui/dateMenu.js:162 #: js/misc/util.js:192 js/ui/dateMenu.js:162
msgid "Yesterday" msgid "Yesterday"
msgstr "Учора" msgstr "Учора"
#: js/misc/util.js:193 #: js/misc/util.js:194
#, javascript-format #, javascript-format
msgid "%d day ago" msgid "%d day ago"
msgid_plural "%d days ago" msgid_plural "%d days ago"
@ -686,7 +676,7 @@ msgstr[1] "%d дні тому"
msgstr[2] "%d днів тому" msgstr[2] "%d днів тому"
msgstr[3] "%d день тому" msgstr[3] "%d день тому"
#: js/misc/util.js:197 #: js/misc/util.js:198
#, javascript-format #, javascript-format
msgid "%d week ago" msgid "%d week ago"
msgid_plural "%d weeks ago" msgid_plural "%d weeks ago"
@ -695,7 +685,7 @@ msgstr[1] "%d тижні тому"
msgstr[2] "%d тижнів тому" msgstr[2] "%d тижнів тому"
msgstr[3] "%d тиждень тому" msgstr[3] "%d тиждень тому"
#: js/misc/util.js:201 #: js/misc/util.js:202
#, javascript-format #, javascript-format
msgid "%d month ago" msgid "%d month ago"
msgid_plural "%d months ago" msgid_plural "%d months ago"
@ -704,7 +694,7 @@ msgstr[1] "%d місяці тому"
msgstr[2] "%d місяців тому" msgstr[2] "%d місяців тому"
msgstr[3] "%d місяць тому" msgstr[3] "%d місяць тому"
#: js/misc/util.js:204 #: js/misc/util.js:205
#, javascript-format #, javascript-format
msgid "%d year ago" msgid "%d year ago"
msgid_plural "%d years ago" msgid_plural "%d years ago"
@ -714,20 +704,20 @@ msgstr[2] "%d років тому"
msgstr[3] "%d рік тому" msgstr[3] "%d рік тому"
#. Translators: Time in 24h format #. Translators: Time in 24h format
#: js/misc/util.js:237 #: js/misc/util.js:238
msgid "%H%M" msgid "%H%M"
msgstr "%H:%M" msgstr "%H:%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" #. time string in 24h format. i.e. "Yesterday, 14:30"
#: js/misc/util.js:243 #: js/misc/util.js:244
#, no-c-format #, no-c-format
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "Учора, %H%M" msgstr "Учора, %H%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" #. string in 24h format. i.e. "Monday, 14:30"
#: js/misc/util.js:249 #: js/misc/util.js:250
#, no-c-format #, no-c-format
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %H%M" msgstr "%A, %H%M"
@ -735,7 +725,7 @@ msgstr "%A, %H%M"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" #. i.e. "May 25, 14:30"
#: js/misc/util.js:255 #: js/misc/util.js:256
#, no-c-format #, no-c-format
msgid "%B %-d, %H%M" msgid "%B %-d, %H%M"
msgstr "%-d %B, %H%M" msgstr "%-d %B, %H%M"
@ -743,7 +733,7 @@ msgstr "%-d %B, %H%M"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" #. i.e. "May 25 2012, 14:30"
#: js/misc/util.js:261 #: js/misc/util.js:262
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %H%M" msgid "%B %-d %Y, %H%M"
msgstr "%-d %B %Y, %H%M" msgstr "%-d %B %Y, %H%M"
@ -751,20 +741,20 @@ msgstr "%-d %B %Y, %H%M"
#. Show only the time if date is on today #. Show only the time if date is on today
#. eslint-disable-line no-lonely-if #. eslint-disable-line no-lonely-if
#. Translators: Time in 12h format #. Translators: Time in 12h format
#: js/misc/util.js:266 #: js/misc/util.js:267
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%l%M %p" msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" #. time string in 12h format. i.e. "Yesterday, 2:30 pm"
#: js/misc/util.js:272 #: js/misc/util.js:273
#, no-c-format #, no-c-format
msgid "Yesterday, %l%M %p" msgid "Yesterday, %l%M %p"
msgstr "Учора, %l%M %p" msgstr "Учора, %l%M %p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" #. string in 12h format. i.e. "Monday, 2:30 pm"
#: js/misc/util.js:278 #: js/misc/util.js:279
#, no-c-format #, no-c-format
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %l%M %p" msgstr "%A, %l%M %p"
@ -772,7 +762,7 @@ msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" #. i.e. "May 25, 2:30 pm"
#: js/misc/util.js:284 #: js/misc/util.js:285
#, no-c-format #, no-c-format
msgid "%B %-d, %l%M %p" msgid "%B %-d, %l%M %p"
msgstr "%-d %B, %l%M %p" msgstr "%-d %B, %l%M %p"
@ -780,17 +770,17 @@ msgstr "%-d %B, %l%M %p"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format. #. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm" #. i.e. "May 25 2012, 2:30 pm"
#: js/misc/util.js:290 #: js/misc/util.js:291
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %l%M %p" msgid "%B %-d %Y, %l%M %p"
msgstr "%-d %B %Y, %l%M %p" msgstr "%-d %B %Y, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login window #. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:42 #: js/portalHelper/main.js:49
msgid "Hotspot Login" msgid "Hotspot Login"
msgstr "Вхід в точку" msgstr "Вхід в точку"
#: js/portalHelper/main.js:88 #: js/portalHelper/main.js:95
msgid "" msgid ""
"Your connection to this hotspot login is not secure. Passwords or other " "Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby." "information you enter on this page can be viewed by people nearby."
@ -1034,70 +1024,70 @@ msgstr "Наявна версія udisks не підтримує парамет
msgid "Open with %s" msgid "Open with %s"
msgstr "Відкрити через %s" msgstr "Відкрити через %s"
#: js/ui/components/networkAgent.js:93 #: js/ui/components/networkAgent.js:92
msgid "" msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router." "Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "" msgstr ""
"Також можете під'єднатися, натиснувши кнопку «WPS» на вашому маршрутизаторі." "Також можете під'єднатися, натиснувши кнопку «WPS» на вашому маршрутизаторі."
#: js/ui/components/networkAgent.js:105 js/ui/status/network.js:258 #: js/ui/components/networkAgent.js:104 js/ui/status/network.js:258
#: js/ui/status/network.js:349 js/ui/status/network.js:981 #: js/ui/status/network.js:349 js/ui/status/network.js:981
msgid "Connect" msgid "Connect"
msgstr "З'єднатись" msgstr "З'єднатись"
#: js/ui/components/networkAgent.js:216 #: js/ui/components/networkAgent.js:215
msgid "Key" msgid "Key"
msgstr "Ключ" msgstr "Ключ"
#: js/ui/components/networkAgent.js:254 js/ui/components/networkAgent.js:277 #: js/ui/components/networkAgent.js:253 js/ui/components/networkAgent.js:276
msgid "Private key password" msgid "Private key password"
msgstr "Пароль до закритого ключа" msgstr "Пароль до закритого ключа"
#: js/ui/components/networkAgent.js:275 #: js/ui/components/networkAgent.js:274
msgid "Identity" msgid "Identity"
msgstr "Профіль" msgstr "Профіль"
#: js/ui/components/networkAgent.js:289 #: js/ui/components/networkAgent.js:288
msgid "Service" msgid "Service"
msgstr "Служба" msgstr "Служба"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:346 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:345
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "Потрібне засвідчення" msgstr "Потрібне засвідчення"
#: js/ui/components/networkAgent.js:319 js/ui/components/networkAgent.js:680 #: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:680
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
"“%s”." "“%s”."
msgstr "Потрібно паролі або зашифровані ключі для доступу до радіомережі «%s»." msgstr "Потрібно паролі або зашифровані ключі для доступу до радіомережі «%s»."
#: js/ui/components/networkAgent.js:323 js/ui/components/networkAgent.js:684 #: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:684
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Дротова аутентифікація 802.1X" msgstr "Дротова аутентифікація 802.1X"
#: js/ui/components/networkAgent.js:325 #: js/ui/components/networkAgent.js:324
msgid "Network name" msgid "Network name"
msgstr "Назва мережі" msgstr "Назва мережі"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:688 #: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Аутентифікація DSL" msgstr "Аутентифікація DSL"
#: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:693 #: js/ui/components/networkAgent.js:336 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "Потрібен код PIN" msgstr "Потрібен код PIN"
#: js/ui/components/networkAgent.js:338 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Потрібен код PIN для мобільних широкосмугових пристроїв" msgstr "Потрібен код PIN для мобільних широкосмугових пристроїв"
#: js/ui/components/networkAgent.js:339 #: js/ui/components/networkAgent.js:338
msgid "PIN" msgid "PIN"
msgstr "Пін-код" msgstr "Пін-код"
#: js/ui/components/networkAgent.js:347 js/ui/components/networkAgent.js:685 #: js/ui/components/networkAgent.js:346 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:705 #: js/ui/components/networkAgent.js:705
#, javascript-format #, javascript-format
@ -1399,24 +1389,24 @@ msgstr "%s (віддалено)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (консоль)" msgstr "%s (консоль)"
#: js/ui/extensionDownloader.js:194 #: js/ui/extensionDownloader.js:232
msgid "Install" msgid "Install"
msgstr "Встановити" msgstr "Встановити"
#: js/ui/extensionDownloader.js:200 #: js/ui/extensionDownloader.js:238
msgid "Install Extension" msgid "Install Extension"
msgstr "Встановити розширення" msgstr "Встановити розширення"
#: js/ui/extensionDownloader.js:201 #: js/ui/extensionDownloader.js:239
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Звантажити і встановити «%s» з extensions.gnome.org?" msgstr "Звантажити і встановити «%s» з extensions.gnome.org?"
#: js/ui/extensionSystem.js:253 #: js/ui/extensionSystem.js:252
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "Випущено оновлення розширень" msgstr "Випущено оновлення розширень"
#: js/ui/extensionSystem.js:254 #: js/ui/extensionSystem.js:253
msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed."
msgstr "Приготовано до встановлення оновлення розширень." msgstr "Приготовано до встановлення оновлення розширень."
@ -1510,7 +1500,7 @@ msgstr "Вимкнути"
msgid "Leave Off" msgid "Leave Off"
msgstr "Покинути" msgstr "Покинути"
#: js/ui/keyboard.js:227 #: js/ui/keyboard.js:226
msgid "Region & Language Settings" msgid "Region & Language Settings"
msgstr "Параметри регіону та мови" msgstr "Параметри регіону та мови"
@ -1563,11 +1553,11 @@ msgstr "Переглянути джерело"
msgid "Web Page" msgid "Web Page"
msgstr "Веб-сторінка" msgstr "Веб-сторінка"
#: js/ui/main.js:294 #: js/ui/main.js:290
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Увійшов як наділений користувач" msgstr "Увійшов як наділений користувач"
#: js/ui/main.js:295 #: js/ui/main.js:291
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@ -1575,15 +1565,15 @@ msgstr ""
"З міркувань безпеки слід уникати сеансів з наділеними правами. Користуйтесь " "З міркувань безпеки слід уникати сеансів з наділеними правами. Користуйтесь "
"звичайним сеансом." "звичайним сеансом."
#: js/ui/main.js:344 #: js/ui/main.js:340
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Блокування екрана вимкнено" msgstr "Блокування екрана вимкнено"
#: js/ui/main.js:345 #: js/ui/main.js:341
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "Блокування екрана потребує керування входом GNOME." msgstr "Блокування екрана потребує керування входом GNOME."
#: js/ui/messageTray.js:1440 #: js/ui/messageTray.js:1443
msgid "System Information" msgid "System Information"
msgstr "Інформація про систему" msgstr "Інформація про систему"
@ -1617,47 +1607,47 @@ msgstr "Повернути"
msgid "Overview" msgid "Overview"
msgstr "Огляд" msgstr "Огляд"
#: js/ui/padOsd.js:96 #: js/ui/padOsd.js:95
msgid "New shortcut…" msgid "New shortcut…"
msgstr "Нове скорочення…" msgstr "Нове скорочення…"
#: js/ui/padOsd.js:143 #: js/ui/padOsd.js:142
msgid "Application defined" msgid "Application defined"
msgstr "Програму визначено" msgstr "Програму визначено"
#: js/ui/padOsd.js:144 #: js/ui/padOsd.js:143
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Показати екранну довідку" msgstr "Показати екранну довідку"
#: js/ui/padOsd.js:145 #: js/ui/padOsd.js:144
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Перемкнути монітор" msgstr "Перемкнути монітор"
#: js/ui/padOsd.js:146 #: js/ui/padOsd.js:145
msgid "Assign keystroke" msgid "Assign keystroke"
msgstr "Призначити клавішу" msgstr "Призначити клавішу"
#: js/ui/padOsd.js:212 #: js/ui/padOsd.js:211
msgid "Done" msgid "Done"
msgstr "Зроблено" msgstr "Зроблено"
#: js/ui/padOsd.js:718 #: js/ui/padOsd.js:716
msgid "Edit…" msgid "Edit…"
msgstr "Редагувати…" msgstr "Редагувати…"
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877 #: js/ui/padOsd.js:758 js/ui/padOsd.js:875
msgid "None" msgid "None"
msgstr "Немає" msgstr "Немає"
#: js/ui/padOsd.js:831 #: js/ui/padOsd.js:829
msgid "Press a button to configure" msgid "Press a button to configure"
msgstr "Натисніть кнопку, щоб налаштувати" msgstr "Натисніть кнопку, щоб налаштувати"
#: js/ui/padOsd.js:832 #: js/ui/padOsd.js:830
msgid "Press Esc to exit" msgid "Press Esc to exit"
msgstr "Натисніть клавішу «Esc», щоб вийти" msgstr "Натисніть клавішу «Esc», щоб вийти"
#: js/ui/padOsd.js:835 #: js/ui/padOsd.js:833
msgid "Press any key to exit" msgid "Press any key to exit"
msgstr "Натисніть будь-яку клавішу, щоб вийти" msgstr "Натисніть будь-яку клавішу, щоб вийти"
@ -1667,12 +1657,12 @@ msgstr "Натисніть будь-яку клавішу, щоб вийти"
msgid "Activities" msgid "Activities"
msgstr "Діяльність" msgstr "Діяльність"
#: js/ui/panel.js:542 #: js/ui/panel.js:556
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Система" msgstr "Система"
#: js/ui/panel.js:658 #: js/ui/panel.js:674
msgid "Top Bar" msgid "Top Bar"
msgstr "Верхня панель" msgstr "Верхня панель"
@ -1711,7 +1701,7 @@ msgstr "Неможливо заблокувати"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Блокування заборонено програмою" msgstr "Блокування заборонено програмою"
#: js/ui/screenshot.js:141 #: js/ui/screenshot.js:155
msgid "Screenshot taken" msgid "Screenshot taken"
msgstr "Знімок зроблено" msgstr "Знімок зроблено"
@ -2420,13 +2410,10 @@ msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
#: js/ui/windowMenu.js:27 #: js/ui/windowMenu.js:27
#| msgid "Hide Text"
msgid "Hide" msgid "Hide"
msgstr "Приховати" msgstr "Приховати"
#: js/ui/windowMenu.js:34 #: js/ui/windowMenu.js:34
#| msgctxt "search-result"
#| msgid "Restart"
msgid "Restore" msgid "Restore"
msgstr "Відновити" msgstr "Відновити"
@ -2783,6 +2770,7 @@ msgstr "UUID, назва і опис — обов'язкові"
#: subprojects/extensions-tool/src/command-enable.c:46 #: subprojects/extensions-tool/src/command-enable.c:46
#: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-info.c:50
#: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/command-list.c:64
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell\n" msgid "Failed to connect to GNOME Shell\n"
msgstr "Не вдалося з'єднатися із GNOME Shell\n" msgstr "Не вдалося з'єднатися із GNOME Shell\n"
@ -2799,7 +2787,7 @@ msgstr "Вимкнути розширення"
#: subprojects/extensions-tool/src/command-disable.c:119 #: subprojects/extensions-tool/src/command-disable.c:119
#: subprojects/extensions-tool/src/command-enable.c:119 #: subprojects/extensions-tool/src/command-enable.c:119
#: subprojects/extensions-tool/src/command-info.c:103 #: subprojects/extensions-tool/src/command-info.c:103
#: subprojects/extensions-tool/src/command-prefs.c:97 #: subprojects/extensions-tool/src/command-prefs.c:105
#: subprojects/extensions-tool/src/command-reset.c:76 #: subprojects/extensions-tool/src/command-reset.c:76
#: subprojects/extensions-tool/src/command-uninstall.c:104 #: subprojects/extensions-tool/src/command-uninstall.c:104
msgid "No UUID given" msgid "No UUID given"
@ -2808,7 +2796,7 @@ msgstr "Не надано UUID"
#: subprojects/extensions-tool/src/command-disable.c:124 #: subprojects/extensions-tool/src/command-disable.c:124
#: subprojects/extensions-tool/src/command-enable.c:124 #: subprojects/extensions-tool/src/command-enable.c:124
#: subprojects/extensions-tool/src/command-info.c:108 #: subprojects/extensions-tool/src/command-info.c:108
#: subprojects/extensions-tool/src/command-prefs.c:102 #: subprojects/extensions-tool/src/command-prefs.c:110
#: subprojects/extensions-tool/src/command-reset.c:81 #: subprojects/extensions-tool/src/command-reset.c:81
#: subprojects/extensions-tool/src/command-uninstall.c:109 #: subprojects/extensions-tool/src/command-uninstall.c:109
msgid "More than one UUID given" msgid "More than one UUID given"
@ -2938,7 +2926,13 @@ msgstr "Вказано понад один каталог джерела"
msgid "Extension “%s” doesn't have preferences\n" msgid "Extension “%s” doesn't have preferences\n"
msgstr "У розширення «%s» немає налаштувань\n" msgstr "У розширення «%s» немає налаштувань\n"
#: subprojects/extensions-tool/src/command-prefs.c:79 #: subprojects/extensions-tool/src/command-prefs.c:62
#, c-format
msgid "Failed to open prefs for extension “%s”: %s\n"
msgstr ""
"Не вдалося відкрити налаштування для розширення «%s»: %s\n"
#: subprojects/extensions-tool/src/command-prefs.c:87
msgid "Opens extension preferences" msgid "Opens extension preferences"
msgstr "Відкриває параметри розширення" msgstr "Відкриває параметри розширення"
@ -2963,10 +2957,6 @@ msgstr "Вилучити розширення"
msgid "Do not print error messages" msgid "Do not print error messages"
msgstr "Не виводити повідомлення про помилки" msgstr "Не виводити повідомлення про помилки"
#: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell"
msgstr "Не вдалося з'єднатися із GNOME Shell"
#: subprojects/extensions-tool/src/main.c:244 #: subprojects/extensions-tool/src/main.c:244
msgid "Path" msgid "Path"
msgstr "Шлях" msgstr "Шлях"
@ -3101,6 +3091,17 @@ msgstr[3] "%u вхід"
msgid "System Sounds" msgid "System Sounds"
msgstr "Системні звуки" msgstr "Системні звуки"
#~ msgid "Enable introspection API"
#~ msgstr "Увімкнути API для самоаналізу"
#~ msgid ""
#~ "Enables a D-Bus API that allows to introspect the application state of "
#~ "the shell."
#~ msgstr "Вмикає D-Bus API для самоаналізу стану оболонки."
#~ msgid "Failed to connect to GNOME Shell"
#~ msgstr "Не вдалося з'єднатися із GNOME Shell"
#~ msgid "Minimize" #~ msgid "Minimize"
#~ msgstr "Згорнути" #~ msgstr "Згорнути"

View File

@ -1,4 +1,4 @@
#!@PYTHON@ #!/usr/bin/env python3
# -*- mode: Python; indent-tabs-mode: nil; -*- # -*- mode: Python; indent-tabs-mode: nil; -*-
import subprocess import subprocess

View File

@ -1,4 +1,4 @@
#!@PYTHON@ #!/usr/bin/env python3
# -*- mode: Python; indent-tabs-mode: nil; -*- # -*- mode: Python; indent-tabs-mode: nil; -*-
import datetime import datetime

View File

@ -46,6 +46,7 @@
#include "shell-global-private.h" #include "shell-global-private.h"
#include "shell-perf-log.h" #include "shell-perf-log.h"
#include "shell-wm-private.h" #include "shell-wm-private.h"
#include "shell-realms.h"
#define GNOME_TYPE_SHELL_PLUGIN (gnome_shell_plugin_get_type ()) #define GNOME_TYPE_SHELL_PLUGIN (gnome_shell_plugin_get_type ())
G_DECLARE_FINAL_TYPE (GnomeShellPlugin, gnome_shell_plugin, G_DECLARE_FINAL_TYPE (GnomeShellPlugin, gnome_shell_plugin,
@ -214,6 +215,20 @@ gnome_shell_plugin_destroy (MetaPlugin *plugin,
actor); actor);
} }
static void
ensure_switched_context_current(guint ctx_id) {
ShellRealms *realms = shell_realms_get_default();
ShellRealmItem *realm = shell_realms_realm_by_context_id(realms, ctx_id);
if (!realm) {
g_warning ("No realm found for ctx_id = %d in context switch", ctx_id);
return;
}
if (!shell_realm_item_is_current(realm)) {
shell_realm_item_set_current(realm);
}
}
static void static void
gnome_shell_plugin_switch_workspace (MetaPlugin *plugin, gnome_shell_plugin_switch_workspace (MetaPlugin *plugin,
gint from, gint from,
@ -221,6 +236,10 @@ gnome_shell_plugin_switch_workspace (MetaPlugin *plugin,
MetaMotionDirection direction) MetaMotionDirection direction)
{ {
_shell_wm_switch_workspace (get_shell_wm(), from, to, direction); _shell_wm_switch_workspace (get_shell_wm(), from, to, direction);
if (direction == META_MOTION_CONTEXT_SWITCH) {
ensure_switched_context_current((guint) (to >> 16));
}
} }
static void static void

View File

@ -1,7 +1,7 @@
service_data = configuration_data() service_data = configuration_data()
service_data.set('libexecdir', libexecdir) service_data.set('libexecdir', libexecdir)
subdir('calendar-server') #subdir('calendar-server')
subdir('hotplug-sniffer') subdir('hotplug-sniffer')
subdir('st') subdir('st')
subdir('tray') subdir('tray')
@ -125,6 +125,7 @@ libshell_private_headers = [
'shell-app-cache-private.h', 'shell-app-cache-private.h',
'shell-app-system-private.h', 'shell-app-system-private.h',
'shell-global-private.h', 'shell-global-private.h',
'shell-realms-private.h',
'shell-window-tracker-private.h', 'shell-window-tracker-private.h',
'shell-wm-private.h' 'shell-wm-private.h'
] ]
@ -147,6 +148,14 @@ libshell_sources = [
'shell-perf-log.c', 'shell-perf-log.c',
'shell-polkit-authentication-agent.c', 'shell-polkit-authentication-agent.c',
'shell-polkit-authentication-agent.h', 'shell-polkit-authentication-agent.h',
'shell-realm-item.c',
'shell-realm-item.h',
'shell-realms-window-frames.c',
'shell-realms-window-frames.h',
'shell-realms.c',
'shell-realms.h',
'shell-realm-tracker.c',
'shell-realm-tracker.h',
'shell-screenshot.c', 'shell-screenshot.c',
'shell-secure-text-buffer.c', 'shell-secure-text-buffer.c',
'shell-secure-text-buffer.h', 'shell-secure-text-buffer.h',

View File

@ -23,7 +23,7 @@
* Shell is running. * Shell is running.
*/ */
#define DEFAULT_TIMEOUT_SECONDS 5 #define DEFAULT_TIMEOUT_SECONDS 2
struct _ShellAppCache struct _ShellAppCache
{ {

View File

@ -12,6 +12,7 @@
#include "shell-app-cache-private.h" #include "shell-app-cache-private.h"
#include "shell-app-private.h" #include "shell-app-private.h"
#include "shell-window-tracker-private.h" #include "shell-window-tracker-private.h"
#include "shell-realms.h"
#include "shell-app-system-private.h" #include "shell-app-system-private.h"
#include "shell-global.h" #include "shell-global.h"
#include "shell-util.h" #include "shell-util.h"
@ -91,6 +92,110 @@ static void shell_app_system_class_init(ShellAppSystemClass *klass)
G_TYPE_NONE, 0); G_TYPE_NONE, 0);
} }
/*
* Applications belonging to realms have a prefix added to the filenames
* of their desktop files indicating the name of the realm. For example
* in a realm called 'main' the desktop file 'org.gnome.Terminal.desktop'
* is renamed to 'realm-main.org.gnome.Terminal.desktop'.
*
* This has the effect of creating a separate application ID for instances
* of the same application in multiple realms.
*/
static const char *
realm_name_from_application_id (const char *id)
{
gchar **split = NULL;
const char *result = NULL;
if (!g_str_has_prefix (id, "realm-")) {
return NULL;
}
split = g_strsplit(id, ".", 2);
if (split[0]) {
g_assert_true (g_str_has_prefix (split[0], "realm-"));
result = g_strdup(split[0] + 6);
}
g_strfreev (split);
return result;
}
char *
current_realm_name (gboolean name_only)
{
gchar *link = NULL;
gchar *p = NULL;
gchar *realm = NULL;
link = g_file_read_link ("/run/citadel/realms/current/current.realm", NULL);
if (link) {
p = g_strrstr(link, "/realm-");
if (p) {
/* skip slash character */
p++;
if (name_only) {
/* skip 'realm-' */
p += 6;
}
realm = g_strdup(p);
}
g_free (link);
}
return realm;
}
static gboolean
is_current_realm_app (const char *id, const char *current_realm)
{
return !g_str_has_prefix (id, "realm-") || g_str_has_prefix (id, current_realm);
}
static void
refresh_installed_apps (ShellAppSystem *self)
{
const GList *l;
GAppInfo *app;
const char *app_id;
char *current_realm;
ShellAppSystemPrivate *priv = self->priv;
g_list_free_full (g_steal_pointer (&priv->installed_apps), g_object_unref);
l = shell_app_cache_get_all (shell_app_cache_get_default ());
current_realm = current_realm_name (FALSE);
while (l) {
app = l->data;
app_id = g_app_info_get_id (app);
if (is_current_realm_app (app_id, current_realm)) {
priv->installed_apps = g_list_prepend (priv->installed_apps, g_object_ref (app));
}
l = l->next;
}
priv->installed_apps = g_list_reverse (priv->installed_apps);
g_free (current_realm);
}
static char *
realm_wm_class (const char *wmclass, const char *realm_name)
{
if (realm_name) {
return g_strdup_printf ("realm-%s.%s", realm_name, wmclass);
} else {
return g_strdup (wmclass);
}
}
static void static void
scan_startup_wm_class_to_id (ShellAppSystem *self) scan_startup_wm_class_to_id (ShellAppSystem *self)
{ {
@ -106,6 +211,7 @@ scan_startup_wm_class_to_id (ShellAppSystem *self)
{ {
GAppInfo *info = l->data; GAppInfo *info = l->data;
const char *startup_wm_class, *id, *old_id; const char *startup_wm_class, *id, *old_id;
char *realm_wmclass;
id = g_app_info_get_id (info); id = g_app_info_get_id (info);
startup_wm_class = g_desktop_app_info_get_startup_wm_class (G_DESKTOP_APP_INFO (info)); startup_wm_class = g_desktop_app_info_get_startup_wm_class (G_DESKTOP_APP_INFO (info));
@ -113,12 +219,17 @@ scan_startup_wm_class_to_id (ShellAppSystem *self)
if (startup_wm_class == NULL) if (startup_wm_class == NULL)
continue; continue;
realm_wmclass = realm_wm_class (startup_wm_class, realm_name_from_application_id (id));
/* In case multiple .desktop files set the same StartupWMClass, prefer /* In case multiple .desktop files set the same StartupWMClass, prefer
* the one where ID and StartupWMClass match */ * the one where ID and StartupWMClass match */
old_id = g_hash_table_lookup (priv->startup_wm_class_to_id, startup_wm_class); old_id = g_hash_table_lookup (priv->startup_wm_class_to_id, realm_wmclass);
if (old_id == NULL || strcmp (id, startup_wm_class) == 0) if (old_id == NULL || strcmp (id, startup_wm_class) == 0) {
g_hash_table_insert (priv->startup_wm_class_to_id, g_hash_table_insert (priv->startup_wm_class_to_id,
g_strdup (startup_wm_class), g_strdup (id)); g_strdup (realm_wmclass), g_strdup (id));
}
g_free (realm_wmclass);
} }
} }
@ -347,15 +458,19 @@ shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
*/ */
ShellApp * ShellApp *
shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system, shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system,
const char *wmclass) const char *wmclass,
const char *realm_name)
{ {
char *canonicalized; char *canonicalized;
char *desktop_file; char *desktop_file;
char *classname;
ShellApp *app; ShellApp *app;
if (wmclass == NULL) if (wmclass == NULL)
return NULL; return NULL;
classname = realm_wm_class (wmclass, realm_name);
/* First try without changing the case (this handles /* First try without changing the case (this handles
org.example.Foo.Bar.desktop applications) org.example.Foo.Bar.desktop applications)
@ -363,14 +478,16 @@ shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system,
the WM_CLASS to Org.example.Foo.Bar, but it also the WM_CLASS to Org.example.Foo.Bar, but it also
sets the instance part to org.example.Foo.Bar, so we're ok sets the instance part to org.example.Foo.Bar, so we're ok
*/ */
desktop_file = g_strconcat (wmclass, ".desktop", NULL); desktop_file = g_strconcat (classname, ".desktop", NULL);
app = shell_app_system_lookup_heuristic_basename (system, desktop_file); app = shell_app_system_lookup_heuristic_basename (system, desktop_file);
g_free (desktop_file); g_free (desktop_file);
if (app) if (app) {
g_free (classname);
return app; return app;
}
canonicalized = g_ascii_strdown (wmclass, -1); canonicalized = g_ascii_strdown (classname, -1);
/* This handles "Fedora Eclipse", probably others. /* This handles "Fedora Eclipse", probably others.
* Note g_strdelimit is modify-in-place. */ * Note g_strdelimit is modify-in-place. */
@ -382,6 +499,7 @@ shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system,
g_free (canonicalized); g_free (canonicalized);
g_free (desktop_file); g_free (desktop_file);
g_free (classname);
return app; return app;
} }
@ -398,14 +516,20 @@ shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system,
*/ */
ShellApp * ShellApp *
shell_app_system_lookup_startup_wmclass (ShellAppSystem *system, shell_app_system_lookup_startup_wmclass (ShellAppSystem *system,
const char *wmclass) const char *wmclass,
const char *realm_name)
{ {
const char *id; const char *id;
char *classname;
if (wmclass == NULL) if (wmclass == NULL)
return NULL; return NULL;
id = g_hash_table_lookup (system->priv->startup_wm_class_to_id, wmclass); classname = realm_wm_class (wmclass, realm_name);
id = g_hash_table_lookup (system->priv->startup_wm_class_to_id, classname);
g_free (classname);
if (id == NULL) if (id == NULL)
return NULL; return NULL;
@ -435,6 +559,29 @@ _shell_app_system_notify_app_state_changed (ShellAppSystem *self,
g_signal_emit (self, signals[APP_STATE_CHANGED], 0, app); g_signal_emit (self, signals[APP_STATE_CHANGED], 0, app);
} }
static gboolean
is_current_realm_context_app(ShellApp *app)
{
ShellRealms *realms = shell_realms_get_default();
ShellRealmItem *item = shell_realms_current_realm (realms);
guint id = (item) ? shell_realm_item_get_context_id (item) : 0;
GSList *iter = shell_app_get_windows (app);
while (iter) {
MetaWindow *window = iter->data;
if (meta_window_is_on_all_workspaces (window)) {
return true;
}
MetaWorkspace *workspace = meta_window_get_workspace (window);
if (meta_workspace_get_context_id (workspace) == id) {
return true;
}
iter = iter->next;
}
return false;
}
/** /**
* shell_app_system_get_running: * shell_app_system_get_running:
* @self: A #ShellAppSystem * @self: A #ShellAppSystem
@ -458,7 +605,9 @@ shell_app_system_get_running (ShellAppSystem *self)
{ {
ShellApp *app = key; ShellApp *app = key;
ret = g_slist_prepend (ret, app); if (is_current_realm_context_app (app)) {
ret = g_slist_prepend (ret, app);
}
} }
ret = g_slist_sort (ret, (GCompareFunc)shell_app_compare); ret = g_slist_sort (ret, (GCompareFunc)shell_app_compare);
@ -482,12 +631,16 @@ shell_app_system_search (const char *search_string)
{ {
char ***results = g_desktop_app_info_search (search_string); char ***results = g_desktop_app_info_search (search_string);
char ***groups, **ids; char ***groups, **ids;
char *current_realm;
current_realm = current_realm_name (FALSE);
for (groups = results; *groups; groups++) for (groups = results; *groups; groups++)
for (ids = *groups; *ids; ids++) for (ids = *groups; *ids; ids++)
if (!g_utf8_validate (*ids, -1, NULL)) if (!g_utf8_validate (*ids, -1, NULL) || !is_current_realm_app (*ids, current_realm))
**ids = '\0'; **ids = '\0';
g_free (current_realm);
return results; return results;
} }
@ -504,5 +657,7 @@ shell_app_system_search (const char *search_string)
GList * GList *
shell_app_system_get_installed (ShellAppSystem *self) shell_app_system_get_installed (ShellAppSystem *self)
{ {
return shell_app_cache_get_all (shell_app_cache_get_default ()); ShellAppSystemPrivate *priv = self->priv;
refresh_installed_apps (self);
return priv->installed_apps;
} }

View File

@ -20,9 +20,11 @@ ShellApp *shell_app_system_lookup_heuristic_basename (ShellAppSystem *
const char *id); const char *id);
ShellApp *shell_app_system_lookup_startup_wmclass (ShellAppSystem *system, ShellApp *shell_app_system_lookup_startup_wmclass (ShellAppSystem *system,
const char *wmclass); const char *wmclass,
const char *realm_name);
ShellApp *shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system, ShellApp *shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system,
const char *wmclass); const char *wmclass,
const char *realm_name);
GSList *shell_app_system_get_running (ShellAppSystem *self); GSList *shell_app_system_get_running (ShellAppSystem *self);
char ***shell_app_system_search (const char *search_string); char ***shell_app_system_search (const char *search_string);

View File

@ -1126,7 +1126,7 @@ _shell_app_add_window (ShellApp *app,
app->running_state->interesting_windows++; app->running_state->interesting_windows++;
shell_app_sync_running_state (app); shell_app_sync_running_state (app);
if (app->started_on_workspace >= 0) if (app->started_on_workspace >= 0 && !meta_window_is_on_all_workspaces (window))
meta_window_change_workspace_by_index (window, app->started_on_workspace, FALSE); meta_window_change_workspace_by_index (window, app->started_on_workspace, FALSE);
app->started_on_workspace = -1; app->started_on_workspace = -1;

View File

@ -44,6 +44,7 @@
#include "shell-util.h" #include "shell-util.h"
#include "st.h" #include "st.h"
#include "switcheroo-control.h" #include "switcheroo-control.h"
#include "shell-realm-tracker.h"
static ShellGlobal *the_object = NULL; static ShellGlobal *the_object = NULL;
@ -1068,6 +1069,8 @@ _shell_global_set_plugin (ShellGlobal *global,
global->focus_manager = st_focus_manager_get_for_stage (global->stage); global->focus_manager = st_focus_manager_get_for_stage (global->stage);
update_scaling_factor (global, settings); update_scaling_factor (global, settings);
shell_realm_tracker_start ();
} }
GjsContext * GjsContext *

396
src/shell-realm-item.c Normal file
View File

@ -0,0 +1,396 @@
#include "shell-global.h"
#include "shell-realm-item.h"
#include "shell-realm-tracker.h"
#include <meta/meta-workspace-manager.h>
#include <meta/display.h>
struct _ShellRealmItem {
GObject parent;
char *realm_name;
char *description;
char *namespace;
MetaWorkspaceContext *context;
guint8 status;
gboolean tagged;
gboolean disposed;
};
G_DEFINE_TYPE (ShellRealmItem, shell_realm_item, G_TYPE_OBJECT);
enum {
PROP_0,
PROP_ITEM_REALM_NAME,
PROP_ITEM_DESCRIPTION,
PROP_ITEM_NAMESPACE
};
#define REALM_STATUS_RUNNING 1
#define REALM_STATUS_CURRENT 2
#define REALM_STATUS_SYSTEM 4
static void
shell_realm_item_init(ShellRealmItem *item)
{
}
ShellRealmItem *
shell_realm_item_new (const char *realm_name, const char *description, const char *namespace, guint8 status)
{
ShellRealmItem *item = g_object_new (SHELL_TYPE_REALM_ITEM, NULL);
item->realm_name = g_strdup (realm_name);
item->description = g_strdup (description);
item->namespace = g_strdup (namespace);
item->status = status;
item->context = NULL;
item->tagged = FALSE;
item->disposed = FALSE;
return item;
}
void
shell_realm_item_acquire_context (ShellRealmItem *item)
{
if (item->context || item->disposed || shell_realm_item_is_system (item)) {
return;
}
if (!item->namespace || !shell_realm_item_is_running (item)) {
g_warning ("ShellRealmItem: Cannot acquire workspace context for realm '%s' because not running or no namespace", item->realm_name);
return;
}
MetaDisplay *display = shell_global_get_display (shell_global_get());
MetaWorkspaceManager *workspace_manager = meta_display_get_workspace_manager (display);
item->context = meta_workspace_manager_context_for_namespace (workspace_manager, item->namespace);
}
/**
* shell_realm_item_get_realm_name:
* @item: A #ShellRealmItem instance
*
* Returns: The name of the realm for this #ShellRealmItem
*/
const char *
shell_realm_item_get_realm_name (ShellRealmItem *item)
{
return item->realm_name;
}
/**
* shell_realm_item_get_description:
* @item: A #ShellRealmItem instance
*
* Returns: The description field for this realm or an empty string if no description is set
*/
const char *
shell_realm_item_get_description (ShellRealmItem *item)
{
if (item->description)
return item->description;
else
return "";
}
/**
* shell_realm_item_get_namespace:
* @item: A #ShellRealmItem instance
*
* Returns: The namespace field for this realm or an empty string if no namespace is set
*/
const char *
shell_realm_item_get_namespace (ShellRealmItem *item)
{
if (item->namespace)
return item->namespace;
else
return "";
}
/**
* shell_realm_item_get_context_id:
* @item: A #ShellRealmItem instance
*
* Returns: The context id for the #MetaWorkspaceContext of this realm or 0 if
* no context exists.
*/
guint
shell_realm_item_get_context_id (ShellRealmItem *item)
{
if (shell_realm_item_is_running (item) && !item->context) {
shell_realm_item_acquire_context (item);
}
if (item->context) {
return meta_workspace_context_id (item->context);
} else {
return 0;
}
}
/**
* shell_realm_item_get_active_workspace:
* @item: A #ShellRealmItem
*
* Returns: (transfer none): The current workspace for the context
* belonging to this item.
*/
MetaWorkspace *
shell_realm_item_get_active_workspace (ShellRealmItem *item)
{
if (shell_realm_item_is_running (item) && !item->context) {
shell_realm_item_acquire_context (item);
}
if (item->context) {
return meta_workspace_context_get_active_workspace (item->context);
} else {
return NULL;
}
}
/**
* shell_realm_item_activate_context:
* @item: A #ShellRealmItem instance for a running realm
*
* If a #MetaWorkspaceContext is associated with this realm
* set it as the active workspace context.
*/
void
shell_realm_item_activate_context (ShellRealmItem *item)
{
shell_realm_item_acquire_context (item);
if (item->context) {
meta_workspace_context_activate (item->context);
}
}
/**
* shell_realm_item_set_current:
* @item: A #ShellRealmItem instance for a running realm
*
* Sends a DBUS request to change the current realm to this realm. This does not immediately
* influence any local state in GNOME shell. Once the realms daemon has changed the current realm
* it will emit a signal and the processing of that signal will update the local state.
*/
void
shell_realm_item_set_current (ShellRealmItem *item) {
ShellRealmTracker *tracker = shell_realm_tracker_get_default();
if (item && item->realm_name) {
shell_realm_tracker_call_set_current (tracker, item->realm_name);
}
}
/**
* shell_realm_item_move_window_to_context:
* @item: A #ShellRealmItem instance for a running realm
* @window: A #MetaWindow for some window
*
* Move window to the currently active workspace in the #MetaWorkspaceContext for
* this realm.
*/
void
shell_realm_item_move_window_to_context (ShellRealmItem *item, MetaWindow *window)
{
shell_realm_item_acquire_context (item);
if (item->context) {
meta_workspace_context_move_window_to_context (item->context, window);
} else {
g_warning ("ShellRealmItem: Attempted to move window to realm '%s' which has no workspace context", item->realm_name);
}
}
static gboolean
is_flag_set(guint8 status, guchar flag)
{
return ((status & flag) != 0) ? TRUE : FALSE;
}
static gboolean
has_status_flag (ShellRealmItem *item, guchar flag)
{
return is_flag_set (item->status, flag);
}
static void
set_status_flag (ShellRealmItem *item, guint8 flag, gboolean value)
{
if (value) {
item->status |= flag;
} else {
item->status &= ~flag;
}
}
/**
* shell_realm_item_is_current:
* @item: A #ShellRealmItem instance
*
* Returns: %TRUE if this #ShellRealmItem is the current realm
*/
gboolean
shell_realm_item_is_current (ShellRealmItem *item)
{
return has_status_flag (item, REALM_STATUS_CURRENT);
}
/**
* shell_realm_item_is_running:
* @item: A #ShellRealmItem instance
*
* Returns: %TRUE if this #ShellRealmItem is running
*/
gboolean
shell_realm_item_is_running (ShellRealmItem *item)
{
return has_status_flag (item, REALM_STATUS_RUNNING);
}
/**
* shell_realm_item_is_system:
* @item: A #ShellRealmItem instance
*
* Returns: %TRUE if this #ShellRealmItem is a system realm
*/
gboolean
shell_realm_item_is_system (ShellRealmItem *item)
{
return has_status_flag (item, REALM_STATUS_SYSTEM);
}
void shell_realm_item_set_current_flag (ShellRealmItem *item, gboolean value)
{
set_status_flag (item, REALM_STATUS_CURRENT, value);
}
void shell_realm_item_set_running_flag (ShellRealmItem *item, gboolean value)
{
set_status_flag (item, REALM_STATUS_RUNNING, value);
if (!value && item->context) {
meta_workspace_context_remove (item->context);
item->context = NULL;
}
}
void shell_realm_item_update (ShellRealmItem *item, const char *realm_name, const char *namespace, guint8 status)
{
if (g_strcmp0 (item->realm_name, realm_name)) {
g_message ("ShellRealmItem: Realm name changed from %s to %s", item->realm_name, realm_name);
g_free (item->realm_name);
item->realm_name = g_strdup (realm_name);
}
if (g_strcmp0 (item->namespace, namespace)) {
g_free(item->namespace);
item->namespace = g_strdup (namespace);
}
if (item->status != status) {
gboolean was_running = has_status_flag (item, REALM_STATUS_RUNNING);
gboolean is_running = is_flag_set (status, REALM_STATUS_RUNNING);
gboolean stopped = was_running && !is_running;
item->status = status;
if (stopped) {
meta_workspace_context_remove (item->context);
item->context = NULL;
}
}
}
void
shell_realm_item_set_tagged (ShellRealmItem *item, gboolean is_tagged)
{
item->tagged = is_tagged;
}
gboolean
shell_realm_item_is_tagged (ShellRealmItem *item)
{
return item->tagged;
}
static void shell_realm_item_get_property (GObject *gobject,
guint prop_id,
GValue *value,
GParamSpec *pspec)
{
ShellRealmItem *item = SHELL_REALM_ITEM (gobject);
switch (prop_id) {
case PROP_ITEM_REALM_NAME:
g_value_set_string (value, shell_realm_item_get_realm_name (item));
break;
case PROP_ITEM_DESCRIPTION:
g_value_set_string (value, shell_realm_item_get_description (item));
break;
case PROP_ITEM_NAMESPACE:
g_value_set_string (value, shell_realm_item_get_namespace (item));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
break;
}
}
static void shell_realm_item_dispose (GObject *object)
{
ShellRealmItem *item = SHELL_REALM_ITEM (object);
if (item->context) {
meta_workspace_context_remove (item->context);
item->context = NULL;
}
item->disposed = TRUE;
G_OBJECT_CLASS(shell_realm_item_parent_class)->dispose (object);
}
static void
shell_realm_item_finalize (GObject *object)
{
ShellRealmItem *item = SHELL_REALM_ITEM (object);
g_free (item->realm_name);
g_free (item->description);
g_free (item->namespace);
G_OBJECT_CLASS(shell_realm_item_parent_class)->finalize (object);
}
static void
shell_realm_item_class_init (ShellRealmItemClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
gobject_class->get_property = shell_realm_item_get_property;
gobject_class->dispose = shell_realm_item_dispose;
gobject_class->finalize = shell_realm_item_finalize;
g_object_class_install_property (gobject_class,
PROP_ITEM_NAMESPACE,
g_param_spec_string ("namespace",
"Context Namespace",
"PID namespace of context",
NULL,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class,
PROP_ITEM_REALM_NAME,
g_param_spec_string ("realm-name",
"Realm Name",
"Name of realm associated with this context",
NULL,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class,
PROP_ITEM_DESCRIPTION,
g_param_spec_string ("description",
"Realm Description",
"Optional description of realm",
NULL,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
}

35
src/shell-realm-item.h Normal file
View File

@ -0,0 +1,35 @@
#ifndef __SHELL_REALM_ITEM_H__
#define __SHELL_REALM_ITEM_H__
#include <glib-object.h>
#include <meta/window.h>
#define SHELL_TYPE_REALM_ITEM (shell_realm_item_get_type())
G_DECLARE_FINAL_TYPE (ShellRealmItem, shell_realm_item, SHELL, REALM_ITEM, GObject)
ShellRealmItem *shell_realm_item_new (const char *realm_name, const char *description, const char *namespace, guint8 status);
const char *shell_realm_item_get_realm_name (ShellRealmItem *item);
const char *shell_realm_item_get_description (ShellRealmItem *item);
const char *shell_realm_item_get_namespace (ShellRealmItem *item);
guint shell_realm_item_get_context_id (ShellRealmItem *item);
MetaWorkspace *shell_realm_item_get_active_workspace (ShellRealmItem *item);
void shell_realm_item_update (ShellRealmItem *item, const char *realm_name, const char *namespace, guint8 status);
void shell_realm_item_set_current_flag (ShellRealmItem *item, gboolean value);
void shell_realm_item_set_running_flag (ShellRealmItem *item, gboolean value);
void shell_realm_item_activate_context (ShellRealmItem *item);
void shell_realm_item_set_current (ShellRealmItem *item);
void shell_realm_item_move_window_to_context (ShellRealmItem *item, MetaWindow *window);
gboolean shell_realm_item_is_current(ShellRealmItem *item);
gboolean shell_realm_item_is_running(ShellRealmItem *item);
gboolean shell_realm_item_is_system(ShellRealmItem *item);
void shell_realm_item_set_tagged (ShellRealmItem *item, gboolean is_tagged);
gboolean shell_realm_item_is_tagged (ShellRealmItem *item);
void shell_realm_item_acquire_context (ShellRealmItem *item);
#endif //__SHELL_REALM_ITEM_H__

310
src/shell-realm-tracker.c Normal file
View File

@ -0,0 +1,310 @@
#include "shell-realm-tracker.h"
#include "shell-realms-private.h"
#define NUM_BUS_SIGNAL_IDS 5
#define REALMS_BUS_NAME "com.subgraph.realms"
#define REALMS_OBJECT_PATH "/com/subgraph/realms"
#define REALMS_MANAGER_INTERFACE "com.subgraph.realms.Manager"
struct _ShellRealmTracker {
GObject parent;
GDBusConnection *dbus;
guint realms_watch_id;
guint bus_signal_ids[NUM_BUS_SIGNAL_IDS];
gboolean destroy_in_progress;
};
G_DEFINE_TYPE (ShellRealmTracker, shell_realm_tracker, G_TYPE_OBJECT);
static void
shell_realm_tracker_init (ShellRealmTracker *tracker)
{
tracker->dbus = NULL;
tracker->realms_watch_id = 0;
tracker->destroy_in_progress = FALSE;
}
static void
shell_realm_tracker_class_init (ShellRealmTrackerClass *klass)
{
}
static void
on_realm_bus_signal(GDBusConnection *connection,
const gchar *sender_name,
const gchar *object_path,
const gchar *interface_name,
const gchar *signal_name,
GVariant *parameters,
gpointer user_data)
{
ShellRealms *realms = shell_realms_get_default();
const gchar *realm_name = NULL;
const gchar *description = NULL;
const gchar *namespace = NULL;
guint8 status = 0;
if (g_str_equal (signal_name, "RealmStarted")) {
g_variant_get (parameters, "(&s&sy)", &realm_name, &namespace, &status);
shell_realms_on_realm_started (realms, realm_name, namespace, status);
} else if (g_str_equal (signal_name, "RealmStopped")) {
g_variant_get (parameters, "(&sy)", &realm_name, &status);
shell_realms_on_realm_stopped (realms, realm_name);
} else if (g_str_equal (signal_name, "RealmRemoved")) {
g_variant_get (parameters, "(&s)", &realm_name);
shell_realms_on_realm_removed (realms, realm_name);
} else if (g_str_equal (signal_name, "RealmCurrent")) {
g_variant_get (parameters, "(&sy)", &realm_name, &status);
shell_realms_on_realm_current (realms, realm_name);
} else if (g_str_equal (signal_name, "RealmNew")) {
g_variant_get (parameters, "(&s&sy)", &realm_name, &description, status);
shell_realms_on_realm_new (realms, realm_name, description, status);
} else {
g_warning("Unexpected signal name '%s' received from realms manager DBUS", signal_name);
}
}
static void
realm_state_process_elements (ShellRealmTracker *self, GVariant *response)
{
GVariantIter *iter = NULL;
const gchar *name = NULL;
const gchar *description = NULL;
const gchar *namespace = NULL;
guchar status = 0;
ShellRealms *realms = shell_realms_get_default();
shell_realms_untag_all (realms);
g_variant_get(response, "(a(ssssy))", &iter);
// (name, desc, realmfs, namespace, status)
while (g_variant_iter_next(iter, "(&s&ss&sy)", &name, &description, NULL, &namespace, &status)) {
shell_realms_update_realm (realms, name, description, namespace, status);
}
shell_realms_remove_untagged (realms);
g_variant_iter_free(iter);
}
static void
request_realm_state_finish(GObject *object, GAsyncResult *result, gpointer data)
{
ShellRealmTracker *self = data;
GError *error = NULL;
GVariant *response = g_dbus_connection_call_finish (G_DBUS_CONNECTION(object), result, &error);
if (!response) {
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
g_warning("MetaRealmDbus: Error calling 'List' bus method: %s", error->message);
}
g_clear_error (&error);
return;
}
if (self->destroy_in_progress) {
g_variant_unref (response);
return;
}
realm_state_process_elements(self, response);
g_variant_unref(response);
}
static void
set_realm_current_finish (GObject *object, GAsyncResult *result, gpointer data)
{
GError *error = NULL;
GVariant *response = g_dbus_connection_call_finish (G_DBUS_CONNECTION(object), result, &error);
if (!response) {
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
g_warning("MetaRealmDbus: Error calling 'SetCurrent' bus method: %s", error->message);
}
g_clear_error (&error);
return;
}
g_variant_unref (response);
}
static void
call_dbus_method (ShellRealmTracker *self, const gchar *method, GVariant *parameters, GAsyncReadyCallback callback, gpointer user_data)
{
if (!self->dbus) {
g_warning("ShellRealmTracker: call_dbus_method(%s) called when no bus connection present", method);
return;
}
g_dbus_connection_call(self->dbus,
REALMS_BUS_NAME,
REALMS_OBJECT_PATH,
REALMS_MANAGER_INTERFACE,
method,
parameters,
NULL,
G_DBUS_CALL_FLAGS_NO_AUTO_START,
-1,
NULL,
callback,
user_data);
}
static void
request_realm_state(ShellRealmTracker *self)
{
call_dbus_method (self, "List", NULL, request_realm_state_finish, self);
}
void
shell_realm_tracker_call_set_current (ShellRealmTracker *self, const char *realm_name)
{
call_dbus_method (self, "SetCurrent", g_variant_new("(s)", realm_name), set_realm_current_finish, NULL);
}
static void
unsubscribe_signals (ShellRealmTracker *self)
{
for (int i = 0; i < NUM_BUS_SIGNAL_IDS; i++) {
if (self->bus_signal_ids[i]) {
if (self->dbus) {
g_dbus_connection_signal_unsubscribe(self->dbus, self->bus_signal_ids[i]);
}
self->bus_signal_ids[i] = 0;
}
}
}
static guint
bus_signal_subscribe (ShellRealmTracker *self, const gchar *signal_name)
{
g_assert(self->dbus);
return g_dbus_connection_signal_subscribe(self->dbus,
REALMS_BUS_NAME,
REALMS_MANAGER_INTERFACE,
signal_name,
REALMS_OBJECT_PATH,
NULL,
G_DBUS_SIGNAL_FLAGS_NONE,
on_realm_bus_signal,
self,
NULL);
}
static void
subscribe_bus_signals (ShellRealmTracker *self)
{
if (self->dbus) {
int idx = 0;
self->bus_signal_ids[idx++] = bus_signal_subscribe(self, "RealmStarted");
self->bus_signal_ids[idx++] = bus_signal_subscribe(self, "RealmStopped");
self->bus_signal_ids[idx++] = bus_signal_subscribe(self, "RealmCurrent");
self->bus_signal_ids[idx++] = bus_signal_subscribe(self, "RealmNew");
self->bus_signal_ids[idx++] = bus_signal_subscribe(self, "RealmRemoved");
g_assert(idx == NUM_BUS_SIGNAL_IDS);
}
}
static void
on_realm_manager_appeared (GDBusConnection *connection, const gchar *name, const gchar *name_owner, gpointer user_data)
{
ShellRealmTracker *self = user_data;
// Avoid processing spurious events while destroying 'self'
if (self->destroy_in_progress) {
return;
}
if (!self->dbus) {
self->dbus = g_object_ref(connection);
subscribe_bus_signals (self);
} else {
g_warning("Realm tracker already has a connection in on_realm_manager_appeared()");
}
request_realm_state (self);
}
static void
on_realm_manager_vanished (GDBusConnection *connection, const gchar *name, gpointer user_data)
{
ShellRealmTracker *self = user_data;
// Avoid processing spurious events while destroying 'self'
if (self->destroy_in_progress) {
return;
}
if (!connection) {
g_clear_object (&self->dbus);
}
unsubscribe_signals(self);
}
/**
* shell_realm_tracker_get_default:
*
* Return Value: (transfer none): The global #ShellRealmTracker singleton
*/
ShellRealmTracker *
shell_realm_tracker_get_default(void)
{
static ShellRealmTracker *instance;
if (instance == NULL) {
instance = g_object_new (SHELL_TYPE_REALM_TRACKER, NULL);
}
return instance;
}
void shell_realm_tracker_start ()
{
ShellRealmTracker *tracker = shell_realm_tracker_get_default();
if (tracker->realms_watch_id) {
g_warning ("ShellRealmTracker: shell_realm_tracker_start() called when already started");
return;
}
tracker->realms_watch_id = g_bus_watch_name(G_BUS_TYPE_SYSTEM,
REALMS_BUS_NAME,
G_BUS_NAME_WATCHER_FLAGS_NONE,
on_realm_manager_appeared,
on_realm_manager_vanished,
tracker,
g_free);
}
void
shell_realm_tracker_destroy(ShellRealmTracker *self)
{
if (self->dbus) {
unsubscribe_signals (self);
g_clear_object (&self->dbus);
}
// event handlers check this and will bail early in case there are
// any in queue. see docs for g_bus_unwatch_name()
self->destroy_in_progress = TRUE;
// frees 'self' in destroy notifier
g_bus_unwatch_name(self->realms_watch_id);
}

14
src/shell-realm-tracker.h Normal file
View File

@ -0,0 +1,14 @@
#ifndef __SHELL_REALM_TRACKER_H__
#define __SHELL_REALM_TRACKER_H__
#include <glib-object.h>
#define SHELL_TYPE_REALM_TRACKER (shell_realm_tracker_get_type ())
G_DECLARE_FINAL_TYPE (ShellRealmTracker, shell_realm_tracker,
SHELL, REALM_TRACKER, GObject)
ShellRealmTracker *shell_realm_tracker_get_default(void);
void shell_realm_tracker_call_set_current (ShellRealmTracker *self, const char *realm_name);
void shell_realm_tracker_start ();
#endif /* __SHELL_REALM_TRACKER_H__ */

View File

@ -0,0 +1,21 @@
#ifndef __SHELL_REALMS_PRIVATE_H__
#define __SHELL_REALMS_PRIVATE_H__
#include <glib-object.h>
#include "shell-realms.h"
#include "shell-realms-window-frames.h"
void shell_realms_untag_all (ShellRealms *realms);
void shell_realms_remove_untagged (ShellRealms *realms);
void shell_realms_update_realm (ShellRealms *realms,
const char *realm_name,
const char *description,
const char *namespace,
guint8 status);
void shell_realms_on_realm_started (ShellRealms *realms, const gchar *realm_name, const gchar *namespace, guint8 status);
void shell_realms_on_realm_current (ShellRealms *realms, const gchar *realm_name);
void shell_realms_on_realm_stopped (ShellRealms *realms, const gchar *realm_name);
void shell_realms_on_realm_removed (ShellRealms *realms, const gchar *realm_name);
void shell_realms_on_realm_new (ShellRealms *realms, const gchar *realm_name, const gchar *description, guint8 status);
#endif //__SHELL_REALMS_PRIVATE_H__

View File

@ -0,0 +1,386 @@
#include "shell-realms-window-frames.h"
#include "shell-realms.h"
#define CITADEL_SETTINGS_SCHEMA "com.subgraph.citadel"
#define FRAME_COLOR_LIST_KEY "frame-color-list"
#define REALM_FRAME_COLORS_KEY "realm-frame-colors"
#define REALM_FRAME_ALPHA 200
struct _ShellRealmsWindowFrames {
GObject parent;
GSettings *settings;
GHashTable *realm_frame_colors;
GList *default_colors;
GList *frame_disabled_windows;
};
G_DEFINE_TYPE (ShellRealmsWindowFrames, shell_realms_window_frames, G_TYPE_OBJECT);
enum {
REALM_FRAME_COLORS_CHANGED,
LAST_SIGNAL,
};
static guint shell_realms_window_frames_signals [LAST_SIGNAL] = { 0 };
static void
shell_realms_window_frames_process_color (ShellRealmsWindowFrames *frames, const char *entry)
{
GdkRGBA rgba;
gchar **split = g_strsplit (entry, ":", -1);
if (g_strv_length (split) != 2) {
g_warning("ShellRealmsWindowFrames: Unable to parse realm-frame-colors entry: %s", entry);
g_strfreev (split);
return;
}
if (!gdk_rgba_parse (&rgba, split[1])) {
g_warning("ShellRealmsWindowFrames: Failed to parse RGBA component of realm frame color entry: %s", entry);
} else {
g_hash_table_insert (frames->realm_frame_colors, g_strdup (split[0]), gdk_rgba_copy (&rgba));
}
g_strfreev (split);
}
static void
load_realm_frame_colors (ShellRealmsWindowFrames *frames)
{
guint n_entries, i;
char **entries;
entries = g_settings_get_strv (frames->settings, REALM_FRAME_COLORS_KEY);
n_entries = g_strv_length (entries);
for (i = 0; i < n_entries; i++) {
shell_realms_window_frames_process_color (frames, entries[i]);
}
g_strfreev (entries);
}
static void
on_realm_frame_colors_changed(GSettings *settings, const gchar *key, ShellRealmsWindowFrames *frames)
{
load_realm_frame_colors (frames);
g_signal_emit (frames, shell_realms_window_frames_signals[REALM_FRAME_COLORS_CHANGED], 0);
}
static void
load_default_colors (ShellRealmsWindowFrames *frames)
{
guint n_entries, i;
char **entries;
GdkRGBA rgba;
entries = g_settings_get_strv (frames->settings, FRAME_COLOR_LIST_KEY);
n_entries = g_strv_length (entries);
g_clear_list(&frames->default_colors, (GDestroyNotify) gdk_rgba_free);
for (i = 0; i < n_entries; i++) {
if (gdk_rgba_parse (&rgba, entries[i])) {
frames->default_colors = g_list_append (frames->default_colors, gdk_rgba_copy(&rgba));
}
}
g_strfreev (entries);
}
static void
on_frame_color_list_changed (GSettings *settings, const gchar *key, ShellRealmsWindowFrames *frames)
{
load_default_colors (frames);
}
static void
shell_realms_window_frames_init (ShellRealmsWindowFrames *frames)
{
frames->settings = g_settings_new (CITADEL_SETTINGS_SCHEMA);
frames->realm_frame_colors = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) gdk_rgba_free);
frames->default_colors = NULL;
frames->frame_disabled_windows = NULL;
g_signal_connect(frames->settings,
"changed::" FRAME_COLOR_LIST_KEY,
G_CALLBACK(on_frame_color_list_changed),
frames);
g_signal_connect(frames->settings,
"changed::" REALM_FRAME_COLORS_KEY,
G_CALLBACK(on_realm_frame_colors_changed),
frames);
load_default_colors (frames);
load_realm_frame_colors (frames);
}
static void
shell_realms_window_frames_finalize (GObject *obj)
{
ShellRealmsWindowFrames *frames = SHELL_REALMS_WINDOW_FRAMES (obj);
g_object_unref (frames->settings);
g_hash_table_destroy (frames->realm_frame_colors);
g_list_free_full (frames->default_colors, (GDestroyNotify) gdk_rgba_free);
g_list_free (frames->frame_disabled_windows);
G_OBJECT_CLASS (shell_realms_window_frames_parent_class)->finalize (obj);
}
static void
shell_realms_window_frames_class_init (ShellRealmsWindowFramesClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = shell_realms_window_frames_finalize;
shell_realms_window_frames_signals[REALM_FRAME_COLORS_CHANGED] =
g_signal_new ("realm-frame-colors-changed",
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST,
0,
NULL, NULL, NULL,
G_TYPE_NONE, 0);
}
static gboolean
disabled_list_contains (ShellRealmsWindowFrames *frames, guint32 window_id)
{
return g_list_find (frames->frame_disabled_windows, GUINT_TO_POINTER(window_id)) != NULL;
}
static bool
remove_from_disabled_list (ShellRealmsWindowFrames *frames, guint32 window_id)
{
if (disabled_list_contains (frames, window_id)) {
frames->frame_disabled_windows = g_list_remove (frames->frame_disabled_windows, GUINT_TO_POINTER(window_id));
g_signal_emit (frames, shell_realms_window_frames_signals[REALM_FRAME_COLORS_CHANGED], 0);
return TRUE;
}
return FALSE;
}
static bool
add_to_disabled_list (ShellRealmsWindowFrames *frames, guint32 window_id)
{
if (!disabled_list_contains (frames, window_id)) {
frames->frame_disabled_windows = g_list_append (frames->frame_disabled_windows, GUINT_TO_POINTER(window_id));
g_signal_emit (frames, shell_realms_window_frames_signals[REALM_FRAME_COLORS_CHANGED], 0);
return TRUE;
}
return FALSE;
}
static gint
color_compare(gconstpointer c1, gconstpointer c2) {
return gdk_rgba_equal (c1, c2) ? 0 : 1;
}
static GdkRGBA *
allocate_color (ShellRealmsWindowFrames *frames)
{
guint n_colors = g_list_length (frames->default_colors);
// 1) No default colors? return a built in color
if (n_colors == 0) {
GdkRGBA rgba;
gdk_rgba_parse (&rgba, "rgb(153, 193, 241)");
return gdk_rgba_copy (&rgba);
}
// 2) No default colors? Find first color on default color list that isn't used already
GList *used_colors = g_hash_table_get_values (frames->realm_frame_colors);
for (GList *iter = frames->default_colors; iter; iter = iter->next) {
GdkRGBA *rgba = iter->data;
if (!g_list_find_custom (used_colors, rgba, color_compare)) {
return rgba;
}
}
g_list_free (used_colors);
// 3) Choose a random element of the default list
guint index = (guint) g_random_int_range(0, (gint32) n_colors);
return g_list_nth_data (frames->default_colors, index);
}
static void
shell_realms_window_frames_store_colors (ShellRealmsWindowFrames *frames)
{
GHashTableIter iter;
gpointer key, value;
GPtrArray *entries = g_ptr_array_new_with_free_func(g_free);
g_hash_table_iter_init (&iter, frames->realm_frame_colors);
while (g_hash_table_iter_next(&iter, &key, &value)) {
gchar *name = key;
GdkRGBA *rgba = value;
char *rgba_str = gdk_rgba_to_string (rgba);
gchar *entry = g_strconcat (name, ":", rgba_str, NULL);
g_ptr_array_add (entries, entry);
g_free (rgba_str);
}
g_ptr_array_sort (entries, (GCompareFunc) g_strcmp0);
g_ptr_array_add (entries, NULL);
g_settings_set_strv (frames->settings, REALM_FRAME_COLORS_KEY, (const gchar * const *) entries->pdata);
g_ptr_array_unref (entries);
}
static const char *
shell_realms_window_frames_realm_name_for_window (ShellRealmsWindowFrames *frames, ShellRealms *realms, MetaWindow *window)
{
ShellRealmItem *realm = shell_realms_realm_by_window (realms, window);
if (realm) {
return shell_realm_item_get_realm_name (realm);
} else {
return NULL;
}
}
static void
on_window_unmanaged (MetaWindow *window, ShellRealmsWindowFrames *frames)
{
g_signal_handlers_disconnect_by_func (window, G_CALLBACK (on_window_unmanaged), frames);
guint32 id = meta_window_get_stable_sequence (window);
remove_from_disabled_list (frames, id);
}
static gboolean
is_ignored_window (MetaWindow *window)
{
switch (meta_window_get_window_type (window)) {
case META_WINDOW_MENU:
case META_WINDOW_TOOLTIP:
case META_WINDOW_POPUP_MENU:
case META_WINDOW_DROPDOWN_MENU:
return TRUE;
default:
return FALSE;
}
}
/**
* shell_realms_window_frames_is_frame_enabled:
* @frames: a #ShellRealmsWindowFrames instance
* @window: a #MetaWindow
*
* Return #TRUE if frame has not been disabled for this window.
*
* Returns: #TRUE if frame has not been disabled for this window.
*/
gboolean
shell_realms_window_frames_is_frame_enabled (ShellRealmsWindowFrames *frames, MetaWindow *window)
{
guint32 id = meta_window_get_stable_sequence (window);
return !disabled_list_contains (frames, id);
}
/**
* shell_realms_window_frames_has_frame:
* @frames: a #ShellRealmsWindowFrames instance
* @window: a #MetaWindow
*
* Return #TRUE if this window needs a frame.
*
* Returns: #TRUE if a frame should be drawn for this window.
*/
gboolean
shell_realms_window_frames_has_frame (ShellRealmsWindowFrames *frames, MetaWindow *window)
{
return !is_ignored_window(window) && meta_window_is_on_foreign_workspace_context (window);
}
/**
* shell_realms_window_frames_set_frame_enabled:
* @frames: a #ShellRealmsWindowFrames instance
* @window: a #MetaWindow
* @enabled: Set to #FALSE to disable drawing frame for this window
*
*/
void
shell_realms_window_frames_set_frame_enabled (ShellRealmsWindowFrames *frames, MetaWindow *window, gboolean enabled)
{
guint32 id = meta_window_get_stable_sequence (window);
if (enabled) {
if (remove_from_disabled_list (frames, id)) {
g_signal_handlers_disconnect_by_func (window, G_CALLBACK (on_window_unmanaged), frames);
}
} else if (add_to_disabled_list (frames, id)) {
g_signal_connect_object (window, "unmanaged", G_CALLBACK(on_window_unmanaged), frames, 0);
}
}
static ClutterColor *
rgba_to_clutter_color(GdkRGBA *rgba)
{
guint8 r = (guint8) (0.5 + CLAMP(rgba->red, 0.0, 1.0) * 255.0);
guint8 g = (guint8) (0.5 + CLAMP(rgba->green, 0.0, 1.0) * 255.0);
guint8 b = (guint8) (0.5 + CLAMP(rgba->blue, 0.0, 1.0) * 255.0);
return clutter_color_new (r, g, b, REALM_FRAME_ALPHA);
}
/**
* shell_realms_window_frames_color_for_window:
* @frames: a #ShellRealmsWindowFrames instance
* @window: a #MetaWindow
*
* Returns a color to use for painting window frame.
*
* Return value: (transfer full) (nullable): The frame color or %NULL if no frame should be drawn.
*/
ClutterColor *
shell_realms_window_frames_color_for_window (ShellRealmsWindowFrames *frames, MetaWindow *window)
{
if (!shell_realms_window_frames_has_frame (frames, window)) {
return NULL;
}
ShellRealms *realms = shell_realms_get_default();
const gchar *name = shell_realms_window_frames_realm_name_for_window (frames, realms, window);
GdkRGBA *rgba = g_hash_table_lookup (frames->realm_frame_colors, name);
if (!rgba) {
rgba = allocate_color (frames);
g_hash_table_insert (frames->realm_frame_colors, g_strdup(name), rgba);
shell_realms_window_frames_store_colors (frames);
}
return rgba_to_clutter_color (rgba);
}
/**
* shell_realms_window_frames_label_for_window:
* @frames: a #ShellRealmsWindowFrames instance
* @window: a #MetaWindow
*
* Return the label text for window if the window requires a frame.
*
* Return value: (transfer none) (nullable): The label text or %NULL if no label should be displayed
*/
const gchar *
shell_realms_window_frames_label_for_window (ShellRealmsWindowFrames *frames, MetaWindow *window)
{
if (!shell_realms_window_frames_has_frame (frames, window)) {
return NULL;
}
if (meta_window_get_window_type (window) != META_WINDOW_NORMAL) {
return NULL;
}
ShellRealms *realms = shell_realms_get_default();
if (shell_realms_is_citadel_window (realms, window)) {
return "Citadel";
} else {
return shell_realms_window_frames_realm_name_for_window (frames, realms, window);
}
}

View File

@ -0,0 +1,17 @@
#ifndef __SHELL_REALMS_WINDOW_FRAMES_H__
#define __SHELL_REALMS_WINDOW_FRAMES_H__
#include <glib-object.h>
#include <clutter/clutter.h>
#include <meta/window.h>
#define SHELL_TYPE_REALMS_WINDOW_FRAMES (shell_realms_window_frames_get_type())
G_DECLARE_FINAL_TYPE (ShellRealmsWindowFrames, shell_realms_window_frames, SHELL, REALMS_WINDOW_FRAMES, GObject)
gboolean shell_realms_window_frames_has_frame (ShellRealmsWindowFrames *frames, MetaWindow *window);
gboolean shell_realms_window_frames_is_frame_enabled (ShellRealmsWindowFrames *frames, MetaWindow *window);
void shell_realms_window_frames_set_frame_enabled (ShellRealmsWindowFrames *frames, MetaWindow *window, gboolean enabled);
ClutterColor *shell_realms_window_frames_color_for_window (ShellRealmsWindowFrames *frames, MetaWindow *window);
const gchar *shell_realms_window_frames_label_for_window (ShellRealmsWindowFrames *frames, MetaWindow *window);
#endif // __SHELL_REALMS_WINDOW_FRAMES_H__

460
src/shell-realms.c Normal file
View File

@ -0,0 +1,460 @@
#include <meta/display.h>
#include <meta/meta-workspace-manager.h>
#include "shell-realm-item.h"
#include "shell-realm-tracker.h"
#include "shell-realms-private.h"
#include "shell-global.h"
struct _ShellRealms {
GObject parent;
GHashTable *realms;
GList *running_realms;
ShellRealmItem *current_realm;
ShellRealmsWindowFrames *frames;
};
G_DEFINE_TYPE (ShellRealms, shell_realms, G_TYPE_OBJECT);
enum {
REALM_CONTEXT_SWITCHED,
LAST_SIGNAL,
};
enum {
PROP_0,
PROP_CURRENT_REALM,
};
static guint shell_realms_signals [LAST_SIGNAL] = { 0 };
/**
* shell_realms_current_realm:
* @realms: A #ShellRealms instance
*
* Returns: (transfer none) (nullable): The current realm as a #ShellRealmItem
* or %NULL if no realm is current.
*/
ShellRealmItem *
shell_realms_current_realm (ShellRealms *realms)
{
return realms->current_realm;
}
/**
* shell_realms_realm_by_name:
* @realms: a #ShellRealms instance
* @realm_name: The name of a realm to look up
*
* Returns: (transfer none) (nullable): A realm #ShellRealmItem or %NULL
* if name not found
*/
ShellRealmItem *
shell_realms_realm_by_name(ShellRealms *realms, const gchar *realm_name)
{
ShellRealmItem *item = g_hash_table_lookup (realms->realms, realm_name);
if (!item) {
g_warning("ShellRealms: No realm found for name '%s'", realm_name);
}
return item;
}
/**
* shell_realms_realm_by_context_id:
* @realms: a #ShellRealms instance
* @context_id: A context id to search for.
*
* Returns: (transfer none) (nullable): The realm #ShellRealmItem for the realm
* with a workspace context id matching the specified value or %NULL if no such realm is found
*/
ShellRealmItem *
shell_realms_realm_by_context_id (ShellRealms *realms, guint context_id)
{
if (context_id == 0) {
return NULL;
}
for (GList *iter = realms->running_realms; iter; iter = iter->next) {
ShellRealmItem *item = iter->data;
if (shell_realm_item_get_context_id (item) == context_id) {
return item;
}
}
return NULL;
}
/**
* shell_realms_realm_by_window:
* @realms: a #ShellRealms instance
* @window: A window to find the corresponding realm for.
*
* Returns: (transfer none) (nullable): The realm #ShellRealmItem for the realm
* the application the window belongs to is running in or %NULL if no realm is found
*/
ShellRealmItem *
shell_realms_realm_by_window (ShellRealms *realms, MetaWindow *window)
{
const char *window_ns = meta_window_namespace (window);
if (!window_ns) {
return NULL;
}
for (GList *iter = realms->running_realms; iter; iter = iter->next) {
ShellRealmItem *item = iter->data;
if (g_strcmp0 (window_ns, shell_realm_item_get_namespace (item)) == 0) {
return item;
}
}
return NULL;
}
/**
* shell_realms_is_citadel_window:
* @realms: A #ShellRealms instance
* @window: A #MetaWindow
*
* Return #TRUE if the window belongs to an application running inside of Citadel
* rather than running in a realm.
*
* Returns: If window belongs to an application running in Citadel return #True
*/
gboolean
shell_realms_is_citadel_window (ShellRealms *realms, MetaWindow *window)
{
MetaDisplay *display = shell_global_get_display (shell_global_get());
MetaWorkspaceManager *workspace_manager = meta_display_get_workspace_manager (display);
const char *mutter_ns = meta_workspace_manager_mutter_namespace (workspace_manager);
const char *window_ns = meta_window_namespace (window);
return g_strcmp0 (mutter_ns, window_ns) == 0;
}
/**
* shell_realms_get_running_realms:
* @realms: the #ShellRealms instance
*
* Returns all running realms as a list of #ShellRealmItem
*
* Returns: (transfer none) (element-type ShellRealmItem): a list of
* #ShellRealmItem for all running realms.
*
*/
GList *
shell_realms_get_running_realms (ShellRealms *realms)
{
return realms->running_realms;
}
/**
* shell_realms_get_all_realms:
* @realms: the #ShellRealms instance
*
* Returns all realms as a list of #ShellRealmItem
*
* Returns: (transfer container) (element-type ShellRealmItem): all realms as
* a list of #ShellRealmItem
*/
GList *
shell_realms_get_all_realms (ShellRealms *realms)
{
return g_hash_table_get_values (realms->realms);
}
/**
* shell_realms_window_frames:
* @realms: the #ShellRealms instance
*
* Returns the window frames manager.
*
* Returns: (transfer none): a #ShellRealmsWindowFrames instance
*/
ShellRealmsWindowFrames *
shell_realms_window_frames (ShellRealms *realms)
{
return realms->frames;
}
static gboolean
shell_realms_is_on_running_list (ShellRealms *realms, ShellRealmItem *item)
{
return (g_list_index (realms->running_realms, item) >= 0);
}
static void
shell_realms_remove_running_realm (ShellRealms *realms, ShellRealmItem *item)
{
if (!shell_realms_is_on_running_list (realms, item)) {
return;
}
realms->running_realms = g_list_remove(realms->running_realms, item);
g_object_unref (item);
}
static void
shell_realms_update_running_list_for_item (ShellRealms *realms, ShellRealmItem *item)
{
gboolean running = shell_realm_item_is_running (item);
if (running) {
if (!shell_realms_is_on_running_list (realms, item)) {
realms->running_realms = g_list_append (realms->running_realms, g_object_ref (item));
}
// If realm is current realm, make sure it's at the front of the list
if (shell_realm_item_is_current (item) && g_list_index (realms->running_realms, item) > 0) {
realms->running_realms = g_list_remove (realms->running_realms, item);
realms->running_realms = g_list_prepend (realms->running_realms, item);
}
} else {
shell_realms_remove_running_realm (realms, item);
}
}
static void
shell_realms_set_current_item (ShellRealms *realms, ShellRealmItem *item)
{
if (realms->current_realm == item) {
return;
} else if (realms->current_realm) {
shell_realm_item_set_current_flag (realms->current_realm, FALSE);
}
shell_realm_item_set_current_flag (item, TRUE);
realms->current_realm = item;
}
/*
* If a realm already exists for 'realm_name' update it with provided information, otherwise
* create a new ShellRealmItem and add it to hash table unless it is a system realm. Returns
* the existing or newly created ShellRealmItem or returns NULL if the realm is a system realm.
*/
static ShellRealmItem *
shell_realms_add_realm_item (ShellRealms *realms,
const char *realm_name,
const char *description,
const char *namespace,
guint8 status)
{
ShellRealmItem *item = g_hash_table_lookup (realms->realms, realm_name);
if (item) {
shell_realm_item_update (item, realm_name, namespace, status);
return item;
}
item = shell_realm_item_new (realm_name, description, namespace, status);
if (shell_realm_item_is_system (item)) {
g_clear_object(&item);
return NULL;
}
g_hash_table_insert (realms->realms, g_strdup (realm_name), item);
return item;
}
void
shell_realms_update_realm (ShellRealms *realms,
const char *realm_name,
const char *description,
const char *namespace,
guint8 status)
{
ShellRealmItem *item = shell_realms_add_realm_item (realms, realm_name, description, namespace, status);
// Ignore system realms
if (!item) {
return;
}
shell_realms_update_running_list_for_item (realms, item);
shell_realm_item_set_tagged (item, TRUE);
// If realm is current, make sure it has a context. This also ensures that the
// first context requested is for the current realm.
if (shell_realm_item_is_current (item)) {
shell_realms_set_current_item (realms, item);
shell_realm_item_acquire_context (item);
}
}
// When processing list of realms returned from "List" dbus method,
//
// 1) first all the existing realms are "untagged"
// 2) As each realm on list is processed it is marked as "tagged"
// 3) After processing list, realm items that are not tagged were not in list
// returned from server so remove them.
//
void
shell_realms_untag_all (ShellRealms *realms)
{
GList *item_list = g_hash_table_get_values (realms->realms);
for (GList *iter = item_list; iter; iter = iter->next) {
ShellRealmItem *item = iter->data;
shell_realm_item_set_tagged (item, FALSE);
iter = iter->next;
}
g_list_free (item_list);
}
void
shell_realms_remove_untagged (ShellRealms *realms)
{
GHashTableIter iter;
gpointer value;
g_hash_table_iter_init (&iter, realms->realms);
while (g_hash_table_iter_next (&iter, NULL, &value)) {
ShellRealmItem *item = value;
if (!shell_realm_item_is_tagged (item)) {
shell_realms_remove_running_realm (realms, item);
g_hash_table_iter_remove (&iter);
}
}
}
// Signal handlers
void
shell_realms_on_realm_started (ShellRealms *realms, const gchar *realm_name, const gchar *namespace, guint8 status)
{
ShellRealmItem *item = shell_realms_realm_by_name (realms, realm_name);
if (item) {
shell_realm_item_update (item, realm_name, namespace, status);
if (!shell_realm_item_is_system (item)) {
shell_realms_update_running_list_for_item (realms, item);
shell_realm_item_acquire_context (item);
}
}
}
void
shell_realms_on_realm_current (ShellRealms *realms, const gchar *realm_name)
{
ShellRealmItem *item = shell_realms_realm_by_name (realms, realm_name);
if (item && realms->current_realm != item) {
shell_realms_set_current_item (realms, item);
shell_realms_update_running_list_for_item (realms, item);
shell_realm_item_activate_context (item);
g_signal_emit (realms, shell_realms_signals[REALM_CONTEXT_SWITCHED], 0);
}
}
void
shell_realms_on_realm_stopped (ShellRealms *realms, const gchar *realm_name)
{
ShellRealmItem *item = shell_realms_realm_by_name (realms, realm_name);
if (item) {
shell_realm_item_set_running_flag (item, FALSE);
shell_realms_remove_running_realm (realms, item);
}
}
void
shell_realms_on_realm_removed (ShellRealms *realms, const gchar *realm_name)
{
ShellRealmItem *item = shell_realms_realm_by_name (realms, realm_name);
if (item) {
shell_realms_remove_running_realm (realms, item);
g_hash_table_remove (realms->realms, realm_name);
}
}
void
shell_realms_on_realm_new (ShellRealms *realms, const gchar *realm_name, const gchar *description, guint8 status)
{
if (!g_hash_table_contains (realms->realms, realm_name)) {
(void) shell_realms_add_realm_item (realms, realm_name, description, NULL, status);
} else {
g_warning("ShellRealms: RealmNew signal received for realm '%s' but it already exists", realm_name);
}
}
/**
* shell_realms_get_default:
*
* Return Value: (transfer none): The global #ShellRealms singleton
*/
ShellRealms *
shell_realms_get_default(void)
{
static ShellRealms *instance;
if (instance == NULL) {
instance = g_object_new (SHELL_TYPE_REALMS, NULL);
}
return instance;
}
static void
shell_realms_init(ShellRealms *realms)
{
realms->realms = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
realms->running_realms = NULL;
realms->current_realm = NULL;
realms->frames = g_object_new (SHELL_TYPE_REALMS_WINDOW_FRAMES, NULL);
}
static void
shell_realms_finalize (GObject *obj)
{
ShellRealms *realms = SHELL_REALMS (obj);
realms->current_realm = NULL;
g_list_free_full (realms->running_realms, g_object_unref);
g_hash_table_destroy (realms->realms);
g_object_unref (realms->frames);
realms->frames = NULL;
G_OBJECT_CLASS (shell_realms_parent_class)->finalize (obj);
}
static void
shell_realms_get_property (GObject *gobject,
guint prop_id,
GValue *value,
GParamSpec *pspec)
{
ShellRealms *realms = SHELL_REALMS (gobject);
switch (prop_id) {
case PROP_CURRENT_REALM:
if (realms->current_realm) {
g_value_set_object (value, realms->current_realm);
}
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
break;
}
}
static void
shell_realms_class_init (ShellRealmsClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->get_property = shell_realms_get_property;
object_class->finalize = shell_realms_finalize;
shell_realms_signals[REALM_CONTEXT_SWITCHED] =
g_signal_new ("realm-context-switched",
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST,
0,
NULL, NULL, NULL,
G_TYPE_NONE, 0);
g_object_class_install_property (object_class,
PROP_CURRENT_REALM,
g_param_spec_object ("current-realm",
"Current Realm",
"The currently active realm",
SHELL_TYPE_REALM_ITEM,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
}

26
src/shell-realms.h Normal file
View File

@ -0,0 +1,26 @@
#ifndef __SHELL_REALMS_H__
#define __SHELL_REALMS_H__
#include <glib-object.h>
#include <meta/window.h>
#include "shell-realm-item.h"
#include "shell-realms-window-frames.h"
#define SHELL_TYPE_REALMS (shell_realms_get_type())
G_DECLARE_FINAL_TYPE(ShellRealms, shell_realms, SHELL, REALMS, GObject)
ShellRealms *shell_realms_get_default(void);
ShellRealmItem *shell_realms_current_realm (ShellRealms *realms);
ShellRealmItem *shell_realms_realm_by_name(ShellRealms *realms, const gchar *realm_name);
ShellRealmItem *shell_realms_realm_by_context_id (ShellRealms *realms, guint context_id);
ShellRealmItem *shell_realms_realm_by_window (ShellRealms *realms, MetaWindow *window);
gboolean shell_realms_is_citadel_window (ShellRealms *realms, MetaWindow *window);
ShellRealmsWindowFrames *shell_realms_window_frames (ShellRealms *realms);
GList *shell_realms_get_running_realms (ShellRealms *realms);
GList *shell_realms_get_all_realms (ShellRealms *realms);
#endif //__SHELL_REALMS_H__

View File

@ -15,6 +15,7 @@
#include "shell-window-tracker-private.h" #include "shell-window-tracker-private.h"
#include "shell-app-private.h" #include "shell-app-private.h"
#include "shell-global.h" #include "shell-global.h"
#include "shell-realms.h"
#include "st.h" #include "st.h"
/* This file includes modified code from /* This file includes modified code from
@ -129,6 +130,22 @@ check_app_id_prefix (ShellApp *app,
return g_str_has_prefix (shell_app_get_id (app), prefix); return g_str_has_prefix (shell_app_get_id (app), prefix);
} }
static const char *
get_window_realm_name (MetaWindow *window) {
ShellRealms *realms = shell_realms_get_default();
if (shell_realms_is_citadel_window (realms, window)) {
return NULL;
}
ShellRealmItem *item = shell_realms_realm_by_window(realms, window);
if (item) {
return shell_realm_item_get_realm_name (item);
} else {
return NULL;
}
}
/* /*
* get_app_from_window_wmclass: * get_app_from_window_wmclass:
* *
@ -146,6 +163,7 @@ get_app_from_window_wmclass (MetaWindow *window)
const char *wm_class; const char *wm_class;
const char *wm_instance; const char *wm_instance;
const char *sandbox_id; const char *sandbox_id;
const char *realm_name;
g_autofree char *app_prefix = NULL; g_autofree char *app_prefix = NULL;
appsys = shell_app_system_get_default (); appsys = shell_app_system_get_default ();
@ -154,6 +172,8 @@ get_app_from_window_wmclass (MetaWindow *window)
if (sandbox_id) if (sandbox_id)
app_prefix = g_strdup_printf ("%s.", sandbox_id); app_prefix = g_strdup_printf ("%s.", sandbox_id);
realm_name = get_window_realm_name (window);
/* Notes on the heuristics used here: /* Notes on the heuristics used here:
much of the complexity here comes from the desire to support much of the complexity here comes from the desire to support
Chrome apps. Chrome apps.
@ -191,23 +211,23 @@ get_app_from_window_wmclass (MetaWindow *window)
/* first try a match from WM_CLASS (instance part) to StartupWMClass */ /* first try a match from WM_CLASS (instance part) to StartupWMClass */
wm_instance = meta_window_get_wm_class_instance (window); wm_instance = meta_window_get_wm_class_instance (window);
app = shell_app_system_lookup_startup_wmclass (appsys, wm_instance); app = shell_app_system_lookup_startup_wmclass (appsys, wm_instance, realm_name);
if (app != NULL && check_app_id_prefix (app, app_prefix)) if (app != NULL && check_app_id_prefix (app, app_prefix))
return g_object_ref (app); return g_object_ref (app);
/* then try a match from WM_CLASS to StartupWMClass */ /* then try a match from WM_CLASS to StartupWMClass */
wm_class = meta_window_get_wm_class (window); wm_class = meta_window_get_wm_class (window);
app = shell_app_system_lookup_startup_wmclass (appsys, wm_class); app = shell_app_system_lookup_startup_wmclass (appsys, wm_class, realm_name);
if (app != NULL && check_app_id_prefix (app, app_prefix)) if (app != NULL && check_app_id_prefix (app, app_prefix))
return g_object_ref (app); return g_object_ref (app);
/* then try a match from WM_CLASS (instance part) to .desktop */ /* then try a match from WM_CLASS (instance part) to .desktop */
app = shell_app_system_lookup_desktop_wmclass (appsys, wm_instance); app = shell_app_system_lookup_desktop_wmclass (appsys, wm_instance, realm_name);
if (app != NULL && check_app_id_prefix (app, app_prefix)) if (app != NULL && check_app_id_prefix (app, app_prefix))
return g_object_ref (app); return g_object_ref (app);
/* finally, try a match from WM_CLASS to .desktop */ /* finally, try a match from WM_CLASS to .desktop */
app = shell_app_system_lookup_desktop_wmclass (appsys, wm_class); app = shell_app_system_lookup_desktop_wmclass (appsys, wm_class, realm_name);
if (app != NULL && check_app_id_prefix (app, app_prefix)) if (app != NULL && check_app_id_prefix (app, app_prefix))
return g_object_ref (app); return g_object_ref (app);
@ -236,7 +256,19 @@ get_app_from_id (MetaWindow *window,
appsys = shell_app_system_get_default (); appsys = shell_app_system_get_default ();
desktop_file = g_strconcat (id, ".desktop", NULL); const char *realm_name = NULL;
ShellRealms *realms = shell_realms_get_default();
ShellRealmItem *item = shell_realms_realm_by_window (realms, window);
if (item) {
realm_name = shell_realm_item_get_realm_name (item);
}
if (realm_name) {
desktop_file = g_strconcat ("realm-", realm_name, ".", id, ".desktop", NULL);
} else {
desktop_file = g_strconcat (id, ".desktop", NULL);
}
app = shell_app_system_lookup_app (appsys, desktop_file); app = shell_app_system_lookup_app (appsys, desktop_file);
if (app) if (app)
return g_object_ref (app); return g_object_ref (app);

View File

@ -180,7 +180,7 @@ st_cflags = [
libst = shared_library('st-1.0', libst = shared_library('st-1.0',
sources: st_gir_sources + st_nogir_sources + croco_sources, sources: st_gir_sources + st_nogir_sources + croco_sources,
c_args: st_cflags, c_args: st_cflags,
dependencies: [clutter_dep, gmodule_dep, gtk_dep, mutter_dep, libxml_dep, m_dep], dependencies: [clutter_dep, gtk_dep, mutter_dep, libxml_dep, m_dep],
build_rpath: mutter_typelibdir, build_rpath: mutter_typelibdir,
install_rpath: mutter_typelibdir, install_rpath: mutter_typelibdir,
install_dir: pkglibdir, install_dir: pkglibdir,

View File

@ -80,22 +80,8 @@ adjustment_value_notify_cb (StAdjustment *adjustment,
GParamSpec *pspec, GParamSpec *pspec,
StViewport *viewport) StViewport *viewport)
{ {
static gboolean invalidate_paint_volume_valid = FALSE;
static void (* invalidate_paint_volume) (ClutterActor *) = NULL;
clutter_actor_invalidate_transform (CLUTTER_ACTOR (viewport)); clutter_actor_invalidate_transform (CLUTTER_ACTOR (viewport));
clutter_actor_invalidate_paint_volume (CLUTTER_ACTOR (viewport));
if (!invalidate_paint_volume_valid)
{
g_module_symbol (g_module_open (NULL, G_MODULE_BIND_LAZY),
"clutter_actor_invalidate_paint_volume",
(gpointer *)&invalidate_paint_volume);
invalidate_paint_volume_valid = TRUE;
}
if (invalidate_paint_volume)
invalidate_paint_volume (CLUTTER_ACTOR (viewport));
clutter_actor_queue_relayout (CLUTTER_ACTOR (viewport)); clutter_actor_queue_relayout (CLUTTER_ACTOR (viewport));
} }

View File

@ -1732,19 +1732,7 @@ st_widget_recompute_style (StWidget *widget,
if (!paint_equal) if (!paint_equal)
{ {
static gboolean invalidate_paint_volume_valid = FALSE; clutter_actor_invalidate_paint_volume (CLUTTER_ACTOR (widget));
static void (* invalidate_paint_volume) (ClutterActor *) = NULL;
if (!invalidate_paint_volume_valid)
{
g_module_symbol (g_module_open (NULL, G_MODULE_BIND_LAZY),
"clutter_actor_invalidate_paint_volume",
(gpointer *)&invalidate_paint_volume);
invalidate_paint_volume_valid = TRUE;
}
if (invalidate_paint_volume)
invalidate_paint_volume (CLUTTER_ACTOR (widget));
next_paint_state (widget); next_paint_state (widget);

View File

@ -39,6 +39,7 @@
</description> </description>
<releases> <releases>
<release version="41.1" date="2021-11-03"/>
<release version="41.0" date="2021-09-19"/> <release version="41.0" date="2021-09-19"/>
</releases> </releases>

View File

@ -9,7 +9,7 @@ endif
launcherconf.set('prefix', prefix) launcherconf.set('prefix', prefix)
launcherconf.set('libdir', libdir) launcherconf.set('libdir', libdir)
launcherconf.set('pkgdatadir', pkgdatadir) launcherconf.set('pkgdatadir', pkgdatadir)
launcherconf.set('gjs', gjs.path()) launcherconf.set('gjs', gjs)
configure_file( configure_file(
input: prgname + '.in', input: prgname + '.in',

View File

@ -1,5 +1,5 @@
project('gnome-extensions-app', project('gnome-extensions-app',
version: '41.0', version: '41.1',
meson_version: '>= 0.53.0', meson_version: '>= 0.53.0',
license: 'GPLv2+' license: 'GPLv2+'
) )
@ -44,7 +44,7 @@ localedir = join_paths(datadir, 'locale')
metainfodir = join_paths(datadir, 'metainfo') metainfodir = join_paths(datadir, 'metainfo')
servicedir = join_paths(datadir, 'dbus-1', 'services') servicedir = join_paths(datadir, 'dbus-1', 'services')
gjs = find_program('gjs') gjs = '/usr/bin/gjs'
appstream_util = find_program('appstream-util', required: false) appstream_util = find_program('appstream-util', required: false)
desktop_file_validate = find_program('desktop-file-validate', required: false) desktop_file_validate = find_program('desktop-file-validate', required: false)

View File

@ -1,5 +1,5 @@
project('gnome-extensions-tool', 'c', project('gnome-extensions-tool', 'c',
version: '41.0', version: '41.1',
meson_version: '>= 0.53.0', meson_version: '>= 0.53.0',
license: 'GPLv2+' license: 'GPLv2+'
) )

View File

@ -56,6 +56,14 @@ launch_extension_prefs (const char *uuid)
NULL, NULL,
&error); &error);
if (error)
{
g_dbus_error_strip_remote_error (error);
g_printerr (_("Failed to open prefs for extension “%s”: %s\n"),
uuid, error->message);
return FALSE;
}
return TRUE; return TRUE;
} }

View File

@ -143,7 +143,7 @@ get_extension_property (GDBusProxy *proxy,
&error); &error);
if (response == NULL) if (response == NULL)
{ {
g_printerr (_("Failed to connect to GNOME Shell")); g_printerr (_("Failed to connect to GNOME Shell\n"));
return NULL; return NULL;
} }

View File

@ -1,5 +1,5 @@
project('shew', 'c', project('shew', 'c',
version: '41.0', version: '41.1',
meson_version: '>= 0.53.0', meson_version: '>= 0.53.0',
license: 'LGPLv2+', license: 'LGPLv2+',
) )