Compare commits

..

91 Commits

Author SHA1 Message Date
Ray Strode
82c72f377a dnd: don't try to access destroyed dragActor
The dragComplete handler incorrectly checks
this._actorDestroyed to see if the drag actor
is destroyed.  The drag actor may not be the same
as the main actor.

The end result is an exception in drop handling,
leading to a shell lockup.

This commit changes the code to always set
this._dragActor to undefined when it's destroyed,
and check for that condition instead of
this._actorDestroyed in the dragComplete handler.

Closes https://gitlab.gnome.org/GNOME/gnome-shell/issues/577
2018-09-19 12:52:39 -04:00
Florian Müllner
c2e9e68df7 Bump version to 3.30.0
Update NEWS.
2018-09-04 00:08:01 +02:00
Ask Hjorth Larsen
bdbf804e69 Updated Danish translation 2018-09-02 22:31:00 +02:00
gogo
9718175f4d Update Croatian translation 2018-09-02 16:11:23 +00:00
Anders Jonsson
0ba346b750 Update Swedish translation 2018-09-01 21:55:35 +00:00
Harry Mallon
614c4480e2 Fix README link 2018-09-01 15:01:46 +01:00
Jiri Grönroos
f21f612ef7 Update Finnish translation 2018-08-31 22:14:39 +00:00
Rūdolfs Mazurs
935de3e80f Update Latvian translation 2018-08-31 17:28:23 +00:00
Balázs Meskó
0f541f60e8 Update Hungarian translation 2018-08-31 13:33:08 +00:00
Trần Ngọc Quân
902c99c757 Updated Vietnamese translation
Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com>
2018-08-31 14:35:16 +07:00
Marco Trevisan (Treviño)
f7029674b0 js, oVirt: Fix ES6 template string alignment
Fix wrong replacement of commit dbf993300a
to be style-contistent with other definitions
2018-08-30 04:49:17 +02:00
Fran Dieguez
dd7ccda168 Update Galician translation 2018-08-29 21:59:01 +00:00
Florian Müllner
e207b45317 Bump version to 3.29.92
Update NEWS.
2018-08-29 18:54:14 +02:00
Marek Cernocky
6b5117677d Updated Czech translation 2018-08-29 07:18:37 +02:00
Jonas Ådahl
900398406c panel: Keep prefs in sync with shell-shows-app-menu state
Previously mutter listened to Xsettings (via GTK) to get notified
whether the shell showed the app menu. After X11 support was changed in
the direction of being less central, listening to this particular
Xsettings were removed with the intention of having the Shell tell
mutter directly whether it was showing the menu or not.

This commit makes that happen. It still travels through Xsettings (still
via Gtk), as the shell still gets that state from Xsettings, but fixing
this is out of scope for this particular fix.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/276
2018-08-28 23:53:10 +00:00
Mohammed Sadiq
461d2b1945 osk: Add Malayalam layout
The layout is based on inscript layout.

Copyright 2018 ICFOSS (info@icfoss.in)

Fixes #441
2018-08-28 20:52:27 +02:00
Takao Fujiwara
6c2f11e8a4 inputMethod: Fix to hide preedit text
ibus_engine_update_preedit_text() should hide the pre-edit text
when visible == false.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/431
2018-08-28 20:24:35 +02:00
Marco Trevisan (Treviño)
dbf993300a js: use ES6 template strings for dbus interfaces
Use multiline template strings for dbus interfaces as they're easier to maintain
2018-08-27 19:23:00 +02:00
Daniel van Vugt
f77b3da74f js/ui: Choose some actors to cache on the GPU
Flag some actors that are good candidates for caching in texture memory
(what Clutter calls "offscreen redirect"), thereby mostly eliminating
their repaint overhead.

This isn't exactly groundbreaking, it's how you're meant to use
OpenGL in the first place. But the difficulty is in the design of
Clutter which has some peculiarities making universal caching
inefficient at the moment:

 * Repainting an offscreen actor is measurably slower than repainting
   the same actor if it was uncached. But only by less than 100%,
   so if an actor can avoid changing every frame then caching is usually
   more efficient over that timeframe.

 * The cached painting from a container typically includes its children,
   so you can't cache containers whose children are usually animating at
   full frame rate. That results in a performance loss.
     This could be remedied in future by Clutter explicitly separating a
   container's background painting from its child painting and always
   caching the background (as StWidget tries to in some cases already).

So this commit selects just a few areas where caching has been verified
to be beneficial, and many use cases now see their CPU usage halved:

One small window active...... 10% -> 7% (-30%)
...under a panel menu........ 23% -> 9% (-61%)
One maximized window active.. 12% -> 9% (-25%)
...under a panel menu........ 23% -> 11% (-52%)
...under a shell dialog...... 22% -> 12% (-45%)
...in activities overview.... 32% -> 17% (-47%)
(on an i7-7700)

Also a couple of bugs are fixed by this:

https://bugzilla.gnome.org/show_bug.cgi?id=792634
https://bugzilla.gnome.org/show_bug.cgi?id=792633
2018-08-27 14:16:59 +00:00
Changwoo Ryu
bc6a38dda7 Update Korean translation 2018-08-27 14:11:52 +00:00
Milo Casagrande
f3a02057c1 Update Italian translation 2018-08-27 07:55:20 +00:00
Kukuh Syafaat
ad15ce9139 Update Indonesian translation 2018-08-26 13:49:05 +00:00
Baurzhan Muftakhidinov
5d178506bf Update Kazakh translation 2018-08-25 17:27:53 +00:00
Florian Müllner
14cc9bfb1e Bump version to 3.29.91
Update NEWS.
2018-08-20 16:09:21 +02:00
Andrea Azzarone
ce4c485f34 windowManager: Ignore auto-repeat activation of toggle keybindigs
Use Meta.KeyBindingFlags.IGNORE_AUTOREPEAT for open-application-menu
and toggle-message-tray keybindings.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/373
2018-08-20 11:14:38 +00:00
Andrea Azzarone
1877a2e00a viewSelector: Ignore auto-repeat activation of toggle keybindigs
Use Meta.KeyBindingFlags.IGNORE_AUTOREPEAT for toggle-application-view
and toggle-application-view keybindings.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/373
2018-08-20 11:14:37 +00:00
Bruce Cowan
b2fa7a6d8f Update British English translation 2018-08-19 16:42:07 +00:00
Daniel Șerbănescu
36c604d793 Update Romanian translation 2018-08-19 16:17:31 +00:00
Florian Müllner
9a5a4b2206 Revert "workspaceThumbnail: rebuild thumbnails if workareas size changed"
It is unclear what the change was supposed to be fixing, but it
broke animations of workspace additions and removals, as those
events trigger the ::workareas-changed signal.

This reverts commit c29bd46e7a.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/162
2018-08-19 12:41:08 +00:00
Carlos Garnacho
3ab9e9e8ad runDialog: Use ClutterText::activate for enter handling
Instead of consuming the event in front of the input method. Enter
is sometimes overriden by those, so it seems better to let the IM
handle the key event, and react later to it if it got propagated
anyway. That is what ::activate does, so use this signal.

This used to work before ClutterInputMethod/InputFocus because the
IM received the events directly from stage captured events. This
is not the case anymore.

Closes: #440
2018-08-17 18:37:32 +00:00
Carlos Garnacho
dd59212d3f st: Use ClutterClickAction on StEntry primary/secondary icons
This makes them work on touchscreens as well.

Closes: #116
2018-08-17 18:27:44 +00:00
Jordi Mas
2b654ec310 Update Catalan translation 2018-08-16 20:45:12 +02:00
Florian Müllner
764fbbe052 overview: Restore previous workspace switcher policy
We used to keep the workspace switcher slid out when the user made use
of workspaces. This was changed in commit 2d84975 to give more space
to window previews, but it turned out to make the switcher quite a lot
more difficult to interact with (rather than only being a question of
discoverability). So go back to the previous behavior.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/161
2018-08-14 17:34:57 +00:00
Florian Müllner
328c63bf64 overviewControls: Sync hover after drag operations
During global grabs, actors miss enter and leave events required
for correct hover tracking. This can cause the workspace switcher
to get stuck while slid out, so ensure the actor's hover state is
synced after drag operations.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/161
2018-08-14 17:34:57 +00:00
Florian Müllner
95788c9834 build: Use dedicated resources for helper programs
Using a single resource file for all JS sources saves a couple of
build system instructions, but has some serious downsides:

 - bundling the entire shell code with the tools blows
   up their size unnecessarily

 - the tools are rebuilt unnecessarily for any shell
   code change

Autotools was painful enough to let this slip, but with meson we
don't have any excuses - using the actual dependencies speeds up
the build a tiny bit and reduces the tools' sizes from over 2M
to about 50k.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/192
2018-08-14 17:28:04 +00:00
Florian Müllner
9cf571efbd build: Clean up tools' dependencies
Simply reusing the same dependencies as gnome-shell itself not only
means that we link tons of stuff unnecessarily, but also that we
have to do the whole mutter rpath dance for nothing. Just use the
dependencies those executables actually need for a nice cleanup.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/192
2018-08-14 17:28:03 +00:00
Florian Müllner
dc4128c78b build: Don't modify typelib search path in tools
We need this in the main gnome-shell executable in order to locate
the private Shell and St typelibs, but those aren't useful or even
usable in the extension-prefs/portal helper tools.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/192
2018-08-14 17:28:03 +00:00
Carlos Garnacho
73d8c82640 layout: Mark chrome container as NO_LAYOUT
Showing and hiding children does not affect the allocation of the uiGroup
nor its other children. We can avoid full relayout/redraw in those
situations.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/197
2018-08-14 19:13:30 +02:00
Andre Klapper
2f7377b250 Fix typo in Czech translation
https://bugzilla.gnome.org/show_bug.cgi?id=796829
2018-08-13 09:52:22 +02:00
Bernd Homuth
804f23b179 Update German translation 2018-08-12 12:21:06 +00:00
Yi-Jyun Pan
2be6ddc54e Update Chinese (Taiwan) translation 2018-08-12 10:18:17 +00:00
Alexandre Franke
dff4f0109e Update French translation 2018-08-09 17:52:20 +00:00
Fabio Tomat
2e663b2a94 Update Friulian translation 2018-08-08 04:58:52 +00:00
Pascal Nowack
9f4aa6ebf2 build: Fix build with meson >= 47.0
With meson >= 47.0, building gnome-shell will fail
when --rebuild-types is used as an option for gtk-doc,
so stop using that option and bump the meson requirement.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/191
2018-08-06 14:58:51 +02:00
Florian Müllner
afe5703710 networkAgent: Fix another ByteArray => Uint8Array instance
This was missed in commit 7ca418a79a. As we are dealing with
non-\0-terminated data here, go through GBytes this time.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/189
2018-08-06 12:16:59 +00:00
verdre
02d06bb1f3 overview: Use whole stage size for cover pane
We show a cover pane on top of the overview during transitions to
prevent issues caused by clicks and mouseover events when the overview
is not ready. Right now, this pane is only being shown on the primary
monitor, which obviosly allows interactions to happen before the
animations are finished on the secondary monitors.

To fix this, use the size of the whole stage for the cover pane.
2018-08-06 10:18:28 +02:00
Emin Tufan Çetin
3a78695bd9 Update Turkish translation 2018-08-06 07:16:17 +00:00
Aurimas Černius
13e8c35d36 Updated Lithuanian translation 2018-08-05 23:22:14 +03:00
Piotr Drąg
3b8dfd98dd Update Polish translation 2018-08-04 19:14:44 +02:00
Carlos Garnacho
6b610b26f8 keyboard: Refactor code resetting IM on window drags
When a window is dragged, the OSK should get hidden. Just
do this in a nicer way.
2018-08-03 17:02:20 +02:00
Carlos Garnacho
81956e9b84 keyboard: defer position-changed till we have a rect
Emitting it that soon results in JS warnings, as we don't have
everything in place yet. The position-changed signal will be
emitted from other locations as soon as we have it.

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

Closes: #464
2018-08-03 13:12:20 +02:00
Matej Urbančič
6b41f82346 Updated Slovenian translation 2018-08-03 11:17:49 +02:00
Olivier Blin
1fca090374 tools: fix XDG desktop syntax in gnome-shell-overrides-migration
Reported by desktop-file-validate:
error: value "True" for boolean key "NoDisplay" in group "Desktop
Entry" contains invalid characters, boolean values must be "false" or
"true"
2018-08-03 00:49:49 +02:00
verdre
da2fc2c9d3 workspace: Simplify detecting added dialogs after closing a window
When trying to close a window in the overview by clicking the close
button and the window doesn't get closed but a dialog is added to the
window afterwards, we close the overview and show the dialog.

Instead of adding a separate listener for the window-added signal to the
WindowOverlay, let the WindowClones remember that the close button was
pressed and activate themselves if a dialog is added after that.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/180
2018-08-03 00:09:02 +02:00
verdre
52cbc299a7 workspace: Fix infinite loop when finding parent window of dialogs
When a dialog is added to a window while the overview is shown, we get
its parent using get_transient_for() so we can add it to the right
window clone.

If we have multiple layers of dialogs we have to do this recursively
until we find the root ancestor. This case currently results in an
infinite loop: Since parent is always set to the same window, the
while-condition will always be true.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/180
2018-08-03 00:09:02 +02:00
Florian Müllner
9f436ce373 data: Fix comment in schema 2018-08-01 20:04:53 +02:00
Florian Müllner
d908940ef3 showOSD: Fix handling of defined 'falsy' parameters
For the OSD, all parameters except for the icon are optional - if the
caller doesn't include the 'label' option, the OSD won't show a label
etc.

While this makes sense for an API, it means that we have to be careful
to correctly differentiate an option that was omitted and an option
that has a 'falsy' value like false or 0.

Unfortunately since commit ccaae5d3c we no longer do, with the result
that OSDs meant for the first monitor will show up on all, and a level
of 0 is presented as no level bar instead of an empty one, whoops.

https://bugzilla.gnome.org/show_bug.cgi?id=791669
2018-08-01 13:58:23 +02:00
Bruno Lopes da Silva
eeda54f24d Update Brazilian Portuguese translation 2018-08-01 10:15:51 +00:00
Florian Müllner
b8b5da1e95 Bump version to 3.29.90
Update NEWS.
2018-08-01 03:43:50 +02:00
Piotr Drąg
3a9ad5c577 Update POTFILES.in 2018-07-31 23:55:20 +02:00
Florian Müllner
d57dc94d9e tools: Migrate changed overrides settings
While the new per-desktop overrides in GIO are easier to use for
both developers and users, it is still inconvenient for everyone
who changed the defaults using the old overrides hack to lose
their settings. Address this by running a small script on startup
that migrates existing settings.

https://bugzilla.gnome.org/show_bug.cgi?id=786496
2018-07-31 18:36:26 +00:00
Florian Müllner
393d7246cc Replace custom override schema with per-desktop override
GSettings now recognizes per-desktop overrides that can be used
to change schemas' default values for a particular desktop. This
is not entirely unlike our existing custom override mechanism in
mutter, except that it is not limited to keys in org.gnome.mutter,
and it doesn't require a separate schema - the latter means that
we (and gnome-teak-tool) no longer have to figure out the correct
schema for the current login session and just use the original one.

https://bugzilla.gnome.org/show_bug.cgi?id=786496
2018-07-31 18:36:26 +00:00
Didier Roche
6217c3b88d volume: Show overamplified icon when in overdrive
Show an overamplified volume icon if volume is louder the max normalized one.
Use a similar logic as gnome-settings-daemon to delimit values, restricted
to output.
The purpose is to help users remember that visiting some websites or
using some apps can get LOUD.

https://bugzilla.gnome.org/show_bug.cgi?id=790280.
2018-07-31 18:14:15 +00:00
Didier Roche
ddd4fd9c24 barLevel: Add "overdrive" capability
Implement for barLevel an overdrive area. This is a zone represented via a
different styling to indicate that you are bypassing the normal zone of
a given level, without reaching yet the maximum limit.

https://bugzilla.gnome.org/show_bug.cgi?id=790280.
2018-07-31 18:14:14 +00:00
Didier Roche
d2a97e7f1d volume: Allow volume above 100%
Depending on hardware and recorded volume level, turning up the speakers
to the maximum volume may not be enough and the user will want to amplify
the volume above 100%. Currently this requires opening the sound Settings
panel which gets cumbersome when required repeatedly.

To support this case better, allow raising the sound volume above 100%
directly from the system menu if the feature is enabled via the
`allow-volume-above-100-percent` key in `org.gnome.desktop.sound`.
2018-07-31 18:14:13 +00:00
Didier Roche
aa75e89216 osdWindow: Allow levels above 100%
Allow osd representing levels that can be more than 100% by accepting
an optional parameter setting that maximum level.
gnome-settings-daemon will use this to indicate volume levels above 100%,
which our own volume indicator will soon support as well.
2018-07-31 18:14:11 +00:00
Didier Roche
3f756dc608 barLevel: Support maxValue higher than 1
Ensure that both barLevel and slider can support a higher maxValue than 1
and computes various positions based on it.
It defaults to 1 if not set.

https://bugzilla.gnome.org/show_bug.cgi?id=790280.
2018-07-31 18:14:10 +00:00
Didier Roche
ed8e89bc19 osdWindow: Reuse BarLevel drawing functionality
Reuse the BarLevel class to get similar drawing behavior as Slider.
Rename theme css impacted properties and ensure that the osdWindow
remains accessible.
Ensure we don't force setting a custom border color like on the OSD.

https://bugzilla.gnome.org/show_bug.cgi?id=790280.
2018-07-31 18:14:10 +00:00
Didier Roche
c90a4e4849 levelBar: Factor out bar drawing
Split drawing logic from Slider to BarLevel subclass.
This changes part of the theme css from -slider- to -barlevel-.

https://bugzilla.gnome.org/show_bug.cgi?id=790280.
2018-07-31 18:14:09 +00:00
Georges Basile Stavracas Neto
f433b12d6e system: Don't execute Settings
In a9ad91c831, a bug was introduced in the following code:

```c
            this._settingsAction.connect('clicked',
                                         this._onSettingsClicked().bind(this));
```

Notice that the callback is being executed! This commit
fixes that by removing the '()' from the callback.
2018-07-31 13:31:59 -03:00
Florian Müllner
7ca418a79a Explicitly convert raw data to strings
As strings are guaranteed to use UTF-8 in the GNOME platform, generic
file APIs like g_file_load_contents() return raw data instead. Since
gjs' recent update to mozjs60, this data is now returns as Uint8Array
which cannot simply be treated as string - its toString() method boils
down to arr.join(',') - so use gjs' new ByteArray module to explicitly
convert the data.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/179
2018-07-31 16:28:53 +00:00
Florian Müllner
a9ad91c831 system: Pick up Settings name and icon from app
The settings action button in the system menu simply launches
gnome-control-center, so we want its icon (and accessible name)
to always match the app. So instead of keeping the button in-sync
with Settings, just look up that information from the app itself.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/433
2018-07-31 16:52:47 +02:00
Florian Müllner
bd1c7774ee system: Enforce symbolic icons in action buttons
We can simply request the symbolic variant from CSS so that we don't
have to append '-symbolic' to all the names. This will always make
it easier to pick up that information from external sources (like
.desktop files).

https://gitlab.gnome.org/GNOME/gnome-shell/issues/433
2018-07-31 16:52:47 +02:00
Florian Müllner
91da3789bc windowManager: Fix switch animation between non-adjacent workspaces
Commit e5c95b910d refactored the workspace animation to also handle
animations that involve all surrounding workspaces, but due to an
ill-advised review comment (guess whose) it broke the animation
for non-neighboring workspaces.

Update the code to handle correctly whether in a given direction:
 - we have the target workspace of a given index
 - we have a neighboring workspace
 - we don't need to animate anything

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/182
2018-07-31 06:51:35 +02:00
Georges Basile Stavracas Neto
2991f9f102 util: Fix code style
The C code introduced in 49d8ff38e did not follow
GNOME Shell's C code style. This commit adjusts it
to comply with the correct code style.
2018-07-30 21:23:28 -03:00
Daniel Drake
49d8ff38e7 Add check_cloexec_fds debug command
Add a debug command (to be executed manually via Alt+F2) to check
that all of gnome-shell's file descriptors have the CLOEXEC flag set.
This is important so that internal file descriptors do not get passed
to apps when they are launched.

It prints a warning message for every fd that does not have the flag set.

fdwalk() is used from the standard library if available (it is not
available in glibc), otherwise we use the same implementation as glib
has internally.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/132
2018-07-30 23:11:41 +00:00
Daniel Drake
4b522a02c3 shell-app: remove child_setup from app launching
When the amount of free memory on the system is somewhat low, gnome-shell
will sometimes fail to launch apps, reporting the error:
  fork(): Cannot allocate memory

fork() is failing here because while cloning the process virtual address
space, Linux worries that the thread being forked may end up COWing the
entire address space of the parent process (gnome-shell, which is
memory-hungry), and there is not enough free memory to permit that to
happen. This check is somewhat irrelevant because we are only forking
to immediately exec(), which will discard the whole virtual address
space anyway.

This issue can be avoided by using a new optimized gspawn codepath in
the latest glib development version, which uses posix_spawn() internally.

For the optimized codepath to be used, we must not pass a child_setup
function, so the the file descriptor management is reimplemented here
using new glib API to pass fds to the child process. The old API will
continue to be used on older glib versions.

We must also change the spawn flags for this code path to be hit.
I checked that gnome-shell's open file descriptors are all CLOEXEC
so using G_SPAWN_LEAVE_DESCRIPTORS_OPEN should be safe.

This will result in more resilient app launching when memory is low,
since the optimized spawn path avoids cloning the virtual address
space of the parent process (gnome-shell) and avoids the irrelevant
memory overcommit check.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/132
2018-07-30 23:11:41 +00:00
Carlos Garnacho
ebe6f59d7e windowManager: Make workspace switching gestures follow motion
When 4fg swipe motion happens, set up early the workspace switching
animation with all surrounding workspaces. This allows us to move
all content back and forth in any direction. This works on both
touchcreens and touchpads.

When the gesture is activated, the same data is reused to follow
up with the tween animation.

The threshold has been also doubled, it was fairly small to start
with, and feels better now that workspaces stick to fingers.

https://bugzilla.gnome.org/show_bug.cgi?id=788994
2018-07-30 21:20:52 +00:00
Carlos Garnacho
e5c95b910d windowManager: Refactor workspace switching animations
Besides the separation into distinct functions, the stored data has
been made able to generically store windows from all surrounding
workspaces. All while keeping a special mode to animate between two
workspaces (The usual till now), this is the only mode exercised so
far.

In order to ease animations, all window groups are now children of
a common container, which is then animated.
2018-07-30 21:20:50 +00:00
Carlos Garnacho
2f76951658 windowManager: Declare variables
Fixes warnings from GJS.
2018-07-30 21:20:49 +00:00
Florian Müllner
3efd296fc3 app: Consider "new-window" action for opening new windows
While can_open_new_window() uses some elaborate heuristics to predict
whether an application can open multiple windows, open_new_window()
will always simply relaunch the application. This is often the best
we can do, but when an application provides a "new-window" action in
its .desktop file or on the bus, it is much more likely to work as
expected than blindly activating the app and hoping for a particular
behavior.

https://bugzilla.gnome.org/show_bug.cgi?id=756844
2018-07-30 19:21:40 +00:00
Florian Müllner
6688610c23 screenshot: Add PickColor() method to Screenshot interface
Use the newly added API to implement a color picker method in the
screenshot interface, so that the desktop portal can expose it
to applications.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/286
2018-07-30 16:55:10 +00:00
Florian Müllner
d2c75801ea screenshot: Allow bypassing lockdown setting
The setting is only relevant when writing to disk is required. We
will soon expose a screenshot method that doesn't, so make it
possible to ignore it.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/286
2018-07-30 16:55:10 +00:00
Florian Müllner
be84a00022 screenshot: Add pick_color() method
Graphical applications like GIMP or GIMP allow picking colors from
any location on-screen. In order to keep supporting this feature
on wayland and in sandboxed apps, we will expose an appropriate
method in the Screenshot interface, so first add a corresponding
method to ShellScreenshot.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/286
2018-07-30 16:55:10 +00:00
Florian Müllner
da537cda43 screenshot: Adopt GIO's async pattern
A custom callback type is more convenient, but only as long as no
other callback type is required. We are about to add functionality
that does not return the filename to a screenshot saved on disk, so
prepare for that by moving to GIO's generic async callback pattern.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/286
2018-07-30 16:55:09 +00:00
Jan-Michael Brummer
304c667bca windowManager: Add top edge drag gesture to unmake fullscreen window
Fullscreen windows cannot be restored by touch device users unless the
application adds support for it.
As it is unlikely to change all application lets introduce a top edge
drag gesture which unmakes fullscreen windows.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/123
2018-07-28 12:11:41 +02:00
Jonas Ådahl
879a81abeb remoteAccess: Make indicator orange
Make the indicator for active remote access use the warning color, to
indicate the severity of allowing remote access.

This only makes the indicator icon orange; the icon in the system menu
is still white.
2018-07-27 18:10:35 +02:00
Daniel Mustieles
e68ca5adbd Updated Spanish translation 2018-07-27 13:38:45 +02:00
Marco Trevisan (Treviño)
cf69fe4b18 gdm, util: Always allow to retry login in unlock mode
When in lockscreen mode there's no point of resetting the auth login as there's
no welcome screen, and that would just cause the UI to freeze, with no reason.
This could have been useful if we were stopping the user to login for a given
time after ALLOWED_FAILURES attempts, but this is not the case yet.
2018-07-25 20:32:42 +00:00
Marco Trevisan (Treviño)
8f848925f6 authPrompt: Do not enable sensitivity if retries are disallowed
Set the sensitivity of the UI according to the canRetry parameter and thus
if no more logins are allowed don't take any input.

Fixes #311
2018-07-25 20:32:42 +00:00
Marco Trevisan (Treviño)
d21657fe61 authPrompt: Unset preemptiveAnswer on reset
When we get a reset signal the preemptiveAnswer should be also unset or it will
be used next time the user authPrompt will be activated, even without any further
user interaction.

Fixes #311
2018-07-25 20:32:41 +00:00
121 changed files with 9920 additions and 9138 deletions

64
NEWS
View File

@@ -1,3 +1,67 @@
3.30.0
======
Contributors:
Harry Mallon, Marco Trevisan (Treviño)
Translators:
Fran Dieguez [gl], Trần Ngọc Quân [vi], Balázs Meskó [hu],
Rūdolfs Mazurs [lv], Jiri Grönroos [fi], Anders Jonsson [sv], gogo [hr],
Ask Hjorth Larsen [da]
3.29.92
=======
* Choose some actors to cache on the GPU [Daniel; #792633]
* inputMethod: Hide preedit text if requested [Takao; #431]
* Fix forced fallback app-menus on wayland [Jonas; #276]
Contributors:
Jonas Ådahl, Takao Fujiwara, Mohammed Sadiq, Marco Trevisan (Treviño),
Daniel van Vugt
Translators:
Baurzhan Muftakhidinov [kk], Kukuh Syafaat [id], Milo Casagrande [it],
Changwoo Ryu [ko], Marek Cernocky [cs]
3.29.91
=======
* Fix handling of 0/false options in ShowOSD D-Bus API [Florian; #791669]
* overview: Fix handling of confirmation dialogs on wayland [verdre; !180]
* Avoid some full relayout/redraws [Carlos; !197]
* Keep workspace switcher slid out when workspaces are in use [Florian; !161]
* Ignore auto-repeat for some keybindings [Andrea; #373]
* Misc. bug fixes [Carlos, Florian, Pascal; #464, !189, !191, !192, !162]
Contributors:
Andrea Azzarone, Olivier Blin, Carlos Garnacho, Florian Müllner,
Pascal Nowack, verdre
Translators:
Bruno Lopes da Silva [pt_BR], Matej Urbančič [sl], Piotr Drąg [pl],
Aurimas Černius [lt], Emin Tufan Çetin [tr], Fabio Tomat [fur],
Alexandre Franke [fr], Yi-Jyun Pan [zh_TW], Bernd Homuth [de],
Andre Klapper [cs], Jordi Mas [ca], Daniel Șerbănescu [ro],
Bruce Cowan [en_GB]
3.29.90
=======
* Add remote access indication on wayland [Jonas; !160]
* Fix wrong window positions in overview on wayland [Marco; #776588]
* Add gesture to unfullscreen a window [Jan-Michael; !123]
* Add PickColor method to screenshot D-Bus interface [Florian; #286]
* Consider "new-window" action when opening new windows [Florian; #756844]
* Make workspace switching gestures follow motion [Carlos; #788994]
* Support audio volumes above 100% [Didier; #790280]
* Misc. bug fixes [Florian, Daniel; #424, !132, !182, #433, !179, #786496]
Contributors:
Jonas Ådahl, Jan-Michael Brummer, Piotr Drąg, Daniel Drake, Carlos Garnacho,
Florian Müllner, Georges Basile Stavracas Neto, Didier Roche, Jakub Steiner,
Marco Trevisan (Treviño)
Translators:
Charles Monzat [fr], Daniel Mustieles [es]
3.29.4 3.29.4
====== ======
* Fix "Clear All" for calendar events [Florian; #325] * Fix "Clear All" for calendar events [Florian; #325]

View File

@@ -7,7 +7,7 @@ easy to use experience.
For more information about GNOME Shell, including instructions on how For more information about GNOME Shell, including instructions on how
to build GNOME Shell from source and how to get involved with the project, to build GNOME Shell from source and how to get involved with the project,
see the [project wiki][wiki] see the [project wiki][project-wiki].
Bugs should be reported to the GNOME [bug tracking system][bug-tracker]. Bugs should be reported to the GNOME [bug tracking system][bug-tracker].

View File

@@ -24,3 +24,9 @@
/* Define if _NL_TIME_FIRST_WEEKDATE is available */ /* Define if _NL_TIME_FIRST_WEEKDATE is available */
#mesondefine HAVE__NL_TIME_FIRST_WEEKDAY #mesondefine HAVE__NL_TIME_FIRST_WEEKDAY
/* Define if you have the `g_desktop_app_info_launch_uris_as_manager_with_fds` function */
#mesondefine HAVE_GIO_DESKTOP_LAUNCH_URIS_WITH_FDS
/* Define if fdwalk is available in libc */
#mesondefine HAVE_FDWALK

View File

@@ -0,0 +1,6 @@
[org.gnome.mutter:GNOME]
attach-modal-dialogs=true
edge-tiling=true
dynamic-workspaces=true
workspaces-only-on-primary=true
focus-change-on-pointer-rest=true

View File

@@ -22,6 +22,7 @@
<file>id.json</file> <file>id.json</file>
<file>il.json</file> <file>il.json</file>
<file>in+bolnagri.json</file> <file>in+bolnagri.json</file>
<file>in+mal.json</file>
<file>ir.json</file> <file>ir.json</file>
<file>is.json</file> <file>is.json</file>
<file>it.json</file> <file>it.json</file>

View File

@@ -0,0 +1,5 @@
[Desktop Entry]
Type=Application
Name=GNOME settings overrides migration
NoDisplay=true
Exec=@libexecdir@/gnome-shell-overrides-migration.sh

View File

@@ -92,6 +92,16 @@ schema = configure_file(
configuration: schemaconf, configuration: schemaconf,
install_dir: schemadir install_dir: schemadir
) )
install_data('00_org.gnome.shell.gschema.override', install_dir: schemadir)
overrides_migration_conf = configuration_data()
overrides_migration_conf.set('libexecdir', libexecdir)
overrides_migration = configure_file(
input: 'gnome-shell-overrides-migration.desktop.in',
output: 'gnome-shell-overrides-migration.desktop',
configuration: overrides_migration_conf,
install_dir: autostartdir
)
if have_systemd if have_systemd
unitconf = configuration_data() unitconf = configuration_data()

View File

@@ -91,6 +91,23 @@
<arg type="s" direction="out" name="filename_used"/> <arg type="s" direction="out" name="filename_used"/>
</method> </method>
<!--
PickColor:
Picks a color and returns the result.
The @result vardict contains:
<variablelist>
<varlistentry>
<term>color (ddd)</term>
<listitem><para>The color, RGB values in the range [0,1].</para></listitem>
</varlistentry>
</variablelist>
-->
<method name="PickColor">
<arg type="a{sv}" direction="out" name="result"/>
</method>
<!-- <!--
FlashArea: FlashArea:
@x: the X coordinate of the area to flash @x: the X coordinate of the area to flash

View File

@@ -190,6 +190,7 @@
</key> </key>
</schema> </schema>
<!-- unused, change 00_org.gnome.shell.gschema.override instead -->
<schema id="org.gnome.shell.overrides" path="/org/gnome/shell/overrides/" <schema id="org.gnome.shell.overrides" path="/org/gnome/shell/overrides/"
gettext-domain="@GETTEXT_PACKAGE@"> gettext-domain="@GETTEXT_PACKAGE@">
<key name="attach-modal-dialogs" type="b"> <key name="attach-modal-dialogs" type="b">

View File

@@ -0,0 +1,559 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"െ"
],
[
"ൌ"
],
[
"ൈ"
],
[
"ാ"
],
[
"ീ"
],
[
"ൂ"
],
[
"ബ"
],
[
"ഹ"
],
[
"ഗ"
],
[
"ദ"
],
[
"ജ"
],
[
"ഡ"
],
[
""
]
],
[
[
"ോ"
],
[
"േ"
],
[
"്"
],
[
"ി"
],
[
"ു"
],
[
"പ"
],
[
"ര"
],
[
"ക"
],
[
"ത"
],
[
"ച"
],
[
"ട"
]
],
[
[
"െ"
],
[
""
],
[
"മ",
"ç"
],
[
"ന"
],
[
"വ"
],
[
"ല",
"ñ"
],
[
"സ"
],
[
"ഷ"
],
[
"യ"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"ഔ"
],
[
"ഐ"
],
[
"ആ"
],
[
"ഈ"
],
[
"ഊ"
],
[
"ഭ"
],
[
"ങ"
],
[
"ഘ"
],
[
"ധ"
],
[
"ഝ"
],
[
"ഢ"
],
[
"ഞ"
]
],
[
[
"ഓ"
],
[
"ഏ"
],
[
"അ"
],
[
"ഇ"
],
[
"ഉ"
],
[
"ഫ"
],
[
"റ"
],
[
"ഖ"
],
[
"ഥ"
],
[
"ഛ"
],
[
""
]
],
[
[
"എ"
],
[
""
],
[
"ണ"
],
[
"ന"
],
[
"ഴ"
],
[
"ള"
],
[
"ശ"
],
[
"ഷ"
],
[
"യ"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"൧",
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"൨",
"2",
"²",
"⅔"
],
[
"൩",
"3",
"³",
"¾",
"⅜"
],
[
"൪",
"4",
"⁴"
],
[
"൫",
"5",
"⅝"
],
[
"൬",
"6"
],
[
"",
"7",
"⅞"
],
[
"൮",
"8"
],
[
"൯",
"9"
],
[
"",
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"₹",
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "ml",
"name": "Malayalam"
}

View File

@@ -128,12 +128,15 @@ StScrollBar {
.slider { .slider {
height: 1em; height: 1em;
-slider-height: 0.3em; -barlevel-height: 0.3em;
-slider-background-color: $insensitive_bg_color; //background of the trough -barlevel-background-color: $insensitive_bg_color; //background of the trough
-slider-border-color: $borders_color; //trough border color -barlevel-border-color: $borders_color; //trough border color
-slider-active-background-color: $selected_bg_color; //active trough fill -barlevel-active-background-color: $selected_bg_color; //active trough fill
-slider-active-border-color: darken($selected_bg_color,10%); //active trough border -barlevel-active-border-color: darken($selected_bg_color,10%); //active trough border
-slider-border-width: 1px; -barlevel-overdrive-color: $destructive_color;
-barlevel-overdrive-border-color: darken($destructive_color,10%);
-barlevel-overdrive-separator-width: 0.2em;
-barlevel-border-width: 1px;
-slider-handle-radius: 6px; -slider-handle-radius: 6px;
} }
@@ -585,13 +588,11 @@ StScrollBar {
.osd-monitor-label { font-size: 3em; } .osd-monitor-label { font-size: 3em; }
.level { .level {
height: 0.6em; height: 0.6em;
border-radius: 0.3em; -barlevel-height: 0.6em;
background-color: transparentize(darken($osd_bg_color,15%),0.5); -barlevel-background-color: transparentize(darken($osd_bg_color,15%),0.5);
color: $osd_fg_color; -barlevel-active-background-color: $osd_fg_color;
} -barlevel-overdrive-color: $destructive_color;
.level-bar { -barlevel-overdrive-separator-width: 0.2em;
background-color: $osd_fg_color;
border-radius: 0.3em;
} }
} }
@@ -825,6 +826,8 @@ StScrollBar {
.screencast-indicator { color: $warning_color; } .screencast-indicator { color: $warning_color; }
.remote-access-indicator { color: $warning_color; }
&.solid { &.solid {
background-color: black; background-color: black;
/* transition from transparent to solid */ /* transition from transparent to solid */
@@ -1122,6 +1125,7 @@ StScrollBar {
} }
.system-menu-action { .system-menu-action {
-st-icon-style: symbolic;
color: $fg_color; color: $fg_color;
border-radius: 32px; /* wish we could do 50% */ border-radius: 32px; /* wish we could do 50% */
padding: 13px; padding: 13px;

View File

@@ -50,8 +50,7 @@ gnome.gtkdoc('shell',
join_paths(meson.build_root(), 'src') join_paths(meson.build_root(), 'src')
], ],
scan_args: [ scan_args: [
'--ignore-headers=' + ' '.join(private_headers + exclude_directories), '--ignore-headers=' + ' '.join(private_headers + exclude_directories)
'--rebuild-types'
], ],
install: true install: true
) )

View File

@@ -17,8 +17,7 @@ gnome.gtkdoc('st',
], ],
scan_args: [ scan_args: [
'--ignore-headers=' + ' '.join(private_headers), '--ignore-headers=' + ' '.join(private_headers),
'--rebuild-sections', '--rebuild-sections'
'--rebuild-types'
], ],
install: true install: true
) )

View File

@@ -14,15 +14,16 @@ const _ = Gettext.gettext;
const Config = imports.misc.config; const Config = imports.misc.config;
const ExtensionUtils = imports.misc.extensionUtils; const ExtensionUtils = imports.misc.extensionUtils;
const GnomeShellIface = '<node> \ const GnomeShellIface = `
<interface name="org.gnome.Shell.Extensions"> \ <node>
<signal name="ExtensionStatusChanged"> \ <interface name="org.gnome.Shell.Extensions">
<arg type="s" name="uuid"/> \ <signal name="ExtensionStatusChanged">
<arg type="i" name="state"/> \ <arg type="s" name="uuid"/>
<arg type="s" name="error"/> \ <arg type="i" name="state"/>
</signal> \ <arg type="s" name="error"/>
</interface> \ </signal>
</node>'; </interface>
</node>`;
const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface); const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface);

View File

@@ -242,11 +242,11 @@ var AuthPrompt = new Lang.Class({
this.emit('prompted'); this.emit('prompted');
}, },
_onVerificationFailed() { _onVerificationFailed(userVerifier, canRetry) {
this._queryingService = null; this._queryingService = null;
this.clear(); this.clear();
this.updateSensitivity(true); this.updateSensitivity(canRetry);
this.setActorInDefaultButtonWell(null); this.setActorInDefaultButtonWell(null);
this.verificationStatus = AuthPromptStatus.VERIFICATION_FAILED; this.verificationStatus = AuthPromptStatus.VERIFICATION_FAILED;
}, },
@@ -439,6 +439,7 @@ var AuthPrompt = new Lang.Class({
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING; this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
this.cancelButton.reactive = true; this.cancelButton.reactive = true;
this.nextButton.label = _("Next"); this.nextButton.label = _("Next");
this._preemptiveAnswer = null;
if (this._userVerifier) if (this._userVerifier)
this._userVerifier.cancel(); this._userVerifier.cancel();

View File

@@ -5,13 +5,14 @@ const Lang = imports.lang;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Signals = imports.signals; const Signals = imports.signals;
const FprintManagerIface = '<node> \ const FprintManagerIface = `
<interface name="net.reactivated.Fprint.Manager"> \ <node>
<method name="GetDefaultDevice"> \ <interface name="net.reactivated.Fprint.Manager">
<arg type="o" direction="out" /> \ <method name="GetDefaultDevice">
</method> \ <arg type="o" direction="out" />
</interface> \ </method>
</node>'; </interface>
</node>`;
const FprintManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(FprintManagerIface); const FprintManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(FprintManagerIface);

View File

@@ -4,13 +4,14 @@ const Gio = imports.gi.Gio;
const Lang = imports.lang; const Lang = imports.lang;
const Signals = imports.signals; const Signals = imports.signals;
const OVirtCredentialsIface = '<node> \ const OVirtCredentialsIface = `
<interface name="org.ovirt.vdsm.Credentials"> \ <node>
<signal name="UserAuthenticated"> \ <interface name="org.ovirt.vdsm.Credentials">
<arg type="s" name="token"/> \ <signal name="UserAuthenticated">
</signal> \ <arg type="s" name="token"/>
</interface> \ </signal>
</node>'; </interface>
</node>`;
const OVirtCredentialsInfo = Gio.DBusInterfaceInfo.new_for_xml(OVirtCredentialsIface); const OVirtCredentialsInfo = Gio.DBusInterfaceInfo.new_for_xml(OVirtCredentialsIface);

View File

@@ -5,58 +5,61 @@ const Lang = imports.lang;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Signals = imports.signals; const Signals = imports.signals;
const ProviderIface = '<node> \ const ProviderIface = `
<interface name="org.freedesktop.realmd.Provider"> \ <node>
<property name="Name" type="s" access="read"/> \ <interface name="org.freedesktop.realmd.Provider">
<property name="Version" type="s" access="read"/> \ <property name="Name" type="s" access="read"/>
<property name="Realms" type="ao" access="read"/> \ <property name="Version" type="s" access="read"/>
<method name="Discover"> \ <property name="Realms" type="ao" access="read"/>
<arg name="string" type="s" direction="in"/> \ <method name="Discover">
<arg name="options" type="a{sv}" direction="in"/> \ <arg name="string" type="s" direction="in"/>
<arg name="relevance" type="i" direction="out"/> \ <arg name="options" type="a{sv}" direction="in"/>
<arg name="realm" type="ao" direction="out"/> \ <arg name="relevance" type="i" direction="out"/>
</method> \ <arg name="realm" type="ao" direction="out"/>
</interface> \ </method>
</node>'; </interface>
</node>`;
const Provider = Gio.DBusProxy.makeProxyWrapper(ProviderIface); const Provider = Gio.DBusProxy.makeProxyWrapper(ProviderIface);
const ServiceIface = '<node> \ const ServiceIface = `
<interface name="org.freedesktop.realmd.Service"> \ <node>
<method name="Cancel"> \ <interface name="org.freedesktop.realmd.Service">
<arg name="operation" type="s" direction="in"/> \ <method name="Cancel">
</method> \ <arg name="operation" type="s" direction="in"/>
<method name="Release" /> \ </method>
<method name="SetLocale"> \ <method name="Release" />
<arg name="locale" type="s" direction="in"/> \ <method name="SetLocale">
</method> \ <arg name="locale" type="s" direction="in"/>
<signal name="Diagnostics"> \ </method>
<arg name="data" type="s"/> \ <signal name="Diagnostics">
<arg name="operation" type="s"/> \ <arg name="data" type="s"/>
</signal> \ <arg name="operation" type="s"/>
</interface> \ </signal>
</node>'; </interface>
</node>`;
const Service = Gio.DBusProxy.makeProxyWrapper(ServiceIface); const Service = Gio.DBusProxy.makeProxyWrapper(ServiceIface);
const RealmIface = '<node> \ const RealmIface = `
<interface name="org.freedesktop.realmd.Realm"> \ <node>
<property name="Name" type="s" access="read"/> \ <interface name="org.freedesktop.realmd.Realm">
<property name="Configured" type="s" access="read"/> \ <property name="Name" type="s" access="read"/>
<property name="Details" type="a(ss)" access="read"/> \ <property name="Configured" type="s" access="read"/>
<property name="LoginFormats" type="as" access="read"/> \ <property name="Details" type="a(ss)" access="read"/>
<property name="LoginPolicy" type="s" access="read"/> \ <property name="LoginFormats" type="as" access="read"/>
<property name="PermittedLogins" type="as" access="read"/> \ <property name="LoginPolicy" type="s" access="read"/>
<property name="SupportedInterfaces" type="as" access="read"/> \ <property name="PermittedLogins" type="as" access="read"/>
<method name="ChangeLoginPolicy"> \ <property name="SupportedInterfaces" type="as" access="read"/>
<arg name="login_policy" type="s" direction="in"/> \ <method name="ChangeLoginPolicy">
<arg name="permitted_add" type="as" direction="in"/> \ <arg name="login_policy" type="s" direction="in"/>
<arg name="permitted_remove" type="as" direction="in"/> \ <arg name="permitted_add" type="as" direction="in"/>
<arg name="options" type="a{sv}" direction="in"/> \ <arg name="permitted_remove" type="as" direction="in"/>
</method> \ <arg name="options" type="a{sv}" direction="in"/>
<method name="Deconfigure"> \ </method>
<arg name="options" type="a{sv}" direction="in"/> \ <method name="Deconfigure">
</method> \ <arg name="options" type="a{sv}" direction="in"/>
</interface> \ </method>
</node>'; </interface>
</node>`;
const Realm = Gio.DBusProxy.makeProxyWrapper(RealmIface); const Realm = Gio.DBusProxy.makeProxyWrapper(RealmIface);
var Manager = new Lang.Class({ var Manager = new Lang.Class({

View File

@@ -537,12 +537,13 @@ var ShellUserVerifier = new Lang.Class({
_verificationFailed(retry) { _verificationFailed(retry) {
// For Not Listed / enterprise logins, immediately reset // For Not Listed / enterprise logins, immediately reset
// the dialog // the dialog
// Otherwise, we allow ALLOWED_FAILURES attempts. After that, we // Otherwise, when in login mode we allow ALLOWED_FAILURES attempts.
// go back to the welcome screen. // After that, we go back to the welcome screen.
this._failCounter++; this._failCounter++;
let canRetry = retry && this._userName && let canRetry = retry && this._userName &&
this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY); (this._reauthOnly ||
this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY));
if (canRetry) { if (canRetry) {
if (!this.hasPendingMessages) { if (!this.hasPendingMessages) {
@@ -565,7 +566,7 @@ var ShellUserVerifier = new Lang.Class({
} }
} }
this.emit('verification-failed'); this.emit('verification-failed', canRetry);
}, },
_onConversationStopped(client, serviceName) { _onConversationStopped(client, serviceName) {

View File

@@ -9,8 +9,6 @@
<file>gdm/realmd.js</file> <file>gdm/realmd.js</file>
<file>gdm/util.js</file> <file>gdm/util.js</file>
<file>extensionPrefs/main.js</file>
<file>misc/config.js</file> <file>misc/config.js</file>
<file>misc/extensionUtils.js</file> <file>misc/extensionUtils.js</file>
<file>misc/fileUtils.js</file> <file>misc/fileUtils.js</file>
@@ -33,8 +31,6 @@
<file>perf/core.js</file> <file>perf/core.js</file>
<file>perf/hwtest.js</file> <file>perf/hwtest.js</file>
<file>portalHelper/main.js</file>
<file>ui/accessDialog.js</file> <file>ui/accessDialog.js</file>
<file>ui/altTab.js</file> <file>ui/altTab.js</file>
<file>ui/animation.js</file> <file>ui/animation.js</file>
@@ -43,6 +39,7 @@
<file>ui/audioDeviceSelection.js</file> <file>ui/audioDeviceSelection.js</file>
<file>ui/backgroundMenu.js</file> <file>ui/backgroundMenu.js</file>
<file>ui/background.js</file> <file>ui/background.js</file>
<file>ui/barLevel.js</file>
<file>ui/boxpointer.js</file> <file>ui/boxpointer.js</file>
<file>ui/calendar.js</file> <file>ui/calendar.js</file>
<file>ui/checkBox.js</file> <file>ui/checkBox.js</file>

View File

@@ -6,3 +6,17 @@ js_resources = gnome.compile_resources(
c_name: 'shell_js_resources', c_name: 'shell_js_resources',
dependencies: [config_js] dependencies: [config_js]
) )
portal_resources = gnome.compile_resources(
'portal-resources', 'portal-resources.gresource.xml',
source_dir: ['.', meson.current_build_dir()],
c_name: 'portal_js_resources',
dependencies: [config_js]
)
prefs_resources = gnome.compile_resources(
'prefs-resources', 'prefs-resources.gresource.xml',
source_dir: ['.', meson.current_build_dir()],
c_name: 'prefs_js_resources',
dependencies: [config_js]
)

View File

@@ -112,6 +112,8 @@ function createExtensionObject(uuid, dir, type) {
let metadataContents, success, tag; let metadataContents, success, tag;
try { try {
[success, metadataContents, tag] = metadataFile.load_contents(null); [success, metadataContents, tag] = metadataFile.load_contents(null);
if (metadataContents instanceof Uint8Array)
metadataContents = imports.byteArray.toString(metadataContents);
} catch (e) { } catch (e) {
throw new Error('Failed to load metadata.json: ' + e); throw new Error('Failed to load metadata.json: ' + e);
} }

View File

@@ -4,17 +4,18 @@ const Gio = imports.gi.Gio;
const Lang = imports.lang; const Lang = imports.lang;
const Signals = imports.signals; const Signals = imports.signals;
const PresenceIface = '<node> \ const PresenceIface = `
<interface name="org.gnome.SessionManager.Presence"> \ <node>
<method name="SetStatus"> \ <interface name="org.gnome.SessionManager.Presence">
<arg type="u" direction="in"/> \ <method name="SetStatus">
</method> \ <arg type="u" direction="in"/>
<property name="status" type="u" access="readwrite"/> \ </method>
<signal name="StatusChanged"> \ <property name="status" type="u" access="readwrite"/>
<arg type="u" direction="out"/> \ <signal name="StatusChanged">
</signal> \ <arg type="u" direction="out"/>
</interface> \ </signal>
</node>'; </interface>
</node>`;
var PresenceStatus = { var PresenceStatus = {
AVAILABLE: 0, AVAILABLE: 0,
@@ -32,16 +33,17 @@ function Presence(initCallback, cancellable) {
// Note inhibitors are immutable objects, so they don't // Note inhibitors are immutable objects, so they don't
// change at runtime (changes always come in the form // change at runtime (changes always come in the form
// of new inhibitors) // of new inhibitors)
const InhibitorIface = '<node> \ const InhibitorIface = `
<interface name="org.gnome.SessionManager.Inhibitor"> \ <node>
<method name="GetAppId"> \ <interface name="org.gnome.SessionManager.Inhibitor">
<arg type="s" direction="out" /> \ <method name="GetAppId">
</method> \ <arg type="s" direction="out" />
<method name="GetReason"> \ </method>
<arg type="s" direction="out" /> \ <method name="GetReason">
</method> \ <arg type="s" direction="out" />
</interface> \ </method>
</node>'; </interface>
</node>`;
var InhibitorProxy = Gio.DBusProxy.makeProxyWrapper(InhibitorIface); var InhibitorProxy = Gio.DBusProxy.makeProxyWrapper(InhibitorIface);
function Inhibitor(objectPath, initCallback, cancellable) { function Inhibitor(objectPath, initCallback, cancellable) {
@@ -49,29 +51,30 @@ function Inhibitor(objectPath, initCallback, cancellable) {
} }
// Not the full interface, only the methods we use // Not the full interface, only the methods we use
const SessionManagerIface = '<node> \ const SessionManagerIface = `
<interface name="org.gnome.SessionManager"> \ <node>
<method name="Logout"> \ <interface name="org.gnome.SessionManager">
<arg type="u" direction="in" /> \ <method name="Logout">
</method> \ <arg type="u" direction="in" />
<method name="Shutdown" /> \ </method>
<method name="Reboot" /> \ <method name="Shutdown" />
<method name="CanShutdown"> \ <method name="Reboot" />
<arg type="b" direction="out" /> \ <method name="CanShutdown">
</method> \ <arg type="b" direction="out" />
<method name="IsInhibited"> \ </method>
<arg type="u" direction="in" /> \ <method name="IsInhibited">
<arg type="b" direction="out" /> \ <arg type="u" direction="in" />
</method> \ <arg type="b" direction="out" />
<property name="SessionIsActive" type="b" access="read"/> \ </method>
<signal name="InhibitorAdded"> \ <property name="SessionIsActive" type="b" access="read"/>
<arg type="o" direction="out"/> \ <signal name="InhibitorAdded">
</signal> \ <arg type="o" direction="out"/>
<signal name="InhibitorRemoved"> \ </signal>
<arg type="o" direction="out"/> \ <signal name="InhibitorRemoved">
</signal> \ <arg type="o" direction="out"/>
</interface> \ </signal>
</node>'; </interface>
</node>`;
var SessionManagerProxy = Gio.DBusProxy.makeProxyWrapper(SessionManagerIface); var SessionManagerProxy = Gio.DBusProxy.makeProxyWrapper(SessionManagerIface);
function SessionManager(initCallback, cancellable) { function SessionManager(initCallback, cancellable) {

View File

@@ -17,6 +17,8 @@ var InputMethod = new Lang.Class({
this._currentFocus = null; this._currentFocus = null;
this._currentEvent = null; this._currentEvent = null;
this._doForwardEvent = false; this._doForwardEvent = false;
this._preeditStr = '';
this._preeditPos = 0;
this._ibus = IBus.Bus.new_async(); this._ibus = IBus.Bus.new_async();
this._ibus.connect('connected', this._onConnected.bind(this)); this._ibus.connect('connected', this._onConnected.bind(this));
this._ibus.connect('disconnected', this._clear.bind(this)); this._ibus.connect('disconnected', this._clear.bind(this));
@@ -69,6 +71,8 @@ var InputMethod = new Lang.Class({
this._context.connect('commit-text', this._onCommitText.bind(this)); this._context.connect('commit-text', this._onCommitText.bind(this));
this._context.connect('delete-surrounding-text', this._onDeleteSurroundingText.bind(this)); this._context.connect('delete-surrounding-text', this._onDeleteSurroundingText.bind(this));
this._context.connect('update-preedit-text', this._onUpdatePreeditText.bind(this)); this._context.connect('update-preedit-text', this._onUpdatePreeditText.bind(this));
this._context.connect('show-preedit-text', this._onShowPreeditText.bind(this));
this._context.connect('hide-preedit-text', this._onHidePreeditText.bind(this));
this._context.connect('forward-key-event', this._onForwardKeyEvent.bind(this)); this._context.connect('forward-key-event', this._onForwardKeyEvent.bind(this));
this._updateCapabilities(); this._updateCapabilities();
@@ -79,6 +83,8 @@ var InputMethod = new Lang.Class({
this._hints = 0; this._hints = 0;
this._purpose = 0; this._purpose = 0;
this._enabled = false; this._enabled = false;
this._preeditStr = ''
this._preeditPos = 0;
}, },
_emitRequestSurrounding() { _emitRequestSurrounding() {
@@ -95,11 +101,22 @@ var InputMethod = new Lang.Class({
}, },
_onUpdatePreeditText(context, text, pos, visible) { _onUpdatePreeditText(context, text, pos, visible) {
let str = null; if (text == null)
if (visible && text != null) return;
str = text.get_text(); this._preeditStr = text.get_text();
this._preeditPos = pos;
if (visible)
this.set_preedit_text(this._preeditStr, pos);
else
this.set_preedit_text(null, pos);
},
this.set_preedit_text(str, pos); _onShowPreeditText(context) {
this.set_preedit_text(this._preeditStr, this._preeditPos);
},
_onHidePreeditText(context) {
this.set_preedit_text(null, this._preeditPos);
}, },
_onForwardKeyEvent(context, keyval, keycode, state) { _onForwardKeyEvent(context, keyval, keycode, state) {

View File

@@ -7,53 +7,56 @@ const Mainloop = imports.mainloop;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Signals = imports.signals; const Signals = imports.signals;
const SystemdLoginManagerIface = '<node> \ const SystemdLoginManagerIface = `
<interface name="org.freedesktop.login1.Manager"> \ <node>
<method name="Suspend"> \ <interface name="org.freedesktop.login1.Manager">
<arg type="b" direction="in"/> \ <method name="Suspend">
</method> \ <arg type="b" direction="in"/>
<method name="CanSuspend"> \ </method>
<arg type="s" direction="out"/> \ <method name="CanSuspend">
</method> \ <arg type="s" direction="out"/>
<method name="Inhibit"> \ </method>
<arg type="s" direction="in"/> \ <method name="Inhibit">
<arg type="s" direction="in"/> \ <arg type="s" direction="in"/>
<arg type="s" direction="in"/> \ <arg type="s" direction="in"/>
<arg type="s" direction="in"/> \ <arg type="s" direction="in"/>
<arg type="h" direction="out"/> \ <arg type="s" direction="in"/>
</method> \ <arg type="h" direction="out"/>
<method name="GetSession"> \ </method>
<arg type="s" direction="in"/> \ <method name="GetSession">
<arg type="o" direction="out"/> \ <arg type="s" direction="in"/>
</method> \ <arg type="o" direction="out"/>
<method name="ListSessions"> \ </method>
<arg name="sessions" type="a(susso)" direction="out"/> \ <method name="ListSessions">
</method> \ <arg name="sessions" type="a(susso)" direction="out"/>
<signal name="PrepareForSleep"> \ </method>
<arg type="b" direction="out"/> \ <signal name="PrepareForSleep">
</signal> \ <arg type="b" direction="out"/>
</interface> \ </signal>
</node>'; </interface>
</node>`;
const SystemdLoginSessionIface = '<node> \ const SystemdLoginSessionIface = `
<interface name="org.freedesktop.login1.Session"> \ <node>
<signal name="Lock" /> \ <interface name="org.freedesktop.login1.Session">
<signal name="Unlock" /> \ <signal name="Lock" />
<property name="Active" type="b" access="read" /> \ <signal name="Unlock" />
<property name="Class" type="s" access="read" /> \ <property name="Active" type="b" access="read" />
<property name="Id" type="s" access="read" /> \ <property name="Class" type="s" access="read" />
<method name="SetLockedHint"> \ <property name="Id" type="s" access="read" />
<arg type="b" direction="in"/> \ <method name="SetLockedHint">
</method> \ <arg type="b" direction="in"/>
</interface> \ </method>
</node>'; </interface>
</node>`;
const SystemdLoginUserIface = '<node> \ const SystemdLoginUserIface = `
<interface name="org.freedesktop.login1.User"> \ <node>
<property name="Display" type="(so)" access="read" /> \ <interface name="org.freedesktop.login1.User">
<property name="Sessions" type="a(so)" access="read" /> \ <property name="Display" type="(so)" access="read" />
</interface> \ <property name="Sessions" type="a(so)" access="read" />
</node>'; </interface>
</node>`;
const SystemdLoginManager = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface); const SystemdLoginManager = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface);
const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface); const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface);

View File

@@ -92,41 +92,43 @@ function _findProviderForSid(sid) {
// The following are not the complete interfaces, just the methods we need // The following are not the complete interfaces, just the methods we need
// (or may need in the future) // (or may need in the future)
const ModemGsmNetworkInterface = '<node> \ const ModemGsmNetworkInterface = `
<interface name="org.freedesktop.ModemManager.Modem.Gsm.Network"> \ <node>
<method name="GetRegistrationInfo"> \ <interface name="org.freedesktop.ModemManager.Modem.Gsm.Network">
<arg type="(uss)" direction="out" /> \ <method name="GetRegistrationInfo">
</method> \ <arg type="(uss)" direction="out" />
<method name="GetSignalQuality"> \ </method>
<arg type="u" direction="out" /> \ <method name="GetSignalQuality">
</method> \ <arg type="u" direction="out" />
<property name="AccessTechnology" type="u" access="read" /> \ </method>
<signal name="SignalQuality"> \ <property name="AccessTechnology" type="u" access="read" />
<arg type="u" direction="out" /> \ <signal name="SignalQuality">
</signal> \ <arg type="u" direction="out" />
<signal name="RegistrationInfo"> \ </signal>
<arg type="u" direction="out" /> \ <signal name="RegistrationInfo">
<arg type="s" direction="out" /> \ <arg type="u" direction="out" />
<arg type="s" direction="out" /> \ <arg type="s" direction="out" />
</signal> \ <arg type="s" direction="out" />
</interface> \ </signal>
</node>'; </interface>
</node>`;
const ModemGsmNetworkProxy = Gio.DBusProxy.makeProxyWrapper(ModemGsmNetworkInterface); const ModemGsmNetworkProxy = Gio.DBusProxy.makeProxyWrapper(ModemGsmNetworkInterface);
const ModemCdmaInterface = '<node> \ const ModemCdmaInterface = `
<interface name="org.freedesktop.ModemManager.Modem.Cdma"> \ <node>
<method name="GetSignalQuality"> \ <interface name="org.freedesktop.ModemManager.Modem.Cdma">
<arg type="u" direction="out" /> \ <method name="GetSignalQuality">
</method> \ <arg type="u" direction="out" />
<method name="GetServingSystem"> \ </method>
<arg type="(usu)" direction="out" /> \ <method name="GetServingSystem">
</method> \ <arg type="(usu)" direction="out" />
<signal name="SignalQuality"> \ </method>
<arg type="u" direction="out" /> \ <signal name="SignalQuality">
</signal> \ <arg type="u" direction="out" />
</interface> \ </signal>
</node>'; </interface>
</node>`;
const ModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(ModemCdmaInterface); const ModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(ModemCdmaInterface);
@@ -222,26 +224,29 @@ Signals.addSignalMethods(ModemCdma.prototype);
// Support for the new ModemManager1 interface (MM >= 0.7) // Support for the new ModemManager1 interface (MM >= 0.7)
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
const BroadbandModemInterface = '<node> \ const BroadbandModemInterface = `
<interface name="org.freedesktop.ModemManager1.Modem"> \ <node>
<property name="SignalQuality" type="(ub)" access="read" /> \ <interface name="org.freedesktop.ModemManager1.Modem">
</interface> \ <property name="SignalQuality" type="(ub)" access="read" />
</node>'; </interface>
</node>`;
const BroadbandModemProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemInterface); const BroadbandModemProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemInterface);
const BroadbandModem3gppInterface = '<node> \ const BroadbandModem3gppInterface = `
<interface name="org.freedesktop.ModemManager1.Modem.Modem3gpp"> \ <node>
<property name="OperatorCode" type="s" access="read" /> \ <interface name="org.freedesktop.ModemManager1.Modem.Modem3gpp">
<property name="OperatorName" type="s" access="read" /> \ <property name="OperatorCode" type="s" access="read" />
</interface> \ <property name="OperatorName" type="s" access="read" />
</node>'; </interface>
</node>`;
const BroadbandModem3gppProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModem3gppInterface); const BroadbandModem3gppProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModem3gppInterface);
const BroadbandModemCdmaInterface = '<node> \ const BroadbandModemCdmaInterface = `
<interface name="org.freedesktop.ModemManager1.Modem.ModemCdma"> \ <node>
<property name="Sid" type="u" access="read" /> \ <interface name="org.freedesktop.ModemManager1.Modem.ModemCdma">
</interface> \ <property name="Sid" type="u" access="read" />
</node>'; </interface>
</node>`;
const BroadbandModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemCdmaInterface); const BroadbandModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemCdmaInterface);
var BroadbandModem = new Lang.Class({ var BroadbandModem = new Lang.Class({

View File

@@ -8,21 +8,22 @@ const Signals = imports.signals;
// Specified in the D-Bus specification here: // Specified in the D-Bus specification here:
// http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager // http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager
const ObjectManagerIface = '<node> \ const ObjectManagerIface = `
<interface name="org.freedesktop.DBus.ObjectManager"> \ <node>
<method name="GetManagedObjects"> \ <interface name="org.freedesktop.DBus.ObjectManager">
<arg name="objects" type="a{oa{sa{sv}}}" direction="out"/> \ <method name="GetManagedObjects">
</method> \ <arg name="objects" type="a{oa{sa{sv}}}" direction="out"/>
<signal name="InterfacesAdded"> \ </method>
<arg name="objectPath" type="o"/> \ <signal name="InterfacesAdded">
<arg name="interfaces" type="a{sa{sv}}" /> \ <arg name="objectPath" type="o"/>
</signal> \ <arg name="interfaces" type="a{sa{sv}}" />
<signal name="InterfacesRemoved"> \ </signal>
<arg name="objectPath" type="o"/> \ <signal name="InterfacesRemoved">
<arg name="interfaces" type="as" /> \ <arg name="objectPath" type="o"/>
</signal> \ <arg name="interfaces" type="as" />
</interface> \ </signal>
</node>'; </interface>
</node>`;
const ObjectManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(ObjectManagerIface); const ObjectManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(ObjectManagerIface);

View File

@@ -2,30 +2,31 @@
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;
const PermissionStoreIface = '<node> \ const PermissionStoreIface = `
<interface name="org.freedesktop.impl.portal.PermissionStore"> \ <node>
<method name="Lookup"> \ <interface name="org.freedesktop.impl.portal.PermissionStore">
<arg name="table" type="s" direction="in"/> \ <method name="Lookup">
<arg name="id" type="s" direction="in"/> \ <arg name="table" type="s" direction="in"/>
<arg name="permissions" type="a{sas}" direction="out"/> \ <arg name="id" type="s" direction="in"/>
<arg name="data" type="v" direction="out"/> \ <arg name="permissions" type="a{sas}" direction="out"/>
</method> \ <arg name="data" type="v" direction="out"/>
<method name="Set"> \ </method>
<arg name="table" type="s" direction="in"/> \ <method name="Set">
<arg name="create" type="b" direction="in"/> \ <arg name="table" type="s" direction="in"/>
<arg name="id" type="s" direction="in"/> \ <arg name="create" type="b" direction="in"/>
<arg name="app_permissions" type="a{sas}" direction="in"/> \ <arg name="id" type="s" direction="in"/>
<arg name="data" type="v" direction="in"/> \ <arg name="app_permissions" type="a{sas}" direction="in"/>
</method> \ <arg name="data" type="v" direction="in"/>
<signal name="Changed"> \ </method>
<arg name="table" type="s" direction="out"/> \ <signal name="Changed">
<arg name="id" type="s" direction="out"/> \ <arg name="table" type="s" direction="out"/>
<arg name="deleted" type="b" direction="out"/> \ <arg name="id" type="s" direction="out"/>
<arg name="data" type="v" direction="out"/> \ <arg name="deleted" type="b" direction="out"/>
<arg name="permissions" type="a{sas}" direction="out"/> \ <arg name="data" type="v" direction="out"/>
</signal> \ <arg name="permissions" type="a{sas}" direction="out"/>
</interface> \ </signal>
</node>'; </interface>
</node>`;
const PermissionStoreProxy = Gio.DBusProxy.makeProxyWrapper(PermissionStoreIface); const PermissionStoreProxy = Gio.DBusProxy.makeProxyWrapper(PermissionStoreIface);

View File

@@ -7,14 +7,15 @@ const Signals = imports.signals;
const ObjectManager = imports.misc.objectManager; const ObjectManager = imports.misc.objectManager;
const SmartcardTokenIface = '<node> \ const SmartcardTokenIface = `
<interface name="org.gnome.SettingsDaemon.Smartcard.Token"> \ <node>
<property name="Name" type="s" access="read"/> \ <interface name="org.gnome.SettingsDaemon.Smartcard.Token">
<property name="Driver" type="o" access="read"/> \ <property name="Name" type="s" access="read"/>
<property name="IsInserted" type="b" access="read"/> \ <property name="Driver" type="o" access="read"/>
<property name="UsedToLogin" type="b" access="read"/> \ <property name="IsInserted" type="b" access="read"/>
</interface> \ <property name="UsedToLogin" type="b" access="read"/>
</node>'; </interface>
</node>`;
let _smartcardManager = null; let _smartcardManager = null;

View File

@@ -22,11 +22,12 @@ const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out';
const SENSOR_BUS_NAME = 'net.hadess.SensorProxy'; const SENSOR_BUS_NAME = 'net.hadess.SensorProxy';
const SENSOR_OBJECT_PATH = '/net/hadess/SensorProxy'; const SENSOR_OBJECT_PATH = '/net/hadess/SensorProxy';
const SensorProxyInterface = '<node> \ const SensorProxyInterface = `
<interface name="net.hadess.SensorProxy"> \ <node>
<property name="HasAccelerometer" type="b" access="read"/> \ <interface name="net.hadess.SensorProxy">
</interface> \ <property name="HasAccelerometer" type="b" access="read"/>
</node>'; </interface>
</node>`;
const POWER_OFF_ACTION_ID = 'power-off'; const POWER_OFF_ACTION_ID = 'power-off';
const LOCK_SCREEN_ACTION_ID = 'lock-screen'; const LOCK_SCREEN_ACTION_ID = 'lock-screen';

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/shell">
<file>misc/config.js</file>
<file>portalHelper/main.js</file>
</gresource>
</gresources>

View File

@@ -30,25 +30,26 @@ const CONNECTIVITY_CHECK_HOST = 'nmcheck.gnome.org';
const CONNECTIVITY_CHECK_URI = 'http://' + CONNECTIVITY_CHECK_HOST; const CONNECTIVITY_CHECK_URI = 'http://' + CONNECTIVITY_CHECK_HOST;
const CONNECTIVITY_RECHECK_RATELIMIT_TIMEOUT = 30 * GLib.USEC_PER_SEC; const CONNECTIVITY_RECHECK_RATELIMIT_TIMEOUT = 30 * GLib.USEC_PER_SEC;
const HelperDBusInterface = '<node> \ const HelperDBusInterface = `
<interface name="org.gnome.Shell.PortalHelper"> \ <node>
<method name="Authenticate"> \ <interface name="org.gnome.Shell.PortalHelper">
<arg type="o" direction="in" name="connection" /> \ <method name="Authenticate">
<arg type="s" direction="in" name="url" /> \ <arg type="o" direction="in" name="connection" />
<arg type="u" direction="in" name="timestamp" /> \ <arg type="s" direction="in" name="url" />
</method> \ <arg type="u" direction="in" name="timestamp" />
<method name="Close"> \ </method>
<arg type="o" direction="in" name="connection" /> \ <method name="Close">
</method> \ <arg type="o" direction="in" name="connection" />
<method name="Refresh"> \ </method>
<arg type="o" direction="in" name="connection" /> \ <method name="Refresh">
</method> \ <arg type="o" direction="in" name="connection" />
<signal name="Done"> \ </method>
<arg type="o" name="connection" /> \ <signal name="Done">
<arg type="u" name="result" /> \ <arg type="o" name="connection" />
</signal> \ <arg type="u" name="result" />
</interface> \ </signal>
</node>'; </interface>
</node>`;
var PortalHeaderBar = new Lang.Class({ var PortalHeaderBar = new Lang.Class({
Name: 'PortalHeaderBar', Name: 'PortalHeaderBar',

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/shell">
<file>extensionPrefs/main.js</file>
<file>misc/config.js</file>
<file>misc/extensionUtils.js</file>
<file>misc/fileUtils.js</file>
<file>misc/params.js</file>
</gresource>
</gresources>

View File

@@ -10,27 +10,29 @@ const CheckBox = imports.ui.checkBox;
const Dialog = imports.ui.dialog; const Dialog = imports.ui.dialog;
const ModalDialog = imports.ui.modalDialog; const ModalDialog = imports.ui.modalDialog;
const RequestIface = '<node> \ const RequestIface = `
<interface name="org.freedesktop.impl.portal.Request"> \ <node>
<method name="Close"/> \ <interface name="org.freedesktop.impl.portal.Request">
</interface> \ <method name="Close"/>
</node>'; </interface>
</node>`;
const AccessIface = '<node> \ const AccessIface = `
<interface name="org.freedesktop.impl.portal.Access"> \ <node>
<method name="AccessDialog"> \ <interface name="org.freedesktop.impl.portal.Access">
<arg type="o" name="handle" direction="in"/> \ <method name="AccessDialog">
<arg type="s" name="app_id" direction="in"/> \ <arg type="o" name="handle" direction="in"/>
<arg type="s" name="parent_window" direction="in"/> \ <arg type="s" name="app_id" direction="in"/>
<arg type="s" name="title" direction="in"/> \ <arg type="s" name="parent_window" direction="in"/>
<arg type="s" name="subtitle" direction="in"/> \ <arg type="s" name="title" direction="in"/>
<arg type="s" name="body" direction="in"/> \ <arg type="s" name="subtitle" direction="in"/>
<arg type="a{sv}" name="options" direction="in"/> \ <arg type="s" name="body" direction="in"/>
<arg type="u" name="response" direction="out"/> \ <arg type="a{sv}" name="options" direction="in"/>
<arg type="a{sv}" name="results" direction="out"/> \ <arg type="u" name="response" direction="out"/>
</method> \ <arg type="a{sv}" name="results" direction="out"/>
</interface> \ </method>
</node>'; </interface>
</node>`;
var DialogResponse = { var DialogResponse = {
OK: 0, OK: 0,

View File

@@ -66,11 +66,12 @@ var PAGE_SWITCH_TIME = 0.3;
const SWITCHEROO_BUS_NAME = 'net.hadess.SwitcherooControl'; const SWITCHEROO_BUS_NAME = 'net.hadess.SwitcherooControl';
const SWITCHEROO_OBJECT_PATH = '/net/hadess/SwitcherooControl'; const SWITCHEROO_OBJECT_PATH = '/net/hadess/SwitcherooControl';
const SwitcherooProxyInterface = '<node> \ const SwitcherooProxyInterface = `
<interface name="net.hadess.SwitcherooControl"> \ <node>
<property name="HasDualGpu" type="b" access="read"/> \ <interface name="net.hadess.SwitcherooControl">
</interface> \ <property name="HasDualGpu" type="b" access="read"/>
</node>'; </interface>
</node>`;
const SwitcherooProxy = Gio.DBusProxy.makeProxyWrapper(SwitcherooProxyInterface); const SwitcherooProxy = Gio.DBusProxy.makeProxyWrapper(SwitcherooProxyInterface);
let discreteGpuAvailable = false; let discreteGpuAvailable = false;

View File

@@ -15,18 +15,19 @@ var AudioDevice = {
MICROPHONE: 1 << 2 MICROPHONE: 1 << 2
}; };
const AudioDeviceSelectionIface = '<node> \ const AudioDeviceSelectionIface = `
<interface name="org.gnome.Shell.AudioDeviceSelection"> \ <node>
<method name="Open"> \ <interface name="org.gnome.Shell.AudioDeviceSelection">
<arg name="devices" direction="in" type="as" /> \ <method name="Open">
</method> \ <arg name="devices" direction="in" type="as" />
<method name="Close"> \ </method>
</method> \ <method name="Close">
<signal name="DeviceSelected"> \ </method>
<arg name="device" type="s" /> \ <signal name="DeviceSelected">
</signal> \ <arg name="device" type="s" />
</interface> \ </signal>
</node>'; </interface>
</node>`;
var AudioDeviceSelectionDialog = new Lang.Class({ var AudioDeviceSelectionDialog = new Lang.Class({
Name: 'AudioDeviceSelectionDialog', Name: 'AudioDeviceSelectionDialog',

210
js/ui/barLevel.js Normal file
View File

@@ -0,0 +1,210 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
const Atk = imports.gi.Atk;
const Cairo = imports.cairo;
const Clutter = imports.gi.Clutter;
const Lang = imports.lang;
const St = imports.gi.St;
const Signals = imports.signals;
var BarLevel = new Lang.Class({
Name: "BarLevel",
_init(value, params) {
if (isNaN(value))
// Avoid spreading NaNs around
throw TypeError('The bar level value must be a number');
this._maxValue = 1;
this._value = Math.max(Math.min(value, this._maxValue), 0);
this._overdriveStart = 1;
this._barLevelWidth = 0;
if (params == undefined)
params = {}
this.actor = new St.DrawingArea({ styleClass: params['styleClass'] || 'barlevel',
can_focus: params['canFocus'] || false,
reactive: params['reactive'] || false,
accessible_role: params['accessibleRole'] || Atk.Role.LEVEL_BAR });
this.actor.connect('repaint', this._barLevelRepaint.bind(this));
this.actor.connect('allocation-changed', (actor, box) => {
this._barLevelWidth = box.get_width();
});
this._customAccessible = St.GenericAccessible.new_for_actor(this.actor);
this.actor.set_accessible(this._customAccessible);
this._customAccessible.connect('get-current-value', this._getCurrentValue.bind(this));
this._customAccessible.connect('get-minimum-value', this._getMinimumValue.bind(this));
this._customAccessible.connect('get-maximum-value', this._getMaximumValue.bind(this));
this._customAccessible.connect('set-current-value', this._setCurrentValue.bind(this));
this.connect('value-changed', this._valueChanged.bind(this));
},
setValue(value) {
if (isNaN(value))
throw TypeError('The bar level value must be a number');
this._value = Math.max(Math.min(value, this._maxValue), 0);
this.actor.queue_repaint();
},
setMaximumValue(value) {
if (isNaN(value))
throw TypeError('The bar level max value must be a number');
this._maxValue = Math.max(value, 1);
this._overdriveStart = Math.min(this._overdriveStart, this._maxValue);
this.actor.queue_repaint();
},
setOverdriveStart(value) {
if (isNaN(value))
throw TypeError('The overdrive limit value must be a number');
if (value > this._maxValue)
throw new Error(`Tried to set overdrive value to ${value}, ` +
`which is a number greater than the maximum allowed value ${this._maxValue}`);
this._overdriveStart = value;
this._value = Math.max(Math.min(value, this._maxValue), 0);
this.actor.queue_repaint();
},
_barLevelRepaint(area) {
let cr = area.get_context();
let themeNode = area.get_theme_node();
let [width, height] = area.get_surface_size();
let barLevelHeight = themeNode.get_length('-barlevel-height');
let barLevelBorderRadius = Math.min(width, barLevelHeight) / 2;
let fgColor = themeNode.get_foreground_color();
let barLevelColor = themeNode.get_color('-barlevel-background-color');
let barLevelActiveColor = themeNode.get_color('-barlevel-active-background-color');
let barLevelOverdriveColor = themeNode.get_color('-barlevel-overdrive-color');
let barLevelBorderWidth = Math.min(themeNode.get_length('-barlevel-border-width'), 1);
let [hasBorderColor, barLevelBorderColor] =
themeNode.lookup_color('-barlevel-border-color', false);
if (!hasBorderColor)
barLevelBorderColor = barLevelColor;
let [hasActiveBorderColor, barLevelActiveBorderColor] =
themeNode.lookup_color('-barlevel-active-border-color', false);
if (!hasActiveBorderColor)
barLevelActiveBorderColor = barLevelActiveColor;
let [hasOverdriveBorderColor, barLevelOverdriveBorderColor] =
themeNode.lookup_color('-barlevel-overdrive-border-color', false);
if (!hasOverdriveBorderColor)
barLevelOverdriveBorderColor = barLevelOverdriveColor;
const TAU = Math.PI * 2;
let endX = 0;
if (this._maxValue > 0)
endX = barLevelBorderRadius + (width - 2 * barLevelBorderRadius) * this._value / this._maxValue;
let overdriveSeparatorX = barLevelBorderRadius + (width - 2 * barLevelBorderRadius) * this._overdriveStart / this._maxValue;
let overdriveActive = this._overdriveStart !== this._maxValue;
let overdriveSeparatorWidth = 0;
if (overdriveActive)
overdriveSeparatorWidth = themeNode.get_length('-barlevel-overdrive-separator-width');
/* background bar */
cr.arc(width - barLevelBorderRadius - barLevelBorderWidth, height / 2, barLevelBorderRadius, TAU * 3 / 4, TAU * 1 / 4);
cr.lineTo(endX, (height + barLevelHeight) / 2);
cr.lineTo(endX, (height - barLevelHeight) / 2);
cr.lineTo(width - barLevelBorderRadius - barLevelBorderWidth, (height - barLevelHeight) / 2);
Clutter.cairo_set_source_color(cr, barLevelColor);
cr.fillPreserve();
Clutter.cairo_set_source_color(cr, barLevelBorderColor);
cr.setLineWidth(barLevelBorderWidth);
cr.stroke();
/* normal progress bar */
let x = Math.min(endX, overdriveSeparatorX - overdriveSeparatorWidth / 2);
cr.arc(barLevelBorderRadius + barLevelBorderWidth, height / 2, barLevelBorderRadius, TAU * 1 / 4, TAU * 3 / 4);
cr.lineTo(x, (height - barLevelHeight) / 2);
cr.lineTo(x, (height + barLevelHeight) / 2);
cr.lineTo(barLevelBorderRadius + barLevelBorderWidth, (height + barLevelHeight) / 2);
Clutter.cairo_set_source_color(cr, barLevelActiveColor);
cr.fillPreserve();
Clutter.cairo_set_source_color(cr, barLevelActiveBorderColor);
cr.setLineWidth(barLevelBorderWidth);
cr.stroke();
/* overdrive progress barLevel */
x = Math.min(endX, overdriveSeparatorX) + overdriveSeparatorWidth / 2;
if (this._value > this._overdriveStart) {
cr.moveTo(x, (height - barLevelHeight) / 2);
cr.lineTo(endX, (height - barLevelHeight) / 2);
cr.lineTo(endX, (height + barLevelHeight) / 2);
cr.lineTo(x, (height + barLevelHeight) / 2);
cr.lineTo(x, (height - barLevelHeight) / 2);
Clutter.cairo_set_source_color(cr, barLevelOverdriveColor);
cr.fillPreserve();
Clutter.cairo_set_source_color(cr, barLevelOverdriveBorderColor);
cr.setLineWidth(barLevelBorderWidth);
cr.stroke();
}
/* end progress bar arc */
if (this._value <= this._overdriveStart)
Clutter.cairo_set_source_color(cr, barLevelActiveColor);
else
Clutter.cairo_set_source_color(cr, barLevelOverdriveColor);
cr.arc(endX, height / 2, barLevelBorderRadius, TAU * 3 / 4, TAU * 1 / 4);
cr.lineTo(Math.floor(endX), (height + barLevelHeight) / 2);
cr.lineTo(Math.floor(endX), (height - barLevelHeight) / 2);
cr.lineTo(endX, (height - barLevelHeight) / 2);
cr.fillPreserve();
cr.setLineWidth(barLevelBorderWidth);
cr.stroke();
/* draw overdrive separator */
if (overdriveActive) {
cr.moveTo(overdriveSeparatorX - overdriveSeparatorWidth / 2, (height - barLevelHeight) / 2);
cr.lineTo(overdriveSeparatorX + overdriveSeparatorWidth / 2, (height - barLevelHeight) / 2);
cr.lineTo(overdriveSeparatorX + overdriveSeparatorWidth / 2, (height + barLevelHeight) / 2);
cr.lineTo(overdriveSeparatorX - overdriveSeparatorWidth / 2, (height + barLevelHeight) / 2);
cr.lineTo(overdriveSeparatorX - overdriveSeparatorWidth / 2, (height - barLevelHeight) / 2);
if (this._value <= this._overdriveStart)
Clutter.cairo_set_source_color(cr, fgColor);
else
Clutter.cairo_set_source_color(cr, barLevelColor);
cr.fill();
}
cr.$dispose();
},
_getCurrentValue(actor) {
return this._value;
},
_getOverdriveStart(actor) {
return this._overdriveStart;
},
_getMinimumValue(actor) {
return 0;
},
_getMaximumValue(actor) {
return this._maxValue;
},
_setCurrentValue(actor, value) {
this._value = value;
},
_valueChanged(barLevel, value, property) {
this._customAccessible.notify("accessible-value");
},
get value() {
return this._value;
}
});
Signals.addSignalMethods(BarLevel.prototype);

View File

@@ -44,6 +44,7 @@ var BoxPointer = new Lang.Class({
y_fill: true }); y_fill: true });
this._container = new Shell.GenericContainer(); this._container = new Shell.GenericContainer();
this.actor.set_child(this._container); this.actor.set_child(this._container);
this.actor.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
this._container.connect('get-preferred-width', this._getPreferredWidth.bind(this)); this._container.connect('get-preferred-width', this._getPreferredWidth.bind(this));
this._container.connect('get-preferred-height', this._getPreferredHeight.bind(this)); this._container.connect('get-preferred-height', this._getPreferredHeight.bind(this));
this._container.connect('allocate', this._allocate.bind(this)); this._container.connect('allocate', this._allocate.bind(this));

View File

@@ -134,18 +134,19 @@ var EmptyEventSource = new Lang.Class({
}); });
Signals.addSignalMethods(EmptyEventSource.prototype); Signals.addSignalMethods(EmptyEventSource.prototype);
const CalendarServerIface = '<node> \ const CalendarServerIface = `
<interface name="org.gnome.Shell.CalendarServer"> \ <node>
<method name="GetEvents"> \ <interface name="org.gnome.Shell.CalendarServer">
<arg type="x" direction="in" /> \ <method name="GetEvents">
<arg type="x" direction="in" /> \ <arg type="x" direction="in" />
<arg type="b" direction="in" /> \ <arg type="x" direction="in" />
<arg type="a(sssbxxa{sv})" direction="out" /> \ <arg type="b" direction="in" />
</method> \ <arg type="a(sssbxxa{sv})" direction="out" />
<property name="HasCalendars" type="b" access="read" /> \ </method>
<signal name="Changed" /> \ <property name="HasCalendars" type="b" access="read" />
</interface> \ <signal name="Changed" />
</node>'; </interface>
</node>`;
const CalendarServerInfo = Gio.DBusInterfaceInfo.new_for_xml(CalendarServerIface); const CalendarServerInfo = Gio.DBusInterfaceInfo.new_for_xml(CalendarServerIface);

View File

@@ -74,14 +74,15 @@ function startAppForMount(app, mount) {
/******************************************/ /******************************************/
const HotplugSnifferIface = '<node> \ const HotplugSnifferIface = `
<interface name="org.gnome.Shell.HotplugSniffer"> \ <node>
<method name="SniffURI"> \ <interface name="org.gnome.Shell.HotplugSniffer">
<arg type="s" direction="in" /> \ <method name="SniffURI">
<arg type="as" direction="out" /> \ <arg type="s" direction="in" />
</method> \ <arg type="as" direction="out" />
</interface> \ </method>
</node>'; </interface>
</node>`;
const HotplugSnifferProxy = Gio.DBusProxy.makeProxyWrapper(HotplugSnifferIface); const HotplugSnifferProxy = Gio.DBusProxy.makeProxyWrapper(HotplugSnifferIface);
function HotplugSniffer() { function HotplugSniffer() {

View File

@@ -506,8 +506,12 @@ var VPNRequestHandler = new Lang.Class({
try { try {
data = this._dataStdout.peek_buffer(); data = this._dataStdout.peek_buffer();
keyfile.load_from_data(data.toString(), data.length, if (data instanceof Uint8Array)
GLib.KeyFileFlags.NONE); data = imports.byteArray.toGBytes(data);
else
data = data.toGBytes();
keyfile.load_from_bytes(data, GLib.KeyFileFlags.NONE);
if (keyfile.get_integer(VPN_UI_GROUP, 'Version') != 2) if (keyfile.get_integer(VPN_UI_GROUP, 'Version') != 2)
throw new Error('Invalid plugin keyfile version, is %d'); throw new Error('Invalid plugin keyfile version, is %d');

View File

@@ -402,6 +402,7 @@ var Dash = new Lang.Class({
clip_to_allocation: true }); clip_to_allocation: true });
this._box._delegate = this; this._box._delegate = this;
this._container.add_actor(this._box); this._container.add_actor(this._box);
this._container.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
this._showAppsIcon = new ShowAppsIcon(); this._showAppsIcon = new ShowAppsIcon();
this._showAppsIcon.childScale = 1; this._showAppsIcon.childScale = 1;

View File

@@ -40,6 +40,7 @@ var Dialog = new Lang.Class({
// mode accordingly so wrapped labels are handled correctly during // mode accordingly so wrapped labels are handled correctly during
// size requests. // size requests.
this._dialog.request_mode = Clutter.RequestMode.HEIGHT_FOR_WIDTH; this._dialog.request_mode = Clutter.RequestMode.HEIGHT_FOR_WIDTH;
this._dialog.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
this.contentLayout = new St.BoxLayout({ vertical: true, this.contentLayout = new St.BoxLayout({ vertical: true,
style_class: "modal-dialog-content-box" }); style_class: "modal-dialog-content-box" });

View File

@@ -506,6 +506,7 @@ var _Draggable = new Lang.Class({
return true; return true;
} else } else
this._dragActor.destroy(); this._dragActor.destroy();
this._dragActor = undefined;
} }
this._dragInProgress = false; this._dragInProgress = false;
@@ -565,8 +566,10 @@ var _Draggable = new Lang.Class({
if (!this._buttonDown) if (!this._buttonDown)
this._dragComplete(); this._dragComplete();
this.emit('drag-end', eventTime, false); this.emit('drag-end', eventTime, false);
if (!this._dragOrigParent) if (!this._dragOrigParent) {
this._dragActor.destroy(); this._dragActor.destroy();
this._dragActor = undefined;
}
return; return;
} }
@@ -634,6 +637,7 @@ var _Draggable = new Lang.Class({
dragActor.set_position(this._dragOrigX, this._dragOrigY); dragActor.set_position(this._dragOrigX, this._dragOrigY);
} else { } else {
dragActor.destroy(); dragActor.destroy();
this._dragActor = undefined;
} }
this.emit('drag-end', eventTime, false); this.emit('drag-end', eventTime, false);
@@ -641,7 +645,7 @@ var _Draggable = new Lang.Class({
}, },
_dragComplete() { _dragComplete() {
if (!this._actorDestroyed) if (this._dragActor)
Shell.util_set_hidden_from_pick(this._dragActor, false); Shell.util_set_hidden_from_pick(this._dragActor, false);
this._ungrabEvents(); this._ungrabEvents();

View File

@@ -43,22 +43,23 @@ const _DIALOG_ICON_SIZE = 48;
var GSM_SESSION_MANAGER_LOGOUT_FORCE = 2; var GSM_SESSION_MANAGER_LOGOUT_FORCE = 2;
const EndSessionDialogIface = '<node> \ const EndSessionDialogIface = `
<interface name="org.gnome.SessionManager.EndSessionDialog"> \ <node>
<method name="Open"> \ <interface name="org.gnome.SessionManager.EndSessionDialog">
<arg type="u" direction="in" /> \ <method name="Open">
<arg type="u" direction="in" /> \ <arg type="u" direction="in" />
<arg type="u" direction="in" /> \ <arg type="u" direction="in" />
<arg type="ao" direction="in" /> \ <arg type="u" direction="in" />
</method> \ <arg type="ao" direction="in" />
<method name="Close" /> \ </method>
<signal name="ConfirmedLogout" /> \ <method name="Close" />
<signal name="ConfirmedReboot" /> \ <signal name="ConfirmedLogout" />
<signal name="ConfirmedShutdown" /> \ <signal name="ConfirmedReboot" />
<signal name="Canceled" /> \ <signal name="ConfirmedShutdown" />
<signal name="Closed" /> \ <signal name="Canceled" />
</interface> \ <signal name="Closed" />
</node>'; </interface>
</node>`;
const logoutDialogContent = { const logoutDialogContent = {
subjectWithUser: C_("title", "Log Out %s"), subjectWithUser: C_("title", "Log Out %s"),
@@ -168,39 +169,42 @@ const DialogContent = {
var MAX_USERS_IN_SESSION_DIALOG = 5; var MAX_USERS_IN_SESSION_DIALOG = 5;
const LogindSessionIface = '<node> \ const LogindSessionIface = `
<interface name="org.freedesktop.login1.Session"> \ <node>
<property name="Id" type="s" access="read"/> \ <interface name="org.freedesktop.login1.Session">
<property name="Remote" type="b" access="read"/> \ <property name="Id" type="s" access="read"/>
<property name="Class" type="s" access="read"/> \ <property name="Remote" type="b" access="read"/>
<property name="Type" type="s" access="read"/> \ <property name="Class" type="s" access="read"/>
<property name="State" type="s" access="read"/> \ <property name="Type" type="s" access="read"/>
</interface> \ <property name="State" type="s" access="read"/>
</node>'; </interface>
</node>`;
const LogindSession = Gio.DBusProxy.makeProxyWrapper(LogindSessionIface); const LogindSession = Gio.DBusProxy.makeProxyWrapper(LogindSessionIface);
const PkOfflineIface = '<node> \ const PkOfflineIface = `
<interface name="org.freedesktop.PackageKit.Offline"> \ <node>
<property name="UpdatePrepared" type="b" access="read"/> \ <interface name="org.freedesktop.PackageKit.Offline">
<property name="UpdateTriggered" type="b" access="read"/> \ <property name="UpdatePrepared" type="b" access="read"/>
<property name="UpgradePrepared" type="b" access="read"/> \ <property name="UpdateTriggered" type="b" access="read"/>
<property name="UpgradeTriggered" type="b" access="read"/> \ <property name="UpgradePrepared" type="b" access="read"/>
<property name="PreparedUpgrade" type="a{sv}" access="read"/> \ <property name="UpgradeTriggered" type="b" access="read"/>
<method name="Trigger"> \ <property name="PreparedUpgrade" type="a{sv}" access="read"/>
<arg type="s" name="action" direction="in"/> \ <method name="Trigger">
</method> \ <arg type="s" name="action" direction="in"/>
<method name="Cancel"/> \ </method>
</interface> \ <method name="Cancel"/>
</node>'; </interface>
</node>`;
const PkOfflineProxy = Gio.DBusProxy.makeProxyWrapper(PkOfflineIface); const PkOfflineProxy = Gio.DBusProxy.makeProxyWrapper(PkOfflineIface);
const UPowerIface = '<node> \ const UPowerIface = `
<interface name="org.freedesktop.UPower"> \ <node>
<property name="OnBattery" type="b" access="read"/> \ <interface name="org.freedesktop.UPower">
</interface> \ <property name="OnBattery" type="b" access="read"/>
</node>'; </interface>
</node>`;
const UPowerProxy = Gio.DBusProxy.makeProxyWrapper(UPowerIface); const UPowerProxy = Gio.DBusProxy.makeProxyWrapper(UPowerIface);

View File

@@ -472,6 +472,8 @@ var KeyboardModel = new Lang.Class({
_loadModel(groupName) { _loadModel(groupName) {
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/osk-layouts/%s.json'.format(groupName)); let file = Gio.File.new_for_uri('resource:///org/gnome/shell/osk-layouts/%s.json'.format(groupName));
let [success, contents] = file.load_contents(null); let [success, contents] = file.load_contents(null);
if (contents instanceof Uint8Array)
contents = imports.byteArray.toString(contents);
return JSON.parse(contents); return JSON.parse(contents);
}, },
@@ -490,13 +492,18 @@ var FocusTracker = new Lang.Class({
_init() { _init() {
this._currentWindow = null; this._currentWindow = null;
this._currentWindowPositionId = 0;
global.display.connect('notify::focus-window', () => { global.display.connect('notify::focus-window', () => {
this._setCurrentWindow(global.display.focus_window); this._setCurrentWindow(global.display.focus_window);
this.emit('window-changed', this._currentWindow); this.emit('window-changed', this._currentWindow);
}); });
global.display.connect('grab-op-begin', (display, window, op) => {
if (window == this._currentWindow &&
(op == Meta.GrabOp.MOVING || op == Meta.GrabOp.KEYBOARD_MOVING))
this.emit('reset');
});
/* Valid for wayland clients */ /* Valid for wayland clients */
Main.inputMethod.connect('cursor-location-changed', (o, rect) => { Main.inputMethod.connect('cursor-location-changed', (o, rect) => {
let newRect = { x: rect.get_x(), y: rect.get_y(), width: rect.get_width(), height: rect.get_height() }; let newRect = { x: rect.get_x(), y: rect.get_y(), width: rect.get_width(), height: rect.get_height() };
@@ -518,18 +525,7 @@ var FocusTracker = new Lang.Class({
}, },
_setCurrentWindow(window) { _setCurrentWindow(window) {
if (this._currentWindow)
this._currentWindow.disconnect(this._currentWindowPositionId);
this._currentWindow = window; this._currentWindow = window;
if (window) {
this._currentWindowPositionId = this._currentWindow.connect('position-changed', () => {
if (global.display.get_grab_op() == Meta.GrabOp.NONE)
this.emit('position-changed');
else
this.emit('reset');
});
}
}, },
_setCurrentRect(rect) { _setCurrentRect(rect) {

View File

@@ -204,6 +204,7 @@ var LayoutManager = new Lang.Class({
// Set up stage hierarchy to group all UI actors under one container. // Set up stage hierarchy to group all UI actors under one container.
this.uiGroup = new Shell.GenericContainer({ name: 'uiGroup' }); this.uiGroup = new Shell.GenericContainer({ name: 'uiGroup' });
this.uiGroup.set_flags(Clutter.ActorFlags.NO_LAYOUT);
this.uiGroup.connect('allocate', (actor, box, flags) => { this.uiGroup.connect('allocate', (actor, box, flags) => {
let children = actor.get_children(); let children = actor.get_children();
for (let i = 0; i < children.length; i++) for (let i = 0; i < children.length; i++)

View File

@@ -9,89 +9,91 @@ const ZOOM_SERVICE_PATH = '/org/gnome/Magnifier/ZoomRegion';
// Subset of gnome-mag's Magnifier dbus interface -- to be expanded. See: // Subset of gnome-mag's Magnifier dbus interface -- to be expanded. See:
// http://git.gnome.org/browse/gnome-mag/tree/xml/...Magnifier.xml // http://git.gnome.org/browse/gnome-mag/tree/xml/...Magnifier.xml
const MagnifierIface = '<node> \ const MagnifierIface = `
<interface name="org.gnome.Magnifier"> \ <node>
<method name="setActive"> \ <interface name="org.gnome.Magnifier">
<arg type="b" direction="in" /> \ <method name="setActive">
</method> \ <arg type="b" direction="in" />
<method name="isActive"> \ </method>
<arg type="b" direction="out" /> \ <method name="isActive">
</method> \ <arg type="b" direction="out" />
<method name="showCursor" /> \ </method>
<method name="hideCursor" /> \ <method name="showCursor" />
<method name="createZoomRegion"> \ <method name="hideCursor" />
<arg type="d" direction="in" /> \ <method name="createZoomRegion">
<arg type="d" direction="in" /> \ <arg type="d" direction="in" />
<arg type="ai" direction="in" /> \ <arg type="d" direction="in" />
<arg type="ai" direction="in" /> \ <arg type="ai" direction="in" />
<arg type="o" direction="out" /> \ <arg type="ai" direction="in" />
</method> \ <arg type="o" direction="out" />
<method name="addZoomRegion"> \ </method>
<arg type="o" direction="in" /> \ <method name="addZoomRegion">
<arg type="b" direction="out" /> \ <arg type="o" direction="in" />
</method> \ <arg type="b" direction="out" />
<method name="getZoomRegions"> \ </method>
<arg type="ao" direction="out" /> \ <method name="getZoomRegions">
</method> \ <arg type="ao" direction="out" />
<method name="clearAllZoomRegions" /> \ </method>
<method name="fullScreenCapable"> \ <method name="clearAllZoomRegions" />
<arg type="b" direction="out" /> \ <method name="fullScreenCapable">
</method> \ <arg type="b" direction="out" />
<method name="setCrosswireSize"> \ </method>
<arg type="i" direction="in" /> \ <method name="setCrosswireSize">
</method> \ <arg type="i" direction="in" />
<method name="getCrosswireSize"> \ </method>
<arg type="i" direction="out" /> \ <method name="getCrosswireSize">
</method> \ <arg type="i" direction="out" />
<method name="setCrosswireLength"> \ </method>
<arg type="i" direction="in" /> \ <method name="setCrosswireLength">
</method> \ <arg type="i" direction="in" />
<method name="getCrosswireLength"> \ </method>
<arg type="i" direction="out" /> \ <method name="getCrosswireLength">
</method> \ <arg type="i" direction="out" />
<method name="setCrosswireClip"> \ </method>
<arg type="b" direction="in" /> \ <method name="setCrosswireClip">
</method> \ <arg type="b" direction="in" />
<method name="getCrosswireClip"> \ </method>
<arg type="b" direction="out" /> \ <method name="getCrosswireClip">
</method> \ <arg type="b" direction="out" />
<method name="setCrosswireColor"> \ </method>
<arg type="u" direction="in" /> \ <method name="setCrosswireColor">
</method> \ <arg type="u" direction="in" />
<method name="getCrosswireColor"> \ </method>
<arg type="u" direction="out" /> \ <method name="getCrosswireColor">
</method> \ <arg type="u" direction="out" />
</interface> \ </method>
</node>'; </interface>
</node>`;
// Subset of gnome-mag's ZoomRegion dbus interface -- to be expanded. See: // Subset of gnome-mag's ZoomRegion dbus interface -- to be expanded. See:
// http://git.gnome.org/browse/gnome-mag/tree/xml/...ZoomRegion.xml // http://git.gnome.org/browse/gnome-mag/tree/xml/...ZoomRegion.xml
const ZoomRegionIface = '<node> \ const ZoomRegionIface = `
<interface name="org.gnome.Magnifier.ZoomRegion"> \ <node>
<method name="setMagFactor"> \ <interface name="org.gnome.Magnifier.ZoomRegion">
<arg type="d" direction="in" /> \ <method name="setMagFactor">
<arg type="d" direction="in" /> \ <arg type="d" direction="in" />
</method> \ <arg type="d" direction="in" />
<method name="getMagFactor"> \ </method>
<arg type="d" direction="out" /> \ <method name="getMagFactor">
<arg type="d" direction="out" /> \ <arg type="d" direction="out" />
</method> \ <arg type="d" direction="out" />
<method name="setRoi"> \ </method>
<arg type="ai" direction="in" /> \ <method name="setRoi">
</method> \ <arg type="ai" direction="in" />
<method name="getRoi"> \ </method>
<arg type="ai" direction="out" /> \ <method name="getRoi">
</method> \ <arg type="ai" direction="out" />
<method name="shiftContentsTo"> \ </method>
<arg type="i" direction="in" /> \ <method name="shiftContentsTo">
<arg type="i" direction="in" /> \ <arg type="i" direction="in" />
<arg type="b" direction="out" /> \ <arg type="i" direction="in" />
</method> \ <arg type="b" direction="out" />
<method name="moveResize"> \ </method>
<arg type="ai" direction="in" /> \ <method name="moveResize">
</method> \ <arg type="ai" direction="in" />
</interface> \ </method>
</node>'; </interface>
</node>`;
// For making unique ZoomRegion DBus proxy object paths of the form: // For making unique ZoomRegion DBus proxy object paths of the form:
// '/org/gnome/Magnifier/ZoomRegion/zoomer0', // '/org/gnome/Magnifier/ZoomRegion/zoomer0',

View File

@@ -8,41 +8,44 @@ const Calendar = imports.ui.calendar;
const Main = imports.ui.main; const Main = imports.ui.main;
const MessageList = imports.ui.messageList; const MessageList = imports.ui.messageList;
const DBusIface = '<node> \ const DBusIface = `
<interface name="org.freedesktop.DBus"> \ <node>
<method name="ListNames"> \ <interface name="org.freedesktop.DBus">
<arg type="as" direction="out" name="names" /> \ <method name="ListNames">
</method> \ <arg type="as" direction="out" name="names" />
<signal name="NameOwnerChanged"> \ </method>
<arg type="s" direction="out" name="name" /> \ <signal name="NameOwnerChanged">
<arg type="s" direction="out" name="oldOwner" /> \ <arg type="s" direction="out" name="name" />
<arg type="s" direction="out" name="newOwner" /> \ <arg type="s" direction="out" name="oldOwner" />
</signal> \ <arg type="s" direction="out" name="newOwner" />
</interface> \ </signal>
</node>'; </interface>
</node>`;
const DBusProxy = Gio.DBusProxy.makeProxyWrapper(DBusIface); const DBusProxy = Gio.DBusProxy.makeProxyWrapper(DBusIface);
const MprisIface = '<node> \ const MprisIface = `
<interface name="org.mpris.MediaPlayer2"> \ <node>
<method name="Raise" /> \ <interface name="org.mpris.MediaPlayer2">
<property name="CanRaise" type="b" access="read" /> \ <method name="Raise" />
<property name="DesktopEntry" type="s" access="read" /> \ <property name="CanRaise" type="b" access="read" />
</interface> \ <property name="DesktopEntry" type="s" access="read" />
</node>'; </interface>
</node>`;
const MprisProxy = Gio.DBusProxy.makeProxyWrapper(MprisIface); const MprisProxy = Gio.DBusProxy.makeProxyWrapper(MprisIface);
const MprisPlayerIface = '<node> \ const MprisPlayerIface = `
<interface name="org.mpris.MediaPlayer2.Player"> \ <node>
<method name="PlayPause" /> \ <interface name="org.mpris.MediaPlayer2.Player">
<method name="Next" /> \ <method name="PlayPause" />
<method name="Previous" /> \ <method name="Next" />
<property name="CanGoNext" type="b" access="read" /> \ <method name="Previous" />
<property name="CanGoPrevious" type="b" access="read" /> \ <property name="CanGoNext" type="b" access="read" />
<property name="CanPlay" type="b" access="read" /> \ <property name="CanGoPrevious" type="b" access="read" />
<property name="Metadata" type="a{sv}" access="read" /> \ <property name="CanPlay" type="b" access="read" />
<property name="PlaybackStatus" type="s" access="read" /> \ <property name="Metadata" type="a{sv}" access="read" />
</interface> \ <property name="PlaybackStatus" type="s" access="read" />
</node>'; </interface>
</node>`;
const MprisPlayerProxy = Gio.DBusProxy.makeProxyWrapper(MprisPlayerIface); const MprisPlayerProxy = Gio.DBusProxy.makeProxyWrapper(MprisPlayerIface);
const MPRIS_PLAYER_PREFIX = 'org.mpris.MediaPlayer2.'; const MPRIS_PLAYER_PREFIX = 'org.mpris.MediaPlayer2.';

View File

@@ -17,55 +17,57 @@ const Params = imports.misc.params;
const Util = imports.misc.util; const Util = imports.misc.util;
// Should really be defined in Gio.js // Should really be defined in Gio.js
const BusIface = '<node> \ const BusIface = `
<interface name="org.freedesktop.DBus"> \ <node>
<method name="GetConnectionUnixProcessID"> \ <interface name="org.freedesktop.DBus">
<arg type="s" direction="in" /> \ <method name="GetConnectionUnixProcessID">
<arg type="u" direction="out" /> \ <arg type="s" direction="in" />
</method> \ <arg type="u" direction="out" />
</interface> \ </method>
</node>'; </interface>
</node>`;
var BusProxy = Gio.DBusProxy.makeProxyWrapper(BusIface); var BusProxy = Gio.DBusProxy.makeProxyWrapper(BusIface);
function Bus() { function Bus() {
return new BusProxy(Gio.DBus.session, 'org.freedesktop.DBus', '/org/freedesktop/DBus'); return new BusProxy(Gio.DBus.session, 'org.freedesktop.DBus', '/org/freedesktop/DBus');
} }
const FdoNotificationsIface = '<node> \ const FdoNotificationsIface = `
<interface name="org.freedesktop.Notifications"> \ <node>
<method name="Notify"> \ <interface name="org.freedesktop.Notifications">
<arg type="s" direction="in"/> \ <method name="Notify">
<arg type="u" direction="in"/> \ <arg type="s" direction="in"/>
<arg type="s" direction="in"/> \ <arg type="u" direction="in"/>
<arg type="s" direction="in"/> \ <arg type="s" direction="in"/>
<arg type="s" direction="in"/> \ <arg type="s" direction="in"/>
<arg type="as" direction="in"/> \ <arg type="s" direction="in"/>
<arg type="a{sv}" direction="in"/> \ <arg type="as" direction="in"/>
<arg type="i" direction="in"/> \ <arg type="a{sv}" direction="in"/>
<arg type="u" direction="out"/> \ <arg type="i" direction="in"/>
</method> \ <arg type="u" direction="out"/>
<method name="CloseNotification"> \ </method>
<arg type="u" direction="in"/> \ <method name="CloseNotification">
</method> \ <arg type="u" direction="in"/>
<method name="GetCapabilities"> \ </method>
<arg type="as" direction="out"/> \ <method name="GetCapabilities">
</method> \ <arg type="as" direction="out"/>
<method name="GetServerInformation"> \ </method>
<arg type="s" direction="out"/> \ <method name="GetServerInformation">
<arg type="s" direction="out"/> \ <arg type="s" direction="out"/>
<arg type="s" direction="out"/> \ <arg type="s" direction="out"/>
<arg type="s" direction="out"/> \ <arg type="s" direction="out"/>
</method> \ <arg type="s" direction="out"/>
<signal name="NotificationClosed"> \ </method>
<arg type="u"/> \ <signal name="NotificationClosed">
<arg type="u"/> \ <arg type="u"/>
</signal> \ <arg type="u"/>
<signal name="ActionInvoked"> \ </signal>
<arg type="u"/> \ <signal name="ActionInvoked">
<arg type="s"/> \ <arg type="u"/>
</signal> \ <arg type="s"/>
</interface> \ </signal>
</node>'; </interface>
</node>`;
var NotificationClosedReason = { var NotificationClosedReason = {
EXPIRED: 1, EXPIRED: 1,
@@ -654,18 +656,19 @@ var GtkNotificationDaemonNotification = new Lang.Class({
}, },
}); });
const FdoApplicationIface = '<node> \ const FdoApplicationIface = `
<interface name="org.freedesktop.Application"> \ <node>
<method name="ActivateAction"> \ <interface name="org.freedesktop.Application">
<arg type="s" direction="in" /> \ <method name="ActivateAction">
<arg type="av" direction="in" /> \ <arg type="s" direction="in" />
<arg type="a{sv}" direction="in" /> \ <arg type="av" direction="in" />
</method> \ <arg type="a{sv}" direction="in" />
<method name="Activate"> \ </method>
<arg type="a{sv}" direction="in" /> \ <method name="Activate">
</method> \ <arg type="a{sv}" direction="in" />
</interface> \ </method>
</node>'; </interface>
</node>`;
const FdoApplicationProxy = Gio.DBusProxy.makeProxyWrapper(FdoApplicationIface); const FdoApplicationProxy = Gio.DBusProxy.makeProxyWrapper(FdoApplicationIface);
function objectPathFromAppId(appId) { function objectPathFromAppId(appId) {
@@ -774,19 +777,20 @@ var GtkNotificationDaemonAppSource = new Lang.Class({
}, },
}); });
const GtkNotificationsIface = '<node> \ const GtkNotificationsIface = `
<interface name="org.gtk.Notifications"> \ <node>
<method name="AddNotification"> \ <interface name="org.gtk.Notifications">
<arg type="s" direction="in" /> \ <method name="AddNotification">
<arg type="s" direction="in" /> \ <arg type="s" direction="in" />
<arg type="a{sv}" direction="in" /> \ <arg type="s" direction="in" />
</method> \ <arg type="a{sv}" direction="in" />
<method name="RemoveNotification"> \ </method>
<arg type="s" direction="in" /> \ <method name="RemoveNotification">
<arg type="s" direction="in" /> \ <arg type="s" direction="in" />
</method> \ <arg type="s" direction="in" />
</interface> \ </method>
</node>'; </interface>
</node>`;
var GtkNotificationDaemon = new Lang.Class({ var GtkNotificationDaemon = new Lang.Class({
Name: 'GtkNotificationDaemon', Name: 'GtkNotificationDaemon',

View File

@@ -4,6 +4,7 @@ const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
const St = imports.gi.St; const St = imports.gi.St;
const BarLevel = imports.ui.barLevel;
const Lang = imports.lang; const Lang = imports.lang;
const Layout = imports.ui.layout; const Layout = imports.ui.layout;
const Main = imports.ui.main; const Main = imports.ui.main;
@@ -17,16 +18,18 @@ var LEVEL_ANIMATION_TIME = 0.1;
var LevelBar = new Lang.Class({ var LevelBar = new Lang.Class({
Name: 'LevelBar', Name: 'LevelBar',
Extends: BarLevel.BarLevel,
_init() { _init() {
this._level = 0; this._level = 0;
this._maxLevel = 100;
this.actor = new St.Bin({ style_class: 'level', let params = {
x_align: St.Align.START, styleClass: 'level',
y_fill: true }); }
this._bar = new St.Widget({ style_class: 'level-bar' }); this.parent(this._level, params);
this.actor.set_child(this._bar); this.actor.accessible_name = _("Volume");
this.actor.connect('notify::width', () => { this.level = this.level; }); this.actor.connect('notify::width', () => { this.level = this.level; });
}, },
@@ -36,12 +39,19 @@ var LevelBar = new Lang.Class({
}, },
set level(value) { set level(value) {
this._level = Math.max(0, Math.min(value, 100)); this._level = Math.max(0, Math.min(value, this._maxLevel));
let alloc = this.actor.get_allocation_box(); this.setValue(this._level / 100);
let newWidth = Math.round((alloc.x2 - alloc.x1) * this._level / 100); },
if (newWidth != this._bar.width)
this._bar.width = newWidth; get maxLevel() {
return this._maxLevel;
},
set maxLevel(value) {
this._maxLevel = Math.max(100, value);
this.setMaximumValue(this._maxLevel / 100);
} }
}); });
@@ -140,6 +150,12 @@ var OsdWindow = new Lang.Class({
} }
}, },
setMaxLevel(maxLevel) {
if (maxLevel === undefined)
maxLevel = 100;
this._level.maxLevel = maxLevel;
},
show() { show() {
if (!this._icon.gicon) if (!this._icon.gicon)
return; return;
@@ -189,6 +205,7 @@ var OsdWindow = new Lang.Class({
this.actor.hide(); this.actor.hide();
this.setLabel(null); this.setLabel(null);
this.setLevel(null); this.setLevel(null);
this.setMaxLevel(null);
}, },
_relayout() { _relayout() {
@@ -233,24 +250,25 @@ var OsdWindowManager = new Lang.Class({
this._osdWindows.length = Main.layoutManager.monitors.length; this._osdWindows.length = Main.layoutManager.monitors.length;
}, },
_showOsdWindow(monitorIndex, icon, label, level) { _showOsdWindow(monitorIndex, icon, label, level, maxLevel) {
this._osdWindows[monitorIndex].setIcon(icon); this._osdWindows[monitorIndex].setIcon(icon);
this._osdWindows[monitorIndex].setLabel(label); this._osdWindows[monitorIndex].setLabel(label);
this._osdWindows[monitorIndex].setLevel(level); this._osdWindows[monitorIndex].setLevel(level);
this._osdWindows[monitorIndex].setMaxLevel(maxLevel);
this._osdWindows[monitorIndex].show(); this._osdWindows[monitorIndex].show();
}, },
show(monitorIndex, icon, label, level) { show(monitorIndex, icon, label, level, maxLevel) {
if (monitorIndex != -1) { if (monitorIndex != -1) {
for (let i = 0; i < this._osdWindows.length; i++) { for (let i = 0; i < this._osdWindows.length; i++) {
if (i == monitorIndex) if (i == monitorIndex)
this._showOsdWindow(i, icon, label, level); this._showOsdWindow(i, icon, label, level, maxLevel);
else else
this._osdWindows[i].cancel(); this._osdWindows[i].cancel();
} }
} else { } else {
for (let i = 0; i < this._osdWindows.length; i++) for (let i = 0; i < this._osdWindows.length; i++)
this._showOsdWindow(i, icon, label, level); this._showOsdWindow(i, icon, label, level, maxLevel);
} }
}, },

View File

@@ -395,10 +395,8 @@ var Overview = new Lang.Class({
if (!Main.layoutManager.primaryMonitor) if (!Main.layoutManager.primaryMonitor)
return; return;
let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex); this._coverPane.set_position(0, 0);
this._coverPane.set_size(global.screen_width, global.screen_height);
this._coverPane.set_position(0, workArea.y);
this._coverPane.set_size(workArea.width, workArea.height);
this._updateBackgrounds(); this._updateBackgrounds();
}, },

View File

@@ -253,13 +253,23 @@ var ThumbnailsSlider = new Lang.Class({
this.actor.add_actor(this._thumbnailsBox.actor); this.actor.add_actor(this._thumbnailsBox.actor);
Main.layoutManager.connect('monitors-changed', this._updateSlide.bind(this)); Main.layoutManager.connect('monitors-changed', this._updateSlide.bind(this));
global.workspace_manager.connect('active-workspace-changed',
this._updateSlide.bind(this));
global.workspace_manager.connect('notify::n-workspaces',
this._updateSlide.bind(this));
this.actor.connect('notify::hover', this._updateSlide.bind(this)); this.actor.connect('notify::hover', this._updateSlide.bind(this));
this._thumbnailsBox.actor.bind_property('visible', this.actor, 'visible', GObject.BindingFlags.SYNC_CREATE); this._thumbnailsBox.actor.bind_property('visible', this.actor, 'visible', GObject.BindingFlags.SYNC_CREATE);
}, },
_getAlwaysZoomOut() { _getAlwaysZoomOut() {
// Always show the pager on hover or during a drag // Always show the pager on hover, during a drag, or if workspaces are
let alwaysZoomOut = this.actor.hover || this._inDrag; // actually used, e.g. there are windows on any non-active workspace
let workspaceManager = global.workspace_manager;
let alwaysZoomOut = this.actor.hover ||
this._inDrag ||
!Meta.prefs_get_dynamic_workspaces() ||
workspaceManager.n_workspaces > 2 ||
workspaceManager.get_active_workspace_index() != 0;
if (!alwaysZoomOut) { if (!alwaysZoomOut) {
let monitors = Main.layoutManager.monitors; let monitors = Main.layoutManager.monitors;
@@ -284,6 +294,11 @@ var ThumbnailsSlider = new Lang.Class({
return child.get_theme_node().get_length('visible-width'); return child.get_theme_node().get_length('visible-width');
}, },
_onDragEnd() {
this.actor.sync_hover();
this.parent();
},
_getSlide() { _getSlide() {
if (!this._visible) if (!this._visible)
return 0; return 0;

View File

@@ -313,6 +313,8 @@ var PadDiagram = new Lang.Class({
_init(params) { _init(params) {
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/pad-osd.css'); let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/pad-osd.css');
let [success, css, etag] = file.load_contents(null); let [success, css, etag] = file.load_contents(null);
if (css instanceof Uint8Array)
css = imports.byteArray.toString(css);
this._curEdited = null; this._curEdited = null;
this._prevEdited = null; this._prevEdited = null;
this._css = css; this._css = css;
@@ -960,14 +962,15 @@ var PadOsd = new Lang.Class({
}); });
Signals.addSignalMethods(PadOsd.prototype); Signals.addSignalMethods(PadOsd.prototype);
const PadOsdIface = '<node> \ const PadOsdIface = `
<interface name="org.gnome.Shell.Wacom.PadOsd"> \ <node>
<method name="Show"> \ <interface name="org.gnome.Shell.Wacom.PadOsd">
<arg name="device_node" direction="in" type="o"/> \ <method name="Show">
<arg name="edition_mode" direction="in" type="b"/> \ <arg name="device_node" direction="in" type="o"/>
</method> \ <arg name="edition_mode" direction="in" type="b"/>
</interface> \ </method>
</node>'; </interface>
</node>`;
var PadOsdService = new Lang.Class({ var PadOsdService = new Lang.Class({
Name: 'PadOsdService', Name: 'PadOsdService',

View File

@@ -307,8 +307,11 @@ var AppMenuButton = new Lang.Class({
} }
} }
let shellShowsAppMenu = this._gtkSettings.gtk_shell_shows_app_menu;
Meta.prefs_set_show_fallback_app_menu(!shellShowsAppMenu);
let visible = (this._targetApp != null && let visible = (this._targetApp != null &&
this._gtkSettings.gtk_shell_shows_app_menu && shellShowsAppMenu &&
!Main.overview.visibleTarget); !Main.overview.visibleTarget);
if (visible) if (visible)
this.show(); this.show();
@@ -776,6 +779,7 @@ var Panel = new Lang.Class({
this.actor = new Shell.GenericContainer({ name: 'panel', this.actor = new Shell.GenericContainer({ name: 'panel',
reactive: true }); reactive: true });
this.actor._delegate = this; this.actor._delegate = this;
this.actor.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
this._sessionStyle = null; this._sessionStyle = null;

View File

@@ -12,53 +12,55 @@ const Search = imports.ui.search;
const KEY_FILE_GROUP = 'Shell Search Provider'; const KEY_FILE_GROUP = 'Shell Search Provider';
const SearchProviderIface = '<node> \ const SearchProviderIface = `
<interface name="org.gnome.Shell.SearchProvider"> \ <node>
<method name="GetInitialResultSet"> \ <interface name="org.gnome.Shell.SearchProvider">
<arg type="as" direction="in" /> \ <method name="GetInitialResultSet">
<arg type="as" direction="out" /> \ <arg type="as" direction="in" />
</method> \ <arg type="as" direction="out" />
<method name="GetSubsearchResultSet"> \ </method>
<arg type="as" direction="in" /> \ <method name="GetSubsearchResultSet">
<arg type="as" direction="in" /> \ <arg type="as" direction="in" />
<arg type="as" direction="out" /> \ <arg type="as" direction="in" />
</method> \ <arg type="as" direction="out" />
<method name="GetResultMetas"> \ </method>
<arg type="as" direction="in" /> \ <method name="GetResultMetas">
<arg type="aa{sv}" direction="out" /> \ <arg type="as" direction="in" />
</method> \ <arg type="aa{sv}" direction="out" />
<method name="ActivateResult"> \ </method>
<arg type="s" direction="in" /> \ <method name="ActivateResult">
</method> \ <arg type="s" direction="in" />
</interface> \ </method>
</node>'; </interface>
</node>`;
const SearchProvider2Iface = '<node> \ const SearchProvider2Iface = `
<interface name="org.gnome.Shell.SearchProvider2"> \ <node>
<method name="GetInitialResultSet"> \ <interface name="org.gnome.Shell.SearchProvider2">
<arg type="as" direction="in" /> \ <method name="GetInitialResultSet">
<arg type="as" direction="out" /> \ <arg type="as" direction="in" />
</method> \ <arg type="as" direction="out" />
<method name="GetSubsearchResultSet"> \ </method>
<arg type="as" direction="in" /> \ <method name="GetSubsearchResultSet">
<arg type="as" direction="in" /> \ <arg type="as" direction="in" />
<arg type="as" direction="out" /> \ <arg type="as" direction="in" />
</method> \ <arg type="as" direction="out" />
<method name="GetResultMetas"> \ </method>
<arg type="as" direction="in" /> \ <method name="GetResultMetas">
<arg type="aa{sv}" direction="out" /> \ <arg type="as" direction="in" />
</method> \ <arg type="aa{sv}" direction="out" />
<method name="ActivateResult"> \ </method>
<arg type="s" direction="in" /> \ <method name="ActivateResult">
<arg type="as" direction="in" /> \ <arg type="s" direction="in" />
<arg type="u" direction="in" /> \ <arg type="as" direction="in" />
</method> \ <arg type="u" direction="in" />
<method name="LaunchSearch"> \ </method>
<arg type="as" direction="in" /> \ <method name="LaunchSearch">
<arg type="u" direction="in" /> \ <arg type="as" direction="in" />
</method> \ <arg type="u" direction="in" />
</interface> \ </method>
</node>'; </interface>
</node>`;
var SearchProviderProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProviderIface); var SearchProviderProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProviderIface);
var SearchProvider2ProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProvider2Iface); var SearchProvider2ProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProvider2Iface);

View File

@@ -62,7 +62,11 @@ var RunDialog = new Lang.Class({
'rt': () => { 'rt': () => {
Main.reloadThemeResource(); Main.reloadThemeResource();
Main.loadTheme(); Main.loadTheme();
} },
'check_cloexec_fds': () => {
Shell.util_check_cloexec_fds();
},
}; };
@@ -114,18 +118,16 @@ var RunDialog = new Lang.Class({
this._history = new History.HistoryManager({ gsettingsKey: HISTORY_KEY, this._history = new History.HistoryManager({ gsettingsKey: HISTORY_KEY,
entry: this._entryText }); entry: this._entryText });
this._entryText.connect('key-press-event', (o, e) => { this._entryText.connect('activate', (o) => {
let symbol = e.get_key_symbol();
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
this.popModal(); this.popModal();
this._run(o.get_text(), this._run(o.get_text(),
e.get_state() & Clutter.ModifierType.CONTROL_MASK); Clutter.get_current_event().get_state() & Clutter.ModifierType.CONTROL_MASK);
if (!this._commandError || if (!this._commandError ||
!this.pushModal()) !this.pushModal())
this.close(); this.close();
});
return Clutter.EVENT_STOP; this._entryText.connect('key-press-event', (o, e) => {
} let symbol = e.get_key_symbol();
if (symbol == Clutter.Tab) { if (symbol == Clutter.Tab) {
let text = o.get_text(); let text = o.get_text();
let prefix; let prefix;

View File

@@ -8,29 +8,30 @@ const Signals = imports.signals;
const Main = imports.ui.main; const Main = imports.ui.main;
const ScreencastIface = '<node> \ const ScreencastIface = `
<interface name="org.gnome.Shell.Screencast"> \ <node>
<method name="Screencast"> \ <interface name="org.gnome.Shell.Screencast">
<arg type="s" direction="in" name="file_template"/> \ <method name="Screencast">
<arg type="a{sv}" direction="in" name="options"/> \ <arg type="s" direction="in" name="file_template"/>
<arg type="b" direction="out" name="success"/> \ <arg type="a{sv}" direction="in" name="options"/>
<arg type="s" direction="out" name="filename_used"/> \ <arg type="b" direction="out" name="success"/>
</method> \ <arg type="s" direction="out" name="filename_used"/>
<method name="ScreencastArea"> \ </method>
<arg type="i" direction="in" name="x"/> \ <method name="ScreencastArea">
<arg type="i" direction="in" name="y"/> \ <arg type="i" direction="in" name="x"/>
<arg type="i" direction="in" name="width"/> \ <arg type="i" direction="in" name="y"/>
<arg type="i" direction="in" name="height"/> \ <arg type="i" direction="in" name="width"/>
<arg type="s" direction="in" name="file_template"/> \ <arg type="i" direction="in" name="height"/>
<arg type="a{sv}" direction="in" name="options"/> \ <arg type="s" direction="in" name="file_template"/>
<arg type="b" direction="out" name="success"/> \ <arg type="a{sv}" direction="in" name="options"/>
<arg type="s" direction="out" name="filename_used"/> \ <arg type="b" direction="out" name="success"/>
</method> \ <arg type="s" direction="out" name="filename_used"/>
<method name="StopScreencast"> \ </method>
<arg type="b" direction="out" name="success"/> \ <method name="StopScreencast">
</method> \ <arg type="b" direction="out" name="success"/>
</interface> \ </method>
</node>'; </interface>
</node>`;
var ScreencastService = new Lang.Class({ var ScreencastService = new Lang.Class({
Name: 'ScreencastService', Name: 'ScreencastService',

View File

@@ -16,47 +16,51 @@ const Lightbox = imports.ui.lightbox;
const Main = imports.ui.main; const Main = imports.ui.main;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
const ScreenshotIface = '<node> \ const ScreenshotIface = `
<interface name="org.gnome.Shell.Screenshot"> \ <node>
<method name="ScreenshotArea"> \ <interface name="org.gnome.Shell.Screenshot">
<arg type="i" direction="in" name="x"/> \ <method name="ScreenshotArea">
<arg type="i" direction="in" name="y"/> \ <arg type="i" direction="in" name="x"/>
<arg type="i" direction="in" name="width"/> \ <arg type="i" direction="in" name="y"/>
<arg type="i" direction="in" name="height"/> \ <arg type="i" direction="in" name="width"/>
<arg type="b" direction="in" name="flash"/> \ <arg type="i" direction="in" name="height"/>
<arg type="s" direction="in" name="filename"/> \ <arg type="b" direction="in" name="flash"/>
<arg type="b" direction="out" name="success"/> \ <arg type="s" direction="in" name="filename"/>
<arg type="s" direction="out" name="filename_used"/> \ <arg type="b" direction="out" name="success"/>
</method> \ <arg type="s" direction="out" name="filename_used"/>
<method name="ScreenshotWindow"> \ </method>
<arg type="b" direction="in" name="include_frame"/> \ <method name="ScreenshotWindow">
<arg type="b" direction="in" name="include_cursor"/> \ <arg type="b" direction="in" name="include_frame"/>
<arg type="b" direction="in" name="flash"/> \ <arg type="b" direction="in" name="include_cursor"/>
<arg type="s" direction="in" name="filename"/> \ <arg type="b" direction="in" name="flash"/>
<arg type="b" direction="out" name="success"/> \ <arg type="s" direction="in" name="filename"/>
<arg type="s" direction="out" name="filename_used"/> \ <arg type="b" direction="out" name="success"/>
</method> \ <arg type="s" direction="out" name="filename_used"/>
<method name="Screenshot"> \ </method>
<arg type="b" direction="in" name="include_cursor"/> \ <method name="Screenshot">
<arg type="b" direction="in" name="flash"/> \ <arg type="b" direction="in" name="include_cursor"/>
<arg type="s" direction="in" name="filename"/> \ <arg type="b" direction="in" name="flash"/>
<arg type="b" direction="out" name="success"/> \ <arg type="s" direction="in" name="filename"/>
<arg type="s" direction="out" name="filename_used"/> \ <arg type="b" direction="out" name="success"/>
</method> \ <arg type="s" direction="out" name="filename_used"/>
<method name="SelectArea"> \ </method>
<arg type="i" direction="out" name="x"/> \ <method name="SelectArea">
<arg type="i" direction="out" name="y"/> \ <arg type="i" direction="out" name="x"/>
<arg type="i" direction="out" name="width"/> \ <arg type="i" direction="out" name="y"/>
<arg type="i" direction="out" name="height"/> \ <arg type="i" direction="out" name="width"/>
</method> \ <arg type="i" direction="out" name="height"/>
<method name="FlashArea"> \ </method>
<arg type="i" direction="in" name="x"/> \ <method name="FlashArea">
<arg type="i" direction="in" name="y"/> \ <arg type="i" direction="in" name="x"/>
<arg type="i" direction="in" name="width"/> \ <arg type="i" direction="in" name="y"/>
<arg type="i" direction="in" name="height"/> \ <arg type="i" direction="in" name="width"/>
</method> \ <arg type="i" direction="in" name="height"/>
</interface> \ </method>
</node>'; <method name="PickColor">
<arg type="a{sv}" direction="out" name="result"/>
</method>
</interface>
</node>`;
var ScreenshotService = new Lang.Class({ var ScreenshotService = new Lang.Class({
Name: 'ScreenshotService', Name: 'ScreenshotService',
@@ -72,10 +76,13 @@ var ScreenshotService = new Lang.Class({
Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null); Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null);
}, },
_createScreenshot(invocation) { _createScreenshot(invocation, needsDisk=true) {
let lockedDown = false;
if (needsDisk)
lockedDown = this._lockdownSettings.get_boolean('disable-save-to-disk')
let sender = invocation.get_sender(); let sender = invocation.get_sender();
if (this._screenShooter.has(sender) || if (this._screenShooter.has(sender) || lockedDown) {
this._lockdownSettings.get_boolean('disable-save-to-disk')) {
invocation.return_value(GLib.Variant.new('(bs)', [false, ''])); invocation.return_value(GLib.Variant.new('(bs)', [false, '']));
return null; return null;
} }
@@ -110,7 +117,7 @@ var ScreenshotService = new Lang.Class({
y + height <= global.screen_height; y + height <= global.screen_height;
}, },
_onScreenshotComplete(obj, result, area, filenameUsed, flash, invocation) { _onScreenshotComplete(result, area, filenameUsed, flash, invocation) {
if (result) { if (result) {
if (flash) { if (flash) {
let flashspot = new Flashspot(area); let flashspot = new Flashspot(area);
@@ -157,9 +164,15 @@ var ScreenshotService = new Lang.Class({
if (!screenshot) if (!screenshot)
return; return;
screenshot.screenshot_area (x, y, width, height, filename, screenshot.screenshot_area (x, y, width, height, filename,
(obj, result, area, filenameUsed) => { (o, res) => {
this._onScreenshotComplete(obj, result, area, filenameUsed, try {
let [result, area, filenameUsed] =
screenshot.screenshot_area_finish(res);
this._onScreenshotComplete(result, area, filenameUsed,
flash, invocation); flash, invocation);
} catch (e) {
invocation.return_gerror (e);
}
}); });
}, },
@@ -169,9 +182,15 @@ var ScreenshotService = new Lang.Class({
if (!screenshot) if (!screenshot)
return; return;
screenshot.screenshot_window (include_frame, include_cursor, filename, screenshot.screenshot_window (include_frame, include_cursor, filename,
(obj, result, area, filenameUsed) => { (o, res) => {
this._onScreenshotComplete(obj, result, area, filenameUsed, try {
let [result, area, filenameUsed] =
screenshot.screenshot_window_finish(res);
this._onScreenshotComplete(result, area, filenameUsed,
flash, invocation); flash, invocation);
} catch (e) {
invocation.return_gerror (e);
}
}); });
}, },
@@ -181,9 +200,15 @@ var ScreenshotService = new Lang.Class({
if (!screenshot) if (!screenshot)
return; return;
screenshot.screenshot(include_cursor, filename, screenshot.screenshot(include_cursor, filename,
(obj, result, area, filenameUsed) => { (o, res) => {
this._onScreenshotComplete(obj, result, area, filenameUsed, try {
let [result, area, filenameUsed] =
screenshot.screenshot_finish(res);
this._onScreenshotComplete(result, area, filenameUsed,
flash, invocation); flash, invocation);
} catch (e) {
invocation.return_gerror (e);
}
}); });
}, },
@@ -215,6 +240,34 @@ var ScreenshotService = new Lang.Class({
let flashspot = new Flashspot({ x : x, y : y, width: width, height: height}); let flashspot = new Flashspot({ x : x, y : y, width: width, height: height});
flashspot.fire(); flashspot.fire();
invocation.return_value(null); invocation.return_value(null);
},
PickColorAsync(params, invocation) {
let pickPixel = new PickPixel();
pickPixel.show();
pickPixel.connect('finished', (pickPixel, coords) => {
if (coords) {
let screenshot = this._createScreenshot(invocation, false);
if (!screenshot)
return;
screenshot.pick_color(...coords, (o, res) => {
let [success, color] = screenshot.pick_color_finish(res);
let { red, green, blue } = color;
let retval = GLib.Variant.new('(a{sv})', [{
color: GLib.Variant.new('(ddd)', [
red / 255.0,
green / 255.0,
blue / 255.0
])
}]);
this._removeShooterForSender(invocation.get_sender());
invocation.return_value(retval);
});
} else {
invocation.return_error_literal(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED,
"Operation was cancelled");
}
});
} }
}); });
@@ -341,6 +394,54 @@ var SelectArea = new Lang.Class({
}); });
Signals.addSignalMethods(SelectArea.prototype); Signals.addSignalMethods(SelectArea.prototype);
var PickPixel = new Lang.Class({
Name: 'PickPixel',
_init() {
this._result = null;
this._group = new St.Widget({ visible: false,
reactive: true });
Main.uiGroup.add_actor(this._group);
this._grabHelper = new GrabHelper.GrabHelper(this._group);
this._group.connect('button-release-event',
this._onButtonRelease.bind(this));
let constraint = new Clutter.BindConstraint({ source: global.stage,
coordinate: Clutter.BindCoordinate.ALL });
this._group.add_constraint(constraint);
},
show() {
if (!this._grabHelper.grab({ actor: this._group,
onUngrab: this._onUngrab.bind(this) }))
return;
global.display.set_cursor(Meta.Cursor.CROSSHAIR);
Main.uiGroup.set_child_above_sibling(this._group, null);
this._group.visible = true;
},
_onButtonRelease(actor, event) {
this._result = event.get_coords();
this._grabHelper.ungrab();
return Clutter.EVENT_PROPAGATE;
},
_onUngrab() {
global.display.set_cursor(Meta.Cursor.DEFAULT);
this.emit('finished', this._result);
GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
this._group.destroy();
return GLib.SOURCE_REMOVE;
});
}
});
Signals.addSignalMethods(PickPixel.prototype);
var FLASHSPOT_ANIMATION_OUT_TIME = 0.5; // seconds var FLASHSPOT_ANIMATION_OUT_TIME = 0.5; // seconds
var Flashspot = new Lang.Class({ var Flashspot = new Lang.Class({

View File

@@ -68,19 +68,20 @@ function waitLeisure() {
return callback => { cb = callback; }; return callback => { cb = callback; };
} }
const PerfHelperIface = '<node> \ const PerfHelperIface = `
<interface name="org.gnome.Shell.PerfHelper"> \ <node>
<method name="CreateWindow"> \ <interface name="org.gnome.Shell.PerfHelper">
<arg type="i" direction="in" /> \ <method name="CreateWindow">
<arg type="i" direction="in" /> \ <arg type="i" direction="in" />
<arg type="b" direction="in" /> \ <arg type="i" direction="in" />
<arg type="b" direction="in" /> \ <arg type="b" direction="in" />
<arg type="b" direction="in" /> \ <arg type="b" direction="in" />
</method> \ <arg type="b" direction="in" />
<method name="WaitWindows" /> \ </method>
<method name="DestroyWindows" /> \ <method name="WaitWindows" />
</interface> \ <method name="DestroyWindows" />
</node>'; </interface>
</node>`;
var PerfHelperProxy = Gio.DBusProxy.makeProxyWrapper(PerfHelperIface); var PerfHelperProxy = Gio.DBusProxy.makeProxyWrapper(PerfHelperIface);
function PerfHelper() { function PerfHelper() {

View File

@@ -117,6 +117,8 @@ function _loadMode(file, info) {
let fileContent, success, tag, newMode; let fileContent, success, tag, newMode;
try { try {
[success, fileContent, tag] = file.load_contents(null); [success, fileContent, tag] = file.load_contents(null);
if (fileContent instanceof Uint8Array)
fileContent = imports.byteArray.toString(fileContent);
newMode = JSON.parse(fileContent); newMode = JSON.parse(fileContent);
} catch(e) { } catch(e) {
return; return;

View File

@@ -14,70 +14,72 @@ const Main = imports.ui.main;
const Screenshot = imports.ui.screenshot; const Screenshot = imports.ui.screenshot;
const ViewSelector = imports.ui.viewSelector; const ViewSelector = imports.ui.viewSelector;
const GnomeShellIface = '<node> \ const GnomeShellIface = `
<interface name="org.gnome.Shell"> \ <node>
<method name="Eval"> \ <interface name="org.gnome.Shell">
<arg type="s" direction="in" name="script" /> \ <method name="Eval">
<arg type="b" direction="out" name="success" /> \ <arg type="s" direction="in" name="script" />
<arg type="s" direction="out" name="result" /> \ <arg type="b" direction="out" name="success" />
</method> \ <arg type="s" direction="out" name="result" />
<method name="FocusSearch"/> \ </method>
<method name="ShowOSD"> \ <method name="FocusSearch"/>
<arg type="a{sv}" direction="in" name="params"/> \ <method name="ShowOSD">
</method> \ <arg type="a{sv}" direction="in" name="params"/>
<method name="ShowMonitorLabels"> \ </method>
<arg type="a{uv}" direction="in" name="params" /> \ <method name="ShowMonitorLabels">
</method> \ <arg type="a{uv}" direction="in" name="params" />
<method name="ShowMonitorLabels2"> \ </method>
<arg type="a{sv}" direction="in" name="params" /> \ <method name="ShowMonitorLabels2">
</method> \ <arg type="a{sv}" direction="in" name="params" />
<method name="HideMonitorLabels" /> \ </method>
<method name="FocusApp"> \ <method name="HideMonitorLabels" />
<arg type="s" direction="in" name="id"/> \ <method name="FocusApp">
</method> \ <arg type="s" direction="in" name="id"/>
<method name="ShowApplications" /> \ </method>
<method name="GrabAccelerator"> \ <method name="ShowApplications" />
<arg type="s" direction="in" name="accelerator"/> \ <method name="GrabAccelerator">
<arg type="u" direction="in" name="flags"/> \ <arg type="s" direction="in" name="accelerator"/>
<arg type="u" direction="out" name="action"/> \ <arg type="u" direction="in" name="flags"/>
</method> \ <arg type="u" direction="out" name="action"/>
<method name="GrabAccelerators"> \ </method>
<arg type="a(su)" direction="in" name="accelerators"/> \ <method name="GrabAccelerators">
<arg type="au" direction="out" name="actions"/> \ <arg type="a(su)" direction="in" name="accelerators"/>
</method> \ <arg type="au" direction="out" name="actions"/>
<method name="UngrabAccelerator"> \ </method>
<arg type="u" direction="in" name="action"/> \ <method name="UngrabAccelerator">
<arg type="b" direction="out" name="success"/> \ <arg type="u" direction="in" name="action"/>
</method> \ <arg type="b" direction="out" name="success"/>
<signal name="AcceleratorActivated"> \ </method>
<arg name="action" type="u" /> \ <signal name="AcceleratorActivated">
<arg name="parameters" type="a{sv}" /> \ <arg name="action" type="u" />
</signal> \ <arg name="parameters" type="a{sv}" />
<property name="Mode" type="s" access="read" /> \ </signal>
<property name="OverviewActive" type="b" access="readwrite" /> \ <property name="Mode" type="s" access="read" />
<property name="ShellVersion" type="s" access="read" /> \ <property name="OverviewActive" type="b" access="readwrite" />
</interface> \ <property name="ShellVersion" type="s" access="read" />
</node>'; </interface>
</node>`;
const ScreenSaverIface = '<node> \ const ScreenSaverIface = `
<interface name="org.gnome.ScreenSaver"> \ <node>
<method name="Lock"> \ <interface name="org.gnome.ScreenSaver">
</method> \ <method name="Lock">
<method name="GetActive"> \ </method>
<arg name="active" direction="out" type="b" /> \ <method name="GetActive">
</method> \ <arg name="active" direction="out" type="b" />
<method name="SetActive"> \ </method>
<arg name="value" direction="in" type="b" /> \ <method name="SetActive">
</method> \ <arg name="value" direction="in" type="b" />
<method name="GetActiveTime"> \ </method>
<arg name="value" direction="out" type="u" /> \ <method name="GetActiveTime">
</method> \ <arg name="value" direction="out" type="u" />
<signal name="ActiveChanged"> \ </method>
<arg name="new_value" type="b" /> \ <signal name="ActiveChanged">
</signal> \ <arg name="new_value" type="b" />
<signal name="WakeUpScreen" /> \ </signal>
</interface> \ <signal name="WakeUpScreen" />
</node>'; </interface>
</node>`;
var GnomeShell = new Lang.Class({ var GnomeShell = new Lang.Class({
Name: 'GnomeShellDBus', Name: 'GnomeShellDBus',
@@ -145,15 +147,20 @@ var GnomeShell = new Lang.Class({
for (let param in params) for (let param in params)
params[param] = params[param].deep_unpack(); params[param] = params[param].deep_unpack();
let monitorIndex = params['monitor'] || -1; let { monitor: monitorIndex,
let label = params['label'] || undefined; label,
let level = params['level'] || undefined; level,
max_level: maxLevel,
icon: serializedIcon } = params;
if (monitorIndex === undefined)
monitorIndex = -1;
let icon = null; let icon = null;
if (params['icon']) if (serializedIcon)
icon = Gio.Icon.new_for_string(params['icon']); icon = Gio.Icon.new_for_string(serializedIcon);
Main.osdWindowManager.show(monitorIndex, icon, label, level); Main.osdWindowManager.show(monitorIndex, icon, label, level, maxLevel);
}, },
FocusApp(id) { FocusApp(id) {
@@ -288,43 +295,44 @@ var GnomeShell = new Lang.Class({
ShellVersion: Config.PACKAGE_VERSION ShellVersion: Config.PACKAGE_VERSION
}); });
const GnomeShellExtensionsIface = '<node> \ const GnomeShellExtensionsIface = `
<interface name="org.gnome.Shell.Extensions"> \ <node>
<method name="ListExtensions"> \ <interface name="org.gnome.Shell.Extensions">
<arg type="a{sa{sv}}" direction="out" name="extensions" /> \ <method name="ListExtensions">
</method> \ <arg type="a{sa{sv}}" direction="out" name="extensions" />
<method name="GetExtensionInfo"> \ </method>
<arg type="s" direction="in" name="extension" /> \ <method name="GetExtensionInfo">
<arg type="a{sv}" direction="out" name="info" /> \ <arg type="s" direction="in" name="extension" />
</method> \ <arg type="a{sv}" direction="out" name="info" />
<method name="GetExtensionErrors"> \ </method>
<arg type="s" direction="in" name="extension" /> \ <method name="GetExtensionErrors">
<arg type="as" direction="out" name="errors" /> \ <arg type="s" direction="in" name="extension" />
</method> \ <arg type="as" direction="out" name="errors" />
<signal name="ExtensionStatusChanged"> \ </method>
<arg type="s" name="uuid"/> \ <signal name="ExtensionStatusChanged">
<arg type="i" name="state"/> \ <arg type="s" name="uuid"/>
<arg type="s" name="error"/> \ <arg type="i" name="state"/>
</signal> \ <arg type="s" name="error"/>
<method name="InstallRemoteExtension"> \ </signal>
<arg type="s" direction="in" name="uuid"/> \ <method name="InstallRemoteExtension">
<arg type="s" direction="out" name="result"/> \ <arg type="s" direction="in" name="uuid"/>
</method> \ <arg type="s" direction="out" name="result"/>
<method name="UninstallExtension"> \ </method>
<arg type="s" direction="in" name="uuid"/> \ <method name="UninstallExtension">
<arg type="b" direction="out" name="success"/> \ <arg type="s" direction="in" name="uuid"/>
</method> \ <arg type="b" direction="out" name="success"/>
<method name="LaunchExtensionPrefs"> \ </method>
<arg type="s" direction="in" name="uuid"/> \ <method name="LaunchExtensionPrefs">
</method> \ <arg type="s" direction="in" name="uuid"/>
<method name="ReloadExtension"> \ </method>
<arg type="s" direction="in" name="uuid"/> \ <method name="ReloadExtension">
</method> \ <arg type="s" direction="in" name="uuid"/>
<method name="CheckForUpdates"> \ </method>
</method> \ <method name="CheckForUpdates">
<property name="ShellVersion" type="s" access="read" /> \ </method>
</interface> \ <property name="ShellVersion" type="s" access="read" />
</node>'; </interface>
</node>`;
var GnomeShellExtensions = new Lang.Class({ var GnomeShellExtensions = new Lang.Class({
Name: 'GnomeShellExtensionsDBus', Name: 'GnomeShellExtensionsDBus',

View File

@@ -436,38 +436,39 @@ var ShellProcessesDialog = new Lang.Class({
}); });
Signals.addSignalMethods(ShellProcessesDialog.prototype); Signals.addSignalMethods(ShellProcessesDialog.prototype);
const GnomeShellMountOpIface = '<node> \ const GnomeShellMountOpIface = `
<interface name="org.Gtk.MountOperationHandler"> \ <node>
<method name="AskPassword"> \ <interface name="org.Gtk.MountOperationHandler">
<arg type="s" direction="in" name="object_id"/> \ <method name="AskPassword">
<arg type="s" direction="in" name="message"/> \ <arg type="s" direction="in" name="object_id"/>
<arg type="s" direction="in" name="icon_name"/> \ <arg type="s" direction="in" name="message"/>
<arg type="s" direction="in" name="default_user"/> \ <arg type="s" direction="in" name="icon_name"/>
<arg type="s" direction="in" name="default_domain"/> \ <arg type="s" direction="in" name="default_user"/>
<arg type="u" direction="in" name="flags"/> \ <arg type="s" direction="in" name="default_domain"/>
<arg type="u" direction="out" name="response"/> \ <arg type="u" direction="in" name="flags"/>
<arg type="a{sv}" direction="out" name="response_details"/> \ <arg type="u" direction="out" name="response"/>
</method> \ <arg type="a{sv}" direction="out" name="response_details"/>
<method name="AskQuestion"> \ </method>
<arg type="s" direction="in" name="object_id"/> \ <method name="AskQuestion">
<arg type="s" direction="in" name="message"/> \ <arg type="s" direction="in" name="object_id"/>
<arg type="s" direction="in" name="icon_name"/> \ <arg type="s" direction="in" name="message"/>
<arg type="as" direction="in" name="choices"/> \ <arg type="s" direction="in" name="icon_name"/>
<arg type="u" direction="out" name="response"/> \ <arg type="as" direction="in" name="choices"/>
<arg type="a{sv}" direction="out" name="response_details"/> \ <arg type="u" direction="out" name="response"/>
</method> \ <arg type="a{sv}" direction="out" name="response_details"/>
<method name="ShowProcesses"> \ </method>
<arg type="s" direction="in" name="object_id"/> \ <method name="ShowProcesses">
<arg type="s" direction="in" name="message"/> \ <arg type="s" direction="in" name="object_id"/>
<arg type="s" direction="in" name="icon_name"/> \ <arg type="s" direction="in" name="message"/>
<arg type="ai" direction="in" name="application_pids"/> \ <arg type="s" direction="in" name="icon_name"/>
<arg type="as" direction="in" name="choices"/> \ <arg type="ai" direction="in" name="application_pids"/>
<arg type="u" direction="out" name="response"/> \ <arg type="as" direction="in" name="choices"/>
<arg type="a{sv}" direction="out" name="response_details"/> \ <arg type="u" direction="out" name="response"/>
</method> \ <arg type="a{sv}" direction="out" name="response_details"/>
<method name="Close"/> \ </method>
</interface> \ <method name="Close"/>
</node>'; </interface>
</node>`;
var ShellMountOperationType = { var ShellMountOperationType = {
NONE: 0, NONE: 0,

View File

@@ -7,55 +7,38 @@ const Lang = imports.lang;
const St = imports.gi.St; const St = imports.gi.St;
const Signals = imports.signals; const Signals = imports.signals;
const BarLevel = imports.ui.barLevel;
var SLIDER_SCROLL_STEP = 0.02; /* Slider scrolling step in % */ var SLIDER_SCROLL_STEP = 0.02; /* Slider scrolling step in % */
var Slider = new Lang.Class({ var Slider = new Lang.Class({
Name: "Slider", Name: "Slider",
Extends: BarLevel.BarLevel,
_init(value) { _init(value) {
if (isNaN(value)) let params = {
// Avoid spreading NaNs around styleClass: 'slider',
throw TypeError('The slider value must be a number'); canFocus: true,
this._value = Math.max(Math.min(value, 1), 0);
this._sliderWidth = 0;
this.actor = new St.DrawingArea({ style_class: 'slider',
can_focus: true,
reactive: true, reactive: true,
accessible_role: Atk.Role.SLIDER }); accessibleRole: Atk.Role.SLIDER,
this.actor.connect('repaint', this._sliderRepaint.bind(this)); }
this.parent(value, params)
this.actor.connect('button-press-event', this._startDragging.bind(this)); this.actor.connect('button-press-event', this._startDragging.bind(this));
this.actor.connect('touch-event', this._touchDragging.bind(this)); this.actor.connect('touch-event', this._touchDragging.bind(this));
this.actor.connect('scroll-event', this._onScrollEvent.bind(this)); this.actor.connect('scroll-event', this._onScrollEvent.bind(this));
this.actor.connect('key-press-event', this.onKeyPressEvent.bind(this)); this.actor.connect('key-press-event', this.onKeyPressEvent.bind(this));
this.actor.connect('allocation-changed', (actor, box) => {
this._sliderWidth = box.get_width();
});
this._releaseId = this._motionId = 0; this._releaseId = this._motionId = 0;
this._dragging = false; this._dragging = false;
this._customAccessible = St.GenericAccessible.new_for_actor(this.actor);
this.actor.set_accessible(this._customAccessible);
this._customAccessible.connect('get-current-value', this._getCurrentValue.bind(this));
this._customAccessible.connect('get-minimum-value', this._getMinimumValue.bind(this));
this._customAccessible.connect('get-maximum-value', this._getMaximumValue.bind(this));
this._customAccessible.connect('get-minimum-increment', this._getMinimumIncrement.bind(this)); this._customAccessible.connect('get-minimum-increment', this._getMinimumIncrement.bind(this));
this._customAccessible.connect('set-current-value', this._setCurrentValue.bind(this));
this.connect('value-changed', this._valueChanged.bind(this));
}, },
setValue(value) { _barLevelRepaint(area) {
if (isNaN(value)) this.parent(area);
throw TypeError('The slider value must be a number');
this._value = Math.max(Math.min(value, 1), 0); // Add handle
this.actor.queue_repaint();
},
_sliderRepaint(area) {
let cr = area.get_context(); let cr = area.get_context();
let themeNode = area.get_theme_node(); let themeNode = area.get_theme_node();
let [width, height] = area.get_surface_size(); let [width, height] = area.get_surface_size();
@@ -66,41 +49,9 @@ var Slider = new Lang.Class({
let [hasHandleColor, handleBorderColor] = let [hasHandleColor, handleBorderColor] =
themeNode.lookup_color('-slider-handle-border-color', false); themeNode.lookup_color('-slider-handle-border-color', false);
let sliderHeight = themeNode.get_length('-slider-height');
let sliderBorderWidth = themeNode.get_length('-slider-border-width');
let sliderBorderRadius = Math.min(width, sliderHeight) / 2;
let sliderBorderColor = themeNode.get_color('-slider-border-color');
let sliderColor = themeNode.get_color('-slider-background-color');
let sliderActiveBorderColor = themeNode.get_color('-slider-active-border-color');
let sliderActiveColor = themeNode.get_color('-slider-active-background-color');
const TAU = Math.PI * 2; const TAU = Math.PI * 2;
let handleX = handleRadius + (width - 2 * handleRadius) * this._value; let handleX = handleRadius + (width - 2 * handleRadius) * this._value / this._maxValue;
cr.arc(sliderBorderRadius + sliderBorderWidth, height / 2, sliderBorderRadius, TAU * 1/4, TAU * 3/4);
cr.lineTo(handleX, (height - sliderHeight) / 2);
cr.lineTo(handleX, (height + sliderHeight) / 2);
cr.lineTo(sliderBorderRadius + sliderBorderWidth, (height + sliderHeight) / 2);
Clutter.cairo_set_source_color(cr, sliderActiveColor);
cr.fillPreserve();
Clutter.cairo_set_source_color(cr, sliderActiveBorderColor);
cr.setLineWidth(sliderBorderWidth);
cr.stroke();
cr.arc(width - sliderBorderRadius - sliderBorderWidth, height / 2, sliderBorderRadius, TAU * 3/4, TAU * 1/4);
cr.lineTo(handleX, (height + sliderHeight) / 2);
cr.lineTo(handleX, (height - sliderHeight) / 2);
cr.lineTo(width - sliderBorderRadius - sliderBorderWidth, (height - sliderHeight) / 2);
Clutter.cairo_set_source_color(cr, sliderColor);
cr.fillPreserve();
Clutter.cairo_set_source_color(cr, sliderBorderColor);
cr.setLineWidth(sliderBorderWidth);
cr.stroke();
let handleY = height / 2; let handleY = height / 2;
let color = themeNode.get_foreground_color(); let color = themeNode.get_foreground_color();
@@ -208,7 +159,7 @@ var Slider = new Lang.Class({
delta = -dy * SLIDER_SCROLL_STEP; delta = -dy * SLIDER_SCROLL_STEP;
} }
this._value = Math.min(Math.max(0, this._value + delta), 1); this._value = Math.min(Math.max(0, this._value + delta), this._maxValue);
this.actor.queue_repaint(); this.actor.queue_repaint();
this.emit('value-changed', this._value); this.emit('value-changed', this._value);
@@ -230,7 +181,7 @@ var Slider = new Lang.Class({
let key = event.get_key_symbol(); let key = event.get_key_symbol();
if (key == Clutter.KEY_Right || key == Clutter.KEY_Left) { if (key == Clutter.KEY_Right || key == Clutter.KEY_Left) {
let delta = key == Clutter.KEY_Right ? 0.1 : -0.1; let delta = key == Clutter.KEY_Right ? 0.1 : -0.1;
this._value = Math.max(0, Math.min(this._value + delta, 1)); this._value = Math.max(0, Math.min(this._value + delta, this._maxValue));
this.actor.queue_repaint(); this.actor.queue_repaint();
this.emit('drag-begin'); this.emit('drag-begin');
this.emit('value-changed', this._value); this.emit('value-changed', this._value);
@@ -246,7 +197,7 @@ var Slider = new Lang.Class({
relX = absX - sliderX; relX = absX - sliderX;
relY = absY - sliderY; relY = absY - sliderY;
let width = this._sliderWidth; let width = this._barLevelWidth;
let handleRadius = this.actor.get_theme_node().get_length('-slider-handle-radius'); let handleRadius = this.actor.get_theme_node().get_length('-slider-handle-radius');
let newvalue; let newvalue;
@@ -256,38 +207,14 @@ var Slider = new Lang.Class({
newvalue = 1; newvalue = 1;
else else
newvalue = (relX - handleRadius) / (width - 2 * handleRadius); newvalue = (relX - handleRadius) / (width - 2 * handleRadius);
this._value = newvalue; this._value = newvalue * this._maxValue;
this.actor.queue_repaint(); this.actor.queue_repaint();
this.emit('value-changed', this._value); this.emit('value-changed', this._value);
}, },
_getCurrentValue(actor) {
return this._value;
},
_getMinimumValue(actor) {
return 0;
},
_getMaximumValue(actor) {
return 1;
},
_getMinimumIncrement(actor) { _getMinimumIncrement(actor) {
return 0.1; return 0.1;
}, },
_setCurrentValue(actor, value) {
this._value = value;
},
_valueChanged(slider, value, property) {
this._customAccessible.notify ("accessible-value");
},
get value() {
return this._value;
}
}); });
Signals.addSignalMethods(Slider.prototype); Signals.addSignalMethods(Slider.prototype);

View File

@@ -11,13 +11,14 @@ const PopupMenu = imports.ui.popupMenu;
const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill'; const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill'; const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill';
const RfkillManagerInterface = '<node> \ const RfkillManagerInterface = `
<interface name="org.gnome.SettingsDaemon.Rfkill"> \ <node>
<property name="BluetoothAirplaneMode" type="b" access="readwrite" /> \ <interface name="org.gnome.SettingsDaemon.Rfkill">
<property name="BluetoothHasAirplaneMode" type="b" access="read" /> \ <property name="BluetoothAirplaneMode" type="b" access="readwrite" />
<property name="BluetoothHardwareAirplaneMode" type="b" access="readwrite" /> \ <property name="BluetoothHasAirplaneMode" type="b" access="read" />
</interface> \ <property name="BluetoothHardwareAirplaneMode" type="b" access="readwrite" />
</node>'; </interface>
</node>`;
const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface); const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface);

View File

@@ -11,11 +11,12 @@ const Slider = imports.ui.slider;
const BUS_NAME = 'org.gnome.SettingsDaemon.Power'; const BUS_NAME = 'org.gnome.SettingsDaemon.Power';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Power'; const OBJECT_PATH = '/org/gnome/SettingsDaemon/Power';
const BrightnessInterface = '<node> \ const BrightnessInterface = `
<interface name="org.gnome.SettingsDaemon.Power.Screen"> \ <node>
<property name="Brightness" type="i" access="readwrite"/> \ <interface name="org.gnome.SettingsDaemon.Power.Screen">
</interface> \ <property name="Brightness" type="i" access="readwrite"/>
</node>'; </interface>
</node>`;
const BrightnessProxy = Gio.DBusProxy.makeProxyWrapper(BrightnessInterface); const BrightnessProxy = Gio.DBusProxy.makeProxyWrapper(BrightnessInterface);

View File

@@ -40,29 +40,31 @@ function accuracyLevelToString(accuracyLevel) {
return 'NONE'; return 'NONE';
} }
var GeoclueIface = '<node> \ var GeoclueIface = `
<interface name="org.freedesktop.GeoClue2.Manager"> \ <node>
<property name="InUse" type="b" access="read"/> \ <interface name="org.freedesktop.GeoClue2.Manager">
<property name="AvailableAccuracyLevel" type="u" access="read"/> \ <property name="InUse" type="b" access="read"/>
<method name="AddAgent"> \ <property name="AvailableAccuracyLevel" type="u" access="read"/>
<arg name="id" type="s" direction="in"/> \ <method name="AddAgent">
</method> \ <arg name="id" type="s" direction="in"/>
</interface> \ </method>
</node>'; </interface>
</node>`;
const GeoclueManager = Gio.DBusProxy.makeProxyWrapper(GeoclueIface); const GeoclueManager = Gio.DBusProxy.makeProxyWrapper(GeoclueIface);
var AgentIface = '<node> \ var AgentIface = `
<interface name="org.freedesktop.GeoClue2.Agent"> \ <node>
<property name="MaxAccuracyLevel" type="u" access="read"/> \ <interface name="org.freedesktop.GeoClue2.Agent">
<method name="AuthorizeApp"> \ <property name="MaxAccuracyLevel" type="u" access="read"/>
<arg name="desktop_id" type="s" direction="in"/> \ <method name="AuthorizeApp">
<arg name="req_accuracy_level" type="u" direction="in"/> \ <arg name="desktop_id" type="s" direction="in"/>
<arg name="authorized" type="b" direction="out"/> \ <arg name="req_accuracy_level" type="u" direction="in"/>
<arg name="allowed_accuracy_level" type="u" direction="out"/> \ <arg name="authorized" type="b" direction="out"/>
</method> \ <arg name="allowed_accuracy_level" type="u" direction="out"/>
</interface> \ </method>
</node>'; </interface>
</node>`;
var Indicator = new Lang.Class({ var Indicator = new Lang.Class({
Name: 'LocationIndicator', Name: 'LocationIndicator',

View File

@@ -51,25 +51,26 @@ var PortalHelperResult = {
RECHECK: 2 RECHECK: 2
}; };
const PortalHelperIface = '<node> \ const PortalHelperIface = `
<interface name="org.gnome.Shell.PortalHelper"> \ <node>
<method name="Authenticate"> \ <interface name="org.gnome.Shell.PortalHelper">
<arg type="o" direction="in" name="connection" /> \ <method name="Authenticate">
<arg type="s" direction="in" name="url" /> \ <arg type="o" direction="in" name="connection" />
<arg type="u" direction="in" name="timestamp" /> \ <arg type="s" direction="in" name="url" />
</method> \ <arg type="u" direction="in" name="timestamp" />
<method name="Close"> \ </method>
<arg type="o" direction="in" name="connection" /> \ <method name="Close">
</method> \ <arg type="o" direction="in" name="connection" />
<method name="Refresh"> \ </method>
<arg type="o" direction="in" name="connection" /> \ <method name="Refresh">
</method> \ <arg type="o" direction="in" name="connection" />
<signal name="Done"> \ </method>
<arg type="o" name="connection" /> \ <signal name="Done">
<arg type="u" name="result" /> \ <arg type="o" name="connection" />
</signal> \ <arg type="u" name="result" />
</interface> \ </signal>
</node>'; </interface>
</node>`;
const PortalHelperProxy = Gio.DBusProxy.makeProxyWrapper(PortalHelperIface); const PortalHelperProxy = Gio.DBusProxy.makeProxyWrapper(PortalHelperIface);
function signalToIcon(value) { function signalToIcon(value) {

View File

@@ -10,12 +10,13 @@ const PopupMenu = imports.ui.popupMenu;
const BUS_NAME = 'org.gnome.SettingsDaemon.Color'; const BUS_NAME = 'org.gnome.SettingsDaemon.Color';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Color'; const OBJECT_PATH = '/org/gnome/SettingsDaemon/Color';
const ColorInterface = '<node> \ const ColorInterface = `
<interface name="org.gnome.SettingsDaemon.Color"> \ <node>
<property name="DisabledUntilTomorrow" type="b" access="readwrite"/> \ <interface name="org.gnome.SettingsDaemon.Color">
<property name="NightLightActive" type="b" access="read"/> \ <property name="DisabledUntilTomorrow" type="b" access="readwrite"/>
</interface> \ <property name="NightLightActive" type="b" access="read"/>
</node>'; </interface>
</node>`;
const ColorProxy = Gio.DBusProxy.makeProxyWrapper(ColorInterface); const ColorProxy = Gio.DBusProxy.makeProxyWrapper(ColorInterface);

View File

@@ -13,17 +13,18 @@ const PopupMenu = imports.ui.popupMenu;
const BUS_NAME = 'org.freedesktop.UPower'; const BUS_NAME = 'org.freedesktop.UPower';
const OBJECT_PATH = '/org/freedesktop/UPower/devices/DisplayDevice'; const OBJECT_PATH = '/org/freedesktop/UPower/devices/DisplayDevice';
const DisplayDeviceInterface = '<node> \ const DisplayDeviceInterface = `
<interface name="org.freedesktop.UPower.Device"> \ <node>
<property name="Type" type="u" access="read"/> \ <interface name="org.freedesktop.UPower.Device">
<property name="State" type="u" access="read"/> \ <property name="Type" type="u" access="read"/>
<property name="Percentage" type="d" access="read"/> \ <property name="State" type="u" access="read"/>
<property name="TimeToEmpty" type="x" access="read"/> \ <property name="Percentage" type="d" access="read"/>
<property name="TimeToFull" type="x" access="read"/> \ <property name="TimeToEmpty" type="x" access="read"/>
<property name="IsPresent" type="b" access="read"/> \ <property name="TimeToFull" type="x" access="read"/>
<property name="IconName" type="s" access="read"/> \ <property name="IsPresent" type="b" access="read"/>
</interface> \ <property name="IconName" type="s" access="read"/>
</node>'; </interface>
</node>`;
const PowerManagerProxy = Gio.DBusProxy.makeProxyWrapper(DisplayDeviceInterface); const PowerManagerProxy = Gio.DBusProxy.makeProxyWrapper(DisplayDeviceInterface);

View File

@@ -41,6 +41,7 @@ var RemoteAccessApplet = new Lang.Class({
this._indicator = this._addIndicator(); this._indicator = this._addIndicator();
this._indicator.icon_name = 'screen-shared-symbolic'; this._indicator.icon_name = 'screen-shared-symbolic';
this._indicator.add_style_class_name('remote-access-indicator');
this._item = this._item =
new PopupMenu.PopupSubMenuMenuItem(_("Screen is Being Shared"), new PopupMenu.PopupSubMenuMenuItem(_("Screen is Being Shared"),
true); true);

View File

@@ -11,13 +11,14 @@ const PopupMenu = imports.ui.popupMenu;
const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill'; const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill'; const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill';
const RfkillManagerInterface = '<node> \ const RfkillManagerInterface = `
<interface name="org.gnome.SettingsDaemon.Rfkill"> \ <node>
<property name="AirplaneMode" type="b" access="readwrite" /> \ <interface name="org.gnome.SettingsDaemon.Rfkill">
<property name="HardwareAirplaneMode" type="b" access="read" /> \ <property name="AirplaneMode" type="b" access="readwrite" />
<property name="ShouldShowAirplaneMode" type="b" access="read" /> \ <property name="HardwareAirplaneMode" type="b" access="read" />
</interface> \ <property name="ShouldShowAirplaneMode" type="b" access="read" />
</node>'; </interface>
</node>`;
const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface); const RfkillManagerProxy = Gio.DBusProxy.makeProxyWrapper(RfkillManagerInterface);

View File

@@ -261,8 +261,19 @@ var Indicator = new Lang.Class({
item = new PopupMenu.PopupBaseMenuItem({ reactive: false, item = new PopupMenu.PopupBaseMenuItem({ reactive: false,
can_focus: false }); can_focus: false });
this._settingsAction = this._createActionButton('org.gnome.Settings-symbolic', _("Settings")); let app = this._settingsApp = Shell.AppSystem.get_default().lookup_app(
this._settingsAction.connect('clicked', () => { this._onSettingsClicked(); }); 'gnome-control-center.desktop'
);
if (app) {
let [icon, name] = [app.app_info.get_icon().names[0],
app.get_name()];
this._settingsAction = this._createActionButton(icon, name);
this._settingsAction.connect('clicked',
this._onSettingsClicked.bind(this));
} else {
log('Missing required core component Settings, expect trouble…');
this._settingsAction = new St.Widget();
}
item.actor.add(this._settingsAction, { expand: true, x_fill: false }); item.actor.add(this._settingsAction, { expand: true, x_fill: false });
this._orientationLockAction = this._createActionButton('', _("Orientation Lock")); this._orientationLockAction = this._createActionButton('', _("Orientation Lock"));
@@ -280,7 +291,7 @@ var Indicator = new Lang.Class({
'icon-name', 'icon-name',
bindFlags); bindFlags);
this._lockScreenAction = this._createActionButton('changes-prevent-symbolic', _("Lock")); this._lockScreenAction = this._createActionButton('changes-prevent', _("Lock"));
this._lockScreenAction.connect('clicked', () => { this._lockScreenAction.connect('clicked', () => {
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE); this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
this._systemActions.activateLockScreen(); this._systemActions.activateLockScreen();
@@ -291,7 +302,7 @@ var Indicator = new Lang.Class({
'visible', 'visible',
bindFlags); bindFlags);
this._suspendAction = this._createActionButton('media-playback-pause-symbolic', _("Suspend")); this._suspendAction = this._createActionButton('media-playback-pause', _("Suspend"));
this._suspendAction.connect('clicked', () => { this._suspendAction.connect('clicked', () => {
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE); this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
this._systemActions.activateSuspend(); this._systemActions.activateSuspend();
@@ -301,7 +312,7 @@ var Indicator = new Lang.Class({
'visible', 'visible',
bindFlags); bindFlags);
this._powerOffAction = this._createActionButton('system-shutdown-symbolic', _("Power Off")); this._powerOffAction = this._createActionButton('system-shutdown', _("Power Off"));
this._powerOffAction.connect('clicked', () => { this._powerOffAction.connect('clicked', () => {
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE); this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
this._systemActions.activatePowerOff(); this._systemActions.activatePowerOff();
@@ -330,8 +341,7 @@ var Indicator = new Lang.Class({
_onSettingsClicked() { _onSettingsClicked() {
this.menu.itemActivated(); this.menu.itemActivated();
let app = Shell.AppSystem.get_default().lookup_app('gnome-control-center.desktop');
Main.overview.hide(); Main.overview.hide();
app.activate(); this._settingsApp.activate();
} }
}); });

View File

@@ -14,40 +14,42 @@ const PanelMenu = imports.ui.panelMenu;
/* Keep in sync with data/org.freedesktop.bolt.xml */ /* Keep in sync with data/org.freedesktop.bolt.xml */
const BoltClientInterface = '<node> \ const BoltClientInterface = `
<interface name="org.freedesktop.bolt1.Manager"> \ <node>
<property name="Probing" type="b" access="read"></property> \ <interface name="org.freedesktop.bolt1.Manager">
<property name="AuthMode" type="s" access="readwrite"></property> \ <property name="Probing" type="b" access="read"></property>
<method name="EnrollDevice"> \ <property name="AuthMode" type="s" access="readwrite"></property>
<arg type="s" name="uid" direction="in"> </arg> \ <method name="EnrollDevice">
<arg type="s" name="policy" direction="in"> </arg> \ <arg type="s" name="uid" direction="in"> </arg>
<arg type="s" name="flags" direction="in"> </arg> \ <arg type="s" name="policy" direction="in"> </arg>
<arg name="device" direction="out" type="o"> </arg> \ <arg type="s" name="flags" direction="in"> </arg>
</method> \ <arg name="device" direction="out" type="o"> </arg>
<signal name="DeviceAdded"> \ </method>
<arg name="device" type="o"> </arg> \ <signal name="DeviceAdded">
</signal> \ <arg name="device" type="o"> </arg>
</interface> \ </signal>
</node>'; </interface>
</node>`;
const BoltDeviceInterface = '<node> \ const BoltDeviceInterface = `
<interface name="org.freedesktop.bolt1.Device"> \ <node>
<property name="Uid" type="s" access="read"></property> \ <interface name="org.freedesktop.bolt1.Device">
<property name="Name" type="s" access="read"></property> \ <property name="Uid" type="s" access="read"></property>
<property name="Vendor" type="s" access="read"></property> \ <property name="Name" type="s" access="read"></property>
<property name="Type" type="s" access="read"></property> \ <property name="Vendor" type="s" access="read"></property>
<property name="Status" type="s" access="read"></property> \ <property name="Type" type="s" access="read"></property>
<property name="Parent" type="s" access="read"></property> \ <property name="Status" type="s" access="read"></property>
<property name="SysfsPath" type="s" access="read"></property> \ <property name="Parent" type="s" access="read"></property>
<property name="Stored" type="b" access="read"></property> \ <property name="SysfsPath" type="s" access="read"></property>
<property name="Policy" type="s" access="read"></property> \ <property name="Stored" type="b" access="read"></property>
<property name="Key" type="s" access="read"></property> \ <property name="Policy" type="s" access="read"></property>
<property name="Label" type="s" access="read"></property> \ <property name="Key" type="s" access="read"></property>
<property name="ConnectTime" type="t" access="read"></property> \ <property name="Label" type="s" access="read"></property>
<property name="AuthorizeTime" type="t" access="read"></property> \ <property name="ConnectTime" type="t" access="read"></property>
<property name="StoreTime" type="t" access="read"></property> \ <property name="AuthorizeTime" type="t" access="read"></property>
</interface> \ <property name="StoreTime" type="t" access="read"></property>
</node>'; </interface>
</node>`;
const BoltDeviceProxy = Gio.DBusProxy.makeProxyWrapper(BoltDeviceInterface); const BoltDeviceProxy = Gio.DBusProxy.makeProxyWrapper(BoltDeviceInterface);

View File

@@ -12,6 +12,8 @@ const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const Slider = imports.ui.slider; const Slider = imports.ui.slider;
const ALLOW_AMPLIFIED_VOLUME_KEY = 'allow-volume-above-100-percent';
var VOLUME_NOTIFY_ID = 1; var VOLUME_NOTIFY_ID = 1;
// Each Gvc.MixerControl is a connection to PulseAudio, // Each Gvc.MixerControl is a connection to PulseAudio,
@@ -36,6 +38,11 @@ var StreamSlider = new Lang.Class({
this.item = new PopupMenu.PopupBaseMenuItem({ activate: false }); this.item = new PopupMenu.PopupBaseMenuItem({ activate: false });
this._slider = new Slider.Slider(0); this._slider = new Slider.Slider(0);
this._soundSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.sound' });
this._soundSettings.connect('changed::' + ALLOW_AMPLIFIED_VOLUME_KEY, this._amplifySettingsChanged.bind(this));
this._amplifySettingsChanged();
this._slider.connect('value-changed', this._sliderChanged.bind(this)); this._slider.connect('value-changed', this._sliderChanged.bind(this));
this._slider.connect('drag-end', this._notifyVolumeChange.bind(this)); this._slider.connect('drag-end', this._notifyVolumeChange.bind(this));
@@ -135,21 +142,40 @@ var StreamSlider = new Lang.Class({
this.emit('stream-updated'); this.emit('stream-updated');
}, },
_amplifySettingsChanged() {
this._allowAmplified = this._soundSettings.get_boolean(ALLOW_AMPLIFIED_VOLUME_KEY);
if (this._allowAmplified)
this._slider.setMaximumValue(this.getMaxLevel() / 100);
else
this._slider.setMaximumValue(1);
if (this._stream)
this._updateVolume();
},
getIcon() { getIcon() {
if (!this._stream) if (!this._stream)
return null; return null;
let icons = ["audio-volume-muted-symbolic",
"audio-volume-low-symbolic",
"audio-volume-medium-symbolic",
"audio-volume-high-symbolic",
"audio-volume-overamplified-symbolic"];
let volume = this._stream.volume; let volume = this._stream.volume;
let n;
if (this._stream.is_muted || volume <= 0) { if (this._stream.is_muted || volume <= 0) {
return 'audio-volume-muted-symbolic'; n = 0;
} else { } else {
let n = Math.floor(3 * volume / this._control.get_vol_max_norm()) + 1; n = Math.ceil(3 * volume / this._control.get_vol_max_norm());
if (n < 2) if (n < 1)
return 'audio-volume-low-symbolic'; n = 1;
if (n >= 3) else if (n > 3)
return 'audio-volume-high-symbolic'; n = 4;
return 'audio-volume-medium-symbolic';
} }
return icons[n];
}, },
getLevel() { getLevel() {
@@ -157,6 +183,14 @@ var StreamSlider = new Lang.Class({
return null; return null;
return 100 * this._stream.volume / this._control.get_vol_max_norm(); return 100 * this._stream.volume / this._control.get_vol_max_norm();
},
getMaxLevel() {
let maxVolume = this._control.get_vol_max_norm();
if (this._allowAmplified)
maxVolume = this._control.get_vol_max_amplified();
return 100 * maxVolume / this._control.get_vol_max_norm();
} }
}); });
Signals.addSignalMethods(StreamSlider.prototype); Signals.addSignalMethods(StreamSlider.prototype);
@@ -310,6 +344,10 @@ var VolumeMenu = new Lang.Class({
getLevel() { getLevel() {
return this._output.getLevel(); return this._output.getLevel();
},
getMaxLevel() {
return this._output.getMaxLevel();
} }
}); });
@@ -346,8 +384,9 @@ var Indicator = new Lang.Class({
return result; return result;
let gicon = new Gio.ThemedIcon({ name: this._volumeMenu.getIcon() }); let gicon = new Gio.ThemedIcon({ name: this._volumeMenu.getIcon() });
let level = this._volumeMenu.getLevel(); let level = parseInt(this._volumeMenu.getLevel());
Main.osdWindowManager.show(-1, gicon, null, level); let maxLevel = parseInt(this._volumeMenu.getMaxLevel());
Main.osdWindowManager.show(-1, gicon, null, level, maxLevel);
return result; return result;
} }
}); });

View File

@@ -230,14 +230,14 @@ var ViewSelector = new Lang.Class({
Main.wm.addKeybinding('toggle-application-view', Main.wm.addKeybinding('toggle-application-view',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
Shell.ActionMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
this._toggleAppsPage.bind(this)); this._toggleAppsPage.bind(this));
Main.wm.addKeybinding('toggle-overview', Main.wm.addKeybinding('toggle-overview',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
Shell.ActionMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Main.overview.toggle.bind(Main.overview)); Main.overview.toggle.bind(Main.overview));

View File

@@ -3,6 +3,7 @@
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;
const GObject = imports.gi.GObject;
const Lang = imports.lang; const Lang = imports.lang;
const Mainloop = imports.mainloop; const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta; const Meta = imports.gi.Meta;
@@ -34,25 +35,27 @@ var WINDOW_ANIMATION_TIME = 0.25;
var DIM_BRIGHTNESS = -0.3; var DIM_BRIGHTNESS = -0.3;
var DIM_TIME = 0.500; var DIM_TIME = 0.500;
var UNDIM_TIME = 0.250; var UNDIM_TIME = 0.250;
var MOTION_THRESHOLD = 100;
var ONE_SECOND = 1000; // in ms var ONE_SECOND = 1000; // in ms
const GSD_WACOM_BUS_NAME = 'org.gnome.SettingsDaemon.Wacom'; const GSD_WACOM_BUS_NAME = 'org.gnome.SettingsDaemon.Wacom';
const GSD_WACOM_OBJECT_PATH = '/org/gnome/SettingsDaemon/Wacom'; const GSD_WACOM_OBJECT_PATH = '/org/gnome/SettingsDaemon/Wacom';
const GsdWacomIface = '<node name="/org/gnome/SettingsDaemon/Wacom"> \ const GsdWacomIface = `
<interface name="org.gnome.SettingsDaemon.Wacom"> \ <node name="/org/gnome/SettingsDaemon/Wacom">
<method name="SetGroupModeLED"> \ <interface name="org.gnome.SettingsDaemon.Wacom">
<arg name="device_path" direction="in" type="s"/> \ <method name="SetGroupModeLED">
<arg name="group" direction="in" type="u"/> \ <arg name="device_path" direction="in" type="s"/>
<arg name="mode" direction="in" type="u"/> \ <arg name="group" direction="in" type="u"/>
</method> \ <arg name="mode" direction="in" type="u"/>
<method name="SetOLEDLabels"> \ </method>
<arg name="device_path" direction="in" type="s"/> \ <method name="SetOLEDLabels">
<arg name="labels" direction="in" type="as"/> \ <arg name="device_path" direction="in" type="s"/>
</method> \ <arg name="labels" direction="in" type="as"/>
</interface> \ </method>
</node>'; </interface>
</node>`;
const GsdWacomProxy = Gio.DBusProxy.makeProxyWrapper(GsdWacomIface); const GsdWacomProxy = Gio.DBusProxy.makeProxyWrapper(GsdWacomIface);
@@ -213,20 +216,12 @@ var WorkspaceTracker = new Lang.Class({
global.display.connect('restacked', global.display.connect('restacked',
this._windowsRestacked.bind(this)); this._windowsRestacked.bind(this));
this._workspaceSettings = this._getWorkspaceSettings(); this._workspaceSettings = new Gio.Settings({ schema_id: 'org.gnome.mutter' });
this._workspaceSettings.connect('changed::dynamic-workspaces', this._queueCheckWorkspaces.bind(this)); this._workspaceSettings.connect('changed::dynamic-workspaces', this._queueCheckWorkspaces.bind(this));
this._nWorkspacesChanged(); this._nWorkspacesChanged();
}, },
_getWorkspaceSettings() {
let settings = global.get_overrides_settings();
if (settings &&
settings.settings_schema.list_keys().indexOf('dynamic-workspaces') > -1)
return settings;
return new Gio.Settings({ schema_id: 'org.gnome.mutter' });
},
blockUpdates() { blockUpdates() {
this._pauseWorkspaceCheck = true; this._pauseWorkspaceCheck = true;
}, },
@@ -495,13 +490,8 @@ var TouchpadWorkspaceSwitchAction = new Lang.Class({
}, },
_checkActivated() { _checkActivated() {
const MOTION_THRESHOLD = 50;
let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
let dir; let dir;
if ((allowedModes & Main.actionMode) == 0)
return;
if (this._dy < -MOTION_THRESHOLD) if (this._dy < -MOTION_THRESHOLD)
dir = Meta.MotionDirection.DOWN; dir = Meta.MotionDirection.DOWN;
else if (this._dy > MOTION_THRESHOLD) else if (this._dy > MOTION_THRESHOLD)
@@ -511,26 +501,35 @@ var TouchpadWorkspaceSwitchAction = new Lang.Class({
else if (this._dx > MOTION_THRESHOLD) else if (this._dx > MOTION_THRESHOLD)
dir = Meta.MotionDirection.LEFT; dir = Meta.MotionDirection.LEFT;
else else
return; return false;
this.emit('activated', dir); this.emit('activated', dir);
return true;
}, },
_handleEvent(actor, event) { _handleEvent(actor, event) {
let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
if (event.type() != Clutter.EventType.TOUCHPAD_SWIPE) if (event.type() != Clutter.EventType.TOUCHPAD_SWIPE)
return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_PROPAGATE;
if (event.get_touchpad_gesture_finger_count() != 4) if (event.get_touchpad_gesture_finger_count() != 4)
return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_PROPAGATE;
if ((allowedModes & Main.actionMode) == 0)
return Clutter.EVENT_PROPAGATE;
if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.UPDATE) { if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.UPDATE) {
let [dx, dy] = event.get_gesture_motion_delta(); let [dx, dy] = event.get_gesture_motion_delta();
this._dx += dx; // Scale deltas up a bit to make it feel snappier
this._dy += dy; this._dx += dx * 2;
this._dy += dy * 2;
this.emit('motion', this._dx, this._dy);
} else { } else {
if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.END) if ((event.get_gesture_phase() == Clutter.TouchpadGesturePhase.END && ! this._checkActivated()) ||
this._checkActivated(); event.get_gesture_phase() == Clutter.TouchpadGesturePhase.CANCEL)
this.emit('cancel');
this._dx = 0; this._dx = 0;
this._dy = 0; this._dy = 0;
@@ -544,14 +543,14 @@ Signals.addSignalMethods(TouchpadWorkspaceSwitchAction.prototype);
var WorkspaceSwitchAction = new Lang.Class({ var WorkspaceSwitchAction = new Lang.Class({
Name: 'WorkspaceSwitchAction', Name: 'WorkspaceSwitchAction',
Extends: Clutter.SwipeAction, Extends: Clutter.SwipeAction,
Signals: { 'activated': { param_types: [Meta.MotionDirection.$gtype] } }, Signals: { 'activated': { param_types: [Meta.MotionDirection.$gtype] },
'motion': { param_types: [GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE] },
'cancel': { param_types: [] }},
_init() { _init() {
const MOTION_THRESHOLD = 50;
this.parent(); this.parent();
this.set_n_touch_points(4); this.set_n_touch_points(4);
this.set_threshold_trigger_distance(MOTION_THRESHOLD, MOTION_THRESHOLD); this._swept = false;
global.display.connect('grab-op-begin', () => { global.display.connect('grab-op-begin', () => {
this.cancel(); this.cancel();
@@ -561,13 +560,35 @@ var WorkspaceSwitchAction = new Lang.Class({
vfunc_gesture_prepare(actor) { vfunc_gesture_prepare(actor) {
let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW; let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
this._swept = false;
if (!this.parent(actor)) if (!this.parent(actor))
return false; return false;
return (allowedModes & Main.actionMode); return (allowedModes & Main.actionMode);
}, },
vfunc_swept(actor, direction) { vfunc_gesture_progress(actor) {
let [x, y] = this.get_motion_coords(0);
let [xPress, yPress] = this.get_press_coords(0);
this.emit('motion', x - xPress, y - yPress);
return true;
},
vfunc_gesture_cancel(actor) {
if (!this._swept)
this.emit('cancel');
},
vfunc_swipe(actor, direction) {
let [x, y] = this.get_motion_coords(0);
let [xPress, yPress] = this.get_press_coords(0);
if (Math.abs(x - xPress) < MOTION_THRESHOLD &&
Math.abs(y - yPress) < MOTION_THRESHOLD) {
this.emit('cancel');
return;
}
let dir; let dir;
if (direction & Clutter.SwipeDirection.UP) if (direction & Clutter.SwipeDirection.UP)
@@ -579,6 +600,7 @@ var WorkspaceSwitchAction = new Lang.Class({
else if (direction & Clutter.SwipeDirection.RIGHT) else if (direction & Clutter.SwipeDirection.RIGHT)
dir = Meta.MotionDirection.LEFT; dir = Meta.MotionDirection.LEFT;
this._swept = true;
this.emit('activated', dir); this.emit('activated', dir);
} }
}); });
@@ -635,8 +657,8 @@ var AppSwitchAction = new Lang.Class({
if (this.get_n_current_points() == 3) { if (this.get_n_current_points() == 3) {
for (let i = 0; i < this.get_n_current_points(); i++) { for (let i = 0; i < this.get_n_current_points(); i++) {
[startX, startY] = this.get_press_coords(i); let [startX, startY] = this.get_press_coords(i);
[x, y] = this.get_motion_coords(i); let [x, y] = this.get_motion_coords(i);
if (Math.abs(x - startX) > MOTION_THRESHOLD || if (Math.abs(x - startX) > MOTION_THRESHOLD ||
Math.abs(y - startY) > MOTION_THRESHOLD) Math.abs(y - startY) > MOTION_THRESHOLD)
@@ -700,7 +722,14 @@ var WindowManager = new Lang.Class({
this._isWorkspacePrepended = false; this._isWorkspacePrepended = false;
this._switchData = null; this._switchData = null;
this._shellwm.connect('kill-switch-workspace', this._switchWorkspaceDone.bind(this)); this._shellwm.connect('kill-switch-workspace', (shellwm) => {
if (this._switchData) {
if (this._switchData.inProgress)
this._switchWorkspaceDone(shellwm);
else if (!this._switchData.gestureActivated)
this._finishWorkspaceSwitch(this._switchData);
}
});
this._shellwm.connect('kill-window-effects', (shellwm, actor) => { this._shellwm.connect('kill-window-effects', (shellwm, actor) => {
this._minimizeWindowDone(shellwm, actor); this._minimizeWindowDone(shellwm, actor);
this._mapWindowDone(shellwm, actor); this._mapWindowDone(shellwm, actor);
@@ -920,14 +949,14 @@ var WindowManager = new Lang.Class({
this.addKeybinding('open-application-menu', this.addKeybinding('open-application-menu',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
Shell.ActionMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.ActionMode.POPUP, Shell.ActionMode.POPUP,
this._toggleAppMenu.bind(this)); this._toggleAppMenu.bind(this));
this.addKeybinding('toggle-message-tray', this.addKeybinding('toggle-message-tray',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
Shell.ActionMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW | Shell.ActionMode.OVERVIEW |
Shell.ActionMode.POPUP, Shell.ActionMode.POPUP,
@@ -982,12 +1011,16 @@ var WindowManager = new Lang.Class({
false, -1, 1); false, -1, 1);
let gesture = new WorkspaceSwitchAction(); let gesture = new WorkspaceSwitchAction();
gesture.connect('motion', this._switchWorkspaceMotion.bind(this));
gesture.connect('activated', this._actionSwitchWorkspace.bind(this)); gesture.connect('activated', this._actionSwitchWorkspace.bind(this));
gesture.connect('cancel', this._switchWorkspaceCancel.bind(this));
global.stage.add_action(gesture); global.stage.add_action(gesture);
// This is not a normal Clutter.GestureAction, doesn't need add_action() // This is not a normal Clutter.GestureAction, doesn't need add_action()
gesture = new TouchpadWorkspaceSwitchAction(global.stage); gesture = new TouchpadWorkspaceSwitchAction(global.stage);
gesture.connect('motion', this._switchWorkspaceMotion.bind(this));
gesture.connect('activated', this._actionSwitchWorkspace.bind(this)); gesture.connect('activated', this._actionSwitchWorkspace.bind(this));
gesture.connect('cancel', this._switchWorkspaceCancel.bind(this));
gesture = new AppSwitchAction(); gesture = new AppSwitchAction();
gesture.connect('activated', this._switchApp.bind(this)); gesture.connect('activated', this._switchApp.bind(this));
@@ -999,6 +1032,14 @@ var WindowManager = new Lang.Class({
Main.keyboard.show(Main.layoutManager.bottomIndex); Main.keyboard.show(Main.layoutManager.bottomIndex);
}); });
global.stage.add_action(gesture); global.stage.add_action(gesture);
gesture = new EdgeDragAction.EdgeDragAction(St.Side.TOP, mode);
gesture.connect('activated', () => {
let currentWindow = global.display.focus_window;
if (currentWindow)
currentWindow.unmake_fullscreen();
});
global.stage.add_action(gesture);
}, },
_showPadOsd(display, device, settings, imagePath, editionMode, monitorIndex) { _showPadOsd(display, device, settings, imagePath, editionMode, monitorIndex) {
@@ -1008,11 +1049,52 @@ var WindowManager = new Lang.Class({
return this._currentPadOsd.actor; return this._currentPadOsd.actor;
}, },
_switchWorkspaceMotion(action, xRel, yRel) {
let workspaceManager = global.workspace_manager;
let activeWorkspace = workspaceManager.get_active_workspace();
if (!this._switchData)
this._prepareWorkspaceSwitch(activeWorkspace.index(), -1);
if (yRel < 0 && !this._switchData.surroundings[Meta.MotionDirection.DOWN])
yRel = 0;
if (yRel > 0 && !this._switchData.surroundings[Meta.MotionDirection.UP])
yRel = 0;
if (xRel < 0 && !this._switchData.surroundings[Meta.MotionDirection.RIGHT])
xRel = 0;
if (xRel > 0 && !this._switchData.surroundings[Meta.MotionDirection.LEFT])
xRel = 0;
this._switchData.container.set_position(xRel, yRel);
},
_switchWorkspaceCancel() {
if (!this._switchData || this._switchData.inProgress)
return;
let switchData = this._switchData;
this._switchData = null;
Tweener.addTween(switchData.container,
{ x: 0,
y: 0,
time: WINDOW_ANIMATION_TIME,
transition: 'easeOutQuad',
onComplete: this._finishWorkspaceSwitch,
onCompleteScope: this,
onCompleteParams: [switchData],
});
},
_actionSwitchWorkspace(action, direction) { _actionSwitchWorkspace(action, direction) {
let workspaceManager = global.workspace_manager; let workspaceManager = global.workspace_manager;
let activeWorkspace = workspaceManager.get_active_workspace(); let activeWorkspace = workspaceManager.get_active_workspace();
let newWs = activeWorkspace.get_neighbor(direction); let newWs = activeWorkspace.get_neighbor(direction);
if (newWs == activeWorkspace) {
this._switchWorkspaceCancel();
} else {
this._switchData.gestureActivated = true;
this.actionMoveWorkspace(newWs); this.actionMoveWorkspace(newWs);
}
}, },
_lookupIndex(windows, metaWindow) { _lookupIndex(windows, metaWindow) {
@@ -1692,63 +1774,104 @@ var WindowManager = new Lang.Class({
if (this._switchData == null) if (this._switchData == null)
return; return;
// Update stacking of windows in inGroup (aka the workspace we are
// switching to). Windows in outGroup are about to be hidden anyway,
// so we just ignore them here.
let windows = global.get_window_actors(); let windows = global.get_window_actors();
let sibling = null; let lastCurSibling = null;
let lastDirSibling = [];
for (let i = 0; i < windows.length; i++) { for (let i = 0; i < windows.length; i++) {
if (windows[i].get_parent() != this._switchData.inGroup) if (windows[i].get_parent() == this._switchData.curGroup) {
this._switchData.curGroup.set_child_above_sibling(windows[i], lastCurSibling);
lastCurSibling = windows[i];
} else {
for (let dir of Object.values(Meta.MotionDirection)) {
let info = this._switchData.surroundings[dir];
if (!info || windows[i].get_parent() != info.actor)
continue; continue;
this._switchData.inGroup.set_child_above_sibling(windows[i], sibling); let sibling = lastDirSibling[dir];
sibling = windows[i]; if (sibling == undefined)
sibling = null;
info.actor.set_child_above_sibling(windows[i], sibling);
lastDirSibling[dir] = windows[i];
break;
}
}
} }
}, },
_switchWorkspace(shellwm, from, to, direction) { _getPositionForDirection(direction) {
if (!Main.sessionMode.hasWorkspaces || !this._shouldAnimate()) {
shellwm.completed_switch_workspace();
return;
}
let windows = global.get_window_actors();
/* @direction is the direction that the "camera" moves, so the
* screen contents have to move one screen's worth in the
* opposite direction.
*/
let xDest = 0, yDest = 0; let xDest = 0, yDest = 0;
if (direction == Meta.MotionDirection.UP || if (direction == Meta.MotionDirection.UP ||
direction == Meta.MotionDirection.UP_LEFT || direction == Meta.MotionDirection.UP_LEFT ||
direction == Meta.MotionDirection.UP_RIGHT) direction == Meta.MotionDirection.UP_RIGHT)
yDest = global.screen_height - Main.panel.actor.height; yDest = -global.screen_height + Main.panel.actor.height;
else if (direction == Meta.MotionDirection.DOWN || else if (direction == Meta.MotionDirection.DOWN ||
direction == Meta.MotionDirection.DOWN_LEFT || direction == Meta.MotionDirection.DOWN_LEFT ||
direction == Meta.MotionDirection.DOWN_RIGHT) direction == Meta.MotionDirection.DOWN_RIGHT)
yDest = -global.screen_height + Main.panel.actor.height; yDest = global.screen_height - Main.panel.actor.height;
if (direction == Meta.MotionDirection.LEFT || if (direction == Meta.MotionDirection.LEFT ||
direction == Meta.MotionDirection.UP_LEFT || direction == Meta.MotionDirection.UP_LEFT ||
direction == Meta.MotionDirection.DOWN_LEFT) direction == Meta.MotionDirection.DOWN_LEFT)
xDest = global.screen_width; xDest = -global.screen_width;
else if (direction == Meta.MotionDirection.RIGHT || else if (direction == Meta.MotionDirection.RIGHT ||
direction == Meta.MotionDirection.UP_RIGHT || direction == Meta.MotionDirection.UP_RIGHT ||
direction == Meta.MotionDirection.DOWN_RIGHT) direction == Meta.MotionDirection.DOWN_RIGHT)
xDest = -global.screen_width; xDest = global.screen_width;
let switchData = {}; return [xDest, yDest];
this._switchData = switchData; },
switchData.inGroup = new Clutter.Actor();
switchData.outGroup = new Clutter.Actor(); _prepareWorkspaceSwitch(from, to, direction) {
switchData.movingWindowBin = new Clutter.Actor(); if (this._switchData)
switchData.windows = []; return;
let wgroup = global.window_group; let wgroup = global.window_group;
wgroup.add_actor(switchData.inGroup); let windows = global.get_window_actors();
wgroup.add_actor(switchData.outGroup); let switchData = {};
this._switchData = switchData;
switchData.curGroup = new Clutter.Actor();
switchData.movingWindowBin = new Clutter.Actor();
switchData.windows = [];
switchData.surroundings = {};
switchData.gestureActivated = false;
switchData.inProgress = false;
switchData.container = new Clutter.Actor();
switchData.container.add_actor(switchData.curGroup);
wgroup.add_actor(switchData.movingWindowBin); wgroup.add_actor(switchData.movingWindowBin);
wgroup.add_actor(switchData.container);
let workspaceManager = global.workspace_manager;
let curWs = workspaceManager.get_workspace_by_index (from);
for (let dir of Object.values(Meta.MotionDirection)) {
let ws = null;
if (to < 0)
ws = curWs.get_neighbor(dir);
else if (dir == direction)
ws = workspaceManager.get_workspace_by_index(to);
if (ws == null || ws == curWs) {
switchData.surroundings[dir] = null;
continue;
}
let info = { index: ws.index(),
actor: new Clutter.Actor() };
switchData.surroundings[dir] = info;
switchData.container.add_actor(info.actor);
info.actor.raise_top();
let [x, y] = this._getPositionForDirection(dir);
info.actor.set_position(x, y);
}
switchData.movingWindowBin.raise_top();
for (let i = 0; i < windows.length; i++) { for (let i = 0; i < windows.length; i++) {
let actor = windows[i]; let actor = windows[i];
@@ -1769,20 +1892,70 @@ var WindowManager = new Lang.Class({
actor.reparent(switchData.movingWindowBin); actor.reparent(switchData.movingWindowBin);
} else if (window.get_workspace().index() == from) { } else if (window.get_workspace().index() == from) {
switchData.windows.push(record); switchData.windows.push(record);
actor.reparent(switchData.outGroup); actor.reparent(switchData.curGroup);
} else if (window.get_workspace().index() == to) { } else {
let visible = false;
for (let dir of Object.values(Meta.MotionDirection)) {
let info = switchData.surroundings[dir];
if (!info || info.index != window.get_workspace().index())
continue;
switchData.windows.push(record); switchData.windows.push(record);
actor.reparent(switchData.inGroup); actor.reparent(info.actor);
actor.show(); visible = true;
} break;
} }
switchData.inGroup.set_position(-xDest, -yDest); actor.visible = visible;
switchData.inGroup.raise_top(); }
}
},
switchData.movingWindowBin.raise_top(); _finishWorkspaceSwitch(switchData) {
this._switchData = null;
Tweener.addTween(switchData.outGroup, for (let i = 0; i < switchData.windows.length; i++) {
let w = switchData.windows[i];
if (w.window.is_destroyed()) // Window gone
continue;
w.window.reparent(w.parent);
if (w.window.get_meta_window().get_workspace() !=
global.workspace_manager.get_active_workspace())
w.window.hide();
}
Tweener.removeTweens(switchData.container);
switchData.container.destroy();
switchData.movingWindowBin.destroy();
this._movingWindow = null;
},
_switchWorkspace(shellwm, from, to, direction) {
if (!Main.sessionMode.hasWorkspaces || !this._shouldAnimate()) {
shellwm.completed_switch_workspace();
return;
}
// If we come from a gesture, switchData will already be set,
// and we don't want to overwrite it.
if (!this._switchData)
this._prepareWorkspaceSwitch(from, to, direction);
this._switchData.inProgress = true;
let [xDest, yDest] = this._getPositionForDirection(direction);
/* @direction is the direction that the "camera" moves, so the
* screen contents have to move one screen's worth in the
* opposite direction.
*/
xDest = -xDest;
yDest = -yDest;
Tweener.addTween(this._switchData.container,
{ x: xDest, { x: xDest,
y: yDest, y: yDest,
time: WINDOW_ANIMATION_TIME, time: WINDOW_ANIMATION_TIME,
@@ -1791,39 +1964,10 @@ var WindowManager = new Lang.Class({
onCompleteScope: this, onCompleteScope: this,
onCompleteParams: [shellwm] onCompleteParams: [shellwm]
}); });
Tweener.addTween(switchData.inGroup,
{ x: 0,
y: 0,
time: WINDOW_ANIMATION_TIME,
transition: 'easeOutQuad'
});
}, },
_switchWorkspaceDone(shellwm) { _switchWorkspaceDone(shellwm) {
let switchData = this._switchData; this._finishWorkspaceSwitch(this._switchData);
if (!switchData)
return;
this._switchData = null;
for (let i = 0; i < switchData.windows.length; i++) {
let w = switchData.windows[i];
if (w.window.is_destroyed()) // Window gone
continue;
if (w.window.get_parent() == switchData.outGroup) {
w.window.reparent(w.parent);
w.window.hide();
} else
w.window.reparent(w.parent);
}
Tweener.removeTweens(switchData.inGroup);
Tweener.removeTweens(switchData.outGroup);
switchData.inGroup.destroy();
switchData.outGroup.destroy();
switchData.movingWindowBin.destroy();
if (this._movingWindow)
this._movingWindow = null;
shellwm.completed_switch_workspace(); shellwm.completed_switch_workspace();
}, },

View File

@@ -179,6 +179,7 @@ var WindowClone = new Lang.Class({
this.inDrag = false; this.inDrag = false;
this._selected = false; this._selected = false;
this._closeRequested = false;
}, },
set slot(slot) { set slot(slot) {
@@ -194,7 +195,6 @@ var WindowClone = new Lang.Class({
deleteAll() { deleteAll() {
// Delete all windows, starting from the bottom-most (most-modal) one // Delete all windows, starting from the bottom-most (most-modal) one
let windows = this.actor.get_children(); let windows = this.actor.get_children();
for (let i = windows.length - 1; i >= 1; i--) { for (let i = windows.length - 1; i >= 1; i--) {
let realWindow = windows[i].source; let realWindow = windows[i].source;
@@ -204,11 +204,24 @@ var WindowClone = new Lang.Class({
} }
this.metaWindow.delete(global.get_current_time()); this.metaWindow.delete(global.get_current_time());
this._closeRequested = true;
}, },
addAttachedDialog(win) { addDialog(win) {
let parent = win.get_transient_for();
while (parent.is_attached_dialog())
parent = parent.get_transient_for();
// Display dialog if it is attached to our metaWindow
if (win.is_attached_dialog() && parent == this.metaWindow) {
this._doAddAttachedDialog(win, win.get_compositor_private()); this._doAddAttachedDialog(win, win.get_compositor_private());
this._onMetaWindowSizeChanged(); this._onMetaWindowSizeChanged();
}
// The dialog popped up after the user tried to close the window,
// assume it's a close confirmation and leave the overview
if (this._closeRequested)
this._activate();
}, },
hasAttachedDialogs() { hasAttachedDialogs() {
@@ -462,14 +475,12 @@ var WindowOverlay = new Lang.Class({
button._overlap = 0; button._overlap = 0;
this._idleToggleCloseId = 0; this._idleToggleCloseId = 0;
button.connect('clicked', this._closeWindow.bind(this)); button.connect('clicked', () => this._windowClone.deleteAll());
windowClone.actor.connect('destroy', this._onDestroy.bind(this)); windowClone.actor.connect('destroy', this._onDestroy.bind(this));
windowClone.connect('show-chrome', this._onShowChrome.bind(this)); windowClone.connect('show-chrome', this._onShowChrome.bind(this));
windowClone.connect('hide-chrome', this._onHideChrome.bind(this)); windowClone.connect('hide-chrome', this._onHideChrome.bind(this));
this._windowAddedId = 0;
button.hide(); button.hide();
title.hide(); title.hide();
@@ -590,43 +601,12 @@ var WindowOverlay = new Lang.Class({
Tweener.addTween(actor, params); Tweener.addTween(actor, params);
}, },
_closeWindow(actor) {
let metaWindow = this._windowClone.metaWindow;
this._workspace = metaWindow.get_workspace();
this._windowAddedId = this._workspace.connect('window-added',
this._onWindowAdded.bind(this));
this._windowClone.deleteAll();
},
_windowCanClose() { _windowCanClose() {
return this._windowClone.metaWindow.can_close() && return this._windowClone.metaWindow.can_close() &&
!this._windowClone.hasAttachedDialogs(); !this._windowClone.hasAttachedDialogs();
}, },
_onWindowAdded(workspace, win) {
let metaWindow = this._windowClone.metaWindow;
if (win.get_transient_for() == metaWindow) {
workspace.disconnect(this._windowAddedId);
this._windowAddedId = 0;
// use an idle handler to avoid mapping problems -
// see comment in Workspace._windowAdded
let id = Mainloop.idle_add(() => {
this._windowClone.emit('selected');
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(id, '[gnome-shell] this._windowClone.emit');
}
},
_onDestroy() { _onDestroy() {
if (this._windowAddedId > 0) {
this._workspace.disconnect(this._windowAddedId);
this._windowAddedId = 0;
}
if (this._idleToggleCloseId > 0) { if (this._idleToggleCloseId > 0) {
Mainloop.source_remove(this._idleToggleCloseId); Mainloop.source_remove(this._idleToggleCloseId);
this._idleToggleCloseId = 0; this._idleToggleCloseId = 0;
@@ -1516,21 +1496,17 @@ var Workspace = new Lang.Class({
return; return;
if (!this._isOverviewWindow(win)) { if (!this._isOverviewWindow(win)) {
if (metaWin.is_attached_dialog()) { if (metaWin.get_transient_for() == null)
let parent = metaWin.get_transient_for();
while (parent.is_attached_dialog())
parent = metaWin.get_transient_for();
let idx = this._lookupIndex (parent);
if (idx < 0) {
// parent was not created yet, it will take care
// of the dialog when created
return; return;
}
let clone = this._windows[idx]; // Let the top-most ancestor handle all transients
clone.addAttachedDialog(metaWin); let parent = metaWin.find_root_ancestor();
} let clone = this._windows.find(c => c.metaWindow == parent);
// If no clone was found, the parent hasn't been created yet
// and will take care of the dialog when added
if (clone)
clone.addDialog(metaWin);
return; return;
} }

View File

@@ -416,7 +416,7 @@ var WorkspaceThumbnail = new Lang.Class({
} else if (metaWin.is_attached_dialog()) { } else if (metaWin.is_attached_dialog()) {
let parent = metaWin.get_transient_for(); let parent = metaWin.get_transient_for();
while (parent.is_attached_dialog()) while (parent.is_attached_dialog())
parent = metaWin.get_transient_for(); parent = parent.get_transient_for();
let idx = this._lookupIndex (parent); let idx = this._lookupIndex (parent);
if (idx < 0) { if (idx < 0) {
@@ -678,7 +678,11 @@ var ThumbnailsBox = new Lang.Class({
this._settings.connect('changed::dynamic-workspaces', this._settings.connect('changed::dynamic-workspaces',
this._updateSwitcherVisibility.bind(this)); this._updateSwitcherVisibility.bind(this));
Main.layoutManager.connect('monitors-changed', this._rebuildThumbnails.bind(this)); Main.layoutManager.connect('monitors-changed', () => {
this._destroyThumbnails();
if (Main.overview.visible)
this._createThumbnails();
});
this._switchWorkspaceNotifyId = 0; this._switchWorkspaceNotifyId = 0;
this._nWorkspacesNotifyId = 0; this._nWorkspacesNotifyId = 0;
@@ -881,10 +885,6 @@ var ThumbnailsBox = new Lang.Class({
Main.overview.connect('windows-restacked', Main.overview.connect('windows-restacked',
this._syncStacking.bind(this)); this._syncStacking.bind(this));
this._workareasChangedId =
global.display.connect('workareas-changed',
this._rebuildThumbnails.bind(this));
this._targetScale = 0; this._targetScale = 0;
this._scale = 0; this._scale = 0;
this._pendingScaleUpdate = false; this._pendingScaleUpdate = false;
@@ -918,24 +918,12 @@ var ThumbnailsBox = new Lang.Class({
this._syncStackingId = 0; this._syncStackingId = 0;
} }
if (this._workareasChangedId > 0) {
global.display.disconnect(this._workareasChangedId);
this._workareasChangedId = 0;
}
for (let w = 0; w < this._thumbnails.length; w++) for (let w = 0; w < this._thumbnails.length; w++)
this._thumbnails[w].destroy(); this._thumbnails[w].destroy();
this._thumbnails = []; this._thumbnails = [];
this._porthole = null; this._porthole = null;
}, },
_rebuildThumbnails() {
this._destroyThumbnails();
if (Main.overview.visible)
this._createThumbnails();
},
_workspacesChanged() { _workspacesChanged() {
let validThumbnails = let validThumbnails =
this._thumbnails.filter(t => t.state <= ThumbnailState.NORMAL); this._thumbnails.filter(t => t.state <= ThumbnailState.NORMAL);

View File

@@ -1,6 +1,6 @@
project('gnome-shell', 'c', project('gnome-shell', 'c',
version: '3.29.4', version: '3.30.0',
meson_version: '>= 0.42.0', meson_version: '>= 0.47.0',
license: 'GPLv2+' license: 'GPLv2+'
) )
@@ -23,9 +23,9 @@ gi_req = '>= 1.49.1'
gjs_req = '>= 1.47.0' gjs_req = '>= 1.47.0'
gtk_req = '>= 3.15.0' gtk_req = '>= 3.15.0'
json_glib_req = '>= 0.13.2' json_glib_req = '>= 0.13.2'
mutter_req = '>= 3.29.4' mutter_req = '>= 3.30.0'
polkit_req = '>= 0.100' polkit_req = '>= 0.100'
schemas_req = '>= 3.21.3' schemas_req = '>= 3.27.90'
startup_req = '>= 0.11' startup_req = '>= 0.11'
ibus_req = '>= 1.5.2' ibus_req = '>= 1.5.2'
@@ -44,10 +44,12 @@ datadir = join_paths(prefix, get_option('datadir'))
libdir = join_paths(prefix, get_option('libdir')) libdir = join_paths(prefix, get_option('libdir'))
libexecdir = join_paths(prefix, get_option('libexecdir')) libexecdir = join_paths(prefix, get_option('libexecdir'))
mandir = join_paths(prefix, get_option('mandir')) mandir = join_paths(prefix, get_option('mandir'))
sysconfdir = join_paths(prefix, get_option('sysconfdir'))
pkgdatadir = join_paths(datadir, meson.project_name()) pkgdatadir = join_paths(datadir, meson.project_name())
pkglibdir = join_paths(libdir, meson.project_name()) pkglibdir = join_paths(libdir, meson.project_name())
autostartdir = join_paths(sysconfdir, 'xdg', 'autostart')
convertdir = join_paths(datadir, 'GConf', 'gsettings') convertdir = join_paths(datadir, 'GConf', 'gsettings')
desktopdir = join_paths(datadir, 'applications') desktopdir = join_paths(datadir, 'applications')
ifacedir = join_paths(datadir, 'dbus-1', 'interfaces') ifacedir = join_paths(datadir, 'dbus-1', 'interfaces')
@@ -161,6 +163,11 @@ cdata.set_quoted('PACKAGE_VERSION', meson.project_version())
cdata.set('HAVE_NETWORKMANAGER', have_networkmanager) cdata.set('HAVE_NETWORKMANAGER', have_networkmanager)
cdata.set('HAVE_SYSTEMD', have_systemd) cdata.set('HAVE_SYSTEMD', have_systemd)
# New API added in glib-2.57.2
cdata.set('HAVE_GIO_DESKTOP_LAUNCH_URIS_WITH_FDS',
cc.has_function('g_desktop_app_info_launch_uris_as_manager_with_fds',
dependencies : gio_dep)
)
cdata.set('HAVE_FDWALK', cc.has_function('fdwalk')) cdata.set('HAVE_FDWALK', cc.has_function('fdwalk'))
cdata.set('HAVE_MALLINFO', cc.has_function('mallinfo')) cdata.set('HAVE_MALLINFO', cc.has_function('mallinfo'))
cdata.set('HAVE_SYS_RESOURCE_H', cc.has_header('sys/resource.h')) cdata.set('HAVE_SYS_RESOURCE_H', cc.has_header('sys/resource.h'))
@@ -168,6 +175,10 @@ cdata.set('HAVE__NL_TIME_FIRST_WEEKDAY',
cc.has_header_symbol('langinfo.h', '_NL_TIME_FIRST_WEEKDAY') cc.has_header_symbol('langinfo.h', '_NL_TIME_FIRST_WEEKDAY')
) )
cdata.set('HAVE_FDWALK',
cc.has_function('fdwalk')
)
config_h = configure_file( config_h = configure_file(
input: 'config.h.meson', input: 'config.h.meson',
output: 'config.h', output: 'config.h',
@@ -194,6 +205,7 @@ subdir('src')
subdir('po') subdir('po')
subdir('data') subdir('data')
subdir('tests') subdir('tests')
subdir('tools')
if get_option('gtk_doc') if get_option('gtk_doc')
subdir('docs/reference') subdir('docs/reference')

View File

@@ -40,6 +40,7 @@ js/ui/messageList.js
js/ui/messageTray.js js/ui/messageTray.js
js/ui/mpris.js js/ui/mpris.js
js/ui/notificationDaemon.js js/ui/notificationDaemon.js
js/ui/osdWindow.js
js/ui/overviewControls.js js/ui/overviewControls.js
js/ui/overview.js js/ui/overview.js
js/ui/padOsd.js js/ui/padOsd.js

228
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: 2018-04-13 19:54+0000\n" "POT-Creation-Date: 2018-08-01 18:08+0000\n"
"PO-Revision-Date: 2018-03-10 21:24+0100\n" "PO-Revision-Date: 2018-03-10 21:24+0100\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"
@@ -299,36 +299,36 @@ msgstr ""
"Si és «true» (cert), només les finestres de l'espai de treball actual es " "Si és «true» (cert), només les finestres de l'espai de treball actual es "
"mostren en el canviador. En cas contrari, es mostren totes les finestres." "mostren en el canviador. En cas contrari, es mostren totes les finestres."
#: data/org.gnome.shell.gschema.xml.in:197 #: data/org.gnome.shell.gschema.xml.in:198
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
msgstr "Adjunta el diàleg modal a la finestra pare" msgstr "Adjunta el diàleg modal a la finestra pare"
#: data/org.gnome.shell.gschema.xml.in:198 #: data/org.gnome.shell.gschema.xml.in:199
#: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:208
#: data/org.gnome.shell.gschema.xml.in:215 #: data/org.gnome.shell.gschema.xml.in:216
#: data/org.gnome.shell.gschema.xml.in:223 #: data/org.gnome.shell.gschema.xml.in:224
#: data/org.gnome.shell.gschema.xml.in:231 #: data/org.gnome.shell.gschema.xml.in:232
msgid "" msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell." "This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "" msgstr ""
"Si s'executa el GNOME Shell, aquesta clau sobreescriu la clau «org.gnome." "Si s'executa el GNOME Shell, aquesta clau sobreescriu la clau «org.gnome."
"mutter»." "mutter»."
#: data/org.gnome.shell.gschema.xml.in:206 #: data/org.gnome.shell.gschema.xml.in:207
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "" msgstr ""
"Habilita el mòsaic a les vores en deixar anar les finestres a les vores de " "Habilita el mòsaic a les vores en deixar anar les finestres a les vores de "
"la pantalla" "la pantalla"
#: data/org.gnome.shell.gschema.xml.in:214 #: data/org.gnome.shell.gschema.xml.in:215
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "Els espais de treball es gestionen dinàmicament" msgstr "Els espais de treball es gestionen dinàmicament"
#: data/org.gnome.shell.gschema.xml.in:222 #: data/org.gnome.shell.gschema.xml.in:223
msgid "Workspaces only on primary monitor" msgid "Workspaces only on primary monitor"
msgstr "Només en el monitor principal hi ha espais de treball" msgstr "Només en el monitor principal hi ha espais de treball"
#: data/org.gnome.shell.gschema.xml.in:230 #: data/org.gnome.shell.gschema.xml.in:231
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "" msgstr ""
"Retarda el canvi del focus, quan s'està en mode ratolí, fins que el punter " "Retarda el canvi del focus, quan s'està en mode ratolí, fins que el punter "
@@ -369,20 +369,20 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Entra" msgstr "Entra"
#: js/gdm/loginDialog.js:315 #: js/gdm/loginDialog.js:319
msgid "Choose Session" msgid "Choose Session"
msgstr "Trieu la sessió" msgstr "Trieu la sessió"
#. translators: this message is shown below the user list on the #. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for #. login screen. It can be activated to reveal an entry for
#. manually entering the username. #. manually entering the username.
#: js/gdm/loginDialog.js:458 #: js/gdm/loginDialog.js:462
msgid "Not listed?" msgid "Not listed?"
msgstr "No esteu llistat?" msgstr "No esteu llistat?"
#. Translators: this message is shown below the username entry field #. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm #. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:887 #: js/gdm/loginDialog.js:891
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(p. ex. l'usuari o %s)" msgstr "(p. ex. l'usuari o %s)"
@@ -390,12 +390,12 @@ msgstr "(p. ex. l'usuari o %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243 #: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243
#: js/ui/components/networkAgent.js:261 #: js/ui/components/networkAgent.js:261
msgid "Username: " msgid "Username: "
msgstr "Nom d'usuari:" msgstr "Nom d'usuari:"
#: js/gdm/loginDialog.js:1228 #: js/gdm/loginDialog.js:1234
msgid "Login Window" msgid "Login Window"
msgstr "Finestra d'entrada" msgstr "Finestra d'entrada"
@@ -408,7 +408,7 @@ msgstr "Error d'autenticació"
#. as a cue to display our own message. #. as a cue to display our own message.
#. Translators: this message is shown below the password entry field #. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead #. to indicate the user can swipe their finger instead
#: js/gdm/util.js:482 #: js/gdm/util.js:485
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(o passeu el dit)" msgstr "(o passeu el dit)"
@@ -649,23 +649,23 @@ msgstr "Freqüent"
msgid "All" msgid "All"
msgstr "Totes" msgstr "Totes"
#: js/ui/appDisplay.js:1886 #: js/ui/appDisplay.js:1890
msgid "New Window" msgid "New Window"
msgstr "Finestra nova" msgstr "Finestra nova"
#: js/ui/appDisplay.js:1900 #: js/ui/appDisplay.js:1904
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:1927 js/ui/dash.js:285 #: js/ui/appDisplay.js:1931 js/ui/dash.js:285
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Suprimeix dels preferits" msgstr "Suprimeix dels preferits"
#: js/ui/appDisplay.js:1933 #: js/ui/appDisplay.js:1937
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Afegeix als preferits" msgstr "Afegeix als preferits"
#: js/ui/appDisplay.js:1943 #: js/ui/appDisplay.js:1947
msgid "Show Details" msgid "Show Details"
msgstr "Mostra els detalls" msgstr "Mostra els detalls"
@@ -695,7 +695,7 @@ msgstr "Auriculars"
msgid "Headset" msgid "Headset"
msgstr "Auriculars amb micròfon" msgstr "Auriculars amb micròfon"
#: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221 #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:255
msgid "Microphone" msgid "Microphone"
msgstr "Micròfon" msgstr "Micròfon"
@@ -707,7 +707,7 @@ msgstr "Canvia el fons de l'escriptori…"
msgid "Display Settings" msgid "Display Settings"
msgstr "Paràmetres de la pantalla" msgstr "Paràmetres de la pantalla"
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:264 #: js/ui/backgroundMenu.js:22
msgid "Settings" msgid "Settings"
msgstr "Paràmetres" msgstr "Paràmetres"
@@ -812,35 +812,35 @@ msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Tot el dia" msgstr "Tot el dia"
#: js/ui/calendar.js:864 #: js/ui/calendar.js:866
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A %-d %B" msgstr "%A %-d %B"
#: js/ui/calendar.js:868 #: js/ui/calendar.js:870
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A %d %B de %Y" msgstr "%A %d %B de %Y"
#: js/ui/calendar.js:1086 #: js/ui/calendar.js:1100
msgid "No Notifications" msgid "No Notifications"
msgstr "Cap notificació" msgstr "Cap notificació"
#: js/ui/calendar.js:1089 #: js/ui/calendar.js:1103
msgid "No Events" msgid "No Events"
msgstr "Cap cita" msgstr "Cap cita"
#: js/ui/calendar.js:1117 #: js/ui/calendar.js:1131
msgid "Clear All" msgid "Clear All"
msgstr "Neteja-ho tot" msgstr "Neteja-ho tot"
#. Translators: %s is an application name #. Translators: %s is an application name
#: js/ui/closeDialog.js:44 #: js/ui/closeDialog.js:47
#, javascript-format #, javascript-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
msgstr "«%s» no està responent." msgstr "«%s» no està responent."
#: js/ui/closeDialog.js:45 #: js/ui/closeDialog.js:48
msgid "" msgid ""
"You may choose to wait a short while for it to continue or force the " "You may choose to wait a short while for it to continue or force the "
"application to quit entirely." "application to quit entirely."
@@ -848,11 +848,11 @@ msgstr ""
"Podeu esperar un moment perquè continuï o podeu forçar-ne la sortida " "Podeu esperar un moment perquè continuï o podeu forçar-ne la sortida "
"completa." "completa."
#: js/ui/closeDialog.js:61 #: js/ui/closeDialog.js:64
msgid "Force Quit" msgid "Force Quit"
msgstr "Força la sortida" msgstr "Força la sortida"
#: js/ui/closeDialog.js:64 #: js/ui/closeDialog.js:67
msgid "Wait" msgid "Wait"
msgstr "Espera" msgstr "Espera"
@@ -869,7 +869,7 @@ msgstr "S'ha desconnectat un dispositiu extern"
msgid "Open with %s" msgid "Open with %s"
msgstr "Obre amb %s" msgstr "Obre amb %s"
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295 #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297
msgid "Password:" msgid "Password:"
msgstr "Contrasenya:" msgstr "Contrasenya:"
@@ -906,11 +906,11 @@ msgstr "Contrasenya de la clau privada:"
msgid "Service: " msgid "Service: "
msgstr "Servei:" msgstr "Servei:"
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664
msgid "Authentication required by wireless network" msgid "Authentication required by wireless network"
msgstr "La xarxa sense fil requereix autenticació" msgstr "La xarxa sense fil requereix autenticació"
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660 #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@@ -919,7 +919,7 @@ msgstr ""
"Per accedir a la xarxa sense fil «%s» calen les contrasenyes o les claus " "Per accedir a la xarxa sense fil «%s» calen les contrasenyes o les claus "
"d'encriptació." "d'encriptació."
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663 #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Autenticació 802.1X amb fil" msgstr "Autenticació 802.1X amb fil"
@@ -927,15 +927,15 @@ msgstr "Autenticació 802.1X amb fil"
msgid "Network name: " msgid "Network name: "
msgstr "Nom de la xarxa: " msgstr "Nom de la xarxa: "
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667 #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Autenticació DSL" msgstr "Autenticació DSL"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673 #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678
msgid "PIN code required" msgid "PIN code required"
msgstr "Cal que introduïu el codi PIN" msgstr "Cal que introduïu el codi PIN"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674 #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Cal que introduïu el codi PIN del dispositiu de banda ampla mòbil" msgstr "Cal que introduïu el codi PIN del dispositiu de banda ampla mòbil"
@@ -943,17 +943,17 @@ msgstr "Cal que introduïu el codi PIN del dispositiu de banda ampla mòbil"
msgid "PIN: " msgid "PIN: "
msgstr "PIN: " msgstr "PIN: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680 #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685
msgid "Mobile broadband network password" msgid "Mobile broadband network password"
msgstr "Contrasenya de la xarxa de banda ampla mòbil" msgstr "Contrasenya de la xarxa de banda ampla mòbil"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664 #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681 #: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "Cal introduir una contrasenya per connectar-vos a «%s»." msgstr "Cal introduir una contrasenya per connectar-vos a «%s»."
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704
msgid "Network Manager" msgid "Network Manager"
msgstr "Gestor de connexions de xarxa" msgstr "Gestor de connexions de xarxa"
@@ -973,7 +973,7 @@ msgstr "Autentica"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327 #: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327
msgid "Sorry, that didnt work. Please try again." msgid "Sorry, that didnt work. Please try again."
msgstr "No ha funcionat. Torneu-ho a provar." msgstr "No ha funcionat. Torneu-ho a provar."
@@ -1308,13 +1308,13 @@ msgid "Leave On"
msgstr "Deixa-ho actiu" msgstr "Deixa-ho actiu"
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143 #: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:1281 #: js/ui/status/network.js:1294
msgid "Turn On" msgid "Turn On"
msgstr "Activa" msgstr "Activa"
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143 #: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:154 js/ui/status/network.js:337 #: js/ui/status/network.js:154 js/ui/status/network.js:337
#: js/ui/status/network.js:1281 js/ui/status/network.js:1396 #: js/ui/status/network.js:1294 js/ui/status/network.js:1409
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90 #: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117 #: js/ui/status/rfkill.js:117
msgid "Turn Off" msgid "Turn Off"
@@ -1376,7 +1376,7 @@ msgstr "Mostra el codi font"
msgid "Web Page" msgid "Web Page"
msgstr "Pàgina web" msgstr "Pàgina web"
#: js/ui/messageTray.js:1493 #: js/ui/messageTray.js:1495
msgid "System Information" msgid "System Information"
msgstr "Informació de l'ordinador" msgstr "Informació de l'ordinador"
@@ -1388,6 +1388,10 @@ msgstr "Artista desconegut"
msgid "Unknown title" msgid "Unknown title"
msgstr "Títol desconegut" msgstr "Títol desconegut"
#: js/ui/osdWindow.js:32 js/ui/status/volume.js:204
msgid "Volume"
msgstr "Volum"
#: js/ui/overview.js:83 #: js/ui/overview.js:83
msgid "Undo" msgid "Undo"
msgstr "Desfés" msgstr "Desfés"
@@ -1430,42 +1434,42 @@ msgstr "Assigna la pulsació de tecla"
msgid "Done" msgid "Done"
msgstr "Fet" msgstr "Fet"
#: js/ui/padOsd.js:740 #: js/ui/padOsd.js:742
msgid "Edit…" msgid "Edit…"
msgstr "Edita…" msgstr "Edita…"
#: js/ui/padOsd.js:782 js/ui/padOsd.js:887 #: js/ui/padOsd.js:784 js/ui/padOsd.js:889
msgid "None" msgid "None"
msgstr "Cap" msgstr "Cap"
#: js/ui/padOsd.js:841 #: js/ui/padOsd.js:843
msgid "Press a button to configure" msgid "Press a button to configure"
msgstr "Premeu un botó per a configurar" msgstr "Premeu un botó per a configurar"
#: js/ui/padOsd.js:842 #: js/ui/padOsd.js:844
msgid "Press Esc to exit" msgid "Press Esc to exit"
msgstr "Premeu Esc per sortir" msgstr "Premeu Esc per sortir"
#: js/ui/padOsd.js:845 #: js/ui/padOsd.js:847
msgid "Press any key to exit" msgid "Press any key to exit"
msgstr "Premeu qualsevol tecla per sortir" msgstr "Premeu qualsevol tecla per sortir"
#: js/ui/panel.js:355 #: js/ui/panel.js:356
msgid "Quit" msgid "Quit"
msgstr "Surt" msgstr "Surt"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: js/ui/panel.js:411 #: js/ui/panel.js:412
msgid "Activities" msgid "Activities"
msgstr "Activitats" msgstr "Activitats"
#: js/ui/panel.js:692 #: js/ui/panel.js:693
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Sistema" msgstr "Sistema"
#: js/ui/panel.js:811 #: js/ui/panel.js:816
msgid "Top Bar" msgid "Top Bar"
msgstr "Barra superior" msgstr "Barra superior"
@@ -1474,23 +1478,23 @@ msgstr "Barra superior"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: js/ui/popupMenu.js:291 #: js/ui/popupMenu.js:300
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
#: js/ui/runDialog.js:70 #: js/ui/runDialog.js:74
msgid "Enter a Command" msgid "Enter a Command"
msgstr "Introduïu una ordre" msgstr "Introduïu una ordre"
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:175 #: js/ui/runDialog.js:114 js/ui/windowMenu.js:174
msgid "Close" msgid "Close"
msgstr "Tanca" msgstr "Tanca"
#: js/ui/runDialog.js:273 #: js/ui/runDialog.js:278
msgid "Restart is not available on Wayland" msgid "Restart is not available on Wayland"
msgstr "El reinici no està disponible en Wayland" msgstr "El reinici no està disponible en Wayland"
#: js/ui/runDialog.js:278 #: js/ui/runDialog.js:283
msgid "Restarting…" msgid "Restarting…"
msgstr "S'està reiniciant…" msgstr "S'està reiniciant…"
@@ -1514,7 +1518,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:451 js/ui/status/system.js:283 #: js/ui/screenShield.js:451 js/ui/status/system.js:294
msgid "Lock" msgid "Lock"
msgstr "Bloqueja" msgstr "Bloqueja"
@@ -1697,7 +1701,7 @@ msgid "<unknown>"
msgstr "<desconegut>" msgstr "<desconegut>"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:441 js/ui/status/network.js:1310 #: js/ui/status/network.js:441 js/ui/status/network.js:1323
#, javascript-format #, javascript-format
msgid "%s Off" msgid "%s Off"
msgstr "%s apagat" msgstr "%s apagat"
@@ -1724,7 +1728,7 @@ msgid "%s Disconnecting"
msgstr "%s s'està desconnectant" msgstr "%s s'està desconnectant"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:459 js/ui/status/network.js:1302 #: js/ui/status/network.js:459 js/ui/status/network.js:1315
#, javascript-format #, javascript-format
msgid "%s Connecting" msgid "%s Connecting"
msgstr "%s s'està connectant" msgstr "%s s'està connectant"
@@ -1764,7 +1768,7 @@ msgid "Mobile Broadband Settings"
msgstr "Configuració de la xarxa de banda ampla mòbil" msgstr "Configuració de la xarxa de banda ampla mòbil"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:578 js/ui/status/network.js:1307 #: js/ui/status/network.js:578 js/ui/status/network.js:1320
#, javascript-format #, javascript-format
msgid "%s Hardware Disabled" msgid "%s Hardware Disabled"
msgstr "%s maquinari inhabilitat" msgstr "%s maquinari inhabilitat"
@@ -1820,81 +1824,81 @@ msgstr "Cap xarxa"
msgid "Use hardware switch to turn off" msgid "Use hardware switch to turn off"
msgstr "Utilitza l'interruptor de maquinari per desactivar-la" msgstr "Utilitza l'interruptor de maquinari per desactivar-la"
#: js/ui/status/network.js:1173 #: js/ui/status/network.js:1186
msgid "Select Network" msgid "Select Network"
msgstr "Trieu una xarxa" msgstr "Trieu una xarxa"
#: js/ui/status/network.js:1179 #: js/ui/status/network.js:1192
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Paràmetres de la xarxa sense fil" msgstr "Paràmetres de la xarxa sense fil"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:1298 #: js/ui/status/network.js:1311
#, javascript-format #, javascript-format
msgid "%s Hotspot Active" msgid "%s Hotspot Active"
msgstr "Hostpot %s actiu" msgstr "Hostpot %s actiu"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:1313 #: js/ui/status/network.js:1326
#, javascript-format #, javascript-format
msgid "%s Not Connected" msgid "%s Not Connected"
msgstr "%s no està connectat" msgstr "%s no està connectat"
#: js/ui/status/network.js:1413 #: js/ui/status/network.js:1426
msgid "connecting…" msgid "connecting…"
msgstr "s'està connectant..." msgstr "s'està connectant..."
#. Translators: this is for network connections that require some kind of key or password #. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1416 #: js/ui/status/network.js:1429
msgid "authentication required" msgid "authentication required"
msgstr "cal autenticació" msgstr "cal autenticació"
#: js/ui/status/network.js:1418 #: js/ui/status/network.js:1431
msgid "connection failed" msgid "connection failed"
msgstr "ha fallat la connexió" msgstr "ha fallat la connexió"
#: js/ui/status/network.js:1472 #: js/ui/status/network.js:1485
msgid "VPN Settings" msgid "VPN Settings"
msgstr "Paràmetres de la VPN" msgstr "Paràmetres de la VPN"
#: js/ui/status/network.js:1485 #: js/ui/status/network.js:1498
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: js/ui/status/network.js:1495 #: js/ui/status/network.js:1508
msgid "VPN Off" msgid "VPN Off"
msgstr "VPN apagada" msgstr "VPN apagada"
#: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93 #: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings" msgid "Network Settings"
msgstr "Paràmetres de xarxa" msgstr "Paràmetres de xarxa"
#: js/ui/status/network.js:1588 #: js/ui/status/network.js:1601
#, javascript-format #, javascript-format
msgid "%s Wired Connection" msgid "%s Wired Connection"
msgid_plural "%s Wired Connections" msgid_plural "%s Wired Connections"
msgstr[0] "%s connexió amb fil" msgstr[0] "%s connexió amb fil"
msgstr[1] "%s connexions amb fil" msgstr[1] "%s connexions amb fil"
#: js/ui/status/network.js:1592 #: js/ui/status/network.js:1605
#, javascript-format #, javascript-format
msgid "%s Wi-Fi Connection" msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections" msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s connexió Wifi" msgstr[0] "%s connexió Wifi"
msgstr[1] "%s connexions Wifi" msgstr[1] "%s connexions Wifi"
#: js/ui/status/network.js:1596 #: js/ui/status/network.js:1609
#, javascript-format #, javascript-format
msgid "%s Modem Connection" msgid "%s Modem Connection"
msgid_plural "%s Modem Connections" msgid_plural "%s Modem Connections"
msgstr[0] "%s connexió mòdem" msgstr[0] "%s connexió mòdem"
msgstr[1] "%s connexions mòdem" msgstr[1] "%s connexions mòdem"
#: js/ui/status/network.js:1728 #: js/ui/status/network.js:1741
msgid "Connection failed" msgid "Connection failed"
msgstr "Ha fallat la connexió" msgstr "Ha fallat la connexió"
#: js/ui/status/network.js:1729 #: js/ui/status/network.js:1742
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Ha fallat l'activació de la connexió de xarxa" msgstr "Ha fallat l'activació de la connexió de xarxa"
@@ -1945,6 +1949,14 @@ msgstr "%d%02d per completar la càrrega (%d %%)"
msgid "%d%%" msgid "%d%%"
msgstr "%d%%" msgstr "%d%%"
#: js/ui/status/remoteAccess.js:46
msgid "Screen is Being Shared"
msgstr "Es comparteix la pantalla"
#: js/ui/status/remoteAccess.js:48
msgid "Turn off"
msgstr "Desactiva"
#. The menu only appears when airplane mode is on, so just #. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically #. statically build it as if it was on, rather than dynamically
#. changing the menu contents. #. changing the menu contents.
@@ -1964,28 +1976,28 @@ msgstr "Surt"
msgid "Account Settings" msgid "Account Settings"
msgstr "Paràmetres del compte" msgstr "Paràmetres del compte"
#: js/ui/status/system.js:268 #: js/ui/status/system.js:279
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Bloqueja l'orientació" msgstr "Bloqueja l'orientació"
#: js/ui/status/system.js:294 #: js/ui/status/system.js:305
msgid "Suspend" msgid "Suspend"
msgstr "Atura temporalment" msgstr "Atura temporalment"
#: js/ui/status/system.js:304 #: js/ui/status/system.js:315
msgid "Power Off" msgid "Power Off"
msgstr "Apaga" msgstr "Apaga"
#: js/ui/status/thunderbolt.js:294 #: js/ui/status/thunderbolt.js:298
msgid "Thunderbolt" msgid "Thunderbolt"
msgstr "Thunderbolt" msgstr "Thunderbolt"
#. we are done #. we are done
#: js/ui/status/thunderbolt.js:350 #: js/ui/status/thunderbolt.js:354
msgid "Unknown Thunderbolt device" msgid "Unknown Thunderbolt device"
msgstr "Dispostiu Thunderbolt desconegut" msgstr "Dispostiu Thunderbolt desconegut"
#: js/ui/status/thunderbolt.js:351 #: js/ui/status/thunderbolt.js:355
msgid "" msgid ""
"New device has been detected while you were away. Please disconnect and " "New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it." "reconnect the device to start using it."
@@ -1993,23 +2005,19 @@ msgstr ""
"El nou dispositiu s'ha detectat mentre estàveu absents. Desconnecteu i " "El nou dispositiu s'ha detectat mentre estàveu absents. Desconnecteu i "
"torneu a connectar el dispositiu per a començar a utilitzar-lo." "torneu a connectar el dispositiu per a començar a utilitzar-lo."
#: js/ui/status/thunderbolt.js:356 #: js/ui/status/thunderbolt.js:360
msgid "Thunderbolt authorization error" msgid "Thunderbolt authorization error"
msgstr "S'ha produït un error d'autorització a Thunderbolt" msgstr "S'ha produït un error d'autorització a Thunderbolt"
#: js/ui/status/thunderbolt.js:357 #: js/ui/status/thunderbolt.js:361
#, javascript-format #, javascript-format
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:135
msgid "Volume changed" msgid "Volume changed"
msgstr "S'ha canviat el volum" msgstr "S'ha canviat el volum"
#: js/ui/status/volume.js:170
msgid "Volume"
msgstr "Volum"
#. Translators: this is for display mirroring i.e. cloning. #. Translators: this is for display mirroring i.e. cloning.
#. * Try to keep it under around 15 characters. #. * Try to keep it under around 15 characters.
#. #.
@@ -2059,22 +2067,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:72 #: js/ui/windowManager.js:74
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 lenght, #. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:84 #: js/ui/windowManager.js:86
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Descarta els canvis" msgstr "Descarta els canvis"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:89
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Mantén els canvis" msgstr "Mantén els canvis"
#: js/ui/windowManager.js:105 #: js/ui/windowManager.js:107
#, 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"
@@ -2083,7 +2091,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:660 #: js/ui/windowManager.js:689
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2136,19 +2144,19 @@ msgstr "Mou a l'espai de treball superior"
msgid "Move to Workspace Down" msgid "Move to Workspace Down"
msgstr "Mou a l'espai de treball inferior" msgstr "Mou a l'espai de treball inferior"
#: js/ui/windowMenu.js:140 #: js/ui/windowMenu.js:139
msgid "Move to Monitor Up" msgid "Move to Monitor Up"
msgstr "Mou a la pantalla de dalt" msgstr "Mou a la pantalla de dalt"
#: js/ui/windowMenu.js:149 #: js/ui/windowMenu.js:148
msgid "Move to Monitor Down" msgid "Move to Monitor Down"
msgstr "Mou a la pantalla de baix" msgstr "Mou a la pantalla de baix"
#: js/ui/windowMenu.js:158 #: js/ui/windowMenu.js:157
msgid "Move to Monitor Left" msgid "Move to Monitor Left"
msgstr "Mou a la pantalla de l'esquerra" msgstr "Mou a la pantalla de l'esquerra"
#: js/ui/windowMenu.js:167 #: js/ui/windowMenu.js:166
msgid "Move to Monitor Right" msgid "Move to Monitor Right"
msgstr "Mou a la pantalla de la dreta" msgstr "Mou a la pantalla de la dreta"
@@ -2161,28 +2169,28 @@ msgstr "Calendari de l'Evolution"
msgid "evolution" msgid "evolution"
msgstr "evolution" msgstr "evolution"
#: src/main.c:432 #: src/main.c:410
msgid "Print version" msgid "Print version"
msgstr "Mostra la versió" msgstr "Mostra la versió"
#: src/main.c:438 #: src/main.c:416
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:444 #: src/main.c:422
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:450 #: src/main.c:428
msgid "List possible modes" msgid "List possible modes"
msgstr "Llista els modes possibles" msgstr "Llista els modes possibles"
#: src/shell-app.c:270 #: src/shell-app.c:272
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Desconegut" msgstr "Desconegut"
#: src/shell-app.c:511 #: src/shell-app.c:523
#, c-format #, c-format
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "No s'ha pogut iniciar «%s»" msgstr "No s'ha pogut iniciar «%s»"

1002
po/cs.po

File diff suppressed because it is too large Load Diff

1092
po/da.po

File diff suppressed because it is too large Load Diff

460
po/de.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

164
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: 2018-04-13 19:54+0000\n" "POT-Creation-Date: 2018-07-24 18:34+0000\n"
"PO-Revision-Date: 2018-04-25 12:54+0200\n" "PO-Revision-Date: 2018-07-27 13:15+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n" "Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: es <gnome-es-list@gnome.org>\n" "Language-Team: es <gnome-es-list@gnome.org>\n"
"Language: es\n" "Language: es\n"
@@ -18,7 +18,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: Gtranslator 2.91.6\n" "X-Generator: Gtranslator 2.91.7\n"
#: data/50-gnome-shell-system.xml:6 #: data/50-gnome-shell-system.xml:6
msgid "System" msgid "System"
@@ -366,20 +366,20 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Iniciar sesión" msgstr "Iniciar sesión"
#: js/gdm/loginDialog.js:315 #: js/gdm/loginDialog.js:319
msgid "Choose Session" msgid "Choose Session"
msgstr "Elegir sesión" msgstr "Elegir sesión"
#. translators: this message is shown below the user list on the #. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for #. login screen. It can be activated to reveal an entry for
#. manually entering the username. #. manually entering the username.
#: js/gdm/loginDialog.js:458 #: js/gdm/loginDialog.js:462
msgid "Not listed?" msgid "Not listed?"
msgstr "¿No está en la lista?" msgstr "¿No está en la lista?"
#. Translators: this message is shown below the username entry field #. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm #. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:887 #: js/gdm/loginDialog.js:891
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(ej., usuario o %s)" msgstr "(ej., usuario o %s)"
@@ -387,12 +387,12 @@ msgstr "(ej., usuario o %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243 #: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243
#: js/ui/components/networkAgent.js:261 #: js/ui/components/networkAgent.js:261
msgid "Username: " msgid "Username: "
msgstr "Nombre de usuario:" msgstr "Nombre de usuario:"
#: js/gdm/loginDialog.js:1228 #: js/gdm/loginDialog.js:1234
msgid "Login Window" msgid "Login Window"
msgstr "Ventana de inicio de sesión" msgstr "Ventana de inicio de sesión"
@@ -405,7 +405,7 @@ msgstr "Error de autenticación"
#. as a cue to display our own message. #. as a cue to display our own message.
#. Translators: this message is shown below the password entry field #. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead #. to indicate the user can swipe their finger instead
#: js/gdm/util.js:482 #: js/gdm/util.js:485
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(o pase el dedo)" msgstr "(o pase el dedo)"
@@ -645,23 +645,23 @@ msgstr "Frecuentes"
msgid "All" msgid "All"
msgstr "Todas" msgstr "Todas"
#: js/ui/appDisplay.js:1886 #: js/ui/appDisplay.js:1890
msgid "New Window" msgid "New Window"
msgstr "Ventana nueva" msgstr "Ventana nueva"
#: js/ui/appDisplay.js:1900 #: js/ui/appDisplay.js:1904
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:1927 js/ui/dash.js:285 #: js/ui/appDisplay.js:1931 js/ui/dash.js:285
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Quitar de los favoritos" msgstr "Quitar de los favoritos"
#: js/ui/appDisplay.js:1933 #: js/ui/appDisplay.js:1937
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Añadir a los favoritos" msgstr "Añadir a los favoritos"
#: js/ui/appDisplay.js:1943 #: js/ui/appDisplay.js:1947
msgid "Show Details" msgid "Show Details"
msgstr "Mostrar detalles" msgstr "Mostrar detalles"
@@ -808,35 +808,35 @@ msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Todo el día" msgstr "Todo el día"
#: js/ui/calendar.js:864 #: js/ui/calendar.js:866
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d de %B" msgstr "%A, %d de %B"
#: js/ui/calendar.js:868 #: js/ui/calendar.js:870
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %d de %B de %Y" msgstr "%A, %d de %B de %Y"
#: js/ui/calendar.js:1086 #: js/ui/calendar.js:1100
msgid "No Notifications" msgid "No Notifications"
msgstr "No hay notificaciones" msgstr "No hay notificaciones"
#: js/ui/calendar.js:1089 #: js/ui/calendar.js:1103
msgid "No Events" msgid "No Events"
msgstr "No hay eventos" msgstr "No hay eventos"
#: js/ui/calendar.js:1117 #: js/ui/calendar.js:1131
msgid "Clear All" msgid "Clear All"
msgstr "Limpiar todo" msgstr "Limpiar todo"
#. Translators: %s is an application name #. Translators: %s is an application name
#: js/ui/closeDialog.js:44 #: js/ui/closeDialog.js:47
#, javascript-format #, javascript-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
msgstr "«%s» no responde." msgstr "«%s» no responde."
#: js/ui/closeDialog.js:45 #: js/ui/closeDialog.js:48
msgid "" msgid ""
"You may choose to wait a short while for it to continue or force the " "You may choose to wait a short while for it to continue or force the "
"application to quit entirely." "application to quit entirely."
@@ -844,11 +844,11 @@ msgstr ""
"Puede elegir esperar un momento para que continúe o forzar a la aplicación a " "Puede elegir esperar un momento para que continúe o forzar a la aplicación a "
"terminar." "terminar."
#: js/ui/closeDialog.js:61 #: js/ui/closeDialog.js:64
msgid "Force Quit" msgid "Force Quit"
msgstr "Forzar la salida" msgstr "Forzar la salida"
#: js/ui/closeDialog.js:64 #: js/ui/closeDialog.js:67
msgid "Wait" msgid "Wait"
msgstr "Esperar" msgstr "Esperar"
@@ -865,7 +865,7 @@ msgstr "Dispositivo externo desconectado"
msgid "Open with %s" msgid "Open with %s"
msgstr "Abrir con %s" msgstr "Abrir con %s"
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295 #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297
msgid "Password:" msgid "Password:"
msgstr "Contraseña:" msgstr "Contraseña:"
@@ -902,11 +902,11 @@ msgstr "Contraseña de la clave privada:"
msgid "Service: " msgid "Service: "
msgstr "Servicio:" msgstr "Servicio:"
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664
msgid "Authentication required by wireless network" msgid "Authentication required by wireless network"
msgstr "La red inalámbrica requiere autenticación" msgstr "La red inalámbrica requiere autenticación"
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660 #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@@ -915,7 +915,7 @@ msgstr ""
"Se necesitan contraseñas o claves de cifrado para acceder a la red " "Se necesitan contraseñas o claves de cifrado para acceder a la red "
"inalámbrica «%s»." "inalámbrica «%s»."
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663 #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Autenticación 802.1X cableada" msgstr "Autenticación 802.1X cableada"
@@ -923,15 +923,15 @@ msgstr "Autenticación 802.1X cableada"
msgid "Network name: " msgid "Network name: "
msgstr "Nombre de la red: " msgstr "Nombre de la red: "
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667 #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Autenticación DSL" msgstr "Autenticación DSL"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673 #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678
msgid "PIN code required" msgid "PIN code required"
msgstr "Código PIN requerido" msgstr "Código PIN requerido"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674 #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil" msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil"
@@ -939,17 +939,17 @@ msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil"
msgid "PIN: " msgid "PIN: "
msgstr "PIN: " msgstr "PIN: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680 #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685
msgid "Mobile broadband network password" msgid "Mobile broadband network password"
msgstr "Contraseña de la red de banda ancha móvil" msgstr "Contraseña de la red de banda ancha móvil"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664 #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681 #: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "Se requiere una contraseña para conectarse a «%s»." msgstr "Se requiere una contraseña para conectarse a «%s»."
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704
msgid "Network Manager" msgid "Network Manager"
msgstr "Gestor de la red" msgstr "Gestor de la red"
@@ -969,7 +969,7 @@ msgstr "Autenticar"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327 #: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327
msgid "Sorry, that didnt work. Please try again." msgid "Sorry, that didnt work. Please try again."
msgstr "Eso no ha funcionado. Inténtelo de nuevo." msgstr "Eso no ha funcionado. Inténtelo de nuevo."
@@ -1301,13 +1301,13 @@ msgid "Leave On"
msgstr "Dejar activada" msgstr "Dejar activada"
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143 #: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:1281 #: js/ui/status/network.js:1294
msgid "Turn On" msgid "Turn On"
msgstr "Encender" msgstr "Encender"
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143 #: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:154 js/ui/status/network.js:337 #: js/ui/status/network.js:154 js/ui/status/network.js:337
#: js/ui/status/network.js:1281 js/ui/status/network.js:1396 #: js/ui/status/network.js:1294 js/ui/status/network.js:1409
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90 #: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117 #: js/ui/status/rfkill.js:117
msgid "Turn Off" msgid "Turn Off"
@@ -1369,7 +1369,7 @@ msgstr "Ver fuente"
msgid "Web Page" msgid "Web Page"
msgstr "Página web" msgstr "Página web"
#: js/ui/messageTray.js:1493 #: js/ui/messageTray.js:1495
msgid "System Information" msgid "System Information"
msgstr "Información del sistema" msgstr "Información del sistema"
@@ -1443,22 +1443,22 @@ msgstr "Pulse Esc para salir"
msgid "Press any key to exit" msgid "Press any key to exit"
msgstr "Pulse cualquier tecla para salir" msgstr "Pulse cualquier tecla para salir"
#: js/ui/panel.js:355 #: js/ui/panel.js:356
msgid "Quit" msgid "Quit"
msgstr "Salir" msgstr "Salir"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: js/ui/panel.js:411 #: js/ui/panel.js:412
msgid "Activities" msgid "Activities"
msgstr "Actividades" msgstr "Actividades"
#: js/ui/panel.js:692 #: js/ui/panel.js:693
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Sistema" msgstr "Sistema"
#: js/ui/panel.js:811 #: js/ui/panel.js:816
msgid "Top Bar" msgid "Top Bar"
msgstr "Barra superior" msgstr "Barra superior"
@@ -1467,7 +1467,7 @@ msgstr "Barra superior"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: js/ui/popupMenu.js:291 #: js/ui/popupMenu.js:300
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@@ -1475,15 +1475,15 @@ msgstr "toggle-switch-intl"
msgid "Enter a Command" msgid "Enter a Command"
msgstr "Introducir un comando" msgstr "Introducir un comando"
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:175 #: js/ui/runDialog.js:110 js/ui/windowMenu.js:174
msgid "Close" msgid "Close"
msgstr "Cerrar" msgstr "Cerrar"
#: js/ui/runDialog.js:273 #: js/ui/runDialog.js:274
msgid "Restart is not available on Wayland" msgid "Restart is not available on Wayland"
msgstr "Reiniciar si no está disponible en Wayland" msgstr "Reiniciar si no está disponible en Wayland"
#: js/ui/runDialog.js:278 #: js/ui/runDialog.js:279
msgid "Restarting…" msgid "Restarting…"
msgstr "Reiniciando…" msgstr "Reiniciando…"
@@ -1690,7 +1690,7 @@ msgid "<unknown>"
msgstr "<desconocido>" msgstr "<desconocido>"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:441 js/ui/status/network.js:1310 #: js/ui/status/network.js:441 js/ui/status/network.js:1323
#, javascript-format #, javascript-format
msgid "%s Off" msgid "%s Off"
msgstr "%s apagada" msgstr "%s apagada"
@@ -1716,7 +1716,7 @@ msgid "%s Disconnecting"
msgstr "Desconectando %s" msgstr "Desconectando %s"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:459 js/ui/status/network.js:1302 #: js/ui/status/network.js:459 js/ui/status/network.js:1315
#, javascript-format #, javascript-format
msgid "%s Connecting" msgid "%s Connecting"
msgstr "Conectando %s" msgstr "Conectando %s"
@@ -1756,7 +1756,7 @@ msgid "Mobile Broadband Settings"
msgstr "Configuración de banda ancha móvil" msgstr "Configuración de banda ancha móvil"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:578 js/ui/status/network.js:1307 #: js/ui/status/network.js:578 js/ui/status/network.js:1320
#, javascript-format #, javascript-format
msgid "%s Hardware Disabled" msgid "%s Hardware Disabled"
msgstr "Hardware %s desactivado" msgstr "Hardware %s desactivado"
@@ -1812,81 +1812,81 @@ msgstr "No hay redes"
msgid "Use hardware switch to turn off" msgid "Use hardware switch to turn off"
msgstr "Usar el interruptor hardware para apagar" msgstr "Usar el interruptor hardware para apagar"
#: js/ui/status/network.js:1173 #: js/ui/status/network.js:1186
msgid "Select Network" msgid "Select Network"
msgstr "Seleccionar red" msgstr "Seleccionar red"
#: js/ui/status/network.js:1179 #: js/ui/status/network.js:1192
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Configuración de Wi-Fi" msgstr "Configuración de Wi-Fi"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:1298 #: js/ui/status/network.js:1311
#, javascript-format #, javascript-format
msgid "%s Hotspot Active" msgid "%s Hotspot Active"
msgstr "Punto de acceso %s activo" msgstr "Punto de acceso %s activo"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:1313 #: js/ui/status/network.js:1326
#, javascript-format #, javascript-format
msgid "%s Not Connected" msgid "%s Not Connected"
msgstr "%s no conectado" msgstr "%s no conectado"
#: js/ui/status/network.js:1413 #: js/ui/status/network.js:1426
msgid "connecting…" msgid "connecting…"
msgstr "conectando…" msgstr "conectando…"
#. Translators: this is for network connections that require some kind of key or password #. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1416 #: js/ui/status/network.js:1429
msgid "authentication required" msgid "authentication required"
msgstr "se necesita autenticación" msgstr "se necesita autenticación"
#: js/ui/status/network.js:1418 #: js/ui/status/network.js:1431
msgid "connection failed" msgid "connection failed"
msgstr "falló la conexión" msgstr "falló la conexión"
#: js/ui/status/network.js:1472 #: js/ui/status/network.js:1485
msgid "VPN Settings" msgid "VPN Settings"
msgstr "Configuración de VPN" msgstr "Configuración de VPN"
#: js/ui/status/network.js:1485 #: js/ui/status/network.js:1498
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: js/ui/status/network.js:1495 #: js/ui/status/network.js:1508
msgid "VPN Off" msgid "VPN Off"
msgstr "VPN apagada" msgstr "VPN apagada"
#: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93 #: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings" msgid "Network Settings"
msgstr "Configuración de la red" msgstr "Configuración de la red"
#: js/ui/status/network.js:1588 #: js/ui/status/network.js:1601
#, javascript-format #, javascript-format
msgid "%s Wired Connection" msgid "%s Wired Connection"
msgid_plural "%s Wired Connections" msgid_plural "%s Wired Connections"
msgstr[0] "%s conexión cableada" msgstr[0] "%s conexión cableada"
msgstr[1] "%s conexiones cableadas" msgstr[1] "%s conexiones cableadas"
#: js/ui/status/network.js:1592 #: js/ui/status/network.js:1605
#, javascript-format #, javascript-format
msgid "%s Wi-Fi Connection" msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections" msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s conexión inalámbrica" msgstr[0] "%s conexión inalámbrica"
msgstr[1] "%s conexiones inalámbricas" msgstr[1] "%s conexiones inalámbricas"
#: js/ui/status/network.js:1596 #: js/ui/status/network.js:1609
#, javascript-format #, javascript-format
msgid "%s Modem Connection" msgid "%s Modem Connection"
msgid_plural "%s Modem Connections" msgid_plural "%s Modem Connections"
msgstr[0] "%s conexión por módem" msgstr[0] "%s conexión por módem"
msgstr[1] "%s conexiones por módem" msgstr[1] "%s conexiones por módem"
#: js/ui/status/network.js:1728 #: js/ui/status/network.js:1741
msgid "Connection failed" msgid "Connection failed"
msgstr "Falló la conexión" msgstr "Falló la conexión"
#: js/ui/status/network.js:1729 #: js/ui/status/network.js:1742
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Falló la activación de la conexión de red" msgstr "Falló la activación de la conexión de red"
@@ -1937,6 +1937,15 @@ msgstr "%d%02d para la carga completa (%d%%)"
msgid "%d%%" msgid "%d%%"
msgstr "%d%%" msgstr "%d%%"
#: js/ui/status/remoteAccess.js:45
msgid "Screen is Being Shared"
msgstr "Se está compartiendo la pantalla"
#: js/ui/status/remoteAccess.js:47
#| msgid "Turn Off"
msgid "Turn off"
msgstr "Apagar"
#. The menu only appears when airplane mode is on, so just #. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically #. statically build it as if it was on, rather than dynamically
#. changing the menu contents. #. changing the menu contents.
@@ -1968,16 +1977,16 @@ msgstr "Suspender"
msgid "Power Off" msgid "Power Off"
msgstr "Apagar" msgstr "Apagar"
#: js/ui/status/thunderbolt.js:294 #: js/ui/status/thunderbolt.js:298
msgid "Thunderbolt" msgid "Thunderbolt"
msgstr "Thunderbolt" msgstr "Thunderbolt"
#. we are done #. we are done
#: js/ui/status/thunderbolt.js:350 #: js/ui/status/thunderbolt.js:354
msgid "Unknown Thunderbolt device" msgid "Unknown Thunderbolt device"
msgstr "Dispositivo Thunderbolt desconocido" msgstr "Dispositivo Thunderbolt desconocido"
#: js/ui/status/thunderbolt.js:351 #: js/ui/status/thunderbolt.js:355
msgid "" msgid ""
"New device has been detected while you were away. Please disconnect and " "New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it." "reconnect the device to start using it."
@@ -1985,13 +1994,12 @@ msgstr ""
"Se ha detectado un dispositivo nuevo mientras estaba fuera. Desconéctelo y " "Se ha detectado un dispositivo nuevo mientras estaba fuera. Desconéctelo y "
"vuélvalo a conectar para empezar a usarlo." "vuélvalo a conectar para empezar a usarlo."
#: js/ui/status/thunderbolt.js:356 #: js/ui/status/thunderbolt.js:360
msgid "Thunderbolt authorization error" msgid "Thunderbolt authorization error"
msgstr "Error de autorización de Thunderbolt" msgstr "Error de autorización de Thunderbolt"
#: js/ui/status/thunderbolt.js:357 #: js/ui/status/thunderbolt.js:361
#, javascript-format #, javascript-format
#| msgid "Could not authorize the thunderbolt device: %s"
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"
@@ -2076,7 +2084,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:660 #: js/ui/windowManager.js:668
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2129,19 +2137,19 @@ msgstr "Subir a un área de trabajo"
msgid "Move to Workspace Down" msgid "Move to Workspace Down"
msgstr "Bajar a un área de trabajo" msgstr "Bajar a un área de trabajo"
#: js/ui/windowMenu.js:140 #: js/ui/windowMenu.js:139
msgid "Move to Monitor Up" msgid "Move to Monitor Up"
msgstr "Mover a la pantalla de arriba" msgstr "Mover a la pantalla de arriba"
#: js/ui/windowMenu.js:149 #: js/ui/windowMenu.js:148
msgid "Move to Monitor Down" msgid "Move to Monitor Down"
msgstr "Mover a la pantalla de abajo" msgstr "Mover a la pantalla de abajo"
#: js/ui/windowMenu.js:158 #: js/ui/windowMenu.js:157
msgid "Move to Monitor Left" msgid "Move to Monitor Left"
msgstr "Mover a la pantalla de la izquierda" msgstr "Mover a la pantalla de la izquierda"
#: js/ui/windowMenu.js:167 #: js/ui/windowMenu.js:166
msgid "Move to Monitor Right" msgid "Move to Monitor Right"
msgstr "Mover a la pantalla de la derecha" msgstr "Mover a la pantalla de la derecha"
@@ -2172,12 +2180,12 @@ msgstr ""
msgid "List possible modes" msgid "List possible modes"
msgstr "Listar los modos posibles" msgstr "Listar los modos posibles"
#: src/shell-app.c:270 #: src/shell-app.c:272
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Desconocido" msgstr "Desconocido"
#: src/shell-app.c:511 #: src/shell-app.c:523
#, c-format #, c-format
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "Falló al lanzar «%s»" msgstr "Falló al lanzar «%s»"

1133
po/fi.po

File diff suppressed because it is too large Load Diff

231
po/fr.po
View File

@@ -20,8 +20,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master fr\n" "Project-Id-Version: gnome-shell master fr\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: 2018-04-13 19:54+0000\n" "POT-Creation-Date: 2018-08-01 18:08+0000\n"
"PO-Revision-Date: 2018-04-18 19:30+0200\n" "PO-Revision-Date: 2018-08-09 19:51+0200\n"
"Last-Translator: Charles Monzat <superboa@hotmail.fr>\n" "Last-Translator: Charles Monzat <superboa@hotmail.fr>\n"
"Language-Team: français <gnomefr@traduc.org>\n" "Language-Team: français <gnomefr@traduc.org>\n"
"Language: fr\n" "Language: fr\n"
@@ -312,34 +312,34 @@ msgstr ""
"Si vrai, seules les fenêtres de lespace de travail actuel sont affichées " "Si vrai, seules les fenêtres de lespace de travail actuel sont affichées "
"dans le sélecteur. Sinon, toutes les fenêtres y sont incluses." "dans le sélecteur. Sinon, toutes les fenêtres y sont incluses."
#: data/org.gnome.shell.gschema.xml.in:197 #: data/org.gnome.shell.gschema.xml.in:198
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
msgstr "Attacher les dialogues modaux à leur fenêtre parente" msgstr "Attacher les dialogues modaux à leur fenêtre parente"
#: data/org.gnome.shell.gschema.xml.in:198 #: data/org.gnome.shell.gschema.xml.in:199
#: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:208
#: data/org.gnome.shell.gschema.xml.in:215 #: data/org.gnome.shell.gschema.xml.in:216
#: data/org.gnome.shell.gschema.xml.in:223 #: data/org.gnome.shell.gschema.xml.in:224
#: data/org.gnome.shell.gschema.xml.in:231 #: data/org.gnome.shell.gschema.xml.in:232
msgid "" msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell." "This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "" msgstr ""
"Cette clé prend le pas sur la clé dans org.gnome.mutter lorsque GNOME Shell " "Cette clé prend le pas sur la clé dans org.gnome.mutter lorsque GNOME Shell "
"est lancé." "est lancé."
#: data/org.gnome.shell.gschema.xml.in:206 #: data/org.gnome.shell.gschema.xml.in:207
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Activer lempilage des fenêtres déposées sur les bords de lécran" msgstr "Activer lempilage des fenêtres déposées sur les bords de lécran"
#: data/org.gnome.shell.gschema.xml.in:214 #: data/org.gnome.shell.gschema.xml.in:215
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "Les espaces de travail sont gérés dynamiquement" msgstr "Les espaces de travail sont gérés dynamiquement"
#: data/org.gnome.shell.gschema.xml.in:222 #: data/org.gnome.shell.gschema.xml.in:223
msgid "Workspaces only on primary monitor" msgid "Workspaces only on primary monitor"
msgstr "Les espaces de travail sont uniquement sur lécran principal" msgstr "Les espaces de travail sont uniquement sur lécran principal"
#: data/org.gnome.shell.gschema.xml.in:230 #: data/org.gnome.shell.gschema.xml.in:231
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "" msgstr ""
"Retarder les changements de focus en mode souris jusquà ce que le pointeur " "Retarder les changements de focus en mode souris jusquà ce que le pointeur "
@@ -382,20 +382,20 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Se connecter" msgstr "Se connecter"
#: js/gdm/loginDialog.js:315 #: js/gdm/loginDialog.js:319
msgid "Choose Session" msgid "Choose Session"
msgstr "Choisir une session" msgstr "Choisir une session"
#. translators: this message is shown below the user list on the #. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for #. login screen. It can be activated to reveal an entry for
#. manually entering the username. #. manually entering the username.
#: js/gdm/loginDialog.js:458 #: js/gdm/loginDialog.js:462
msgid "Not listed?" msgid "Not listed?"
msgstr "Absent de la liste ?" msgstr "Absent de la liste ?"
#. Translators: this message is shown below the username entry field #. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm #. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:887 #: js/gdm/loginDialog.js:891
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(par ex. utilisateur ou %s)" msgstr "(par ex. utilisateur ou %s)"
@@ -403,12 +403,12 @@ msgstr "(par ex. utilisateur ou %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243 #: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243
#: js/ui/components/networkAgent.js:261 #: js/ui/components/networkAgent.js:261
msgid "Username: " msgid "Username: "
msgstr "Nom dutilisateur : " msgstr "Nom dutilisateur : "
#: js/gdm/loginDialog.js:1228 #: js/gdm/loginDialog.js:1234
msgid "Login Window" msgid "Login Window"
msgstr "Fenêtre de connexion" msgstr "Fenêtre de connexion"
@@ -421,7 +421,7 @@ msgstr "Erreur dauthentification"
#. as a cue to display our own message. #. as a cue to display our own message.
#. Translators: this message is shown below the password entry field #. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead #. to indicate the user can swipe their finger instead
#: js/gdm/util.js:482 #: js/gdm/util.js:485
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(ou faites glisser le doigt)" msgstr "(ou faites glisser le doigt)"
@@ -662,23 +662,23 @@ msgstr "Fréquemment utilisées"
msgid "All" msgid "All"
msgstr "Toutes" msgstr "Toutes"
#: js/ui/appDisplay.js:1886 #: js/ui/appDisplay.js:1890
msgid "New Window" msgid "New Window"
msgstr "Nouvelle fenêtre" msgstr "Nouvelle fenêtre"
#: js/ui/appDisplay.js:1900 #: js/ui/appDisplay.js:1904
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Démarrer en utilisant la carte graphique dédiée" msgstr "Démarrer en utilisant la carte graphique dédiée"
#: js/ui/appDisplay.js:1927 js/ui/dash.js:285 #: js/ui/appDisplay.js:1931 js/ui/dash.js:285
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Enlever des favoris" msgstr "Enlever des favoris"
#: js/ui/appDisplay.js:1933 #: js/ui/appDisplay.js:1937
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Ajouter aux favoris" msgstr "Ajouter aux favoris"
#: js/ui/appDisplay.js:1943 #: js/ui/appDisplay.js:1947
msgid "Show Details" msgid "Show Details"
msgstr "Afficher les détails" msgstr "Afficher les détails"
@@ -708,7 +708,7 @@ msgstr "Casque audio"
msgid "Headset" msgid "Headset"
msgstr "Micro-casque" msgstr "Micro-casque"
#: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221 #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:255
msgid "Microphone" msgid "Microphone"
msgstr "Microphone" msgstr "Microphone"
@@ -720,7 +720,7 @@ msgstr "Modifier larrière-plan…"
msgid "Display Settings" msgid "Display Settings"
msgstr "Paramètres daffichage" msgstr "Paramètres daffichage"
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:264 #: js/ui/backgroundMenu.js:22
msgid "Settings" msgid "Settings"
msgstr "Paramètres" msgstr "Paramètres"
@@ -840,35 +840,35 @@ msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Journée" msgstr "Journée"
#: js/ui/calendar.js:864 #: js/ui/calendar.js:866
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A %d %B" msgstr "%A %d %B"
#: js/ui/calendar.js:868 #: js/ui/calendar.js:870
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A %d %B, %Y" msgstr "%A %d %B, %Y"
#: js/ui/calendar.js:1086 #: js/ui/calendar.js:1100
msgid "No Notifications" msgid "No Notifications"
msgstr "Aucune notification" msgstr "Aucune notification"
#: js/ui/calendar.js:1089 #: js/ui/calendar.js:1103
msgid "No Events" msgid "No Events"
msgstr "Aucun évènement" msgstr "Aucun évènement"
#: js/ui/calendar.js:1117 #: js/ui/calendar.js:1131
msgid "Clear All" msgid "Clear All"
msgstr "Effacer tout" msgstr "Effacer tout"
#. Translators: %s is an application name #. Translators: %s is an application name
#: js/ui/closeDialog.js:44 #: js/ui/closeDialog.js:47
#, javascript-format #, javascript-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
msgstr "« %s » ne répond pas." msgstr "« %s » ne répond pas."
#: js/ui/closeDialog.js:45 #: js/ui/closeDialog.js:48
msgid "" msgid ""
"You may choose to wait a short while for it to continue or force the " "You may choose to wait a short while for it to continue or force the "
"application to quit entirely." "application to quit entirely."
@@ -876,11 +876,11 @@ msgstr ""
"Vous pouvez soit attendre un peu pour continuer, soit forcer lapplication à " "Vous pouvez soit attendre un peu pour continuer, soit forcer lapplication à "
"quitter." "quitter."
#: js/ui/closeDialog.js:61 #: js/ui/closeDialog.js:64
msgid "Force Quit" msgid "Force Quit"
msgstr "Forcer à quitter" msgstr "Forcer à quitter"
#: js/ui/closeDialog.js:64 #: js/ui/closeDialog.js:67
msgid "Wait" msgid "Wait"
msgstr "Attendre" msgstr "Attendre"
@@ -897,7 +897,7 @@ msgstr "Disque externe déconnecté"
msgid "Open with %s" msgid "Open with %s"
msgstr "Ouvrir avec %s" msgstr "Ouvrir avec %s"
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295 #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297
msgid "Password:" msgid "Password:"
msgstr "Mot de passe :" msgstr "Mot de passe :"
@@ -934,11 +934,11 @@ msgstr "Mot de passe de la clé privée : "
msgid "Service: " msgid "Service: "
msgstr "Service : " msgstr "Service : "
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664
msgid "Authentication required by wireless network" msgid "Authentication required by wireless network"
msgstr "Lauthentification est requise par le réseau sans fil" msgstr "Lauthentification est requise par le réseau sans fil"
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660 #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@@ -947,7 +947,7 @@ msgstr ""
"Il faut un mot de passe ou une clé de chiffrement pour accéder au réseau " "Il faut un mot de passe ou une clé de chiffrement pour accéder au réseau "
"sans fil « %s »" "sans fil « %s »"
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663 #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Authentification filaire 802.1X" msgstr "Authentification filaire 802.1X"
@@ -955,15 +955,15 @@ msgstr "Authentification filaire 802.1X"
msgid "Network name: " msgid "Network name: "
msgstr "Nom du réseau : " msgstr "Nom du réseau : "
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667 #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Authentification DSL" msgstr "Authentification DSL"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673 #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678
msgid "PIN code required" msgid "PIN code required"
msgstr "Code PIN requis" msgstr "Code PIN requis"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674 #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Un code PIN est nécessaire pour les connexions mobiles" msgstr "Un code PIN est nécessaire pour les connexions mobiles"
@@ -971,17 +971,17 @@ msgstr "Un code PIN est nécessaire pour les connexions mobiles"
msgid "PIN: " msgid "PIN: "
msgstr "PIN : " msgstr "PIN : "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680 #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685
msgid "Mobile broadband network password" msgid "Mobile broadband network password"
msgstr "Mot de passe de la connexion mobile" msgstr "Mot de passe de la connexion mobile"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664 #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681 #: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "Un mot de passe est requis pour se connecter à « %s »." msgstr "Un mot de passe est requis pour se connecter à « %s »."
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704
msgid "Network Manager" msgid "Network Manager"
msgstr "Gestionnaire de réseau" msgstr "Gestionnaire de réseau"
@@ -1001,7 +1001,7 @@ msgstr "Sauthentifier"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327 #: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327
msgid "Sorry, that didnt work. Please try again." msgid "Sorry, that didnt work. Please try again."
msgstr "Échec de lauthentification. Essayez à nouveau." msgstr "Échec de lauthentification. Essayez à nouveau."
@@ -1344,13 +1344,13 @@ msgid "Leave On"
msgstr "Laisser activé" msgstr "Laisser activé"
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143 #: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:1281 #: js/ui/status/network.js:1294
msgid "Turn On" msgid "Turn On"
msgstr "Activer" msgstr "Activer"
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143 #: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:154 js/ui/status/network.js:337 #: js/ui/status/network.js:154 js/ui/status/network.js:337
#: js/ui/status/network.js:1281 js/ui/status/network.js:1396 #: js/ui/status/network.js:1294 js/ui/status/network.js:1409
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90 #: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117 #: js/ui/status/rfkill.js:117
msgid "Turn Off" msgid "Turn Off"
@@ -1412,7 +1412,7 @@ msgstr "Afficher la source"
msgid "Web Page" msgid "Web Page"
msgstr "Page Web" msgstr "Page Web"
#: js/ui/messageTray.js:1493 #: js/ui/messageTray.js:1495
msgid "System Information" msgid "System Information"
msgstr "Informations du système" msgstr "Informations du système"
@@ -1424,6 +1424,10 @@ msgstr "Artiste inconnu"
msgid "Unknown title" msgid "Unknown title"
msgstr "Titre inconnu" msgstr "Titre inconnu"
#: js/ui/osdWindow.js:32 js/ui/status/volume.js:204
msgid "Volume"
msgstr "Volume"
#: js/ui/overview.js:83 #: js/ui/overview.js:83
msgid "Undo" msgid "Undo"
msgstr "Annuler" msgstr "Annuler"
@@ -1466,42 +1470,42 @@ msgstr "Associer une touche"
msgid "Done" msgid "Done"
msgstr "Terminé" msgstr "Terminé"
#: js/ui/padOsd.js:740 #: js/ui/padOsd.js:742
msgid "Edit…" msgid "Edit…"
msgstr "Édition…" msgstr "Édition…"
#: js/ui/padOsd.js:782 js/ui/padOsd.js:887 #: js/ui/padOsd.js:784 js/ui/padOsd.js:889
msgid "None" msgid "None"
msgstr "Aucun" msgstr "Aucun"
#: js/ui/padOsd.js:841 #: js/ui/padOsd.js:843
msgid "Press a button to configure" msgid "Press a button to configure"
msgstr "Appuyez sur un bouton pour le configurer" msgstr "Appuyez sur un bouton pour le configurer"
#: js/ui/padOsd.js:842 #: js/ui/padOsd.js:844
msgid "Press Esc to exit" msgid "Press Esc to exit"
msgstr "Appuyez sur Échap. pour quitter" msgstr "Appuyez sur Échap. pour quitter"
#: js/ui/padOsd.js:845 #: js/ui/padOsd.js:847
msgid "Press any key to exit" msgid "Press any key to exit"
msgstr "Appuyez sur une touche pour quitter" msgstr "Appuyez sur une touche pour quitter"
#: js/ui/panel.js:355 #: js/ui/panel.js:356
msgid "Quit" msgid "Quit"
msgstr "Quitter" msgstr "Quitter"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: js/ui/panel.js:411 #: js/ui/panel.js:412
msgid "Activities" msgid "Activities"
msgstr "Activités" msgstr "Activités"
#: js/ui/panel.js:692 #: js/ui/panel.js:693
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Système" msgstr "Système"
#: js/ui/panel.js:811 #: js/ui/panel.js:816
msgid "Top Bar" msgid "Top Bar"
msgstr "Barre supérieure" msgstr "Barre supérieure"
@@ -1510,23 +1514,23 @@ msgstr "Barre supérieure"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: js/ui/popupMenu.js:291 #: js/ui/popupMenu.js:300
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
#: js/ui/runDialog.js:70 #: js/ui/runDialog.js:74
msgid "Enter a Command" msgid "Enter a Command"
msgstr "Saisissez une commande" msgstr "Saisissez une commande"
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:175 #: js/ui/runDialog.js:114 js/ui/windowMenu.js:174
msgid "Close" msgid "Close"
msgstr "Fermer" msgstr "Fermer"
#: js/ui/runDialog.js:273 #: js/ui/runDialog.js:278
msgid "Restart is not available on Wayland" msgid "Restart is not available on Wayland"
msgstr "Le redémarrage nest pas disponible sur Wayland" msgstr "Le redémarrage nest pas disponible sur Wayland"
#: js/ui/runDialog.js:278 #: js/ui/runDialog.js:283
msgid "Restarting…" msgid "Restarting…"
msgstr "Redémarrage…" msgstr "Redémarrage…"
@@ -1550,7 +1554,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d nouvelle notification" msgstr[0] "%d nouvelle notification"
msgstr[1] "%d nouvelles notifications" msgstr[1] "%d nouvelles notifications"
#: js/ui/screenShield.js:451 js/ui/status/system.js:283 #: js/ui/screenShield.js:451 js/ui/status/system.js:294
msgid "Lock" msgid "Lock"
msgstr "Verrouiller" msgstr "Verrouiller"
@@ -1733,7 +1737,7 @@ msgid "<unknown>"
msgstr "<inconnu>" msgstr "<inconnu>"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:441 js/ui/status/network.js:1310 #: js/ui/status/network.js:441 js/ui/status/network.js:1323
#, javascript-format #, javascript-format
msgid "%s Off" msgid "%s Off"
msgstr "%s éteint" msgstr "%s éteint"
@@ -1759,7 +1763,7 @@ msgid "%s Disconnecting"
msgstr "Déconnexion de %s en cours" msgstr "Déconnexion de %s en cours"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:459 js/ui/status/network.js:1302 #: js/ui/status/network.js:459 js/ui/status/network.js:1315
#, javascript-format #, javascript-format
msgid "%s Connecting" msgid "%s Connecting"
msgstr "Connexion de %s en cours" msgstr "Connexion de %s en cours"
@@ -1799,7 +1803,7 @@ msgid "Mobile Broadband Settings"
msgstr "Paramètres connexion mobile" msgstr "Paramètres connexion mobile"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:578 js/ui/status/network.js:1307 #: js/ui/status/network.js:578 js/ui/status/network.js:1320
#, javascript-format #, javascript-format
msgid "%s Hardware Disabled" msgid "%s Hardware Disabled"
msgstr "Équipement %s désactivé" msgstr "Équipement %s désactivé"
@@ -1855,81 +1859,81 @@ msgstr "Aucun réseau disponible"
msgid "Use hardware switch to turn off" msgid "Use hardware switch to turn off"
msgstr "Utiliser linterrupteur matériel pour éteindre" msgstr "Utiliser linterrupteur matériel pour éteindre"
#: js/ui/status/network.js:1173 #: js/ui/status/network.js:1186
msgid "Select Network" msgid "Select Network"
msgstr "Sélectionner un réseau" msgstr "Sélectionner un réseau"
#: js/ui/status/network.js:1179 #: js/ui/status/network.js:1192
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Paramètres Wi-Fi" msgstr "Paramètres Wi-Fi"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:1298 #: js/ui/status/network.js:1311
#, javascript-format #, javascript-format
msgid "%s Hotspot Active" msgid "%s Hotspot Active"
msgstr "Point daccès %s actif" msgstr "Point daccès %s actif"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:1313 #: js/ui/status/network.js:1326
#, javascript-format #, javascript-format
msgid "%s Not Connected" msgid "%s Not Connected"
msgstr "%s non connecté" msgstr "%s non connecté"
#: js/ui/status/network.js:1413 #: js/ui/status/network.js:1426
msgid "connecting…" msgid "connecting…"
msgstr "connexion…" msgstr "connexion…"
#. Translators: this is for network connections that require some kind of key or password #. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1416 #: js/ui/status/network.js:1429
msgid "authentication required" msgid "authentication required"
msgstr "authentification nécessaire" msgstr "authentification nécessaire"
#: js/ui/status/network.js:1418 #: js/ui/status/network.js:1431
msgid "connection failed" msgid "connection failed"
msgstr "échec de connexion" msgstr "échec de connexion"
#: js/ui/status/network.js:1472 #: js/ui/status/network.js:1485
msgid "VPN Settings" msgid "VPN Settings"
msgstr "Paramètres VPN" msgstr "Paramètres VPN"
#: js/ui/status/network.js:1485 #: js/ui/status/network.js:1498
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: js/ui/status/network.js:1495 #: js/ui/status/network.js:1508
msgid "VPN Off" msgid "VPN Off"
msgstr "VPN désactivé" msgstr "VPN désactivé"
#: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93 #: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings" msgid "Network Settings"
msgstr "Paramètres du réseau" msgstr "Paramètres du réseau"
#: js/ui/status/network.js:1588 #: js/ui/status/network.js:1601
#, javascript-format #, javascript-format
msgid "%s Wired Connection" msgid "%s Wired Connection"
msgid_plural "%s Wired Connections" msgid_plural "%s Wired Connections"
msgstr[0] "%s connexion filaire." msgstr[0] "%s connexion filaire."
msgstr[1] "%s connexions filaires." msgstr[1] "%s connexions filaires."
#: js/ui/status/network.js:1592 #: js/ui/status/network.js:1605
#, javascript-format #, javascript-format
msgid "%s Wi-Fi Connection" msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections" msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s connexion Wi-Fi." msgstr[0] "%s connexion Wi-Fi."
msgstr[1] "%s connexions Wi-Fi." msgstr[1] "%s connexions Wi-Fi."
#: js/ui/status/network.js:1596 #: js/ui/status/network.js:1609
#, javascript-format #, javascript-format
msgid "%s Modem Connection" msgid "%s Modem Connection"
msgid_plural "%s Modem Connections" msgid_plural "%s Modem Connections"
msgstr[0] "%s connexion à un modem." msgstr[0] "%s connexion à un modem."
msgstr[1] "%s connexions à des modem." msgstr[1] "%s connexions à des modem."
#: js/ui/status/network.js:1728 #: js/ui/status/network.js:1741
msgid "Connection failed" msgid "Connection failed"
msgstr "Échec de connexion" msgstr "Échec de connexion"
#: js/ui/status/network.js:1729 #: js/ui/status/network.js:1742
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Lactivation de la connexion réseau a échoué" msgstr "Lactivation de la connexion réseau a échoué"
@@ -1980,6 +1984,14 @@ msgstr "%d%02d avant chargement complet (%d %%)"
msgid "%d%%" msgid "%d%%"
msgstr "%d%%" msgstr "%d%%"
#: js/ui/status/remoteAccess.js:46
msgid "Screen is Being Shared"
msgstr "Lécran est partagé"
#: js/ui/status/remoteAccess.js:48
msgid "Turn off"
msgstr "Éteindre"
#. The menu only appears when airplane mode is on, so just #. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically #. statically build it as if it was on, rather than dynamically
#. changing the menu contents. #. changing the menu contents.
@@ -1999,28 +2011,28 @@ msgstr "Fermer la session"
msgid "Account Settings" msgid "Account Settings"
msgstr "Paramètres du compte" msgstr "Paramètres du compte"
#: js/ui/status/system.js:268 #: js/ui/status/system.js:279
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Verrouillage de lorientation " msgstr "Verrouillage de lorientation "
#: js/ui/status/system.js:294 #: js/ui/status/system.js:305
msgid "Suspend" msgid "Suspend"
msgstr "Mettre en veille" msgstr "Mettre en veille"
#: js/ui/status/system.js:304 #: js/ui/status/system.js:315
msgid "Power Off" msgid "Power Off"
msgstr "Éteindre" msgstr "Éteindre"
#: js/ui/status/thunderbolt.js:294 #: js/ui/status/thunderbolt.js:298
msgid "Thunderbolt" msgid "Thunderbolt"
msgstr "Interface Thunderbolt" msgstr "Interface Thunderbolt"
#. we are done #. we are done
#: js/ui/status/thunderbolt.js:350 #: js/ui/status/thunderbolt.js:354
msgid "Unknown Thunderbolt device" msgid "Unknown Thunderbolt device"
msgstr "Périphérique Thunderbolt inconnu" msgstr "Périphérique Thunderbolt inconnu"
#: js/ui/status/thunderbolt.js:351 #: js/ui/status/thunderbolt.js:355
msgid "" msgid ""
"New device has been detected while you were away. Please disconnect and " "New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it." "reconnect the device to start using it."
@@ -2028,24 +2040,19 @@ msgstr ""
"Un nouveau périphérique a été détecté pendant votre absence. Veuillez le " "Un nouveau périphérique a été détecté pendant votre absence. Veuillez le "
"débrancher et rebrancher avant de commencer à lutiliser" "débrancher et rebrancher avant de commencer à lutiliser"
#: js/ui/status/thunderbolt.js:356 #: js/ui/status/thunderbolt.js:360
msgid "Thunderbolt authorization error" msgid "Thunderbolt authorization error"
msgstr "Erreur dautorisation Thunderbolt" msgstr "Erreur dautorisation Thunderbolt"
#: js/ui/status/thunderbolt.js:357 #: js/ui/status/thunderbolt.js:361
#, javascript-format #, javascript-format
#| msgid "Could not authorize the thunderbolt device: %s"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Impossible dautoriser le périphérique Thunderbolt : %s" msgstr "Impossible dautoriser le périphérique Thunderbolt : %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:135
msgid "Volume changed" msgid "Volume changed"
msgstr "Volume modifié" msgstr "Volume modifié"
#: js/ui/status/volume.js:170
msgid "Volume"
msgstr "Volume"
#. Translators: this is for display mirroring i.e. cloning. #. Translators: this is for display mirroring i.e. cloning.
#. * Try to keep it under around 15 characters. #. * Try to keep it under around 15 characters.
#. #.
@@ -2095,22 +2102,22 @@ msgstr "Recherche"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "« %s » est prêt" msgstr "« %s » est prêt"
#: js/ui/windowManager.js:72 #: js/ui/windowManager.js:74
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "Voulez-vous conserver ces paramètres daffichage ?" msgstr "Voulez-vous conserver ces paramètres daffichage ?"
#. Translators: this and the following message should be limited in lenght, #. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:84 #: js/ui/windowManager.js:86
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Restaurer les paramètres" msgstr "Restaurer les paramètres"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:89
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Conserver les modifications" msgstr "Conserver les modifications"
#: js/ui/windowManager.js:105 #: js/ui/windowManager.js:107
#, 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"
@@ -2119,7 +2126,7 @@ msgstr[1] "Les paramètres seront restaurés dans %d secondes"
#. 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:660 #: js/ui/windowManager.js:689
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2172,19 +2179,19 @@ msgstr "Déplacer vers lespace de travail supérieur"
msgid "Move to Workspace Down" msgid "Move to Workspace Down"
msgstr "Déplacer vers lespace de travail inférieur" msgstr "Déplacer vers lespace de travail inférieur"
#: js/ui/windowMenu.js:140 #: js/ui/windowMenu.js:139
msgid "Move to Monitor Up" msgid "Move to Monitor Up"
msgstr "Déplacer vers lécran du haut" msgstr "Déplacer vers lécran du haut"
#: js/ui/windowMenu.js:149 #: js/ui/windowMenu.js:148
msgid "Move to Monitor Down" msgid "Move to Monitor Down"
msgstr "Déplacer vers lécran du bas" msgstr "Déplacer vers lécran du bas"
#: js/ui/windowMenu.js:158 #: js/ui/windowMenu.js:157
msgid "Move to Monitor Left" msgid "Move to Monitor Left"
msgstr "Déplacer vers lécran de gauche" msgstr "Déplacer vers lécran de gauche"
#: js/ui/windowMenu.js:167 #: js/ui/windowMenu.js:166
msgid "Move to Monitor Right" msgid "Move to Monitor Right"
msgstr "Déplacer vers lécran de droite" msgstr "Déplacer vers lécran de droite"
@@ -2197,29 +2204,29 @@ msgstr "Agenda dEvolution"
msgid "evolution" msgid "evolution"
msgstr "evolution" msgstr "evolution"
#: src/main.c:432 #: src/main.c:410
msgid "Print version" msgid "Print version"
msgstr "Affiche la version" msgstr "Affiche la version"
#: src/main.c:438 #: src/main.c:416
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Mode utilisé par GDM pour lécran de connexion" msgstr "Mode utilisé par GDM pour lécran de connexion"
#: src/main.c:444 #: src/main.c:422
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "" msgstr ""
"Utiliser un mode particulier, par ex. « gdm » pour lécran de connexion" "Utiliser un mode particulier, par ex. « gdm » pour lécran de connexion"
#: src/main.c:450 #: src/main.c:428
msgid "List possible modes" msgid "List possible modes"
msgstr "Lister les modes possibles" msgstr "Lister les modes possibles"
#: src/shell-app.c:270 #: src/shell-app.c:272
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Inconnu" msgstr "Inconnu"
#: src/shell-app.c:511 #: src/shell-app.c:523
#, c-format #, c-format
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "Impossible de lancer « %s »" msgstr "Impossible de lancer « %s »"

232
po/fur.po
View File

@@ -7,15 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: video-subtitles master\n" "Project-Id-Version: video-subtitles 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: 2018-04-13 19:54+0000\n" "POT-Creation-Date: 2018-08-01 18:08+0000\n"
"PO-Revision-Date: 2018-04-23 21:41+0200\n" "PO-Revision-Date: 2018-08-08 06:58+0200\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n" "Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Language-Team: Friulian <fur@li.org>\n" "Language-Team: Friulian <fur@li.org>\n"
"Language: fur\n" "Language: fur\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.6\n" "X-Generator: Poedit 2.0.7\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: data/50-gnome-shell-system.xml:6 #: data/50-gnome-shell-system.xml:6
@@ -286,36 +286,36 @@ msgstr ""
"Se vêr, nome i barcons dal spazi di lavôr curint a vegnin mostrâts intal " "Se vêr, nome i barcons dal spazi di lavôr curint a vegnin mostrâts intal "
"seletôr. Se no, ducj i barcons a vegnin includûts." "seletôr. Se no, ducj i barcons a vegnin includûts."
#: data/org.gnome.shell.gschema.xml.in:197 #: data/org.gnome.shell.gschema.xml.in:198
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
msgstr "Lee il barcon modâl al barcon gjenitôr" msgstr "Lee il barcon modâl al barcon gjenitôr"
#: data/org.gnome.shell.gschema.xml.in:198 #: data/org.gnome.shell.gschema.xml.in:199
#: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:208
#: data/org.gnome.shell.gschema.xml.in:215 #: data/org.gnome.shell.gschema.xml.in:216
#: data/org.gnome.shell.gschema.xml.in:223 #: data/org.gnome.shell.gschema.xml.in:224
#: data/org.gnome.shell.gschema.xml.in:231 #: data/org.gnome.shell.gschema.xml.in:232
msgid "" msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell." "This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "" msgstr ""
"Cheste clâf e sorplante chê in org.gnome.mutter cuant che al è in esecuzion " "Cheste clâf e sorplante chê in org.gnome.mutter cuant che al è in esecuzion "
"GNOME Shell." "GNOME Shell."
#: data/org.gnome.shell.gschema.xml.in:206 #: data/org.gnome.shell.gschema.xml.in:207
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "" msgstr ""
"Abilite la tasseladure sul ôr cuant che si strissine i barcons tal ôr dal " "Abilite la tasseladure sul ôr cuant che si strissine i barcons tal ôr dal "
"visôr" "visôr"
#: data/org.gnome.shell.gschema.xml.in:214 #: data/org.gnome.shell.gschema.xml.in:215
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "I spazis di vore a son ministrât in maniere dinamiche" msgstr "I spazis di vore a son ministrât in maniere dinamiche"
#: data/org.gnome.shell.gschema.xml.in:222 #: data/org.gnome.shell.gschema.xml.in:223
msgid "Workspaces only on primary monitor" msgid "Workspaces only on primary monitor"
msgstr "Spazis di lavôr dome sul visôr principâl" msgstr "Spazis di lavôr dome sul visôr principâl"
#: data/org.gnome.shell.gschema.xml.in:230 #: data/org.gnome.shell.gschema.xml.in:231
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "" msgstr ""
"Tardâ il cambiament dal focus te modalitât mouse fintant che il pontadôr no " "Tardâ il cambiament dal focus te modalitât mouse fintant che il pontadôr no "
@@ -358,20 +358,20 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Jentre" msgstr "Jentre"
#: js/gdm/loginDialog.js:315 #: js/gdm/loginDialog.js:319
msgid "Choose Session" msgid "Choose Session"
msgstr "Selezione Session" msgstr "Selezione Session"
#. translators: this message is shown below the user list on the #. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for #. login screen. It can be activated to reveal an entry for
#. manually entering the username. #. manually entering the username.
#: js/gdm/loginDialog.js:458 #: js/gdm/loginDialog.js:462
msgid "Not listed?" msgid "Not listed?"
msgstr "No in liste?" msgstr "No in liste?"
#. Translators: this message is shown below the username entry field #. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm #. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:887 #: js/gdm/loginDialog.js:891
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(p.e., utent o %s)" msgstr "(p.e., utent o %s)"
@@ -379,12 +379,12 @@ msgstr "(p.e., utent o %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243 #: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243
#: js/ui/components/networkAgent.js:261 #: js/ui/components/networkAgent.js:261
msgid "Username: " msgid "Username: "
msgstr "Non utent:" msgstr "Non utent:"
#: js/gdm/loginDialog.js:1228 #: js/gdm/loginDialog.js:1234
msgid "Login Window" msgid "Login Window"
msgstr "Barcon di acès" msgstr "Barcon di acès"
@@ -397,7 +397,7 @@ msgstr "Erôr di autenticazion"
#. as a cue to display our own message. #. as a cue to display our own message.
#. Translators: this message is shown below the password entry field #. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead #. to indicate the user can swipe their finger instead
#: js/gdm/util.js:482 #: js/gdm/util.js:485
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(o passe cul dêt)" msgstr "(o passe cul dêt)"
@@ -638,23 +638,23 @@ msgstr "Dispès"
msgid "All" msgid "All"
msgstr "Dutis" msgstr "Dutis"
#: js/ui/appDisplay.js:1886 #: js/ui/appDisplay.js:1890
msgid "New Window" msgid "New Window"
msgstr "Gnûf barcon" msgstr "Gnûf barcon"
#: js/ui/appDisplay.js:1900 #: js/ui/appDisplay.js:1904
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Invie doprant une schede grafiche dedicade" msgstr "Invie doprant une schede grafiche dedicade"
#: js/ui/appDisplay.js:1927 js/ui/dash.js:285 #: js/ui/appDisplay.js:1931 js/ui/dash.js:285
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Gjave dai preferîts" msgstr "Gjave dai preferîts"
#: js/ui/appDisplay.js:1933 #: js/ui/appDisplay.js:1937
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Zonte tai preferîts" msgstr "Zonte tai preferîts"
#: js/ui/appDisplay.js:1943 #: js/ui/appDisplay.js:1947
msgid "Show Details" msgid "Show Details"
msgstr "Mostre Detais" msgstr "Mostre Detais"
@@ -684,7 +684,7 @@ msgstr "Cufis"
msgid "Headset" msgid "Headset"
msgstr "Cufis cun microfon" msgstr "Cufis cun microfon"
#: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221 #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:255
msgid "Microphone" msgid "Microphone"
msgstr "Microfon" msgstr "Microfon"
@@ -696,7 +696,7 @@ msgstr "Cambie sfont…"
msgid "Display Settings" msgid "Display Settings"
msgstr "Impostazions visôr" msgstr "Impostazions visôr"
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:264 #: js/ui/backgroundMenu.js:22
msgid "Settings" msgid "Settings"
msgstr "Impostazions" msgstr "Impostazions"
@@ -801,35 +801,35 @@ msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Dut il dì" msgstr "Dut il dì"
#: js/ui/calendar.js:864 #: js/ui/calendar.js:866
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d di %B" msgstr "%A, %d di %B"
#: js/ui/calendar.js:868 #: js/ui/calendar.js:870
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %d di %B dal %Y" msgstr "%A, %d di %B dal %Y"
#: js/ui/calendar.js:1086 #: js/ui/calendar.js:1100
msgid "No Notifications" msgid "No Notifications"
msgstr "Nissune notifiche" msgstr "Nissune notifiche"
#: js/ui/calendar.js:1089 #: js/ui/calendar.js:1103
msgid "No Events" msgid "No Events"
msgstr "Nissun event" msgstr "Nissun event"
#: js/ui/calendar.js:1117 #: js/ui/calendar.js:1131
msgid "Clear All" msgid "Clear All"
msgstr "Nete dut" msgstr "Nete dut"
#. Translators: %s is an application name #. Translators: %s is an application name
#: js/ui/closeDialog.js:44 #: js/ui/closeDialog.js:47
#, javascript-format #, javascript-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
msgstr "“%s” nol rispuint." msgstr "“%s” nol rispuint."
#: js/ui/closeDialog.js:45 #: js/ui/closeDialog.js:48
msgid "" msgid ""
"You may choose to wait a short while for it to continue or force the " "You may choose to wait a short while for it to continue or force the "
"application to quit entirely." "application to quit entirely."
@@ -837,11 +837,11 @@ msgstr ""
"Si pues sielzi di spietâ un tic che al continui o sfuarçâ la aplicazion a " "Si pues sielzi di spietâ un tic che al continui o sfuarçâ la aplicazion a "
"jessî dal dut." "jessî dal dut."
#: js/ui/closeDialog.js:61 #: js/ui/closeDialog.js:64
msgid "Force Quit" msgid "Force Quit"
msgstr "Sfuarce jessude" msgstr "Sfuarce jessude"
#: js/ui/closeDialog.js:64 #: js/ui/closeDialog.js:67
msgid "Wait" msgid "Wait"
msgstr "Spiete" msgstr "Spiete"
@@ -858,7 +858,7 @@ msgstr "Dispositîf esterni distacât"
msgid "Open with %s" msgid "Open with %s"
msgstr "Vierç cun %s" msgstr "Vierç cun %s"
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295 #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297
msgid "Password:" msgid "Password:"
msgstr "Password:" msgstr "Password:"
@@ -895,11 +895,11 @@ msgstr "Password di clâf privade:"
msgid "Service: " msgid "Service: "
msgstr "Servizi:" msgstr "Servizi:"
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664
msgid "Authentication required by wireless network" msgid "Authentication required by wireless network"
msgstr "La rêt cence fîl e domande autenticazion" msgstr "La rêt cence fîl e domande autenticazion"
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660 #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@@ -908,7 +908,7 @@ msgstr ""
"Si scugne meti une password o une clâf di cifradure par jentrâ te rêt cence " "Si scugne meti une password o une clâf di cifradure par jentrâ te rêt cence "
"fîl \"%s\"." "fîl \"%s\"."
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663 #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Autenticazion vie fîl 802.1X" msgstr "Autenticazion vie fîl 802.1X"
@@ -916,15 +916,15 @@ msgstr "Autenticazion vie fîl 802.1X"
msgid "Network name: " msgid "Network name: "
msgstr "Non rêt:" msgstr "Non rêt:"
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667 #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Autenticazion DSL" msgstr "Autenticazion DSL"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673 #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678
msgid "PIN code required" msgid "PIN code required"
msgstr "Si pretint un codiç PIN" msgstr "Si pretint un codiç PIN"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674 #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Si scugne meti un codiç PIN pal dispositîf a bande largje mobil" msgstr "Si scugne meti un codiç PIN pal dispositîf a bande largje mobil"
@@ -932,17 +932,17 @@ msgstr "Si scugne meti un codiç PIN pal dispositîf a bande largje mobil"
msgid "PIN: " msgid "PIN: "
msgstr "PIN: " msgstr "PIN: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680 #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685
msgid "Mobile broadband network password" msgid "Mobile broadband network password"
msgstr "Passowrd rêt mobil a bande largje" msgstr "Passowrd rêt mobil a bande largje"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664 #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681 #: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "A covente une password par tacâsi a '%s'." msgstr "A covente une password par tacâsi a '%s'."
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704
msgid "Network Manager" msgid "Network Manager"
msgstr "Ministradôr di rêt" msgstr "Ministradôr di rêt"
@@ -962,7 +962,7 @@ msgstr "Autentiche"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327 #: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327
msgid "Sorry, that didnt work. Please try again." msgid "Sorry, that didnt work. Please try again."
msgstr "Mi displâs, no je lade drete. Prove di gnûf." msgstr "Mi displâs, no je lade drete. Prove di gnûf."
@@ -1294,13 +1294,13 @@ msgid "Leave On"
msgstr "Lasse ativât" msgstr "Lasse ativât"
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143 #: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:1281 #: js/ui/status/network.js:1294
msgid "Turn On" msgid "Turn On"
msgstr "Impie" msgstr "Impie"
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143 #: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:154 js/ui/status/network.js:337 #: js/ui/status/network.js:154 js/ui/status/network.js:337
#: js/ui/status/network.js:1281 js/ui/status/network.js:1396 #: js/ui/status/network.js:1294 js/ui/status/network.js:1409
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90 #: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117 #: js/ui/status/rfkill.js:117
msgid "Turn Off" msgid "Turn Off"
@@ -1362,7 +1362,7 @@ msgstr "Viôt sorzint"
msgid "Web Page" msgid "Web Page"
msgstr "Pagjine Web" msgstr "Pagjine Web"
#: js/ui/messageTray.js:1493 #: js/ui/messageTray.js:1495
msgid "System Information" msgid "System Information"
msgstr "Informazion di sisteme" msgstr "Informazion di sisteme"
@@ -1374,6 +1374,10 @@ msgstr "Artist no cognossût"
msgid "Unknown title" msgid "Unknown title"
msgstr "Titul no cognossût" msgstr "Titul no cognossût"
#: js/ui/osdWindow.js:32 js/ui/status/volume.js:204
msgid "Volume"
msgstr "Volum"
#: js/ui/overview.js:83 #: js/ui/overview.js:83
msgid "Undo" msgid "Undo"
msgstr "Anule" msgstr "Anule"
@@ -1416,43 +1420,43 @@ msgstr "Assegne batidure"
msgid "Done" msgid "Done"
msgstr "Fat" msgstr "Fat"
#: js/ui/padOsd.js:740 #: js/ui/padOsd.js:742
msgid "Edit…" msgid "Edit…"
msgstr "Modifiche…" msgstr "Modifiche…"
# masculin o feminin # masculin o feminin
#: js/ui/padOsd.js:782 js/ui/padOsd.js:887 #: js/ui/padOsd.js:784 js/ui/padOsd.js:889
msgid "None" msgid "None"
msgstr "Nissune" msgstr "Nissune"
#: js/ui/padOsd.js:841 #: js/ui/padOsd.js:843
msgid "Press a button to configure" msgid "Press a button to configure"
msgstr "Frache un boton par configurâ" msgstr "Frache un boton par configurâ"
#: js/ui/padOsd.js:842 #: js/ui/padOsd.js:844
msgid "Press Esc to exit" msgid "Press Esc to exit"
msgstr "Frache Esc par jessî" msgstr "Frache Esc par jessî"
#: js/ui/padOsd.js:845 #: js/ui/padOsd.js:847
msgid "Press any key to exit" msgid "Press any key to exit"
msgstr "Frache un tast par jessî" msgstr "Frache un tast par jessî"
#: js/ui/panel.js:355 #: js/ui/panel.js:356
msgid "Quit" msgid "Quit"
msgstr "Jes" msgstr "Jes"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: js/ui/panel.js:411 #: js/ui/panel.js:412
msgid "Activities" msgid "Activities"
msgstr "Ativitâts" msgstr "Ativitâts"
#: js/ui/panel.js:692 #: js/ui/panel.js:693
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Sisteme" msgstr "Sisteme"
#: js/ui/panel.js:811 #: js/ui/panel.js:816
msgid "Top Bar" msgid "Top Bar"
msgstr "Sbare parsore" msgstr "Sbare parsore"
@@ -1461,24 +1465,24 @@ msgstr "Sbare parsore"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: js/ui/popupMenu.js:291 #: js/ui/popupMenu.js:300
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
#: js/ui/runDialog.js:70 #: js/ui/runDialog.js:74
msgid "Enter a Command" msgid "Enter a Command"
msgstr "Scrîf un comant" msgstr "Scrîf un comant"
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:175 #: js/ui/runDialog.js:114 js/ui/windowMenu.js:174
msgid "Close" msgid "Close"
msgstr "Siere" msgstr "Siere"
# torne invie o torne tache # torne invie o torne tache
#: js/ui/runDialog.js:273 #: js/ui/runDialog.js:278
msgid "Restart is not available on Wayland" msgid "Restart is not available on Wayland"
msgstr "Il tornâ a tacâ nol è disponibil in Wayland" msgstr "Il tornâ a tacâ nol è disponibil in Wayland"
#: js/ui/runDialog.js:278 #: js/ui/runDialog.js:283
msgid "Restarting…" msgid "Restarting…"
msgstr "Daûr a tornâ a inviâ…" msgstr "Daûr a tornâ a inviâ…"
@@ -1502,7 +1506,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d gnove notifiche" msgstr[0] "%d gnove notifiche"
msgstr[1] "%d gnovis modifichis" msgstr[1] "%d gnovis modifichis"
#: js/ui/screenShield.js:451 js/ui/status/system.js:283 #: js/ui/screenShield.js:451 js/ui/status/system.js:294
msgid "Lock" msgid "Lock"
msgstr "Bloche" msgstr "Bloche"
@@ -1686,7 +1690,7 @@ msgid "<unknown>"
msgstr "<no cognossût>" msgstr "<no cognossût>"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:441 js/ui/status/network.js:1310 #: js/ui/status/network.js:441 js/ui/status/network.js:1323
#, javascript-format #, javascript-format
msgid "%s Off" msgid "%s Off"
msgstr "%s distudât" msgstr "%s distudât"
@@ -1712,7 +1716,7 @@ msgid "%s Disconnecting"
msgstr "%s daûr a disconeti" msgstr "%s daûr a disconeti"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:459 js/ui/status/network.js:1302 #: js/ui/status/network.js:459 js/ui/status/network.js:1315
#, javascript-format #, javascript-format
msgid "%s Connecting" msgid "%s Connecting"
msgstr "%s in conession" msgstr "%s in conession"
@@ -1752,7 +1756,7 @@ msgid "Mobile Broadband Settings"
msgstr "Impostazions bande largje mobil" msgstr "Impostazions bande largje mobil"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:578 js/ui/status/network.js:1307 #: js/ui/status/network.js:578 js/ui/status/network.js:1320
#, javascript-format #, javascript-format
msgid "%s Hardware Disabled" msgid "%s Hardware Disabled"
msgstr "%s disabilitât vie hardware " msgstr "%s disabilitât vie hardware "
@@ -1808,81 +1812,81 @@ msgstr "Nissune rêt"
msgid "Use hardware switch to turn off" msgid "Use hardware switch to turn off"
msgstr "Dopre interutôr fisic par distudâ" msgstr "Dopre interutôr fisic par distudâ"
#: js/ui/status/network.js:1173 #: js/ui/status/network.js:1186
msgid "Select Network" msgid "Select Network"
msgstr "Selezione rêt" msgstr "Selezione rêt"
#: js/ui/status/network.js:1179 #: js/ui/status/network.js:1192
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Impostazions Wi-Fi" msgstr "Impostazions Wi-Fi"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:1298 #: js/ui/status/network.js:1311
#, javascript-format #, javascript-format
msgid "%s Hotspot Active" msgid "%s Hotspot Active"
msgstr "Hotspot %s atîf" msgstr "Hotspot %s atîf"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:1313 #: js/ui/status/network.js:1326
#, javascript-format #, javascript-format
msgid "%s Not Connected" msgid "%s Not Connected"
msgstr "%s distacât" msgstr "%s distacât"
#: js/ui/status/network.js:1413 #: js/ui/status/network.js:1426
msgid "connecting…" msgid "connecting…"
msgstr "daûr a coneti…" msgstr "daûr a coneti…"
#. Translators: this is for network connections that require some kind of key or password #. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1416 #: js/ui/status/network.js:1429
msgid "authentication required" msgid "authentication required"
msgstr "autenticazion necessarie" msgstr "autenticazion necessarie"
#: js/ui/status/network.js:1418 #: js/ui/status/network.js:1431
msgid "connection failed" msgid "connection failed"
msgstr "conession falide" msgstr "conession falide"
#: js/ui/status/network.js:1472 #: js/ui/status/network.js:1485
msgid "VPN Settings" msgid "VPN Settings"
msgstr "Impostazions VPN" msgstr "Impostazions VPN"
#: js/ui/status/network.js:1485 #: js/ui/status/network.js:1498
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: js/ui/status/network.js:1495 #: js/ui/status/network.js:1508
msgid "VPN Off" msgid "VPN Off"
msgstr "VPN distudât" msgstr "VPN distudât"
#: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93 #: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings" msgid "Network Settings"
msgstr "Impostazions rêt" msgstr "Impostazions rêt"
#: js/ui/status/network.js:1588 #: js/ui/status/network.js:1601
#, javascript-format #, javascript-format
msgid "%s Wired Connection" msgid "%s Wired Connection"
msgid_plural "%s Wired Connections" msgid_plural "%s Wired Connections"
msgstr[0] "%s conession cablade" msgstr[0] "%s conession cablade"
msgstr[1] "%s conessions cabladis" msgstr[1] "%s conessions cabladis"
#: js/ui/status/network.js:1592 #: js/ui/status/network.js:1605
#, javascript-format #, javascript-format
msgid "%s Wi-Fi Connection" msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections" msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s conession cence fîi" msgstr[0] "%s conession cence fîi"
msgstr[1] "%s conessions cence fîi" msgstr[1] "%s conessions cence fîi"
#: js/ui/status/network.js:1596 #: js/ui/status/network.js:1609
#, javascript-format #, javascript-format
msgid "%s Modem Connection" msgid "%s Modem Connection"
msgid_plural "%s Modem Connections" msgid_plural "%s Modem Connections"
msgstr[0] "%s conession modem" msgstr[0] "%s conession modem"
msgstr[1] "%s conessions modem" msgstr[1] "%s conessions modem"
#: js/ui/status/network.js:1728 #: js/ui/status/network.js:1741
msgid "Connection failed" msgid "Connection failed"
msgstr "Conession falide" msgstr "Conession falide"
#: js/ui/status/network.js:1729 #: js/ui/status/network.js:1742
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Ativazion de conession di rêt falide" msgstr "Ativazion de conession di rêt falide"
@@ -1933,6 +1937,14 @@ msgstr "%d%02d par jessi plene (%d%%)"
msgid "%d%%" msgid "%d%%"
msgstr "%d%%" msgstr "%d%%"
#: js/ui/status/remoteAccess.js:46
msgid "Screen is Being Shared"
msgstr "Il schermi al è condividût"
#: js/ui/status/remoteAccess.js:48
msgid "Turn off"
msgstr "Distude"
#. The menu only appears when airplane mode is on, so just #. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically #. statically build it as if it was on, rather than dynamically
#. changing the menu contents. #. changing the menu contents.
@@ -1952,28 +1964,28 @@ msgstr "Jes"
msgid "Account Settings" msgid "Account Settings"
msgstr "Impostazions account" msgstr "Impostazions account"
#: js/ui/status/system.js:268 #: js/ui/status/system.js:279
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Bloc Orientament" msgstr "Bloc Orientament"
#: js/ui/status/system.js:294 #: js/ui/status/system.js:305
msgid "Suspend" msgid "Suspend"
msgstr "Sospindi" msgstr "Sospindi"
#: js/ui/status/system.js:304 #: js/ui/status/system.js:315
msgid "Power Off" msgid "Power Off"
msgstr "Distude" msgstr "Distude"
#: js/ui/status/thunderbolt.js:294 #: js/ui/status/thunderbolt.js:298
msgid "Thunderbolt" msgid "Thunderbolt"
msgstr "Thunderbolt" msgstr "Thunderbolt"
#. we are done #. we are done
#: js/ui/status/thunderbolt.js:350 #: js/ui/status/thunderbolt.js:354
msgid "Unknown Thunderbolt device" msgid "Unknown Thunderbolt device"
msgstr "Dispositîf Thunderbolt no cognossût" msgstr "Dispositîf Thunderbolt no cognossût"
#: js/ui/status/thunderbolt.js:351 #: js/ui/status/thunderbolt.js:355
msgid "" msgid ""
"New device has been detected while you were away. Please disconnect and " "New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it." "reconnect the device to start using it."
@@ -1981,23 +1993,19 @@ msgstr ""
"Un gnûf dispositîf al è stât rilevât intant che tu jeris vie. Par plasê " "Un gnûf dispositîf al è stât rilevât intant che tu jeris vie. Par plasê "
"disconet e torne conet il dispositîf par tacâ a doprâlu." "disconet e torne conet il dispositîf par tacâ a doprâlu."
#: js/ui/status/thunderbolt.js:356 #: js/ui/status/thunderbolt.js:360
msgid "Thunderbolt authorization error" msgid "Thunderbolt authorization error"
msgstr "Erôr di autorizazion di Thunderbolt" msgstr "Erôr di autorizazion di Thunderbolt"
#: js/ui/status/thunderbolt.js:357 #: js/ui/status/thunderbolt.js:361
#, javascript-format #, javascript-format
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Impussibil autorizâ il dispositîf Thunderbolt: %s" msgstr "Impussibil autorizâ il dispositîf Thunderbolt: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:135
msgid "Volume changed" msgid "Volume changed"
msgstr "Volum modificât" msgstr "Volum modificât"
#: js/ui/status/volume.js:170
msgid "Volume"
msgstr "Volum"
#. Translators: this is for display mirroring i.e. cloning. #. Translators: this is for display mirroring i.e. cloning.
#. * Try to keep it under around 15 characters. #. * Try to keep it under around 15 characters.
#. #.
@@ -2047,22 +2055,22 @@ msgstr "Cîr"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "“%s” al è pront" msgstr "“%s” al è pront"
#: js/ui/windowManager.js:72 #: js/ui/windowManager.js:74
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "Vûstu tignî chestis impostazions di visôr?" msgstr "Vûstu tignî chestis impostazions di visôr?"
#. Translators: this and the following message should be limited in lenght, #. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:84 #: js/ui/windowManager.js:86
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Ripristine impostazions" msgstr "Ripristine impostazions"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:89
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Ten lis modifichis" msgstr "Ten lis modifichis"
#: js/ui/windowManager.js:105 #: js/ui/windowManager.js:107
#, 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"
@@ -2073,7 +2081,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:660 #: js/ui/windowManager.js:689
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2126,19 +2134,19 @@ msgstr "Sposte tal spazi di lavôr Parsore"
msgid "Move to Workspace Down" msgid "Move to Workspace Down"
msgstr "Sposte tal spazi di lavôr Disot" msgstr "Sposte tal spazi di lavôr Disot"
#: js/ui/windowMenu.js:140 #: js/ui/windowMenu.js:139
msgid "Move to Monitor Up" msgid "Move to Monitor Up"
msgstr "Sposte tal visôr parsore" msgstr "Sposte tal visôr parsore"
#: js/ui/windowMenu.js:149 #: js/ui/windowMenu.js:148
msgid "Move to Monitor Down" msgid "Move to Monitor Down"
msgstr "Sposte tal visôr disot" msgstr "Sposte tal visôr disot"
#: js/ui/windowMenu.js:158 #: js/ui/windowMenu.js:157
msgid "Move to Monitor Left" msgid "Move to Monitor Left"
msgstr "Sposte tal visôr a çampe" msgstr "Sposte tal visôr a çampe"
#: js/ui/windowMenu.js:167 #: js/ui/windowMenu.js:166
msgid "Move to Monitor Right" msgid "Move to Monitor Right"
msgstr "Sposte tal visôr a drete" msgstr "Sposte tal visôr a drete"
@@ -2151,28 +2159,28 @@ msgstr "Calendari di Evolution"
msgid "evolution" msgid "evolution"
msgstr "evolution" msgstr "evolution"
#: src/main.c:432 #: src/main.c:410
msgid "Print version" msgid "Print version"
msgstr "Stampe version" msgstr "Stampe version"
#: src/main.c:438 #: src/main.c:416
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Modalitât doprade da GDM pe videade di acès" msgstr "Modalitât doprade da GDM pe videade di acès"
#: src/main.c:444 #: src/main.c:422
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Dopre une modalitât specifiche, par esempli “gdm” pe videade di acès" msgstr "Dopre une modalitât specifiche, par esempli “gdm” pe videade di acès"
#: src/main.c:450 #: src/main.c:428
msgid "List possible modes" msgid "List possible modes"
msgstr "Liste modalitâts pussibilis" msgstr "Liste modalitâts pussibilis"
#: src/shell-app.c:270 #: src/shell-app.c:272
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "No cognossût" msgstr "No cognossût"
#: src/shell-app.c:511 #: src/shell-app.c:523
#, c-format #, c-format
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "No soi rivât a eseguî '%s'" msgstr "No soi rivât a eseguî '%s'"

960
po/gl.po

File diff suppressed because it is too large Load Diff

983
po/hr.po

File diff suppressed because it is too large Load Diff

1002
po/hu.po

File diff suppressed because it is too large Load Diff

160
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: 2018-04-13 19:54+0000\n" "POT-Creation-Date: 2018-07-24 18:34+0000\n"
"PO-Revision-Date: 2018-04-23 13:41+0700\n" "PO-Revision-Date: 2018-07-25 16:01+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"
@@ -360,20 +360,20 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Masuk" msgstr "Masuk"
#: js/gdm/loginDialog.js:315 #: js/gdm/loginDialog.js:319
msgid "Choose Session" msgid "Choose Session"
msgstr "Pilih Sesi" msgstr "Pilih Sesi"
#. translators: this message is shown below the user list on the #. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for #. login screen. It can be activated to reveal an entry for
#. manually entering the username. #. manually entering the username.
#: js/gdm/loginDialog.js:458 #: js/gdm/loginDialog.js:462
msgid "Not listed?" msgid "Not listed?"
msgstr "Tak masuk daftar?" msgstr "Tak masuk daftar?"
#. Translators: this message is shown below the username entry field #. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm #. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:887 #: js/gdm/loginDialog.js:891
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(cth., pengguna dari %s)" msgstr "(cth., pengguna dari %s)"
@@ -381,12 +381,12 @@ msgstr "(cth., pengguna dari %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243 #: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243
#: js/ui/components/networkAgent.js:261 #: js/ui/components/networkAgent.js:261
msgid "Username: " msgid "Username: "
msgstr "Nama pengguna: " msgstr "Nama pengguna: "
#: js/gdm/loginDialog.js:1228 #: js/gdm/loginDialog.js:1234
msgid "Login Window" msgid "Login Window"
msgstr "Jendela Log Masuk" msgstr "Jendela Log Masuk"
@@ -399,7 +399,7 @@ msgstr "Galat otentikasi"
#. as a cue to display our own message. #. as a cue to display our own message.
#. Translators: this message is shown below the password entry field #. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead #. to indicate the user can swipe their finger instead
#: js/gdm/util.js:482 #: js/gdm/util.js:485
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(atau gesekkan jari)" msgstr "(atau gesekkan jari)"
@@ -634,23 +634,23 @@ msgstr "Sering"
msgid "All" msgid "All"
msgstr "Semua" msgstr "Semua"
#: js/ui/appDisplay.js:1886 #: js/ui/appDisplay.js:1890
msgid "New Window" msgid "New Window"
msgstr "Jendela Baru" msgstr "Jendela Baru"
#: js/ui/appDisplay.js:1900 #: js/ui/appDisplay.js:1904
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:1927 js/ui/dash.js:285 #: js/ui/appDisplay.js:1931 js/ui/dash.js:285
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Hapus dari Favorit" msgstr "Hapus dari Favorit"
#: js/ui/appDisplay.js:1933 #: js/ui/appDisplay.js:1937
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Tambah ke Favorit" msgstr "Tambah ke Favorit"
#: js/ui/appDisplay.js:1943 #: js/ui/appDisplay.js:1947
msgid "Show Details" msgid "Show Details"
msgstr "Tampilkan Rincian" msgstr "Tampilkan Rincian"
@@ -797,35 +797,35 @@ msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Sepanjang Hari" msgstr "Sepanjang Hari"
#: js/ui/calendar.js:864 #: js/ui/calendar.js:866
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d %B" msgstr "%A, %d %B"
#: js/ui/calendar.js:868 #: js/ui/calendar.js:870
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %d %B %Y" msgstr "%A, %d %B %Y"
#: js/ui/calendar.js:1086 #: js/ui/calendar.js:1100
msgid "No Notifications" msgid "No Notifications"
msgstr "Tak Ada Pemberitahuan" msgstr "Tak Ada Pemberitahuan"
#: js/ui/calendar.js:1089 #: js/ui/calendar.js:1103
msgid "No Events" msgid "No Events"
msgstr "Tak Ada Kejadian" msgstr "Tak Ada Kejadian"
#: js/ui/calendar.js:1117 #: js/ui/calendar.js:1131
msgid "Clear All" msgid "Clear All"
msgstr "Bersihkan Semua" msgstr "Bersihkan Semua"
#. Translators: %s is an application name #. Translators: %s is an application name
#: js/ui/closeDialog.js:44 #: js/ui/closeDialog.js:47
#, javascript-format #, javascript-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
msgstr "\"%s\" tidak merespon." msgstr "\"%s\" tidak merespon."
#: js/ui/closeDialog.js:45 #: js/ui/closeDialog.js:48
msgid "" msgid ""
"You may choose to wait a short while for it to continue or force the " "You may choose to wait a short while for it to continue or force the "
"application to quit entirely." "application to quit entirely."
@@ -833,11 +833,11 @@ msgstr ""
"Anda dapat memilih untuk menunggu sebentar untuk melanjutkan atau memaksa " "Anda dapat memilih untuk menunggu sebentar untuk melanjutkan atau memaksa "
"aplikasi keluar." "aplikasi keluar."
#: js/ui/closeDialog.js:61 #: js/ui/closeDialog.js:64
msgid "Force Quit" msgid "Force Quit"
msgstr "Tutup Paksa" msgstr "Tutup Paksa"
#: js/ui/closeDialog.js:64 #: js/ui/closeDialog.js:67
msgid "Wait" msgid "Wait"
msgstr "Tunggu" msgstr "Tunggu"
@@ -854,7 +854,7 @@ msgstr "Drive eksternal terputus"
msgid "Open with %s" msgid "Open with %s"
msgstr "Buka dengan %s" msgstr "Buka dengan %s"
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:295 #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297
msgid "Password:" msgid "Password:"
msgstr "Sandi:" msgstr "Sandi:"
@@ -891,11 +891,11 @@ msgstr "Sandi kunci privat: "
msgid "Service: " msgid "Service: "
msgstr "Layanan: " msgstr "Layanan: "
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664
msgid "Authentication required by wireless network" msgid "Authentication required by wireless network"
msgstr "Otentikasi diperlukan oleh jaringan nirkabel" msgstr "Otentikasi diperlukan oleh jaringan nirkabel"
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660 #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@@ -904,7 +904,7 @@ msgstr ""
"Sandi atau kunci enkripsi diperlukan untuk mengakses jaringan nirkabel \"%s" "Sandi atau kunci enkripsi diperlukan untuk mengakses jaringan nirkabel \"%s"
"\"." "\"."
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663 #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Otentikasi 802.1X kabel" msgstr "Otentikasi 802.1X kabel"
@@ -912,15 +912,15 @@ msgstr "Otentikasi 802.1X kabel"
msgid "Network name: " msgid "Network name: "
msgstr "Nama jaringan: " msgstr "Nama jaringan: "
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667 #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Otentikasi DSL" msgstr "Otentikasi DSL"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673 #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678
msgid "PIN code required" msgid "PIN code required"
msgstr "Perlu kode PIN" msgstr "Perlu kode PIN"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674 #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Kode PIN diperlukan untuk perangkat data seluler" msgstr "Kode PIN diperlukan untuk perangkat data seluler"
@@ -928,17 +928,17 @@ msgstr "Kode PIN diperlukan untuk perangkat data seluler"
msgid "PIN: " msgid "PIN: "
msgstr "PIN: " msgstr "PIN: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680 #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685
msgid "Mobile broadband network password" msgid "Mobile broadband network password"
msgstr "Sandi jaringan data seluler" msgstr "Sandi jaringan data seluler"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664 #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681 #: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "Perlu suatu sandi untuk menyambung ke \"%s\"." msgstr "Perlu suatu sandi untuk menyambung ke \"%s\"."
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704
msgid "Network Manager" msgid "Network Manager"
msgstr "Manajer Jaringan" msgstr "Manajer Jaringan"
@@ -958,7 +958,7 @@ msgstr "Otentikasi"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: js/ui/components/polkitAgent.js:281 js/ui/shellMountOperation.js:327 #: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327
msgid "Sorry, that didnt work. Please try again." msgid "Sorry, that didnt work. Please try again."
msgstr "Maaf, tidak berhasil. Silakan coba lagi." msgstr "Maaf, tidak berhasil. Silakan coba lagi."
@@ -1281,13 +1281,13 @@ msgid "Leave On"
msgstr "Biarkan Menyala" msgstr "Biarkan Menyala"
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143 #: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:1281 #: js/ui/status/network.js:1294
msgid "Turn On" msgid "Turn On"
msgstr "Nyalakan" msgstr "Nyalakan"
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143 #: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:154 js/ui/status/network.js:337 #: js/ui/status/network.js:154 js/ui/status/network.js:337
#: js/ui/status/network.js:1281 js/ui/status/network.js:1396 #: js/ui/status/network.js:1294 js/ui/status/network.js:1409
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90 #: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117 #: js/ui/status/rfkill.js:117
msgid "Turn Off" msgid "Turn Off"
@@ -1349,7 +1349,7 @@ msgstr "Tilik Sumber"
msgid "Web Page" msgid "Web Page"
msgstr "Halaman Web" msgstr "Halaman Web"
#: js/ui/messageTray.js:1493 #: js/ui/messageTray.js:1495
msgid "System Information" msgid "System Information"
msgstr "Informasi Sistem" msgstr "Informasi Sistem"
@@ -1423,22 +1423,22 @@ msgstr "Tekan Esc untuk keluar"
msgid "Press any key to exit" msgid "Press any key to exit"
msgstr "Tekan tombol apa saja untuk keluar" msgstr "Tekan tombol apa saja untuk keluar"
#: js/ui/panel.js:355 #: js/ui/panel.js:356
msgid "Quit" msgid "Quit"
msgstr "Keluar" msgstr "Keluar"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: js/ui/panel.js:411 #: js/ui/panel.js:412
msgid "Activities" msgid "Activities"
msgstr "Aktivitas" msgstr "Aktivitas"
#: js/ui/panel.js:692 #: js/ui/panel.js:693
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Sistem" msgstr "Sistem"
#: js/ui/panel.js:811 #: js/ui/panel.js:816
msgid "Top Bar" msgid "Top Bar"
msgstr "Bar Atas" msgstr "Bar Atas"
@@ -1448,7 +1448,7 @@ msgstr "Bar Atas"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: js/ui/popupMenu.js:291 #: js/ui/popupMenu.js:300
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@@ -1456,15 +1456,15 @@ msgstr "toggle-switch-intl"
msgid "Enter a Command" msgid "Enter a Command"
msgstr "Ketikkan Perintah" msgstr "Ketikkan Perintah"
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:175 #: js/ui/runDialog.js:110 js/ui/windowMenu.js:174
msgid "Close" msgid "Close"
msgstr "Tutup" msgstr "Tutup"
#: js/ui/runDialog.js:273 #: js/ui/runDialog.js:274
msgid "Restart is not available on Wayland" msgid "Restart is not available on Wayland"
msgstr "Memulai ulang tidak tersedia di Wayland" msgstr "Memulai ulang tidak tersedia di Wayland"
#: js/ui/runDialog.js:278 #: js/ui/runDialog.js:279
msgid "Restarting…" msgid "Restarting…"
msgstr "Memulai ulang..." msgstr "Memulai ulang..."
@@ -1665,7 +1665,7 @@ msgid "<unknown>"
msgstr "<tak dikenal>" msgstr "<tak dikenal>"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:441 js/ui/status/network.js:1310 #: js/ui/status/network.js:441 js/ui/status/network.js:1323
#, javascript-format #, javascript-format
msgid "%s Off" msgid "%s Off"
msgstr "%s Mati" msgstr "%s Mati"
@@ -1691,7 +1691,7 @@ msgid "%s Disconnecting"
msgstr "%s Memutus" msgstr "%s Memutus"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:459 js/ui/status/network.js:1302 #: js/ui/status/network.js:459 js/ui/status/network.js:1315
#, javascript-format #, javascript-format
msgid "%s Connecting" msgid "%s Connecting"
msgstr "%s Menyambung" msgstr "%s Menyambung"
@@ -1731,7 +1731,7 @@ msgid "Mobile Broadband Settings"
msgstr "Pengaturan Data Seluler" msgstr "Pengaturan Data Seluler"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:578 js/ui/status/network.js:1307 #: js/ui/status/network.js:578 js/ui/status/network.js:1320
#, javascript-format #, javascript-format
msgid "%s Hardware Disabled" msgid "%s Hardware Disabled"
msgstr "%s Perangkat Keras Dinonaktifkan" msgstr "%s Perangkat Keras Dinonaktifkan"
@@ -1787,78 +1787,78 @@ msgstr "Tiada Jaringan"
msgid "Use hardware switch to turn off" msgid "Use hardware switch to turn off"
msgstr "Pakai saklar perangkat keras untuk mematikan" msgstr "Pakai saklar perangkat keras untuk mematikan"
#: js/ui/status/network.js:1173 #: js/ui/status/network.js:1186
msgid "Select Network" msgid "Select Network"
msgstr "Pilih Jaringan" msgstr "Pilih Jaringan"
#: js/ui/status/network.js:1179 #: js/ui/status/network.js:1192
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Pengaturan Wi-Fi" msgstr "Pengaturan Wi-Fi"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:1298 #: js/ui/status/network.js:1311
#, javascript-format #, javascript-format
msgid "%s Hotspot Active" msgid "%s Hotspot Active"
msgstr "%s Hotspot Aktif" msgstr "%s Hotspot Aktif"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:1313 #: js/ui/status/network.js:1326
#, javascript-format #, javascript-format
msgid "%s Not Connected" msgid "%s Not Connected"
msgstr "%s Tak Tersambung" msgstr "%s Tak Tersambung"
#: js/ui/status/network.js:1413 #: js/ui/status/network.js:1426
msgid "connecting…" msgid "connecting…"
msgstr "menghubungi..." msgstr "menghubungi..."
#. Translators: this is for network connections that require some kind of key or password #. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1416 #: js/ui/status/network.js:1429
msgid "authentication required" msgid "authentication required"
msgstr "diperlukan otentikasi" msgstr "diperlukan otentikasi"
#: js/ui/status/network.js:1418 #: js/ui/status/network.js:1431
msgid "connection failed" msgid "connection failed"
msgstr "koneksi gagal" msgstr "koneksi gagal"
#: js/ui/status/network.js:1472 #: js/ui/status/network.js:1485
msgid "VPN Settings" msgid "VPN Settings"
msgstr "Pengaturan VPN" msgstr "Pengaturan VPN"
#: js/ui/status/network.js:1485 #: js/ui/status/network.js:1498
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: js/ui/status/network.js:1495 #: js/ui/status/network.js:1508
msgid "VPN Off" msgid "VPN Off"
msgstr "VPN Mati" msgstr "VPN Mati"
#: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93 #: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings" msgid "Network Settings"
msgstr "Pengaturan Jaringan" msgstr "Pengaturan Jaringan"
#: js/ui/status/network.js:1588 #: js/ui/status/network.js:1601
#, javascript-format #, javascript-format
msgid "%s Wired Connection" msgid "%s Wired Connection"
msgid_plural "%s Wired Connections" msgid_plural "%s Wired Connections"
msgstr[0] "%s Koneksi Kabel" msgstr[0] "%s Koneksi Kabel"
#: js/ui/status/network.js:1592 #: js/ui/status/network.js:1605
#, javascript-format #, javascript-format
msgid "%s Wi-Fi Connection" msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections" msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s Koneksi Wi-Fi" msgstr[0] "%s Koneksi Wi-Fi"
#: js/ui/status/network.js:1596 #: js/ui/status/network.js:1609
#, javascript-format #, javascript-format
msgid "%s Modem Connection" msgid "%s Modem Connection"
msgid_plural "%s Modem Connections" msgid_plural "%s Modem Connections"
msgstr[0] "%s Koneksi Modem" msgstr[0] "%s Koneksi Modem"
#: js/ui/status/network.js:1728 #: js/ui/status/network.js:1741
msgid "Connection failed" msgid "Connection failed"
msgstr "Koneksi gagal" msgstr "Koneksi gagal"
#: js/ui/status/network.js:1729 #: js/ui/status/network.js:1742
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Aktivasi koneksi jaringan gagal" msgstr "Aktivasi koneksi jaringan gagal"
@@ -1909,6 +1909,14 @@ msgstr "%d:%02d Sampai Penuh (%d%%)"
msgid "%d%%" msgid "%d%%"
msgstr "%d%%" msgstr "%d%%"
#: js/ui/status/remoteAccess.js:45
msgid "Screen is Being Shared"
msgstr "Layar Sedang Dibagi"
#: js/ui/status/remoteAccess.js:47
msgid "Turn off"
msgstr "Matikan"
#. The menu only appears when airplane mode is on, so just #. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically #. statically build it as if it was on, rather than dynamically
#. changing the menu contents. #. changing the menu contents.
@@ -1940,16 +1948,16 @@ msgstr "Suspensi"
msgid "Power Off" msgid "Power Off"
msgstr "Matikan" msgstr "Matikan"
#: js/ui/status/thunderbolt.js:294 #: js/ui/status/thunderbolt.js:298
msgid "Thunderbolt" msgid "Thunderbolt"
msgstr "Thunderbolt" msgstr "Thunderbolt"
#. we are done #. we are done
#: js/ui/status/thunderbolt.js:350 #: js/ui/status/thunderbolt.js:354
msgid "Unknown Thunderbolt device" msgid "Unknown Thunderbolt device"
msgstr "Perangkat Thunderbolt tak dikenal" msgstr "Perangkat Thunderbolt tak dikenal"
#: js/ui/status/thunderbolt.js:351 #: js/ui/status/thunderbolt.js:355
msgid "" msgid ""
"New device has been detected while you were away. Please disconnect and " "New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it." "reconnect the device to start using it."
@@ -1957,11 +1965,11 @@ msgstr ""
"Perangkat baru telah terdeteksi saat Anda pergi. Harap lepaskan dan " "Perangkat baru telah terdeteksi saat Anda pergi. Harap lepaskan dan "
"sambungkan kembali perangkat untuk mulai menggunakannya." "sambungkan kembali perangkat untuk mulai menggunakannya."
#: js/ui/status/thunderbolt.js:356 #: js/ui/status/thunderbolt.js:360
msgid "Thunderbolt authorization error" msgid "Thunderbolt authorization error"
msgstr "Autorisasi Thunderbolt galat" msgstr "Autorisasi Thunderbolt galat"
#: js/ui/status/thunderbolt.js:357 #: js/ui/status/thunderbolt.js:361
#, javascript-format #, javascript-format
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"
@@ -2046,7 +2054,7 @@ msgstr[0] "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:660 #: js/ui/windowManager.js:668
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2099,19 +2107,19 @@ msgstr "Pindah ke Ruang Kerja Atas"
msgid "Move to Workspace Down" msgid "Move to Workspace Down"
msgstr "Pindah ke Ruang Kerja Bawah" msgstr "Pindah ke Ruang Kerja Bawah"
#: js/ui/windowMenu.js:140 #: js/ui/windowMenu.js:139
msgid "Move to Monitor Up" msgid "Move to Monitor Up"
msgstr "Pindah ke Ruang Kerja Atas" msgstr "Pindah ke Ruang Kerja Atas"
#: js/ui/windowMenu.js:149 #: js/ui/windowMenu.js:148
msgid "Move to Monitor Down" msgid "Move to Monitor Down"
msgstr "Pindah ke Ruang Kerja Bawah" msgstr "Pindah ke Ruang Kerja Bawah"
#: js/ui/windowMenu.js:158 #: js/ui/windowMenu.js:157
msgid "Move to Monitor Left" msgid "Move to Monitor Left"
msgstr "Pindahkan ke Monitor Kiri" msgstr "Pindahkan ke Monitor Kiri"
#: js/ui/windowMenu.js:167 #: js/ui/windowMenu.js:166
msgid "Move to Monitor Right" msgid "Move to Monitor Right"
msgstr "Pindahkan ke Monitor Kanan" msgstr "Pindahkan ke Monitor Kanan"
@@ -2140,12 +2148,12 @@ msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk"
msgid "List possible modes" msgid "List possible modes"
msgstr "Menampilkan mode yang mungkin" msgstr "Menampilkan mode yang mungkin"
#: src/shell-app.c:270 #: src/shell-app.c:272
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Tak dikenal" msgstr "Tak dikenal"
#: src/shell-app.c:511 #: src/shell-app.c:523
#, c-format #, c-format
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "Gagal meluncurkan \"%s\"" msgstr "Gagal meluncurkan \"%s\""

734
po/it.po

File diff suppressed because it is too large Load Diff

458
po/kk.po

File diff suppressed because it is too large Load Diff

315
po/ko.po
View File

@@ -14,13 +14,14 @@
# - VPN: 가상사설망 # - VPN: 가상사설망
# - pairing (bluetooth 관련): 페어링 # - pairing (bluetooth 관련): 페어링
# - Wayland: 웨일랜드로 음역 # - Wayland: 웨일랜드로 음역
# - Night Light: 야간 모드 (gnome-control-center와 일치)
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2018-02-22 09:24+0000\n" "POT-Creation-Date: 2018-08-01 18:08+0000\n"
"PO-Revision-Date: 2018-02-25 09:21+0900\n" "PO-Revision-Date: 2018-08-26 15:05+0900\n"
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n" "Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n" "Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
"Language: ko\n" "Language: ko\n"
@@ -283,32 +284,32 @@ msgstr ""
"참이면, 현재 작업 공간에 창이 있는 창만 창 전환 창에 표시합니다. 거짓이면 모" "참이면, 현재 작업 공간에 창이 있는 창만 창 전환 창에 표시합니다. 거짓이면 모"
"든 창을 표시합니다." "든 창을 표시합니다."
#: data/org.gnome.shell.gschema.xml.in:197 #: data/org.gnome.shell.gschema.xml.in:198
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
msgstr "상위 창에 모달 대화창 붙이기" msgstr "상위 창에 모달 대화창 붙이기"
#: data/org.gnome.shell.gschema.xml.in:198 #: data/org.gnome.shell.gschema.xml.in:199
#: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:208
#: data/org.gnome.shell.gschema.xml.in:215 #: data/org.gnome.shell.gschema.xml.in:216
#: data/org.gnome.shell.gschema.xml.in:223 #: data/org.gnome.shell.gschema.xml.in:224
#: data/org.gnome.shell.gschema.xml.in:231 #: data/org.gnome.shell.gschema.xml.in:232
msgid "" msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell." "This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "그놈 셸을 실행할 때 org.gnome.mutter의 키 대신 사용됩니다." msgstr "그놈 셸을 실행할 때 org.gnome.mutter의 키 대신 사용됩니다."
#: data/org.gnome.shell.gschema.xml.in:206 #: data/org.gnome.shell.gschema.xml.in:207
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "화면 가장자리에 창을 놓을 때 가장자리에 맞춥니다" msgstr "화면 가장자리에 창을 놓을 때 가장자리에 맞춥니다"
#: data/org.gnome.shell.gschema.xml.in:214 #: data/org.gnome.shell.gschema.xml.in:215
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "작업 공간을 동적으로 관리" msgstr "작업 공간을 동적으로 관리"
#: data/org.gnome.shell.gschema.xml.in:222 #: data/org.gnome.shell.gschema.xml.in:223
msgid "Workspaces only on primary monitor" msgid "Workspaces only on primary monitor"
msgstr "주 모니터에서만 작업 공간 사용" msgstr "주 모니터에서만 작업 공간 사용"
#: data/org.gnome.shell.gschema.xml.in:230 #: data/org.gnome.shell.gschema.xml.in:231
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "마우스 포인터가 움직이지 않을 때까지 포커스 전환을 미루기" msgstr "마우스 포인터가 움직이지 않을 때까지 포커스 전환을 미루기"
@@ -327,7 +328,7 @@ msgid "There was an error loading the preferences dialog for %s:"
msgstr "%s에 대한 기본 설정 대화상자를 불러오는데 오류가 발생했습니다:" msgstr "%s에 대한 기본 설정 대화상자를 불러오는데 오류가 발생했습니다:"
#: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71 #: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148 #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:153
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197 #: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197
#: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919 #: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919
msgid "Cancel" msgid "Cancel"
@@ -347,20 +348,20 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "로그인" msgstr "로그인"
#: js/gdm/loginDialog.js:315 #: js/gdm/loginDialog.js:319
msgid "Choose Session" msgid "Choose Session"
msgstr "세션 선택" msgstr "세션 선택"
#. translators: this message is shown below the user list on the #. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for #. login screen. It can be activated to reveal an entry for
#. manually entering the username. #. manually entering the username.
#: js/gdm/loginDialog.js:458 #: js/gdm/loginDialog.js:462
msgid "Not listed?" msgid "Not listed?"
msgstr "목록에 없습니까?" msgstr "목록에 없습니까?"
#. Translators: this message is shown below the username entry field #. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm #. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:887 #: js/gdm/loginDialog.js:891
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(예를 들어, 사용자 또는 %s)" msgstr "(예를 들어, 사용자 또는 %s)"
@@ -368,12 +369,12 @@ msgstr "(예를 들어, 사용자 또는 %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243 #: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243
#: js/ui/components/networkAgent.js:261 #: js/ui/components/networkAgent.js:261
msgid "Username: " msgid "Username: "
msgstr "사용자 이름: " msgstr "사용자 이름: "
#: js/gdm/loginDialog.js:1228 #: js/gdm/loginDialog.js:1234
msgid "Login Window" msgid "Login Window"
msgstr "로그인 창" msgstr "로그인 창"
@@ -386,7 +387,7 @@ msgstr "인증 오류"
#. as a cue to display our own message. #. as a cue to display our own message.
#. Translators: this message is shown below the password entry field #. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead #. to indicate the user can swipe their finger instead
#: js/gdm/util.js:482 #: js/gdm/util.js:485
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(또는 지문을 문지르십시오)" msgstr "(또는 지문을 문지르십시오)"
@@ -621,33 +622,33 @@ msgstr "자주"
msgid "All" msgid "All"
msgstr "모두" msgstr "모두"
#: js/ui/appDisplay.js:1886 #: js/ui/appDisplay.js:1890
msgid "New Window" msgid "New Window"
msgstr "새 창" msgstr "새 창"
#: js/ui/appDisplay.js:1900 #: js/ui/appDisplay.js:1904
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "지정한 그래픽 카드를 사용해 시작" msgstr "지정한 그래픽 카드를 사용해 시작"
#: js/ui/appDisplay.js:1927 js/ui/dash.js:285 #: js/ui/appDisplay.js:1931 js/ui/dash.js:285
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "즐겨찾기에서 제거" msgstr "즐겨찾기에서 제거"
#: js/ui/appDisplay.js:1933 #: js/ui/appDisplay.js:1937
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "즐겨찾기에 추가" msgstr "즐겨찾기에 추가"
# 주의: "Show ..." 형태지만 보이기로 번역하지 않는다 # 주의: "Show ..." 형태지만 보이기로 번역하지 않는다
#: js/ui/appDisplay.js:1943 #: js/ui/appDisplay.js:1947
msgid "Show Details" msgid "Show Details"
msgstr "자세히 보기" msgstr "자세히 보기"
#: js/ui/appFavorites.js:138 #: js/ui/appFavorites.js:140
#, javascript-format #, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "%s 프로그램을 즐겨찾기에 추가했습니다." msgstr "%s 프로그램을 즐겨찾기에 추가했습니다."
#: js/ui/appFavorites.js:172 #: js/ui/appFavorites.js:174
#, javascript-format #, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s 프로그램을 즐겨찾기에서 제거했습니다." msgstr "%s 프로그램을 즐겨찾기에서 제거했습니다."
@@ -668,7 +669,7 @@ msgstr "헤드폰"
msgid "Headset" msgid "Headset"
msgstr "헤드셋" msgstr "헤드셋"
#: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221 #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:255
msgid "Microphone" msgid "Microphone"
msgstr "마이크" msgstr "마이크"
@@ -680,7 +681,7 @@ msgstr "배경 바꾸기…"
msgid "Display Settings" msgid "Display Settings"
msgstr "디스플레이 설정" msgstr "디스플레이 설정"
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:264 #: js/ui/backgroundMenu.js:22
msgid "Settings" msgid "Settings"
msgstr "설정" msgstr "설정"
@@ -785,46 +786,46 @@ msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "종일" msgstr "종일"
#: js/ui/calendar.js:864 #: js/ui/calendar.js:866
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%B %d일 %A" msgstr "%B %d일 %A"
#: js/ui/calendar.js:868 #: js/ui/calendar.js:870
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%Y년 %B %d일 %A" msgstr "%Y년 %B %d일 %A"
#: js/ui/calendar.js:1086 #: js/ui/calendar.js:1100
msgid "No Notifications" msgid "No Notifications"
msgstr "알림 없음" msgstr "알림 없음"
#: js/ui/calendar.js:1089 #: js/ui/calendar.js:1103
msgid "No Events" msgid "No Events"
msgstr "행사 없음" msgstr "행사 없음"
#: js/ui/calendar.js:1117 #: js/ui/calendar.js:1131
msgid "Clear All" msgid "Clear All"
msgstr "모두 지우기" msgstr "모두 지우기"
#. Translators: %s is an application name #. Translators: %s is an application name
#: js/ui/closeDialog.js:44 #: js/ui/closeDialog.js:47
#, javascript-format #, javascript-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
msgstr "“%s” 프로그램이 응답하지 않습니다." msgstr "“%s” 프로그램이 응답하지 않습니다."
#: js/ui/closeDialog.js:45 #: js/ui/closeDialog.js:48
msgid "" msgid ""
"You may choose to wait a short while for it to continue or force the " "You may choose to wait a short while for it to continue or force the "
"application to quit entirely." "application to quit entirely."
msgstr "" msgstr ""
"좀 더 기다려서 계속 할 수도 있고, 강제로 프로그램을 끝낼 수도 있습니다." "좀 더 기다려서 계속 할 수도 있고, 강제로 프로그램을 끝낼 수도 있습니다."
#: js/ui/closeDialog.js:61 #: js/ui/closeDialog.js:64
msgid "Force Quit" msgid "Force Quit"
msgstr "강제로 끝내기" msgstr "강제로 끝내기"
#: js/ui/closeDialog.js:64 #: js/ui/closeDialog.js:67
msgid "Wait" msgid "Wait"
msgstr "기다리기" msgstr "기다리기"
@@ -841,7 +842,7 @@ msgstr "외부 드라이브 연결 끊김"
msgid "Open with %s" msgid "Open with %s"
msgstr "%s 프로그램으로 열기" msgstr "%s 프로그램으로 열기"
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:284 #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297
msgid "Password:" msgid "Password:"
msgstr "암호:" msgstr "암호:"
@@ -878,18 +879,18 @@ msgstr "개인 키 암호: "
msgid "Service: " msgid "Service: "
msgstr "서비스: " msgstr "서비스: "
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664
msgid "Authentication required by wireless network" msgid "Authentication required by wireless network"
msgstr "무선 네트워크에서 인증이 필요합니다" msgstr "무선 네트워크에서 인증이 필요합니다"
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660 #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
"“%s”." "“%s”."
msgstr "“%s” 무선 네트워크에 연결하려면 암호 또는 암호화 키가 필요합니다." msgstr "“%s” 무선 네트워크에 연결하려면 암호 또는 암호화 키가 필요합니다."
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663 #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "유선 802.1X 인증" msgstr "유선 802.1X 인증"
@@ -897,15 +898,15 @@ msgstr "유선 802.1X 인증"
msgid "Network name: " msgid "Network name: "
msgstr "네트워크 이름: " msgstr "네트워크 이름: "
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667 #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672
msgid "DSL authentication" msgid "DSL authentication"
msgstr "인증이 필요합니다" msgstr "인증이 필요합니다"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673 #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678
msgid "PIN code required" msgid "PIN code required"
msgstr "PIN 코드가 필요합니다" msgstr "PIN 코드가 필요합니다"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674 #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "휴대전화 네트워크 장치를 사용하려면 PIN 코드가 필요합니다" msgstr "휴대전화 네트워크 장치를 사용하려면 PIN 코드가 필요합니다"
@@ -913,29 +914,29 @@ msgstr "휴대전화 네트워크 장치를 사용하려면 PIN 코드가 필요
msgid "PIN: " msgid "PIN: "
msgstr "PIN: " msgstr "PIN: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680 #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685
msgid "Mobile broadband network password" msgid "Mobile broadband network password"
msgstr "휴대전화 네트워크 암호" msgstr "휴대전화 네트워크 암호"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664 #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681 #: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "“%s”에 연결하려면 암호가 필요합니다." msgstr "“%s”에 연결하려면 암호가 필요합니다."
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704
msgid "Network Manager" msgid "Network Manager"
msgstr "네트워크 관리" msgstr "네트워크 관리"
#: js/ui/components/polkitAgent.js:43 #: js/ui/components/polkitAgent.js:48
msgid "Authentication Required" msgid "Authentication Required"
msgstr "인증이 필요합니다" msgstr "인증이 필요합니다"
#: js/ui/components/polkitAgent.js:71 #: js/ui/components/polkitAgent.js:76
msgid "Administrator" msgid "Administrator"
msgstr "관리자" msgstr "관리자"
#: js/ui/components/polkitAgent.js:151 #: js/ui/components/polkitAgent.js:156
msgid "Authenticate" msgid "Authenticate"
msgstr "인증" msgstr "인증"
@@ -943,7 +944,7 @@ msgstr "인증"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: js/ui/components/polkitAgent.js:270 js/ui/shellMountOperation.js:327 #: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327
msgid "Sorry, that didnt work. Please try again." msgid "Sorry, that didnt work. Please try again."
msgstr "죄송합니다. 동작하지 않았습니다. 다시 시도하십시오." msgstr "죄송합니다. 동작하지 않았습니다. 다시 시도하십시오."
@@ -991,7 +992,7 @@ msgstr "세계 시계 추가…"
msgid "World Clocks" msgid "World Clocks"
msgstr "세계 시계" msgstr "세계 시계"
#: js/ui/dateMenu.js:225 #: js/ui/dateMenu.js:227
msgid "Weather" msgid "Weather"
msgstr "날씨" msgstr "날씨"
@@ -999,7 +1000,7 @@ msgstr "날씨"
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:289 #: js/ui/dateMenu.js:291
#, javascript-format #, javascript-format
msgid "%s all day." msgid "%s all day."
msgstr "하루 종일 %s." msgstr "하루 종일 %s."
@@ -1008,7 +1009,7 @@ msgstr "하루 종일 %s."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:295 #: js/ui/dateMenu.js:297
#, javascript-format #, javascript-format
msgid "%s, then %s later." msgid "%s, then %s later."
msgstr "%s, 그리고 나중에 %s." msgstr "%s, 그리고 나중에 %s."
@@ -1017,30 +1018,30 @@ msgstr "%s, 그리고 나중에 %s."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:301 #: js/ui/dateMenu.js:303
#, javascript-format #, javascript-format
msgid "%s, then %s, followed by %s later." msgid "%s, then %s, followed by %s later."
msgstr "%s, 그리고 %s, 또 나중에 %s." msgstr "%s, 그리고 %s, 또 나중에 %s."
#: js/ui/dateMenu.js:312 #: js/ui/dateMenu.js:314
msgid "Select a location…" msgid "Select a location…"
msgstr "위치를 선택하십시오…" msgstr "위치를 선택하십시오…"
#: js/ui/dateMenu.js:315 #: js/ui/dateMenu.js:317
msgid "Loading…" msgid "Loading…"
msgstr "읽어들이는 중…" msgstr "읽어들이는 중…"
#. Translators: %s is a temperature with unit, e.g. "23℃" #. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:321 #: js/ui/dateMenu.js:323
#, javascript-format #, javascript-format
msgid "Feels like %s." msgid "Feels like %s."
msgstr "체감 온도 %s." msgstr "체감 온도 %s."
#: js/ui/dateMenu.js:324 #: js/ui/dateMenu.js:326
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "날씨 정보를 온라인으로 가져옵니다" msgstr "날씨 정보를 온라인으로 가져옵니다"
#: js/ui/dateMenu.js:326 #: js/ui/dateMenu.js:328
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "날씨 정보를 현재 사용할 수 없습니다" msgstr "날씨 정보를 현재 사용할 수 없습니다"
@@ -1228,7 +1229,9 @@ msgstr "느린 키 끔"
msgid "" msgid ""
"You just held down the Shift key for 8 seconds. This is the shortcut for the " "You just held down the Shift key for 8 seconds. This is the shortcut for the "
"Slow Keys feature, which affects the way your keyboard works." "Slow Keys feature, which affects the way your keyboard works."
msgstr "Shift 키를 8초 동안 누르고 있었습니다. 느린 키 기능의 바로 가기이고, 이렇게 하면 키보드 동작이 달라집니다." msgstr ""
"Shift 키를 8초 동안 누르고 있었습니다. 느린 키 기능의 바로 가기이고, 이렇게 "
"하면 키보드 동작이 달라집니다."
#: js/ui/kbdA11yDialog.js:42 #: js/ui/kbdA11yDialog.js:42
msgid "Sticky Keys Turned On" msgid "Sticky Keys Turned On"
@@ -1260,13 +1263,13 @@ msgid "Leave On"
msgstr "계속 유지" msgstr "계속 유지"
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143 #: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:1281 #: js/ui/status/network.js:1294
msgid "Turn On" msgid "Turn On"
msgstr "켜기" msgstr "켜기"
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143 #: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:154 js/ui/status/network.js:337 #: js/ui/status/network.js:154 js/ui/status/network.js:337
#: js/ui/status/network.js:1281 js/ui/status/network.js:1396 #: js/ui/status/network.js:1294 js/ui/status/network.js:1409
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90 #: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117 #: js/ui/status/rfkill.js:117
msgid "Turn Off" msgid "Turn Off"
@@ -1328,7 +1331,7 @@ msgstr "소스 보기"
msgid "Web Page" msgid "Web Page"
msgstr "웹페이지" msgstr "웹페이지"
#: js/ui/messageTray.js:1493 #: js/ui/messageTray.js:1495
msgid "System Information" msgid "System Information"
msgstr "시스템 정보" msgstr "시스템 정보"
@@ -1340,6 +1343,11 @@ msgstr "알 수 없는 음악가"
msgid "Unknown title" msgid "Unknown title"
msgstr "알 수 없는 제목" msgstr "알 수 없는 제목"
# 오디오 볼륨
#: js/ui/osdWindow.js:32 js/ui/status/volume.js:204
msgid "Volume"
msgstr "볼륨"
#: js/ui/overview.js:83 #: js/ui/overview.js:83
msgid "Undo" msgid "Undo"
msgstr "실행 취소" msgstr "실행 취소"
@@ -1382,42 +1390,42 @@ msgstr "키 누르기 지정"
msgid "Done" msgid "Done"
msgstr "마침" msgstr "마침"
#: js/ui/padOsd.js:740 #: js/ui/padOsd.js:742
msgid "Edit…" msgid "Edit…"
msgstr "편집…" msgstr "편집…"
#: js/ui/padOsd.js:782 js/ui/padOsd.js:887 #: js/ui/padOsd.js:784 js/ui/padOsd.js:889
msgid "None" msgid "None"
msgstr "없음" msgstr "없음"
#: js/ui/padOsd.js:841 #: js/ui/padOsd.js:843
msgid "Press a button to configure" msgid "Press a button to configure"
msgstr "설정하려면 단추를 누르십시오" msgstr "설정하려면 단추를 누르십시오"
#: js/ui/padOsd.js:842 #: js/ui/padOsd.js:844
msgid "Press Esc to exit" msgid "Press Esc to exit"
msgstr "나가려면 Esc를 누르십시오" msgstr "나가려면 Esc를 누르십시오"
#: js/ui/padOsd.js:845 #: js/ui/padOsd.js:847
msgid "Press any key to exit" msgid "Press any key to exit"
msgstr "나가려면 아무 키나 누르십시오" msgstr "나가려면 아무 키나 누르십시오"
#: js/ui/panel.js:355 #: js/ui/panel.js:356
msgid "Quit" msgid "Quit"
msgstr "끝내기" msgstr "끝내기"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: js/ui/panel.js:411 #: js/ui/panel.js:412
msgid "Activities" msgid "Activities"
msgstr "현재 활동" msgstr "현재 활동"
#: js/ui/panel.js:692 #: js/ui/panel.js:693
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "시스템" msgstr "시스템"
#: js/ui/panel.js:811 #: js/ui/panel.js:816
msgid "Top Bar" msgid "Top Bar"
msgstr "위 막대" msgstr "위 막대"
@@ -1426,23 +1434,23 @@ msgstr "위 막대"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: js/ui/popupMenu.js:291 #: js/ui/popupMenu.js:300
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
#: js/ui/runDialog.js:70 #: js/ui/runDialog.js:74
msgid "Enter a Command" msgid "Enter a Command"
msgstr "명령을 입력하십시오" msgstr "명령을 입력하십시오"
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:175 #: js/ui/runDialog.js:114 js/ui/windowMenu.js:174
msgid "Close" msgid "Close"
msgstr "닫기" msgstr "닫기"
#: js/ui/runDialog.js:273 #: js/ui/runDialog.js:278
msgid "Restart is not available on Wayland" msgid "Restart is not available on Wayland"
msgstr "웨일랜드에서는 다시 시작 기능을 사용할 수 없습니다" msgstr "웨일랜드에서는 다시 시작 기능을 사용할 수 없습니다"
#: js/ui/runDialog.js:278 #: js/ui/runDialog.js:283
msgid "Restarting…" msgid "Restarting…"
msgstr "다시 시작하는 중…" msgstr "다시 시작하는 중…"
@@ -1464,7 +1472,7 @@ msgid "%d new notification"
msgid_plural "%d new notifications" msgid_plural "%d new notifications"
msgstr[0] "새 알림 %d개" msgstr[0] "새 알림 %d개"
#: js/ui/screenShield.js:451 js/ui/status/system.js:283 #: js/ui/screenShield.js:451 js/ui/status/system.js:294
msgid "Lock" msgid "Lock"
msgstr "잠그기" msgstr "잠그기"
@@ -1643,7 +1651,7 @@ msgid "<unknown>"
msgstr "<알 수 없음>" msgstr "<알 수 없음>"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:441 js/ui/status/network.js:1310 #: js/ui/status/network.js:441 js/ui/status/network.js:1323
#, javascript-format #, javascript-format
msgid "%s Off" msgid "%s Off"
msgstr "%s 꺼짐" msgstr "%s 꺼짐"
@@ -1669,7 +1677,7 @@ msgid "%s Disconnecting"
msgstr "%s 연결 끊는 중" msgstr "%s 연결 끊는 중"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:459 js/ui/status/network.js:1302 #: js/ui/status/network.js:459 js/ui/status/network.js:1315
#, javascript-format #, javascript-format
msgid "%s Connecting" msgid "%s Connecting"
msgstr "%s 연결하는 중" msgstr "%s 연결하는 중"
@@ -1709,7 +1717,7 @@ msgid "Mobile Broadband Settings"
msgstr "휴대전화 네트워크 설정" msgstr "휴대전화 네트워크 설정"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:578 js/ui/status/network.js:1307 #: js/ui/status/network.js:578 js/ui/status/network.js:1320
#, javascript-format #, javascript-format
msgid "%s Hardware Disabled" msgid "%s Hardware Disabled"
msgstr "%s 하드웨어 사용 않음" msgstr "%s 하드웨어 사용 않음"
@@ -1765,88 +1773,88 @@ msgstr "네트워크 없음"
msgid "Use hardware switch to turn off" msgid "Use hardware switch to turn off"
msgstr "끄려면 하드웨어 스위치를 사용하십시오" msgstr "끄려면 하드웨어 스위치를 사용하십시오"
#: js/ui/status/network.js:1173 #: js/ui/status/network.js:1186
msgid "Select Network" msgid "Select Network"
msgstr "네트워크 선택" msgstr "네트워크 선택"
#: js/ui/status/network.js:1179 #: js/ui/status/network.js:1192
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "와이파이 설정" msgstr "와이파이 설정"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:1298 #: js/ui/status/network.js:1311
#, javascript-format #, javascript-format
msgid "%s Hotspot Active" msgid "%s Hotspot Active"
msgstr "%s 핫스팟 사용 중" msgstr "%s 핫스팟 사용 중"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:1313 #: js/ui/status/network.js:1326
#, javascript-format #, javascript-format
msgid "%s Not Connected" msgid "%s Not Connected"
msgstr "%s 연결되지 않음" msgstr "%s 연결되지 않음"
#: js/ui/status/network.js:1413 #: js/ui/status/network.js:1426
msgid "connecting…" msgid "connecting…"
msgstr "연결하는 중…" msgstr "연결하는 중…"
#. Translators: this is for network connections that require some kind of key or password #. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1416 #: js/ui/status/network.js:1429
msgid "authentication required" msgid "authentication required"
msgstr "인증 필요" msgstr "인증 필요"
#: js/ui/status/network.js:1418 #: js/ui/status/network.js:1431
msgid "connection failed" msgid "connection failed"
msgstr "연결 실패" msgstr "연결 실패"
#: js/ui/status/network.js:1472 #: js/ui/status/network.js:1485
msgid "VPN Settings" msgid "VPN Settings"
msgstr "가상사설망 설정" msgstr "가상사설망 설정"
#: js/ui/status/network.js:1485 #: js/ui/status/network.js:1498
msgid "VPN" msgid "VPN"
msgstr "가상사설망" msgstr "가상사설망"
#: js/ui/status/network.js:1495 #: js/ui/status/network.js:1508
msgid "VPN Off" msgid "VPN Off"
msgstr "가상사설망 꺼짐" msgstr "가상사설망 꺼짐"
#: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93 #: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings" msgid "Network Settings"
msgstr "네트워크 설정" msgstr "네트워크 설정"
#: js/ui/status/network.js:1588 #: js/ui/status/network.js:1601
#, javascript-format #, javascript-format
msgid "%s Wired Connection" msgid "%s Wired Connection"
msgid_plural "%s Wired Connections" msgid_plural "%s Wired Connections"
msgstr[0] "%s 유선 연결" msgstr[0] "%s 유선 연결"
#: js/ui/status/network.js:1592 #: js/ui/status/network.js:1605
#, javascript-format #, javascript-format
msgid "%s Wi-Fi Connection" msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections" msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s 와이파이 연결" msgstr[0] "%s 와이파이 연결"
#: js/ui/status/network.js:1596 #: js/ui/status/network.js:1609
#, javascript-format #, javascript-format
msgid "%s Modem Connection" msgid "%s Modem Connection"
msgid_plural "%s Modem Connections" msgid_plural "%s Modem Connections"
msgstr[0] "%s 모뎀 연결" msgstr[0] "%s 모뎀 연결"
#: js/ui/status/network.js:1728 #: js/ui/status/network.js:1741
msgid "Connection failed" msgid "Connection failed"
msgstr "연결이 실패했습니다" msgstr "연결이 실패했습니다"
#: js/ui/status/network.js:1729 #: js/ui/status/network.js:1742
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "네트워크 연결이 실패했습니다" msgstr "네트워크 연결이 실패했습니다"
#: js/ui/status/nightLight.js:68 #: js/ui/status/nightLight.js:68
msgid "Night Light Disabled" msgid "Night Light Disabled"
msgstr "야간 조명 사용하지 않음" msgstr "야간 모드 사용하지 않음"
#: js/ui/status/nightLight.js:69 #: js/ui/status/nightLight.js:69
msgid "Night Light On" msgid "Night Light On"
msgstr "야간 조명 켬" msgstr "야간 모드 켬"
#: js/ui/status/nightLight.js:70 #: js/ui/status/nightLight.js:70
msgid "Resume" msgid "Resume"
@@ -1887,6 +1895,14 @@ msgstr "충전까지 %d:%02d(%d %%)"
msgid "%d%%" msgid "%d%%"
msgstr "%d%%" msgstr "%d%%"
#: js/ui/status/remoteAccess.js:46
msgid "Screen is Being Shared"
msgstr "화면을 공유하는 중입니다"
#: js/ui/status/remoteAccess.js:48
msgid "Turn off"
msgstr "끄기"
#. The menu only appears when airplane mode is on, so just #. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically #. statically build it as if it was on, rather than dynamically
#. changing the menu contents. #. changing the menu contents.
@@ -1906,28 +1922,28 @@ msgstr "로그아웃"
msgid "Account Settings" msgid "Account Settings"
msgstr "계정 설정" msgstr "계정 설정"
#: js/ui/status/system.js:268 #: js/ui/status/system.js:279
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "방향 잠금" msgstr "방향 잠금"
#: js/ui/status/system.js:294 #: js/ui/status/system.js:305
msgid "Suspend" msgid "Suspend"
msgstr "절전" msgstr "절전"
#: js/ui/status/system.js:304 #: js/ui/status/system.js:315
msgid "Power Off" msgid "Power Off"
msgstr "컴퓨터 끄기" msgstr "컴퓨터 끄기"
#: js/ui/status/thunderbolt.js:272 #: js/ui/status/thunderbolt.js:298
msgid "Thunderbolt" msgid "Thunderbolt"
msgstr "썬더볼트" msgstr "썬더볼트"
#. we are done #. we are done
#: js/ui/status/thunderbolt.js:328 #: js/ui/status/thunderbolt.js:354
msgid "Unknown Thunderbolt device" msgid "Unknown Thunderbolt device"
msgstr "알 수 없는 썬더볼트 장치" msgstr "알 수 없는 썬더볼트 장치"
#: js/ui/status/thunderbolt.js:329 #: js/ui/status/thunderbolt.js:355
msgid "" msgid ""
"New device has been detected while you were away. Please disconnect and " "New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it." "reconnect the device to start using it."
@@ -1935,25 +1951,20 @@ msgstr ""
"자리에 없는 동안 새 장치를 검색했습니다. 이 장치를 사용하려면 장치 연결을 끊" "자리에 없는 동안 새 장치를 검색했습니다. 이 장치를 사용하려면 장치 연결을 끊"
"었다가 다시 연결하십시오." "었다가 다시 연결하십시오."
#: js/ui/status/thunderbolt.js:334 #: js/ui/status/thunderbolt.js:360
msgid "Thunderbolt authorization error" msgid "Thunderbolt authorization error"
msgstr "썬더볼트 권한 오류" msgstr "썬더볼트 권한 오류"
#: js/ui/status/thunderbolt.js:335 #: js/ui/status/thunderbolt.js:361
#, javascript-format #, javascript-format
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:135
msgid "Volume changed" msgid "Volume changed"
msgstr "볼륨 바꿈" msgstr "볼륨 바꿈"
# 오디오 볼륨
#: js/ui/status/volume.js:170
msgid "Volume"
msgstr "볼륨"
#. Translators: this is for display mirroring i.e. cloning. #. Translators: this is for display mirroring i.e. cloning.
#. * Try to keep it under around 15 characters. #. * Try to keep it under around 15 characters.
#. #.
@@ -2003,22 +2014,22 @@ msgstr "검색"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "“%s” 프로그램이 준비되었습니다" msgstr "“%s” 프로그램이 준비되었습니다"
#: js/ui/windowManager.js:72 #: js/ui/windowManager.js:74
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 lenght, #. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:84 #: js/ui/windowManager.js:86
msgid "Revert Settings" msgid "Revert Settings"
msgstr "설정 되돌리기" msgstr "설정 되돌리기"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:89
msgid "Keep Changes" msgid "Keep Changes"
msgstr "바뀐 사항 유지" msgstr "바뀐 사항 유지"
#: js/ui/windowManager.js:105 #: js/ui/windowManager.js:107
#, 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"
@@ -2026,7 +2037,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:660 #: js/ui/windowManager.js:689
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2079,19 +2090,19 @@ msgstr "위 작업 공간으로 옮기기"
msgid "Move to Workspace Down" msgid "Move to Workspace Down"
msgstr "아래 작업 공간으로 옮기기" msgstr "아래 작업 공간으로 옮기기"
#: js/ui/windowMenu.js:140 #: js/ui/windowMenu.js:139
msgid "Move to Monitor Up" msgid "Move to Monitor Up"
msgstr "위 모니터로 옮기기" msgstr "위 모니터로 옮기기"
#: js/ui/windowMenu.js:149 #: js/ui/windowMenu.js:148
msgid "Move to Monitor Down" msgid "Move to Monitor Down"
msgstr "아래 모니터로 옮기기" msgstr "아래 모니터로 옮기기"
#: js/ui/windowMenu.js:158 #: js/ui/windowMenu.js:157
msgid "Move to Monitor Left" msgid "Move to Monitor Left"
msgstr "왼쪽 모니터로 옮기기" msgstr "왼쪽 모니터로 옮기기"
#: js/ui/windowMenu.js:167 #: js/ui/windowMenu.js:166
msgid "Move to Monitor Right" msgid "Move to Monitor Right"
msgstr "오른쪽 모니터로 옮기기" msgstr "오른쪽 모니터로 옮기기"
@@ -2105,28 +2116,28 @@ msgid "evolution"
msgstr "evolution" msgstr "evolution"
# 커맨드라인 옵션 설명 # 커맨드라인 옵션 설명
#: src/main.c:432 #: src/main.c:410
msgid "Print version" msgid "Print version"
msgstr "버전을 표시합니다" msgstr "버전을 표시합니다"
#: src/main.c:438 #: src/main.c:416
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "GDM에서 로그인 화면에 사용할 모드" msgstr "GDM에서 로그인 화면에 사용할 모드"
#: src/main.c:444 #: src/main.c:422
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:450 #: src/main.c:428
msgid "List possible modes" msgid "List possible modes"
msgstr "가능한 모드 목록 표시" msgstr "가능한 모드 목록 표시"
#: src/shell-app.c:270 #: src/shell-app.c:272
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "알 수 없음" msgstr "알 수 없음"
#: src/shell-app.c:511 #: src/shell-app.c:523
#, c-format #, c-format
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "“%s” 실행에 실패했습니다" msgstr "“%s” 실행에 실패했습니다"
@@ -2162,45 +2173,3 @@ msgstr[0] "%u개 입력"
#: subprojects/gvc/gvc-mixer-control.c:2738 #: subprojects/gvc/gvc-mixer-control.c:2738
msgid "System Sounds" msgid "System Sounds"
msgstr "시스템 소리" msgstr "시스템 소리"
#~ msgctxt "search-result"
#~ msgid "Power off"
#~ msgstr "컴퓨터 끄기"
#~ msgctxt "search-result"
#~ msgid "Log out"
#~ msgstr "로그아웃"
#~ msgctxt "search-result"
#~ msgid "Switch user"
#~ msgstr "사용자 바꾸기"
#~ msgid "Hide tray"
#~ msgstr "트레이 숨기기"
#~ msgid "Status Icons"
#~ msgstr "상태 아이콘"
#~ msgid "GNOME Shell Extension Preferences"
#~ msgstr "그놈 셸 확장 기본 설정"
#~ msgid "Web Authentication Redirect"
#~ msgstr "웹 인증 리다이렉트"
#~ msgid "Events"
#~ msgstr "행사"
#~ msgid "Notifications"
#~ msgstr "알림"
#~ msgid "Clear section"
#~ msgstr "부분 지우기"
#~ msgid "Media"
#~ msgstr "미디어"
#~ msgid "Not In Use"
#~ msgstr "사용 중 아님"
#~ msgid "%d x %d"
#~ msgstr "%d x %d"

271
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: 2018-02-26 17:00+0000\n" "POT-Creation-Date: 2018-08-01 18:08+0000\n"
"PO-Revision-Date: 2018-02-28 23:39+0200\n" "PO-Revision-Date: 2018-08-05 23:20+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"
@@ -290,32 +290,32 @@ msgstr ""
"Jei teigiama, perjungimo lange rodomi tik langai iš dabartinės darbo " "Jei teigiama, perjungimo lange rodomi tik langai iš dabartinės darbo "
"srities. Priešingu atveju įtraukiami visi langai." "srities. Priešingu atveju įtraukiami visi langai."
#: data/org.gnome.shell.gschema.xml.in:197 #: data/org.gnome.shell.gschema.xml.in:198
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
msgstr "Prikabinti modalinį dialogą prie tėvinio lango" msgstr "Prikabinti modalinį dialogą prie tėvinio lango"
#: data/org.gnome.shell.gschema.xml.in:198 #: data/org.gnome.shell.gschema.xml.in:199
#: data/org.gnome.shell.gschema.xml.in:207 #: data/org.gnome.shell.gschema.xml.in:208
#: data/org.gnome.shell.gschema.xml.in:215 #: data/org.gnome.shell.gschema.xml.in:216
#: data/org.gnome.shell.gschema.xml.in:223 #: data/org.gnome.shell.gschema.xml.in:224
#: data/org.gnome.shell.gschema.xml.in:231 #: data/org.gnome.shell.gschema.xml.in:232
msgid "" msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell." "This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "Šis raktas perrašo org.gnome.mutter raktą, kai vykdoma GNOME Shell." msgstr "Šis raktas perrašo org.gnome.mutter raktą, kai vykdoma GNOME Shell."
#: data/org.gnome.shell.gschema.xml.in:206 #: data/org.gnome.shell.gschema.xml.in:207
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Įjungti kraštų išplėtimą, kai langai numetami ekrano kraštuose" msgstr "Įjungti kraštų išplėtimą, kai langai numetami ekrano kraštuose"
#: data/org.gnome.shell.gschema.xml.in:214 #: data/org.gnome.shell.gschema.xml.in:215
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "Darbo sritys yra tvarkomos dinamiškai" msgstr "Darbo sritys yra tvarkomos dinamiškai"
#: data/org.gnome.shell.gschema.xml.in:222 #: data/org.gnome.shell.gschema.xml.in:223
msgid "Workspaces only on primary monitor" msgid "Workspaces only on primary monitor"
msgstr "Darbo sritys tik pagrindiniame monitoriuje" msgstr "Darbo sritys tik pagrindiniame monitoriuje"
#: data/org.gnome.shell.gschema.xml.in:230 #: data/org.gnome.shell.gschema.xml.in:231
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Atidėti fokuso pakeitimus pelei iki žymiklis nustos judėti" msgstr "Atidėti fokuso pakeitimus pelei iki žymiklis nustos judėti"
@@ -334,7 +334,7 @@ msgid "There was an error loading the preferences dialog for %s:"
msgstr "Kilo klaida įkeliant %s nuostatų dialogą:" msgstr "Kilo klaida įkeliant %s nuostatų dialogą:"
#: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71 #: js/gdm/authPrompt.js:147 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148 #: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:153
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197 #: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197
#: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919 #: js/ui/shellMountOperation.js:343 js/ui/status/network.js:919
msgid "Cancel" msgid "Cancel"
@@ -354,20 +354,20 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Prisijungti" msgstr "Prisijungti"
#: js/gdm/loginDialog.js:315 #: js/gdm/loginDialog.js:319
msgid "Choose Session" msgid "Choose Session"
msgstr "Pasirinkite seansą" msgstr "Pasirinkite seansą"
#. translators: this message is shown below the user list on the #. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for #. login screen. It can be activated to reveal an entry for
#. manually entering the username. #. manually entering the username.
#: js/gdm/loginDialog.js:458 #: js/gdm/loginDialog.js:462
msgid "Not listed?" msgid "Not listed?"
msgstr "Nėra sąraše?" msgstr "Nėra sąraše?"
#. Translators: this message is shown below the username entry field #. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm #. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:887 #: js/gdm/loginDialog.js:891
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(pvz., naudotojas arba %s)" msgstr "(pvz., naudotojas arba %s)"
@@ -375,12 +375,12 @@ msgstr "(pvz., naudotojas arba %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:892 js/ui/components/networkAgent.js:243 #: js/gdm/loginDialog.js:896 js/ui/components/networkAgent.js:243
#: js/ui/components/networkAgent.js:261 #: js/ui/components/networkAgent.js:261
msgid "Username: " msgid "Username: "
msgstr "Naudotojo vardas: " msgstr "Naudotojo vardas: "
#: js/gdm/loginDialog.js:1228 #: js/gdm/loginDialog.js:1234
msgid "Login Window" msgid "Login Window"
msgstr "Prisijungimo langas" msgstr "Prisijungimo langas"
@@ -393,7 +393,7 @@ msgstr "Tapatybės patvirtinimo klaida"
#. as a cue to display our own message. #. as a cue to display our own message.
#. Translators: this message is shown below the password entry field #. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead #. to indicate the user can swipe their finger instead
#: js/gdm/util.js:482 #: js/gdm/util.js:485
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(arba perbraukite pirštu)" msgstr "(arba perbraukite pirštu)"
@@ -639,32 +639,32 @@ msgstr "Dažnai naudojamos"
msgid "All" msgid "All"
msgstr "Visos" msgstr "Visos"
#: js/ui/appDisplay.js:1886 #: js/ui/appDisplay.js:1890
msgid "New Window" msgid "New Window"
msgstr "Naujas langas" msgstr "Naujas langas"
#: js/ui/appDisplay.js:1900 #: js/ui/appDisplay.js:1904
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:1927 js/ui/dash.js:285 #: js/ui/appDisplay.js:1931 js/ui/dash.js:285
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Pašalinti iš mėgstamų" msgstr "Pašalinti iš mėgstamų"
#: js/ui/appDisplay.js:1933 #: js/ui/appDisplay.js:1937
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Pridėti prie mėgstamų" msgstr "Pridėti prie mėgstamų"
#: js/ui/appDisplay.js:1943 #: js/ui/appDisplay.js:1947
msgid "Show Details" msgid "Show Details"
msgstr "Rodyti detalią informaciją" msgstr "Rodyti detalią informaciją"
#: js/ui/appFavorites.js:138 #: js/ui/appFavorites.js:140
#, javascript-format #, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "%s pridėta prie jūsų mėgstamų." msgstr "%s pridėta prie jūsų mėgstamų."
#: js/ui/appFavorites.js:172 #: js/ui/appFavorites.js:174
#, javascript-format #, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s pašalinta iš jūsų mėgstamų." msgstr "%s pašalinta iš jūsų mėgstamų."
@@ -685,7 +685,7 @@ msgstr "Ausinės"
msgid "Headset" msgid "Headset"
msgstr "Ausinės su mikrofonu" msgstr "Ausinės su mikrofonu"
#: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:221 #: js/ui/audioDeviceSelection.js:82 js/ui/status/volume.js:255
msgid "Microphone" msgid "Microphone"
msgstr "Mikrofonas" msgstr "Mikrofonas"
@@ -697,7 +697,7 @@ msgstr "Keisti foną…"
msgid "Display Settings" msgid "Display Settings"
msgstr "Ekrano nustatymai" msgstr "Ekrano nustatymai"
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:264 #: js/ui/backgroundMenu.js:22
msgid "Settings" msgid "Settings"
msgstr "Nustatymai" msgstr "Nustatymai"
@@ -802,35 +802,35 @@ msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Visa diena" msgstr "Visa diena"
#: js/ui/calendar.js:864 #: js/ui/calendar.js:866
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %B %d d." msgstr "%A, %B %d d."
#: js/ui/calendar.js:868 #: js/ui/calendar.js:870
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %Y m. %B %d d." msgstr "%A, %Y m. %B %d d."
#: js/ui/calendar.js:1086 #: js/ui/calendar.js:1100
msgid "No Notifications" msgid "No Notifications"
msgstr "Nėra pranešimų" msgstr "Nėra pranešimų"
#: js/ui/calendar.js:1089 #: js/ui/calendar.js:1103
msgid "No Events" msgid "No Events"
msgstr "Nėra įvykių" msgstr "Nėra įvykių"
#: js/ui/calendar.js:1117 #: js/ui/calendar.js:1131
msgid "Clear All" msgid "Clear All"
msgstr "Viską išvalyti" msgstr "Viską išvalyti"
#. Translators: %s is an application name #. Translators: %s is an application name
#: js/ui/closeDialog.js:44 #: js/ui/closeDialog.js:47
#, javascript-format #, javascript-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
msgstr "„%s“ neatsiliepia." msgstr "„%s“ neatsiliepia."
#: js/ui/closeDialog.js:45 #: js/ui/closeDialog.js:48
msgid "" msgid ""
"You may choose to wait a short while for it to continue or force the " "You may choose to wait a short while for it to continue or force the "
"application to quit entirely." "application to quit entirely."
@@ -838,11 +838,11 @@ msgstr ""
"Galite dar palaukti ir duoti programai laiko arba galite priverstinai " "Galite dar palaukti ir duoti programai laiko arba galite priverstinai "
"išjungti programą." "išjungti programą."
#: js/ui/closeDialog.js:61 #: js/ui/closeDialog.js:64
msgid "Force Quit" msgid "Force Quit"
msgstr "Priverstinai išjungti" msgstr "Priverstinai išjungti"
#: js/ui/closeDialog.js:64 #: js/ui/closeDialog.js:67
msgid "Wait" msgid "Wait"
msgstr "Laukti" msgstr "Laukti"
@@ -859,7 +859,7 @@ msgstr "Atjungta išorinė laikmena"
msgid "Open with %s" msgid "Open with %s"
msgstr "Atverti su %s" msgstr "Atverti su %s"
#: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:284 #: js/ui/components/keyring.js:107 js/ui/components/polkitAgent.js:297
msgid "Password:" msgid "Password:"
msgstr "Slaptažodis:" msgstr "Slaptažodis:"
@@ -896,11 +896,11 @@ msgstr "Privataus rakto slaptažodis: "
msgid "Service: " msgid "Service: "
msgstr "Tarnyba: " msgstr "Tarnyba: "
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659 #: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:664
msgid "Authentication required by wireless network" msgid "Authentication required by wireless network"
msgstr "Belaidžiam tinklui reikia patvirtinti tapatybę" msgstr "Belaidžiam tinklui reikia patvirtinti tapatybę"
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660 #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:665
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@@ -909,7 +909,7 @@ msgstr ""
"Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio " "Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio "
"tinklo „%s“." "tinklo „%s“."
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663 #: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:668
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Laidinis 802.1X tapatybės patvirtinimas" msgstr "Laidinis 802.1X tapatybės patvirtinimas"
@@ -917,15 +917,15 @@ msgstr "Laidinis 802.1X tapatybės patvirtinimas"
msgid "Network name: " msgid "Network name: "
msgstr "Tinklo vardas: " msgstr "Tinklo vardas: "
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667 #: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:672
msgid "DSL authentication" msgid "DSL authentication"
msgstr "DSL tapatybės patvirtinimas" msgstr "DSL tapatybės patvirtinimas"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673 #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:678
msgid "PIN code required" msgid "PIN code required"
msgstr "Reikalingas PIN kodas" msgstr "Reikalingas PIN kodas"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674 #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:679
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Reikalingas PIN kodas mobiliajam plačiajuosčiam įrenginiui" msgstr "Reikalingas PIN kodas mobiliajam plačiajuosčiam įrenginiui"
@@ -933,29 +933,29 @@ msgstr "Reikalingas PIN kodas mobiliajam plačiajuosčiam įrenginiui"
msgid "PIN: " msgid "PIN: "
msgstr "PIN: " msgstr "PIN: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680 #: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:685
msgid "Mobile broadband network password" msgid "Mobile broadband network password"
msgstr "Mobiliojo plačiajuosčio tinklo slaptažodis" msgstr "Mobiliojo plačiajuosčio tinklo slaptažodis"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664 #: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:669
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681 #: js/ui/components/networkAgent.js:673 js/ui/components/networkAgent.js:686
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "Būtinas slaptažodis norint prisijungti prie „%s“." msgstr "Būtinas slaptažodis norint prisijungti prie „%s“."
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:653 js/ui/status/network.js:1704
msgid "Network Manager" msgid "Network Manager"
msgstr "Tinklo tvarkymas" msgstr "Tinklo tvarkymas"
#: js/ui/components/polkitAgent.js:43 #: js/ui/components/polkitAgent.js:48
msgid "Authentication Required" msgid "Authentication Required"
msgstr "Reikia patvirtinti tapatybę" msgstr "Reikia patvirtinti tapatybę"
#: js/ui/components/polkitAgent.js:71 #: js/ui/components/polkitAgent.js:76
msgid "Administrator" msgid "Administrator"
msgstr "Administratorius" msgstr "Administratorius"
#: js/ui/components/polkitAgent.js:151 #: js/ui/components/polkitAgent.js:156
msgid "Authenticate" msgid "Authenticate"
msgstr "Patvirtinti tapatybę" msgstr "Patvirtinti tapatybę"
@@ -963,7 +963,7 @@ msgstr "Patvirtinti tapatybę"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: js/ui/components/polkitAgent.js:270 js/ui/shellMountOperation.js:327 #: js/ui/components/polkitAgent.js:283 js/ui/shellMountOperation.js:327
msgid "Sorry, that didnt work. Please try again." msgid "Sorry, that didnt work. Please try again."
msgstr "Atsiprašome, tai nesuveikė. Bandykite dar kartą." msgstr "Atsiprašome, tai nesuveikė. Bandykite dar kartą."
@@ -1011,7 +1011,7 @@ msgstr "Pridėti pasaulio laikrodžius…"
msgid "World Clocks" msgid "World Clocks"
msgstr "Pasaulio laikrodžiai" msgstr "Pasaulio laikrodžiai"
#: js/ui/dateMenu.js:225 #: js/ui/dateMenu.js:227
msgid "Weather" msgid "Weather"
msgstr "Orai" msgstr "Orai"
@@ -1019,7 +1019,7 @@ msgstr "Orai"
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:289 #: js/ui/dateMenu.js:291
#, javascript-format #, javascript-format
msgid "%s all day." msgid "%s all day."
msgstr "%s visą dieną." msgstr "%s visą dieną."
@@ -1028,7 +1028,7 @@ msgstr "%s visą dieną."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:295 #: js/ui/dateMenu.js:297
#, javascript-format #, javascript-format
msgid "%s, then %s later." msgid "%s, then %s later."
msgstr "%s, o vėliau %s." msgstr "%s, o vėliau %s."
@@ -1037,30 +1037,30 @@ msgstr "%s, o vėliau %s."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:301 #: js/ui/dateMenu.js:303
#, javascript-format #, javascript-format
msgid "%s, then %s, followed by %s later." msgid "%s, then %s, followed by %s later."
msgstr "%s, tuomet %s, o po to vėliau %s." msgstr "%s, tuomet %s, o po to vėliau %s."
#: js/ui/dateMenu.js:312 #: js/ui/dateMenu.js:314
msgid "Select a location…" msgid "Select a location…"
msgstr "Pasirinkite vietą…" msgstr "Pasirinkite vietą…"
#: js/ui/dateMenu.js:315 #: js/ui/dateMenu.js:317
msgid "Loading…" msgid "Loading…"
msgstr "Įkeliama…" msgstr "Įkeliama…"
#. Translators: %s is a temperature with unit, e.g. "23℃" #. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:321 #: js/ui/dateMenu.js:323
#, javascript-format #, javascript-format
msgid "Feels like %s." msgid "Feels like %s."
msgstr "Jaučiama kaip %s." msgstr "Jaučiama kaip %s."
#: js/ui/dateMenu.js:324 #: js/ui/dateMenu.js:326
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Prisijunkite prie tinklo orų informacijai gauti" msgstr "Prisijunkite prie tinklo orų informacijai gauti"
#: js/ui/dateMenu.js:326 #: js/ui/dateMenu.js:328
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Orų informacija šiuo metu yra neprieinama" msgstr "Orų informacija šiuo metu yra neprieinama"
@@ -1252,12 +1252,10 @@ msgid "Allow"
msgstr "Leisti" msgstr "Leisti"
#: js/ui/kbdA11yDialog.js:33 #: js/ui/kbdA11yDialog.js:33
#| msgid "Slow Keys"
msgid "Slow Keys Turned On" msgid "Slow Keys Turned On"
msgstr "Lėtieji klavišai įjungti" msgstr "Lėtieji klavišai įjungti"
#: js/ui/kbdA11yDialog.js:34 #: js/ui/kbdA11yDialog.js:34
#| msgid "Slow Keys"
msgid "Slow Keys Turned Off" msgid "Slow Keys Turned Off"
msgstr "Lėtieji klavišai išjungti" msgstr "Lėtieji klavišai išjungti"
@@ -1270,12 +1268,10 @@ msgstr ""
"trumpinus, kuris keičia klaviatūros veikseną." "trumpinus, kuris keičia klaviatūros veikseną."
#: js/ui/kbdA11yDialog.js:42 #: js/ui/kbdA11yDialog.js:42
#| msgid "Sticky Keys"
msgid "Sticky Keys Turned On" msgid "Sticky Keys Turned On"
msgstr "Kibieji klavišai įjungti" msgstr "Kibieji klavišai įjungti"
#: js/ui/kbdA11yDialog.js:43 #: js/ui/kbdA11yDialog.js:43
#| msgid "Sticky Keys"
msgid "Sticky Keys Turned Off" msgid "Sticky Keys Turned Off"
msgstr "Kibieji klavišai išjungti" msgstr "Kibieji klavišai išjungti"
@@ -1302,13 +1298,13 @@ msgid "Leave On"
msgstr "Palikti įjungtą" msgstr "Palikti įjungtą"
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143 #: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:1281 #: js/ui/status/network.js:1294
msgid "Turn On" msgid "Turn On"
msgstr "Įjungti" msgstr "Įjungti"
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143 #: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:154 js/ui/status/network.js:337 #: js/ui/status/network.js:154 js/ui/status/network.js:337
#: js/ui/status/network.js:1281 js/ui/status/network.js:1396 #: js/ui/status/network.js:1294 js/ui/status/network.js:1409
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90 #: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117 #: js/ui/status/rfkill.js:117
msgid "Turn Off" msgid "Turn Off"
@@ -1319,7 +1315,6 @@ msgid "Leave Off"
msgstr "Palikti išjungtą" msgstr "Palikti išjungtą"
#: js/ui/keyboard.js:198 #: js/ui/keyboard.js:198
#| msgid "Date & Time Settings"
msgid "Region & Language Settings" msgid "Region & Language Settings"
msgstr "Regiono ir kalbos nustatymai" msgstr "Regiono ir kalbos nustatymai"
@@ -1371,7 +1366,7 @@ msgstr "Žiūrėti šaltinį"
msgid "Web Page" msgid "Web Page"
msgstr "Tinklalapis" msgstr "Tinklalapis"
#: js/ui/messageTray.js:1493 #: js/ui/messageTray.js:1495
msgid "System Information" msgid "System Information"
msgstr "Sistemos informacija" msgstr "Sistemos informacija"
@@ -1383,6 +1378,10 @@ msgstr "Nežinomas atlikėjas"
msgid "Unknown title" msgid "Unknown title"
msgstr "Nežinomas pavadinimas" msgstr "Nežinomas pavadinimas"
#: js/ui/osdWindow.js:32 js/ui/status/volume.js:204
msgid "Volume"
msgstr "Garsumas"
#: js/ui/overview.js:83 #: js/ui/overview.js:83
msgid "Undo" msgid "Undo"
msgstr "Atšaukti" msgstr "Atšaukti"
@@ -1425,42 +1424,42 @@ msgstr "Priskirti klavišų kombinaciją"
msgid "Done" msgid "Done"
msgstr "Atlikta" msgstr "Atlikta"
#: js/ui/padOsd.js:740 #: js/ui/padOsd.js:742
msgid "Edit…" msgid "Edit…"
msgstr "Keisti…" msgstr "Keisti…"
#: js/ui/padOsd.js:782 js/ui/padOsd.js:887 #: js/ui/padOsd.js:784 js/ui/padOsd.js:889
msgid "None" msgid "None"
msgstr "Nėra" msgstr "Nėra"
#: js/ui/padOsd.js:841 #: js/ui/padOsd.js:843
msgid "Press a button to configure" msgid "Press a button to configure"
msgstr "Spauskite mygtuką konfigūravimui" msgstr "Spauskite mygtuką konfigūravimui"
#: js/ui/padOsd.js:842 #: js/ui/padOsd.js:844
msgid "Press Esc to exit" msgid "Press Esc to exit"
msgstr "Spauskit Esc išėjimui" msgstr "Spauskit Esc išėjimui"
#: js/ui/padOsd.js:845 #: js/ui/padOsd.js:847
msgid "Press any key to exit" msgid "Press any key to exit"
msgstr "Išėjimui spauskite bet kurį klavišą" msgstr "Išėjimui spauskite bet kurį klavišą"
#: js/ui/panel.js:355 #: js/ui/panel.js:356
msgid "Quit" msgid "Quit"
msgstr "Užverti" msgstr "Užverti"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: js/ui/panel.js:411 #: js/ui/panel.js:412
msgid "Activities" msgid "Activities"
msgstr "Apžvalga" msgstr "Apžvalga"
#: js/ui/panel.js:692 #: js/ui/panel.js:693
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Sistema" msgstr "Sistema"
#: js/ui/panel.js:811 #: js/ui/panel.js:816
msgid "Top Bar" msgid "Top Bar"
msgstr "Viršutinė juosta" msgstr "Viršutinė juosta"
@@ -1469,23 +1468,23 @@ msgstr "Viršutinė juosta"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: js/ui/popupMenu.js:291 #: js/ui/popupMenu.js:300
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
#: js/ui/runDialog.js:70 #: js/ui/runDialog.js:74
msgid "Enter a Command" msgid "Enter a Command"
msgstr "Įveskite komandą" msgstr "Įveskite komandą"
#: js/ui/runDialog.js:110 js/ui/windowMenu.js:175 #: js/ui/runDialog.js:114 js/ui/windowMenu.js:174
msgid "Close" msgid "Close"
msgstr "Užverti" msgstr "Užverti"
#: js/ui/runDialog.js:273 #: js/ui/runDialog.js:278
msgid "Restart is not available on Wayland" msgid "Restart is not available on Wayland"
msgstr "Perleisti Wayland aplinkoje negalima" msgstr "Perleisti Wayland aplinkoje negalima"
#: js/ui/runDialog.js:278 #: js/ui/runDialog.js:283
msgid "Restarting…" msgid "Restarting…"
msgstr "Perleidžiama…" msgstr "Perleidžiama…"
@@ -1511,7 +1510,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:451 js/ui/status/system.js:283 #: js/ui/screenShield.js:451 js/ui/status/system.js:294
msgid "Lock" msgid "Lock"
msgstr "Užrakinti" msgstr "Užrakinti"
@@ -1694,7 +1693,7 @@ msgid "<unknown>"
msgstr "<nežinoma>" msgstr "<nežinoma>"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:441 js/ui/status/network.js:1310 #: js/ui/status/network.js:441 js/ui/status/network.js:1323
#, javascript-format #, javascript-format
msgid "%s Off" msgid "%s Off"
msgstr "%s išjungtas" msgstr "%s išjungtas"
@@ -1720,7 +1719,7 @@ msgid "%s Disconnecting"
msgstr "Atsijungiama nuo %s" msgstr "Atsijungiama nuo %s"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:459 js/ui/status/network.js:1302 #: js/ui/status/network.js:459 js/ui/status/network.js:1315
#, javascript-format #, javascript-format
msgid "%s Connecting" msgid "%s Connecting"
msgstr "Jungiamasi prie %s" msgstr "Jungiamasi prie %s"
@@ -1760,7 +1759,7 @@ msgid "Mobile Broadband Settings"
msgstr "Mobiliojo plačiajuosčio tinklo nustatymai" msgstr "Mobiliojo plačiajuosčio tinklo nustatymai"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:578 js/ui/status/network.js:1307 #: js/ui/status/network.js:578 js/ui/status/network.js:1320
#, javascript-format #, javascript-format
msgid "%s Hardware Disabled" msgid "%s Hardware Disabled"
msgstr "%s aparatinė įranga išjungta" msgstr "%s aparatinė įranga išjungta"
@@ -1816,56 +1815,56 @@ msgstr "Nėra tinklų"
msgid "Use hardware switch to turn off" msgid "Use hardware switch to turn off"
msgstr "Išjungimui naudoti aparatinį jungiklį" msgstr "Išjungimui naudoti aparatinį jungiklį"
#: js/ui/status/network.js:1173 #: js/ui/status/network.js:1186
msgid "Select Network" msgid "Select Network"
msgstr "Pasirinkite tinklą" msgstr "Pasirinkite tinklą"
#: js/ui/status/network.js:1179 #: js/ui/status/network.js:1192
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Belaidžio ryšio nustatymai" msgstr "Belaidžio ryšio nustatymai"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:1298 #: js/ui/status/network.js:1311
#, javascript-format #, javascript-format
msgid "%s Hotspot Active" msgid "%s Hotspot Active"
msgstr "Prieigos taškas %s aktyvus" msgstr "Prieigos taškas %s aktyvus"
#. Translators: %s is a network identifier #. Translators: %s is a network identifier
#: js/ui/status/network.js:1313 #: js/ui/status/network.js:1326
#, javascript-format #, javascript-format
msgid "%s Not Connected" msgid "%s Not Connected"
msgstr "Neprisijungta prie %s" msgstr "Neprisijungta prie %s"
#: js/ui/status/network.js:1413 #: js/ui/status/network.js:1426
msgid "connecting…" msgid "connecting…"
msgstr "jungiamasi…" msgstr "jungiamasi…"
#. Translators: this is for network connections that require some kind of key or password #. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1416 #: js/ui/status/network.js:1429
msgid "authentication required" msgid "authentication required"
msgstr "reikia patvirtinti tapatybę" msgstr "reikia patvirtinti tapatybę"
#: js/ui/status/network.js:1418 #: js/ui/status/network.js:1431
msgid "connection failed" msgid "connection failed"
msgstr "nepavyko prisijungti" msgstr "nepavyko prisijungti"
#: js/ui/status/network.js:1472 #: js/ui/status/network.js:1485
msgid "VPN Settings" msgid "VPN Settings"
msgstr "VPN nustatymai" msgstr "VPN nustatymai"
#: js/ui/status/network.js:1485 #: js/ui/status/network.js:1498
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: js/ui/status/network.js:1495 #: js/ui/status/network.js:1508
msgid "VPN Off" msgid "VPN Off"
msgstr "VPN išjungtas" msgstr "VPN išjungtas"
#: js/ui/status/network.js:1559 js/ui/status/rfkill.js:93 #: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings" msgid "Network Settings"
msgstr "Tinklo nustatymai" msgstr "Tinklo nustatymai"
#: js/ui/status/network.js:1588 #: js/ui/status/network.js:1601
#, javascript-format #, javascript-format
msgid "%s Wired Connection" msgid "%s Wired Connection"
msgid_plural "%s Wired Connections" msgid_plural "%s Wired Connections"
@@ -1873,7 +1872,7 @@ msgstr[0] "%s laidinis ryšys"
msgstr[1] "%s laidiniai ryšiai" msgstr[1] "%s laidiniai ryšiai"
msgstr[2] "%s laidinių ryšių" msgstr[2] "%s laidinių ryšių"
#: js/ui/status/network.js:1592 #: js/ui/status/network.js:1605
#, javascript-format #, javascript-format
msgid "%s Wi-Fi Connection" msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections" msgid_plural "%s Wi-Fi Connections"
@@ -1881,7 +1880,7 @@ msgstr[0] "%s belaidis ryšys"
msgstr[1] "%s belaidžiai ryšiai" msgstr[1] "%s belaidžiai ryšiai"
msgstr[2] "%s belaidžių ryšių" msgstr[2] "%s belaidžių ryšių"
#: js/ui/status/network.js:1596 #: js/ui/status/network.js:1609
#, javascript-format #, javascript-format
msgid "%s Modem Connection" msgid "%s Modem Connection"
msgid_plural "%s Modem Connections" msgid_plural "%s Modem Connections"
@@ -1889,11 +1888,11 @@ msgstr[0] "%s modemo ryšys"
msgstr[1] "%s modemo ryšiai" msgstr[1] "%s modemo ryšiai"
msgstr[2] "%s modemo ryšių" msgstr[2] "%s modemo ryšių"
#: js/ui/status/network.js:1728 #: js/ui/status/network.js:1741
msgid "Connection failed" msgid "Connection failed"
msgstr "Nepavyko prisijungti" msgstr "Nepavyko prisijungti"
#: js/ui/status/network.js:1729 #: js/ui/status/network.js:1742
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Tinklo ryšio nepavyko aktyvuoti" msgstr "Tinklo ryšio nepavyko aktyvuoti"
@@ -1944,6 +1943,15 @@ msgstr "%d%02d iki pilno (%d%%)"
msgid "%d%%" msgid "%d%%"
msgstr "%d%%" msgstr "%d%%"
#: js/ui/status/remoteAccess.js:46
msgid "Screen is Being Shared"
msgstr "Ekranas yra bendrinamas"
#: js/ui/status/remoteAccess.js:48
#| msgid "Turn Off"
msgid "Turn off"
msgstr "Išjungti"
#. The menu only appears when airplane mode is on, so just #. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically #. statically build it as if it was on, rather than dynamically
#. changing the menu contents. #. changing the menu contents.
@@ -1963,28 +1971,28 @@ msgstr "Atsijungti"
msgid "Account Settings" msgid "Account Settings"
msgstr "Paskyros nustatymai" msgstr "Paskyros nustatymai"
#: js/ui/status/system.js:268 #: js/ui/status/system.js:279
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Padėties užrakinimas" msgstr "Padėties užrakinimas"
#: js/ui/status/system.js:294 #: js/ui/status/system.js:305
msgid "Suspend" msgid "Suspend"
msgstr "Pristabdyti" msgstr "Pristabdyti"
#: js/ui/status/system.js:304 #: js/ui/status/system.js:315
msgid "Power Off" msgid "Power Off"
msgstr "Išjungti" msgstr "Išjungti"
#: js/ui/status/thunderbolt.js:272 #: js/ui/status/thunderbolt.js:298
msgid "Thunderbolt" msgid "Thunderbolt"
msgstr "Thunderbolt" msgstr "Thunderbolt"
#. we are done #. we are done
#: js/ui/status/thunderbolt.js:328 #: js/ui/status/thunderbolt.js:354
msgid "Unknown Thunderbolt device" msgid "Unknown Thunderbolt device"
msgstr "Nežinoma Thunderbolt įrenginys" msgstr "Nežinoma Thunderbolt įrenginys"
#: js/ui/status/thunderbolt.js:329 #: js/ui/status/thunderbolt.js:355
msgid "" msgid ""
"New device has been detected while you were away. Please disconnect and " "New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it." "reconnect the device to start using it."
@@ -1992,23 +2000,20 @@ msgstr ""
"Jums nesant aptiktas naujas įrenginys. Atjunkite ir vėl prijunkite įrenginį, " "Jums nesant aptiktas naujas įrenginys. Atjunkite ir vėl prijunkite įrenginį, "
"jei norite jį naudoti." "jei norite jį naudoti."
#: js/ui/status/thunderbolt.js:334 #: js/ui/status/thunderbolt.js:360
msgid "Thunderbolt authorization error" msgid "Thunderbolt authorization error"
msgstr "Thunderbolt autorizacijos klaida" msgstr "Thunderbolt autorizacijos klaida"
#: js/ui/status/thunderbolt.js:335 #: js/ui/status/thunderbolt.js:361
#, javascript-format #, javascript-format
msgid "Could not authorize the thunderbolt device: %s" #| msgid "Could not authorize the thunderbolt device: %s"
msgstr "Nepavyko autorizuoti thunderbolt įrenginio: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Nepavyko autorizuoti Thunderbolt įrenginio: %s"
#: js/ui/status/volume.js:128 #: js/ui/status/volume.js:135
msgid "Volume changed" msgid "Volume changed"
msgstr "Garsumas pakeistas" msgstr "Garsumas pakeistas"
#: js/ui/status/volume.js:170
msgid "Volume"
msgstr "Garsumas"
#. Translators: this is for display mirroring i.e. cloning. #. Translators: this is for display mirroring i.e. cloning.
#. * Try to keep it under around 15 characters. #. * Try to keep it under around 15 characters.
#. #.
@@ -2058,22 +2063,22 @@ msgstr "Ieškoti"
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "„%s“ yra pasirengusi" msgstr "„%s“ yra pasirengusi"
#: js/ui/windowManager.js:72 #: js/ui/windowManager.js:74
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 lenght, #. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. #.
#: js/ui/windowManager.js:84 #: js/ui/windowManager.js:86
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Grąžinti nustatymus" msgstr "Grąžinti nustatymus"
#: js/ui/windowManager.js:87 #: js/ui/windowManager.js:89
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Įrašyti pakeitimus" msgstr "Įrašyti pakeitimus"
#: js/ui/windowManager.js:105 #: js/ui/windowManager.js:107
#, 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"
@@ -2083,7 +2088,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:660 #: js/ui/windowManager.js:689
#, javascript-format #, javascript-format
msgid "%d × %d" msgid "%d × %d"
msgstr "%d × %d" msgstr "%d × %d"
@@ -2136,19 +2141,19 @@ msgstr "Perkelti į aukščiau esančią darbo sritį"
msgid "Move to Workspace Down" msgid "Move to Workspace Down"
msgstr "Perkelti į žemiau esančią darbo sritį" msgstr "Perkelti į žemiau esančią darbo sritį"
#: js/ui/windowMenu.js:140 #: js/ui/windowMenu.js:139
msgid "Move to Monitor Up" msgid "Move to Monitor Up"
msgstr "Perkelti į aukščiau esantį monitorių" msgstr "Perkelti į aukščiau esantį monitorių"
#: js/ui/windowMenu.js:149 #: js/ui/windowMenu.js:148
msgid "Move to Monitor Down" msgid "Move to Monitor Down"
msgstr "Perkelti į žemiau esantį monitorių" msgstr "Perkelti į žemiau esantį monitorių"
#: js/ui/windowMenu.js:158 #: js/ui/windowMenu.js:157
msgid "Move to Monitor Left" msgid "Move to Monitor Left"
msgstr "Perkelti į kairiau esantį monitorių" msgstr "Perkelti į kairiau esantį monitorių"
#: js/ui/windowMenu.js:167 #: js/ui/windowMenu.js:166
msgid "Move to Monitor Right" msgid "Move to Monitor Right"
msgstr "Perkelti į dešiniau esantį monitorių" msgstr "Perkelti į dešiniau esantį monitorių"
@@ -2161,28 +2166,28 @@ msgstr "Evolution kalendorius"
msgid "evolution" msgid "evolution"
msgstr "evolution" msgstr "evolution"
#: src/main.c:432 #: src/main.c:410
msgid "Print version" msgid "Print version"
msgstr "Išvesti versijos numerį" msgstr "Išvesti versijos numerį"
#: src/main.c:438 #: src/main.c:416
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:444 #: src/main.c:422
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:450 #: src/main.c:428
msgid "List possible modes" msgid "List possible modes"
msgstr "Išvardinti galimas veiksenas" msgstr "Išvardinti galimas veiksenas"
#: src/shell-app.c:270 #: src/shell-app.c:272
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Nežinoma" msgstr "Nežinoma"
#: src/shell-app.c:511 #: src/shell-app.c:523
#, c-format #, c-format
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "Nepavyko paleisti „%s“" msgstr "Nepavyko paleisti „%s“"

1043
po/lv.po

File diff suppressed because it is too large Load Diff

456
po/pl.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