Compare commits

..

129 Commits

Author SHA1 Message Date
Alexander Mikhaylenko
35aa7998bc power: Ceil percentage when looking for icon
Use correct battery icon. For example, use battery-level-10-symbolic, with
a warning, on 1%-10% instead of 10%-19%.

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

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/726
2019-09-14 12:17:46 +05:00
Марко Костић
314a89a837 Update Serbian translation 2019-09-13 19:43:24 +00:00
Jonas Ådahl
57ed68541a environment: Disable fullscreen unredirect during all transitions
When there is a transition, it's likely that we are animating some part
of the desktop, and in such situations we don't want to unredirect
fullscreen windows.

This fixes unwanted unredirection when e.g. hiding a modal dialog by
re-enabling the unredirection after the animation has finished, instead
of when it starts.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/721
2019-09-13 16:10:17 +00:00
Georges Basile Stavracas Neto
413c677fcf iconGrid: Only animate visible icons
Mutter recently added an optimization to only allocate
visible children [1]. That broke ClutterClones, but it
was subsequently fixed [2].

However, that exposed a third problem, this time with
FrequentView: visible but transparent icons, that are
not allocated by the icon grid, were cloned and animated
during the spring animation.

Only animate visible icons with opacity greater than 0.

[1] https://gitlab.gnome.org/GNOME/mutter/commit/0eab73dc
[2] https://gitlab.gnome.org/GNOME/mutter/commit/08a3cbfc

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/696
2019-09-13 15:33:45 +00:00
Milo Casagrande
3d86e6e791 Update Italian translation 2019-09-13 12:55:53 +00:00
Daniel Mustieles
3fbd61cbf0 Updated Spanish translation 2019-09-13 08:27:06 +02:00
Georges Basile Stavracas Neto
43b4f2c7d5 lookingGlass: Only update window list when visible
Updating the window list in the Looking Glass is a costly
operation: it destroys a whole lot of actors, and recreates
them. This triggers CSS changes, repaints, and allocations.

It is specially bad when paired with Wayland's big number
of window creations and deletions when showing Builder's
and Epiphany's popup window.

Only update the window list in the Looking Glass when it is
visible.

Related: https://gitlab.gnome.org/GNOME/mutter/issues/556

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/719
2019-09-13 00:49:38 +00:00
Anders Jonsson
7eb4088f45 Update Swedish translation 2019-09-12 22:16:22 +00:00
Florian Müllner
f00201fa6c ci: Disable MR handling for now
We aren't quite ready to enforce non-legacy style for now, mostly due
to the xgettext bug that prevents us from using template strings in
some places, and vast amounts of legacy indentation.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/716
2019-09-12 23:18:27 +02:00
Florian Müllner
1aca2ba6bb ci: Disallow legacy style in merge requests
In order to transition from the current legacy style to the modern
gjs one, use the MR line-filtering we used to do on common errors
to ensure new code complies with the new style.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/716
2019-09-12 23:18:27 +02:00
Florian Müllner
e9131465dd ci: Fail on any common lint errors
Now that we fixed all pre-existing errors that are common between
regular and legacy configuration, we can stop filtering the result
by the lines modified by the merge request.

This will allow us to catch errors in merge requests that slipped
through until now, for example when leaving a newly-unused import
behind.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/716
2019-09-12 23:18:27 +02:00
Florian Müllner
0ee7f02f8e cleanup: Don't assume hasOwnProperty() method on objects
Since ES5, it is possible to create objects with no prototype at all:

    let foo = Object.create(null);

Those object won't have any builtin properties like hasOwnProperty(),
which is why eslint added a corresponding rule to its default rule set.

While this isn't an issue that affects our code, there's no harm in fol-
lowing the recommendation and call the method through Object.prototype.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/716
2019-09-12 23:18:27 +02:00
Florian Müllner
451f4e3636 cleanup: "Only" use two indentation styles for object literals
We currently use no less than three different ways of indenting
object literals:

    let obj1 = {
        foo: 42,
        bar: 23,
    };

    let obj2 = { foo: 42,
                 bar: 23 };

    let obj3 = { foo: 42,
                 bar: 23
               };

The first is the one we want to use everywhere eventually, while the
second is the most commonly used "legacy" style.

It is the third one that is most problematic, as it throws off eslint
fairly badly: It violates both the rule to have consistent line breaks
in braces as well as the indentation style of both regular and legacy
configurations.

Fortunately the third style was mostly used for tween parameters, so
is quite rare after the Tweener purge. Get rid of the remaining ones
to cut down on pre-existing eslint errors.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/716
2019-09-12 23:18:24 +02:00
Florian Müllner
2fc4987c73 cleanup: Stop using Mainloop module
It is deprecated in favor of the regular GLib functions.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/718
2019-09-12 19:09:24 +02:00
GB_2
4525ad346d windowMenu: Animate menu
Most menus have an animation, so add one to the window menu for
consistency and better looks (like !712).

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/717
2019-09-12 16:01:46 +00:00
Danial Behzadi
e4b8a4b432 Update Persian translation 2019-09-12 12:27:27 +00:00
Enrico Nicoletto
62e594af6d Update Brazilian Portuguese translation 2019-09-12 11:35:40 +00:00
Florian Müllner
ce92270626 extensionSystem: Add missing return value
_callExtensionInit() should return whether the extension was initialized
successfully or not, but the early return added in commit 2a9e065cfb
doesn't.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/715
2019-09-12 12:45:05 +02:00
Jonas Dreßler
bdcf3037ca extensionSystem: Always disable multiple extensions in reverse order
Since disabling an extension will lead to disabling and re-enabling all
following extensions in the list, always disable multiple extensions by
looping through the list in reverse order.

This lowers the execution time of the event handlers quite a bit if many
extensions are installed.

Thanks to Philippe Troin for identifying the problem and proposing the
initial patch to change the extension order when reloading.

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

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/96
2019-09-12 10:24:49 +00:00
Jonas Dreßler
9698ff491a extensionSystem: Only add to extensionOrder array if enabling worked
Only push uuids of newly enabled extensions to the `_extensionOrder`
array if enabling them was successful.

Otherwise, since `_callExtensionDisable()` doesn't remove uuids that
weren't successfully enabled from the array, those extensions get added
to the array multiple times when they're disabled and enabled.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/96
2019-09-12 10:24:49 +00:00
Jonas Dreßler
2a9e065cfb extensionSystem: Always enforce disallowing extensions using sessionMode
It's currently possible to circumvent the `sessionMode.allowExtensions`
property: For already enabled extensions one can call reloadExtension
via DBus, for new extensions it's possible by adding the extension to
the enabled-extensions gsettings key and setting the
disable-extension-version-validation key (which triggers a reload of
`this._enabledExtensions`) and then calling reloadExtension via DBus.

So to enforce `allowExtensions` while still allowing to update
extensions and keeping the extensionSystem synced with various gsettings
keys, replace the checks for `this._enabled` with simple checks for
`Main.sessionMode.allowExtensions` inside `_callExtensionInit()` and
`_callExtensionEnable()`.

The remaining checks for `this._enabled` are only small optimizations to
prevent running code on irrelevant sessionMode updates.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/96
2019-09-12 10:24:49 +00:00
Jonas Dreßler
4c93ef39fa extensionSystem: Handle added or removed sessionMode extensions
Right now we're only handling added sessionMode extensions correctly on
sessionMode updates, also handle the other case and disable removed
sessionMode extensions on sessionMode updates.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/96
2019-09-12 10:24:49 +00:00
Jonas Dreßler
22107c183b extensionSystem: Rename initted to initialized
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/96
2019-09-12 10:24:49 +00:00
Jonas Dreßler
c06eb5d0a7 extensionSystem: Log an extension error if loading the stylesheet failed
Instead of only logging a message that loading the extension stylesheet
failed and silently returning we should use `logExtensionError` for that
instead. This also sets the extension state to ERROR and makes sure we
don't try to enable it again.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/96
2019-09-12 10:24:49 +00:00
Jonas Dreßler
e76877c4b8 extensionSystem: Check if extension exists before accessing property
If the extension doesn't exist in the `this._extensions` Map, we'd try
to access `extension.dir` on undefined/null. So set the `dir` variable
after checking if `extension` is defined.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/96
2019-09-12 10:24:49 +00:00
Jonas Dreßler
2a32fb2e72 extensionSystem: Fix a wrong error message
The extension object is added to the `this._extensions` Map inside
`createExtensionObject`, not inside `loadExtension`.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/96
2019-09-12 10:24:49 +00:00
Jonas Dreßler
de86920e0e extensionSystem: Remove unncessary return statements
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/96
2019-09-12 10:24:49 +00:00
Jonas Dreßler
8754736fda extensionUtils: Check version variable for undefined first
Avoid a warning message when trying to access requiredArray[2] by
checking if its undefined first.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/96
2019-09-12 10:24:49 +00:00
Iain Lane
d2ead59d74 data: Lower TimeoutStartSec in systemd units
If there's a stubborn process in our cgroup, we shouldn't hang around
waiting for the default (30 seconds) before the session closes. We've
logged out, SIGTERMed and the thing is refusing to go away, let's not
make people hang around for ages.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/699
2019-09-12 08:16:10 +00:00
Emin Tufan Çetin
2f4fcc59a1 Update Turkish translation 2019-09-12 04:26:07 +00:00
Florian Müllner
ba6dbb228d workspace: Minor clarification
Code and comment were based on the old get_input_rect() and get_outer_rect()
method names that were changed to the more appropriate get_buffer_rect() and
get_frame_rect() a long time ago.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/713
2019-09-11 23:32:16 +00:00
Florian Müllner
60e386048b backgroundMenu: Animate menu opening
The animation was removed in commit 6a00a504d4 for consistency with
other menus. However commit a9b12d5d73 then *added* animations to
those just four minutes later.

So add back the original animations for consistency, both with menu
closing and with other menus.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1595
2019-09-11 23:25:21 +00:00
Christian Kirbach
c2904fa14d Update German translation 2019-09-11 21:14:44 +00:00
Florian Müllner
dfdb139d9c workspaceThumbnails: Replace loops with Array.find()
This is much more idiomatic and concise than iterating over
thumbnails until we find the one we are looking for.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/710
2019-09-11 20:59:31 +00:00
Florian Müllner
ce63d21dcc overview: Minor cleanup
Safe one indentation level by combining conditions.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/710
2019-09-11 20:59:31 +00:00
Florian Müllner
1da9937453 workspace: Use operator shorthand
Shorthands like a += b are well-established, so prefer them over the
less concise a = a + b.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/710
2019-09-11 20:59:31 +00:00
Florian Müllner
9f11fbad16 jsParse: Disambiguate regex
Make it clear that /= is part of a regex and not an operator shorthand.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/710
2019-09-11 20:59:31 +00:00
Florian Müllner
f54e7804c5 workspace: Don't initialize variables to undefined
The declaration itself already does this implicitly.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/710
2019-09-11 20:59:31 +00:00
Florian Müllner
7db5f8b28e calendar: Use template strings over concatenation
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/710
2019-09-11 20:59:31 +00:00
Florian Müllner
743ce23fbc util: Separate statements with linebreak
Our eslint rules will soon forbid more than one statement per line.
We already follow that rule except for one lone offender; fix that.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/710
2019-09-11 20:59:31 +00:00
Florian Müllner
a3267be192 network: Don't omit parens when constructing
While it is legal to omit parentheses when invoking a constructor
with no arguments, we generally avoid that in our coding style.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/710
2019-09-11 20:59:31 +00:00
Florian Müllner
4ad2523877 messageTray: Add missing linebreak
Methods should be separated by an empty lines, even when short.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/710
2019-09-11 20:59:31 +00:00
Florian Müllner
4bfee3a8ca ibusManager: Wrap line before dot
When chaining function calls, our coding style asks for the dot to
start the new line, not end the preceding one.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/710
2019-09-11 20:59:31 +00:00
Florian Müllner
fc964f975a kbdA11yDialog: Avoid unnecessary ternary operators
A condition is already boolean, there's no point in explicitly
turning it into true/false.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/710
2019-09-11 20:59:31 +00:00
Florian Müllner
52f85c9465 system: Properly separate statements
Whoops, that's some typo that sneaked into commit 9c3b3320f8 ...

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/710
2019-09-11 20:59:31 +00:00
Florian Müllner
691610f23c lookingGlass: Fix misleading typeof use
typeof is an operator, not a function. Putting unneeded parentheses
around the expression obfuscates that.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/710
2019-09-11 20:59:31 +00:00
Florian Müllner
b6a2b2b8a5 cleanup: Remove left-over imports
Unfortunately this slipped through our CI tests, as the script
filters errors by lines that are modified by the corresponding
merge request.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/710
2019-09-11 20:59:31 +00:00
Daniel Șerbănescu
1ad8a2fcf6 Update Romanian translation 2019-09-11 20:13:21 +00:00
Balázs Úr
7ce08845f1 Update Hungarian translation 2019-09-11 20:11:51 +00:00
Aurimas Černius
d469250130 Updated Lithuanian translation 2019-09-11 22:37:29 +03:00
Jordi Mas
7fd5c47e06 Update Catalan translation 2019-09-11 21:21:08 +02:00
Kukuh Syafaat
8704b1004e Update Indonesian translation 2019-09-11 18:31:47 +00:00
Piotr Drąg
65a9fb8c01 Update Polish translation 2019-09-11 19:22:04 +02:00
Florian Müllner
25a7a8006a gnome-extensions: Translate help command
The quotes and COMMAND string aren't part of the syntax, so they
should be translated.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1538
2019-09-11 17:09:30 +00:00
Marek Černocký
6fe1d3248a Updated Czech translation 2019-09-11 18:01:13 +02:00
Jonas Dreßler
13f97532bf overviewControls: Remove slide transitions before setting value manually
Remove transitions of the `slide-x` property of the layout manager
before we set the property to a fixed value, otherwise the transitions
might still be running and change the value after we set it.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/707
2019-09-11 11:39:44 +00:00
Anders Jonsson
1acee3d702 Update Swedish translation 2019-09-10 23:53:06 +00:00
Marco Trevisan (Treviño)
1d17404471 selectArea: Ignore motion events once we got a result
When selecting an area for screenshot we monitor the events while we've valid
coordinates in order to redraw the rubber band.
However, we don't stop ignore the motion events after button release and so
while animating. This might cause an unwanted effect if moving the mouse away
during fade out that is way more visible slowing-down the animations.

To fix this ignore any motion event once we've set the results.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/711
2019-09-10 22:08:25 +02:00
Florian Müllner
48b860b69f ci: Turn on -Werror
Now that all compiler warnings are fixed, let's try to keep it that
way by making warnings fatal during CI.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/709
2019-09-10 17:51:02 +00:00
Florian Müllner
a030c54661 shell: Replace another GTimeVal
This slipped through in commit 9b7f228f8e.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/709
2019-09-10 17:51:02 +00:00
Florian Müllner
dcf7bae6c7 calendar-server: Temporarily ignore all deprecations in eds includes
Evolution draws in libsoup, which exposes deprecated types in its
API. While its headers have been fixed to guard the affected symbols,
those fixes aren't in our CI images yet.

Until we get a fixed version, just disable all deprecation warnings
during the include in order to not trip over "foreign" bugs.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/709
2019-09-10 17:51:02 +00:00
Florian Müllner
d0ace108e5 calendar-server: Disable deprecated e-d-s API
We aren't using any deprecated evolution-data-server API, so we can
turn it off; this avoids compiler warnings for glib deprecations
used by those functions, which makes it harder to spot warnings for
our own code base.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/709
2019-09-10 17:51:02 +00:00
Florian Müllner
32d5744014 build: Exclude private headers from GIR
They contain API that is explicitly not meant to be used externally
and - as it uses the "wrong" namespace due to the _ prefix - doesn't
end up in the introspection data anyway.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/709
2019-09-10 17:51:02 +00:00
Florian Müllner
d16094774b build: Remove st-private.h from "public" headers
It is currently listed both as public and private header, which is
clearly bonkers. As the name implies, the latter is correct ...

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/709
2019-09-10 17:51:02 +00:00
Piotr Drąg
ac664ba321 Update Polish translation 2019-09-10 17:58:11 +02:00
Florian Müllner
0888a9bffd environment: Skip property animations while hidden
For implicit animations, Clutter will skip any transitions while
an actor is unmapped, and just set the property directly. Do the
same in our ease_property() convencience method.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/708
2019-09-10 14:41:26 +00:00
Daniel Mustieles
5e82d72424 Updated Spanish translation 2019-09-10 15:56:03 +02:00
Jiri Grönroos
2513835e89 Update Finnish translation 2019-09-10 11:11:21 +00:00
Kukuh Syafaat
98b70ef00f Update Indonesian translation 2019-09-10 07:12:48 +00:00
Daniel Șerbănescu
ae11381b88 Update Romanian translation 2019-09-10 06:48:29 +00:00
Milo Casagrande
e9596f2775 Update Italian translation 2019-09-10 06:47:05 +00:00
Balázs Úr
8adbc8010a Update Hungarian translation 2019-09-10 04:40:55 +00:00
Fran Dieguez
76fb559964 Update Galician translation 2019-09-09 22:45:51 +00:00
Rafael Fontenelle
1bc1b4d9d8 Update Brazilian Portuguese translation 2019-09-09 22:44:55 +00:00
Georges Basile Stavracas Neto
dfc0ef56f6 appDisplay: Allow editing folder names
Add a new popover with a regular entry + button to rename
folders. The layout is similar to other GNOME applications.

The popup is implemented as a PopupMenu subclass, leaving
the grab management to PopupMenuManager.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/675
2019-09-09 22:15:49 +02:00
Jonas Dreßler
1e68e78d8e extensionPrefs: Block notify::active signal handler while updating state
We disable and enable extensions inside the `notify::active` signal
handler, but we shouldn't do that in case the change didn't come from
the user but because something else changed the state of the extension.

This causes an issue when the extensionPrefs window is open and the
session gets locked: The extensions are temporarily disabled by the
shell, extensionPrefs updates its switches on the state change and adds
those extensions to the `disabled-extensions` gsettings key inside the
signal handler. Now when the session is unlocked again, the extensions
won't be enabled again since they're forced-disabled.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/705
2019-09-09 19:50:31 +00:00
Jonas Dreßler
17fa5a2db4 extensionPrefs: Connect to ExtensionStateChanged after building UI
Since we manipulate parts of the UI (like the switch) in this signal
handler, let's only connect it after setting up the UI.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/705
2019-09-09 19:50:31 +00:00
Jonas Dreßler
004a5e1042 iconGrid: Queue a relayout after child opacity changes
We're using a vfunc override for `get_paint_volume` to exclude children
with an opacity of 0 from the paint volume and thus decrease the size of
the area we need to paint.

Now if the paint volume is requested during the spring animation (the
real icons are hidden using an opacity of 0 and clones are used for the
animation), `get_paint_volume` returns a paint volume with a height of
0. After that, the spring animation finishes and the icon-opacities are
set to 255 in `_resetAnimationActors`, and since we cache paint volumes
and there's no reason for Clutter to assume it got invalid, the icons
end up not being painted.

Fix this by queuing a relayout of the grid when the opacity of a child
is changed from or to 0, which manually invalidates the paint volume.

The reason why this is not an issue with the paginated icon grid
(all-apps view) is probably because StScrollView invalidates the paint
volume a lot more often than regular containers.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/1502
2019-09-09 19:39:28 +00:00
Jonas Dreßler
4915a9e8e4 iconGrid: Delete private child property when removing child
Delete a private property we set when the child got added to make sure
the reference is deleted after the child got removed from the grid.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/704
2019-09-09 19:39:28 +00:00
Marco Trevisan (Treviño)
8a7e44ccf0 extensionSystem: Use logError to record extension errors with stack trace
Extensions might emit JS errors explicitly or implicitly, however GNOME
Shell doesn't present any stack trace for those making them quite hard
to debug.

Make this easier by logging errors with logError() whichs includes the
stack dump.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:19 +00:00
Marco Trevisan (Treviño)
a497afe695 system: Track buttonGroup visibility using a group of actors
Cleanup the visibility check on actions by using an array of actors to
track, so that we don't repeat the same variables multiple times.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:19 +00:00
Marco Trevisan (Treviño)
15c252c11d popupMenu: Remove extra parameter on boolean ParamSpec initialization
PopupBaseMenuItem properties were initialized using wrong param spec
signature, fix this by removing the extra parameter.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Marco Trevisan (Treviño)
27da3ed1fe calendar: Use binding for clearButton visibility
When the calendar PlaceHolder is visible, the ClearButton shouldn't
be. Instead of setting the visibility explicitly, we can use a property
binding.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Marco Trevisan (Treviño)
8656102182 workspacesDisplay: Disconnect MetaLater and parent signals on destroy
When the WorkspacesDisplay actor is destroyed we should remove the
ongoing later and parent widget connections to avoid accessing an
invalid object on callback.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Marco Trevisan (Treviño)
24d3744cb9 workspace: Don't use clones' delegate to check children
The WindowClones are now themselves actors, so we can just check for
their type instead of checking for the delegate.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Marco Trevisan (Treviño)
031913b9df workspace: Use Workspace prefix for WindowClone class
We have both Workspace's WindowClone and workspaceThumbnail's WindowClone,
so better to be clear about them using a class prefix.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Marco Trevisan (Treviño)
e53443daf9 workspace: Remove Long-press later with the actor
Ensure that the long-press later is removed with the actor, otherwise
it will try to use invalidated data.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Marco Trevisan (Treviño)
06317f4f6a status/keyboard: Make Input source types var
These are used by keyboard so they need to be readable outside the
status.keyboard module.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Marco Trevisan (Treviño)
c69e195441 search: Remove updateSearch later on destruction
When the GridSearchBase actor is destroyed we should remove the
ongoing later that might try to access to invalid resources.

To do this, add an _onDestroy() callback function to SearchResultsBase
and override it in GridSearchBase.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Marco Trevisan (Treviño)
a53b48de4c locatePointer: Bind ripples creation to settings
Don't create ripples if locate pointer is not enabled, and bind
creation to the relative desktop interface settings key.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Marco Trevisan (Treviño)
eca98aee42 ripples: Add destroy() method and remove them when unneeded
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Marco Trevisan (Treviño)
ea5aaa8ab2 realmd: Set login format to null on start and update if invalid
We were checking an undefined property but that would lead to a a warning.
Instead we can consider the login format unset until is null, and in case
update it.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Marco Trevisan (Treviño)
72566eda43 messageTray: Remove unused source object parameter
This is has been added in commit b150869b5 but is never used

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Marco Trevisan (Treviño)
7a4f9a5ff3 keyboard: Treat menu items as actors
This is a leftover of GNOME/gnome-shell!499, since menu items are all
actors now, we can just avoid using the actor property when adding an
action item.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Marco Trevisan (Treviño)
ba23fd9989 lookingGlass: Throw a clearer error on referencing invalid result index
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Marco Trevisan (Treviño)
c101196f5b lightbox: Use common ease parameters and avoid similar codepaths
Easing calls on show/hide functions have some parameters in common whether the
radial effect is enabled or not.

So instead of doing repeated calls with similar parameters, initialize common
values in params objects.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Marco Trevisan (Treviño)
1687a5451e altTab: use AltTab prefix on AppIcon class
There's an AppIcon class on appDisplay, so it won't be easy to discern
the one we're going to add in altTab.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Marco Trevisan (Treviño)
ea4d5f89eb animation: Stop the animation before removing all the children
If the resource scale or the scale factor changes while the animation
is playing, we need to stop the animation and start it again once the
texture is loaded, as the idle might try to access an invalidated
animation child otherwise.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
2019-09-09 19:28:18 +00:00
Florian Müllner
9e388ebcfd Bump version to 3.34.0
Update NEWS.
2019-09-09 19:21:11 +00:00
Carlos Garnacho
8d9cae45f9 st-clipboard: Add trailing 0 to pasted text
We translate the raw stream content far too directly into a char*,
it notably forgets that the stream does not have nul-ended data,
this means we are potentially adding garbage after the pasted content.

Tentatively fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/1570
2019-09-09 19:04:31 +00:00
Claude Paroz
406d0900a7 Update French translation 2019-09-08 15:44:41 +00:00
Balázs Meskó
cf611d2be8 Update Hungarian translation 2019-09-07 18:25:17 +00:00
Dušan Kazik
7875fc831b Update Slovak translation 2019-09-07 14:20:05 +00:00
Sabri Ünal
44bca36385 Update Turkish translation 2019-09-07 07:16:54 +00:00
Carmen Bianca BAKKER
e2c3198627 Update Esperanto translation 2019-09-06 23:22:30 +00:00
Efstathios Iosifidis
8b549f3d5b Update Greek translation 2019-09-06 21:05:07 +00:00
Ryuta Fujii
a0e3c342a6 Update Japanese translation 2019-09-06 13:58:48 +00:00
Ryuta Fujii
a80331dbcf Update Japanese translation 2019-09-06 13:52:41 +00:00
Milo Casagrande
0068dab001 Update Italian translation 2019-09-06 08:41:20 +00:00
Tom Tryfonidis
7d42990462 Update Greek translation 2019-09-05 16:30:45 +00:00
Iain Lane
e6dec7a9dd volume: Ignore slider changes we initiated ourselves
Commit 21e14bd46f fixed this for the
brightness slider, but we have the same problem for volume too. When the
volume is muted - for example in Settings or via a media key, we update
the slider to '0' to indicate this visually. But we also actually invoke
the slider's callback to *set* the volume to zero. That means that the
previous level is overwritten so it can't be restored when unmuting.

The fix is the same - when we update the slider internally ourselves,
don't call the signal handler.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1557
2019-09-05 11:30:33 +01:00
Carlos Garnacho
8adfc5b106 windowManager: Handle starting/stopping of X11 services
We now do 2 things along Xwayland startup/shutdown:
- Start or stop the gnome-session-x11-services target, that will
  pull all X11 related services that the session might depend on.
- As we start ibus-daemon manually, trigger a restart in order to
  toggle the XIM daemon on and off along with Xwayland presence.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/680
2019-09-05 07:42:46 +00:00
Carlos Garnacho
8be95b5785 ibusManager: Add call to restart the ibus daemon
We may need to restart it with different arguments, so make it
possible to do that. Also, avoid to just restart it on _clear(),
this is now most likely through our --replace call than it is
through ibus-daemon eg. dying, avoids some noise in logs as
there is already an ongoing ibus-daemon.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/680
2019-09-05 07:42:46 +00:00
Carlos Garnacho
9194de8460 shell: Add helpers to start/stop systemd units
These just send the respective DBus message to the systemd user service.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/680
2019-09-05 07:42:46 +00:00
Florian Müllner
6dccbc5a90 Bump version to 3.33.92
Update NEWS.
2019-09-04 20:54:34 +02:00
Rafael Fontenelle
efba1e83c7 Update Brazilian Portuguese translation 2019-09-03 19:36:12 +00:00
Goran Vidović
d1442765a6 Update Croatian translation 2019-09-03 15:48:10 +00:00
Kukuh Syafaat
72e5caf6e1 Update Indonesian translation 2019-09-03 12:19:11 +00:00
Florian Müllner
3768b6b701 keyboard: Fix EmojiSelection:delta range
The setter clamps the values to the range (-width, width), so we
must not limit the property to positive values.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/698
2019-09-03 03:20:17 +02:00
Will Thompson
e5cde4700f notificationDaemon: Catch exceptions while loading notifications
An Endless OS system was found in the wild with a malformed
.local/share/gnome-shell/notifications which causes _loadNotifications()
to raise an exception. This exception was not previously handled and
bubbles all the way out to gnome_shell_plugin_start(), whereupon the
shell exit(1)s. The user could no longer log into their computer.

Handle exceptions from _loadNotifications(), log them, and attempt to
continue. Ensure that this._isLoading is set to 'false' even on error,
so that future calls to _saveNotifications() can overwrite the (corrupt)
state file.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1552
2019-09-03 01:00:50 +00:00
Will Thompson
a207f67f73 global: Don't trust persistent/runtime state data
An Endless OS system was found in the wild with a malformed
.local/share/gnome-shell/notifications. When deserialized in Python,
after passing trusted=True to g_variant_new_from_bytes(), the first
element of the first struct in the array looks like this:

    In [41]: _38.get_child_value(0).get_child_value(0)
    Out[41]: GLib.Variant('s', '\Uffffffff\Uffffffff\Uffffffff\Uffffffff\Uffffffff')

When deserialised in GJS, we get:

    gjs> v.get_child_value(0).get_child_value(0)
    [object variant of type "s"]
    gjs> v.get_child_value(0).get_child_value(0).get_string()
    typein:43:1 malformed UTF-8 character sequence at offset 0
      @typein:43:1
      @<stdin>:1:34

While g_variant_new_from_bytes() doesn't have much to say about its
'trusted' parameter, g_variant_new_from_data() does:

> If data is trusted to be serialised data in normal form then trusted
> should be TRUE. This applies to serialised data created within this
> process or read from a trusted location on the disk (such as a file
> installed in /usr/lib alongside your application). You should set
> trusted to FALSE if data is read from the network, a file in the
> user's home directory, etc.

Persistent state is read from the user's home directory, so it should
not be trusted. With trusted=False, the string value above comes out as
"".

I don't have an explanation for how this file ended up being malformed.
I also don't have an explanation for when this started crashing: my
guess is that recent GJS became stricter about validating UTF-8 but I
could be wrong!

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1552
2019-09-03 01:00:50 +00:00
Jonas Ådahl
b73aace476 shell: Get cairo surface via window actor
Instead of going via the MetaShapedTexture to get the cairo surface, get
it from the window actor. The window actor can then handle this in a way
that makes it include potential subsurfaces.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/692
2019-09-02 16:53:55 +00:00
Marek Černocký
346d37ecbb Updated Czech translation 2019-09-02 08:53:00 +02:00
Daniel Rusek
7bb29817f7 Update Czech translation 2019-09-01 21:21:10 +00:00
Aurimas Černius
92b92a2e0a Updated Lithuanian translation 2019-09-01 22:32:34 +03:00
Jordi Mas
8e79f9f2dc Update Catalan translation 2019-09-01 16:37:08 +02:00
Jonas Dreßler
05b345cc92 endSessionDialog: Initialize Polkit permission asynchronously
The updatesPermission is currently initialized synchronously, which
blocks the Mainloop for quite some time and therefore slows down startup
of the shell, let's do it asynchronously instead.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/689
2019-09-01 12:45:49 +02:00
Changwoo Ryu
89f9925208 Update Korean translation 2019-09-01 09:00:28 +00:00
A S Alam
fcc1d7beff Update Punjabi translation 2019-08-31 13:45:30 +00:00
112 changed files with 13740 additions and 7194 deletions

View File

@@ -54,7 +54,7 @@ build:
- meson mutter mutter/build --prefix=/usr -Dtests=false - meson mutter mutter/build --prefix=/usr -Dtests=false
- ninja -C mutter/build install - ninja -C mutter/build install
script: script:
- meson . build -Dbuiltype=debugoptimized -Dman=false - meson . build -Dbuiltype=debugoptimized -Dman=false --werror
- ninja -C build - ninja -C build
- ninja -C build install - ninja -C build install
<<: *only_default <<: *only_default

View File

@@ -66,6 +66,10 @@ create_common() {
rm $OUTPUT_FINAL.tmp rm $OUTPUT_FINAL.tmp
} }
# Disable MR handling for now. We aren't ready to enforce
# non-legacy style just yet ...
unset CI_MERGE_REQUEST_TARGET_BRANCH_NAME
if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then
git fetch $CI_MERGE_REQUEST_PROJECT_URL.git $CI_MERGE_REQUEST_TARGET_BRANCH_NAME git fetch $CI_MERGE_REQUEST_PROJECT_URL.git $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
branch_point=$(git merge-base HEAD FETCH_HEAD) branch_point=$(git merge-base HEAD FETCH_HEAD)
@@ -86,12 +90,16 @@ run_eslint LEGACY
echo Done. echo Done.
create_common create_common
if ! is_empty $OUTPUT_FINAL; then
cat $OUTPUT_FINAL
exit 1
fi
# Just show the report and succeed when not testing a MR # Just show the report and succeed when not testing a MR
if [ -z "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then if [ -z "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then
cat $OUTPUT_FINAL
exit 0 exit 0
fi fi
copy_matched_lines $OUTPUT_FINAL $LINE_CHANGES $OUTPUT_MR copy_matched_lines $OUTPUT_REGULAR $LINE_CHANGES $OUTPUT_MR
cat $OUTPUT_MR cat $OUTPUT_MR
is_empty $OUTPUT_MR is_empty $OUTPUT_MR

34
NEWS
View File

@@ -1,3 +1,37 @@
3.34.0
======
* Handle startup/shutdown of misc X11 services [Carlos; !680]
* Fix sound volume mute/unmute [Iain; #1557]
* Correctly terminate pasted text [Carlos; #1570]
Contributors:
Carlos Garnacho, Iain Lane
Translators:
Tom Tryfonidis [el], Milo Casagrande [it], Ryuta Fujii [ja],
Efstathios Iosifidis [el], Carmen Bianca BAKKER [eo], Sabri Ünal [tr],
Dušan Kazik [sk], Balázs Meskó [hu], Claude Paroz [fr]
3.33.92
=======
* Animate pointer a11y pie timer [Jonas D.; !688]
* Fix restarting shell in systemd user session [Benjamin; !690]
* Misc. bug fixes and cleanups [Florian, Jonas D., Jonas Å., Will;
!691, !689, !692, #1552, !698]
Contributors:
Jonas Ådahl, Benjamin Berg, Piotr Drąg, Jonas Dreßler, Florian Müllner,
Will Thompson
Translators:
Daniel Șerbănescu [ro], Danial Behzadi [fa], Daniel Mustieles [es],
Jiri Grönroos [fi], Asier Sarasua Garmendia [eu], Piotr Drąg [pl],
Rūdolfs Mazurs [lv], Anders Jonsson [sv], Fran Dieguez [gl], Jordi Mas [ca],
Matej Urbančič [sl], Zander Brown [en_GB], Ryuta Fujii [ja], Tim Sabsch [de],
Fabio Tomat [fur], Pawan Chitrakar [ne], A S Alam [pa], Changwoo Ryu [ko],
Aurimas Černius [lt], Daniel Rusek [cs], Marek Černocký [cs],
Kukuh Syafaat [id], Goran Vidović [hr], Rafael Fontenelle [pt_BR]
3.33.91 3.33.91
======= =======
* Fix regression when adjusting brightness [Florian; #1500] * Fix regression when adjusting brightness [Florian; #1500]

View File

@@ -1,12 +0,0 @@
[Desktop Entry]
Type=Application
Name=GNOME Shell Extensions Disabled Warning
Comment=Warning shown if extensions were disabled due to a failure
Exec=@bindir@/gnome-shell-extension-prefs --disabled-warning
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gnome-shell
X-GNOME-Bugzilla-Component=general
X-GNOME-Bugzilla-Version=@VERSION@
OnlyShowIn=GNOME;
AutostartCondition=if-exists gnome-shell-extensions-disabled-warning
X-GNOME-HiddenUnderSystemd=@systemd_hidden@

View File

@@ -1,13 +0,0 @@
[Unit]
Description=Warn about GNOME Shell extensions being disabled
ConditionPathExists=%E/gnome-shell-extensions-disabled-warning
Requisite=gnome-session.target
After=gnome-session.target
[Service]
Type=simple
ExecStartPre=-/bin/rm %E/gnome-shell-extensions-disabled-warning
ExecStart=@bindir@/gnome-shell-extension-prefs --disabled-warning
Restart=no

View File

@@ -23,3 +23,5 @@ ExecStart=@bindir@/gnome-shell
SuccessExitStatus=1 SuccessExitStatus=1
# On wayland we cannot restart # On wayland we cannot restart
Restart=no Restart=no
# Kill any stubborn child processes after this long
TimeoutStopSec=5

View File

@@ -8,5 +8,3 @@ Before=gnome-session-initialized.target
Requires=gnome-shell-wayland.service Requires=gnome-shell-wayland.service
After=gnome-shell-wayland.service After=gnome-shell-wayland.service
Wants=gnome-shell-extensions-disabled-warning.service

View File

@@ -29,3 +29,5 @@ SuccessExitStatus=1
Restart=always Restart=always
# Do not wait before restarting the shell # Do not wait before restarting the shell
RestartSec=0ms RestartSec=0ms
# Kill any stubborn child processes after this long
TimeoutStopSec=5

View File

@@ -8,5 +8,3 @@ Before=gnome-session-initialized.target
Requires=gnome-shell-x11.service Requires=gnome-shell-x11.service
After=gnome-shell-x11.service After=gnome-shell-x11.service
Wants=gnome-shell-extensions-disabled-warning.service

View File

@@ -31,19 +31,6 @@ foreach desktop_file : desktop_files
) )
endforeach endforeach
i18n.merge_file('desktop',
input: configure_file(
input: 'gnome-shell-extensions-disabled-warning.desktop.in.in',
output: 'gnome-shell-extensions-disabled-warning.desktop.in',
configuration: desktopconf
),
output: 'gnome-shell-extension-disabled-warning.desktop',
po_dir: po_dir,
install: true,
install_dir: autostartdir,
type: 'desktop'
)
serviceconf = configuration_data() serviceconf = configuration_data()
serviceconf.set('libexecdir', libexecdir) serviceconf.set('libexecdir', libexecdir)
foreach service_file : service_files foreach service_file : service_files

View File

@@ -611,6 +611,14 @@ StScrollBar {
} }
// Rename popup
.rename-folder-popup-box {
spacing: 6px;
margin-left: 12px;
margin-right: 12px;
}
// Background menu // Background menu
.background-menu { -boxpointer-gap: 4px; -arrow-rise: 0px; } .background-menu { -boxpointer-gap: 4px; -arrow-rise: 0px; }

View File

@@ -10,7 +10,7 @@ const _ = Gettext.gettext;
const Config = imports.misc.config; const Config = imports.misc.config;
const ExtensionUtils = imports.misc.extensionUtils; const ExtensionUtils = imports.misc.extensionUtils;
const { loadInterfaceXML, deleteGFile } = imports.misc.fileUtils; const { loadInterfaceXML } = imports.misc.fileUtils;
const { ExtensionState } = ExtensionUtils; const { ExtensionState } = ExtensionUtils;
@@ -219,33 +219,10 @@ var Application = GObject.registerClass({
Gio.SettingsBindFlags.DEFAULT | Gio.SettingsBindFlags.DEFAULT |
Gio.SettingsBindFlags.INVERT_BOOLEAN); Gio.SettingsBindFlags.INVERT_BOOLEAN);
let vbox = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL });
this._window.add(vbox);
this.disabledInfobar = new Gtk.InfoBar({
message_type: Gtk.MessageType.ERROR,
revealed: false,
show_close_button: true
});
this.disabledInfobar.connect('response', () => {
this.disabledInfobar.revealed = false;
});
let contentArea = this.disabledInfobar.get_content_area();
let label = new Gtk.Label({
label: _('A problem was detected and extensions were automatically disabled. It is recommended to disable or reconfigure any extensions that may have caused the issue before re-enabling them at the top.'),
ellipsize: Pango.EllipsizeMode.END,
wrap: true,
lines: 2,
xalign: 0,
margin: 6
});
contentArea.add(label);
vbox.add(this.disabledInfobar);
this._mainStack = new Gtk.Stack({ this._mainStack = new Gtk.Stack({
transition_type: Gtk.StackTransitionType.CROSSFADE transition_type: Gtk.StackTransitionType.CROSSFADE
}); });
vbox.add(this._mainStack); this._window.add(this._mainStack);
let scroll = new Gtk.ScrolledWindow({ hscrollbar_policy: Gtk.PolicyType.NEVER }); let scroll = new Gtk.ScrolledWindow({ hscrollbar_policy: Gtk.PolicyType.NEVER });
@@ -361,20 +338,6 @@ var Application = GObject.registerClass({
let args = commandLine.get_arguments(); let args = commandLine.get_arguments();
if (args.length) { if (args.length) {
if (args[0] == '--disabled-warning') {
if (!this._settings.is_writable('disable-user-extensions'))
this.quit();
this.disabledInfobar.set_revealed(true);
let file = GLib.build_filenamev ([GLib.get_user_config_dir(), 'gnome-shell-extensions-disabled-warning']);
let gfile = Gio.File.new_for_path(file);
if (gfile.query_exists(null))
deleteGFile(gfile);
return 0;
}
let uuid = args[0]; let uuid = args[0];
this._skipMainWindow = true; this._skipMainWindow = true;
@@ -604,6 +567,10 @@ class ExtensionRow extends Gtk.ListBoxRow {
this._extension = extension; this._extension = extension;
this._prefsModule = null; this._prefsModule = null;
this.connect('destroy', this._onDestroy.bind(this));
this._buildUI();
this._extensionStateChangedId = this._app.shellProxy.connectSignal( this._extensionStateChangedId = this._app.shellProxy.connectSignal(
'ExtensionStateChanged', (p, sender, [uuid, newState]) => { 'ExtensionStateChanged', (p, sender, [uuid, newState]) => {
if (this.uuid !== uuid) if (this.uuid !== uuid)
@@ -611,16 +578,13 @@ class ExtensionRow extends Gtk.ListBoxRow {
this._extension = ExtensionUtils.deserializeExtension(newState); this._extension = ExtensionUtils.deserializeExtension(newState);
let state = (this._extension.state == ExtensionState.ENABLED); let state = (this._extension.state == ExtensionState.ENABLED);
this._switch.freeze_notify();
GObject.signal_handler_block(this._switch, this._notifyActiveId);
this._switch.state = state; this._switch.state = state;
this._switch.active = this._extension.isRequested; GObject.signal_handler_unblock(this._switch, this._notifyActiveId);
this._switch.sensitive = this._canToggle(); this._switch.sensitive = this._canToggle();
this._switch.thaw_notify();
}); });
this.connect('destroy', this._onDestroy.bind(this));
this._buildUI();
} }
get uuid() { get uuid() {
@@ -684,19 +648,15 @@ class ExtensionRow extends Gtk.ListBoxRow {
this._switch = new Gtk.Switch({ this._switch = new Gtk.Switch({
valign: Gtk.Align.CENTER, valign: Gtk.Align.CENTER,
sensitive: this._canToggle(), sensitive: this._canToggle(),
state: this._extension.state === ExtensionState.ENABLED
}); });
this._switch.connect('notify::active', () => { this._notifyActiveId = this._switch.connect('notify::active', () => {
if (this._switch.active) if (this._switch.active)
this._app.shellProxy.EnableExtensionRemote(this.uuid); this._app.shellProxy.EnableExtensionRemote(this.uuid);
else else
this._app.shellProxy.DisableExtensionRemote(this.uuid); this._app.shellProxy.DisableExtensionRemote(this.uuid);
}); });
this._switch.connect('state-set', () => true); this._switch.connect('state-set', () => true);
this._switch.freeze_notify();
this._switch.state = this._extension.state === ExtensionState.ENABLED;
this._switch.active = this._extension.isRequested;
this._switch.thaw_notify();
hbox.add(this._switch); hbox.add(this._switch);
} }

View File

@@ -21,6 +21,7 @@ var Manager = class {
'/org/freedesktop/realmd', '/org/freedesktop/realmd',
this._reloadRealms.bind(this)); this._reloadRealms.bind(this));
this._realms = {}; this._realms = {};
this._loginFormat = null;
this._signalId = this._aggregateProvider.connect('g-properties-changed', this._signalId = this._aggregateProvider.connect('g-properties-changed',
(proxy, properties) => { (proxy, properties) => {
@@ -86,7 +87,7 @@ var Manager = class {
} }
get loginFormat() { get loginFormat() {
if (this._loginFormat !== undefined) if (this._loginFormat)
return this._loginFormat; return this._loginFormat;
this._updateLoginFormat(); this._updateLoginFormat();

View File

@@ -31,7 +31,7 @@ var ExtensionState = {
UNINSTALLED: 99 UNINSTALLED: 99
}; };
const SERIALIZED_PROPERTIES = ['type', 'state', 'path', 'error', 'hasPrefs', 'canChange', 'isRequested']; const SERIALIZED_PROPERTIES = ['type', 'state', 'path', 'error', 'hasPrefs', 'canChange'];
/** /**
* getCurrentExtension: * getCurrentExtension:
@@ -165,8 +165,8 @@ function versionCheck(required, current) {
let requiredArray = required[i].split('.'); let requiredArray = required[i].split('.');
if (requiredArray[0] == major && if (requiredArray[0] == major &&
requiredArray[1] == minor && requiredArray[1] == minor &&
(requiredArray[2] == point || ((requiredArray[2] === undefined && parseInt(minor) % 2 == 0) ||
(requiredArray[2] == undefined && parseInt(minor) % 2 == 0))) requiredArray[2] == point))
return true; return true;
} }
return false; return false;

View File

@@ -2,7 +2,6 @@
/* exported getIBusManager */ /* exported getIBusManager */
const { Gio, GLib, IBus } = imports.gi; const { Gio, GLib, IBus } = imports.gi;
const Mainloop = imports.mainloop;
const Signals = imports.signals; const Signals = imports.signals;
const IBusCandidatePopup = imports.ui.ibusCandidatePopup; const IBusCandidatePopup = imports.ui.ibusCandidatePopup;
@@ -19,9 +18,9 @@ function _checkIBusVersion(requiredMajor, requiredMinor, requiredMicro) {
IBus.MICRO_VERSION >= requiredMicro)) IBus.MICRO_VERSION >= requiredMicro))
return; return;
throw "Found IBus version %d.%d.%d but required is %d.%d.%d". throw "Found IBus version %d.%d.%d but required is %d.%d.%d"
format(IBus.MAJOR_VERSION, IBus.MINOR_VERSION, IBus.MINOR_VERSION, .format(IBus.MAJOR_VERSION, IBus.MINOR_VERSION, IBus.MINOR_VERSION,
requiredMajor, requiredMinor, requiredMicro); requiredMajor, requiredMinor, requiredMicro);
} }
function getIBusManager() { function getIBusManager() {
@@ -59,15 +58,19 @@ var IBusManager = class {
this._spawn(); this._spawn();
} }
_spawn() { _spawn(extraArgs = []) {
try { try {
Gio.Subprocess.new(['ibus-daemon', '--xim', '--panel', 'disable'], let cmdLine = ['ibus-daemon', '--panel', 'disable', ...extraArgs];
Gio.SubprocessFlags.NONE); Gio.Subprocess.new(cmdLine, Gio.SubprocessFlags.NONE);
} catch (e) { } catch (e) {
log(`Failed to launch ibus-daemon: ${e.message}`); log(`Failed to launch ibus-daemon: ${e.message}`);
} }
} }
restartDaemon(extraArgs = []) {
this._spawn(['-r', ...extraArgs]);
}
_clear() { _clear() {
if (this._panelService) if (this._panelService)
this._panelService.destroy(); this._panelService.destroy();
@@ -80,8 +83,6 @@ var IBusManager = class {
this._currentEngineName = null; this._currentEngineName = null;
this.emit('ready', false); this.emit('ready', false);
this._spawn();
} }
_onConnected() { _onConnected() {
@@ -214,21 +215,23 @@ var IBusManager = class {
return; return;
if (this._preloadEnginesId != 0) { if (this._preloadEnginesId != 0) {
Mainloop.source_remove(this._preloadEnginesId); GLib.source_remove(this._preloadEnginesId);
this._preloadEnginesId = 0; this._preloadEnginesId = 0;
} }
this._preloadEnginesId = this._preloadEnginesId =
Mainloop.timeout_add_seconds(this._PRELOAD_ENGINES_DELAY_TIME, GLib.timeout_add_seconds(
() => { GLib.PRIORITY_DEFAULT,
this._ibus.preload_engines_async( this._PRELOAD_ENGINES_DELAY_TIME,
ids, () => {
-1, this._ibus.preload_engines_async(
null, ids,
null); -1,
this._preloadEnginesId = 0; null,
return GLib.SOURCE_REMOVE; null);
}); this._preloadEnginesId = 0;
return GLib.SOURCE_REMOVE;
});
} }
}; };
Signals.addSignalMethods(IBusManager.prototype); Signals.addSignalMethods(IBusManager.prototype);

View File

@@ -217,7 +217,7 @@ function isUnsafeExpression(str) {
prunedStr = prunedStr.replace(/[=!]==/g, ''); //replace === and !== with nothing prunedStr = prunedStr.replace(/[=!]==/g, ''); //replace === and !== with nothing
prunedStr = prunedStr.replace(/[=<>!]=/g, ''); //replace ==, <=, >=, != with nothing prunedStr = prunedStr.replace(/[=<>!]=/g, ''); //replace ==, <=, >=, != with nothing
if (prunedStr.match(/=/)) { if (prunedStr.match(/[=]/)) {
return true; return true;
} else if (prunedStr.match(/;/)) { } else if (prunedStr.match(/;/)) {
// If we contain a semicolon not inside of a quote/regex, assume we're unsafe as well // If we contain a semicolon not inside of a quote/regex, assume we're unsafe as well

View File

@@ -5,7 +5,6 @@
const { Clutter, Gio, GLib, GObject, Shell, St } = imports.gi; const { Clutter, Gio, GLib, GObject, Shell, St } = imports.gi;
const Gettext = imports.gettext; const Gettext = imports.gettext;
const Mainloop = imports.mainloop;
const Main = imports.ui.main; const Main = imports.ui.main;
const Params = imports.misc.params; const Params = imports.misc.params;
@@ -314,7 +313,8 @@ function lowerBound(array, val, cmp) {
if (array.length == 0) if (array.length == 0)
return 0; return 0;
min = 0; max = array.length; min = 0;
max = array.length;
while (min < (max - 1)) { while (min < (max - 1)) {
mid = Math.floor((min + max) / 2); mid = Math.floor((min + max) / 2);
v = cmp(array[mid], val); v = cmp(array[mid], val);

View File

@@ -3,7 +3,6 @@
WindowCyclerPopup */ WindowCyclerPopup */
const { Atk, Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi; const { Atk, Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const Mainloop = imports.mainloop;
const Main = imports.ui.main; const Main = imports.ui.main;
const SwitcherPopup = imports.ui.switcherPopup; const SwitcherPopup = imports.ui.switcherPopup;
@@ -292,7 +291,7 @@ class AppSwitcherPopup extends SwitcherPopup.SwitcherPopup {
if (this._thumbnails) if (this._thumbnails)
this._destroyThumbnails(); this._destroyThumbnails();
if (this._thumbnailTimeoutId != 0) if (this._thumbnailTimeoutId != 0)
Mainloop.source_remove(this._thumbnailTimeoutId); GLib.source_remove(this._thumbnailTimeoutId);
} }
/** /**
@@ -327,7 +326,7 @@ class AppSwitcherPopup extends SwitcherPopup.SwitcherPopup {
} }
if (this._thumbnailTimeoutId != 0) { if (this._thumbnailTimeoutId != 0) {
Mainloop.source_remove(this._thumbnailTimeoutId); GLib.source_remove(this._thumbnailTimeoutId);
this._thumbnailTimeoutId = 0; this._thumbnailTimeoutId = 0;
} }
@@ -344,7 +343,8 @@ class AppSwitcherPopup extends SwitcherPopup.SwitcherPopup {
this._thumbnails.highlight(window, forceAppFocus); this._thumbnails.highlight(window, forceAppFocus);
} else if (this._items[this._selectedIndex].cachedWindows.length > 1 && } else if (this._items[this._selectedIndex].cachedWindows.length > 1 &&
!forceAppFocus) { !forceAppFocus) {
this._thumbnailTimeoutId = Mainloop.timeout_add ( this._thumbnailTimeoutId = GLib.timeout_add(
GLib.PRIORITY_DEFAULT,
THUMBNAIL_POPUP_TIME, THUMBNAIL_POPUP_TIME,
this._timeoutPopupThumbnails.bind(this)); this._timeoutPopupThumbnails.bind(this));
GLib.Source.set_name_by_id(this._thumbnailTimeoutId, '[gnome-shell] this._timeoutPopupThumbnails'); GLib.Source.set_name_by_id(this._thumbnailTimeoutId, '[gnome-shell] this._timeoutPopupThumbnails');
@@ -648,8 +648,9 @@ class WindowCyclerPopup extends CyclerPopup {
} }
}); });
var AppIcon = GObject.registerClass( var AppIcon = GObject.registerClass({
class AppIcon extends St.BoxLayout { GTypeName: 'AltTab_AppIcon'
}, class AppIcon extends St.BoxLayout {
_init(app) { _init(app) {
super._init({ style_class: 'alt-tab-app', super._init({ style_class: 'alt-tab-app',
vertical: true }); vertical: true });
@@ -711,7 +712,7 @@ class AppSwitcher extends SwitcherPopup.SwitcherList {
_onDestroy() { _onDestroy() {
if (this._mouseTimeOutId != 0) if (this._mouseTimeOutId != 0)
Mainloop.source_remove(this._mouseTimeOutId); GLib.source_remove(this._mouseTimeOutId);
this.icons.forEach(icon => { this.icons.forEach(icon => {
icon.app.disconnect(icon._stateChangedId); icon.app.disconnect(icon._stateChangedId);
@@ -790,14 +791,16 @@ class AppSwitcher extends SwitcherPopup.SwitcherList {
// activation when the thumbnail list is open // activation when the thumbnail list is open
_onItemEnter(index) { _onItemEnter(index) {
if (this._mouseTimeOutId != 0) if (this._mouseTimeOutId != 0)
Mainloop.source_remove(this._mouseTimeOutId); GLib.source_remove(this._mouseTimeOutId);
if (this._altTabPopup.thumbnailsVisible) { if (this._altTabPopup.thumbnailsVisible) {
this._mouseTimeOutId = Mainloop.timeout_add(APP_ICON_HOVER_TIMEOUT, this._mouseTimeOutId = GLib.timeout_add(
() => { GLib.PRIORITY_DEFAULT,
this._enterItem(index); APP_ICON_HOVER_TIMEOUT,
this._mouseTimeOutId = 0; () => {
return GLib.SOURCE_REMOVE; this._enterItem(index);
}); this._mouseTimeOutId = 0;
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(this._mouseTimeOutId, '[gnome-shell] this._enterItem'); GLib.Source.set_name_by_id(this._mouseTimeOutId, '[gnome-shell] this._enterItem');
} else { } else {
this._itemEntered(index); this._itemEntered(index);

View File

@@ -2,7 +2,6 @@
/* exported Animation, AnimatedIcon, Spinner */ /* exported Animation, AnimatedIcon, Spinner */
const { Clutter, GLib, Gio, St } = imports.gi; const { Clutter, GLib, Gio, St } = imports.gi;
const Mainloop = imports.mainloop;
var ANIMATED_ICON_UPDATE_TIMEOUT = 16; var ANIMATED_ICON_UPDATE_TIMEOUT = 16;
var SPINNER_ANIMATION_TIME = 300; var SPINNER_ANIMATION_TIME = 300;
@@ -45,7 +44,7 @@ var Animation = class {
stop() { stop() {
if (this._timeoutId > 0) { if (this._timeoutId > 0) {
Mainloop.source_remove(this._timeoutId); GLib.source_remove(this._timeoutId);
this._timeoutId = 0; this._timeoutId = 0;
} }
@@ -54,12 +53,19 @@ var Animation = class {
_loadFile(file, width, height) { _loadFile(file, width, height) {
let [validResourceScale, resourceScale] = this.actor.get_resource_scale(); let [validResourceScale, resourceScale] = this.actor.get_resource_scale();
let wasPlaying = this._isPlaying;
if (this._isPlaying)
this.stop();
this._isLoaded = false; this._isLoaded = false;
this.actor.destroy_all_children(); this.actor.destroy_all_children();
if (!validResourceScale) if (!validResourceScale) {
if (wasPlaying)
this.play();
return; return;
}
let textureCache = St.TextureCache.get_default(); let textureCache = St.TextureCache.get_default();
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
@@ -67,6 +73,9 @@ var Animation = class {
scaleFactor, resourceScale, scaleFactor, resourceScale,
this._animationsLoaded.bind(this)); this._animationsLoaded.bind(this));
this.actor.set_child(this._animations); this.actor.set_child(this._animations);
if (wasPlaying)
this.play();
} }
_showFrame(frame) { _showFrame(frame) {

View File

@@ -3,7 +3,6 @@
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi; const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const Signals = imports.signals; const Signals = imports.signals;
const Mainloop = imports.mainloop;
const AppFavorites = imports.ui.appFavorites; const AppFavorites = imports.ui.appFavorites;
const BoxPointer = imports.ui.boxpointer; const BoxPointer = imports.ui.boxpointer;
@@ -1159,11 +1158,10 @@ var AppSearchProvider = class AppSearchProvider {
if (id.endsWith('.desktop')) { if (id.endsWith('.desktop')) {
let app = this._appSys.lookup_app(id); let app = this._appSys.lookup_app(id);
metas.push({ 'id': app.get_id(), metas.push({
'name': app.get_name(), id: app.get_id(),
'createIcon'(size) { name: app.get_name(),
return app.create_icon_texture(size); createIcon: size => app.create_icon_texture(size),
}
}); });
} else { } else {
let name = this._systemActions.getName(id); let name = this._systemActions.getName(id);
@@ -1438,6 +1436,13 @@ var FolderIcon = class FolderIcon {
this._itemDragEndId = Main.overview.connect( this._itemDragEndId = Main.overview.connect(
'item-drag-end', this._onDragEnd.bind(this)); 'item-drag-end', this._onDragEnd.bind(this));
this._popupTimeoutId = 0;
this.actor.connect('leave-event', this._onLeaveEvent.bind(this));
this.actor.connect('button-press-event', this._onButtonPress.bind(this));
this.actor.connect('touch-event', this._onTouchEvent.bind(this));
this.actor.connect('popup-menu', this._popupRenamePopup.bind(this));
this.actor.connect('clicked', this.open.bind(this)); this.actor.connect('clicked', this.open.bind(this));
this.actor.connect('destroy', this.onDestroy.bind(this)); this.actor.connect('destroy', this.onDestroy.bind(this));
this.actor.connect('notify::mapped', () => { this.actor.connect('notify::mapped', () => {
@@ -1462,9 +1467,12 @@ var FolderIcon = class FolderIcon {
if (this._popup) if (this._popup)
this._popup.actor.destroy(); this._popup.actor.destroy();
this._removeMenuTimeout();
} }
open() { open() {
this._removeMenuTimeout();
this._ensurePopup(); this._ensurePopup();
this.view.actor.vscroll.adjustment.value = 0; this.view.actor.vscroll.adjustment.value = 0;
this._openSpaceForPopup(); this._openSpaceForPopup();
@@ -1627,6 +1635,76 @@ var FolderIcon = class FolderIcon {
this._popupInvalidated = false; this._popupInvalidated = false;
} }
_removeMenuTimeout() {
if (this._popupTimeoutId > 0) {
GLib.source_remove(this._popupTimeoutId);
this._popupTimeoutId = 0;
}
}
_setPopupTimeout() {
this._removeMenuTimeout();
this._popupTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, MENU_POPUP_TIMEOUT, () => {
this._popupTimeoutId = 0;
this._popupRenamePopup();
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(this._popupTimeoutId,
'[gnome-shell] this._popupRenamePopup');
}
_onLeaveEvent(_actor, _event) {
this.actor.fake_release();
this._removeMenuTimeout();
}
_onButtonPress(_actor, event) {
let button = event.get_button();
if (button == 1) {
this._setPopupTimeout();
} else if (button == 3) {
this._popupRenamePopup();
return Clutter.EVENT_STOP;
}
return Clutter.EVENT_PROPAGATE;
}
_onTouchEvent(actor, event) {
if (event.type() == Clutter.EventType.TOUCH_BEGIN)
this._setPopupTimeout();
return Clutter.EVENT_PROPAGATE;
}
_popupRenamePopup() {
this._removeMenuTimeout();
this.actor.fake_release();
if (!this._menu) {
this._menuManager = new PopupMenu.PopupMenuManager(this.actor);
this._menu = new RenameFolderMenu(this, this._folder);
this._menuManager.addMenu(this._menu);
this._menu.connect('open-state-changed', (menu, isPoppedUp) => {
if (!isPoppedUp)
this.actor.sync_hover();
});
let id = Main.overview.connect('hiding', () => {
this._menu.close();
});
this.actor.connect('destroy', () => {
Main.overview.disconnect(id);
});
this._menuManager.addMenu(this._menu);
}
this.actor.set_hover(true);
this._menu.popup();
this._menuManager.ignoreRelease();
}
adaptToSize(width, height) { adaptToSize(width, height) {
this._parentAvailableWidth = width; this._parentAvailableWidth = width;
this._parentAvailableHeight = height; this._parentAvailableHeight = height;
@@ -1637,6 +1715,90 @@ var FolderIcon = class FolderIcon {
}; };
Signals.addSignalMethods(FolderIcon.prototype); Signals.addSignalMethods(FolderIcon.prototype);
var RenameFolderMenu = class RenameFolderMenu extends PopupMenu.PopupMenu {
constructor(source, folder) {
super(source.actor, 0.5, St.Side.BOTTOM);
this._source = source;
this._folder = folder;
// We want to keep the item hovered while the menu is up
this.blockSourceEvents = true;
let box = new St.BoxLayout({ style_class: 'rename-folder-popup-box' });
this.box.add_child(box);
// Entry
this._entry = new St.Entry({
x_expand: true,
width: 200,
});
box.add_child(this._entry);
this._entry.clutter_text.connect('notify::text',
this._validate.bind(this));
this._entry.clutter_text.connect('activate',
this._updateFolderName.bind(this));
// Rename button
this._button = new St.Button({
style_class: 'button',
reactive: true,
button_mask: St.ButtonMask.ONE | St.ButtonMask.TWO,
can_focus: true,
label: _("Rename"),
});
box.add_child(this._button);
this._button.connect('clicked', this._updateFolderName.bind(this));
// Chain our visibility and lifecycle to that of the source
this._sourceMappedId = source.actor.connect('notify::mapped', () => {
if (!source.actor.mapped)
this.close();
});
source.actor.connect('destroy', () => {
source.actor.disconnect(this._sourceMappedId);
this.destroy();
});
Main.uiGroup.add_actor(this.actor);
}
popup() {
let folderName = _getFolderName(this._folder);
this._entry.text = folderName;
this._entry.clutter_text.set_selection(0, folderName.length);
this.open();
}
_isValidFolderName() {
let folderName = _getFolderName(this._folder);
let newFolderName = this._entry.text.trim();
return newFolderName.length > 0 && newFolderName != folderName;
}
_validate() {
let isValid = this._isValidFolderName();
this._button.reactive = isValid;
}
_updateFolderName() {
if (!this._isValidFolderName())
return;
let newFolderName = this._entry.text.trim();
this._folder.set_string('name', newFolderName);
this._folder.set_boolean('translate', false);
this.close();
}
};
Signals.addSignalMethods(RenameFolderMenu.prototype);
var AppFolderPopup = class AppFolderPopup { var AppFolderPopup = class AppFolderPopup {
constructor(source, side) { constructor(source, side) {
this._source = source; this._source = source;
@@ -1912,7 +2074,7 @@ var AppIcon = class AppIcon {
_removeMenuTimeout() { _removeMenuTimeout() {
if (this._menuTimeoutId > 0) { if (this._menuTimeoutId > 0) {
Mainloop.source_remove(this._menuTimeoutId); GLib.source_remove(this._menuTimeoutId);
this._menuTimeoutId = 0; this._menuTimeoutId = 0;
} }
} }
@@ -1926,7 +2088,7 @@ var AppIcon = class AppIcon {
_setPopupTimeout() { _setPopupTimeout() {
this._removeMenuTimeout(); this._removeMenuTimeout();
this._menuTimeoutId = Mainloop.timeout_add(MENU_POPUP_TIMEOUT, () => { this._menuTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, MENU_POPUP_TIMEOUT, () => {
this._menuTimeoutId = 0; this._menuTimeoutId = 0;
this.popupMenu(); this.popupMenu();
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;

View File

@@ -147,12 +147,11 @@ class AppFavorites {
let app = Shell.AppSystem.get_default().lookup_app(appId); let app = Shell.AppSystem.get_default().lookup_app(appId);
Main.overview.setMessage(_("%s has been added to your favorites.").format(app.get_name()), let msg = _("%s has been added to your favorites.").format(app.get_name());
{ forFeedback: true, Main.overview.setMessage(msg, {
undoCallback: () => { forFeedback: true,
this._removeFavorite(appId); undoCallback: () => this._removeFavorite(appId),
} });
});
} }
addFavorite(appId) { addFavorite(appId) {
@@ -181,12 +180,11 @@ class AppFavorites {
if (!this._removeFavorite(appId)) if (!this._removeFavorite(appId))
return; return;
Main.overview.setMessage(_("%s has been removed from your favorites.").format(app.get_name()), let msg = _("%s has been removed from your favorites.").format(app.get_name());
{ forFeedback: true, Main.overview.setMessage(msg, {
undoCallback: () => { forFeedback: true,
this._addFavorite(appId, pos); undoCallback: () => this._addFavorite(appId, pos),
} });
});
} }
} }
Signals.addSignalMethods(AppFavorites.prototype); Signals.addSignalMethods(AppFavorites.prototype);

View File

@@ -441,20 +441,21 @@ var Background = class Background {
} }
_loadAnimation(file) { _loadAnimation(file) {
this._cache.getAnimation({ file: file, this._cache.getAnimation({
settingsSchema: this._settings.schema_id, file: file,
onLoaded: animation => { settingsSchema: this._settings.schema_id,
this._animation = animation; onLoaded: animation => {
this._animation = animation;
if (!this._animation || this._cancellable.is_cancelled()) { if (!this._animation || this._cancellable.is_cancelled()) {
this._setLoaded(); this._setLoaded();
return; return;
} }
this._updateAnimation(); this._updateAnimation();
this._watchFile(file); this._watchFile(file);
} }
}); });
} }
_loadImage(file) { _loadImage(file) {
@@ -748,13 +749,14 @@ var BackgroundManager = class BackgroundManager {
_createBackgroundActor() { _createBackgroundActor() {
let background = this._backgroundSource.getBackground(this._monitorIndex); let background = this._backgroundSource.getBackground(this._monitorIndex);
let backgroundActor = new Meta.BackgroundActor({ meta_display: global.display, let backgroundActor = new Meta.BackgroundActor({
monitor: this._monitorIndex, meta_display: global.display,
background: background.background, monitor: this._monitorIndex,
vignette: this._vignette, background: background.background,
vignette_sharpness: 0.5, vignette: this._vignette,
brightness: 0.5, vignette_sharpness: 0.5,
}); brightness: 0.5,
});
this._container.add_child(backgroundActor); this._container.add_child(backgroundActor);

View File

@@ -31,7 +31,7 @@ function addBackgroundMenu(actor, layoutManager) {
function openMenu(x, y) { function openMenu(x, y) {
Main.layoutManager.setDummyCursorGeometry(x, y, 0, 0); Main.layoutManager.setDummyCursorGeometry(x, y, 0, 0);
actor._backgroundMenu.open(BoxPointer.PopupAnimation.NONE); actor._backgroundMenu.open(BoxPointer.PopupAnimation.FULL);
} }
let clickAction = new Clutter.ClickAction(); let clickAction = new Clutter.ClickAction();

View File

@@ -1,7 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported Calendar, CalendarMessageList */ /* exported Calendar, CalendarMessageList */
const { Clutter, Gio, GLib, Shell, St } = imports.gi; const { Clutter, Gio, GLib, GObject, Shell, St } = imports.gi;
const Signals = imports.signals; const Signals = imports.signals;
const Main = imports.ui.main; const Main = imports.ui.main;
@@ -688,15 +688,15 @@ var EventMessage = class EventMessage extends MessageList.Message {
let rtl = Clutter.get_default_text_direction() == Clutter.TextDirection.RTL; let rtl = Clutter.get_default_text_direction() == Clutter.TextDirection.RTL;
if (this._event.date < periodBegin && !this._event.allDay) { if (this._event.date < periodBegin && !this._event.allDay) {
if (rtl) if (rtl)
title = title + ELLIPSIS_CHAR; title = `${title}${ELLIPSIS_CHAR}`;
else else
title = ELLIPSIS_CHAR + title; title = `${ELLIPSIS_CHAR}${title}`;
} }
if (this._event.end > periodEnd && !this._event.allDay) { if (this._event.end > periodEnd && !this._event.allDay) {
if (rtl) if (rtl)
title = ELLIPSIS_CHAR + title; title = `${ELLIPSIS_CHAR}${title}`;
else else
title = title + ELLIPSIS_CHAR; title = `${title}${ELLIPSIS_CHAR}`;
} }
return title; return title;
} }
@@ -1075,6 +1075,10 @@ var CalendarMessageList = class CalendarMessageList {
}); });
box.add_actor(this._clearButton); box.add_actor(this._clearButton);
this._placeholder.actor.bind_property('visible',
this._clearButton, 'visible',
GObject.BindingFlags.INVERT_BOOLEAN);
this._sectionList = new St.BoxLayout({ style_class: 'message-list-sections', this._sectionList = new St.BoxLayout({ style_class: 'message-list-sections',
vertical: true, vertical: true,
y_expand: true, y_expand: true,
@@ -1145,7 +1149,6 @@ var CalendarMessageList = class CalendarMessageList {
let empty = sections.every(s => s.empty || !s.actor.visible); let empty = sections.every(s => s.empty || !s.actor.visible);
this._placeholder.actor.visible = empty; this._placeholder.actor.visible = empty;
this._clearButton.visible = !empty;
let canClear = sections.some(s => s.canClear && s.actor.visible); let canClear = sections.some(s => s.canClear && s.actor.visible);
this._clearButton.reactive = canClear; this._clearButton.reactive = canClear;

View File

@@ -2,7 +2,6 @@
/* exported Component */ /* exported Component */
const { Gio, GLib } = imports.gi; const { Gio, GLib } = imports.gi;
const Mainloop = imports.mainloop;
const Params = imports.misc.params; const Params = imports.misc.params;
const GnomeSession = imports.misc.gnomeSession; const GnomeSession = imports.misc.gnomeSession;
@@ -39,7 +38,7 @@ var AutomountManager = class {
this._driveDisconnectedId = this._volumeMonitor.connect('drive-disconnected', this._onDriveDisconnected.bind(this)); this._driveDisconnectedId = this._volumeMonitor.connect('drive-disconnected', this._onDriveDisconnected.bind(this));
this._driveEjectButtonId = this._volumeMonitor.connect('drive-eject-button', this._onDriveEjectButton.bind(this)); this._driveEjectButtonId = this._volumeMonitor.connect('drive-eject-button', this._onDriveEjectButton.bind(this));
this._mountAllId = Mainloop.idle_add(this._startupMountAll.bind(this)); this._mountAllId = GLib.idle_add(GLib.PRIORITY_DEFAULT, this._startupMountAll.bind(this));
GLib.Source.set_name_by_id(this._mountAllId, '[gnome-shell] this._startupMountAll'); GLib.Source.set_name_by_id(this._mountAllId, '[gnome-shell] this._startupMountAll');
} }
@@ -51,7 +50,7 @@ var AutomountManager = class {
this._volumeMonitor.disconnect(this._driveEjectButtonId); this._volumeMonitor.disconnect(this._driveEjectButtonId);
if (this._mountAllId > 0) { if (this._mountAllId > 0) {
Mainloop.source_remove(this._mountAllId); GLib.source_remove(this._mountAllId);
this._mountAllId = 0; this._mountAllId = 0;
} }
} }
@@ -220,7 +219,7 @@ var AutomountManager = class {
_onVolumeRemoved(monitor, volume) { _onVolumeRemoved(monitor, volume) {
if (volume._allowAutorunExpireId && volume._allowAutorunExpireId > 0) { if (volume._allowAutorunExpireId && volume._allowAutorunExpireId > 0) {
Mainloop.source_remove(volume._allowAutorunExpireId); GLib.source_remove(volume._allowAutorunExpireId);
delete volume._allowAutorunExpireId; delete volume._allowAutorunExpireId;
} }
this._volumeQueue = this._volumeQueue =
@@ -249,7 +248,7 @@ var AutomountManager = class {
} }
_allowAutorunExpire(volume) { _allowAutorunExpire(volume) {
let id = Mainloop.timeout_add_seconds(AUTORUN_EXPIRE_TIMEOUT_SECS, () => { let id = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, AUTORUN_EXPIRE_TIMEOUT_SECS, () => {
volume.allowAutorun = false; volume.allowAutorun = false;
delete volume._allowAutorunExpireId; delete volume._allowAutorunExpireId;
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;

View File

@@ -325,10 +325,10 @@ var AutorunNotification = class extends MessageTray.Notification {
style_class: 'hotplug-notification-item-icon' }); style_class: 'hotplug-notification-item-icon' });
box.add(icon); box.add(icon);
let label = new St.Bin({ y_align: St.Align.MIDDLE, let label = new St.Bin({
child: new St.Label y_align: St.Align.MIDDLE,
({ text: _("Open with %s").format(app.get_name()) }) child: new St.Label({ text: _("Open with %s").format(app.get_name()) }),
}); });
box.add(label); box.add(label);
let button = new St.Button({ child: box, let button = new St.Button({ child: box,

View File

@@ -112,16 +112,17 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
expand: true }); expand: true });
} }
this._okButton = { label: _("Connect"), this._okButton = {
action: this._onOk.bind(this), label: _("Connect"),
default: true action: this._onOk.bind(this),
}; default: true,
};
this.setButtons([{ label: _("Cancel"), this.setButtons([{
action: this.cancel.bind(this), label: _("Cancel"),
key: Clutter.KEY_Escape, action: this.cancel.bind(this),
}, key: Clutter.KEY_Escape,
this._okButton]); }, this._okButton]);
this._updateOkButton(); this._updateOkButton();
} }
@@ -551,11 +552,12 @@ var VPNRequestHandler = class {
let shouldAsk = keyfile.get_boolean(groups[i], 'ShouldAsk'); let shouldAsk = keyfile.get_boolean(groups[i], 'ShouldAsk');
if (shouldAsk) { if (shouldAsk) {
contentOverride.secrets.push({ label: keyfile.get_string(groups[i], 'Label'), contentOverride.secrets.push({
key: groups[i], label: keyfile.get_string(groups[i], 'Label'),
value: value, key: groups[i],
password: keyfile.get_boolean(groups[i], 'IsSecret') value: value,
}); password: keyfile.get_boolean(groups[i], 'IsSecret'),
});
} else { } else {
if (!value.length) // Ignore empty secrets if (!value.length) // Ignore empty secrets
continue; continue;
@@ -609,10 +611,11 @@ Signals.addSignalMethods(VPNRequestHandler.prototype);
var NetworkAgent = class { var NetworkAgent = class {
constructor() { constructor() {
this._native = new Shell.NetworkAgent({ identifier: 'org.gnome.Shell.NetworkAgent', this._native = new Shell.NetworkAgent({
capabilities: NM.SecretAgentCapabilities.VPN_HINTS, identifier: 'org.gnome.Shell.NetworkAgent',
auto_register: false capabilities: NM.SecretAgentCapabilities.VPN_HINTS,
}); auto_register: false,
});
this._dialogs = { }; this._dialogs = { };
this._vpnRequests = { }; this._vpnRequests = { };

View File

@@ -3,7 +3,6 @@
const { Clutter, Gio, GLib, GObject, St } = imports.gi; const { Clutter, Gio, GLib, GObject, St } = imports.gi;
const Lang = imports.lang; const Lang = imports.lang;
const Mainloop = imports.mainloop;
var Tpl = null; var Tpl = null;
var Tp = null; var Tp = null;
@@ -546,8 +545,8 @@ var ChatSource = class extends MessageTray.Source {
// Wait a bit before notifying for the received message, a handler // Wait a bit before notifying for the received message, a handler
// could ack it in the meantime. // could ack it in the meantime.
if (this._notifyTimeoutId != 0) if (this._notifyTimeoutId != 0)
Mainloop.source_remove(this._notifyTimeoutId); GLib.source_remove(this._notifyTimeoutId);
this._notifyTimeoutId = Mainloop.timeout_add(500, this._notifyTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 500,
this._notifyTimeout.bind(this)); this._notifyTimeout.bind(this));
GLib.Source.set_name_by_id(this._notifyTimeoutId, '[gnome-shell] this._notifyTimeout'); GLib.Source.set_name_by_id(this._notifyTimeoutId, '[gnome-shell] this._notifyTimeout');
} }
@@ -641,7 +640,7 @@ var ChatNotification = class extends MessageTray.Notification {
destroy(reason) { destroy(reason) {
if (this._timestampTimeoutId) if (this._timestampTimeoutId)
Mainloop.source_remove(this._timestampTimeoutId); GLib.source_remove(this._timestampTimeoutId);
this._timestampTimeoutId = 0; this._timestampTimeoutId = 0;
super.destroy(reason); super.destroy(reason);
} }
@@ -729,7 +728,7 @@ var ChatNotification = class extends MessageTray.Notification {
// Reset the old message timeout // Reset the old message timeout
if (this._timestampTimeoutId) if (this._timestampTimeoutId)
Mainloop.source_remove(this._timestampTimeoutId); GLib.source_remove(this._timestampTimeoutId);
this._timestampTimeoutId = 0; this._timestampTimeoutId = 0;
let message = { realMessage: props.group != 'meta', let message = { realMessage: props.group != 'meta',
@@ -747,7 +746,8 @@ var ChatNotification = class extends MessageTray.Notification {
} else { } else {
// Schedule a new timestamp in SCROLLBACK_IMMEDIATE_TIME // Schedule a new timestamp in SCROLLBACK_IMMEDIATE_TIME
// from the timestamp of the message. // from the timestamp of the message.
this._timestampTimeoutId = Mainloop.timeout_add_seconds( this._timestampTimeoutId = GLib.timeout_add_seconds(
GLib.PRIORITY_DEFAULT,
SCROLLBACK_IMMEDIATE_TIME - (currentTime - timestamp), SCROLLBACK_IMMEDIATE_TIME - (currentTime - timestamp),
this.appendTimestamp.bind(this)); this.appendTimestamp.bind(this));
GLib.Source.set_name_by_id(this._timestampTimeoutId, '[gnome-shell] this.appendTimestamp'); GLib.Source.set_name_by_id(this._timestampTimeoutId, '[gnome-shell] this.appendTimestamp');
@@ -952,14 +952,15 @@ var ChatNotificationBanner = class extends MessageTray.NotificationBanner {
// Remove composing timeout. // Remove composing timeout.
if (this._composingTimeoutId > 0) { if (this._composingTimeoutId > 0) {
Mainloop.source_remove(this._composingTimeoutId); GLib.source_remove(this._composingTimeoutId);
this._composingTimeoutId = 0; this._composingTimeoutId = 0;
} }
if (text != '') { if (text != '') {
this.notification.source.setChatState(Tp.ChannelChatState.COMPOSING); this.notification.source.setChatState(Tp.ChannelChatState.COMPOSING);
this._composingTimeoutId = Mainloop.timeout_add_seconds( this._composingTimeoutId = GLib.timeout_add_seconds(
GLib.PRIORITY_DEFAULT,
COMPOSING_STOP_TIMEOUT, COMPOSING_STOP_TIMEOUT,
this._composingStopTimeout.bind(this)); this._composingStopTimeout.bind(this));
GLib.Source.set_name_by_id(this._composingTimeoutId, '[gnome-shell] this._composingStopTimeout'); GLib.Source.set_name_by_id(this._composingTimeoutId, '[gnome-shell] this._composingStopTimeout');

View File

@@ -2,7 +2,6 @@
/* exported Dash */ /* exported Dash */
const { Clutter, GLib, GObject, Meta, Shell, St } = imports.gi; const { Clutter, GLib, GObject, Meta, Shell, St } = imports.gi;
const Mainloop = imports.mainloop;
const Signals = imports.signals; const Signals = imports.signals;
const AppDisplay = imports.ui.appDisplay; const AppDisplay = imports.ui.appDisplay;
@@ -500,7 +499,7 @@ var Dash = class Dash {
// that the notify::hover handler does everything we need to. // that the notify::hover handler does everything we need to.
if (opened) { if (opened) {
if (this._showLabelTimeoutId > 0) { if (this._showLabelTimeoutId > 0) {
Mainloop.source_remove(this._showLabelTimeoutId); GLib.source_remove(this._showLabelTimeoutId);
this._showLabelTimeoutId = 0; this._showLabelTimeoutId = 0;
} }
@@ -514,7 +513,7 @@ var Dash = class Dash {
if (shouldShow) { if (shouldShow) {
if (this._showLabelTimeoutId == 0) { if (this._showLabelTimeoutId == 0) {
let timeout = this._labelShowing ? 0 : DASH_ITEM_HOVER_TIMEOUT; let timeout = this._labelShowing ? 0 : DASH_ITEM_HOVER_TIMEOUT;
this._showLabelTimeoutId = Mainloop.timeout_add(timeout, this._showLabelTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, timeout,
() => { () => {
this._labelShowing = true; this._labelShowing = true;
item.showLabel(); item.showLabel();
@@ -523,17 +522,17 @@ var Dash = class Dash {
}); });
GLib.Source.set_name_by_id(this._showLabelTimeoutId, '[gnome-shell] item.showLabel'); GLib.Source.set_name_by_id(this._showLabelTimeoutId, '[gnome-shell] item.showLabel');
if (this._resetHoverTimeoutId > 0) { if (this._resetHoverTimeoutId > 0) {
Mainloop.source_remove(this._resetHoverTimeoutId); GLib.source_remove(this._resetHoverTimeoutId);
this._resetHoverTimeoutId = 0; this._resetHoverTimeoutId = 0;
} }
} }
} else { } else {
if (this._showLabelTimeoutId > 0) if (this._showLabelTimeoutId > 0)
Mainloop.source_remove(this._showLabelTimeoutId); GLib.source_remove(this._showLabelTimeoutId);
this._showLabelTimeoutId = 0; this._showLabelTimeoutId = 0;
item.hideLabel(); item.hideLabel();
if (this._labelShowing) { if (this._labelShowing) {
this._resetHoverTimeoutId = Mainloop.timeout_add(DASH_ITEM_HOVER_TIMEOUT, this._resetHoverTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, DASH_ITEM_HOVER_TIMEOUT,
() => { () => {
this._labelShowing = false; this._labelShowing = false;
this._resetHoverTimeoutId = 0; this._resetHoverTimeoutId = 0;

View File

@@ -30,11 +30,13 @@ var TodayButton = class TodayButton {
// Having the ability to go to the current date if the user is already // Having the ability to go to the current date if the user is already
// on the current date can be confusing. So don't make the button reactive // on the current date can be confusing. So don't make the button reactive
// until the selected date changes. // until the selected date changes.
this.actor = new St.Button({ style_class: 'datemenu-today-button', this.actor = new St.Button({
x_expand: true, x_align: St.Align.START, style_class: 'datemenu-today-button',
can_focus: true, x_align: St.Align.START,
reactive: false x_expand: true,
}); can_focus: true,
reactive: false,
});
this.actor.connect('clicked', () => { this.actor.connect('clicked', () => {
this._calendar.setDate(new Date(), false); this._calendar.setDate(new Date(), false);
}); });

View File

@@ -17,8 +17,6 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>. * along with this program; if not, see <http://www.gnu.org/licenses/>.
*/ */
const Mainloop = imports.mainloop;
const { AccountsService, Clutter, Gio, const { AccountsService, Clutter, Gio,
GLib, GObject, Pango, Polkit, Shell, St } = imports.gi; GLib, GObject, Pango, Polkit, Shell, St } = imports.gi;
@@ -352,12 +350,15 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
} }
// It only makes sense to check for this permission if PackageKit is available. // It only makes sense to check for this permission if PackageKit is available.
try { Polkit.Permission.new(
this._updatesPermission = Polkit.Permission.new_sync( 'org.freedesktop.packagekit.trigger-offline-update', null, null,
'org.freedesktop.packagekit.trigger-offline-update', null, null); (source, res) => {
} catch (e) { try {
log('No permission to trigger offline updates: %s'.format(e.toString())); this._updatesPermission = Polkit.Permission.new_finish(res);
} } catch (e) {
log(`No permission to trigger offline updates: ${e}`);
}
});
} }
_onDestroy() { _onDestroy() {
@@ -448,14 +449,16 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
for (let i = 0; i < dialogContent.confirmButtons.length; i++) { for (let i = 0; i < dialogContent.confirmButtons.length; i++) {
let signal = dialogContent.confirmButtons[i].signal; let signal = dialogContent.confirmButtons[i].signal;
let label = dialogContent.confirmButtons[i].label; let label = dialogContent.confirmButtons[i].label;
buttons.push({ action: () => { buttons.push({
this.close(true); action: () => {
let signalId = this.connect('closed', () => { this.close(true);
this.disconnect(signalId); let signalId = this.connect('closed', () => {
this._confirm(signal); this.disconnect(signalId);
}); this._confirm(signal);
}, });
label: label }); },
label: label,
});
} }
this.setButtons(buttons); this.setButtons(buttons);
@@ -562,7 +565,7 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
let startTime = GLib.get_monotonic_time(); let startTime = GLib.get_monotonic_time();
this._secondsLeft = this._totalSecondsToStayOpen; this._secondsLeft = this._totalSecondsToStayOpen;
this._timerId = Mainloop.timeout_add_seconds(1, () => { this._timerId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 1, () => {
let currentTime = GLib.get_monotonic_time(); let currentTime = GLib.get_monotonic_time();
let secondsElapsed = ((currentTime - startTime) / 1000000); let secondsElapsed = ((currentTime - startTime) / 1000000);
@@ -584,7 +587,7 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
_stopTimer() { _stopTimer() {
if (this._timerId > 0) { if (this._timerId > 0) {
Mainloop.source_remove(this._timerId); GLib.source_remove(this._timerId);
this._timerId = 0; this._timerId = 0;
} }

View File

@@ -10,7 +10,7 @@ imports.gi.versions.Gtk = '3.0';
imports.gi.versions.TelepathyGLib = '0.12'; imports.gi.versions.TelepathyGLib = '0.12';
imports.gi.versions.TelepathyLogger = '0.2'; imports.gi.versions.TelepathyLogger = '0.2';
const { Clutter, GLib, Shell, St } = imports.gi; const { Clutter, GLib, Meta, Shell, St } = imports.gi;
const Gettext = imports.gettext; const Gettext = imports.gettext;
// We can't import shell JS modules yet, because they may have // We can't import shell JS modules yet, because they may have
@@ -58,17 +58,16 @@ function _patchLayoutClass(layoutClass, styleProps) {
}; };
} }
function _makeEaseCallback(params) { function _makeEaseCallback(params, cleanup) {
let onComplete = params.onComplete; let onComplete = params.onComplete;
delete params.onComplete; delete params.onComplete;
let onStopped = params.onStopped; let onStopped = params.onStopped;
delete params.onStopped; delete params.onStopped;
if (!onComplete && !onStopped)
return null;
return isFinished => { return isFinished => {
cleanup();
if (onStopped) if (onStopped)
onStopped(isFinished); onStopped(isFinished);
if (onComplete && isFinished) if (onComplete && isFinished)
@@ -110,7 +109,10 @@ function _easeActor(actor, params) {
actor.set_easing_mode(params.mode); actor.set_easing_mode(params.mode);
delete params.mode; delete params.mode;
let callback = _makeEaseCallback(params); Meta.disable_unredirect_for_display(global.display);
let cleanup = () => Meta.enable_unredirect_for_display(global.display);
let callback = _makeEaseCallback(params, cleanup);
// cancel overwritten transitions // cancel overwritten transitions
let animatedProps = Object.keys(params).map(p => p.replace('_', '-', 'g')); let animatedProps = Object.keys(params).map(p => p.replace('_', '-', 'g'));
@@ -119,14 +121,11 @@ function _easeActor(actor, params) {
actor.set(params); actor.set(params);
actor.restore_easing_state(); actor.restore_easing_state();
if (callback) { let transition = actor.get_transition(animatedProps[0]);
let transition = actor.get_transition(animatedProps[0]); if (transition)
transition.connect('stopped', (t, finished) => callback(finished));
if (transition) else
transition.connect('stopped', (t, finished) => callback(finished)); callback(true);
else
callback(true);
}
} }
function _easeActorProperty(actor, propName, target, params) { function _easeActorProperty(actor, propName, target, params) {
@@ -139,7 +138,15 @@ function _easeActorProperty(actor, propName, target, params) {
params.duration = adjustAnimationTime(params.duration); params.duration = adjustAnimationTime(params.duration);
let duration = Math.floor(params.duration || 0); let duration = Math.floor(params.duration || 0);
let callback = _makeEaseCallback(params); // Copy Clutter's behavior for implicit animations, see
// should_skip_implicit_transition()
if (actor instanceof Clutter.Actor && !actor.mapped)
duration = 0;
Meta.disable_unredirect_for_display(global.display);
let cleanup = () => Meta.enable_unredirect_for_display(global.display);
let callback = _makeEaseCallback(params, cleanup);
// cancel overwritten transition // cancel overwritten transition
actor.remove_transition(propName); actor.remove_transition(propName);
@@ -148,8 +155,7 @@ function _easeActorProperty(actor, propName, target, params) {
let [obj, prop] = _getPropertyTarget(actor, propName); let [obj, prop] = _getPropertyTarget(actor, propName);
obj[prop] = target; obj[prop] = target;
if (callback) callback(true);
callback(true);
return; return;
} }
@@ -164,8 +170,7 @@ function _easeActorProperty(actor, propName, target, params) {
transition.set_to(target); transition.set_to(target);
if (callback) transition.connect('stopped', (t, finished) => callback(finished));
transition.connect('stopped', (t, finished) => callback(finished));
} }
function _loggingFunc(...args) { function _loggingFunc(...args) {

View File

@@ -186,14 +186,15 @@ class InstallExtensionDialog extends ModalDialog.ModalDialog {
this._info = info; this._info = info;
this._invocation = invocation; this._invocation = invocation;
this.setButtons([{ label: _("Cancel"), this.setButtons([{
action: this._onCancelButtonPressed.bind(this), label: _("Cancel"),
key: Clutter.Escape action: this._onCancelButtonPressed.bind(this),
}, key: Clutter.Escape,
{ label: _("Install"), }, {
action: this._onInstallButtonPressed.bind(this), label: _("Install"),
default: true action: this._onInstallButtonPressed.bind(this),
}]); default: true,
}]);
let content = new Dialog.MessageDialogContent({ let content = new Dialog.MessageDialogContent({
title: _("Download and install “%s” from extensions.gnome.org?").format(info.name), title: _("Download and install “%s” from extensions.gnome.org?").format(info.name),

View File

@@ -17,12 +17,11 @@ const EXTENSION_DISABLE_VERSION_CHECK_KEY = 'disable-extension-version-validatio
var ExtensionManager = class { var ExtensionManager = class {
constructor() { constructor() {
this._initted = false; this._initialized = false;
this._enabled = false; this._enabled = false;
this._extensions = new Map(); this._extensions = new Map();
this._enabledExtensions = []; this._enabledExtensions = [];
this._requestedExtensions = [];
this._extensionOrder = []; this._extensionOrder = [];
Main.sessionMode.connect('updated', this._sessionUpdated.bind(this)); Main.sessionMode.connect('updated', this._sessionUpdated.bind(this));
@@ -99,6 +98,9 @@ var ExtensionManager = class {
} }
_callExtensionEnable(uuid) { _callExtensionEnable(uuid) {
if (!Main.sessionMode.allowExtensions)
return;
let extension = this.lookup(uuid); let extension = this.lookup(uuid);
if (!extension) if (!extension)
return; return;
@@ -109,8 +111,6 @@ var ExtensionManager = class {
if (extension.state != ExtensionState.DISABLED) if (extension.state != ExtensionState.DISABLED)
return; return;
this._extensionOrder.push(uuid);
let stylesheetNames = [`${global.session_mode}.css`, 'stylesheet.css']; let stylesheetNames = [`${global.session_mode}.css`, 'stylesheet.css'];
let theme = St.ThemeContext.get_for_stage(global.stage).get_theme(); let theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
for (let i = 0; i < stylesheetNames.length; i++) { for (let i = 0; i < stylesheetNames.length; i++) {
@@ -122,7 +122,7 @@ var ExtensionManager = class {
} catch (e) { } catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
continue; // not an error continue; // not an error
log(`Failed to load stylesheet for extension ${uuid}: ${e.message}`); this.logExtensionError(uuid, e);
return; return;
} }
} }
@@ -130,15 +130,14 @@ var ExtensionManager = class {
try { try {
extension.stateObj.enable(); extension.stateObj.enable();
extension.state = ExtensionState.ENABLED; extension.state = ExtensionState.ENABLED;
this._extensionOrder.push(uuid);
this.emit('extension-state-changed', extension); this.emit('extension-state-changed', extension);
return;
} catch (e) { } catch (e) {
if (extension.stylesheet) { if (extension.stylesheet) {
theme.unload_stylesheet(extension.stylesheet); theme.unload_stylesheet(extension.stylesheet);
delete extension.stylesheet; delete extension.stylesheet;
} }
this.logExtensionError(uuid, e); this.logExtensionError(uuid, e);
return;
} }
} }
@@ -195,7 +194,7 @@ var ExtensionManager = class {
extension.errors = []; extension.errors = [];
extension.errors.push(message); extension.errors.push(message);
log('Extension "%s" had error: %s'.format(uuid, message)); logError(error, `Extension ${uuid}`);
this.emit('extension-state-changed', extension); this.emit('extension-state-changed', extension);
} }
@@ -251,9 +250,6 @@ var ExtensionManager = class {
// Default to error, we set success as the last step // Default to error, we set success as the last step
extension.state = ExtensionState.ERROR; extension.state = ExtensionState.ERROR;
let requested = this._requestedExtensions.includes(extension.uuid);
extension.isRequested = requested;
let checkVersion = !global.settings.get_boolean(EXTENSION_DISABLE_VERSION_CHECK_KEY); let checkVersion = !global.settings.get_boolean(EXTENSION_DISABLE_VERSION_CHECK_KEY);
if (checkVersion && ExtensionUtils.isOutOfDate(extension)) { if (checkVersion && ExtensionUtils.isOutOfDate(extension)) {
@@ -308,12 +304,14 @@ var ExtensionManager = class {
} }
_callExtensionInit(uuid) { _callExtensionInit(uuid) {
if (!Main.sessionMode.allowExtensions)
return false;
let extension = this.lookup(uuid); let extension = this.lookup(uuid);
let dir = extension.dir;
if (!extension) if (!extension)
throw new Error("Extension was not properly created. Call loadExtension first"); throw new Error("Extension was not properly created. Call createExtensionObject first");
let dir = extension.dir;
let extensionJs = dir.get_child('extension.js'); let extensionJs = dir.get_child('extension.js');
if (!extensionJs.query_exists(null)) { if (!extensionJs.query_exists(null)) {
this.logExtensionError(uuid, new Error('Missing extension.js')); this.logExtensionError(uuid, new Error('Missing extension.js'));
@@ -367,7 +365,10 @@ var ExtensionManager = class {
? DISABLE_USER_EXTENSIONS_KEY ? DISABLE_USER_EXTENSIONS_KEY
: ENABLED_EXTENSIONS_KEY; : ENABLED_EXTENSIONS_KEY;
extension.canChange = global.settings.is_writable(ENABLED_EXTENSIONS_KEY); extension.canChange =
!hasError &&
global.settings.is_writable(changeKey) &&
(isMode || !modeOnly);
} }
_getEnabledExtensions() { _getEnabledExtensions() {
@@ -381,14 +382,6 @@ var ExtensionManager = class {
return extensions.filter(item => !disabledExtensions.includes(item)); return extensions.filter(item => !disabledExtensions.includes(item));
} }
_getRequestedExtensions() {
let extensions = global.settings.get_strv(ENABLED_EXTENSIONS_KEY);
// filter out 'disabled-extensions' which takes precedence
let disabledExtensions = global.settings.get_strv(DISABLED_EXTENSIONS_KEY);
return extensions.filter(item => !disabledExtensions.includes(item));
}
_onUserExtensionsEnabledChanged() { _onUserExtensionsEnabledChanged() {
this._onEnabledExtensionsChanged(); this._onEnabledExtensionsChanged();
this._onSettingsWritableChanged(); this._onSettingsWritableChanged();
@@ -397,19 +390,6 @@ var ExtensionManager = class {
_onEnabledExtensionsChanged() { _onEnabledExtensionsChanged() {
let newEnabledExtensions = this._getEnabledExtensions(); let newEnabledExtensions = this._getEnabledExtensions();
if (!this._enabled)
return;
// Updated requested state and emit change notifications
this._requestedExtensions = this._getRequestedExtensions();
for (let extension of this._extensions.values()) {
let requested = this._requestedExtensions.includes(extension.uuid);
if (extension.isRequested == requested)
continue;
extension.isRequested = requested;
this.emit('extension-state-changed', extension);
}
// Find and enable all the newly enabled extensions: UUIDs found in the // Find and enable all the newly enabled extensions: UUIDs found in the
// new setting, but not in the old one. // new setting, but not in the old one.
newEnabledExtensions.filter( newEnabledExtensions.filter(
@@ -420,9 +400,9 @@ var ExtensionManager = class {
// Find and disable all the newly disabled extensions: UUIDs found in the // Find and disable all the newly disabled extensions: UUIDs found in the
// old setting, but not in the new one. // old setting, but not in the new one.
this._enabledExtensions.filter( this._extensionOrder.filter(
item => !newEnabledExtensions.includes(item) uuid => !newEnabledExtensions.includes(uuid)
).forEach(uuid => { ).reverse().forEach(uuid => {
this._callExtensionDisable(uuid); this._callExtensionDisable(uuid);
}); });
@@ -437,22 +417,19 @@ var ExtensionManager = class {
} }
_onVersionValidationChanged() { _onVersionValidationChanged() {
// we want to reload all extensions, but only enable // Disabling extensions modifies the order array, so use a copy
// extensions when allowed by the sessionMode, so let extensionOrder = this._extensionOrder.slice();
// temporarily disable them all
this._enabledExtensions = [];
// The loop modifies the extensions map, so iterate over a copy // Disable enabled extensions in the reverse order first to avoid
let extensions = [...this._extensions.values()]; // the "rebasing" done in _callExtensionDisable...
for (let extension of extensions) extensionOrder.slice().reverse().forEach(uuid => {
this.reloadExtension(extension); this._callExtensionDisable(uuid);
this._enabledExtensions = this._getEnabledExtensions(); });
if (Main.sessionMode.allowExtensions) { // ...and then reload and enable extensions in the correct order again.
this._enabledExtensions.forEach(uuid => { [...this._extensions.values()].sort((a, b) => {
this._callExtensionEnable(uuid); return extensionOrder.indexOf(a.uuid) - extensionOrder.indexOf(b.uuid);
}); }).forEach(extension => this.reloadExtension(extension));
}
} }
_loadExtensions() { _loadExtensions() {
@@ -470,7 +447,6 @@ var ExtensionManager = class {
this._onSettingsWritableChanged.bind(this)); this._onSettingsWritableChanged.bind(this));
this._enabledExtensions = this._getEnabledExtensions(); this._enabledExtensions = this._getEnabledExtensions();
this._requestedExtensions = this._getRequestedExtensions();
let perUserDir = Gio.File.new_for_path(global.userdatadir); let perUserDir = Gio.File.new_for_path(global.userdatadir);
FileUtils.collectFromDatadirs('extensions', true, (dir, info) => { FileUtils.collectFromDatadirs('extensions', true, (dir, info) => {
@@ -502,9 +478,9 @@ var ExtensionManager = class {
if (this._enabled) if (this._enabled)
return; return;
if (!this._initted) { if (!this._initialized) {
this._loadExtensions(); this._loadExtensions();
this._initted = true; this._initialized = true;
} else { } else {
this._enabledExtensions.forEach(uuid => { this._enabledExtensions.forEach(uuid => {
this._callExtensionEnable(uuid); this._callExtensionEnable(uuid);
@@ -517,7 +493,7 @@ var ExtensionManager = class {
if (!this._enabled) if (!this._enabled)
return; return;
if (this._initted) { if (this._initialized) {
this._extensionOrder.slice().reverse().forEach(uuid => { this._extensionOrder.slice().reverse().forEach(uuid => {
this._callExtensionDisable(uuid); this._callExtensionDisable(uuid);
}); });
@@ -532,9 +508,8 @@ var ExtensionManager = class {
// property; it might make sense to make enabledExtensions independent // property; it might make sense to make enabledExtensions independent
// from allowExtensions in the future // from allowExtensions in the future
if (Main.sessionMode.allowExtensions) { if (Main.sessionMode.allowExtensions) {
if (this._initted) { // Take care of added or removed sessionMode extensions
this._enabledExtensions = this._getEnabledExtensions(); this._onEnabledExtensionsChanged();
}
this._enableAllExtensions(); this._enableAllExtensions();
} else { } else {
this._disableAllExtensions(); this._disableAllExtensions();

View File

@@ -247,10 +247,23 @@ var IconGrid = GObject.registerClass({
_childAdded(grid, child) { _childAdded(grid, child) {
child._iconGridKeyFocusInId = child.connect('key-focus-in', this._keyFocusIn.bind(this)); child._iconGridKeyFocusInId = child.connect('key-focus-in', this._keyFocusIn.bind(this));
child._paintVisible = child.opacity > 0;
child._opacityChangedId = child.connect('notify::opacity', () => {
let paintVisible = child._paintVisible;
child._paintVisible = child.opacity > 0;
if (paintVisible !== child._paintVisible)
this.queue_relayout();
});
} }
_childRemoved(grid, child) { _childRemoved(grid, child) {
child.disconnect(child._iconGridKeyFocusInId); child.disconnect(child._iconGridKeyFocusInId);
delete child._iconGridKeyFocusInId;
child.disconnect(child._opacityChangedId);
delete child._opacityChangedId;
delete child._paintVisible;
} }
vfunc_get_preferred_width(_forHeight) { vfunc_get_preferred_width(_forHeight) {
@@ -414,7 +427,7 @@ var IconGrid = GObject.registerClass({
* set of items to be animated. * set of items to be animated.
*/ */
_getChildrenToAnimate() { _getChildrenToAnimate() {
return this._getVisibleChildren(); return this._getVisibleChildren().filter(child => child.opacity > 0);
} }
_resetAnimationActors() { _resetAnimationActors() {
@@ -871,7 +884,7 @@ var PaginatedIconGrid = GObject.registerClass({
// Overridden from IconGrid // Overridden from IconGrid
_getChildrenToAnimate() { _getChildrenToAnimate() {
let children = this._getVisibleChildren(); let children = super._getChildrenToAnimate();
let firstIndex = this._childrenPerPage * this.currentPage; let firstIndex = this._childrenPerPage * this.currentPage;
let lastIndex = firstIndex + this._childrenPerPage; let lastIndex = firstIndex + this._childrenPerPage;

View File

@@ -27,7 +27,7 @@ class KbdA11yDialog extends GObject.Object {
if (whatChanged & Clutter.KeyboardA11yFlags.SLOW_KEYS_ENABLED) { if (whatChanged & Clutter.KeyboardA11yFlags.SLOW_KEYS_ENABLED) {
key = KEY_SLOW_KEYS_ENABLED; key = KEY_SLOW_KEYS_ENABLED;
enabled = (newFlags & Clutter.KeyboardA11yFlags.SLOW_KEYS_ENABLED) ? true : false; enabled = (newFlags & Clutter.KeyboardA11yFlags.SLOW_KEYS_ENABLED) > 0;
title = enabled ? title = enabled ?
_("Slow Keys Turned On") : _("Slow Keys Turned On") :
_("Slow Keys Turned Off"); _("Slow Keys Turned Off");
@@ -36,7 +36,7 @@ class KbdA11yDialog extends GObject.Object {
} else if (whatChanged & Clutter.KeyboardA11yFlags.STICKY_KEYS_ENABLED) { } else if (whatChanged & Clutter.KeyboardA11yFlags.STICKY_KEYS_ENABLED) {
key = KEY_STICKY_KEYS_ENABLED; key = KEY_STICKY_KEYS_ENABLED;
enabled = (newFlags & Clutter.KeyboardA11yFlags.STICKY_KEYS_ENABLED) ? true : false; enabled = (newFlags & Clutter.KeyboardA11yFlags.STICKY_KEYS_ENABLED) > 0;
title = enabled ? title = enabled ?
_("Sticky Keys Turned On") : _("Sticky Keys Turned On") :
_("Sticky Keys Turned Off"); _("Sticky Keys Turned Off");

View File

@@ -193,12 +193,12 @@ var LanguageSelectionPopup = class extends PopupMenu.PopupMenu {
item = this.addAction(is.displayName, () => { item = this.addAction(is.displayName, () => {
inputSourceManager.activateInputSource(is, true); inputSourceManager.activateInputSource(is, true);
}); });
item.actor.can_focus = false; item.can_focus = false;
} }
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
item = this.addSettingsAction(_("Region & Language Settings"), 'gnome-region-panel.desktop'); item = this.addSettingsAction(_("Region & Language Settings"), 'gnome-region-panel.desktop');
item.actor.can_focus = false; item.can_focus = false;
this._capturedEventId = 0; this._capturedEventId = 0;
@@ -574,7 +574,7 @@ var EmojiPager = GObject.registerClass({
'delta': GObject.ParamSpec.int( 'delta': GObject.ParamSpec.int(
'delta', 'delta', 'delta', 'delta', 'delta', 'delta',
GObject.ParamFlags.READWRITE, GObject.ParamFlags.READWRITE,
0, GLib.MAXINT32, 0) GLib.MININT32, GLib.MAXINT32, 0)
}, },
Signals: { Signals: {
'emoji': { param_types: [GObject.TYPE_STRING] }, 'emoji': { param_types: [GObject.TYPE_STRING] },

View File

@@ -238,11 +238,12 @@ var LayoutManager = GObject.registerClass({
reactive: true }); reactive: true });
this.addChrome(this.overviewGroup); this.addChrome(this.overviewGroup);
this.screenShieldGroup = new St.Widget({ name: 'screenShieldGroup', this.screenShieldGroup = new St.Widget({
visible: false, name: 'screenShieldGroup',
clip_to_allocation: true, visible: false,
layout_manager: new Clutter.BinLayout(), clip_to_allocation: true,
}); layout_manager: new Clutter.BinLayout(),
});
this.addChrome(this.screenShieldGroup); this.addChrome(this.screenShieldGroup);
this.panelBox = new St.BoxLayout({ name: 'panelBox', this.panelBox = new St.BoxLayout({ name: 'panelBox',
@@ -860,7 +861,7 @@ var LayoutManager = GObject.registerClass({
// We can't use Params.parse here because we want to drop // We can't use Params.parse here because we want to drop
// the extra values like ancestorData.actor // the extra values like ancestorData.actor
for (let prop in defaultParams) { for (let prop in defaultParams) {
if (!params.hasOwnProperty(prop)) if (!Object.prototype.hasOwnProperty.call(params, prop))
params[prop] = ancestorData[prop]; params[prop] = ancestorData[prop];
} }
@@ -1224,6 +1225,8 @@ var HotCorner = class HotCorner {
if (this.actor) if (this.actor)
this.actor.destroy(); this.actor.destroy();
this._ripples.destroy();
} }
_toggleOverview() { _toggleOverview() {

View File

@@ -108,12 +108,13 @@ var RadialShaderEffect = GObject.registerClass({
*/ */
var Lightbox = class Lightbox { var Lightbox = class Lightbox {
constructor(container, params) { constructor(container, params) {
params = Params.parse(params, { inhibitEvents: false, params = Params.parse(params, {
width: null, inhibitEvents: false,
height: null, width: null,
fadeFactor: DEFAULT_FADE_FACTOR, height: null,
radialEffect: false, fadeFactor: DEFAULT_FADE_FACTOR,
}); radialEffect: false,
});
this._container = container; this._container = container;
this._children = container.get_children(); this._children = container.get_children();
@@ -172,10 +173,13 @@ var Lightbox = class Lightbox {
} }
show(fadeInTime) { show(fadeInTime) {
fadeInTime = fadeInTime || 0;
this.actor.remove_all_transitions(); this.actor.remove_all_transitions();
let easeProps = {
duration: fadeInTime || 0,
mode: Clutter.AnimationMode.EASE_OUT_QUAD
};
let onComplete = () => { let onComplete = () => {
this.shown = true; this.shown = true;
this.emit('shown'); this.emit('shown');
@@ -183,55 +187,38 @@ var Lightbox = class Lightbox {
if (this._radialEffect) { if (this._radialEffect) {
this.actor.ease_property( this.actor.ease_property(
'@effects.radial.brightness', VIGNETTE_BRIGHTNESS, { '@effects.radial.brightness', VIGNETTE_BRIGHTNESS, easeProps);
duration: fadeInTime,
mode: Clutter.AnimationMode.EASE_OUT_QUAD
});
this.actor.ease_property( this.actor.ease_property(
'@effects.radial.sharpness', VIGNETTE_SHARPNESS, { '@effects.radial.sharpness', VIGNETTE_SHARPNESS,
duration: fadeInTime, Object.assign({ onComplete }, easeProps));
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete
});
} else { } else {
this.actor.ease({ this.actor.ease(Object.assign(easeProps, {
opacity: 255 * this._fadeFactor, opacity: 255 * this._fadeFactor,
duration: fadeInTime,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete onComplete
}); }));
} }
this.actor.show(); this.actor.show();
} }
hide(fadeOutTime) { hide(fadeOutTime) {
fadeOutTime = fadeOutTime || 0;
this.shown = false; this.shown = false;
this.actor.remove_all_transitions(); this.actor.remove_all_transitions();
let easeProps = {
duration: fadeOutTime || 0,
mode: Clutter.AnimationMode.EASE_OUT_QUAD
};
let onComplete = () => this.actor.hide(); let onComplete = () => this.actor.hide();
if (this._radialEffect) { if (this._radialEffect) {
this.actor.ease_property( this.actor.ease_property(
'@effects.radial.brightness', 1.0, { '@effects.radial.brightness', 1.0, easeProps);
duration: fadeOutTime,
mode: Clutter.AnimationMode.EASE_OUT_QUAD
});
this.actor.ease_property( this.actor.ease_property(
'@effects.radial.sharpness', 0.0, { '@effects.radial.sharpness', 0.0, Object.assign({ onComplete }, easeProps));
duration: fadeOutTime,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete
});
} else { } else {
this.actor.ease({ this.actor.ease(Object.assign(easeProps, { opacity: 0, onComplete }));
opacity: 0,
duration: fadeOutTime,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete
});
} }
} }

View File

@@ -11,12 +11,26 @@ const LOCATE_POINTER_SCHEMA = "org.gnome.desktop.interface";
var LocatePointer = class { var LocatePointer = class {
constructor() { constructor() {
this._settings = new Gio.Settings({ schema_id: LOCATE_POINTER_SCHEMA }); this._settings = new Gio.Settings({ schema_id: LOCATE_POINTER_SCHEMA });
this._ripples = new Ripples.Ripples(0.5, 0.5, 'ripple-pointer-location'); this._settings.connect(`changed::${LOCATE_POINTER_KEY}`, () => this._syncEnabled());
this._ripples.addTo(Main.uiGroup); this._syncEnabled();
}
_syncEnabled() {
let enabled = this._settings.get_boolean(LOCATE_POINTER_KEY);
if (enabled == !!this._ripples)
return;
if (enabled) {
this._ripples = new Ripples.Ripples(0.5, 0.5, 'ripple-pointer-location');
this._ripples.addTo(Main.uiGroup);
} else {
this._ripples.destroy();
this._ripples = null;
}
} }
show() { show() {
if (!this._settings.get_boolean(LOCATE_POINTER_KEY)) if (!this._ripples)
return; return;
let [x, y] = global.get_pointer(); let [x, y] = global.get_pointer();

View File

@@ -3,7 +3,6 @@
const { Clutter, Cogl, Gio, GLib, const { Clutter, Cogl, Gio, GLib,
GObject, Meta, Pango, Shell, St } = imports.gi; GObject, Meta, Pango, Shell, St } = imports.gi;
const Mainloop = imports.mainloop;
const Signals = imports.signals; const Signals = imports.signals;
const System = imports.system; const System = imports.system;
@@ -20,7 +19,6 @@ const CHEVRON = '>>> ';
/* Imports...feel free to add here as needed */ /* Imports...feel free to add here as needed */
var commandHeader = 'const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi; ' + var commandHeader = 'const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi; ' +
'const Main = imports.ui.main; ' + 'const Main = imports.ui.main; ' +
'const Mainloop = imports.mainloop; ' +
/* Utility functions...we should probably be able to use these /* Utility functions...we should probably be able to use these
* in the shell core code too. */ * in the shell core code too. */
'const stage = global.stage; ' + 'const stage = global.stage; ' +
@@ -240,7 +238,7 @@ var Notebook = class Notebook {
Signals.addSignalMethods(Notebook.prototype); Signals.addSignalMethods(Notebook.prototype);
function objectToString(o) { function objectToString(o) {
if (typeof(o) == typeof(objectToString)) { if (typeof o == typeof objectToString) {
// special case this since the default is way, way too verbose // special case this since the default is way, way too verbose
return '<js function>'; return '<js function>';
} else { } else {
@@ -306,6 +304,9 @@ var WindowList = class WindowList {
} }
_updateWindowList() { _updateWindowList() {
if (!this._lookingGlass.isOpen)
return;
this.actor.destroy_all_children(); this.actor.destroy_all_children();
let windows = global.get_window_actors(); let windows = global.get_window_actors();
let tracker = Shell.WindowTracker.get_default(); let tracker = Shell.WindowTracker.get_default();
@@ -337,6 +338,10 @@ var WindowList = class WindowList {
} }
} }
} }
update() {
this._updateWindowList();
}
}; };
Signals.addSignalMethods(WindowList.prototype); Signals.addSignalMethods(WindowList.prototype);
@@ -369,7 +374,7 @@ var ObjInspector = class ObjInspector {
let hbox = new St.BoxLayout({ style_class: 'lg-obj-inspector-title' }); let hbox = new St.BoxLayout({ style_class: 'lg-obj-inspector-title' });
this._container.add_actor(hbox); this._container.add_actor(hbox);
let label = new St.Label({ text: 'Inspecting: %s: %s'.format(typeof(obj), let label = new St.Label({ text: 'Inspecting: %s: %s'.format(typeof obj,
objectToString(obj)) }); objectToString(obj)) });
label.single_line_mode = true; label.single_line_mode = true;
hbox.add(label, { expand: true, y_fill: false }); hbox.add(label, { expand: true, y_fill: false });
@@ -387,7 +392,7 @@ var ObjInspector = class ObjInspector {
button.add_actor(new St.Icon({ icon_name: 'window-close-symbolic' })); button.add_actor(new St.Icon({ icon_name: 'window-close-symbolic' }));
button.connect('clicked', this.close.bind(this)); button.connect('clicked', this.close.bind(this));
hbox.add(button); hbox.add(button);
if (typeof(obj) == typeof({})) { if (typeof obj == typeof {}) {
let properties = []; let properties = [];
for (let propName in obj) { for (let propName in obj) {
properties.push(propName); properties.push(propName);
@@ -821,7 +826,7 @@ var LookingGlass = class LookingGlass {
gcIcon.connect('button-press-event', () => { gcIcon.connect('button-press-event', () => {
gcIcon.icon_name = 'user-trash'; gcIcon.icon_name = 'user-trash';
System.gc(); System.gc();
this._timeoutId = Mainloop.timeout_add(500, () => { this._timeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 500, () => {
gcIcon.icon_name = 'user-trash-full'; gcIcon.icon_name = 'user-trash-full';
this._timeoutId = 0; this._timeoutId = 0;
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
@@ -1010,7 +1015,11 @@ var LookingGlass = class LookingGlass {
} }
getResult(idx) { getResult(idx) {
return this._results[idx - this._offset].o; try {
return this._results[idx - this._offset].o;
} catch (e) {
throw new Error(`Unknown result at index ${idx}`);
}
} }
toggle() { toggle() {
@@ -1097,6 +1106,8 @@ var LookingGlass = class LookingGlass {
duration, duration,
mode: Clutter.AnimationMode.EASE_OUT_QUAD mode: Clutter.AnimationMode.EASE_OUT_QUAD
}); });
this._windowList.update();
} }
close() { close() {
@@ -1122,5 +1133,9 @@ var LookingGlass = class LookingGlass {
onComplete: () => this.actor.hide() onComplete: () => this.actor.hide()
}); });
} }
get isOpen() {
return this._open;
}
}; };
Signals.addSignalMethods(LookingGlass.prototype); Signals.addSignalMethods(LookingGlass.prototype);

View File

@@ -2,7 +2,6 @@
const { Atspi, Clutter, GDesktopEnums, const { Atspi, Clutter, GDesktopEnums,
Gio, GLib, GObject, Meta, Shell, St } = imports.gi; Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const Mainloop = imports.mainloop;
const Signals = imports.signals; const Signals = imports.signals;
const Background = imports.ui.background; const Background = imports.ui.background;
@@ -1144,7 +1143,7 @@ var ZoomRegion = class ZoomRegion {
_clearScrollContentsTimer() { _clearScrollContentsTimer() {
if (this._scrollContentsTimerId != 0) { if (this._scrollContentsTimerId != 0) {
Mainloop.source_remove(this._scrollContentsTimerId); GLib.source_remove(this._scrollContentsTimerId);
this._scrollContentsTimerId = 0; this._scrollContentsTimerId = 0;
} }
} }
@@ -1156,7 +1155,7 @@ var ZoomRegion = class ZoomRegion {
} }
this._clearScrollContentsTimer(); this._clearScrollContentsTimer();
this._scrollContentsTimerId = Mainloop.timeout_add(POINTER_REST_TIME, () => { this._scrollContentsTimerId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, POINTER_REST_TIME, () => {
this._scrollContentsToDelayed(x, y); this._scrollContentsToDelayed(x, y);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
}); });

View File

@@ -9,7 +9,6 @@
initializeDeferredWork, getThemeStylesheet, setThemeStylesheet */ initializeDeferredWork, getThemeStylesheet, setThemeStylesheet */
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi; const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const Mainloop = imports.mainloop;
const AccessDialog = imports.ui.accessDialog; const AccessDialog = imports.ui.accessDialog;
const AudioDeviceSelection = imports.ui.audioDeviceSelection; const AudioDeviceSelection = imports.ui.audioDeviceSelection;
@@ -620,7 +619,7 @@ function _runDeferredWork(workId) {
_deferredWorkQueue.splice(index, 1); _deferredWorkQueue.splice(index, 1);
_deferredWorkData[workId].callback(); _deferredWorkData[workId].callback();
if (_deferredWorkQueue.length == 0 && _deferredTimeoutId > 0) { if (_deferredWorkQueue.length == 0 && _deferredTimeoutId > 0) {
Mainloop.source_remove(_deferredTimeoutId); GLib.source_remove(_deferredTimeoutId);
_deferredTimeoutId = 0; _deferredTimeoutId = 0;
} }
} }
@@ -708,7 +707,7 @@ function queueDeferredWork(workId) {
_queueBeforeRedraw(workId); _queueBeforeRedraw(workId);
return; return;
} else if (_deferredTimeoutId == 0) { } else if (_deferredTimeoutId == 0) {
_deferredTimeoutId = Mainloop.timeout_add_seconds(DEFERRED_TIMEOUT_SECONDS, () => { _deferredTimeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, DEFERRED_TIMEOUT_SECONDS, () => {
_runAllDeferredWork(); _runAllDeferredWork();
_deferredTimeoutId = 0; _deferredTimeoutId = 0;
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;

View File

@@ -4,7 +4,6 @@
SystemNotificationSource, MessageTray */ SystemNotificationSource, MessageTray */
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi; const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const Mainloop = imports.mainloop;
const Signals = imports.signals; const Signals = imports.signals;
const Calendar = imports.ui.calendar; const Calendar = imports.ui.calendar;
@@ -137,13 +136,14 @@ var FocusGrabber = class FocusGrabber {
// A notification without a policy object will inherit the default one. // A notification without a policy object will inherit the default one.
var NotificationPolicy = class NotificationPolicy { var NotificationPolicy = class NotificationPolicy {
constructor(params) { constructor(params) {
params = Params.parse(params, { enable: true, params = Params.parse(params, {
enableSound: true, enable: true,
showBanners: true, enableSound: true,
forceExpanded: false, showBanners: true,
showInLockScreen: true, forceExpanded: false,
detailsInLockScreen: false showInLockScreen: true,
}); detailsInLockScreen: false,
});
Object.getOwnPropertyNames(params).forEach(key => { Object.getOwnPropertyNames(params).forEach(key => {
let desc = Object.getOwnPropertyDescriptor(params, key); let desc = Object.getOwnPropertyDescriptor(params, key);
Object.defineProperty(this, `_${key}`, desc); Object.defineProperty(this, `_${key}`, desc);
@@ -153,6 +153,7 @@ var NotificationPolicy = class NotificationPolicy {
// Do nothing for the default policy. These methods are only useful for the // Do nothing for the default policy. These methods are only useful for the
// GSettings policy. // GSettings policy.
store() { } store() { }
destroy() { } destroy() { }
get enable() { get enable() {
@@ -1004,7 +1005,6 @@ var MessageTray = class MessageTray {
_addSource(source) { _addSource(source) {
let obj = { let obj = {
source: source,
notifyId: 0, notifyId: 0,
destroyId: 0, destroyId: 0,
}; };
@@ -1091,7 +1091,7 @@ var MessageTray = class MessageTray {
_resetNotificationLeftTimeout() { _resetNotificationLeftTimeout() {
this._useLongerNotificationLeftTimeout = false; this._useLongerNotificationLeftTimeout = false;
if (this._notificationLeftTimeoutId) { if (this._notificationLeftTimeoutId) {
Mainloop.source_remove(this._notificationLeftTimeoutId); GLib.source_remove(this._notificationLeftTimeoutId);
this._notificationLeftTimeoutId = 0; this._notificationLeftTimeoutId = 0;
this._notificationLeftMouseX = -1; this._notificationLeftMouseX = -1;
this._notificationLeftMouseY = -1; this._notificationLeftMouseY = -1;
@@ -1137,7 +1137,7 @@ var MessageTray = class MessageTray {
// We wait for a longer period if the notification popped up where the mouse pointer was already positioned. // We wait for a longer period if the notification popped up where the mouse pointer was already positioned.
// That gives the user more time to mouse away from the notification and mouse back in in order to expand it. // That gives the user more time to mouse away from the notification and mouse back in in order to expand it.
let timeout = this._useLongerNotificationLeftTimeout ? LONGER_HIDE_TIMEOUT : HIDE_TIMEOUT; let timeout = this._useLongerNotificationLeftTimeout ? LONGER_HIDE_TIMEOUT : HIDE_TIMEOUT;
this._notificationLeftTimeoutId = Mainloop.timeout_add(timeout, this._onNotificationLeftTimeout.bind(this)); this._notificationLeftTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, timeout, this._onNotificationLeftTimeout.bind(this));
GLib.Source.set_name_by_id(this._notificationLeftTimeoutId, '[gnome-shell] this._onNotificationLeftTimeout'); GLib.Source.set_name_by_id(this._notificationLeftTimeoutId, '[gnome-shell] this._onNotificationLeftTimeout');
} }
} }
@@ -1166,8 +1166,10 @@ var MessageTray = class MessageTray {
x < this._notificationLeftMouseX + MOUSE_LEFT_ACTOR_THRESHOLD && x < this._notificationLeftMouseX + MOUSE_LEFT_ACTOR_THRESHOLD &&
x > this._notificationLeftMouseX - MOUSE_LEFT_ACTOR_THRESHOLD) { x > this._notificationLeftMouseX - MOUSE_LEFT_ACTOR_THRESHOLD) {
this._notificationLeftMouseX = -1; this._notificationLeftMouseX = -1;
this._notificationLeftTimeoutId = Mainloop.timeout_add(LONGER_HIDE_TIMEOUT, this._notificationLeftTimeoutId = GLib.timeout_add(
this._onNotificationLeftTimeout.bind(this)); GLib.PRIORITY_DEFAULT,
LONGER_HIDE_TIMEOUT,
this._onNotificationLeftTimeout.bind(this));
GLib.Source.set_name_by_id(this._notificationLeftTimeoutId, '[gnome-shell] this._onNotificationLeftTimeout'); GLib.Source.set_name_by_id(this._notificationLeftTimeoutId, '[gnome-shell] this._onNotificationLeftTimeout');
} else { } else {
this._notificationLeftTimeoutId = 0; this._notificationLeftTimeoutId = 0;
@@ -1345,13 +1347,13 @@ var MessageTray = class MessageTray {
_updateNotificationTimeout(timeout) { _updateNotificationTimeout(timeout) {
if (this._notificationTimeoutId) { if (this._notificationTimeoutId) {
Mainloop.source_remove(this._notificationTimeoutId); GLib.source_remove(this._notificationTimeoutId);
this._notificationTimeoutId = 0; this._notificationTimeoutId = 0;
} }
if (timeout > 0) { if (timeout > 0) {
this._notificationTimeoutId = this._notificationTimeoutId =
Mainloop.timeout_add(timeout, GLib.timeout_add(GLib.PRIORITY_DEFAULT, timeout,
this._notificationTimeout.bind(this)); this._notificationTimeout.bind(this));
GLib.Source.set_name_by_id(this._notificationTimeoutId, '[gnome-shell] this._notificationTimeout'); GLib.Source.set_name_by_id(this._notificationTimeoutId, '[gnome-shell] this._notificationTimeout');
} }
} }

View File

@@ -2,7 +2,6 @@
/* exported NotificationDaemon */ /* exported NotificationDaemon */
const { GdkPixbuf, Gio, GLib, Shell, St } = imports.gi; const { GdkPixbuf, Gio, GLib, Shell, St } = imports.gi;
const Mainloop = imports.mainloop;
const Config = imports.misc.config; const Config = imports.misc.config;
const Main = imports.ui.main; const Main = imports.ui.main;
@@ -171,7 +170,7 @@ var FdoNotificationDaemon = class FdoNotificationDaemon {
// Ignore replacesId since we already sent back a // Ignore replacesId since we already sent back a
// NotificationClosed for that id. // NotificationClosed for that id.
id = this._nextNotificationId++; id = this._nextNotificationId++;
let idleId = Mainloop.idle_add(() => { let idleId = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
this._emitNotificationClosed(id, NotificationClosedReason.DISMISSED); this._emitNotificationClosed(id, NotificationClosedReason.DISMISSED);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
}); });
@@ -750,29 +749,33 @@ var GtkNotificationDaemon = class GtkNotificationDaemon {
_loadNotifications() { _loadNotifications() {
this._isLoading = true; this._isLoading = true;
let value = global.get_persistent_state('a(sa(sv))', 'notifications'); try {
if (value) { let value = global.get_persistent_state('a(sa(sv))', 'notifications');
let sources = value.deep_unpack(); if (value) {
sources.forEach(([appId, notifications]) => { let sources = value.deep_unpack();
if (notifications.length == 0) sources.forEach(([appId, notifications]) => {
return; if (notifications.length == 0)
let source;
try {
source = this._ensureAppSource(appId);
} catch (e) {
if (e instanceof InvalidAppError)
return; return;
throw e;
}
notifications.forEach(([notificationId, notification]) => { let source;
source.addNotification(notificationId, notification.deep_unpack(), false); try {
source = this._ensureAppSource(appId);
} catch (e) {
if (e instanceof InvalidAppError)
return;
throw e;
}
notifications.forEach(([notificationId, notification]) => {
source.addNotification(notificationId, notification.deep_unpack(), false);
});
}); });
}); }
} catch (e) {
logError(e, 'Failed to load saved notifications');
} finally {
this._isLoading = false;
} }
this._isLoading = false;
} }
_saveNotifications() { _saveNotifications() {

View File

@@ -2,7 +2,6 @@
/* exported OsdWindowManager */ /* exported OsdWindowManager */
const { Clutter, GLib, GObject, Meta, St } = imports.gi; const { Clutter, GLib, GObject, Meta, St } = imports.gi;
const Mainloop = imports.mainloop;
const BarLevel = imports.ui.barLevel; const BarLevel = imports.ui.barLevel;
const Layout = imports.ui.layout; const Layout = imports.ui.layout;
@@ -143,9 +142,9 @@ var OsdWindow = class {
} }
if (this._hideTimeoutId) if (this._hideTimeoutId)
Mainloop.source_remove(this._hideTimeoutId); GLib.source_remove(this._hideTimeoutId);
this._hideTimeoutId = Mainloop.timeout_add(HIDE_TIMEOUT, this._hideTimeoutId = GLib.timeout_add(
this._hide.bind(this)); GLib.PRIORITY_DEFAULT, HIDE_TIMEOUT, this._hide.bind(this));
GLib.Source.set_name_by_id(this._hideTimeoutId, '[gnome-shell] this._hide'); GLib.Source.set_name_by_id(this._hideTimeoutId, '[gnome-shell] this._hide');
} }
@@ -153,7 +152,7 @@ var OsdWindow = class {
if (!this._hideTimeoutId) if (!this._hideTimeoutId)
return; return;
Mainloop.source_remove(this._hideTimeoutId); GLib.source_remove(this._hideTimeoutId);
this._hide(); this._hide();
} }

View File

@@ -2,7 +2,6 @@
/* exported Overview */ /* exported Overview */
const { Clutter, GLib, Meta, Shell, St } = imports.gi; const { Clutter, GLib, Meta, Shell, St } = imports.gi;
const Mainloop = imports.mainloop;
const Signals = imports.signals; const Signals = imports.signals;
const Background = imports.ui.background; const Background = imports.ui.background;
@@ -43,9 +42,10 @@ var ShellInfo = class {
} }
setMessage(text, options) { setMessage(text, options) {
options = Params.parse(options, { undoCallback: null, options = Params.parse(options, {
forFeedback: false undoCallback: null,
}); forFeedback: false,
});
let undoCallback = options.undoCallback; let undoCallback = options.undoCallback;
let forFeedback = options.forFeedback; let forFeedback = options.forFeedback;
@@ -300,7 +300,7 @@ var Overview = class {
_resetWindowSwitchTimeout() { _resetWindowSwitchTimeout() {
if (this._windowSwitchTimeoutId != 0) { if (this._windowSwitchTimeoutId != 0) {
Mainloop.source_remove(this._windowSwitchTimeoutId); GLib.source_remove(this._windowSwitchTimeoutId);
this._windowSwitchTimeoutId = 0; this._windowSwitchTimeoutId = 0;
} }
} }
@@ -323,7 +323,9 @@ var Overview = class {
if (targetIsWindow) { if (targetIsWindow) {
this._lastHoveredWindow = dragEvent.targetActor._delegate.metaWindow; this._lastHoveredWindow = dragEvent.targetActor._delegate.metaWindow;
this._windowSwitchTimeoutId = Mainloop.timeout_add(DND_WINDOW_SWITCH_TIMEOUT, this._windowSwitchTimeoutId = GLib.timeout_add(
GLib.PRIORITY_DEFAULT,
DND_WINDOW_SWITCH_TIMEOUT,
() => { () => {
this._windowSwitchTimeoutId = 0; this._windowSwitchTimeoutId = 0;
Main.activateWindow(dragEvent.targetActor._delegate.metaWindow, Main.activateWindow(dragEvent.targetActor._delegate.metaWindow,
@@ -481,15 +483,13 @@ var Overview = class {
if (this._shown) { if (this._shown) {
let shouldBeModal = !this._inXdndDrag; let shouldBeModal = !this._inXdndDrag;
if (shouldBeModal) { if (shouldBeModal && !this._modal) {
if (!this._modal) { let actionMode = Shell.ActionMode.OVERVIEW;
if (Main.pushModal(this._overview, if (Main.pushModal(this._overview, { actionMode })) {
{ actionMode: Shell.ActionMode.OVERVIEW })) { this._modal = true;
this._modal = true; } else {
} else { this.hide();
this.hide(); return false;
return false;
}
} }
} }
} else { } else {

View File

@@ -248,6 +248,7 @@ var SlidingControl = class {
// selector; this means we can now safely set the full slide for // selector; this means we can now safely set the full slide for
// the next page, since slideIn or slideOut might have been called, // the next page, since slideIn or slideOut might have been called,
// changing the visiblity // changing the visiblity
this.actor.remove_transition('@layout.slide-x');
this.layout.slide_x = this._getSlide(); this.layout.slide_x = this._getSlide();
this._updateTranslation(); this._updateTranslation();
} }

View File

@@ -3,7 +3,6 @@
const { Atk, Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi; const { Atk, Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const Cairo = imports.cairo; const Cairo = imports.cairo;
const Mainloop = imports.mainloop;
const Animation = imports.ui.animation; const Animation = imports.ui.animation;
const Config = imports.misc.config; const Config = imports.misc.config;
@@ -451,8 +450,8 @@ class ActivitiesButton extends PanelMenu.Button {
return DND.DragMotionResult.CONTINUE; return DND.DragMotionResult.CONTINUE;
if (this._xdndTimeOut != 0) if (this._xdndTimeOut != 0)
Mainloop.source_remove(this._xdndTimeOut); GLib.source_remove(this._xdndTimeOut);
this._xdndTimeOut = Mainloop.timeout_add(BUTTON_DND_ACTIVATION_TIMEOUT, () => { this._xdndTimeOut = GLib.timeout_add(GLib.PRIORITY_DEFAULT, BUTTON_DND_ACTIVATION_TIMEOUT, () => {
this._xdndToggleOverview(); this._xdndToggleOverview();
}); });
GLib.Source.set_name_by_id(this._xdndTimeOut, '[gnome-shell] this._xdndToggleOverview'); GLib.Source.set_name_by_id(this._xdndTimeOut, '[gnome-shell] this._xdndToggleOverview');
@@ -496,7 +495,7 @@ class ActivitiesButton extends PanelMenu.Button {
if (pickedActor == this && Main.overview.shouldToggleByCornerOrButton()) if (pickedActor == this && Main.overview.shouldToggleByCornerOrButton())
Main.overview.toggle(); Main.overview.toggle();
Mainloop.source_remove(this._xdndTimeOut); GLib.source_remove(this._xdndTimeOut);
this._xdndTimeOut = 0; this._xdndTimeOut = 0;
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
} }

View File

@@ -1,5 +1,5 @@
/* exported PointerA11yTimeout */ /* exported PointerA11yTimeout */
const { Clutter, GLib, GObject, Meta, St } = imports.gi; const { Clutter, GObject, Meta, St } = imports.gi;
const Main = imports.ui.main; const Main = imports.ui.main;
const Cairo = imports.cairo; const Cairo = imports.cairo;

View File

@@ -2,7 +2,6 @@
/* exported getPointerWatcher */ /* exported getPointerWatcher */
const { GLib, Meta } = imports.gi; const { GLib, Meta } = imports.gi;
const Mainloop = imports.mainloop;
// We stop polling if the user is idle for more than this amount of time // We stop polling if the user is idle for more than this amount of time
var IDLE_TIME = 1000; var IDLE_TIME = 1000;
@@ -87,7 +86,7 @@ var PointerWatcher = class {
_updateTimeout() { _updateTimeout() {
if (this._timeoutId) { if (this._timeoutId) {
Mainloop.source_remove(this._timeoutId); GLib.source_remove(this._timeoutId);
this._timeoutId = 0; this._timeoutId = 0;
} }
@@ -98,8 +97,8 @@ var PointerWatcher = class {
for (let i = 1; i < this._watches.length; i++) for (let i = 1; i < this._watches.length; i++)
minInterval = Math.min(this._watches[i].interval, minInterval); minInterval = Math.min(this._watches[i].interval, minInterval);
this._timeoutId = Mainloop.timeout_add(minInterval, this._timeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, minInterval,
this._onTimeout.bind(this)); this._onTimeout.bind(this));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout'); GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout');
} }

View File

@@ -57,11 +57,9 @@ var PopupBaseMenuItem = GObject.registerClass({
Properties: { Properties: {
'active': GObject.ParamSpec.boolean('active', 'active', 'active', 'active': GObject.ParamSpec.boolean('active', 'active', 'active',
GObject.ParamFlags.READWRITE, GObject.ParamFlags.READWRITE,
GObject.TYPE_BOOLEAN,
false), false),
'sensitive': GObject.ParamSpec.boolean('sensitive', 'sensitive', 'sensitive', 'sensitive': GObject.ParamSpec.boolean('sensitive', 'sensitive', 'sensitive',
GObject.ParamFlags.READWRITE, GObject.ParamFlags.READWRITE,
GObject.TYPE_BOOLEAN,
true), true),
}, },
Signals: { Signals: {
@@ -69,12 +67,13 @@ var PopupBaseMenuItem = GObject.registerClass({
} }
}, class PopupBaseMenuItem extends St.BoxLayout { }, class PopupBaseMenuItem extends St.BoxLayout {
_init(params) { _init(params) {
params = Params.parse (params, { reactive: true, params = Params.parse (params, {
activate: true, reactive: true,
hover: true, activate: true,
style_class: null, hover: true,
can_focus: true style_class: null,
}); can_focus: true,
});
super._init({ style_class: 'popup-menu-item', super._init({ style_class: 'popup-menu-item',
reactive: params.reactive, reactive: params.reactive,
track_hover: params.reactive, track_hover: params.reactive,
@@ -333,9 +332,10 @@ var PopupSwitchMenuItem = GObject.registerClass({
this._statusBin = new St.Bin({ x_align: St.Align.END }); this._statusBin = new St.Bin({ x_align: St.Align.END });
this.add(this._statusBin, { expand: true, x_align: St.Align.END }); this.add(this._statusBin, { expand: true, x_align: St.Align.END });
this._statusLabel = new St.Label({ text: '', this._statusLabel = new St.Label({
style_class: 'popup-status-menu-item' text: '',
}); style_class: 'popup-status-menu-item',
});
this._statusBin.child = this._switch; this._statusBin.child = this._switch;
} }

View File

@@ -34,6 +34,12 @@ var Ripples = class Ripples {
this._ripple3.set_pivot_point(px, py); this._ripple3.set_pivot_point(px, py);
} }
destroy() {
this._ripple1.destroy();
this._ripple2.destroy();
this._ripple3.destroy();
}
_animRipple(ripple, delay, duration, startScale, startOpacity, finalScale) { _animRipple(ripple, delay, duration, startScale, startOpacity, finalScale) {
// We draw a ripple by using a source image and animating it scaling // We draw a ripple by using a source image and animating it scaling
// outwards and fading away. We want the ripples to move linearly // outwards and fading away. We want the ripples to move linearly

View File

@@ -94,9 +94,11 @@ class RunDialog extends ModalDialog.ModalDialog {
this._errorBox.hide(); this._errorBox.hide();
this.setButtons([{ action: this.close.bind(this), this.setButtons([{
label: _("Close"), action: this.close.bind(this),
key: Clutter.Escape }]); label: _("Close"),
key: Clutter.Escape,
}]);
this._pathCompleter = new Gio.FilenameCompleter(); this._pathCompleter = new Gio.FilenameCompleter();

View File

@@ -3,7 +3,6 @@
const { AccountsService, Clutter, Cogl, Gio, GLib, const { AccountsService, Clutter, Cogl, Gio, GLib,
GnomeDesktop, GObject, Meta, Shell, St } = imports.gi; GnomeDesktop, GObject, Meta, Shell, St } = imports.gi;
const Cairo = imports.cairo; const Cairo = imports.cairo;
const Mainloop = imports.mainloop;
const Signals = imports.signals; const Signals = imports.signals;
const Background = imports.ui.background; const Background = imports.ui.background;
@@ -430,13 +429,14 @@ var ScreenShield = class {
this.actor = Main.layoutManager.screenShieldGroup; this.actor = Main.layoutManager.screenShieldGroup;
this._lockScreenState = MessageTray.State.HIDDEN; this._lockScreenState = MessageTray.State.HIDDEN;
this._lockScreenGroup = new St.Widget({ x_expand: true, this._lockScreenGroup = new St.Widget({
y_expand: true, x_expand: true,
reactive: true, y_expand: true,
can_focus: true, reactive: true,
name: 'lockScreenGroup', can_focus: true,
visible: false, name: 'lockScreenGroup',
}); visible: false,
});
this._lockScreenGroup.connect('key-press-event', this._lockScreenGroup.connect('key-press-event',
this._onLockScreenKeyPress.bind(this)); this._onLockScreenKeyPress.bind(this));
this._lockScreenGroup.connect('scroll-event', this._lockScreenGroup.connect('scroll-event',
@@ -833,12 +833,14 @@ var ScreenShield = class {
let lockTimeout = Math.max( let lockTimeout = Math.max(
STANDARD_FADE_TIME, STANDARD_FADE_TIME,
this._settings.get_uint(LOCK_DELAY_KEY) * 1000); this._settings.get_uint(LOCK_DELAY_KEY) * 1000);
this._lockTimeoutId = Mainloop.timeout_add(lockTimeout, this._lockTimeoutId = GLib.timeout_add(
() => { GLib.PRIORITY_DEFAULT,
this._lockTimeoutId = 0; lockTimeout,
this.lock(false); () => {
return GLib.SOURCE_REMOVE; this._lockTimeoutId = 0;
}); this.lock(false);
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(this._lockTimeoutId, '[gnome-shell] this.lock'); GLib.Source.set_name_by_id(this._lockTimeoutId, '[gnome-shell] this.lock');
} }
@@ -1028,7 +1030,7 @@ var ScreenShield = class {
this._arrowActiveWatchId = 0; this._arrowActiveWatchId = 0;
if (!this._arrowAnimationId) { if (!this._arrowAnimationId) {
this._arrowAnimationId = Mainloop.timeout_add(6000, this._animateArrows.bind(this)); this._arrowAnimationId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 6000, this._animateArrows.bind(this));
GLib.Source.set_name_by_id(this._arrowAnimationId, '[gnome-shell] this._animateArrows'); GLib.Source.set_name_by_id(this._arrowAnimationId, '[gnome-shell] this._animateArrows');
this._animateArrows(); this._animateArrows();
} }
@@ -1040,7 +1042,7 @@ var ScreenShield = class {
_pauseArrowAnimation() { _pauseArrowAnimation() {
if (this._arrowAnimationId) { if (this._arrowAnimationId) {
Mainloop.source_remove(this._arrowAnimationId); GLib.source_remove(this._arrowAnimationId);
this._arrowAnimationId = 0; this._arrowAnimationId = 0;
} }
@@ -1050,7 +1052,7 @@ var ScreenShield = class {
_stopArrowAnimation() { _stopArrowAnimation() {
if (this._arrowAnimationId) { if (this._arrowAnimationId) {
Mainloop.source_remove(this._arrowAnimationId); GLib.source_remove(this._arrowAnimationId);
this._arrowAnimationId = 0; this._arrowAnimationId = 0;
} }
if (this._arrowActiveWatchId) { if (this._arrowActiveWatchId) {
@@ -1097,7 +1099,7 @@ var ScreenShield = class {
if (params.fadeToBlack && params.animateFade) { if (params.fadeToBlack && params.animateFade) {
// Take a beat // Take a beat
let id = Mainloop.timeout_add(MANUAL_FADE_TIME, () => { let id = GLib.timeout_add(GLib.PRIORITY_DEFAULT, MANUAL_FADE_TIME, () => {
this._activateFade(this._shortLightbox, MANUAL_FADE_TIME); this._activateFade(this._shortLightbox, MANUAL_FADE_TIME);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
}); });
@@ -1240,7 +1242,7 @@ var ScreenShield = class {
} }
if (this._lockTimeoutId != 0) { if (this._lockTimeoutId != 0) {
Mainloop.source_remove(this._lockTimeoutId); GLib.source_remove(this._lockTimeoutId);
this._lockTimeoutId = 0; this._lockTimeoutId = 0;
} }

View File

@@ -271,7 +271,7 @@ var SelectArea = class {
} }
_onMotionEvent(actor, event) { _onMotionEvent(actor, event) {
if (this._startX == -1 || this._startY == -1) if (this._startX == -1 || this._startY == -1 || this._result)
return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_PROPAGATE;
[this._lastX, this._lastY] = event.get_coords(); [this._lastX, this._lastY] = event.get_coords();

View File

@@ -4,7 +4,6 @@
collectStatistics, runPerfScript */ collectStatistics, runPerfScript */
const { Gio, GLib, Meta, Shell } = imports.gi; const { Gio, GLib, Meta, Shell } = imports.gi;
const Mainloop = imports.mainloop;
const Main = imports.ui.main; const Main = imports.ui.main;
const Params = imports.misc.params; const Params = imports.misc.params;
@@ -41,7 +40,7 @@ const { loadInterfaceXML } = imports.misc.fileUtils;
*/ */
function sleep(milliseconds) { function sleep(milliseconds) {
return new Promise(resolve => { return new Promise(resolve => {
let id = Mainloop.timeout_add(milliseconds, () => { let id = GLib.timeout_add(GLib.PRIORITY_DEFAULT, milliseconds, () => {
resolve(); resolve();
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
}); });

View File

@@ -158,10 +158,15 @@ var SearchResultsBase = class {
this._clipboard = St.Clipboard.get_default(); this._clipboard = St.Clipboard.get_default();
this._cancellable = new Gio.Cancellable(); this._cancellable = new Gio.Cancellable();
this.actor.connect('destroy', this._onDestroy.bind(this));
} }
destroy() { destroy() {
this.actor.destroy(); this.actor.destroy();
}
_onDestroy() {
this._terms = []; this._terms = [];
} }
@@ -341,14 +346,30 @@ var GridSearchResults = class extends SearchResultsBase {
this._resultDisplayBin.set_child(this._bin); this._resultDisplayBin.set_child(this._bin);
} }
_onDestroy() {
if (this._updateSearchLater) {
Meta.later_remove(this._updateSearchLater);
delete this._updateSearchLater;
}
super._onDestroy();
}
updateSearch(...args) { updateSearch(...args) {
if (this._notifyAllocationId) if (this._notifyAllocationId)
this.actor.disconnect(this._notifyAllocationId); this.actor.disconnect(this._notifyAllocationId);
if (this._updateSearchLater) {
Meta.later_remove(this._updateSearchLater);
delete this._updateSearchLater;
}
// Make sure the maximum number of results calculated by // Make sure the maximum number of results calculated by
// _getMaxDisplayedResults() is updated after width changes. // _getMaxDisplayedResults() is updated after width changes.
this._notifyAllocationId = this.actor.connect('notify::allocation', () => { this._notifyAllocationId = this.actor.connect('notify::allocation', () => {
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => { if (this._updateSearchLater)
return;
this._updateSearchLater = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
delete this._updateSearchLater;
super.updateSearch(...args); super.updateSearch(...args);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
}); });

View File

@@ -2,7 +2,6 @@
/* exported SessionMode, listModes */ /* exported SessionMode, listModes */
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
const Mainloop = imports.mainloop;
const Signals = imports.signals; const Signals = imports.signals;
const FileUtils = imports.misc.fileUtils; const FileUtils = imports.misc.fileUtils;
@@ -112,7 +111,7 @@ function _loadMode(file, info) {
let suffix = name.indexOf('.json'); let suffix = name.indexOf('.json');
let modeName = suffix == -1 ? name : name.slice(name, suffix); let modeName = suffix == -1 ? name : name.slice(name, suffix);
if (_modes.hasOwnProperty(modeName)) if (Object.prototype.hasOwnProperty.call(_modes, modeName))
return; return;
let fileContent, success_, newMode; let fileContent, success_, newMode;
@@ -141,15 +140,16 @@ function _loadModes() {
function listModes() { function listModes() {
_loadModes(); _loadModes();
let id = Mainloop.idle_add(() => { let loop = new GLib.MainLoop(null, false);
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
let names = Object.getOwnPropertyNames(_modes); let names = Object.getOwnPropertyNames(_modes);
for (let i = 0; i < names.length; i++) for (let i = 0; i < names.length; i++)
if (_modes[names[i]].isPrimary) if (_modes[names[i]].isPrimary)
print(names[i]); print(names[i]);
Mainloop.quit('listModes'); loop.quit();
}); });
GLib.Source.set_name_by_id(id, '[gnome-shell] listModes'); GLib.Source.set_name_by_id(id, '[gnome-shell] listModes');
Mainloop.run('listModes'); loop.run();
} }
var SessionMode = class { var SessionMode = class {

View File

@@ -26,9 +26,10 @@ function _setButtonsForChoices(dialog, choices) {
for (let idx = 0; idx < choices.length; idx++) { for (let idx = 0; idx < choices.length; idx++) {
let button = idx; let button = idx;
buttons.unshift({ label: choices[idx], buttons.unshift({
action: () => dialog.emit('response', button) label: choices[idx],
}); action: () => dialog.emit('response', button),
});
} }
dialog.setButtons(buttons); dialog.setButtons(buttons);
@@ -387,24 +388,26 @@ var ShellMountPasswordDialog = GObject.registerClass({
this._rememberChoice = null; this._rememberChoice = null;
} }
this._defaultButtons = [{ label: _("Cancel"), this._defaultButtons = [{
action: this._onCancelButton.bind(this), label: _("Cancel"),
key: Clutter.Escape action: this._onCancelButton.bind(this),
}, key: Clutter.Escape,
{ label: _("Unlock"), }, {
action: this._onUnlockButton.bind(this), label: _("Unlock"),
default: true action: this._onUnlockButton.bind(this),
}]; default: true,
}];
this._usesKeyfilesButtons = [{ label: _("Cancel"), this._usesKeyfilesButtons = [{
action: this._onCancelButton.bind(this), label: _("Cancel"),
key: Clutter.Escape action: this._onCancelButton.bind(this),
}, key: Clutter.Escape,
{ /* Translators: %s is the Disks application */ }, {
label: _("Open %s").format(disksApp.get_name()), /* Translators: %s is the Disks application */
action: this._onOpenDisksButton.bind(this), label: _("Open %s").format(disksApp.get_name()),
default: true action: this._onOpenDisksButton.bind(this),
}]; default: true,
}];
this.setButtons(this._defaultButtons); this.setButtons(this._defaultButtons);
} }

View File

@@ -2,7 +2,6 @@
/* exported ATIndicator */ /* exported ATIndicator */
const { Gio, GLib, GObject, St } = imports.gi; const { Gio, GLib, GObject, St } = imports.gi;
const Mainloop = imports.mainloop;
const PanelMenu = imports.ui.panelMenu; const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
@@ -96,7 +95,7 @@ class ATIndicator extends PanelMenu.Button {
if (this._syncMenuVisibilityIdle) if (this._syncMenuVisibilityIdle)
return; return;
this._syncMenuVisibilityIdle = Mainloop.idle_add(this._syncMenuVisibility.bind(this)); this._syncMenuVisibilityIdle = GLib.idle_add(GLib.PRIORITY_DEFAULT, this._syncMenuVisibility.bind(this));
GLib.Source.set_name_by_id(this._syncMenuVisibilityIdle, '[gnome-shell] this._syncMenuVisibility'); GLib.Source.set_name_by_id(this._syncMenuVisibilityIdle, '[gnome-shell] this._syncMenuVisibility');
} }

View File

@@ -13,8 +13,8 @@ const PanelMenu = imports.ui.panelMenu;
const SwitcherPopup = imports.ui.switcherPopup; const SwitcherPopup = imports.ui.switcherPopup;
const Util = imports.misc.util; const Util = imports.misc.util;
const INPUT_SOURCE_TYPE_XKB = 'xkb'; var INPUT_SOURCE_TYPE_XKB = 'xkb';
const INPUT_SOURCE_TYPE_IBUS = 'ibus'; var INPUT_SOURCE_TYPE_IBUS = 'ibus';
var LayoutMenuItem = GObject.registerClass( var LayoutMenuItem = GObject.registerClass(
class LayoutMenuItem extends PopupMenu.PopupBaseMenuItem { class LayoutMenuItem extends PopupMenu.PopupBaseMenuItem {

View File

@@ -1,7 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported NMApplet */ /* exported NMApplet */
const { Clutter, Gio, GLib, GObject, NM, St } = imports.gi; const { Clutter, Gio, GLib, GObject, NM, St } = imports.gi;
const Mainloop = imports.mainloop;
const Signals = imports.signals; const Signals = imports.signals;
const Animation = imports.ui.animation; const Animation = imports.ui.animation;
@@ -719,7 +718,7 @@ class NMWirelessDialog extends ModalDialog.ModalDialog {
this._updateSensitivity(); this._updateSensitivity();
this._syncView(); this._syncView();
this._scanTimeoutId = Mainloop.timeout_add_seconds(15, this._onScanTimeout.bind(this)); this._scanTimeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 15, this._onScanTimeout.bind(this));
GLib.Source.set_name_by_id(this._scanTimeoutId, '[gnome-shell] this._onScanTimeout'); GLib.Source.set_name_by_id(this._scanTimeoutId, '[gnome-shell] this._onScanTimeout');
this._onScanTimeout(); this._onScanTimeout();
@@ -757,7 +756,7 @@ class NMWirelessDialog extends ModalDialog.ModalDialog {
} }
if (this._scanTimeoutId) { if (this._scanTimeoutId) {
Mainloop.source_remove(this._scanTimeoutId); GLib.source_remove(this._scanTimeoutId);
this._scanTimeoutId = 0; this._scanTimeoutId = 0;
} }
} }
@@ -874,7 +873,7 @@ class NMWirelessDialog extends ModalDialog.ModalDialog {
this._airplaneHeadline = new St.Label({ style_class: 'nm-dialog-airplane-headline headline' }); this._airplaneHeadline = new St.Label({ style_class: 'nm-dialog-airplane-headline headline' });
this._airplaneText = new St.Label({ style_class: 'nm-dialog-airplane-text' }); this._airplaneText = new St.Label({ style_class: 'nm-dialog-airplane-text' });
let airplaneSubStack = new St.Widget({ layout_manager: new Clutter.BinLayout }); let airplaneSubStack = new St.Widget({ layout_manager: new Clutter.BinLayout() });
this._airplaneButton = new St.Button({ style_class: 'modal-dialog-button button' }); this._airplaneButton = new St.Button({ style_class: 'modal-dialog-button button' });
this._airplaneButton.connect('clicked', () => { this._airplaneButton.connect('clicked', () => {
if (this._rfkill.airplaneMode) if (this._rfkill.airplaneMode)
@@ -1074,13 +1073,14 @@ class NMWirelessDialog extends ModalDialog.ModalDialog {
this._resortItems(); this._resortItems();
} else { } else {
network = { ssid: accessPoint.get_ssid(), network = {
mode: accessPoint.mode, ssid: accessPoint.get_ssid(),
security: this._getApSecurityType(accessPoint), mode: accessPoint.mode,
connections: [], security: this._getApSecurityType(accessPoint),
item: null, connections: [],
accessPoints: [accessPoint] item: null,
}; accessPoints: [accessPoint],
};
network.ssidText = ssidToLabel(network.ssid); network.ssidText = ssidToLabel(network.ssid);
this._checkConnections(network, accessPoint); this._checkConnections(network, accessPoint);

View File

@@ -110,7 +110,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
// The icons // The icons
let chargingState = this._proxy.State == UPower.DeviceState.CHARGING let chargingState = this._proxy.State == UPower.DeviceState.CHARGING
? '-charging' : ''; ? '-charging' : '';
let fillLevel = 10 * Math.floor(this._proxy.Percentage / 10); let fillLevel = 10 * Math.ceil(this._proxy.Percentage / 10);
let icon = this._proxy.State == UPower.DeviceState.FULLY_CHARGED let icon = this._proxy.State == UPower.DeviceState.FULLY_CHARGED
? 'battery-level-100-charged-symbolic' ? 'battery-level-100-charged-symbolic'
: `battery-level-${fillLevel}${chargingState}-symbolic`; : `battery-level-${fillLevel}${chargingState}-symbolic`;

View File

@@ -137,15 +137,6 @@ var Indicator = class extends PanelMenu.SystemIndicator {
this._sessionUpdated(); this._sessionUpdated();
} }
_updateActionsVisibility() {
let visible = (this._settingsAction.visible ||
this._orientationLockAction.visible ||
this._lockScreenAction.visible ||
this._altSwitcher.actor.visible);
this.buttonGroup.visible = visible;
}
_sessionUpdated() { _sessionUpdated() {
this._settingsAction.visible = Main.sessionMode.allowSettings; this._settingsAction.visible = Main.sessionMode.allowSettings;
} }
@@ -253,7 +244,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
this._orientationLockAction = this._createActionButton('', _("Orientation Lock")); this._orientationLockAction = this._createActionButton('', _("Orientation Lock"));
this._orientationLockAction.connect('clicked', () => { this._orientationLockAction.connect('clicked', () => {
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE), this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
this._systemActions.activateLockOrientation(); this._systemActions.activateLockOrientation();
}); });
item.add(this._orientationLockAction, { expand: true, x_fill: false }); item.add(this._orientationLockAction, { expand: true, x_fill: false });
@@ -302,15 +293,18 @@ var Indicator = class extends PanelMenu.SystemIndicator {
this.menu.addMenuItem(item); this.menu.addMenuItem(item);
let visibilityGroup = [
this._settingsAction,
this._orientationLockAction,
this._lockScreenAction,
this._altSwitcher.actor,
];
this._settingsAction.connect('notify::visible', for (let actor of visibilityGroup) {
() => this._updateActionsVisibility()); actor.connect('notify::visible', () => {
this._orientationLockAction.connect('notify::visible', this.buttonGroup.visible = visibilityGroup.some(a => a.visible);
() => this._updateActionsVisibility()); });
this._lockScreenAction.connect('notify::visible', }
() => this._updateActionsVisibility());
this._altSwitcher.actor.connect('notify::visible',
() => this._updateActionsVisibility());
} }
_onSettingsClicked() { _onSettingsClicked() {

View File

@@ -1,7 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported Indicator */ /* exported Indicator */
const { Clutter, Gio, Gvc, St } = imports.gi; const { Clutter, Gio, GObject, Gvc, St } = imports.gi;
const Signals = imports.signals; const Signals = imports.signals;
const Main = imports.ui.main; const Main = imports.ui.main;
@@ -36,7 +36,8 @@ var StreamSlider = class {
this._soundSettings.connect(`changed::${ALLOW_AMPLIFIED_VOLUME_KEY}`, this._amplifySettingsChanged.bind(this)); this._soundSettings.connect(`changed::${ALLOW_AMPLIFIED_VOLUME_KEY}`, this._amplifySettingsChanged.bind(this));
this._amplifySettingsChanged(); this._amplifySettingsChanged();
this._slider.connect('notify::value', this._sliderChanged.bind(this)); this._sliderChangedId = this._slider.connect('notify::value',
this._sliderChanged.bind(this));
this._slider.connect('drag-end', this._notifyVolumeChange.bind(this)); this._slider.connect('drag-end', this._notifyVolumeChange.bind(this));
this._icon = new St.Icon({ style_class: 'popup-menu-icon' }); this._icon = new St.Icon({ style_class: 'popup-menu-icon' });
@@ -129,10 +130,16 @@ var StreamSlider = class {
this._volumeCancellable); this._volumeCancellable);
} }
_changeSlider(value) {
GObject.signal_handler_block(this._slider, this._sliderChangedId);
this._slider.value = value;
GObject.signal_handler_unblock(this._slider, this._sliderChangedId);
}
_updateVolume() { _updateVolume() {
let muted = this._stream.is_muted; let muted = this._stream.is_muted;
this._slider.value = muted this._changeSlider(muted
? 0 : (this._stream.volume / this._control.get_vol_max_norm()); ? 0 : (this._stream.volume / this._control.get_vol_max_norm()));
this.emit('stream-updated'); this.emit('stream-updated');
} }

View File

@@ -2,7 +2,6 @@
/* exported SwitcherPopup, SwitcherList */ /* exported SwitcherPopup, SwitcherList */
const { Clutter, GLib, GObject, Meta, St } = imports.gi; const { Clutter, GLib, GObject, Meta, St } = imports.gi;
const Mainloop = imports.mainloop;
const Main = imports.ui.main; const Main = imports.ui.main;
@@ -142,13 +141,15 @@ var SwitcherPopup = GObject.registerClass({
// We delay showing the popup so that fast Alt+Tab users aren't // We delay showing the popup so that fast Alt+Tab users aren't
// disturbed by the popup briefly flashing. // disturbed by the popup briefly flashing.
this._initialDelayTimeoutId = Mainloop.timeout_add(POPUP_DELAY_TIMEOUT, this._initialDelayTimeoutId = GLib.timeout_add(
() => { GLib.PRIORITY_DEFAULT,
Main.osdWindowManager.hideAll(); POPUP_DELAY_TIMEOUT,
this.opacity = 255; () => {
this._initialDelayTimeoutId = 0; Main.osdWindowManager.hideAll();
return GLib.SOURCE_REMOVE; this.opacity = 255;
}); this._initialDelayTimeoutId = 0;
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(this._initialDelayTimeoutId, '[gnome-shell] Main.osdWindow.cancel'); GLib.Source.set_name_by_id(this._initialDelayTimeoutId, '[gnome-shell] Main.osdWindow.cancel');
return true; return true;
} }
@@ -249,9 +250,9 @@ var SwitcherPopup = GObject.registerClass({
this.mouseActive = false; this.mouseActive = false;
if (this._motionTimeoutId != 0) if (this._motionTimeoutId != 0)
Mainloop.source_remove(this._motionTimeoutId); GLib.source_remove(this._motionTimeoutId);
this._motionTimeoutId = Mainloop.timeout_add(DISABLE_HOVER_TIMEOUT, this._mouseTimedOut.bind(this)); this._motionTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, DISABLE_HOVER_TIMEOUT, this._mouseTimedOut.bind(this));
GLib.Source.set_name_by_id(this._motionTimeoutId, '[gnome-shell] this._mouseTimedOut'); GLib.Source.set_name_by_id(this._motionTimeoutId, '[gnome-shell] this._mouseTimedOut');
} }
@@ -263,14 +264,16 @@ var SwitcherPopup = GObject.registerClass({
_resetNoModsTimeout() { _resetNoModsTimeout() {
if (this._noModsTimeoutId != 0) if (this._noModsTimeoutId != 0)
Mainloop.source_remove(this._noModsTimeoutId); GLib.source_remove(this._noModsTimeoutId);
this._noModsTimeoutId = Mainloop.timeout_add(NO_MODS_TIMEOUT, this._noModsTimeoutId = GLib.timeout_add(
() => { GLib.PRIORITY_DEFAULT,
this._finish(global.get_current_time()); NO_MODS_TIMEOUT,
this._noModsTimeoutId = 0; () => {
return GLib.SOURCE_REMOVE; this._finish(global.get_current_time());
}); this._noModsTimeoutId = 0;
return GLib.SOURCE_REMOVE;
});
} }
_popModal() { _popModal() {
@@ -302,11 +305,11 @@ var SwitcherPopup = GObject.registerClass({
this._popModal(); this._popModal();
if (this._motionTimeoutId != 0) if (this._motionTimeoutId != 0)
Mainloop.source_remove(this._motionTimeoutId); GLib.source_remove(this._motionTimeoutId);
if (this._initialDelayTimeoutId != 0) if (this._initialDelayTimeoutId != 0)
Mainloop.source_remove(this._initialDelayTimeoutId); GLib.source_remove(this._initialDelayTimeoutId);
if (this._noModsTimeoutId != 0) if (this._noModsTimeoutId != 0)
Mainloop.source_remove(this._noModsTimeoutId); GLib.source_remove(this._noModsTimeoutId);
} }
_select(num) { _select(num) {

View File

@@ -309,12 +309,10 @@ var ViewSelector = class {
if (params.a11yFocus) if (params.a11yFocus)
Main.ctrlAltTabManager.addGroup(params.a11yFocus, name, a11yIcon); Main.ctrlAltTabManager.addGroup(params.a11yFocus, name, a11yIcon);
else else
Main.ctrlAltTabManager.addGroup(actor, name, a11yIcon, Main.ctrlAltTabManager.addGroup(actor, name, a11yIcon, {
{ proxy: this.actor, proxy: this.actor,
focusCallback: () => { focusCallback: () => this._a11yFocusPage(page),
this._a11yFocusPage(page); });
}
});
page.hide(); page.hide();
this.actor.add_actor(page); this.actor.add_actor(page);
return page; return page;

View File

@@ -2,7 +2,6 @@
/* exported WindowManager */ /* exported WindowManager */
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi; const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const Mainloop = imports.mainloop;
const Signals = imports.signals; const Signals = imports.signals;
const AltTab = imports.ui.altTab; const AltTab = imports.ui.altTab;
@@ -17,6 +16,7 @@ const PadOsd = imports.ui.padOsd;
const EdgeDragAction = imports.ui.edgeDragAction; const EdgeDragAction = imports.ui.edgeDragAction;
const CloseDialog = imports.ui.closeDialog; const CloseDialog = imports.ui.closeDialog;
const SwitchMonitor = imports.ui.switchMonitor; const SwitchMonitor = imports.ui.switchMonitor;
const IBusManager = imports.misc.ibusManager;
const { loadInterfaceXML } = imports.misc.fileUtils; const { loadInterfaceXML } = imports.misc.fileUtils;
@@ -70,13 +70,13 @@ class DisplayChangeDialog extends ModalDialog.ModalDialog {
action: this._onSuccess.bind(this), action: this._onSuccess.bind(this),
default: true }); default: true });
this._timeoutId = Mainloop.timeout_add(ONE_SECOND, this._tick.bind(this)); this._timeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, ONE_SECOND, this._tick.bind(this));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._tick'); GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._tick');
} }
close(timestamp) { close(timestamp) {
if (this._timeoutId > 0) { if (this._timeoutId > 0) {
Mainloop.source_remove(this._timeoutId); GLib.source_remove(this._timeoutId);
this._timeoutId = 0; this._timeoutId = 0;
} }
@@ -280,9 +280,9 @@ var WorkspaceTracker = class {
keepWorkspaceAlive(workspace, duration) { keepWorkspaceAlive(workspace, duration) {
if (workspace._keepAliveId) if (workspace._keepAliveId)
Mainloop.source_remove(workspace._keepAliveId); GLib.source_remove(workspace._keepAliveId);
workspace._keepAliveId = Mainloop.timeout_add(duration, () => { workspace._keepAliveId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, duration, () => {
workspace._keepAliveId = 0; workspace._keepAliveId = 0;
this._queueCheckWorkspaces(); this._queueCheckWorkspaces();
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
@@ -293,7 +293,7 @@ var WorkspaceTracker = class {
_windowRemoved(workspace, window) { _windowRemoved(workspace, window) {
workspace._lastRemovedWindow = window; workspace._lastRemovedWindow = window;
this._queueCheckWorkspaces(); this._queueCheckWorkspaces();
let id = Mainloop.timeout_add(LAST_WINDOW_GRACE_TIME, () => { let id = GLib.timeout_add(GLib.PRIORITY_DEFAULT, LAST_WINDOW_GRACE_TIME, () => {
if (workspace._lastRemovedWindow == window) { if (workspace._lastRemovedWindow == window) {
workspace._lastRemovedWindow = null; workspace._lastRemovedWindow = null;
this._queueCheckWorkspaces(); this._queueCheckWorkspaces();
@@ -1041,6 +1041,15 @@ var WindowManager = class {
} }
}); });
global.display.connect('x11-display-opened', () => {
IBusManager.getIBusManager().restartDaemon(['--xim']);
Shell.util_start_systemd_unit('gnome-session-x11-services.target', 'fail');
});
global.display.connect('x11-display-closing', () => {
Shell.util_stop_systemd_unit('gnome-session-x11-services.target', 'fail');
IBusManager.getIBusManager().restartDaemon();
});
Main.overview.connect('showing', () => { Main.overview.connect('showing', () => {
for (let i = 0; i < this._dimmedWindows.length; i++) for (let i = 0; i < this._dimmedWindows.length; i++)
this._undimWindow(this._dimmedWindows[i]); this._undimWindow(this._dimmedWindows[i]);

View File

@@ -224,7 +224,7 @@ var WindowMenuManager = class {
this._sourceActor.set_position(rect.x, rect.y); this._sourceActor.set_position(rect.x, rect.y);
this._sourceActor.show(); this._sourceActor.show();
menu.open(BoxPointer.PopupAnimation.NONE); menu.open(BoxPointer.PopupAnimation.FADE);
menu.actor.navigate_focus(null, St.DirectionType.TAB_FORWARD, false); menu.actor.navigate_focus(null, St.DirectionType.TAB_FORWARD, false);
menu.connect('open-state-changed', (menu_, isOpen) => { menu.connect('open-state-changed', (menu_, isOpen) => {
if (isOpen) if (isOpen)

View File

@@ -2,7 +2,6 @@
/* exported Workspace */ /* exported Workspace */
const { Atk, Clutter, GLib, GObject, Meta, Pango, Shell, St } = imports.gi; const { Atk, Clutter, GLib, GObject, Meta, Pango, Shell, St } = imports.gi;
const Mainloop = imports.mainloop;
const Signals = imports.signals; const Signals = imports.signals;
const DND = imports.ui.dnd; const DND = imports.ui.dnd;
@@ -57,17 +56,16 @@ class WindowCloneLayout extends Clutter.LayoutManager {
// has an extra set of "padding" around it that we need to trim // has an extra set of "padding" around it that we need to trim
// down. // down.
// The outer rect (from which we compute the bounding box) // The bounding box is based on the (visible) frame rect, while
// paradoxically is the smaller rectangle, containing the positions // the buffer rect contains everything, including the invisible
// of the visible frame. The input rect contains everything, // border padding.
// including the invisible border padding. let bufferRect = window.get_buffer_rect();
let inputRect = window.get_buffer_rect();
let box = new Clutter.ActorBox(); let box = new Clutter.ActorBox();
box.set_origin(inputRect.x - this._boundingBox.x, box.set_origin(bufferRect.x - this._boundingBox.x,
inputRect.y - this._boundingBox.y); bufferRect.y - this._boundingBox.y);
box.set_size(inputRect.width, inputRect.height); box.set_size(bufferRect.width, bufferRect.height);
return box; return box;
} }
@@ -83,8 +81,8 @@ class WindowCloneLayout extends Clutter.LayoutManager {
vfunc_allocate(container, box, flags) { vfunc_allocate(container, box, flags) {
container.get_children().forEach(child => { container.get_children().forEach(child => {
let realWindow; let realWindow;
if (child == container._delegate._windowClone) if (child == container._windowClone)
realWindow = container._delegate.realWindow; realWindow = container.realWindow;
else else
realWindow = child.source; realWindow = child.source;
@@ -104,7 +102,7 @@ var WindowClone = GObject.registerClass({
'show-chrome': {}, 'show-chrome': {},
'size-changed': {} 'size-changed': {}
}, },
}, class WindowClone extends St.Widget { }, class WorkspaceWindowClone extends St.Widget {
_init(realWindow, workspace) { _init(realWindow, workspace) {
this.realWindow = realWindow; this.realWindow = realWindow;
this.metaWindow = realWindow.meta_window; this.metaWindow = realWindow.meta_window;
@@ -354,6 +352,11 @@ var WindowClone = GObject.registerClass({
this.metaWindow._delegate = null; this.metaWindow._delegate = null;
this._delegate = null; this._delegate = null;
if (this._longPressLater) {
Meta.later_remove(this._longPressLater);
delete this._longPressLater;
}
if (this.inDrag) { if (this.inDrag) {
this.emit('drag-end'); this.emit('drag-end');
this.inDrag = false; this.inDrag = false;
@@ -388,9 +391,13 @@ var WindowClone = GObject.registerClass({
let event = Clutter.get_current_event(); let event = Clutter.get_current_event();
this._dragTouchSequence = event.get_event_sequence(); this._dragTouchSequence = event.get_event_sequence();
if (this._longPressLater)
return true;
// A click cancels a long-press before any click handler is // A click cancels a long-press before any click handler is
// run - make sure to not start a drag in that case // run - make sure to not start a drag in that case
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => { this._longPressLater = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
delete this._longPressLater;
if (this._selected) if (this._selected)
return; return;
let [x, y] = action.get_coords(); let [x, y] = action.get_coords();
@@ -628,7 +635,7 @@ var WindowOverlay = class {
_onDestroy() { _onDestroy() {
if (this._idleHideOverlayId > 0) { if (this._idleHideOverlayId > 0) {
Mainloop.source_remove(this._idleHideOverlayId); GLib.source_remove(this._idleHideOverlayId);
this._idleHideOverlayId = 0; this._idleHideOverlayId = 0;
} }
this._windowClone.metaWindow.disconnect(this._updateCaptionId); this._windowClone.metaWindow.disconnect(this._updateCaptionId);
@@ -680,7 +687,7 @@ var WindowOverlay = class {
_onHideChrome() { _onHideChrome() {
if (this._idleHideOverlayId == 0) { if (this._idleHideOverlayId == 0) {
this._idleHideOverlayId = Mainloop.timeout_add(WINDOW_OVERLAY_IDLE_HIDE_TIMEOUT, this._idleHideOverlay.bind(this)); this._idleHideOverlayId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, WINDOW_OVERLAY_IDLE_HIDE_TIMEOUT, this._idleHideOverlay.bind(this));
GLib.Source.set_name_by_id(this._idleHideOverlayId, '[gnome-shell] this._idleHideOverlay'); GLib.Source.set_name_by_id(this._idleHideOverlayId, '[gnome-shell] this._idleHideOverlay');
} }
} }
@@ -697,7 +704,7 @@ var WindowOverlay = class {
hideOverlay() { hideOverlay() {
if (this._idleHideOverlayId > 0) { if (this._idleHideOverlayId > 0) {
Mainloop.source_remove(this._idleHideOverlayId); GLib.source_remove(this._idleHideOverlayId);
this._idleHideOverlayId = 0; this._idleHideOverlayId = 0;
} }
this.closeButton.hide(); this.closeButton.hide();
@@ -939,7 +946,7 @@ var LayoutStrategy = class {
y += row.height * row.additionalScale + this._rowSpacing; y += row.height * row.additionalScale + this._rowSpacing;
} }
compensation = compensation / 2; compensation /= 2;
for (let i = 0; i < rows.length; i++) { for (let i = 0; i < rows.length; i++) {
let row = rows[i]; let row = rows[i];
@@ -1090,10 +1097,8 @@ const WorkspaceActor = GObject.registerClass(
class WorkspaceActor extends St.Widget { class WorkspaceActor extends St.Widget {
vfunc_get_focus_chain() { vfunc_get_focus_chain() {
return this.get_children().filter(c => c.visible).sort((a, b) => { return this.get_children().filter(c => c.visible).sort((a, b) => {
let cloneA = (a._delegate && a._delegate instanceof WindowClone) ? a._delegate : null; if (a instanceof WindowClone && b instanceof WindowClone)
let cloneB = (b._delegate && b._delegate instanceof WindowClone) ? b._delegate : null; return a.slotId - b.slotId;
if (cloneA && cloneB)
return cloneA.slotId - cloneB.slotId;
return 0; return 0;
}); });
@@ -1263,7 +1268,7 @@ var Workspace = class {
_realRecalculateWindowPositions(flags) { _realRecalculateWindowPositions(flags) {
if (this._repositionWindowsId > 0) { if (this._repositionWindowsId > 0) {
Mainloop.source_remove(this._repositionWindowsId); GLib.source_remove(this._repositionWindowsId);
this._repositionWindowsId = 0; this._repositionWindowsId = 0;
} }
@@ -1473,7 +1478,7 @@ var Workspace = class {
// remove old handler // remove old handler
if (this._repositionWindowsId > 0) { if (this._repositionWindowsId > 0) {
Mainloop.source_remove(this._repositionWindowsId); GLib.source_remove(this._repositionWindowsId);
this._repositionWindowsId = 0; this._repositionWindowsId = 0;
} }
@@ -1483,7 +1488,7 @@ var Workspace = class {
this._cursorY = y; this._cursorY = y;
this._currentLayout = null; this._currentLayout = null;
this._repositionWindowsId = Mainloop.timeout_add(WINDOW_REPOSITIONING_DELAY, this._repositionWindowsId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, WINDOW_REPOSITIONING_DELAY,
this._delayedWindowRepositioning.bind(this)); this._delayedWindowRepositioning.bind(this));
GLib.Source.set_name_by_id(this._repositionWindowsId, '[gnome-shell] this._delayedWindowRepositioning'); GLib.Source.set_name_by_id(this._repositionWindowsId, '[gnome-shell] this._delayedWindowRepositioning');
} }
@@ -1497,7 +1502,7 @@ var Workspace = class {
if (!win) { if (!win) {
// Newly-created windows are added to a workspace before // Newly-created windows are added to a workspace before
// the compositor finds out about them... // the compositor finds out about them...
let id = Mainloop.idle_add(() => { let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
if (this.actor && if (this.actor &&
metaWin.get_compositor_private() && metaWin.get_compositor_private() &&
metaWin.get_workspace() == this.metaWorkspace) metaWin.get_workspace() == this.metaWorkspace)
@@ -1643,7 +1648,7 @@ var Workspace = class {
this._windows[i].remove_all_transitions(); this._windows[i].remove_all_transitions();
if (this._repositionWindowsId > 0) { if (this._repositionWindowsId > 0) {
Mainloop.source_remove(this._repositionWindowsId); GLib.source_remove(this._repositionWindowsId);
this._repositionWindowsId = 0; this._repositionWindowsId = 0;
} }
@@ -1728,7 +1733,7 @@ var Workspace = class {
this._windows[i].remove_all_transitions(); this._windows[i].remove_all_transitions();
if (this._repositionWindowsId > 0) { if (this._repositionWindowsId > 0) {
Mainloop.source_remove(this._repositionWindowsId); GLib.source_remove(this._repositionWindowsId);
this._repositionWindowsId = 0; this._repositionWindowsId = 0;
} }
this._overviewHiddenId = Main.overview.connect('hidden', this._doneLeavingOverview.bind(this)); this._overviewHiddenId = Main.overview.connect('hidden', this._doneLeavingOverview.bind(this));
@@ -1789,7 +1794,7 @@ var Workspace = class {
global.display.disconnect(this._windowLeftMonitorId); global.display.disconnect(this._windowLeftMonitorId);
if (this._repositionWindowsId > 0) { if (this._repositionWindowsId > 0) {
Mainloop.source_remove(this._repositionWindowsId); GLib.source_remove(this._repositionWindowsId);
this._repositionWindowsId = 0; this._repositionWindowsId = 0;
} }
@@ -1978,7 +1983,7 @@ var Workspace = class {
} }
_onCloneSelected(clone, time) { _onCloneSelected(clone, time) {
let wsIndex = undefined; let wsIndex;
if (this.metaWorkspace) if (this.metaWorkspace)
wsIndex = this.metaWorkspace.index(); wsIndex = this.metaWorkspace.index();
Main.activateWindow(clone.metaWindow, time, wsIndex); Main.activateWindow(clone.metaWindow, time, wsIndex);

View File

@@ -2,7 +2,6 @@
/* exported WorkspaceSwitcherPopup */ /* exported WorkspaceSwitcherPopup */
const { Clutter, GLib, GObject, Meta, St } = imports.gi; const { Clutter, GLib, GObject, Meta, St } = imports.gi;
const Mainloop = imports.mainloop;
const Main = imports.ui.main; const Main = imports.ui.main;
@@ -195,14 +194,14 @@ class WorkspaceSwitcherPopup extends St.Widget {
this._redisplay(); this._redisplay();
if (this._timeoutId != 0) if (this._timeoutId != 0)
Mainloop.source_remove(this._timeoutId); GLib.source_remove(this._timeoutId);
this._timeoutId = Mainloop.timeout_add(DISPLAY_TIMEOUT, this._onTimeout.bind(this)); this._timeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, DISPLAY_TIMEOUT, this._onTimeout.bind(this));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout'); GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout');
this._show(); this._show();
} }
_onTimeout() { _onTimeout() {
Mainloop.source_remove(this._timeoutId); GLib.source_remove(this._timeoutId);
this._timeoutId = 0; this._timeoutId = 0;
this._container.ease({ this._container.ease({
opacity: 0.0, opacity: 0.0,
@@ -215,7 +214,7 @@ class WorkspaceSwitcherPopup extends St.Widget {
_onDestroy() { _onDestroy() {
if (this._timeoutId) if (this._timeoutId)
Mainloop.source_remove(this._timeoutId); GLib.source_remove(this._timeoutId);
this._timeoutId = 0; this._timeoutId = 0;
let workspaceManager = global.workspace_manager; let workspaceManager = global.workspace_manager;

View File

@@ -2,7 +2,6 @@
/* exported WorkspaceThumbnail, ThumbnailsBox */ /* exported WorkspaceThumbnail, ThumbnailsBox */
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi; const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const Mainloop = imports.mainloop;
const Signals = imports.signals; const Signals = imports.signals;
const Background = imports.ui.background; const Background = imports.ui.background;
@@ -389,7 +388,7 @@ var WorkspaceThumbnail = GObject.registerClass({
if (!win) { if (!win) {
// Newly-created windows are added to a workspace before // Newly-created windows are added to a workspace before
// the compositor finds out about them... // the compositor finds out about them...
let id = Mainloop.idle_add(() => { let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
if (!this._removed && if (!this._removed &&
metaWin.get_compositor_private() && metaWin.get_compositor_private() &&
metaWin.get_workspace() == this.metaWorkspace) metaWin.get_workspace() == this.metaWorkspace)
@@ -711,14 +710,12 @@ var ThumbnailsBox = GObject.registerClass({
_activateThumbnailAtPoint(stageX, stageY, time) { _activateThumbnailAtPoint(stageX, stageY, time) {
let [r_, x_, y] = this.transform_stage_point(stageX, stageY); let [r_, x_, y] = this.transform_stage_point(stageX, stageY);
for (let i = 0; i < this._thumbnails.length; i++) { let thumbnail = this._thumbnails.find(t => {
let thumbnail = this._thumbnails[i]; let [, h] = t.get_transformed_size();
let [, h] = thumbnail.get_transformed_size(); return y >= t.y && y <= t.y + h;
if (y >= thumbnail.y && y <= thumbnail.y + h) { });
thumbnail.activate(time); if (thumbnail)
break; thumbnail.activate(time);
}
}
} }
_onButtonRelease(actor, event) { _onButtonRelease(actor, event) {
@@ -1340,15 +1337,9 @@ var ThumbnailsBox = GObject.registerClass({
} }
_activeWorkspaceChanged(_wm, _from, _to, _direction) { _activeWorkspaceChanged(_wm, _from, _to, _direction) {
let thumbnail;
let workspaceManager = global.workspace_manager; let workspaceManager = global.workspace_manager;
let activeWorkspace = workspaceManager.get_active_workspace(); let activeWorkspace = workspaceManager.get_active_workspace();
for (let i = 0; i < this._thumbnails.length; i++) { let thumbnail = this._thumbnails.find(t => t.metaWorkspace == activeWorkspace);
if (this._thumbnails[i].metaWorkspace == activeWorkspace) {
thumbnail = this._thumbnails[i];
break;
}
}
this._animatingIndicator = true; this._animatingIndicator = true;
let indicatorThemeNode = this._indicator.get_theme_node(); let indicatorThemeNode = this._indicator.get_theme_node();

View File

@@ -524,6 +524,22 @@ var WorkspacesDisplay = class {
this._keyPressEventId = 0; this._keyPressEventId = 0;
this._fullGeometry = null; this._fullGeometry = null;
this.actor.connect('destroy', this._onDestroy.bind(this));
}
_onDestroy() {
if (this._notifyOpacityId) {
let parent = this.actor.get_parent();
if (parent)
parent.disconnect(this._notifyOpacityId);
this._notifyOpacityId = 0;
}
if (this._parentSetLater) {
Meta.later_remove(this._parentSetLater);
this._parentSetLater = 0;
}
} }
_onPan(action) { _onPan(action) {
@@ -717,7 +733,11 @@ var WorkspacesDisplay = class {
oldParent.disconnect(this._notifyOpacityId); oldParent.disconnect(this._notifyOpacityId);
this._notifyOpacityId = 0; this._notifyOpacityId = 0;
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => { if (this._parentSetLater)
return;
this._parentSetLater = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
this._parentSetLater = 0;
let newParent = this.actor.get_parent(); let newParent = this.actor.get_parent();
if (!newParent) if (!newParent)
return; return;

View File

@@ -1,5 +1,5 @@
project('gnome-shell', 'c', project('gnome-shell', 'c',
version: '3.33.91', version: '3.34.0',
meson_version: '>= 0.47.0', meson_version: '>= 0.47.0',
license: 'GPLv2+' license: 'GPLv2+'
) )
@@ -26,7 +26,7 @@ gio_req = '>= 2.56.0'
gi_req = '>= 1.49.1' gi_req = '>= 1.49.1'
gjs_req = '>= 1.57.3' gjs_req = '>= 1.57.3'
gtk_req = '>= 3.15.0' gtk_req = '>= 3.15.0'
mutter_req = '>= 3.33.91' mutter_req = '>= 3.34.0'
polkit_req = '>= 0.100' polkit_req = '>= 0.100'
schemas_req = '>= 3.33.1' schemas_req = '>= 3.33.1'
startup_req = '>= 0.11' startup_req = '>= 0.11'

118
po/ca.po
View File

@@ -10,7 +10,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: HEAD\n" "Project-Id-Version: HEAD\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-08-21 23:18+0000\n" "POT-Creation-Date: 2019-09-11 17:13+0000\n"
"PO-Revision-Date: 2019-08-25 21:53+0200\n" "PO-Revision-Date: 2019-08-25 21:53+0200\n"
"Last-Translator: Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>\n" "Last-Translator: Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>\n"
"Language-Team: Catalan <tradgnome@softcatala.org>\n" "Language-Team: Catalan <tradgnome@softcatala.org>\n"
@@ -200,9 +200,9 @@ msgid ""
msgstr "" msgstr ""
"El GNOME Shell us demanarà la contrasenya quan es munti un dispositiu " "El GNOME Shell us demanarà la contrasenya quan es munti un dispositiu "
"encriptat o un sistema de fitxers remot. Si es pot desar la contrasenya per " "encriptat o un sistema de fitxers remot. Si es pot desar la contrasenya per "
"utilitzar-lo en el futur, es mostrarà la casella de verificació «Recorda la " "utilitzar-lo en el futur, es mostrarà la casella de selecció «Recorda la "
"contrasenya». Aquesta clau estableix el valor per defecte d'aquesta casella " "contrasenya». Aquesta clau estableix el valor per defecte d'aquesta casella "
"de verificació." "de selecció."
#: data/org.gnome.shell.gschema.xml.in:96 #: data/org.gnome.shell.gschema.xml.in:96
msgid "" msgid ""
@@ -470,7 +470,7 @@ msgstr ""
#: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53 #: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53
#: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:445 js/ui/extensionDownloader.js:189 #: js/ui/endSessionDialog.js:448 js/ui/extensionDownloader.js:189
#: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399 #: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399
#: js/ui/status/network.js:899 #: js/ui/status/network.js:899
msgid "Cancel" msgid "Cancel"
@@ -774,28 +774,32 @@ msgstr "Freqüent"
msgid "All" msgid "All"
msgstr "Totes" msgstr "Totes"
#: js/ui/appDisplay.js:1751
msgid "Rename"
msgstr "Canvia el nom"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2233 js/ui/panel.js:77 #: js/ui/appDisplay.js:2397 js/ui/panel.js:77
msgid "Open Windows" msgid "Open Windows"
msgstr "Obre finestres" msgstr "Obre finestres"
#: js/ui/appDisplay.js:2252 js/ui/panel.js:84 #: js/ui/appDisplay.js:2416 js/ui/panel.js:84
msgid "New Window" msgid "New Window"
msgstr "Finestra nova" msgstr "Finestra nova"
#: js/ui/appDisplay.js:2264 #: js/ui/appDisplay.js:2428
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Inicia usant una targeta gràfica dedicada" msgstr "Inicia usant una targeta gràfica dedicada"
#: js/ui/appDisplay.js:2293 js/ui/dash.js:240 #: js/ui/appDisplay.js:2457 js/ui/dash.js:240
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Suprimeix dels preferits" msgstr "Suprimeix dels preferits"
#: js/ui/appDisplay.js:2299 #: js/ui/appDisplay.js:2463
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Afegeix als preferits" msgstr "Afegeix als preferits"
#: js/ui/appDisplay.js:2309 js/ui/panel.js:95 #: js/ui/appDisplay.js:2473 js/ui/panel.js:95
msgid "Show Details" msgid "Show Details"
msgstr "Mostra els detalls" msgstr "Mostra els detalls"
@@ -825,7 +829,7 @@ msgstr "Auriculars"
msgid "Headset" msgid "Headset"
msgstr "Auriculars amb micròfon" msgstr "Auriculars amb micròfon"
#: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:241 #: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:248
msgid "Microphone" msgid "Microphone"
msgstr "Micròfon" msgstr "Micròfon"
@@ -1328,13 +1332,13 @@ msgid "Other users are logged in."
msgstr "Altres usuaris tenen la sessió oberta." msgstr "Altres usuaris tenen la sessió oberta."
#. Translators: Remote here refers to a remote session, like a ssh login #. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:647 #: js/ui/endSessionDialog.js:650
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (remot)" msgstr "%s (remot)"
#. Translators: Console here refers to a tty like a VT console #. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:650 #: js/ui/endSessionDialog.js:653
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (consola)" msgstr "%s (consola)"
@@ -1412,9 +1416,9 @@ msgid ""
"row. This turns off the Sticky Keys feature, which affects the way your " "row. This turns off the Sticky Keys feature, which affects the way your "
"keyboard works." "keyboard works."
msgstr "" msgstr ""
"Heu premut dos tecles juntes, o la tecla de majúscules 5 cops seguides. Això " "Heu premut dues tecles juntes, o la tecla de majúscules 5 cops seguides. "
"desactiva la funcionalitat de les tecles enganxoses, que afecta la manera en " "Això desactiva la funcionalitat de les tecles enganxoses, que afecta la "
"què funciona el teclat." "manera en què funciona el teclat."
#: js/ui/kbdA11yDialog.js:58 #: js/ui/kbdA11yDialog.js:58
msgid "Leave On" msgid "Leave On"
@@ -1489,7 +1493,7 @@ msgstr "Mostra el codi font"
msgid "Web Page" msgid "Web Page"
msgstr "Pàgina web" msgstr "Pàgina web"
#: js/ui/messageTray.js:1462 #: js/ui/messageTray.js:1461
msgid "System Information" msgid "System Information"
msgstr "Informació de l'ordinador" msgstr "Informació de l'ordinador"
@@ -1618,7 +1622,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d notificació nova" msgstr[0] "%d notificació nova"
msgstr[1] "%d notificacions noves" msgstr[1] "%d notificacions noves"
#: js/ui/screenShield.js:444 js/ui/status/system.js:269 #: js/ui/screenShield.js:444 js/ui/status/system.js:260
msgid "Lock" msgid "Lock"
msgstr "Bloqueja" msgstr "Bloqueja"
@@ -1641,15 +1645,15 @@ msgstr "No es pot blocar"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Una aplicació està bloquejant el bloqueig" msgstr "Una aplicació està bloquejant el bloqueig"
#: js/ui/search.js:647 #: js/ui/search.js:668
msgid "Searching…" msgid "Searching…"
msgstr "S'està cercant…" msgstr "S'està cercant…"
#: js/ui/search.js:649 #: js/ui/search.js:670
msgid "No results." msgid "No results."
msgstr "No s'ha trobat cap resultat." msgstr "No s'ha trobat cap resultat."
#: js/ui/search.js:773 #: js/ui/search.js:794
#, javascript-format #, javascript-format
msgid "%d more" msgid "%d more"
msgid_plural "%d more" msgid_plural "%d more"
@@ -2134,27 +2138,27 @@ msgstr "Desactiva"
msgid "Airplane Mode On" msgid "Airplane Mode On"
msgstr "El mode d'avió és actiu" msgstr "El mode d'avió és actiu"
#: js/ui/status/system.js:201 #: js/ui/status/system.js:192
msgid "Switch User" msgid "Switch User"
msgstr "Canvia d'usuari" msgstr "Canvia d'usuari"
#: js/ui/status/system.js:213 #: js/ui/status/system.js:204
msgid "Log Out" msgid "Log Out"
msgstr "Surt" msgstr "Surt"
#: js/ui/status/system.js:225 #: js/ui/status/system.js:216
msgid "Account Settings" msgid "Account Settings"
msgstr "Paràmetres del compte" msgstr "Paràmetres del compte"
#: js/ui/status/system.js:254 #: js/ui/status/system.js:245
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Bloqueja l'orientació" msgstr "Bloqueja l'orientació"
#: js/ui/status/system.js:280 #: js/ui/status/system.js:271
msgid "Suspend" msgid "Suspend"
msgstr "Atura temporalment" msgstr "Atura temporalment"
#: js/ui/status/system.js:290 #: js/ui/status/system.js:281
msgid "Power Off" msgid "Power Off"
msgstr "Apaga" msgstr "Apaga"
@@ -2194,11 +2198,11 @@ msgstr "S'ha produït un error d'autorització a Thunderbolt"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "No s'ha pogut autoritzar el dispositiu Thunderbolt: %s" msgstr "No s'ha pogut autoritzar el dispositiu Thunderbolt: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:129
msgid "Volume changed" msgid "Volume changed"
msgstr "S'ha canviat el volum" msgstr "S'ha canviat el volum"
#: js/ui/status/volume.js:193 #: js/ui/status/volume.js:200
msgid "Volume" msgid "Volume"
msgstr "Volum" msgstr "Volum"
@@ -2251,22 +2255,22 @@ msgstr "Cerca"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "«%s» ja està a punt" msgstr "«%s» ja està a punt"
#: js/ui/windowManager.js:54 #: js/ui/windowManager.js:55
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "Voleu mantenir aquesta configuració de la pantalla?" msgstr "Voleu mantenir aquesta configuració de la pantalla?"
#. Translators: this and the following message should be limited in length, #. Translators: this and the following message should be limited in length,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:66 #: js/ui/windowManager.js:67
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Descarta els canvis" msgstr "Descarta els canvis"
#: js/ui/windowManager.js:69 #: js/ui/windowManager.js:70
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Mantén els canvis" msgstr "Mantén els canvis"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:88
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
@@ -2275,7 +2279,7 @@ msgstr[1] "Es descartaran els canvis d'aquí %d segons"
#. Translators: This represents the size of a window. The first number is #. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. #. * the width of the window and the second is the height.
#: js/ui/windowManager.js:683 #: js/ui/windowManager.js:684
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2367,7 +2371,7 @@ msgid ""
"Description is a single-sentence explanation of what your extension does.\n" "Description is a single-sentence explanation of what your extension does.\n"
"Examples are: %s" "Examples are: %s"
msgstr "" msgstr ""
"La descripció és una explicació d'una frase del què fa l'extensió.\n" "La descripció és una explicació d'una frase de què fa l'extensió.\n"
"Per exemple: %s" "Per exemple: %s"
#: src/extensions-tool/command-create.c:206 src/extensions-tool/main.c:172 #: src/extensions-tool/command-create.c:206 src/extensions-tool/main.c:172
@@ -2587,7 +2591,7 @@ msgstr "Comarca"
msgid "“version” takes no arguments" msgid "“version” takes no arguments"
msgstr "«version» no té arguments" msgstr "«version» no té arguments"
#: src/extensions-tool/main.c:223 src/extensions-tool/main.c:239 #: src/extensions-tool/main.c:223 src/extensions-tool/main.c:243
msgid "Usage:" msgid "Usage:"
msgstr "Ús:" msgstr "Ús:"
@@ -2595,80 +2599,80 @@ msgstr "Ús:"
msgid "Print version information and exit." msgid "Print version information and exit."
msgstr "Mostra la informació de la versió i surt." msgstr "Mostra la informació de la versió i surt."
#: src/extensions-tool/main.c:240 #: src/extensions-tool/main.c:241 src/extensions-tool/main.c:244
msgid "COMMAND" msgid "COMMAND"
msgstr "ORDRE" msgstr "ORDRE"
#: src/extensions-tool/main.c:240 #: src/extensions-tool/main.c:244
msgid "[ARGS…]" msgid "[ARGS…]"
msgstr "[ARGS…]" msgstr "[ARGS…]"
#: src/extensions-tool/main.c:242 #: src/extensions-tool/main.c:246
msgid "Commands:" msgid "Commands:"
msgstr "Ordres:" msgstr "Ordres:"
#: src/extensions-tool/main.c:243 #: src/extensions-tool/main.c:247
msgid "Print help" msgid "Print help"
msgstr "Mostra l'ajuda" msgstr "Mostra l'ajuda"
#: src/extensions-tool/main.c:244 src/main.c:460 #: src/extensions-tool/main.c:248 src/main.c:468
msgid "Print version" msgid "Print version"
msgstr "Mostra la versió" msgstr "Mostra la versió"
#: src/extensions-tool/main.c:245 #: src/extensions-tool/main.c:249
msgid "Enable extension" msgid "Enable extension"
msgstr "Habilita l'extensió" msgstr "Habilita l'extensió"
#: src/extensions-tool/main.c:246 #: src/extensions-tool/main.c:250
msgid "Disable extension" msgid "Disable extension"
msgstr "Inhabilita l'extensió" msgstr "Inhabilita l'extensió"
#: src/extensions-tool/main.c:247 #: src/extensions-tool/main.c:251
msgid "Reset extension" msgid "Reset extension"
msgstr "Reinicia l'extensió" msgstr "Reinicia l'extensió"
#: src/extensions-tool/main.c:248 #: src/extensions-tool/main.c:252
msgid "Uninstall extension" msgid "Uninstall extension"
msgstr "Desinstal·la l'extensió" msgstr "Desinstal·la l'extensió"
#: src/extensions-tool/main.c:249 #: src/extensions-tool/main.c:253
msgid "List extensions" msgid "List extensions"
msgstr "Llista les extensions" msgstr "Llista les extensions"
#: src/extensions-tool/main.c:250 src/extensions-tool/main.c:251 #: src/extensions-tool/main.c:254 src/extensions-tool/main.c:255
msgid "Show extension info" msgid "Show extension info"
msgstr "Mostra la informació de l'extensió" msgstr "Mostra la informació de l'extensió"
#: src/extensions-tool/main.c:252 #: src/extensions-tool/main.c:256
msgid "Open extension preferences" msgid "Open extension preferences"
msgstr "Obre les preferències de l'extensió" msgstr "Obre les preferències de l'extensió"
#: src/extensions-tool/main.c:253 #: src/extensions-tool/main.c:257
msgid "Create extension" msgid "Create extension"
msgstr "Crea extensió" msgstr "Crea extensió"
#: src/extensions-tool/main.c:254 #: src/extensions-tool/main.c:258
msgid "Package extension" msgid "Package extension"
msgstr "Paquet d'extensió" msgstr "Paquet d'extensió"
#: src/extensions-tool/main.c:255 #: src/extensions-tool/main.c:259
msgid "Install extension bundle" msgid "Install extension bundle"
msgstr "Instal·la un paquet d'extensió" msgstr "Instal·la un paquet d'extensió"
#: src/extensions-tool/main.c:257 #: src/extensions-tool/main.c:261
#, c-format #, c-format
msgid "Use %s to get detailed help.\n" msgid "Use %s to get detailed help.\n"
msgstr "Feu servir %s per obtenir ajuda detallada.\n" msgstr "Feu servir «%s» per obtenir ajuda detallada.\n"
#: src/main.c:466 #: src/main.c:474
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "El mode que utilitzarà el GDM per a la pantalla d'entrada" msgstr "El mode que utilitzarà el GDM per a la pantalla d'entrada"
#: src/main.c:472 #: src/main.c:480
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Utilitza un mode específic, p. ex. «gdm» per la pantalla d'entrada" msgstr "Utilitza un mode específic, p. ex. «gdm» per la pantalla d'entrada"
#: src/main.c:478 #: src/main.c:486
msgid "List possible modes" msgid "List possible modes"
msgstr "Llista els modes possibles" msgstr "Llista els modes possibles"

1325
po/cs.po

File diff suppressed because it is too large Load Diff

108
po/de.po
View File

@@ -22,9 +22,9 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-08-21 23:18+0000\n" "POT-Creation-Date: 2019-09-11 17:13+0000\n"
"PO-Revision-Date: 2019-08-23 21:09+0200\n" "PO-Revision-Date: 2019-09-11 23:14+0200\n"
"Last-Translator: Tim Sabsch <tim@sabsch.com>\n" "Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n" "Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: de\n" "Language: de\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -475,7 +475,7 @@ msgstr ""
#: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53 #: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53
#: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:445 js/ui/extensionDownloader.js:189 #: js/ui/endSessionDialog.js:448 js/ui/extensionDownloader.js:189
#: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399 #: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399
#: js/ui/status/network.js:899 #: js/ui/status/network.js:899
msgid "Cancel" msgid "Cancel"
@@ -779,29 +779,33 @@ msgstr "Häufig"
msgid "All" msgid "All"
msgstr "Alle" msgstr "Alle"
#: js/ui/appDisplay.js:1751
msgid "Rename"
msgstr "Umbenennen"
# Fensterüberschrift # Fensterüberschrift
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2233 js/ui/panel.js:77 #: js/ui/appDisplay.js:2397 js/ui/panel.js:77
msgid "Open Windows" msgid "Open Windows"
msgstr "Offene Fenster" msgstr "Offene Fenster"
#: js/ui/appDisplay.js:2252 js/ui/panel.js:84 #: js/ui/appDisplay.js:2416 js/ui/panel.js:84
msgid "New Window" msgid "New Window"
msgstr "Neues Fenster" msgstr "Neues Fenster"
#: js/ui/appDisplay.js:2264 #: js/ui/appDisplay.js:2428
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Mit dedizierter Grafikkarte starten" msgstr "Mit dedizierter Grafikkarte starten"
#: js/ui/appDisplay.js:2293 js/ui/dash.js:240 #: js/ui/appDisplay.js:2457 js/ui/dash.js:240
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Aus Favoriten entfernen" msgstr "Aus Favoriten entfernen"
#: js/ui/appDisplay.js:2299 #: js/ui/appDisplay.js:2463
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Zu Favoriten hinzufügen" msgstr "Zu Favoriten hinzufügen"
#: js/ui/appDisplay.js:2309 js/ui/panel.js:95 #: js/ui/appDisplay.js:2473 js/ui/panel.js:95
msgid "Show Details" msgid "Show Details"
msgstr "Details anzeigen" msgstr "Details anzeigen"
@@ -831,7 +835,7 @@ msgstr "Kopfhörer"
msgid "Headset" msgid "Headset"
msgstr "Headset" msgstr "Headset"
#: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:241 #: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:248
msgid "Microphone" msgid "Microphone"
msgstr "Mikrofon" msgstr "Mikrofon"
@@ -1336,13 +1340,13 @@ msgid "Other users are logged in."
msgstr "Andere Benutzer sind angemeldet." msgstr "Andere Benutzer sind angemeldet."
#. Translators: Remote here refers to a remote session, like a ssh login #. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:647 #: js/ui/endSessionDialog.js:650
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (Entfernt)" msgstr "%s (Entfernt)"
#. Translators: Console here refers to a tty like a VT console #. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:650 #: js/ui/endSessionDialog.js:653
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (Konsole)" msgstr "%s (Konsole)"
@@ -1497,7 +1501,7 @@ msgstr "Quelle zeigen"
msgid "Web Page" msgid "Web Page"
msgstr "Webseite" msgstr "Webseite"
#: js/ui/messageTray.js:1462 #: js/ui/messageTray.js:1461
msgid "System Information" msgid "System Information"
msgstr "Systeminformationen" msgstr "Systeminformationen"
@@ -1629,7 +1633,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d neue Benachrichtigung" msgstr[0] "%d neue Benachrichtigung"
msgstr[1] "%d neue Benachrichtigungen" msgstr[1] "%d neue Benachrichtigungen"
#: js/ui/screenShield.js:444 js/ui/status/system.js:269 #: js/ui/screenShield.js:444 js/ui/status/system.js:260
msgid "Lock" msgid "Lock"
msgstr "Sperren" msgstr "Sperren"
@@ -1652,15 +1656,15 @@ msgstr "Sperrung fehlgeschlagen"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Sperrung wurde von einer Anwendung blockiert" msgstr "Sperrung wurde von einer Anwendung blockiert"
#: js/ui/search.js:647 #: js/ui/search.js:668
msgid "Searching…" msgid "Searching…"
msgstr "Suche läuft …" msgstr "Suche läuft …"
#: js/ui/search.js:649 #: js/ui/search.js:670
msgid "No results." msgid "No results."
msgstr "Keine Ergebnisse." msgstr "Keine Ergebnisse."
#: js/ui/search.js:773 #: js/ui/search.js:794
#, javascript-format #, javascript-format
msgid "%d more" msgid "%d more"
msgid_plural "%d more" msgid_plural "%d more"
@@ -2153,27 +2157,27 @@ msgstr "Ausschalten"
msgid "Airplane Mode On" msgid "Airplane Mode On"
msgstr "Flugmodus ist eingeschaltet" msgstr "Flugmodus ist eingeschaltet"
#: js/ui/status/system.js:201 #: js/ui/status/system.js:192
msgid "Switch User" msgid "Switch User"
msgstr "Benutzer wechseln" msgstr "Benutzer wechseln"
#: js/ui/status/system.js:213 #: js/ui/status/system.js:204
msgid "Log Out" msgid "Log Out"
msgstr "Abmelden" msgstr "Abmelden"
#: js/ui/status/system.js:225 #: js/ui/status/system.js:216
msgid "Account Settings" msgid "Account Settings"
msgstr "Kontoeinstellungen" msgstr "Kontoeinstellungen"
#: js/ui/status/system.js:254 #: js/ui/status/system.js:245
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Hoch-/Querformats-Fixierung" msgstr "Hoch-/Querformats-Fixierung"
#: js/ui/status/system.js:280 #: js/ui/status/system.js:271
msgid "Suspend" msgid "Suspend"
msgstr "Bereitschaft" msgstr "Bereitschaft"
#: js/ui/status/system.js:290 #: js/ui/status/system.js:281
msgid "Power Off" msgid "Power Off"
msgstr "Ausschalten" msgstr "Ausschalten"
@@ -2213,11 +2217,11 @@ msgstr "Thunderbolt-Legitimierungsfehler"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Das Thunderbolt-Gerät %s konnte nicht legitimiert werden" msgstr "Das Thunderbolt-Gerät %s konnte nicht legitimiert werden"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:129
msgid "Volume changed" msgid "Volume changed"
msgstr "Lautstärke geändert" msgstr "Lautstärke geändert"
#: js/ui/status/volume.js:193 #: js/ui/status/volume.js:200
msgid "Volume" msgid "Volume"
msgstr "Lautstärke" msgstr "Lautstärke"
@@ -2270,22 +2274,22 @@ msgstr "Suchen"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "»%s« ist bereit" msgstr "»%s« ist bereit"
#: js/ui/windowManager.js:54 #: js/ui/windowManager.js:55
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "Wollen Sie diese Anzeigeeinstellungen beibehalten?" msgstr "Wollen Sie diese Anzeigeeinstellungen beibehalten?"
#. Translators: this and the following message should be limited in length, #. Translators: this and the following message should be limited in length,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:66 #: js/ui/windowManager.js:67
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Zurücksetzen" msgstr "Zurücksetzen"
#: js/ui/windowManager.js:69 #: js/ui/windowManager.js:70
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Beibehalten" msgstr "Beibehalten"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:88
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
@@ -2295,7 +2299,7 @@ msgstr[1] ""
#. Translators: This represents the size of a window. The first number is #. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. #. * the width of the window and the second is the height.
#: js/ui/windowManager.js:683 #: js/ui/windowManager.js:684
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2609,7 +2613,7 @@ msgstr "Status"
msgid "“version” takes no arguments" msgid "“version” takes no arguments"
msgstr "»version« akzeptiert keine Argumente" msgstr "»version« akzeptiert keine Argumente"
#: src/extensions-tool/main.c:223 src/extensions-tool/main.c:239 #: src/extensions-tool/main.c:223 src/extensions-tool/main.c:243
msgid "Usage:" msgid "Usage:"
msgstr "Aufruf:" msgstr "Aufruf:"
@@ -2617,82 +2621,82 @@ msgstr "Aufruf:"
msgid "Print version information and exit." msgid "Print version information and exit."
msgstr "Versionsinformationen ausgeben und beenden." msgstr "Versionsinformationen ausgeben und beenden."
#: src/extensions-tool/main.c:240 #: src/extensions-tool/main.c:241 src/extensions-tool/main.c:244
msgid "COMMAND" msgid "COMMAND"
msgstr "BEFEHL" msgstr "BEFEHL"
#: src/extensions-tool/main.c:240 #: src/extensions-tool/main.c:244
msgid "[ARGS…]" msgid "[ARGS…]"
msgstr "[ARGUMENTE …]" msgstr "[ARGUMENTE …]"
#: src/extensions-tool/main.c:242 #: src/extensions-tool/main.c:246
msgid "Commands:" msgid "Commands:"
msgstr "Befehle:" msgstr "Befehle:"
#: src/extensions-tool/main.c:243 #: src/extensions-tool/main.c:247
msgid "Print help" msgid "Print help"
msgstr "Hilfe ausgeben" msgstr "Hilfe ausgeben"
#: src/extensions-tool/main.c:244 src/main.c:460 #: src/extensions-tool/main.c:248 src/main.c:468
msgid "Print version" msgid "Print version"
msgstr "Version ausgeben" msgstr "Version ausgeben"
#: src/extensions-tool/main.c:245 #: src/extensions-tool/main.c:249
msgid "Enable extension" msgid "Enable extension"
msgstr "Erweiterung aktivieren" msgstr "Erweiterung aktivieren"
#: src/extensions-tool/main.c:246 #: src/extensions-tool/main.c:250
msgid "Disable extension" msgid "Disable extension"
msgstr "Erweiterung deaktivieren" msgstr "Erweiterung deaktivieren"
#: src/extensions-tool/main.c:247 #: src/extensions-tool/main.c:251
msgid "Reset extension" msgid "Reset extension"
msgstr "Erweiterung zurücksetzen" msgstr "Erweiterung zurücksetzen"
#: src/extensions-tool/main.c:248 #: src/extensions-tool/main.c:252
msgid "Uninstall extension" msgid "Uninstall extension"
msgstr "Erweiterung deinstallieren" msgstr "Erweiterung deinstallieren"
#: src/extensions-tool/main.c:249 #: src/extensions-tool/main.c:253
msgid "List extensions" msgid "List extensions"
msgstr "Erweiterungen auflisten" msgstr "Erweiterungen auflisten"
#: src/extensions-tool/main.c:250 src/extensions-tool/main.c:251 #: src/extensions-tool/main.c:254 src/extensions-tool/main.c:255
msgid "Show extension info" msgid "Show extension info"
msgstr "Erweiterungsinformationen anzeigen" msgstr "Erweiterungsinformationen anzeigen"
#: src/extensions-tool/main.c:252 #: src/extensions-tool/main.c:256
msgid "Open extension preferences" msgid "Open extension preferences"
msgstr "Erweiterungseinstellungen öffnen" msgstr "Erweiterungseinstellungen öffnen"
#: src/extensions-tool/main.c:253 #: src/extensions-tool/main.c:257
msgid "Create extension" msgid "Create extension"
msgstr "Erweiterung erstellen" msgstr "Erweiterung erstellen"
#: src/extensions-tool/main.c:254 #: src/extensions-tool/main.c:258
msgid "Package extension" msgid "Package extension"
msgstr "Paket-Erweiterung" msgstr "Paket-Erweiterung"
#: src/extensions-tool/main.c:255 #: src/extensions-tool/main.c:259
msgid "Install extension bundle" msgid "Install extension bundle"
msgstr "Erweiterungspaket installieren" msgstr "Erweiterungspaket installieren"
#: src/extensions-tool/main.c:257 #: src/extensions-tool/main.c:261
#, c-format #, c-format
msgid "Use %s to get detailed help.\n" msgid "Use %s to get detailed help.\n"
msgstr "Verwenden Sie »%s«, um detaillierte Hilfe zu erhalten.\n" msgstr "Verwenden Sie »%s«, um detaillierte Hilfe zu erhalten.\n"
#: src/main.c:466 #: src/main.c:474
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Der durch GDM im Anmeldefenster verwendete Modus" msgstr "Der durch GDM im Anmeldefenster verwendete Modus"
#: src/main.c:472 #: src/main.c:480
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "" msgstr ""
"Verwenden Sie einen spezifischen Modus wie z.B. »gdm« für den " "Verwenden Sie einen spezifischen Modus wie z.B. »gdm« für den "
"Anmeldebildschirm" "Anmeldebildschirm"
#: src/main.c:478 #: src/main.c:486
msgid "List possible modes" msgid "List possible modes"
msgstr "Die möglichen Modi auflisten" msgstr "Die möglichen Modi auflisten"

1781
po/el.po

File diff suppressed because it is too large Load Diff

1294
po/eo.po

File diff suppressed because it is too large Load Diff

113
po/es.po
View File

@@ -9,8 +9,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell.master\n" "Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-08-22 13:06+0000\n" "POT-Creation-Date: 2019-09-11 17:13+0000\n"
"PO-Revision-Date: 2019-08-26 12:25+0200\n" "PO-Revision-Date: 2019-09-13 08:26+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n" "Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n" "Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
"Language: es_ES\n" "Language: es_ES\n"
@@ -465,7 +465,7 @@ msgstr ""
#: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53 #: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53
#: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:445 js/ui/extensionDownloader.js:189 #: js/ui/endSessionDialog.js:448 js/ui/extensionDownloader.js:189
#: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399 #: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399
#: js/ui/status/network.js:899 #: js/ui/status/network.js:899
msgid "Cancel" msgid "Cancel"
@@ -768,28 +768,32 @@ msgstr "Frecuentes"
msgid "All" msgid "All"
msgstr "Todas" msgstr "Todas"
#: js/ui/appDisplay.js:1751
msgid "Rename"
msgstr "Renombrar"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2233 js/ui/panel.js:77 #: js/ui/appDisplay.js:2397 js/ui/panel.js:77
msgid "Open Windows" msgid "Open Windows"
msgstr "Ventanas abiertas" msgstr "Ventanas abiertas"
#: js/ui/appDisplay.js:2252 js/ui/panel.js:84 #: js/ui/appDisplay.js:2416 js/ui/panel.js:84
msgid "New Window" msgid "New Window"
msgstr "Ventana nueva" msgstr "Ventana nueva"
#: js/ui/appDisplay.js:2264 #: js/ui/appDisplay.js:2428
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Lanzar usando la tarjeta gráfica dedicada" msgstr "Lanzar usando la tarjeta gráfica dedicada"
#: js/ui/appDisplay.js:2293 js/ui/dash.js:240 #: js/ui/appDisplay.js:2457 js/ui/dash.js:240
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Quitar de los favoritos" msgstr "Quitar de los favoritos"
#: js/ui/appDisplay.js:2299 #: js/ui/appDisplay.js:2463
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Añadir a los favoritos" msgstr "Añadir a los favoritos"
#: js/ui/appDisplay.js:2309 js/ui/panel.js:95 #: js/ui/appDisplay.js:2473 js/ui/panel.js:95
msgid "Show Details" msgid "Show Details"
msgstr "Mostrar detalles" msgstr "Mostrar detalles"
@@ -819,7 +823,7 @@ msgstr "Auriculares"
msgid "Headset" msgid "Headset"
msgstr "Manos libres" msgstr "Manos libres"
#: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:241 #: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:248
msgid "Microphone" msgid "Microphone"
msgstr "Micrófono" msgstr "Micrófono"
@@ -1319,13 +1323,13 @@ msgid "Other users are logged in."
msgstr "Hay otros usuarios con la sesión iniciada." msgstr "Hay otros usuarios con la sesión iniciada."
#. Translators: Remote here refers to a remote session, like a ssh login #. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:647 #: js/ui/endSessionDialog.js:650
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (remoto)" msgstr "%s (remoto)"
#. Translators: Console here refers to a tty like a VT console #. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:650 #: js/ui/endSessionDialog.js:653
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (consola)" msgstr "%s (consola)"
@@ -1480,7 +1484,7 @@ msgstr "Ver fuente"
msgid "Web Page" msgid "Web Page"
msgstr "Página web" msgstr "Página web"
#: js/ui/messageTray.js:1462 #: js/ui/messageTray.js:1461
msgid "System Information" msgid "System Information"
msgstr "Información del sistema" msgstr "Información del sistema"
@@ -1609,7 +1613,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d notificación nueva" msgstr[0] "%d notificación nueva"
msgstr[1] "%d notificaciones nuevas" msgstr[1] "%d notificaciones nuevas"
#: js/ui/screenShield.js:444 js/ui/status/system.js:269 #: js/ui/screenShield.js:444 js/ui/status/system.js:260
msgid "Lock" msgid "Lock"
msgstr "Bloquear" msgstr "Bloquear"
@@ -1632,15 +1636,15 @@ msgstr "No se pudo bloquear"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Una aplicación impidió el bloqueo" msgstr "Una aplicación impidió el bloqueo"
#: js/ui/search.js:647 #: js/ui/search.js:668
msgid "Searching…" msgid "Searching…"
msgstr "Buscando…" msgstr "Buscando…"
#: js/ui/search.js:649 #: js/ui/search.js:670
msgid "No results." msgid "No results."
msgstr "No se encontraron resultados." msgstr "No se encontraron resultados."
#: js/ui/search.js:773 #: js/ui/search.js:794
#, javascript-format #, javascript-format
msgid "%d more" msgid "%d more"
msgid_plural "%d more" msgid_plural "%d more"
@@ -2125,27 +2129,27 @@ msgstr "Apagar"
msgid "Airplane Mode On" msgid "Airplane Mode On"
msgstr "Modo avión activado" msgstr "Modo avión activado"
#: js/ui/status/system.js:201 #: js/ui/status/system.js:192
msgid "Switch User" msgid "Switch User"
msgstr "Cambiar de usuario" msgstr "Cambiar de usuario"
#: js/ui/status/system.js:213 #: js/ui/status/system.js:204
msgid "Log Out" msgid "Log Out"
msgstr "Cerrar la sesión" msgstr "Cerrar la sesión"
#: js/ui/status/system.js:225 #: js/ui/status/system.js:216
msgid "Account Settings" msgid "Account Settings"
msgstr "Configuración de la cuenta" msgstr "Configuración de la cuenta"
#: js/ui/status/system.js:254 #: js/ui/status/system.js:245
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Bloqueo de orientación" msgstr "Bloqueo de orientación"
#: js/ui/status/system.js:280 #: js/ui/status/system.js:271
msgid "Suspend" msgid "Suspend"
msgstr "Suspender" msgstr "Suspender"
#: js/ui/status/system.js:290 #: js/ui/status/system.js:281
msgid "Power Off" msgid "Power Off"
msgstr "Apagar" msgstr "Apagar"
@@ -2184,11 +2188,11 @@ msgstr "Error de autorización de Thunderbolt"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "No se pudo autorizar el dispositivo Thunderbolt: %s" msgstr "No se pudo autorizar el dispositivo Thunderbolt: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:129
msgid "Volume changed" msgid "Volume changed"
msgstr "Volumen modificado" msgstr "Volumen modificado"
#: js/ui/status/volume.js:193 #: js/ui/status/volume.js:200
msgid "Volume" msgid "Volume"
msgstr "Volumen" msgstr "Volumen"
@@ -2241,22 +2245,22 @@ msgstr "Buscar"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "«%s» está preparado" msgstr "«%s» está preparado"
#: js/ui/windowManager.js:54 #: js/ui/windowManager.js:55
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "¿Quiere mantener esta configuración de la pantalla?" msgstr "¿Quiere mantener esta configuración de la pantalla?"
#. Translators: this and the following message should be limited in length, #. Translators: this and the following message should be limited in length,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:66 #: js/ui/windowManager.js:67
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Revertir configuración" msgstr "Revertir configuración"
#: js/ui/windowManager.js:69 #: js/ui/windowManager.js:70
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Mantener cambios" msgstr "Mantener cambios"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:88
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
@@ -2265,7 +2269,7 @@ msgstr[1] "La configuración se revertirá en %d segundos"
#. Translators: This represents the size of a window. The first number is #. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. #. * the width of the window and the second is the height.
#: js/ui/windowManager.js:683 #: js/ui/windowManager.js:684
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2450,12 +2454,10 @@ msgid "EXTENSION_BUNDLE"
msgstr "EXTENSION_BUNDLE" msgstr "EXTENSION_BUNDLE"
#: src/extensions-tool/command-install.c:184 #: src/extensions-tool/command-install.c:184
#| msgid "UUIDs of extensions to enable"
msgid "Install an extension bundle" msgid "Install an extension bundle"
msgstr "Instalar un conjunto de extensiones" msgstr "Instalar un conjunto de extensiones"
#: src/extensions-tool/command-install.c:201 #: src/extensions-tool/command-install.c:201
#| msgid "No extensions installed"
msgid "No extension bundle specified" msgid "No extension bundle specified"
msgstr "No se ha especificado un conjunto de extensiones" msgstr "No se ha especificado un conjunto de extensiones"
@@ -2580,7 +2582,7 @@ msgstr "Estado"
msgid "“version” takes no arguments" msgid "“version” takes no arguments"
msgstr "«version» no lleva argumentos" msgstr "«version» no lleva argumentos"
#: src/extensions-tool/main.c:223 src/extensions-tool/main.c:239 #: src/extensions-tool/main.c:223 src/extensions-tool/main.c:243
msgid "Usage:" msgid "Usage:"
msgstr "Uso:" msgstr "Uso:"
@@ -2588,84 +2590,83 @@ msgstr "Uso:"
msgid "Print version information and exit." msgid "Print version information and exit."
msgstr "Mostrar información de la versión y salir." msgstr "Mostrar información de la versión y salir."
#: src/extensions-tool/main.c:240 #: src/extensions-tool/main.c:241 src/extensions-tool/main.c:244
msgid "COMMAND" msgid "COMMAND"
msgstr "COMANDO" msgstr "COMANDO"
#: src/extensions-tool/main.c:240 #: src/extensions-tool/main.c:244
msgid "[ARGS…]" msgid "[ARGS…]"
msgstr "[ARGS…]" msgstr "[ARGS…]"
#: src/extensions-tool/main.c:242 #: src/extensions-tool/main.c:246
msgid "Commands:" msgid "Commands:"
msgstr "Comandos:" msgstr "Comandos:"
#: src/extensions-tool/main.c:243 #: src/extensions-tool/main.c:247
msgid "Print help" msgid "Print help"
msgstr "Mostrar ayuda" msgstr "Mostrar ayuda"
#: src/extensions-tool/main.c:244 src/main.c:460 #: src/extensions-tool/main.c:248 src/main.c:468
msgid "Print version" msgid "Print version"
msgstr "Imprimir versión" msgstr "Imprimir versión"
#: src/extensions-tool/main.c:245 #: src/extensions-tool/main.c:249
msgid "Enable extension" msgid "Enable extension"
msgstr "Activar extensión" msgstr "Activar extensión"
#: src/extensions-tool/main.c:246 #: src/extensions-tool/main.c:250
msgid "Disable extension" msgid "Disable extension"
msgstr "Desactivar extensión" msgstr "Desactivar extensión"
#: src/extensions-tool/main.c:247 #: src/extensions-tool/main.c:251
msgid "Reset extension" msgid "Reset extension"
msgstr "Restablecer extensión" msgstr "Restablecer extensión"
#: src/extensions-tool/main.c:248 #: src/extensions-tool/main.c:252
msgid "Uninstall extension" msgid "Uninstall extension"
msgstr "Desinstalar extensión" msgstr "Desinstalar extensión"
#: src/extensions-tool/main.c:249 #: src/extensions-tool/main.c:253
msgid "List extensions" msgid "List extensions"
msgstr "Listar extensiones" msgstr "Listar extensiones"
#: src/extensions-tool/main.c:250 src/extensions-tool/main.c:251 #: src/extensions-tool/main.c:254 src/extensions-tool/main.c:255
msgid "Show extension info" msgid "Show extension info"
msgstr "Mostrar información de la extensión" msgstr "Mostrar información de la extensión"
#: src/extensions-tool/main.c:252 #: src/extensions-tool/main.c:256
msgid "Open extension preferences" msgid "Open extension preferences"
msgstr "Abrir las preferencias de la extensión" msgstr "Abrir las preferencias de la extensión"
#: src/extensions-tool/main.c:253 #: src/extensions-tool/main.c:257
msgid "Create extension" msgid "Create extension"
msgstr "Crear extensión" msgstr "Crear extensión"
#: src/extensions-tool/main.c:254 #: src/extensions-tool/main.c:258
#| msgid "Extension"
msgid "Package extension" msgid "Package extension"
msgstr "Extensión del paquete" msgstr "Extensión del paquete"
#: src/extensions-tool/main.c:255 #: src/extensions-tool/main.c:259
#| msgid "UUIDs of extensions to enable"
msgid "Install extension bundle" msgid "Install extension bundle"
msgstr "Instalar conjunto de extensiones" msgstr "Instalar conjunto de extensiones"
#: src/extensions-tool/main.c:257 #: src/extensions-tool/main.c:261
#, c-format #, c-format
msgid "Use %s to get detailed help.\n" #| msgid "Use %s to get detailed help.\n"
msgstr "Use %s para obtener ayuda detallada.\n" msgid "Use %s” to get detailed help.\n"
msgstr "Use «%s» para obtener ayuda detallada.\n"
#: src/main.c:466 #: src/main.c:474
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Modo usado por GDM para la pantalla de inicio" msgstr "Modo usado por GDM para la pantalla de inicio"
#: src/main.c:472 #: src/main.c:480
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "" msgstr ""
"Usar un modo específico, por ejemplo, «gdm» para la pantalla de inicio de " "Usar un modo específico, por ejemplo, «gdm» para la pantalla de inicio de "
"sesión" "sesión"
#: src/main.c:478 #: src/main.c:486
msgid "List possible modes" msgid "List possible modes"
msgstr "Listar los modos posibles" msgstr "Listar los modos posibles"

106
po/fa.po
View File

@@ -9,8 +9,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-08-21 23:18+0000\n" "POT-Creation-Date: 2019-09-11 17:13+0000\n"
"PO-Revision-Date: 2019-08-22 16:40+0430\n" "PO-Revision-Date: 2019-09-12 12:26+0000\n"
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n" "Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n"
"Language-Team: Persian <>\n" "Language-Team: Persian <>\n"
"Language: fa\n" "Language: fa\n"
@@ -430,7 +430,7 @@ msgstr ""
#: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53 #: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53
#: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:445 js/ui/extensionDownloader.js:189 #: js/ui/endSessionDialog.js:448 js/ui/extensionDownloader.js:189
#: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399 #: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399
#: js/ui/status/network.js:899 #: js/ui/status/network.js:899
msgid "Cancel" msgid "Cancel"
@@ -733,28 +733,32 @@ msgstr "پُراستفاده"
msgid "All" msgid "All"
msgstr "همه" msgstr "همه"
#: js/ui/appDisplay.js:1751
msgid "Rename"
msgstr "تغییر نام"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2233 js/ui/panel.js:77 #: js/ui/appDisplay.js:2397 js/ui/panel.js:77
msgid "Open Windows" msgid "Open Windows"
msgstr "گشودن پنجره‌‌ها" msgstr "گشودن پنجره‌‌ها"
#: js/ui/appDisplay.js:2252 js/ui/panel.js:84 #: js/ui/appDisplay.js:2416 js/ui/panel.js:84
msgid "New Window" msgid "New Window"
msgstr "پنجرهٔ جدید" msgstr "پنجرهٔ جدید"
#: js/ui/appDisplay.js:2264 #: js/ui/appDisplay.js:2428
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "اجرا با کارت گرافیک اختصاصی" msgstr "اجرا با کارت گرافیک اختصاصی"
#: js/ui/appDisplay.js:2293 js/ui/dash.js:240 #: js/ui/appDisplay.js:2457 js/ui/dash.js:240
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "حذف از مورد پسندها" msgstr "حذف از مورد پسندها"
#: js/ui/appDisplay.js:2299 #: js/ui/appDisplay.js:2463
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "اضافه کردن به مورد پسندها" msgstr "اضافه کردن به مورد پسندها"
#: js/ui/appDisplay.js:2309 js/ui/panel.js:95 #: js/ui/appDisplay.js:2473 js/ui/panel.js:95
msgid "Show Details" msgid "Show Details"
msgstr "نمایش جزئیات" msgstr "نمایش جزئیات"
@@ -784,7 +788,7 @@ msgstr "هدفون‌ها"
msgid "Headset" msgid "Headset"
msgstr "هدست" msgstr "هدست"
#: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:241 #: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:248
msgid "Microphone" msgid "Microphone"
msgstr "میکروفون" msgstr "میکروفون"
@@ -1277,13 +1281,13 @@ msgid "Other users are logged in."
msgstr "کاربران دیگر وارد سامانه هستند." msgstr "کاربران دیگر وارد سامانه هستند."
#. Translators: Remote here refers to a remote session, like a ssh login #. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:647 #: js/ui/endSessionDialog.js:650
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (دوردست)" msgstr "%s (دوردست)"
#. Translators: Console here refers to a tty like a VT console #. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:650 #: js/ui/endSessionDialog.js:653
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (پایانه)" msgstr "%s (پایانه)"
@@ -1434,7 +1438,7 @@ msgstr "نمایش منبع"
msgid "Web Page" msgid "Web Page"
msgstr "صفحهٔ وب" msgstr "صفحهٔ وب"
#: js/ui/messageTray.js:1462 #: js/ui/messageTray.js:1461
msgid "System Information" msgid "System Information"
msgstr "اطلاعات سامانه" msgstr "اطلاعات سامانه"
@@ -1563,7 +1567,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%Id آگاهی جدید" msgstr[0] "%Id آگاهی جدید"
msgstr[1] "%Id آگاهی جدید" msgstr[1] "%Id آگاهی جدید"
#: js/ui/screenShield.js:444 js/ui/status/system.js:269 #: js/ui/screenShield.js:444 js/ui/status/system.js:260
msgid "Lock" msgid "Lock"
msgstr "قفل کردن" msgstr "قفل کردن"
@@ -1586,15 +1590,15 @@ msgstr "نمی‌توان قفل کرد"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "قفل توسط یک برنامه مسدود شده بود" msgstr "قفل توسط یک برنامه مسدود شده بود"
#: js/ui/search.js:647 #: js/ui/search.js:668
msgid "Searching…" msgid "Searching…"
msgstr "درحال حستجو…" msgstr "درحال حستجو…"
#: js/ui/search.js:649 #: js/ui/search.js:670
msgid "No results." msgid "No results."
msgstr "بدون نتیجه." msgstr "بدون نتیجه."
#: js/ui/search.js:773 #: js/ui/search.js:794
#, javascript-format #, javascript-format
msgid "%d more" msgid "%d more"
msgid_plural "%d more" msgid_plural "%d more"
@@ -2076,27 +2080,27 @@ msgstr "خاموش کردن"
msgid "Airplane Mode On" msgid "Airplane Mode On"
msgstr "حالت هواپیمایی روشن است" msgstr "حالت هواپیمایی روشن است"
#: js/ui/status/system.js:201 #: js/ui/status/system.js:192
msgid "Switch User" msgid "Switch User"
msgstr "تعویض کاربر" msgstr "تعویض کاربر"
#: js/ui/status/system.js:213 #: js/ui/status/system.js:204
msgid "Log Out" msgid "Log Out"
msgstr "خروج" msgstr "خروج"
#: js/ui/status/system.js:225 #: js/ui/status/system.js:216
msgid "Account Settings" msgid "Account Settings"
msgstr "تنظیمات حساب" msgstr "تنظیمات حساب"
#: js/ui/status/system.js:254 #: js/ui/status/system.js:245
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "قفل جهت" msgstr "قفل جهت"
#: js/ui/status/system.js:280 #: js/ui/status/system.js:271
msgid "Suspend" msgid "Suspend"
msgstr "تعلیق" msgstr "تعلیق"
#: js/ui/status/system.js:290 #: js/ui/status/system.js:281
msgid "Power Off" msgid "Power Off"
msgstr "خاموش کردن" msgstr "خاموش کردن"
@@ -2133,11 +2137,11 @@ msgstr "خطای تأیید هویت تاندربولت"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "نمی‌توان افزارهٔ تاندربولت را تأیید هویت کرد: %s" msgstr "نمی‌توان افزارهٔ تاندربولت را تأیید هویت کرد: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:129
msgid "Volume changed" msgid "Volume changed"
msgstr "بلندی صدا تغییر کرد" msgstr "بلندی صدا تغییر کرد"
#: js/ui/status/volume.js:193 #: js/ui/status/volume.js:200
msgid "Volume" msgid "Volume"
msgstr "بلندی صدا" msgstr "بلندی صدا"
@@ -2190,22 +2194,22 @@ msgstr "جستجو"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "«%s» آماده است" msgstr "«%s» آماده است"
#: js/ui/windowManager.js:54 #: js/ui/windowManager.js:55
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "آیا می‌خواهید تنظیمات تصویر را نگاه دارید؟" msgstr "آیا می‌خواهید تنظیمات تصویر را نگاه دارید؟"
#. Translators: this and the following message should be limited in length, #. Translators: this and the following message should be limited in length,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:66 #: js/ui/windowManager.js:67
msgid "Revert Settings" msgid "Revert Settings"
msgstr "بازنشانی تنظیمات" msgstr "بازنشانی تنظیمات"
#: js/ui/windowManager.js:69 #: js/ui/windowManager.js:70
msgid "Keep Changes" msgid "Keep Changes"
msgstr "ذخیره تغییرات" msgstr "ذخیره تغییرات"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:88
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
@@ -2214,7 +2218,7 @@ msgstr[1] "تغییرات تنظیمات در %Id ثانیه بازنشانی م
#. Translators: This represents the size of a window. The first number is #. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. #. * the width of the window and the second is the height.
#: js/ui/windowManager.js:683 #: js/ui/windowManager.js:684
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%Id × %Id" msgstr "%Id × %Id"
@@ -2518,7 +2522,7 @@ msgstr "وضعیت"
msgid "“version” takes no arguments" msgid "“version” takes no arguments"
msgstr "«نگارش» آرگومانی نمی‌گیرد" msgstr "«نگارش» آرگومانی نمی‌گیرد"
#: src/extensions-tool/main.c:223 src/extensions-tool/main.c:239 #: src/extensions-tool/main.c:223 src/extensions-tool/main.c:243
msgid "Usage:" msgid "Usage:"
msgstr "استفاده:" msgstr "استفاده:"
@@ -2526,80 +2530,80 @@ msgstr "استفاده:"
msgid "Print version information and exit." msgid "Print version information and exit."
msgstr "چاپ اطّلاعات نگارش و خروج." msgstr "چاپ اطّلاعات نگارش و خروج."
#: src/extensions-tool/main.c:240 #: src/extensions-tool/main.c:241 src/extensions-tool/main.c:244
msgid "COMMAND" msgid "COMMAND"
msgstr "COMMAND" msgstr "COMMAND"
#: src/extensions-tool/main.c:240 #: src/extensions-tool/main.c:244
msgid "[ARGS…]" msgid "[ARGS…]"
msgstr "[ARGS…]" msgstr "[ARGS…]"
#: src/extensions-tool/main.c:242 #: src/extensions-tool/main.c:246
msgid "Commands:" msgid "Commands:"
msgstr "دستورات:" msgstr "دستورات:"
#: src/extensions-tool/main.c:243 #: src/extensions-tool/main.c:247
msgid "Print help" msgid "Print help"
msgstr "چاپ راهنما" msgstr "چاپ راهنما"
#: src/extensions-tool/main.c:244 src/main.c:460 #: src/extensions-tool/main.c:248 src/main.c:468
msgid "Print version" msgid "Print version"
msgstr "چاپ نسخه" msgstr "چاپ نسخه"
#: src/extensions-tool/main.c:245 #: src/extensions-tool/main.c:249
msgid "Enable extension" msgid "Enable extension"
msgstr "فعّال کردن افزونه" msgstr "فعّال کردن افزونه"
#: src/extensions-tool/main.c:246 #: src/extensions-tool/main.c:250
msgid "Disable extension" msgid "Disable extension"
msgstr "غیرفعّال کردن افزونه" msgstr "غیرفعّال کردن افزونه"
#: src/extensions-tool/main.c:247 #: src/extensions-tool/main.c:251
msgid "Reset extension" msgid "Reset extension"
msgstr "بازنشانی افزونه" msgstr "بازنشانی افزونه"
#: src/extensions-tool/main.c:248 #: src/extensions-tool/main.c:252
msgid "Uninstall extension" msgid "Uninstall extension"
msgstr "حذف نصب افزونه" msgstr "حذف نصب افزونه"
#: src/extensions-tool/main.c:249 #: src/extensions-tool/main.c:253
msgid "List extensions" msgid "List extensions"
msgstr "فهرست افزونه‌ها" msgstr "فهرست افزونه‌ها"
#: src/extensions-tool/main.c:250 src/extensions-tool/main.c:251 #: src/extensions-tool/main.c:254 src/extensions-tool/main.c:255
msgid "Show extension info" msgid "Show extension info"
msgstr "نمایش اطّلاعات افزونه" msgstr "نمایش اطّلاعات افزونه"
#: src/extensions-tool/main.c:252 #: src/extensions-tool/main.c:256
msgid "Open extension preferences" msgid "Open extension preferences"
msgstr "گشودن ترجیحات افزونه" msgstr "گشودن ترجیحات افزونه"
#: src/extensions-tool/main.c:253 #: src/extensions-tool/main.c:257
msgid "Create extension" msgid "Create extension"
msgstr "ایجاد افزونه" msgstr "ایجاد افزونه"
#: src/extensions-tool/main.c:254 #: src/extensions-tool/main.c:258
msgid "Package extension" msgid "Package extension"
msgstr "بسته‌بندی افزونه" msgstr "بسته‌بندی افزونه"
#: src/extensions-tool/main.c:255 #: src/extensions-tool/main.c:259
msgid "Install extension bundle" msgid "Install extension bundle"
msgstr "نصب دستهٔ افزونه" msgstr "نصب دستهٔ افزونه"
#: src/extensions-tool/main.c:257 #: src/extensions-tool/main.c:261
#, c-format #, c-format
msgid "Use %s to get detailed help.\n" msgid "Use %s to get detailed help.\n"
msgstr "برای گرفتن راهنمای با جزییات از %s استفاده کنید.\n" msgstr "برای گرفتن راهنمای با جزییات از %s استفاده کنید.\n"
#: src/main.c:466 #: src/main.c:474
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "حالت استفاده شده توسط GDM برای صفحه ورود به سامانه" msgstr "حالت استفاده شده توسط GDM برای صفحه ورود به سامانه"
#: src/main.c:472 #: src/main.c:480
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "استفاده از یک حالت مشخص، مثلاً gdm برای صفحهٔ ورود" msgstr "استفاده از یک حالت مشخص، مثلاً gdm برای صفحهٔ ورود"
#: src/main.c:478 #: src/main.c:486
msgid "List possible modes" msgid "List possible modes"
msgstr "فهرست کردن حالت‌های ممکن" msgstr "فهرست کردن حالت‌های ممکن"

View File

@@ -25,8 +25,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-08-21 23:18+0000\n" "POT-Creation-Date: 2019-09-09 20:24+0000\n"
"PO-Revision-Date: 2019-08-22 19:36+0300\n" "PO-Revision-Date: 2019-09-10 14:10+0300\n"
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n" "Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
"Language-Team: suomi <lokalisointi-lista@googlegroups.com>\n" "Language-Team: suomi <lokalisointi-lista@googlegroups.com>\n"
"Language: fi\n" "Language: fi\n"
@@ -34,7 +34,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.0.6\n" "X-Generator: Poedit 2.2.3\n"
"X-DamnedLies-Scope: partial\n" "X-DamnedLies-Scope: partial\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
"X-POT-Import-Date: 2012-03-05 15:06:10+0000\n" "X-POT-Import-Date: 2012-03-05 15:06:10+0000\n"
@@ -486,7 +486,7 @@ msgstr ""
#: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53 #: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53
#: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:445 js/ui/extensionDownloader.js:189 #: js/ui/endSessionDialog.js:448 js/ui/extensionDownloader.js:189
#: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399 #: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399
#: js/ui/status/network.js:899 #: js/ui/status/network.js:899
msgid "Cancel" msgid "Cancel"
@@ -789,28 +789,32 @@ msgstr "Käytetyimmät"
msgid "All" msgid "All"
msgstr "Kaikki" msgstr "Kaikki"
#: js/ui/appDisplay.js:1751
msgid "Rename"
msgstr "Nimeä uudelleen"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2233 js/ui/panel.js:77 #: js/ui/appDisplay.js:2397 js/ui/panel.js:77
msgid "Open Windows" msgid "Open Windows"
msgstr "Avoimet ikkunat" msgstr "Avoimet ikkunat"
#: js/ui/appDisplay.js:2252 js/ui/panel.js:84 #: js/ui/appDisplay.js:2416 js/ui/panel.js:84
msgid "New Window" msgid "New Window"
msgstr "Uusi ikkuna" msgstr "Uusi ikkuna"
#: js/ui/appDisplay.js:2264 #: js/ui/appDisplay.js:2428
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Käynnistä erillisnäytönohjainta käyttäen" msgstr "Käynnistä erillisnäytönohjainta käyttäen"
#: js/ui/appDisplay.js:2293 js/ui/dash.js:240 #: js/ui/appDisplay.js:2457 js/ui/dash.js:240
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Poista suosikeista" msgstr "Poista suosikeista"
#: js/ui/appDisplay.js:2299 #: js/ui/appDisplay.js:2463
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Lisää suosikkeihin" msgstr "Lisää suosikkeihin"
#: js/ui/appDisplay.js:2309 js/ui/panel.js:95 #: js/ui/appDisplay.js:2473 js/ui/panel.js:95
msgid "Show Details" msgid "Show Details"
msgstr "Näytä tiedot" msgstr "Näytä tiedot"
@@ -840,7 +844,7 @@ msgstr "Kuulokkeet"
msgid "Headset" msgid "Headset"
msgstr "Headset-kuulokkeet" msgstr "Headset-kuulokkeet"
#: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:241 #: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:248
msgid "Microphone" msgid "Microphone"
msgstr "Mikrofoni" msgstr "Mikrofoni"
@@ -1341,13 +1345,13 @@ msgid "Other users are logged in."
msgstr "Muita käyttäjiä on kirjautuneena." msgstr "Muita käyttäjiä on kirjautuneena."
#. Translators: Remote here refers to a remote session, like a ssh login #. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:647 #: js/ui/endSessionDialog.js:650
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (etä)" msgstr "%s (etä)"
#. Translators: Console here refers to a tty like a VT console #. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:650 #: js/ui/endSessionDialog.js:653
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konsoli)" msgstr "%s (konsoli)"
@@ -1502,7 +1506,7 @@ msgstr "Näytä lähde"
msgid "Web Page" msgid "Web Page"
msgstr "Verkkosivusto" msgstr "Verkkosivusto"
#: js/ui/messageTray.js:1462 #: js/ui/messageTray.js:1461
msgid "System Information" msgid "System Information"
msgstr "Järjestelmän tiedot" msgstr "Järjestelmän tiedot"
@@ -1633,7 +1637,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d uusi ilmoitus" msgstr[0] "%d uusi ilmoitus"
msgstr[1] "%d uutta ilmoitusta" msgstr[1] "%d uutta ilmoitusta"
#: js/ui/screenShield.js:444 js/ui/status/system.js:269 #: js/ui/screenShield.js:444 js/ui/status/system.js:260
msgid "Lock" msgid "Lock"
msgstr "Lukitse" msgstr "Lukitse"
@@ -1656,15 +1660,15 @@ msgstr "Lukitus epäonnistui"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Lukitus estettiin sovelluksen toimesta" msgstr "Lukitus estettiin sovelluksen toimesta"
#: js/ui/search.js:647 #: js/ui/search.js:668
msgid "Searching…" msgid "Searching…"
msgstr "Etsitään…" msgstr "Etsitään…"
#: js/ui/search.js:649 #: js/ui/search.js:670
msgid "No results." msgid "No results."
msgstr "Ei tuloksia." msgstr "Ei tuloksia."
#: js/ui/search.js:773 #: js/ui/search.js:794
#, javascript-format #, javascript-format
msgid "%d more" msgid "%d more"
msgid_plural "%d more" msgid_plural "%d more"
@@ -2147,27 +2151,27 @@ msgstr "Sammuta"
msgid "Airplane Mode On" msgid "Airplane Mode On"
msgstr "Lentokonetila on päällä" msgstr "Lentokonetila on päällä"
#: js/ui/status/system.js:201 #: js/ui/status/system.js:192
msgid "Switch User" msgid "Switch User"
msgstr "Vaihda käyttäjää" msgstr "Vaihda käyttäjää"
#: js/ui/status/system.js:213 #: js/ui/status/system.js:204
msgid "Log Out" msgid "Log Out"
msgstr "Kirjaudu ulos" msgstr "Kirjaudu ulos"
#: js/ui/status/system.js:225 #: js/ui/status/system.js:216
msgid "Account Settings" msgid "Account Settings"
msgstr "Tilin asetukset" msgstr "Tilin asetukset"
#: js/ui/status/system.js:254 #: js/ui/status/system.js:245
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Kiertolukitus" msgstr "Kiertolukitus"
#: js/ui/status/system.js:280 #: js/ui/status/system.js:271
msgid "Suspend" msgid "Suspend"
msgstr "Valmiustila" msgstr "Valmiustila"
#: js/ui/status/system.js:290 #: js/ui/status/system.js:281
msgid "Power Off" msgid "Power Off"
msgstr "Sammuta" msgstr "Sammuta"
@@ -2205,11 +2209,11 @@ msgstr "Thunderbolt-valtuutusvirhe"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Thunderbolt-laitetta ei voitu valtuuttaa: %s" msgstr "Thunderbolt-laitetta ei voitu valtuuttaa: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:129
msgid "Volume changed" msgid "Volume changed"
msgstr "Äänenvoimakkuutta muutettu" msgstr "Äänenvoimakkuutta muutettu"
#: js/ui/status/volume.js:193 #: js/ui/status/volume.js:200
msgid "Volume" msgid "Volume"
msgstr "Äänenvoimakkuus" msgstr "Äänenvoimakkuus"
@@ -2262,22 +2266,22 @@ msgstr "Haku"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "“%s” on valmis" msgstr "“%s” on valmis"
#: js/ui/windowManager.js:54 #: js/ui/windowManager.js:55
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "Haluatko säilyttää nämä näyttöasetukset?" msgstr "Haluatko säilyttää nämä näyttöasetukset?"
#. Translators: this and the following message should be limited in length, #. Translators: this and the following message should be limited in length,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:66 #: js/ui/windowManager.js:67
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Palauta asetukset" msgstr "Palauta asetukset"
#: js/ui/windowManager.js:69 #: js/ui/windowManager.js:70
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Säilytä muutokset" msgstr "Säilytä muutokset"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:88
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
@@ -2286,7 +2290,7 @@ msgstr[1] "Asetusmuutokset palautetaan %d sekunnissa"
#. Translators: This represents the size of a window. The first number is #. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. #. * the width of the window and the second is the height.
#: js/ui/windowManager.js:683 #: js/ui/windowManager.js:684
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2623,7 +2627,7 @@ msgstr "Komennot:"
msgid "Print help" msgid "Print help"
msgstr "Tulosta ohje" msgstr "Tulosta ohje"
#: src/extensions-tool/main.c:244 src/main.c:460 #: src/extensions-tool/main.c:244 src/main.c:468
msgid "Print version" msgid "Print version"
msgstr "Tulosta versio" msgstr "Tulosta versio"
@@ -2674,15 +2678,15 @@ msgstr "Asenna laajennuspaketti"
msgid "Use %s to get detailed help.\n" msgid "Use %s to get detailed help.\n"
msgstr "Suorita %s nähdäksesi yksityiskohtaisia ohjeita.\n" msgstr "Suorita %s nähdäksesi yksityiskohtaisia ohjeita.\n"
#: src/main.c:466 #: src/main.c:474
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "GDM:n kirjautumisruudussa käyttämä tila" msgstr "GDM:n kirjautumisruudussa käyttämä tila"
#: src/main.c:472 #: src/main.c:480
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Käytä tiettyä tilaa (esim. “gdm”) kirjautumisnäkymää varten" msgstr "Käytä tiettyä tilaa (esim. “gdm”) kirjautumisnäkymää varten"
#: src/main.c:478 #: src/main.c:486
msgid "List possible modes" msgid "List possible modes"
msgstr "Listaa mahdolliset tilat" msgstr "Listaa mahdolliset tilat"

1287
po/fr.po

File diff suppressed because it is too large Load Diff

View File

@@ -11,8 +11,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-08-25 16:47+0000\n" "POT-Creation-Date: 2019-09-09 20:24+0000\n"
"PO-Revision-Date: 2019-08-26 17:22+0200\n" "PO-Revision-Date: 2019-09-10 00:45+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n" "Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: Galician\n" "Language-Team: Galician\n"
"Language: gl\n" "Language: gl\n"
@@ -460,7 +460,7 @@ msgstr ""
#: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53 #: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53
#: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:445 js/ui/extensionDownloader.js:189 #: js/ui/endSessionDialog.js:448 js/ui/extensionDownloader.js:189
#: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399 #: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399
#: js/ui/status/network.js:899 #: js/ui/status/network.js:899
msgid "Cancel" msgid "Cancel"
@@ -764,28 +764,32 @@ msgstr "Frecuentes"
msgid "All" msgid "All"
msgstr "Todos" msgstr "Todos"
#: js/ui/appDisplay.js:1751
msgid "Rename"
msgstr "Renomear"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2233 js/ui/panel.js:77 #: js/ui/appDisplay.js:2397 js/ui/panel.js:77
msgid "Open Windows" msgid "Open Windows"
msgstr "Abrir Xanelas" msgstr "Abrir Xanelas"
#: js/ui/appDisplay.js:2252 js/ui/panel.js:84 #: js/ui/appDisplay.js:2416 js/ui/panel.js:84
msgid "New Window" msgid "New Window"
msgstr "Xanela nova" msgstr "Xanela nova"
#: js/ui/appDisplay.js:2264 #: js/ui/appDisplay.js:2428
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Iniciar usando a Tarxeta Gráfica Adicada" msgstr "Iniciar usando a Tarxeta Gráfica Adicada"
#: js/ui/appDisplay.js:2293 js/ui/dash.js:240 #: js/ui/appDisplay.js:2457 js/ui/dash.js:240
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Retirar dos marcadores" msgstr "Retirar dos marcadores"
#: js/ui/appDisplay.js:2299 #: js/ui/appDisplay.js:2463
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Engadir aos favoritos" msgstr "Engadir aos favoritos"
#: js/ui/appDisplay.js:2309 js/ui/panel.js:95 #: js/ui/appDisplay.js:2473 js/ui/panel.js:95
msgid "Show Details" msgid "Show Details"
msgstr "Mostrar detalles" msgstr "Mostrar detalles"
@@ -815,7 +819,7 @@ msgstr "Cascos auriculares"
msgid "Headset" msgid "Headset"
msgstr "Auriculares" msgstr "Auriculares"
#: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:241 #: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:248
msgid "Microphone" msgid "Microphone"
msgstr "Micrófono" msgstr "Micrófono"
@@ -1314,13 +1318,13 @@ msgid "Other users are logged in."
msgstr "Hai outros usuarios conectados." msgstr "Hai outros usuarios conectados."
#. Translators: Remote here refers to a remote session, like a ssh login #. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:647 #: js/ui/endSessionDialog.js:650
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (remoto)" msgstr "%s (remoto)"
#. Translators: Console here refers to a tty like a VT console #. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:650 #: js/ui/endSessionDialog.js:653
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (consola)" msgstr "%s (consola)"
@@ -1475,7 +1479,7 @@ msgstr "Ver fonte"
msgid "Web Page" msgid "Web Page"
msgstr "Páxina web" msgstr "Páxina web"
#: js/ui/messageTray.js:1462 #: js/ui/messageTray.js:1461
msgid "System Information" msgid "System Information"
msgstr "Información do sistema" msgstr "Información do sistema"
@@ -1604,7 +1608,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d notificación nova" msgstr[0] "%d notificación nova"
msgstr[1] "%d notificacións novas" msgstr[1] "%d notificacións novas"
#: js/ui/screenShield.js:444 js/ui/status/system.js:269 #: js/ui/screenShield.js:444 js/ui/status/system.js:260
msgid "Lock" msgid "Lock"
msgstr "Bloquear" msgstr "Bloquear"
@@ -1627,15 +1631,15 @@ msgstr "Non foi posíbel bloquear"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Un aplicativo impediu o bloqueo" msgstr "Un aplicativo impediu o bloqueo"
#: js/ui/search.js:647 #: js/ui/search.js:668
msgid "Searching…" msgid "Searching…"
msgstr "Buscando…" msgstr "Buscando…"
#: js/ui/search.js:649 #: js/ui/search.js:670
msgid "No results." msgid "No results."
msgstr "Sen resultados." msgstr "Sen resultados."
#: js/ui/search.js:773 #: js/ui/search.js:794
#, javascript-format #, javascript-format
msgid "%d more" msgid "%d more"
msgid_plural "%d more" msgid_plural "%d more"
@@ -2120,27 +2124,27 @@ msgstr "Desactivar"
msgid "Airplane Mode On" msgid "Airplane Mode On"
msgstr "Modo avión activado" msgstr "Modo avión activado"
#: js/ui/status/system.js:201 #: js/ui/status/system.js:192
msgid "Switch User" msgid "Switch User"
msgstr "Cambiar de usuario" msgstr "Cambiar de usuario"
#: js/ui/status/system.js:213 #: js/ui/status/system.js:204
msgid "Log Out" msgid "Log Out"
msgstr "Saír da sesión" msgstr "Saír da sesión"
#: js/ui/status/system.js:225 #: js/ui/status/system.js:216
msgid "Account Settings" msgid "Account Settings"
msgstr "Preferencias da conta" msgstr "Preferencias da conta"
#: js/ui/status/system.js:254 #: js/ui/status/system.js:245
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Bloqueo de orientación" msgstr "Bloqueo de orientación"
#: js/ui/status/system.js:280 #: js/ui/status/system.js:271
msgid "Suspend" msgid "Suspend"
msgstr "Suspender" msgstr "Suspender"
#: js/ui/status/system.js:290 #: js/ui/status/system.js:281
msgid "Power Off" msgid "Power Off"
msgstr "Apagar" msgstr "Apagar"
@@ -2179,11 +2183,11 @@ msgstr "Erro de autorización de Thunderbolt"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Non foi posíbel autorizar o dispositivo Thunderbolt: %s" msgstr "Non foi posíbel autorizar o dispositivo Thunderbolt: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:129
msgid "Volume changed" msgid "Volume changed"
msgstr "Volume cambiado" msgstr "Volume cambiado"
#: js/ui/status/volume.js:193 #: js/ui/status/volume.js:200
msgid "Volume" msgid "Volume"
msgstr "Volume" msgstr "Volume"
@@ -2236,22 +2240,22 @@ msgstr "Buscar"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "«%s» está preparado" msgstr "«%s» está preparado"
#: js/ui/windowManager.js:54 #: js/ui/windowManager.js:55
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "Desexa manter estas preferencias de pantalla?" msgstr "Desexa manter estas preferencias de pantalla?"
#. Translators: this and the following message should be limited in length, #. Translators: this and the following message should be limited in length,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:66 #: js/ui/windowManager.js:67
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Reverter preferencias" msgstr "Reverter preferencias"
#: js/ui/windowManager.js:69 #: js/ui/windowManager.js:70
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Manter cambios" msgstr "Manter cambios"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:88
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
@@ -2260,7 +2264,7 @@ msgstr[1] "Os cambios das preferencias revertiranse en %d segundos"
#. Translators: This represents the size of a window. The first number is #. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. #. * the width of the window and the second is the height.
#: js/ui/windowManager.js:683 #: js/ui/windowManager.js:684
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2598,7 +2602,7 @@ msgstr "Ordes:"
msgid "Print help" msgid "Print help"
msgstr "Imprime a axuda" msgstr "Imprime a axuda"
#: src/extensions-tool/main.c:244 src/main.c:460 #: src/extensions-tool/main.c:244 src/main.c:468
msgid "Print version" msgid "Print version"
msgstr "Imprimir versión" msgstr "Imprimir versión"
@@ -2647,17 +2651,17 @@ msgstr "Instalar paquete de extensión"
msgid "Use %s to get detailed help.\n" msgid "Use %s to get detailed help.\n"
msgstr "Use %s obter axuda detallada.\n" msgstr "Use %s obter axuda detallada.\n"
#: src/main.c:466 #: src/main.c:474
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Modo usado por GDM para a pantalla de inicio" msgstr "Modo usado por GDM para a pantalla de inicio"
#: src/main.c:472 #: src/main.c:480
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "" msgstr ""
"Usar un modo específico, por exemplo, «gdm» para a pantalla de inicio de " "Usar un modo específico, por exemplo, «gdm» para a pantalla de inicio de "
"sesión" "sesión"
#: src/main.c:478 #: src/main.c:486
msgid "List possible modes" msgid "List possible modes"
msgstr "Listar os modos posíbeis" msgstr "Listar os modos posíbeis"

1193
po/hr.po

File diff suppressed because it is too large Load Diff

1210
po/hu.po

File diff suppressed because it is too large Load Diff

405
po/id.po
View File

@@ -9,8 +9,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-08-12 19:40+0000\n" "POT-Creation-Date: 2019-09-11 17:13+0000\n"
"PO-Revision-Date: 2019-08-16 15:37+0700\n" "PO-Revision-Date: 2019-09-12 01:30+0700\n"
"Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n" "Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n" "Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
"Language: id\n" "Language: id\n"
@@ -47,7 +47,7 @@ msgid "Open the application menu"
msgstr "Buka menu aplikasi" msgstr "Buka menu aplikasi"
#: data/gnome-shell-extension-prefs.desktop.in.in:4 #: data/gnome-shell-extension-prefs.desktop.in.in:4
#: js/extensionPrefs/main.js:208 #: js/extensionPrefs/main.js:211
msgid "Shell Extensions" msgid "Shell Extensions"
msgstr "Ekstensi Shell" msgstr "Ekstensi Shell"
@@ -403,11 +403,11 @@ msgstr ""
msgid "Network Login" msgid "Network Login"
msgstr "Log Masuk Jaringan" msgstr "Log Masuk Jaringan"
#: js/extensionPrefs/main.js:101 js/extensionPrefs/main.js:531 #: js/extensionPrefs/main.js:104 js/extensionPrefs/main.js:534
msgid "Somethings gone wrong" msgid "Somethings gone wrong"
msgstr "Ada yang tidak beres" msgstr "Ada yang tidak beres"
#: js/extensionPrefs/main.js:108 #: js/extensionPrefs/main.js:111
msgid "" msgid ""
"Were very sorry, but theres been a problem: the settings for this " "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 cant be displayed. We recommend that you report the issue to the "
@@ -417,27 +417,27 @@ msgstr ""
"tidak dapat ditampilkan. Kami menyarankan Anda melaporkan masalah ini kepada " "tidak dapat ditampilkan. Kami menyarankan Anda melaporkan masalah ini kepada "
"penulis ekstensi." "penulis ekstensi."
#: js/extensionPrefs/main.js:115 #: js/extensionPrefs/main.js:118
msgid "Technical Details" msgid "Technical Details"
msgstr "Detail Teknis" msgstr "Detail Teknis"
#: js/extensionPrefs/main.js:150 #: js/extensionPrefs/main.js:153
msgid "Copy Error" msgid "Copy Error"
msgstr "Salin Galat" msgstr "Salin Galat"
#: js/extensionPrefs/main.js:177 #: js/extensionPrefs/main.js:180
msgid "Homepage" msgid "Homepage"
msgstr "Halaman Web" msgstr "Halaman Web"
#: js/extensionPrefs/main.js:178 #: js/extensionPrefs/main.js:181
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "Kunjungi halaman web ekstensi" msgstr "Kunjungi halaman web ekstensi"
#: js/extensionPrefs/main.js:473 #: js/extensionPrefs/main.js:476
msgid "No Extensions Installed" msgid "No Extensions Installed"
msgstr "Tak Ada Ekstensi Terpasang" msgstr "Tak Ada Ekstensi Terpasang"
#: js/extensionPrefs/main.js:483 #: js/extensionPrefs/main.js:486
msgid "" msgid ""
"Extensions can be installed through Software or <a href=\"https://extensions." "Extensions can be installed through Software or <a href=\"https://extensions."
"gnome.org\">extensions.gnome.org</a>." "gnome.org\">extensions.gnome.org</a>."
@@ -445,11 +445,11 @@ msgstr ""
"Ekstensi dapat dipasang melalui Perangkat Lunak atau <a href=\"https://" "Ekstensi dapat dipasang melalui Perangkat Lunak atau <a href=\"https://"
"extensions.gnome.org\">extensions.gnome.org</a>." "extensions.gnome.org\">extensions.gnome.org</a>."
#: js/extensionPrefs/main.js:498 #: js/extensionPrefs/main.js:501
msgid "Browse in Software" msgid "Browse in Software"
msgstr "Ramban di Perangkat Lunak" msgstr "Ramban di Perangkat Lunak"
#: js/extensionPrefs/main.js:538 #: js/extensionPrefs/main.js:541
msgid "" msgid ""
"Were very sorry, but it was not possible to get the list of installed " "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." "extensions. Make sure you are logged into GNOME and try again."
@@ -459,7 +459,7 @@ msgstr ""
#: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53 #: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53
#: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:445 js/ui/extensionDownloader.js:189 #: js/ui/endSessionDialog.js:448 js/ui/extensionDownloader.js:189
#: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399 #: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399
#: js/ui/status/network.js:899 #: js/ui/status/network.js:899
msgid "Cancel" msgid "Cancel"
@@ -763,28 +763,32 @@ msgstr "Sering"
msgid "All" msgid "All"
msgstr "Semua" msgstr "Semua"
#: js/ui/appDisplay.js:1751
msgid "Rename"
msgstr "Ubah Nama"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2233 js/ui/panel.js:77 #: js/ui/appDisplay.js:2397 js/ui/panel.js:77
msgid "Open Windows" msgid "Open Windows"
msgstr "Buka Jendela" msgstr "Buka Jendela"
#: js/ui/appDisplay.js:2252 js/ui/panel.js:84 #: js/ui/appDisplay.js:2416 js/ui/panel.js:84
msgid "New Window" msgid "New Window"
msgstr "Jendela Baru" msgstr "Jendela Baru"
#: js/ui/appDisplay.js:2264 #: js/ui/appDisplay.js:2428
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Luncurkan menggunakan Kartu Grafis Terdedikasi" msgstr "Luncurkan menggunakan Kartu Grafis Terdedikasi"
#: js/ui/appDisplay.js:2293 js/ui/dash.js:240 #: js/ui/appDisplay.js:2457 js/ui/dash.js:240
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Hapus dari Favorit" msgstr "Hapus dari Favorit"
#: js/ui/appDisplay.js:2299 #: js/ui/appDisplay.js:2463
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Tambah ke Favorit" msgstr "Tambah ke Favorit"
#: js/ui/appDisplay.js:2309 js/ui/panel.js:95 #: js/ui/appDisplay.js:2473 js/ui/panel.js:95
msgid "Show Details" msgid "Show Details"
msgstr "Tampilkan Rincian" msgstr "Tampilkan Rincian"
@@ -814,7 +818,7 @@ msgstr "Headphone"
msgid "Headset" msgid "Headset"
msgstr "Headset" msgstr "Headset"
#: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:241 #: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:248
msgid "Microphone" msgid "Microphone"
msgstr "Mikrofon" msgstr "Mikrofon"
@@ -1315,13 +1319,13 @@ msgid "Other users are logged in."
msgstr "Pengguna lain sedang log masuk." msgstr "Pengguna lain sedang log masuk."
#. Translators: Remote here refers to a remote session, like a ssh login #. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:647 #: js/ui/endSessionDialog.js:650
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (jarak jauh)" msgstr "%s (jarak jauh)"
#. Translators: Console here refers to a tty like a VT console #. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:650 #: js/ui/endSessionDialog.js:653
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konsol)" msgstr "%s (konsol)"
@@ -1474,7 +1478,7 @@ msgstr "Tilik Sumber"
msgid "Web Page" msgid "Web Page"
msgstr "Halaman Web" msgstr "Halaman Web"
#: js/ui/messageTray.js:1462 #: js/ui/messageTray.js:1461
msgid "System Information" msgid "System Information"
msgstr "Informasi Sistem" msgstr "Informasi Sistem"
@@ -1603,7 +1607,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d pemberitahuan baru" msgstr[0] "%d pemberitahuan baru"
msgstr[1] "%d pemberitahuan baru" msgstr[1] "%d pemberitahuan baru"
#: js/ui/screenShield.js:444 js/ui/status/system.js:269 #: js/ui/screenShield.js:444 js/ui/status/system.js:260
msgid "Lock" msgid "Lock"
msgstr "Kunci" msgstr "Kunci"
@@ -1626,15 +1630,15 @@ msgstr "Tak bisa mengunci"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Kunci diblokir oleh suatu aplikasi" msgstr "Kunci diblokir oleh suatu aplikasi"
#: js/ui/search.js:647 #: js/ui/search.js:668
msgid "Searching…" msgid "Searching…"
msgstr "Mencari…" msgstr "Mencari…"
#: js/ui/search.js:649 #: js/ui/search.js:670
msgid "No results." msgid "No results."
msgstr "Tak ada yang cocok." msgstr "Tak ada yang cocok."
#: js/ui/search.js:773 #: js/ui/search.js:794
#, javascript-format #, javascript-format
msgid "%d more" msgid "%d more"
msgid_plural "%d more" msgid_plural "%d more"
@@ -1780,7 +1784,7 @@ msgstr "Mati"
msgid "On" msgid "On"
msgstr "Hidup" msgstr "Hidup"
#: js/ui/status/brightness.js:37 #: js/ui/status/brightness.js:38
msgid "Brightness" msgid "Brightness"
msgstr "Kecerahan" msgstr "Kecerahan"
@@ -2117,27 +2121,27 @@ msgstr "Matikan"
msgid "Airplane Mode On" msgid "Airplane Mode On"
msgstr "Mode Pesawat Terbang Aktif" msgstr "Mode Pesawat Terbang Aktif"
#: js/ui/status/system.js:201 #: js/ui/status/system.js:192
msgid "Switch User" msgid "Switch User"
msgstr "Ganti Pengguna" msgstr "Ganti Pengguna"
#: js/ui/status/system.js:213 #: js/ui/status/system.js:204
msgid "Log Out" msgid "Log Out"
msgstr "Keluar" msgstr "Keluar"
#: js/ui/status/system.js:225 #: js/ui/status/system.js:216
msgid "Account Settings" msgid "Account Settings"
msgstr "Pengaturan Akun" msgstr "Pengaturan Akun"
#: js/ui/status/system.js:254 #: js/ui/status/system.js:245
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Kunci Orientasi" msgstr "Kunci Orientasi"
#: js/ui/status/system.js:280 #: js/ui/status/system.js:271
msgid "Suspend" msgid "Suspend"
msgstr "Suspensi" msgstr "Suspensi"
#: js/ui/status/system.js:290 #: js/ui/status/system.js:281
msgid "Power Off" msgid "Power Off"
msgstr "Matikan" msgstr "Matikan"
@@ -2176,11 +2180,11 @@ msgstr "Autorisasi Thunderbolt galat"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Tidak dapat mengautorisasi perangkat Thunderbolt: %s" msgstr "Tidak dapat mengautorisasi perangkat Thunderbolt: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:129
msgid "Volume changed" msgid "Volume changed"
msgstr "Volume diubah" msgstr "Volume diubah"
#: js/ui/status/volume.js:193 #: js/ui/status/volume.js:200
msgid "Volume" msgid "Volume"
msgstr "Volume" msgstr "Volume"
@@ -2233,22 +2237,22 @@ msgstr "Cari"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "“%s” siap" msgstr "“%s” siap"
#: js/ui/windowManager.js:54 #: js/ui/windowManager.js:55
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "Apakah Anda ingin mempertahankan pengaturan tampilan ini?" msgstr "Apakah Anda ingin mempertahankan pengaturan tampilan ini?"
#. Translators: this and the following message should be limited in length, #. Translators: this and the following message should be limited in length,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:66 #: js/ui/windowManager.js:67
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Balikkan Tatanan" msgstr "Balikkan Tatanan"
#: js/ui/windowManager.js:69 #: js/ui/windowManager.js:70
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Simpan Perubahan" msgstr "Simpan Perubahan"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:88
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
@@ -2257,7 +2261,7 @@ msgstr[1] "Perubahan tatanan akan dikembalikan dalam %d detik"
#. Translators: This represents the size of a window. The first number is #. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. #. * the width of the window and the second is the height.
#: js/ui/windowManager.js:683 #: js/ui/windowManager.js:684
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2330,19 +2334,328 @@ msgstr "Pindahkan ke Monitor Kanan"
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Evolution Kalender" msgstr "Evolution Kalender"
#: src/main.c:460 #: src/extensions-tool/command-create.c:189
#, c-format
msgid ""
"Name should be a very short (ideally descriptive) string.\n"
"Examples are: %s"
msgstr ""
"Nama harus berupa string yang sangat pendek (idealnya deskriptif).\n"
"Contohnya adalah: %s"
#: src/extensions-tool/command-create.c:192 src/extensions-tool/main.c:169
msgid "Name"
msgstr "Nama"
#: src/extensions-tool/command-create.c:203
#, c-format
msgid ""
"Description is a single-sentence explanation of what your extension does.\n"
"Examples are: %s"
msgstr ""
"Deskripsi adalah penjelasan satu kalimat tentang apa yang dilakukan ekstensi "
"Anda.\n"
"Contohnya adalah: %s"
#: src/extensions-tool/command-create.c:206 src/extensions-tool/main.c:172
msgid "Description"
msgstr "Deskripsi"
#: src/extensions-tool/command-create.c:217
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"
msgstr ""
"UUID adalah pengidentifikasi unik secara global untuk ekstensi Anda.\n"
"Ini harus dalam format alamat surel (clicktofocus@janedoe.example.com)\n"
#: src/extensions-tool/command-create.c:239
msgid "The unique identifier of the new extension"
msgstr "Pengidentifikasi unik ekstensi baru"
#: src/extensions-tool/command-create.c:242
msgid "NAME"
msgstr "NAMA"
#: src/extensions-tool/command-create.c:243
msgid "The user-visible name of the new extension"
msgstr "Nama ekstensi baru yang dapat dilihat pengguna"
#: src/extensions-tool/command-create.c:245
msgid "DESCRIPTION"
msgstr "DESKRIPSI"
#: src/extensions-tool/command-create.c:247
msgid "A short description of what the extension does"
msgstr "Deskripsi singkat tentang apa yang dilakukan ekstensi"
#: src/extensions-tool/command-create.c:250
msgid "Enter extension information interactively"
msgstr "Masukkan informasi ekstensi secara interaktif"
#: src/extensions-tool/command-create.c:258
msgid "Create a new extension"
msgstr "Buat ekstensi baru"
#: src/extensions-tool/command-create.c:275
#: src/extensions-tool/command-list.c:158
msgid "Unknown arguments"
msgstr "Argumen tak dikenal"
#: src/extensions-tool/command-create.c:284
msgid "UUID, name and description are required"
msgstr "Diperlukan UUID, nama, dan deskripsi"
#: src/extensions-tool/command-disable.c:57
msgid "Disable an extension"
msgstr "Nonaktifkan ekstensi"
#: src/extensions-tool/command-disable.c:74
#: src/extensions-tool/command-enable.c:74
#: src/extensions-tool/command-info.c:96
#: src/extensions-tool/command-prefs.c:107
#: src/extensions-tool/command-reset.c:74
#: src/extensions-tool/command-uninstall.c:89
msgid "No UUID given"
msgstr "Tidak ada UUID yang diberikan"
#: src/extensions-tool/command-disable.c:79
#: src/extensions-tool/command-enable.c:79
#: src/extensions-tool/command-info.c:101
#: src/extensions-tool/command-prefs.c:112
#: src/extensions-tool/command-reset.c:79
#: src/extensions-tool/command-uninstall.c:94
msgid "More than one UUID given"
msgstr "Lebih dari satu UUID diberikan"
#: src/extensions-tool/command-enable.c:57
msgid "Enable an extension"
msgstr "Aktifkan ekstensi"
#: src/extensions-tool/command-info.c:79
msgid "Show extensions info"
msgstr "Tampilkan info ekstensi"
#: src/extensions-tool/command-install.c:173
msgid "Overwrite an existing extension"
msgstr "Timpa ekstensi yang ada"
#: src/extensions-tool/command-install.c:175
msgid "EXTENSION_BUNDLE"
msgstr "BUNDEL_EKSTENSI"
#: src/extensions-tool/command-install.c:184
msgid "Install an extension bundle"
msgstr "Pasang bundel ekstensi"
#: src/extensions-tool/command-install.c:201
msgid "No extension bundle specified"
msgstr "Tidak ada bundel ekstensi yang ditentukan"
#: src/extensions-tool/command-install.c:207
msgid "More than one extension bundle specified"
msgstr "Lebih dari satu bundel ekstensi ditentukan"
#: src/extensions-tool/command-list.c:118
msgid "Show user-installed extensions"
msgstr "Tampilkan ekstensi yang dipasang pengguna"
#: src/extensions-tool/command-list.c:121
msgid "Show system-installed extensions"
msgstr "Tampilkan ekstensi yang dipasang sistem"
#: src/extensions-tool/command-list.c:124
msgid "Show enabled extensions"
msgstr "Tampilkan ekstensi yang diaktifkan"
#: src/extensions-tool/command-list.c:127
msgid "Show disabled extensions"
msgstr "Tampilkan ekstensi yang dinonaktifkan"
#: src/extensions-tool/command-list.c:130
msgid "Show extensions with preferences"
msgstr "Tampilkan ekstensi dengan preferensi"
#: src/extensions-tool/command-list.c:133
msgid "Print extension details"
msgstr "Cetak detail ekstensi"
#: src/extensions-tool/command-list.c:141
msgid "List installed extensions"
msgstr "Daftar ekstensi yang dipasang"
#: src/extensions-tool/command-pack.c:450
msgid "FILE"
msgstr "BERKAS"
#: src/extensions-tool/command-pack.c:451
msgid "Additional source to include in the bundle"
msgstr "Sumber tambahan untuk disertakan dalam bundel"
#: src/extensions-tool/command-pack.c:454
msgid "SCHEMA"
msgstr "SKEMA"
#: src/extensions-tool/command-pack.c:455
msgid "A GSettings schema that should be included"
msgstr "Skema GSettings yang harus dimasukkan"
#: src/extensions-tool/command-pack.c:457
#: src/extensions-tool/command-pack.c:468
msgid "DIRECTORY"
msgstr "DIREKTORI"
#: src/extensions-tool/command-pack.c:459
msgid "The directory where translations are found"
msgstr "Direktori tempat terjemahan ditemukan"
#: src/extensions-tool/command-pack.c:461
msgid "DOMAIN"
msgstr "DOMAIN"
#: src/extensions-tool/command-pack.c:463
msgid "The gettext domain to use for translations"
msgstr "Domain gettext yang digunakan untuk terjemahan"
#: src/extensions-tool/command-pack.c:466
msgid "Overwrite an existing pack"
msgstr "Timpa paket yang ada"
#: src/extensions-tool/command-pack.c:470
msgid "The directory where the pack should be created"
msgstr "Direktori tempat paket harus dibuat"
#: src/extensions-tool/command-pack.c:472
msgid "SOURCE_DIRECTORY"
msgstr "DIREKTORI_SUMBER"
#: src/extensions-tool/command-pack.c:481
msgid "Create an extension bundle"
msgstr "Buat bundel ekstensi"
#: src/extensions-tool/command-pack.c:500
msgid "More than one source directory specified"
msgstr "Lebih dari satu direktori sumber ditentukan"
#: src/extensions-tool/command-prefs.c:90
msgid "Opens extension preferences"
msgstr "Buka preferensi ekstensi"
#: src/extensions-tool/command-reset.c:57
msgid "Reset an extension"
msgstr "Atur ulang ekstensi"
#: src/extensions-tool/command-uninstall.c:72
msgid "Uninstall an extension"
msgstr "Hapus ekstensi"
#: src/extensions-tool/main.c:175
msgid "Path"
msgstr "Path"
#: src/extensions-tool/main.c:178
msgid "URL"
msgstr "URL"
#: src/extensions-tool/main.c:181
msgid "Original author"
msgstr "Penulis asli"
#: src/extensions-tool/main.c:184
msgid "Version"
msgstr "Versi"
#: src/extensions-tool/main.c:187
msgid "State"
msgstr "Kondisi"
#: src/extensions-tool/main.c:221
msgid "“version” takes no arguments"
msgstr "\"version\" tak menerima argumen"
#: src/extensions-tool/main.c:223 src/extensions-tool/main.c:243
msgid "Usage:"
msgstr "Pemakaian:"
#: src/extensions-tool/main.c:226
msgid "Print version information and exit."
msgstr "Cetak informasi versi dan keluar."
#: src/extensions-tool/main.c:241 src/extensions-tool/main.c:244
msgid "COMMAND"
msgstr "PERINTAH"
#: src/extensions-tool/main.c:244
msgid "[ARGS…]"
msgstr "[ARG...]"
#: src/extensions-tool/main.c:246
msgid "Commands:"
msgstr "Perintah:"
#: src/extensions-tool/main.c:247
msgid "Print help"
msgstr "Cetak bantuan"
#: src/extensions-tool/main.c:248 src/main.c:468
msgid "Print version" msgid "Print version"
msgstr "Versi Cetak" msgstr "Versi Cetak"
#: src/main.c:466 #: src/extensions-tool/main.c:249
msgid "Enable extension"
msgstr "Aktifkan ekstensi"
#: src/extensions-tool/main.c:250
msgid "Disable extension"
msgstr "Nonaktifkan ekstensi"
#: src/extensions-tool/main.c:251
msgid "Reset extension"
msgstr "Atur ulang ekstensi"
#: src/extensions-tool/main.c:252
msgid "Uninstall extension"
msgstr "Hapus ekstensi"
#: src/extensions-tool/main.c:253
msgid "List extensions"
msgstr "Daftar ekstensi"
#: src/extensions-tool/main.c:254 src/extensions-tool/main.c:255
msgid "Show extension info"
msgstr "Tampilkan info ekstensi"
#: src/extensions-tool/main.c:256
msgid "Open extension preferences"
msgstr "Buka preferensi ekstensi"
#: src/extensions-tool/main.c:257
msgid "Create extension"
msgstr "Buat ekstensi"
#: src/extensions-tool/main.c:258
msgid "Package extension"
msgstr "Ekstensi Paket"
#: src/extensions-tool/main.c:259
msgid "Install extension bundle"
msgstr "Pasang bundel ekstensi"
#: src/extensions-tool/main.c:261
#, c-format
msgid "Use “%s” to get detailed help.\n"
msgstr "Gunakan \"%s\" untuk mendapatkan bantuan terperinci.\n"
#: src/main.c:474
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Mode yang dipakai oleh layar log masuk GDM" msgstr "Mode yang dipakai oleh layar log masuk GDM"
#: src/main.c:472 #: src/main.c:480
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk" msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk"
#: src/main.c:478 #: src/main.c:486
msgid "List possible modes" msgid "List possible modes"
msgstr "Menampilkan mode yang mungkin" msgstr "Menampilkan mode yang mungkin"

1287
po/it.po

File diff suppressed because it is too large Load Diff

View File

@@ -16,8 +16,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-08-27 11:26+0000\n" "POT-Creation-Date: 2019-09-05 13:45+0000\n"
"PO-Revision-Date: 2019-08-29 20:44+0900\n" "PO-Revision-Date: 2019-09-06 21:10+0900\n"
"Last-Translator: sicklylife <translation@sicklylife.jp>\n" "Last-Translator: sicklylife <translation@sicklylife.jp>\n"
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n" "Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
"Language: ja\n" "Language: ja\n"
@@ -453,7 +453,7 @@ msgstr ""
#: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53 #: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53
#: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:445 js/ui/extensionDownloader.js:189 #: js/ui/endSessionDialog.js:448 js/ui/extensionDownloader.js:189
#: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399 #: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399
#: js/ui/status/network.js:899 #: js/ui/status/network.js:899
msgid "Cancel" msgid "Cancel"
@@ -803,7 +803,7 @@ msgstr "ヘッドフォン"
msgid "Headset" msgid "Headset"
msgstr "ヘッドセット" msgstr "ヘッドセット"
#: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:241 #: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:248
msgid "Microphone" msgid "Microphone"
msgstr "マイク" msgstr "マイク"
@@ -1037,8 +1037,7 @@ msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
"“%s”." "“%s”."
msgstr "" msgstr ""
"無線ネットワーク”%s”にアクセスするにはパスワードか、または暗号化キーが必要で" "無線ネットワーク”%s”にアクセスするにはパスワードか暗号化キーが必要です。"
"す。"
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:693 #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:693
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
@@ -1293,13 +1292,13 @@ msgid "Other users are logged in."
msgstr "他のユーザーがログインしています。" msgstr "他のユーザーがログインしています。"
#. Translators: Remote here refers to a remote session, like a ssh login #. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:647 #: js/ui/endSessionDialog.js:650
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (リモート)" msgstr "%s (リモート)"
#. Translators: Console here refers to a tty like a VT console #. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:650 #: js/ui/endSessionDialog.js:653
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (コンソール)" msgstr "%s (コンソール)"
@@ -1649,8 +1648,8 @@ msgstr "キーファイルを使用する"
msgid "" msgid ""
"To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead." "To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead."
msgstr "" msgstr ""
"キーファイルを使用するボリュームのロック解除には <i>%s</i> ユーティリティを" "キーファイルを使用するボリュームのロック解除には <i>%s</i> ユーティリティを使"
"使用します。" "用します。"
#: js/ui/shellMountOperation.js:323 #: js/ui/shellMountOperation.js:323
msgid "PIM Number" msgid "PIM Number"
@@ -2146,11 +2145,11 @@ msgstr "Thunderbolt 認証エラー"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Thunderbolt デバイスを認証できませんでした: %s" msgstr "Thunderbolt デバイスを認証できませんでした: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:129
msgid "Volume changed" msgid "Volume changed"
msgstr "音量変更しました" msgstr "音量変更しました"
#: js/ui/status/volume.js:193 #: js/ui/status/volume.js:200
msgid "Volume" msgid "Volume"
msgstr "音量" msgstr "音量"
@@ -2203,22 +2202,22 @@ msgstr "検索"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "”%s”は準備完了です" msgstr "”%s”は準備完了です"
#: js/ui/windowManager.js:54 #: js/ui/windowManager.js:55
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "このディスプレイ設定を保存しますか?" msgstr "このディスプレイ設定を保存しますか?"
#. Translators: this and the following message should be limited in length, #. Translators: this and the following message should be limited in length,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:66 #: js/ui/windowManager.js:67
msgid "Revert Settings" msgid "Revert Settings"
msgstr "設定を元に戻す" msgstr "設定を元に戻す"
#: js/ui/windowManager.js:69 #: js/ui/windowManager.js:70
msgid "Keep Changes" msgid "Keep Changes"
msgstr "変更を保存" msgstr "変更を保存"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:88
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
@@ -2226,7 +2225,7 @@ msgstr[0] "%d 秒後に元の設定に戻ります"
#. Translators: This represents the size of a window. The first number is #. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. #. * the width of the window and the second is the height.
#: js/ui/windowManager.js:683 #: js/ui/windowManager.js:684
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2556,7 +2555,7 @@ msgstr "コマンド:"
msgid "Print help" msgid "Print help"
msgstr "ヘルプを表示する" msgstr "ヘルプを表示する"
#: src/extensions-tool/main.c:244 src/main.c:460 #: src/extensions-tool/main.c:244 src/main.c:468
msgid "Print version" msgid "Print version"
msgstr "バージョンを表示する" msgstr "バージョンを表示する"
@@ -2605,15 +2604,15 @@ msgstr ""
msgid "Use %s to get detailed help.\n" msgid "Use %s to get detailed help.\n"
msgstr "%s を使用すると詳細なヘルプが表示されます。\n" msgstr "%s を使用すると詳細なヘルプが表示されます。\n"
#: src/main.c:466 #: src/main.c:474
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "ログイン画面で GDM が使用するモード" msgstr "ログイン画面で GDM が使用するモード"
#: src/main.c:472 #: src/main.c:480
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "指定したモードを使用する (例: ログイン画面用の“gdm”)" msgstr "指定したモードを使用する (例: ログイン画面用の“gdm”)"
#: src/main.c:478 #: src/main.c:486
msgid "List possible modes" msgid "List possible modes"
msgstr "使用可能なモードを一覧表示する" msgstr "使用可能なモードを一覧表示する"

1292
po/ko.po

File diff suppressed because it is too large Load Diff

426
po/lt.po
View File

@@ -10,8 +10,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-08-09 14:45+0000\n" "POT-Creation-Date: 2019-09-11 17:13+0000\n"
"PO-Revision-Date: 2019-08-18 22:05+0300\n" "PO-Revision-Date: 2019-09-11 22:37+0300\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n" "Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n" "Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
"Language: lt\n" "Language: lt\n"
@@ -48,7 +48,7 @@ msgid "Open the application menu"
msgstr "Atverti programų meniu" msgstr "Atverti programų meniu"
#: data/gnome-shell-extension-prefs.desktop.in.in:4 #: data/gnome-shell-extension-prefs.desktop.in.in:4
#: js/extensionPrefs/main.js:208 #: js/extensionPrefs/main.js:211
msgid "Shell Extensions" msgid "Shell Extensions"
msgstr "Shell plėtiniai" msgstr "Shell plėtiniai"
@@ -95,16 +95,10 @@ msgstr ""
"Shell D-Bus metodus EnableExtension ir DisableExtension." "Shell D-Bus metodus EnableExtension ir DisableExtension."
#: data/org.gnome.shell.gschema.xml.in:26 #: data/org.gnome.shell.gschema.xml.in:26
#| msgid "UUIDs of extensions to enable"
msgid "UUIDs of extensions to force disabling" msgid "UUIDs of extensions to force disabling"
msgstr "Privestinai išjungtų plėtinių UUID" msgstr "Privestinai išjungtų plėtinių UUID"
#: data/org.gnome.shell.gschema.xml.in:27 #: data/org.gnome.shell.gschema.xml.in:27
#| 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."
msgid "" msgid ""
"GNOME Shell extensions have a UUID property; this key lists extensions which " "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 " "should be disabled, even if loaded as part of the current mode. You can also "
@@ -347,7 +341,6 @@ msgstr ""
"srities. Priešingu atveju įtraukiami visi langai." "srities. Priešingu atveju įtraukiami visi langai."
#: data/org.gnome.shell.gschema.xml.in:234 #: data/org.gnome.shell.gschema.xml.in:234
#| msgid "Location In Use"
msgid "Locations" msgid "Locations"
msgstr "Vietos" msgstr "Vietos"
@@ -364,7 +357,6 @@ msgid "Whether to fetch the current location or not"
msgstr "Ar gauti dabartinę vietą" msgstr "Ar gauti dabartinę vietą"
#: data/org.gnome.shell.gschema.xml.in:253 #: data/org.gnome.shell.gschema.xml.in:253
#| msgid "Location In Use"
msgid "Location" msgid "Location"
msgstr "Vieta" msgstr "Vieta"
@@ -405,11 +397,11 @@ msgstr "Atidėti fokuso pakeitimus pelei iki žymiklis nustos judėti"
msgid "Network Login" msgid "Network Login"
msgstr "Tinklo prisijungimas" msgstr "Tinklo prisijungimas"
#: js/extensionPrefs/main.js:101 js/extensionPrefs/main.js:531 #: js/extensionPrefs/main.js:104 js/extensionPrefs/main.js:534
msgid "Somethings gone wrong" msgid "Somethings gone wrong"
msgstr "Atsitiko kažkas negero" msgstr "Atsitiko kažkas negero"
#: js/extensionPrefs/main.js:108 #: js/extensionPrefs/main.js:111
msgid "" msgid ""
"Were very sorry, but theres been a problem: the settings for this " "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 cant be displayed. We recommend that you report the issue to the "
@@ -418,27 +410,27 @@ msgstr ""
"Atsiprašome, bet kilo problema: šio plėtinio nustatymų parodyti nepavyksta. " "Atsiprašome, bet kilo problema: šio plėtinio nustatymų parodyti nepavyksta. "
"Rekomenduojame pranešti apie problemą plėtinio autoriams." "Rekomenduojame pranešti apie problemą plėtinio autoriams."
#: js/extensionPrefs/main.js:115 #: js/extensionPrefs/main.js:118
msgid "Technical Details" msgid "Technical Details"
msgstr "Techninė informacija" msgstr "Techninė informacija"
#: js/extensionPrefs/main.js:150 #: js/extensionPrefs/main.js:153
msgid "Copy Error" msgid "Copy Error"
msgstr "Kopijuoti klaidą" msgstr "Kopijuoti klaidą"
#: js/extensionPrefs/main.js:177 #: js/extensionPrefs/main.js:180
msgid "Homepage" msgid "Homepage"
msgstr "Namų tinklalapis" msgstr "Namų tinklalapis"
#: js/extensionPrefs/main.js:178 #: js/extensionPrefs/main.js:181
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "Aplankyti plėtinio namų tinklalapį" msgstr "Aplankyti plėtinio namų tinklalapį"
#: js/extensionPrefs/main.js:473 #: js/extensionPrefs/main.js:476
msgid "No Extensions Installed" msgid "No Extensions Installed"
msgstr "Nėra įdiegtų plėtinių" msgstr "Nėra įdiegtų plėtinių"
#: js/extensionPrefs/main.js:483 #: js/extensionPrefs/main.js:486
msgid "" msgid ""
"Extensions can be installed through Software or <a href=\"https://extensions." "Extensions can be installed through Software or <a href=\"https://extensions."
"gnome.org\">extensions.gnome.org</a>." "gnome.org\">extensions.gnome.org</a>."
@@ -446,11 +438,11 @@ msgstr ""
"Plėtinius galima įdiegti per Programinę įrangą arba <a href=\"https://" "Plėtinius galima įdiegti per Programinę įrangą arba <a href=\"https://"
"extensions.gnome.org\">extensions.gnome.org</a>." "extensions.gnome.org\">extensions.gnome.org</a>."
#: js/extensionPrefs/main.js:498 #: js/extensionPrefs/main.js:501
msgid "Browse in Software" msgid "Browse in Software"
msgstr "Naršyti Programinėje įrangoje" msgstr "Naršyti Programinėje įrangoje"
#: js/extensionPrefs/main.js:538 #: js/extensionPrefs/main.js:541
msgid "" msgid ""
"Were very sorry, but it was not possible to get the list of installed " "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." "extensions. Make sure you are logged into GNOME and try again."
@@ -460,7 +452,7 @@ msgstr ""
#: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53 #: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53
#: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:445 js/ui/extensionDownloader.js:189 #: js/ui/endSessionDialog.js:448 js/ui/extensionDownloader.js:189
#: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399 #: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399
#: js/ui/status/network.js:899 #: js/ui/status/network.js:899
msgid "Cancel" msgid "Cancel"
@@ -553,7 +545,6 @@ msgstr "Atsijungti"
#. Translators: A list of keywords that match the logout action, separated by semicolons #. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:108 #: js/misc/systemActions.js:108
#| msgid "logout;sign off"
msgid "logout;log out;sign off" msgid "logout;log out;sign off"
msgstr "atsijungti;išeiti;" msgstr "atsijungti;išeiti;"
@@ -770,29 +761,33 @@ msgstr "Dažnai naudojamos"
msgid "All" msgid "All"
msgstr "Visos" msgstr "Visos"
#: js/ui/appDisplay.js:1751
#| msgid "Username: "
msgid "Rename"
msgstr "Pervadinti"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2224 js/ui/panel.js:77 #: js/ui/appDisplay.js:2397 js/ui/panel.js:77
#| msgid "Windows"
msgid "Open Windows" msgid "Open Windows"
msgstr "Atverti langai" msgstr "Atverti langai"
#: js/ui/appDisplay.js:2243 js/ui/panel.js:84 #: js/ui/appDisplay.js:2416 js/ui/panel.js:84
msgid "New Window" msgid "New Window"
msgstr "Naujas langas" msgstr "Naujas langas"
#: js/ui/appDisplay.js:2255 #: js/ui/appDisplay.js:2428
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Paleisti naudojant dedikuotą grafikos kortą" msgstr "Paleisti naudojant dedikuotą grafikos kortą"
#: js/ui/appDisplay.js:2284 js/ui/dash.js:240 #: js/ui/appDisplay.js:2457 js/ui/dash.js:240
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Pašalinti iš mėgstamų" msgstr "Pašalinti iš mėgstamų"
#: js/ui/appDisplay.js:2290 #: js/ui/appDisplay.js:2463
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Pridėti prie mėgstamų" msgstr "Pridėti prie mėgstamų"
#: js/ui/appDisplay.js:2300 js/ui/panel.js:95 #: js/ui/appDisplay.js:2473 js/ui/panel.js:95
msgid "Show Details" msgid "Show Details"
msgstr "Rodyti detalią informaciją" msgstr "Rodyti detalią informaciją"
@@ -822,7 +817,7 @@ msgstr "Ausinės"
msgid "Headset" msgid "Headset"
msgstr "Ausinės su mikrofonu" msgstr "Ausinės su mikrofonu"
#: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:241 #: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:248
msgid "Microphone" msgid "Microphone"
msgstr "Mikrofonas" msgstr "Mikrofonas"
@@ -992,7 +987,6 @@ msgid "External drive disconnected"
msgstr "Atjungta išorinė laikmena" msgstr "Atjungta išorinė laikmena"
#: js/ui/components/automountManager.js:210 #: js/ui/components/automountManager.js:210
#| msgid "Unable to lock"
msgid "Unable to unlock volume" msgid "Unable to unlock volume"
msgstr "Nepavyksta atrakinti garso" msgstr "Nepavyksta atrakinti garso"
@@ -1328,13 +1322,13 @@ msgid "Other users are logged in."
msgstr "Yra prisijungusių kitų naudotojų" msgstr "Yra prisijungusių kitų naudotojų"
#. Translators: Remote here refers to a remote session, like a ssh login #. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:647 #: js/ui/endSessionDialog.js:650
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (nutolęs)" msgstr "%s (nutolęs)"
#. Translators: Console here refers to a tty like a VT console #. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:650 #: js/ui/endSessionDialog.js:653
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (komandų eilutė)" msgstr "%s (komandų eilutė)"
@@ -1487,7 +1481,7 @@ msgstr "Žiūrėti šaltinį"
msgid "Web Page" msgid "Web Page"
msgstr "Tinklalapis" msgstr "Tinklalapis"
#: js/ui/messageTray.js:1462 #: js/ui/messageTray.js:1461
msgid "System Information" msgid "System Information"
msgstr "Sistemos informacija" msgstr "Sistemos informacija"
@@ -1618,7 +1612,7 @@ msgstr[0] "%d naujas pranešimas"
msgstr[1] "%d nauji pranešimai" msgstr[1] "%d nauji pranešimai"
msgstr[2] "%d naujų pranešimų" msgstr[2] "%d naujų pranešimų"
#: js/ui/screenShield.js:444 js/ui/status/system.js:269 #: js/ui/screenShield.js:444 js/ui/status/system.js:260
msgid "Lock" msgid "Lock"
msgstr "Užrakinti" msgstr "Užrakinti"
@@ -1641,15 +1635,15 @@ msgstr "Nepavyksta užrakinti"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Programa užblokavo užrakinimą" msgstr "Programa užblokavo užrakinimą"
#: js/ui/search.js:647 #: js/ui/search.js:668
msgid "Searching…" msgid "Searching…"
msgstr "Ieškoma…" msgstr "Ieškoma…"
#: js/ui/search.js:649 #: js/ui/search.js:670
msgid "No results." msgid "No results."
msgstr "Nerasta atitikmenų." msgstr "Nerasta atitikmenų."
#: js/ui/search.js:773 #: js/ui/search.js:794
#, javascript-format #, javascript-format
msgid "%d more" msgid "%d more"
msgid_plural "%d more" msgid_plural "%d more"
@@ -1674,7 +1668,6 @@ msgid "Hide Text"
msgstr "Slėpti tekstą" msgstr "Slėpti tekstą"
#: js/ui/shellMountOperation.js:304 #: js/ui/shellMountOperation.js:304
#| msgid "Volume"
msgid "Hidden Volume" msgid "Hidden Volume"
msgstr "Paslėptas garsumas" msgstr "Paslėptas garsumas"
@@ -1683,7 +1676,6 @@ msgid "Windows System Volume"
msgstr "Windows sisteminis tomas" msgstr "Windows sisteminis tomas"
#: js/ui/shellMountOperation.js:310 #: js/ui/shellMountOperation.js:310
#| msgid "Mouse Keys"
msgid "Uses Keyfiles" msgid "Uses Keyfiles"
msgstr "Naudoja raktų failus" msgstr "Naudoja raktų failus"
@@ -1715,14 +1707,12 @@ msgstr "Atsiminti slaptažodį"
#. Translators: %s is the Disks application #. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:404 #: js/ui/shellMountOperation.js:404
#, javascript-format #, javascript-format
#| msgid "Open with %s"
msgid "Open %s" msgid "Open %s"
msgstr "Atverti %s" msgstr "Atverti %s"
#. Translators: %s is the Disks application #. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:476 #: js/ui/shellMountOperation.js:476
#, javascript-format #, javascript-format
#| msgid "Unable to connect to %s"
msgid "Unable to start %s" msgid "Unable to start %s"
msgstr "Nepavyksta paleisti %s" msgstr "Nepavyksta paleisti %s"
@@ -1801,7 +1791,7 @@ msgstr "Išjungta"
msgid "On" msgid "On"
msgstr "Įjungta" msgstr "Įjungta"
#: js/ui/status/brightness.js:37 #: js/ui/status/brightness.js:38
msgid "Brightness" msgid "Brightness"
msgstr "Ryškumas" msgstr "Ryškumas"
@@ -2141,27 +2131,27 @@ msgstr "Išjungti"
msgid "Airplane Mode On" msgid "Airplane Mode On"
msgstr "Skrydžio veiksena įjungta" msgstr "Skrydžio veiksena įjungta"
#: js/ui/status/system.js:201 #: js/ui/status/system.js:192
msgid "Switch User" msgid "Switch User"
msgstr "Keisti naudotoją" msgstr "Keisti naudotoją"
#: js/ui/status/system.js:213 #: js/ui/status/system.js:204
msgid "Log Out" msgid "Log Out"
msgstr "Atsijungti" msgstr "Atsijungti"
#: js/ui/status/system.js:225 #: js/ui/status/system.js:216
msgid "Account Settings" msgid "Account Settings"
msgstr "Paskyros nustatymai" msgstr "Paskyros nustatymai"
#: js/ui/status/system.js:254 #: js/ui/status/system.js:245
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Padėties užrakinimas" msgstr "Padėties užrakinimas"
#: js/ui/status/system.js:280 #: js/ui/status/system.js:271
msgid "Suspend" msgid "Suspend"
msgstr "Pristabdyti" msgstr "Pristabdyti"
#: js/ui/status/system.js:290 #: js/ui/status/system.js:281
msgid "Power Off" msgid "Power Off"
msgstr "Išjungti" msgstr "Išjungti"
@@ -2199,11 +2189,11 @@ msgstr "Thunderbolt autorizacijos klaida"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Nepavyko autorizuoti Thunderbolt įrenginio: %s" msgstr "Nepavyko autorizuoti Thunderbolt įrenginio: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:129
msgid "Volume changed" msgid "Volume changed"
msgstr "Garsumas pakeistas" msgstr "Garsumas pakeistas"
#: js/ui/status/volume.js:193 #: js/ui/status/volume.js:200
msgid "Volume" msgid "Volume"
msgstr "Garsumas" msgstr "Garsumas"
@@ -2256,22 +2246,22 @@ msgstr "Ieškoti"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "„%s“ yra pasirengusi" msgstr "„%s“ yra pasirengusi"
#: js/ui/windowManager.js:54 #: js/ui/windowManager.js:55
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "Ar norite įrašyti šiuos vaizduoklio nustatymus?" msgstr "Ar norite įrašyti šiuos vaizduoklio nustatymus?"
#. Translators: this and the following message should be limited in length, #. Translators: this and the following message should be limited in length,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:66 #: js/ui/windowManager.js:67
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Grąžinti nustatymus" msgstr "Grąžinti nustatymus"
#: js/ui/windowManager.js:69 #: js/ui/windowManager.js:70
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Įrašyti pakeitimus" msgstr "Įrašyti pakeitimus"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:88
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
@@ -2281,7 +2271,7 @@ msgstr[2] "Pakeitimai bus grąžinti po %d sekundžių"
#. Translators: This represents the size of a window. The first number is #. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. #. * the width of the window and the second is the height.
#: js/ui/windowManager.js:683 #: js/ui/windowManager.js:684
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2354,19 +2344,328 @@ msgstr "Perkelti į dešiniau esantį monitorių"
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Evolution kalendorius" msgstr "Evolution kalendorius"
#: src/main.c:464 #: src/extensions-tool/command-create.c:189
#, c-format
msgid ""
"Name should be a very short (ideally descriptive) string.\n"
"Examples are: %s"
msgstr ""
"Pavadinimas turi būti trumpa (geriausia apibūdinant) simbolių eilutė.\n"
"Pavyzdžiai: %s"
#: src/extensions-tool/command-create.c:192 src/extensions-tool/main.c:169
msgid "Name"
msgstr "Pavadinimas"
#: src/extensions-tool/command-create.c:203
#, c-format
msgid ""
"Description is a single-sentence explanation of what your extension does.\n"
"Examples are: %s"
msgstr ""
"Aprašymas yra vieno sakinio paaiškinimas, ką daro plėtinys.\n"
"Pavyzdžiai: %s"
#: src/extensions-tool/command-create.c:206 src/extensions-tool/main.c:172
msgid "Description"
msgstr "Aprašymas"
#: src/extensions-tool/command-create.c:217
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"
msgstr ""
"UUID yra visuotinai unikalus identifikatorius jūsų plėtiniui.\n"
"Jis turėtų būti el. pašto adreso formato (clicktofocus@janedoe.example.com)\n"
#: src/extensions-tool/command-create.c:239
msgid "The unique identifier of the new extension"
msgstr "Unikalus identifikatorius naujam plėtiniui"
#: src/extensions-tool/command-create.c:242
msgid "NAME"
msgstr "PAVADINIMAS"
#: src/extensions-tool/command-create.c:243
msgid "The user-visible name of the new extension"
msgstr "Naudotojui matomas plėtinio pavadinimas"
#: src/extensions-tool/command-create.c:245
msgid "DESCRIPTION"
msgstr "APRAŠYMAS"
#: src/extensions-tool/command-create.c:247
msgid "A short description of what the extension does"
msgstr "Trumpas aprašymas, ką daro plėtinys"
#: src/extensions-tool/command-create.c:250
msgid "Enter extension information interactively"
msgstr "Įveskite plėtinio informaciją interaktyviai"
#: src/extensions-tool/command-create.c:258
msgid "Create a new extension"
msgstr "Sukurti naują plėtinį"
#: src/extensions-tool/command-create.c:275
#: src/extensions-tool/command-list.c:158
msgid "Unknown arguments"
msgstr "Nežinomi argumentai"
#: src/extensions-tool/command-create.c:284
msgid "UUID, name and description are required"
msgstr "UUID, pavadinimas ir aprašymas yra būtini"
#: src/extensions-tool/command-disable.c:57
msgid "Disable an extension"
msgstr "Išjungti plėtinį"
#: src/extensions-tool/command-disable.c:74
#: src/extensions-tool/command-enable.c:74
#: src/extensions-tool/command-info.c:96
#: src/extensions-tool/command-prefs.c:107
#: src/extensions-tool/command-reset.c:74
#: src/extensions-tool/command-uninstall.c:89
msgid "No UUID given"
msgstr "Nenurodytas UUID"
#: src/extensions-tool/command-disable.c:79
#: src/extensions-tool/command-enable.c:79
#: src/extensions-tool/command-info.c:101
#: src/extensions-tool/command-prefs.c:112
#: src/extensions-tool/command-reset.c:79
#: src/extensions-tool/command-uninstall.c:94
msgid "More than one UUID given"
msgstr "Pateiktas daugiau nei vienas UUID"
#: src/extensions-tool/command-enable.c:57
msgid "Enable an extension"
msgstr "Išjungti plėtinį"
#: src/extensions-tool/command-info.c:79
msgid "Show extensions info"
msgstr "Rodyti plėtinio informaciją"
#: src/extensions-tool/command-install.c:173
msgid "Overwrite an existing extension"
msgstr "Perrašyti esamą plėtinį"
#: src/extensions-tool/command-install.c:175
msgid "EXTENSION_BUNDLE"
msgstr "PLĖTINIO_RYŠULYS"
#: src/extensions-tool/command-install.c:184
msgid "Install an extension bundle"
msgstr "Įdiegti plėtinio ryšulį"
#: src/extensions-tool/command-install.c:201
msgid "No extension bundle specified"
msgstr "Nenurodytas plėtinio ryšulys"
#: src/extensions-tool/command-install.c:207
msgid "More than one extension bundle specified"
msgstr "Nurodytas daugiau nei vienas plėtinio ryšulys"
#: src/extensions-tool/command-list.c:118
msgid "Show user-installed extensions"
msgstr "Rodyti naudotojo įdiegtus plėtinius"
#: src/extensions-tool/command-list.c:121
msgid "Show system-installed extensions"
msgstr "Rodyti sistemoje įdiegtus plėtinius"
#: src/extensions-tool/command-list.c:124
msgid "Show enabled extensions"
msgstr "Rodyti įjungtus plėtinius"
#: src/extensions-tool/command-list.c:127
msgid "Show disabled extensions"
msgstr "Rodyti išjungtus plėtinius"
#: src/extensions-tool/command-list.c:130
msgid "Show extensions with preferences"
msgstr "Rodyti plėtinius su nuostatomis"
#: src/extensions-tool/command-list.c:133
msgid "Print extension details"
msgstr "Atspausdinti plėtinio informaciją"
#: src/extensions-tool/command-list.c:141
msgid "List installed extensions"
msgstr "Išvardinti įdiegtus plėtinius"
#: src/extensions-tool/command-pack.c:450
msgid "FILE"
msgstr "FAILAS"
#: src/extensions-tool/command-pack.c:451
msgid "Additional source to include in the bundle"
msgstr "Papildomas šaltinis įdėjimui į ryšulį"
#: src/extensions-tool/command-pack.c:454
msgid "SCHEMA"
msgstr "SCHEMA"
#: src/extensions-tool/command-pack.c:455
msgid "A GSettings schema that should be included"
msgstr "GSettings schema, kuri turi būti įtraukta"
#: src/extensions-tool/command-pack.c:457
#: src/extensions-tool/command-pack.c:468
msgid "DIRECTORY"
msgstr "KATALOGAS"
#: src/extensions-tool/command-pack.c:459
msgid "The directory where translations are found"
msgstr "Katalogas, kuriame yra vertimai"
#: src/extensions-tool/command-pack.c:461
msgid "DOMAIN"
msgstr "DOMENAS"
#: src/extensions-tool/command-pack.c:463
msgid "The gettext domain to use for translations"
msgstr "gettext domenas, naudojamas vertimams"
#: src/extensions-tool/command-pack.c:466
msgid "Overwrite an existing pack"
msgstr "Perrašyti esamą paketą"
#: src/extensions-tool/command-pack.c:470
msgid "The directory where the pack should be created"
msgstr "Katalogas, kuriame turi būti sukurtas paketas"
#: src/extensions-tool/command-pack.c:472
msgid "SOURCE_DIRECTORY"
msgstr "KODO_KATALOGAS"
#: src/extensions-tool/command-pack.c:481
msgid "Create an extension bundle"
msgstr "Sukurti plėtinio ryšulį"
#: src/extensions-tool/command-pack.c:500
msgid "More than one source directory specified"
msgstr "Nurodytas daugiau nei vienas kodo aplankas"
#: src/extensions-tool/command-prefs.c:90
msgid "Opens extension preferences"
msgstr "Atveria plėtinio nuostatas"
#: src/extensions-tool/command-reset.c:57
msgid "Reset an extension"
msgstr "Atstatyti plėtinį"
#: src/extensions-tool/command-uninstall.c:72
msgid "Uninstall an extension"
msgstr "Išdiegti plėtinį"
#: src/extensions-tool/main.c:175
msgid "Path"
msgstr "Kelias"
#: src/extensions-tool/main.c:178
msgid "URL"
msgstr "URL"
#: src/extensions-tool/main.c:181
msgid "Original author"
msgstr "Pradinis autorius"
#: src/extensions-tool/main.c:184
msgid "Version"
msgstr "Versija"
#: src/extensions-tool/main.c:187
msgid "State"
msgstr "Būsena"
#: src/extensions-tool/main.c:221
msgid "“version” takes no arguments"
msgstr "„version“ nepriima argumentų"
#: src/extensions-tool/main.c:223 src/extensions-tool/main.c:243
msgid "Usage:"
msgstr "Naudojimas:"
#: src/extensions-tool/main.c:226
msgid "Print version information and exit."
msgstr "Atspausdinti versijos informaciją ir išeiti."
#: src/extensions-tool/main.c:241 src/extensions-tool/main.c:244
msgid "COMMAND"
msgstr "KOMANDA"
#: src/extensions-tool/main.c:244
msgid "[ARGS…]"
msgstr "[ARG…]"
#: src/extensions-tool/main.c:246
msgid "Commands:"
msgstr "Komandos:"
#: src/extensions-tool/main.c:247
msgid "Print help"
msgstr "Atspausdinti žinyną"
#: src/extensions-tool/main.c:248 src/main.c:468
msgid "Print version" msgid "Print version"
msgstr "Išvesti versijos numerį" msgstr "Išvesti versijos numerį"
#: src/main.c:470 #: src/extensions-tool/main.c:249
msgid "Enable extension"
msgstr "Įjungti ]plėtinį"
#: src/extensions-tool/main.c:250
msgid "Disable extension"
msgstr "Išjungti plėtinį"
#: src/extensions-tool/main.c:251
msgid "Reset extension"
msgstr "Atstatyti plėtinį"
#: src/extensions-tool/main.c:252
msgid "Uninstall extension"
msgstr "Išdiegti plėtinį"
#: src/extensions-tool/main.c:253
msgid "List extensions"
msgstr "Išvardinti plėtinius"
#: src/extensions-tool/main.c:254 src/extensions-tool/main.c:255
msgid "Show extension info"
msgstr "Rodyti plėtinio informaciją"
#: src/extensions-tool/main.c:256
msgid "Open extension preferences"
msgstr "Atverti plėtinio nuostatas"
#: src/extensions-tool/main.c:257
msgid "Create extension"
msgstr "Sukurti plėtinį"
#: src/extensions-tool/main.c:258
msgid "Package extension"
msgstr "Supakuoti plėtinį"
#: src/extensions-tool/main.c:259
msgid "Install extension bundle"
msgstr "Įdiegti plėtinio ryšulį"
#: src/extensions-tool/main.c:261
#, c-format
#| msgid "Use %s to get detailed help.\n"
msgid "Use “%s” to get detailed help.\n"
msgstr "Detalesnį žinyną gausite panaudoję „%s“.\n"
#: src/main.c:474
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Veiksena, naudojama GDM prisijungimo ekrane" msgstr "Veiksena, naudojama GDM prisijungimo ekrane"
#: src/main.c:476 #: src/main.c:480
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Naudoti konkrečią veikseną, pvz., „gdm“ prisijungimo ekranui" msgstr "Naudoti konkrečią veikseną, pvz., „gdm“ prisijungimo ekranui"
#: src/main.c:482 #: src/main.c:486
msgid "List possible modes" msgid "List possible modes"
msgstr "Išvardinti galimas veiksenas" msgstr "Išvardinti galimas veiksenas"
@@ -2388,7 +2687,7 @@ msgstr "Slaptažodžiai nesutampa."
msgid "Password cannot be blank" msgid "Password cannot be blank"
msgstr "Slaptažodis negali būti tuščias" msgstr "Slaptažodis negali būti tuščias"
#: src/shell-polkit-authentication-agent.c:348 #: src/shell-polkit-authentication-agent.c:344
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą" msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą"
@@ -2486,9 +2785,6 @@ msgstr "Sistemos garsai"
#~ msgid "Media" #~ msgid "Media"
#~ msgstr "Medija" #~ msgstr "Medija"
#~ msgid "GNOME Shell Extension Preferences"
#~ msgstr "GNOME Shell plėtinių nuostatos"
#~ msgid "Web Authentication Redirect" #~ msgid "Web Authentication Redirect"
#~ msgstr "Reikia patvirtinti tapatybę internete" #~ msgstr "Reikia patvirtinti tapatybę internete"

1526
po/pa.po

File diff suppressed because it is too large Load Diff

108
po/pl.po
View File

@@ -10,8 +10,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-08-21 23:18+0000\n" "POT-Creation-Date: 2019-09-11 17:13+0000\n"
"PO-Revision-Date: 2019-08-23 18:39+0200\n" "PO-Revision-Date: 2019-09-11 19:21+0200\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n" "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <community-poland@mozilla.org>\n" "Language-Team: Polish <community-poland@mozilla.org>\n"
"Language: pl\n" "Language: pl\n"
@@ -458,7 +458,7 @@ msgstr ""
#: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53 #: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53
#: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:445 js/ui/extensionDownloader.js:189 #: js/ui/endSessionDialog.js:448 js/ui/extensionDownloader.js:189
#: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399 #: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399
#: js/ui/status/network.js:899 #: js/ui/status/network.js:899
msgid "Cancel" msgid "Cancel"
@@ -774,28 +774,32 @@ msgstr "Często używane"
msgid "All" msgid "All"
msgstr "Wszystkie" msgstr "Wszystkie"
#: js/ui/appDisplay.js:1751
msgid "Rename"
msgstr "Zmień nazwę"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2233 js/ui/panel.js:77 #: js/ui/appDisplay.js:2397 js/ui/panel.js:77
msgid "Open Windows" msgid "Open Windows"
msgstr "Otwarte okna" msgstr "Otwarte okna"
#: js/ui/appDisplay.js:2252 js/ui/panel.js:84 #: js/ui/appDisplay.js:2416 js/ui/panel.js:84
msgid "New Window" msgid "New Window"
msgstr "Nowe okno" msgstr "Nowe okno"
#: js/ui/appDisplay.js:2264 #: js/ui/appDisplay.js:2428
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Uruchom za pomocą dedykowanej karty graficznej" msgstr "Uruchom za pomocą dedykowanej karty graficznej"
#: js/ui/appDisplay.js:2293 js/ui/dash.js:240 #: js/ui/appDisplay.js:2457 js/ui/dash.js:240
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Usuń z ulubionych" msgstr "Usuń z ulubionych"
#: js/ui/appDisplay.js:2299 #: js/ui/appDisplay.js:2463
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Dodaj do ulubionych" msgstr "Dodaj do ulubionych"
#: js/ui/appDisplay.js:2309 js/ui/panel.js:95 #: js/ui/appDisplay.js:2473 js/ui/panel.js:95
msgid "Show Details" msgid "Show Details"
msgstr "Wyświetl szczegóły" msgstr "Wyświetl szczegóły"
@@ -825,7 +829,7 @@ msgstr "Słuchawki"
msgid "Headset" msgid "Headset"
msgstr "Słuchawki z mikrofonem" msgstr "Słuchawki z mikrofonem"
#: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:241 #: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:248
msgid "Microphone" msgid "Microphone"
msgstr "Mikrofon" msgstr "Mikrofon"
@@ -1330,13 +1334,13 @@ msgid "Other users are logged in."
msgstr "Inni użytkownicy są zalogowani." msgstr "Inni użytkownicy są zalogowani."
#. Translators: Remote here refers to a remote session, like a ssh login #. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:647 #: js/ui/endSessionDialog.js:650
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (zdalnie)" msgstr "%s (zdalnie)"
#. Translators: Console here refers to a tty like a VT console #. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:650 #: js/ui/endSessionDialog.js:653
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konsola)" msgstr "%s (konsola)"
@@ -1490,7 +1494,7 @@ msgstr "Wyświetl źródło"
msgid "Web Page" msgid "Web Page"
msgstr "Strona WWW" msgstr "Strona WWW"
#: js/ui/messageTray.js:1462 #: js/ui/messageTray.js:1461
msgid "System Information" msgid "System Information"
msgstr "Informacje systemowe" msgstr "Informacje systemowe"
@@ -1621,7 +1625,7 @@ msgstr[0] "%d nowe powiadomienie"
msgstr[1] "%d nowe powiadomienia" msgstr[1] "%d nowe powiadomienia"
msgstr[2] "%d nowych powiadomień" msgstr[2] "%d nowych powiadomień"
#: js/ui/screenShield.js:444 js/ui/status/system.js:269 #: js/ui/screenShield.js:444 js/ui/status/system.js:260
msgid "Lock" msgid "Lock"
msgstr "Zablokuj ekran" msgstr "Zablokuj ekran"
@@ -1644,15 +1648,15 @@ msgstr "Nie można zablokować"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Blokowanie zostało zablokowane przez program" msgstr "Blokowanie zostało zablokowane przez program"
#: js/ui/search.js:647 #: js/ui/search.js:668
msgid "Searching…" msgid "Searching…"
msgstr "Wyszukiwanie…" msgstr "Wyszukiwanie…"
#: js/ui/search.js:649 #: js/ui/search.js:670
msgid "No results." msgid "No results."
msgstr "Brak wyników." msgstr "Brak wyników."
#: js/ui/search.js:773 #: js/ui/search.js:794
#, javascript-format #, javascript-format
msgid "%d more" msgid "%d more"
msgid_plural "%d more" msgid_plural "%d more"
@@ -2141,27 +2145,27 @@ msgstr "Wyłącz"
msgid "Airplane Mode On" msgid "Airplane Mode On"
msgstr "Włączono tryb samolotowy" msgstr "Włączono tryb samolotowy"
#: js/ui/status/system.js:201 #: js/ui/status/system.js:192
msgid "Switch User" msgid "Switch User"
msgstr "Przełącz użytkownika" msgstr "Przełącz użytkownika"
#: js/ui/status/system.js:213 #: js/ui/status/system.js:204
msgid "Log Out" msgid "Log Out"
msgstr "Wyloguj się" msgstr "Wyloguj się"
#: js/ui/status/system.js:225 #: js/ui/status/system.js:216
msgid "Account Settings" msgid "Account Settings"
msgstr "Ustawienia konta" msgstr "Ustawienia konta"
#: js/ui/status/system.js:254 #: js/ui/status/system.js:245
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Blokada orientacji" msgstr "Blokada orientacji"
#: js/ui/status/system.js:280 #: js/ui/status/system.js:271
msgid "Suspend" msgid "Suspend"
msgstr "Uśpij" msgstr "Uśpij"
#: js/ui/status/system.js:290 #: js/ui/status/system.js:281
msgid "Power Off" msgid "Power Off"
msgstr "Wyłącz komputer" msgstr "Wyłącz komputer"
@@ -2200,11 +2204,11 @@ msgstr "Błąd upoważnienia Thunderbolt"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Nie można upoważnić urządzenia Thunderbolt: %s" msgstr "Nie można upoważnić urządzenia Thunderbolt: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:129
msgid "Volume changed" msgid "Volume changed"
msgstr "Zmieniono głośność" msgstr "Zmieniono głośność"
#: js/ui/status/volume.js:193 #: js/ui/status/volume.js:200
msgid "Volume" msgid "Volume"
msgstr "Głośność" msgstr "Głośność"
@@ -2257,22 +2261,22 @@ msgstr "Wyszukiwanie"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "Okno „%s” jest gotowe" msgstr "Okno „%s” jest gotowe"
#: js/ui/windowManager.js:54 #: js/ui/windowManager.js:55
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "Zachować te ustawienia ekranu?" msgstr "Zachować te ustawienia ekranu?"
#. Translators: this and the following message should be limited in length, #. Translators: this and the following message should be limited in length,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:66 #: js/ui/windowManager.js:67
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Przywróć ustawienia" msgstr "Przywróć ustawienia"
#: js/ui/windowManager.js:69 #: js/ui/windowManager.js:70
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Zachowaj zmiany" msgstr "Zachowaj zmiany"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:88
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
@@ -2282,7 +2286,7 @@ msgstr[2] "Zmienione ustawienia zostaną przywrócone za %d sekund"
#. Translators: This represents the size of a window. The first number is #. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. #. * the width of the window and the second is the height.
#: js/ui/windowManager.js:683 #: js/ui/windowManager.js:684
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d×%d" msgstr "%d×%d"
@@ -2594,7 +2598,7 @@ msgstr "Stan"
msgid "“version” takes no arguments" msgid "“version” takes no arguments"
msgstr "Opcja „version” nie przyjmuje parametrów" msgstr "Opcja „version” nie przyjmuje parametrów"
#: src/extensions-tool/main.c:223 src/extensions-tool/main.c:239 #: src/extensions-tool/main.c:223 src/extensions-tool/main.c:243
msgid "Usage:" msgid "Usage:"
msgstr "Użycie:" msgstr "Użycie:"
@@ -2602,80 +2606,80 @@ msgstr "Użycie:"
msgid "Print version information and exit." msgid "Print version information and exit."
msgstr "Wyświetla informacje o wersji i kończy działanie." msgstr "Wyświetla informacje o wersji i kończy działanie."
#: src/extensions-tool/main.c:240 #: src/extensions-tool/main.c:241 src/extensions-tool/main.c:244
msgid "COMMAND" msgid "COMMAND"
msgstr "POLECENIE" msgstr "POLECENIE"
#: src/extensions-tool/main.c:240 #: src/extensions-tool/main.c:244
msgid "[ARGS…]" msgid "[ARGS…]"
msgstr "[PARAMETRY…]" msgstr "[PARAMETRY…]"
#: src/extensions-tool/main.c:242 #: src/extensions-tool/main.c:246
msgid "Commands:" msgid "Commands:"
msgstr "Polecenia:" msgstr "Polecenia:"
#: src/extensions-tool/main.c:243 #: src/extensions-tool/main.c:247
msgid "Print help" msgid "Print help"
msgstr "Wyświetla pomoc" msgstr "Wyświetla pomoc"
#: src/extensions-tool/main.c:244 src/main.c:460 #: src/extensions-tool/main.c:248 src/main.c:468
msgid "Print version" msgid "Print version"
msgstr "Wyświetla wersję" msgstr "Wyświetla wersję"
#: src/extensions-tool/main.c:245 #: src/extensions-tool/main.c:249
msgid "Enable extension" msgid "Enable extension"
msgstr "Włącza rozszerzenie" msgstr "Włącza rozszerzenie"
#: src/extensions-tool/main.c:246 #: src/extensions-tool/main.c:250
msgid "Disable extension" msgid "Disable extension"
msgstr "Wyłącza rozszerzenie" msgstr "Wyłącza rozszerzenie"
#: src/extensions-tool/main.c:247 #: src/extensions-tool/main.c:251
msgid "Reset extension" msgid "Reset extension"
msgstr "Przywraca rozszerzenie" msgstr "Przywraca rozszerzenie"
#: src/extensions-tool/main.c:248 #: src/extensions-tool/main.c:252
msgid "Uninstall extension" msgid "Uninstall extension"
msgstr "Odinstalowuje rozszerzenie" msgstr "Odinstalowuje rozszerzenie"
#: src/extensions-tool/main.c:249 #: src/extensions-tool/main.c:253
msgid "List extensions" msgid "List extensions"
msgstr "Wyświetla listę rozszerzeń" msgstr "Wyświetla listę rozszerzeń"
#: src/extensions-tool/main.c:250 src/extensions-tool/main.c:251 #: src/extensions-tool/main.c:254 src/extensions-tool/main.c:255
msgid "Show extension info" msgid "Show extension info"
msgstr "Wyświetla informacje o rozszerzeniu" msgstr "Wyświetla informacje o rozszerzeniu"
#: src/extensions-tool/main.c:252 #: src/extensions-tool/main.c:256
msgid "Open extension preferences" msgid "Open extension preferences"
msgstr "Otwiera preferencje rozszerzenia" msgstr "Otwiera preferencje rozszerzenia"
#: src/extensions-tool/main.c:253 #: src/extensions-tool/main.c:257
msgid "Create extension" msgid "Create extension"
msgstr "Tworzy rozszerzenie" msgstr "Tworzy rozszerzenie"
#: src/extensions-tool/main.c:254 #: src/extensions-tool/main.c:258
msgid "Package extension" msgid "Package extension"
msgstr "Tworzy pakiet z rozszerzeniem" msgstr "Tworzy pakiet z rozszerzeniem"
#: src/extensions-tool/main.c:255 #: src/extensions-tool/main.c:259
msgid "Install extension bundle" msgid "Install extension bundle"
msgstr "Instaluje pakiet rozszerzenia" msgstr "Instaluje pakiet rozszerzenia"
#: src/extensions-tool/main.c:257 #: src/extensions-tool/main.c:261
#, c-format #, c-format
msgid "Use %s to get detailed help.\n" msgid "Use %s to get detailed help.\n"
msgstr "Polecenie %s wyświetli szczegółową pomoc.\n" msgstr "Polecenie %s wyświetli szczegółową pomoc.\n"
#: src/main.c:466 #: src/main.c:474
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Tryb używany przez GDM dla ekranu logowania" msgstr "Tryb używany przez GDM dla ekranu logowania"
#: src/main.c:472 #: src/main.c:480
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Używa podanego trybu, np. „gdm” dla ekranu logowania" msgstr "Używa podanego trybu, np. „gdm” dla ekranu logowania"
#: src/main.c:478 #: src/main.c:486
msgid "List possible modes" msgid "List possible modes"
msgstr "Wyświetla listę możliwych trybów" msgstr "Wyświetla listę możliwych trybów"

File diff suppressed because it is too large Load Diff

108
po/ro.po
View File

@@ -10,8 +10,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-08-21 23:18+0000\n" "POT-Creation-Date: 2019-09-11 17:13+0000\n"
"PO-Revision-Date: 2019-08-22 10:05+0200\n" "PO-Revision-Date: 2019-09-11 22:12+0200\n"
"Last-Translator: Daniel Șerbănescu <daniel [at] serbanescu [dot] dk>\n" "Last-Translator: Daniel Șerbănescu <daniel [at] serbanescu [dot] dk>\n"
"Language-Team: Gnome Romanian Translation Team <gnomero-list@lists." "Language-Team: Gnome Romanian Translation Team <gnomero-list@lists."
"sourceforge.net>\n" "sourceforge.net>\n"
@@ -468,7 +468,7 @@ msgstr ""
#: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53 #: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53
#: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:445 js/ui/extensionDownloader.js:189 #: js/ui/endSessionDialog.js:448 js/ui/extensionDownloader.js:189
#: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399 #: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399
#: js/ui/status/network.js:899 #: js/ui/status/network.js:899
msgid "Cancel" msgid "Cancel"
@@ -780,28 +780,32 @@ msgstr "Frecvente"
msgid "All" msgid "All"
msgstr "Toate" msgstr "Toate"
#: js/ui/appDisplay.js:1751
msgid "Rename"
msgstr "Redenumește"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2233 js/ui/panel.js:77 #: js/ui/appDisplay.js:2397 js/ui/panel.js:77
msgid "Open Windows" msgid "Open Windows"
msgstr "Ferestre deschise" msgstr "Ferestre deschise"
#: js/ui/appDisplay.js:2252 js/ui/panel.js:84 #: js/ui/appDisplay.js:2416 js/ui/panel.js:84
msgid "New Window" msgid "New Window"
msgstr "Fereastră nouă" msgstr "Fereastră nouă"
#: js/ui/appDisplay.js:2264 #: js/ui/appDisplay.js:2428
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Lansează folosind placa grafică dedicată" msgstr "Lansează folosind placa grafică dedicată"
#: js/ui/appDisplay.js:2293 js/ui/dash.js:240 #: js/ui/appDisplay.js:2457 js/ui/dash.js:240
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Elimină din favorite" msgstr "Elimină din favorite"
#: js/ui/appDisplay.js:2299 #: js/ui/appDisplay.js:2463
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Adaugă la Favorite" msgstr "Adaugă la Favorite"
#: js/ui/appDisplay.js:2309 js/ui/panel.js:95 #: js/ui/appDisplay.js:2473 js/ui/panel.js:95
msgid "Show Details" msgid "Show Details"
msgstr "Arată detaliile" msgstr "Arată detaliile"
@@ -831,7 +835,7 @@ msgstr "Căști auriculare"
msgid "Headset" msgid "Headset"
msgstr "Căști cu microfon" msgstr "Căști cu microfon"
#: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:241 #: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:248
msgid "Microphone" msgid "Microphone"
msgstr "Microfon" msgstr "Microfon"
@@ -1334,13 +1338,13 @@ msgid "Other users are logged in."
msgstr "Alți utilizatori sunt conectați." msgstr "Alți utilizatori sunt conectați."
#. Translators: Remote here refers to a remote session, like a ssh login #. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:647 #: js/ui/endSessionDialog.js:650
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (la distanță)" msgstr "%s (la distanță)"
#. Translators: Console here refers to a tty like a VT console #. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:650 #: js/ui/endSessionDialog.js:653
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (consolă)" msgstr "%s (consolă)"
@@ -1495,7 +1499,7 @@ msgstr "Vizualizează sursa"
msgid "Web Page" msgid "Web Page"
msgstr "Pagină Web" msgstr "Pagină Web"
#: js/ui/messageTray.js:1462 #: js/ui/messageTray.js:1461
msgid "System Information" msgid "System Information"
msgstr "Informații despre sistem" msgstr "Informații despre sistem"
@@ -1626,7 +1630,7 @@ msgstr[0] "%d notificare"
msgstr[1] "%d notificări" msgstr[1] "%d notificări"
msgstr[2] "%d de notificări" msgstr[2] "%d de notificări"
#: js/ui/screenShield.js:444 js/ui/status/system.js:269 #: js/ui/screenShield.js:444 js/ui/status/system.js:260
msgid "Lock" msgid "Lock"
msgstr "Blocare" msgstr "Blocare"
@@ -1649,15 +1653,15 @@ msgstr "Blocare nereușită"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Blocarea a fost împiedicată de o aplicație" msgstr "Blocarea a fost împiedicată de o aplicație"
#: js/ui/search.js:647 #: js/ui/search.js:668
msgid "Searching…" msgid "Searching…"
msgstr "Se caută…" msgstr "Se caută…"
#: js/ui/search.js:649 #: js/ui/search.js:670
msgid "No results." msgid "No results."
msgstr "Niciun rezultat." msgstr "Niciun rezultat."
#: js/ui/search.js:773 #: js/ui/search.js:794
#, javascript-format #, javascript-format
msgid "%d more" msgid "%d more"
msgid_plural "%d more" msgid_plural "%d more"
@@ -2147,27 +2151,27 @@ msgstr "Oprește"
msgid "Airplane Mode On" msgid "Airplane Mode On"
msgstr "Modul avion este pornit" msgstr "Modul avion este pornit"
#: js/ui/status/system.js:201 #: js/ui/status/system.js:192
msgid "Switch User" msgid "Switch User"
msgstr "Comută utilizatorul" msgstr "Comută utilizatorul"
#: js/ui/status/system.js:213 #: js/ui/status/system.js:204
msgid "Log Out" msgid "Log Out"
msgstr "Ieșire din sesiune" msgstr "Ieșire din sesiune"
#: js/ui/status/system.js:225 #: js/ui/status/system.js:216
msgid "Account Settings" msgid "Account Settings"
msgstr "Configurări de cont" msgstr "Configurări de cont"
#: js/ui/status/system.js:254 #: js/ui/status/system.js:245
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Blocare de orientare" msgstr "Blocare de orientare"
#: js/ui/status/system.js:280 #: js/ui/status/system.js:271
msgid "Suspend" msgid "Suspend"
msgstr "Suspendare" msgstr "Suspendare"
#: js/ui/status/system.js:290 #: js/ui/status/system.js:281
msgid "Power Off" msgid "Power Off"
msgstr "Oprire" msgstr "Oprire"
@@ -2206,11 +2210,11 @@ msgstr "Eroare de autorizare Thunderbolt"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Nu s-a putut autoriza dispozitivul Thunderbolt: %s" msgstr "Nu s-a putut autoriza dispozitivul Thunderbolt: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:129
msgid "Volume changed" msgid "Volume changed"
msgstr "Volumul a fost schimbat" msgstr "Volumul a fost schimbat"
#: js/ui/status/volume.js:193 #: js/ui/status/volume.js:200
msgid "Volume" msgid "Volume"
msgstr "Volum" msgstr "Volum"
@@ -2263,22 +2267,22 @@ msgstr "Caută"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "„%s” este gata" msgstr "„%s” este gata"
#: js/ui/windowManager.js:54 #: js/ui/windowManager.js:55
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "Doriți să păstrați aceste configurări de afișare?" msgstr "Doriți să păstrați aceste configurări de afișare?"
#. Translators: this and the following message should be limited in length, #. Translators: this and the following message should be limited in length,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:66 #: js/ui/windowManager.js:67
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Restaurează configurările" msgstr "Restaurează configurările"
#: js/ui/windowManager.js:69 #: js/ui/windowManager.js:70
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Păstrați modificările" msgstr "Păstrați modificările"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:88
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
@@ -2288,7 +2292,7 @@ msgstr[2] "Schimbările vor fi restaurare în %d de secunde"
#. Translators: This represents the size of a window. The first number is #. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. #. * the width of the window and the second is the height.
#: js/ui/windowManager.js:683 #: js/ui/windowManager.js:684
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2602,7 +2606,7 @@ msgstr "Stare"
msgid "“version” takes no arguments" msgid "“version” takes no arguments"
msgstr "„version” nu primește argumente" msgstr "„version” nu primește argumente"
#: src/extensions-tool/main.c:223 src/extensions-tool/main.c:239 #: src/extensions-tool/main.c:223 src/extensions-tool/main.c:243
msgid "Usage:" msgid "Usage:"
msgstr "Utilizare:" msgstr "Utilizare:"
@@ -2610,80 +2614,80 @@ msgstr "Utilizare:"
msgid "Print version information and exit." msgid "Print version information and exit."
msgstr "Tipărește informațiile versiunii și ieși." msgstr "Tipărește informațiile versiunii și ieși."
#: src/extensions-tool/main.c:240 #: src/extensions-tool/main.c:241 src/extensions-tool/main.c:244
msgid "COMMAND" msgid "COMMAND"
msgstr "COMANDĂ" msgstr "COMANDĂ"
#: src/extensions-tool/main.c:240 #: src/extensions-tool/main.c:244
msgid "[ARGS…]" msgid "[ARGS…]"
msgstr "[ARGUMENTE…]" msgstr "[ARGUMENTE…]"
#: src/extensions-tool/main.c:242 #: src/extensions-tool/main.c:246
msgid "Commands:" msgid "Commands:"
msgstr "Comenzi:" msgstr "Comenzi:"
#: src/extensions-tool/main.c:243 #: src/extensions-tool/main.c:247
msgid "Print help" msgid "Print help"
msgstr "Tipărește ajutorul" msgstr "Tipărește ajutorul"
#: src/extensions-tool/main.c:244 src/main.c:460 #: src/extensions-tool/main.c:248 src/main.c:468
msgid "Print version" msgid "Print version"
msgstr "Tipărește versiunea" msgstr "Tipărește versiunea"
#: src/extensions-tool/main.c:245 #: src/extensions-tool/main.c:249
msgid "Enable extension" msgid "Enable extension"
msgstr "Activează extensia" msgstr "Activează extensia"
#: src/extensions-tool/main.c:246 #: src/extensions-tool/main.c:250
msgid "Disable extension" msgid "Disable extension"
msgstr "Dezactivează extensia" msgstr "Dezactivează extensia"
#: src/extensions-tool/main.c:247 #: src/extensions-tool/main.c:251
msgid "Reset extension" msgid "Reset extension"
msgstr "Restabilește extensia" msgstr "Restabilește extensia"
#: src/extensions-tool/main.c:248 #: src/extensions-tool/main.c:252
msgid "Uninstall extension" msgid "Uninstall extension"
msgstr "Dezinstalează extensia" msgstr "Dezinstalează extensia"
#: src/extensions-tool/main.c:249 #: src/extensions-tool/main.c:253
msgid "List extensions" msgid "List extensions"
msgstr "Listează extensiile" msgstr "Listează extensiile"
#: src/extensions-tool/main.c:250 src/extensions-tool/main.c:251 #: src/extensions-tool/main.c:254 src/extensions-tool/main.c:255
msgid "Show extension info" msgid "Show extension info"
msgstr "Arată informații despre extensie" msgstr "Arată informații despre extensie"
#: src/extensions-tool/main.c:252 #: src/extensions-tool/main.c:256
msgid "Open extension preferences" msgid "Open extension preferences"
msgstr "Deschide preferințele extensiei" msgstr "Deschide preferințele extensiei"
#: src/extensions-tool/main.c:253 #: src/extensions-tool/main.c:257
msgid "Create extension" msgid "Create extension"
msgstr "Creează extensie" msgstr "Creează extensie"
#: src/extensions-tool/main.c:254 #: src/extensions-tool/main.c:258
msgid "Package extension" msgid "Package extension"
msgstr "Împachetează extensia" msgstr "Împachetează extensia"
#: src/extensions-tool/main.c:255 #: src/extensions-tool/main.c:259
msgid "Install extension bundle" msgid "Install extension bundle"
msgstr "Instalează pachetul de extensii" msgstr "Instalează pachetul de extensii"
#: src/extensions-tool/main.c:257 #: src/extensions-tool/main.c:261
#, c-format #, c-format
msgid "Use %s to get detailed help.\n" msgid "Use %s to get detailed help.\n"
msgstr "Utilizați %s pentru a obține ajutor detaliat.\n" msgstr "Utilizați %s pentru a obține ajutor detaliat.\n"
#: src/main.c:466 #: src/main.c:474
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Mod folosit de GDM pentru meniul de autentificare" msgstr "Mod folosit de GDM pentru meniul de autentificare"
#: src/main.c:472 #: src/main.c:480
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Utilizează un mod specific, de exemplu „gdm” pentru ecranul de logare" msgstr "Utilizează un mod specific, de exemplu „gdm” pentru ecranul de logare"
#: src/main.c:478 #: src/main.c:486
msgid "List possible modes" msgid "List possible modes"
msgstr "Enumeră câmpurile care pot fi afișate" msgstr "Enumeră câmpurile care pot fi afișate"

1394
po/sk.po

File diff suppressed because it is too large Load Diff

1339
po/sr.po

File diff suppressed because it is too large Load Diff

108
po/sv.po
View File

@@ -11,8 +11,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2019-08-21 23:18+0000\n" "POT-Creation-Date: 2019-09-11 17:13+0000\n"
"PO-Revision-Date: 2019-08-24 21:45+0200\n" "PO-Revision-Date: 2019-09-13 00:15+0200\n"
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n" "Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n" "Language: sv\n"
@@ -452,7 +452,7 @@ msgstr ""
#: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53 #: js/gdm/authPrompt.js:139 js/ui/audioDeviceSelection.js:53
#: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138 #: js/ui/components/networkAgent.js:120 js/ui/components/polkitAgent.js:138
#: js/ui/endSessionDialog.js:445 js/ui/extensionDownloader.js:189 #: js/ui/endSessionDialog.js:448 js/ui/extensionDownloader.js:189
#: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399 #: js/ui/shellMountOperation.js:390 js/ui/shellMountOperation.js:399
#: js/ui/status/network.js:899 #: js/ui/status/network.js:899
msgid "Cancel" msgid "Cancel"
@@ -756,28 +756,32 @@ msgstr "Ofta använda"
msgid "All" msgid "All"
msgstr "Alla" msgstr "Alla"
#: js/ui/appDisplay.js:1751
msgid "Rename"
msgstr "Byt namn"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2233 js/ui/panel.js:77 #: js/ui/appDisplay.js:2397 js/ui/panel.js:77
msgid "Open Windows" msgid "Open Windows"
msgstr "Öppna fönster" msgstr "Öppna fönster"
#: js/ui/appDisplay.js:2252 js/ui/panel.js:84 #: js/ui/appDisplay.js:2416 js/ui/panel.js:84
msgid "New Window" msgid "New Window"
msgstr "Nytt fönster" msgstr "Nytt fönster"
#: js/ui/appDisplay.js:2264 #: js/ui/appDisplay.js:2428
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Kör med diskret grafikkort" msgstr "Kör med diskret grafikkort"
#: js/ui/appDisplay.js:2293 js/ui/dash.js:240 #: js/ui/appDisplay.js:2457 js/ui/dash.js:240
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Ta bort från favoriter" msgstr "Ta bort från favoriter"
#: js/ui/appDisplay.js:2299 #: js/ui/appDisplay.js:2463
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Lägg till som favorit" msgstr "Lägg till som favorit"
#: js/ui/appDisplay.js:2309 js/ui/panel.js:95 #: js/ui/appDisplay.js:2473 js/ui/panel.js:95
msgid "Show Details" msgid "Show Details"
msgstr "Visa detaljer" msgstr "Visa detaljer"
@@ -807,7 +811,7 @@ msgstr "Hörlurar"
msgid "Headset" msgid "Headset"
msgstr "Mikrofonlur" msgstr "Mikrofonlur"
#: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:241 #: js/ui/audioDeviceSelection.js:64 js/ui/status/volume.js:248
msgid "Microphone" msgid "Microphone"
msgstr "Mikrofon" msgstr "Mikrofon"
@@ -1308,13 +1312,13 @@ msgid "Other users are logged in."
msgstr "Andra användare är inloggade." msgstr "Andra användare är inloggade."
#. Translators: Remote here refers to a remote session, like a ssh login #. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:647 #: js/ui/endSessionDialog.js:650
#, javascript-format #, javascript-format
msgid "%s (remote)" msgid "%s (remote)"
msgstr "%s (fjärransluten)" msgstr "%s (fjärransluten)"
#. Translators: Console here refers to a tty like a VT console #. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:650 #: js/ui/endSessionDialog.js:653
#, javascript-format #, javascript-format
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konsol)" msgstr "%s (konsol)"
@@ -1467,7 +1471,7 @@ msgstr "Visa källa"
msgid "Web Page" msgid "Web Page"
msgstr "Webbsida" msgstr "Webbsida"
#: js/ui/messageTray.js:1462 #: js/ui/messageTray.js:1461
msgid "System Information" msgid "System Information"
msgstr "Systeminformation" msgstr "Systeminformation"
@@ -1596,7 +1600,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d ny avisering" msgstr[0] "%d ny avisering"
msgstr[1] "%d nya aviseringar" msgstr[1] "%d nya aviseringar"
#: js/ui/screenShield.js:444 js/ui/status/system.js:269 #: js/ui/screenShield.js:444 js/ui/status/system.js:260
msgid "Lock" msgid "Lock"
msgstr "Lås" msgstr "Lås"
@@ -1619,15 +1623,15 @@ msgstr "Kunde inte låsa"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Låsning hindrades av ett program" msgstr "Låsning hindrades av ett program"
#: js/ui/search.js:647 #: js/ui/search.js:668
msgid "Searching…" msgid "Searching…"
msgstr "Söker…" msgstr "Söker…"
#: js/ui/search.js:649 #: js/ui/search.js:670
msgid "No results." msgid "No results."
msgstr "Inga sökträffar." msgstr "Inga sökträffar."
#: js/ui/search.js:773 #: js/ui/search.js:794
#, javascript-format #, javascript-format
msgid "%d more" msgid "%d more"
msgid_plural "%d more" msgid_plural "%d more"
@@ -2111,27 +2115,27 @@ msgstr "Stäng av"
msgid "Airplane Mode On" msgid "Airplane Mode On"
msgstr "Flygplansläge påslaget" msgstr "Flygplansläge påslaget"
#: js/ui/status/system.js:201 #: js/ui/status/system.js:192
msgid "Switch User" msgid "Switch User"
msgstr "Växla användare" msgstr "Växla användare"
#: js/ui/status/system.js:213 #: js/ui/status/system.js:204
msgid "Log Out" msgid "Log Out"
msgstr "Logga ut" msgstr "Logga ut"
#: js/ui/status/system.js:225 #: js/ui/status/system.js:216
msgid "Account Settings" msgid "Account Settings"
msgstr "Kontoinställningar" msgstr "Kontoinställningar"
#: js/ui/status/system.js:254 #: js/ui/status/system.js:245
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Skärmrotation" msgstr "Skärmrotation"
#: js/ui/status/system.js:280 #: js/ui/status/system.js:271
msgid "Suspend" msgid "Suspend"
msgstr "Vänteläge" msgstr "Vänteläge"
#: js/ui/status/system.js:290 #: js/ui/status/system.js:281
msgid "Power Off" msgid "Power Off"
msgstr "Stäng av" msgstr "Stäng av"
@@ -2170,11 +2174,11 @@ msgstr "Thunderbolt-auktoriseringsfel"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Kunde inte auktorisera Thunderbolt-enheten: %s" msgstr "Kunde inte auktorisera Thunderbolt-enheten: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:129
msgid "Volume changed" msgid "Volume changed"
msgstr "Volymen ändrades" msgstr "Volymen ändrades"
#: js/ui/status/volume.js:193 #: js/ui/status/volume.js:200
msgid "Volume" msgid "Volume"
msgstr "Volym" msgstr "Volym"
@@ -2227,22 +2231,22 @@ msgstr "Sök"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "”%s” är redo" msgstr "”%s” är redo"
#: js/ui/windowManager.js:54 #: js/ui/windowManager.js:55
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "Vill du behålla dessa skärminställningar?" msgstr "Vill du behålla dessa skärminställningar?"
#. Translators: this and the following message should be limited in length, #. Translators: this and the following message should be limited in length,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:66 #: js/ui/windowManager.js:67
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Återställ inställningar" msgstr "Återställ inställningar"
#: js/ui/windowManager.js:69 #: js/ui/windowManager.js:70
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Behåll ändringar" msgstr "Behåll ändringar"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:88
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
@@ -2251,7 +2255,7 @@ msgstr[1] "Inställningarna kommer återställas om %d sekunder"
#. Translators: This represents the size of a window. The first number is #. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. #. * the width of the window and the second is the height.
#: js/ui/windowManager.js:683 #: js/ui/windowManager.js:684
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2564,7 +2568,7 @@ msgstr "Tillstånd"
msgid "“version” takes no arguments" msgid "“version” takes no arguments"
msgstr "”version” tar inga argument" msgstr "”version” tar inga argument"
#: src/extensions-tool/main.c:223 src/extensions-tool/main.c:239 #: src/extensions-tool/main.c:223 src/extensions-tool/main.c:243
msgid "Usage:" msgid "Usage:"
msgstr "Användning:" msgstr "Användning:"
@@ -2572,80 +2576,80 @@ msgstr "Användning:"
msgid "Print version information and exit." msgid "Print version information and exit."
msgstr "Skriv ut versionsinformation och avsluta." msgstr "Skriv ut versionsinformation och avsluta."
#: src/extensions-tool/main.c:240 #: src/extensions-tool/main.c:241 src/extensions-tool/main.c:244
msgid "COMMAND" msgid "COMMAND"
msgstr "KOMMANDO" msgstr "KOMMANDO"
#: src/extensions-tool/main.c:240 #: src/extensions-tool/main.c:244
msgid "[ARGS…]" msgid "[ARGS…]"
msgstr "[ARGUMENT…]" msgstr "[ARGUMENT…]"
#: src/extensions-tool/main.c:242 #: src/extensions-tool/main.c:246
msgid "Commands:" msgid "Commands:"
msgstr "Kommandon:" msgstr "Kommandon:"
#: src/extensions-tool/main.c:243 #: src/extensions-tool/main.c:247
msgid "Print help" msgid "Print help"
msgstr "Skriv ut hjälp" msgstr "Skriv ut hjälp"
#: src/extensions-tool/main.c:244 src/main.c:460 #: src/extensions-tool/main.c:248 src/main.c:468
msgid "Print version" msgid "Print version"
msgstr "Skriv ut version" msgstr "Skriv ut version"
#: src/extensions-tool/main.c:245 #: src/extensions-tool/main.c:249
msgid "Enable extension" msgid "Enable extension"
msgstr "Aktivera tillägg" msgstr "Aktivera tillägg"
#: src/extensions-tool/main.c:246 #: src/extensions-tool/main.c:250
msgid "Disable extension" msgid "Disable extension"
msgstr "Inaktivera tillägg" msgstr "Inaktivera tillägg"
#: src/extensions-tool/main.c:247 #: src/extensions-tool/main.c:251
msgid "Reset extension" msgid "Reset extension"
msgstr "Återställ tillägg" msgstr "Återställ tillägg"
#: src/extensions-tool/main.c:248 #: src/extensions-tool/main.c:252
msgid "Uninstall extension" msgid "Uninstall extension"
msgstr "Avinstallera tillägg" msgstr "Avinstallera tillägg"
#: src/extensions-tool/main.c:249 #: src/extensions-tool/main.c:253
msgid "List extensions" msgid "List extensions"
msgstr "Lista tillägg" msgstr "Lista tillägg"
#: src/extensions-tool/main.c:250 src/extensions-tool/main.c:251 #: src/extensions-tool/main.c:254 src/extensions-tool/main.c:255
msgid "Show extension info" msgid "Show extension info"
msgstr "Visa info för tillägg" msgstr "Visa info för tillägg"
#: src/extensions-tool/main.c:252 #: src/extensions-tool/main.c:256
msgid "Open extension preferences" msgid "Open extension preferences"
msgstr "Öppna inställningar för tillägg" msgstr "Öppna inställningar för tillägg"
#: src/extensions-tool/main.c:253 #: src/extensions-tool/main.c:257
msgid "Create extension" msgid "Create extension"
msgstr "Skapa tillägg" msgstr "Skapa tillägg"
#: src/extensions-tool/main.c:254 #: src/extensions-tool/main.c:258
msgid "Package extension" msgid "Package extension"
msgstr "Paketera tillägg" msgstr "Paketera tillägg"
#: src/extensions-tool/main.c:255 #: src/extensions-tool/main.c:259
msgid "Install extension bundle" msgid "Install extension bundle"
msgstr "Installera tilläggsbunt" msgstr "Installera tilläggsbunt"
#: src/extensions-tool/main.c:257 #: src/extensions-tool/main.c:261
#, c-format #, c-format
msgid "Use %s to get detailed help.\n" msgid "Use %s to get detailed help.\n"
msgstr "Använd %s för att få detaljerad hjälp.\n" msgstr "Använd %s för att få detaljerad hjälp.\n"
#: src/main.c:466 #: src/main.c:474
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Läge som används av GDM för inloggningsskärmen" msgstr "Läge som används av GDM för inloggningsskärmen"
#: src/main.c:472 #: src/main.c:480
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Använd ett specifikt läge, t.ex. ”gdm” för inloggningsskärm" msgstr "Använd ett specifikt läge, t.ex. ”gdm” för inloggningsskärm"
#: src/main.c:478 #: src/main.c:486
msgid "List possible modes" msgid "List possible modes"
msgstr "Lista möjliga lägen" msgstr "Lista möjliga lägen"

1327
po/tr.po

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More