Compare commits

..

61 Commits

Author SHA1 Message Date
Dylan McCall
4a23ddffa8 messageList: Give focus to next message on delete
When the user deletes a message using the keyboard, set the keyboard
focus to the next message, or to the list container itself, so it
remains possible to navigate using the keyboard.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/502
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2053>
2021-12-01 10:19:54 +00:00
Sebastian Keller
b37fa61eb0 calendar-server: Calculate event end according to spec if missing
The ical specification allows events to omit an end, which for dates
means the end is start + 1 day and for date times it is equal to the
start.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4753
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2023>
2021-11-30 02:13:24 +00:00
Sebastian Keller
72a6450017 calendar-server: Remove the all-day property of events
The way it is currently calculated is broken for days with DST changes
or leap seconds and it is not needed anymore anyway. This will also make
the fix in the following commit simpler.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2023>
2021-11-30 02:13:24 +00:00
Sebastian Keller
d8efce0ffd dateMenu: Ignore the allDay property of an event
Given the correct end date this code would be able to determine this
correctly itself and doesn't need to rely on that property. And events
without correct end dates are currently not shown anyway. This prepares
for removing the allDay property entirely.

This also fixes events going from 13:00 the current day to 01:00 not
showing "...". It also fixes multi-day events wrongly detected as
all-day events by the calendar-server showing up as "All day", despite
only covering 1 hour of the day.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2023>
2021-11-30 02:13:24 +00:00
Sebastian Keller
2250653673 calendar: Fix inclusion of zero-length events
Events with a date time (not just a date) where the end time is missing
or matching the start time were considered to not overlap the selected
interval if they were happening on the start time of the interval. This
was causing such zero-length events to be omitted from the calendar if
they were starting at 0:00.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2023>
2021-11-30 02:13:24 +00:00
Sebastian Keller
9604778343 calendar: Start ranges at 0:00 and iterate in whole days
Using a starting time other than 0:00 will prevent events before the
chosen starting time from showing up for that range. This was causing
events before 12:00 to be missing in the shell calendar on the first day
of a range.

Fix this by always starting at 0:00 and then incrementing by days rather
than a time value that depending on DST or leap seconds may or may not
correspond to a day.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2023>
2021-11-30 02:13:24 +00:00
Sebastian Keller
2fffe91488 dateMenu: Use intervals with non-inclusive ends for date ranges
The ical events, we are comparing these intervals to use the first point
in time after the end of the event as their end time, while the code in
gnome-shell was using the last point in time within the range. This was
causing multi-day events ranging from 0:00 to 0:00 to have a trailing
"..." shown on the last day.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2023>
2021-11-30 02:13:24 +00:00
Hugo Carvalho
5eddcd3cf2 Update Portuguese translation 2021-11-27 15:42:46 +00:00
Yuri Chornoivan
c218bb16e2 Update Ukrainian translation 2021-11-26 21:36:23 +00:00
Goran Vidović
1d9d3d2a12 Update Croatian translation 2021-11-26 18:04:13 +00:00
Florian Müllner
aba0d0bb1b main: Warn when unsafe mode is toggled
MetaContext:unsafe-mode was added as a debugging tool to temporarily
remove restrictions on privileged APIs. But as it turns out, there
are now extensions that toggle the property permanently. Right now
none of them are malicious (as far as I can see), but it's still a
bad idea and should be discouraged.

Do this with a notification that warns the user when unsafe mode is
enabled non-interactively (i.e. via looking glass), and hopefully
also clarifies what the weird lock icon in the top bar is about.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4798

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2050>
2021-11-26 16:14:39 +00:00
Carlos Garnacho
254b0ca2ad windowManager: Set up unfullscreen/app-switch gestures in the capture phase
Use the new API to specify the gesture phase.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1992>
2021-11-24 22:33:18 +00:00
Carlos Garnacho
748fe074c4 swipeTracker: Set up TouchSwipeGesture in the capture phase
Use the new API to specify the gesture phase.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1992>
2021-11-24 22:33:18 +00:00
Fabio Tomat
919c4cf3d5 Update Friulian translation 2021-11-22 11:06:48 +00:00
Florian Müllner
7d895874b6 layout: Removed unused method
Commit a6b4d4945 removed the only caller in 2013(!)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2034>
2021-11-21 20:46:20 +00:00
Aurimas Černius
550b1b2970 Updated Lithuanian translation 2021-11-21 21:43:20 +02:00
MohammadSaleh Kamyab
fc77f2e1e0 Update Persian translation 2021-11-20 08:58:41 +00:00
Quentin PAGÈS
242dea15f1 Update Occitan translation 2021-11-18 20:15:41 +00:00
Evan Welsh
826083d763 appDisplay: Remove unused animate() implementations
Usages were removed in gnome-shell!1593

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2041>
2021-11-17 10:31:42 +00:00
Evan Welsh
f8f37e0161 modalDialog: Consistently return correct boolean for open() in ModalDialogs
Previously these calls either ignored the return from super.open() or
implicitely returned false.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2038>
2021-11-17 10:24:47 +00:00
Evan Welsh
75e57749f0 keyring: Fix incorrect reference to the label instead of string
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2036>
2021-11-17 10:19:08 +00:00
Evan Welsh
01a23b0553 calendar: Use boolean operations instead of bitwise operators
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2039>
2021-11-17 10:13:44 +00:00
Sebastian Keller
34bf17ad27 magnifier: Remove call to dropped Clutter::get_default_frame_rate()
Clutter::get_default_frame_rate() has been removed in mutter!2002, but
it is still being used here. Given that this was basically hardcoded to
60 in mutter with the only way of changing this being an obscure
environment variable, just use that value here directly. This avoids a
crash when starting gnome-shell with the magnifier enabled.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4761
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2025>
2021-11-16 23:34:38 +00:00
Daniel Mustieles
ff60137da2 Updated Spanish translation 2021-11-16 15:48:18 +01:00
Yaron Shahrabani
c3f5aa6c5c Update Hebrew translation 2021-11-11 22:27:18 +00:00
Georges Basile Stavracas Neto
795312b8d5 environment: Require gnome-desktop 3.0
Pretty much the exact same case of 9ce6756235.

libgnome-desktop saw a major version bump, and we have to
stick with 3.0 for a while.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2030>
2021-11-11 16:20:39 -03:00
Georges Basile Stavracas Neto
9ce6756235 environment: Require GnomeBluetooth 1.0
libgnome-bluetooth will start to offer a 2.0 library version
depending on GTK4. Given that GNOME Shell already depends on
GTK3, it cannot use this next version of gnome-bluetooth. And
since GJS will automatically try and use the latest version
available of any library, Shell must specify it wants 1.0
explicitly.

Add a required GnomeBluetooth version number when importing it
for the status indicator.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2015>
2021-11-11 19:13:40 +00:00
Goran Vidović
fd45a6c9d2 Update Croatian translation
(cherry picked from commit ed7153bcbbf29c698226009af6f0df347386609d)
2021-11-11 09:45:33 +00:00
Milo Casagrande
cd46f2f65a Update Italian translation 2021-11-09 08:16:59 +00:00
Sebastian Keller
34b6cd0bea magnifier: Disable desaturation effect when not in use
The desaturation effect was always enabled, regardless of the specified
factor. This was causing the magnifier to always hit offscreen
rendering, even when not necessary. Additionally offscreen rendering is
currently also causing glitches in MetaWindowGroup which this helps to
avoid in some cases.

Related: https://gitlab.gnome.org/GNOME/mutter/-/issues/1678
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2026>
2021-11-08 15:39:34 +00:00
Jakub Steiner
48f8aec676 theme: Provide :checked state for buttons
Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4757

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2027>
2021-11-08 14:23:53 +01:00
Hugo Carvalho
66016755c9 Update Portuguese translation 2021-11-07 22:35:21 +00:00
Quentin PAGÈS
f61cd690ad Update Occitan translation 2021-11-07 19:31:19 +00:00
Fabio Tomat
2523d7b4a9 Update Friulian translation 2021-11-07 16:50:29 +00:00
Charles Monzat
a8c6c1cdd3 Update French translation
(cherry picked from commit 4f2b7300a160e96e66b3b16179d9fb3df3378433)
2021-11-07 14:53:27 +00:00
Dušan Kazik
86ab9b9d7a Update Slovak translation
(cherry picked from commit cc566201b71e86b0a70f722fd155ed5481c5831b)
2021-11-06 14:10:59 +00:00
Piotr Drąg
db4906bb8a Update Polish translation 2021-11-06 14:27:27 +01:00
Sebastian Keller
2e275cca25 shellMountOperation: Remove unused volume monitor
It seems to have never been used since 6b5f9a647a, the commit that
introduced it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2021>
2021-11-03 22:13:00 +00:00
Christian Kirbach
b518f2b6af Update German translation
(cherry picked from commit 03a3ce062a)
2021-11-03 20:33:59 +00:00
Kukuh Syafaat
50abd018f4 Update Indonesian translation
(cherry picked from commit 0512d1fff4)
2021-11-03 10:04:31 +00:00
Rafael Fontenelle
8a62b2a24d Update Brazilian Portuguese translation
(cherry picked from commit ba32dcc16b)
2021-11-03 01:19:57 +00:00
Anders Jonsson
4f5db4371f Update Swedish translation
(cherry picked from commit edcee44c72)
2021-11-02 21:05:28 +00:00
Yuri Chornoivan
4d4d3cdf9b Update Ukrainian translation
(cherry picked from commit f8cdac49c6)
2021-11-02 16:32:00 +00:00
Carlos Garnacho
0177560952 inputMethod: Do not reset invisible preedit on focus_out
If the preedit is in invisible state, the last preedit string that
was sent around is already null, so there is no need to clear the preedit
in that case.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2011>
2021-11-01 17:02:50 +00:00
Carlos Garnacho
047691b0d3 inputMethod: Do not communicate preedit text change on reset
This is now done in the ClutterInputFocus for us, since
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1940. There
is no need to duplicate this call, and it happens to cause undesired
scrolling to content in some cases when this reset happens during
a change in the IM focused client state.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4647
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2011>
2021-11-01 17:02:50 +00:00
Carlos Garnacho
286cfdc6d4 inputMethod: Equate empty preedit string to null
If we get '' from the IM as the preedit string, it is pretty safe
to handle it as "no preedit" altogether.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2011>
2021-11-01 17:02:50 +00:00
Florian Müllner
b93342f72e dbusServices/extensions: Only allow one dialog at a time
Showing multiple preference dialogs at the same time (for instance
by repeated `gnome-extensions prefs` calls) may or may not work as
expected, depending on whether any of the dialogs is modal or not
(read: opened via the Extensions app).

The easiest way to address this is to disallow more than a single
dialog at the time. It's arguably also the more predictable behavior,
and means extensions don't have to deal with inconsistent state
caused by multiple dialogs.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4564

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2013>
2021-10-30 21:50:47 +00:00
Florian Müllner
4d2b008966 dbusServices/extensions: Fix shutdown after showing prefs
GTK4 relies entirely on refcounting for cleanup (that is,
there is no longer a destroy() method that forces a dispose
run regardless of the refcount).

Unfortunately that makes cleanup harder in (some) language
bindings, where an object may be kept alive implicitly by
closures etc.

Address this by releasing the hold count when the window
is closed rather than when it is destroyed.

This isn't the most elegant, but it ensure that the service
doesn't get stuck if an extension doesn't carefully clean
up everything in its prefs widget.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4564

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2013>
2021-10-30 21:50:47 +00:00
Florian Müllner
09ed1c533c extensions-tool/prefs: Log D-Bus errors
We currently ignore any error that may occur when calling the
OpenExtensionPrefs D-Bus method. Right now such an error is highly
unlikely, given that we already checked that we are running under
gnome-shell and the extension in question exists and has prefs.

We'll soon make sure that only one dialog is shown at any time,
which is an error that we can realistically expect, so handle that
properly.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4564

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2013>
2021-10-30 21:50:47 +00:00
Florian Müllner
79f448958b extensions-tool: Add missing newline
Unlike g_warning() and friends, g_printerr() does not append
a trailing newline.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4564

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2013>
2021-10-30 21:50:47 +00:00
Sebastian Keller
bc32a52108 shell/app: Don't move all workspace windows to their startup workspace
Windows from some applications, such as guake, are created as showing on
all workspaces. When these windows are put on the workspaces via
set_workspace_state() during construction, the first time the window is
added to a workspace in the loop triggers the shell app tracker which
then tries to move the window to its startup workspace. This makes the
window unsticky which triggers another set_workspace_state() which
tries to remove the window from all workspaces, but currently it is only
on the first one and then adds it to the startup workspace. Once that is
finished, the first set_workspace_state() continues adding the window
to the remaining workspaces, despite the window now no longer having
on_all_workspaces set to true.

When the window is now unmanaged, the window according to its internal
state is only found on the startup workspace, so it will only be removed
from that. This causes the assertion to fail that checks that the window
is no longer present on any workspace after this.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4720

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2014>
2021-10-30 13:21:17 +02:00
Carlos Garnacho
ff4ff66498 Revert "st: Only use clutter_actor_invalidate_paint_volume() if the API exists"
Since we are past the 40 API change hurdle, it is safe to revert this
commit.

This reverts commit 1cefd589da.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2010>
2021-10-27 19:51:27 +02:00
eshagh shahidani
69c66b0946 Update Persian translation
(cherry picked from commit 025588b89a)
2021-10-25 20:42:38 +00:00
Rūdolfs Mazurs
1d2c85d1b7 Update Latvian translation
(cherry picked from commit ce2ae0642f)
2021-10-25 17:56:55 +00:00
Florian Müllner
cc5cc0d653 environment: Apply autoReverse/repeatCount to all transitions
Like the old Tweener API, ease() allows to transition multiple
properties at once. If autoReverse or repeatCount are specified,
they should apply to all transitions, but right now we only set
them for the first one.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2007>
2021-10-21 19:52:33 +02:00
Selyan Slimane AMIRI
e7a90d98ae Update Kabyle translation
(cherry picked from commit 8c5d552cc2)
2021-10-16 14:35:26 +00:00
Ray Strode
d7b1264897 sessionMode: Drop allowExtensions property
Now that we allow extensions at the lock screens, extensions
are allowed for every session mode gnome-shell would typically
change to at runtime.

This means there's little advantage to having an allowExtensions
property in the session mode definition.

This commit simplifies the code a bit by dropping the property.

Third party session modes can still lock down extensions through
gsettings if they need to.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1967>
2021-10-14 18:40:53 +00:00
Ray Strode
2bf31dc49f sessionMode: Allow extensions at the login and unlock screens
Now extensions can specify which session modes they work in,
but specifying the login screen or unlock screen session modes in
an extensions metadata still won't work, because those session
modes disallow extensions.

This commit fixes that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1967>
2021-10-14 18:40:53 +00:00
Ray Strode
242cff7abf extensionSystem: Allow extensions to run on the login screen
At the moment it's not realy possible to extend the login screen to do
things it doesn't have built-in support for. This means in order
to support niche use cases, those cases have to change the main
code base. For instance, oVirt and Vmware deployments want to be able
to automaticaly log in guest VMs when a user pre-authenticates through a
console on a management host. To support those use cases, we added
code to the login screen directly, even though most machines will never
be associated with oVirt or Vmware management hosts.

We also get requests from e.g. government users that need certain features
at the login screen that wouldn't get used much outside of government
deployments. For instance, we've gotten requests that a machine contains
prominently displays that it has "Top Secret" information.

All of these use cases seem like they would better handled via
extensions that could be installed in the specific deployments. The
problem is extensions only run in the user session, and get
disabled at the login screen automatically.

This commit changes that. Now extensions can specify in their metadata
via a new sessionModes property, which modes that want to run in. For
backward compatibility, if an extension doesn't specify which session
modes it works in, its assumed the extension only works in the user
session.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1967>
2021-10-14 18:40:53 +00:00
Ray Strode
7e5ee2c282 extensionSystem: Get rid of _enabled boolean optimization
At the moment a session mode either allows extensions or it doesn't.
If it allows extensions, then the entire available list of
configured extensions get enabled as soon as the session mode is
entered.

Since enabling or disabling extensions is an all or nothing situation,
the code tracks whether extensions are already enabled when entering
the session mode, and if so, avoids iterating through the extension list
needlessly. It does this using a boolean named _enabled.

In the future, the extensions themselves will be given some say on
whether or not they should be enabled in a given session mode. This
means, the configured extension list may contain extensions that
shouldn't be enabled for a given session mode, and the _enabled boolean
will no longer be appropriated.

This commit drops the _enabled boolean optimization.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1967>
2021-10-14 18:40:53 +00:00
Florian Müllner
7bde02c1cf Post-branch mutter API bump
Since the CI pipeline now runs `meson dist` which includes a test
for an up-to-date NEWS entry, post-branch/release version bumps
have become unwieldy.

It's still useful to increase the API version right after branching
though, so return to bumping it manually and do so now.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2005>
2021-10-14 19:01:41 +02:00
79 changed files with 2343 additions and 5180 deletions

24
NEWS
View File

@ -1,27 +1,3 @@
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
====

View File

@ -1 +0,0 @@
bla test

View File

@ -6,7 +6,7 @@
<arg type="b" name="force_reload" direction="in"/>
</method>
<signal name="EventsAddedOrUpdated">
<arg type="a(ssbxxa{sv})" name="events" direction="out"/>
<arg type="a(ssxxa{sv})" name="events" direction="out"/>
</signal>
<signal name="EventsRemoved">
<arg type="as" name="ids" direction="out"/>

View File

