Compare commits
29 Commits
Author | SHA1 | Date | |
---|---|---|---|
c8892e7e73 | |||
6f159728d3 | |||
d85bd654a3 | |||
7d08587000 | |||
c93e5e6431 | |||
|
a1b537eebf | ||
|
d3c6dd75bb | ||
|
a369371519 | ||
|
03a3ce062a | ||
|
6456fa0df4 | ||
|
1ec0f01cfc | ||
|
0512d1fff4 | ||
|
ba32dcc16b | ||
|
edcee44c72 | ||
|
be32cab39b | ||
|
f8cdac49c6 | ||
|
b6b9e755c7 | ||
|
1297d8dc30 | ||
|
fd60591bb3 | ||
|
1b5ff77d02 | ||
|
488fb46edf | ||
|
ddf03b5d94 | ||
|
fc680556f5 | ||
|
a2f6efa5e1 | ||
|
62fce73aee | ||
|
b1538fcb20 | ||
|
025588b89a | ||
|
ce2ae0642f | ||
|
8c5d552cc2 |
24
NEWS
24
NEWS
@ -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
|
||||
====
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
<arg type="b" name="force_reload" direction="in"/>
|
||||
</method>
|
||||
<signal name="EventsAddedOrUpdated">
|
||||
<arg type="a(ssxxa{sv})" name="events" direction="out"/>
|
||||
<arg type="a(ssbxxa{sv})" name="events" direction="out"/>
|
||||
</signal>
|
||||
<signal name="EventsRemoved">
|
||||
<arg type="as" name="ids" direction="out"/>
|
||||
|
@ -230,6 +230,14 @@
|
||||
<default>["<Super>9"]</default>
|
||||
<summary>Switch to application 9</summary>
|
||||
</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 id="org.gnome.shell.app-switcher"
|
||||
|
@ -116,7 +116,7 @@ stage {
|
||||
&:focus { @include button(focus);}
|
||||
&:hover { @include button(hover);}
|
||||
&:insensitive { @include button(insensitive);}
|
||||
&:active, &:checked { @include button(active);}
|
||||
&:active { @include button(active);}
|
||||
}
|
||||
|
||||
// buttons in dialogs
|
||||
|
@ -49,3 +49,5 @@
|
||||
// Lock / login screens
|
||||
@import 'widgets/login-dialog';
|
||||
@import 'widgets/screen-shield';
|
||||
|
||||
@import 'widgets/realms';
|
||||
|
17
data/theme/gnome-shell-sass/widgets/_realms.scss
Normal file
17
data/theme/gnome-shell-sass/widgets/_realms.scss
Normal 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;
|
||||
}
|
@ -29,6 +29,7 @@ theme_sources = files([
|
||||
'gnome-shell-sass/widgets/_overview.scss',
|
||||
'gnome-shell-sass/widgets/_panel.scss',
|
||||
'gnome-shell-sass/widgets/_popovers.scss',
|
||||
'gnome-shell-sass/widgets/_realms.scss',
|
||||
'gnome-shell-sass/widgets/_screen-shield.scss',
|
||||
'gnome-shell-sass/widgets/_scrollbars.scss',
|
||||
'gnome-shell-sass/widgets/_search-entry.scss',
|
||||
|
@ -27,7 +27,7 @@ foreach service, dir : dbus_services
|
||||
|
||||
serviceconf = configuration_data()
|
||||
serviceconf.set('service', service)
|
||||
serviceconf.set('gjs', gjs.path())
|
||||
serviceconf.set('gjs', gjs)
|
||||
serviceconf.set('pkgdatadir', pkgdatadir)
|
||||
|
||||
configure_file(
|
||||
|
@ -142,5 +142,12 @@
|
||||
<file>ui/status/remoteAccess.js</file>
|
||||
<file>ui/status/system.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>
|
||||
</gresources>
|
||||
|
@ -76,12 +76,10 @@ class AccessDialog extends ModalDialog.ModalDialog {
|
||||
}
|
||||
|
||||
open() {
|
||||
if (!super.open())
|
||||
return false;
|
||||
super.open();
|
||||
|
||||
let connection = this._invocation.get_connection();
|
||||
this._requestExported = this._request.export(connection, this._handle);
|
||||
return true;
|
||||
}
|
||||
|
||||
CloseAsync(invocation, _params) {
|
||||
|
@ -919,6 +919,43 @@ var BaseAppView = GObject.registerClass({
|
||||
}
|
||||
}
|
||||
|
||||
animate(animationDirection, onComplete) {
|
||||
if (onComplete) {
|
||||
let animationDoneId = this._grid.connect('animation-done', () => {
|
||||
this._grid.disconnect(animationDoneId);
|
||||
onComplete();
|
||||
});
|
||||
}
|
||||
|
||||
this._clearAnimateLater();
|
||||
this._grid.opacity = 255;
|
||||
|
||||
if (animationDirection == IconGrid.AnimationDirection.IN) {
|
||||
const doSpringAnimationLater = laterType => {
|
||||
this._animateLaterId = Meta.later_add(laterType,
|
||||
() => {
|
||||
this._animateLaterId = 0;
|
||||
this._doSpringAnimation(animationDirection);
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
};
|
||||
|
||||
if (this._viewIsReady) {
|
||||
this._grid.opacity = 0;
|
||||
doSpringAnimationLater(Meta.LaterType.IDLE);
|
||||
} else {
|
||||
this._viewLoadedHandlerId = this.connect('view-loaded',
|
||||
() => {
|
||||
this._clearAnimateLater();
|
||||
this._grid.opacity = 255;
|
||||
doSpringAnimationLater(Meta.LaterType.BEFORE_REDRAW);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
this._doSpringAnimation(animationDirection);
|
||||
}
|
||||
}
|
||||
|
||||
_getDropTarget(x, y, source) {
|
||||
const { currentPage } = this._grid;
|
||||
|
||||
@ -1619,6 +1656,24 @@ class AppDisplay extends BaseAppView {
|
||||
return appIcons;
|
||||
}
|
||||
|
||||
// Overridden from BaseAppView
|
||||
animate(animationDirection, onComplete) {
|
||||
this._scrollView.reactive = false;
|
||||
this._swipeTracker.enabled = false;
|
||||
let completionFunc = () => {
|
||||
this._scrollView.reactive = true;
|
||||
this._swipeTracker.enabled = this.mapped;
|
||||
if (onComplete)
|
||||
onComplete();
|
||||
};
|
||||
|
||||
if (animationDirection == IconGrid.AnimationDirection.OUT &&
|
||||
this._displayingDialog && this._currentDialog)
|
||||
this._currentDialog.popdown();
|
||||
else
|
||||
super.animate(animationDirection, completionFunc);
|
||||
}
|
||||
|
||||
animateSwitch(animationDirection) {
|
||||
super.animateSwitch(animationDirection);
|
||||
|
||||
@ -2222,6 +2277,11 @@ class FolderView extends BaseAppView {
|
||||
return aPosition - bPosition;
|
||||
}
|
||||
|
||||
// Overridden from BaseAppView
|
||||
animate(animationDirection) {
|
||||
this._grid.animatePulse(animationDirection);
|
||||
}
|
||||
|
||||
createFolderIcon(size) {
|
||||
const layout = new Clutter.GridLayout({
|
||||
row_homogeneous: true,
|
||||
|
@ -12,6 +12,7 @@ const Util = imports.misc.util;
|
||||
|
||||
const { loadInterfaceXML } = imports.misc.fileUtils;
|
||||
|
||||
var MSECS_IN_DAY = 24 * 60 * 60 * 1000;
|
||||
var SHOW_WEEKDATE_KEY = 'show-weekdate';
|
||||
|
||||
var MESSAGE_ICON_SIZE = -1; // pick up from CSS
|
||||
@ -46,8 +47,11 @@ function _getBeginningOfDay(date) {
|
||||
}
|
||||
|
||||
function _getEndOfDay(date) {
|
||||
const ret = _getBeginningOfDay(date);
|
||||
ret.setDate(ret.getDate() + 1);
|
||||
let ret = new Date(date.getTime());
|
||||
ret.setHours(23);
|
||||
ret.setMinutes(59);
|
||||
ret.setSeconds(59);
|
||||
ret.setMilliseconds(999);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -78,11 +82,12 @@ function _getCalendarDayAbbreviation(dayNumber) {
|
||||
// Abstraction for an appointment/event in a calendar
|
||||
|
||||
var CalendarEvent = class CalendarEvent {
|
||||
constructor(id, date, end, summary) {
|
||||
constructor(id, date, end, summary, allDay) {
|
||||
this.id = id;
|
||||
this.date = date;
|
||||
this.end = end;
|
||||
this.summary = summary;
|
||||
this.allDay = allDay;
|
||||
}
|
||||
};
|
||||
|
||||
@ -170,26 +175,13 @@ function _datesEqual(a, b) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether an event overlaps a given interval
|
||||
*
|
||||
* @param {Date} e0 Beginning of the event
|
||||
* @param {Date} e1 End of the event
|
||||
* @param {Date} i0 Beginning of the interval
|
||||
* @param {Date} i1 End of the interval
|
||||
* @returns {boolean} Whether there was an overlap
|
||||
*/
|
||||
function _eventOverlapsInterval(e0, e1, i0, i1) {
|
||||
// This also ensures zero-length events are included
|
||||
if (e0 >= i0 && e1 < i1)
|
||||
function _dateIntervalsOverlap(a0, a1, b0, b1) {
|
||||
if (a1 <= b0)
|
||||
return false;
|
||||
else if (b1 <= a0)
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
|
||||
if (e1 <= i0)
|
||||
return false;
|
||||
if (i1 <= e0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// an implementation that reads data from a session bus service
|
||||
@ -287,10 +279,10 @@ class DBusEventSource extends EventSourceBase {
|
||||
let changed = false;
|
||||
|
||||
for (let n = 0; n < appointments.length; n++) {
|
||||
const [id, summary, startTime, endTime] = appointments[n];
|
||||
const [id, summary, allDay, startTime, endTime] = appointments[n];
|
||||
const date = new Date(startTime * 1000);
|
||||
const end = new Date(endTime * 1000);
|
||||
let event = new CalendarEvent(id, date, end, summary);
|
||||
let event = new CalendarEvent(id, date, end, summary, allDay);
|
||||
this._events.set(event.id, event);
|
||||
|
||||
changed = true;
|
||||
@ -305,7 +297,7 @@ class DBusEventSource extends EventSourceBase {
|
||||
|
||||
let changed = false;
|
||||
for (const id of ids)
|
||||
changed = changed || this._events.delete(id);
|
||||
changed |= this._events.delete(id);
|
||||
|
||||
if (changed)
|
||||
this.emit('changed');
|
||||
@ -318,7 +310,7 @@ class DBusEventSource extends EventSourceBase {
|
||||
let changed = false;
|
||||
for (const id of this._events.keys()) {
|
||||
if (id.startsWith(sourceUid))
|
||||
changed = changed || this._events.delete(id);
|
||||
changed |= this._events.delete(id);
|
||||
}
|
||||
|
||||
if (changed)
|
||||
@ -355,7 +347,7 @@ class DBusEventSource extends EventSourceBase {
|
||||
|
||||
*_getFilteredEvents(begin, end) {
|
||||
for (const event of this._events.values()) {
|
||||
if (_eventOverlapsInterval(event.date, event.end, begin, end))
|
||||
if (_dateIntervalsOverlap(event.date, event.end, begin, end))
|
||||
yield event;
|
||||
}
|
||||
}
|
||||
@ -509,7 +501,7 @@ var Calendar = GObject.registerClass({
|
||||
else
|
||||
col = offsetCols + (7 + iter.getDay() - this._weekStart) % 7;
|
||||
layout.attach(label, col, 1, 1, 1);
|
||||
iter.setDate(iter.getDate() + 1);
|
||||
iter.setTime(iter.getTime() + MSECS_IN_DAY);
|
||||
}
|
||||
|
||||
// All the children after this are days, and get removed when we update the calendar
|
||||
@ -610,8 +602,10 @@ var Calendar = GObject.registerClass({
|
||||
// Actually computing the number of weeks is complex, but we know that the
|
||||
// problematic categories (2 and 4) always start on week start, and that
|
||||
// all months at the end have 6 weeks.
|
||||
let beginDate = new Date(
|
||||
this._selectedDate.getFullYear(), this._selectedDate.getMonth(), 1);
|
||||
let beginDate = new Date(this._selectedDate);
|
||||
beginDate.setDate(1);
|
||||
beginDate.setSeconds(0);
|
||||
beginDate.setHours(12);
|
||||
|
||||
this._calendarBegin = new Date(beginDate);
|
||||
this._markedAsToday = now;
|
||||
@ -620,7 +614,7 @@ var Calendar = GObject.registerClass({
|
||||
let startsOnWeekStart = daysToWeekStart == 0;
|
||||
let weekPadding = startsOnWeekStart ? 7 : 0;
|
||||
|
||||
beginDate.setDate(beginDate.getDate() - (weekPadding + daysToWeekStart));
|
||||
beginDate.setTime(beginDate.getTime() - (weekPadding + daysToWeekStart) * MSECS_IN_DAY);
|
||||
|
||||
let layout = this.layout_manager;
|
||||
let iter = new Date(beginDate);
|
||||
@ -691,7 +685,7 @@ var Calendar = GObject.registerClass({
|
||||
layout.attach(label, rtl ? 7 : 0, row, 1, 1);
|
||||
}
|
||||
|
||||
iter.setDate(iter.getDate() + 1);
|
||||
iter.setTime(iter.getTime() + MSECS_IN_DAY);
|
||||
|
||||
if (iter.getDay() == this._weekStart)
|
||||
row++;
|
||||
|
@ -76,7 +76,7 @@ class KeyringDialog extends ModalDialog.ModalDialog {
|
||||
warning.opacity = this.prompt.warning_visible ? 255 : 0;
|
||||
});
|
||||
this.prompt.connect('notify::warning', () => {
|
||||
if (this._passwordEntry && this.prompt.warning !== '')
|
||||
if (this._passwordEntry && warning !== '')
|
||||
Util.wiggle(this._passwordEntry);
|
||||
});
|
||||
warningBox.add_child(warning);
|
||||
|
@ -127,10 +127,9 @@ class EventsSection extends St.Button {
|
||||
}
|
||||
|
||||
setDate(date) {
|
||||
this._startDate =
|
||||
new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
||||
this._endDate =
|
||||
new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);
|
||||
const day = [date.getFullYear(), date.getMonth(), date.getDate()];
|
||||
this._startDate = new Date(...day);
|
||||
this._endDate = new Date(...day, 23, 59, 59, 999);
|
||||
|
||||
this._updateTitle();
|
||||
this._reloadEvents();
|
||||
@ -157,11 +156,11 @@ class EventsSection extends St.Button {
|
||||
const timeSpanDay = GLib.TIME_SPAN_DAY / 1000;
|
||||
const now = new Date();
|
||||
|
||||
if (this._startDate <= now && now < this._endDate)
|
||||
if (this._startDate <= now && now <= this._endDate)
|
||||
this._title.text = _('Today');
|
||||
else if (this._endDate <= now && now - this._endDate < timeSpanDay)
|
||||
else if (this._endDate < now && now - this._endDate < timeSpanDay)
|
||||
this._title.text = _('Yesterday');
|
||||
else if (this._startDate > now && this._startDate - now <= timeSpanDay)
|
||||
else if (this._startDate > now && this._startDate - now < timeSpanDay)
|
||||
this._title.text = _('Tomorrow');
|
||||
else if (this._startDate.getFullYear() === now.getFullYear())
|
||||
this._title.text = this._startDate.toLocaleFormat(sameYearFormat);
|
||||
@ -170,8 +169,8 @@ class EventsSection extends St.Button {
|
||||
}
|
||||
|
||||
_formatEventTime(event) {
|
||||
const allDay =
|
||||
event.date <= this._startDate && event.end >= this._endDate;
|
||||
const allDay = event.allDay ||
|
||||
(event.date <= this._startDate && event.end >= this._endDate);
|
||||
|
||||
let title;
|
||||
if (allDay) {
|
||||
@ -185,13 +184,13 @@ class EventsSection extends St.Button {
|
||||
}
|
||||
|
||||
const rtl = Clutter.get_default_text_direction() === Clutter.TextDirection.RTL;
|
||||
if (event.date < this._startDate) {
|
||||
if (event.date < this._startDate && !event.allDay) {
|
||||
if (rtl)
|
||||
title = '%s%s'.format(title, ELLIPSIS_CHAR);
|
||||
else
|
||||
title = '%s%s'.format(ELLIPSIS_CHAR, title);
|
||||
}
|
||||
if (event.end > this._endDate) {
|
||||
if (event.end > this._endDate && !event.allDay) {
|
||||
if (rtl)
|
||||
title = '%s%s'.format(ELLIPSIS_CHAR, title);
|
||||
else
|
||||
|
@ -6,8 +6,6 @@ const Config = imports.misc.config;
|
||||
imports.gi.versions.Clutter = Config.LIBMUTTER_API_VERSION;
|
||||
imports.gi.versions.Gio = '2.0';
|
||||
imports.gi.versions.GdkPixbuf = '2.0';
|
||||
imports.gi.versions.GnomeBluetooth = '1.0';
|
||||
imports.gi.versions.GnomeDesktop = '3.0';
|
||||
imports.gi.versions.Gtk = '3.0';
|
||||
imports.gi.versions.Soup = '3.0';
|
||||
imports.gi.versions.TelepathyGLib = '0.12';
|
||||
|
@ -22,6 +22,7 @@ const UPDATE_CHECK_TIMEOUT = 24 * 60 * 60; // 1 day in seconds
|
||||
var ExtensionManager = class {
|
||||
constructor() {
|
||||
this._initialized = false;
|
||||
this._enabled = false;
|
||||
this._updateNotified = false;
|
||||
|
||||
this._extensions = new Map();
|
||||
@ -73,21 +74,6 @@ var ExtensionManager = class {
|
||||
return [...this._extensions.keys()];
|
||||
}
|
||||
|
||||
_extensionSupportsSessionMode(uuid) {
|
||||
const extension = this.lookup(uuid);
|
||||
|
||||
if (!extension)
|
||||
return false;
|
||||
|
||||
if (extension.sessionModes.includes(Main.sessionMode.currentMode))
|
||||
return true;
|
||||
|
||||
if (extension.sessionModes.includes(Main.sessionMode.parentMode))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
_callExtensionDisable(uuid) {
|
||||
let extension = this.lookup(uuid);
|
||||
if (!extension)
|
||||
@ -147,7 +133,7 @@ var ExtensionManager = class {
|
||||
}
|
||||
|
||||
_callExtensionEnable(uuid) {
|
||||
if (!this._extensionSupportsSessionMode(uuid))
|
||||
if (!Main.sessionMode.allowExtensions)
|
||||
return;
|
||||
|
||||
let extension = this.lookup(uuid);
|
||||
@ -329,7 +315,6 @@ var ExtensionManager = class {
|
||||
hasPrefs: dir.get_child('prefs.js').query_exists(null),
|
||||
hasUpdate: false,
|
||||
canChange: false,
|
||||
sessionModes: meta['session-modes'] ? meta['session-modes'] : ['user'],
|
||||
};
|
||||
this._extensions.set(uuid, extension);
|
||||
|
||||
@ -414,7 +399,7 @@ var ExtensionManager = class {
|
||||
}
|
||||
|
||||
_callExtensionInit(uuid) {
|
||||
if (!this._extensionSupportsSessionMode(uuid))
|
||||
if (!Main.sessionMode.allowExtensions)
|
||||
return false;
|
||||
|
||||
let extension = this.lookup(uuid);
|
||||
@ -503,15 +488,13 @@ var ExtensionManager = class {
|
||||
// Find and enable all the newly enabled extensions: UUIDs found in the
|
||||
// new setting, but not in the old one.
|
||||
newEnabledExtensions
|
||||
.filter(uuid => !this._enabledExtensions.includes(uuid) &&
|
||||
this._extensionSupportsSessionMode(uuid))
|
||||
.filter(uuid => !this._enabledExtensions.includes(uuid))
|
||||
.forEach(uuid => this._callExtensionEnable(uuid));
|
||||
|
||||
// Find and disable all the newly disabled extensions: UUIDs found in the
|
||||
// old setting, but not in the new one.
|
||||
this._extensionOrder
|
||||
.filter(uuid => !newEnabledExtensions.includes(uuid) ||
|
||||
!this._extensionSupportsSessionMode(uuid))
|
||||
.filter(uuid => !newEnabledExtensions.includes(uuid))
|
||||
.reverse().forEach(uuid => this._callExtensionDisable(uuid));
|
||||
|
||||
this._enabledExtensions = newEnabledExtensions;
|
||||
@ -606,6 +589,9 @@ var ExtensionManager = class {
|
||||
}
|
||||
|
||||
_enableAllExtensions() {
|
||||
if (this._enabled)
|
||||
return;
|
||||
|
||||
if (!this._initialized) {
|
||||
this._loadExtensions();
|
||||
this._initialized = true;
|
||||
@ -614,20 +600,34 @@ var ExtensionManager = class {
|
||||
this._callExtensionEnable(uuid);
|
||||
});
|
||||
}
|
||||
this._enabled = true;
|
||||
}
|
||||
|
||||
_disableAllExtensions() {
|
||||
if (!this._enabled)
|
||||
return;
|
||||
|
||||
if (this._initialized) {
|
||||
this._extensionOrder.slice().reverse().forEach(uuid => {
|
||||
this._callExtensionDisable(uuid);
|
||||
});
|
||||
}
|
||||
|
||||
this._enabled = false;
|
||||
}
|
||||
|
||||
_sessionUpdated() {
|
||||
// Take care of added or removed sessionMode extensions
|
||||
this._onEnabledExtensionsChanged();
|
||||
this._enableAllExtensions();
|
||||
// For now sessionMode.allowExtensions controls extensions from both the
|
||||
// 'enabled-extensions' preference and the sessionMode.enabledExtensions
|
||||
// property; it might make sense to make enabledExtensions independent
|
||||
// from allowExtensions in the future
|
||||
if (Main.sessionMode.allowExtensions) {
|
||||
// Take care of added or removed sessionMode extensions
|
||||
this._onEnabledExtensionsChanged();
|
||||
this._enableAllExtensions();
|
||||
} else {
|
||||
this._disableAllExtensions();
|
||||
}
|
||||
}
|
||||
};
|
||||
Signals.addSignalMethods(ExtensionManager.prototype);
|
||||
|
@ -934,6 +934,13 @@ var LayoutManager = GObject.registerClass({
|
||||
}
|
||||
}
|
||||
|
||||
_getWindowActorsForWorkspace(workspace) {
|
||||
return global.get_window_actors().filter(actor => {
|
||||
let win = actor.meta_window;
|
||||
return win.located_on_workspace(workspace);
|
||||
});
|
||||
}
|
||||
|
||||
_updateFullscreen() {
|
||||
this._updateVisibility();
|
||||
this._queueUpdateRegions();
|
||||
@ -967,9 +974,6 @@ var LayoutManager = GObject.registerClass({
|
||||
|
||||
for (i = 0; i < this._trackedActors.length; i++) {
|
||||
let actorData = this._trackedActors[i];
|
||||
if (!actorData.actor.get_paint_visibility())
|
||||
continue;
|
||||
|
||||
if (!(actorData.affectsInputRegion && wantsInputRegion) && !actorData.affectsStruts)
|
||||
continue;
|
||||
|
||||
@ -980,7 +984,7 @@ var LayoutManager = GObject.registerClass({
|
||||
w = Math.round(w);
|
||||
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 }));
|
||||
|
||||
let monitor = null;
|
||||
|
@ -200,7 +200,7 @@ var Magnifier = class Magnifier {
|
||||
*/
|
||||
startTrackingMouse() {
|
||||
if (!this._pointerWatch) {
|
||||
let interval = 1000 / 60;
|
||||
let interval = 1000 / Clutter.get_default_frame_rate();
|
||||
this._pointerWatch = PointerWatcher.getPointerWatcher().addWatch(interval, this.scrollToMousePos.bind(this));
|
||||
}
|
||||
}
|
||||
@ -1898,7 +1898,6 @@ var MagShaderEffects = class MagShaderEffects {
|
||||
this._colorDesaturation = new Clutter.DesaturateEffect();
|
||||
this._inverse.set_enabled(false);
|
||||
this._brightnessContrast.set_enabled(false);
|
||||
this._colorDesaturation.set_enabled(false);
|
||||
|
||||
this._magView = uiGroupClone;
|
||||
this._magView.add_effect(this._inverse);
|
||||
@ -1931,7 +1930,6 @@ var MagShaderEffects = class MagShaderEffects {
|
||||
|
||||
setColorSaturation(factor) {
|
||||
this._colorDesaturation.set_factor(1.0 - factor);
|
||||
this._colorDesaturation.set_enabled(factor !== 1.0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -49,6 +49,7 @@ const PointerA11yTimeout = imports.ui.pointerA11yTimeout;
|
||||
const ParentalControlsManager = imports.misc.parentalControlsManager;
|
||||
const Config = imports.misc.config;
|
||||
const Util = imports.misc.util;
|
||||
const RealmManager = imports.ui.realms.realmManager;
|
||||
|
||||
const WELCOME_DIALOG_LAST_SHOWN_VERSION = 'welcome-dialog-last-shown-version';
|
||||
// Make sure to mention the point release, otherwise it will show every time
|
||||
@ -91,6 +92,7 @@ var kbdA11yDialog = null;
|
||||
var inputMethod = null;
|
||||
var introspectService = null;
|
||||
var locatePointer = null;
|
||||
var realmManager = null;
|
||||
let _startDate;
|
||||
let _defaultCssStylesheet = null;
|
||||
let _cssStylesheet = null;
|
||||
@ -247,23 +249,6 @@ function _initializeUI() {
|
||||
|
||||
global.display.connect('gl-video-memory-purged', loadTheme);
|
||||
|
||||
global.context.connect('notify::unsafe-mode', () => {
|
||||
if (!global.context.unsafe_mode)
|
||||
return; // we're safe
|
||||
if (lookingGlass?.isOpen)
|
||||
return; // assume user action
|
||||
|
||||
const source = new MessageTray.SystemNotificationSource();
|
||||
messageTray.add(source);
|
||||
const notification = new MessageTray.Notification(source,
|
||||
_('System was put in unsafe mode'),
|
||||
_('Applications now have unrestricted access'));
|
||||
notification.addAction(_('Undo'),
|
||||
() => (global.context.unsafe_mode = false));
|
||||
notification.setTransient(true);
|
||||
source.showNotification(notification);
|
||||
});
|
||||
|
||||
// Provide the bus object for gnome-session to
|
||||
// initiate logouts.
|
||||
EndSessionDialog.init();
|
||||
@ -281,6 +266,8 @@ function _initializeUI() {
|
||||
extensionManager = new ExtensionSystem.ExtensionManager();
|
||||
extensionManager.init();
|
||||
|
||||
realmManager = new RealmManager.RealmManager();
|
||||
|
||||
if (sessionMode.isGreeter && screenShield) {
|
||||
layoutManager.connect('startup-prepared', () => {
|
||||
screenShield.showDialog();
|
||||
|
@ -663,24 +663,12 @@ var MessageListSection = GObject.registerClass({
|
||||
}
|
||||
|
||||
removeMessage(message, animate) {
|
||||
const messages = this._messages;
|
||||
|
||||
if (!messages.includes(message))
|
||||
if (!this._messages.includes(message))
|
||||
throw new Error(`Impossible to remove untracked message`);
|
||||
|
||||
let listItem = message.get_parent();
|
||||
listItem._connectionsIds.forEach(id => message.disconnect(id));
|
||||
|
||||
let nextMessage = null;
|
||||
|
||||
if (message.has_key_focus()) {
|
||||
const index = messages.indexOf(message);
|
||||
nextMessage =
|
||||
messages[index + 1] ||
|
||||
messages[index - 1] ||
|
||||
this._list;
|
||||
}
|
||||
|
||||
if (animate) {
|
||||
listItem.ease({
|
||||
scale_x: 0,
|
||||
@ -689,12 +677,10 @@ var MessageListSection = GObject.registerClass({
|
||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||
onComplete: () => {
|
||||
listItem.destroy();
|
||||
nextMessage?.grab_key_focus();
|
||||
},
|
||||
});
|
||||
} else {
|
||||
listItem.destroy();
|
||||
nextMessage?.grab_key_focus();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -251,7 +251,7 @@ var Overview = class {
|
||||
DND.addDragMonitor(this._dragMonitor);
|
||||
// Remember the workspace we started from
|
||||
let workspaceManager = global.workspace_manager;
|
||||
this._lastActiveWorkspaceIndex = workspaceManager.get_active_workspace_index();
|
||||
this._lastActiveWorkspaceIndex = workspaceManager.get_active_workspace_id();
|
||||
}
|
||||
|
||||
_onDragEnd(time) {
|
||||
|
@ -342,6 +342,8 @@ class ControlsManager extends St.Widget {
|
||||
workspaceManager.connect('notify::n-workspaces',
|
||||
this._updateAdjustment.bind(this));
|
||||
|
||||
this._contextSwitchedId = workspaceManager.connect('context-switched', this._updateAdjustment.bind(this));
|
||||
|
||||
this._searchController = new SearchController.SearchController(
|
||||
this._searchEntry,
|
||||
this.dash.showAppsButton);
|
||||
@ -653,6 +655,7 @@ class ControlsManager extends St.Widget {
|
||||
|
||||
_onDestroy() {
|
||||
global.workspace_manager.disconnect(this._nWorkspacesNotifyId);
|
||||
global.workspace_manager.disconnect(this._contextSwitchedId);
|
||||
}
|
||||
|
||||
_updateAdjustment() {
|
||||
|
37
js/ui/realms/realmIndicator.js
Normal file
37
js/ui/realms/realmIndicator.js
Normal 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('');
|
||||
}
|
||||
}
|
||||
});
|
59
js/ui/realms/realmManager.js
Normal file
59
js/ui/realms/realmManager.js
Normal 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();
|
||||
}
|
||||
|
||||
};
|
||||
|
326
js/ui/realms/realmSearchProvider.js
Normal file
326
js/ui/realms/realmSearchProvider.js
Normal 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)
|
||||
}
|
||||
}
|
325
js/ui/realms/realmSwitcher.js
Normal file
325
js/ui/realms/realmSwitcher.js
Normal 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);
|
||||
}
|
||||
}
|
323
js/ui/realms/realmWindowFrame.js
Normal file
323
js/ui/realms/realmWindowFrame.js
Normal 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);
|
||||
}
|
||||
});
|
133
js/ui/realms/realmWindowMenu.js
Normal file
133
js/ui/realms/realmWindowMenu.js
Normal 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;
|
||||
}
|
@ -249,8 +249,8 @@ class RunDialog extends ModalDialog.ModalDialog {
|
||||
this._commandError = false;
|
||||
|
||||
if (this._lockdownSettings.get_boolean(DISABLE_COMMAND_LINE_KEY))
|
||||
return false;
|
||||
return;
|
||||
|
||||
return super.open();
|
||||
super.open();
|
||||
}
|
||||
});
|
||||
|
@ -20,6 +20,7 @@ const _modes = {
|
||||
showCalendarEvents: false,
|
||||
showWelcomeDialog: false,
|
||||
allowSettings: false,
|
||||
allowExtensions: false,
|
||||
allowScreencast: false,
|
||||
enabledExtensions: [],
|
||||
hasRunDialog: false,
|
||||
@ -70,9 +71,10 @@ const _modes = {
|
||||
|
||||
'user': {
|
||||
hasOverview: true,
|
||||
showCalendarEvents: true,
|
||||
showCalendarEvents: false,
|
||||
showWelcomeDialog: true,
|
||||
allowSettings: true,
|
||||
allowExtensions: true,
|
||||
allowScreencast: true,
|
||||
hasRunDialog: true,
|
||||
hasWorkspaces: true,
|
||||
|
@ -542,6 +542,7 @@ var GnomeShellMountOpHandler = class {
|
||||
Gio.BusNameOwnerFlags.REPLACE, null, null);
|
||||
|
||||
this._dialog = null;
|
||||
this._volumeMonitor = Gio.VolumeMonitor.get();
|
||||
|
||||
this._ensureEmptyRequest();
|
||||
}
|
||||
|
@ -113,7 +113,7 @@ class Indicator extends PanelMenu.SystemIndicator {
|
||||
bindFlags);
|
||||
|
||||
this._sessionSubMenu = new PopupMenu.PopupSubMenuMenuItem(
|
||||
_('Power Off / Log Out'), true);
|
||||
_('Power Off'), true);
|
||||
this._sessionSubMenu.icon.icon_name = 'system-shutdown-symbolic';
|
||||
|
||||
item = new PopupMenu.PopupMenuItem(_('Suspend'));
|
||||
|
@ -493,7 +493,7 @@ var SwipeTracker = GObject.registerClass({
|
||||
this.bind_property('orientation', this._touchGesture, 'orientation',
|
||||
GObject.BindingFlags.SYNC_CREATE);
|
||||
this.bind_property('distance', this._touchGesture, 'distance', 0);
|
||||
global.stage.add_action_full('swipe', Clutter.EventPhase.CAPTURE, this._touchGesture);
|
||||
global.stage.add_action(this._touchGesture);
|
||||
|
||||
if (params.allowDrag) {
|
||||
this._dragGesture = new TouchSwipeGesture(allowedModes, 1,
|
||||
|
@ -676,14 +676,16 @@ var UnlockDialog = GObject.registerClass({
|
||||
}
|
||||
|
||||
_ensureAuthPrompt() {
|
||||
if (!this._authPrompt) {
|
||||
this._authPrompt = new AuthPrompt.AuthPrompt(this._gdmClient,
|
||||
AuthPrompt.AuthPromptMode.UNLOCK_ONLY);
|
||||
this._authPrompt.connect('failed', this._fail.bind(this));
|
||||
this._authPrompt.connect('cancelled', this._fail.bind(this));
|
||||
this._authPrompt.connect('reset', this._onReset.bind(this));
|
||||
this._promptBox.add_child(this._authPrompt);
|
||||
}
|
||||
if (this._authPrompt)
|
||||
return;
|
||||
|
||||
this._authPrompt = new AuthPrompt.AuthPrompt(this._gdmClient,
|
||||
AuthPrompt.AuthPromptMode.UNLOCK_ONLY);
|
||||
this._authPrompt.connect('failed', this._fail.bind(this));
|
||||
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.updateSensitivity(true);
|
||||
@ -870,11 +872,7 @@ var UnlockDialog = GObject.registerClass({
|
||||
}
|
||||
|
||||
finish(onComplete) {
|
||||
if (!this._authPrompt) {
|
||||
onComplete();
|
||||
return;
|
||||
}
|
||||
|
||||
this._ensureAuthPrompt();
|
||||
this._authPrompt.finish(onComplete);
|
||||
}
|
||||
|
||||
|
@ -26,9 +26,9 @@ class WelcomeDialog extends ModalDialog.ModalDialog {
|
||||
|
||||
open() {
|
||||
if (!this._tourAppInfo)
|
||||
return false;
|
||||
return;
|
||||
|
||||
return super.open();
|
||||
super.open();
|
||||
}
|
||||
|
||||
_buildLayout() {
|
||||
|
@ -198,6 +198,8 @@ var WorkspaceTracker = class {
|
||||
workspaceManager.connect('workspaces-reordered', () => {
|
||||
this._workspaces.sort((a, b) => a.index() - b.index());
|
||||
});
|
||||
workspaceManager.connect('context-switched',
|
||||
this._workspaceContextSwitched.bind(this));
|
||||
global.window_manager.connect('switch-workspace',
|
||||
this._queueCheckWorkspaces.bind(this));
|
||||
|
||||
@ -253,6 +255,8 @@ var WorkspaceTracker = class {
|
||||
emptyWorkspaces[index] = false;
|
||||
}
|
||||
|
||||
let current_context_id = workspaceManager.active_context_id();
|
||||
|
||||
let windows = global.get_window_actors();
|
||||
for (i = 0; i < windows.length; i++) {
|
||||
let actor = windows[i];
|
||||
@ -261,7 +265,12 @@ var WorkspaceTracker = class {
|
||||
if (win.is_on_all_workspaces())
|
||||
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;
|
||||
}
|
||||
|
||||
@ -339,6 +348,28 @@ var WorkspaceTracker = class {
|
||||
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() {
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let oldNumWorkspaces = this._workspaces.length;
|
||||
@ -936,7 +967,7 @@ var WindowManager = class {
|
||||
|
||||
let appSwitchAction = new AppSwitchAction();
|
||||
appSwitchAction.connect('activated', this._switchApp.bind(this));
|
||||
global.stage.add_action_full('app-switch', Clutter.EventPhase.CAPTURE, appSwitchAction);
|
||||
global.stage.add_action(appSwitchAction);
|
||||
|
||||
let mode = Shell.ActionMode.ALL & ~Shell.ActionMode.LOCK_SCREEN;
|
||||
let topDragAction = new EdgeDragAction.EdgeDragAction(St.Side.TOP, mode);
|
||||
@ -954,7 +985,7 @@ var WindowManager = class {
|
||||
global.display.connect('notify::focus-window', updateUnfullscreenGesture);
|
||||
global.display.connect('in-fullscreen-changed', updateUnfullscreenGesture);
|
||||
|
||||
global.stage.add_action_full('unfullscreen', Clutter.EventPhase.CAPTURE, topDragAction);
|
||||
global.stage.add_action(topDragAction);
|
||||
|
||||
this._workspaceAnimation =
|
||||
new WorkspaceAnimation.WorkspaceAnimationController();
|
||||
@ -1641,6 +1672,14 @@ var WindowManager = class {
|
||||
|
||||
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._shellwm.completed_switch_workspace();
|
||||
this._switchInProgress = false;
|
||||
|
@ -1,11 +1,12 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*
|
||||
/* exported WindowMenuManager */
|
||||
|
||||
const { GLib, Meta, St } = imports.gi;
|
||||
const { GLib, Meta, Shell, St } = imports.gi;
|
||||
|
||||
const BoxPointer = imports.ui.boxpointer;
|
||||
const Main = imports.ui.main;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const RealmWindowMenu = imports.ui.realms.realmWindowMenu;
|
||||
|
||||
var WindowMenu = class extends PopupMenu.PopupMenu {
|
||||
constructor(window, sourceActor) {
|
||||
@ -24,6 +25,23 @@ var WindowMenu = class extends PopupMenu.PopupMenu {
|
||||
|
||||
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'), () => {
|
||||
window.minimize();
|
||||
});
|
||||
|
@ -122,6 +122,10 @@ class WorkspacesView extends WorkspacesViewBase {
|
||||
this._updateWorkspacesId =
|
||||
workspaceManager.connect('notify::n-workspaces',
|
||||
this._updateWorkspaces.bind(this));
|
||||
this._contextSwitchedId =
|
||||
workspaceManager.connect('context-switched',
|
||||
this._refreshWorkspaces.bind(this));
|
||||
|
||||
this._reorderWorkspacesId =
|
||||
workspaceManager.connect('workspaces-reordered', () => {
|
||||
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() {
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let newNumWorkspaces = workspaceManager.n_workspaces;
|
||||
@ -499,6 +510,7 @@ class WorkspacesView extends WorkspacesViewBase {
|
||||
global.window_manager.disconnect(this._switchWorkspaceNotifyId);
|
||||
let workspaceManager = global.workspace_manager;
|
||||
workspaceManager.disconnect(this._updateWorkspacesId);
|
||||
workspaceManager.disconnect(this._contextSwitchedId);
|
||||
workspaceManager.disconnect(this._reorderWorkspacesId);
|
||||
}
|
||||
|
||||
|
17
meson.build
17
meson.build
@ -1,5 +1,5 @@
|
||||
project('gnome-shell', 'c',
|
||||
version: '41.0',
|
||||
version: '41.1',
|
||||
meson_version: '>= 0.53.0',
|
||||
license: 'GPLv2+'
|
||||
)
|
||||
@ -8,9 +8,10 @@ split_version = meson.project_version().split('.')
|
||||
|
||||
# We depend on a specific version of the libmutter API. The mutter variants of
|
||||
# the Cogl and Clutter libraries also use this API version.
|
||||
# The API version is increased each development cycle,
|
||||
# The API version is increased automatically each development cycle,
|
||||
# starting with 0 in 3.23.x
|
||||
mutter_api_version = '10'
|
||||
api_version = split_version[0].to_int() - 32
|
||||
mutter_api_version = '@0@'.format(api_version)
|
||||
|
||||
clutter_pc = 'mutter-clutter-' + mutter_api_version
|
||||
cogl_pc = 'mutter-cogl-' + mutter_api_version
|
||||
@ -18,8 +19,8 @@ cogl_pango_pc = 'mutter-cogl-pango-' + mutter_api_version
|
||||
libmutter_pc = 'libmutter-' + mutter_api_version
|
||||
libmutter_test_pc = 'libmutter-test-' + mutter_api_version
|
||||
|
||||
ecal_req = '>= 3.33.1'
|
||||
eds_req = '>= 3.33.1'
|
||||
#ecal_req = '>= 3.33.1'
|
||||
#eds_req = '>= 3.33.1'
|
||||
gcr_req = '>= 3.7.5'
|
||||
gio_req = '>= 2.56.0'
|
||||
gi_req = '>= 1.49.1'
|
||||
@ -71,8 +72,8 @@ else
|
||||
endif
|
||||
|
||||
atk_bridge_dep = dependency('atk-bridge-2.0')
|
||||
ecal_dep = dependency('libecal-2.0', version: ecal_req)
|
||||
eds_dep = dependency('libedataserver-1.2', version: eds_req)
|
||||
#ecal_dep = dependency('libecal-2.0', version: ecal_req)
|
||||
#eds_dep = dependency('libedataserver-1.2', version: eds_req)
|
||||
gcr_dep = dependency('gcr-base-3', version: gcr_req)
|
||||
gdk_x11_dep = dependency('gdk-x11-3.0')
|
||||
gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0')
|
||||
@ -138,7 +139,7 @@ endif
|
||||
|
||||
mutter_typelibdir = mutter_dep.get_pkgconfig_variable('typelibdir')
|
||||
python = find_program('python3')
|
||||
gjs = find_program('gjs')
|
||||
gjs = '/usr/bin/gjs'
|
||||
|
||||
cc = meson.get_compiler('c')
|
||||
|
||||
|
280
po/es.po
280
po/es.po
@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell.master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2021-11-13 20:24+0000\n"
|
||||
"POT-Creation-Date: 2021-08-17 23:56+0000\n"
|
||||
"PO-Revision-Date: 2021-08-25 16:54+0200\n"
|
||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||
"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
|
||||
@ -257,11 +257,23 @@ msgstr ""
|
||||
"posible y un número muy grande representará una versión que todavía no "
|
||||
"existe. Este número muy grande se puede usar para desactivar el diálogo."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:133
|
||||
#: data/org.gnome.shell.gschema.xml.in:109
|
||||
msgid "Enable introspection API"
|
||||
msgstr "Activar la introspección de 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 ""
|
||||
"Activa una API de D-Bus que permite la introspección del estado de la "
|
||||
"aplicación de la shell."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:141
|
||||
msgid "Layout of the app picker"
|
||||
msgstr "Distribución del selector de aplicaciones"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:134
|
||||
#: data/org.gnome.shell.gschema.xml.in:142
|
||||
msgid ""
|
||||
"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 "
|
||||
@ -274,112 +286,112 @@ msgstr ""
|
||||
"guardan los siguientes valores como 'data': • “position”:la posición del "
|
||||
"icono de la aplicación en la página"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:149
|
||||
#: data/org.gnome.shell.gschema.xml.in:157
|
||||
msgid "Keybinding to open the application menu"
|
||||
msgstr "Asociación de teclas para abrir el menú de la aplicación"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:150
|
||||
#: data/org.gnome.shell.gschema.xml.in:158
|
||||
msgid "Keybinding to open the application menu."
|
||||
msgstr "Asociación de teclas para abrir el menú de la aplicación."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:156
|
||||
#: data/org.gnome.shell.gschema.xml.in:163
|
||||
#: data/org.gnome.shell.gschema.xml.in:164
|
||||
#: data/org.gnome.shell.gschema.xml.in:171
|
||||
msgid "Keybinding to shift between overview states"
|
||||
msgstr "Asociación de teclas para cambiar entre estados de la vista general"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:157
|
||||
#: data/org.gnome.shell.gschema.xml.in:165
|
||||
msgid "Keybinding to shift between session, window picker and app grid"
|
||||
msgstr ""
|
||||
"Asociación de teclas para cambiar entre sesión, selector de ventanas y "
|
||||
"cuadrícula de aplicaciones"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:164
|
||||
#: data/org.gnome.shell.gschema.xml.in:172
|
||||
msgid "Keybinding to shift between app grid, window picker and session"
|
||||
msgstr ""
|
||||
"Asociación de teclas para cambiar entre cuadrícula de aplicaciones, selector "
|
||||
"de ventanas y sesión"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:170
|
||||
#: data/org.gnome.shell.gschema.xml.in:178
|
||||
msgid "Keybinding to open the “Show Applications” view"
|
||||
msgstr "Asociación de teclas para la vista «Mostrar aplicaciones»"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:171
|
||||
#: data/org.gnome.shell.gschema.xml.in:179
|
||||
msgid ""
|
||||
"Keybinding to open the “Show Applications” view of the Activities Overview."
|
||||
msgstr ""
|
||||
"Asociación de teclas para abrir la vista «Mostrar aplicaciones» de la vista "
|
||||
"de actividades."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:178
|
||||
#: data/org.gnome.shell.gschema.xml.in:186
|
||||
msgid "Keybinding to open the overview"
|
||||
msgstr "Asociación de teclas para la vista general"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:179
|
||||
#: data/org.gnome.shell.gschema.xml.in:187
|
||||
msgid "Keybinding to open the Activities Overview."
|
||||
msgstr "Asociación de teclas para abrir la Vista de actividades."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:185
|
||||
#: data/org.gnome.shell.gschema.xml.in:193
|
||||
msgid "Keybinding to toggle the visibility of the notification list"
|
||||
msgstr ""
|
||||
"Asociación de teclas para cambiar la visibilidad de la lista de "
|
||||
"notificaciones"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:186
|
||||
#: data/org.gnome.shell.gschema.xml.in:194
|
||||
msgid "Keybinding to toggle the visibility of the notification list."
|
||||
msgstr ""
|
||||
"Asociación de teclas para cambiar la visibilidad de la lista de "
|
||||
"notificaciones."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:192
|
||||
#: data/org.gnome.shell.gschema.xml.in:200
|
||||
msgid "Keybinding to focus the active notification"
|
||||
msgstr "Asociación de teclas para dar el foco a la notificación activa"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:193
|
||||
#: data/org.gnome.shell.gschema.xml.in:201
|
||||
msgid "Keybinding to focus the active notification."
|
||||
msgstr "Asociación de teclas para dar el foco a la notificación activa."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:199
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
msgid "Switch to application 1"
|
||||
msgstr "Cambiar a la aplicación 1"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:203
|
||||
#: data/org.gnome.shell.gschema.xml.in:211
|
||||
msgid "Switch to application 2"
|
||||
msgstr "Cambiar a la aplicación 2"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
msgid "Switch to application 3"
|
||||
msgstr "Cambiar a la aplicación 3"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:211
|
||||
#: data/org.gnome.shell.gschema.xml.in:219
|
||||
msgid "Switch to application 4"
|
||||
msgstr "Cambiar a la aplicación 4"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
msgid "Switch to application 5"
|
||||
msgstr "Cambiar a la aplicación 5"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:219
|
||||
#: data/org.gnome.shell.gschema.xml.in:227
|
||||
msgid "Switch to application 6"
|
||||
msgstr "Cambiar a la aplicación 6"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
msgid "Switch to application 7"
|
||||
msgstr "Cambiar a la aplicación 7"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:227
|
||||
#: data/org.gnome.shell.gschema.xml.in:235
|
||||
msgid "Switch to application 8"
|
||||
msgstr "Cambiar a la aplicación 8"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
#: data/org.gnome.shell.gschema.xml.in:239
|
||||
msgid "Switch to application 9"
|
||||
msgstr "Cambiar a la aplicación 9"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:240
|
||||
#: data/org.gnome.shell.gschema.xml.in:267
|
||||
#: data/org.gnome.shell.gschema.xml.in:248
|
||||
#: data/org.gnome.shell.gschema.xml.in:275
|
||||
msgid "Limit switcher to current workspace."
|
||||
msgstr "Limitar el intercambiador al área de trabajo actual."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:241
|
||||
#: data/org.gnome.shell.gschema.xml.in:249
|
||||
msgid ""
|
||||
"If true, only applications that have windows on the current workspace are "
|
||||
"shown in the switcher. Otherwise, all applications are included."
|
||||
@ -388,11 +400,11 @@ msgstr ""
|
||||
"trabajo actual se muestran en el selector. Si no, se incluyen todas las "
|
||||
"aplicaciones."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:258
|
||||
#: data/org.gnome.shell.gschema.xml.in:266
|
||||
msgid "The application icon mode."
|
||||
msgstr "El modo de icono de la aplicación."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:259
|
||||
#: data/org.gnome.shell.gschema.xml.in:267
|
||||
msgid ""
|
||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||
"are “thumbnail-only” (shows a thumbnail of the window), “app-icon-"
|
||||
@ -402,7 +414,7 @@ msgstr ""
|
||||
"son «thumbnail-only» (muestra una miniatura de la ventana), «app-icon-"
|
||||
"only» (sólo muestra el icono de la aplicación) «both»."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:268
|
||||
#: data/org.gnome.shell.gschema.xml.in:276
|
||||
msgid ""
|
||||
"If true, only windows from the current workspace are shown in the switcher. "
|
||||
"Otherwise, all windows are included."
|
||||
@ -410,59 +422,59 @@ msgstr ""
|
||||
"Si es cierto, sólo se muestran en el selector las ventanas del área de "
|
||||
"trabajo actual. Si no, se incluyen todas las ventanas."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:278
|
||||
#: data/org.gnome.shell.gschema.xml.in:286
|
||||
msgid "Locations"
|
||||
msgstr "Ubicaciones"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:279
|
||||
#: data/org.gnome.shell.gschema.xml.in:287
|
||||
msgid "The locations to show in world clocks"
|
||||
msgstr "Las ubicaciones que mostrar en los relojes del mundo"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:289
|
||||
#: data/org.gnome.shell.gschema.xml.in:297
|
||||
msgid "Automatic location"
|
||||
msgstr "Ubicación automática"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:290
|
||||
#: data/org.gnome.shell.gschema.xml.in:298
|
||||
msgid "Whether to fetch the current location or not"
|
||||
msgstr "Indica si se debe o no obtener la ubicación actual"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:297
|
||||
#: data/org.gnome.shell.gschema.xml.in:305
|
||||
msgid "Location"
|
||||
msgstr "Ubicación"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:298
|
||||
#: data/org.gnome.shell.gschema.xml.in:306
|
||||
msgid "The location for which to show a forecast"
|
||||
msgstr "La ubicación para la que mostrar la predicción"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:310
|
||||
#: data/org.gnome.shell.gschema.xml.in:318
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Acoplar un diálogo modal a la ventana padre"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:311
|
||||
#: data/org.gnome.shell.gschema.xml.in:320
|
||||
#: data/org.gnome.shell.gschema.xml.in:319
|
||||
#: data/org.gnome.shell.gschema.xml.in:328
|
||||
#: data/org.gnome.shell.gschema.xml.in:336
|
||||
#: data/org.gnome.shell.gschema.xml.in:344
|
||||
#: data/org.gnome.shell.gschema.xml.in:352
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"Esta clave sobrescribe la clave en org.gnome.mutter al ejecutar GNOME Shell."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:319
|
||||
#: data/org.gnome.shell.gschema.xml.in:327
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
"Activar el mosaico en los bordes al arrastrar ventanas a los bordes de la "
|
||||
"ventana"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:327
|
||||
#: data/org.gnome.shell.gschema.xml.in:335
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "Las áreas de trabajo se gestionan dinámicamente"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:335
|
||||
#: data/org.gnome.shell.gschema.xml.in:343
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Áreas de trabajo solo en la pantalla principal"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:343
|
||||
#: data/org.gnome.shell.gschema.xml.in:351
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"Retardo al cambiar el foco del ratón hasta que el puntero deja de moverse"
|
||||
@ -498,18 +510,18 @@ msgid "Visit extension homepage"
|
||||
msgstr "Visitar la página web de la extensión"
|
||||
|
||||
#: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61
|
||||
#: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:138
|
||||
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:228
|
||||
#: js/ui/components/networkAgent.js:111 js/ui/components/polkitAgent.js:138
|
||||
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:190
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:209
|
||||
#: js/ui/components/networkAgent.js:225 js/ui/components/networkAgent.js:249
|
||||
#: js/ui/components/networkAgent.js:270 js/ui/components/networkAgent.js:290
|
||||
#: js/ui/components/networkAgent.js:300 js/ui/components/polkitAgent.js:275
|
||||
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:210
|
||||
#: js/ui/components/networkAgent.js:226 js/ui/components/networkAgent.js:250
|
||||
#: js/ui/components/networkAgent.js:271 js/ui/components/networkAgent.js:291
|
||||
#: js/ui/components/networkAgent.js:301 js/ui/components/polkitAgent.js:275
|
||||
#: js/ui/shellMountOperation.js:326
|
||||
msgid "Password"
|
||||
msgstr "Contraseña"
|
||||
@ -532,8 +544,8 @@ msgstr "(ej., usuario o %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:245
|
||||
#: js/ui/components/networkAgent.js:268 js/ui/components/networkAgent.js:286
|
||||
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:246
|
||||
#: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:287
|
||||
msgid "Username"
|
||||
msgstr "Nombre de usuario"
|
||||
|
||||
@ -638,65 +650,65 @@ msgctxt "search-result"
|
||||
msgid "Lock Screen Rotation"
|
||||
msgstr "Bloquear la rotación de la pantalla"
|
||||
|
||||
#: js/misc/util.js:121
|
||||
#: js/misc/util.js:120
|
||||
msgid "Command not found"
|
||||
msgstr "Comando no encontrado"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: js/misc/util.js:157
|
||||
#: js/misc/util.js:156
|
||||
msgid "Could not parse command:"
|
||||
msgstr "No se pudo analizar el comando:"
|
||||
|
||||
#: js/misc/util.js:165
|
||||
#: js/misc/util.js:164
|
||||
#, javascript-format
|
||||
msgid "Execution of “%s” failed:"
|
||||
msgstr "Falló la ejecución de «%s»:"
|
||||
|
||||
#: js/misc/util.js:182
|
||||
#: js/misc/util.js:181
|
||||
msgid "Just now"
|
||||
msgstr "Ahora mismo"
|
||||
|
||||
#: js/misc/util.js:184
|
||||
#: js/misc/util.js:183
|
||||
#, javascript-format
|
||||
msgid "%d minute ago"
|
||||
msgid_plural "%d minutes ago"
|
||||
msgstr[0] "Hace %d minuto"
|
||||
msgstr[1] "Hace %d minutos"
|
||||
|
||||
#: js/misc/util.js:188
|
||||
#: js/misc/util.js:187
|
||||
#, javascript-format
|
||||
msgid "%d hour ago"
|
||||
msgid_plural "%d hours ago"
|
||||
msgstr[0] "Hace %d hora"
|
||||
msgstr[1] "Hace %d horas"
|
||||
|
||||
#: js/misc/util.js:192 js/ui/dateMenu.js:162
|
||||
#: js/misc/util.js:191 js/ui/dateMenu.js:162
|
||||
msgid "Yesterday"
|
||||
msgstr "Ayer"
|
||||
|
||||
#: js/misc/util.js:194
|
||||
#: js/misc/util.js:193
|
||||
#, javascript-format
|
||||
msgid "%d day ago"
|
||||
msgid_plural "%d days ago"
|
||||
msgstr[0] "Hace %d día"
|
||||
msgstr[1] "Hace %d días"
|
||||
|
||||
#: js/misc/util.js:198
|
||||
#: js/misc/util.js:197
|
||||
#, javascript-format
|
||||
msgid "%d week ago"
|
||||
msgid_plural "%d weeks ago"
|
||||
msgstr[0] "Hace %d semana"
|
||||
msgstr[1] "Hace %d semanas"
|
||||
|
||||
#: js/misc/util.js:202
|
||||
#: js/misc/util.js:201
|
||||
#, javascript-format
|
||||
msgid "%d month ago"
|
||||
msgid_plural "%d months ago"
|
||||
msgstr[0] "Hace %d mes"
|
||||
msgstr[1] "Hace %d meses"
|
||||
|
||||
#: js/misc/util.js:205
|
||||
#: js/misc/util.js:204
|
||||
#, javascript-format
|
||||
msgid "%d year ago"
|
||||
msgid_plural "%d years ago"
|
||||
@ -704,20 +716,20 @@ msgstr[0] "Hace %d año"
|
||||
msgstr[1] "Hace %d años"
|
||||
|
||||
#. Translators: Time in 24h format
|
||||
#: js/misc/util.js:238
|
||||
#: js/misc/util.js:237
|
||||
msgid "%H∶%M"
|
||||
msgstr "%H∶%M"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 24h format. i.e. "Yesterday, 14:30"
|
||||
#: js/misc/util.js:244
|
||||
#: js/misc/util.js:243
|
||||
#, no-c-format
|
||||
msgid "Yesterday, %H∶%M"
|
||||
msgstr "Ayer, %H∶%M"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 24h format. i.e. "Monday, 14:30"
|
||||
#: js/misc/util.js:250
|
||||
#: js/misc/util.js:249
|
||||
#, no-c-format
|
||||
msgid "%A, %H∶%M"
|
||||
msgstr "%A, %H∶%M"
|
||||
@ -725,7 +737,7 @@ msgstr "%A, %H∶%M"
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 24h format.
|
||||
#. i.e. "May 25, 14:30"
|
||||
#: js/misc/util.js:256
|
||||
#: js/misc/util.js:255
|
||||
#, no-c-format
|
||||
msgid "%B %-d, %H∶%M"
|
||||
msgstr "%d de %B, %H∶%M"
|
||||
@ -733,7 +745,7 @@ msgstr "%d de %B, %H∶%M"
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 24h format.
|
||||
#. i.e. "May 25 2012, 14:30"
|
||||
#: js/misc/util.js:262
|
||||
#: js/misc/util.js:261
|
||||
#, no-c-format
|
||||
msgid "%B %-d %Y, %H∶%M"
|
||||
msgstr "%d de %B de %Y, %H∶%M"
|
||||
@ -741,20 +753,20 @@ msgstr "%d de %B de %Y, %H∶%M"
|
||||
#. Show only the time if date is on today
|
||||
#. eslint-disable-line no-lonely-if
|
||||
#. Translators: Time in 12h format
|
||||
#: js/misc/util.js:267
|
||||
#: js/misc/util.js:266
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%l∶%M %p"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm"
|
||||
#: js/misc/util.js:273
|
||||
#: js/misc/util.js:272
|
||||
#, no-c-format
|
||||
msgid "Yesterday, %l∶%M %p"
|
||||
msgstr "Ayer a las %l∶%M %p"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm"
|
||||
#: js/misc/util.js:279
|
||||
#: js/misc/util.js:278
|
||||
#, no-c-format
|
||||
msgid "%A, %l∶%M %p"
|
||||
msgstr "%A, %l∶%M %p"
|
||||
@ -762,7 +774,7 @@ msgstr "%A, %l∶%M %p"
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 12h format.
|
||||
#. i.e. "May 25, 2:30 pm"
|
||||
#: js/misc/util.js:285
|
||||
#: js/misc/util.js:284
|
||||
#, no-c-format
|
||||
msgid "%B %-d, %l∶%M %p"
|
||||
msgstr "%d de %B, %l∶%M %p"
|
||||
@ -770,17 +782,17 @@ msgstr "%d de %B, %l∶%M %p"
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 12h format.
|
||||
#. i.e. "May 25 2012, 2:30 pm"
|
||||
#: js/misc/util.js:291
|
||||
#: js/misc/util.js:290
|
||||
#, no-c-format
|
||||
msgid "%B %-d %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
|
||||
#: js/portalHelper/main.js:49
|
||||
#: js/portalHelper/main.js:42
|
||||
msgid "Hotspot Login"
|
||||
msgstr "Inicio de sesión en el punto de acceso"
|
||||
|
||||
#: js/portalHelper/main.js:95
|
||||
#: js/portalHelper/main.js:88
|
||||
msgid ""
|
||||
"Your connection to this hotspot login is not secure. Passwords or other "
|
||||
"information you enter on this page can be viewed by people nearby."
|
||||
@ -1025,39 +1037,39 @@ msgstr "La versión de udisks instalada no soporta la configuración PIM"
|
||||
msgid "Open with %s"
|
||||
msgstr "Abrir con %s"
|
||||
|
||||
#: js/ui/components/networkAgent.js:92
|
||||
#: js/ui/components/networkAgent.js:93
|
||||
msgid ""
|
||||
"Alternatively you can connect by pushing the “WPS” button on your router."
|
||||
msgstr ""
|
||||
"Alternativamente puede conectarse pulsando el botón «WPS» de su router."
|
||||
|
||||
#: js/ui/components/networkAgent.js:104 js/ui/status/network.js:258
|
||||
#: js/ui/components/networkAgent.js:105 js/ui/status/network.js:258
|
||||
#: js/ui/status/network.js:349 js/ui/status/network.js:981
|
||||
msgid "Connect"
|
||||
msgstr "Conectar"
|
||||
|
||||
#: js/ui/components/networkAgent.js:215
|
||||
#: js/ui/components/networkAgent.js:216
|
||||
msgid "Key"
|
||||
msgstr "Clave"
|
||||
|
||||
#: js/ui/components/networkAgent.js:253 js/ui/components/networkAgent.js:276
|
||||
#: js/ui/components/networkAgent.js:254 js/ui/components/networkAgent.js:277
|
||||
msgid "Private key password"
|
||||
msgstr "Contraseña de la clave privada"
|
||||
|
||||
#: js/ui/components/networkAgent.js:274
|
||||
#: js/ui/components/networkAgent.js:275
|
||||
msgid "Identity"
|
||||
msgstr "Identidad"
|
||||
|
||||
#: js/ui/components/networkAgent.js:288
|
||||
#: js/ui/components/networkAgent.js:289
|
||||
msgid "Service"
|
||||
msgstr "Servicio"
|
||||
|
||||
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:345
|
||||
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:346
|
||||
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
|
||||
msgid "Authentication required"
|
||||
msgstr "Autenticación requerida"
|
||||
|
||||
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:680
|
||||
#: js/ui/components/networkAgent.js:319 js/ui/components/networkAgent.js:680
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -1066,31 +1078,31 @@ msgstr ""
|
||||
"Se necesitan contraseñas o claves de cifrado para acceder a la red "
|
||||
"inalámbrica «%s»."
|
||||
|
||||
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:684
|
||||
#: js/ui/components/networkAgent.js:323 js/ui/components/networkAgent.js:684
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Autenticación 802.1X cableada"
|
||||
|
||||
#: js/ui/components/networkAgent.js:324
|
||||
#: js/ui/components/networkAgent.js:325
|
||||
msgid "Network name"
|
||||
msgstr "Nombre de la red"
|
||||
|
||||
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:688
|
||||
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:688
|
||||
msgid "DSL authentication"
|
||||
msgstr "Autenticación DSL"
|
||||
|
||||
#: js/ui/components/networkAgent.js:336 js/ui/components/networkAgent.js:693
|
||||
#: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:693
|
||||
msgid "PIN code required"
|
||||
msgstr "Código PIN requerido"
|
||||
|
||||
#: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:694
|
||||
#: js/ui/components/networkAgent.js:338 js/ui/components/networkAgent.js:694
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil"
|
||||
|
||||
#: js/ui/components/networkAgent.js:338
|
||||
#: js/ui/components/networkAgent.js:339
|
||||
msgid "PIN"
|
||||
msgstr "PIN"
|
||||
|
||||
#: js/ui/components/networkAgent.js:346 js/ui/components/networkAgent.js:685
|
||||
#: js/ui/components/networkAgent.js:347 js/ui/components/networkAgent.js:685
|
||||
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
|
||||
#: js/ui/components/networkAgent.js:705
|
||||
#, javascript-format
|
||||
@ -1382,24 +1394,24 @@ msgstr "%s (remoto)"
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (consola)"
|
||||
|
||||
#: js/ui/extensionDownloader.js:232
|
||||
#: js/ui/extensionDownloader.js:194
|
||||
msgid "Install"
|
||||
msgstr "Instalar"
|
||||
|
||||
#: js/ui/extensionDownloader.js:238
|
||||
#: js/ui/extensionDownloader.js:200
|
||||
msgid "Install Extension"
|
||||
msgstr "Instalar extensión"
|
||||
|
||||
#: js/ui/extensionDownloader.js:239
|
||||
#: js/ui/extensionDownloader.js:201
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
|
||||
|
||||
#: js/ui/extensionSystem.js:266
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Actualizaciones de extensiones disponibles"
|
||||
|
||||
#: js/ui/extensionSystem.js:267
|
||||
#: js/ui/extensionSystem.js:254
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Las actualizaciones de las extensiones están listas para instalarse."
|
||||
|
||||
@ -1444,8 +1456,8 @@ msgid ""
|
||||
"You just held down the Shift key for 8 seconds. This is the shortcut for the "
|
||||
"Slow Keys feature, which affects the way your keyboard works."
|
||||
msgstr ""
|
||||
"Acaba de pulsar la tecla «Mayúsculas» durante 8 segundos. Ésto es el "
|
||||
"atajo del teclado para la característica «Teclas lentas», que afecta la "
|
||||
"Acaba de pulsar la tecla «Mayúsculas» durante 8 segundos. Ésta es la "
|
||||
"combinación de teclas para la característica «Teclas lentas», que afecta la "
|
||||
"forma en que funciona el teclado."
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:40
|
||||
@ -1496,7 +1508,7 @@ msgstr "Apagar"
|
||||
msgid "Leave Off"
|
||||
msgstr "Dejar apagado"
|
||||
|
||||
#: js/ui/keyboard.js:226
|
||||
#: js/ui/keyboard.js:227
|
||||
msgid "Region & Language Settings"
|
||||
msgstr "Configuración de región e idioma"
|
||||
|
||||
@ -1549,11 +1561,11 @@ msgstr "Ver fuente"
|
||||
msgid "Web Page"
|
||||
msgstr "Página web"
|
||||
|
||||
#: js/ui/main.js:290
|
||||
#: js/ui/main.js:294
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Sesión iniciada como usuario con privilegios"
|
||||
|
||||
#: js/ui/main.js:291
|
||||
#: js/ui/main.js:295
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1561,15 +1573,15 @@ msgstr ""
|
||||
"Se debe evitar ejecutar una sesión como usuario con privilegios por motivos "
|
||||
"de seguridad. Si es posible, inicie sesión como un usuario normal."
|
||||
|
||||
#: js/ui/main.js:340
|
||||
#: js/ui/main.js:344
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "Pantalla de bloqueo desactivada"
|
||||
|
||||
#: js/ui/main.js:341
|
||||
#: js/ui/main.js:345
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "La pantalla de bloqueo necesita el gestor de pantallas de GNOME."
|
||||
|
||||
#: js/ui/messageTray.js:1443
|
||||
#: js/ui/messageTray.js:1440
|
||||
msgid "System Information"
|
||||
msgstr "Información del sistema"
|
||||
|
||||
@ -1603,47 +1615,47 @@ msgstr "Deshacer"
|
||||
msgid "Overview"
|
||||
msgstr "Vista general"
|
||||
|
||||
#: js/ui/padOsd.js:95
|
||||
#: js/ui/padOsd.js:96
|
||||
msgid "New shortcut…"
|
||||
msgstr "Atajo nuevo…"
|
||||
|
||||
#: js/ui/padOsd.js:142
|
||||
#: js/ui/padOsd.js:143
|
||||
msgid "Application defined"
|
||||
msgstr "Aplicación definida"
|
||||
|
||||
#: js/ui/padOsd.js:143
|
||||
#: js/ui/padOsd.js:144
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Mostrar la ayuda en pantalla"
|
||||
|
||||
#: js/ui/padOsd.js:144
|
||||
#: js/ui/padOsd.js:145
|
||||
msgid "Switch monitor"
|
||||
msgstr "Cambiar monitor"
|
||||
|
||||
#: js/ui/padOsd.js:145
|
||||
#: js/ui/padOsd.js:146
|
||||
msgid "Assign keystroke"
|
||||
msgstr "Asignar pulsación"
|
||||
|
||||
#: js/ui/padOsd.js:211
|
||||
#: js/ui/padOsd.js:212
|
||||
msgid "Done"
|
||||
msgstr "Hecho"
|
||||
|
||||
#: js/ui/padOsd.js:716
|
||||
#: js/ui/padOsd.js:718
|
||||
msgid "Edit…"
|
||||
msgstr "Editar…"
|
||||
|
||||
#: js/ui/padOsd.js:758 js/ui/padOsd.js:875
|
||||
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877
|
||||
msgid "None"
|
||||
msgstr "Nada"
|
||||
|
||||
#: js/ui/padOsd.js:829
|
||||
#: js/ui/padOsd.js:831
|
||||
msgid "Press a button to configure"
|
||||
msgstr "Pulse un botón para configurar"
|
||||
|
||||
#: js/ui/padOsd.js:830
|
||||
#: js/ui/padOsd.js:832
|
||||
msgid "Press Esc to exit"
|
||||
msgstr "Pulse Esc para salir"
|
||||
|
||||
#: js/ui/padOsd.js:833
|
||||
#: js/ui/padOsd.js:835
|
||||
msgid "Press any key to exit"
|
||||
msgstr "Pulse cualquier tecla para salir"
|
||||
|
||||
@ -1653,12 +1665,12 @@ msgstr "Pulse cualquier tecla para salir"
|
||||
msgid "Activities"
|
||||
msgstr "Actividades"
|
||||
|
||||
#: js/ui/panel.js:556
|
||||
#: js/ui/panel.js:542
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Sistema"
|
||||
|
||||
#: js/ui/panel.js:674
|
||||
#: js/ui/panel.js:658
|
||||
msgid "Top Bar"
|
||||
msgstr "Barra superior"
|
||||
|
||||
@ -1697,7 +1709,7 @@ msgstr "No se pudo bloquear"
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Una aplicación impidió el bloqueo"
|
||||
|
||||
#: js/ui/screenshot.js:155
|
||||
#: js/ui/screenshot.js:141
|
||||
msgid "Screenshot taken"
|
||||
msgstr "Captura de pantalla realizada"
|
||||
|
||||
@ -2396,10 +2408,13 @@ msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
|
||||
#: js/ui/windowMenu.js:27
|
||||
#| msgid "Hide Text"
|
||||
msgid "Hide"
|
||||
msgstr "Ocultar"
|
||||
|
||||
#: js/ui/windowMenu.js:34
|
||||
#| msgctxt "search-result"
|
||||
#| msgid "Restart"
|
||||
msgid "Restore"
|
||||
msgstr "Restaurar"
|
||||
|
||||
@ -2756,7 +2771,6 @@ msgstr "Se necesita el UUID, el nombre y la descripción"
|
||||
#: subprojects/extensions-tool/src/command-enable.c:46
|
||||
#: subprojects/extensions-tool/src/command-info.c:50
|
||||
#: subprojects/extensions-tool/src/command-list.c:64
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell\n"
|
||||
msgstr "Falló al conectar a GNOME Shell\n"
|
||||
|
||||
@ -2773,7 +2787,7 @@ msgstr "Desactivar una extensión"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:119
|
||||
#: subprojects/extensions-tool/src/command-enable.c:119
|
||||
#: subprojects/extensions-tool/src/command-info.c:103
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:105
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:97
|
||||
#: subprojects/extensions-tool/src/command-reset.c:76
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:104
|
||||
msgid "No UUID given"
|
||||
@ -2782,7 +2796,7 @@ msgstr "No se ha especificado el UUID"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:124
|
||||
#: subprojects/extensions-tool/src/command-enable.c:124
|
||||
#: subprojects/extensions-tool/src/command-info.c:108
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:110
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:102
|
||||
#: subprojects/extensions-tool/src/command-reset.c:81
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:109
|
||||
msgid "More than one UUID given"
|
||||
@ -2912,12 +2926,7 @@ msgstr "Se ha especificado más de una carpeta fuente"
|
||||
msgid "Extension “%s” doesn't have preferences\n"
|
||||
msgstr "La extensión «%s» no tiene opciones\n"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:62
|
||||
#, c-format
|
||||
msgid "Failed to open prefs for extension “%s”: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:87
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:79
|
||||
msgid "Opens extension preferences"
|
||||
msgstr "abre las preferencias de la extensión"
|
||||
|
||||
@ -2942,6 +2951,10 @@ msgstr "Desinstalar una extensión"
|
||||
msgid "Do not print error messages"
|
||||
msgstr "No mostrar mensajes de errores"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell"
|
||||
msgstr "Falló al conectar a GNOME Shell"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:244
|
||||
msgid "Path"
|
||||
msgstr "Ruta"
|
||||
@ -3072,19 +3085,6 @@ msgstr[1] "%u entradas"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sonidos del sistema"
|
||||
|
||||
#~ msgid "Enable introspection API"
|
||||
#~ msgstr "Activar la introspección de API"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Enables a D-Bus API that allows to introspect the application state of "
|
||||
#~ "the shell."
|
||||
#~ msgstr ""
|
||||
#~ "Activa una API de D-Bus que permite la introspección del estado de la "
|
||||
#~ "aplicación de la shell."
|
||||
|
||||
#~ msgid "Failed to connect to GNOME Shell"
|
||||
#~ msgstr "Falló al conectar a GNOME Shell"
|
||||
|
||||
#~ msgid "Minimize"
|
||||
#~ msgstr "Minimizar"
|
||||
|
||||
|
537
po/fa.po
537
po/fa.po
@ -9,9 +9,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2021-11-17 10:36+0000\n"
|
||||
"PO-Revision-Date: 2021-11-19 15:48+0330\n"
|
||||
"Last-Translator: MohammadSaleh Kamyab <mskf1383@protonmail.com>\n"
|
||||
"POT-Creation-Date: 2021-09-09 03:40+0000\n"
|
||||
"PO-Revision-Date: 2021-10-21 19:49+0330\n"
|
||||
"Last-Translator: eshagh <eshagh094@gmail.com>\n"
|
||||
"Language-Team: Persian <>\n"
|
||||
"Language: fa\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -19,7 +19,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n!=1);\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
|
||||
msgid "Launchers"
|
||||
@ -98,8 +98,7 @@ msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr "به کار انداختن ابزارهای داخلی مفید برای توسعهدهندگان و آزمونگران از Alt-F2"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:9
|
||||
msgid ""
|
||||
"Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
||||
msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
||||
msgstr "اجازه دسترسی به ابزارهای اشکالزدا و پایشگر داخلی با استفاده از محاورهٔ Alt-F2."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:16
|
||||
@ -108,15 +107,13 @@ msgstr "شناسههای یکتای افزونهها برای به کار
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:17
|
||||
msgid ""
|
||||
"GNOME Shell extensions have a UUID property; this key lists extensions which should "
|
||||
"be loaded. Any extension that wants to be loaded needs to be in this list. You can "
|
||||
"also manipulate this list with the EnableExtension and DisableExtension D-Bus "
|
||||
"methods on org.gnome.Shell."
|
||||
"GNOME Shell extensions have a UUID property; this key lists extensions which should be loaded. Any extension that "
|
||||
"wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and "
|
||||
"DisableExtension D-Bus methods on org.gnome.Shell."
|
||||
msgstr ""
|
||||
"افزونههای گنومشل مشخصهٔ UUID دارند؛ این کلید، افزونههایی که باید بار شوند را فهرست "
|
||||
"میکند. هر افزونهای که میخواهد بار شود، باید در این فهرست باشد. شما همچنین میتوانید "
|
||||
"این فهرست را از طریق EnableExtension و DisableExtension (روشهای D-Bus) در org.gnome."
|
||||
"Shell نیز بسازید."
|
||||
"افزونههای گنومشل مشخصهٔ UUID دارند؛ این کلید، افزونههایی که باید بار شوند را فهرست میکند. هر افزونهای که میخواهد بار "
|
||||
"شود، باید در این فهرست باشد. شما همچنین میتوانید این فهرست را از طریق EnableExtension و DisableExtension (روشهای D-"
|
||||
"Bus) در org.gnome.Shell نیز بسازید."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:26
|
||||
msgid "UUIDs of extensions to force disabling"
|
||||
@ -124,27 +121,21 @@ msgstr "شناسههای یکتای افزونهها برای از کار
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:27
|
||||
msgid ""
|
||||
"GNOME Shell extensions have a UUID property; this key lists extensions which should "
|
||||
"be disabled, even if loaded as part of the current mode. You can also manipulate "
|
||||
"this list with the EnableExtension and DisableExtension D-Bus methods on org.gnome."
|
||||
"Shell. This key takes precedence over the “enabled-extensions” setting."
|
||||
"GNOME Shell extensions have a UUID property; this key lists extensions which should be disabled, even if loaded as "
|
||||
"part of the current mode. You can also manipulate this list with the EnableExtension and DisableExtension D-Bus "
|
||||
"methods on org.gnome.Shell. This key takes precedence over the “enabled-extensions” setting."
|
||||
msgstr ""
|
||||
"افزونههای پوستهٔ گنوم شل شناسهای یکتا دارند؛ این کلید، افزونههایی که باید غیرفعّال "
|
||||
"شوند را فهرست میکند، حتا اگر به عنوان بخشی از حالت فعلی بار شده باشند. میتوانید این "
|
||||
"فهرست را از طریق روشهای دیباس EnableExtension و DisableExtension در org.gnome.Shell "
|
||||
"نیز تغییر دهید."
|
||||
"افزونههای پوستهٔ گنوم شل شناسهای یکتا دارند؛ این کلید، افزونههایی که باید غیرفعّال شوند را فهرست میکند، حتا اگر به عنوان "
|
||||
"بخشی از حالت فعلی بار شده باشند. میتوانید این فهرست را از طریق روشهای دیباس EnableExtension و DisableExtension در org."
|
||||
"gnome.Shell نیز تغییر دهید."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:37
|
||||
msgid "Disable user extensions"
|
||||
msgstr "از کار انداختن افزونههای کاربر"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:38
|
||||
msgid ""
|
||||
"Disable all extensions the user has enabled without affecting the “enabled-"
|
||||
"extension” setting."
|
||||
msgstr ""
|
||||
"از کار انداختن تمام افزونههایی که کاربر به کار انداخته، بدون اثر روی تنظیمات "
|
||||
"«افزونهٔ فعّال»."
|
||||
msgid "Disable all extensions the user has enabled without affecting the “enabled-extension” setting."
|
||||
msgstr "از کار انداختن تمام افزونههایی که کاربر به کار انداخته، بدون اثر روی تنظیمات «افزونهٔ فعّال»."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:45
|
||||
msgid "Disables the validation of extension version compatibility"
|
||||
@ -152,22 +143,18 @@ msgstr "از کار انداختن بررسی سازگاری نسخهٔ افزو
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:46
|
||||
msgid ""
|
||||
"GNOME Shell will only load extensions that claim to support the current running "
|
||||
"version. Enabling this option will disable this check and try to load all "
|
||||
"extensions regardless of the versions they claim to support."
|
||||
"GNOME Shell will only load extensions that claim to support the current running version. Enabling this option will "
|
||||
"disable this check and try to load all extensions regardless of the versions they claim to support."
|
||||
msgstr ""
|
||||
"پوستهٔ گنوم تنها نگارشهایی از افزونهها را که ادّعا میکنند از نگارش درحال اجرا "
|
||||
"پشتیبانی میکند، بار میکند. به کار اندازی این گزینه، بررسی این مورد را از کار "
|
||||
"انداخته و سعی میکند تمام افزونهها، بدون درنظر گرفتن سازگاری آنها بار شوند."
|
||||
"پوستهٔ گنوم تنها نگارشهایی از افزونهها را که ادّعا میکنند از نگارش درحال اجرا پشتیبانی میکند، بار میکند. به کار اندازی "
|
||||
"این گزینه، بررسی این مورد را از کار انداخته و سعی میکند تمام افزونهها، بدون درنظر گرفتن سازگاری آنها بار شوند."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:54
|
||||
msgid "List of desktop file IDs for favorite applications"
|
||||
msgstr "فهرست شناسههای پروندهٔ میزکار برای برنامههای مورد علاقه"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:55
|
||||
msgid ""
|
||||
"The applications corresponding to these identifiers will be displayed in the "
|
||||
"favorites area."
|
||||
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
|
||||
msgstr "برنامههای مشابه این شناسهها در قسمت مورد علاقهها نمایش داده میشود."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:62
|
||||
@ -184,27 +171,21 @@ msgid "Always show the “Log out” menu item in the user menu."
|
||||
msgstr "نمایش همیشگی «خروج» در فهرست کاربر."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:72
|
||||
msgid ""
|
||||
"This key overrides the automatic hiding of the “Log out” menu item in single-user, "
|
||||
"single-session situations."
|
||||
msgstr ""
|
||||
"این کلید، نهفتن خودکار «خروج» در فهرست را در حالتهای تککاربر، تکنشست بازنویسی میکند."
|
||||
msgid "This key overrides the automatic hiding of the “Log out” menu item in single-user, single-session situations."
|
||||
msgstr "این کلید، نهفتن خودکار «خروج» در فهرست را در حالتهای تککاربر، تکنشست بازنویسی میکند."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:79
|
||||
msgid "Whether to remember password for mounting encrypted or remote filesystems"
|
||||
msgstr ""
|
||||
"اینکه آیا گذرواژه برای سوارکردن سامانههای پروندهٔ رمزنگاری شده و یا دوردست بهخاطر "
|
||||
"سپرده شود یا خیر"
|
||||
msgstr "اینکه آیا گذرواژه برای سوارکردن سامانههای پروندهٔ رمزنگاری شده و یا دوردست بهخاطر سپرده شود یا خیر"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:80
|
||||
msgid ""
|
||||
"The shell will request a password when an encrypted device or a remote filesystem "
|
||||
"is mounted. If the password can be saved for future use a “Remember Password” "
|
||||
"checkbox will be present. This key sets the default state of the checkbox."
|
||||
"The shell will request a password when an encrypted device or a remote filesystem is mounted. If the password can be "
|
||||
"saved for future use a “Remember Password” checkbox will be present. This key sets the default state of the checkbox."
|
||||
msgstr ""
|
||||
"هنگامی که دستگاهی رمزنگاری شده یا سامانهپروندهای دوردست سوار میشود، پوسته درخواست "
|
||||
"گذرواژه میکند. اگر گذرواژه را بتوان برای استفادهٔ آینده ذخیره کرد، گزینهٔ «بهخاطر "
|
||||
"سپردن گذرواژه» موجود خواهد بود. این کلید، حالت پیشگزیدهٔ این گزینه را تنظیم میکند."
|
||||
"هنگامی که دستگاهی رمزنگاری شده یا سامانهپروندهای دوردست سوار میشود، پوسته درخواست گذرواژه میکند. اگر گذرواژه را بتوان "
|
||||
"برای استفادهٔ آینده ذخیره کرد، گزینهٔ «بهخاطر سپردن گذرواژه» موجود خواهد بود. این کلید، حالت پیشگزیدهٔ این گزینه را تنظیم "
|
||||
"میکند."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:89
|
||||
msgid "Whether the default Bluetooth adapter had set up devices associated to it"
|
||||
@ -212,12 +193,12 @@ msgstr "اینکه آداپتور بلوتوث پیشگزیده دستگاه
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:90
|
||||
msgid ""
|
||||
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is powered, "
|
||||
"or if there were devices set up associated with the default adapter. This will be "
|
||||
"reset if the default adapter is ever seen not to have devices associated to it."
|
||||
"The shell will only show a Bluetooth menu item if a Bluetooth adapter is powered, or if there were devices set up "
|
||||
"associated with the default adapter. This will be reset if the default adapter is ever seen not to have devices "
|
||||
"associated to it."
|
||||
msgstr ""
|
||||
"پوسته تنها زمانی فهرست بلوتوث را نمایش میدهد که آداپتور بلوتوث روشن باشد، یا "
|
||||
"دستگاههایی به گونهای تنظیم شده باشند که به آداپتور پیشگزیده متّصل شوند."
|
||||
"پوسته تنها زمانی فهرست بلوتوث را نمایش میدهد که آداپتور بلوتوث روشن باشد، یا دستگاههایی به گونهای تنظیم شده باشند که "
|
||||
"به آداپتور پیشگزیده متّصل شوند."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:99
|
||||
msgid "The last version the “Welcome to GNOME” dialog was shown for"
|
||||
@ -225,15 +206,13 @@ msgstr "آخرین نگارش گفتوگوی «به گنوم خوش آمدی
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:100
|
||||
msgid ""
|
||||
"This key determines for which version the “Welcome to GNOME” dialog was last shown. "
|
||||
"An empty string represents the oldest possible version, and a huge number will "
|
||||
"represent versions that do not exist yet. This huge number can be used to "
|
||||
"effectively disable the dialog."
|
||||
"This key determines for which version the “Welcome to GNOME” dialog was last shown. An empty string represents the "
|
||||
"oldest possible version, and a huge number will represent versions that do not exist yet. This huge number can be used "
|
||||
"to effectively disable the dialog."
|
||||
msgstr ""
|
||||
"این کلید مشخّص میکند گفتوگوی «به گنوم خوش آمدید»، برای کدام نگارش نشان داده شده. یک "
|
||||
"رشتهٔ خالی، نمایانگر قدیمیترین نگارش ممکن بوده و یه عدد بزرگ، نمایانگر نگارشهاییست "
|
||||
"که هنوز وجود ندارند. این عدد بزرگ میتواند برای از کار انداختن مؤثّر گفتوگو استفاده "
|
||||
"شود."
|
||||
"این کلید مشخّص میکند گفتوگوی «به گنوم خوش آمدید»، برای کدام نگارش نشان داده شده. یک رشتهٔ خالی، نمایانگر قدیمیترین نگارش "
|
||||
"ممکن بوده و یه عدد بزرگ، نمایانگر نگارشهاییست که هنوز وجود ندارند. این عدد بزرگ میتواند برای از کار انداختن مؤثّر "
|
||||
"گفتوگو استفاده شود."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:133
|
||||
msgid "Layout of the app picker"
|
||||
@ -241,15 +220,13 @@ msgstr "چینش گزینشگر کاره"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:134
|
||||
msgid ""
|
||||
"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 “application id” → "
|
||||
"'data' pair. Currently, the following values are stored as 'data': • “position”: "
|
||||
"the position of the application icon in the page"
|
||||
"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 “application id” → 'data' pair. Currently, the following values are stored as 'data': • "
|
||||
"“position”: the position of the application icon in the page"
|
||||
msgstr ""
|
||||
"چینش گزینشگر کاره. هر ورودی در آرایه، یک صفحه است. صفحهها به ترتیبی که در پوستهٔ "
|
||||
"گنوم ظاهر میشوند، ذخیره میشوند. هر صفحه دارای یک جفت «شناسهٔ برنامه» ← «داده» است. "
|
||||
"درحال حاضر، مقدارهای زیر به عنوان «داده»: • «موقعیت»: موقعیت نقشک برنامه در صفحه "
|
||||
"ذخیره شدهاند"
|
||||
"چینش گزینشگر کاره. هر ورودی در آرایه، یک صفحه است. صفحهها به ترتیبی که در پوستهٔ گنوم ظاهر میشوند، ذخیره میشوند. هر "
|
||||
"صفحه دارای یک جفت «شناسهٔ برنامه» ← «داده» است. درحال حاضر، مقدارهای زیر به عنوان «داده»: • «موقعیت»: موقعیت نقشک "
|
||||
"برنامه در صفحه ذخیره شدهاند"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:149
|
||||
msgid "Keybinding to open the application menu"
|
||||
@ -345,11 +322,11 @@ msgstr "محدود کردن تعویضگر به فضایکاری فعلی.
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:241
|
||||
msgid ""
|
||||
"If true, only applications that have windows on the current workspace are shown in "
|
||||
"the switcher. Otherwise, all applications are included."
|
||||
"If true, only applications that have windows on the current workspace are shown in the switcher. Otherwise, all "
|
||||
"applications are included."
|
||||
msgstr ""
|
||||
"اگر درست باشد، تنها برنامههایی که در فضایکاری فعلی پنجره دارند در تعویضگر نشان داده "
|
||||
"میشوند. در غیر این صورت، تمام برنامهها نشان داده میشوند."
|
||||
"اگر درست باشد، تنها برنامههایی که در فضایکاری فعلی پنجره دارند در تعویضگر نشان داده میشوند. در غیر این صورت، تمام "
|
||||
"برنامهها نشان داده میشوند."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:258
|
||||
msgid "The application icon mode."
|
||||
@ -357,21 +334,16 @@ msgstr "حالت شمایلی برنامه."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:259
|
||||
msgid ""
|
||||
"Configures how the windows are shown in the switcher. Valid possibilities are "
|
||||
"“thumbnail-only” (shows a thumbnail of the window), “app-icon-only” (shows only the "
|
||||
"application icon) or “both”."
|
||||
"Configures how the windows are shown in the switcher. Valid possibilities are “thumbnail-only” (shows a thumbnail of "
|
||||
"the window), “app-icon-only” (shows only the application icon) or “both”."
|
||||
msgstr ""
|
||||
"نحوه نمایش پنجرهها را در تعویضگر پیکربندی میکند. مقدارهای ممکن عبارتند از "
|
||||
"«thumbnail-only» (نمایش تصویر بندانگشتی از پنجره)، «app-icon-only» (نمایش تنها "
|
||||
"شمایل برنامه) یا «both» (هر دو)."
|
||||
"نحوه نمایش پنجرهها را در تعویضگر پیکربندی میکند. مقدارهای ممکن عبارتند از «thumbnail-only» (نمایش تصویر بندانگشتی از "
|
||||
"پنجره)، «app-icon-only» (نمایش تنها شمایل برنامه) یا «both» (هر دو)."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:268
|
||||
msgid ""
|
||||
"If true, only windows from the current workspace are shown in the switcher. "
|
||||
"Otherwise, all windows are included."
|
||||
msgid "If true, only windows from the current workspace are shown in the switcher. Otherwise, all windows are included."
|
||||
msgstr ""
|
||||
"اگر درست باشد، تنها پنجرههای فضایکاری فعلی در تعویضگر نمایش داده میشود. در غیر این "
|
||||
"صورت، تمام پنجرهها اضافه میشوند."
|
||||
"اگر درست باشد، تنها پنجرههای فضایکاری فعلی در تعویضگر نمایش داده میشود. در غیر این صورت، تمام پنجرهها اضافه میشوند."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:278
|
||||
msgid "Locations"
|
||||
@ -421,25 +393,23 @@ msgstr "فضاهای کاری تنها در صفحهنمایش اصلی"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:343
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"به تأخیر انداختن تغییر تمرکز در حالت موشی تا زمانی که نشانگر از حرکت باز ایستد"
|
||||
msgstr "به تأخیر انداختن تغییر تمرکز در حالت موشی تا زمانی که نشانگر از حرکت باز ایستد"
|
||||
|
||||
#: data/org.gnome.Shell.PortalHelper.desktop.in.in:3
|
||||
msgid "Network Login"
|
||||
msgstr "ورود شبکهای"
|
||||
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:28
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:241
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:28 subprojects/extensions-app/data/ui/extensions-window.ui:241
|
||||
msgid "Something’s gone wrong"
|
||||
msgstr "اشتباهی صورت گرفت"
|
||||
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:39
|
||||
msgid ""
|
||||
"We’re very sorry, but there’s been a problem: the settings for this extension can’t "
|
||||
"be displayed. We recommend that you report the issue to the extension authors."
|
||||
"We’re very sorry, but there’s been a problem: the settings for this extension can’t be displayed. We recommend that "
|
||||
"you report the issue to the extension authors."
|
||||
msgstr ""
|
||||
"متأسفیم، ولی مشکلی وجود داشت: تنظیمات این افزونه نمیتواند نشان داده شوند. توصیه "
|
||||
"میکنیم مشکل را به نگارندهٔ افزونه گزارش دهید."
|
||||
"متأسفیم، ولی مشکلی وجود داشت: تنظیمات این افزونه نمیتواند نشان داده شوند. توصیه میکنیم مشکل را به نگارندهٔ افزونه گزارش "
|
||||
"دهید."
|
||||
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:64
|
||||
msgid "Technical Details"
|
||||
@ -453,20 +423,17 @@ msgstr "صفحهٔ خانگی"
|
||||
msgid "Visit extension homepage"
|
||||
msgstr "مشاهدهٔ صفحهٔ خانگی افزونه"
|
||||
|
||||
#: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61
|
||||
#: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:138
|
||||
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:228
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183
|
||||
#: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61 js/ui/components/networkAgent.js:110
|
||||
#: js/ui/components/polkitAgent.js:138 js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:228
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 js/ui/status/network.js:978
|
||||
#: subprojects/extensions-app/js/main.js:183
|
||||
msgid "Cancel"
|
||||
msgstr "لغو"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:209
|
||||
#: js/ui/components/networkAgent.js:225 js/ui/components/networkAgent.js:249
|
||||
#: js/ui/components/networkAgent.js:270 js/ui/components/networkAgent.js:290
|
||||
#: js/ui/components/networkAgent.js:300 js/ui/components/polkitAgent.js:275
|
||||
#: js/ui/shellMountOperation.js:326
|
||||
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:209 js/ui/components/networkAgent.js:225
|
||||
#: js/ui/components/networkAgent.js:249 js/ui/components/networkAgent.js:270 js/ui/components/networkAgent.js:290
|
||||
#: js/ui/components/networkAgent.js:300 js/ui/components/polkitAgent.js:275 js/ui/shellMountOperation.js:326
|
||||
msgid "Password"
|
||||
msgstr "گذرواژه"
|
||||
|
||||
@ -488,8 +455,8 @@ msgstr "(برای مثال، کاربر یا %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:245
|
||||
#: js/ui/components/networkAgent.js:268 js/ui/components/networkAgent.js:286
|
||||
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:245 js/ui/components/networkAgent.js:268
|
||||
#: js/ui/components/networkAgent.js:286
|
||||
msgid "Username"
|
||||
msgstr "نامکاربری"
|
||||
|
||||
@ -748,11 +715,11 @@ msgstr "ورود به نقطهٔ داغ"
|
||||
|
||||
#: js/portalHelper/main.js:95
|
||||
msgid ""
|
||||
"Your connection to this hotspot login is not secure. Passwords or other information "
|
||||
"you enter on this page can be viewed by people nearby."
|
||||
"Your connection to this hotspot login is not secure. Passwords or other information you enter on this page can be "
|
||||
"viewed by people nearby."
|
||||
msgstr ""
|
||||
"اتّصال شما به این ورود نقطهٔ داغ امن نیست. گذرواژهها یا دیگر اطّلاعاتی که در این صفحه "
|
||||
"وارد میکنید، میتواند توسّط افراد اطراف دیده شود."
|
||||
"اتّصال شما به این ورود نقطهٔ داغ امن نیست. گذرواژهها یا دیگر اطّلاعاتی که در این صفحه وارد میکنید، میتواند توسّط افراد "
|
||||
"اطراف دیده شود."
|
||||
|
||||
#. No support for non-modal system dialogs, so ignore the option
|
||||
#. let modal = options['modal'] || true;
|
||||
@ -764,7 +731,7 @@ msgstr "رد دسترسی"
|
||||
msgid "Grant Access"
|
||||
msgstr "پذیرفتن دسترسی"
|
||||
|
||||
#: js/ui/appDisplay.js:1791
|
||||
#: js/ui/appDisplay.js:1846
|
||||
msgid "Unnamed Folder"
|
||||
msgstr "پوشهٔ بینام"
|
||||
|
||||
@ -955,12 +922,8 @@ msgid "“%s” is not responding."
|
||||
msgstr "«%s» پاسخگو نیست."
|
||||
|
||||
#: js/ui/closeDialog.js:43
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the application to "
|
||||
"quit entirely."
|
||||
msgstr ""
|
||||
"ممکن است بخواهید مدت کوتاهی منتظر مانده تا ادامه دهد یا برنامه را مجبور به خروج "
|
||||
"کامل کنید."
|
||||
msgid "You may choose to wait a short while for it to continue or force the application to quit entirely."
|
||||
msgstr "ممکن است بخواهید مدت کوتاهی منتظر مانده تا ادامه دهد یا برنامه را مجبور به خروج کامل کنید."
|
||||
|
||||
#: js/ui/closeDialog.js:70
|
||||
msgid "Force Quit"
|
||||
@ -995,8 +958,8 @@ msgstr "گشودن با %s"
|
||||
msgid "Alternatively you can connect by pushing the “WPS” button on your router."
|
||||
msgstr "به عنوان جایگزین میتوانید با فشردن دکمهٔ WPS روی مسیریابتان، وصل شوید."
|
||||
|
||||
#: 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/components/networkAgent.js:104 js/ui/status/network.js:258 js/ui/status/network.js:349
|
||||
#: js/ui/status/network.js:981
|
||||
msgid "Connect"
|
||||
msgstr "اتّصال"
|
||||
|
||||
@ -1016,8 +979,8 @@ msgstr "شناسه"
|
||||
msgid "Service"
|
||||
msgstr "خدمت"
|
||||
|
||||
#: 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:317 js/ui/components/networkAgent.js:345 js/ui/components/networkAgent.js:679
|
||||
#: js/ui/components/networkAgent.js:700
|
||||
msgid "Authentication required"
|
||||
msgstr "نیاز به تأیید هویت است"
|
||||
|
||||
@ -1050,9 +1013,8 @@ msgstr "رمز پین برای دستگاه پهنباند همراه لاز
|
||||
msgid "PIN"
|
||||
msgstr "پین"
|
||||
|
||||
#: 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:705
|
||||
#: 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:705
|
||||
#, javascript-format
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "برای اتّصال به «%s» گذرواژه لازم است."
|
||||
@ -1271,14 +1233,9 @@ msgstr "راهاندازی دوباره و نصب بهروز رسانی
|
||||
#: js/ui/endSessionDialog.js:104
|
||||
#, javascript-format
|
||||
msgid "The system will automatically restart and install updates in %d second."
|
||||
msgid_plural ""
|
||||
"The system will automatically restart and install updates in %d seconds."
|
||||
msgstr[0] ""
|
||||
"سامانه پس از %Id ثانیه به طور خودکار دوباره راهاندازی میشود و بهروز رسانیها را نصب "
|
||||
"میکند."
|
||||
msgstr[1] ""
|
||||
"سامانه پس از %Id ثانیه به طور خودکار دوبارها راهاندازی میشود و بهروز رسانیها را نصب "
|
||||
"میکند."
|
||||
msgid_plural "The system will automatically restart and install updates in %d seconds."
|
||||
msgstr[0] "سامانه پس از %Id ثانیه به طور خودکار دوباره راهاندازی میشود و بهروز رسانیها را نصب میکند."
|
||||
msgstr[1] "سامانه پس از %Id ثانیه به طور خودکار دوبارها راهاندازی میشود و بهروز رسانیها را نصب میکند."
|
||||
|
||||
#: js/ui/endSessionDialog.js:111 js/ui/endSessionDialog.js:132
|
||||
msgctxt "button"
|
||||
@ -1306,11 +1263,11 @@ msgstr "راهاندازی دوباره و نصب ارتقا"
|
||||
#: js/ui/endSessionDialog.js:126
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"%s %s will be installed after restart. Upgrade installation can take a long time: "
|
||||
"ensure that you have backed up and that the computer is plugged in."
|
||||
"%s %s will be installed after restart. Upgrade installation can take a long time: ensure that you have backed up and "
|
||||
"that the computer is plugged in."
|
||||
msgstr ""
|
||||
"پس از راهاندازی دوباره %s %s نصب خواهد شد. نصب ارتقا ممکن است زمان زیادی طول بکشد: "
|
||||
"مطمئن شوید که پشتیبان دارید و رایانه به برق وصل است."
|
||||
"پس از راهاندازی دوباره %s %s نصب خواهد شد. نصب ارتقا ممکن است زمان زیادی طول بکشد: مطمئن شوید که پشتیبان دارید و "
|
||||
"رایانه به برق وصل است."
|
||||
|
||||
#: js/ui/endSessionDialog.js:284
|
||||
msgid "Low battery power: please plug in before installing updates."
|
||||
@ -1354,11 +1311,11 @@ msgstr "نصب افزونه"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "بارگیری و نصب «%s» از extensions.gnome.org؟"
|
||||
|
||||
#: js/ui/extensionSystem.js:266
|
||||
#: js/ui/extensionSystem.js:252
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "بهروز رسانیهای افزونه موجودند"
|
||||
|
||||
#: js/ui/extensionSystem.js:267
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "بهروز رسانیهای افزونهها آمادهٔ نصبند."
|
||||
|
||||
@ -1400,11 +1357,10 @@ msgstr "کلیدهای آهسته خاموش شدند"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:34
|
||||
msgid ""
|
||||
"You just held down the Shift key for 8 seconds. This is the shortcut for the Slow "
|
||||
"Keys feature, which affects the way your keyboard works."
|
||||
"You just held down the Shift key for 8 seconds. This is the shortcut for the Slow Keys feature, which affects the way "
|
||||
"your keyboard works."
|
||||
msgstr ""
|
||||
"دکمهٔ تبدیل را ۸ ثانیه نگه داشتید. این میانبری برای ویژگی دکمههای آهسته است که بر "
|
||||
"نحوهٔ کار صفحهکلیدتان اثر میگذارد."
|
||||
"دکمهٔ تبدیل را ۸ ثانیه نگه داشتید. این میانبری برای ویژگی دکمههای آهسته است که بر نحوهٔ کار صفحهکلیدتان اثر میگذارد."
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:40
|
||||
msgid "Sticky Keys Turned On"
|
||||
@ -1416,33 +1372,30 @@ msgstr "کلیدهای چسبان خاموش شدند"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:43
|
||||
msgid ""
|
||||
"You just pressed the Shift key 5 times in a row. This is the shortcut for the "
|
||||
"Sticky Keys feature, which affects the way your keyboard works."
|
||||
"You just pressed the Shift key 5 times in a row. This is the shortcut for the Sticky Keys feature, which affects the "
|
||||
"way your keyboard works."
|
||||
msgstr ""
|
||||
"کلید تبدیل را ۵ بار پشت سر هم زدید. این میانبری برای ویژگی کلیدهای چسبان است که بر "
|
||||
"نحوهٔ کار صفحهکلیدتان اثر میگذارد."
|
||||
"کلید تبدیل را ۵ بار پشت سر هم زدید. این میانبری برای ویژگی کلیدهای چسبان است که بر نحوهٔ کار صفحهکلیدتان اثر میگذارد."
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:45
|
||||
msgid ""
|
||||
"You just pressed two keys at once, or pressed the Shift key 5 times in a row. This "
|
||||
"turns off the Sticky Keys feature, which affects the way your keyboard works."
|
||||
"You just pressed two keys at once, or pressed the Shift key 5 times in a row. This turns off the Sticky Keys feature, "
|
||||
"which affects the way your keyboard works."
|
||||
msgstr ""
|
||||
"دو کلید را همزمان فشرده یا کلید تبدیل را ۵ بار پشت سر هم زدید. این میانبری برای "
|
||||
"ویژگی کلیدهای چسبان است که بر نحوهٔ کار صفحهکلیدتان اثر میگذارد."
|
||||
"دو کلید را همزمان فشرده یا کلید تبدیل را ۵ بار پشت سر هم زدید. این میانبری برای ویژگی کلیدهای چسبان است که بر نحوهٔ کار "
|
||||
"صفحهکلیدتان اثر میگذارد."
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:54
|
||||
msgid "Leave On"
|
||||
msgstr "روشن گذاشتن"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:54 js/ui/status/bluetooth.js:156
|
||||
#: js/ui/status/network.js:1377
|
||||
#: js/ui/kbdA11yDialog.js:54 js/ui/status/bluetooth.js:156 js/ui/status/network.js:1377
|
||||
msgid "Turn On"
|
||||
msgstr "روشن کردن"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:62 js/ui/status/bluetooth.js:156 js/ui/status/network.js:166
|
||||
#: js/ui/status/network.js:350 js/ui/status/network.js:1377
|
||||
#: js/ui/status/network.js:1489 js/ui/status/nightLight.js:41
|
||||
#: js/ui/status/rfkill.js:81 js/ui/status/rfkill.js:110
|
||||
#: js/ui/kbdA11yDialog.js:62 js/ui/status/bluetooth.js:156 js/ui/status/network.js:166 js/ui/status/network.js:350
|
||||
#: js/ui/status/network.js:1377 js/ui/status/network.js:1489 js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
|
||||
#: js/ui/status/rfkill.js:110
|
||||
msgid "Turn Off"
|
||||
msgstr "خاموش کردن"
|
||||
|
||||
@ -1508,11 +1461,10 @@ msgstr "واردشده به عنوان کاربری ممتاز"
|
||||
|
||||
#: js/ui/main.js:291
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security reasons. If "
|
||||
"possible, you should log in as a normal user."
|
||||
"Running a session as a privileged user should be avoided for security reasons. If possible, you should log in as a "
|
||||
"normal user."
|
||||
msgstr ""
|
||||
"به دلایل امنیتی باید از اجرای یک نشست به عنوان کاربری ممتاز خودداری کرد. در صورت "
|
||||
"امکان، با کاربری عادی وارد شوید."
|
||||
"به دلایل امنیتی باید از اجرای یک نشست به عنوان کاربری ممتاز خودداری کرد. در صورت امکان، با کاربری عادی وارد شوید."
|
||||
|
||||
#: js/ui/main.js:340
|
||||
msgid "Screen Lock disabled"
|
||||
@ -1709,9 +1661,7 @@ msgstr "از پروندههای کلید استفاده میکند"
|
||||
#: js/ui/shellMountOperation.js:298
|
||||
#, javascript-format
|
||||
msgid "To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead."
|
||||
msgstr ""
|
||||
"برای قفلگشایی حجمی که از پروندههای کلید استفاده میکند، از ابزار <i>%s</i> استفاده "
|
||||
"کنید."
|
||||
msgstr "برای قفلگشایی حجمی که از پروندههای کلید استفاده میکند، از ابزار <i>%s</i> استفاده کنید."
|
||||
|
||||
#: js/ui/shellMountOperation.js:306
|
||||
msgid "PIM Number"
|
||||
@ -2212,12 +2162,8 @@ msgid "Unknown Thunderbolt device"
|
||||
msgstr "افزارهٔ تاندربولت ناشناخته"
|
||||
|
||||
#: js/ui/status/thunderbolt.js:325
|
||||
msgid ""
|
||||
"New device has been detected while you were away. Please disconnect and reconnect "
|
||||
"the device to start using it."
|
||||
msgstr ""
|
||||
"هنگام نبودنتان، افزارهٔ جدید شناسایی شد. لطفاً برای شروع به استفاده از آن، قطعش کرده "
|
||||
"و دوباره وصل کنید."
|
||||
msgid "New device has been detected while you were away. Please disconnect and reconnect the device to start using it."
|
||||
msgstr "هنگام نبودنتان، افزارهٔ جدید شناسایی شد. لطفاً برای شروع به استفاده از آن، قطعش کرده و دوباره وصل کنید."
|
||||
|
||||
#: js/ui/status/thunderbolt.js:328
|
||||
msgid "Unauthorized Thunderbolt device"
|
||||
@ -2457,8 +2403,7 @@ msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "محاوره تأیید هویت از طرف کاربر رد شد"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: subprojects/extensions-app/js/main.js:217
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4 subprojects/extensions-app/js/main.js:217
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:56
|
||||
msgid "Extensions"
|
||||
msgstr "افزونهها"
|
||||
@ -2474,11 +2419,9 @@ msgstr "پروژهٔ گنوم"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:36
|
||||
msgid ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension preferences and "
|
||||
"removing or disabling unwanted extensions."
|
||||
msgstr ""
|
||||
"افزونههای گنوم؛ بهروز رسانی، پیکربندی، برداشتن یا از کار انداختن افزونهها را مدیریت "
|
||||
"میکند."
|
||||
"GNOME Extensions handles updating extensions, configuring extension preferences and removing or disabling unwanted "
|
||||
"extensions."
|
||||
msgstr "افزونههای گنوم؛ بهروز رسانی، پیکربندی، برداشتن یا از کار انداختن افزونهها را مدیریت میکند."
|
||||
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
@ -2494,9 +2437,7 @@ msgid "Remove “%s”?"
|
||||
msgstr "برداشتن «%s»؟"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:180
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want to "
|
||||
"enable it again"
|
||||
msgid "If you remove the extension, you need to return to download it if you want to enable it again"
|
||||
msgstr "اگر افزونه را بردارید، باید برای به کار انداختن دوبارهاش، بارگیریش کنید"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:184
|
||||
@ -2524,14 +2465,12 @@ msgstr "افزونه با نگارش جاری گنوم ناسازگار است"
|
||||
msgid "The extension had an error"
|
||||
msgstr "افزونه خطایی داشت"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:83
|
||||
#: subprojects/extensions-tool/src/command-create.c:322
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:83 subprojects/extensions-tool/src/command-create.c:322
|
||||
#: subprojects/extensions-tool/src/main.c:241
|
||||
msgid "Description"
|
||||
msgstr "شرح"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:104
|
||||
#: subprojects/extensions-tool/src/main.c:253
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:104 subprojects/extensions-tool/src/main.c:253
|
||||
msgid "Version"
|
||||
msgstr "نگارش"
|
||||
|
||||
@ -2556,12 +2495,8 @@ msgid "About Extensions"
|
||||
msgstr "دربارهٔ افزونهها"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"برای یافتن و افزودن افزونهها، <a href=\"https://extensions.gnome.org\">پایگاه "
|
||||
"افزونههای گنوم</a> را ببینید."
|
||||
msgid "To find and add extensions, visit <a href=\"https://extensions.gnome.org\">extensions.gnome.org</a>."
|
||||
msgstr "برای یافتن و افزودن افزونهها، <a href=\"https://extensions.gnome.org\">پایگاه افزونههای گنوم</a> را ببینید."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:34
|
||||
msgid "Warning"
|
||||
@ -2569,11 +2504,11 @@ msgstr "هشدار"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:44
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all extensions."
|
||||
"Extensions can cause system issues, including performance problems. If you encounter problems with your system, it is "
|
||||
"recommended to disable all extensions."
|
||||
msgstr ""
|
||||
"افزونهها میتوانند موجب اشکالهای سامانهای مانند مشکلات اجرایی شوند. اگر با مشکلاتی "
|
||||
"روی سامانهتان مواجه شدید، پیشنهاد میشود تمام افزونهها را از کار بندازید."
|
||||
"افزونهها میتوانند موجب اشکالهای سامانهای مانند مشکلات اجرایی شوند. اگر با مشکلاتی روی سامانهتان مواجه شدید، پیشنهاد "
|
||||
"میشود تمام افزونهها را از کار بندازید."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:150
|
||||
msgid "Manually Installed"
|
||||
@ -2589,11 +2524,9 @@ msgstr "هیچ افزونهای نصب نشده"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:252
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed extensions. "
|
||||
"Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"متأسفیم، ولی امکان گرفتن فهرست افزونههای نصبشده نبود. مطمئن شوید که به گنوم وارد "
|
||||
"شدهاید و دوباره تلاش کنید."
|
||||
"We’re very sorry, but it was not possible to get the list of installed extensions. Make sure you are logged into GNOME "
|
||||
"and try again."
|
||||
msgstr "متأسفیم، ولی امکان گرفتن فهرست افزونههای نصبشده نبود. مطمئن شوید که به گنوم وارد شدهاید و دوباره تلاش کنید."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
|
||||
msgid "Extension Updates Ready"
|
||||
@ -2618,8 +2551,7 @@ msgstr ""
|
||||
"نام باید رشتهای بسیار کوتاه و توصیفی باشد.\n"
|
||||
"مانند: %s"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-create.c:302
|
||||
#: subprojects/extensions-tool/src/main.c:238
|
||||
#: subprojects/extensions-tool/src/command-create.c:302 subprojects/extensions-tool/src/main.c:238
|
||||
msgid "Name"
|
||||
msgstr "نام"
|
||||
|
||||
@ -2635,8 +2567,7 @@ msgstr ""
|
||||
#: subprojects/extensions-tool/src/command-create.c:336
|
||||
msgid ""
|
||||
"UUID is a globally-unique identifier for your extension.\n"
|
||||
"This should be in the format of an email address (clicktofocus@janedoe.example."
|
||||
"com)\n"
|
||||
"This should be in the format of an email address (clicktofocus@janedoe.example.com)\n"
|
||||
msgstr ""
|
||||
"شناسهٔ یکتا، شناسهٔ بیتکراری برای افزونهتان است.\n"
|
||||
"این شناسه باید در قالب یک نشانی رایانامه باشد (clicktofocus@janedoe.example.com)\n"
|
||||
@ -2685,8 +2616,7 @@ msgstr "اطّلاعات افزونه را به صورت تعاملی وارد
|
||||
msgid "Create a new extension"
|
||||
msgstr "ایجاد افزونهای جدید"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-create.c:476
|
||||
#: subprojects/extensions-tool/src/command-list.c:172
|
||||
#: subprojects/extensions-tool/src/command-create.c:476 subprojects/extensions-tool/src/command-list.c:172
|
||||
msgid "Unknown arguments"
|
||||
msgstr "آرگومان ناشناخته"
|
||||
|
||||
@ -2694,16 +2624,12 @@ msgstr "آرگومان ناشناخته"
|
||||
msgid "UUID, name and description are required"
|
||||
msgstr "شناسهٔ یکتا، نام و شرح مورد نیازند"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-disable.c:46
|
||||
#: subprojects/extensions-tool/src/command-enable.c:46
|
||||
#: subprojects/extensions-tool/src/command-info.c:50
|
||||
#: subprojects/extensions-tool/src/command-list.c:64
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
#: subprojects/extensions-tool/src/command-disable.c:46 subprojects/extensions-tool/src/command-enable.c:46
|
||||
#: subprojects/extensions-tool/src/command-info.c:50 subprojects/extensions-tool/src/command-list.c:64
|
||||
msgid "Failed to connect to GNOME Shell\n"
|
||||
msgstr "شکست در وصل شدن به پوستهٔ گنوم\n"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-disable.c:53
|
||||
#: subprojects/extensions-tool/src/command-enable.c:53
|
||||
#: subprojects/extensions-tool/src/command-disable.c:53 subprojects/extensions-tool/src/command-enable.c:53
|
||||
#, c-format
|
||||
msgid "Extension “%s” does not exist\n"
|
||||
msgstr "افزونهٔ «%s» وجود ندارد\n"
|
||||
@ -2712,21 +2638,15 @@ msgstr "افزونهٔ «%s» وجود ندارد\n"
|
||||
msgid "Disable an extension"
|
||||
msgstr "از کار انداختن یک افزونه"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-disable.c:119
|
||||
#: subprojects/extensions-tool/src/command-enable.c:119
|
||||
#: subprojects/extensions-tool/src/command-info.c:103
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:105
|
||||
#: subprojects/extensions-tool/src/command-reset.c:76
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:104
|
||||
#: subprojects/extensions-tool/src/command-disable.c:119 subprojects/extensions-tool/src/command-enable.c:119
|
||||
#: subprojects/extensions-tool/src/command-info.c:103 subprojects/extensions-tool/src/command-prefs.c:97
|
||||
#: subprojects/extensions-tool/src/command-reset.c:76 subprojects/extensions-tool/src/command-uninstall.c:104
|
||||
msgid "No UUID given"
|
||||
msgstr "هیچ شناسهٔ یکتایی داده نشده"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-disable.c:124
|
||||
#: subprojects/extensions-tool/src/command-enable.c:124
|
||||
#: subprojects/extensions-tool/src/command-info.c:108
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:110
|
||||
#: subprojects/extensions-tool/src/command-reset.c:81
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:109
|
||||
#: subprojects/extensions-tool/src/command-disable.c:124 subprojects/extensions-tool/src/command-enable.c:124
|
||||
#: subprojects/extensions-tool/src/command-info.c:108 subprojects/extensions-tool/src/command-prefs.c:102
|
||||
#: subprojects/extensions-tool/src/command-reset.c:81 subprojects/extensions-tool/src/command-uninstall.c:109
|
||||
msgid "More than one UUID given"
|
||||
msgstr "بیش از یک شناسهٔ یکتا داده شده"
|
||||
|
||||
@ -2734,8 +2654,7 @@ msgstr "بیش از یک شناسهٔ یکتا داده شده"
|
||||
msgid "Enable an extension"
|
||||
msgstr "به کار انداختن یک افزونه"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-info.c:59
|
||||
#: subprojects/extensions-tool/src/main.c:155
|
||||
#: subprojects/extensions-tool/src/command-info.c:59 subprojects/extensions-tool/src/main.c:155
|
||||
#, c-format
|
||||
msgid "Extension “%s” doesn't exist\n"
|
||||
msgstr "افزونهٔ «%s» وجود ندارد\n"
|
||||
@ -2812,8 +2731,7 @@ msgstr "SCHEMA"
|
||||
msgid "A GSettings schema that should be included"
|
||||
msgstr "یک شمای Gsettings که باید شامل شود"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-pack.c:457
|
||||
#: subprojects/extensions-tool/src/command-pack.c:468
|
||||
#: subprojects/extensions-tool/src/command-pack.c:457 subprojects/extensions-tool/src/command-pack.c:468
|
||||
msgid "DIRECTORY"
|
||||
msgstr "DIRECTORY"
|
||||
|
||||
@ -2854,12 +2772,7 @@ msgstr "بیش از یک شاخهٔ منبع مشخّص شده است"
|
||||
msgid "Extension “%s” doesn't have preferences\n"
|
||||
msgstr "افزونهٔ «%s» ترجیحات ندارد\n"
|
||||
|
||||
#: 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
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:79
|
||||
msgid "Opens extension preferences"
|
||||
msgstr "ترجیحات افزونه را میگشاید"
|
||||
|
||||
@ -2884,6 +2797,10 @@ msgstr "حذف نصب یک افزونه"
|
||||
msgid "Do not print error messages"
|
||||
msgstr "چاپ نکردن پیامهای خطا"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell"
|
||||
msgstr "شکست در وصل شدن به پوستهٔ گنوم"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:244
|
||||
msgid "Path"
|
||||
msgstr "مسیر"
|
||||
@ -2904,8 +2821,7 @@ msgstr "وضعیت"
|
||||
msgid "“version” takes no arguments"
|
||||
msgstr "«version» آرگومانی نمیگیرد"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:292
|
||||
#: subprojects/extensions-tool/src/main.c:312
|
||||
#: subprojects/extensions-tool/src/main.c:292 subprojects/extensions-tool/src/main.c:312
|
||||
msgid "Usage:"
|
||||
msgstr "استفاده:"
|
||||
|
||||
@ -2913,8 +2829,7 @@ msgstr "استفاده:"
|
||||
msgid "Print version information and exit."
|
||||
msgstr "چاپ اطّلاعات نگارش و خروج."
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:310
|
||||
#: subprojects/extensions-tool/src/main.c:313
|
||||
#: subprojects/extensions-tool/src/main.c:310 subprojects/extensions-tool/src/main.c:313
|
||||
msgid "COMMAND"
|
||||
msgstr "COMMAND"
|
||||
|
||||
@ -2950,8 +2865,7 @@ msgstr "حذف نصب افزونه"
|
||||
msgid "List extensions"
|
||||
msgstr "فهرست افزونهها"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:323
|
||||
#: subprojects/extensions-tool/src/main.c:324
|
||||
#: subprojects/extensions-tool/src/main.c:323 subprojects/extensions-tool/src/main.c:324
|
||||
msgid "Show extension info"
|
||||
msgstr "نمایش اطّلاعات افزونه"
|
||||
|
||||
@ -3014,17 +2928,11 @@ msgstr[1] "%Iu ورودی"
|
||||
msgid "System Sounds"
|
||||
msgstr "صداهای سامانه"
|
||||
|
||||
#~ msgid "Failed to connect to GNOME Shell"
|
||||
#~ msgstr "شکست در وصل شدن به پوستهٔ گنوم"
|
||||
|
||||
#~ msgid "Enable introspection API"
|
||||
#~ msgstr "به کار انداختن رابط برنامهنویسی دروننگر"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Enables a D-Bus API that allows to introspect the application state of the shell."
|
||||
#~ msgstr ""
|
||||
#~ "رابط برنامهنویسی دیباسی را به کار میاندازد که اجازهٔ دروننگری وضعیت برنامهٔ پوسته "
|
||||
#~ "را میدهد."
|
||||
#~ msgid "Enables a D-Bus API that allows to introspect the application state of the shell."
|
||||
#~ msgstr "رابط برنامهنویسی دیباسی را به کار میاندازد که اجازهٔ دروننگری وضعیت برنامهٔ پوسته را میدهد."
|
||||
|
||||
#~ msgid "Minimize"
|
||||
#~ msgstr "کمینه کردن"
|
||||
@ -3114,11 +3022,8 @@ msgstr "صداهای سامانه"
|
||||
#~ msgid "Orientation Lock"
|
||||
#~ msgstr "قفل جهت"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
||||
#~ msgstr ""
|
||||
#~ "کلیدهای مقید برای مکث کردن و اجرا کردن تمام دوغلوهای در حال اجرا، برای مصارف رفع "
|
||||
#~ "اشکال"
|
||||
#~ msgid "Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
||||
#~ msgstr "کلیدهای مقید برای مکث کردن و اجرا کردن تمام دوغلوهای در حال اجرا، برای مصارف رفع اشکال"
|
||||
|
||||
#~ msgid "Which keyboard to use"
|
||||
#~ msgstr "استفاده از کدام صفحهکلید"
|
||||
@ -3361,15 +3266,13 @@ msgstr "صداهای سامانه"
|
||||
#~ msgstr "گواهینامه لغو شده است"
|
||||
|
||||
#~ msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
#~ msgstr ""
|
||||
#~ "گواهینامه از الگوریتم رمزی نامطمئنی استفاده میکند یا از نظر cryptography ضعیف است"
|
||||
#~ msgstr "گواهینامه از الگوریتم رمزی نامطمئنی استفاده میکند یا از نظر cryptography ضعیف است"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "The length of the server certificate, or the depth of the server certificate "
|
||||
#~ "chain, exceed the limits imposed by the cryptography library"
|
||||
#~ "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by "
|
||||
#~ "the cryptography library"
|
||||
#~ msgstr ""
|
||||
#~ "اندازه گواهینامه کارگزار، یا عمق حلقهی گواهینامه کارگزار، از محدودیت اعمال شده "
|
||||
#~ "توسط کتابخانه cryptography تجاوز کرد"
|
||||
#~ "اندازه گواهینامه کارگزار، یا عمق حلقهی گواهینامه کارگزار، از محدودیت اعمال شده توسط کتابخانه cryptography تجاوز کرد"
|
||||
|
||||
#~ msgid "Internal error"
|
||||
#~ msgstr "خطای داخلی"
|
||||
@ -3416,21 +3319,17 @@ msgstr "صداهای سامانه"
|
||||
#~ msgstr "فهرست دستههایی که باید به شکل پوشه نمایش داده شوند"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Each category name in this list will be represented as folder in the application "
|
||||
#~ "view, rather than being displayed inline in the main view."
|
||||
#~ "Each category name in this list will be represented as folder in the application view, rather than being displayed "
|
||||
#~ "inline in the main view."
|
||||
#~ msgstr ""
|
||||
#~ "هر نام دسته در این فهرست، بجای اینکه پشت سر هم در نمای اصلی نمایش داده شود، "
|
||||
#~ "بهعنوان پوشه در نمای برنامهها نشان داده میشود."
|
||||
#~ "هر نام دسته در این فهرست، بجای اینکه پشت سر هم در نمای اصلی نمایش داده شود، بهعنوان پوشه در نمای برنامهها نشان داده "
|
||||
#~ "میشود."
|
||||
|
||||
#~ msgid "Arrangement of buttons on the titlebar"
|
||||
#~ msgstr "چیدمان دکمهها در نوار عنوان"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when running "
|
||||
#~ "GNOME Shell."
|
||||
#~ msgstr ""
|
||||
#~ "این کلید، کلید org.gnome.desktop.wm.preferences را در زمان اجرای گنومشل بازنویسی "
|
||||
#~ "میکند."
|
||||
#~ msgid "This key overrides the key in org.gnome.desktop.wm.preferences when running GNOME Shell."
|
||||
#~ msgstr "این کلید، کلید org.gnome.desktop.wm.preferences را در زمان اجرای گنومشل بازنویسی میکند."
|
||||
|
||||
#~ msgid "Select an extension to configure using the combobox above."
|
||||
#~ msgstr "با استفاده از جعبهی بالا یک افزونه برای پیکربندی انتخاب کنید."
|
||||
@ -3466,9 +3365,7 @@ msgstr "صداهای سامانه"
|
||||
#~ msgstr "تایید جهت جفتشدن با %s"
|
||||
|
||||
#~ msgid "Please confirm whether the Passkey '%06d' matches the one on the device."
|
||||
#~ msgstr ""
|
||||
#~ "لطفا تایید کنید که آیا کلید عبور مربوط به «%I06d» با همتای آن در دستگاه مطابقت "
|
||||
#~ "دارد یا خیر."
|
||||
#~ msgstr "لطفا تایید کنید که آیا کلید عبور مربوط به «%I06d» با همتای آن در دستگاه مطابقت دارد یا خیر."
|
||||
|
||||
#~ msgid "Does not match"
|
||||
#~ msgstr "منطبق نیست"
|
||||
@ -3502,29 +3399,27 @@ msgstr "صداهای سامانه"
|
||||
#~ msgstr "اینکه اطلاعات برنامهها دربارهی میزان استفاده از منابع جمعآوری شود یا خیر"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "The shell normally monitors active applications in order to present the most "
|
||||
#~ "used ones (e.g. in launchers). While this data will be kept private, you may "
|
||||
#~ "want to disable this for privacy reasons. Please note that doing so won't remove "
|
||||
#~ "already saved data."
|
||||
#~ "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While "
|
||||
#~ "this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't "
|
||||
#~ "remove already saved data."
|
||||
#~ msgstr ""
|
||||
#~ "پوسته گنوم در حالت عادی برنامههای فعال را جهت ارائه برنامههای بیشتر استفاده شده "
|
||||
#~ "پایش می کند. (برای مثال در اجرا کنندهها). با اینکه که این اطلاعات به صورت خصوصی "
|
||||
#~ "نگاهداری میشود، ممکن است شما بخواهید این امکان را به دلایل امنیتی غیرفعال کنید. "
|
||||
#~ "لطفا توجه کنید این کار باعث پاک شدن اطلاعاتی که تاکنون ذخیره شدهاند نمیشود."
|
||||
#~ "پوسته گنوم در حالت عادی برنامههای فعال را جهت ارائه برنامههای بیشتر استفاده شده پایش می کند. (برای مثال در اجرا "
|
||||
#~ "کنندهها). با اینکه که این اطلاعات به صورت خصوصی نگاهداری میشود، ممکن است شما بخواهید این امکان را به دلایل امنیتی "
|
||||
#~ "غیرفعال کنید. لطفا توجه کنید این کار باعث پاک شدن اطلاعاتی که تاکنون ذخیره شدهاند نمیشود."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Internally used to store the last IM presence explicitly set by the user. The "
|
||||
#~ "value here is from the TpConnectionPresenceType enumeration."
|
||||
#~ "Internally used to store the last IM presence explicitly set by the user. The value here is from the "
|
||||
#~ "TpConnectionPresenceType enumeration."
|
||||
#~ msgstr ""
|
||||
#~ "بهطور داخلی جهت ذخیرهی آخرین وضعیتِ حاضرِ ثبت شدهی توسط کاربر استفاده میشود. مقدار "
|
||||
#~ "اینجا از محل محاسبهی TpConnectionPresenceType است."
|
||||
#~ "بهطور داخلی جهت ذخیرهی آخرین وضعیتِ حاضرِ ثبت شدهی توسط کاربر استفاده میشود. مقدار اینجا از محل محاسبهی "
|
||||
#~ "TpConnectionPresenceType است."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Internally used to store the last session presence status for the user. The "
|
||||
#~ "value here is from the GsmPresenceStatus enumeration."
|
||||
#~ "Internally used to store the last session presence status for the user. The value here is from the "
|
||||
#~ "GsmPresenceStatus enumeration."
|
||||
#~ msgstr ""
|
||||
#~ "بهطور داخلی برای ذخیره آخرین نشستی که کاربر در آن وضعیت حاضر داشته است استفاده "
|
||||
#~ "میشود. مقدار اینجا از محاسبه GsmPresenceStatus است."
|
||||
#~ "بهطور داخلی برای ذخیره آخرین نشستی که کاربر در آن وضعیت حاضر داشته است استفاده میشود. مقدار اینجا از محاسبه "
|
||||
#~ "GsmPresenceStatus است."
|
||||
|
||||
#~ msgid "Keybinding to toggle the screen recorder"
|
||||
#~ msgstr "کلید مقید برای تغییر وضعیت ضبط کنندهی صفحه"
|
||||
@ -3536,49 +3431,38 @@ msgstr "صداهای سامانه"
|
||||
#~ msgstr "سرعت فریم استفاده شده در تصویربرداری از صفحهنمایش."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "The framerate of the resulting screencast recordered by GNOME Shell's screencast "
|
||||
#~ "recorder in frames-per-second."
|
||||
#~ msgstr ""
|
||||
#~ "سرعت فریم حاصل از تصویربرداری از صفحه نمایش با استفاده از ضبط کننده نمایشگر "
|
||||
#~ "پوستهی گنوم بر اساس فریم بر ثانیه"
|
||||
#~ "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
||||
#~ msgstr "سرعت فریم حاصل از تصویربرداری از صفحه نمایش با استفاده از ضبط کننده نمایشگر پوستهی گنوم بر اساس فریم بر ثانیه"
|
||||
|
||||
#~ msgid "The gstreamer pipeline used to encode the screencast"
|
||||
#~ msgstr "مجرای ارتباطی gstreamer برای کدگذاری تصویربرداری از صفحه نمایش"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
#~ "used for gst-launch. The pipeline should have an unconnected sink pad where the "
|
||||
#~ "recorded video is recorded. It will normally have a unconnected source pad; "
|
||||
#~ "output from that pad will be written into the output file. However the pipeline "
|
||||
#~ "can also take care of its own output - this might be used to send the output to "
|
||||
#~ "an icecast server via shout2send or similar. When unset or set to an empty "
|
||||
#~ "value, the default pipeline will be used. This is currently 'vp8enc "
|
||||
#~ "min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! "
|
||||
#~ "queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a "
|
||||
#~ "placeholder for a guess at the optimal thread count on the system."
|
||||
#~ "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline "
|
||||
#~ "should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected "
|
||||
#~ "source pad; output from that pad will be written into the output file. However the pipeline can also take care of "
|
||||
#~ "its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset "
|
||||
#~ "or set to an empty value, the default pipeline will be used. This is currently 'vp8enc min_quantizer=13 "
|
||||
#~ "max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. "
|
||||
#~ "%T is used as a placeholder for a guess at the optimal thread count on the system."
|
||||
#~ msgstr ""
|
||||
#~ "Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
#~ "used for gst-launch. The pipeline should have an unconnected sink pad where the "
|
||||
#~ "recorded video is recorded. It will normally have a unconnected source pad; "
|
||||
#~ "output from that pad will be written into the output file. However the pipeline "
|
||||
#~ "can also take care of its own output - this might be used to send the output to "
|
||||
#~ "an icecast server via shout2send or similar. When unset or set to an empty "
|
||||
#~ "value, the default pipeline will be used. This is currently 'vp8enc "
|
||||
#~ "min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! "
|
||||
#~ "queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a "
|
||||
#~ "placeholder for a guess at the optimal thread count on the system."
|
||||
#~ "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline "
|
||||
#~ "should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected "
|
||||
#~ "source pad; output from that pad will be written into the output file. However the pipeline can also take care of "
|
||||
#~ "its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset "
|
||||
#~ "or set to an empty value, the default pipeline will be used. This is currently 'vp8enc min_quantizer=13 "
|
||||
#~ "max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. "
|
||||
#~ "%T is used as a placeholder for a guess at the optimal thread count on the system."
|
||||
|
||||
#~ msgid "File extension used for storing the screencast"
|
||||
#~ msgstr "پسوند پروندهی قابل استفاده برای ذخیره تصویربرداری از صفحهنمایش"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "The filename for recorded screencasts will be a unique filename based on the "
|
||||
#~ "current date, and use this extension. It should be changed when recording to a "
|
||||
#~ "different container format."
|
||||
#~ "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. "
|
||||
#~ "It should be changed when recording to a different container format."
|
||||
#~ msgstr ""
|
||||
#~ "نام پروندهی ضبط شده برای تصویربرداری از صفحهنمایش یکتا و براساس تاریخ جاری خواهد "
|
||||
#~ "بود و از این افزونه استفاده خواهد کرد. اگر در زمان ضبط از قالب دیگری استفاده "
|
||||
#~ "کنید باید تغییر کند."
|
||||
#~ "نام پروندهی ضبط شده برای تصویربرداری از صفحهنمایش یکتا و براساس تاریخ جاری خواهد بود و از این افزونه استفاده خواهد "
|
||||
#~ "کرد. اگر در زمان ضبط از قالب دیگری استفاده کنید باید تغییر کند."
|
||||
|
||||
#~| msgid "Session..."
|
||||
#~ msgid "Session…"
|
||||
@ -3599,8 +3483,7 @@ msgstr "صداهای سامانه"
|
||||
#~ msgstr "ویدئو صفحهنمایش %Id %t"
|
||||
|
||||
#~ msgid "Click Log Out to quit these applications and log out of the system."
|
||||
#~ msgstr ""
|
||||
#~ "بر روی خروج از سیستم کلیک کنید تا از این برنامهها خارج و از سیستم خارج شوید."
|
||||
#~ msgstr "بر روی خروج از سیستم کلیک کنید تا از این برنامهها خارج و از سیستم خارج شوید."
|
||||
|
||||
#~ msgid "Logging out of the system."
|
||||
#~ msgstr "درحال خروج از سیستم."
|
||||
@ -3612,9 +3495,7 @@ msgstr "صداهای سامانه"
|
||||
#~ msgstr "درحال خاموش کردن سیستم."
|
||||
|
||||
#~ msgid "Click Restart to quit these applications and restart the system."
|
||||
#~ msgstr ""
|
||||
#~ "بر روی راهاندازی مجدد کلیک کنید تا از این برنامهها خارج و سیستم مجددا راهاندازی "
|
||||
#~ "گردد."
|
||||
#~ msgstr "بر روی راهاندازی مجدد کلیک کنید تا از این برنامهها خارج و سیستم مجددا راهاندازی گردد."
|
||||
|
||||
#~ msgid "Restarting the system."
|
||||
#~ msgstr "درحال راهاندازی مجدد سیستم."
|
||||
@ -3742,11 +3623,11 @@ msgstr "صداهای سامانه"
|
||||
#~ msgstr "وضعیت گپ شما «مشغول» تنظیم میشود"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Notifications are now disabled, including chat messages. Your online status has "
|
||||
#~ "been adjusted to let others know that you might not see their messages."
|
||||
#~ "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know "
|
||||
#~ "that you might not see their messages."
|
||||
#~ msgstr ""
|
||||
#~ "هماکنون اعلانها، از جمله پیامهای گپ، غیرفعال هستند. وضعیتِ برخطِ شما به گونهای "
|
||||
#~ "تنظیم شده است که به دیگران نشان دهد ممکن است شما پیامهایشان را نبینید."
|
||||
#~ "هماکنون اعلانها، از جمله پیامهای گپ، غیرفعال هستند. وضعیتِ برخطِ شما به گونهای تنظیم شده است که به دیگران نشان دهد "
|
||||
#~ "ممکن است شما پیامهایشان را نبینید."
|
||||
|
||||
#~ msgid "Shutting down might cause them to lose unsaved work."
|
||||
#~ msgstr "خاموشکردن ممکن است باعث شود که کارهای ذخیره نشده خود را از دست بدهند."
|
||||
|
287
po/fr.po
287
po/fr.po
@ -23,8 +23,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master fr\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2021-11-03 01:20+0000\n"
|
||||
"PO-Revision-Date: 2021-11-03 10:00+0100\n"
|
||||
"POT-Creation-Date: 2021-08-17 23:56+0000\n"
|
||||
"PO-Revision-Date: 2021-08-30 19:11+0200\n"
|
||||
"Last-Translator: Charles Monzat <charles.monzat@free.fr>\n"
|
||||
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
|
||||
"Language: fr\n"
|
||||
@ -39,38 +39,47 @@ msgid "Launchers"
|
||||
msgstr "Lanceurs"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:10
|
||||
#| msgid "Switch to application 1"
|
||||
msgid "Activate favorite application 1"
|
||||
msgstr "Activer l’application favorite 1"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:14
|
||||
#| msgid "Switch to application 2"
|
||||
msgid "Activate favorite application 2"
|
||||
msgstr "Activer l’application favorite 2"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:18
|
||||
#| msgid "Switch to application 3"
|
||||
msgid "Activate favorite application 3"
|
||||
msgstr "Activer l’application favorite 3"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:22
|
||||
#| msgid "Switch to application 4"
|
||||
msgid "Activate favorite application 4"
|
||||
msgstr "Activer l’application favorite 4"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:26
|
||||
#| msgid "Switch to application 5"
|
||||
msgid "Activate favorite application 5"
|
||||
msgstr "Activer l’application favorite 5"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:30
|
||||
#| msgid "Switch to application 6"
|
||||
msgid "Activate favorite application 6"
|
||||
msgstr "Activer l’application favorite 6"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:34
|
||||
#| msgid "Switch to application 7"
|
||||
msgid "Activate favorite application 7"
|
||||
msgstr "Activer l’application favorite 7"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:38
|
||||
#| msgid "Switch to application 8"
|
||||
msgid "Activate favorite application 8"
|
||||
msgstr "Activer l’application favorite 8"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:42
|
||||
#| msgid "Switch to application 9"
|
||||
msgid "Activate favorite application 9"
|
||||
msgstr "Activer l’application favorite 9"
|
||||
|
||||
@ -273,11 +282,22 @@ msgstr ""
|
||||
"un nombre très élevé représentera des versions qui n’existent pas encore. Ce "
|
||||
"nombre très élevé peut être utilisé pour désactiver le dialogue."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:133
|
||||
#: data/org.gnome.shell.gschema.xml.in:109
|
||||
msgid "Enable introspection API"
|
||||
msgstr "Activer l’API d’introspection"
|
||||
|
||||
#: 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 ""
|
||||
"Active l’API D-Bus, qui permet d’introspecter l’état d’application du shell."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:141
|
||||
msgid "Layout of the app picker"
|
||||
msgstr "Disposition du sélecteur d’applications"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:134
|
||||
#: data/org.gnome.shell.gschema.xml.in:142
|
||||
msgid ""
|
||||
"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 "
|
||||
@ -291,114 +311,114 @@ msgstr ""
|
||||
"stockées comme « données » : • « position » : la position de l’icône de "
|
||||
"l’application sur la page"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:149
|
||||
#: data/org.gnome.shell.gschema.xml.in:157
|
||||
msgid "Keybinding to open the application menu"
|
||||
msgstr "Combinaison de touches pour ouvrir le menu de l’application"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:150
|
||||
#: data/org.gnome.shell.gschema.xml.in:158
|
||||
msgid "Keybinding to open the application menu."
|
||||
msgstr "Combinaison de touches pour ouvrir le menu de l’application."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:156
|
||||
#: data/org.gnome.shell.gschema.xml.in:163
|
||||
#: data/org.gnome.shell.gschema.xml.in:164
|
||||
#: data/org.gnome.shell.gschema.xml.in:171
|
||||
msgid "Keybinding to shift between overview states"
|
||||
msgstr ""
|
||||
"Combinaison de touches pour basculer entre les états de la vue d’ensemble"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:157
|
||||
#: data/org.gnome.shell.gschema.xml.in:165
|
||||
msgid "Keybinding to shift between session, window picker and app grid"
|
||||
msgstr ""
|
||||
"Combinaison de touches pour basculer entre la session, le sélecteur de "
|
||||
"fenêtre et la grille des applications"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:164
|
||||
#: data/org.gnome.shell.gschema.xml.in:172
|
||||
msgid "Keybinding to shift between app grid, window picker and session"
|
||||
msgstr ""
|
||||
"Combinaison de touches pour basculer entre la grille des applications, le "
|
||||
"sélecteur de fenêtre et la session"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:170
|
||||
#: data/org.gnome.shell.gschema.xml.in:178
|
||||
msgid "Keybinding to open the “Show Applications” view"
|
||||
msgstr ""
|
||||
"Combinaison de touches pour ouvrir la vue « Afficher les applications »"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:171
|
||||
#: data/org.gnome.shell.gschema.xml.in:179
|
||||
msgid ""
|
||||
"Keybinding to open the “Show Applications” view of the Activities Overview."
|
||||
msgstr ""
|
||||
"Combinaison de touches pour ouvrir la vue « Afficher les applications » de "
|
||||
"la vue d’ensemble des activités."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:178
|
||||
#: data/org.gnome.shell.gschema.xml.in:186
|
||||
msgid "Keybinding to open the overview"
|
||||
msgstr "Combinaison de touches pour ouvrir la vue d’ensemble"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:179
|
||||
#: data/org.gnome.shell.gschema.xml.in:187
|
||||
msgid "Keybinding to open the Activities Overview."
|
||||
msgstr "Combinaison de touches pour ouvrir la vue d’ensemble des activités."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:185
|
||||
#: data/org.gnome.shell.gschema.xml.in:193
|
||||
msgid "Keybinding to toggle the visibility of the notification list"
|
||||
msgstr ""
|
||||
"Combinaison de touches pour inverser la visibilité de la liste des "
|
||||
"notifications"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:186
|
||||
#: data/org.gnome.shell.gschema.xml.in:194
|
||||
msgid "Keybinding to toggle the visibility of the notification list."
|
||||
msgstr ""
|
||||
"Combinaison de touches pour inverser la visibilité de la liste des "
|
||||
"notifications."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:192
|
||||
#: data/org.gnome.shell.gschema.xml.in:200
|
||||
msgid "Keybinding to focus the active notification"
|
||||
msgstr "Combinaison de touches pour donner le focus à la notification active"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:193
|
||||
#: data/org.gnome.shell.gschema.xml.in:201
|
||||
msgid "Keybinding to focus the active notification."
|
||||
msgstr "Combinaison de touches pour donner le focus à la notification active."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:199
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
msgid "Switch to application 1"
|
||||
msgstr "Passer à l’application 1"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:203
|
||||
#: data/org.gnome.shell.gschema.xml.in:211
|
||||
msgid "Switch to application 2"
|
||||
msgstr "Passer à l’application 2"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
msgid "Switch to application 3"
|
||||
msgstr "Passer à l’application 3"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:211
|
||||
#: data/org.gnome.shell.gschema.xml.in:219
|
||||
msgid "Switch to application 4"
|
||||
msgstr "Passer à l’application 4"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
msgid "Switch to application 5"
|
||||
msgstr "Passer à l’application 5"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:219
|
||||
#: data/org.gnome.shell.gschema.xml.in:227
|
||||
msgid "Switch to application 6"
|
||||
msgstr "Passer à l’application 6"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
msgid "Switch to application 7"
|
||||
msgstr "Passer à l’application 7"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:227
|
||||
#: data/org.gnome.shell.gschema.xml.in:235
|
||||
msgid "Switch to application 8"
|
||||
msgstr "Passer à l’application 8"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
#: data/org.gnome.shell.gschema.xml.in:239
|
||||
msgid "Switch to application 9"
|
||||
msgstr "Passer à l’application 9"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:240
|
||||
#: data/org.gnome.shell.gschema.xml.in:267
|
||||
#: data/org.gnome.shell.gschema.xml.in:248
|
||||
#: data/org.gnome.shell.gschema.xml.in:275
|
||||
msgid "Limit switcher to current workspace."
|
||||
msgstr "Limite le sélecteur de fenêtres à l’espace de travail actuel."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:241
|
||||
#: data/org.gnome.shell.gschema.xml.in:249
|
||||
msgid ""
|
||||
"If true, only applications that have windows on the current workspace are "
|
||||
"shown in the switcher. Otherwise, all applications are included."
|
||||
@ -407,11 +427,11 @@ msgstr ""
|
||||
"travail actuel sont affichées dans le sélecteur. Sinon, toutes les "
|
||||
"applications y sont incluses."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:258
|
||||
#: data/org.gnome.shell.gschema.xml.in:266
|
||||
msgid "The application icon mode."
|
||||
msgstr "Le type d’icône des applications."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:259
|
||||
#: data/org.gnome.shell.gschema.xml.in:267
|
||||
msgid ""
|
||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||
"are “thumbnail-only” (shows a thumbnail of the window), “app-icon-"
|
||||
@ -422,7 +442,7 @@ msgstr ""
|
||||
"fenêtre), « app-icon-only » (affiche uniquement l’icône de l’application), "
|
||||
"ou « both » (affiche les deux)."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:268
|
||||
#: data/org.gnome.shell.gschema.xml.in:276
|
||||
msgid ""
|
||||
"If true, only windows from the current workspace are shown in the switcher. "
|
||||
"Otherwise, all windows are included."
|
||||
@ -430,58 +450,58 @@ msgstr ""
|
||||
"Si vrai, seules les fenêtres de l’espace de travail actuel sont affichées "
|
||||
"dans le sélecteur. Sinon, toutes les fenêtres y sont incluses."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:278
|
||||
#: data/org.gnome.shell.gschema.xml.in:286
|
||||
msgid "Locations"
|
||||
msgstr "Emplacements"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:279
|
||||
#: data/org.gnome.shell.gschema.xml.in:287
|
||||
msgid "The locations to show in world clocks"
|
||||
msgstr "Les emplacements à afficher dans les horloges mondiales"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:289
|
||||
#: data/org.gnome.shell.gschema.xml.in:297
|
||||
msgid "Automatic location"
|
||||
msgstr "Emplacement automatique"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:290
|
||||
#: data/org.gnome.shell.gschema.xml.in:298
|
||||
msgid "Whether to fetch the current location or not"
|
||||
msgstr "Indique s’il faut récupérer l’emplacement actuel ou non"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:297
|
||||
#: data/org.gnome.shell.gschema.xml.in:305
|
||||
msgid "Location"
|
||||
msgstr "Emplacement"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:298
|
||||
#: data/org.gnome.shell.gschema.xml.in:306
|
||||
msgid "The location for which to show a forecast"
|
||||
msgstr "L’emplacement pour lequel afficher les prévisions"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:310
|
||||
#: data/org.gnome.shell.gschema.xml.in:318
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Attacher les dialogues modaux à leur fenêtre parente"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:311
|
||||
#: data/org.gnome.shell.gschema.xml.in:320
|
||||
#: data/org.gnome.shell.gschema.xml.in:319
|
||||
#: data/org.gnome.shell.gschema.xml.in:328
|
||||
#: data/org.gnome.shell.gschema.xml.in:336
|
||||
#: data/org.gnome.shell.gschema.xml.in:344
|
||||
#: data/org.gnome.shell.gschema.xml.in:352
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"Cette clé prend le pas sur la clé dans org.gnome.mutter lorsque Shell de "
|
||||
"GNOME est lancé."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:319
|
||||
#: data/org.gnome.shell.gschema.xml.in:327
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr "Activer l’empilage des fenêtres déposées sur les bords de l’écran"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:327
|
||||
#: data/org.gnome.shell.gschema.xml.in:335
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "Les espaces de travail sont gérés dynamiquement"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:335
|
||||
#: data/org.gnome.shell.gschema.xml.in:343
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Les espaces de travail sont uniquement sur l’écran principal"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:343
|
||||
#: data/org.gnome.shell.gschema.xml.in:351
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"Retarder les changements de focus en mode souris jusqu’à ce que le pointeur "
|
||||
@ -519,18 +539,18 @@ msgid "Visit extension homepage"
|
||||
msgstr "Visiter le site Web de l’extension"
|
||||
|
||||
#: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61
|
||||
#: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:138
|
||||
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:228
|
||||
#: js/ui/components/networkAgent.js:111 js/ui/components/polkitAgent.js:138
|
||||
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:190
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:209
|
||||
#: js/ui/components/networkAgent.js:225 js/ui/components/networkAgent.js:249
|
||||
#: js/ui/components/networkAgent.js:270 js/ui/components/networkAgent.js:290
|
||||
#: js/ui/components/networkAgent.js:300 js/ui/components/polkitAgent.js:275
|
||||
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:210
|
||||
#: js/ui/components/networkAgent.js:226 js/ui/components/networkAgent.js:250
|
||||
#: js/ui/components/networkAgent.js:271 js/ui/components/networkAgent.js:291
|
||||
#: js/ui/components/networkAgent.js:301 js/ui/components/polkitAgent.js:275
|
||||
#: js/ui/shellMountOperation.js:326
|
||||
msgid "Password"
|
||||
msgstr "Mot de passe"
|
||||
@ -553,8 +573,8 @@ msgstr "(par ex. utilisateur ou %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:245
|
||||
#: js/ui/components/networkAgent.js:268 js/ui/components/networkAgent.js:286
|
||||
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:246
|
||||
#: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:287
|
||||
msgid "Username"
|
||||
msgstr "Nom d’utilisateur"
|
||||
|
||||
@ -659,65 +679,65 @@ msgctxt "search-result"
|
||||
msgid "Lock Screen Rotation"
|
||||
msgstr "Verrouiller la rotation de l’écran"
|
||||
|
||||
#: js/misc/util.js:121
|
||||
#: js/misc/util.js:120
|
||||
msgid "Command not found"
|
||||
msgstr "Commande non trouvée"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: js/misc/util.js:157
|
||||
#: js/misc/util.js:156
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Impossible d’analyser la commande :"
|
||||
|
||||
#: js/misc/util.js:165
|
||||
#: js/misc/util.js:164
|
||||
#, javascript-format
|
||||
msgid "Execution of “%s” failed:"
|
||||
msgstr "Exécution de « %s » impossible :"
|
||||
|
||||
#: js/misc/util.js:182
|
||||
#: js/misc/util.js:181
|
||||
msgid "Just now"
|
||||
msgstr "À l’instant"
|
||||
|
||||
#: js/misc/util.js:184
|
||||
#: js/misc/util.js:183
|
||||
#, javascript-format
|
||||
msgid "%d minute ago"
|
||||
msgid_plural "%d minutes ago"
|
||||
msgstr[0] "Il y a %d minute"
|
||||
msgstr[1] "Il y a %d minutes"
|
||||
|
||||
#: js/misc/util.js:188
|
||||
#: js/misc/util.js:187
|
||||
#, javascript-format
|
||||
msgid "%d hour ago"
|
||||
msgid_plural "%d hours ago"
|
||||
msgstr[0] "Il y a %d heure"
|
||||
msgstr[1] "Il y a %d heures"
|
||||
|
||||
#: js/misc/util.js:192 js/ui/dateMenu.js:162
|
||||
#: js/misc/util.js:191 js/ui/dateMenu.js:162
|
||||
msgid "Yesterday"
|
||||
msgstr "Hier"
|
||||
|
||||
#: js/misc/util.js:194
|
||||
#: js/misc/util.js:193
|
||||
#, javascript-format
|
||||
msgid "%d day ago"
|
||||
msgid_plural "%d days ago"
|
||||
msgstr[0] "Il y a %d jour"
|
||||
msgstr[1] "Il y a %d jours"
|
||||
|
||||
#: js/misc/util.js:198
|
||||
#: js/misc/util.js:197
|
||||
#, javascript-format
|
||||
msgid "%d week ago"
|
||||
msgid_plural "%d weeks ago"
|
||||
msgstr[0] "Il y a %d semaine"
|
||||
msgstr[1] "Il y a %d semaines"
|
||||
|
||||
#: js/misc/util.js:202
|
||||
#: js/misc/util.js:201
|
||||
#, javascript-format
|
||||
msgid "%d month ago"
|
||||
msgid_plural "%d months ago"
|
||||
msgstr[0] "Il y a %d mois"
|
||||
msgstr[1] "Il y a %d mois"
|
||||
|
||||
#: js/misc/util.js:205
|
||||
#: js/misc/util.js:204
|
||||
#, javascript-format
|
||||
msgid "%d year ago"
|
||||
msgid_plural "%d years ago"
|
||||
@ -725,20 +745,20 @@ msgstr[0] "Il y a %d an"
|
||||
msgstr[1] "Il y a %d ans"
|
||||
|
||||
#. Translators: Time in 24h format
|
||||
#: js/misc/util.js:238
|
||||
#: js/misc/util.js:237
|
||||
msgid "%H∶%M"
|
||||
msgstr "%H∶%M"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 24h format. i.e. "Yesterday, 14:30"
|
||||
#: js/misc/util.js:244
|
||||
#: js/misc/util.js:243
|
||||
#, no-c-format
|
||||
msgid "Yesterday, %H∶%M"
|
||||
msgstr "Hier, %H∶%M"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 24h format. i.e. "Monday, 14:30"
|
||||
#: js/misc/util.js:250
|
||||
#: js/misc/util.js:249
|
||||
#, no-c-format
|
||||
msgid "%A, %H∶%M"
|
||||
msgstr "%A, %H∶%M"
|
||||
@ -746,7 +766,7 @@ msgstr "%A, %H∶%M"
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 24h format.
|
||||
#. i.e. "May 25, 14:30"
|
||||
#: js/misc/util.js:256
|
||||
#: js/misc/util.js:255
|
||||
#, no-c-format
|
||||
msgid "%B %-d, %H∶%M"
|
||||
msgstr "%-d %B, %H∶%M"
|
||||
@ -754,7 +774,7 @@ msgstr "%-d %B, %H∶%M"
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 24h format.
|
||||
#. i.e. "May 25 2012, 14:30"
|
||||
#: js/misc/util.js:262
|
||||
#: js/misc/util.js:261
|
||||
#, no-c-format
|
||||
msgid "%B %-d %Y, %H∶%M"
|
||||
msgstr "%-d %B %Y, %H∶%M"
|
||||
@ -762,20 +782,20 @@ msgstr "%-d %B %Y, %H∶%M"
|
||||
#. Show only the time if date is on today
|
||||
#. eslint-disable-line no-lonely-if
|
||||
#. Translators: Time in 12h format
|
||||
#: js/misc/util.js:267
|
||||
#: js/misc/util.js:266
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%l∶%M %p"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm"
|
||||
#: js/misc/util.js:273
|
||||
#: js/misc/util.js:272
|
||||
#, no-c-format
|
||||
msgid "Yesterday, %l∶%M %p"
|
||||
msgstr "Hier, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm"
|
||||
#: js/misc/util.js:279
|
||||
#: js/misc/util.js:278
|
||||
#, no-c-format
|
||||
msgid "%A, %l∶%M %p"
|
||||
msgstr "%A, %l∶%M %p"
|
||||
@ -783,7 +803,7 @@ msgstr "%A, %l∶%M %p"
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 12h format.
|
||||
#. i.e. "May 25, 2:30 pm"
|
||||
#: js/misc/util.js:285
|
||||
#: js/misc/util.js:284
|
||||
#, no-c-format
|
||||
msgid "%B %-d, %l∶%M %p"
|
||||
msgstr "%-d %B, %l∶%M %p"
|
||||
@ -791,17 +811,17 @@ msgstr "%-d %B, %l∶%M %p"
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 12h format.
|
||||
#. i.e. "May 25 2012, 2:30 pm"
|
||||
#: js/misc/util.js:291
|
||||
#: js/misc/util.js:290
|
||||
#, no-c-format
|
||||
msgid "%B %-d %Y, %l∶%M %p"
|
||||
msgstr "%-d %B %Y, %l∶%M %p"
|
||||
|
||||
#. TRANSLATORS: this is the title of the wifi captive portal login window
|
||||
#: js/portalHelper/main.js:49
|
||||
#: js/portalHelper/main.js:42
|
||||
msgid "Hotspot Login"
|
||||
msgstr "Identification du point d’accès"
|
||||
|
||||
#: js/portalHelper/main.js:95
|
||||
#: js/portalHelper/main.js:88
|
||||
msgid ""
|
||||
"Your connection to this hotspot login is not secure. Passwords or other "
|
||||
"information you enter on this page can be viewed by people nearby."
|
||||
@ -1047,40 +1067,40 @@ msgstr "La version installée de udisks ne gère pas le réglage PIM"
|
||||
msgid "Open with %s"
|
||||
msgstr "Ouvrir avec %s"
|
||||
|
||||
#: js/ui/components/networkAgent.js:92
|
||||
#: js/ui/components/networkAgent.js:93
|
||||
msgid ""
|
||||
"Alternatively you can connect by pushing the “WPS” button on your router."
|
||||
msgstr ""
|
||||
"Vous pouvez également vous connecter en appuyant sur le bouton « WPS » sur "
|
||||
"votre routeur."
|
||||
|
||||
#: js/ui/components/networkAgent.js:104 js/ui/status/network.js:258
|
||||
#: js/ui/components/networkAgent.js:105 js/ui/status/network.js:258
|
||||
#: js/ui/status/network.js:349 js/ui/status/network.js:981
|
||||
msgid "Connect"
|
||||
msgstr "Se connecter"
|
||||
|
||||
#: js/ui/components/networkAgent.js:215
|
||||
#: js/ui/components/networkAgent.js:216
|
||||
msgid "Key"
|
||||
msgstr "Clé"
|
||||
|
||||
#: js/ui/components/networkAgent.js:253 js/ui/components/networkAgent.js:276
|
||||
#: js/ui/components/networkAgent.js:254 js/ui/components/networkAgent.js:277
|
||||
msgid "Private key password"
|
||||
msgstr "Mot de passe de la clé privée"
|
||||
|
||||
#: js/ui/components/networkAgent.js:274
|
||||
#: js/ui/components/networkAgent.js:275
|
||||
msgid "Identity"
|
||||
msgstr "Identité"
|
||||
|
||||
#: js/ui/components/networkAgent.js:288
|
||||
#: js/ui/components/networkAgent.js:289
|
||||
msgid "Service"
|
||||
msgstr "Service"
|
||||
|
||||
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:345
|
||||
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:346
|
||||
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
|
||||
msgid "Authentication required"
|
||||
msgstr "Authentification nécessaire"
|
||||
|
||||
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:680
|
||||
#: js/ui/components/networkAgent.js:319 js/ui/components/networkAgent.js:680
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -1089,31 +1109,31 @@ msgstr ""
|
||||
"Il faut un mot de passe ou une clé de chiffrement pour accéder au réseau "
|
||||
"sans fil « %s »."
|
||||
|
||||
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:684
|
||||
#: js/ui/components/networkAgent.js:323 js/ui/components/networkAgent.js:684
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Authentification filaire 802.1X"
|
||||
|
||||
#: js/ui/components/networkAgent.js:324
|
||||
#: js/ui/components/networkAgent.js:325
|
||||
msgid "Network name"
|
||||
msgstr "Nom du réseau"
|
||||
|
||||
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:688
|
||||
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:688
|
||||
msgid "DSL authentication"
|
||||
msgstr "Authentification DSL"
|
||||
|
||||
#: js/ui/components/networkAgent.js:336 js/ui/components/networkAgent.js:693
|
||||
#: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:693
|
||||
msgid "PIN code required"
|
||||
msgstr "Code PIN requis"
|
||||
|
||||
#: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:694
|
||||
#: js/ui/components/networkAgent.js:338 js/ui/components/networkAgent.js:694
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Un code PIN est nécessaire pour les connexions mobiles"
|
||||
|
||||
#: js/ui/components/networkAgent.js:338
|
||||
#: js/ui/components/networkAgent.js:339
|
||||
msgid "PIN"
|
||||
msgstr "PIN"
|
||||
|
||||
#: js/ui/components/networkAgent.js:346 js/ui/components/networkAgent.js:685
|
||||
#: js/ui/components/networkAgent.js:347 js/ui/components/networkAgent.js:685
|
||||
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
|
||||
#: js/ui/components/networkAgent.js:705
|
||||
#, javascript-format
|
||||
@ -1441,24 +1461,24 @@ msgstr "%s (distant)"
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (console)"
|
||||
|
||||
#: js/ui/extensionDownloader.js:232
|
||||
#: js/ui/extensionDownloader.js:194
|
||||
msgid "Install"
|
||||
msgstr "Installer"
|
||||
|
||||
#: js/ui/extensionDownloader.js:238
|
||||
#: js/ui/extensionDownloader.js:200
|
||||
msgid "Install Extension"
|
||||
msgstr "Installer l’extension"
|
||||
|
||||
#: js/ui/extensionDownloader.js:239
|
||||
#: js/ui/extensionDownloader.js:201
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Télécharger et installer « %s » à partir de extensions.gnome.org ?"
|
||||
|
||||
#: js/ui/extensionSystem.js:252
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Mises à jour d’extensions disponibles"
|
||||
|
||||
#: js/ui/extensionSystem.js:253
|
||||
#: js/ui/extensionSystem.js:254
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Des mises à jour d’extensions sont prêtes à être installées."
|
||||
|
||||
@ -1555,7 +1575,7 @@ msgstr "Éteindre"
|
||||
msgid "Leave Off"
|
||||
msgstr "Laisser éteint"
|
||||
|
||||
#: js/ui/keyboard.js:226
|
||||
#: js/ui/keyboard.js:227
|
||||
msgid "Region & Language Settings"
|
||||
msgstr "Paramètres de langue et région"
|
||||
|
||||
@ -1608,11 +1628,11 @@ msgstr "Afficher la source"
|
||||
msgid "Web Page"
|
||||
msgstr "Page Web"
|
||||
|
||||
#: js/ui/main.js:290
|
||||
#: js/ui/main.js:294
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Connecté en tant qu’utilisateur privilégié"
|
||||
|
||||
#: js/ui/main.js:291
|
||||
#: js/ui/main.js:295
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1621,16 +1641,16 @@ msgstr ""
|
||||
"des raisons de sécurité. Si possible, connectez-vous comme utilisateur "
|
||||
"normal."
|
||||
|
||||
#: js/ui/main.js:340
|
||||
#: js/ui/main.js:344
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "Verrouillage d’écran désactivé"
|
||||
|
||||
#: js/ui/main.js:341
|
||||
#: js/ui/main.js:345
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr ""
|
||||
"Le verrouillage de l’écran nécessite le gestionnaire d’affichage GNOME."
|
||||
|
||||
#: js/ui/messageTray.js:1443
|
||||
#: js/ui/messageTray.js:1440
|
||||
msgid "System Information"
|
||||
msgstr "Informations du système"
|
||||
|
||||
@ -1664,47 +1684,47 @@ msgstr "Annuler"
|
||||
msgid "Overview"
|
||||
msgstr "Vue d’ensemble"
|
||||
|
||||
#: js/ui/padOsd.js:95
|
||||
#: js/ui/padOsd.js:96
|
||||
msgid "New shortcut…"
|
||||
msgstr "Nouveau raccourci…"
|
||||
|
||||
#: js/ui/padOsd.js:142
|
||||
#: js/ui/padOsd.js:143
|
||||
msgid "Application defined"
|
||||
msgstr "Applications définies"
|
||||
|
||||
#: js/ui/padOsd.js:143
|
||||
#: js/ui/padOsd.js:144
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Afficher l’aide à l’écran"
|
||||
|
||||
#: js/ui/padOsd.js:144
|
||||
#: js/ui/padOsd.js:145
|
||||
msgid "Switch monitor"
|
||||
msgstr "Changer d’écran"
|
||||
|
||||
#: js/ui/padOsd.js:145
|
||||
#: js/ui/padOsd.js:146
|
||||
msgid "Assign keystroke"
|
||||
msgstr "Associer une touche"
|
||||
|
||||
#: js/ui/padOsd.js:211
|
||||
#: js/ui/padOsd.js:212
|
||||
msgid "Done"
|
||||
msgstr "Terminé"
|
||||
|
||||
#: js/ui/padOsd.js:716
|
||||
#: js/ui/padOsd.js:718
|
||||
msgid "Edit…"
|
||||
msgstr "Édition…"
|
||||
|
||||
#: js/ui/padOsd.js:758 js/ui/padOsd.js:875
|
||||
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877
|
||||
msgid "None"
|
||||
msgstr "Aucun"
|
||||
|
||||
#: js/ui/padOsd.js:829
|
||||
#: js/ui/padOsd.js:831
|
||||
msgid "Press a button to configure"
|
||||
msgstr "Appuyez sur un bouton pour le configurer"
|
||||
|
||||
#: js/ui/padOsd.js:830
|
||||
#: js/ui/padOsd.js:832
|
||||
msgid "Press Esc to exit"
|
||||
msgstr "Appuyez sur Échap pour quitter"
|
||||
|
||||
#: js/ui/padOsd.js:833
|
||||
#: js/ui/padOsd.js:835
|
||||
msgid "Press any key to exit"
|
||||
msgstr "Appuyez sur une touche pour quitter"
|
||||
|
||||
@ -1714,12 +1734,12 @@ msgstr "Appuyez sur une touche pour quitter"
|
||||
msgid "Activities"
|
||||
msgstr "Activités"
|
||||
|
||||
#: js/ui/panel.js:556
|
||||
#: js/ui/panel.js:542
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Système"
|
||||
|
||||
#: js/ui/panel.js:674
|
||||
#: js/ui/panel.js:658
|
||||
msgid "Top Bar"
|
||||
msgstr "Barre supérieure"
|
||||
|
||||
@ -1758,7 +1778,7 @@ msgstr "Impossible de verrouiller"
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Le verrouillage a été bloqué par une application"
|
||||
|
||||
#: js/ui/screenshot.js:155
|
||||
#: js/ui/screenshot.js:141
|
||||
msgid "Screenshot taken"
|
||||
msgstr "Capture d’écran effectuée"
|
||||
|
||||
@ -2264,6 +2284,7 @@ msgid "Balanced"
|
||||
msgstr "Équilibré"
|
||||
|
||||
#: js/ui/status/powerProfiles.js:21
|
||||
#| msgid "Power Settings"
|
||||
msgctxt "Power profile"
|
||||
msgid "Power Saver"
|
||||
msgstr "Économie d’énergie"
|
||||
@ -2458,10 +2479,13 @@ msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
|
||||
#: js/ui/windowMenu.js:27
|
||||
#| msgid "Hide Text"
|
||||
msgid "Hide"
|
||||
msgstr "Masquer"
|
||||
|
||||
#: js/ui/windowMenu.js:34
|
||||
#| msgctxt "search-result"
|
||||
#| msgid "Restart"
|
||||
msgid "Restore"
|
||||
msgstr "Restaurer"
|
||||
|
||||
@ -2833,7 +2857,6 @@ msgstr "Les champs UUID, nom et description sont obligatoires"
|
||||
#: subprojects/extensions-tool/src/command-enable.c:46
|
||||
#: subprojects/extensions-tool/src/command-info.c:50
|
||||
#: subprojects/extensions-tool/src/command-list.c:64
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell\n"
|
||||
msgstr "Erreur lors de la connexion à Shell de GNOME\n"
|
||||
|
||||
@ -2850,7 +2873,7 @@ msgstr "Désactiver une extension"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:119
|
||||
#: subprojects/extensions-tool/src/command-enable.c:119
|
||||
#: subprojects/extensions-tool/src/command-info.c:103
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:105
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:97
|
||||
#: subprojects/extensions-tool/src/command-reset.c:76
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:104
|
||||
msgid "No UUID given"
|
||||
@ -2859,7 +2882,7 @@ msgstr "Aucun UUID indiqué"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:124
|
||||
#: subprojects/extensions-tool/src/command-enable.c:124
|
||||
#: subprojects/extensions-tool/src/command-info.c:108
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:110
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:102
|
||||
#: subprojects/extensions-tool/src/command-reset.c:81
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:109
|
||||
msgid "More than one UUID given"
|
||||
@ -2989,12 +3012,7 @@ msgstr "Plus d’un répertoire source indiqué"
|
||||
msgid "Extension “%s” doesn't have preferences\n"
|
||||
msgstr "L’extension « %s » n’a pas de préférences\n"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:62
|
||||
#, c-format
|
||||
msgid "Failed to open prefs for extension “%s”: %s\n"
|
||||
msgstr "Impossible d’ouvrir les préférences de l’extension « %s » : %s\n"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:87
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:79
|
||||
msgid "Opens extension preferences"
|
||||
msgstr "Ouvre les préférences de l’extension"
|
||||
|
||||
@ -3019,6 +3037,10 @@ msgstr "Désinstaller une extension"
|
||||
msgid "Do not print error messages"
|
||||
msgstr "Ne pas afficher les messages d’erreur"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell"
|
||||
msgstr "Impossible de se connecter à Shell de GNOME"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:244
|
||||
msgid "Path"
|
||||
msgstr "Chemin"
|
||||
@ -3149,19 +3171,6 @@ msgstr[1] "%u entrées"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sons système"
|
||||
|
||||
#~ msgid "Enable introspection API"
|
||||
#~ msgstr "Activer l’API d’introspection"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Enables a D-Bus API that allows to introspect the application state of "
|
||||
#~ "the shell."
|
||||
#~ msgstr ""
|
||||
#~ "Active l’API D-Bus, qui permet d’introspecter l’état d’application du "
|
||||
#~ "shell."
|
||||
|
||||
#~ msgid "Failed to connect to GNOME Shell"
|
||||
#~ msgstr "Impossible de se connecter à Shell de GNOME"
|
||||
|
||||
#~ msgid "Minimize"
|
||||
#~ msgstr "Minimiser"
|
||||
|
||||
|
33
po/he.po
33
po/he.po
@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2021-11-06 13:28+0000\n"
|
||||
"PO-Revision-Date: 2021-11-12 00:26+0200\n"
|
||||
"POT-Creation-Date: 2021-09-23 14:20+0000\n"
|
||||
"PO-Revision-Date: 2021-09-27 11:13+0300\n"
|
||||
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
|
||||
"Language-Team: Hebrew <yoseforb@gmail.com>\n"
|
||||
"Language: he\n"
|
||||
@ -1387,11 +1387,11 @@ msgstr "התקנת הרחבות"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "הורדה והתקנה של „%s” מ־extensions.gnome.org?"
|
||||
|
||||
#: js/ui/extensionSystem.js:266
|
||||
#: js/ui/extensionSystem.js:252
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "עדכוני הרחבות זמינים"
|
||||
|
||||
#: js/ui/extensionSystem.js:267
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "עדכוני הרחבות מוכנים להתקנה."
|
||||
|
||||
@ -2747,7 +2747,6 @@ msgstr "UUID, name and description are required"
|
||||
#: subprojects/extensions-tool/src/command-enable.c:46
|
||||
#: subprojects/extensions-tool/src/command-info.c:50
|
||||
#: subprojects/extensions-tool/src/command-list.c:64
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell\n"
|
||||
msgstr "Failed to connect to GNOME Shell\n"
|
||||
|
||||
@ -2764,7 +2763,7 @@ msgstr "Disable an extension"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:119
|
||||
#: subprojects/extensions-tool/src/command-enable.c:119
|
||||
#: subprojects/extensions-tool/src/command-info.c:103
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:105
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:97
|
||||
#: subprojects/extensions-tool/src/command-reset.c:76
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:104
|
||||
msgid "No UUID given"
|
||||
@ -2773,7 +2772,7 @@ msgstr "No UUID given"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:124
|
||||
#: subprojects/extensions-tool/src/command-enable.c:124
|
||||
#: subprojects/extensions-tool/src/command-info.c:108
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:110
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:102
|
||||
#: subprojects/extensions-tool/src/command-reset.c:81
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:109
|
||||
msgid "More than one UUID given"
|
||||
@ -2843,7 +2842,7 @@ msgstr "Print extension details"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-list.c:154
|
||||
msgid "List installed extensions"
|
||||
msgstr "הצגת ההרחבות המותקנות"
|
||||
msgstr "List installed extensions"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-pack.c:450
|
||||
msgid "FILE"
|
||||
@ -2896,19 +2895,14 @@ msgstr "Create an extension bundle"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-pack.c:501
|
||||
msgid "More than one source directory specified"
|
||||
msgstr "צוינה יותר מתיקיית מקור אחת"
|
||||
msgstr "More than one source directory specified"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:47
|
||||
#, c-format
|
||||
msgid "Extension “%s” doesn't have preferences\n"
|
||||
msgstr "להרחבה „%s” אין העדפות\n"
|
||||
msgstr "Extension “%s” doesn't have preferences\n"
|
||||
|
||||
#: 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
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:79
|
||||
msgid "Opens extension preferences"
|
||||
msgstr "Opens extension preferences"
|
||||
|
||||
@ -2933,6 +2927,10 @@ msgstr "Uninstall an extension"
|
||||
msgid "Do not print error messages"
|
||||
msgstr "Do not print error messages"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell"
|
||||
msgstr "Failed to connect to GNOME Shell"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:244
|
||||
msgid "Path"
|
||||
msgstr "Path"
|
||||
@ -3067,9 +3065,6 @@ msgstr[3] "%u ערוצי קלט"
|
||||
msgid "System Sounds"
|
||||
msgstr "צלילי מערכת"
|
||||
|
||||
#~ msgid "Failed to connect to GNOME Shell"
|
||||
#~ msgstr "Failed to connect to GNOME Shell"
|
||||
|
||||
#~ msgid "Enable introspection API"
|
||||
#~ msgstr "Enable introspection API"
|
||||
|
||||
|
55
po/hr.po
55
po/hr.po
@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2021-11-26 16:19+0000\n"
|
||||
"PO-Revision-Date: 2021-11-26 19:03+0100\n"
|
||||
"POT-Creation-Date: 2021-09-23 14:20+0000\n"
|
||||
"PO-Revision-Date: 2021-10-06 19:07+0200\n"
|
||||
"Last-Translator: gogo <trebelnik2@gmail.com>\n"
|
||||
"Language-Team: Croatian <hr@li.org>\n"
|
||||
"Language: hr\n"
|
||||
@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\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"
|
||||
"X-Generator: Poedit 2.3\n"
|
||||
"X-Generator: Poedit 3.0\n"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:6
|
||||
msgid "Launchers"
|
||||
@ -794,7 +794,7 @@ msgstr "Zabrani pristup"
|
||||
msgid "Grant Access"
|
||||
msgstr "Dopusti pristup"
|
||||
|
||||
#: js/ui/appDisplay.js:1791
|
||||
#: js/ui/appDisplay.js:1846
|
||||
msgid "Unnamed Folder"
|
||||
msgstr "Neimenovana mapa"
|
||||
|
||||
@ -1398,11 +1398,11 @@ msgstr "Instaliraj proširenje"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Preuzmi i instaliraj “%s” sa extensions.gnome.org?"
|
||||
|
||||
#: js/ui/extensionSystem.js:266
|
||||
#: js/ui/extensionSystem.js:252
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Nadopuna proširenja je dostupna"
|
||||
|
||||
#: js/ui/extensionSystem.js:267
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Nadopune proširenja su spremne za instalaciju."
|
||||
|
||||
@ -1550,23 +1550,11 @@ msgstr "Pogledaj izvor"
|
||||
msgid "Web Page"
|
||||
msgstr "Web stranica"
|
||||
|
||||
#: js/ui/main.js:259
|
||||
msgid "System was put in unsafe mode"
|
||||
msgstr "Sustav je stavljen u nesiguran način rada"
|
||||
|
||||
#: js/ui/main.js:260
|
||||
msgid "Applications now have unrestricted access"
|
||||
msgstr "Aplikacije sada imaju neograničen pristup"
|
||||
|
||||
#: js/ui/main.js:261 js/ui/overview.js:58
|
||||
msgid "Undo"
|
||||
msgstr "Poništi"
|
||||
|
||||
#: js/ui/main.js:307
|
||||
#: js/ui/main.js:290
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Prijavljeni ste kao administratorski korisnik"
|
||||
|
||||
#: js/ui/main.js:308
|
||||
#: js/ui/main.js:291
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1575,11 +1563,11 @@ msgstr ""
|
||||
"izbjegavati iz sigurnosnih razloga. Ako je moguće, trebate se prijaviti kao "
|
||||
"normalan korisnik."
|
||||
|
||||
#: js/ui/main.js:357
|
||||
#: js/ui/main.js:340
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "Zaključavanje zaslona je onemogućeno"
|
||||
|
||||
#: js/ui/main.js:358
|
||||
#: js/ui/main.js:341
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "Zaključavanje zaslona zahtijeva GNOME upravitelja zaslona."
|
||||
|
||||
@ -1607,6 +1595,10 @@ msgstr "Upiši za pretragu"
|
||||
msgid "Applications"
|
||||
msgstr "Aplikacije"
|
||||
|
||||
#: js/ui/overview.js:58
|
||||
msgid "Undo"
|
||||
msgstr "Poništi"
|
||||
|
||||
#. Translators: This is the main view to select
|
||||
#. activities. See also note for "Activities" string.
|
||||
#: js/ui/overview.js:71
|
||||
@ -2776,7 +2768,6 @@ msgstr "UUID, naziv i opis su potrebni"
|
||||
#: subprojects/extensions-tool/src/command-enable.c:46
|
||||
#: subprojects/extensions-tool/src/command-info.c:50
|
||||
#: subprojects/extensions-tool/src/command-list.c:64
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell\n"
|
||||
msgstr "Neuspjelo povezivanje s GNOME ljuskom\n"
|
||||
|
||||
@ -2793,7 +2784,7 @@ msgstr "Onemogući proširenje"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:119
|
||||
#: subprojects/extensions-tool/src/command-enable.c:119
|
||||
#: subprojects/extensions-tool/src/command-info.c:103
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:105
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:97
|
||||
#: subprojects/extensions-tool/src/command-reset.c:76
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:104
|
||||
msgid "No UUID given"
|
||||
@ -2802,7 +2793,7 @@ msgstr "UUID nije naveden"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:124
|
||||
#: subprojects/extensions-tool/src/command-enable.c:124
|
||||
#: subprojects/extensions-tool/src/command-info.c:108
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:110
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:102
|
||||
#: subprojects/extensions-tool/src/command-reset.c:81
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:109
|
||||
msgid "More than one UUID given"
|
||||
@ -2932,12 +2923,7 @@ msgstr "Određeno je više od jedne izvorne mape"
|
||||
msgid "Extension “%s” doesn't have preferences\n"
|
||||
msgstr "Proširenje “%s” ne sadrži osobitosti\n"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:62
|
||||
#, c-format
|
||||
msgid "Failed to open prefs for extension “%s”: %s\n"
|
||||
msgstr "Neuspjelo otvaranje osobitosti za proširenje “%s”: %s\n"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:87
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:79
|
||||
msgid "Opens extension preferences"
|
||||
msgstr "Otvara osobitosti proširenja"
|
||||
|
||||
@ -2962,6 +2948,10 @@ msgstr "Ukloni proširenje"
|
||||
msgid "Do not print error messages"
|
||||
msgstr "Ne ispisuj poruke greške"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell"
|
||||
msgstr "Neuspjelo povezivanje s GNOME ljuskom"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:244
|
||||
msgid "Path"
|
||||
msgstr "Putanja"
|
||||
@ -3094,9 +3084,6 @@ msgstr[2] "%u ulaza"
|
||||
msgid "System Sounds"
|
||||
msgstr "Zvukovi sustava"
|
||||
|
||||
#~ msgid "Failed to connect to GNOME Shell"
|
||||
#~ msgstr "Neuspjelo povezivanje s GNOME ljuskom"
|
||||
|
||||
#~ msgid "Enable introspection API"
|
||||
#~ msgstr "Omogući API samoispitivanja"
|
||||
|
||||
|
286
po/lt.po
286
po/lt.po
@ -10,8 +10,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2021-11-13 17:10+0000\n"
|
||||
"PO-Revision-Date: 2021-11-21 21:42+0200\n"
|
||||
"POT-Creation-Date: 2021-08-17 23:56+0000\n"
|
||||
"PO-Revision-Date: 2021-09-01 23:06+0300\n"
|
||||
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
|
||||
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
|
||||
"Language: lt\n"
|
||||
@ -28,38 +28,47 @@ msgid "Launchers"
|
||||
msgstr "Paleidikliai"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:10
|
||||
#| msgid "Switch to application 1"
|
||||
msgid "Activate favorite application 1"
|
||||
msgstr "Paleisti mėgiamą programą 1"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:14
|
||||
#| msgid "Switch to application 2"
|
||||
msgid "Activate favorite application 2"
|
||||
msgstr "Paleisti mėgiamą programą 2"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:18
|
||||
#| msgid "Switch to application 3"
|
||||
msgid "Activate favorite application 3"
|
||||
msgstr "Paleisti mėgiamą programą 3"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:22
|
||||
#| msgid "Switch to application 4"
|
||||
msgid "Activate favorite application 4"
|
||||
msgstr "Paleisti mėgiamą programą 4"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:26
|
||||
#| msgid "Switch to application 5"
|
||||
msgid "Activate favorite application 5"
|
||||
msgstr "Paleisti mėgiamą programą 5"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:30
|
||||
#| msgid "Switch to application 6"
|
||||
msgid "Activate favorite application 6"
|
||||
msgstr "Paleisti mėgiamą programą 6"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:34
|
||||
#| msgid "Switch to application 7"
|
||||
msgid "Activate favorite application 7"
|
||||
msgstr "Paleisti mėgiamą programą 7"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:38
|
||||
#| msgid "Switch to application 8"
|
||||
msgid "Activate favorite application 8"
|
||||
msgstr "Paleisti mėgiamą programą 8"
|
||||
|
||||
#: data/50-gnome-shell-launchers.xml:42
|
||||
#| msgid "Switch to application 9"
|
||||
msgid "Activate favorite application 9"
|
||||
msgstr "Paleisti mėgiamą programą 9"
|
||||
|
||||
@ -256,11 +265,22 @@ msgstr ""
|
||||
"versiją, o milžiniški skaičiai reiškia versijas, kurių dar nėra. Todėl "
|
||||
"milžiniškus skaičius galima naudoti šio dialogo išjungimui."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:133
|
||||
#: data/org.gnome.shell.gschema.xml.in:109
|
||||
msgid "Enable introspection API"
|
||||
msgstr "Įjungti nagrinėjimo sąsają"
|
||||
|
||||
#: 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 ""
|
||||
"Įjungia D-Bus sąsają, kuri leidžia nagrinėti apvalkalo programos būseną."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:141
|
||||
msgid "Layout of the app picker"
|
||||
msgstr "Programų pasirinkimo išdėstymas"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:134
|
||||
#: data/org.gnome.shell.gschema.xml.in:142
|
||||
msgid ""
|
||||
"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 "
|
||||
@ -273,108 +293,108 @@ msgstr ""
|
||||
"vertės yra įrašomos kaip „duomenys“: • “position”: programos piktogramos "
|
||||
"padėtis puslapyje"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:149
|
||||
#: data/org.gnome.shell.gschema.xml.in:157
|
||||
msgid "Keybinding to open the application menu"
|
||||
msgstr "Klavišų susiejimas, kuriuo atveriamas programų meniu"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:150
|
||||
#: data/org.gnome.shell.gschema.xml.in:158
|
||||
msgid "Keybinding to open the application menu."
|
||||
msgstr "Klavišų susiejimas, kuriuo atveriamas programų meniu."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:156
|
||||
#: data/org.gnome.shell.gschema.xml.in:163
|
||||
#: data/org.gnome.shell.gschema.xml.in:164
|
||||
#: data/org.gnome.shell.gschema.xml.in:171
|
||||
msgid "Keybinding to shift between overview states"
|
||||
msgstr "Klavišų susiejimas apžvalgos būsenų keitimui"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:157
|
||||
#: data/org.gnome.shell.gschema.xml.in:165
|
||||
msgid "Keybinding to shift between session, window picker and app grid"
|
||||
msgstr ""
|
||||
"Klavišų susiejimas perėjimui tarp seanso, langų pasirinkimo ir programų "
|
||||
"tinklelio"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:164
|
||||
#: data/org.gnome.shell.gschema.xml.in:172
|
||||
msgid "Keybinding to shift between app grid, window picker and session"
|
||||
msgstr ""
|
||||
"Klavišų susiejimas perėjimui tarp programų tinklelio, langų pasirinkimo bei "
|
||||
"seanso."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:170
|
||||
#: data/org.gnome.shell.gschema.xml.in:178
|
||||
msgid "Keybinding to open the “Show Applications” view"
|
||||
msgstr "Klavišų susiejimas, kuriuo atveriamas rodinys „rodyti programas“"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:171
|
||||
#: data/org.gnome.shell.gschema.xml.in:179
|
||||
msgid ""
|
||||
"Keybinding to open the “Show Applications” view of the Activities Overview."
|
||||
msgstr ""
|
||||
"Klavišų susiejimas, kuriuo atveriamas rodinys „rodyti programas“ veiklų "
|
||||
"apžvalgoje."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:178
|
||||
#: data/org.gnome.shell.gschema.xml.in:186
|
||||
msgid "Keybinding to open the overview"
|
||||
msgstr "Klavišų susiejimas, kuriuo atveriama apžvalga"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:179
|
||||
#: data/org.gnome.shell.gschema.xml.in:187
|
||||
msgid "Keybinding to open the Activities Overview."
|
||||
msgstr "Klavišų susiejimas, kuriuo atveriama veiklų apžvalga."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:185
|
||||
#: data/org.gnome.shell.gschema.xml.in:193
|
||||
msgid "Keybinding to toggle the visibility of the notification list"
|
||||
msgstr "Klavišų susiejimas pranešimų juostos matomumui perjungti"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:186
|
||||
#: data/org.gnome.shell.gschema.xml.in:194
|
||||
msgid "Keybinding to toggle the visibility of the notification list."
|
||||
msgstr "Klavišų susiejimas pranešimų juostos matomumui perjungti."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:192
|
||||
#: data/org.gnome.shell.gschema.xml.in:200
|
||||
msgid "Keybinding to focus the active notification"
|
||||
msgstr "Klavišų susiejimas, kuriuo fokusuojamas aktyvus pranešimas"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:193
|
||||
#: data/org.gnome.shell.gschema.xml.in:201
|
||||
msgid "Keybinding to focus the active notification."
|
||||
msgstr "Klavišų susiejimas, kuriuo fokusuojamas aktyvus pranešimas."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:199
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
msgid "Switch to application 1"
|
||||
msgstr "Pereiti į programą 1"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:203
|
||||
#: data/org.gnome.shell.gschema.xml.in:211
|
||||
msgid "Switch to application 2"
|
||||
msgstr "Pereiti į programą 2"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
msgid "Switch to application 3"
|
||||
msgstr "Pereiti į programą 3"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:211
|
||||
#: data/org.gnome.shell.gschema.xml.in:219
|
||||
msgid "Switch to application 4"
|
||||
msgstr "Pereiti į programą 4"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
msgid "Switch to application 5"
|
||||
msgstr "Pereiti į programą 5"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:219
|
||||
#: data/org.gnome.shell.gschema.xml.in:227
|
||||
msgid "Switch to application 6"
|
||||
msgstr "Pereiti į programą 6"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
msgid "Switch to application 7"
|
||||
msgstr "Pereiti į programą 7"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:227
|
||||
#: data/org.gnome.shell.gschema.xml.in:235
|
||||
msgid "Switch to application 8"
|
||||
msgstr "Pereiti į programą 8"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
#: data/org.gnome.shell.gschema.xml.in:239
|
||||
msgid "Switch to application 9"
|
||||
msgstr "Pereiti į programą 9"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:240
|
||||
#: data/org.gnome.shell.gschema.xml.in:267
|
||||
#: data/org.gnome.shell.gschema.xml.in:248
|
||||
#: data/org.gnome.shell.gschema.xml.in:275
|
||||
msgid "Limit switcher to current workspace."
|
||||
msgstr "Apriboti perjungėją dabartine darbo sritimi."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:241
|
||||
#: data/org.gnome.shell.gschema.xml.in:249
|
||||
msgid ""
|
||||
"If true, only applications that have windows on the current workspace are "
|
||||
"shown in the switcher. Otherwise, all applications are included."
|
||||
@ -382,11 +402,11 @@ msgstr ""
|
||||
"Jei teigiama, perjungimo lange bus rodomos tik programos, turinčios langų "
|
||||
"dabartinėje darbo srityje. Priešingu atveju įtraukiamos visos programos."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:258
|
||||
#: data/org.gnome.shell.gschema.xml.in:266
|
||||
msgid "The application icon mode."
|
||||
msgstr "Programos piktogramos veiksena."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:259
|
||||
#: data/org.gnome.shell.gschema.xml.in:267
|
||||
msgid ""
|
||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||
"are “thumbnail-only” (shows a thumbnail of the window), “app-icon-"
|
||||
@ -396,7 +416,7 @@ msgstr ""
|
||||
"„thumbnail-only“ (rodo lango miniatiūrą), „app-icon-only“ (rodo tik "
|
||||
"programos piktogramą) arba „both“ (abu)."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:268
|
||||
#: data/org.gnome.shell.gschema.xml.in:276
|
||||
msgid ""
|
||||
"If true, only windows from the current workspace are shown in the switcher. "
|
||||
"Otherwise, all windows are included."
|
||||
@ -404,56 +424,56 @@ msgstr ""
|
||||
"Jei teigiama, perjungimo lange rodomi tik langai iš dabartinės darbo "
|
||||
"srities. Priešingu atveju įtraukiami visi langai."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:278
|
||||
#: data/org.gnome.shell.gschema.xml.in:286
|
||||
msgid "Locations"
|
||||
msgstr "Vietos"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:279
|
||||
#: data/org.gnome.shell.gschema.xml.in:287
|
||||
msgid "The locations to show in world clocks"
|
||||
msgstr "Vietos, kurias rodyti pasaulio laikrodžiuose"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:289
|
||||
#: data/org.gnome.shell.gschema.xml.in:297
|
||||
msgid "Automatic location"
|
||||
msgstr "Automatinė vieta"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:290
|
||||
#: data/org.gnome.shell.gschema.xml.in:298
|
||||
msgid "Whether to fetch the current location or not"
|
||||
msgstr "Ar gauti dabartinę vietą"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:297
|
||||
#: data/org.gnome.shell.gschema.xml.in:305
|
||||
msgid "Location"
|
||||
msgstr "Vieta"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:298
|
||||
#: data/org.gnome.shell.gschema.xml.in:306
|
||||
msgid "The location for which to show a forecast"
|
||||
msgstr "Vieta, kuriai rodyti prognozę"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:310
|
||||
#: data/org.gnome.shell.gschema.xml.in:318
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Prikabinti modalinį dialogą prie tėvinio lango"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:311
|
||||
#: data/org.gnome.shell.gschema.xml.in:320
|
||||
#: data/org.gnome.shell.gschema.xml.in:319
|
||||
#: data/org.gnome.shell.gschema.xml.in:328
|
||||
#: data/org.gnome.shell.gschema.xml.in:336
|
||||
#: data/org.gnome.shell.gschema.xml.in:344
|
||||
#: data/org.gnome.shell.gschema.xml.in:352
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr "Šis raktas perrašo org.gnome.mutter raktą, kai vykdoma GNOME Shell."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:319
|
||||
#: data/org.gnome.shell.gschema.xml.in:327
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr "Įjungti kraštų išplėtimą, kai langai numetami ekrano kraštuose"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:327
|
||||
#: data/org.gnome.shell.gschema.xml.in:335
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "Darbo sritys yra tvarkomos dinamiškai"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:335
|
||||
#: data/org.gnome.shell.gschema.xml.in:343
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Darbo sritys tik pagrindiniame monitoriuje"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:343
|
||||
#: data/org.gnome.shell.gschema.xml.in:351
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr "Atidėti fokuso pakeitimus pelei iki žymiklis nustos judėti"
|
||||
|
||||
@ -488,18 +508,18 @@ msgid "Visit extension homepage"
|
||||
msgstr "Aplankyti plėtinio namų tinklalapį"
|
||||
|
||||
#: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61
|
||||
#: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:138
|
||||
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:228
|
||||
#: js/ui/components/networkAgent.js:111 js/ui/components/polkitAgent.js:138
|
||||
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:190
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183
|
||||
msgid "Cancel"
|
||||
msgstr "Atsisakyti"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:209
|
||||
#: js/ui/components/networkAgent.js:225 js/ui/components/networkAgent.js:249
|
||||
#: js/ui/components/networkAgent.js:270 js/ui/components/networkAgent.js:290
|
||||
#: js/ui/components/networkAgent.js:300 js/ui/components/polkitAgent.js:275
|
||||
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:210
|
||||
#: js/ui/components/networkAgent.js:226 js/ui/components/networkAgent.js:250
|
||||
#: js/ui/components/networkAgent.js:271 js/ui/components/networkAgent.js:291
|
||||
#: js/ui/components/networkAgent.js:301 js/ui/components/polkitAgent.js:275
|
||||
#: js/ui/shellMountOperation.js:326
|
||||
msgid "Password"
|
||||
msgstr "Slaptažodis"
|
||||
@ -522,8 +542,8 @@ msgstr "(pvz., naudotojas arba %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:245
|
||||
#: js/ui/components/networkAgent.js:268 js/ui/components/networkAgent.js:286
|
||||
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:246
|
||||
#: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:287
|
||||
msgid "Username"
|
||||
msgstr "Naudotojo vardas"
|
||||
|
||||
@ -628,26 +648,26 @@ msgctxt "search-result"
|
||||
msgid "Lock Screen Rotation"
|
||||
msgstr "Užrakinti ekrano orientaciją"
|
||||
|
||||
#: js/misc/util.js:121
|
||||
#: js/misc/util.js:120
|
||||
msgid "Command not found"
|
||||
msgstr "Komanda nerasta"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: js/misc/util.js:157
|
||||
#: js/misc/util.js:156
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Nepavyko perskaityti komandos:"
|
||||
|
||||
#: js/misc/util.js:165
|
||||
#: js/misc/util.js:164
|
||||
#, javascript-format
|
||||
msgid "Execution of “%s” failed:"
|
||||
msgstr "Nepavyko įvykdyti „%s“:"
|
||||
|
||||
#: js/misc/util.js:182
|
||||
#: js/misc/util.js:181
|
||||
msgid "Just now"
|
||||
msgstr "Ką tik"
|
||||
|
||||
#: js/misc/util.js:184
|
||||
#: js/misc/util.js:183
|
||||
#, javascript-format
|
||||
msgid "%d minute ago"
|
||||
msgid_plural "%d minutes ago"
|
||||
@ -655,7 +675,7 @@ msgstr[0] "Prieš %d minutę"
|
||||
msgstr[1] "Prieš %d minutes"
|
||||
msgstr[2] "Prieš %d minučių"
|
||||
|
||||
#: js/misc/util.js:188
|
||||
#: js/misc/util.js:187
|
||||
#, javascript-format
|
||||
msgid "%d hour ago"
|
||||
msgid_plural "%d hours ago"
|
||||
@ -663,11 +683,11 @@ msgstr[0] "Prieš %d valandą"
|
||||
msgstr[1] "Prieš %d valandas"
|
||||
msgstr[2] "Prieš %d valandų"
|
||||
|
||||
#: js/misc/util.js:192 js/ui/dateMenu.js:162
|
||||
#: js/misc/util.js:191 js/ui/dateMenu.js:162
|
||||
msgid "Yesterday"
|
||||
msgstr "Vakar"
|
||||
|
||||
#: js/misc/util.js:194
|
||||
#: js/misc/util.js:193
|
||||
#, javascript-format
|
||||
msgid "%d day ago"
|
||||
msgid_plural "%d days ago"
|
||||
@ -675,7 +695,7 @@ msgstr[0] "Prieš %d dieną"
|
||||
msgstr[1] "Prieš %d dienas"
|
||||
msgstr[2] "Prieš %d dienų"
|
||||
|
||||
#: js/misc/util.js:198
|
||||
#: js/misc/util.js:197
|
||||
#, javascript-format
|
||||
msgid "%d week ago"
|
||||
msgid_plural "%d weeks ago"
|
||||
@ -683,7 +703,7 @@ msgstr[0] "Prieš %d savaitę"
|
||||
msgstr[1] "Prieš %d savaites"
|
||||
msgstr[2] "Prieš %d savaičių"
|
||||
|
||||
#: js/misc/util.js:202
|
||||
#: js/misc/util.js:201
|
||||
#, javascript-format
|
||||
msgid "%d month ago"
|
||||
msgid_plural "%d months ago"
|
||||
@ -691,7 +711,7 @@ msgstr[0] "Prieš %d mėnesį"
|
||||
msgstr[1] "Prieš %d mėnesius"
|
||||
msgstr[2] "Prieš %d mėnesių"
|
||||
|
||||
#: js/misc/util.js:205
|
||||
#: js/misc/util.js:204
|
||||
#, javascript-format
|
||||
msgid "%d year ago"
|
||||
msgid_plural "%d years ago"
|
||||
@ -700,20 +720,20 @@ msgstr[1] "Prieš %d metus"
|
||||
msgstr[2] "Prieš %d metų"
|
||||
|
||||
#. Translators: Time in 24h format
|
||||
#: js/misc/util.js:238
|
||||
#: js/misc/util.js:237
|
||||
msgid "%H∶%M"
|
||||
msgstr "%H∶%M"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 24h format. i.e. "Yesterday, 14:30"
|
||||
#: js/misc/util.js:244
|
||||
#: js/misc/util.js:243
|
||||
#, no-c-format
|
||||
msgid "Yesterday, %H∶%M"
|
||||
msgstr "Vakar, %H:%M"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 24h format. i.e. "Monday, 14:30"
|
||||
#: js/misc/util.js:250
|
||||
#: js/misc/util.js:249
|
||||
#, no-c-format
|
||||
msgid "%A, %H∶%M"
|
||||
msgstr "%A, %H∶%M"
|
||||
@ -721,7 +741,7 @@ msgstr "%A, %H∶%M"
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 24h format.
|
||||
#. i.e. "May 25, 14:30"
|
||||
#: js/misc/util.js:256
|
||||
#: js/misc/util.js:255
|
||||
#, no-c-format
|
||||
msgid "%B %-d, %H∶%M"
|
||||
msgstr "%B %-d, %H∶%M"
|
||||
@ -729,7 +749,7 @@ msgstr "%B %-d, %H∶%M"
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 24h format.
|
||||
#. i.e. "May 25 2012, 14:30"
|
||||
#: js/misc/util.js:262
|
||||
#: js/misc/util.js:261
|
||||
#, no-c-format
|
||||
msgid "%B %-d %Y, %H∶%M"
|
||||
msgstr "%Y %m %-d, %H∶%M"
|
||||
@ -737,20 +757,20 @@ msgstr "%Y %m %-d, %H∶%M"
|
||||
#. Show only the time if date is on today
|
||||
#. eslint-disable-line no-lonely-if
|
||||
#. Translators: Time in 12h format
|
||||
#: js/misc/util.js:267
|
||||
#: js/misc/util.js:266
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%l∶%M %p"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm"
|
||||
#: js/misc/util.js:273
|
||||
#: js/misc/util.js:272
|
||||
#, no-c-format
|
||||
msgid "Yesterday, %l∶%M %p"
|
||||
msgstr "Vakar, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm"
|
||||
#: js/misc/util.js:279
|
||||
#: js/misc/util.js:278
|
||||
#, no-c-format
|
||||
msgid "%A, %l∶%M %p"
|
||||
msgstr "%A, %l∶%M %p"
|
||||
@ -758,7 +778,7 @@ msgstr "%A, %l∶%M %p"
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 12h format.
|
||||
#. i.e. "May 25, 2:30 pm"
|
||||
#: js/misc/util.js:285
|
||||
#: js/misc/util.js:284
|
||||
#, no-c-format
|
||||
msgid "%B %-d, %l∶%M %p"
|
||||
msgstr "%B %-d, %l∶%M %p"
|
||||
@ -766,17 +786,17 @@ msgstr "%B %-d, %l∶%M %p"
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 12h format.
|
||||
#. i.e. "May 25 2012, 2:30 pm"
|
||||
#: js/misc/util.js:291
|
||||
#: js/misc/util.js:290
|
||||
#, no-c-format
|
||||
msgid "%B %-d %Y, %l∶%M %p"
|
||||
msgstr "%Y %m %-d, %l∶%M %p"
|
||||
|
||||
#. TRANSLATORS: this is the title of the wifi captive portal login window
|
||||
#: js/portalHelper/main.js:49
|
||||
#: js/portalHelper/main.js:42
|
||||
msgid "Hotspot Login"
|
||||
msgstr "Prisijungimas prie prieigos taško"
|
||||
|
||||
#: js/portalHelper/main.js:95
|
||||
#: js/portalHelper/main.js:88
|
||||
msgid ""
|
||||
"Your connection to this hotspot login is not secure. Passwords or other "
|
||||
"information you enter on this page can be viewed by people nearby."
|
||||
@ -1021,39 +1041,39 @@ msgstr "Įdiegta udisks versija nepalaiko PIM nustatymo"
|
||||
msgid "Open with %s"
|
||||
msgstr "Atverti su %s"
|
||||
|
||||
#: js/ui/components/networkAgent.js:92
|
||||
#: js/ui/components/networkAgent.js:93
|
||||
msgid ""
|
||||
"Alternatively you can connect by pushing the “WPS” button on your router."
|
||||
msgstr ""
|
||||
"Taip pat galite prisijungti paspausdami „WPS“ mygtuką savo maršrutizatoriuje."
|
||||
|
||||
#: js/ui/components/networkAgent.js:104 js/ui/status/network.js:258
|
||||
#: js/ui/components/networkAgent.js:105 js/ui/status/network.js:258
|
||||
#: js/ui/status/network.js:349 js/ui/status/network.js:981
|
||||
msgid "Connect"
|
||||
msgstr "Prisijungti"
|
||||
|
||||
#: js/ui/components/networkAgent.js:215
|
||||
#: js/ui/components/networkAgent.js:216
|
||||
msgid "Key"
|
||||
msgstr "Raktas"
|
||||
|
||||
#: js/ui/components/networkAgent.js:253 js/ui/components/networkAgent.js:276
|
||||
#: js/ui/components/networkAgent.js:254 js/ui/components/networkAgent.js:277
|
||||
msgid "Private key password"
|
||||
msgstr "Privataus rakto slaptažodis"
|
||||
|
||||
#: js/ui/components/networkAgent.js:274
|
||||
#: js/ui/components/networkAgent.js:275
|
||||
msgid "Identity"
|
||||
msgstr "Tapatybė"
|
||||
|
||||
#: js/ui/components/networkAgent.js:288
|
||||
#: js/ui/components/networkAgent.js:289
|
||||
msgid "Service"
|
||||
msgstr "Tarnyba"
|
||||
|
||||
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:345
|
||||
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:346
|
||||
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
|
||||
msgid "Authentication required"
|
||||
msgstr "Reikia patvirtinti tapatybę"
|
||||
|
||||
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:680
|
||||
#: js/ui/components/networkAgent.js:319 js/ui/components/networkAgent.js:680
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -1062,31 +1082,31 @@ msgstr ""
|
||||
"Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio "
|
||||
"tinklo „%s“."
|
||||
|
||||
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:684
|
||||
#: js/ui/components/networkAgent.js:323 js/ui/components/networkAgent.js:684
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Laidinis 802.1X tapatybės patvirtinimas"
|
||||
|
||||
#: js/ui/components/networkAgent.js:324
|
||||
#: js/ui/components/networkAgent.js:325
|
||||
msgid "Network name"
|
||||
msgstr "Tinklo vardas"
|
||||
|
||||
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:688
|
||||
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:688
|
||||
msgid "DSL authentication"
|
||||
msgstr "DSL tapatybės patvirtinimas"
|
||||
|
||||
#: js/ui/components/networkAgent.js:336 js/ui/components/networkAgent.js:693
|
||||
#: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:693
|
||||
msgid "PIN code required"
|
||||
msgstr "Reikalingas PIN kodas"
|
||||
|
||||
#: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:694
|
||||
#: js/ui/components/networkAgent.js:338 js/ui/components/networkAgent.js:694
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Reikalingas PIN kodas mobiliajam plačiajuosčiam įrenginiui"
|
||||
|
||||
#: js/ui/components/networkAgent.js:338
|
||||
#: js/ui/components/networkAgent.js:339
|
||||
msgid "PIN"
|
||||
msgstr "PIN"
|
||||
|
||||
#: js/ui/components/networkAgent.js:346 js/ui/components/networkAgent.js:685
|
||||
#: js/ui/components/networkAgent.js:347 js/ui/components/networkAgent.js:685
|
||||
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
|
||||
#: js/ui/components/networkAgent.js:705
|
||||
#, javascript-format
|
||||
@ -1383,24 +1403,24 @@ msgstr "%s (nutolęs)"
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (komandų eilutė)"
|
||||
|
||||
#: js/ui/extensionDownloader.js:232
|
||||
#: js/ui/extensionDownloader.js:194
|
||||
msgid "Install"
|
||||
msgstr "Įdiegti"
|
||||
|
||||
#: js/ui/extensionDownloader.js:238
|
||||
#: js/ui/extensionDownloader.js:200
|
||||
msgid "Install Extension"
|
||||
msgstr "Išdiegti plėtinį"
|
||||
|
||||
#: js/ui/extensionDownloader.js:239
|
||||
#: js/ui/extensionDownloader.js:201
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Parsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
|
||||
|
||||
#: js/ui/extensionSystem.js:252
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Yra plėtinių atnaujinimų"
|
||||
|
||||
#: js/ui/extensionSystem.js:253
|
||||
#: js/ui/extensionSystem.js:254
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Plėtinių atnaujinimai paruošti diegimui."
|
||||
|
||||
@ -1495,7 +1515,7 @@ msgstr "Išjungti"
|
||||
msgid "Leave Off"
|
||||
msgstr "Palikti išjungtą"
|
||||
|
||||
#: js/ui/keyboard.js:226
|
||||
#: js/ui/keyboard.js:227
|
||||
msgid "Region & Language Settings"
|
||||
msgstr "Regiono ir kalbos nustatymai"
|
||||
|
||||
@ -1548,11 +1568,11 @@ msgstr "Žiūrėti šaltinį"
|
||||
msgid "Web Page"
|
||||
msgstr "Tinklalapis"
|
||||
|
||||
#: js/ui/main.js:290
|
||||
#: js/ui/main.js:294
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Prisijungta privilegijuotu naudotoju"
|
||||
|
||||
#: js/ui/main.js:291
|
||||
#: js/ui/main.js:295
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1560,15 +1580,15 @@ msgstr ""
|
||||
"Saugumo sumetimais turėtų būti vengiama vykdyti seansus privilegijuotais "
|
||||
"naudotojais. Jei įmanoma, turėtumėt visada prisjungti normaliu naudotoju."
|
||||
|
||||
#: js/ui/main.js:340
|
||||
#: js/ui/main.js:344
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "Ekrano užraktas išjungtas"
|
||||
|
||||
#: js/ui/main.js:341
|
||||
#: js/ui/main.js:345
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "Ekrano užrakinimas reikalaujas GNOME vaizduoklio valdyklės."
|
||||
|
||||
#: js/ui/messageTray.js:1443
|
||||
#: js/ui/messageTray.js:1440
|
||||
msgid "System Information"
|
||||
msgstr "Sistemos informacija"
|
||||
|
||||
@ -1602,47 +1622,47 @@ msgstr "Atšaukti"
|
||||
msgid "Overview"
|
||||
msgstr "Apžvalga"
|
||||
|
||||
#: js/ui/padOsd.js:95
|
||||
#: js/ui/padOsd.js:96
|
||||
msgid "New shortcut…"
|
||||
msgstr "Naujas trumpinys…"
|
||||
|
||||
#: js/ui/padOsd.js:142
|
||||
#: js/ui/padOsd.js:143
|
||||
msgid "Application defined"
|
||||
msgstr "Programos nustatytas"
|
||||
|
||||
#: js/ui/padOsd.js:143
|
||||
#: js/ui/padOsd.js:144
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Rodyti pagalbą ekrane"
|
||||
|
||||
#: js/ui/padOsd.js:144
|
||||
#: js/ui/padOsd.js:145
|
||||
msgid "Switch monitor"
|
||||
msgstr "Keisti monitorių"
|
||||
|
||||
#: js/ui/padOsd.js:145
|
||||
#: js/ui/padOsd.js:146
|
||||
msgid "Assign keystroke"
|
||||
msgstr "Priskirti klavišų kombinaciją"
|
||||
|
||||
#: js/ui/padOsd.js:211
|
||||
#: js/ui/padOsd.js:212
|
||||
msgid "Done"
|
||||
msgstr "Atlikta"
|
||||
|
||||
#: js/ui/padOsd.js:716
|
||||
#: js/ui/padOsd.js:718
|
||||
msgid "Edit…"
|
||||
msgstr "Keisti…"
|
||||
|
||||
#: js/ui/padOsd.js:758 js/ui/padOsd.js:875
|
||||
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877
|
||||
msgid "None"
|
||||
msgstr "Nėra"
|
||||
|
||||
#: js/ui/padOsd.js:829
|
||||
#: js/ui/padOsd.js:831
|
||||
msgid "Press a button to configure"
|
||||
msgstr "Spauskite mygtuką konfigūravimui"
|
||||
|
||||
#: js/ui/padOsd.js:830
|
||||
#: js/ui/padOsd.js:832
|
||||
msgid "Press Esc to exit"
|
||||
msgstr "Spauskit Esc išėjimui"
|
||||
|
||||
#: js/ui/padOsd.js:833
|
||||
#: js/ui/padOsd.js:835
|
||||
msgid "Press any key to exit"
|
||||
msgstr "Išėjimui spauskite bet kurį klavišą"
|
||||
|
||||
@ -1652,12 +1672,12 @@ msgstr "Išėjimui spauskite bet kurį klavišą"
|
||||
msgid "Activities"
|
||||
msgstr "Apžvalga"
|
||||
|
||||
#: js/ui/panel.js:556
|
||||
#: js/ui/panel.js:542
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Sistema"
|
||||
|
||||
#: js/ui/panel.js:674
|
||||
#: js/ui/panel.js:658
|
||||
msgid "Top Bar"
|
||||
msgstr "Viršutinė juosta"
|
||||
|
||||
@ -1696,7 +1716,7 @@ msgstr "Nepavyksta užrakinti"
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Programa užblokavo užrakinimą"
|
||||
|
||||
#: js/ui/screenshot.js:155
|
||||
#: js/ui/screenshot.js:141
|
||||
msgid "Screenshot taken"
|
||||
msgstr "Ekrano nuotrauka padaryta"
|
||||
|
||||
@ -2205,6 +2225,7 @@ msgid "Balanced"
|
||||
msgstr "Balansuotas"
|
||||
|
||||
#: js/ui/status/powerProfiles.js:21
|
||||
#| msgid "Power Settings"
|
||||
msgctxt "Power profile"
|
||||
msgid "Power Saver"
|
||||
msgstr "Taupantis energiją"
|
||||
@ -2398,10 +2419,13 @@ msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
|
||||
#: js/ui/windowMenu.js:27
|
||||
#| msgid "Hide Text"
|
||||
msgid "Hide"
|
||||
msgstr "Slėpti"
|
||||
|
||||
#: js/ui/windowMenu.js:34
|
||||
#| msgctxt "search-result"
|
||||
#| msgid "Restart"
|
||||
msgid "Restore"
|
||||
msgstr "Atstatyti"
|
||||
|
||||
@ -2754,7 +2778,6 @@ msgstr "UUID, pavadinimas ir aprašymas yra būtini"
|
||||
#: subprojects/extensions-tool/src/command-enable.c:46
|
||||
#: subprojects/extensions-tool/src/command-info.c:50
|
||||
#: subprojects/extensions-tool/src/command-list.c:64
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell\n"
|
||||
msgstr "Nepavyko prisijungti prie GNOME apvalkalo\n"
|
||||
|
||||
@ -2771,7 +2794,7 @@ msgstr "Išjungti plėtinį"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:119
|
||||
#: subprojects/extensions-tool/src/command-enable.c:119
|
||||
#: subprojects/extensions-tool/src/command-info.c:103
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:105
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:97
|
||||
#: subprojects/extensions-tool/src/command-reset.c:76
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:104
|
||||
msgid "No UUID given"
|
||||
@ -2780,7 +2803,7 @@ msgstr "Nenurodytas UUID"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:124
|
||||
#: subprojects/extensions-tool/src/command-enable.c:124
|
||||
#: subprojects/extensions-tool/src/command-info.c:108
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:110
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:102
|
||||
#: subprojects/extensions-tool/src/command-reset.c:81
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:109
|
||||
msgid "More than one UUID given"
|
||||
@ -2910,12 +2933,7 @@ msgstr "Nurodytas daugiau nei vienas kodo aplankas"
|
||||
msgid "Extension “%s” doesn't have preferences\n"
|
||||
msgstr "Plėtinys „%s“ neturi nustatymų\n"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:62
|
||||
#, c-format
|
||||
msgid "Failed to open prefs for extension “%s”: %s\n"
|
||||
msgstr "Nepavyko atverti nuostatų plėtinio „%s“: %s\n"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:87
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:79
|
||||
msgid "Opens extension preferences"
|
||||
msgstr "Atveria plėtinio nuostatas"
|
||||
|
||||
@ -2940,6 +2958,10 @@ msgstr "Išdiegti plėtinį"
|
||||
msgid "Do not print error messages"
|
||||
msgstr "Nespausdinti klaidų pranešimų"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell"
|
||||
msgstr "Nepavyko prisijungti prie GNOME apvalkalo"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:244
|
||||
msgid "Path"
|
||||
msgstr "Kelias"
|
||||
@ -3072,18 +3094,6 @@ msgstr[2] "%u įvesčių"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sistemos garsai"
|
||||
|
||||
#~ msgid "Enable introspection API"
|
||||
#~ msgstr "Įjungti nagrinėjimo sąsają"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Enables a D-Bus API that allows to introspect the application state of "
|
||||
#~ "the shell."
|
||||
#~ msgstr ""
|
||||
#~ "Įjungia D-Bus sąsają, kuri leidžia nagrinėti apvalkalo programos būseną."
|
||||
|
||||
#~ msgid "Failed to connect to GNOME Shell"
|
||||
#~ msgstr "Nepavyko prisijungti prie GNOME apvalkalo"
|
||||
|
||||
#~ msgid "Minimize"
|
||||
#~ msgstr "Sumažinti"
|
||||
|
||||
|
71
po/oc.po
71
po/oc.po
@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master oc\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2021-11-13 20:24+0000\n"
|
||||
"PO-Revision-Date: 2021-11-07 20:30+0100\n"
|
||||
"POT-Creation-Date: 2021-09-09 03:40+0000\n"
|
||||
"PO-Revision-Date: 2021-08-18 11:11+0200\n"
|
||||
"Last-Translator: Quentin PAGÈS\n"
|
||||
"Language-Team: Tot En Òc\n"
|
||||
"Language: oc\n"
|
||||
@ -191,14 +191,14 @@ msgstr "Istoric de la bóstia de dialòg d'inspeccion"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:71
|
||||
msgid "Always show the “Log out” menu item in the user menu."
|
||||
msgstr "Totjorn afichar l’element « Se desconnectar » dins lo menú utilizaire."
|
||||
msgstr "Totjorn afichar l’element « Se desconnectar » dins lo menú utilizaire."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:72
|
||||
msgid ""
|
||||
"This key overrides the automatic hiding of the “Log out” menu item in single-"
|
||||
"user, single-session situations."
|
||||
msgstr ""
|
||||
"Aquesta clau aficha l’element « Se desconnectar » del menú utilizaire "
|
||||
"Aquesta clau aficha l’element « Se desconnectar » del menú utilizaire "
|
||||
"normalament amagat automaticament dins lo cas d’una session o d’un "
|
||||
"utilizaire unic."
|
||||
|
||||
@ -218,7 +218,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Lo shell demandarà un senhal al montatge d’un periferic chifrat o d’un "
|
||||
"sistèma de fichièrs distant. Se lo senhal pòt èsser enregistrat per una "
|
||||
"utilizacion ulteriora, una casa de marcar « Se remembrar del senhal » serà "
|
||||
"utilizacion ulteriora, una casa de marcar « Se remembrar del senhal » serà "
|
||||
"presenta. Aquesta clau determina l’estat per defaut d'aquesta casa de marcar."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:89
|
||||
@ -241,7 +241,7 @@ msgstr ""
|
||||
#: data/org.gnome.shell.gschema.xml.in:99
|
||||
msgid "The last version the “Welcome to GNOME” dialog was shown for"
|
||||
msgstr ""
|
||||
"La darrièra version de la fenèstra de « Benvenguda a GNOME » èra mostrada per"
|
||||
"La darrièra version de la fenèstra de « Benvenguda a GNOME » èra mostrada per"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:100
|
||||
msgid ""
|
||||
@ -250,7 +250,7 @@ msgid ""
|
||||
"number will represent versions that do not exist yet. This huge number can "
|
||||
"be used to effectively disable the dialog."
|
||||
msgstr ""
|
||||
"Aquesta clau determina la version de la fenèstra « Benvenguda de GNOME » "
|
||||
"Aquesta clau determina la version de la fenèstra « la Benvenguda de GNOME » "
|
||||
"darrièrament afichada. Una cadena de tèxt voida indica la version mai "
|
||||
"anciana possibla, e un grand nombre representa una version qu'existís pas "
|
||||
"encara. Un grand nombre pòt servir a desactivar d’un biais efectiu la "
|
||||
@ -301,13 +301,13 @@ msgstr ""
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:170
|
||||
msgid "Keybinding to open the “Show Applications” view"
|
||||
msgstr "Combinason de tòcas per dobrir la vista « Afichar las aplicacions »"
|
||||
msgstr "Combinason de tòcas per dobrir la vista « Afichar las aplicacions »"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:171
|
||||
msgid ""
|
||||
"Keybinding to open the “Show Applications” view of the Activities Overview."
|
||||
msgstr ""
|
||||
"Combinason de tòcas per dobrir la vista « Afichar las aplicacions » de la "
|
||||
"Combinason de tòcas per dobrir la vista « Afichar las aplicacions » de la "
|
||||
"vista d’ensemble de las activitats."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:178
|
||||
@ -399,9 +399,9 @@ msgid ""
|
||||
"only” (shows only the application icon) or “both”."
|
||||
msgstr ""
|
||||
"Configura lo biais que las fenèstras son afichadas dins lo selector. Las "
|
||||
"causidas possiblas son « thumbnail-only » (aficha una miniatura de la "
|
||||
"fenèstra), « app-icon-only » (aficha unicament l’icòna de l’aplicacion), o « "
|
||||
"both » (aficha los dos)."
|
||||
"causidas possiblas son « thumbnail-only » (aficha una miniatura de la "
|
||||
"fenèstra), « app-icon-only » (aficha unicament l’icòna de l’aplicacion), o « "
|
||||
"both » (aficha los dos)."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:268
|
||||
msgid ""
|
||||
@ -522,7 +522,7 @@ msgstr "Causir una session"
|
||||
|
||||
#: js/gdm/loginDialog.js:456
|
||||
msgid "Not listed?"
|
||||
msgstr "Absent de la lista ?"
|
||||
msgstr "Absent de la lista ?"
|
||||
|
||||
#. Translators: this message is shown below the username entry field
|
||||
#. to clue the user in on how to login to the local network realm
|
||||
@ -653,7 +653,7 @@ msgstr "Impossible d'analisar la comanda :"
|
||||
#: js/misc/util.js:165
|
||||
#, javascript-format
|
||||
msgid "Execution of “%s” failed:"
|
||||
msgstr "Execucion de « %s » impossibla :"
|
||||
msgstr "Execucion de « %s » impossibla :"
|
||||
|
||||
#: js/misc/util.js:182
|
||||
msgid "Just now"
|
||||
@ -989,7 +989,7 @@ msgstr "Escafar"
|
||||
#: js/ui/closeDialog.js:42
|
||||
#, javascript-format
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "« %s » respond pas."
|
||||
msgstr "« %s » respond pas."
|
||||
|
||||
#: js/ui/closeDialog.js:43
|
||||
msgid ""
|
||||
@ -1064,7 +1064,7 @@ msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
"“%s”."
|
||||
msgstr ""
|
||||
"Cal un senhal o una clau de chiframent per accedir a la ret sens fial « %s »."
|
||||
"Cal un senhal o una clau de chiframent per accedir a la ret sens fial « %s »."
|
||||
|
||||
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:684
|
||||
msgid "Wired 802.1X authentication"
|
||||
@ -1095,7 +1095,7 @@ msgstr "PIN"
|
||||
#: js/ui/components/networkAgent.js:705
|
||||
#, javascript-format
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "Un senhal es requesit per se connectar a « %s »."
|
||||
msgstr "Un senhal es requesit per se connectar a « %s »."
|
||||
|
||||
#: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1789
|
||||
msgid "Network Manager"
|
||||
@ -1433,13 +1433,13 @@ msgstr "Installar l’extension"
|
||||
#: js/ui/extensionDownloader.js:239
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Telecargar e installar « %s » a partir de extensions.gnome.org ?"
|
||||
msgstr "Telecargar e installar « %s » a partir de extensions.gnome.org ?"
|
||||
|
||||
#: js/ui/extensionSystem.js:266
|
||||
#: js/ui/extensionSystem.js:252
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Mesas a jorn extension disponiblas"
|
||||
|
||||
#: js/ui/extensionSystem.js:267
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Mesas a jorn per l’extension prèstas per installacion."
|
||||
|
||||
@ -2404,7 +2404,7 @@ msgstr "Far la visita"
|
||||
#: js/ui/windowAttentionHandler.js:20
|
||||
#, javascript-format
|
||||
msgid "“%s” is ready"
|
||||
msgstr "« %s » es prèst"
|
||||
msgstr "« %s » es prèst"
|
||||
|
||||
#. Translators: This string should be shorter than 30 characters
|
||||
#: js/ui/windowManager.js:63
|
||||
@ -2518,7 +2518,7 @@ msgstr "Mòde utilizat per GDM per l'ecran de connexion"
|
||||
|
||||
#: src/main.c:431
|
||||
msgid "Use a specific mode, e.g. “gdm” for login screen"
|
||||
msgstr "Utilizar un mòde particular, per ex. « gdm » per l’ecran de connexion"
|
||||
msgstr "Utilizar un mòde particular, per ex. « gdm » per l’ecran de connexion"
|
||||
|
||||
#: src/main.c:437
|
||||
msgid "List possible modes"
|
||||
@ -2532,7 +2532,7 @@ msgstr "Desconegut"
|
||||
#: src/shell-app.c:549
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Impossible d'aviar « %s »"
|
||||
msgstr "Impossible d'aviar « %s »"
|
||||
|
||||
#: src/shell-keyring-prompt.c:731
|
||||
msgid "Passwords do not match."
|
||||
@ -2583,7 +2583,7 @@ msgstr "Cap de correspondéncia pas trobada"
|
||||
#: subprojects/extensions-app/js/main.js:179
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "Suprimir « %s » ?"
|
||||
msgstr "Suprimir « %s » ?"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:180
|
||||
msgid ""
|
||||
@ -2794,7 +2794,6 @@ msgstr "Los camps UUIS, nom e descripcion son obligatòris"
|
||||
#: subprojects/extensions-tool/src/command-enable.c:46
|
||||
#: subprojects/extensions-tool/src/command-info.c:50
|
||||
#: subprojects/extensions-tool/src/command-list.c:64
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell\n"
|
||||
msgstr "Error en se connectant a Shell de GNOME\n"
|
||||
|
||||
@ -2811,7 +2810,7 @@ msgstr "Desactivar una extension"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:119
|
||||
#: subprojects/extensions-tool/src/command-enable.c:119
|
||||
#: subprojects/extensions-tool/src/command-info.c:103
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:105
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:97
|
||||
#: subprojects/extensions-tool/src/command-reset.c:76
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:104
|
||||
msgid "No UUID given"
|
||||
@ -2820,7 +2819,7 @@ msgstr "Cap d’UUID pas indicat"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:124
|
||||
#: subprojects/extensions-tool/src/command-enable.c:124
|
||||
#: subprojects/extensions-tool/src/command-info.c:108
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:110
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:102
|
||||
#: subprojects/extensions-tool/src/command-reset.c:81
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:109
|
||||
msgid "More than one UUID given"
|
||||
@ -2950,12 +2949,7 @@ msgstr "Mai d’un repertòri font indicat"
|
||||
msgid "Extension “%s” doesn't have preferences\n"
|
||||
msgstr "L’extension « %s » a pas de preferéncias\n"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:62
|
||||
#, c-format
|
||||
msgid "Failed to open prefs for extension “%s”: %s\n"
|
||||
msgstr "Dobertura impossibla de las preferéncias per l'extension « %s » : %s\n"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:87
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:79
|
||||
msgid "Opens extension preferences"
|
||||
msgstr "Dobrís las preferéncias de las extensions"
|
||||
|
||||
@ -2980,6 +2974,10 @@ msgstr "Desinstallar una extension"
|
||||
msgid "Do not print error messages"
|
||||
msgstr "Afichar pas los messatges d'error"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell"
|
||||
msgstr "Error en se connectant a Shell de GNOME"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:244
|
||||
msgid "Path"
|
||||
msgstr "Camin"
|
||||
@ -2998,7 +2996,7 @@ msgstr "Estat"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:290
|
||||
msgid "“version” takes no arguments"
|
||||
msgstr "« version » accèpta pas cap de paramètre"
|
||||
msgstr "« version » accèpta pas cap de paramètre"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:292
|
||||
#: subprojects/extensions-tool/src/main.c:312
|
||||
@ -3020,7 +3018,7 @@ msgstr "[PARAMS...]"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:315
|
||||
msgid "Commands:"
|
||||
msgstr "Comandas :"
|
||||
msgstr "Comandas :"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:316
|
||||
msgid "Print help"
|
||||
@ -3110,9 +3108,6 @@ msgstr[1] "%u entradas"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sons sistèma"
|
||||
|
||||
#~ msgid "Failed to connect to GNOME Shell"
|
||||
#~ msgstr "Error en se connectant a Shell de GNOME"
|
||||
|
||||
#~ msgid "Enable introspection API"
|
||||
#~ msgstr "Activar l’API d’introspeccion"
|
||||
|
||||
|
20
po/pl.po
20
po/pl.po
@ -10,8 +10,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2021-11-04 17:29+0000\n"
|
||||
"PO-Revision-Date: 2021-11-06 14:25+0100\n"
|
||||
"POT-Creation-Date: 2021-09-03 21:44+0000\n"
|
||||
"PO-Revision-Date: 2021-09-11 15:48+0200\n"
|
||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||
"Language-Team: Polish <community-poland@mozilla.org>\n"
|
||||
"Language: pl\n"
|
||||
@ -2771,7 +2771,6 @@ msgstr "UUID, nazwa i opis są wymagane"
|
||||
#: subprojects/extensions-tool/src/command-enable.c:46
|
||||
#: subprojects/extensions-tool/src/command-info.c:50
|
||||
#: subprojects/extensions-tool/src/command-list.c:64
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell\n"
|
||||
msgstr "Połączenie z powłoką GNOME się nie powiodło\n"
|
||||
|
||||
@ -2788,7 +2787,7 @@ msgstr "Wyłącza rozszerzenie"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:119
|
||||
#: subprojects/extensions-tool/src/command-enable.c:119
|
||||
#: subprojects/extensions-tool/src/command-info.c:103
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:105
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:97
|
||||
#: subprojects/extensions-tool/src/command-reset.c:76
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:104
|
||||
msgid "No UUID given"
|
||||
@ -2797,7 +2796,7 @@ msgstr "Nie podano UUID"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:124
|
||||
#: subprojects/extensions-tool/src/command-enable.c:124
|
||||
#: subprojects/extensions-tool/src/command-info.c:108
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:110
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:102
|
||||
#: subprojects/extensions-tool/src/command-reset.c:81
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:109
|
||||
msgid "More than one UUID given"
|
||||
@ -2927,12 +2926,7 @@ msgstr "Podano więcej niż jeden katalog źródłowy"
|
||||
msgid "Extension “%s” doesn't have preferences\n"
|
||||
msgstr "Rozszerzenie „%s” nie ma preferencji\n"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:62
|
||||
#, c-format
|
||||
msgid "Failed to open prefs for extension “%s”: %s\n"
|
||||
msgstr "Otwarcie preferencji rozszerzenia „%s” się nie powiodło: %s\n"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:87
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:79
|
||||
msgid "Opens extension preferences"
|
||||
msgstr "Otwiera preferencje rozszerzenia"
|
||||
|
||||
@ -2957,6 +2951,10 @@ msgstr "Odinstalowuje rozszerzenie"
|
||||
msgid "Do not print error messages"
|
||||
msgstr "Bez wyświetlania komunikatów o błędach"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell"
|
||||
msgstr "Połączenie z powłoką GNOME się nie powiodło"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:244
|
||||
msgid "Path"
|
||||
msgstr "Ścieżka"
|
||||
|
40
po/pt.po
40
po/pt.po
@ -16,8 +16,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 3.14\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2021-11-26 16:19+0000\n"
|
||||
"PO-Revision-Date: 2021-11-27 15:42+0000\n"
|
||||
"POT-Creation-Date: 2021-11-03 10:04+0000\n"
|
||||
"PO-Revision-Date: 2021-11-03 11:49+0000\n"
|
||||
"Last-Translator: Hugo Carvalho <hugokarvalho@hotmail.com>\n"
|
||||
"Language-Team: Português <https://l10n.gnome.org/teams/pt/>\n"
|
||||
"Language: pt\n"
|
||||
@ -802,7 +802,7 @@ msgstr "Negar acesso"
|
||||
msgid "Grant Access"
|
||||
msgstr "Conceder acesso"
|
||||
|
||||
#: js/ui/appDisplay.js:1791
|
||||
#: js/ui/appDisplay.js:1846
|
||||
msgid "Unnamed Folder"
|
||||
msgstr "Pasta sem nome"
|
||||
|
||||
@ -1398,11 +1398,11 @@ msgstr "Instalar extensão"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Transferir e instalar \"%s\" a partir de extensions.gnome.org?"
|
||||
|
||||
#: js/ui/extensionSystem.js:266
|
||||
#: js/ui/extensionSystem.js:252
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Há atualizações de extensões disponíveis"
|
||||
|
||||
#: js/ui/extensionSystem.js:267
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "As atualizações de extensões estão prontas para serem instaladas."
|
||||
|
||||
@ -1551,23 +1551,11 @@ msgstr "Ver fonte"
|
||||
msgid "Web Page"
|
||||
msgstr "Página Web"
|
||||
|
||||
#: js/ui/main.js:259
|
||||
msgid "System was put in unsafe mode"
|
||||
msgstr "O sistema foi colocado em modo inseguro"
|
||||
|
||||
#: js/ui/main.js:260
|
||||
msgid "Applications now have unrestricted access"
|
||||
msgstr "As aplicações têm agora acesso sem restrições"
|
||||
|
||||
#: js/ui/main.js:261 js/ui/overview.js:58
|
||||
msgid "Undo"
|
||||
msgstr "Desfazer"
|
||||
|
||||
#: js/ui/main.js:307
|
||||
#: js/ui/main.js:290
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Em sessão como utilizador privilegiado"
|
||||
|
||||
#: js/ui/main.js:308
|
||||
#: js/ui/main.js:291
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1575,11 +1563,11 @@ msgstr ""
|
||||
"Executar uma sessão como utilizador privilegiado deve ser evitado por "
|
||||
"motivos de segurança. Se possível, aceder como utilizador normal."
|
||||
|
||||
#: js/ui/main.js:357
|
||||
#: js/ui/main.js:340
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "Bloqueio de ecrã desligado"
|
||||
|
||||
#: js/ui/main.js:358
|
||||
#: js/ui/main.js:341
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "O bloqueio de ecrã requer o gestor de exibição do GNOME."
|
||||
|
||||
@ -1607,6 +1595,10 @@ msgstr "Escreva para pesquisar"
|
||||
msgid "Applications"
|
||||
msgstr "Aplicações"
|
||||
|
||||
#: js/ui/overview.js:58
|
||||
msgid "Undo"
|
||||
msgstr "Desfazer"
|
||||
|
||||
#. Translators: This is the main view to select
|
||||
#. activities. See also note for "Activities" string.
|
||||
#: js/ui/overview.js:71
|
||||
@ -2927,7 +2919,7 @@ msgstr "Criar um pacote de extensões"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-pack.c:501
|
||||
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
|
||||
#, c-format
|
||||
@ -2937,7 +2929,7 @@ msgstr "A extensão “%s” não tem preferências\n"
|
||||
#: 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 a extensão \"%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"
|
||||
@ -3092,7 +3084,7 @@ msgstr[1] "%u entradas"
|
||||
|
||||
#: subprojects/gvc/gvc-mixer-control.c:2867
|
||||
msgid "System Sounds"
|
||||
msgstr "Sons de sistema"
|
||||
msgstr "Sons do sistema"
|
||||
|
||||
#~ msgid "Enable introspection API"
|
||||
#~ msgstr "Ativar API de introspecção"
|
||||
|
463
po/ru.po
463
po/ru.po
@ -15,22 +15,28 @@
|
||||
# Stas Solovey <whats_up@tut.by>, 2011, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020.
|
||||
# Ivan Molodetskikh <yalterz@gmail.com>, 2020.
|
||||
# Konstantin Nezhbert <zhbert@yandex.ru>, 2021.
|
||||
# Melman <Alexmelman88@gmail.com>, 2021.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2021-08-17 23:56+0000\n"
|
||||
"PO-Revision-Date: 2021-08-19 08:44+0300\n"
|
||||
"Last-Translator: Alexey Rubtsov <rushills@gmail.com>\n"
|
||||
"POT-Creation-Date: 2021-11-03 10:04+0000\n"
|
||||
"PO-Revision-Date: 2021-11-03 14:58+0300\n"
|
||||
"Last-Translator: Melman <Alexmelman88@gmail.com>\n"
|
||||
"Language-Team: Russian <gnome-cyr@gnome.org>\n"
|
||||
"Language: ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\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"
|
||||
"X-Generator: Poedit 3.0\n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\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
|
||||
@ -263,23 +269,11 @@ msgstr ""
|
||||
"существуют. Это большое число может быть использовано для эффективного "
|
||||
"отключения диалога."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:109
|
||||
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
|
||||
#: data/org.gnome.shell.gschema.xml.in:133
|
||||
msgid "Layout of the app picker"
|
||||
msgstr "Макет меню выбора приложений"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:142
|
||||
#: data/org.gnome.shell.gschema.xml.in:134
|
||||
msgid ""
|
||||
"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 "
|
||||
@ -292,107 +286,107 @@ msgstr ""
|
||||
"настоящее время в качестве “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"
|
||||
msgstr "Комбинация клавиш для открытия меню приложения"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:158
|
||||
#: data/org.gnome.shell.gschema.xml.in:150
|
||||
msgid "Keybinding to open the application menu."
|
||||
msgstr "Комбинация клавиш для открытия меню приложения."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:164
|
||||
#: data/org.gnome.shell.gschema.xml.in:171
|
||||
#: data/org.gnome.shell.gschema.xml.in:156
|
||||
#: data/org.gnome.shell.gschema.xml.in:163
|
||||
msgid "Keybinding to shift between overview states"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
msgstr "Комбинация клавиш для перехода в режим просмотра приложений"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:179
|
||||
#: data/org.gnome.shell.gschema.xml.in:171
|
||||
msgid ""
|
||||
"Keybinding to open the “Show Applications” view of the Activities Overview."
|
||||
msgstr ""
|
||||
"Комбинация клавиш для перехода в режим просмотра приложений в меню «Обзор»."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:186
|
||||
#: data/org.gnome.shell.gschema.xml.in:178
|
||||
msgid "Keybinding to open the overview"
|
||||
msgstr "Комбинация клавиш для перехода в режим обзора"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:187
|
||||
#: data/org.gnome.shell.gschema.xml.in:179
|
||||
msgid "Keybinding to open the Activities Overview."
|
||||
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"
|
||||
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."
|
||||
msgstr "Комбинация клавиш для отображения или скрытия списка уведомлений."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:200
|
||||
#: data/org.gnome.shell.gschema.xml.in:192
|
||||
msgid "Keybinding to focus the active notification"
|
||||
msgstr "Комбинация клавиш для перевода фокуса на текущее уведомление"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:201
|
||||
#: data/org.gnome.shell.gschema.xml.in:193
|
||||
msgid "Keybinding to focus the active notification."
|
||||
msgstr "Комбинация клавиш для перевода фокуса на текущее уведомление."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
#: data/org.gnome.shell.gschema.xml.in:199
|
||||
msgid "Switch to application 1"
|
||||
msgstr "Переключиться на приложение 1"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:211
|
||||
#: data/org.gnome.shell.gschema.xml.in:203
|
||||
msgid "Switch to application 2"
|
||||
msgstr "Переключиться на приложение 2"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
msgid "Switch to application 3"
|
||||
msgstr "Переключиться на приложение 3"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:219
|
||||
#: data/org.gnome.shell.gschema.xml.in:211
|
||||
msgid "Switch to application 4"
|
||||
msgstr "Переключиться на приложение 4"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
msgid "Switch to application 5"
|
||||
msgstr "Переключиться на приложение 5"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:227
|
||||
#: data/org.gnome.shell.gschema.xml.in:219
|
||||
msgid "Switch to application 6"
|
||||
msgstr "Переключиться на приложение 6"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
msgid "Switch to application 7"
|
||||
msgstr "Переключиться на приложение 7"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:235
|
||||
#: data/org.gnome.shell.gschema.xml.in:227
|
||||
msgid "Switch to application 8"
|
||||
msgstr "Переключиться на приложение 8"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:239
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
msgid "Switch to application 9"
|
||||
msgstr "Переключиться на приложение 9"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:248
|
||||
#: data/org.gnome.shell.gschema.xml.in:275
|
||||
#: data/org.gnome.shell.gschema.xml.in:240
|
||||
#: data/org.gnome.shell.gschema.xml.in:267
|
||||
msgid "Limit switcher to current workspace."
|
||||
msgstr "Ограничить переключатель текущим рабочим местом."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:249
|
||||
#: data/org.gnome.shell.gschema.xml.in:241
|
||||
msgid ""
|
||||
"If true, only applications that have windows on the current workspace are "
|
||||
"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."
|
||||
msgstr "Режим значка приложения."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:267
|
||||
#: data/org.gnome.shell.gschema.xml.in:259
|
||||
msgid ""
|
||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||
"are “thumbnail-only” (shows a thumbnail of the window), “app-icon-"
|
||||
@ -415,7 +409,7 @@ msgstr ""
|
||||
"«thumbnail-only» (показывать миниатюру окна), «app-icon-only» (показывать "
|
||||
"только значок приложения), «both» (показывать миниатюру и значок)."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:276
|
||||
#: data/org.gnome.shell.gschema.xml.in:268
|
||||
msgid ""
|
||||
"If true, only windows from the current workspace are shown in the switcher. "
|
||||
"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"
|
||||
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"
|
||||
msgstr "Местоположения для отображения в мировых часах"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:297
|
||||
#: data/org.gnome.shell.gschema.xml.in:289
|
||||
msgid "Automatic location"
|
||||
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"
|
||||
msgstr "Определяет получать местоположение или нет"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:305
|
||||
#: data/org.gnome.shell.gschema.xml.in:297
|
||||
msgid "Location"
|
||||
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"
|
||||
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"
|
||||
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:336
|
||||
#: data/org.gnome.shell.gschema.xml.in:344
|
||||
#: data/org.gnome.shell.gschema.xml.in:352
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"Этот ключ переопределяет ключ в 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"
|
||||
msgstr ""
|
||||
"Включить автоматическое изменение размеров окон при перемещении окон к краям "
|
||||
"экрана"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:335
|
||||
#: data/org.gnome.shell.gschema.xml.in:327
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "Рабочие места управляются динамически"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:343
|
||||
#: data/org.gnome.shell.gschema.xml.in:335
|
||||
msgid "Workspaces only on primary monitor"
|
||||
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"
|
||||
msgstr "Задержка изменения фокуса в режиме мыши после остановки указателя"
|
||||
|
||||
@ -510,18 +504,18 @@ msgid "Visit extension homepage"
|
||||
msgstr "Посетить домашнюю страницу расширения"
|
||||
|
||||
#: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61
|
||||
#: js/ui/components/networkAgent.js:111 js/ui/components/polkitAgent.js:138
|
||||
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:190
|
||||
#: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:138
|
||||
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:228
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183
|
||||
msgid "Cancel"
|
||||
msgstr "Отмена"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:210
|
||||
#: js/ui/components/networkAgent.js:226 js/ui/components/networkAgent.js:250
|
||||
#: js/ui/components/networkAgent.js:271 js/ui/components/networkAgent.js:291
|
||||
#: js/ui/components/networkAgent.js:301 js/ui/components/polkitAgent.js:275
|
||||
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:209
|
||||
#: js/ui/components/networkAgent.js:225 js/ui/components/networkAgent.js:249
|
||||
#: js/ui/components/networkAgent.js:270 js/ui/components/networkAgent.js:290
|
||||
#: js/ui/components/networkAgent.js:300 js/ui/components/polkitAgent.js:275
|
||||
#: js/ui/shellMountOperation.js:326
|
||||
msgid "Password"
|
||||
msgstr "Пароль"
|
||||
@ -544,8 +538,8 @@ msgstr "(например, пользователь или %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:246
|
||||
#: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:287
|
||||
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:245
|
||||
#: js/ui/components/networkAgent.js:268 js/ui/components/networkAgent.js:286
|
||||
msgid "Username"
|
||||
msgstr "Имя пользователя"
|
||||
|
||||
@ -650,26 +644,26 @@ msgctxt "search-result"
|
||||
msgid "Lock Screen Rotation"
|
||||
msgstr "Заблокировать ориентацию экрана"
|
||||
|
||||
#: js/misc/util.js:120
|
||||
#: js/misc/util.js:121
|
||||
msgid "Command not found"
|
||||
msgstr "Команда не найдена"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: js/misc/util.js:156
|
||||
#: js/misc/util.js:157
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Не удалось разобрать команду:"
|
||||
|
||||
#: js/misc/util.js:164
|
||||
#: js/misc/util.js:165
|
||||
#, javascript-format
|
||||
msgid "Execution of “%s” failed:"
|
||||
msgstr "Не удалось выполнить «%s»:"
|
||||
|
||||
#: js/misc/util.js:181
|
||||
#: js/misc/util.js:182
|
||||
msgid "Just now"
|
||||
msgstr "Прямо сейчас"
|
||||
|
||||
#: js/misc/util.js:183
|
||||
#: js/misc/util.js:184
|
||||
#, javascript-format
|
||||
msgid "%d minute ago"
|
||||
msgid_plural "%d minutes ago"
|
||||
@ -677,7 +671,7 @@ msgstr[0] "%d минута назад"
|
||||
msgstr[1] "%d минуты назад"
|
||||
msgstr[2] "%d минут назад"
|
||||
|
||||
#: js/misc/util.js:187
|
||||
#: js/misc/util.js:188
|
||||
#, javascript-format
|
||||
msgid "%d hour ago"
|
||||
msgid_plural "%d hours ago"
|
||||
@ -685,11 +679,11 @@ msgstr[0] "%d час назад"
|
||||
msgstr[1] "%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"
|
||||
msgstr "Вчера"
|
||||
|
||||
#: js/misc/util.js:193
|
||||
#: js/misc/util.js:194
|
||||
#, javascript-format
|
||||
msgid "%d day ago"
|
||||
msgid_plural "%d days ago"
|
||||
@ -697,7 +691,7 @@ msgstr[0] "%d день назад"
|
||||
msgstr[1] "%d дня назад"
|
||||
msgstr[2] "%d дней назад"
|
||||
|
||||
#: js/misc/util.js:197
|
||||
#: js/misc/util.js:198
|
||||
#, javascript-format
|
||||
msgid "%d week ago"
|
||||
msgid_plural "%d weeks ago"
|
||||
@ -705,7 +699,7 @@ msgstr[0] "%d неделя назад"
|
||||
msgstr[1] "%d недели назад"
|
||||
msgstr[2] "%d недель назад"
|
||||
|
||||
#: js/misc/util.js:201
|
||||
#: js/misc/util.js:202
|
||||
#, javascript-format
|
||||
msgid "%d month ago"
|
||||
msgid_plural "%d months ago"
|
||||
@ -713,7 +707,7 @@ msgstr[0] "%d месяц назад"
|
||||
msgstr[1] "%d месяца назад"
|
||||
msgstr[2] "%d месяцев назад"
|
||||
|
||||
#: js/misc/util.js:204
|
||||
#: js/misc/util.js:205
|
||||
#, javascript-format
|
||||
msgid "%d year ago"
|
||||
msgid_plural "%d years ago"
|
||||
@ -722,20 +716,20 @@ msgstr[1] "%d года назад"
|
||||
msgstr[2] "%d лет назад"
|
||||
|
||||
#. Translators: Time in 24h format
|
||||
#: js/misc/util.js:237
|
||||
#: js/misc/util.js:238
|
||||
msgid "%H∶%M"
|
||||
msgstr "%H∶%M"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 24h format. i.e. "Yesterday, 14:30"
|
||||
#: js/misc/util.js:243
|
||||
#: js/misc/util.js:244
|
||||
#, no-c-format
|
||||
msgid "Yesterday, %H∶%M"
|
||||
msgstr "Вчера, %H∶%M"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 24h format. i.e. "Monday, 14:30"
|
||||
#: js/misc/util.js:249
|
||||
#: js/misc/util.js:250
|
||||
#, no-c-format
|
||||
msgid "%A, %H∶%M"
|
||||
msgstr "%A, %H∶%M"
|
||||
@ -743,7 +737,7 @@ msgstr "%A, %H∶%M"
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 24h format.
|
||||
#. i.e. "May 25, 14:30"
|
||||
#: js/misc/util.js:255
|
||||
#: js/misc/util.js:256
|
||||
#, no-c-format
|
||||
msgid "%B %-d, %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
|
||||
#. number followed by a time string in 24h format.
|
||||
#. i.e. "May 25 2012, 14:30"
|
||||
#: js/misc/util.js:261
|
||||
#: js/misc/util.js:262
|
||||
#, no-c-format
|
||||
msgid "%B %-d %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
|
||||
#. eslint-disable-line no-lonely-if
|
||||
#. Translators: Time in 12h format
|
||||
#: js/misc/util.js:266
|
||||
#: js/misc/util.js:267
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%-l∶%M %p"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm"
|
||||
#: js/misc/util.js:272
|
||||
#: js/misc/util.js:273
|
||||
#, no-c-format
|
||||
msgid "Yesterday, %l∶%M %p"
|
||||
msgstr "Вчера, %-l∶%M %p"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm"
|
||||
#: js/misc/util.js:278
|
||||
#: js/misc/util.js:279
|
||||
#, no-c-format
|
||||
msgid "%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
|
||||
#. followed by a time string in 12h format.
|
||||
#. i.e. "May 25, 2:30 pm"
|
||||
#: js/misc/util.js:284
|
||||
#: js/misc/util.js:285
|
||||
#, no-c-format
|
||||
msgid "%B %-d, %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
|
||||
#. number followed by a time string in 12h format.
|
||||
#. i.e. "May 25 2012, 2:30 pm"
|
||||
#: js/misc/util.js:290
|
||||
#: js/misc/util.js:291
|
||||
#, no-c-format
|
||||
msgid "%B %-d %Y, %l∶%M %p"
|
||||
msgstr "%-d %B %Y, %l∶%M %p"
|
||||
|
||||
#. 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"
|
||||
msgstr "Авторизация в точке доступа"
|
||||
|
||||
#: js/portalHelper/main.js:88
|
||||
#: js/portalHelper/main.js:95
|
||||
msgid ""
|
||||
"Your connection to this hotspot login is not secure. Passwords or other "
|
||||
"information you enter on this page can be viewed by people nearby."
|
||||
@ -1045,40 +1039,40 @@ msgstr "Установленная версия udisks не поддержива
|
||||
msgid "Open with %s"
|
||||
msgstr "Открыть с помощью %s"
|
||||
|
||||
#: js/ui/components/networkAgent.js:93
|
||||
#: js/ui/components/networkAgent.js:92
|
||||
msgid ""
|
||||
"Alternatively you can connect by pushing the “WPS” button on your router."
|
||||
msgstr ""
|
||||
"В качестве альтернативы вы можете подключиться, нажав кнопку «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
|
||||
msgid "Connect"
|
||||
msgstr "Соединиться"
|
||||
|
||||
#: js/ui/components/networkAgent.js:216
|
||||
#: js/ui/components/networkAgent.js:215
|
||||
msgid "Key"
|
||||
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"
|
||||
msgstr "Пароль личного ключа"
|
||||
|
||||
#: js/ui/components/networkAgent.js:275
|
||||
#: js/ui/components/networkAgent.js:274
|
||||
msgid "Identity"
|
||||
msgstr "Идентичность"
|
||||
|
||||
#: js/ui/components/networkAgent.js:289
|
||||
#: js/ui/components/networkAgent.js:288
|
||||
msgid "Service"
|
||||
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
|
||||
msgid "Authentication required"
|
||||
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
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -1086,31 +1080,31 @@ msgid ""
|
||||
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"
|
||||
msgstr "Аутентификация Wired 802.1X"
|
||||
|
||||
#: js/ui/components/networkAgent.js:325
|
||||
#: js/ui/components/networkAgent.js:324
|
||||
msgid "Network name"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
msgstr "Для устройства мобильной связи требуется PIN-код"
|
||||
|
||||
#: js/ui/components/networkAgent.js:339
|
||||
#: js/ui/components/networkAgent.js:338
|
||||
msgid "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:705
|
||||
#, javascript-format
|
||||
@ -1409,24 +1403,24 @@ msgstr "%s (удалённый)"
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (консоль)"
|
||||
|
||||
#: js/ui/extensionDownloader.js:194
|
||||
#: js/ui/extensionDownloader.js:232
|
||||
msgid "Install"
|
||||
msgstr "Установить"
|
||||
|
||||
#: js/ui/extensionDownloader.js:200
|
||||
#: js/ui/extensionDownloader.js:238
|
||||
msgid "Install Extension"
|
||||
msgstr "Установить расширение"
|
||||
|
||||
#: js/ui/extensionDownloader.js:201
|
||||
#: js/ui/extensionDownloader.js:239
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Загрузить и установить расширение «%s» из extensions.gnome.org?"
|
||||
|
||||
#: js/ui/extensionSystem.js:253
|
||||
#: js/ui/extensionSystem.js:252
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Доступны обновления расширений"
|
||||
|
||||
#: js/ui/extensionSystem.js:254
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Обновления расширений готовы к установке."
|
||||
|
||||
@ -1523,7 +1517,7 @@ msgstr "Выключить"
|
||||
msgid "Leave Off"
|
||||
msgstr "Оставить выключенными"
|
||||
|
||||
#: js/ui/keyboard.js:227
|
||||
#: js/ui/keyboard.js:226
|
||||
msgid "Region & Language Settings"
|
||||
msgstr "Настройки языка и региона"
|
||||
|
||||
@ -1576,11 +1570,11 @@ msgstr "Показать код"
|
||||
msgid "Web Page"
|
||||
msgstr "Веб-страница"
|
||||
|
||||
#: js/ui/main.js:294
|
||||
#: js/ui/main.js:290
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Авторизован как привилегированный пользователь"
|
||||
|
||||
#: js/ui/main.js:295
|
||||
#: js/ui/main.js:291
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"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"
|
||||
msgstr "Блокировка экрана отключена"
|
||||
|
||||
#: js/ui/main.js:345
|
||||
#: js/ui/main.js:341
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "Для блокировки экрана требуется GNOME display manager."
|
||||
|
||||
#: js/ui/messageTray.js:1440
|
||||
#: js/ui/messageTray.js:1443
|
||||
msgid "System Information"
|
||||
msgstr "Системная информация"
|
||||
|
||||
@ -1631,47 +1625,47 @@ msgstr "Отменить"
|
||||
msgid "Overview"
|
||||
msgstr "Обзор"
|
||||
|
||||
#: js/ui/padOsd.js:96
|
||||
#: js/ui/padOsd.js:95
|
||||
msgid "New shortcut…"
|
||||
msgstr "Создать комбинацию клавиш…"
|
||||
|
||||
#: js/ui/padOsd.js:143
|
||||
#: js/ui/padOsd.js:142
|
||||
msgid "Application defined"
|
||||
msgstr "Определено приложением"
|
||||
|
||||
#: js/ui/padOsd.js:144
|
||||
#: js/ui/padOsd.js:143
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Показывать экранную справку"
|
||||
|
||||
#: js/ui/padOsd.js:145
|
||||
#: js/ui/padOsd.js:144
|
||||
msgid "Switch monitor"
|
||||
msgstr "Переключить монитор"
|
||||
|
||||
#: js/ui/padOsd.js:146
|
||||
#: js/ui/padOsd.js:145
|
||||
msgid "Assign keystroke"
|
||||
msgstr "Назначение клавишь"
|
||||
|
||||
#: js/ui/padOsd.js:212
|
||||
#: js/ui/padOsd.js:211
|
||||
msgid "Done"
|
||||
msgstr "Готово"
|
||||
|
||||
#: js/ui/padOsd.js:718
|
||||
#: js/ui/padOsd.js:716
|
||||
msgid "Edit…"
|
||||
msgstr "Правка…"
|
||||
|
||||
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877
|
||||
#: js/ui/padOsd.js:758 js/ui/padOsd.js:875
|
||||
msgid "None"
|
||||
msgstr "Нет"
|
||||
|
||||
#: js/ui/padOsd.js:831
|
||||
#: js/ui/padOsd.js:829
|
||||
msgid "Press a button to configure"
|
||||
msgstr "Нажмите кнопку для настройки"
|
||||
|
||||
#: js/ui/padOsd.js:832
|
||||
#: js/ui/padOsd.js:830
|
||||
msgid "Press Esc to exit"
|
||||
msgstr "Нажмите Esc для выхода"
|
||||
|
||||
#: js/ui/padOsd.js:835
|
||||
#: js/ui/padOsd.js:833
|
||||
msgid "Press any key to exit"
|
||||
msgstr "Нажмите любую клавишу для выхода"
|
||||
|
||||
@ -1681,12 +1675,12 @@ msgstr "Нажмите любую клавишу для выхода"
|
||||
msgid "Activities"
|
||||
msgstr "Обзор"
|
||||
|
||||
#: js/ui/panel.js:542
|
||||
#: js/ui/panel.js:556
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Система"
|
||||
|
||||
#: js/ui/panel.js:658
|
||||
#: js/ui/panel.js:674
|
||||
msgid "Top Bar"
|
||||
msgstr "Верхняя панель"
|
||||
|
||||
@ -1725,7 +1719,7 @@ msgstr "Не удалось заблокировать"
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Блокировке помешало приложение"
|
||||
|
||||
#: js/ui/screenshot.js:141
|
||||
#: js/ui/screenshot.js:155
|
||||
msgid "Screenshot taken"
|
||||
msgstr "Сделан снимок экрана"
|
||||
|
||||
@ -2832,6 +2826,7 @@ msgstr "Необходимо указать UUID, имя и описание"
|
||||
#: subprojects/extensions-tool/src/command-enable.c:46
|
||||
#: subprojects/extensions-tool/src/command-info.c:50
|
||||
#: subprojects/extensions-tool/src/command-list.c:64
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to 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-enable.c:119
|
||||
#: 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-uninstall.c:104
|
||||
msgid "No UUID given"
|
||||
@ -2857,7 +2852,7 @@ msgstr "UUID не указан"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:124
|
||||
#: subprojects/extensions-tool/src/command-enable.c:124
|
||||
#: 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-uninstall.c:109
|
||||
msgid "More than one UUID given"
|
||||
@ -2987,7 +2982,12 @@ msgstr "Указано больше одной исходной директор
|
||||
msgid "Extension “%s” doesn't have preferences\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"
|
||||
msgstr "Открыть параметры расширения"
|
||||
|
||||
@ -3012,10 +3012,6 @@ msgstr "Удалить расширение"
|
||||
msgid "Do not print error messages"
|
||||
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
|
||||
msgid "Path"
|
||||
msgstr "Путь"
|
||||
@ -3148,192 +3144,3 @@ msgstr[2] "%u входов"
|
||||
msgid "System Sounds"
|
||||
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 "Батарея"
|
||||
|
275
po/sk.po
275
po/sk.po
@ -11,8 +11,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2021-11-06 13:27+0000\n"
|
||||
"PO-Revision-Date: 2021-11-06 15:10+0100\n"
|
||||
"POT-Creation-Date: 2021-08-17 23:56+0000\n"
|
||||
"PO-Revision-Date: 2021-08-31 15:49+0200\n"
|
||||
"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
|
||||
"Language-Team: Slovak <kde-i18n-doc@kde.org>\n"
|
||||
"Language: sk\n"
|
||||
@ -268,11 +268,23 @@ msgstr ""
|
||||
"veľké číslo bude predstavovať verzie, ktoré zatiaľ neexistujú. Toto veľké "
|
||||
"číslo je možné použiť na efektívne deaktivovanie dialógového okna."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:133
|
||||
#: data/org.gnome.shell.gschema.xml.in:109
|
||||
msgid "Enable introspection API"
|
||||
msgstr "Povoliť sebapozorovacie 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 ""
|
||||
"Povolí D-Bus API, ktoré umožní sebapozorovanie stavu aplikácie prostredia "
|
||||
"shell."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:141
|
||||
msgid "Layout of the app picker"
|
||||
msgstr "Rozloženie nástroja na výber aplikácie"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:134
|
||||
#: data/org.gnome.shell.gschema.xml.in:142
|
||||
msgid ""
|
||||
"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 "
|
||||
@ -285,119 +297,119 @@ msgstr ""
|
||||
"sú nasledovné hodnoty uložené ako „údaje“: • “„pozícia“: pozícia ikony "
|
||||
"aplikácie na stránke."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:149
|
||||
#: data/org.gnome.shell.gschema.xml.in:157
|
||||
msgid "Keybinding to open the application menu"
|
||||
msgstr "Klávesová skratka na otvorenie ponuky aplikácií"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:150
|
||||
#: data/org.gnome.shell.gschema.xml.in:158
|
||||
msgid "Keybinding to open the application menu."
|
||||
msgstr "Klávesová skratka na otvorenie ponuky aplikácií."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:156
|
||||
#: data/org.gnome.shell.gschema.xml.in:163
|
||||
#: data/org.gnome.shell.gschema.xml.in:164
|
||||
#: data/org.gnome.shell.gschema.xml.in:171
|
||||
msgid "Keybinding to shift between overview states"
|
||||
msgstr "Kombinácia kláves na prepínanie medzi stavmi prehľadu"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:157
|
||||
#: data/org.gnome.shell.gschema.xml.in:165
|
||||
msgid "Keybinding to shift between session, window picker and app grid"
|
||||
msgstr ""
|
||||
"Klávesová skratka na prepínanie medzi sedením, výberom okna a mriežkou "
|
||||
"aplikácií"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:164
|
||||
#: data/org.gnome.shell.gschema.xml.in:172
|
||||
msgid "Keybinding to shift between app grid, window picker and session"
|
||||
msgstr ""
|
||||
"Klávesová skratka slúži na prepínanie medzi mriežkou aplikácií, výberom okna "
|
||||
"a sedením"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:170
|
||||
#: data/org.gnome.shell.gschema.xml.in:178
|
||||
msgid "Keybinding to open the “Show Applications” view"
|
||||
msgstr "Klávesová skratka na otvorenie pohľadu „Zobraziť aplikácie“"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:171
|
||||
#: data/org.gnome.shell.gschema.xml.in:179
|
||||
msgid ""
|
||||
"Keybinding to open the “Show Applications” view of the Activities Overview."
|
||||
msgstr ""
|
||||
"Klávesová skratka na otvorenie pohľadu „Zobraziť aplikácie“ v prehľade "
|
||||
"aktivít."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:178
|
||||
#: data/org.gnome.shell.gschema.xml.in:186
|
||||
msgid "Keybinding to open the overview"
|
||||
msgstr "Klávesová skratka na otvorenie prehľadu"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:179
|
||||
#: data/org.gnome.shell.gschema.xml.in:187
|
||||
msgid "Keybinding to open the Activities Overview."
|
||||
msgstr "Klávesová skratka na otvorenie prehľadu aktivít."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:185
|
||||
#: data/org.gnome.shell.gschema.xml.in:193
|
||||
msgid "Keybinding to toggle the visibility of the notification list"
|
||||
msgstr "Klávesová skratka na prepnutie viditeľnosti zoznamu s oznámeniami"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:186
|
||||
#: data/org.gnome.shell.gschema.xml.in:194
|
||||
msgid "Keybinding to toggle the visibility of the notification list."
|
||||
msgstr "Klávesová skratka na prepnutie viditeľnosti zoznamu s oznámeniami."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:192
|
||||
#: data/org.gnome.shell.gschema.xml.in:200
|
||||
msgid "Keybinding to focus the active notification"
|
||||
msgstr "Klávesová skratka na zameranie aktívnych oznámení"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:193
|
||||
#: data/org.gnome.shell.gschema.xml.in:201
|
||||
msgid "Keybinding to focus the active notification."
|
||||
msgstr "Klávesová skratka, s ktorou sa zamerá na aktívne oznámenia."
|
||||
|
||||
# tooltip
|
||||
#: data/org.gnome.shell.gschema.xml.in:199
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
msgid "Switch to application 1"
|
||||
msgstr "Prepnúť na aplikáciu č. 1"
|
||||
|
||||
# tooltip
|
||||
#: data/org.gnome.shell.gschema.xml.in:203
|
||||
#: data/org.gnome.shell.gschema.xml.in:211
|
||||
msgid "Switch to application 2"
|
||||
msgstr "Prepnúť na aplikáciu č. 2"
|
||||
|
||||
# tooltip
|
||||
#: data/org.gnome.shell.gschema.xml.in:207
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
msgid "Switch to application 3"
|
||||
msgstr "Prepnúť na aplikáciu č. 3"
|
||||
|
||||
# tooltip
|
||||
#: data/org.gnome.shell.gschema.xml.in:211
|
||||
#: data/org.gnome.shell.gschema.xml.in:219
|
||||
msgid "Switch to application 4"
|
||||
msgstr "Prepnúť na aplikáciu č. 4"
|
||||
|
||||
# tooltip
|
||||
#: data/org.gnome.shell.gschema.xml.in:215
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
msgid "Switch to application 5"
|
||||
msgstr "Prepnúť na aplikáciu č. 5"
|
||||
|
||||
# tooltip
|
||||
#: data/org.gnome.shell.gschema.xml.in:219
|
||||
#: data/org.gnome.shell.gschema.xml.in:227
|
||||
msgid "Switch to application 6"
|
||||
msgstr "Prepnúť na aplikáciu č. 6"
|
||||
|
||||
# tooltip
|
||||
#: data/org.gnome.shell.gschema.xml.in:223
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
msgid "Switch to application 7"
|
||||
msgstr "Prepnúť na aplikáciu č. 7"
|
||||
|
||||
# tooltip
|
||||
#: data/org.gnome.shell.gschema.xml.in:227
|
||||
#: data/org.gnome.shell.gschema.xml.in:235
|
||||
msgid "Switch to application 8"
|
||||
msgstr "Prepnúť na aplikáciu č. 8"
|
||||
|
||||
# tooltip
|
||||
#: data/org.gnome.shell.gschema.xml.in:231
|
||||
#: data/org.gnome.shell.gschema.xml.in:239
|
||||
msgid "Switch to application 9"
|
||||
msgstr "Prepnúť na aplikáciu č. 9"
|
||||
|
||||
# summary
|
||||
#: data/org.gnome.shell.gschema.xml.in:240
|
||||
#: data/org.gnome.shell.gschema.xml.in:267
|
||||
#: data/org.gnome.shell.gschema.xml.in:248
|
||||
#: data/org.gnome.shell.gschema.xml.in:275
|
||||
msgid "Limit switcher to current workspace."
|
||||
msgstr "Obmedziť prepínač na aktuálny pracovný priestor."
|
||||
|
||||
# desc
|
||||
#: data/org.gnome.shell.gschema.xml.in:241
|
||||
#: data/org.gnome.shell.gschema.xml.in:249
|
||||
msgid ""
|
||||
"If true, only applications that have windows on the current workspace are "
|
||||
"shown in the switcher. Otherwise, all applications are included."
|
||||
@ -405,11 +417,11 @@ msgstr ""
|
||||
"Ak je true, iba aplikácie, ktoré majú okná na aktuálnom pracovnom priestore "
|
||||
"budú zobrazené v prepínači. Inak budú zahrnuté všetky aplikácie."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:258
|
||||
#: data/org.gnome.shell.gschema.xml.in:266
|
||||
msgid "The application icon mode."
|
||||
msgstr "Režim ikonizácie aplikácií."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:259
|
||||
#: data/org.gnome.shell.gschema.xml.in:267
|
||||
msgid ""
|
||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||
"are “thumbnail-only” (shows a thumbnail of the window), “app-icon-"
|
||||
@ -420,7 +432,7 @@ msgstr ""
|
||||
"ikonu aplikácie) alebo „both“ (zobrazí oboje)."
|
||||
|
||||
# desc
|
||||
#: data/org.gnome.shell.gschema.xml.in:268
|
||||
#: data/org.gnome.shell.gschema.xml.in:276
|
||||
msgid ""
|
||||
"If true, only windows from the current workspace are shown in the switcher. "
|
||||
"Otherwise, all windows are included."
|
||||
@ -428,59 +440,59 @@ msgstr ""
|
||||
"Ak je true, iba okná z aktuálneho pracovného priestoru budú zobrazené v "
|
||||
"prepínači. Inak budú zahrnuté všetky okná."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:278
|
||||
#: data/org.gnome.shell.gschema.xml.in:286
|
||||
msgid "Locations"
|
||||
msgstr "Umiestnenia"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:279
|
||||
#: data/org.gnome.shell.gschema.xml.in:287
|
||||
msgid "The locations to show in world clocks"
|
||||
msgstr "Zobrazené umiestnenia v svetových časoch"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:289
|
||||
#: data/org.gnome.shell.gschema.xml.in:297
|
||||
msgid "Automatic location"
|
||||
msgstr "Automatické umiestnenie"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:290
|
||||
#: data/org.gnome.shell.gschema.xml.in:298
|
||||
msgid "Whether to fetch the current location or not"
|
||||
msgstr "Určuje, či sa má získať aktuálne umiestnenie alebo nie"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:297
|
||||
#: data/org.gnome.shell.gschema.xml.in:305
|
||||
msgid "Location"
|
||||
msgstr "Umiestnenie"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:298
|
||||
#: data/org.gnome.shell.gschema.xml.in:306
|
||||
msgid "The location for which to show a forecast"
|
||||
msgstr "Umiestnenie, pre ktoré zobraziť predpoveď"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:310
|
||||
#: data/org.gnome.shell.gschema.xml.in:318
|
||||
msgid "Attach modal dialog to the parent window"
|
||||
msgstr "Pripojiť modálne dialógové okno k rodičovskému oknu"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:311
|
||||
#: data/org.gnome.shell.gschema.xml.in:320
|
||||
#: data/org.gnome.shell.gschema.xml.in:319
|
||||
#: data/org.gnome.shell.gschema.xml.in:328
|
||||
#: data/org.gnome.shell.gschema.xml.in:336
|
||||
#: data/org.gnome.shell.gschema.xml.in:344
|
||||
#: data/org.gnome.shell.gschema.xml.in:352
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"Tento kľúč preváži kľúč v org.gnome.mutter po spustení Shellu prostredia "
|
||||
"GNOME."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:319
|
||||
#: data/org.gnome.shell.gschema.xml.in:327
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr "Povoliť natiahnutie k okraju pri pustení okien na okrajoch obrazovky"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:327
|
||||
#: data/org.gnome.shell.gschema.xml.in:335
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "Pracovné priestory sú spravované dynamicky"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:335
|
||||
#: data/org.gnome.shell.gschema.xml.in:343
|
||||
msgid "Workspaces only on primary monitor"
|
||||
msgstr "Pracovné priestory sú iba na primárnom monitore"
|
||||
|
||||
# summary
|
||||
#: data/org.gnome.shell.gschema.xml.in:343
|
||||
#: data/org.gnome.shell.gschema.xml.in:351
|
||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgstr ""
|
||||
"Oneskoriť pohyb zamerania v režime myši, až kým sa ukazovateľ nezastaví"
|
||||
@ -516,18 +528,18 @@ msgid "Visit extension homepage"
|
||||
msgstr "Navštíviť domovskú stránku rozšírenia"
|
||||
|
||||
#: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61
|
||||
#: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:138
|
||||
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:228
|
||||
#: js/ui/components/networkAgent.js:111 js/ui/components/polkitAgent.js:138
|
||||
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:190
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183
|
||||
msgid "Cancel"
|
||||
msgstr "Zrušiť"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:209
|
||||
#: js/ui/components/networkAgent.js:225 js/ui/components/networkAgent.js:249
|
||||
#: js/ui/components/networkAgent.js:270 js/ui/components/networkAgent.js:290
|
||||
#: js/ui/components/networkAgent.js:300 js/ui/components/polkitAgent.js:275
|
||||
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:210
|
||||
#: js/ui/components/networkAgent.js:226 js/ui/components/networkAgent.js:250
|
||||
#: js/ui/components/networkAgent.js:271 js/ui/components/networkAgent.js:291
|
||||
#: js/ui/components/networkAgent.js:301 js/ui/components/polkitAgent.js:275
|
||||
#: js/ui/shellMountOperation.js:326
|
||||
msgid "Password"
|
||||
msgstr "Heslo"
|
||||
@ -552,8 +564,8 @@ msgstr "(napr., používateľ alebo %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:245
|
||||
#: js/ui/components/networkAgent.js:268 js/ui/components/networkAgent.js:286
|
||||
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:246
|
||||
#: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:287
|
||||
msgid "Username"
|
||||
msgstr "Používateľské meno"
|
||||
|
||||
@ -661,26 +673,26 @@ msgctxt "search-result"
|
||||
msgid "Lock Screen Rotation"
|
||||
msgstr "Uzamknúť otočenie obrazovky"
|
||||
|
||||
#: js/misc/util.js:121
|
||||
#: js/misc/util.js:120
|
||||
msgid "Command not found"
|
||||
msgstr "Príkaz nebol nájdený"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: js/misc/util.js:157
|
||||
#: js/misc/util.js:156
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Nepodarilo sa analyzovať príkaz:"
|
||||
|
||||
#: js/misc/util.js:165
|
||||
#: js/misc/util.js:164
|
||||
#, javascript-format
|
||||
msgid "Execution of “%s” failed:"
|
||||
msgstr "Spustenie „%s“ zlyhalo:"
|
||||
|
||||
#: js/misc/util.js:182
|
||||
#: js/misc/util.js:181
|
||||
msgid "Just now"
|
||||
msgstr "Práve teraz"
|
||||
|
||||
#: js/misc/util.js:184
|
||||
#: js/misc/util.js:183
|
||||
#, javascript-format
|
||||
msgid "%d minute ago"
|
||||
msgid_plural "%d minutes ago"
|
||||
@ -688,7 +700,7 @@ msgstr[0] "Pred %d minútami"
|
||||
msgstr[1] "Pred %d minútou"
|
||||
msgstr[2] "Pred %d minútami"
|
||||
|
||||
#: js/misc/util.js:188
|
||||
#: js/misc/util.js:187
|
||||
#, javascript-format
|
||||
msgid "%d hour ago"
|
||||
msgid_plural "%d hours ago"
|
||||
@ -696,11 +708,11 @@ msgstr[0] "Pred %d hodinami"
|
||||
msgstr[1] "Pred %d hodinou"
|
||||
msgstr[2] "Pred %d hodinami"
|
||||
|
||||
#: js/misc/util.js:192 js/ui/dateMenu.js:162
|
||||
#: js/misc/util.js:191 js/ui/dateMenu.js:162
|
||||
msgid "Yesterday"
|
||||
msgstr "Včera"
|
||||
|
||||
#: js/misc/util.js:194
|
||||
#: js/misc/util.js:193
|
||||
#, javascript-format
|
||||
msgid "%d day ago"
|
||||
msgid_plural "%d days ago"
|
||||
@ -708,7 +720,7 @@ msgstr[0] "Pred %d dňami"
|
||||
msgstr[1] "Pred %d dňom"
|
||||
msgstr[2] "Pred %d dňami"
|
||||
|
||||
#: js/misc/util.js:198
|
||||
#: js/misc/util.js:197
|
||||
#, javascript-format
|
||||
msgid "%d week ago"
|
||||
msgid_plural "%d weeks ago"
|
||||
@ -716,7 +728,7 @@ msgstr[0] "Pred %d týždňami"
|
||||
msgstr[1] "Pred %d týždňom"
|
||||
msgstr[2] "Pred %d týždňami"
|
||||
|
||||
#: js/misc/util.js:202
|
||||
#: js/misc/util.js:201
|
||||
#, javascript-format
|
||||
msgid "%d month ago"
|
||||
msgid_plural "%d months ago"
|
||||
@ -724,7 +736,7 @@ msgstr[0] "Pred %d mesiacmi"
|
||||
msgstr[1] "Pred %d mesiacom"
|
||||
msgstr[2] "Pred %d mesiacmi"
|
||||
|
||||
#: js/misc/util.js:205
|
||||
#: js/misc/util.js:204
|
||||
#, javascript-format
|
||||
msgid "%d year ago"
|
||||
msgid_plural "%d years ago"
|
||||
@ -733,20 +745,20 @@ msgstr[1] "Pred %d rokom"
|
||||
msgstr[2] "Pred %d rokmi"
|
||||
|
||||
#. Translators: Time in 24h format
|
||||
#: js/misc/util.js:238
|
||||
#: js/misc/util.js:237
|
||||
msgid "%H∶%M"
|
||||
msgstr "%H:%M"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 24h format. i.e. "Yesterday, 14:30"
|
||||
#: js/misc/util.js:244
|
||||
#: js/misc/util.js:243
|
||||
#, no-c-format
|
||||
msgid "Yesterday, %H∶%M"
|
||||
msgstr "Včera o %H:%M"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 24h format. i.e. "Monday, 14:30"
|
||||
#: js/misc/util.js:250
|
||||
#: js/misc/util.js:249
|
||||
#, no-c-format
|
||||
msgid "%A, %H∶%M"
|
||||
msgstr "%A, %H:%M"
|
||||
@ -754,7 +766,7 @@ msgstr "%A, %H:%M"
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 24h format.
|
||||
#. i.e. "May 25, 14:30"
|
||||
#: js/misc/util.js:256
|
||||
#: js/misc/util.js:255
|
||||
#, no-c-format
|
||||
msgid "%B %-d, %H∶%M"
|
||||
msgstr "%d. %B, %H:%M"
|
||||
@ -762,7 +774,7 @@ msgstr "%d. %B, %H:%M"
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 24h format.
|
||||
#. i.e. "May 25 2012, 14:30"
|
||||
#: js/misc/util.js:262
|
||||
#: js/misc/util.js:261
|
||||
#, no-c-format
|
||||
msgid "%B %-d %Y, %H∶%M"
|
||||
msgstr "%d. %B %Y, %H:%M"
|
||||
@ -770,13 +782,13 @@ msgstr "%d. %B %Y, %H:%M"
|
||||
#. Show only the time if date is on today
|
||||
#. eslint-disable-line no-lonely-if
|
||||
#. Translators: Time in 12h format
|
||||
#: js/misc/util.js:267
|
||||
#: js/misc/util.js:266
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%l:%M %p"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm"
|
||||
#: js/misc/util.js:273
|
||||
#: js/misc/util.js:272
|
||||
#, no-c-format
|
||||
msgid "Yesterday, %l∶%M %p"
|
||||
msgstr "Včera, %l:%M %p"
|
||||
@ -786,7 +798,7 @@ msgstr "Včera, %l:%M %p"
|
||||
# v ostatnych retazcoch je pouzite %e, tak to bude asi OK
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm"
|
||||
#: js/misc/util.js:279
|
||||
#: js/misc/util.js:278
|
||||
#, no-c-format
|
||||
msgid "%A, %l∶%M %p"
|
||||
msgstr "%A, %l:%M %p"
|
||||
@ -794,7 +806,7 @@ msgstr "%A, %l:%M %p"
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 12h format.
|
||||
#. i.e. "May 25, 2:30 pm"
|
||||
#: js/misc/util.js:285
|
||||
#: js/misc/util.js:284
|
||||
#, no-c-format
|
||||
msgid "%B %-d, %l∶%M %p"
|
||||
msgstr "%d. %B, %l:%M %p"
|
||||
@ -802,17 +814,17 @@ msgstr "%d. %B, %l:%M %p"
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 12h format.
|
||||
#. i.e. "May 25 2012, 2:30 pm"
|
||||
#: js/misc/util.js:291
|
||||
#: js/misc/util.js:290
|
||||
#, no-c-format
|
||||
msgid "%B %-d %Y, %l∶%M %p"
|
||||
msgstr "%d. %B %Y, %l:%M %p"
|
||||
|
||||
#. TRANSLATORS: this is the title of the wifi captive portal login window
|
||||
#: js/portalHelper/main.js:49
|
||||
#: js/portalHelper/main.js:42
|
||||
msgid "Hotspot Login"
|
||||
msgstr "Prihlásenie do aktívneho bodu"
|
||||
|
||||
#: js/portalHelper/main.js:95
|
||||
#: js/portalHelper/main.js:88
|
||||
msgid ""
|
||||
"Your connection to this hotspot login is not secure. Passwords or other "
|
||||
"information you enter on this page can be viewed by people nearby."
|
||||
@ -1062,39 +1074,39 @@ msgstr "Nainštalovaná verzia programu udisks nepodporuje nastavenie PIM"
|
||||
msgid "Open with %s"
|
||||
msgstr "Otvoriť pomocou aplikácie %s"
|
||||
|
||||
#: js/ui/components/networkAgent.js:92
|
||||
#: js/ui/components/networkAgent.js:93
|
||||
msgid ""
|
||||
"Alternatively you can connect by pushing the “WPS” button on your router."
|
||||
msgstr ""
|
||||
"Pripojiť sa môžete taktiež stlačením tlačidla „WPS“ na vašom smerovači."
|
||||
|
||||
#: js/ui/components/networkAgent.js:104 js/ui/status/network.js:258
|
||||
#: js/ui/components/networkAgent.js:105 js/ui/status/network.js:258
|
||||
#: js/ui/status/network.js:349 js/ui/status/network.js:981
|
||||
msgid "Connect"
|
||||
msgstr "Pripojiť"
|
||||
|
||||
#: js/ui/components/networkAgent.js:215
|
||||
#: js/ui/components/networkAgent.js:216
|
||||
msgid "Key"
|
||||
msgstr "Kľúč"
|
||||
|
||||
#: js/ui/components/networkAgent.js:253 js/ui/components/networkAgent.js:276
|
||||
#: js/ui/components/networkAgent.js:254 js/ui/components/networkAgent.js:277
|
||||
msgid "Private key password"
|
||||
msgstr "Heslo k súkromnému kľúču"
|
||||
|
||||
#: js/ui/components/networkAgent.js:274
|
||||
#: js/ui/components/networkAgent.js:275
|
||||
msgid "Identity"
|
||||
msgstr "Identita"
|
||||
|
||||
#: js/ui/components/networkAgent.js:288
|
||||
#: js/ui/components/networkAgent.js:289
|
||||
msgid "Service"
|
||||
msgstr "Služba"
|
||||
|
||||
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:345
|
||||
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:346
|
||||
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
|
||||
msgid "Authentication required"
|
||||
msgstr "Požaduje sa overenie totožnosti"
|
||||
|
||||
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:680
|
||||
#: js/ui/components/networkAgent.js:319 js/ui/components/networkAgent.js:680
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -1103,31 +1115,31 @@ msgstr ""
|
||||
"Na prístup do bezdrôtovej siete „%s“ sú vyžadované heslá alebo šifrovacie "
|
||||
"kľúče."
|
||||
|
||||
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:684
|
||||
#: js/ui/components/networkAgent.js:323 js/ui/components/networkAgent.js:684
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Overenie totožnosti k drôtovej sieti 802.1X"
|
||||
|
||||
#: js/ui/components/networkAgent.js:324
|
||||
#: js/ui/components/networkAgent.js:325
|
||||
msgid "Network name"
|
||||
msgstr "Názov siete"
|
||||
|
||||
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:688
|
||||
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:688
|
||||
msgid "DSL authentication"
|
||||
msgstr "Overenie totožnosti k DSL"
|
||||
|
||||
#: js/ui/components/networkAgent.js:336 js/ui/components/networkAgent.js:693
|
||||
#: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:693
|
||||
msgid "PIN code required"
|
||||
msgstr "Požaduje sa kód PIN"
|
||||
|
||||
#: js/ui/components/networkAgent.js:337 js/ui/components/networkAgent.js:694
|
||||
#: js/ui/components/networkAgent.js:338 js/ui/components/networkAgent.js:694
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Pre zariadenie mobilnej širokopásmovej siete je potrebný kód PIN"
|
||||
|
||||
#: js/ui/components/networkAgent.js:338
|
||||
#: js/ui/components/networkAgent.js:339
|
||||
msgid "PIN"
|
||||
msgstr "PIN"
|
||||
|
||||
#: js/ui/components/networkAgent.js:346 js/ui/components/networkAgent.js:685
|
||||
#: js/ui/components/networkAgent.js:347 js/ui/components/networkAgent.js:685
|
||||
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
|
||||
#: js/ui/components/networkAgent.js:705
|
||||
#, javascript-format
|
||||
@ -1425,25 +1437,25 @@ msgstr "%s (vzdialená relácia)"
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (konzola)"
|
||||
|
||||
#: js/ui/extensionDownloader.js:232
|
||||
#: js/ui/extensionDownloader.js:194
|
||||
msgid "Install"
|
||||
msgstr "Inštalovať"
|
||||
|
||||
# dialog title
|
||||
#: js/ui/extensionDownloader.js:238
|
||||
#: js/ui/extensionDownloader.js:200
|
||||
msgid "Install Extension"
|
||||
msgstr "Inštalácia rozšírenia"
|
||||
|
||||
#: js/ui/extensionDownloader.js:239
|
||||
#: js/ui/extensionDownloader.js:201
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Prevziať a nainštalovať rozšírenie „%s“ z extensions.gnome.org?"
|
||||
|
||||
#: js/ui/extensionSystem.js:252
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Sú dostupné aktualizácie rozšírení"
|
||||
|
||||
#: js/ui/extensionSystem.js:253
|
||||
#: js/ui/extensionSystem.js:254
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Aktualizácie rozšírení sú pripravené na inštaláciu."
|
||||
|
||||
@ -1543,7 +1555,7 @@ msgstr "Vypnúť"
|
||||
msgid "Leave Off"
|
||||
msgstr "Ponechať vypnuté"
|
||||
|
||||
#: js/ui/keyboard.js:226
|
||||
#: js/ui/keyboard.js:227
|
||||
msgid "Region & Language Settings"
|
||||
msgstr "Nastavenia oblasti a jazyka"
|
||||
|
||||
@ -1597,11 +1609,11 @@ msgstr "Zobraziť zdroj"
|
||||
msgid "Web Page"
|
||||
msgstr "Webová stránka"
|
||||
|
||||
#: js/ui/main.js:290
|
||||
#: js/ui/main.js:294
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Prihlásený ako privilegovaný používateľ"
|
||||
|
||||
#: js/ui/main.js:291
|
||||
#: js/ui/main.js:295
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1610,15 +1622,15 @@ msgstr ""
|
||||
"bezpečnostných dôvodov zabrániť. Ak je to možné, mali by ste sa prihlásiť "
|
||||
"ako normálny používateľ."
|
||||
|
||||
#: js/ui/main.js:340
|
||||
#: js/ui/main.js:344
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "Uzamknutie obrazovky je zakázané"
|
||||
|
||||
#: js/ui/main.js:341
|
||||
#: js/ui/main.js:345
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "Uzamykanie obrazovky vyžaduje správcu displejov prostredia GNOME."
|
||||
|
||||
#: js/ui/messageTray.js:1443
|
||||
#: js/ui/messageTray.js:1440
|
||||
msgid "System Information"
|
||||
msgstr "Informácie o systéme"
|
||||
|
||||
@ -1653,47 +1665,47 @@ msgstr "Vrátiť"
|
||||
msgid "Overview"
|
||||
msgstr "Prehľad"
|
||||
|
||||
#: js/ui/padOsd.js:95
|
||||
#: js/ui/padOsd.js:96
|
||||
msgid "New shortcut…"
|
||||
msgstr "Nová skratka…"
|
||||
|
||||
#: js/ui/padOsd.js:142
|
||||
#: js/ui/padOsd.js:143
|
||||
msgid "Application defined"
|
||||
msgstr "Definované aplikáciou"
|
||||
|
||||
#: js/ui/padOsd.js:143
|
||||
#: js/ui/padOsd.js:144
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Zobraziť pomocníka na obrazovke"
|
||||
|
||||
#: js/ui/padOsd.js:144
|
||||
#: js/ui/padOsd.js:145
|
||||
msgid "Switch monitor"
|
||||
msgstr "Prepnúť monitor"
|
||||
|
||||
#: js/ui/padOsd.js:145
|
||||
#: js/ui/padOsd.js:146
|
||||
msgid "Assign keystroke"
|
||||
msgstr "Priradiť klávesu"
|
||||
|
||||
#: js/ui/padOsd.js:211
|
||||
#: js/ui/padOsd.js:212
|
||||
msgid "Done"
|
||||
msgstr "Dokončiť"
|
||||
|
||||
#: js/ui/padOsd.js:716
|
||||
#: js/ui/padOsd.js:718
|
||||
msgid "Edit…"
|
||||
msgstr "Upraviť…"
|
||||
|
||||
#: js/ui/padOsd.js:758 js/ui/padOsd.js:875
|
||||
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877
|
||||
msgid "None"
|
||||
msgstr "Žiadne"
|
||||
|
||||
#: js/ui/padOsd.js:829
|
||||
#: js/ui/padOsd.js:831
|
||||
msgid "Press a button to configure"
|
||||
msgstr "Stlačte kláves na spustenie konfigurácie"
|
||||
|
||||
#: js/ui/padOsd.js:830
|
||||
#: js/ui/padOsd.js:832
|
||||
msgid "Press Esc to exit"
|
||||
msgstr "Stlačte kláves Esc na skončenie"
|
||||
|
||||
#: js/ui/padOsd.js:833
|
||||
#: js/ui/padOsd.js:835
|
||||
msgid "Press any key to exit"
|
||||
msgstr "Stlačte akýkoľvek kláves na skončenie"
|
||||
|
||||
@ -1703,12 +1715,12 @@ msgstr "Stlačte akýkoľvek kláves na skončenie"
|
||||
msgid "Activities"
|
||||
msgstr "Aktivity"
|
||||
|
||||
#: js/ui/panel.js:556
|
||||
#: js/ui/panel.js:542
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Systém"
|
||||
|
||||
#: js/ui/panel.js:674
|
||||
#: js/ui/panel.js:658
|
||||
msgid "Top Bar"
|
||||
msgstr "Horná lišta"
|
||||
|
||||
@ -1748,7 +1760,7 @@ msgstr "Nepodarilo sa uzamknúť obrazovku"
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Uzamknutie bolo zablokované aplikáciou"
|
||||
|
||||
#: js/ui/screenshot.js:155
|
||||
#: js/ui/screenshot.js:141
|
||||
msgid "Screenshot taken"
|
||||
msgstr "Snímka obrazovky bola zachytená"
|
||||
|
||||
@ -2819,7 +2831,6 @@ msgstr "Vlastnosť UUID, názov a popis sú povinné"
|
||||
#: subprojects/extensions-tool/src/command-enable.c:46
|
||||
#: subprojects/extensions-tool/src/command-info.c:50
|
||||
#: subprojects/extensions-tool/src/command-list.c:64
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell\n"
|
||||
msgstr "Zlyhalo pripojenie k Shellu prostredia GNOME\n"
|
||||
|
||||
@ -2837,7 +2848,7 @@ msgstr "Zakázať rozšírenie"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:119
|
||||
#: subprojects/extensions-tool/src/command-enable.c:119
|
||||
#: subprojects/extensions-tool/src/command-info.c:103
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:105
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:97
|
||||
#: subprojects/extensions-tool/src/command-reset.c:76
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:104
|
||||
msgid "No UUID given"
|
||||
@ -2846,7 +2857,7 @@ msgstr "Nebol zadaný žiadny identifikátor UUID"
|
||||
#: subprojects/extensions-tool/src/command-disable.c:124
|
||||
#: subprojects/extensions-tool/src/command-enable.c:124
|
||||
#: subprojects/extensions-tool/src/command-info.c:108
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:110
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:102
|
||||
#: subprojects/extensions-tool/src/command-reset.c:81
|
||||
#: subprojects/extensions-tool/src/command-uninstall.c:109
|
||||
msgid "More than one UUID given"
|
||||
@ -2979,12 +2990,7 @@ msgstr "Bol určený viac ako jeden zdrojový adresár"
|
||||
msgid "Extension “%s” doesn't have preferences\n"
|
||||
msgstr "Rozšírenie „%s“ neobsahuje predvoľby\n"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:62
|
||||
#, c-format
|
||||
msgid "Failed to open prefs for extension “%s”: %s\n"
|
||||
msgstr "Zlyhalo otvorenie predvolieb rozšírenia „%s“: %s\n"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:87
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:79
|
||||
msgid "Opens extension preferences"
|
||||
msgstr "Otvorí predvoľby rozšírenia"
|
||||
|
||||
@ -3012,6 +3018,10 @@ msgstr "Odinštalovať rozšírenie"
|
||||
msgid "Do not print error messages"
|
||||
msgstr "Nevypíše chybové správy"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell"
|
||||
msgstr "Zlyhalo pripojenie k Shellu prostredia GNOME"
|
||||
|
||||
#: subprojects/extensions-tool/src/main.c:244
|
||||
msgid "Path"
|
||||
msgstr "Cesta"
|
||||
@ -3149,19 +3159,6 @@ msgstr[2] "%u vstupov"
|
||||
msgid "System Sounds"
|
||||
msgstr "Systémové zvuky"
|
||||
|
||||
#~ msgid "Enable introspection API"
|
||||
#~ msgstr "Povoliť sebapozorovacie API"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Enables a D-Bus API that allows to introspect the application state of "
|
||||
#~ "the shell."
|
||||
#~ msgstr ""
|
||||
#~ "Povolí D-Bus API, ktoré umožní sebapozorovanie stavu aplikácie prostredia "
|
||||
#~ "shell."
|
||||
|
||||
#~ msgid "Failed to connect to GNOME Shell"
|
||||
#~ msgstr "Zlyhalo pripojenie k Shellu prostredia GNOME"
|
||||
|
||||
#~ msgid "Minimize"
|
||||
#~ msgstr "Minimalizovať"
|
||||
|
||||
|
267
po/sl.po
267
po/sl.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2021-08-29 17:33+0000\n"
|
||||
"PO-Revision-Date: 2021-08-30 21:12+0200\n"
|
||||
"POT-Creation-Date: 2021-11-02 16:32+0000\n"
|
||||
"PO-Revision-Date: 2021-11-02 17:49+0100\n"
|
||||
"Last-Translator: Matej Urbančič <mateju@src.gnome.org>\n"
|
||||
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\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"
|
||||
"%100==4 ? 3 : 0);\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
|
||||
msgid "Launchers"
|
||||
@ -251,21 +251,11 @@ msgstr ""
|
||||
"različico in velike številke različice, ki še ne obstajajo. S temi velikimi "
|
||||
"vrednostmi je mogoče preprečiti prikaz tega okna."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:109
|
||||
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
|
||||
#: data/org.gnome.shell.gschema.xml.in:133
|
||||
msgid "Layout of the app picker"
|
||||
msgstr "Pogled izbirnika programov"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:142
|
||||
#: data/org.gnome.shell.gschema.xml.in:134
|
||||
msgid ""
|
||||
"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 "
|
||||
@ -277,105 +267,105 @@ msgstr ""
|
||||
"»ID programa« → »podatki«. Trenutno so kot podatki shranjeni:: • »položaj«: "
|
||||
"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"
|
||||
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."
|
||||
msgstr "Tipkovna bližnjica, ki odpre meni programov."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:164
|
||||
#: data/org.gnome.shell.gschema.xml.in:171
|
||||
#: data/org.gnome.shell.gschema.xml.in:156
|
||||
#: data/org.gnome.shell.gschema.xml.in:163
|
||||
msgid "Keybinding to shift between overview states"
|
||||
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"
|
||||
msgstr ""
|
||||
"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"
|
||||
msgstr ""
|
||||
"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"
|
||||
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 ""
|
||||
"Keybinding to open the “Show Applications” view of the Activities Overview."
|
||||
msgstr ""
|
||||
"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"
|
||||
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."
|
||||
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"
|
||||
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."
|
||||
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"
|
||||
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."
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
msgstr "Preklopi na program 9"
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:248
|
||||
#: data/org.gnome.shell.gschema.xml.in:275
|
||||
#: data/org.gnome.shell.gschema.xml.in:240
|
||||
#: data/org.gnome.shell.gschema.xml.in:267
|
||||
msgid "Limit switcher to current workspace."
|
||||
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 ""
|
||||
"If true, only applications that have windows on the current workspace are "
|
||||
"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 "
|
||||
"vsa okna."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:266
|
||||
#: data/org.gnome.shell.gschema.xml.in:258
|
||||
msgid "The application icon mode."
|
||||
msgstr "Ikonski način programa."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:267
|
||||
#: data/org.gnome.shell.gschema.xml.in:259
|
||||
msgid ""
|
||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||
"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 "
|
||||
"možnost »oboje«."
|
||||
|
||||
#: data/org.gnome.shell.gschema.xml.in:276
|
||||
#: data/org.gnome.shell.gschema.xml.in:268
|
||||
msgid ""
|
||||
"If true, only windows from the current workspace are shown in the switcher. "
|
||||
"Otherwise, all windows are included."
|
||||
@ -406,57 +396,57 @@ msgstr ""
|
||||
"Izbrana možnost določa, da bodo v trenutnem pogledu prikazana le okna v "
|
||||
"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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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:336
|
||||
#: data/org.gnome.shell.gschema.xml.in:344
|
||||
#: data/org.gnome.shell.gschema.xml.in:352
|
||||
msgid ""
|
||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||
msgstr ""
|
||||
"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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
msgstr ""
|
||||
"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"
|
||||
|
||||
#: js/gdm/authPrompt.js:141 js/ui/audioDeviceSelection.js:61
|
||||
#: js/ui/components/networkAgent.js:111 js/ui/components/polkitAgent.js:138
|
||||
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:230
|
||||
#: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:138
|
||||
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:228
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:978 subprojects/extensions-app/js/main.js:183
|
||||
msgid "Cancel"
|
||||
msgstr "Prekliči"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:210
|
||||
#: js/ui/components/networkAgent.js:226 js/ui/components/networkAgent.js:250
|
||||
#: js/ui/components/networkAgent.js:271 js/ui/components/networkAgent.js:291
|
||||
#: js/ui/components/networkAgent.js:301 js/ui/components/polkitAgent.js:275
|
||||
#: js/gdm/authPrompt.js:285 js/ui/components/networkAgent.js:209
|
||||
#: js/ui/components/networkAgent.js:225 js/ui/components/networkAgent.js:249
|
||||
#: js/ui/components/networkAgent.js:270 js/ui/components/networkAgent.js:290
|
||||
#: js/ui/components/networkAgent.js:300 js/ui/components/polkitAgent.js:275
|
||||
#: js/ui/shellMountOperation.js:326
|
||||
msgid "Password"
|
||||
msgstr "Geslo"
|
||||
@ -527,8 +517,8 @@ msgstr "(na primer, uporabnika ali %s)"
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:246
|
||||
#: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:287
|
||||
#: js/gdm/loginDialog.js:926 js/ui/components/networkAgent.js:245
|
||||
#: js/ui/components/networkAgent.js:268 js/ui/components/networkAgent.js:286
|
||||
msgid "Username"
|
||||
msgstr "Uporabniško ime"
|
||||
|
||||
@ -634,26 +624,26 @@ msgctxt "search-result"
|
||||
msgid "Lock Screen Rotation"
|
||||
msgstr "Vrtenje zaklepanja zaslona"
|
||||
|
||||
#: js/misc/util.js:120
|
||||
#: js/misc/util.js:121
|
||||
msgid "Command not found"
|
||||
msgstr "Ukaz ni mogoče najti"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: js/misc/util.js:156
|
||||
#: js/misc/util.js:157
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Ukaza ni mogoče razčleniti:"
|
||||
|
||||
#: js/misc/util.js:164
|
||||
#: js/misc/util.js:165
|
||||
#, javascript-format
|
||||
msgid "Execution of “%s” failed:"
|
||||
msgstr "Izvedba »%s« je spodletela:"
|
||||
|
||||
#: js/misc/util.js:181
|
||||
#: js/misc/util.js:182
|
||||
msgid "Just now"
|
||||
msgstr "Ravnokar"
|
||||
|
||||
#: js/misc/util.js:183
|
||||
#: js/misc/util.js:184
|
||||
#, javascript-format
|
||||
msgid "%d minute ago"
|
||||
msgid_plural "%d minutes ago"
|
||||
@ -662,7 +652,7 @@ msgstr[1] "Pred %d minuto"
|
||||
msgstr[2] "Pred %d minutama"
|
||||
msgstr[3] "Pred %d minutami"
|
||||
|
||||
#: js/misc/util.js:187
|
||||
#: js/misc/util.js:188
|
||||
#, javascript-format
|
||||
msgid "%d hour ago"
|
||||
msgid_plural "%d hours ago"
|
||||
@ -671,11 +661,11 @@ msgstr[1] "Pred %d uro"
|
||||
msgstr[2] "Pred %d urama"
|
||||
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"
|
||||
msgstr "Včeraj"
|
||||
|
||||
#: js/misc/util.js:193
|
||||
#: js/misc/util.js:194
|
||||
#, javascript-format
|
||||
msgid "%d day ago"
|
||||
msgid_plural "%d days ago"
|
||||
@ -684,7 +674,7 @@ msgstr[1] "Pred %d dnevom"
|
||||
msgstr[2] "Pred %d dnevoma"
|
||||
msgstr[3] "Pred %d dnevi"
|
||||
|
||||
#: js/misc/util.js:197
|
||||
#: js/misc/util.js:198
|
||||
#, javascript-format
|
||||
msgid "%d week ago"
|
||||
msgid_plural "%d weeks ago"
|
||||
@ -693,7 +683,7 @@ msgstr[1] "Pred %d tednom"
|
||||
msgstr[2] "Pred %d tednoma"
|
||||
msgstr[3] "Pred %d tedni"
|
||||
|
||||
#: js/misc/util.js:201
|
||||
#: js/misc/util.js:202
|
||||
#, javascript-format
|
||||
msgid "%d month ago"
|
||||
msgid_plural "%d months ago"
|
||||
@ -702,7 +692,7 @@ msgstr[1] "Pred %d mesecem"
|
||||
msgstr[2] "Pred %d mesecema"
|
||||
msgstr[3] "Pred %d meseci"
|
||||
|
||||
#: js/misc/util.js:204
|
||||
#: js/misc/util.js:205
|
||||
#, javascript-format
|
||||
msgid "%d year ago"
|
||||
msgid_plural "%d years ago"
|
||||
@ -712,20 +702,20 @@ msgstr[2] "Pred %d letoma"
|
||||
msgstr[3] "Pred %d leti"
|
||||
|
||||
#. Translators: Time in 24h format
|
||||
#: js/misc/util.js:237
|
||||
#: js/misc/util.js:238
|
||||
msgid "%H∶%M"
|
||||
msgstr "%H∶%M"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 24h format. i.e. "Yesterday, 14:30"
|
||||
#: js/misc/util.js:243
|
||||
#: js/misc/util.js:244
|
||||
#, no-c-format
|
||||
msgid "Yesterday, %H∶%M"
|
||||
msgstr "Včeraj, %H:%M"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 24h format. i.e. "Monday, 14:30"
|
||||
#: js/misc/util.js:249
|
||||
#: js/misc/util.js:250
|
||||
#, no-c-format
|
||||
msgid "%A, %H∶%M"
|
||||
msgstr "%A, %H∶%M"
|
||||
@ -733,7 +723,7 @@ msgstr "%A, %H∶%M"
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 24h format.
|
||||
#. i.e. "May 25, 14:30"
|
||||
#: js/misc/util.js:255
|
||||
#: js/misc/util.js:256
|
||||
#, no-c-format
|
||||
msgid "%B %-d, %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
|
||||
#. number followed by a time string in 24h format.
|
||||
#. i.e. "May 25 2012, 14:30"
|
||||
#: js/misc/util.js:261
|
||||
#: js/misc/util.js:262
|
||||
#, no-c-format
|
||||
msgid "%B %-d %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
|
||||
#. eslint-disable-line no-lonely-if
|
||||
#. Translators: Time in 12h format
|
||||
#: js/misc/util.js:266
|
||||
#: js/misc/util.js:267
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%l∶%M %p"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm"
|
||||
#: js/misc/util.js:272
|
||||
#: js/misc/util.js:273
|
||||
#, no-c-format
|
||||
msgid "Yesterday, %l∶%M %p"
|
||||
msgstr "Včeraj, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm"
|
||||
#: js/misc/util.js:278
|
||||
#: js/misc/util.js:279
|
||||
#, no-c-format
|
||||
msgid "%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
|
||||
#. followed by a time string in 12h format.
|
||||
#. i.e. "May 25, 2:30 pm"
|
||||
#: js/misc/util.js:284
|
||||
#: js/misc/util.js:285
|
||||
#, no-c-format
|
||||
msgid "%B %-d, %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
|
||||
#. number followed by a time string in 12h format.
|
||||
#. i.e. "May 25 2012, 2:30 pm"
|
||||
#: js/misc/util.js:290
|
||||
#: js/misc/util.js:291
|
||||
#, no-c-format
|
||||
msgid "%B %-d %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"
|
||||
msgstr "Odpri s programom %s"
|
||||
|
||||
#: js/ui/components/networkAgent.js:93
|
||||
#: js/ui/components/networkAgent.js:92
|
||||
msgid ""
|
||||
"Alternatively you can connect by pushing the “WPS” button on your router."
|
||||
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
|
||||
msgid "Connect"
|
||||
msgstr "Poveži"
|
||||
|
||||
#: js/ui/components/networkAgent.js:216
|
||||
#: js/ui/components/networkAgent.js:215
|
||||
msgid "Key"
|
||||
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"
|
||||
msgstr "Geslo zasebnega ključa"
|
||||
|
||||
#: js/ui/components/networkAgent.js:275
|
||||
#: js/ui/components/networkAgent.js:274
|
||||
msgid "Identity"
|
||||
msgstr "Istovetnost"
|
||||
|
||||
#: js/ui/components/networkAgent.js:289
|
||||
#: js/ui/components/networkAgent.js:288
|
||||
msgid "Service"
|
||||
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
|
||||
msgid "Authentication required"
|
||||
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
|
||||
msgid ""
|
||||
"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 "
|
||||
"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"
|
||||
msgstr "Žična overitev 802.1X"
|
||||
|
||||
#: js/ui/components/networkAgent.js:325
|
||||
#: js/ui/components/networkAgent.js:324
|
||||
msgid "Network name"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
msgstr "Za napravo mobilnega širokopasovnega dostopa je zahtevana koda PIN."
|
||||
|
||||
#: js/ui/components/networkAgent.js:339
|
||||
#: js/ui/components/networkAgent.js:338
|
||||
msgid "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:705
|
||||
#, javascript-format
|
||||
@ -1401,24 +1391,24 @@ msgstr "%s (oddaljeno)"
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (konzola)"
|
||||
|
||||
#: js/ui/extensionDownloader.js:234
|
||||
#: js/ui/extensionDownloader.js:232
|
||||
msgid "Install"
|
||||
msgstr "Namesti"
|
||||
|
||||
#: js/ui/extensionDownloader.js:240
|
||||
#: js/ui/extensionDownloader.js:238
|
||||
msgid "Install Extension"
|
||||
msgstr "Namesti razširitev"
|
||||
|
||||
#: js/ui/extensionDownloader.js:241
|
||||
#: js/ui/extensionDownloader.js:239
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from 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"
|
||||
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."
|
||||
msgstr "Posodobitve razširitev so pripravljene na namestitev."
|
||||
|
||||
@ -1513,7 +1503,7 @@ msgstr "Onemogoči"
|
||||
msgid "Leave Off"
|
||||
msgstr "Pusti onemogočeno"
|
||||
|
||||
#: js/ui/keyboard.js:227
|
||||
#: js/ui/keyboard.js:226
|
||||
msgid "Region & Language Settings"
|
||||
msgstr "Nastavitve območja in jezika"
|
||||
|
||||
@ -1566,11 +1556,11 @@ msgstr "Poglej vir"
|
||||
msgid "Web Page"
|
||||
msgstr "Spletna stran"
|
||||
|
||||
#: js/ui/main.js:294
|
||||
#: js/ui/main.js:290
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Zaznana je prijava s skrbniškimi dovoljenji"
|
||||
|
||||
#: js/ui/main.js:295
|
||||
#: js/ui/main.js:291
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"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 "
|
||||
"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"
|
||||
msgstr "Zaklep zaslona je onemogočen"
|
||||
|
||||
#: js/ui/main.js:345
|
||||
#: js/ui/main.js:341
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr ""
|
||||
"Zaklepanje zaslona zahteva namestitev upravljalnika zaslona za okolje GNOME."
|
||||
@ -1621,47 +1611,47 @@ msgstr "Razveljavi"
|
||||
msgid "Overview"
|
||||
msgstr "Pregled"
|
||||
|
||||
#: js/ui/padOsd.js:96
|
||||
#: js/ui/padOsd.js:95
|
||||
msgid "New shortcut…"
|
||||
msgstr "Nova bližnjica …"
|
||||
|
||||
#: js/ui/padOsd.js:143
|
||||
#: js/ui/padOsd.js:142
|
||||
msgid "Application defined"
|
||||
msgstr "Program je določen"
|
||||
|
||||
#: js/ui/padOsd.js:144
|
||||
#: js/ui/padOsd.js:143
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Pokaži zaslonsko pomoč"
|
||||
|
||||
#: js/ui/padOsd.js:145
|
||||
#: js/ui/padOsd.js:144
|
||||
msgid "Switch monitor"
|
||||
msgstr "Nadzornik preklopa"
|
||||
|
||||
#: js/ui/padOsd.js:146
|
||||
#: js/ui/padOsd.js:145
|
||||
msgid "Assign keystroke"
|
||||
msgstr "Dodeli tipkovno bližnjico"
|
||||
|
||||
#: js/ui/padOsd.js:212
|
||||
#: js/ui/padOsd.js:211
|
||||
msgid "Done"
|
||||
msgstr "Končano"
|
||||
|
||||
#: js/ui/padOsd.js:718
|
||||
#: js/ui/padOsd.js:716
|
||||
msgid "Edit…"
|
||||
msgstr "Uredi …"
|
||||
|
||||
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877
|
||||
#: js/ui/padOsd.js:758 js/ui/padOsd.js:875
|
||||
msgid "None"
|
||||
msgstr "Brez"
|
||||
|
||||
#: js/ui/padOsd.js:831
|
||||
#: js/ui/padOsd.js:829
|
||||
msgid "Press a button to configure"
|
||||
msgstr "Pritisnite gumb za nastavitev"
|
||||
|
||||
#: js/ui/padOsd.js:832
|
||||
#: js/ui/padOsd.js:830
|
||||
msgid "Press Esc to exit"
|
||||
msgstr "Pritisnite tipko Esc za končanje"
|
||||
|
||||
#: js/ui/padOsd.js:835
|
||||
#: js/ui/padOsd.js:833
|
||||
msgid "Press any key to exit"
|
||||
msgstr "Pritisnite katerokoli tipko za končanje"
|
||||
|
||||
@ -1671,12 +1661,12 @@ msgstr "Pritisnite katerokoli tipko za končanje"
|
||||
msgid "Activities"
|
||||
msgstr "Dejavnosti"
|
||||
|
||||
#: js/ui/panel.js:542
|
||||
#: js/ui/panel.js:556
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Sistem"
|
||||
|
||||
#: js/ui/panel.js:658
|
||||
#: js/ui/panel.js:674
|
||||
msgid "Top Bar"
|
||||
msgstr "Vrhnja vrstica"
|
||||
|
||||
@ -1715,7 +1705,7 @@ msgstr "Zaklep ni mogoč"
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Zaklep je preprečil program"
|
||||
|
||||
#: js/ui/screenshot.js:141
|
||||
#: js/ui/screenshot.js:155
|
||||
msgid "Screenshot taken"
|
||||
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-info.c:50
|
||||
#: subprojects/extensions-tool/src/command-list.c:64
|
||||
#: subprojects/extensions-tool/src/main.c:146
|
||||
msgid "Failed to connect to GNOME Shell\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-enable.c:119
|
||||
#: 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-uninstall.c:104
|
||||
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-enable.c:124
|
||||
#: 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-uninstall.c:109
|
||||
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"
|
||||
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"
|
||||
msgstr "Odpre možnosti razširitve"
|
||||
|
||||
@ -2961,10 +2957,6 @@ msgstr "Odstrani razširitev"
|
||||
msgid "Do not print error messages"
|
||||
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
|
||||
msgid "Path"
|
||||
msgstr "Pot"
|
||||
@ -3099,6 +3091,17 @@ msgstr[3] "%u dovodi naprave"
|
||||
msgid "System Sounds"
|
||||
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"
|
||||
#~ msgstr "Skrči"
|
||||
|
||||
|
39
po/uk.po
39
po/uk.po
@ -10,8 +10,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2021-11-26 16:19+0000\n"
|
||||
"PO-Revision-Date: 2021-11-26 23:35+0200\n"
|
||||
"POT-Creation-Date: 2021-11-02 15:41+0000\n"
|
||||
"PO-Revision-Date: 2021-11-02 18:31+0200\n"
|
||||
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
|
||||
"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
|
||||
"Language: uk\n"
|
||||
@ -798,7 +798,7 @@ msgstr "Заборонити доступ"
|
||||
msgid "Grant Access"
|
||||
msgstr "Надати доступ"
|
||||
|
||||
#: js/ui/appDisplay.js:1791
|
||||
#: js/ui/appDisplay.js:1846
|
||||
msgid "Unnamed Folder"
|
||||
msgstr "Неназвана тека"
|
||||
|
||||
@ -1402,11 +1402,11 @@ msgstr "Встановити розширення"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Звантажити і встановити «%s» з extensions.gnome.org?"
|
||||
|
||||
#: js/ui/extensionSystem.js:266
|
||||
#: js/ui/extensionSystem.js:252
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Випущено оновлення розширень"
|
||||
|
||||
#: js/ui/extensionSystem.js:267
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Приготовано до встановлення оновлення розширень."
|
||||
|
||||
@ -1553,25 +1553,11 @@ msgstr "Переглянути джерело"
|
||||
msgid "Web Page"
|
||||
msgstr "Веб-сторінка"
|
||||
|
||||
#: js/ui/main.js:259
|
||||
msgid "System was put in unsafe mode"
|
||||
msgstr ""
|
||||
"Систему переведено у небезпечний режим"
|
||||
|
||||
#: js/ui/main.js:260
|
||||
msgid "Applications now have unrestricted access"
|
||||
msgstr ""
|
||||
"Тепер програми мають необмежений доступ до даних"
|
||||
|
||||
#: js/ui/main.js:261 js/ui/overview.js:58
|
||||
msgid "Undo"
|
||||
msgstr "Повернути"
|
||||
|
||||
#: js/ui/main.js:307
|
||||
#: js/ui/main.js:290
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Увійшов як наділений користувач"
|
||||
|
||||
#: js/ui/main.js:308
|
||||
#: js/ui/main.js:291
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1579,11 +1565,11 @@ msgstr ""
|
||||
"З міркувань безпеки слід уникати сеансів з наділеними правами. Користуйтесь "
|
||||
"звичайним сеансом."
|
||||
|
||||
#: js/ui/main.js:357
|
||||
#: js/ui/main.js:340
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "Блокування екрана вимкнено"
|
||||
|
||||
#: js/ui/main.js:358
|
||||
#: js/ui/main.js:341
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "Блокування екрана потребує керування входом GNOME."
|
||||
|
||||
@ -1611,6 +1597,10 @@ msgstr "Введіть текст для пошуку"
|
||||
msgid "Applications"
|
||||
msgstr "Програми"
|
||||
|
||||
#: js/ui/overview.js:58
|
||||
msgid "Undo"
|
||||
msgstr "Повернути"
|
||||
|
||||
#. Translators: This is the main view to select
|
||||
#. activities. See also note for "Activities" string.
|
||||
#: js/ui/overview.js:71
|
||||
@ -2939,7 +2929,8 @@ msgstr "У розширення «%s» немає налаштувань\n"
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:62
|
||||
#, c-format
|
||||
msgid "Failed to open prefs for extension “%s”: %s\n"
|
||||
msgstr "Не вдалося відкрити налаштування для розширення «%s»: %s\n"
|
||||
msgstr ""
|
||||
"Не вдалося відкрити налаштування для розширення «%s»: %s\n"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-prefs.c:87
|
||||
msgid "Opens extension preferences"
|
||||
|
@ -52,7 +52,7 @@ static const gchar introspection_xml[] =
|
||||
" <arg type='b' name='force_reload' direction='in'/>"
|
||||
" </method>"
|
||||
" <signal name='EventsAddedOrUpdated'>"
|
||||
" <arg type='a(ssxxa{sv})' name='events' direction='out'/>"
|
||||
" <arg type='a(ssbxxa{sv})' name='events' direction='out'/>"
|
||||
" </signal>"
|
||||
" <signal name='EventsRemoved'>"
|
||||
" <arg type='as' name='ids' direction='out'/>"
|
||||
@ -110,25 +110,25 @@ typedef struct
|
||||
gchar *summary;
|
||||
time_t start_time;
|
||||
time_t end_time;
|
||||
guint is_all_day : 1;
|
||||
} CalendarAppointment;
|
||||
|
||||
static gboolean
|
||||
static time_t
|
||||
get_time_from_property (ECalClient *cal,
|
||||
ICalComponent *icomp,
|
||||
ICalPropertyKind prop_kind,
|
||||
ICalTime * (* get_prop_func) (ICalProperty *prop),
|
||||
ICalTimezone *default_zone,
|
||||
ICalTime **out_itt,
|
||||
ICalTimezone **out_timezone)
|
||||
ICalTimezone *default_zone)
|
||||
{
|
||||
ICalProperty *prop;
|
||||
ICalTime *itt;
|
||||
ICalParameter *param;
|
||||
ICalTimezone *timezone = NULL;
|
||||
time_t retval;
|
||||
|
||||
prop = i_cal_component_get_first_property (icomp, prop_kind);
|
||||
if (!prop)
|
||||
return FALSE;
|
||||
return 0;
|
||||
|
||||
itt = get_prop_func (prop);
|
||||
|
||||
@ -142,13 +142,13 @@ get_time_from_property (ECalClient *cal,
|
||||
|
||||
i_cal_time_set_timezone (itt, timezone);
|
||||
|
||||
retval = i_cal_time_as_timet_with_zone (itt, timezone);
|
||||
|
||||
g_clear_object (¶m);
|
||||
g_clear_object (&prop);
|
||||
g_clear_object (&itt);
|
||||
|
||||
*out_itt = itt;
|
||||
*out_timezone = timezone;
|
||||
|
||||
return TRUE;
|
||||
return retval;
|
||||
}
|
||||
|
||||
static inline time_t
|
||||
@ -156,26 +156,11 @@ get_ical_start_time (ECalClient *cal,
|
||||
ICalComponent *icomp,
|
||||
ICalTimezone *default_zone)
|
||||
{
|
||||
ICalTime *itt;
|
||||
ICalTimezone *timezone;
|
||||
time_t retval;
|
||||
|
||||
if (!get_time_from_property (cal,
|
||||
icomp,
|
||||
I_CAL_DTSTART_PROPERTY,
|
||||
i_cal_property_get_dtstart,
|
||||
default_zone,
|
||||
&itt,
|
||||
&timezone))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
retval = i_cal_time_as_timet_with_zone (itt, timezone);
|
||||
|
||||
g_clear_object (&itt);
|
||||
|
||||
return retval;
|
||||
return get_time_from_property (cal,
|
||||
icomp,
|
||||
I_CAL_DTSTART_PROPERTY,
|
||||
i_cal_property_get_dtstart,
|
||||
default_zone);
|
||||
}
|
||||
|
||||
static inline time_t
|
||||
@ -183,36 +168,54 @@ get_ical_end_time (ECalClient *cal,
|
||||
ICalComponent *icomp,
|
||||
ICalTimezone *default_zone)
|
||||
{
|
||||
ICalTime *itt;
|
||||
ICalTimezone *timezone;
|
||||
time_t retval;
|
||||
return get_time_from_property (cal,
|
||||
icomp,
|
||||
I_CAL_DTEND_PROPERTY,
|
||||
i_cal_property_get_dtend,
|
||||
default_zone);
|
||||
}
|
||||
|
||||
if (!get_time_from_property (cal,
|
||||
icomp,
|
||||
I_CAL_DTEND_PROPERTY,
|
||||
i_cal_property_get_dtend,
|
||||
default_zone,
|
||||
&itt,
|
||||
&timezone))
|
||||
static gboolean
|
||||
get_ical_is_all_day (ECalClient *cal,
|
||||
ICalComponent *icomp,
|
||||
time_t start_time,
|
||||
ICalTimezone *default_zone)
|
||||
{
|
||||
ICalProperty *prop;
|
||||
ICalDuration *duration;
|
||||
ICalTime *dtstart;
|
||||
struct tm *start_tm;
|
||||
time_t end_time;
|
||||
gboolean retval;
|
||||
|
||||
dtstart = i_cal_component_get_dtstart (icomp);
|
||||
if (dtstart && i_cal_time_is_date (dtstart))
|
||||
{
|
||||
if (!get_time_from_property (cal,
|
||||
icomp,
|
||||
I_CAL_DTSTART_PROPERTY,
|
||||
i_cal_property_get_dtstart,
|
||||
default_zone,
|
||||
&itt,
|
||||
&timezone))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (i_cal_time_is_date (itt))
|
||||
i_cal_time_adjust (itt, 1, 0, 0, 0);
|
||||
g_clear_object (&dtstart);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
retval = i_cal_time_as_timet_with_zone (itt, timezone);
|
||||
g_clear_object (&dtstart);
|
||||
|
||||
g_clear_object (&itt);
|
||||
start_tm = gmtime (&start_time);
|
||||
if (start_tm->tm_sec != 0 ||
|
||||
start_tm->tm_min != 0 ||
|
||||
start_tm->tm_hour != 0)
|
||||
return FALSE;
|
||||
|
||||
if ((end_time = get_ical_end_time (cal, icomp, default_zone)))
|
||||
return (end_time - start_time) % 86400 == 0;
|
||||
|
||||
prop = i_cal_component_get_first_property (icomp, I_CAL_DURATION_PROPERTY);
|
||||
if (!prop)
|
||||
return FALSE;
|
||||
|
||||
duration = i_cal_property_get_duration (prop);
|
||||
|
||||
retval = duration && (i_cal_duration_as_int (duration) % 86400) == 0;
|
||||
|
||||
g_clear_object (&duration);
|
||||
g_clear_object (&prop);
|
||||
|
||||
return retval;
|
||||
}
|
||||
@ -238,6 +241,10 @@ calendar_appointment_new (ECalClient *cal,
|
||||
appt->summary = g_strdup (i_cal_component_get_summary (ical));
|
||||
appt->start_time = get_ical_start_time (cal, ical, default_zone);
|
||||
appt->end_time = get_ical_end_time (cal, ical, default_zone);
|
||||
appt->is_all_day = get_ical_is_all_day (cal,
|
||||
ical,
|
||||
appt->start_time,
|
||||
default_zone);
|
||||
|
||||
e_cal_component_id_free (id);
|
||||
|
||||
@ -354,7 +361,7 @@ app_notify_events_added (App *app)
|
||||
/* The a{sv} is used as an escape hatch in case we want to provide more
|
||||
* information in the future without breaking ABI
|
||||
*/
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ssxxa{sv})"));
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ssbxxa{sv})"));
|
||||
for (link = events; link; link = g_slist_next (link))
|
||||
{
|
||||
CalendarAppointment *appt = link->data;
|
||||
@ -368,9 +375,10 @@ app_notify_events_added (App *app)
|
||||
{
|
||||
g_variant_builder_init (&extras_builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_add (&builder,
|
||||
"(ssxxa{sv})",
|
||||
"(ssbxxa{sv})",
|
||||
appt->id,
|
||||
appt->summary != NULL ? appt->summary : "",
|
||||
(gboolean) appt->is_all_day,
|
||||
(gint64) start_time,
|
||||
(gint64) end_time,
|
||||
&extras_builder);
|
||||
@ -382,7 +390,7 @@ app_notify_events_added (App *app)
|
||||
"/org/gnome/Shell/CalendarServer",
|
||||
"org.gnome.Shell.CalendarServer",
|
||||
"EventsAddedOrUpdated",
|
||||
g_variant_new ("(a(ssxxa{sv}))", &builder),
|
||||
g_variant_new ("(a(ssbxxa{sv}))", &builder),
|
||||
NULL);
|
||||
|
||||
g_variant_builder_clear (&builder);
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!@PYTHON@
|
||||
#!/usr/bin/env python3
|
||||
# -*- mode: Python; indent-tabs-mode: nil; -*-
|
||||
|
||||
import subprocess
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!@PYTHON@
|
||||
#!/usr/bin/env python3
|
||||
# -*- mode: Python; indent-tabs-mode: nil; -*-
|
||||
|
||||
import datetime
|
||||
|
@ -46,6 +46,7 @@
|
||||
#include "shell-global-private.h"
|
||||
#include "shell-perf-log.h"
|
||||
#include "shell-wm-private.h"
|
||||
#include "shell-realms.h"
|
||||
|
||||
#define GNOME_TYPE_SHELL_PLUGIN (gnome_shell_plugin_get_type ())
|
||||
G_DECLARE_FINAL_TYPE (GnomeShellPlugin, gnome_shell_plugin,
|
||||
@ -214,6 +215,20 @@ gnome_shell_plugin_destroy (MetaPlugin *plugin,
|
||||
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
|
||||
gnome_shell_plugin_switch_workspace (MetaPlugin *plugin,
|
||||
gint from,
|
||||
@ -221,6 +236,10 @@ gnome_shell_plugin_switch_workspace (MetaPlugin *plugin,
|
||||
MetaMotionDirection 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
|
||||
|
@ -1,7 +1,7 @@
|
||||
service_data = configuration_data()
|
||||
service_data.set('libexecdir', libexecdir)
|
||||
|
||||
subdir('calendar-server')
|
||||
#subdir('calendar-server')
|
||||
subdir('hotplug-sniffer')
|
||||
subdir('st')
|
||||
subdir('tray')
|
||||
@ -125,6 +125,7 @@ libshell_private_headers = [
|
||||
'shell-app-cache-private.h',
|
||||
'shell-app-system-private.h',
|
||||
'shell-global-private.h',
|
||||
'shell-realms-private.h',
|
||||
'shell-window-tracker-private.h',
|
||||
'shell-wm-private.h'
|
||||
]
|
||||
@ -147,6 +148,14 @@ libshell_sources = [
|
||||
'shell-perf-log.c',
|
||||
'shell-polkit-authentication-agent.c',
|
||||
'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-secure-text-buffer.c',
|
||||
'shell-secure-text-buffer.h',
|
||||
|
@ -23,7 +23,7 @@
|
||||
* Shell is running.
|
||||
*/
|
||||
|
||||
#define DEFAULT_TIMEOUT_SECONDS 5
|
||||
#define DEFAULT_TIMEOUT_SECONDS 2
|
||||
|
||||
struct _ShellAppCache
|
||||
{
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "shell-app-cache-private.h"
|
||||
#include "shell-app-private.h"
|
||||
#include "shell-window-tracker-private.h"
|
||||
#include "shell-realms.h"
|
||||
#include "shell-app-system-private.h"
|
||||
#include "shell-global.h"
|
||||
#include "shell-util.h"
|
||||
@ -91,6 +92,110 @@ static void shell_app_system_class_init(ShellAppSystemClass *klass)
|
||||
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
|
||||
scan_startup_wm_class_to_id (ShellAppSystem *self)
|
||||
{
|
||||
@ -106,6 +211,7 @@ scan_startup_wm_class_to_id (ShellAppSystem *self)
|
||||
{
|
||||
GAppInfo *info = l->data;
|
||||
const char *startup_wm_class, *id, *old_id;
|
||||
char *realm_wmclass;
|
||||
|
||||
id = g_app_info_get_id (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)
|
||||
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
|
||||
* the one where ID and StartupWMClass match */
|
||||
old_id = g_hash_table_lookup (priv->startup_wm_class_to_id, startup_wm_class);
|
||||
if (old_id == NULL || strcmp (id, startup_wm_class) == 0)
|
||||
old_id = g_hash_table_lookup (priv->startup_wm_class_to_id, realm_wmclass);
|
||||
if (old_id == NULL || strcmp (id, startup_wm_class) == 0) {
|
||||
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 *
|
||||
shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system,
|
||||
const char *wmclass)
|
||||
const char *wmclass,
|
||||
const char *realm_name)
|
||||
{
|
||||
char *canonicalized;
|
||||
char *desktop_file;
|
||||
char *classname;
|
||||
ShellApp *app;
|
||||
|
||||
if (wmclass == NULL)
|
||||
return NULL;
|
||||
|
||||
classname = realm_wm_class (wmclass, realm_name);
|
||||
|
||||
/* First try without changing the case (this handles
|
||||
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
|
||||
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);
|
||||
g_free (desktop_file);
|
||||
|
||||
if (app)
|
||||
if (app) {
|
||||
g_free (classname);
|
||||
return app;
|
||||
}
|
||||
|
||||
canonicalized = g_ascii_strdown (wmclass, -1);
|
||||
canonicalized = g_ascii_strdown (classname, -1);
|
||||
|
||||
/* This handles "Fedora Eclipse", probably others.
|
||||
* Note g_strdelimit is modify-in-place. */
|
||||
@ -382,6 +499,7 @@ shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system,
|
||||
|
||||
g_free (canonicalized);
|
||||
g_free (desktop_file);
|
||||
g_free (classname);
|
||||
|
||||
return app;
|
||||
}
|
||||
@ -398,14 +516,20 @@ shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system,
|
||||
*/
|
||||
ShellApp *
|
||||
shell_app_system_lookup_startup_wmclass (ShellAppSystem *system,
|
||||
const char *wmclass)
|
||||
const char *wmclass,
|
||||
const char *realm_name)
|
||||
{
|
||||
const char *id;
|
||||
char *classname;
|
||||
|
||||
if (wmclass == 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)
|
||||
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);
|
||||
}
|
||||
|
||||
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:
|
||||
* @self: A #ShellAppSystem
|
||||
@ -458,7 +605,9 @@ shell_app_system_get_running (ShellAppSystem *self)
|
||||
{
|
||||
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);
|
||||
@ -482,12 +631,16 @@ shell_app_system_search (const char *search_string)
|
||||
{
|
||||
char ***results = g_desktop_app_info_search (search_string);
|
||||
char ***groups, **ids;
|
||||
char *current_realm;
|
||||
|
||||
current_realm = current_realm_name (FALSE);
|
||||
|
||||
for (groups = results; *groups; groups++)
|
||||
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';
|
||||
|
||||
g_free (current_realm);
|
||||
return results;
|
||||
}
|
||||
|
||||
@ -504,5 +657,7 @@ shell_app_system_search (const char *search_string)
|
||||
GList *
|
||||
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;
|
||||
}
|
||||
|
@ -20,9 +20,11 @@ ShellApp *shell_app_system_lookup_heuristic_basename (ShellAppSystem *
|
||||
const char *id);
|
||||
|
||||
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,
|
||||
const char *wmclass);
|
||||
const char *wmclass,
|
||||
const char *realm_name);
|
||||
|
||||
GSList *shell_app_system_get_running (ShellAppSystem *self);
|
||||
char ***shell_app_system_search (const char *search_string);
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include "shell-util.h"
|
||||
#include "st.h"
|
||||
#include "switcheroo-control.h"
|
||||
#include "shell-realm-tracker.h"
|
||||
|
||||
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);
|
||||
|
||||
update_scaling_factor (global, settings);
|
||||
|
||||
shell_realm_tracker_start ();
|
||||
}
|
||||
|
||||
GjsContext *
|
||||
|
396
src/shell-realm-item.c
Normal file
396
src/shell-realm-item.c
Normal 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
35
src/shell-realm-item.h
Normal 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
310
src/shell-realm-tracker.c
Normal 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
14
src/shell-realm-tracker.h
Normal 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__ */
|
21
src/shell-realms-private.h
Normal file
21
src/shell-realms-private.h
Normal 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__
|
386
src/shell-realms-window-frames.c
Normal file
386
src/shell-realms-window-frames.c
Normal 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);
|
||||
}
|
||||
}
|
17
src/shell-realms-window-frames.h
Normal file
17
src/shell-realms-window-frames.h
Normal 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
460
src/shell-realms.c
Normal 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
26
src/shell-realms.h
Normal 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__
|
@ -15,6 +15,7 @@
|
||||
#include "shell-window-tracker-private.h"
|
||||
#include "shell-app-private.h"
|
||||
#include "shell-global.h"
|
||||
#include "shell-realms.h"
|
||||
#include "st.h"
|
||||
|
||||
/* 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);
|
||||
}
|
||||
|
||||
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:
|
||||
*
|
||||
@ -146,6 +163,7 @@ get_app_from_window_wmclass (MetaWindow *window)
|
||||
const char *wm_class;
|
||||
const char *wm_instance;
|
||||
const char *sandbox_id;
|
||||
const char *realm_name;
|
||||
g_autofree char *app_prefix = NULL;
|
||||
|
||||
appsys = shell_app_system_get_default ();
|
||||
@ -154,6 +172,8 @@ get_app_from_window_wmclass (MetaWindow *window)
|
||||
if (sandbox_id)
|
||||
app_prefix = g_strdup_printf ("%s.", sandbox_id);
|
||||
|
||||
realm_name = get_window_realm_name (window);
|
||||
|
||||
/* Notes on the heuristics used here:
|
||||
much of the complexity here comes from the desire to support
|
||||
Chrome apps.
|
||||
@ -191,23 +211,23 @@ get_app_from_window_wmclass (MetaWindow *window)
|
||||
|
||||
/* first try a match from WM_CLASS (instance part) to StartupWMClass */
|
||||
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))
|
||||
return g_object_ref (app);
|
||||
|
||||
/* then try a match from WM_CLASS to StartupWMClass */
|
||||
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))
|
||||
return g_object_ref (app);
|
||||
|
||||
/* 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))
|
||||
return g_object_ref (app);
|
||||
|
||||
/* 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))
|
||||
return g_object_ref (app);
|
||||
|
||||
@ -236,7 +256,19 @@ get_app_from_id (MetaWindow *window,
|
||||
|
||||
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);
|
||||
if (app)
|
||||
return g_object_ref (app);
|
||||
|
@ -39,6 +39,7 @@
|
||||
</description>
|
||||
|
||||
<releases>
|
||||
<release version="41.1" date="2021-11-03"/>
|
||||
<release version="41.0" date="2021-09-19"/>
|
||||
</releases>
|
||||
|
||||
|
@ -9,7 +9,7 @@ endif
|
||||
launcherconf.set('prefix', prefix)
|
||||
launcherconf.set('libdir', libdir)
|
||||
launcherconf.set('pkgdatadir', pkgdatadir)
|
||||
launcherconf.set('gjs', gjs.path())
|
||||
launcherconf.set('gjs', gjs)
|
||||
|
||||
configure_file(
|
||||
input: prgname + '.in',
|
||||
|
@ -1,5 +1,5 @@
|
||||
project('gnome-extensions-app',
|
||||
version: '41.0',
|
||||
version: '41.1',
|
||||
meson_version: '>= 0.53.0',
|
||||
license: 'GPLv2+'
|
||||
)
|
||||
@ -44,7 +44,7 @@ localedir = join_paths(datadir, 'locale')
|
||||
metainfodir = join_paths(datadir, 'metainfo')
|
||||
servicedir = join_paths(datadir, 'dbus-1', 'services')
|
||||
|
||||
gjs = find_program('gjs')
|
||||
gjs = '/usr/bin/gjs'
|
||||
appstream_util = find_program('appstream-util', required: false)
|
||||
desktop_file_validate = find_program('desktop-file-validate', required: false)
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
project('gnome-extensions-tool', 'c',
|
||||
version: '41.0',
|
||||
version: '41.1',
|
||||
meson_version: '>= 0.53.0',
|
||||
license: 'GPLv2+'
|
||||
)
|
||||
|
@ -1,5 +1,5 @@
|
||||
project('shew', 'c',
|
||||
version: '41.0',
|
||||
version: '41.1',
|
||||
meson_version: '>= 0.53.0',
|
||||
license: 'LGPLv2+',
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user