@ -230,14 +230,6 @@
<default>["&lt;Super&gt;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"

View File

@ -116,7 +116,7 @@ stage {
&:focus { @include button(focus);}
&:hover { @include button(hover);}
&:insensitive { @include button(insensitive);}
&:active { @include button(active);}
&:active, &:checked { @include button(active);}
}
// buttons in dialogs

View File

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

View File

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

View File

@ -29,7 +29,6 @@ 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',

View File

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

View File

@ -142,12 +142,5 @@
<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>

View File

@ -76,10 +76,12 @@ class AccessDialog extends ModalDialog.ModalDialog {
}
open() {
super.open();
if (!super.open())
return false;
let connection = this._invocation.get_connection();
this._requestExported = this._request.export(connection, this._handle);
return true;
}
CloseAsync(invocation, _params) {

View File

@ -919,43 +919,6 @@ 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;
@ -1656,24 +1619,6 @@ 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);
@ -2277,11 +2222,6 @@ 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,

View File

@ -12,7 +12,6 @@ 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
@ -47,11 +46,8 @@ function _getBeginningOfDay(date) {
}
function _getEndOfDay(date) {
let ret = new Date(date.getTime());
ret.setHours(23);
ret.setMinutes(59);
ret.setSeconds(59);
ret.setMilliseconds(999);
const ret = _getBeginningOfDay(date);
ret.setDate(ret.getDate() + 1);
return ret;
}
@ -82,12 +78,11 @@ function _getCalendarDayAbbreviation(dayNumber) {
// Abstraction for an appointment/event in a calendar
var CalendarEvent = class CalendarEvent {
constructor(id, date, end, summary, allDay) {
constructor(id, date, end, summary) {
this.id = id;
this.date = date;
this.end = end;
this.summary = summary;
this.allDay = allDay;
}
};
@ -175,13 +170,26 @@ function _datesEqual(a, b) {
return true;
}
function _dateIntervalsOverlap(a0, a1, b0, b1) {
if (a1 <= b0)
return false;
else if (b1 <= a0)
return false;
else
/**
* 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)
return true;
if (e1 <= i0)
return false;
if (i1 <= e0)
return false;
return true;
}
// an implementation that reads data from a session bus service
@ -279,10 +287,10 @@ class DBusEventSource extends EventSourceBase {
let changed = false;
for (let n = 0; n < appointments.length; n++) {
const [id, summary, allDay, startTime, endTime] = appointments[n];
const [id, summary, startTime, endTime] = appointments[n];
const date = new Date(startTime * 1000);
const end = new Date(endTime * 1000);
let event = new CalendarEvent(id, date, end, summary, allDay);
let event = new CalendarEvent(id, date, end, summary);
this._events.set(event.id, event);
changed = true;
@ -297,7 +305,7 @@ class DBusEventSource extends EventSourceBase {
let changed = false;
for (const id of ids)
changed |= this._events.delete(id);
changed = changed || this._events.delete(id);
if (changed)
this.emit('changed');
@ -310,7 +318,7 @@ class DBusEventSource extends EventSourceBase {
let changed = false;
for (const id of this._events.keys()) {
if (id.startsWith(sourceUid))
changed |= this._events.delete(id);
changed = changed || this._events.delete(id);
}
if (changed)
@ -347,7 +355,7 @@ class DBusEventSource extends EventSourceBase {
*_getFilteredEvents(begin, end) {
for (const event of this._events.values()) {
if (_dateIntervalsOverlap(event.date, event.end, begin, end))
if (_eventOverlapsInterval(event.date, event.end, begin, end))
yield event;
}
}
@ -501,7 +509,7 @@ var Calendar = GObject.registerClass({
else
col = offsetCols + (7 + iter.getDay() - this._weekStart) % 7;
layout.attach(label, col, 1, 1, 1);
iter.setTime(iter.getTime() + MSECS_IN_DAY);
iter.setDate(iter.getDate() + 1);
}
// All the children after this are days, and get removed when we update the calendar
@ -602,10 +610,8 @@ 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);
beginDate.setDate(1);
beginDate.setSeconds(0);
beginDate.setHours(12);
let beginDate = new Date(
this._selectedDate.getFullYear(), this._selectedDate.getMonth(), 1);
this._calendarBegin = new Date(beginDate);
this._markedAsToday = now;
@ -614,7 +620,7 @@ var Calendar = GObject.registerClass({
let startsOnWeekStart = daysToWeekStart == 0;
let weekPadding = startsOnWeekStart ? 7 : 0;
beginDate.setTime(beginDate.getTime() - (weekPadding + daysToWeekStart) * MSECS_IN_DAY);
beginDate.setDate(beginDate.getDate() - (weekPadding + daysToWeekStart));
let layout = this.layout_manager;
let iter = new Date(beginDate);
@ -685,7 +691,7 @@ var Calendar = GObject.registerClass({
layout.attach(label, rtl ? 7 : 0, row, 1, 1);
}
iter.setTime(iter.getTime() + MSECS_IN_DAY);
iter.setDate(iter.getDate() + 1);
if (iter.getDay() == this._weekStart)
row++;

View File

@ -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 && warning !== '')
if (this._passwordEntry && this.prompt.warning !== '')
Util.wiggle(this._passwordEntry);
});
warningBox.add_child(warning);

View File

@ -127,9 +127,10 @@ class EventsSection extends St.Button {
}
setDate(date) {
const day = [date.getFullYear(), date.getMonth(), date.getDate()];
this._startDate = new Date(...day);
this._endDate = new Date(...day, 23, 59, 59, 999);
this._startDate =
new Date(date.getFullYear(), date.getMonth(), date.getDate());
this._endDate =
new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);
this._updateTitle();
this._reloadEvents();
@ -156,11 +157,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);
@ -169,8 +170,8 @@ class EventsSection extends St.Button {
}
_formatEventTime(event) {
const allDay = event.allDay ||
(event.date <= this._startDate && event.end >= this._endDate);
const allDay =
event.date <= this._startDate && event.end >= this._endDate;
let title;
if (allDay) {
@ -184,13 +185,13 @@ class EventsSection extends St.Button {
}
const rtl = Clutter.get_default_text_direction() === Clutter.TextDirection.RTL;
if (event.date < this._startDate && !event.allDay) {
if (event.date < this._startDate) {
if (rtl)
title = '%s%s'.format(title, ELLIPSIS_CHAR);
else
title = '%s%s'.format(ELLIPSIS_CHAR, title);
}
if (event.end > this._endDate && !event.allDay) {
if (event.end > this._endDate) {
if (rtl)
title = '%s%s'.format(ELLIPSIS_CHAR, title);
else

View File

@ -6,6 +6,8 @@ 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';

View File

@ -22,7 +22,6 @@ 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();
@ -74,6 +73,21 @@ 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)
@ -133,7 +147,7 @@ var ExtensionManager = class {
}
_callExtensionEnable(uuid) {
if (!Main.sessionMode.allowExtensions)
if (!this._extensionSupportsSessionMode(uuid))
return;
let extension = this.lookup(uuid);
@ -315,6 +329,7 @@ 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);
@ -399,7 +414,7 @@ var ExtensionManager = class {
}
_callExtensionInit(uuid) {
if (!Main.sessionMode.allowExtensions)
if (!this._extensionSupportsSessionMode(uuid))
return false;
let extension = this.lookup(uuid);
@ -488,13 +503,15 @@ 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))
.filter(uuid => !this._enabledExtensions.includes(uuid) &&
this._extensionSupportsSessionMode(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))
.filter(uuid => !newEnabledExtensions.includes(uuid) ||
!this._extensionSupportsSessionMode(uuid))
.reverse().forEach(uuid => this._callExtensionDisable(uuid));
this._enabledExtensions = newEnabledExtensions;
@ -589,9 +606,6 @@ var ExtensionManager = class {
}
_enableAllExtensions() {
if (this._enabled)
return;
if (!this._initialized) {
this._loadExtensions();
this._initialized = true;
@ -600,34 +614,20 @@ 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() {
// 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();
}
// Take care of added or removed sessionMode extensions
this._onEnabledExtensionsChanged();
this._enableAllExtensions();
}
};
Signals.addSignalMethods(ExtensionManager.prototype);

View File

@ -934,13 +934,6 @@ 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();
@ -974,6 +967,9 @@ 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;
@ -984,7 +980,7 @@ var LayoutManager = GObject.registerClass({
w = Math.round(w);
h = Math.round(h);
if (actorData.affectsInputRegion && wantsInputRegion && actorData.actor.get_paint_visibility())
if (actorData.affectsInputRegion && wantsInputRegion)
rects.push(new Meta.Rectangle({ x, y, width: w, height: h }));
let monitor = null;

View File

@ -200,7 +200,7 @@ var Magnifier = class Magnifier {
*/
startTrackingMouse() {
if (!this._pointerWatch) {
let interval = 1000 / Clutter.get_default_frame_rate();
let interval = 1000 / 60;
this._pointerWatch = PointerWatcher.getPointerWatcher().addWatch(interval, this.scrollToMousePos.bind(this));
}
}
@ -1898,6 +1898,7 @@ 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);
@ -1930,6 +1931,7 @@ var MagShaderEffects = class MagShaderEffects {
setColorSaturation(factor) {
this._colorDesaturation.set_factor(1.0 - factor);
this._colorDesaturation.set_enabled(factor !== 1.0);
}
/**

View File

@ -49,7 +49,6 @@ 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
@ -92,7 +91,6 @@ var kbdA11yDialog = null;
var inputMethod = null;
var introspectService = null;
var locatePointer = null;
var realmManager = null;
let _startDate;
let _defaultCssStylesheet = null;
let _cssStylesheet = null;
@ -249,6 +247,23 @@ 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();
@ -266,8 +281,6 @@ function _initializeUI() {
extensionManager = new ExtensionSystem.ExtensionManager();
extensionManager.init();
realmManager = new RealmManager.RealmManager();
if (sessionMode.isGreeter && screenShield) {
layoutManager.connect('startup-prepared', () => {
screenShield.showDialog();

View File

@ -663,12 +663,24 @@ var MessageListSection = GObject.registerClass({
}
removeMessage(message, animate) {
if (!this._messages.includes(message))
const messages = this._messages;
if (!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,
@ -677,10 +689,12 @@ var MessageListSection = GObject.registerClass({
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => {
listItem.destroy();
nextMessage?.grab_key_focus();
},
});
} else {
listItem.destroy();
nextMessage?.grab_key_focus();
}
}

View File

@ -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_id();
this._lastActiveWorkspaceIndex = workspaceManager.get_active_workspace_index();
}
_onDragEnd(time) {

View File

@ -342,8 +342,6 @@ 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);
@ -655,7 +653,6 @@ class ControlsManager extends St.Widget {
_onDestroy() {
global.workspace_manager.disconnect(this._nWorkspacesNotifyId);
global.workspace_manager.disconnect(this._contextSwitchedId);
}
_updateAdjustment() {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -249,8 +249,8 @@ class RunDialog extends ModalDialog.ModalDialog {
this._commandError = false;
if (this._lockdownSettings.get_boolean(DISABLE_COMMAND_LINE_KEY))
return;
return false;
super.open();
return super.open();
}
});

View File

@ -20,7 +20,6 @@ const _modes = {
showCalendarEvents: false,
showWelcomeDialog: false,
allowSettings: false,
allowExtensions: false,
allowScreencast: false,
enabledExtensions: [],
hasRunDialog: false,
@ -71,10 +70,9 @@ const _modes = {
'user': {
hasOverview: true,
showCalendarEvents: false,
showCalendarEvents: true,
showWelcomeDialog: true,
allowSettings: true,
allowExtensions: true,
allowScreencast: true,
hasRunDialog: true,
hasWorkspaces: true,

View File

@ -542,7 +542,6 @@ var GnomeShellMountOpHandler = class {
Gio.BusNameOwnerFlags.REPLACE, null, null);
this._dialog = null;
this._volumeMonitor = Gio.VolumeMonitor.get();
this._ensureEmptyRequest();
}

View File

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

View File

@ -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(this._touchGesture);
global.stage.add_action_full('swipe', Clutter.EventPhase.CAPTURE, this._touchGesture);
if (params.allowDrag) {
this._dragGesture = new TouchSwipeGesture(allowedModes, 1,

View File

@ -676,16 +676,14 @@ var UnlockDialog = GObject.registerClass({
}
_ensureAuthPrompt() {
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);
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);
}
this._authPrompt.reset();
this._authPrompt.updateSensitivity(true);
@ -872,7 +870,11 @@ var UnlockDialog = GObject.registerClass({
}
finish(onComplete) {
this._ensureAuthPrompt();
if (!this._authPrompt) {
onComplete();
return;
}
this._authPrompt.finish(onComplete);
}

View File

@ -26,9 +26,9 @@ class WelcomeDialog extends ModalDialog.ModalDialog {
open() {
if (!this._tourAppInfo)
return;
return false;
super.open();
return super.open();
}
_buildLayout() {

View File

@ -198,8 +198,6 @@ 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));
@ -255,8 +253,6 @@ 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];
@ -265,12 +261,7 @@ var WorkspaceTracker = class {
if (win.is_on_all_workspaces())
continue;
let workspace = win.get_workspace();
if (workspace.get_context_id() != current_context_id)
continue;
let workspaceIndex = workspace.index();
let workspaceIndex = win.get_workspace().index();
emptyWorkspaces[workspaceIndex] = false;
}
@ -348,28 +339,6 @@ 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;
@ -967,7 +936,7 @@ var WindowManager = class {
let appSwitchAction = new AppSwitchAction();
appSwitchAction.connect('activated', this._switchApp.bind(this));
global.stage.add_action(appSwitchAction);
global.stage.add_action_full('app-switch', Clutter.EventPhase.CAPTURE, appSwitchAction);
let mode = Shell.ActionMode.ALL & ~Shell.ActionMode.LOCK_SCREEN;
let topDragAction = new EdgeDragAction.EdgeDragAction(St.Side.TOP, mode);
@ -985,7 +954,7 @@ var WindowManager = class {
global.display.connect('notify::focus-window', updateUnfullscreenGesture);
global.display.connect('in-fullscreen-changed', updateUnfullscreenGesture);
global.stage.add_action(topDragAction);
global.stage.add_action_full('unfullscreen', Clutter.EventPhase.CAPTURE, topDragAction);
this._workspaceAnimation =
new WorkspaceAnimation.WorkspaceAnimationController();
@ -1672,14 +1641,6 @@ 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;

View File

@ -1,12 +1,11 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*
/* exported WindowMenuManager */
const { GLib, Meta, Shell, St } = imports.gi;
const { GLib, Meta, 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) {
@ -25,23 +24,6 @@ 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();
});

View File

@ -122,10 +122,6 @@ 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) => {
@ -454,13 +450,6 @@ 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;
@ -510,7 +499,6 @@ 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);
}

View File

@ -1,5 +1,5 @@
project('gnome-shell', 'c',
version: '41.1',
version: '41.0',
meson_version: '>= 0.53.0',
license: 'GPLv2+'
)
@ -8,10 +8,9 @@ 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 automatically each development cycle,
# The API version is increased each development cycle,
# starting with 0 in 3.23.x
api_version = split_version[0].to_int() - 32
mutter_api_version = '@0@'.format(api_version)
mutter_api_version = '10'
clutter_pc = 'mutter-clutter-' + mutter_api_version
cogl_pc = 'mutter-cogl-' + mutter_api_version
@ -19,8 +18,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'
@ -72,8 +71,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')
@ -139,7 +138,7 @@ endif
mutter_typelibdir = mutter_dep.get_pkgconfig_variable('typelibdir')
python = find_program('python3')
gjs = '/usr/bin/gjs'
gjs = find_program('gjs')
cc = meson.get_compiler('c')

280
po/es.po
View File

@ -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-08-17 23:56+0000\n"
"POT-Creation-Date: 2021-11-13 20:24+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,23 +257,11 @@ 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: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
#: data/org.gnome.shell.gschema.xml.in:133
msgid "Layout of the app picker"
msgstr "Distribución del selector de aplicaciones"
#: 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 "
@ -286,112 +274,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:157
#: data/org.gnome.shell.gschema.xml.in:149
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:158
#: data/org.gnome.shell.gschema.xml.in:150
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: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 "Asociación de teclas para cambiar entre estados de la vista general"
#: 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 ""
"Asociación de teclas para cambiar entre sesión, selector de ventanas y "
"cuadrícula de aplicaciones"
#: 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 ""
"Asociación de teclas para cambiar entre cuadrícula de aplicaciones, selector "
"de ventanas y sesión"
#: 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 "Asociación de teclas para la vista «Mostrar aplicaciones»"
#: 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 ""
"Asociación de teclas para abrir la vista «Mostrar aplicaciones» de la vista "
"de actividades."
#: data/org.gnome.shell.gschema.xml.in:186
#: data/org.gnome.shell.gschema.xml.in:178
msgid "Keybinding to open the overview"
msgstr "Asociación de teclas para la vista general"
#: data/org.gnome.shell.gschema.xml.in:187
#: data/org.gnome.shell.gschema.xml.in:179
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:193
#: data/org.gnome.shell.gschema.xml.in:185
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:194
#: data/org.gnome.shell.gschema.xml.in:186
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:200
#: data/org.gnome.shell.gschema.xml.in:192
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:201
#: data/org.gnome.shell.gschema.xml.in:193
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:207
#: data/org.gnome.shell.gschema.xml.in:199
msgid "Switch to application 1"
msgstr "Cambiar a la aplicación 1"
#: data/org.gnome.shell.gschema.xml.in:211
#: data/org.gnome.shell.gschema.xml.in:203
msgid "Switch to application 2"
msgstr "Cambiar a la aplicación 2"
#: data/org.gnome.shell.gschema.xml.in:215
#: data/org.gnome.shell.gschema.xml.in:207
msgid "Switch to application 3"
msgstr "Cambiar a la aplicación 3"
#: data/org.gnome.shell.gschema.xml.in:219
#: data/org.gnome.shell.gschema.xml.in:211
msgid "Switch to application 4"
msgstr "Cambiar a la aplicación 4"
#: data/org.gnome.shell.gschema.xml.in:223
#: data/org.gnome.shell.gschema.xml.in:215
msgid "Switch to application 5"
msgstr "Cambiar a la aplicación 5"
#: data/org.gnome.shell.gschema.xml.in:227
#: data/org.gnome.shell.gschema.xml.in:219
msgid "Switch to application 6"
msgstr "Cambiar a la aplicación 6"
#: data/org.gnome.shell.gschema.xml.in:231
#: data/org.gnome.shell.gschema.xml.in:223
msgid "Switch to application 7"
msgstr "Cambiar a la aplicación 7"
#: data/org.gnome.shell.gschema.xml.in:235
#: data/org.gnome.shell.gschema.xml.in:227
msgid "Switch to application 8"
msgstr "Cambiar a la aplicación 8"
#: data/org.gnome.shell.gschema.xml.in:239
#: data/org.gnome.shell.gschema.xml.in:231
msgid "Switch to application 9"
msgstr "Cambiar a la aplicación 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 "Limitar el intercambiador al área de trabajo actual."
#: 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."
@ -400,11 +388,11 @@ msgstr ""
"trabajo actual se muestran en el selector. Si no, se incluyen todas las "
"aplicaciones."
#: data/org.gnome.shell.gschema.xml.in:266
#: data/org.gnome.shell.gschema.xml.in:258
msgid "The application icon mode."
msgstr "El modo de icono de la aplicación."
#: 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-"
@ -414,7 +402,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: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."
@ -422,59 +410,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:286
#: data/org.gnome.shell.gschema.xml.in:278
msgid "Locations"
msgstr "Ubicaciones"
#: 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 "Las ubicaciones que mostrar en los relojes del mundo"
#: data/org.gnome.shell.gschema.xml.in:297
#: data/org.gnome.shell.gschema.xml.in:289
msgid "Automatic location"
msgstr "Ubicación automática"
#: data/org.gnome.shell.gschema.xml.in:298
#: data/org.gnome.shell.gschema.xml.in:290
msgid "Whether to fetch the current location or not"
msgstr "Indica si se debe o no obtener la ubicación actual"
#: data/org.gnome.shell.gschema.xml.in:305
#: data/org.gnome.shell.gschema.xml.in:297
msgid "Location"
msgstr "Ubicación"
#: 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 "La ubicación para la que mostrar la predicción"
#: 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 "Acoplar un diálogo modal a la ventana padre"
#: 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 ""
"Esta clave sobrescribe la clave en org.gnome.mutter al ejecutar 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 ""
"Activar el mosaico en los bordes al arrastrar ventanas a los bordes de la "
"ventana"
#: data/org.gnome.shell.gschema.xml.in:335
#: data/org.gnome.shell.gschema.xml.in:327
msgid "Workspaces are managed dynamically"
msgstr "Las áreas de trabajo se gestionan dinámicamente"
#: data/org.gnome.shell.gschema.xml.in:343
#: data/org.gnome.shell.gschema.xml.in:335
msgid "Workspaces only on primary monitor"
msgstr "Áreas de trabajo solo en la pantalla principal"
#: data/org.gnome.shell.gschema.xml.in:351
#: data/org.gnome.shell.gschema.xml.in:343
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr ""
"Retardo al cambiar el foco del ratón hasta que el puntero deja de moverse"
@ -510,18 +498,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: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 "Cancelar"
#. 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 "Contraseña"
@ -544,8 +532,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: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 "Nombre de usuario"
@ -650,65 +638,65 @@ msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Bloquear la rotación de la pantalla"
#: js/misc/util.js:120
#: js/misc/util.js:121
msgid "Command not found"
msgstr "Comando no encontrado"
#. 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 "No se pudo analizar el comando:"
#: js/misc/util.js:164
#: js/misc/util.js:165
#, javascript-format
msgid "Execution of “%s” failed:"
msgstr "Falló la ejecución de «%s»:"
#: js/misc/util.js:181
#: js/misc/util.js:182
msgid "Just now"
msgstr "Ahora mismo"
#: js/misc/util.js:183
#: js/misc/util.js:184
#, 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:187
#: js/misc/util.js:188
#, 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:191 js/ui/dateMenu.js:162
#: js/misc/util.js:192 js/ui/dateMenu.js:162
msgid "Yesterday"
msgstr "Ayer"
#: js/misc/util.js:193
#: js/misc/util.js:194
#, 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:197
#: js/misc/util.js:198
#, 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:201
#: js/misc/util.js:202
#, 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:204
#: js/misc/util.js:205
#, javascript-format
msgid "%d year ago"
msgid_plural "%d years ago"
@ -716,20 +704,20 @@ msgstr[0] "Hace %d año"
msgstr[1] "Hace %d años"
#. 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 "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:249
#: js/misc/util.js:250
#, no-c-format
msgid "%A, %H%M"
msgstr "%A, %H%M"
@ -737,7 +725,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 de %B, %H%M"
@ -745,7 +733,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:261
#: js/misc/util.js:262
#, no-c-format
msgid "%B %-d %Y, %H%M"
msgstr "%d de %B de %Y, %H%M"
@ -753,20 +741,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: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 "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:278
#: js/misc/util.js:279
#, no-c-format
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
@ -774,7 +762,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 de %B, %l%M %p"
@ -782,17 +770,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:290
#: js/misc/util.js:291
#, 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:42
#: js/portalHelper/main.js:49
msgid "Hotspot Login"
msgstr "Inicio de sesión en el punto de acceso"
#: 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."
@ -1037,39 +1025,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:93
#: js/ui/components/networkAgent.js:92
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: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 "Conectar"
#: js/ui/components/networkAgent.js:216
#: js/ui/components/networkAgent.js:215
msgid "Key"
msgstr "Clave"
#: 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 "Contraseña de la clave privada"
#: js/ui/components/networkAgent.js:275
#: js/ui/components/networkAgent.js:274
msgid "Identity"
msgstr "Identidad"
#: js/ui/components/networkAgent.js:289
#: js/ui/components/networkAgent.js:288
msgid "Service"
msgstr "Servicio"
#: 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 "Autenticación requerida"
#: 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 "
@ -1078,31 +1066,31 @@ msgstr ""
"Se necesitan contraseñas o claves de cifrado para acceder a la red "
"inalámbrica «%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 "Autenticación 802.1X cableada"
#: js/ui/components/networkAgent.js:325
#: js/ui/components/networkAgent.js:324
msgid "Network name"
msgstr "Nombre de la red"
#: 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 "Autenticación 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 "Código PIN requerido"
#: 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 "Se necesita un código PIN para el dispositivo de banda ancha móvil"
#: 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
@ -1394,24 +1382,24 @@ msgstr "%s (remoto)"
msgid "%s (console)"
msgstr "%s (consola)"
#: js/ui/extensionDownloader.js:194
#: js/ui/extensionDownloader.js:232
msgid "Install"
msgstr "Instalar"
#: js/ui/extensionDownloader.js:200
#: js/ui/extensionDownloader.js:238
msgid "Install Extension"
msgstr "Instalar extensión"
#: js/ui/extensionDownloader.js:201
#: js/ui/extensionDownloader.js:239
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:266
msgid "Extension Updates Available"
msgstr "Actualizaciones de extensiones disponibles"
#: js/ui/extensionSystem.js:254
#: js/ui/extensionSystem.js:267
msgid "Extension updates are ready to be installed."
msgstr "Las actualizaciones de las extensiones están listas para instalarse."
@ -1456,8 +1444,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. Ésta es la "
"combinación de teclas para la característica «Teclas lentas», que afecta la "
"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 "
"forma en que funciona el teclado."
#: js/ui/kbdA11yDialog.js:40
@ -1508,7 +1496,7 @@ msgstr "Apagar"
msgid "Leave Off"
msgstr "Dejar apagado"
#: js/ui/keyboard.js:227
#: js/ui/keyboard.js:226
msgid "Region & Language Settings"
msgstr "Configuración de región e idioma"
@ -1561,11 +1549,11 @@ msgstr "Ver fuente"
msgid "Web Page"
msgstr "Página web"
#: js/ui/main.js:294
#: js/ui/main.js:290
msgid "Logged in as a privileged user"
msgstr "Sesión iniciada como usuario con privilegios"
#: 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."
@ -1573,15 +1561,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:344
#: js/ui/main.js:340
msgid "Screen Lock disabled"
msgstr "Pantalla de bloqueo desactivada"
#: js/ui/main.js:345
#: js/ui/main.js:341
msgid "Screen Locking requires the GNOME display manager."
msgstr "La pantalla de bloqueo necesita el gestor de pantallas de GNOME."
#: js/ui/messageTray.js:1440
#: js/ui/messageTray.js:1443
msgid "System Information"
msgstr "Información del sistema"
@ -1615,47 +1603,47 @@ msgstr "Deshacer"
msgid "Overview"
msgstr "Vista general"
#: js/ui/padOsd.js:96
#: js/ui/padOsd.js:95
msgid "New shortcut…"
msgstr "Atajo nuevo…"
#: js/ui/padOsd.js:143
#: js/ui/padOsd.js:142
msgid "Application defined"
msgstr "Aplicación definida"
#: js/ui/padOsd.js:144
#: js/ui/padOsd.js:143
msgid "Show on-screen help"
msgstr "Mostrar la ayuda en pantalla"
#: js/ui/padOsd.js:145
#: js/ui/padOsd.js:144
msgid "Switch monitor"
msgstr "Cambiar monitor"
#: js/ui/padOsd.js:146
#: js/ui/padOsd.js:145
msgid "Assign keystroke"
msgstr "Asignar pulsación"
#: js/ui/padOsd.js:212
#: js/ui/padOsd.js:211
msgid "Done"
msgstr "Hecho"
#: js/ui/padOsd.js:718
#: js/ui/padOsd.js:716
msgid "Edit…"
msgstr "Editar…"
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877
#: js/ui/padOsd.js:758 js/ui/padOsd.js:875
msgid "None"
msgstr "Nada"
#: js/ui/padOsd.js:831
#: js/ui/padOsd.js:829
msgid "Press a button to configure"
msgstr "Pulse un botón para configurar"
#: js/ui/padOsd.js:832
#: js/ui/padOsd.js:830
msgid "Press Esc to exit"
msgstr "Pulse Esc para salir"
#: js/ui/padOsd.js:835
#: js/ui/padOsd.js:833
msgid "Press any key to exit"
msgstr "Pulse cualquier tecla para salir"
@ -1665,12 +1653,12 @@ msgstr "Pulse cualquier tecla para salir"
msgid "Activities"
msgstr "Actividades"
#: js/ui/panel.js:542
#: js/ui/panel.js:556
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistema"
#: js/ui/panel.js:658
#: js/ui/panel.js:674
msgid "Top Bar"
msgstr "Barra superior"
@ -1709,7 +1697,7 @@ msgstr "No se pudo bloquear"
msgid "Lock was blocked by an application"
msgstr "Una aplicación impidió el bloqueo"
#: js/ui/screenshot.js:141
#: js/ui/screenshot.js:155
msgid "Screenshot taken"
msgstr "Captura de pantalla realizada"
@ -2408,13 +2396,10 @@ 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"
@ -2771,6 +2756,7 @@ 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"
@ -2787,7 +2773,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: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"
@ -2796,7 +2782,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: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"
@ -2926,7 +2912,12 @@ 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:79
#: 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
msgid "Opens extension preferences"
msgstr "abre las preferencias de la extensión"
@ -2951,10 +2942,6 @@ 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"
@ -3085,6 +3072,19 @@ 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
View File

@ -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-09-09 03:40+0000\n"
"PO-Revision-Date: 2021-10-21 19:49+0330\n"
"Last-Translator: eshagh <eshagh094@gmail.com>\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"
"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 3.0\n"
"X-Generator: Poedit 2.4.2\n"
#: data/50-gnome-shell-launchers.xml:6
msgid "Launchers"
@ -98,7 +98,8 @@ 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
@ -107,13 +108,15 @@ 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"
@ -121,21 +124,27 @@ 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"
@ -143,18 +152,22 @@ 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
@ -171,21 +184,27 @@ 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"
@ -193,12 +212,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"
@ -206,13 +225,15 @@ 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"
@ -220,13 +241,15 @@ 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"
@ -322,11 +345,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."
@ -334,16 +357,21 @@ 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"
@ -393,23 +421,25 @@ 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 "Somethings gone wrong"
msgstr "اشتباهی صورت گرفت"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:39
msgid ""
"Were very sorry, but theres been a problem: the settings for this extension cant be displayed. We recommend that "
"you report the issue to the extension authors."
"Were very sorry, but theres been a problem: the settings for this extension cant "
"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"
@ -423,17 +453,20 @@ 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 "گذرواژه"
@ -455,8 +488,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 "نام‌کاربری"
@ -715,11 +748,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;
@ -731,7 +764,7 @@ msgstr "رد دسترسی"
msgid "Grant Access"
msgstr "پذیرفتن دسترسی"
#: js/ui/appDisplay.js:1846
#: js/ui/appDisplay.js:1791
msgid "Unnamed Folder"
msgstr "پوشهٔ بی‌نام"
@ -922,8 +955,12 @@ 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"
@ -958,8 +995,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 "اتّصال"
@ -979,8 +1016,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 "نیاز به تأیید هویت است"
@ -1013,8 +1050,9 @@ 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» گذرواژه لازم است."
@ -1233,9 +1271,14 @@ 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"
@ -1263,11 +1306,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."
@ -1311,11 +1354,11 @@ msgstr "نصب افزونه"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "بارگیری و نصب «%s» از extensions.gnome.org؟"
#: js/ui/extensionSystem.js:252
#: js/ui/extensionSystem.js:266
msgid "Extension Updates Available"
msgstr "به‌روز رسانی‌های افزونه موجودند"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:267
msgid "Extension updates are ready to be installed."
msgstr "به‌روز رسانی‌های افزونه‌ها آمادهٔ نصبند."
@ -1357,10 +1400,11 @@ 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"
@ -1372,30 +1416,33 @@ 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 "خاموش کردن"
@ -1461,10 +1508,11 @@ 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"
@ -1661,7 +1709,9 @@ 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"
@ -2162,8 +2212,12 @@ 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"
@ -2403,7 +2457,8 @@ 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 "افزونه‌ها"
@ -2419,9 +2474,11 @@ 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"
@ -2437,7 +2494,9 @@ 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
@ -2465,12 +2524,14 @@ 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 "نگارش"
@ -2495,8 +2556,12 @@ 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"
@ -2504,11 +2569,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"
@ -2524,9 +2589,11 @@ msgstr "هیچ افزونه‌ای نصب نشده"
#: subprojects/extensions-app/data/ui/extensions-window.ui:252
msgid ""
"Were 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 "متأسفیم، ولی امکان گرفتن فهرست افزونه‌های نصب‌شده نبود. مطمئن شوید که به گنوم وارد شده‌اید و دوباره تلاش کنید."
"Were 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"
@ -2551,7 +2618,8 @@ 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 "نام"
@ -2567,7 +2635,8 @@ 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"
@ -2616,7 +2685,8 @@ 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 "آرگومان ناشناخته"
@ -2624,12 +2694,16 @@ 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/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
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"
@ -2638,15 +2712,21 @@ 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:97
#: 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:105
#: 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:102
#: 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:110
#: subprojects/extensions-tool/src/command-reset.c:81
#: subprojects/extensions-tool/src/command-uninstall.c:109
msgid "More than one UUID given"
msgstr "بیش از یک شناسهٔ یکتا داده شده"
@ -2654,7 +2734,8 @@ 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"
@ -2731,7 +2812,8 @@ 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"
@ -2772,7 +2854,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 "ترجیحات افزونه را می‌گشاید"
@ -2797,10 +2884,6 @@ 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 "مسیر"
@ -2821,7 +2904,8 @@ 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 "استفاده:"
@ -2829,7 +2913,8 @@ 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"
@ -2865,7 +2950,8 @@ 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 "نمایش اطّلاعات افزونه"
@ -2928,11 +3014,17 @@ 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 "کمینه کردن"
@ -3022,8 +3114,11 @@ 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 "استفاده از کدام صفحه‌کلید"
@ -3266,13 +3361,15 @@ 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 "خطای داخلی"
@ -3319,17 +3416,21 @@ 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 "با استفاده از جعبه‌ی بالا یک افزونه برای پیکربندی انتخاب کنید."
@ -3365,7 +3466,9 @@ 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 "منطبق نیست"
@ -3399,27 +3502,29 @@ 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 "کلید مقید برای تغییر وضعیت ضبط کننده‌ی صفحه"
@ -3431,38 +3536,49 @@ 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…"
@ -3483,7 +3599,8 @@ 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 "درحال خروج از سیستم."
@ -3495,7 +3612,9 @@ msgstr "صداهای سامانه"
#~ msgstr "درحال خاموش کردن سیستم."
#~ msgid "Click Restart to quit these applications and restart the system."
#~ msgstr "بر روی راه‌اندازی مجدد کلیک کنید تا از این برنامه‌ها خارج و سیستم مجددا راه‌اندازی گردد."
#~ msgstr ""
#~ "بر روی راه‌اندازی مجدد کلیک کنید تا از این برنامه‌ها خارج و سیستم مجددا راه‌اندازی "
#~ "گردد."
#~ msgid "Restarting the system."
#~ msgstr "درحال راه‌اندازی مجدد سیستم."
@ -3623,11 +3742,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
View File

@ -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-08-17 23:56+0000\n"
"PO-Revision-Date: 2021-08-30 19:11+0200\n"
"POT-Creation-Date: 2021-11-03 01:20+0000\n"
"PO-Revision-Date: 2021-11-03 10:00+0100\n"
"Last-Translator: Charles Monzat <charles.monzat@free.fr>\n"
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
"Language: fr\n"
@ -39,47 +39,38 @@ msgid "Launchers"
msgstr "Lanceurs"
#: data/50-gnome-shell-launchers.xml:10
#| msgid "Switch to application 1"
msgid "Activate favorite application 1"
msgstr "Activer lapplication favorite 1"
#: data/50-gnome-shell-launchers.xml:14
#| msgid "Switch to application 2"
msgid "Activate favorite application 2"
msgstr "Activer lapplication favorite 2"
#: data/50-gnome-shell-launchers.xml:18
#| msgid "Switch to application 3"
msgid "Activate favorite application 3"
msgstr "Activer lapplication favorite 3"
#: data/50-gnome-shell-launchers.xml:22
#| msgid "Switch to application 4"
msgid "Activate favorite application 4"
msgstr "Activer lapplication favorite 4"
#: data/50-gnome-shell-launchers.xml:26
#| msgid "Switch to application 5"
msgid "Activate favorite application 5"
msgstr "Activer lapplication favorite 5"
#: data/50-gnome-shell-launchers.xml:30
#| msgid "Switch to application 6"
msgid "Activate favorite application 6"
msgstr "Activer lapplication favorite 6"
#: data/50-gnome-shell-launchers.xml:34
#| msgid "Switch to application 7"
msgid "Activate favorite application 7"
msgstr "Activer lapplication favorite 7"
#: data/50-gnome-shell-launchers.xml:38
#| msgid "Switch to application 8"
msgid "Activate favorite application 8"
msgstr "Activer lapplication favorite 8"
#: data/50-gnome-shell-launchers.xml:42
#| msgid "Switch to application 9"
msgid "Activate favorite application 9"
msgstr "Activer lapplication favorite 9"
@ -282,22 +273,11 @@ msgstr ""
"un nombre très élevé représentera des versions qui nexistent pas encore. Ce "
"nombre très élevé peut être utilisé pour désactiver le dialogue."
#: data/org.gnome.shell.gschema.xml.in:109
msgid "Enable introspection API"
msgstr "Activer lAPI dintrospection"
#: 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 lAPI D-Bus, qui permet dintrospecter létat dapplication du shell."
#: data/org.gnome.shell.gschema.xml.in:141
#: data/org.gnome.shell.gschema.xml.in:133
msgid "Layout of the app picker"
msgstr "Disposition du sélecteur dapplications"
#: 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 "
@ -311,114 +291,114 @@ msgstr ""
"stockées comme « données » : • « position » : la position de licône de "
"lapplication sur la page"
#: data/org.gnome.shell.gschema.xml.in:157
#: data/org.gnome.shell.gschema.xml.in:149
msgid "Keybinding to open the application menu"
msgstr "Combinaison de touches pour ouvrir le menu de lapplication"
#: data/org.gnome.shell.gschema.xml.in:158
#: data/org.gnome.shell.gschema.xml.in:150
msgid "Keybinding to open the application menu."
msgstr "Combinaison de touches pour ouvrir le menu de lapplication."
#: 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 ""
"Combinaison de touches pour basculer entre les états de la vue densemble"
#: 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 ""
"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:172
#: data/org.gnome.shell.gschema.xml.in:164
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:178
#: data/org.gnome.shell.gschema.xml.in:170
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:179
#: data/org.gnome.shell.gschema.xml.in:171
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 densemble des activités."
#: data/org.gnome.shell.gschema.xml.in:186
#: data/org.gnome.shell.gschema.xml.in:178
msgid "Keybinding to open the overview"
msgstr "Combinaison de touches pour ouvrir la vue densemble"
#: data/org.gnome.shell.gschema.xml.in:187
#: data/org.gnome.shell.gschema.xml.in:179
msgid "Keybinding to open the Activities Overview."
msgstr "Combinaison de touches pour ouvrir la vue densemble des activités."
#: 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 ""
"Combinaison de touches pour inverser la visibilité de la liste des "
"notifications"
#: 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 ""
"Combinaison de touches pour inverser la visibilité de la liste des "
"notifications."
#: data/org.gnome.shell.gschema.xml.in:200
#: data/org.gnome.shell.gschema.xml.in:192
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:201
#: data/org.gnome.shell.gschema.xml.in:193
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:207
#: data/org.gnome.shell.gschema.xml.in:199
msgid "Switch to application 1"
msgstr "Passer à lapplication 1"
#: data/org.gnome.shell.gschema.xml.in:211
#: data/org.gnome.shell.gschema.xml.in:203
msgid "Switch to application 2"
msgstr "Passer à lapplication 2"
#: data/org.gnome.shell.gschema.xml.in:215
#: data/org.gnome.shell.gschema.xml.in:207
msgid "Switch to application 3"
msgstr "Passer à lapplication 3"
#: data/org.gnome.shell.gschema.xml.in:219
#: data/org.gnome.shell.gschema.xml.in:211
msgid "Switch to application 4"
msgstr "Passer à lapplication 4"
#: data/org.gnome.shell.gschema.xml.in:223
#: data/org.gnome.shell.gschema.xml.in:215
msgid "Switch to application 5"
msgstr "Passer à lapplication 5"
#: data/org.gnome.shell.gschema.xml.in:227
#: data/org.gnome.shell.gschema.xml.in:219
msgid "Switch to application 6"
msgstr "Passer à lapplication 6"
#: data/org.gnome.shell.gschema.xml.in:231
#: data/org.gnome.shell.gschema.xml.in:223
msgid "Switch to application 7"
msgstr "Passer à lapplication 7"
#: data/org.gnome.shell.gschema.xml.in:235
#: data/org.gnome.shell.gschema.xml.in:227
msgid "Switch to application 8"
msgstr "Passer à lapplication 8"
#: data/org.gnome.shell.gschema.xml.in:239
#: data/org.gnome.shell.gschema.xml.in:231
msgid "Switch to application 9"
msgstr "Passer à lapplication 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 "Limite le sélecteur de fenêtres à lespace de travail actuel."
#: 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."
@ -427,11 +407,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:266
#: data/org.gnome.shell.gschema.xml.in:258
msgid "The application icon mode."
msgstr "Le type dicône des applications."
#: 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-"
@ -442,7 +422,7 @@ msgstr ""
"fenêtre), « app-icon-only » (affiche uniquement licône de lapplication), "
"ou « both » (affiche les deux)."
#: 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."
@ -450,58 +430,58 @@ msgstr ""
"Si vrai, seules les fenêtres de lespace 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:286
#: data/org.gnome.shell.gschema.xml.in:278
msgid "Locations"
msgstr "Emplacements"
#: 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 "Les emplacements à afficher dans les horloges mondiales"
#: data/org.gnome.shell.gschema.xml.in:297
#: data/org.gnome.shell.gschema.xml.in:289
msgid "Automatic location"
msgstr "Emplacement automatique"
#: 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 "Indique sil faut récupérer lemplacement actuel ou non"
#: data/org.gnome.shell.gschema.xml.in:305
#: data/org.gnome.shell.gschema.xml.in:297
msgid "Location"
msgstr "Emplacement"
#: 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 "Lemplacement pour lequel afficher les prévisions"
#: 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 "Attacher les dialogues modaux à leur fenêtre parente"
#: 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 ""
"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:327
#: data/org.gnome.shell.gschema.xml.in:319
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Activer lempilage des fenêtres déposées sur les bords de lécran"
#: data/org.gnome.shell.gschema.xml.in:335
#: data/org.gnome.shell.gschema.xml.in:327
msgid "Workspaces are managed dynamically"
msgstr "Les espaces de travail sont gérés dynamiquement"
#: data/org.gnome.shell.gschema.xml.in:343
#: data/org.gnome.shell.gschema.xml.in:335
msgid "Workspaces only on primary monitor"
msgstr "Les espaces de travail sont uniquement sur lécran principal"
#: data/org.gnome.shell.gschema.xml.in:351
#: data/org.gnome.shell.gschema.xml.in:343
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr ""
"Retarder les changements de focus en mode souris jusquà ce que le pointeur "
@ -539,18 +519,18 @@ msgid "Visit extension homepage"
msgstr "Visiter le site Web de lextension"
#: 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 "Annuler"
#. 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 "Mot de passe"
@ -573,8 +553,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: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 "Nom dutilisateur"
@ -679,65 +659,65 @@ msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Verrouiller la rotation de lécran"
#: js/misc/util.js:120
#: js/misc/util.js:121
msgid "Command not found"
msgstr "Commande non trouvée"
#. 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 "Impossible danalyser la commande :"
#: js/misc/util.js:164
#: js/misc/util.js:165
#, javascript-format
msgid "Execution of “%s” failed:"
msgstr "Exécution de « %s » impossible :"
#: js/misc/util.js:181
#: js/misc/util.js:182
msgid "Just now"
msgstr "À linstant"
#: js/misc/util.js:183
#: js/misc/util.js:184
#, 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:187
#: js/misc/util.js:188
#, 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:191 js/ui/dateMenu.js:162
#: js/misc/util.js:192 js/ui/dateMenu.js:162
msgid "Yesterday"
msgstr "Hier"
#: js/misc/util.js:193
#: js/misc/util.js:194
#, 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:197
#: js/misc/util.js:198
#, 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:201
#: js/misc/util.js:202
#, 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:204
#: js/misc/util.js:205
#, javascript-format
msgid "%d year ago"
msgid_plural "%d years ago"
@ -745,20 +725,20 @@ msgstr[0] "Il y a %d an"
msgstr[1] "Il y a %d ans"
#. 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 "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:249
#: js/misc/util.js:250
#, no-c-format
msgid "%A, %H%M"
msgstr "%A, %H%M"
@ -766,7 +746,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"
@ -774,7 +754,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"
@ -782,20 +762,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 "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:278
#: js/misc/util.js:279
#, no-c-format
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
@ -803,7 +783,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"
@ -811,17 +791,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 "Identification du point daccès"
#: 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."
@ -1067,40 +1047,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:93
#: js/ui/components/networkAgent.js:92
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: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 "Se connecter"
#: js/ui/components/networkAgent.js:216
#: js/ui/components/networkAgent.js:215
msgid "Key"
msgstr "Clé"
#: 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 "Mot de passe de la clé privée"
#: js/ui/components/networkAgent.js:275
#: js/ui/components/networkAgent.js:274
msgid "Identity"
msgstr "Identité"
#: js/ui/components/networkAgent.js:289
#: js/ui/components/networkAgent.js:288
msgid "Service"
msgstr "Service"
#: 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 "Authentification nécessaire"
#: 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 "
@ -1109,31 +1089,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: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 "Authentification filaire 802.1X"
#: js/ui/components/networkAgent.js:325
#: js/ui/components/networkAgent.js:324
msgid "Network name"
msgstr "Nom du réseau"
#: 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 "Authentification 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 "Code PIN requis"
#: 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 "Un code PIN est nécessaire pour les connexions mobiles"
#: 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
@ -1461,24 +1441,24 @@ msgstr "%s (distant)"
msgid "%s (console)"
msgstr "%s (console)"
#: js/ui/extensionDownloader.js:194
#: js/ui/extensionDownloader.js:232
msgid "Install"
msgstr "Installer"
#: js/ui/extensionDownloader.js:200
#: js/ui/extensionDownloader.js:238
msgid "Install Extension"
msgstr "Installer lextension"
#: js/ui/extensionDownloader.js:201
#: js/ui/extensionDownloader.js:239
#, 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:253
#: js/ui/extensionSystem.js:252
msgid "Extension Updates Available"
msgstr "Mises à jour dextensions disponibles"
#: js/ui/extensionSystem.js:254
#: js/ui/extensionSystem.js:253
msgid "Extension updates are ready to be installed."
msgstr "Des mises à jour dextensions sont prêtes à être installées."
@ -1575,7 +1555,7 @@ msgstr "Éteindre"
msgid "Leave Off"
msgstr "Laisser éteint"
#: js/ui/keyboard.js:227
#: js/ui/keyboard.js:226
msgid "Region & Language Settings"
msgstr "Paramètres de langue et région"
@ -1628,11 +1608,11 @@ msgstr "Afficher la source"
msgid "Web Page"
msgstr "Page Web"
#: js/ui/main.js:294
#: js/ui/main.js:290
msgid "Logged in as a privileged user"
msgstr "Connecté en tant quutilisateur privilégié"
#: 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."
@ -1641,16 +1621,16 @@ msgstr ""
"des raisons de sécurité. Si possible, connectez-vous comme utilisateur "
"normal."
#: js/ui/main.js:344
#: js/ui/main.js:340
msgid "Screen Lock disabled"
msgstr "Verrouillage décran désactivé"
#: js/ui/main.js:345
#: js/ui/main.js:341
msgid "Screen Locking requires the GNOME display manager."
msgstr ""
"Le verrouillage de lécran nécessite le gestionnaire daffichage GNOME."
#: js/ui/messageTray.js:1440
#: js/ui/messageTray.js:1443
msgid "System Information"
msgstr "Informations du système"
@ -1684,47 +1664,47 @@ msgstr "Annuler"
msgid "Overview"
msgstr "Vue densemble"
#: js/ui/padOsd.js:96
#: js/ui/padOsd.js:95
msgid "New shortcut…"
msgstr "Nouveau raccourci…"
#: js/ui/padOsd.js:143
#: js/ui/padOsd.js:142
msgid "Application defined"
msgstr "Applications définies"
#: js/ui/padOsd.js:144
#: js/ui/padOsd.js:143
msgid "Show on-screen help"
msgstr "Afficher laide à lécran"
#: js/ui/padOsd.js:145
#: js/ui/padOsd.js:144
msgid "Switch monitor"
msgstr "Changer décran"
#: js/ui/padOsd.js:146
#: js/ui/padOsd.js:145
msgid "Assign keystroke"
msgstr "Associer une touche"
#: js/ui/padOsd.js:212
#: js/ui/padOsd.js:211
msgid "Done"
msgstr "Terminé"
#: js/ui/padOsd.js:718
#: js/ui/padOsd.js:716
msgid "Edit…"
msgstr "Édition…"
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877
#: js/ui/padOsd.js:758 js/ui/padOsd.js:875
msgid "None"
msgstr "Aucun"
#: js/ui/padOsd.js:831
#: js/ui/padOsd.js:829
msgid "Press a button to configure"
msgstr "Appuyez sur un bouton pour le configurer"
#: js/ui/padOsd.js:832
#: js/ui/padOsd.js:830
msgid "Press Esc to exit"
msgstr "Appuyez sur Échap pour quitter"
#: js/ui/padOsd.js:835
#: js/ui/padOsd.js:833
msgid "Press any key to exit"
msgstr "Appuyez sur une touche pour quitter"
@ -1734,12 +1714,12 @@ msgstr "Appuyez sur une touche pour quitter"
msgid "Activities"
msgstr "Activités"
#: js/ui/panel.js:542
#: js/ui/panel.js:556
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Système"
#: js/ui/panel.js:658
#: js/ui/panel.js:674
msgid "Top Bar"
msgstr "Barre supérieure"
@ -1778,7 +1758,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:141
#: js/ui/screenshot.js:155
msgid "Screenshot taken"
msgstr "Capture décran effectuée"
@ -2284,7 +2264,6 @@ msgid "Balanced"
msgstr "Équilibré"
#: js/ui/status/powerProfiles.js:21
#| msgid "Power Settings"
msgctxt "Power profile"
msgid "Power Saver"
msgstr "Économie dénergie"
@ -2479,13 +2458,10 @@ 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"
@ -2857,6 +2833,7 @@ 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"
@ -2873,7 +2850,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: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"
@ -2882,7 +2859,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: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"
@ -3012,7 +2989,12 @@ msgstr "Plus dun répertoire source indiqué"
msgid "Extension “%s” doesn't have preferences\n"
msgstr "Lextension « %s » na pas de préférences\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 "Impossible douvrir les préférences de lextension « %s » : %s\n"
#: subprojects/extensions-tool/src/command-prefs.c:87
msgid "Opens extension preferences"
msgstr "Ouvre les préférences de lextension"
@ -3037,10 +3019,6 @@ msgstr "Désinstaller une extension"
msgid "Do not print error messages"
msgstr "Ne pas afficher les messages derreur"
#: 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"
@ -3171,6 +3149,19 @@ msgstr[1] "%u entrées"
msgid "System Sounds"
msgstr "Sons système"
#~ msgid "Enable introspection API"
#~ msgstr "Activer lAPI dintrospection"
#~ msgid ""
#~ "Enables a D-Bus API that allows to introspect the application state of "
#~ "the shell."
#~ msgstr ""
#~ "Active lAPI D-Bus, qui permet dintrospecter létat dapplication du "
#~ "shell."
#~ msgid "Failed to connect to GNOME Shell"
#~ msgstr "Impossible de se connecter à Shell de GNOME"
#~ msgid "Minimize"
#~ msgstr "Minimiser"

476
po/fur.po

File diff suppressed because it is too large Load Diff

View File

@ -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-09-23 14:20+0000\n"
"PO-Revision-Date: 2021-09-27 11:13+0300\n"
"POT-Creation-Date: 2021-11-06 13:28+0000\n"
"PO-Revision-Date: 2021-11-12 00:26+0200\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:252
#: js/ui/extensionSystem.js:266
msgid "Extension Updates Available"
msgstr "עדכוני הרחבות זמינים"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:267
msgid "Extension updates are ready to be installed."
msgstr "עדכוני הרחבות מוכנים להתקנה."
@ -2747,6 +2747,7 @@ 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"
@ -2763,7 +2764,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: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"
@ -2772,7 +2773,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: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"
@ -2842,7 +2843,7 @@ msgstr "Print extension details"
#: subprojects/extensions-tool/src/command-list.c:154
msgid "List installed extensions"
msgstr "List installed extensions"
msgstr "הצגת ההרחבות המותקנות"
#: subprojects/extensions-tool/src/command-pack.c:450
msgid "FILE"
@ -2895,14 +2896,19 @@ msgstr "Create an extension bundle"
#: subprojects/extensions-tool/src/command-pack.c:501
msgid "More than one source directory specified"
msgstr "More than one source directory specified"
msgstr "צוינה יותר מתיקיית מקור אחת"
#: subprojects/extensions-tool/src/command-prefs.c:47
#, c-format
msgid "Extension “%s” doesn't have preferences\n"
msgstr "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 "Opens extension preferences"
@ -2927,10 +2933,6 @@ 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"
@ -3065,6 +3067,9 @@ 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"

View File

@ -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-09-23 14:20+0000\n"
"PO-Revision-Date: 2021-10-06 19:07+0200\n"
"POT-Creation-Date: 2021-11-26 16:19+0000\n"
"PO-Revision-Date: 2021-11-26 19:03+0100\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 3.0\n"
"X-Generator: Poedit 2.3\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:1846
#: js/ui/appDisplay.js:1791
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:252
#: js/ui/extensionSystem.js:266
msgid "Extension Updates Available"
msgstr "Nadopuna proširenja je dostupna"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:267
msgid "Extension updates are ready to be installed."
msgstr "Nadopune proširenja su spremne za instalaciju."
@ -1550,11 +1550,23 @@ msgstr "Pogledaj izvor"
msgid "Web Page"
msgstr "Web stranica"
#: js/ui/main.js:290
#: 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
msgid "Logged in as a privileged user"
msgstr "Prijavljeni ste kao administratorski korisnik"
#: js/ui/main.js:291
#: js/ui/main.js:308
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1563,11 +1575,11 @@ msgstr ""
"izbjegavati iz sigurnosnih razloga. Ako je moguće, trebate se prijaviti kao "
"normalan korisnik."
#: js/ui/main.js:340
#: js/ui/main.js:357
msgid "Screen Lock disabled"
msgstr "Zaključavanje zaslona je onemogućeno"
#: js/ui/main.js:341
#: js/ui/main.js:358
msgid "Screen Locking requires the GNOME display manager."
msgstr "Zaključavanje zaslona zahtijeva GNOME upravitelja zaslona."
@ -1595,10 +1607,6 @@ 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
@ -2768,6 +2776,7 @@ 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"
@ -2784,7 +2793,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: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"
@ -2793,7 +2802,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: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"
@ -2923,7 +2932,12 @@ 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:79
#: 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
msgid "Opens extension preferences"
msgstr "Otvara osobitosti proširenja"
@ -2948,10 +2962,6 @@ 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"
@ -3084,6 +3094,9 @@ 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"

669
po/it.po

File diff suppressed because it is too large Load Diff

286
po/lt.po
View File

@ -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-08-17 23:56+0000\n"
"PO-Revision-Date: 2021-09-01 23:06+0300\n"
"POT-Creation-Date: 2021-11-13 17:10+0000\n"
"PO-Revision-Date: 2021-11-21 21:42+0200\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
"Language: lt\n"
@ -28,47 +28,38 @@ 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"
@ -265,22 +256,11 @@ 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: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
#: data/org.gnome.shell.gschema.xml.in:133
msgid "Layout of the app picker"
msgstr "Programų pasirinkimo išdėstymas"
#: 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 "
@ -293,108 +273,108 @@ msgstr ""
"vertės yra įrašomos kaip „duomenys“: • “position”: programos piktogramos "
"padėtis puslapyje"
#: data/org.gnome.shell.gschema.xml.in:157
#: data/org.gnome.shell.gschema.xml.in:149
msgid "Keybinding to open the application menu"
msgstr "Klavišų susiejimas, kuriuo atveriamas programų meniu"
#: data/org.gnome.shell.gschema.xml.in:158
#: data/org.gnome.shell.gschema.xml.in:150
msgid "Keybinding to open the application menu."
msgstr "Klavišų susiejimas, kuriuo atveriamas programų meniu."
#: 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 "Klavišų susiejimas apžvalgos būsenų keitimui"
#: 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 ""
"Klavišų susiejimas perėjimui tarp seanso, langų pasirinkimo ir programų "
"tinklelio"
#: 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 ""
"Klavišų susiejimas perėjimui tarp programų tinklelio, langų pasirinkimo bei "
"seanso."
#: 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 "Klavišų susiejimas, kuriuo atveriamas rodinys „rodyti programas“"
#: 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 ""
"Klavišų susiejimas, kuriuo atveriamas rodinys „rodyti programas“ veiklų "
"apžvalgoje."
#: data/org.gnome.shell.gschema.xml.in:186
#: data/org.gnome.shell.gschema.xml.in:178
msgid "Keybinding to open the overview"
msgstr "Klavišų susiejimas, kuriuo atveriama apžvalga"
#: data/org.gnome.shell.gschema.xml.in:187
#: data/org.gnome.shell.gschema.xml.in:179
msgid "Keybinding to open the Activities Overview."
msgstr "Klavišų susiejimas, kuriuo atveriama veiklų apžvalga."
#: 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 "Klavišų susiejimas pranešimų juostos matomumui perjungti"
#: 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 "Klavišų susiejimas pranešimų juostos matomumui perjungti."
#: data/org.gnome.shell.gschema.xml.in:200
#: data/org.gnome.shell.gschema.xml.in:192
msgid "Keybinding to focus the active notification"
msgstr "Klavišų susiejimas, kuriuo fokusuojamas aktyvus pranešimas"
#: data/org.gnome.shell.gschema.xml.in:201
#: data/org.gnome.shell.gschema.xml.in:193
msgid "Keybinding to focus the active notification."
msgstr "Klavišų susiejimas, kuriuo fokusuojamas aktyvus pranešimas."
#: data/org.gnome.shell.gschema.xml.in:207
#: data/org.gnome.shell.gschema.xml.in:199
msgid "Switch to application 1"
msgstr "Pereiti į programą 1"
#: data/org.gnome.shell.gschema.xml.in:211
#: data/org.gnome.shell.gschema.xml.in:203
msgid "Switch to application 2"
msgstr "Pereiti į programą 2"
#: data/org.gnome.shell.gschema.xml.in:215
#: data/org.gnome.shell.gschema.xml.in:207
msgid "Switch to application 3"
msgstr "Pereiti į programą 3"
#: data/org.gnome.shell.gschema.xml.in:219
#: data/org.gnome.shell.gschema.xml.in:211
msgid "Switch to application 4"
msgstr "Pereiti į programą 4"
#: data/org.gnome.shell.gschema.xml.in:223
#: data/org.gnome.shell.gschema.xml.in:215
msgid "Switch to application 5"
msgstr "Pereiti į programą 5"
#: data/org.gnome.shell.gschema.xml.in:227
#: data/org.gnome.shell.gschema.xml.in:219
msgid "Switch to application 6"
msgstr "Pereiti į programą 6"
#: data/org.gnome.shell.gschema.xml.in:231
#: data/org.gnome.shell.gschema.xml.in:223
msgid "Switch to application 7"
msgstr "Pereiti į programą 7"
#: data/org.gnome.shell.gschema.xml.in:235
#: data/org.gnome.shell.gschema.xml.in:227
msgid "Switch to application 8"
msgstr "Pereiti į programą 8"
#: data/org.gnome.shell.gschema.xml.in:239
#: data/org.gnome.shell.gschema.xml.in:231
msgid "Switch to application 9"
msgstr "Pereiti į 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 "Apriboti perjungėją dabartine darbo sritimi."
#: 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."
@ -402,11 +382,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:266
#: data/org.gnome.shell.gschema.xml.in:258
msgid "The application icon mode."
msgstr "Programos piktogramos veiksena."
#: 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-"
@ -416,7 +396,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: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."
@ -424,56 +404,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:286
#: data/org.gnome.shell.gschema.xml.in:278
msgid "Locations"
msgstr "Vietos"
#: 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 "Vietos, kurias rodyti pasaulio laikrodžiuose"
#: data/org.gnome.shell.gschema.xml.in:297
#: data/org.gnome.shell.gschema.xml.in:289
msgid "Automatic location"
msgstr "Automatinė vieta"
#: 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 "Ar gauti dabartinę vietą"
#: data/org.gnome.shell.gschema.xml.in:305
#: data/org.gnome.shell.gschema.xml.in:297
msgid "Location"
msgstr "Vieta"
#: 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 "Vieta, kuriai rodyti prognozę"
#: 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 "Prikabinti modalinį dialogą prie tėvinio lango"
#: 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 "Šis raktas perrašo org.gnome.mutter raktą, kai vykdoma 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 "Įjungti kraštų išplėtimą, kai langai numetami ekrano kraštuose"
#: data/org.gnome.shell.gschema.xml.in:335
#: data/org.gnome.shell.gschema.xml.in:327
msgid "Workspaces are managed dynamically"
msgstr "Darbo sritys yra tvarkomos dinamiškai"
#: data/org.gnome.shell.gschema.xml.in:343
#: data/org.gnome.shell.gschema.xml.in:335
msgid "Workspaces only on primary monitor"
msgstr "Darbo sritys tik pagrindiniame monitoriuje"
#: 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 "Atidėti fokuso pakeitimus pelei iki žymiklis nustos judėti"
@ -508,18 +488,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: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 "Atsisakyti"
#. 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 "Slaptažodis"
@ -542,8 +522,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: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 "Naudotojo vardas"
@ -648,26 +628,26 @@ msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Užrakinti ekrano orientaciją"
#: js/misc/util.js:120
#: js/misc/util.js:121
msgid "Command not found"
msgstr "Komanda nerasta"
#. 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 "Nepavyko perskaityti komandos:"
#: js/misc/util.js:164
#: js/misc/util.js:165
#, javascript-format
msgid "Execution of “%s” failed:"
msgstr "Nepavyko įvykdyti „%s“:"
#: js/misc/util.js:181
#: js/misc/util.js:182
msgid "Just now"
msgstr "Ką tik"
#: js/misc/util.js:183
#: js/misc/util.js:184
#, javascript-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
@ -675,7 +655,7 @@ msgstr[0] "Prieš %d minutę"
msgstr[1] "Prieš %d minutes"
msgstr[2] "Prieš %d minučių"
#: js/misc/util.js:187
#: js/misc/util.js:188
#, javascript-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
@ -683,11 +663,11 @@ msgstr[0] "Prieš %d valandą"
msgstr[1] "Prieš %d valandas"
msgstr[2] "Prieš %d valandų"
#: js/misc/util.js:191 js/ui/dateMenu.js:162
#: js/misc/util.js:192 js/ui/dateMenu.js:162
msgid "Yesterday"
msgstr "Vakar"
#: js/misc/util.js:193
#: js/misc/util.js:194
#, javascript-format
msgid "%d day ago"
msgid_plural "%d days ago"
@ -695,7 +675,7 @@ msgstr[0] "Prieš %d dieną"
msgstr[1] "Prieš %d dienas"
msgstr[2] "Prieš %d dienų"
#: js/misc/util.js:197
#: js/misc/util.js:198
#, javascript-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
@ -703,7 +683,7 @@ msgstr[0] "Prieš %d savaitę"
msgstr[1] "Prieš %d savaites"
msgstr[2] "Prieš %d savaičių"
#: js/misc/util.js:201
#: js/misc/util.js:202
#, javascript-format
msgid "%d month ago"
msgid_plural "%d months ago"
@ -711,7 +691,7 @@ msgstr[0] "Prieš %d mėnesį"
msgstr[1] "Prieš %d mėnesius"
msgstr[2] "Prieš %d mėnesių"
#: js/misc/util.js:204
#: js/misc/util.js:205
#, javascript-format
msgid "%d year ago"
msgid_plural "%d years ago"
@ -720,20 +700,20 @@ msgstr[1] "Prieš %d metus"
msgstr[2] "Prieš %d metų"
#. 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 "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:249
#: js/misc/util.js:250
#, no-c-format
msgid "%A, %H%M"
msgstr "%A, %H%M"
@ -741,7 +721,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 "%B %-d, %H%M"
@ -749,7 +729,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:261
#: js/misc/util.js:262
#, no-c-format
msgid "%B %-d %Y, %H%M"
msgstr "%Y %m %-d, %H%M"
@ -757,20 +737,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: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 "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:278
#: js/misc/util.js:279
#, no-c-format
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
@ -778,7 +758,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 "%B %-d, %l%M %p"
@ -786,17 +766,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:290
#: js/misc/util.js:291
#, 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:42
#: js/portalHelper/main.js:49
msgid "Hotspot Login"
msgstr "Prisijungimas prie prieigos taško"
#: 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."
@ -1041,39 +1021,39 @@ msgstr "Įdiegta udisks versija nepalaiko PIM nustatymo"
msgid "Open with %s"
msgstr "Atverti su %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 ""
"Taip pat galite prisijungti paspausdami „WPS“ mygtuką savo maršrutizatoriuje."
#: 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 "Prisijungti"
#: js/ui/components/networkAgent.js:216
#: js/ui/components/networkAgent.js:215
msgid "Key"
msgstr "Raktas"
#: 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 "Privataus rakto slaptažodis"
#: js/ui/components/networkAgent.js:275
#: js/ui/components/networkAgent.js:274
msgid "Identity"
msgstr "Tapatybė"
#: js/ui/components/networkAgent.js:289
#: js/ui/components/networkAgent.js:288
msgid "Service"
msgstr "Tarnyba"
#: 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 "Reikia patvirtinti tapatybę"
#: 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 "
@ -1082,31 +1062,31 @@ msgstr ""
"Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio "
"tinklo „%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 "Laidinis 802.1X tapatybės patvirtinimas"
#: js/ui/components/networkAgent.js:325
#: js/ui/components/networkAgent.js:324
msgid "Network name"
msgstr "Tinklo vardas"
#: 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 tapatybės patvirtinimas"
#: 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 "Reikalingas PIN kodas"
#: 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 "Reikalingas PIN kodas mobiliajam plačiajuosčiam įrenginiui"
#: 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
@ -1403,24 +1383,24 @@ msgstr "%s (nutolęs)"
msgid "%s (console)"
msgstr "%s (komandų eilutė)"
#: js/ui/extensionDownloader.js:194
#: js/ui/extensionDownloader.js:232
msgid "Install"
msgstr "Įdiegti"
#: js/ui/extensionDownloader.js:200
#: js/ui/extensionDownloader.js:238
msgid "Install Extension"
msgstr "Išdiegti plėtinį"
#: js/ui/extensionDownloader.js:201
#: js/ui/extensionDownloader.js:239
#, 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:253
#: js/ui/extensionSystem.js:252
msgid "Extension Updates Available"
msgstr "Yra plėtinių atnaujinimų"
#: js/ui/extensionSystem.js:254
#: js/ui/extensionSystem.js:253
msgid "Extension updates are ready to be installed."
msgstr "Plėtinių atnaujinimai paruošti diegimui."
@ -1515,7 +1495,7 @@ msgstr "Išjungti"
msgid "Leave Off"
msgstr "Palikti išjungtą"
#: js/ui/keyboard.js:227
#: js/ui/keyboard.js:226
msgid "Region & Language Settings"
msgstr "Regiono ir kalbos nustatymai"
@ -1568,11 +1548,11 @@ msgstr "Žiūrėti šaltinį"
msgid "Web Page"
msgstr "Tinklalapis"
#: js/ui/main.js:294
#: js/ui/main.js:290
msgid "Logged in as a privileged user"
msgstr "Prisijungta privilegijuotu naudotoju"
#: 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."
@ -1580,15 +1560,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:344
#: js/ui/main.js:340
msgid "Screen Lock disabled"
msgstr "Ekrano užraktas išjungtas"
#: js/ui/main.js:345
#: js/ui/main.js:341
msgid "Screen Locking requires the GNOME display manager."
msgstr "Ekrano užrakinimas reikalaujas GNOME vaizduoklio valdyklės."
#: js/ui/messageTray.js:1440
#: js/ui/messageTray.js:1443
msgid "System Information"
msgstr "Sistemos informacija"
@ -1622,47 +1602,47 @@ msgstr "Atšaukti"
msgid "Overview"
msgstr "Apžvalga"
#: js/ui/padOsd.js:96
#: js/ui/padOsd.js:95
msgid "New shortcut…"
msgstr "Naujas trumpinys…"
#: js/ui/padOsd.js:143
#: js/ui/padOsd.js:142
msgid "Application defined"
msgstr "Programos nustatytas"
#: js/ui/padOsd.js:144
#: js/ui/padOsd.js:143
msgid "Show on-screen help"
msgstr "Rodyti pagalbą ekrane"
#: js/ui/padOsd.js:145
#: js/ui/padOsd.js:144
msgid "Switch monitor"
msgstr "Keisti monitorių"
#: js/ui/padOsd.js:146
#: js/ui/padOsd.js:145
msgid "Assign keystroke"
msgstr "Priskirti klavišų kombinaciją"
#: js/ui/padOsd.js:212
#: js/ui/padOsd.js:211
msgid "Done"
msgstr "Atlikta"
#: js/ui/padOsd.js:718
#: js/ui/padOsd.js:716
msgid "Edit…"
msgstr "Keisti…"
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877
#: js/ui/padOsd.js:758 js/ui/padOsd.js:875
msgid "None"
msgstr "Nėra"
#: js/ui/padOsd.js:831
#: js/ui/padOsd.js:829
msgid "Press a button to configure"
msgstr "Spauskite mygtuką konfigūravimui"
#: js/ui/padOsd.js:832
#: js/ui/padOsd.js:830
msgid "Press Esc to exit"
msgstr "Spauskit Esc išėjimui"
#: js/ui/padOsd.js:835
#: js/ui/padOsd.js:833
msgid "Press any key to exit"
msgstr "Išėjimui spauskite bet kurį klavišą"
@ -1672,12 +1652,12 @@ msgstr "Išėjimui spauskite bet kurį klavišą"
msgid "Activities"
msgstr "Apžvalga"
#: js/ui/panel.js:542
#: js/ui/panel.js:556
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistema"
#: js/ui/panel.js:658
#: js/ui/panel.js:674
msgid "Top Bar"
msgstr "Viršutinė juosta"
@ -1716,7 +1696,7 @@ msgstr "Nepavyksta užrakinti"
msgid "Lock was blocked by an application"
msgstr "Programa užblokavo užrakinimą"
#: js/ui/screenshot.js:141
#: js/ui/screenshot.js:155
msgid "Screenshot taken"
msgstr "Ekrano nuotrauka padaryta"
@ -2225,7 +2205,6 @@ msgid "Balanced"
msgstr "Balansuotas"
#: js/ui/status/powerProfiles.js:21
#| msgid "Power Settings"
msgctxt "Power profile"
msgid "Power Saver"
msgstr "Taupantis energiją"
@ -2419,13 +2398,10 @@ 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"
@ -2778,6 +2754,7 @@ 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"
@ -2794,7 +2771,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: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"
@ -2803,7 +2780,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: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"
@ -2933,7 +2910,12 @@ 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:79
#: 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
msgid "Opens extension preferences"
msgstr "Atveria plėtinio nuostatas"
@ -2958,10 +2940,6 @@ 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"
@ -3094,6 +3072,18 @@ 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"

View File

@ -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-09-09 03:40+0000\n"
"PO-Revision-Date: 2021-08-18 11:11+0200\n"
"POT-Creation-Date: 2021-11-13 20:24+0000\n"
"PO-Revision-Date: 2021-11-07 20:30+0100\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 lelement « Se desconnectar » dins lo menú utilizaire."
msgstr "Totjorn afichar lelement «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 lelement « Se desconnectar » del menú utilizaire "
"Aquesta clau aficha lelement «Se desconnectar» del menú utilizaire "
"normalament amagat automaticament dins lo cas duna session o dun "
"utilizaire unic."
@ -218,7 +218,7 @@ msgid ""
msgstr ""
"Lo shell demandarà un senhal al montatge dun periferic chifrat o dun "
"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 lestat 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 « la Benvenguda de GNOME » "
"Aquesta clau determina la version de la fenèstra «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 dun 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 densemble 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 licòna de laplicacion), o « "
"both » (aficha los dos)."
"causidas possiblas son «thumbnail-only» (aficha una miniatura de la "
"fenèstra), «app-icon-only» (aficha unicament licòna de laplicacion), 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 lextension"
#: 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:252
#: js/ui/extensionSystem.js:266
msgid "Extension Updates Available"
msgstr "Mesas a jorn extension disponiblas"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:267
msgid "Extension updates are ready to be installed."
msgstr "Mesas a jorn per lextension 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 lecran de connexion"
msgstr "Utilizar un mòde particular, per ex. «gdm» per lecran 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,6 +2794,7 @@ 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"
@ -2810,7 +2811,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: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"
@ -2819,7 +2820,7 @@ msgstr "Cap dUUID 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: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"
@ -2949,7 +2950,12 @@ msgstr "Mai dun repertòri font indicat"
msgid "Extension “%s” doesn't have preferences\n"
msgstr "Lextension « %s » a pas de preferéncias\n"
#: subprojects/extensions-tool/src/command-prefs.c:79
#: subprojects/extensions-tool/src/command-prefs.c:62
#, c-format
msgid "Failed to open prefs for extension “%s”: %s\n"
msgstr "Dobertura impossibla de las preferéncias per l'extension « %s»: %s\n"
#: subprojects/extensions-tool/src/command-prefs.c:87
msgid "Opens extension preferences"
msgstr "Dobrís las preferéncias de las extensions"
@ -2974,10 +2980,6 @@ 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"
@ -2996,7 +2998,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
@ -3018,7 +3020,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"
@ -3108,6 +3110,9 @@ 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 lAPI dintrospeccion"

View File

@ -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-09-03 21:44+0000\n"
"PO-Revision-Date: 2021-09-11 15:48+0200\n"
"POT-Creation-Date: 2021-11-04 17:29+0000\n"
"PO-Revision-Date: 2021-11-06 14:25+0100\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <community-poland@mozilla.org>\n"
"Language: pl\n"
@ -2771,6 +2771,7 @@ 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"
@ -2787,7 +2788,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: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"
@ -2796,7 +2797,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: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"
@ -2926,7 +2927,12 @@ 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:79
#: 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
msgid "Opens extension preferences"
msgstr "Otwiera preferencje rozszerzenia"
@ -2951,10 +2957,6 @@ 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"

View File

@ -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-03 10:04+0000\n"
"PO-Revision-Date: 2021-11-03 11:49+0000\n"
"POT-Creation-Date: 2021-11-26 16:19+0000\n"
"PO-Revision-Date: 2021-11-27 15:42+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:1846
#: js/ui/appDisplay.js:1791
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:252
#: js/ui/extensionSystem.js:266
msgid "Extension Updates Available"
msgstr "Há atualizações de extensões disponíveis"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:267
msgid "Extension updates are ready to be installed."
msgstr "As atualizações de extensões estão prontas para serem instaladas."
@ -1551,11 +1551,23 @@ msgstr "Ver fonte"
msgid "Web Page"
msgstr "Página Web"
#: js/ui/main.js:290
#: 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
msgid "Logged in as a privileged user"
msgstr "Em sessão como utilizador privilegiado"
#: js/ui/main.js:291
#: js/ui/main.js:308
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1563,11 +1575,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:340
#: js/ui/main.js:357
msgid "Screen Lock disabled"
msgstr "Bloqueio de ecrã desligado"
#: js/ui/main.js:341
#: js/ui/main.js:358
msgid "Screen Locking requires the GNOME display manager."
msgstr "O bloqueio de ecrã requer o gestor de exibição do GNOME."
@ -1595,10 +1607,6 @@ 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
@ -2919,7 +2927,7 @@ msgstr "Criar um pacote de extensões"
#: subprojects/extensions-tool/src/command-pack.c:501
msgid "More than one source directory specified"
msgstr "Mais do que um diretório de origem especificado"
msgstr "Especificado mais do que um diretório origem"
#: subprojects/extensions-tool/src/command-prefs.c:47
#, c-format
@ -2929,7 +2937,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 extensão \"%s\": %s\n"
msgstr "Falha ao abrir prefs para a extensão \"%s\": %s\n"
#: subprojects/extensions-tool/src/command-prefs.c:87
msgid "Opens extension preferences"
@ -3084,7 +3092,7 @@ msgstr[1] "%u entradas"
#: subprojects/gvc/gvc-mixer-control.c:2867
msgid "System Sounds"
msgstr "Sons do sistema"
msgstr "Sons de sistema"
#~ msgid "Enable introspection API"
#~ msgstr "Ativar API de introspecção"

463
po/ru.po
View File

@ -15,28 +15,22 @@
# 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-11-03 10:04+0000\n"
"PO-Revision-Date: 2021-11-03 14:58+0300\n"
"Last-Translator: Melman <Alexmelman88@gmail.com>\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"
"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: 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"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 3.0\n"
# Запуск приложений, как другой вариант
#: data/50-gnome-shell-launchers.xml:6
@ -269,11 +263,23 @@ msgstr ""
"существуют. Это большое число может быть использовано для эффективного "
"отключения диалога."
#: data/org.gnome.shell.gschema.xml.in:133
#: 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
msgid "Layout of the app picker"
msgstr "Макет меню выбора приложений"
#: 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 "
@ -286,107 +292,107 @@ msgstr ""
"настоящее время в качестве “data” хранятся следующие значения: • \"position"
"\" - положение значка приложения на странице"
#: data/org.gnome.shell.gschema.xml.in:149
#: data/org.gnome.shell.gschema.xml.in:157
msgid "Keybinding to open the application menu"
msgstr "Комбинация клавиш для открытия меню приложения"
#: data/org.gnome.shell.gschema.xml.in:150
#: data/org.gnome.shell.gschema.xml.in:158
msgid "Keybinding to open the application menu."
msgstr "Комбинация клавиш для открытия меню приложения."
#: 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 "Сочетание клавиш для переключения между состояниями обзора"
#: 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 ""
"Сочетание клавиш для переключения между сеансом, меню выбора окон и сеткой "
"приложений"
#: 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 ""
"Сочетание клавиш для переключения между сеткой приложений, меню выбора окон "
"и сеансом"
#: 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 "Комбинация клавиш для перехода в режим просмотра приложений"
#: 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 ""
"Комбинация клавиш для перехода в режим просмотра приложений в меню «Обзор»."
#: data/org.gnome.shell.gschema.xml.in:178
#: data/org.gnome.shell.gschema.xml.in:186
msgid "Keybinding to open the overview"
msgstr "Комбинация клавиш для перехода в режим обзора"
#: data/org.gnome.shell.gschema.xml.in:179
#: data/org.gnome.shell.gschema.xml.in:187
msgid "Keybinding to open the Activities Overview."
msgstr "Комбинация клавиш для перехода в режим обзора."
#: 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 "Комбинация клавиш для отображения или скрытия списка уведомлений"
#: 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 "Комбинация клавиш для отображения или скрытия списка уведомлений."
#: data/org.gnome.shell.gschema.xml.in:192
#: data/org.gnome.shell.gschema.xml.in:200
msgid "Keybinding to focus the active notification"
msgstr "Комбинация клавиш для перевода фокуса на текущее уведомление"
#: data/org.gnome.shell.gschema.xml.in:193
#: data/org.gnome.shell.gschema.xml.in:201
msgid "Keybinding to focus the active notification."
msgstr "Комбинация клавиш для перевода фокуса на текущее уведомление."
#: data/org.gnome.shell.gschema.xml.in:199
#: data/org.gnome.shell.gschema.xml.in:207
msgid "Switch to application 1"
msgstr "Переключиться на приложение 1"
#: data/org.gnome.shell.gschema.xml.in:203
#: data/org.gnome.shell.gschema.xml.in:211
msgid "Switch to application 2"
msgstr "Переключиться на приложение 2"
#: data/org.gnome.shell.gschema.xml.in:207
#: data/org.gnome.shell.gschema.xml.in:215
msgid "Switch to application 3"
msgstr "Переключиться на приложение 3"
#: data/org.gnome.shell.gschema.xml.in:211
#: data/org.gnome.shell.gschema.xml.in:219
msgid "Switch to application 4"
msgstr "Переключиться на приложение 4"
#: data/org.gnome.shell.gschema.xml.in:215
#: data/org.gnome.shell.gschema.xml.in:223
msgid "Switch to application 5"
msgstr "Переключиться на приложение 5"
#: data/org.gnome.shell.gschema.xml.in:219
#: data/org.gnome.shell.gschema.xml.in:227
msgid "Switch to application 6"
msgstr "Переключиться на приложение 6"
#: data/org.gnome.shell.gschema.xml.in:223
#: data/org.gnome.shell.gschema.xml.in:231
msgid "Switch to application 7"
msgstr "Переключиться на приложение 7"
#: data/org.gnome.shell.gschema.xml.in:227
#: data/org.gnome.shell.gschema.xml.in:235
msgid "Switch to application 8"
msgstr "Переключиться на приложение 8"
#: data/org.gnome.shell.gschema.xml.in:231
#: data/org.gnome.shell.gschema.xml.in:239
msgid "Switch to application 9"
msgstr "Переключиться на приложение 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 "Ограничить переключатель текущим рабочим местом."
#: 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."
@ -395,11 +401,11 @@ msgstr ""
"чьи окна находятся на текущем рабочем месте. Иначе все приложения будут "
"включены."
#: data/org.gnome.shell.gschema.xml.in:258
#: data/org.gnome.shell.gschema.xml.in:266
msgid "The application icon mode."
msgstr "Режим значка приложения."
#: 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-"
@ -409,7 +415,7 @@ msgstr ""
"«thumbnail-only» (показывать миниатюру окна), «app-icon-only» (показывать "
"только значок приложения), «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."
@ -417,59 +423,59 @@ msgstr ""
"Если выбрано, то в переключателе будут показываться только окна из текущего "
"рабочего места. Иначе все окна будут включены."
#: data/org.gnome.shell.gschema.xml.in:278
#: data/org.gnome.shell.gschema.xml.in:286
msgid "Locations"
msgstr "Местоположения"
#: 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 "Местоположения для отображения в мировых часах"
#: data/org.gnome.shell.gschema.xml.in:289
#: data/org.gnome.shell.gschema.xml.in:297
msgid "Automatic location"
msgstr "Автоматическое местоположение"
#: 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 "Определяет получать местоположение или нет"
#: data/org.gnome.shell.gschema.xml.in:297
#: data/org.gnome.shell.gschema.xml.in:305
msgid "Location"
msgstr "Местоположение"
#: 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 "Местоположение для которого отображается прогноз погоды"
#: 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 "Прикреплять модальное диалоговое окно к родительскому окну"
#: 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 ""
"Этот ключ переопределяет ключ в org.gnome.mutter при запуске 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 ""
"Включить автоматическое изменение размеров окон при перемещении окон к краям "
"экрана"
#: data/org.gnome.shell.gschema.xml.in:327
#: data/org.gnome.shell.gschema.xml.in:335
msgid "Workspaces are managed dynamically"
msgstr "Рабочие места управляются динамически"
#: data/org.gnome.shell.gschema.xml.in:335
#: data/org.gnome.shell.gschema.xml.in:343
msgid "Workspaces only on primary monitor"
msgstr "Рабочие места только на основном мониторе"
#: 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 "Задержка изменения фокуса в режиме мыши после остановки указателя"
@ -504,18 +510,18 @@ 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/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 "Отмена"
#. 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 "Пароль"
@ -538,8 +544,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:246
#: js/ui/components/networkAgent.js:269 js/ui/components/networkAgent.js:287
msgid "Username"
msgstr "Имя пользователя"
@ -644,26 +650,26 @@ msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Заблокировать ориентацию экрана"
#: js/misc/util.js:121
#: js/misc/util.js:120
msgid "Command not found"
msgstr "Команда не найдена"
#. 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 "Не удалось разобрать команду:"
#: js/misc/util.js:165
#: js/misc/util.js:164
#, javascript-format
msgid "Execution of “%s” failed:"
msgstr "Не удалось выполнить «%s»:"
#: js/misc/util.js:182
#: js/misc/util.js:181
msgid "Just now"
msgstr "Прямо сейчас"
#: js/misc/util.js:184
#: js/misc/util.js:183
#, javascript-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
@ -671,7 +677,7 @@ msgstr[0] "%d минута назад"
msgstr[1] "%d минуты назад"
msgstr[2] "%d минут назад"
#: js/misc/util.js:188
#: js/misc/util.js:187
#, javascript-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
@ -679,11 +685,11 @@ msgstr[0] "%d час назад"
msgstr[1] "%d часа назад"
msgstr[2] "%d часов назад"
#: js/misc/util.js:192 js/ui/dateMenu.js:162
#: js/misc/util.js:191 js/ui/dateMenu.js:162
msgid "Yesterday"
msgstr "Вчера"
#: js/misc/util.js:194
#: js/misc/util.js:193
#, javascript-format
msgid "%d day ago"
msgid_plural "%d days ago"
@ -691,7 +697,7 @@ msgstr[0] "%d день назад"
msgstr[1] "%d дня назад"
msgstr[2] "%d дней назад"
#: js/misc/util.js:198
#: js/misc/util.js:197
#, javascript-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
@ -699,7 +705,7 @@ msgstr[0] "%d неделя назад"
msgstr[1] "%d недели назад"
msgstr[2] "%d недель назад"
#: js/misc/util.js:202
#: js/misc/util.js:201
#, javascript-format
msgid "%d month ago"
msgid_plural "%d months ago"
@ -707,7 +713,7 @@ msgstr[0] "%d месяц назад"
msgstr[1] "%d месяца назад"
msgstr[2] "%d месяцев назад"
#: js/misc/util.js:205
#: js/misc/util.js:204
#, javascript-format
msgid "%d year ago"
msgid_plural "%d years ago"
@ -716,20 +722,20 @@ msgstr[1] "%d года назад"
msgstr[2] "%d лет назад"
#. 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 "Вчера, %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"
@ -737,7 +743,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"
@ -745,7 +751,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"
@ -753,20 +759,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 "Вчера, %-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"
@ -774,7 +780,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"
@ -783,17 +789,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 "Авторизация в точке доступа"
#: 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."
@ -1039,40 +1045,40 @@ msgstr "Установленная версия udisks не поддержива
msgid "Open with %s"
msgstr "Открыть с помощью %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 ""
"В качестве альтернативы вы можете подключиться, нажав кнопку «WPS» на вашем "
"маршрутизаторе."
#: 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 "Соединиться"
#: js/ui/components/networkAgent.js:215
#: js/ui/components/networkAgent.js:216
msgid "Key"
msgstr "Ключ"
#: 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 "Пароль личного ключа"
#: js/ui/components/networkAgent.js:274
#: js/ui/components/networkAgent.js:275
msgid "Identity"
msgstr "Идентичность"
#: js/ui/components/networkAgent.js:288
#: js/ui/components/networkAgent.js:289
msgid "Service"
msgstr "Служба"
#: 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 "Требуется подтверждение подлинности"
#: 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 "
@ -1080,31 +1086,31 @@ msgid ""
msgstr ""
"Для доступа к беспроводной сети «%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 "Аутентификация Wired 802.1X"
#: js/ui/components/networkAgent.js:324
#: js/ui/components/networkAgent.js:325
msgid "Network name"
msgstr "Название сети"
#: 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"
#: 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 "Требуется 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 "Для устройства мобильной связи требуется 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
@ -1403,24 +1409,24 @@ msgstr "%s (удалённый)"
msgid "%s (console)"
msgstr "%s (консоль)"
#: js/ui/extensionDownloader.js:232
#: js/ui/extensionDownloader.js:194
msgid "Install"
msgstr "Установить"
#: js/ui/extensionDownloader.js:238
#: js/ui/extensionDownloader.js:200
msgid "Install Extension"
msgstr "Установить расширение"
#: js/ui/extensionDownloader.js:239
#: js/ui/extensionDownloader.js:201
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Загрузить и установить расширение «%s» из extensions.gnome.org?"
#: js/ui/extensionSystem.js:252
#: js/ui/extensionSystem.js:253
msgid "Extension Updates Available"
msgstr "Доступны обновления расширений"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:254
msgid "Extension updates are ready to be installed."
msgstr "Обновления расширений готовы к установке."
@ -1517,7 +1523,7 @@ msgstr "Выключить"
msgid "Leave Off"
msgstr "Оставить выключенными"
#: js/ui/keyboard.js:226
#: js/ui/keyboard.js:227
msgid "Region & Language Settings"
msgstr "Настройки языка и региона"
@ -1570,11 +1576,11 @@ msgstr "Показать код"
msgid "Web Page"
msgstr "Веб-страница"
#: js/ui/main.js:290
#: js/ui/main.js:294
msgid "Logged in as a privileged user"
msgstr "Авторизован как привилегированный пользователь"
#: 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."
@ -1583,15 +1589,15 @@ msgstr ""
"привилегированного пользователя. Если это возможно, вам следует войти от "
"имени обычного пользователя."
#: js/ui/main.js:340
#: js/ui/main.js:344
msgid "Screen Lock disabled"
msgstr "Блокировка экрана отключена"
#: js/ui/main.js:341
#: js/ui/main.js:345
msgid "Screen Locking requires the GNOME display manager."
msgstr "Для блокировки экрана требуется GNOME display manager."
#: js/ui/messageTray.js:1443
#: js/ui/messageTray.js:1440
msgid "System Information"
msgstr "Системная информация"
@ -1625,47 +1631,47 @@ msgstr "Отменить"
msgid "Overview"
msgstr "Обзор"
#: js/ui/padOsd.js:95
#: js/ui/padOsd.js:96
msgid "New shortcut…"
msgstr "Создать комбинацию клавиш…"
#: js/ui/padOsd.js:142
#: js/ui/padOsd.js:143
msgid "Application defined"
msgstr "Определено приложением"
#: js/ui/padOsd.js:143
#: js/ui/padOsd.js:144
msgid "Show on-screen help"
msgstr "Показывать экранную справку"
#: js/ui/padOsd.js:144
#: js/ui/padOsd.js:145
msgid "Switch monitor"
msgstr "Переключить монитор"
#: js/ui/padOsd.js:145
#: js/ui/padOsd.js:146
msgid "Assign keystroke"
msgstr "Назначение клавишь"
#: js/ui/padOsd.js:211
#: js/ui/padOsd.js:212
msgid "Done"
msgstr "Готово"
#: js/ui/padOsd.js:716
#: js/ui/padOsd.js:718
msgid "Edit…"
msgstr "Правка…"
#: js/ui/padOsd.js:758 js/ui/padOsd.js:875
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877
msgid "None"
msgstr "Нет"
#: js/ui/padOsd.js:829
#: js/ui/padOsd.js:831
msgid "Press a button to configure"
msgstr "Нажмите кнопку для настройки"
#: js/ui/padOsd.js:830
#: js/ui/padOsd.js:832
msgid "Press Esc to exit"
msgstr "Нажмите Esc для выхода"
#: js/ui/padOsd.js:833
#: js/ui/padOsd.js:835
msgid "Press any key to exit"
msgstr "Нажмите любую клавишу для выхода"
@ -1675,12 +1681,12 @@ msgstr "Нажмите любую клавишу для выхода"
msgid "Activities"
msgstr "Обзор"
#: js/ui/panel.js:556
#: js/ui/panel.js:542
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Система"
#: js/ui/panel.js:674
#: js/ui/panel.js:658
msgid "Top Bar"
msgstr "Верхняя панель"
@ -1719,7 +1725,7 @@ msgstr "Не удалось заблокировать"
msgid "Lock was blocked by an application"
msgstr "Блокировке помешало приложение"
#: js/ui/screenshot.js:155
#: js/ui/screenshot.js:141
msgid "Screenshot taken"
msgstr "Сделан снимок экрана"
@ -2826,7 +2832,6 @@ 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"
@ -2843,7 +2848,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: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"
@ -2852,7 +2857,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: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"
@ -2982,12 +2987,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 "Открыть параметры расширения"
@ -3012,6 +3012,10 @@ 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 "Путь"
@ -3144,3 +3148,192 @@ 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
View File

@ -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-08-17 23:56+0000\n"
"PO-Revision-Date: 2021-08-31 15:49+0200\n"
"POT-Creation-Date: 2021-11-06 13:27+0000\n"
"PO-Revision-Date: 2021-11-06 15:10+0100\n"
"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
"Language-Team: Slovak <kde-i18n-doc@kde.org>\n"
"Language: sk\n"
@ -268,23 +268,11 @@ 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: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
#: data/org.gnome.shell.gschema.xml.in:133
msgid "Layout of the app picker"
msgstr "Rozloženie nástroja na výber aplikácie"
#: 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 "
@ -297,119 +285,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:157
#: data/org.gnome.shell.gschema.xml.in:149
msgid "Keybinding to open the application menu"
msgstr "Klávesová skratka na otvorenie ponuky aplikácií"
#: data/org.gnome.shell.gschema.xml.in:158
#: data/org.gnome.shell.gschema.xml.in:150
msgid "Keybinding to open the application menu."
msgstr "Klávesová skratka na otvorenie ponuky aplikácií."
#: 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 "Kombinácia kláves na prepínanie medzi stavmi prehľadu"
#: 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 ""
"Klávesová skratka na prepínanie medzi sedením, výberom okna a mriežkou "
"aplikácií"
#: 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 ""
"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:178
#: data/org.gnome.shell.gschema.xml.in:170
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:179
#: data/org.gnome.shell.gschema.xml.in:171
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:186
#: data/org.gnome.shell.gschema.xml.in:178
msgid "Keybinding to open the overview"
msgstr "Klávesová skratka na otvorenie prehľadu"
#: data/org.gnome.shell.gschema.xml.in:187
#: data/org.gnome.shell.gschema.xml.in:179
msgid "Keybinding to open the Activities Overview."
msgstr "Klávesová skratka na otvorenie prehľadu aktivít."
#: 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 "Klávesová skratka na prepnutie viditeľnosti zoznamu s oznámeniami"
#: 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 "Klávesová skratka na prepnutie viditeľnosti zoznamu s oznámeniami."
#: data/org.gnome.shell.gschema.xml.in:200
#: data/org.gnome.shell.gschema.xml.in:192
msgid "Keybinding to focus the active notification"
msgstr "Klávesová skratka na zameranie aktívnych oznámení"
#: data/org.gnome.shell.gschema.xml.in:201
#: data/org.gnome.shell.gschema.xml.in:193
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:207
#: data/org.gnome.shell.gschema.xml.in:199
msgid "Switch to application 1"
msgstr "Prepnúť na aplikáciu č. 1"
# tooltip
#: data/org.gnome.shell.gschema.xml.in:211
#: data/org.gnome.shell.gschema.xml.in:203
msgid "Switch to application 2"
msgstr "Prepnúť na aplikáciu č. 2"
# tooltip
#: data/org.gnome.shell.gschema.xml.in:215
#: data/org.gnome.shell.gschema.xml.in:207
msgid "Switch to application 3"
msgstr "Prepnúť na aplikáciu č. 3"
# tooltip
#: data/org.gnome.shell.gschema.xml.in:219
#: data/org.gnome.shell.gschema.xml.in:211
msgid "Switch to application 4"
msgstr "Prepnúť na aplikáciu č. 4"
# tooltip
#: data/org.gnome.shell.gschema.xml.in:223
#: data/org.gnome.shell.gschema.xml.in:215
msgid "Switch to application 5"
msgstr "Prepnúť na aplikáciu č. 5"
# tooltip
#: data/org.gnome.shell.gschema.xml.in:227
#: data/org.gnome.shell.gschema.xml.in:219
msgid "Switch to application 6"
msgstr "Prepnúť na aplikáciu č. 6"
# tooltip
#: data/org.gnome.shell.gschema.xml.in:231
#: data/org.gnome.shell.gschema.xml.in:223
msgid "Switch to application 7"
msgstr "Prepnúť na aplikáciu č. 7"
# tooltip
#: data/org.gnome.shell.gschema.xml.in:235
#: data/org.gnome.shell.gschema.xml.in:227
msgid "Switch to application 8"
msgstr "Prepnúť na aplikáciu č. 8"
# tooltip
#: data/org.gnome.shell.gschema.xml.in:239
#: data/org.gnome.shell.gschema.xml.in:231
msgid "Switch to application 9"
msgstr "Prepnúť na aplikáciu č. 9"
# summary
#: 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 "Obmedziť prepínač na aktuálny pracovný priestor."
# desc
#: 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."
@ -417,11 +405,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:266
#: data/org.gnome.shell.gschema.xml.in:258
msgid "The application icon mode."
msgstr "Režim ikonizácie aplikácií."
#: 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-"
@ -432,7 +420,7 @@ msgstr ""
"ikonu aplikácie) alebo „both“ (zobrazí oboje)."
# desc
#: 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."
@ -440,59 +428,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:286
#: data/org.gnome.shell.gschema.xml.in:278
msgid "Locations"
msgstr "Umiestnenia"
#: 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 "Zobrazené umiestnenia v svetových časoch"
#: data/org.gnome.shell.gschema.xml.in:297
#: data/org.gnome.shell.gschema.xml.in:289
msgid "Automatic location"
msgstr "Automatické umiestnenie"
#: 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 "Určuje, či sa má získať aktuálne umiestnenie alebo nie"
#: data/org.gnome.shell.gschema.xml.in:305
#: data/org.gnome.shell.gschema.xml.in:297
msgid "Location"
msgstr "Umiestnenie"
#: 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 "Umiestnenie, pre ktoré zobraziť predpoveď"
#: 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 "Pripojiť modálne dialógové okno k rodičovskému oknu"
#: 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 ""
"Tento kľúč preváži kľúč v org.gnome.mutter po spustení Shellu prostredia "
"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 "Povoliť natiahnutie k okraju pri pustení okien na okrajoch obrazovky"
#: data/org.gnome.shell.gschema.xml.in:335
#: data/org.gnome.shell.gschema.xml.in:327
msgid "Workspaces are managed dynamically"
msgstr "Pracovné priestory sú spravované dynamicky"
#: data/org.gnome.shell.gschema.xml.in:343
#: data/org.gnome.shell.gschema.xml.in:335
msgid "Workspaces only on primary monitor"
msgstr "Pracovné priestory sú iba na primárnom monitore"
# summary
#: 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 ""
"Oneskoriť pohyb zamerania v režime myši, až kým sa ukazovateľ nezastaví"
@ -528,18 +516,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: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 "Zruš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 "Heslo"
@ -564,8 +552,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: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 "Používateľské meno"
@ -673,26 +661,26 @@ msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Uzamknúť otočenie obrazovky"
#: js/misc/util.js:120
#: js/misc/util.js:121
msgid "Command not found"
msgstr "Príkaz nebol nájdený"
#. 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 "Nepodarilo sa analyzovať príkaz:"
#: js/misc/util.js:164
#: js/misc/util.js:165
#, javascript-format
msgid "Execution of “%s” failed:"
msgstr "Spustenie „%s“ zlyhalo:"
#: js/misc/util.js:181
#: js/misc/util.js:182
msgid "Just now"
msgstr "Práve teraz"
#: js/misc/util.js:183
#: js/misc/util.js:184
#, javascript-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
@ -700,7 +688,7 @@ msgstr[0] "Pred %d minútami"
msgstr[1] "Pred %d minútou"
msgstr[2] "Pred %d minútami"
#: js/misc/util.js:187
#: js/misc/util.js:188
#, javascript-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
@ -708,11 +696,11 @@ msgstr[0] "Pred %d hodinami"
msgstr[1] "Pred %d hodinou"
msgstr[2] "Pred %d hodinami"
#: js/misc/util.js:191 js/ui/dateMenu.js:162
#: js/misc/util.js:192 js/ui/dateMenu.js:162
msgid "Yesterday"
msgstr "Včera"
#: js/misc/util.js:193
#: js/misc/util.js:194
#, javascript-format
msgid "%d day ago"
msgid_plural "%d days ago"
@ -720,7 +708,7 @@ msgstr[0] "Pred %d dňami"
msgstr[1] "Pred %d dňom"
msgstr[2] "Pred %d dňami"
#: js/misc/util.js:197
#: js/misc/util.js:198
#, javascript-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
@ -728,7 +716,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:201
#: js/misc/util.js:202
#, javascript-format
msgid "%d month ago"
msgid_plural "%d months ago"
@ -736,7 +724,7 @@ msgstr[0] "Pred %d mesiacmi"
msgstr[1] "Pred %d mesiacom"
msgstr[2] "Pred %d mesiacmi"
#: js/misc/util.js:204
#: js/misc/util.js:205
#, javascript-format
msgid "%d year ago"
msgid_plural "%d years ago"
@ -745,20 +733,20 @@ msgstr[1] "Pred %d rokom"
msgstr[2] "Pred %d rokmi"
#. 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č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:249
#: js/misc/util.js:250
#, no-c-format
msgid "%A, %H%M"
msgstr "%A, %H:%M"
@ -766,7 +754,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"
@ -774,7 +762,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"
@ -782,13 +770,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: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čera, %l:%M %p"
@ -798,7 +786,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:278
#: js/misc/util.js:279
#, no-c-format
msgid "%A, %l%M %p"
msgstr "%A, %l:%M %p"
@ -806,7 +794,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"
@ -814,17 +802,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 "Prihlásenie do aktívneho bodu"
#: 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."
@ -1074,39 +1062,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:93
#: js/ui/components/networkAgent.js:92
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: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 "Pripojiť"
#: js/ui/components/networkAgent.js:216
#: js/ui/components/networkAgent.js:215
msgid "Key"
msgstr "Kľúč"
#: 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 "Heslo k súkromnému kľúču"
#: js/ui/components/networkAgent.js:275
#: js/ui/components/networkAgent.js:274
msgid "Identity"
msgstr "Identita"
#: js/ui/components/networkAgent.js:289
#: js/ui/components/networkAgent.js:288
msgid "Service"
msgstr "Služba"
#: 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 "Požaduje sa overenie totožnosti"
#: 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 "
@ -1115,31 +1103,31 @@ msgstr ""
"Na prístup do bezdrôtovej siete „%s“ sú vyžadované heslá alebo šifrovacie "
"kľúče."
#: 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 "Overenie totožnosti k drôtovej sieti 802.1X"
#: js/ui/components/networkAgent.js:325
#: js/ui/components/networkAgent.js:324
msgid "Network name"
msgstr "Názov siete"
#: 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 "Overenie totožnosti k 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 "Požaduje sa kód 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 "Pre zariadenie mobilnej širokopásmovej siete je potrebný kód 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
@ -1437,25 +1425,25 @@ msgstr "%s (vzdialená relácia)"
msgid "%s (console)"
msgstr "%s (konzola)"
#: js/ui/extensionDownloader.js:194
#: js/ui/extensionDownloader.js:232
msgid "Install"
msgstr "Inštalovať"
# dialog title
#: js/ui/extensionDownloader.js:200
#: js/ui/extensionDownloader.js:238
msgid "Install Extension"
msgstr "Inštalácia rozšírenia"
#: js/ui/extensionDownloader.js:201
#: js/ui/extensionDownloader.js:239
#, 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:253
#: js/ui/extensionSystem.js:252
msgid "Extension Updates Available"
msgstr "Sú dostupné aktualizácie rozšírení"
#: js/ui/extensionSystem.js:254
#: js/ui/extensionSystem.js:253
msgid "Extension updates are ready to be installed."
msgstr "Aktualizácie rozšírení sú pripravené na inštaláciu."
@ -1555,7 +1543,7 @@ msgstr "Vypnúť"
msgid "Leave Off"
msgstr "Ponechať vypnuté"
#: js/ui/keyboard.js:227
#: js/ui/keyboard.js:226
msgid "Region & Language Settings"
msgstr "Nastavenia oblasti a jazyka"
@ -1609,11 +1597,11 @@ msgstr "Zobraziť zdroj"
msgid "Web Page"
msgstr "Webová stránka"
#: js/ui/main.js:294
#: js/ui/main.js:290
msgid "Logged in as a privileged user"
msgstr "Prihlásený ako privilegovaný používateľ"
#: 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."
@ -1622,15 +1610,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:344
#: js/ui/main.js:340
msgid "Screen Lock disabled"
msgstr "Uzamknutie obrazovky je zakázané"
#: js/ui/main.js:345
#: js/ui/main.js:341
msgid "Screen Locking requires the GNOME display manager."
msgstr "Uzamykanie obrazovky vyžaduje správcu displejov prostredia GNOME."
#: js/ui/messageTray.js:1440
#: js/ui/messageTray.js:1443
msgid "System Information"
msgstr "Informácie o systéme"
@ -1665,47 +1653,47 @@ msgstr "Vrátiť"
msgid "Overview"
msgstr "Prehľad"
#: js/ui/padOsd.js:96
#: js/ui/padOsd.js:95
msgid "New shortcut…"
msgstr "Nová skratka…"
#: js/ui/padOsd.js:143
#: js/ui/padOsd.js:142
msgid "Application defined"
msgstr "Definované aplikáciou"
#: js/ui/padOsd.js:144
#: js/ui/padOsd.js:143
msgid "Show on-screen help"
msgstr "Zobraziť pomocníka na obrazovke"
#: js/ui/padOsd.js:145
#: js/ui/padOsd.js:144
msgid "Switch monitor"
msgstr "Prepnúť monitor"
#: js/ui/padOsd.js:146
#: js/ui/padOsd.js:145
msgid "Assign keystroke"
msgstr "Priradiť klávesu"
#: js/ui/padOsd.js:212
#: js/ui/padOsd.js:211
msgid "Done"
msgstr "Dokončiť"
#: js/ui/padOsd.js:718
#: js/ui/padOsd.js:716
msgid "Edit…"
msgstr "Upraviť…"
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877
#: js/ui/padOsd.js:758 js/ui/padOsd.js:875
msgid "None"
msgstr "Žiadne"
#: js/ui/padOsd.js:831
#: js/ui/padOsd.js:829
msgid "Press a button to configure"
msgstr "Stlačte kláves na spustenie konfigurácie"
#: js/ui/padOsd.js:832
#: js/ui/padOsd.js:830
msgid "Press Esc to exit"
msgstr "Stlačte kláves Esc na skončenie"
#: js/ui/padOsd.js:835
#: js/ui/padOsd.js:833
msgid "Press any key to exit"
msgstr "Stlačte akýkoľvek kláves na skončenie"
@ -1715,12 +1703,12 @@ msgstr "Stlačte akýkoľvek kláves na skončenie"
msgid "Activities"
msgstr "Aktivity"
#: js/ui/panel.js:542
#: js/ui/panel.js:556
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Systém"
#: js/ui/panel.js:658
#: js/ui/panel.js:674
msgid "Top Bar"
msgstr "Horná lišta"
@ -1760,7 +1748,7 @@ msgstr "Nepodarilo sa uzamknúť obrazovku"
msgid "Lock was blocked by an application"
msgstr "Uzamknutie bolo zablokované aplikáciou"
#: js/ui/screenshot.js:141
#: js/ui/screenshot.js:155
msgid "Screenshot taken"
msgstr "Snímka obrazovky bola zachytená"
@ -2831,6 +2819,7 @@ 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"
@ -2848,7 +2837,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: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 +2846,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: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"
@ -2990,7 +2979,12 @@ 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:79
#: 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
msgid "Opens extension preferences"
msgstr "Otvorí predvoľby rozšírenia"
@ -3018,10 +3012,6 @@ 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"
@ -3159,6 +3149,19 @@ 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
View File

@ -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-11-02 16:32+0000\n"
"PO-Revision-Date: 2021-11-02 17:49+0100\n"
"POT-Creation-Date: 2021-08-29 17:33+0000\n"
"PO-Revision-Date: 2021-08-30 21:12+0200\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 3.0\n"
"X-Generator: Poedit 2.4.2\n"
#: data/50-gnome-shell-launchers.xml:6
msgid "Launchers"
@ -251,11 +251,21 @@ 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:133
#: 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
msgid "Layout of the app picker"
msgstr "Pogled izbirnika programov"
#: 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 "
@ -267,105 +277,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:149
#: data/org.gnome.shell.gschema.xml.in:157
msgid "Keybinding to open the application menu"
msgstr "Tipkovna bližnjica, ki odpre meni programov"
#: data/org.gnome.shell.gschema.xml.in:150
#: data/org.gnome.shell.gschema.xml.in:158
msgid "Keybinding to open the application menu."
msgstr "Tipkovna bližnjica, ki odpre meni programov."
#: 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 "Tipkovna bližnjica za preklop med stanji pregleda"
#: 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 ""
"Tipkovna bližnjica za preklop med sejo, izbirniki oken in programsko mrežo"
#: 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 ""
"Tipkovna bližnjica za preklop med programsko mrežo, izbirniki oken in sejo"
#: 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 "Tipkovna bližnjica, ki odpre pogled »Pokaži programe«"
#: 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 ""
"Tipkovna bližnjica, ki odpre pogled »Pokaži programe« v pregledu dejavnosti."
#: data/org.gnome.shell.gschema.xml.in:178
#: data/org.gnome.shell.gschema.xml.in:186
msgid "Keybinding to open the overview"
msgstr "Tipkovna bližnjica, ki odpre pogled pregleda"
#: data/org.gnome.shell.gschema.xml.in:179
#: data/org.gnome.shell.gschema.xml.in:187
msgid "Keybinding to open the Activities Overview."
msgstr "Tipkovna bližnjica, ki odpre pogled pregleda dejavnosti."
#: 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 "Tipkovna bližnjica za preklop vidnosti seznama obvestil"
#: 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 "Tipkovna bližnjica za preklop vidnosti seznama obvestil."
#: data/org.gnome.shell.gschema.xml.in:192
#: data/org.gnome.shell.gschema.xml.in:200
msgid "Keybinding to focus the active notification"
msgstr "Tipkovna bližnjica za prikaz dejavnega obvestila"
#: data/org.gnome.shell.gschema.xml.in:193
#: data/org.gnome.shell.gschema.xml.in:201
msgid "Keybinding to focus the active notification."
msgstr "Tipkovna bližnjica za prikaz dejavnega obvestila."
#: data/org.gnome.shell.gschema.xml.in:199
#: data/org.gnome.shell.gschema.xml.in:207
msgid "Switch to application 1"
msgstr "Preklopi na program 1"
#: data/org.gnome.shell.gschema.xml.in:203
#: data/org.gnome.shell.gschema.xml.in:211
msgid "Switch to application 2"
msgstr "Preklopi na program 2"
#: data/org.gnome.shell.gschema.xml.in:207
#: data/org.gnome.shell.gschema.xml.in:215
msgid "Switch to application 3"
msgstr "Preklopi na program 3"
#: data/org.gnome.shell.gschema.xml.in:211
#: data/org.gnome.shell.gschema.xml.in:219
msgid "Switch to application 4"
msgstr "Preklopi na program 4"
#: data/org.gnome.shell.gschema.xml.in:215
#: data/org.gnome.shell.gschema.xml.in:223
msgid "Switch to application 5"
msgstr "Preklopi na program 5"
#: data/org.gnome.shell.gschema.xml.in:219
#: data/org.gnome.shell.gschema.xml.in:227
msgid "Switch to application 6"
msgstr "Preklopi na program 6"
#: data/org.gnome.shell.gschema.xml.in:223
#: data/org.gnome.shell.gschema.xml.in:231
msgid "Switch to application 7"
msgstr "Preklopi na program 7"
#: data/org.gnome.shell.gschema.xml.in:227
#: data/org.gnome.shell.gschema.xml.in:235
msgid "Switch to application 8"
msgstr "Preklopi na program 8"
#: data/org.gnome.shell.gschema.xml.in:231
#: data/org.gnome.shell.gschema.xml.in:239
msgid "Switch to application 9"
msgstr "Preklopi na 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 "Omeji preklopnik na trenutno delovno površino."
#: 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."
@ -374,11 +384,11 @@ msgstr ""
"v izbrani delovni površini v preklopniku. V nasprotnem primeru so prikazana "
"vsa okna."
#: data/org.gnome.shell.gschema.xml.in:258
#: data/org.gnome.shell.gschema.xml.in:266
msgid "The application icon mode."
msgstr "Ikonski način programa."
#: 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-"
@ -388,7 +398,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: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."
@ -396,57 +406,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:278
#: data/org.gnome.shell.gschema.xml.in:286
msgid "Locations"
msgstr "Mesta"
#: 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 "Mesta, za katere naj bodo prikazani svetovni časi"
#: data/org.gnome.shell.gschema.xml.in:289
#: data/org.gnome.shell.gschema.xml.in:297
msgid "Automatic location"
msgstr "Samodejno določanje mesta"
#: 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 "Ali naj program pridobi trenutno mesto ali ne"
#: data/org.gnome.shell.gschema.xml.in:297
#: data/org.gnome.shell.gschema.xml.in:305
msgid "Location"
msgstr "Trenutno mesto"
#: 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 "Mesto, za katero naj bo pokazana napoved"
#: 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 "Pripni modalno pogovorno okno na glavno okno"
#: 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 ""
"Ključ prepiše vrednost v org.gnome.mutter med zaganjanjem lupine 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 "Omogoči utripanje črte med spuščanjem okna na robove zaslona"
#: data/org.gnome.shell.gschema.xml.in:327
#: data/org.gnome.shell.gschema.xml.in:335
msgid "Workspaces are managed dynamically"
msgstr "Delovne površine se obravnavajo dinamično"
#: data/org.gnome.shell.gschema.xml.in:335
#: data/org.gnome.shell.gschema.xml.in:343
msgid "Workspaces only on primary monitor"
msgstr "Delovne površine so le na osnovnem zaslonu"
#: 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 ""
"Zamik žarišča se v načinu miške spreminja, dokler se kazalnik ne neha "
@ -483,18 +493,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: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:230
#: 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: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 "Geslo"
@ -517,8 +527,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: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 "Uporabniško ime"
@ -624,26 +634,26 @@ msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Vrtenje zaklepanja zaslona"
#: js/misc/util.js:121
#: js/misc/util.js:120
msgid "Command not found"
msgstr "Ukaz ni mogoče najti"
#. 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 "Ukaza ni mogoče razčleniti:"
#: js/misc/util.js:165
#: js/misc/util.js:164
#, javascript-format
msgid "Execution of “%s” failed:"
msgstr "Izvedba »%s« je spodletela:"
#: js/misc/util.js:182
#: js/misc/util.js:181
msgid "Just now"
msgstr "Ravnokar"
#: js/misc/util.js:184
#: js/misc/util.js:183
#, javascript-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
@ -652,7 +662,7 @@ msgstr[1] "Pred %d minuto"
msgstr[2] "Pred %d minutama"
msgstr[3] "Pred %d minutami"
#: js/misc/util.js:188
#: js/misc/util.js:187
#, javascript-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
@ -661,11 +671,11 @@ msgstr[1] "Pred %d uro"
msgstr[2] "Pred %d urama"
msgstr[3] "Pred %d urami"
#: js/misc/util.js:192 js/ui/dateMenu.js:162
#: js/misc/util.js:191 js/ui/dateMenu.js:162
msgid "Yesterday"
msgstr "Včeraj"
#: js/misc/util.js:194
#: js/misc/util.js:193
#, javascript-format
msgid "%d day ago"
msgid_plural "%d days ago"
@ -674,7 +684,7 @@ msgstr[1] "Pred %d dnevom"
msgstr[2] "Pred %d dnevoma"
msgstr[3] "Pred %d dnevi"
#: js/misc/util.js:198
#: js/misc/util.js:197
#, javascript-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
@ -683,7 +693,7 @@ msgstr[1] "Pred %d tednom"
msgstr[2] "Pred %d tednoma"
msgstr[3] "Pred %d tedni"
#: js/misc/util.js:202
#: js/misc/util.js:201
#, javascript-format
msgid "%d month ago"
msgid_plural "%d months ago"
@ -692,7 +702,7 @@ msgstr[1] "Pred %d mesecem"
msgstr[2] "Pred %d mesecema"
msgstr[3] "Pred %d meseci"
#: js/misc/util.js:205
#: js/misc/util.js:204
#, javascript-format
msgid "%d year ago"
msgid_plural "%d years ago"
@ -702,20 +712,20 @@ msgstr[2] "Pred %d letoma"
msgstr[3] "Pred %d leti"
#. 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č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:250
#: js/misc/util.js:249
#, no-c-format
msgid "%A, %H%M"
msgstr "%A, %H%M"
@ -723,7 +733,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"
@ -731,7 +741,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"
@ -739,20 +749,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 "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:279
#: js/misc/util.js:278
#, no-c-format
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
@ -760,7 +770,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"
@ -768,7 +778,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:291
#: js/misc/util.js:290
#, no-c-format
msgid "%B %-d %Y, %l%M %p"
msgstr "%d. %B %Y, %l%M %p"
@ -1023,38 +1033,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:92
#: js/ui/components/networkAgent.js:93
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: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 "Poveži"
#: js/ui/components/networkAgent.js:215
#: js/ui/components/networkAgent.js:216
msgid "Key"
msgstr "Ključ"
#: 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 "Geslo zasebnega ključa"
#: js/ui/components/networkAgent.js:274
#: js/ui/components/networkAgent.js:275
msgid "Identity"
msgstr "Istovetnost"
#: js/ui/components/networkAgent.js:288
#: js/ui/components/networkAgent.js:289
msgid "Service"
msgstr "Storitev"
#: 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 "Zahtevana je overitev"
#: 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 "
@ -1063,31 +1073,31 @@ msgstr ""
"Za povezavo v brezžično omrežje »%s« je zahtevano geslo oziroma šifrirni "
"ključ."
#: 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 "Žična overitev 802.1X"
#: js/ui/components/networkAgent.js:324
#: js/ui/components/networkAgent.js:325
msgid "Network name"
msgstr "Naziv omrežja"
#: 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 "Overitev 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 "Zahtevana koda 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 "Za napravo mobilnega širokopasovnega dostopa je zahtevana koda PIN."
#: js/ui/components/networkAgent.js:338
#: js/ui/components/networkAgent.js:339
msgid "PIN"
msgstr "Koda 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
@ -1391,24 +1401,24 @@ msgstr "%s (oddaljeno)"
msgid "%s (console)"
msgstr "%s (konzola)"
#: js/ui/extensionDownloader.js:232
#: js/ui/extensionDownloader.js:234
msgid "Install"
msgstr "Namesti"
#: js/ui/extensionDownloader.js:238
#: js/ui/extensionDownloader.js:240
msgid "Install Extension"
msgstr "Namesti razširitev"
#: js/ui/extensionDownloader.js:239
#: js/ui/extensionDownloader.js:241
#, 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:252
#: js/ui/extensionSystem.js:253
msgid "Extension Updates Available"
msgstr "Na voljo so posodobitve razširitev"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:254
msgid "Extension updates are ready to be installed."
msgstr "Posodobitve razširitev so pripravljene na namestitev."
@ -1503,7 +1513,7 @@ msgstr "Onemogoči"
msgid "Leave Off"
msgstr "Pusti onemogočeno"
#: js/ui/keyboard.js:226
#: js/ui/keyboard.js:227
msgid "Region & Language Settings"
msgstr "Nastavitve območja in jezika"
@ -1556,11 +1566,11 @@ msgstr "Poglej vir"
msgid "Web Page"
msgstr "Spletna stran"
#: js/ui/main.js:290
#: js/ui/main.js:294
msgid "Logged in as a privileged user"
msgstr "Zaznana je prijava s skrbniškimi dovoljenji"
#: 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."
@ -1568,11 +1578,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:340
#: js/ui/main.js:344
msgid "Screen Lock disabled"
msgstr "Zaklep zaslona je onemogočen"
#: js/ui/main.js:341
#: js/ui/main.js:345
msgid "Screen Locking requires the GNOME display manager."
msgstr ""
"Zaklepanje zaslona zahteva namestitev upravljalnika zaslona za okolje GNOME."
@ -1611,47 +1621,47 @@ msgstr "Razveljavi"
msgid "Overview"
msgstr "Pregled"
#: js/ui/padOsd.js:95
#: js/ui/padOsd.js:96
msgid "New shortcut…"
msgstr "Nova bližnjica …"
#: js/ui/padOsd.js:142
#: js/ui/padOsd.js:143
msgid "Application defined"
msgstr "Program je določen"
#: js/ui/padOsd.js:143
#: js/ui/padOsd.js:144
msgid "Show on-screen help"
msgstr "Pokaži zaslonsko pomoč"
#: js/ui/padOsd.js:144
#: js/ui/padOsd.js:145
msgid "Switch monitor"
msgstr "Nadzornik preklopa"
#: js/ui/padOsd.js:145
#: js/ui/padOsd.js:146
msgid "Assign keystroke"
msgstr "Dodeli tipkovno bližnjico"
#: js/ui/padOsd.js:211
#: js/ui/padOsd.js:212
msgid "Done"
msgstr "Končano"
#: js/ui/padOsd.js:716
#: js/ui/padOsd.js:718
msgid "Edit…"
msgstr "Uredi …"
#: js/ui/padOsd.js:758 js/ui/padOsd.js:875
#: js/ui/padOsd.js:760 js/ui/padOsd.js:877
msgid "None"
msgstr "Brez"
#: js/ui/padOsd.js:829
#: js/ui/padOsd.js:831
msgid "Press a button to configure"
msgstr "Pritisnite gumb za nastavitev"
#: js/ui/padOsd.js:830
#: js/ui/padOsd.js:832
msgid "Press Esc to exit"
msgstr "Pritisnite tipko Esc za končanje"
#: js/ui/padOsd.js:833
#: js/ui/padOsd.js:835
msgid "Press any key to exit"
msgstr "Pritisnite katerokoli tipko za končanje"
@ -1661,12 +1671,12 @@ msgstr "Pritisnite katerokoli tipko za končanje"
msgid "Activities"
msgstr "Dejavnosti"
#: js/ui/panel.js:556
#: js/ui/panel.js:542
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistem"
#: js/ui/panel.js:674
#: js/ui/panel.js:658
msgid "Top Bar"
msgstr "Vrhnja vrstica"
@ -1705,7 +1715,7 @@ msgstr "Zaklep ni mogoč"
msgid "Lock was blocked by an application"
msgstr "Zaklep je preprečil program"
#: js/ui/screenshot.js:155
#: js/ui/screenshot.js:141
msgid "Screenshot taken"
msgstr "Zaslonska slika je zajeta"
@ -2771,7 +2781,6 @@ 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"
@ -2788,7 +2797,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: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 +2806,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: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 +2936,7 @@ 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: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
#: subprojects/extensions-tool/src/command-prefs.c:79
msgid "Opens extension preferences"
msgstr "Odpre možnosti razširitve"
@ -2957,6 +2961,10 @@ 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"
@ -3091,17 +3099,6 @@ 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"

View File

@ -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-02 15:41+0000\n"
"PO-Revision-Date: 2021-11-02 18:31+0200\n"
"POT-Creation-Date: 2021-11-26 16:19+0000\n"
"PO-Revision-Date: 2021-11-26 23:35+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:1846
#: js/ui/appDisplay.js:1791
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:252
#: js/ui/extensionSystem.js:266
msgid "Extension Updates Available"
msgstr "Випущено оновлення розширень"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:267
msgid "Extension updates are ready to be installed."
msgstr "Приготовано до встановлення оновлення розширень."
@ -1553,11 +1553,25 @@ msgstr "Переглянути джерело"
msgid "Web Page"
msgstr "Веб-сторінка"
#: js/ui/main.js:290
#: 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
msgid "Logged in as a privileged user"
msgstr "Увійшов як наділений користувач"
#: js/ui/main.js:291
#: js/ui/main.js:308
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1565,11 +1579,11 @@ msgstr ""
"З міркувань безпеки слід уникати сеансів з наділеними правами. Користуйтесь "
"звичайним сеансом."
#: js/ui/main.js:340
#: js/ui/main.js:357
msgid "Screen Lock disabled"
msgstr "Блокування екрана вимкнено"
#: js/ui/main.js:341
#: js/ui/main.js:358
msgid "Screen Locking requires the GNOME display manager."
msgstr "Блокування екрана потребує керування входом GNOME."
@ -1597,10 +1611,6 @@ 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
@ -2929,8 +2939,7 @@ 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"

View File

@ -52,7 +52,7 @@ static const gchar introspection_xml[] =
" <arg type='b' name='force_reload' direction='in'/>"
" </method>"
" <signal name='EventsAddedOrUpdated'>"
" <arg type='a(ssbxxa{sv})' name='events' direction='out'/>"
" <arg type='a(ssxxa{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 time_t
static gboolean
get_time_from_property (ECalClient *cal,
ICalComponent *icomp,
ICalPropertyKind prop_kind,
ICalTime * (* get_prop_func) (ICalProperty *prop),
ICalTimezone *default_zone)
ICalTimezone *default_zone,
ICalTime **out_itt,
ICalTimezone **out_timezone)
{
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 0;
return FALSE;
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 (&param);
g_clear_object (&prop);
g_clear_object (&itt);
return retval;
*out_itt = itt;
*out_timezone = timezone;
return TRUE;
}
static inline time_t
@ -156,11 +156,26 @@ get_ical_start_time (ECalClient *cal,
ICalComponent *icomp,
ICalTimezone *default_zone)
{
return get_time_from_property (cal,
icomp,
I_CAL_DTSTART_PROPERTY,
i_cal_property_get_dtstart,
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;
}
static inline time_t
@ -168,54 +183,36 @@ get_ical_end_time (ECalClient *cal,
ICalComponent *icomp,
ICalTimezone *default_zone)
{
return get_time_from_property (cal,
icomp,
I_CAL_DTEND_PROPERTY,
i_cal_property_get_dtend,
default_zone);
}
ICalTime *itt;
ICalTimezone *timezone;
time_t retval;
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_DTEND_PROPERTY,
i_cal_property_get_dtend,
default_zone,
&itt,
&timezone))
{
g_clear_object (&dtstart);
return TRUE;
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);
retval = i_cal_time_as_timet_with_zone (itt, timezone);
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);
g_clear_object (&itt);
return retval;
}
@ -241,10 +238,6 @@ 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);
@ -361,7 +354,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(ssbxxa{sv})"));
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ssxxa{sv})"));
for (link = events; link; link = g_slist_next (link))
{
CalendarAppointment *appt = link->data;
@ -375,10 +368,9 @@ app_notify_events_added (App *app)
{
g_variant_builder_init (&extras_builder, G_VARIANT_TYPE ("a{sv}"));
g_variant_builder_add (&builder,
"(ssbxxa{sv})",
"(ssxxa{sv})",
appt->id,
appt->summary != NULL ? appt->summary : "",
(gboolean) appt->is_all_day,
(gint64) start_time,
(gint64) end_time,
&extras_builder);
@ -390,7 +382,7 @@ app_notify_events_added (App *app)
"/org/gnome/Shell/CalendarServer",
"org.gnome.Shell.CalendarServer",
"EventsAddedOrUpdated",
g_variant_new ("(a(ssbxxa{sv}))", &builder),
g_variant_new ("(a(ssxxa{sv}))", &builder),
NULL);
g_variant_builder_clear (&builder);

View File

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

View File

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

View File

@ -46,7 +46,6 @@
#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,
@ -215,20 +214,6 @@ 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,
@ -236,10 +221,6 @@ 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

View File

@ -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,7 +125,6 @@ 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'
]
@ -148,14 +147,6 @@ 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',

View File

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

View File

@ -12,7 +12,6 @@
#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"
@ -92,110 +91,6 @@ 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)
{
@ -211,7 +106,6 @@ 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));
@ -219,17 +113,12 @@ 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, realm_wmclass);
if (old_id == NULL || strcmp (id, startup_wm_class) == 0) {
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)
g_hash_table_insert (priv->startup_wm_class_to_id,
g_strdup (realm_wmclass), g_strdup (id));
}
g_free (realm_wmclass);
g_strdup (startup_wm_class), g_strdup (id));
}
}
@ -458,19 +347,15 @@ shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
*/
ShellApp *
shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system,
const char *wmclass,
const char *realm_name)
const char *wmclass)
{
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)
@ -478,16 +363,14 @@ 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 (classname, ".desktop", NULL);
desktop_file = g_strconcat (wmclass, ".desktop", NULL);
app = shell_app_system_lookup_heuristic_basename (system, desktop_file);
g_free (desktop_file);
if (app) {
g_free (classname);
if (app)
return app;
}
canonicalized = g_ascii_strdown (classname, -1);
canonicalized = g_ascii_strdown (wmclass, -1);
/* This handles "Fedora Eclipse", probably others.
* Note g_strdelimit is modify-in-place. */
@ -499,7 +382,6 @@ shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system,
g_free (canonicalized);
g_free (desktop_file);
g_free (classname);
return app;
}
@ -516,20 +398,14 @@ shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system,
*/
ShellApp *
shell_app_system_lookup_startup_wmclass (ShellAppSystem *system,
const char *wmclass,
const char *realm_name)
const char *wmclass)
{
const char *id;
char *classname;
if (wmclass == NULL)
return NULL;
classname = realm_wm_class (wmclass, realm_name);
id = g_hash_table_lookup (system->priv->startup_wm_class_to_id, classname);
g_free (classname);
id = g_hash_table_lookup (system->priv->startup_wm_class_to_id, wmclass);
if (id == NULL)
return NULL;
@ -559,29 +435,6 @@ _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
@ -605,9 +458,7 @@ shell_app_system_get_running (ShellAppSystem *self)
{
ShellApp *app = key;
if (is_current_realm_context_app (app)) {
ret = g_slist_prepend (ret, app);
}
ret = g_slist_prepend (ret, app);
}
ret = g_slist_sort (ret, (GCompareFunc)shell_app_compare);
@ -631,16 +482,12 @@ 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) || !is_current_realm_app (*ids, current_realm))
if (!g_utf8_validate (*ids, -1, NULL))
**ids = '\0';
g_free (current_realm);
return results;
}
@ -657,7 +504,5 @@ shell_app_system_search (const char *search_string)
GList *
shell_app_system_get_installed (ShellAppSystem *self)
{
ShellAppSystemPrivate *priv = self->priv;
refresh_installed_apps (self);
return priv->installed_apps;
return shell_app_cache_get_all (shell_app_cache_get_default ());
}

View File

@ -20,11 +20,9 @@ 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 *realm_name);
const char *wmclass);
ShellApp *shell_app_system_lookup_desktop_wmclass (ShellAppSystem *system,
const char *wmclass,
const char *realm_name);
const char *wmclass);
GSList *shell_app_system_get_running (ShellAppSystem *self);
char ***shell_app_system_search (const char *search_string);

View File

@ -44,7 +44,6 @@
#include "shell-util.h"
#include "st.h"
#include "switcheroo-control.h"
#include "shell-realm-tracker.h"
static ShellGlobal *the_object = NULL;
@ -1069,8 +1068,6 @@ _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 *

View File

@ -1,396 +0,0 @@
#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));
}

View File

@ -1,35 +0,0 @@
#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__

View File

@ -1,310 +0,0 @@
#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);
}

View File

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

View File

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

View File

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

View File

@ -1,17 +0,0 @@
#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__

View File

@ -1,460 +0,0 @@
#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));
}

View File

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

View File

@ -15,7 +15,6 @@
#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
@ -130,22 +129,6 @@ 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:
*
@ -163,7 +146,6 @@ 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 ();
@ -172,8 +154,6 @@ 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.
@ -211,23 +191,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, realm_name);
app = shell_app_system_lookup_startup_wmclass (appsys, wm_instance);
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, realm_name);
app = shell_app_system_lookup_startup_wmclass (appsys, wm_class);
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, realm_name);
app = shell_app_system_lookup_desktop_wmclass (appsys, wm_instance);
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, realm_name);
app = shell_app_system_lookup_desktop_wmclass (appsys, wm_class);
if (app != NULL && check_app_id_prefix (app, app_prefix))
return g_object_ref (app);
@ -256,19 +236,7 @@ get_app_from_id (MetaWindow *window,
appsys = shell_app_system_get_default ();
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);
}
desktop_file = g_strconcat (id, ".desktop", NULL);
app = shell_app_system_lookup_app (appsys, desktop_file);
if (app)
return g_object_ref (app);

View File

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

View File

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

View File

@ -1,5 +1,5 @@
project('gnome-extensions-app',
version: '41.1',
version: '41.0',
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 = '/usr/bin/gjs'
gjs = find_program('gjs')
appstream_util = find_program('appstream-util', required: false)
desktop_file_validate = find_program('desktop-file-validate', required: false)

View File

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

View File

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