Compare commits

...

185 Commits

Author SHA1 Message Date
6dd973be12 Bump version to 3.26.2
Update NEWS.
2017-11-02 17:01:38 +01:00
98be314e64 style: Fix left tile preview
Windows that are tiled to the left/right only use rounded corners
where they are attached to the edge, the preview should follow that.
2017-11-02 16:56:31 +01:00
c0ef30d416 theme: Restore drag effect between workspaces
When dragging a window between two workspaces a light effect used
to be present. The effect was lost probably during the theme revamp
in version 3.16.

https://bugzilla.gnome.org/show_bug.cgi?id=789103
2017-11-02 16:56:19 +01:00
fd103ff703 dialog: Reset initial focus on destroy
Since 0b02f757f8 we track the button that should have key focus
when the dialog is opened. However when the dialog is reused, the
button may get destroyed - clear the initial focus in that case to
allow setButton() to set a new one.

https://bugzilla.gnome.org/show_bug.cgi?id=788542
2017-10-27 14:46:30 +02:00
49c144a64c Update Dutch translation 2017-10-25 09:03:41 +00:00
2c2479581a main: use SA_NODEFER to track signals to being able to raise from alarm
After we receive one of the tracked signals, in case we get stuck inside
the gjs_dumpstack () call, we use an alarm to raise the previously emitted
signal, however without using SA_NODEFER, the raise inside the alarm handler
will be ignored.

To avoid to handle new signals caused by the handler calls, once we get the
first signal, we just ignore them all as they could only lead to dirty traces.

Also, cleaning up a bit the code, and disabling the shell log handler
in dump_gjs_stack_alarm_sigaction since this might lead to a new
gjs_dumpstack () request.

https://bugzilla.gnome.org/show_bug.cgi?id=789237
2017-10-24 01:22:16 -05:00
f15650e060 main: call gjs_dumpstack on aborts and traps and optionally on segfaults
In order to debug issues triggered by JS code we might need to
see the stack of it, this is not normally visible in static stack traces,
thus we need to call gjs_dumpstack () before dying the process.

Intercepting signals SIGABRT, SIGTRAP (needed for catching fatal glib
errors) SIGFPE and SIGIOT by default, while introducing a new
'backtrace-segfaults' flag for the SHELL_DEBUG environment variable to
do the same on SIGSEGV and SIGBUS (this is a precaution to avoid that we
corrupt the stack for automatic errors trackers).

In any case after dumping the stack we raise the signal again, in order
to make the system aware of it.

https://bugzilla.gnome.org/show_bug.cgi?id=789237
2017-10-23 05:12:28 -05:00
78d58deb5a network: Spawn wifi panel for further WPA enterprise configuration
Settings recently split Wi-Fi configuration from the Network panel,
so launch that instead.

https://bugzilla.gnome.org/show_bug.cgi?id=789231
2017-10-20 18:05:10 +02:00
f4237a4ae7 popupMenu: Fix setting ImageMenuItem's icons via strings
Commit 28ca96064b added support for setting PopupImageMenuItem's icons
via GIcons as well as via strings. However as the check whether an object
implements the GIcon interface only works on GObjects, specifying an icon
name was broken. Fix that to actually allow both strings and GIcons.

https://bugzilla.gnome.org/show_bug.cgi?id=789018
2017-10-16 20:54:57 +02:00
40616015e5 Updated Slovenian translation 2017-10-15 09:51:49 +02:00
43ec5280b4 Update Friulian translation 2017-10-11 06:35:27 +00:00
5f8a511483 layout: Unset primary and bottom monitor when headless
We were handling being initially headless by only setting the primary
and bottom monitor if there was any primary monitor, then checking the
primary monitor reference before making calls assuming there was any
monitors.

What we didn't do was unset the primary and bottom monitor when going
headless, meaning that temporarly disconnecting a monitor while having
windows open caused an assert to be triggered due to various code paths
taking the path assuming there are valid monitors.

Unsetting both the primary and bottom monitor when going headless avoids
the code paths in the same way as they were avoided when starting
headless.

https://bugzilla.gnome.org/show_bug.cgi?id=788607
2017-10-07 00:38:16 -04:00
f036786d4a [l10n] Updated Catalan (Valencian) translation 2017-10-05 13:59:55 +02:00
bf2a824fd1 Bump version to 3.26.1
Update NEWS.
2017-10-04 18:12:27 +02:00
d439456048 tests: Fix JS warning 2017-10-04 18:12:27 +02:00
4543ca1620 build: Run unit tests on meson test
Meson makes it easy to define unit tests, so hook up the existing
ones.

https://bugzilla.gnome.org/show_bug.cgi?id=786497
2017-10-04 18:12:27 +02:00
7da5a76aaa popupMenu: Close menus on session mode changes
We are already closing top bar menus on session mode changes, but
as this behavior makes sense for any other menus as well - dash
context menus or the background menu for instance - just generalize
the behavior.

https://bugzilla.gnome.org/show_bug.cgi?id=787676
2017-10-04 18:12:27 +02:00
0b02f757f8 dialog: Fix setting buttons as initial key focus
Commit 1c7a3ee61b broke setting the initial key focus for default
buttons added via addButton(). Fix this by allowing the dialog class
to provide a different default widget to ModalDialog than the entire
dialog itself.

https://bugzilla.gnome.org/show_bug.cgi?id=788282
2017-10-04 18:12:27 +02:00
1939e22c22 workspace: Focus clone when highlighting
We don't use different hover- and focus indications for window previews,
so using keyboard navigation after hovering a clone often has surprising
results when the previous focus window wasn't the selected one. Address
this by simply moving the keyboard focus with the highlight.

https://bugzilla.gnome.org/show_bug.cgi?id=786546
2017-10-04 18:12:27 +02:00
8143f734f8 workspace: Fix tab navigation order
By default the focus chain uses the same order as the list returned
by clutter_actor_get_children(), which corresponds to the z-order.
This doesn't work well in the window picker, where clones follow
the stacking of windows to ensure a correct overview transition,
but previews are laid out purely based on space efficiency. As
a result, the order in which window previews are navigated when
tabbing around is essentially random. Fix this by providing a
focus chain implementation that is based on the visual layout
of the previews rather than the stacking.

https://bugzilla.gnome.org/show_bug.cgi?id=786546
2017-10-04 18:12:26 +02:00
156032a7ec weather: Mark conditions as significant
Otherwise the passed phenomenon/qualifier are ignored and a fallback
string is used.
2017-10-04 18:12:26 +02:00
5c37facc08 ui: Improve handling being headless
Don't assume there will always be a primary (logical) monitor, or any
(logical) monitor at all. This includes not allocating / layouting /
styling correctly when being headless.

The initial background loading will also be delayed until there are any
(logical) monitors connected.

https://bugzilla.gnome.org/show_bug.cgi?id=730551
2017-10-04 11:50:21 -04:00
59fc26f821 calendar: Rebuild the calendar when the time zone changes
A time zone change can cause the date to change so we need to clear
SpiderMonkey's time zone cache and rebuild the calendar.

https://bugzilla.gnome.org/show_bug.cgi?id=678507
2017-10-04 16:44:07 +02:00
9822c4c1d6 Update Swedish translation 2017-10-02 18:49:00 +00:00
1510640067 Update Chinese (Taiwan) translation 2017-10-01 14:27:01 +00:00
15f0e05db4 [L10N] Update Persian translation 2017-10-01 17:05:05 +03:30
e2ecae466b Update Malayalam translation 2017-09-30 11:42:58 +00:00
f453b3780f tools: Remove obsolete check-for-missing script
The script was used by a distcheck hook to check for files that are
in git, but not the distributed tarball. We dropped autotools support,
so the script is no longer used - in fact, it isn't useful anymore,
as `ninja dist` generates tarballs from git itself rather than from
a separately maintained list of files ...
2017-09-30 03:18:55 +02:00
b5f5a594ba shell-app: Don't transition to STOPPED while still in the STARTING state
Similar to what it's done in _shell_app_add_window(), rely on calling
shell_app_sync_running_state() when removing windows too, to avoid
transitioning to STOPPED while it's still in the STARTING state.

This makes the logic compliant with the startup notification spec and
prevents stopping an application too early if it has a splash screen
that has been closed before the application's main window is shown.

https://bugzilla.gnome.org/show_bug.cgi?id=787905
2017-09-29 18:10:23 +01:00
6321bbb773 windowManager: Disable OSK gesture on lock screen
On the screen shield, the only possible interaction is lifting the
shield. The on-screen-keyboard is not useful for that, and the drag
gesture from the bottom may in fact conflict with dragging up the
shield, so disable it.

https://bugzilla.gnome.org/show_bug.cgi?id=788339
2017-09-29 15:59:10 +02:00
3eb80dc6c0 calendar: Make notification icons font-relative
As notification icons now align with the title, it makes sense for
them to follow the text size in case a text-scaling-factor other
than 1 is applied.

https://bugzilla.gnome.org/show_bug.cgi?id=788265
2017-09-29 15:59:10 +02:00
023b50e7a7 messageTray: Check monitor's existence before trying to update the state
Not doing this will throw a backtrace when running on headless mode and
trying to show a notification, due to Main.layoutManager.primaryMonitor
being undefined, so it's better to return early.

https://bugzilla.gnome.org/show_bug.cgi?id=730551
2017-09-28 16:32:00 +01:00
9a7dbfba99 Update Icelandic translation 2017-09-26 18:10:03 +00:00
a7021f993d Update Icelandic translation 2017-09-25 17:02:52 +00:00
1ef8722c52 notificationDaemon: Guard against invalid D-Bus object paths
When making any D-Bus call through the GDBus' proxy wrapper with an
invalid D-Bus object path, gnome-shell hangs.

Supposedly FdoApplicationProxy constructor should validate the passed
D-Bus object path and throw an error if the path is invalid. Since it
does not do that, we work it around by making sure that the deduced
D-Bus object path is valid or throw an exception if the path is not.

https://bugzilla.gnome.org/show_bug.cgi?id=787902
2017-09-25 15:57:20 +01:00
ce7ff27c0c notificationDaemon: Consider hyphens for app ID to object path translations
Some application IDs contain hyphens, which are not allowed in D-Bus object
paths, so we need to update the translation by converting them to something
that's a valid object path. This is consistent with what GApplication does.

https://bugzilla.gnome.org/show_bug.cgi?id=787902
2017-09-25 15:57:07 +01:00
de4c0bdca6 loginManager: Handle unset XDG_SESSION_ID more gracefully
While certain functionality won't be available when running outside a
(logind) user session, that's still better than crashing ...

https://bugzilla.gnome.org/show_bug.cgi?id=788046
2017-09-22 18:46:01 +02:00
ab0e98dfdd build: Use new mkenums_simple() function
As most libraries use the same mkenums templates, meson now added a
mkenums_simple() variant that works without providing the template.

https://bugzilla.gnome.org/show_bug.cgi?id=786343
2017-09-22 17:43:54 +02:00
2ae63691e9 meson: Use build_rpath instead of custom linker args
Meson now warns when specifying the rpath in linker flags instead
of using the newly added build_rpath option - now that we already
depend on the latest release, there's no reason anyway to not use
the nicer syntax.

https://bugzilla.gnome.org/show_bug.cgi?id=786343
2017-09-22 17:43:54 +02:00
9ecacdbded build: Update autotools-compat wrapper
mesontest is now deprecated in favor of the 'test' subcommand of the
main meson executable, so use that instead to wrap 'make check'.

https://bugzilla.gnome.org/show_bug.cgi?id=786343
2017-09-22 17:43:54 +02:00
9d01828b5b build: Require latest meson
Meson 0.42.0 fixes a build issue on systems that use Debian-style
multiarch, so require that.

https://bugzilla.gnome.org/show_bug.cgi?id=786343
2017-09-22 17:43:54 +02:00
7f381dd2fe st-icon: Remove some dead code 2017-09-22 17:43:54 +02:00
fcdb73752e theme: re-render with sassc
pardon, pardon!
2017-09-22 17:41:18 +02:00
ec9b2cef7d theme: panel corner opacity
- forgot to sync the corners

https://bugzilla.gnome.org/show_bug.cgi?id=787940
2017-09-22 17:36:07 +02:00
18f36b68ee Update sass submodule to the right commit 2017-09-22 17:31:22 +02:00
f88e963edf add missing close button states
https://bugzilla.gnome.org/show_bug.cgi?id=788003
2017-09-22 17:13:07 +02:00
6ecbaac0a8 theme: make top bar more legible
https://bugzilla.gnome.org/show_bug.cgi?id=787940
2017-09-22 17:13:07 +02:00
7015bb2ca9 shadow: Only use correctly sized textures for shortcut
When creating a shadow for a ClutterTexture, we currently use the
underlying CoglTexture directly instead of rendering the actor to
an offscreen buffer. This assumes that the CoglTexture is directly
suitable as shadow source, which isn't necessarily the case - it
may have a very different size than what is shown and scaled up or
down by the hardware. In that case we end up with a scaled shadow
texture as well, which messes up the desired blur effect - the
result will be too light when scaling up, or too sharp when scaling
down. To fix this, only take the shortcut when a ClutterTexture's
underlying texture has the correct size and fall back to offscreen
rendering otherwise.

https://bugzilla.gnome.org/show_bug.cgi?id=788039
2017-09-22 17:11:28 +02:00
703187e996 dnd: Prevent dividing by zero when calculating the scale factor
This ensures that we snap back to the correct size when the
source actor has been scaled to 0.

https://bugzilla.gnome.org/show_bug.cgi?id=787901
2017-09-22 15:50:07 +01:00
d86a4dc43b Update Persian translation 2017-09-22 13:50:33 +00:00
f5a28c2f24 remoteSearch: Fix remote search providers
Commit 289f982949 broke all remote providers when adding support for
non-auto-started search providers: Whether the provider should be
auto-started needs to be known in the constructor, so setting the
property on the constructed object doesn't work.

https://bugzilla.gnome.org/show_bug.cgi?id=787986
2017-09-21 16:53:32 +02:00
9f0bb526f7 Make key-above-tab in switcher more consistent
Ensure that key-above-tab for selecting window application is consistent
with the down key.
After focus an application in the switcher:
- if you press down, the window thumbnails are previewed, and first element
  is selected
- if you press key-above-tab, the window thumbnails are previewed, however
  the second element is directly selected.
Make both interactions always select the first element.

https://bugzilla.gnome.org/show_bug.cgi?id=786009
2017-09-19 20:09:20 +02:00
80151a7d64 dnd: Declare dragMonitors with var
It is used outside the DND module itself.

https://bugzilla.gnome.org/show_bug.cgi?id=787907
2017-09-19 20:07:21 +02:00
5a414fff44 windowManager: Remove excess parameter
https://bugzilla.gnome.org/show_bug.cgi?id=787907
2017-09-19 20:07:21 +02:00
2d11b5cea0 autorunManager: Avoid access to non-existent array element
https://bugzilla.gnome.org/show_bug.cgi?id=787907
2017-09-19 20:07:21 +02:00
ecddf1fffd Fix some more undefined property warnings
https://bugzilla.gnome.org/show_bug.cgi?id=787907
2017-09-19 20:07:21 +02:00
90c55e1977 gtk-embed: ensure we only listen for window-created events once
If a tray icon gets a mapped and unmapped and the mapped again
in quick succession, we can end up with multiple handlers
listening for window creation events.

This commit tries to guard against that by only listening for
window-created events when we don't  know the actor associated
with the icon.

https://bugzilla.gnome.org/show_bug.cgi?id=787361
2017-09-15 15:32:46 -04:00
8331436ab3 Update Russian translation 2017-09-14 21:43:54 +00:00
289f982949 remoteSearch: Allow search providers not to auto-start
This would be used by search providers which only operate on data in the
running instance, such as the terminal's search provider which finds the
shell in the tab matching the search text.

https://bugzilla.gnome.org/show_bug.cgi?id=785380
2017-09-14 17:03:14 +02:00
e914d11a5f Update Arabic translation 2017-09-14 13:31:37 +02:00
e5ed0ab60f Update Greek translation 2017-09-12 19:49:52 +00:00
5ec0ad4e9c StEntry: fix crash when hint actor is NULL
https://bugzilla.gnome.org/show_bug.cgi?id=787580

Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-09-12 21:39:30 +02:00
bddc2c0016 dateMenu: Use icon for message indicator
Using a unicode character here means it may look quite different
from the intended style (for instance with emoji fonts). Avoid
this by providing a custom icon and use that instead.

https://bugzilla.gnome.org/show_bug.cgi?id=766368
2017-09-12 17:32:51 +02:00
56f4ce37cd dateMenu: Adjust to GWeather IAPI change
It's not exactly clear what changed - gobject-introspection, gjs - but
the newly added gweather_condition_to_string_full() API no longer works
like it used to. The replacement code does look more idiomatic anyway,
so just fix the code without investigating the reason of the breakage.

https://bugzilla.gnome.org/show_bug.cgi?id=787423
2017-09-12 17:32:51 +02:00
053b8da89c app: Work around pkexec restriction when launching
Unless automatic child reaping is disabled in GSpawnFlags, glib's
g_spawn_* functions will reparent the spawned process to init by
double-forking. Unfortunately pkexec bails out in this case[0],
which means that it no longer works in .desktop files since the
PID tracking removal in commit 01c6392c13.
Fix this by going back to manual child reaping.

[0] https://cgit.freedesktop.org/polkit/tree/src/programs/pkexec.c#n728

https://bugzilla.gnome.org/show_bug.cgi?id=763531
2017-09-12 17:32:51 +02:00
c9d5677c2f Bump version to 3.26.0
Update NEWS.
2017-09-12 17:12:09 +02:00
6ab9c56d05 Update Japanese translation 2017-09-11 14:39:06 +00:00
e90d6dceab Fixes to Catalan translation 2017-09-10 08:17:13 +02:00
82435450b9 Update Basque language 2017-09-09 17:17:33 +02:00
389091a05c Update Swedish translation 2017-09-09 11:08:54 +00:00
d4a76429ae Update French translation 2017-09-08 09:41:38 +00:00
5068b275fa updated Punjabi Translation 2017-09-07 21:11:28 -05:00
de694f47c8 Updated Danish translation 2017-09-07 05:20:22 +02:00
31959cbb04 Updated Ukrainian translation 2017-09-06 18:25:39 +03:00
fa14b3b115 Updated Bulgarian translation 2017-09-04 23:55:00 +03:00
6fc5b0477b theme-node: Fix font family formatting
Unlike pango_font_description_from_string(),
pango_font_description_set_family() requires a already properly
formatted font family string. The proper format is a comma seperated
list of font families, but we generated a "comma space" separated list.
Passing a incorrectly formatted font family string to pango seems to
cause wierd issues, where the wrong font is sometimes selected.

For example, this fixes a font selection issue on zh_TW.UTF-8 locale for
chinese characters, where previously the "Droid Sans" font was selected
instead of "Source Han Sans TW" even though fontconfig had placed
"Source Han Sans TW" before "Droid Sans".

https://bugzilla.gnome.org/show_bug.cgi?id=786868
2017-09-04 17:47:35 +08:00
96e14dcbe7 boxpointer: If available, use source actor for constraining
If a source actor is set, use that for determining the arrow side (i.e.
whether the BoxPointer widget should expand in a certain direction).
This is better because it ensures that the popup is displayed on the
same monitor as the widget it originates from.

Without this, entering text with a vertically aligned input method
close to the bottom of a monitor would expand the BoxPointer downwards
on the monitor beneath it, instead of upwards, which is what one would
expect.

https://bugzilla.gnome.org/show_bug.cgi?id=786886
2017-09-04 16:28:58 +08:00
6914f8fb32 Update French translation 2017-09-02 09:09:49 +00:00
24a8b12e8b Update Korean translation 2017-09-02 03:55:12 +00:00
5b39afc32f Update Belarusian translation 2017-09-01 14:54:18 +00:00
fa60c95639 Updated Dutch translation Master 3.26 2017-09-01 10:29:59 +02:00
f9e632e99b Update Italian translation 2017-09-01 07:31:26 +00:00
bb89c04611 appFavorites: Add Empathy to rename list
GUADEC beer to whomever gets a rename field into the desktop entry spec.

https://bugzilla.gnome.org/show_bug.cgi?id=786783
2017-08-30 21:16:16 -05:00
729a17bd2d Update German translation 2017-08-30 14:56:37 +00:00
9dcffda3df Update Brazilian Portuguese translation 2017-08-29 22:41:59 +00:00
1e4e33a183 Update Serbian Latin translation 2017-08-29 19:01:27 +00:00
82013d59ec Update Serbian translation 2017-08-29 18:58:40 +00:00
d3e95735ec Update Finnish translation 2017-08-29 08:25:22 +00:00
d8b6f2294a Updated Slovenian translation 2017-08-28 19:41:13 +02:00
8af1d195d3 Update Hungarian translation 2017-08-28 17:03:25 +00:00
d82d862547 Update Latvian translation 2017-08-28 10:24:11 +03:00
9cc143aaee Update Chinese (Taiwan) translation 2017-08-27 05:39:24 +00:00
9912d22901 Update Chinese (Taiwan) translation 2017-08-27 04:08:34 +00:00
62bb4f4db6 Update Chinese (Taiwan) translation 2017-08-27 03:29:13 +00:00
921b2a9c21 Update Chinese (Taiwan) translation 2017-08-27 03:25:24 +00:00
d40af89df6 Updated Danish translation 2017-08-26 19:17:22 +02:00
29d37d4fd5 Update Turkish translation 2017-08-24 07:00:59 +00:00
68854f6d0a Fix Icon in Nepali translation 2017-08-24 02:09:50 +02:00
7031d021f4 Update Slovak translation 2017-08-23 17:48:37 +00:00
a02399eea4 workspace: Align window previews with the pixel grid
Now that full-sized window previews are allowed again it makes sense to
align the window previews with the pixel grid to prevent unscaled
windows from looking blurry in the overview.
2017-08-23 18:12:09 +02:00
accad67e1f Update Croatian translation 2017-08-23 15:36:05 +00:00
d9631fe109 Update Friulian translation 2017-08-23 15:02:45 +00:00
df8d797bc4 Update Catalan translation 2017-08-23 10:00:58 +02:00
23b3476105 Updated Vietnamese translation
Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com>
2017-08-23 07:18:53 +07:00
ddbdfa82f2 Update Polish translation 2017-08-23 00:08:22 +02:00
88cd943c3d Updated Lithuanian translation 2017-08-22 23:13:53 +03:00
e717779651 Update Indonesian translation 2017-08-22 17:04:24 +00:00
f7d6d1db72 Updated Czech translation 2017-08-22 18:57:46 +02:00
06a758f903 Update Kazakh translation 2017-08-22 14:23:36 +00:00
3b81465d32 layout: actually hide keyboard when hiding keyboard
Right now we just tuck it off screen, which may leak onto another
screen.  This commit actually hides it.

https://bugzilla.gnome.org/show_bug.cgi?id=786332
2017-08-22 09:44:15 -04:00
75574fbd6a Update Galician translation 2017-08-22 13:09:36 +00:00
fdaa01a00c Update Spanish translation 2017-08-22 11:40:03 +00:00
d78d754d01 Bump version to 3.25.91
Update NEWS.
2017-08-22 13:02:58 +02:00
52f604757c appDisplay: Include system actions in search results
The way system actions are displayed in the search
results is by appending them at the end of the list
returned by the ApplicationProvider.

https://bugzilla.gnome.org/show_bug.cgi?id=691900
2017-08-22 13:02:58 +02:00
595065b420 systemActions: Make actions searchable
Every action has specific associated terms that
identify that action and show it in the search
results. Methods to match the actions as well
as getting properties of specific actions are
needed in order to provide a way of using the
actions.

https://bugzilla.gnome.org/show_bug.cgi?id=691900
2017-08-22 12:42:32 +02:00
b4b1caf5a3 systemActions: Store properties in a map
We want to be able to search for available system actions, so
rather than tracking each action in a separate property, store
them in a single map that can be searched in a generic and clean
way.

https://bugzilla.gnome.org/show_bug.cgi?id=691900
2017-08-22 12:26:51 +02:00
9c3b3320f8 system: Split out system actions to its own module
In anticipation of showing the system actions in
the search results, it is fit to move action
specific code to its own module in order to
reuse it.

https://bugzilla.gnome.org/show_bug.cgi?id=691900
2017-08-22 12:09:04 +02:00
7d95275076 system: Don't leave overview when activating most items
The current behavior wasn't designed, but was introduced in commit
84efaac52b to work around technical limitations when we were still
using external tools like gnome-screensaver or gnome-session-quit
to handle the actions. Those limitations are long gone, so it makes
sense to make the actions consistent with the corresponding keyboard
shortcuts: Leave the overview when launching an application, and leave
it alone otherwise.

https://bugzilla.gnome.org/show_bug.cgi?id=691900
2017-08-22 12:09:04 +02:00
e8a2c06e4e inhibitShortcuts: Whitelist OS components
Users already have to trust their OS, so asking whether an OS component
should be allowed to perform an OS operation is odd at best, if not
confusing. Account for this by allowing system components that require a
keyboard grab to work - namely Setting's keyboard shortcuts panel - to
do so without triggering the permissions dialog.

https://bugzilla.gnome.org/show_bug.cgi?id=786146
2017-08-22 12:09:04 +02:00
b35dfc8914 windowManager: Add a switcher for mutter's switch-monitor keybinding
https://bugzilla.gnome.org/show_bug.cgi?id=783550
2017-08-22 10:50:56 +02:00
c899453800 switcherPopup: Add support for modifier-less keybinding navigation
This drops the requirement that SwitcherPopups need a modifier based
keybinding to work.

The existing behavior for modifier based keybindings is kept but if
the popup is triggered from a no modifiers keybinding, instead of
finishing when the modifier is released, we use a timer that
automatically finishes the popup. The timer is reset on every key
release to allow navigation to happen.

https://bugzilla.gnome.org/show_bug.cgi?id=783550
2017-08-22 10:50:56 +02:00
2339351499 dateMenu: Use non-capitalized forecasts where appropriate
GWeather now provides us with API to request strings that don't
use sentence capitalization, so we can use it for summaries that
don't start a sentence to make for more natural phrases.

https://bugzilla.gnome.org/show_bug.cgi?id=779873
2017-08-21 15:43:34 +02:00
63bd6efae4 Update Catalan translation 2017-08-21 15:21:07 +02:00
f2a9467f91 network: Simplify and fix VPN settings menu item
As in commit b2b2f65 and furthermore it doesn't make much sense to
change the menu item according to the number of connections since all
connections here are of the same type.

https://bugzilla.gnome.org/show_bug.cgi?id=786520
2017-08-21 12:12:52 +02:00
0ad9c51d9b Update Croatian translation 2017-08-20 20:32:30 +00:00
b2b2f65214 network: Launch the appropriate settings panels
The new control-center shell split wifi configuration from the network
panel, and moved all other devices into a flat list. So instead of
manually spawning the app with the 'show-device' subcommand, we can
now simply launch the appropriate settings panel.

https://bugzilla.gnome.org/show_bug.cgi?id=786520
2017-08-20 18:03:32 +02:00
b5d3c4e165 shell-tray-manager: Disconnect theme_widget signals on finalize
The theme widget passed to shell_tray_manager_manager_screen() is simply
a means to receive style information. There is nothing which ties the two
object's life cycles together, so it is entirely possible for the tray to
be finalized with the widget still around - we shouldn't try to update the
stale object on widget style changes, so make sure we properly disconnect
the signal handler.

https://bugzilla.gnome.org/show_bug.cgi?id=786526
2017-08-20 18:03:32 +02:00
5c3de58279 Update Croatian translation 2017-08-18 20:50:23 +00:00
093b73b616 viewSelector: Open context for highlighted search result
To make search more efficient, users don't need to move the actual
keyboard focus away from the search entry to activate the first
result. However the shift+f10 shortcut to pop up the context menu
via keyboard still acts on the actually focused widget, which is
the entry. It makes more sense to open the context menu of the
selected result instead, as that's what's highlighted and responds
to keyboard activation.

https://bugzilla.gnome.org/show_bug.cgi?id=675315
2017-08-17 16:58:17 +02:00
5067ac1598 data: Expect shell in /bin rather than /usr/bin
/bin is the canonical location for the bourne shell, not /usr/bin
(for systems that still stick with the historical split).

https://bugzilla.gnome.org/show_bug.cgi?id=786419
2017-08-17 13:43:43 +02:00
f794b6c522 Update Galician translation 2017-08-16 22:49:45 +00:00
709aa011aa Updated Lithuanian translation 2017-08-15 22:51:25 +03:00
ebda516aef Update Kazakh translation 2017-08-15 15:49:08 +00:00
7253c9b06a Update Indonesian translation 2017-08-14 20:20:41 +00:00
96c2db6c20 Updated Serbian translation 2017-08-14 21:24:44 +02:00
5dd861dff0 Update Turkish translation 2017-08-13 15:34:32 +00:00
1532ac3726 status/keyboard: Fix typo
Missing 't' in shortName, as it's used everywhere else.
2017-08-12 21:12:07 +02:00
c42f5e2b1e Update Polish translation 2017-08-11 20:11:30 +02:00
090063a1cc ui: fix a translator comment in InhibitShortcutsDialog
It needs to be exactly one line above the string to be picked up by gettext.
2017-08-11 19:45:02 +02:00
9fc6caeffb build: Only include enum header in libst dependency
Compiling the generated source for each consumer of the dependency
means we end up trying to register the enum types multiple times,
resulting in a fatal failure on startup. Luckily code outside libst
itself only depends on the header, which doesn't cause those issues.
2017-08-11 17:27:24 +02:00
79eedd93ab build: Rename variable for clarity
st_built_sources contains the source and header generated by mkenums,
not any other generated sources. Clarify that in the name, as we are
about to use source and header separately.
2017-08-11 17:27:24 +02:00
d903978937 Explicitly set the width and height for subicons' containers in folders
Otherwise the smaller icons will try to take too much space since the
texture rendering the icons will be scaled up on HiDPI displays according
to the scale factor, which will push the size of the StBin containing the
texture up, causing them to completely fill the folder's total space.

Explicitly setting the size of the StBin container in this case, in a
similar fashion to what we do when creating the empty placeholders (in
case where there are less than 4 apps in a folder), ensures that each
"cell" of the grid-like widget representing the folder does not take
too much space.

https://bugzilla.gnome.org/show_bug.cgi?id=786145
2017-08-11 12:47:45 +02:00
b8eeac6fcf Resize the user's avatar when scaling factor changes
We need to consider the scaling factor in effect when updating the user's
avatar, and also make sure to update it as well whenever the scaling
factor changes.

https://bugzilla.gnome.org/show_bug.cgi?id=786120
2017-08-11 12:47:45 +02:00
5a621c57ef Updated Czech translation 2017-08-11 03:08:26 +02:00
11e71845d2 Changed _ to ngettext for message '%d more' 2017-08-11 03:06:10 +02:00
7992d7c9b3 Add an explicit dependency on libst
This should ensure that the St enumeration header is available by the
time we start building the gnome-shell executable.
2017-08-11 00:21:40 +01:00
86995d724e build: Use internal dependencies
We cannot rely on any build order, except the one we specify ourselves.

St depends on various generated files; other targets depend on those
files existing, so they can be included. There is no direct relationship
between targets and files, unless we declare a dependency, using the
Meson declare_dependency() constructor — which allows us to replace the
various `link_with` directives with the more appropriate `dependencies`
one, and also allows us to specify sources that must exist by the time
we build those targets.
2017-08-10 23:30:42 +01:00
b0d21c3a37 Define ST_COMPILATION in the St enumeration template
In parallel builds we may end up with st-enum-types.c being built inside
separate targets outside of src/st which may not have the ST_COMPILATION
pre-processor symbol defined. For this reason, we need to define it
ourselves in the source file, before including other headers, to avoid
the single-include guard.
2017-08-10 23:27:56 +01:00
6d704cddea build: Remove included Makefiles as well
Whoops, missed those ...
2017-08-10 21:36:59 +02:00
1518a778ed main: Add private libdirs to GIR's list of search paths for scanned libraries
This is not strictly necessary when linking the shell with DT_RPATH as
the runtime paths will be extracted from the introspected libraries and
used from gobject introspection to find them when loading them based on
the typelib files, but when linking with DT_RUNPATH, as it's the case
for some linkers (e.g. ld.gold, or ld.bfd in some distros like Debian).

By explicitly prepending this directory as a library path for GIR, we're
making sure that the wrapped shared objects installed in Mutter's and
GNOME Shell's private directories can be found in all cases.

https://bugzilla.gnome.org/show_bug.cgi?id=777519
2017-08-10 20:48:07 +02:00
41c57695a8 Update POTFILES.in 2017-08-10 20:41:47 +02:00
44bb0f6a95 build: Bump mutter requirement 2017-08-10 20:31:16 +02:00
abe0ff4f62 Bump version to 3.25.90
Update NEWS.
2017-08-10 20:22:36 +02:00
4b1ba2c05c build: Add Build API wrapper for meson/ninja
The Build API[0] used by gnome-continuous expects a configure
script that generates a Makefile, so grab a copy of graphene's
compatibility script[1] to make it happy.

[0] https://github.com/cgwalters/build-api
[1] https://github.com/ebassi/graphene/blob/master/configure

https://bugzilla.gnome.org/show_bug.cgi?id=785153
2017-08-10 20:16:06 +02:00
cf010cfd8f build: Drop autotools support
Complete the switch to meson and drop autotools support ...

https://bugzilla.gnome.org/show_bug.cgi?id=785153
2017-08-10 20:16:06 +02:00
f96b0d43fa Update gvc 2017-08-10 20:16:06 +02:00
f1ee6c69d7 legacyTray: Time to say goodbye ...
The legacy tray introduced as part of the notification redesign in
3.16 was meant as a stop-gap solution to encourage applications to
move away from the concept of status icons, but it hasn't really
done anything except of getting in the way. Given that the large
majority of apps that still make use of status icons work perfectly
fine without them, we decided that it is time to drop this unloved
bit of UI altogether. Users who still want them (or use one of the
odd cases where an app really depends on the icon) can install one of
various extensions that are available, either based on the XEmbed
support that is still kept around or implementing the DBus-based
StatusNotifier spec.

https://bugzilla.gnome.org/show_bug.cgi?id=785956
2017-08-10 20:16:06 +02:00
7f2101d2a0 workspace: update window close
- match the updated visuals

https://bugzilla.gnome.org/show_bug.cgi?id=783953
2017-08-10 20:16:06 +02:00
6c472d8889 workspace: Show window chrome on long-press
Pointer hover and keyboard focus aren't available on touch devices,
so add long-press as alternative to reveal preview title and close
button.

https://bugzilla.gnome.org/show_bug.cgi?id=783953
2017-08-10 20:16:06 +02:00
6816aea906 workspace: Move decision to show/hide chrome to clone
Currently the chrome layer decides itself which events on the window
clone should show or hide the chrome, which makes it harder to extent.
Instead, move the decision to the window clone by letting it emit
show/hide-chrome events when appropriate.

https://bugzilla.gnome.org/show_bug.cgi?id=783953
2017-08-10 20:16:06 +02:00
1218e68b93 workspace: Allow full-sized window previews
Previews are currently limited to at most 70% of the actual window
size. This was done to indicate more clearly that the overview is
active and the window cannot be interacted with. However since then
other indications like the vignette effect have been added, so
artificially limiting the preview size doesn't look necessary anymore.

https://bugzilla.gnome.org/show_bug.cgi?id=783953
2017-08-10 20:16:06 +02:00
b3b30f239d workspace: Don't restrict title width to window preview
Now that only one window title is visible at any time, it no longer
matters if a title extends into other window previews, so we can
always show the full title.

https://bugzilla.gnome.org/show_bug.cgi?id=783953
2017-08-10 20:16:06 +02:00
4fd5eee2c6 workspace: Only reveal title captions on hover
While the new title position gives the previews more space, they now
overlay the content which may hide valuable information. Address this
by only revealing the title as additional information on hover, like
we do for other auxiliary elements.

https://bugzilla.gnome.org/show_bug.cgi?id=783953
2017-08-10 20:16:06 +02:00
64bbad1bac workspace: Reduce spacing between window previews
With the window titles no longer being shown as part of the previews
grid, we can reduce the spacing to have more space available to the
window previews themselves.

https://bugzilla.gnome.org/show_bug.cgi?id=783953
2017-08-10 20:16:06 +02:00
8a911cdb5d workspace: Move window captions
We consider the window previews the primary way to identify a window,
so it makes sense to give them as much space as possible. So in order
to not have title captions take up too much vertical space, overlay
them on top of the preview borders.

https://bugzilla.gnome.org/show_bug.cgi?id=783953
2017-08-10 20:16:06 +02:00
2d849759c8 overview: Don't expand workspace thumbnails by default
We currently expand the workspace switcher when workspaces are being
used, that is when there are any windows on a non-active workspace.
While this helps with the switcher's discoverability, it does eat into
the space available for window previews. By now the component should
be well established, so we can afford opting for space efficiency and
only expand the switcher while the user actually interacts with it.

https://bugzilla.gnome.org/show_bug.cgi?id=783953
2017-08-10 20:16:06 +02:00
56c28fbb03 workspaceThumbnails: Reduce maximum thumbnail size
The overview's window picker is primarily about windows, and as the
previews that represent them are more effective the bigger they are,
it makes sense to scale down competing elements; start by reducing
the size of workspace thumbnails on the right ...

https://bugzilla.gnome.org/show_bug.cgi?id=783953
2017-08-10 20:16:06 +02:00
e39f4ec0d6 gdmUtils: Define constants with 'var'
Most of those are accessed outside the module itself, but commit
033277b6 missed them ...

https://bugzilla.gnome.org/show_bug.cgi?id=785556
2017-08-10 20:16:06 +02:00
1095489cee workspaceSwitcherPopover: Remove pointless timeout
Ever since commit a4e53953, the popup has been hidden initially, so
there's little point in setting up a timeout handler to hide it ...
2017-08-10 20:16:06 +02:00
d587ba712c Update Hungarian translation 2017-08-10 08:14:44 +00:00
1be5b67f45 Update Swedish translation 2017-08-09 20:20:00 +00:00
b03e00dbee Update Indonesian translation 2017-08-09 05:08:32 +00:00
a93b262e8f Update Friulian translation 2017-08-08 19:01:26 +00:00
e8e51c05d5 Updated Slovenian translation 2017-08-07 10:07:11 +02:00
56a6073729 Update Galician translation 2017-08-07 08:05:10 +00:00
5723fccf32 Updated Slovenian translation 2017-08-07 08:49:17 +02:00
31597c5a41 Update Catalan translation 2017-08-05 18:50:18 +02:00
5eabb45ff4 Updated Spanish translation 2017-08-05 12:01:20 +02:00
62901cac58 Update Slovak translation 2017-08-04 20:22:41 +00:00
508e3e518e padOsd: Add one to the >1 rings
Ring leader/label SVG elements for the second ring are named *Ring2*.
We need to add one here for elements >1, this is consistent with strips.

https://bugzilla.gnome.org/show_bug.cgi?id=785358
2017-08-03 22:06:33 +02:00
c067b07185 Updated Czech translation 2017-08-03 11:23:40 +02:00
814e9bbe96 Update Croatian translation 2017-08-02 19:51:59 +00:00
619a69d53c Use HTTPS URLs for the submodules
The git protocol is usually blocked in conference/hotel networks, and it
is vulnerable to MITM attacks.
2017-08-02 16:32:16 +02:00
7b60d36181 Update POTFILES.in 2017-08-02 15:17:35 +02:00
cdc9d2c26f Updated Czech translation 2017-08-02 13:52:27 +02:00
131 changed files with 20191 additions and 14117 deletions

18
.gitignore vendored
View File

@ -6,16 +6,8 @@
ABOUT-NLS
ChangeLog
INSTALL
Makefile
Makefile.in
aclocal.m4
autom4te.cache
config.h
config.h.in
config.log
config.status
config
configure
data/org.gnome.Shell.desktop
data/org.gnome.Shell.desktop.in
data/gnome-shell-extension-prefs.desktop
@ -41,15 +33,9 @@ docs/reference/*/*.types
docs/reference/*/html/
docs/reference/*/xml/
docs/reference/shell/doc-gen-*
gtk-doc.make
js/misc/config.js
js/js-resources.c
js/js-resources.h
intltool-extract.in
intltool-merge.in
intltool-update.in
libtool
m4/
man/gnome-shell.1
omf.make
po/*.gmo
@ -58,7 +44,6 @@ po/*.header
po/*.sed
po/*.sin
po/.intltool-merge-cache
po/Makefile.in.in
po/Makevars.template
po/POTFILES
po/Rules-quot
@ -68,8 +53,6 @@ src/*.gir
src/*.typelib
src/*-enum-types.[ch]
src/*-marshal.[ch]
src/Makefile
src/Makefile.in
src/calendar-server/evolution-calendar.desktop
src/calendar-server/org.gnome.Shell.CalendarServer.service
src/gnome-shell
@ -93,7 +76,6 @@ src/st-scroll-view-fade-generated.c
src/stamp-st-scroll-view-fade-generated.c
stamp-h1
tests/run-test.sh
xmldocs.make
*~
*.patch
*.sw?

4
.gitmodules vendored
View File

@ -1,6 +1,6 @@
[submodule "data/theme/gnome-shell-sass"]
path = data/theme/gnome-shell-sass
url = git://git.gnome.org/gnome-shell-sass
url = https://git.gnome.org/browse/gnome-shell-sass
[submodule "subprojects/gvc"]
path = subprojects/gvc
url = git://git.gnome.org/libgnome-volume-control
url = https://git.gnome.org/browse/libgnome-volume-control

View File

@ -1,33 +0,0 @@
# Point to our macro directory and pick up user flags from the environment
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
SUBDIRS = data js subprojects/gvc src tests po docs
if BUILD_BROWSER_PLUGIN
SUBDIRS += browser-plugin
endif
if ENABLE_MAN
SUBDIRS += man
endif
EXTRA_DIST = \
.project \
.settings \
autogen.sh \
tools/check-for-missing.py
# These are files checked into Git that we don't want to distribute
DIST_EXCLUDE = \
.gitignore \
.gitmodules \
gnome-shell.doap \
HACKING \
MAINTAINERS \
tools/build/*
distcheck-hook:
@echo "Checking disted files against files in git"
@$(srcdir)/tools/check-for-missing.py $(srcdir) $(distdir) $(DIST_EXCLUDE)
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-man

98
NEWS
View File

@ -1,3 +1,101 @@
3.26.2
======
* Dump javascript stack on aborts, traps and segfaults [Marco; #789237]
* Misc. bug fixes [Jonas, Florian, Alessandro; #788607, #789018, #789231,
#788542, #789103]
Contributors:
Jonas Ådahl, Alessandro Bono, Florian Müllner, Marco Trevisan (Treviño)
Translations:
Xavi Ivars [ca@valencia], Fabio Tomat [fur], Matej Urbančič [sl],
Hannie Dumoleyn [nl]
3.26.1
======
* Don't detach launched apps to not break pkexec and friends [Florian; #763531]
* Allow search providers to not autostart [Bastien, Florian; #785380, #787986]
* Fix crash when tray icons are hidden/shown in quick succession [Ray; #787361]
* Make window group switcher more consistent [Didier; #786009]
* Improve legibility of the top bar when translucent [Jakub; #787940]
* Don't crash when running outside a logind session [Florian; #788046]
* Allow to run headless [Mario, Jonas; #730551]
* Update calendar on timezone changes [Martin; #678507]
* Improve keyboard navigation of window previews [Florian; #786546]
* Run unit tests on `meson test` [Florian; #786497]
* Misc. bug fixes [Florian, Marc-Antoine, Mario, Jakub, Krzesimir; #787423,
#766368, #787580, #787907, #787901, #788039, #788003, #786343, #787902,
#788265, #788339, #787905, #788282, #787676]
Contributors:
Martin Andersson, Florian Müllner, Bastien Nocera, Krzesimir Nowak,
Marc-Antoine Perennou, Didier Roche, Mario Sanchez Prada, Jakub Steiner,
Ray Strode
Translations:
Efstathios Iosifidis [el], Khaled Hosny [ar], Stas Solovey [ru],
Arash Mousavi [fa], Sveinn í Felli [is], Athul R T [ml],
Cheng-Chia Tseng [zh_TW], Anders Jonsson [sv]
3.26.0
======
* Misc. bug fixes [Ray, Michael, Jonas; #786332] #786783, #786886, #786868]
Contributors:
Jonas Ådahl, Michael Catanzaro, Sebastian Keller, Ray Strode
Translations:
Daniel Mustieles [es], Fran Dieguez [gl], Baurzhan Muftakhidinov [kk],
Marek Cernocky [cs], Andika Triwidada [id], Aurimas Černius [lt],
Piotr Drąg [pl], Trần Ngọc Quân [vi], Jordi Mas [ca], Fabio Tomat [fur],
gogo [hr], Dušan Kazik [sk], Piotr Drąg [ne], Emin Tufan Çetin [tr],
Ask Hjorth Larsen [da], Cheng-Chia Tseng [zh_TW], Rūdolfs Mazurs [lv],
Balázs Meskó [hu], Matej Urbančič [sl], Jiri Grönroos [fi],
Милош Поповић [sr], Милош Поповић [sr@latin], Rafael Fontenelle [pt_BR],
Wolfgang Stöggl [de], Milo Casagrande [it], hanniedu [nl],
Yuras Shumovich [be], Changwoo Ryu [ko], Alain Lojewski [fr],
Alexander Shopov [bg], Daniel Korostil [uk], Kris Thomsen [da],
A S Alam [pa], Sebastian Rasmussen [sv], Inaki Larranaga Murgoitio [eu],
Jiro Matsuzawa [ja]
3.25.91
=======
* Open context menu of highlighted search result on Shift+F10 [Florian; #675315]
* Fix mid-sentence capitalization in weather forecasts [Florian; #779873]
* Add switcher popup to cycle through monitor configurations [Rui; #783550]
* Offer system actions in search [Rares; #691900]
* Misc. bug fixes [Mario, Florian, Rui; #777519, #786120, #786145, #786419,
#786526, #786520, #786520, #786146]
Contributors:
Emmanuele Bassi, Marek Cernocky, Piotr Drąg, Carlos Garnacho, Rui Matos,
Florian Müllner, Mario Sanchez Prada, Rares Visalom
Translations:
Marek Cernocky [cs], Piotr Drąg [pl], Muhammet Kara [tr],
Мирослав Николић [sr, sr@latin], Kukuh Syafaat [id],
Baurzhan Muftakhidinov [kk], Aurimas Černius [lt], Fran Dieguez [gl],
gogo [hr], Jordi Mas [ca]
3.25.90
=======
* Add permission dialog for inhibiting shortucts [Florian; #783342]
* Improve window picker layout [Florian, Jakub; #783953]
* Remove legacy status icon tray [Florian; #785956]
* Drop autotools support [Florian; #785153]
* Misc. bug fixes [Florian, Carlos, Cosimo; #785090, #785309, #767805,
#747794, #785358, #785556]
Contributors:
Emmanuele Bassi, Cosimo Cecchi, Carlos Garnacho, Florian Müllner,
Jakub Steiner
Translations:
Fabio Tomat [fur], Pawan Chitrakar [ne], Aurimas Černius [lt], gogo [hr],
Daniel Mustieles [es], Baurzhan Muftakhidinov [kk], Matej Urbančič [sl],
Marek Cernocky [cs], Dušan Kazik [sk], Jordi Mas [ca], Fran Dieguez [gl],
Andika Triwidada [id], Anders Jonsson [sv], Balázs Meskó [hu]
3.25.4
======
* gdm: Fix "Not listed" focus indication [Florian; #784040]

View File

@ -1,35 +0,0 @@
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
olddir="$(pwd)"
cd "${srcdir}"
(test -f configure.ac \
&& test -d src) || {
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
echo " top-level gnome-shell directory"
exit 1
}
# Fetch submodules if needed
if test ! -f subprojects/gvc/Makefile.am || test ! -f data/theme/gnome-shell-sass/COPYING;
then
echo "+ Setting up submodules"
git submodule init
fi
git submodule update
aclocal --install || exit 1
gtkdocize --copy || exit 1
intltoolize --force --copy --automake || exit 1
autoreconf --verbose --force --install || exit 1
cd "${olddir}"
if [ "$NOCONFIGURE" = "" ]; then
"${srcdir}/configure" "$@" || exit 1
fi

View File

@ -1,23 +0,0 @@
mozillalibdir = $(BROWSER_PLUGIN_DIR)
mozillalib_LTLIBRARIES = libgnome-shell-browser-plugin.la
# Browsers can unload and reload the module while browsing, which is not supported by GObject.
# We pass -Wl,-z,nodelete to the linker to ensure the module is never unloaded.
# https://bugzilla.gnome.org/show_bug.cgi?id=737932
libgnome_shell_browser_plugin_la_LDFLAGS = -module -avoid-version -no-undefined -Wl,-z,nodelete
libgnome_shell_browser_plugin_la_LIBADD = \
$(BROWSER_PLUGIN_LIBS)
libgnome_shell_browser_plugin_la_SOURCES = \
browser-plugin.c \
npapi/npapi.h \
npapi/npfunctions.h \
npapi/npruntime.h \
npapi/nptypes.h
libgnome_shell_browser_plugin_la_CFLAGS = \
$(BROWSER_PLUGIN_CFLAGS) \
-DG_LOG_DOMAIN=\"GnomeShellBrowserPlugin\"

158
configure vendored Executable file
View File

@ -0,0 +1,158 @@
#!/bin/bash
# configure script adapter for Meson
# Based on build-api: https://github.com/cgwalters/build-api
# Copyright 2010, 2011, 2013 Colin Walters <walters@verbum.org>
# Copyright 2016, 2017 Emmanuele Bassi
# Licensed under the new-BSD license (http://www.opensource.org/licenses/bsd-license.php)
# Build API variables:
# Little helper function for reading args from the commandline.
# it automatically handles -a b and -a=b variants, and returns 1 if
# we need to shift $3.
read_arg() {
# $1 = arg name
# $2 = arg value
# $3 = arg parameter
local rematch='^[^=]*=(.*)$'
if [[ $2 =~ $rematch ]]; then
read "$1" <<< "${BASH_REMATCH[1]}"
else
read "$1" <<< "$3"
# There is no way to shift our callers args, so
# return 1 to indicate they should do it instead.
return 1
fi
}
sanitycheck() {
# $1 = arg name
# $1 = arg command
# $2 = arg alternates
local cmd=$( which $2 2>/dev/null )
if [ -x "$cmd" ]; then
read "$1" <<< "$cmd"
return 0
fi
test -z $3 || {
for alt in $3; do
cmd=$( which $alt 2>/dev/null )
if [ -x "$cmd" ]; then
read "$1" <<< "$cmd"
return 0
fi
done
}
echo -e "\e[1;31mERROR\e[0m: Command '$2' not found"
exit 1
}
sanitycheck MESON 'meson'
sanitycheck NINJA 'ninja' 'ninja-build'
enable_docs='-Denable-gtk-doc=false'
enable_man='-Denable-man=false'
enable_introspection=''
while (($# > 0)); do
case "${1%%=*}" in
--prefix) read_arg prefix "$@" || shift;;
--bindir) read_arg bindir "$@" || shift;;
--sbindir) read_arg sbindir "$@" || shift;;
--libexecdir) read_arg libexecdir "$@" || shift;;
--datarootdir) read_arg datarootdir "$@" || shift;;
--datadir) read_arg datadir "$@" || shift;;
--sysconfdir) read_arg sysconfdir "$@" || shift;;
--libdir) read_arg libdir "$@" || shift;;
--mandir) read_arg mandir "$@" || shift;;
--includedir) read_arg includedir "$@" || shift;;
--enable-gtk-doc) enable_docs='-Denable-gtk-doc=true';;
--disable-gtk-doc) enable_docs='-Denable-gtk-doc=false';;
--enable-man) enable_man='-Denable-man=true';;
--disable-man) enable_man='-Denable-man=false';;
--enable-introspection) enable_introspection='';;
--disable-introspection) enable_introspection='-Ddisable_introspection=true';;
*) echo -e "\e[1;33mINFO\e[0m: Ignoring unknown option '$1'";;
esac
shift
done
# Defaults
test -z ${prefix} && prefix="/usr/local"
test -z ${bindir} && bindir=${prefix}/bin
test -z ${sbindir} && sbindir=${prefix}/sbin
test -z ${libexecdir} && libexecdir=${prefix}/bin
test -z ${datarootdir} && datarootdir=${prefix}/share
test -z ${datadir} && datadir=${datarootdir}
test -z ${sysconfdir} && sysconfdir=${prefix}/etc
test -z ${libdir} && libdir=${prefix}/lib
test -z ${mandir} && mandir=${prefix}/share/man
test -z ${includedir} && includedir=${prefix}/include
# The source directory is the location of this file
srcdir=$(dirname $0)
# The build directory is the current location
builddir=`pwd`
# If we're calling this file from the source directory then
# we automatically create a build directory and ensure that
# both Meson and Ninja invocations are relative to that
# location
if [[ -f "${builddir}/meson.build" ]]; then
mkdir -p _build
builddir="${builddir}/_build"
NINJA_OPT="-C ${builddir}"
fi
# Wrapper Makefile for Ninja
cat > Makefile <<END
# Generated by configure; do not edit
all:
CC="\$(CC)" CXX="\$(CXX)" ${NINJA} ${NINJA_OPT}
install:
DESTDIR="\$(DESTDIR)" ${NINJA} ${NINJA_OPT} install
check:
${MESON} test ${NINJA_OPT}
END
echo "Summary:"
echo " meson:....... ${MESON}"
echo " ninja:....... ${NINJA}"
echo " prefix:...... ${prefix}"
echo " bindir:...... ${bindir}"
echo " sbindir:..... ${sbindir}"
echo " libexecdir:.. ${libexecdir}"
echo " datarootdir:. ${datarootdir}"
echo " datadir:..... ${datadir}"
echo " sysconfdir:.. ${sysconfdir}"
echo " libdir:...... ${libdir}"
echo " mandir:...... ${mandir}"
echo " includedir:.. ${includedir}"
echo " additional:.."
echo " - ${enable_docs} ${enable_man} ${enable_introspection}"
exec ${MESON} \
--prefix=${prefix} \
--libdir=${libdir} \
--libexecdir=${libexecdir} \
--datadir=${datadir} \
--sysconfdir=${sysconfdir} \
--bindir=${bindir} \
--includedir=${includedir} \
--mandir=${mandir} \
--default-library shared \
${enable_docs} \
${enable_man} \
${enable_introspection} \
${builddir} \
${srcdir}
# vim: ai ts=8 noet sts=2 ft=sh

View File

@ -1,280 +0,0 @@
AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.25.4],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AX_IS_RELEASE([git-directory])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/shell-global.c])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR([config])
AC_SUBST([PACKAGE_NAME], ["$PACKAGE_NAME"])
AC_SUBST([PACKAGE_VERSION], ["$PACKAGE_VERSION"])
AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz tar-ustar foreign])
AM_MAINTAINER_MODE([enable])
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
# Checks for programs.
AC_PROG_CC
# Initialize libtool
LT_PREREQ([2.2.6])
LT_INIT([disable-static])
# i18n
GETTEXT_PACKAGE=gnome-shell
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
[The prefix for our gettext translation domains.])
AM_GNU_GETTEXT_VERSION([0.19.6])
AM_GNU_GETTEXT([external])
PKG_PROG_PKG_CONFIG([0.22])
AC_PATH_PROG([XSLTPROC], [xsltproc])
GLIB_GSETTINGS
# Get a value to substitute into gnome-shell.in
AM_PATH_PYTHON([3])
AC_SUBST(PYTHON)
# We depend on a specific version of the libmutter API. The mutter variants of
# the Cogl and Clutter libraries also use this API version.
LIBMUTTER_API_VERSION=1
LIBMUTTER=libmutter-$LIBMUTTER_API_VERSION
LIBMUTTER_COGL=mutter-cogl-$LIBMUTTER_API_VERSION
LIBMUTTER_COGL_PANGO=mutter-cogl-pango-$LIBMUTTER_API_VERSION
LIBMUTTER_CLUTTER=mutter-clutter-$LIBMUTTER_API_VERSION
# We need at least this, since gst_plugin_register_static() was added
# in 0.10.16, but nothing older than 0.10.21 has been tested.
GSTREAMER_MIN_VERSION=0.11.92
recorder_modules=
build_recorder=false
AC_MSG_CHECKING([for GStreamer (needed for recording functionality)])
if $PKG_CONFIG --exists gstreamer-1.0 '>=' $GSTREAMER_MIN_VERSION ; then
AC_MSG_RESULT(yes)
build_recorder=true
recorder_modules="gstreamer-1.0 gstreamer-base-1.0 x11 gtk+-3.0"
else
AC_MSG_RESULT(no)
fi
AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
AC_ARG_ENABLE([systemd],
AS_HELP_STRING([--enable-systemd], [Use systemd]),
[enable_systemd=$enableval],
[enable_systemd=auto])
AS_IF([test x$enable_systemd != xno], [
AC_MSG_CHECKING([for libsystemd])
PKG_CHECK_EXISTS([libsystemd],
[have_systemd=yes
AC_DEFINE([HAVE_SYSTEMD], [1], [Define if we have systemd])],
[have_systemd=no])
AC_MSG_RESULT($have_systemd)
])
AC_MSG_RESULT($enable_systemd)
GOBJECT_INTROSPECTION_MIN_VERSION=1.49.1
GJS_MIN_VERSION=1.47.0
MUTTER_MIN_VERSION=3.25.3
GTK_MIN_VERSION=3.15.0
GIO_MIN_VERSION=2.53.0
LIBECAL_MIN_VERSION=3.5.3
LIBEDATASERVER_MIN_VERSION=3.17.2
POLKIT_MIN_VERSION=0.100
STARTUP_NOTIFICATION_MIN_VERSION=0.11
GCR_MIN_VERSION=3.7.5
GNOME_DESKTOP_REQUIRED_VERSION=3.7.90
NETWORKMANAGER_MIN_VERSION=0.9.8
PULSE_MIN_VERS=2.0
# Collect more than 20 libraries for a prize!
SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION
libxml-2.0
gtk+-3.0 >= $GTK_MIN_VERSION
atk-bridge-2.0
gjs-1.0 >= $GJS_MIN_VERSION
$recorder_modules
gdk-x11-3.0 libsoup-2.4
$LIBMUTTER_CLUTTER >= $MUTTER_MIN_VERSION
$LIBMUTTER_COGL_PANGO
libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION
gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION
libcanberra libcanberra-gtk3
polkit-agent-1 >= $POLKIT_MIN_VERSION
gcr-base-3 >= $GCR_MIN_VERSION"
if test x$have_systemd = xyes; then
SHARED_PCS="${SHARED_PCS} libsystemd"
fi
PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS)
PKG_CHECK_MODULES(MUTTER, $LIBMUTTER >= $MUTTER_MIN_VERSION)
PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-1.0 >= $GJS_MIN_VERSION)
PKG_CHECK_MODULES(ST, $LIBMUTTER_CLUTTER gtk+-3.0 libcroco-0.6 >= 0.6.8 x11)
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0)
PKG_CHECK_MODULES(TRAY, $LIBMUTTER_CLUTTER gtk+-3.0)
PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0)
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.21.3)
AC_SUBST(LIBMUTTER_API_VERSION)
AC_ARG_ENABLE(browser-plugin,
[AS_HELP_STRING([--enable-browser-plugin],
[Enable browser plugin [default=yes]])],,
enable_browser_plugin=yes)
AS_IF([test x$enable_browser_plugin = xyes], [
PKG_CHECK_MODULES(BROWSER_PLUGIN, gio-2.0 >= $GIO_MIN_VERSION json-glib-1.0 >= 0.13.2)
])
AM_CONDITIONAL(BUILD_BROWSER_PLUGIN, test x$enable_browser_plugin = xyes)
PKG_CHECK_MODULES(BLUETOOTH, gnome-bluetooth-1.0 >= 3.9.0,
[AC_DEFINE([HAVE_BLUETOOTH],[1],[Define if you have libgnome-bluetooth-applet])
AC_SUBST([HAVE_BLUETOOTH],[1])],
[AC_DEFINE([HAVE_BLUETOOTH],[0])
AC_SUBST([HAVE_BLUETOOTH],[0])])
PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION gio-2.0)
AC_SUBST(CALENDAR_SERVER_CFLAGS)
AC_SUBST(CALENDAR_SERVER_LIBS)
GNOME_KEYBINDINGS_KEYSDIR=`$PKG_CONFIG --variable keysdir gnome-keybindings`
AC_SUBST([GNOME_KEYBINDINGS_KEYSDIR])
GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION])
MUTTER_GIR_DIR=`$PKG_CONFIG --variable=girdir $LIBMUTTER`
AC_SUBST(MUTTER_GIR_DIR)
MUTTER_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir $LIBMUTTER`
AC_SUBST(MUTTER_TYPELIB_DIR)
GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable glib_compile_resources gio-2.0`
AC_SUBST(GLIB_COMPILE_RESOURCES)
AC_CHECK_FUNCS(fdwalk)
AC_CHECK_FUNCS(mallinfo)
AC_CHECK_HEADERS([sys/resource.h])
# _NL_TIME_FIRST_WEEKDAY is an enum and not a define
AC_MSG_CHECKING([for _NL_TIME_FIRST_WEEKDAY])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]],
[[nl_langinfo(_NL_TIME_FIRST_WEEKDAY);]])],
[langinfo_ok=yes], [langinfo_ok=no])
AC_MSG_RESULT($langinfo_ok)
if test "$langinfo_ok" = "yes"; then
AC_DEFINE([HAVE__NL_TIME_FIRST_WEEKDAY], [1],
[Define if _NL_TIME_FIRST_WEEKDAY is available])
fi
AC_ARG_ENABLE(networkmanager,
AS_HELP_STRING([--disable-networkmanager],
[disable NetworkManager support @<:@default=auto@:>@]),,
[enable_networkmanager=auto])
if test "x$enable_networkmanager" != "xno"; then
PKG_CHECK_MODULES(NETWORKMANAGER,
[libnm-glib
libnm-util >= $NETWORKMANAGER_MIN_VERSION
libnm-gtk >= $NETWORKMANAGER_MIN_VERSION
libsecret-1 >= 0.18],
[have_networkmanager=yes],
[have_networkmanager=no])
GNOME_SHELL_CFLAGS="$GNOME_SHELL_CFLAGS $NETWORKMANAGER_CFLAGS"
GNOME_SHELL_LIBS="$GNOME_SHELL_LIBS $NETWORKMANAGER_LIBS"
else
have_networkmanager="no (disabled)"
fi
if test "x$have_networkmanager" = "xyes"; then
AC_DEFINE(HAVE_NETWORKMANAGER, [1], [Define if we have NetworkManager])
AC_SUBST([HAVE_NETWORKMANAGER], [1])
else
if test "x$enable_networkmanager" = "xyes"; then
AC_MSG_ERROR([Couldn't find NetworkManager.])
fi
AC_SUBST([HAVE_NETWORKMANAGER], [0])
fi
AM_CONDITIONAL(HAVE_NETWORKMANAGER, test "$have_networkmanager" = "yes")
# Sets GLIB_GENMARSHAL and GLIB_MKENUMS
AM_PATH_GLIB_2_0()
GTK_DOC_CHECK([1.15], [--flavour no-tmpl])
AC_ARG_ENABLE(man,
[AS_HELP_STRING([--enable-man],
[generate man pages [default=yes]])],,
enable_man=yes)
if test "$enable_man" != no; then
AC_PATH_PROG([XSLTPROC], [xsltproc])
if test -z "$XSLTPROC"; then
AC_MSG_ERROR([xsltproc is required for --enable-man])
fi
fi
AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
AX_COMPILER_FLAGS()
case "$WARN_CFLAGS" in
*-Werror*)
WARN_CFLAGS="$WARN_CFLAGS -Wno-error=deprecated-declarations"
;;
esac
AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS"
AC_SUBST(AM_CFLAGS)
if test -z "${BROWSER_PLUGIN_DIR}"; then
BROWSER_PLUGIN_DIR="\${libdir}/mozilla/plugins"
fi
AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to])
AC_ARG_VAR([GDBUS_CODEGEN],[the gdbus-codegen programme])
AC_PATH_PROG([GDBUS_CODEGEN],[gdbus-codegen],[])
if test -z "$GDBUS_CODEGEN"; then
AC_MSG_ERROR([gdbus-codegen not found])
fi
AC_PATH_PROG([SASSC],[sassc],[])
AC_CONFIG_FILES([
Makefile
data/Makefile
docs/Makefile
docs/reference/Makefile
docs/reference/shell/Makefile
docs/reference/shell/version.xml
docs/reference/st/Makefile
docs/reference/st/version.xml
js/Makefile
src/Makefile
subprojects/gvc/Makefile
browser-plugin/Makefile
tests/Makefile
po/Makefile.in
man/Makefile
])
AC_OUTPUT
echo "
Build configuration:
Prefix: ${prefix}
Source code location: ${srcdir}
Compiler: ${CC}
Compiler Warnings: $ax_enable_compile_warnings
Support for NetworkManager: $have_networkmanager
Support for GStreamer recording: $build_recorder
"

View File

@ -1,136 +0,0 @@
CLEANFILES =
NULL =
portaldir = $(datadir)/xdg-desktop-portal/portals
portal_DATA = gnome-shell.portal
desktopdir=$(datadir)/applications
desktop_DATA = org.gnome.Shell.desktop gnome-shell-extension-prefs.desktop
if HAVE_NETWORKMANAGER
desktop_DATA += org.gnome.Shell.PortalHelper.desktop
servicedir = $(datadir)/dbus-1/services
service_DATA = org.gnome.Shell.PortalHelper.service
CLEANFILES += \
org.gnome.Shell.PortalHelper.service \
org.gnome.Shell.PortalHelper.desktop \
org.gnome.Shell.PortalHelper.desktop.in \
$(NULL)
endif
%.service: %.service.in
$(AM_V_GEN) sed -e "s|@libexecdir[@]|$(libexecdir)|" \
$< > $@ || rm $@
# We substitute in bindir so it works as an autostart
# file when built in a non-system prefix
%.desktop.in:%.desktop.in.in
$(AM_V_GEN) sed -e "s|@bindir[@]|$(bindir)|" \
-e "s|@VERSION[@]|$(VERSION)|" \
$< > $@ || rm $@
%.desktop:%.desktop.in
$(AM_V_GEN) $(MSGFMT) --desktop --template $(builddir)/$< \
-d $(top_srcdir)/po -o $@
introspectiondir = $(datadir)/dbus-1/interfaces
introspection_DATA = \
org.gnome.Shell.PadOsd.xml \
org.gnome.Shell.Screencast.xml \
org.gnome.Shell.Screenshot.xml \
org.gnome.ShellSearchProvider.xml \
org.gnome.ShellSearchProvider2.xml \
$(NULL)
theme_sources = \
theme/gnome-shell-high-contrast.scss \
theme/gnome-shell.scss \
theme/gnome-shell-sass/_colors.scss \
theme/gnome-shell-sass/_common.scss \
theme/gnome-shell-sass/_drawing.scss \
theme/gnome-shell-sass/_high-contrast-colors.scss \
$(NULL)
dist_theme_files = \
$(theme_sources) \
theme/HACKING \
theme/README \
theme/gnome-shell-sass/COPYING \
theme/gnome-shell-sass/HACKING \
theme/gnome-shell-sass/NEWS \
theme/gnome-shell-sass/README \
theme/gnome-shell-sass/gnome-shell-sass.doap \
theme/pad-osd.css \
theme/parse-sass.sh \
$(NULL)
%.css: %.scss $(theme_sources)
@if test -n "$(SASSC)"; then \
if $(AM_V_P); then PS4= set -x; else echo " GEN $@"; fi; \
$(SASSC) -a $< $@; \
fi
resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)/theme --generate-dependencies $(srcdir)/gnome-shell-theme.gresource.xml)
gnome-shell-theme.gresource: gnome-shell-theme.gresource.xml $(resource_files)
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/theme $<
resourcedir = $(pkgdatadir)
resource_DATA = gnome-shell-theme.gresource
backgrounddir = $(pkgdatadir)
background_DATA = perf-background.xml
perf-background.xml: perf-background.xml.in
$(AM_V_GEN) sed -e "s|@datadir[@]|$(datadir)|" \
$< > $@ || rm $@
keysdir = @GNOME_KEYBINDINGS_KEYSDIR@
keys_DATA = 50-gnome-shell-system.xml
gsettings_SCHEMAS = org.gnome.shell.gschema.xml
%.gschema.xml: %.gschema.xml.in Makefile
$(AM_V_GEN) sed -e 's|@GETTEXT_PACKAGE[@]|$(GETTEXT_PACKAGE)|g' \
$< > $@ || rm $@
@GSETTINGS_RULES@
# We need to compile schemas at make time
# to run from source tree
gschemas.compiled: $(gsettings_SCHEMAS:.xml=.valid)
$(AM_V_GEN) $(GLIB_COMPILE_SCHEMAS) --targetdir=. .
all-local: gschemas.compiled
convertdir = $(datadir)/GConf/gsettings
convert_DATA = gnome-shell-overrides.convert
EXTRA_DIST = \
org.gnome.Shell.desktop.in.in \
gnome-shell-extension-prefs.desktop.in.in \
$(portal_DATA) \
$(introspection_DATA) \
$(menu_DATA) \
$(convert_DATA) \
$(keys_DATA) \
$(dist_theme_files) \
perf-background.xml.in \
org.gnome.Shell.PortalHelper.desktop.in.in \
org.gnome.Shell.PortalHelper.service.in \
org.gnome.shell.gschema.xml.in \
gnome-shell-theme.gresource.xml \
$(resource_files) \
$(NULL)
CLEANFILES += \
org.gnome.Shell.desktop.in \
gnome-shell-extension-prefs.in \
$(desktop_DATA) \
$(gsettings_SCHEMAS) \
perf-background.xml \
gschemas.compiled \
org.gnome.shell.gschema.valid \
gnome-shell-theme.gresource \
$(NULL)

View File

@ -9,6 +9,8 @@
<file>checkbox-off.svg</file>
<file>checkbox.svg</file>
<file>close-window.svg</file>
<file>close-window-active.svg</file>
<file>close-window-hover.svg</file>
<file>close.svg</file>
<file>corner-ripple-ltr.png</file>
<file>corner-ripple-rtl.png</file>
@ -18,6 +20,7 @@
<file>gnome-shell.css</file>
<file>gnome-shell-high-contrast.css</file>
<file>logged-in-indicator.svg</file>
<file alias="icons/message-indicator-symbolic.svg">message-indicator-symbolic.svg</file>
<file>no-events.svg</file>
<file>no-notifications.svg</file>
<file>noise-texture.png</file>

View File

@ -78,11 +78,18 @@ install_data('50-gnome-shell-system.xml', install_dir: keysdir)
schemaconf = configuration_data()
schemaconf.set('GETTEXT_PACKAGE', meson.project_name())
configure_file(
schema = configure_file(
input: 'org.gnome.shell.gschema.xml.in',
output: 'org.gnome.shell.gschema.xml',
configuration: schemaconf,
install_dir: schemadir
)
# for unit tests - gnome.compile_schemas() only looks in srcdir
custom_target('compile-schemas',
input: schema,
output: 'gschemas.compiled',
command: [find_program('glib-compile-schemas'), meson.current_build_dir()],
build_by_default: true)
install_data('gnome-shell-overrides.convert', install_dir: convertdir)

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
id="Foreground"
x="0px"
y="0px"
width="32"
height="32"
viewBox="0 0 32 32"
enable-background="new 0 0 16 16"
xml:space="preserve"
sodipodi:version="0.32"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="close-window-active.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
id="metadata2399"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs2397"><linearGradient
id="linearGradient3173"><stop
style="stop-color:#c4c4c4;stop-opacity:1;"
offset="0"
id="stop3175" /><stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="1"
id="stop3177" /></linearGradient><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 11 : 1"
inkscape:vp_y="0 : 1375 : 0"
inkscape:vp_z="22 : 11 : 1"
inkscape:persp3d-origin="11 : 7.3333334 : 1"
id="perspective2401" /></defs><sodipodi:namedview
inkscape:window-height="1106"
inkscape:window-width="1700"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#797979"
id="base"
showgrid="false"
inkscape:zoom="4"
inkscape:cx="28.483745"
inkscape:cy="67.714004"
inkscape:window-x="1427"
inkscape:window-y="127"
inkscape:current-layer="Foreground"
showguides="true"
inkscape:guide-bbox="true"
borderlayer="true"
inkscape:showpageshadow="false"
inkscape:window-maximized="0"
inkscape:document-rotation="0"><inkscape:grid
type="xygrid"
id="grid11246"
empspacing="32"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" /></sodipodi:namedview><path
d="m 4.4362021,16 c 0,-6.410121 5.1728276,-11.60728 11.5529359,-11.60728 6.380109,0 11.552937,5.197159 11.552937,11.60728 0,6.410122 -5.172828,11.607281 -11.552937,11.607281 C 9.6090297,27.607281 4.4362021,22.410122 4.4362021,16 Z"
id="path883"
style="color:#000000;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;fill:#a5c8ec;fill-opacity:1;fill-rule:nonzero;stroke:#2975c4;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
sodipodi:nodetypes="csssc"
inkscape:connector-curvature="0" /><path
d="m 11.718386,11.764547 h 1.055207 c 0.01091,-1.26e-4 0.02193,-4.86e-4 0.03298,0 0.269026,0.01183 0.538019,0.135679 0.725455,0.329752 l 2.407192,2.407192 2.440166,-2.407192 c 0.28029,-0.243226 0.471333,-0.322366 0.725455,-0.329752 h 1.055207 v 1.055208 c 0,0.302285 -0.03623,0.581049 -0.263801,0.791405 l -2.407191,2.407191 2.374217,2.374216 c 0.198577,0.198559 0.296768,0.478484 0.296775,0.758432 v 1.055206 h -1.055211 c -0.279947,-10e-6 -0.559877,-0.09824 -0.75843,-0.296777 l -2.407192,-2.407192 -2.407192,2.407192 c -0.198551,0.198579 -0.478493,0.296777 -0.758429,0.296777 H 11.71839 v -1.055206 c -3e-6,-0.279936 0.0982,-0.559873 0.296777,-0.758432 L 14.422359,16.018351 12.015167,13.61116 C 11.79279,13.405784 11.69527,13.116003 11.71839,12.819755 Z"
inkscape:connector-curvature="0"
id="path887"
style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Andale Mono';-inkscape-font-specification:'Andale Mono';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#4a90d9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.87958801;marker:none;enable-background:new"
sodipodi:nodetypes="ccsccccccccccccccccccccccc" /></svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
id="Foreground"
x="0px"
y="0px"
width="32"
height="32"
viewBox="0 0 32 32"
enable-background="new 0 0 16 16"
xml:space="preserve"
sodipodi:version="0.32"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="close-window-hover.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
id="metadata2399"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs2397"><linearGradient
id="linearGradient3173"><stop
style="stop-color:#c4c4c4;stop-opacity:1;"
offset="0"
id="stop3175" /><stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="1"
id="stop3177" /></linearGradient><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 11 : 1"
inkscape:vp_y="0 : 1375 : 0"
inkscape:vp_z="22 : 11 : 1"
inkscape:persp3d-origin="11 : 7.3333334 : 1"
id="perspective2401" /></defs><sodipodi:namedview
inkscape:window-height="1106"
inkscape:window-width="1700"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#797979"
id="base"
showgrid="false"
inkscape:zoom="4"
inkscape:cx="28.483745"
inkscape:cy="67.714004"
inkscape:window-x="1427"
inkscape:window-y="127"
inkscape:current-layer="Foreground"
showguides="true"
inkscape:guide-bbox="true"
borderlayer="true"
inkscape:showpageshadow="false"
inkscape:window-maximized="0"
inkscape:document-rotation="0"><inkscape:grid
type="xygrid"
id="grid11246"
empspacing="32"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" /></sodipodi:namedview><path
inkscape:connector-curvature="0"
sodipodi:nodetypes="csssc"
style="color:#000000;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;fill:#2975c4;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
id="path822"
d="m 4.4362021,16 c 0,-6.410121 5.1728276,-11.60728 11.5529359,-11.60728 6.380109,0 11.552937,5.197159 11.552937,11.60728 0,6.410122 -5.172828,11.607281 -11.552937,11.607281 C 9.6090297,27.607281 4.4362021,22.410122 4.4362021,16 Z" /><path
sodipodi:nodetypes="ccsccccccccccccccccccccccc"
style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Andale Mono';-inkscape-font-specification:'Andale Mono';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.87958801;marker:none;enable-background:new"
id="path826"
inkscape:connector-curvature="0"
d="m 11.718386,11.764547 h 1.055207 c 0.01091,-1.26e-4 0.02193,-4.86e-4 0.03298,0 0.269026,0.01183 0.538019,0.135679 0.725455,0.329752 l 2.407192,2.407192 2.440166,-2.407192 c 0.28029,-0.243226 0.471333,-0.322366 0.725455,-0.329752 h 1.055207 v 1.055208 c 0,0.302285 -0.03623,0.581049 -0.263801,0.791405 l -2.407191,2.407191 2.374217,2.374216 c 0.198577,0.198559 0.296768,0.478484 0.296775,0.758432 v 1.055206 h -1.055211 c -0.279947,-10e-6 -0.559877,-0.09824 -0.75843,-0.296777 l -2.407192,-2.407192 -2.407192,2.407192 c -0.198551,0.198579 -0.478493,0.296777 -0.758429,0.296777 H 11.71839 v -1.055206 c -3e-6,-0.279936 0.0982,-0.559873 0.296777,-0.758432 L 14.422359,16.018351 12.015167,13.61116 C 11.79279,13.405784 11.69527,13.116003 11.71839,12.819755 Z" /></svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@ -7,7 +7,6 @@
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
@ -16,137 +15,71 @@
y="0px"
width="32"
height="32"
viewBox="0 0 23.272727 23.272727"
viewBox="0 0 32 32"
enable-background="new 0 0 16 16"
xml:space="preserve"
sodipodi:version="0.32"
inkscape:version="0.48+devel r10081 custom"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="close-window.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
id="metadata2399"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs2397"><linearGradient
id="linearGradient3173"><stop
style="stop-color:#c4c4c4;stop-opacity:1;"
offset="0"
id="stop3175" /><stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="1"
id="stop3177" /></linearGradient><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 8 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="16 : 8 : 1"
inkscape:persp3d-origin="8 : 5.3333333 : 1"
id="perspective2401" /><filter
color-interpolation-filters="sRGB"
inkscape:collect="always"
id="filter16494-4"
x="-0.20989846"
width="1.4197969"
y="-0.20903821"
height="1.4180764"><feGaussianBlur
inkscape:collect="always"
stdDeviation="1.3282637"
id="feGaussianBlur16496-8" /></filter><radialGradient
inkscape:collect="always"
xlink:href="#linearGradient16498-6"
id="radialGradient16504-1"
cx="7.6582627"
cy="5.8191104"
fx="7.6582627"
fy="5.8191104"
r="8.6928644"
gradientTransform="matrix(1.0474339,0,0,1.0517402,-0.3632615,-0.42032492)"
gradientUnits="userSpaceOnUse" /><linearGradient
inkscape:collect="always"
id="linearGradient16498-6"><stop
style="stop-color:#7b7b7b;stop-opacity:1"
offset="0"
id="stop16500-8" /><stop
style="stop-color:#101010;stop-opacity:1"
offset="1"
id="stop16502-0" /></linearGradient><filter
color-interpolation-filters="sRGB"
inkscape:collect="always"
id="filter16524-9"
x="-0.212979"
width="1.425958"
y="-0.21305652"
height="1.426113"><feGaussianBlur
inkscape:collect="always"
stdDeviation="0.71020915"
id="feGaussianBlur16526-0" /></filter></defs><sodipodi:namedview
inkscape:window-height="1114"
inkscape:window-width="1463"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#000000"
id="base"
showgrid="false"
inkscape:zoom="1"
inkscape:cx="10.720189"
inkscape:cy="13.739577"
inkscape:window-x="0"
inkscape:window-y="26"
inkscape:current-layer="Foreground"
showguides="true"
inkscape:guide-bbox="true"
borderlayer="true"
inkscape:showpageshadow="false"
inkscape:window-maximized="0"><inkscape:grid
type="xygrid"
id="grid11246"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" /></sodipodi:namedview>
<g
style="display:inline"
id="g16402-8"
transform="translate(4.7533483,2.8238929)"><g
id="g3175-4"><path
sodipodi:type="inkscape:offset"
inkscape:radius="0"
inkscape:original="M 7.65625 0.125 C 3.2589349 0.125 -0.3125 3.7070002 -0.3125 8.125 C -0.3125 12.543001 3.2589349 16.125 7.65625 16.125 C 12.053566 16.125 15.625 12.543001 15.625 8.125 C 15.625 3.7070002 12.053566 0.125 7.65625 0.125 z "
xlink:href="#path2394-32"
style="opacity:0.52994014;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.18181825;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter16494-4);enable-background:accumulate"
id="path16480-5"
inkscape:href="#path2394-32"
d="m 7.65625,0.125 c -4.3973151,0 -7.96875,3.5820002 -7.96875,8 0,4.418001 3.5714349,8 7.96875,8 4.397316,0 7.96875,-3.581999 7.96875,-8 0,-4.4179998 -3.571434,-8 -7.96875,-8 z"
transform="translate(0,1.028519)" /><path
clip-rule="evenodd"
d="m -0.30428257,8.1237596 c 0,-4.4179998 3.56522987,-7.9999996 7.96254497,-7.9999996 4.3973156,0 7.9625456,3.5819998 7.9625456,7.9999996 0,4.4180014 -3.56523,8.0000004 -7.9625456,8.0000004 -4.3973151,0 -7.96254497,-3.581999 -7.96254497,-8.0000004 z"
id="path2394-32"
style="color:#000000;fill:url(#radialGradient16504-1);fill-opacity:1;fill-rule:nonzero;stroke:#eeeeec;stroke-width:1.4545455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="csssc"
inkscape:connector-curvature="0" /><g
id="g3172-6" /></g><g
transform="matrix(0.72727273,0,0,0.72727273,2.368236,2.1803254)"
style="fill:#ffffff;fill-opacity:1;display:inline"
id="g27275-6-6"
inkscape:label="window-close"><g
style="fill:#ffffff;fill-opacity:1;display:inline"
id="g27277-1-1"
transform="translate(-41,-760)"><path
sodipodi:type="inkscape:offset"
inkscape:radius="0"
inkscape:original="M 44.21875 764.1875 L 44.21875 765.1875 C 44.19684 765.46825 44.289258 765.74287 44.5 765.9375 L 46.78125 768.21875 L 44.5 770.46875 C 44.31181 770.65692 44.218747 770.92221 44.21875 771.1875 L 44.21875 772.1875 L 45.21875 772.1875 C 45.48404 772.1875 45.749336 772.09444 45.9375 771.90625 L 48.21875 769.625 L 50.5 771.90625 C 50.688164 772.0944 50.953449 772.18749 51.21875 772.1875 L 52.21875 772.1875 L 52.21875 771.1875 C 52.218742 770.9222 52.125688 770.65692 51.9375 770.46875 L 49.6875 768.21875 L 51.96875 765.9375 C 52.18441 765.73815 52.21875 765.47397 52.21875 765.1875 L 52.21875 764.1875 L 51.21875 764.1875 C 50.977922 764.1945 50.796875 764.2695 50.53125 764.5 L 48.21875 766.78125 L 45.9375 764.5 C 45.75987 764.31608 45.504951 764.1987 45.25 764.1875 C 45.23954 764.18704 45.22912 764.18738 45.21875 764.1875 L 44.21875 764.1875 z "
xlink:href="#path27279-0-5"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78124988;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter16524-9);enable-background:new;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
id="path16506-5"
inkscape:href="#path27279-0-5"
d="m 44.21875,764.1875 0,1 c -0.02191,0.28075 0.07051,0.55537 0.28125,0.75 l 2.28125,2.28125 -2.28125,2.25 c -0.18819,0.18817 -0.281253,0.45346 -0.28125,0.71875 l 0,1 1,0 c 0.26529,0 0.530586,-0.0931 0.71875,-0.28125 L 48.21875,769.625 50.5,771.90625 c 0.188164,0.18815 0.453449,0.28124 0.71875,0.28125 l 1,0 0,-1 c -8e-6,-0.2653 -0.09306,-0.53058 -0.28125,-0.71875 l -2.25,-2.25 2.28125,-2.28125 c 0.21566,-0.19935 0.25,-0.46353 0.25,-0.75 l 0,-1 -1,0 c -0.240828,0.007 -0.421875,0.082 -0.6875,0.3125 l -2.3125,2.28125 L 45.9375,764.5 c -0.17763,-0.18392 -0.432549,-0.3013 -0.6875,-0.3125 -0.01046,-4.6e-4 -0.02088,-1.2e-4 -0.03125,0 l -1,0 z"
transform="translate(0,1.3535534)" /><path
sodipodi:nodetypes="ccsccccccccccccccccccccccc"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78124988;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Andale Mono;-inkscape-font-specification:Andale Mono"
id="path27279-0-5"
inkscape:connector-curvature="0"
d="m 44.226475,764.17222 1,0 c 0.01037,-1.2e-4 0.02079,-4.6e-4 0.03125,0 0.254951,0.0112 0.50987,0.12858 0.6875,0.3125 l 2.28125,2.28125 2.3125,-2.28125 c 0.265625,-0.2305 0.446672,-0.3055 0.6875,-0.3125 l 1,0 0,1 c 0,0.28647 -0.03434,0.55065 -0.25,0.75 l -2.28125,2.28125 2.25,2.25 c 0.188188,0.18817 0.281242,0.45345 0.28125,0.71875 l 0,1 -1,0 c -0.265301,-1e-5 -0.530586,-0.0931 -0.71875,-0.28125 l -2.28125,-2.28125 -2.28125,2.28125 c -0.188164,0.18819 -0.45346,0.28125 -0.71875,0.28125 l -1,0 0,-1 c -3e-6,-0.26529 0.09306,-0.53058 0.28125,-0.71875 l 2.28125,-2.25 -2.28125,-2.28125 c -0.210742,-0.19463 -0.30316,-0.46925 -0.28125,-0.75 l 0,-1 z" /></g></g></g></svg>
id="metadata2399"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs2397"><linearGradient
id="linearGradient3173"><stop
style="stop-color:#c4c4c4;stop-opacity:1;"
offset="0"
id="stop3175" /><stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="1"
id="stop3177" /></linearGradient><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 11 : 1"
inkscape:vp_y="0 : 1375 : 0"
inkscape:vp_z="22 : 11 : 1"
inkscape:persp3d-origin="11 : 7.3333334 : 1"
id="perspective2401" /></defs><sodipodi:namedview
inkscape:window-height="1106"
inkscape:window-width="1700"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#797979"
id="base"
showgrid="false"
inkscape:zoom="4"
inkscape:cx="28.483745"
inkscape:cy="67.714004"
inkscape:window-x="1427"
inkscape:window-y="127"
inkscape:current-layer="Foreground"
showguides="true"
inkscape:guide-bbox="true"
borderlayer="true"
inkscape:showpageshadow="false"
inkscape:window-maximized="0"
inkscape:document-rotation="0"><inkscape:grid
type="xygrid"
id="grid11246"
empspacing="32"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" /></sodipodi:namedview><path
d="m 4.4362021,15.860384 c 0,-6.410121 5.1728276,-11.60728 11.5529359,-11.60728 6.380109,0 11.552937,5.197159 11.552937,11.60728 0,6.410122 -5.172828,11.607281 -11.552937,11.607281 -6.3801083,0 -11.5529359,-5.197159 -11.5529359,-11.607281 z"
id="path2394-32"
style="color:#000000;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#2975c4;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
sodipodi:nodetypes="csssc"
inkscape:connector-curvature="0" /><path
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.49900004;fill:#4a90d9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.74932218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
d="m 6.4654832,15.001321 c -0.025906,0.288419 -0.044417,0.579469 -0.044417,0.874662 0,5.313347 4.2883848,9.621271 9.5768588,9.621271 5.288466,0 9.575143,-4.307924 9.575143,-9.621271 0,-0.295193 -0.01852,-0.586243 -0.04441,-0.874662 -0.440376,4.903023 -4.536071,8.746611 -9.53073,8.746611 -4.994659,0 -9.0920617,-3.843588 -9.5324391,-8.746611 z"
id="path2561"
inkscape:connector-curvature="0" /><path
d="m 11.718386,11.639547 h 1.055207 c 0.01091,-1.26e-4 0.02193,-4.86e-4 0.03298,0 0.269026,0.01183 0.538019,0.135679 0.725455,0.329752 l 2.407192,2.407192 2.440166,-2.407192 c 0.28029,-0.243226 0.471333,-0.322366 0.725455,-0.329752 h 1.055207 v 1.055208 c 0,0.302285 -0.03623,0.581049 -0.263801,0.791405 l -2.407191,2.407191 2.374217,2.374216 c 0.198577,0.198559 0.296768,0.478484 0.296775,0.758432 v 1.055206 h -1.055211 c -0.279947,-10e-6 -0.559877,-0.09824 -0.75843,-0.296777 l -2.407192,-2.407192 -2.407192,2.407192 c -0.198551,0.198579 -0.478493,0.296777 -0.758429,0.296777 H 11.71839 v -1.055206 c -3e-6,-0.279936 0.0982,-0.559873 0.296777,-0.758432 L 14.422359,15.893351 12.015167,13.48616 C 11.79279,13.280784 11.69527,12.991003 11.71839,12.694755 Z"
inkscape:connector-curvature="0"
id="path27279-0-5"
style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Andale Mono';-inkscape-font-specification:'Andale Mono';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#4a90d9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.87958801;marker:none;enable-background:new"
sodipodi:nodetypes="ccsccccccccccccccccccccccc" /></svg>

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -647,7 +647,7 @@ StScrollBar {
border: 1px solid #215d9c; }
.tile-preview-left.on-primary {
border-radius: 6px 6px 0 0; }
border-radius: 6px 0 0 0; }
.tile-preview-right.on-primary {
border-radius: 0 6px 0 0; }
@ -657,7 +657,7 @@ StScrollBar {
/* TOP BAR */
#panel {
background-color: rgba(0, 0, 0, 0.2);
background-color: rgba(0, 0, 0, 0.35);
/* transition from solid to transparent */
transition-duration: 500ms;
font-weight: bold;
@ -668,7 +668,7 @@ StScrollBar {
spacing: 4px; }
#panel .panel-corner {
-panel-corner-radius: 6px;
-panel-corner-background-color: rgba(0, 0, 0, 0.2);
-panel-corner-background-color: rgba(0, 0, 0, 0.35);
-panel-corner-border-width: 2px;
-panel-corner-border-color: transparent; }
#panel .panel-corner:active, #panel .panel-corner:overview, #panel .panel-corner:focus {
@ -682,7 +682,7 @@ StScrollBar {
-minimum-hpadding: 6px;
font-weight: bold;
color: #eee;
text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.9);
text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9);
transition-duration: 100ms; }
#panel .panel-button .app-menu-icon {
-st-icon-style: symbolic;
@ -691,14 +691,14 @@ StScrollBar {
#panel .panel-button .system-status-icon,
#panel .panel-button .app-menu-icon > StIcon,
#panel .panel-button .popup-menu-arrow {
icon-shadow: 0px 0px 2px rgba(0, 0, 0, 0.9); }
icon-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9); }
#panel .panel-button:hover {
color: white;
text-shadow: 0px 0px 8px black; }
text-shadow: 0px 1px 6px black; }
#panel .panel-button:hover .system-status-icon,
#panel .panel-button:hover .app-menu-icon > StIcon,
#panel .panel-button:hover .popup-menu-arrow {
icon-shadow: 0px 0px 8px black; }
icon-shadow: 0px 1px 6px black; }
#panel .panel-button:active, #panel .panel-button:overview, #panel .panel-button:focus, #panel .panel-button:checked {
background-color: rgba(0, 0, 0, 0.01);
box-shadow: inset 0 -2px 0px #256ab1;
@ -918,17 +918,17 @@ StScrollBar {
background-color: #0d0d0d; }
.message-icon-bin {
padding: 10px 3px 10px 10px; }
padding: 0.68em 0.2em 0.68em 0.68em; }
.message-icon-bin:rtl {
padding: 10px 10px 10px 3px; }
padding: 0.68em 0.68em 0.68em 0.2em; }
.message-icon-bin > StIcon {
color: #cccccc;
icon-size: 16px;
icon-size: 1.09em;
-st-icon-style: symbolic; }
.message-secondary-bin {
padding: 0 12px; }
padding: 0 0.82em; }
.message-secondary-bin > .event-time {
color: #999999;
@ -938,7 +938,7 @@ StScrollBar {
padding-bottom: 0.13em; }
.message-secondary-bin > StIcon {
icon-size: 16px; }
icon-size: 1.09em; }
.message-title {
color: #f2f2f2; }
@ -1025,12 +1025,12 @@ StScrollBar {
background-image: url("resource:///org/gnome/shell/theme/close-window.svg");
background-size: 32px;
height: 32px;
width: 32px; }
.window-close {
width: 32px;
-shell-close-overlap: 16px; }
.window-close:rtl {
-st-background-image-shadow: 2px 2px 6px rgba(0, 0, 0, 0.5); }
.window-close:hover {
background-image: url("resource:///org/gnome/shell/theme/close-window-hover.svg"); }
.window-close:active {
background-image: url("resource:///org/gnome/shell/theme/close-window-active.svg"); }
/* NETWORK DIALOGS */
.nm-dialog {
@ -1094,13 +1094,11 @@ StScrollBar {
padding-bottom: 32px; }
.window-picker {
-horizontal-spacing: 32px;
-vertical-spacing: 32px;
padding-left: 32px;
padding-right: 32px;
padding-bottom: 48px; }
-horizontal-spacing: 16px;
-vertical-spacing: 16px;
padding: 0 16px 16px; }
.window-picker.external-monitor {
padding: 32px; }
padding: 16px; }
.window-clone-border {
border: 4px solid #215d9c;
@ -1109,14 +1107,10 @@ StScrollBar {
.window-caption {
spacing: 25px;
color: #eeeeec;
background-color: rgba(46, 52, 54, 0.7);
color: #ffffff;
background-color: #215d9c;
border-radius: 8px;
padding: 4px 12px;
-shell-caption-spacing: 12px; }
.window-caption:hover {
background-color: #215d9c;
color: #ffffff; }
padding: 4px 12px; }
.search-entry {
width: 320px;
@ -1216,6 +1210,12 @@ StScrollBar {
.icon-grid .overview-icon {
icon-size: 96px; }
.system-action-icon {
background-color: black;
color: white;
border-radius: 99px;
icon-size: 48px; }
.app-view-controls {
padding-bottom: 32px; }
@ -1339,6 +1339,10 @@ StScrollBar {
border-radius: 9px 0 0 9px; }
.workspace-thumbnails:rtl {
border-radius: 0 9px 9px 0; }
.workspace-thumbnails .placeholder {
background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
background-size: contain;
height: 24px; }
.workspace-thumbnail-indicator {
border: 4px solid #215d9c;
@ -1485,38 +1489,6 @@ StScrollBar {
color: pink; }
/* Eeeky things */
.legacy-tray {
background-color: #000;
border: 1px solid black;
border-bottom-width: 0; }
.legacy-tray:ltr {
border-radius: 0 6px 0 0;
border-left-width: 0; }
.legacy-tray:rtl {
border-radius: 6px 0 0 0;
border-right-width: 0; }
.legacy-tray-handle,
.legacy-tray-icon {
padding: 6px; }
.legacy-tray-handle StIcon,
.legacy-tray-icon StIcon {
icon-size: 24px; }
.legacy-tray-handle:hover, .legacy-tray-handle:focus,
.legacy-tray-icon:hover,
.legacy-tray-icon:focus {
background-color: rgba(255, 255, 255, 0.1); }
.legacy-tray-icon-box {
spacing: 12px; }
.legacy-tray-icon-box:ltr {
padding-left: 12px; }
.legacy-tray-icon-box:rtl {
padding-right: 12px; }
.legacy-tray-icon-box StButton {
width: 24px;
height: 24px; }
.magnifier-zoom-region {
border: 2px solid #215d9c; }
.magnifier-zoom-region.full-screen {

View File

@ -647,7 +647,7 @@ StScrollBar {
border: 1px solid #215d9c; }
.tile-preview-left.on-primary {
border-radius: 6px 6px 0 0; }
border-radius: 6px 0 0 0; }
.tile-preview-right.on-primary {
border-radius: 0 6px 0 0; }
@ -657,7 +657,7 @@ StScrollBar {
/* TOP BAR */
#panel {
background-color: rgba(0, 0, 0, 0.2);
background-color: rgba(0, 0, 0, 0.35);
/* transition from solid to transparent */
transition-duration: 500ms;
font-weight: bold;
@ -668,7 +668,7 @@ StScrollBar {
spacing: 4px; }
#panel .panel-corner {
-panel-corner-radius: 6px;
-panel-corner-background-color: rgba(0, 0, 0, 0.2);
-panel-corner-background-color: rgba(0, 0, 0, 0.35);
-panel-corner-border-width: 2px;
-panel-corner-border-color: transparent; }
#panel .panel-corner:active, #panel .panel-corner:overview, #panel .panel-corner:focus {
@ -682,7 +682,7 @@ StScrollBar {
-minimum-hpadding: 6px;
font-weight: bold;
color: #eee;
text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.9);
text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9);
transition-duration: 100ms; }
#panel .panel-button .app-menu-icon {
-st-icon-style: symbolic;
@ -691,14 +691,14 @@ StScrollBar {
#panel .panel-button .system-status-icon,
#panel .panel-button .app-menu-icon > StIcon,
#panel .panel-button .popup-menu-arrow {
icon-shadow: 0px 0px 2px rgba(0, 0, 0, 0.9); }
icon-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9); }
#panel .panel-button:hover {
color: white;
text-shadow: 0px 0px 8px black; }
text-shadow: 0px 1px 6px black; }
#panel .panel-button:hover .system-status-icon,
#panel .panel-button:hover .app-menu-icon > StIcon,
#panel .panel-button:hover .popup-menu-arrow {
icon-shadow: 0px 0px 8px black; }
icon-shadow: 0px 1px 6px black; }
#panel .panel-button:active, #panel .panel-button:overview, #panel .panel-button:focus, #panel .panel-button:checked {
background-color: rgba(0, 0, 0, 0.01);
box-shadow: inset 0 -2px 0px #256ab1;
@ -918,17 +918,17 @@ StScrollBar {
background-color: #454c4c; }
.message-icon-bin {
padding: 10px 3px 10px 10px; }
padding: 0.68em 0.2em 0.68em 0.68em; }
.message-icon-bin:rtl {
padding: 10px 10px 10px 3px; }
padding: 0.68em 0.68em 0.68em 0.2em; }
.message-icon-bin > StIcon {
color: #bebeb6;
icon-size: 16px;
icon-size: 1.09em;
-st-icon-style: symbolic; }
.message-secondary-bin {
padding: 0 12px; }
padding: 0 0.82em; }
.message-secondary-bin > .event-time {
color: #8e8e80;
@ -938,7 +938,7 @@ StScrollBar {
padding-bottom: 0.13em; }
.message-secondary-bin > StIcon {
icon-size: 16px; }
icon-size: 1.09em; }
.message-title {
color: #e2e2df; }
@ -1025,12 +1025,12 @@ StScrollBar {
background-image: url("resource:///org/gnome/shell/theme/close-window.svg");
background-size: 32px;
height: 32px;
width: 32px; }
.window-close {
width: 32px;
-shell-close-overlap: 16px; }
.window-close:rtl {
-st-background-image-shadow: 2px 2px 6px rgba(0, 0, 0, 0.5); }
.window-close:hover {
background-image: url("resource:///org/gnome/shell/theme/close-window-hover.svg"); }
.window-close:active {
background-image: url("resource:///org/gnome/shell/theme/close-window-active.svg"); }
/* NETWORK DIALOGS */
.nm-dialog {
@ -1094,13 +1094,11 @@ StScrollBar {
padding-bottom: 32px; }
.window-picker {
-horizontal-spacing: 32px;
-vertical-spacing: 32px;
padding-left: 32px;
padding-right: 32px;
padding-bottom: 48px; }
-horizontal-spacing: 16px;
-vertical-spacing: 16px;
padding: 0 16px 16px; }
.window-picker.external-monitor {
padding: 32px; }
padding: 16px; }
.window-clone-border {
border: 4px solid #215d9c;
@ -1109,14 +1107,10 @@ StScrollBar {
.window-caption {
spacing: 25px;
color: #eeeeec;
background-color: rgba(46, 52, 54, 0.7);
color: #ffffff;
background-color: #215d9c;
border-radius: 8px;
padding: 4px 12px;
-shell-caption-spacing: 12px; }
.window-caption:hover {
background-color: #215d9c;
color: #ffffff; }
padding: 4px 12px; }
.search-entry {
width: 320px;
@ -1216,6 +1210,12 @@ StScrollBar {
.icon-grid .overview-icon {
icon-size: 96px; }
.system-action-icon {
background-color: black;
color: white;
border-radius: 99px;
icon-size: 48px; }
.app-view-controls {
padding-bottom: 32px; }
@ -1339,6 +1339,10 @@ StScrollBar {
border-radius: 9px 0 0 9px; }
.workspace-thumbnails:rtl {
border-radius: 0 9px 9px 0; }
.workspace-thumbnails .placeholder {
background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
background-size: contain;
height: 24px; }
.workspace-thumbnail-indicator {
border: 4px solid #215d9c;
@ -1485,38 +1489,6 @@ StScrollBar {
color: pink; }
/* Eeeky things */
.legacy-tray {
background-color: #393f3f;
border: 1px solid #1c1f1f;
border-bottom-width: 0; }
.legacy-tray:ltr {
border-radius: 0 6px 0 0;
border-left-width: 0; }
.legacy-tray:rtl {
border-radius: 6px 0 0 0;
border-right-width: 0; }
.legacy-tray-handle,
.legacy-tray-icon {
padding: 6px; }
.legacy-tray-handle StIcon,
.legacy-tray-icon StIcon {
icon-size: 24px; }
.legacy-tray-handle:hover, .legacy-tray-handle:focus,
.legacy-tray-icon:hover,
.legacy-tray-icon:focus {
background-color: rgba(238, 238, 236, 0.1); }
.legacy-tray-icon-box {
spacing: 12px; }
.legacy-tray-icon-box:ltr {
padding-left: 12px; }
.legacy-tray-icon-box:rtl {
padding-right: 12px; }
.legacy-tray-icon-box StButton {
width: 24px;
height: 24px; }
.magnifier-zoom-region {
border: 2px solid #215d9c; }
.magnifier-zoom-region.full-screen {

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16"
height="16"
viewBox="0 0 4.2333333 4.2333333"
version="1.1"
id="svg8">
<defs
id="defs2" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
style="display:inline"
transform="translate(0,-292.76667)">
<path
style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.17969394"
d="m 3.1749998,294.88333 a 1.0583333,1.0583333 0 0 1 -1.0583332,1.05833 1.0583333,1.0583333 0 0 1 -1.0583333,-1.05833 1.0583333,1.0583333 0 0 1 1.0583333,-1.05833 1.0583333,1.0583333 0 0 1 1.0583332,1.05833 z"
id="path4485" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1,4 +1,4 @@
#!/usr/bin/sh
#!/bin/sh
srcdir=`dirname $0`
stamp=${1}

View File

@ -1 +0,0 @@
SUBDIRS = reference

View File

@ -1 +0,0 @@
SUBDIRS = shell st

View File

@ -1,139 +0,0 @@
## Process this file with automake to produce Makefile.in
# We require automake 1.6 at least.
AUTOMAKE_OPTIONS = 1.6
# This is a blank Makefile.am for using gtk-doc.
# Copy this to your project's API docs directory and modify the variables to
# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
# of using the various options.
# The name of the module, e.g. 'glib'.
DOC_MODULE=shell
# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
#DOC_MODULE_VERSION=2
# The top-level SGML file. You can change this if you want to.
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
# Directories containing the source code
# gtk-doc will search all .c and .h files beneath these paths
# for inline comments documenting functions and macros.
DOC_SOURCE_DIR=$(top_srcdir)/src
# Extra options to pass to gtkdoc-scangobj. Not normally needed.
SCANGOBJ_OPTIONS=
# Extra options to supply to gtkdoc-scan.
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
SCAN_OPTIONS=--rebuild-types
# Extra options to supply to gtkdoc-mkdb.
# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
MKDB_OPTIONS=--xml-mode --output-format=xml
# Extra options to supply to gtkdoc-mktmpl
# e.g. MKTMPL_OPTIONS=--only-section-tmpl
MKTMPL_OPTIONS=
# Extra options to supply to gtkdoc-mkhtml
MKHTML_OPTIONS=
# Extra options to supply to gtkdoc-fixref. Not normally needed.
# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
FIXXREF_OPTIONS=
# Used for dependencies. The docs will be rebuilt if any of these change.
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
HFILE_GLOB=$(top_srcdir)/src/*.h
CFILE_GLOB=$(top_srcdir)/src/*.c
# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
EXTRA_HFILES=
# Header files or dirs to ignore when scanning. Use base file/dir names
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
IGNORE_HFILES= \
calendar-server \
gvc \
hotplug-sniffer \
st \
tray \
gactionmuxer.h \
gactionobservable.h \
gactionobserver.h \
shell-network-agent.h \
shell-recorder-src.h
if !BUILD_RECORDER
IGNORE_HFILES += shell-recorder.h
endif
# Images to copy into HTML directory.
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
HTML_IMAGES=
doc-gen-org.gnome.Shell.SearchProvider.xml: $(top_srcdir)/data/org.gnome.ShellSearchProvider.xml
gdbus-codegen \
--interface-prefix org.gnome.ShellSearchProvider. \
--generate-docbook doc-gen \
$(top_srcdir)/data/org.gnome.ShellSearchProvider.xml
doc-gen-org.gnome.Shell.SearchProvider2.xml: $(top_srcdir)/data/org.gnome.ShellSearchProvider2.xml
gdbus-codegen \
--interface-prefix org.gnome.ShellSearchProvider2. \
--generate-docbook doc-gen \
$(top_srcdir)/data/org.gnome.ShellSearchProvider2.xml
doc-gen-org.gnome.Shell.Screenshot.xml: $(top_srcdir)/data/org.gnome.Shell.Screenshot.xml
gdbus-codegen \
--interface-prefix org.gnome.Shell.Screenshot. \
--generate-docbook doc-gen \
$(top_srcdir)/data/org.gnome.Shell.Screenshot.xml
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
content_files= \
doc-gen-org.gnome.Shell.SearchProvider.xml \
doc-gen-org.gnome.Shell.SearchProvider2.xml \
doc-gen-org.gnome.Shell.Screenshot.xml
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
# These files must be listed here *and* in content_files
# e.g. expand_content_files=running.sgml
expand_content_files=
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
# signals and properties.
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
GTKDOC_CFLAGS=$(GNOME_SHELL_CFLAGS)
GTKDOC_LIBS=$(GNOME_SHELL_LIBS) $(top_builddir)/src/libgnome-shell-menu.la $(top_builddir)/src/libgnome-shell.la -rpath $(MUTTER_TYPELIB_DIR)
# This includes the standard gtk-doc make rules, copied by gtkdocize.
include $(top_srcdir)/gtk-doc.make
# Other files to distribute
# e.g. EXTRA_DIST += version.xml.in
EXTRA_DIST += version.xml.in
# Files not to distribute
# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
DISTCLEANFILES = $(DOC_MODULE).types
# Comment this out if you want 'make check' to test you doc status
# and run some sanity checks
if ENABLE_GTK_DOC
TESTS_ENVIRONMENT = cd $(srcdir) && \
DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
#TESTS = $(GTKDOC_CHECK)
endif
-include $(top_srcdir)/git.mk

View File

@ -1,104 +0,0 @@
## Process this file with automake to produce Makefile.in
# We require automake 1.6 at least.
AUTOMAKE_OPTIONS = 1.6
# This is a blank Makefile.am for using gtk-doc.
# Copy this to your project's API docs directory and modify the variables to
# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
# of using the various options.
# The name of the module, e.g. 'glib'.
DOC_MODULE=st
# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
#DOC_MODULE_VERSION=2
# The top-level SGML file. You can change this if you want to.
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
# Directories containing the source code
# gtk-doc will search all .c and .h files beneath these paths
# for inline comments documenting functions and macros.
DOC_SOURCE_DIR=$(top_srcdir)/src/st
# Extra options to pass to gtkdoc-scangobj. Not normally needed.
SCANGOBJ_OPTIONS=
# Extra options to supply to gtkdoc-scan.
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
SCAN_OPTIONS=--rebuild-types --rebuild-sections
# Extra options to supply to gtkdoc-mkdb.
# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
MKDB_OPTIONS=--xml-mode --output-format=xml
# Extra options to supply to gtkdoc-mktmpl
# e.g. MKTMPL_OPTIONS=--only-section-tmpl
MKTMPL_OPTIONS=
# Extra options to supply to gtkdoc-mkhtml
MKHTML_OPTIONS=
# Extra options to supply to gtkdoc-fixref. Not normally needed.
# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
FIXXREF_OPTIONS=
# Used for dependencies. The docs will be rebuilt if any of these change.
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
HFILE_GLOB=$(top_srcdir)/src/st/*.h
CFILE_GLOB=$(top_srcdir)/src/st/*.c
# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
EXTRA_HFILES=
# Header files or dirs to ignore when scanning. Use base file/dir names
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
IGNORE_HFILES=st-private.h st-theme-node-private.h
# Images to copy into HTML directory.
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
HTML_IMAGES=
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
content_files=
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
# These files must be listed here *and* in content_files
# e.g. expand_content_files=running.sgml
expand_content_files=
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
# signals and properties.
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
GTKDOC_CFLAGS=
GTKDOC_LIBS=$(top_builddir)/src/libst-1.0.la -rpath $(MUTTER_TYPELIB_DIR)
# This includes the standard gtk-doc make rules, copied by gtkdocize.
include $(top_srcdir)/gtk-doc.make
# Other files to distribute
# e.g. EXTRA_DIST += version.xml.in
EXTRA_DIST += version.xml.in
# Files not to distribute
# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
DISTCLEANFILES = $(DOC_MODULE).types $(DOC_MODULE)-sections.txt
# Comment this out if you want 'make check' to test you doc status
# and run some sanity checks
if ENABLE_GTK_DOC
TESTS_ENVIRONMENT = cd $(srcdir) && \
DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
#TESTS = $(GTKDOC_CHECK)
endif
-include $(top_srcdir)/git.mk

View File

@ -1,39 +0,0 @@
NULL =
BUILT_SOURCES =
misc/config.js: misc/config.js.in Makefile
[ -d $(@D) ] || $(mkdir_p) $(@D) ; \
sed -e "s|[@]PACKAGE_NAME@|$(PACKAGE_NAME)|g" \
-e "s|[@]PACKAGE_VERSION@|$(PACKAGE_VERSION)|g" \
-e "s|[@]HAVE_BLUETOOTH@|$(HAVE_BLUETOOTH)|g" \
-e "s|[@]HAVE_NETWORKMANAGER@|$(HAVE_NETWORKMANAGER)|g" \
-e "s|[@]GETTEXT_PACKAGE@|$(GETTEXT_PACKAGE)|g" \
-e "s|[@]datadir@|$(datadir)|g" \
-e "s|[@]libexecdir@|$(libexecdir)|g" \
-e "s|[@]sysconfdir@|$(sysconfdir)|g" \
-e "s|[@]LIBMUTTER_API_VERSION@|$(LIBMUTTER_API_VERSION)|g" \
$< > $@
js_resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --sourcedir=$(builddir) --generate-dependencies $(srcdir)/js-resources.gresource.xml)
js-resources.h: js-resources.gresource.xml $(js_resource_files) misc/config.js
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --sourcedir=$(builddir) --generate --c-name shell_js_resources $<
js-resources.c: js-resources.gresource.xml $(js_resource_files) misc/config.js
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --sourcedir=$(builddir) --generate --c-name shell_js_resources $<
js_built_sources = js-resources.c js-resources.h
BUILT_SOURCES += $(js_built_sources)
all-local: $(js_built_sources)
js_resource_dist_files = $(filter-out misc/config.js, $(js_resource_files))
EXTRA_DIST = \
$(js_resource_dist_files) \
js-resources.gresource.xml \
misc/config.js.in \
$(NULL)
CLEANFILES = \
$(js_built_sources) \
$(NULL)

View File

@ -17,23 +17,23 @@ const ShellEntry = imports.ui.shellEntry;
const SmartcardManager = imports.misc.smartcardManager;
const Tweener = imports.ui.tweener;
const PASSWORD_SERVICE_NAME = 'gdm-password';
const FINGERPRINT_SERVICE_NAME = 'gdm-fingerprint';
const SMARTCARD_SERVICE_NAME = 'gdm-smartcard';
const OVIRT_SERVICE_NAME = 'gdm-ovirtcred';
var PASSWORD_SERVICE_NAME = 'gdm-password';
var FINGERPRINT_SERVICE_NAME = 'gdm-fingerprint';
var SMARTCARD_SERVICE_NAME = 'gdm-smartcard';
var OVIRT_SERVICE_NAME = 'gdm-ovirtcred';
var FADE_ANIMATION_TIME = 0.16;
var CLONE_FADE_ANIMATION_TIME = 0.25;
const LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen';
const PASSWORD_AUTHENTICATION_KEY = 'enable-password-authentication';
const FINGERPRINT_AUTHENTICATION_KEY = 'enable-fingerprint-authentication';
const SMARTCARD_AUTHENTICATION_KEY = 'enable-smartcard-authentication';
const BANNER_MESSAGE_KEY = 'banner-message-enable';
const BANNER_MESSAGE_TEXT_KEY = 'banner-message-text';
const ALLOWED_FAILURES_KEY = 'allowed-failures';
var LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen';
var PASSWORD_AUTHENTICATION_KEY = 'enable-password-authentication';
var FINGERPRINT_AUTHENTICATION_KEY = 'enable-fingerprint-authentication';
var SMARTCARD_AUTHENTICATION_KEY = 'enable-smartcard-authentication';
var BANNER_MESSAGE_KEY = 'banner-message-enable';
var BANNER_MESSAGE_TEXT_KEY = 'banner-message-text';
var ALLOWED_FAILURES_KEY = 'allowed-failures';
const LOGO_KEY = 'logo';
const DISABLE_USER_LIST_KEY = 'disable-user-list';
var LOGO_KEY = 'logo';
var DISABLE_USER_LIST_KEY = 'disable-user-list';
// Give user 48ms to read each character of a PAM message
var USER_READ_TIME = 48

View File

@ -25,6 +25,7 @@
<file>misc/params.js</file>
<file>misc/permissionStore.js</file>
<file>misc/smartcardManager.js</file>
<file>misc/systemActions.js</file>
<file>misc/util.js</file>
<file>misc/weather.js</file>
@ -64,7 +65,6 @@
<file>ui/layout.js</file>
<file>ui/lightbox.js</file>
<file>ui/lookingGlass.js</file>
<file>ui/legacyTray.js</file>
<file>ui/magnifier.js</file>
<file>ui/magnifierDBus.js</file>
<file>ui/main.js</file>
@ -96,6 +96,7 @@
<file>ui/shellMountOperation.js</file>
<file>ui/slider.js</file>
<file>ui/switcherPopup.js</file>
<file>ui/switchMonitor.js</file>
<file>ui/tweener.js</file>
<file>ui/unlockDialog.js</file>
<file>ui/userWidget.js</file>

View File

@ -119,7 +119,13 @@ var LoginManagerSystemd = new Lang.Class({
return;
}
this._proxy.GetSessionRemote(GLib.getenv('XDG_SESSION_ID'), Lang.bind(this,
let sessionId = GLib.getenv('XDG_SESSION_ID');
if (!sessionId) {
log('Unset XDG_SESSION_ID, getCurrentSessionProxy() called outside a user session.');
return;
}
this._proxy.GetSessionRemote(sessionId, Lang.bind(this,
function(result, error) {
if (error) {
logError(error, 'Could not get a proxy for the current session');

440
js/misc/systemActions.js Normal file
View File

@ -0,0 +1,440 @@
const AccountsService = imports.gi.AccountsService;
const Clutter = imports.gi.Clutter;
const Gdm = imports.gi.Gdm;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Lang = imports.lang;
const Meta = imports.gi.Meta;
const GObject = imports.gi.GObject;
const GnomeSession = imports.misc.gnomeSession;
const LoginManager = imports.misc.loginManager;
const Main = imports.ui.main;
const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
const LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen';
const DISABLE_USER_SWITCH_KEY = 'disable-user-switching';
const DISABLE_LOCK_SCREEN_KEY = 'disable-lock-screen';
const DISABLE_LOG_OUT_KEY = 'disable-log-out';
const DISABLE_RESTART_KEY = 'disable-restart-buttons';
const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out';
const SENSOR_BUS_NAME = 'net.hadess.SensorProxy';
const SENSOR_OBJECT_PATH = '/net/hadess/SensorProxy';
const SensorProxyInterface = '<node> \
<interface name="net.hadess.SensorProxy"> \
<property name="HasAccelerometer" type="b" access="read"/> \
</interface> \
</node>';
const POWER_OFF_ACTION_ID = 'power-off';
const LOCK_SCREEN_ACTION_ID = 'lock-screen';
const LOGOUT_ACTION_ID = 'logout';
const SUSPEND_ACTION_ID = 'suspend';
const SWITCH_USER_ACTION_ID = 'switch-user';
const LOCK_ORIENTATION_ACTION_ID = 'lock-orientation';
const SensorProxy = Gio.DBusProxy.makeProxyWrapper(SensorProxyInterface);
let _singleton = null;
function getDefault() {
if (_singleton == null)
_singleton = new SystemActions();
return _singleton;
}
const SystemActions = new Lang.Class({
Name: 'SystemActions',
Extends: GObject.Object,
Properties: {
'can-power-off': GObject.ParamSpec.boolean('can-power-off',
'can-power-off',
'can-power-off',
GObject.ParamFlags.READABLE,
false),
'can-suspend': GObject.ParamSpec.boolean('can-suspend',
'can-suspend',
'can-suspend',
GObject.ParamFlags.READABLE,
false),
'can-lock-screen': GObject.ParamSpec.boolean('can-lock-screen',
'can-lock-screen',
'can-lock-screen',
GObject.ParamFlags.READABLE,
false),
'can-switch-user': GObject.ParamSpec.boolean('can-switch-user',
'can-switch-user',
'can-switch-user',
GObject.ParamFlags.READABLE,
false),
'can-logout': GObject.ParamSpec.boolean('can-logout',
'can-logout',
'can-logout',
GObject.ParamFlags.READABLE,
false),
'can-lock-orientation': GObject.ParamSpec.boolean('can-lock-orientation',
'can-lock-orientation',
'can-lock-orientation',
GObject.ParamFlags.READABLE,
false),
'orientation-lock-icon': GObject.ParamSpec.string('orientation-lock-icon',
'orientation-lock-icon',
'orientation-lock-icon',
GObject.ParamFlags.READWRITE,
null)
},
_init: function() {
this.parent();
this._canHavePowerOff = true;
this._canHaveSuspend = true;
this._actions = new Map();
this._actions.set(POWER_OFF_ACTION_ID,
{ // Translators: The name of the power-off action in search
name: C_("search-result", "Power off"),
iconName: 'system-shutdown-symbolic',
// Translators: A list of keywords that match the power-off action, separated by semicolons
keywords: _("power off;shutdown").split(';'),
available: false });
this._actions.set(LOCK_SCREEN_ACTION_ID,
{ // Translators: The name of the lock screen action in search
name: C_("search-result", "Lock screen"),
iconName: 'system-lock-screen-symbolic',
// Translators: A list of keywords that match the lock screen action, separated by semicolons
keywords: _("lock screen").split(';'),
available: false });
this._actions.set(LOGOUT_ACTION_ID,
{ // Translators: The name of the logout action in search
name: C_("search-result", "Log out"),
iconName: 'application-exit-symbolic',
// Translators: A list of keywords that match the logout action, separated by semicolons
keywords: _("logout;sign off").split(';'),
available: false });
this._actions.set(SUSPEND_ACTION_ID,
{ // Translators: The name of the suspend action in search
name: C_("search-result", "Suspend"),
iconName: 'media-playback-pause-symbolic',
// Translators: A list of keywords that match the suspend action, separated by semicolons
keywords: _("suspend;sleep").split(';'),
available: false });
this._actions.set(SWITCH_USER_ACTION_ID,
{ // Translators: The name of the switch user action in search
name: C_("search-result", "Switch user"),
iconName: 'system-switch-user-symbolic',
// Translators: A list of keywords that match the switch user action, separated by semicolons
keywords: _("switch user").split(';'),
available: false });
this._actions.set(LOCK_ORIENTATION_ACTION_ID,
{ // Translators: The name of the lock orientation action in search
name: C_("search-result", "Lock orientation"),
iconName: '',
// Translators: A list of keywords that match the lock orientation action, separated by semicolons
keywords: _("lock orientation").split(';'),
available: false });
this._loginScreenSettings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA });
this._lockdownSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA });
this._orientationSettings = new Gio.Settings({ schema_id: 'org.gnome.settings-daemon.peripherals.touchscreen' });
this._session = new GnomeSession.SessionManager();
this._loginManager = LoginManager.getLoginManager();
this._monitorManager = Meta.MonitorManager.get();
this._userManager = AccountsService.UserManager.get_default();
this._userManager.connect('notify::is-loaded',
() => { this._updateMultiUser(); });
this._userManager.connect('notify::has-multiple-users',
() => { this._updateMultiUser(); });
this._userManager.connect('user-added',
() => { this._updateMultiUser(); });
this._userManager.connect('user-removed',
() => { this._updateMultiUser(); });
this._lockdownSettings.connect('changed::' + DISABLE_USER_SWITCH_KEY,
() => { this._updateSwitchUser(); });
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
() => { this._updateLogout(); });
global.settings.connect('changed::' + ALWAYS_SHOW_LOG_OUT_KEY,
() => { this._updateLogout(); });
this._lockdownSettings.connect('changed::' + DISABLE_LOCK_SCREEN_KEY,
() => { this._updateLockScreen(); });
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
() => { this._updateHaveShutdown(); });
this.forceUpdate();
this._orientationSettings.connect('changed::orientation-lock',
() => { this._updateOrientationLock();
this._updateOrientationLockIcon(); });
Main.layoutManager.connect('monitors-changed',
() => { this._updateOrientationLock(); });
Gio.DBus.system.watch_name(SENSOR_BUS_NAME,
Gio.BusNameWatcherFlags.NONE,
() => { this._sensorProxyAppeared(); },
() => {
this._sensorProxy = null;
this._updateOrientationLock();
});
this._updateOrientationLock();
this._updateOrientationLockIcon();
Main.sessionMode.connect('updated', () => { this._sessionUpdated(); });
this._sessionUpdated();
},
get can_power_off() {
return this._actions.get(POWER_OFF_ACTION_ID).available;
},
get can_suspend() {
return this._actions.get(SUSPEND_ACTION_ID).available;
},
get can_lock_screen() {
return this._actions.get(LOCK_SCREEN_ACTION_ID).available;
},
get can_switch_user() {
return this._actions.get(SWITCH_USER_ACTION_ID).available;
},
get can_logout() {
return this._actions.get(LOGOUT_ACTION_ID).available;
},
get can_lock_orientation() {
return this._actions.get(LOCK_ORIENTATION_ACTION_ID).available;
},
get orientation_lock_icon() {
return this._actions.get(LOCK_ORIENTATION_ACTION_ID).iconName;
},
_sensorProxyAppeared: function() {
this._sensorProxy = new SensorProxy(Gio.DBus.system, SENSOR_BUS_NAME, SENSOR_OBJECT_PATH,
(proxy, error) => {
if (error) {
log(error.message);
return;
}
this._sensorProxy.connect('g-properties-changed',
() => { this._updateOrientationLock(); });
this._updateOrientationLock();
});
},
_updateOrientationLock: function() {
let available = false;
if (this._sensorProxy)
available = this._sensorProxy.HasAccelerometer &&
this._monitorManager.get_is_builtin_display_on();
this._actions.get(LOCK_ORIENTATION_ACTION_ID).available = available;
this.notify('can-lock-orientation');
},
_updateOrientationLockIcon: function() {
let locked = this._orientationSettings.get_boolean('orientation-lock');
let iconName = locked ? 'rotation-locked-symbolic'
: 'rotation-allowed-symbolic';
this._actions.get(LOCK_ORIENTATION_ACTION_ID).iconName = iconName;
this.notify('orientation-lock-icon');
},
_sessionUpdated: function() {
this._updateLockScreen();
this._updatePowerOff();
this._updateSuspend();
this._updateMultiUser();
},
forceUpdate: function() {
// Whether those actions are available or not depends on both lockdown
// settings and Polkit policy - we don't get change notifications for the
// latter, so their value may be outdated; force an update now
this._updateHaveShutdown();
this._updateHaveSuspend();
},
getMatchingActions: function(terms) {
// terms is a list of strings
terms = terms.map((term) => { return term.toLowerCase(); });
let results = [];
for (let [key, {available, keywords}] of this._actions)
if (available && terms.every(t => keywords.some(k => (k.indexOf(t) >= 0))))
results.push(key);
return results;
},
getName: function(id) {
return this._actions.get(id).name;
},
getIconName: function(id) {
return this._actions.get(id).iconName;
},
activateAction: function(id) {
switch (id) {
case POWER_OFF_ACTION_ID:
this.activatePowerOff();
break;
case LOCK_SCREEN_ACTION_ID:
this.activateLockScreen();
break;
case LOGOUT_ACTION_ID:
this.activateLogout();
break;
case SUSPEND_ACTION_ID:
this.activateSuspend();
break;
case SWITCH_USER_ACTION_ID:
this.activateSwitchUser();
break;
case LOCK_ORIENTATION_ACTION_ID:
this.activateLockOrientation();
break;
}
},
_updateLockScreen() {
let showLock = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY);
this._actions.get(LOCK_SCREEN_ACTION_ID).available = showLock && allowLockScreen && LoginManager.canLock();
this.notify('can-lock-screen');
},
_updateHaveShutdown: function() {
this._session.CanShutdownRemote((result, error) => {
if (error)
return;
this._canHavePowerOff = result[0];
this._updatePowerOff();
});
},
_updatePowerOff: function() {
let disabled = Main.sessionMode.isLocked ||
(Main.sessionMode.isGreeter &&
this._loginScreenSettings.get_boolean(DISABLE_RESTART_KEY));
this._actions.get(POWER_OFF_ACTION_ID).available = this._canHavePowerOff && !disabled;
this.notify('can-power-off');
},
_updateHaveSuspend: function() {
this._loginManager.canSuspend(
(canSuspend, needsAuth) => {
this._canHaveSuspend = canSuspend;
this._suspendNeedsAuth = needsAuth;
this._updateSuspend();
});
},
_updateSuspend: function() {
let disabled = (Main.sessionMode.isLocked &&
this._suspendNeedsAuth) ||
(Main.sessionMode.isGreeter &&
this._loginScreenSettings.get_boolean(DISABLE_RESTART_KEY));
this._actions.get(SUSPEND_ACTION_ID).available = this._canHaveSuspend && !disabled;
this.notify('can-suspend');
},
_updateMultiUser: function() {
this._updateLogout();
this._updateSwitchUser();
},
_updateSwitchUser: function() {
let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY);
let multiUser = this._userManager.can_switch() && this._userManager.has_multiple_users;
let shouldShowInMode = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
let visible = allowSwitch && multiUser && shouldShowInMode;
this._actions.get(SWITCH_USER_ACTION_ID).available = visible;
this.notify('can-switch-user');
return visible;
},
_updateLogout: function() {
let user = this._userManager.get_user(GLib.get_user_name());
let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY);
let alwaysShow = global.settings.get_boolean(ALWAYS_SHOW_LOG_OUT_KEY);
let systemAccount = user.system_account;
let localAccount = user.local_account;
let multiUser = this._userManager.has_multiple_users;
let multiSession = Gdm.get_session_ids().length > 1;
let shouldShowInMode = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
let visible = allowLogout && (alwaysShow || multiUser || multiSession || systemAccount || !localAccount) && shouldShowInMode;
this._actions.get(LOGOUT_ACTION_ID).available = visible;
this.notify('can-logout');
return visible;
},
activateLockOrientation: function() {
if (!this._actions.get(LOCK_ORIENTATION_ACTION_ID).available)
throw new Error('The lock-orientation action is not available!');
let locked = this._orientationSettings.get_boolean('orientation-lock');
this._orientationSettings.set_boolean('orientation-lock', !locked);
},
activateLockScreen: function() {
if (!this._actions.get(LOCK_SCREEN_ACTION_ID).available)
throw new Error('The lock-screen action is not available!');
Main.screenShield.lock(true);
},
activateSwitchUser: function() {
if (!this._actions.get(SWITCH_USER_ACTION_ID).available)
throw new Error('The switch-user action is not available!');
if (Main.screenShield)
Main.screenShield.lock(false);
Clutter.threads_add_repaint_func_full(Clutter.RepaintFlags.POST_PAINT, function() {
Gdm.goto_login_session_sync(null);
return false;
});
},
activateLogout: function() {
if (!this._actions.get(LOGOUT_ACTION_ID).available)
throw new Error('The logout action is not available!');
Main.overview.hide();
this._session.LogoutRemote(0);
},
activatePowerOff: function() {
if (!this._actions.get(POWER_OFF_ACTION_ID).available)
throw new Error('The power-off action is not available!');
this._session.ShutdownRemote(0);
},
activateSuspend: function() {
if (!this._actions.get(SUSPEND_ACTION_ID).available)
throw new Error('The suspend action is not available!');
this._loginManager.suspend();
}
});

View File

@ -158,7 +158,10 @@ var AppSwitcherPopup = new Lang.Class({
_keyPressHandler: function(keysym, action) {
if (action == Meta.KeyBindingAction.SWITCH_GROUP) {
this._select(this._selectedIndex, this._nextWindow());
if (!this._thumbnailsFocused)
this._select(this._selectedIndex, 0);
else
this._select(this._selectedIndex, this._nextWindow());
} else if (action == Meta.KeyBindingAction.SWITCH_GROUP_BACKWARD) {
this._select(this._selectedIndex, this._previousWindow());
} else if (action == Meta.KeyBindingAction.SWITCH_APPLICATIONS) {

View File

@ -24,8 +24,11 @@ const OverviewControls = imports.ui.overviewControls;
const PopupMenu = imports.ui.popupMenu;
const Tweener = imports.ui.tweener;
const Workspace = imports.ui.workspace;
const Search = imports.ui.search;
const System = imports.ui.status.system;
const Params = imports.misc.params;
const Util = imports.misc.util;
const SystemActions = imports.misc.systemActions;
var MAX_APPLICATION_WORK_MILLIS = 75;
var MENU_POPUP_TIMEOUT = 600;
@ -1085,19 +1088,35 @@ var AppSearchProvider = new Lang.Class({
this.id = 'applications';
this.isRemoteProvider = false;
this.canLaunchSearch = false;
this._systemActions = new SystemActions.getDefault();
},
getResultMetas: function(apps, callback) {
let metas = [];
for (let i = 0; i < apps.length; i++) {
let app = this._appSys.lookup_app(apps[i]);
metas.push({ 'id': app.get_id(),
'name': app.get_name(),
'createIcon': function(size) {
return app.create_icon_texture(size);
}
});
for (let id of apps) {
if (id.endsWith('.desktop')) {
let app = this._appSys.lookup_app(id);
metas.push({ 'id': app.get_id(),
'name': app.get_name(),
'createIcon': function(size) {
return app.create_icon_texture(size);
}
});
} else {
let name = this._systemActions.getName(id);
let iconName = this._systemActions.getIconName(id);
let createIcon = size => new St.Icon({ icon_name: iconName,
width: size,
height: size,
style_class: 'system-action-icon' });
metas.push({ id, name, createIcon });
}
}
callback(metas);
},
@ -1119,6 +1138,9 @@ var AppSearchProvider = new Lang.Class({
return usage.compare('', a, b);
}));
});
results = results.concat(this._systemActions.getMatchingActions(terms));
callback(results);
},
@ -1127,8 +1149,10 @@ var AppSearchProvider = new Lang.Class({
},
createResultObject: function (resultMeta) {
let app = this._appSys.lookup_app(resultMeta['id']);
return new AppIcon(app);
if (resultMeta.id.endsWith('.desktop'))
return new AppIcon(this._appSys.lookup_app(resultMeta['id']));
else
return new SystemActionIcon(this, resultMeta);
}
});
@ -1172,13 +1196,9 @@ var FolderView = new Lang.Class({
let numItems = this._allItems.length;
let rtl = icon.get_text_direction() == Clutter.TextDirection.RTL;
for (let i = 0; i < 4; i++) {
let bin;
if (i < numItems) {
let texture = this._allItems[i].app.create_icon_texture(subSize);
bin = new St.Bin({ child: texture });
} else {
bin = new St.Bin({ width: subSize, height: subSize });
}
let bin = new St.Bin({ width: subSize, height: subSize });
if (i < numItems)
bin.child = this._allItems[i].app.create_icon_texture(subSize);
layout.attach(bin, rtl ? (i + 1) % 2 : i % 2, Math.floor(i / 2), 1, 1);
}
@ -1987,3 +2007,13 @@ var AppIconMenu = new Lang.Class({
}
});
Signals.addSignalMethods(AppIconMenu.prototype);
var SystemActionIcon = new Lang.Class({
Name: 'SystemActionIcon',
Extends: Search.GridSearchResult,
activate: function() {
SystemActions.getDefault().activateAction(this.metaInfo['id']);
Main.overview.hide();
}
});

View File

@ -11,6 +11,7 @@ const RENAMED_DESKTOP_IDS = {
'baobab.desktop': 'org.gnome.baobab.desktop',
'cheese.desktop': 'org.gnome.Cheese.desktop',
'dconf-editor.desktop': 'ca.desrt.dconf-editor.desktop',
'empathy.desktop': 'org.gnome.Empathy.desktop',
'epiphany.desktop': 'org.gnome.Epiphany.desktop',
'file-roller.desktop': 'org.gnome.FileRoller.desktop',
'gcalctool.desktop': 'org.gnome.Calculator.desktop',

View File

@ -587,7 +587,10 @@ var BoxPointer = new Lang.Class({
_calculateArrowSide: function(arrowSide) {
let sourceAllocation = Shell.util_get_transformed_allocation(this._sourceActor);
let [minWidth, minHeight, boxWidth, boxHeight] = this._container.get_preferred_size();
let monitor = Main.layoutManager.findMonitorForActor(this.actor);
let monitorActor = this.sourceActor;
if (!monitorActor)
monitorActor = this.actor;
let monitor = Main.layoutManager.findMonitorForActor(monitorActor);
switch (arrowSide) {
case St.Side.TOP:

View File

@ -20,7 +20,7 @@ var MSECS_IN_DAY = 24 * 60 * 60 * 1000;
var SHOW_WEEKDATE_KEY = 'show-weekdate';
var ELLIPSIS_CHAR = '\u2026';
var MESSAGE_ICON_SIZE = 16;
var MESSAGE_ICON_SIZE = -1; // pick up from CSS
// alias to prevent xgettext from picking up strings translated in GTK+
const gtk30_ = Gettext_gtk30.gettext;
@ -428,6 +428,13 @@ var Calendar = new Lang.Class({
this.emit('selected-date-changed', new Date(this._selectedDate));
},
updateTimeZone: function() {
// The calendar need to be rebuilt after a time zone update because
// the date might have changed.
this._rebuildCalendar();
this._update();
},
_buildHeader: function() {
let layout = this.actor.layout_manager;
let offsetCols = this._useWeekdate ? 1 : 0;

View File

@ -255,7 +255,11 @@ var AutorunDispatcher = new Lang.Class({
if (!shouldAutorunMount(mount))
return;
let setting = this._getAutorunSettingForType(contentTypes[0]);
let setting;
if (contentTypes.length > 0)
setting = this._getAutorunSettingForType(contentTypes[0]);
else
setting = AutorunSetting.ASK;
// check at the settings for the first content type
// to see whether we should ask

View File

@ -22,6 +22,7 @@ const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const Calendar = imports.ui.calendar;
const Weather = imports.misc.weather;
const System = imports.system;
function _isToday(date) {
let now = new Date();
@ -233,11 +234,18 @@ var WeatherSection = new Lang.Class({
this._sync();
},
_getSummary: function(info) {
let summary = info.get_conditions();
if (summary == '-')
return info.get_sky();
return summary;
_getSummary: function(info, capitalize=false) {
let options = capitalize ? GWeather.FormatOptions.SENTENCE_CAPITALIZATION
: GWeather.FormatOptions.NO_CAPITALIZATION;
let [ok, phenomenon, qualifier] = info.get_value_conditions();
if (ok)
return new GWeather.Conditions({ significant: true,
phenomenon,
qualifier }).to_string_full(options);
let [, sky] = info.get_value_sky();
return GWeather.Sky.to_string_full(sky, options);
},
_sameSummary: function(info1, info2) {
@ -255,10 +263,10 @@ var WeatherSection = new Lang.Class({
let info = this._weatherClient.info;
let forecasts = info.get_forecast_list();
if (forecasts.length == 0) // No forecasts, just current conditions
return '%s.'.format(this._getSummary(info));
return '%s.'.format(this._getSummary(info, true));
let current = info;
let summaries = [this._getSummary(info)];
let infos = [info];
for (let i = 0; i < forecasts.length; i++) {
let [ok, timestamp] = forecasts[i].get_value_update();
if (!_isToday(new Date(timestamp * 1000)))
@ -268,12 +276,12 @@ var WeatherSection = new Lang.Class({
continue; // Ignore consecutive runs of equal summaries
current = forecasts[i];
if (summaries.push(this._getSummary(current)) == 3)
if (infos.push(current) == 3)
break; // Use a maximum of three summaries
}
let fmt;
switch(summaries.length) {
switch(infos.length) {
/* Translators: %s is a weather condition like "Clear sky"; see
libgweather for the possible condition strings. If at all
possible, the sentence should match the grammatical case etc. of
@ -292,6 +300,10 @@ var WeatherSection = new Lang.Class({
the inserted conditions. */
case 3: fmt = _("%s, then %s, followed by %s later."); break;
}
let summaries = infos.map((info, i) => {
let capitalize = i == 0 && fmt.startsWith('%s');
return this._getSummary(info, capitalize);
});
return String.prototype.format.apply(fmt, summaries);
},
@ -328,8 +340,10 @@ var MessagesIndicator = new Lang.Class({
Name: 'MessagesIndicator',
_init: function() {
this.actor = new St.Label({ text: '⚫', visible: false, y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this.actor = new St.Icon({ icon_name: 'message-indicator-symbolic',
icon_size: 16,
visible: false, y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this._sources = [];
@ -534,6 +548,7 @@ var DateMenuButton = new Lang.Class({
this._clock = new GnomeDesktop.WallClock();
this._clock.bind_property('clock', this._clockDisplay, 'text', GObject.BindingFlags.SYNC_CREATE);
this._clock.connect('notify::timezone', Lang.bind(this, this._updateTimeZone));
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
this._sessionUpdated();
@ -553,6 +568,15 @@ var DateMenuButton = new Lang.Class({
this._eventSource = eventSource;
},
_updateTimeZone: function() {
// SpiderMonkey caches the time zone so we must explicitly clear it
// before we can update the calendar, see
// https://bugzilla.gnome.org/show_bug.cgi?id=678507
System.clearDateCaches();
this._calendar.updateTimeZone();
},
_sessionUpdated: function() {
let eventSource;
let showEvents = Main.sessionMode.showCalendarEvents;

View File

@ -15,6 +15,8 @@ var Dialog = new Lang.Class({
this.parent({ layout_manager: new Clutter.BinLayout() });
this.connect('destroy', Lang.bind(this, this._onDestroy));
this._initialKeyFocus = null;
this._initialKeyFocusDestroyId = 0;
this._pressedKey = null;
this._buttonKeys = {};
this._createDialog();
@ -86,6 +88,22 @@ var Dialog = new Lang.Class({
return Clutter.EVENT_PROPAGATE;
},
_setInitialKeyFocus: function(actor) {
if (this._initialKeyFocus)
this._initialKeyFocus.disconnect(this._initialKeyFocusDestroyId);
this._initialKeyFocus = actor;
this._initialKeyFocusDestroyId = actor.connect('destroy', () => {
this._initialKeyFocus = null;
this._initialKeyFocusDestroyId = 0;
});
},
get initialKeyFocus() {
return this._initialKeyFocus || this;
},
addContent: function (actor) {
this.contentLayout.add (actor, { expand: true });
},
@ -116,8 +134,8 @@ var Dialog = new Lang.Class({
if (isDefault)
button.add_style_pseudo_class('default');
if (!this._initialKeyFocusDestroyId)
this._initialKeyFocus = button;
if (this._initialKeyFocus == null || isDefault)
this._setInitialKeyFocus(button);
for (let i in keys)
this._buttonKeys[keys[i]] = buttonInfo;

View File

@ -38,10 +38,10 @@ var DragDropResult = {
SUCCESS: 1,
CONTINUE: 2
};
var dragMonitors = [];
let eventHandlerActor = null;
let currentDraggable = null;
let dragMonitors = [];
function _getEventHandlerActor() {
if (!eventHandlerActor) {
@ -94,6 +94,7 @@ var _Draggable = new Lang.Class({
this.disconnectAll();
}));
this._onEventId = null;
this._touchSequence = null;
this._restoreOnSuccess = params.restoreOnSuccess;
this._dragActorMaxSize = params.dragActorMaxSize;
@ -530,7 +531,7 @@ var _Draggable = new Lang.Class({
// Snap the clone back to its source
[x, y] = this._dragActorSource.get_transformed_position();
let [sourceScaledWidth, sourceScaledHeight] = this._dragActorSource.get_transformed_size();
scale = this._dragActor.width / sourceScaledWidth;
scale = sourceScaledWidth ? this._dragActor.width / sourceScaledWidth : 0;
} else if (this._dragOrigParent) {
// Snap the actor back to its original position within
// its parent, adjusting for the fact that the parent

View File

@ -12,6 +12,8 @@ const ModalDialog = imports.ui.modalDialog;
const WAYLAND_KEYBINDINGS_SCHEMA = 'org.gnome.mutter.wayland.keybindings';
const APP_WHITELIST = ['gnome-control-center.desktop'];
var DialogResponse = Meta.InhibitShortcutsDialogResponse;
var InhibitShortcutsDialog = new Lang.Class({
@ -38,6 +40,11 @@ var InhibitShortcutsDialog = new Lang.Class({
this._window = window;
},
get _app() {
let windowTracker = Shell.WindowTracker.get_default();
return windowTracker.get_window_app(this._window);
},
_getRestoreAccel: function() {
let settings = new Gio.Settings({ schema_id: WAYLAND_KEYBINDINGS_SCHEMA });
let accel = settings.get_strv('restore-shortcuts')[0] || '';
@ -46,9 +53,7 @@ var InhibitShortcutsDialog = new Lang.Class({
},
_buildLayout: function() {
let windowTracker = Shell.WindowTracker.get_default();
let app = windowTracker.get_window_app(this._window);
let name = app ? app.get_name() : this._window.title;
let name = this._app ? this._app.get_name() : this._window.title;
/* Translators: %s is an application name like "Settings" */
let title = name ? _("%s wants to inhibit shortcuts").format(name)
@ -57,10 +62,10 @@ var InhibitShortcutsDialog = new Lang.Class({
let contentParams = { icon, title };
/* Translators: %s is a keyboard shortcut like "Super+x" */
let restoreAccel = this._getRestoreAccel();
if (restoreAccel)
contentParams.subtitle =
/* Translators: %s is a keyboard shortcut like "Super+x" */
_("You can restore shortcuts by pressing %s.").format(restoreAccel);
let content = new Dialog.MessageDialogContent(contentParams);
@ -85,7 +90,10 @@ var InhibitShortcutsDialog = new Lang.Class({
},
vfunc_show: function() {
this._dialog.open();
if (this._app && APP_WHITELIST.indexOf(this._app.get_id()) != -1)
this._emitResponse(DialogResponse.ALLOW);
else
this._dialog.open();
},
vfunc_hide: function() {

View File

@ -129,6 +129,9 @@ var MonitorConstraint = new Lang.Class({
if (!this._primary && this._index < 0)
return;
if (!Main.layoutManager.primaryMonitor)
return;
let index;
if (this._primary)
index = Main.layoutManager.primaryIndex;
@ -189,6 +192,7 @@ var LayoutManager = new Lang.Class({
this._topActors = [];
this._isPopupWindowVisible = false;
this._startingUp = true;
this._pendingLoadBackground = false;
// We don't want to paint the stage background color because either
// the SystemBackground we create or the MetaBackgroundActor inside
@ -323,7 +327,9 @@ var LayoutManager = new Lang.Class({
for (let i = 0; i < nMonitors; i++)
this.monitors.push(new Monitor(i, screen.get_monitor_geometry(i)));
if (nMonitors == 1) {
if (nMonitors == 0) {
this.primaryIndex = this.bottomIndex = -1;
} else if (nMonitors == 1) {
this.primaryIndex = this.bottomIndex = 0;
} else {
// If there are monitors below the primary, then we need
@ -337,8 +343,18 @@ var LayoutManager = new Lang.Class({
}
}
}
this.primaryMonitor = this.monitors[this.primaryIndex];
this.bottomMonitor = this.monitors[this.bottomIndex];
if (this.primaryIndex != -1) {
this.primaryMonitor = this.monitors[this.primaryIndex];
this.bottomMonitor = this.monitors[this.bottomIndex];
if (this._pendingLoadBackground) {
this._loadBackground();
this._pendingLoadBackground = false;
}
} else {
this.primaryMonitor = null;
this.bottomMonitor = null;
}
},
_updateHotCorners: function() {
@ -458,6 +474,9 @@ var LayoutManager = new Lang.Class({
this.screenShieldGroup.set_position(0, 0);
this.screenShieldGroup.set_size(global.screen_width, global.screen_height);
if (!this.primaryMonitor)
return;
this.panelBox.set_position(this.primaryMonitor.x, this.primaryMonitor.y);
this.panelBox.set_size(this.primaryMonitor.width, -1);
@ -480,6 +499,9 @@ var LayoutManager = new Lang.Class({
this._rightPanelBarrier = null;
}
if (!this.primaryMonitor)
return;
if (this.panelBox.height) {
let primary = this.primaryMonitor;
@ -549,6 +571,10 @@ var LayoutManager = new Lang.Class({
},
_loadBackground: function() {
if (!this.primaryMonitor) {
this._pendingLoadBackground = true;
return;
}
this._systemBackground = new Background.SystemBackground();
this._systemBackground.actor.hide();
@ -684,8 +710,10 @@ var LayoutManager = new Lang.Class({
},
showKeyboard: function () {
this.keyboardBox.show();
Tweener.addTween(this.keyboardBox,
{ anchor_y: this.keyboardBox.height,
opacity: 255,
time: KEYBOARD_ANIMATION_TIME,
transition: 'easeOutQuad',
onComplete: this._showKeyboardComplete,
@ -711,6 +739,7 @@ var LayoutManager = new Lang.Class({
}
Tweener.addTween(this.keyboardBox,
{ anchor_y: 0,
opacity: 0,
time: immediate ? 0 : KEYBOARD_ANIMATION_TIME,
transition: 'easeInQuad',
onComplete: this._hideKeyboardComplete,
@ -721,6 +750,7 @@ var LayoutManager = new Lang.Class({
},
_hideKeyboardComplete: function() {
this.keyboardBox.hide();
this._updateRegions();
},

View File

@ -1,272 +0,0 @@
const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib;
const GObject = imports.gi.GObject;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
const CtrlAltTab = imports.ui.ctrlAltTab;
const Lang = imports.lang;
const Layout = imports.ui.layout;
const Main = imports.ui.main;
const Overview = imports.ui.overview;
const OverviewControls = imports.ui.overviewControls;
const Tweener = imports.ui.tweener;
var STANDARD_TRAY_ICON_IMPLEMENTATIONS = {
'bluetooth-applet': 'bluetooth',
'gnome-volume-control-applet': 'volume', // renamed to gnome-sound-applet
// when moved to control center
'gnome-sound-applet': 'volume',
'nm-applet': 'network',
'gnome-power-manager': 'battery',
'keyboard': 'keyboard',
'a11y-keyboard': 'a11y',
'kbd-scrolllock': 'keyboard',
'kbd-numlock': 'keyboard',
'kbd-capslock': 'keyboard',
'ibus-ui-gtk': 'keyboard'
};
// Offset of the original position from the bottom-right corner
var CONCEALED_WIDTH = 3;
var REVEAL_ANIMATION_TIME = 0.2;
var TEMP_REVEAL_TIME = 2;
var BARRIER_THRESHOLD = 70;
var BARRIER_TIMEOUT = 1000;
var LegacyTray = new Lang.Class({
Name: 'LegacyTray',
_init: function() {
this.actor = new St.Widget({ clip_to_allocation: true,
layout_manager: new Clutter.BinLayout() });
let constraint = new Layout.MonitorConstraint({ primary: true,
work_area: true });
this.actor.add_constraint(constraint);
this._slideLayout = new OverviewControls.SlideLayout();
this._slideLayout.translationX = 0;
this._slideLayout.slideDirection = OverviewControls.SlideDirection.LEFT;
this._slider = new St.Widget({ x_expand: true, y_expand: true,
x_align: Clutter.ActorAlign.START,
y_align: Clutter.ActorAlign.END,
layout_manager: this._slideLayout });
this.actor.add_actor(this._slider);
this._slider.connect('notify::allocation', Lang.bind(this, this._syncBarrier));
this._box = new St.BoxLayout({ style_class: 'legacy-tray' });
this._slider.add_actor(this._box);
this._concealHandle = new St.Button({ style_class: 'legacy-tray-handle',
/* translators: 'Hide' is a verb */
accessible_name: _("Hide tray"),
can_focus: true });
this._concealHandle.child = new St.Icon({ icon_name: 'go-previous-symbolic' });
this._box.add_child(this._concealHandle);
this._iconBox = new St.BoxLayout({ style_class: 'legacy-tray-icon-box' });
this._box.add_actor(this._iconBox);
this._revealHandle = new St.Button({ style_class: 'legacy-tray-handle' });
this._revealHandle.child = new St.Icon({ icon_name: 'go-next-symbolic' });
this._box.add_child(this._revealHandle);
this._revealHandle.bind_property('visible',
this._concealHandle, 'visible',
GObject.BindingFlags.BIDIRECTIONAL |
GObject.BindingFlags.INVERT_BOOLEAN);
this._revealHandle.connect('notify::visible',
Lang.bind(this, this._sync));
this._revealHandle.connect('notify::hover',
Lang.bind(this ,this._sync));
this._revealHandle.connect('clicked', Lang.bind(this,
function() {
this._concealHandle.show();
}));
this._concealHandle.connect('clicked', Lang.bind(this,
function() {
this._revealHandle.show();
}));
this._horizontalBarrier = null;
this._pressureBarrier = new Layout.PressureBarrier(BARRIER_THRESHOLD,
BARRIER_TIMEOUT,
Shell.ActionMode.NORMAL);
this._pressureBarrier.connect('trigger', Lang.bind(this, function() {
this._concealHandle.show();
}));
Main.layoutManager.addChrome(this.actor, { affectsInputRegion: false });
Main.layoutManager.trackChrome(this._slider, { affectsInputRegion: true });
Main.uiGroup.set_child_below_sibling(this.actor, Main.layoutManager.modalDialogGroup);
Main.ctrlAltTabManager.addGroup(this.actor,
_("Status Icons"), 'focus-legacy-systray-symbolic',
{ sortGroup: CtrlAltTab.SortGroup.BOTTOM });
this._trayManager = new Shell.TrayManager();
this._trayIconAddedId = this._trayManager.connect('tray-icon-added', Lang.bind(this, this._onTrayIconAdded));
this._trayIconRemovedId = this._trayManager.connect('tray-icon-removed', Lang.bind(this, this._onTrayIconRemoved));
this._trayManager.manage_screen(global.screen, this.actor);
Main.overview.connect('showing', Lang.bind(this,
function() {
Tweener.removeTweens(this._slider);
Tweener.addTween(this._slider, { opacity: 0,
time: Overview.ANIMATION_TIME,
transition: 'easeOutQuad' });
}));
Main.overview.connect('shown', Lang.bind(this, this._sync));
Main.overview.connect('hiding', Lang.bind(this,
function() {
this._sync();
Tweener.removeTweens(this._slider);
Tweener.addTween(this._slider, { opacity: 255,
time: Overview.ANIMATION_TIME,
transition: 'easeOutQuad' });
}));
Main.layoutManager.connect('monitors-changed',
Lang.bind(this, this._sync));
global.screen.connect('in-fullscreen-changed',
Lang.bind(this, this._sync));
Main.sessionMode.connect('updated', Lang.bind(this, this._sync));
this._sync();
},
_onTrayIconAdded: function(tm, icon) {
let wmClass = icon.wm_class ? icon.wm_class.toLowerCase() : '';
if (STANDARD_TRAY_ICON_IMPLEMENTATIONS[wmClass] !== undefined)
return;
let button = new St.Button({ child: icon,
style_class: 'legacy-tray-icon',
button_mask: St.ButtonMask.ONE |
St.ButtonMask.TWO |
St.ButtonMask.THREE,
can_focus: true,
x_fill: true, y_fill: true });
let app = Shell.WindowTracker.get_default().get_app_from_pid(icon.pid);
if (!app)
app = Shell.AppSystem.get_default().lookup_startup_wmclass(wmClass);
if (!app)
app = Shell.AppSystem.get_default().lookup_desktop_wmclass(wmClass);
if (app)
button.accessible_name = app.get_name();
else
button.accessible_name = icon.title;
button.connect('clicked',
function() {
icon.click(Clutter.get_current_event());
});
button.connect('key-press-event',
function() {
icon.click(Clutter.get_current_event());
return Clutter.EVENT_PROPAGATE;
});
button.connect('key-focus-in', Lang.bind(this,
function() {
this._concealHandle.show();
}));
this._iconBox.add_actor(button);
if (!this._concealHandle.visible) {
this._concealHandle.show();
GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, TEMP_REVEAL_TIME,
Lang.bind(this, function() {
this._concealHandle.hide();
return GLib.SOURCE_REMOVE;
}));
}
},
_onTrayIconRemoved: function(tm, icon) {
if (!this.actor.contains(icon))
return;
icon.get_parent().destroy();
this._sync();
},
_syncBarrier: function() {
let rtl = (this._slider.get_text_direction() == Clutter.TextDirection.RTL);
let [x, y] = this._slider.get_transformed_position();
let [w, h] = this._slider.get_transformed_size();
let x1 = Math.round(x);
if (rtl)
x1 += Math.round(w);
let x2 = x1;
let y1 = Math.round(y);
let y2 = y1 + Math.round(h);
if (this._horizontalBarrier &&
this._horizontalBarrier.x1 == x1 &&
this._horizontalBarrier.y1 == y1 &&
this._horizontalBarrier.x2 == x2 &&
this._horizontalBarrier.y2 == y2)
return;
this._unsetBarrier();
let directions = (rtl ? Meta.BarrierDirection.NEGATIVE_X : Meta.BarrierDirection.POSITIVE_X);
this._horizontalBarrier = new Meta.Barrier({ display: global.display,
x1: x1, x2: x2,
y1: y1, y2: y2,
directions: directions });
this._pressureBarrier.addBarrier(this._horizontalBarrier);
},
_unsetBarrier: function() {
if (this._horizontalBarrier == null)
return;
this._pressureBarrier.removeBarrier(this._horizontalBarrier);
this._horizontalBarrier.destroy();
this._horizontalBarrier = null;
},
_sync: function() {
// FIXME: we no longer treat tray icons as notifications
let allowed = Main.sessionMode.hasNotifications;
let hasIcons = this._iconBox.get_n_children() > 0;
let inOverview = Main.overview.visible && !Main.overview.animationInProgress;
let inFullscreen = Main.layoutManager.primaryMonitor.inFullscreen;
this.actor.visible = allowed && hasIcons && !inOverview && !inFullscreen;
if (!hasIcons)
this._concealHandle.hide();
let targetSlide;
if (this._concealHandle.visible) {
targetSlide = 1.0;
} else if (!hasIcons) {
targetSlide = 0.0;
} else {
let [, boxWidth] = this._box.get_preferred_width(-1);
let [, handleWidth] = this._revealHandle.get_preferred_width(-1);
if (this._revealHandle.hover)
targetSlide = handleWidth / boxWidth;
else
targetSlide = CONCEALED_WIDTH / boxWidth;
}
if (this.actor.visible) {
Tweener.addTween(this._slideLayout,
{ slideX: targetSlide,
time: REVEAL_ANIMATION_TIME,
transition: 'easeOutQuad' });
} else {
this._slideLayout.slideX = targetSlide;
this._unsetBarrier();
}
}
});

View File

@ -20,7 +20,6 @@ const Environment = imports.ui.environment;
const ExtensionSystem = imports.ui.extensionSystem;
const ExtensionDownloader = imports.ui.extensionDownloader;
const Keyboard = imports.ui.keyboard;
const LegacyTray = imports.ui.legacyTray;
const MessageTray = imports.ui.messageTray;
const ModalDialog = imports.ui.modalDialog;
const OsdWindow = imports.ui.osdWindow;
@ -56,7 +55,6 @@ var overview = null;
var runDialog = null;
var lookingGlass = null;
var wm = null;
var legacyTray = null;
var messageTray = null;
var screenShield = null;
var notificationDaemon = null;
@ -124,6 +122,7 @@ function start() {
sessionMode.connect('updated', _sessionUpdated);
Gtk.Settings.get_default().connect('notify::gtk-theme-name',
_loadDefaultStylesheet);
Gtk.IconTheme.get_default().add_resource_path('/org/gnome/shell/theme/icons');
_initializeUI();
shellAccessDialogDBusService = new AccessDialog.AccessDialogDBus();
@ -169,7 +168,6 @@ function _initializeUI() {
if (LoginManager.canLock())
screenShield = new ScreenShield.ScreenShield();
legacyTray = new LegacyTray.LegacyTray();
messageTray = new MessageTray.MessageTray();
panel = new Panel.Panel();
keyboard = new Keyboard.Keyboard();

View File

@ -1205,8 +1205,9 @@ var MessageTray = new Lang.Class({
// _updateState() figures out what (if anything) needs to be done
// at the present time.
_updateState: function() {
this.actor.visible = !this._bannerBlocked && this._banner != null;
if (this._bannerBlocked)
let hasMonitor = Main.layoutManager.primaryMonitor != null;
this.actor.visible = !this._bannerBlocked && hasMonitor && this._banner != null;
if (this._bannerBlocked || !hasMonitor)
return;
// If our state changes caused _updateState to be called,

View File

@ -84,7 +84,7 @@ var ModalDialog = new Lang.Class({
}
global.focus_manager.add_group(this.dialogLayout);
this._initialKeyFocus = this.dialogLayout;
this._initialKeyFocus = null;
this._initialKeyFocusDestroyId = 0;
this._savedKeyFocus = null;
},
@ -157,7 +157,7 @@ var ModalDialog = new Lang.Class({
this._initialKeyFocus = actor;
this._initialKeyFocusDestroyId = actor.connect('destroy', Lang.bind(this, function() {
this._initialKeyFocus = this.dialogLayout;
this._initialKeyFocus = null;
this._initialKeyFocusDestroyId = 0;
}));
},
@ -237,7 +237,8 @@ var ModalDialog = new Lang.Class({
this._savedKeyFocus.grab_key_focus();
this._savedKeyFocus = null;
} else {
this._initialKeyFocus.grab_key_focus();
let focus = this._initialKeyFocus || this.dialogLayout.initialKeyFocus;
focus.grab_key_focus();
}
if (!this._shellReactive)

View File

@ -670,7 +670,7 @@ const FdoApplicationIface = '<node> \
const FdoApplicationProxy = Gio.DBusProxy.makeProxyWrapper(FdoApplicationIface);
function objectPathFromAppId(appId) {
return '/' + appId.replace(/\./g, '/');
return '/' + appId.replace(/\./g, '/').replace(/-/g, '_');
}
function getPlatformData() {
@ -687,6 +687,8 @@ var GtkNotificationDaemonAppSource = new Lang.Class({
_init: function(appId) {
this._appId = appId;
this._objectPath = objectPathFromAppId(appId);
if (!GLib.Variant.is_object_path(this._objectPath))
throw new InvalidAppError();
this._app = Shell.AppSystem.get_default().lookup_app(appId + '.desktop');
if (!this._app)

View File

@ -392,6 +392,9 @@ var Overview = new Lang.Class({
// when it is next shown.
this.hide();
if (!Main.layoutManager.primaryMonitor)
return;
let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
this._coverPane.set_position(0, workArea.y);

View File

@ -254,18 +254,12 @@ var ThumbnailsSlider = new Lang.Class({
Main.layoutManager.connect('monitors-changed', Lang.bind(this, this._updateSlide));
this.actor.connect('notify::hover', Lang.bind(this, this._updateSlide));
global.window_manager.connect('switch-workspace', Lang.bind(this, this._updateSlide));
this._thumbnailsBox.actor.bind_property('visible', this.actor, 'visible', GObject.BindingFlags.SYNC_CREATE);
},
_getAlwaysZoomOut: function() {
// Always show the pager when hover, during a drag, or if workspaces are
// actually used, e.g. there are windows on any non-active workspace
let alwaysZoomOut = this.actor.hover ||
this._inDrag ||
!Meta.prefs_get_dynamic_workspaces() ||
global.screen.n_workspaces > 2 ||
global.screen.get_active_workspace_index() != 0;
// Always show the pager on hover or during a drag
let alwaysZoomOut = this.actor.hover || this._inDrag;
if (!alwaysZoomOut) {
let monitors = Main.layoutManager.monitors;

View File

@ -513,7 +513,7 @@ var PadDiagram = new Lang.Class({
},
getRingLabelCoords: function (number, dir) {
let numStr = number > 0 ? number.toString() : '';
let numStr = number > 0 ? (number + 1).toString() : '';
let dirStr = dir == CW ? 'CW' : 'CCW';
let labelName = 'LabelRing' + numStr + dirStr;
let leaderName = 'LeaderRing' + numStr + dirStr;

View File

@ -839,8 +839,14 @@ var Panel = new Lang.Class({
},
_getPreferredWidth: function(actor, forHeight, alloc) {
let primaryMonitor = Main.layoutManager.primaryMonitor;
alloc.min_size = -1;
alloc.natural_size = Main.layoutManager.primaryMonitor.width;
if (primaryMonitor)
alloc.natural_size = primaryMonitor.width;
else
alloc.natural_size = -1;
},
_getPreferredHeight: function(actor, forWidth, alloc) {
@ -859,15 +865,16 @@ var Panel = new Lang.Class({
let sideWidth, centerWidth;
centerWidth = centerNaturalWidth;
sideWidth = (allocWidth - centerWidth) / 2;
sideWidth = Math.max(0, (allocWidth - centerWidth) / 2);
let childBox = new Clutter.ActorBox();
childBox.y1 = 0;
childBox.y2 = allocHeight;
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
childBox.x1 = allocWidth - Math.min(Math.floor(sideWidth),
leftNaturalWidth);
childBox.x1 = Math.max(allocWidth - Math.min(Math.floor(sideWidth),
leftNaturalWidth),
0);
childBox.x2 = allocWidth;
} else {
childBox.x1 = 0;
@ -889,8 +896,9 @@ var Panel = new Lang.Class({
childBox.x2 = Math.min(Math.floor(sideWidth),
rightNaturalWidth);
} else {
childBox.x1 = allocWidth - Math.min(Math.floor(sideWidth),
rightNaturalWidth);
childBox.x1 = Math.max(allocWidth - Math.min(Math.floor(sideWidth),
rightNaturalWidth),
0);
childBox.x2 = allocWidth;
}
this._rightBox.allocate(childBox, flags);
@ -1044,6 +1052,9 @@ var Panel = new Lang.Class({
return;
}
if (!Main.layoutManager.primaryMonitor)
return;
/* Get all the windows in the active workspace that are in the primary monitor and visible */
let activeWorkspace = global.screen.get_active_workspace();
let windows = activeWorkspace.list_windows().filter(function(metaWindow) {
@ -1073,8 +1084,6 @@ var Panel = new Lang.Class({
let indicator = this.statusArea[role];
if (!indicator)
continue;
if (indicator.menu)
indicator.menu.close();
indicator.container.hide();
}
},

View File

@ -405,7 +405,7 @@ var PopupImageMenuItem = new Lang.Class({
setIcon: function(icon) {
// The 'icon' parameter can be either a Gio.Icon or a string.
if (GObject.type_is_a(icon, Gio.Icon))
if (icon instanceof GObject.Object && GObject.type_is_a(icon, Gio.Icon))
this._icon.gicon = icon;
else
this._icon.icon_name = icon;
@ -465,6 +465,7 @@ var PopupMenuBase = new Lang.Class({
_sessionUpdated: function() {
this._setSettingsVisibility(Main.sessionMode.allowSettings);
this.close();
},
addAction: function(title, callback, icon) {

View File

@ -98,6 +98,13 @@ function loadRemoteSearchProviders(searchSettings, callback) {
return;
}
let autoStart = true;
try {
autoStart = keyfile.get_boolean(group, 'AutoStart');
} catch(e) {
// ignore error
}
let version = '1';
try {
version = keyfile.get_string(group, 'Version');
@ -106,9 +113,9 @@ function loadRemoteSearchProviders(searchSettings, callback) {
}
if (version >= 2)
remoteProvider = new RemoteSearchProvider2(appInfo, busName, objectPath);
remoteProvider = new RemoteSearchProvider2(appInfo, busName, objectPath, autoStart);
else
remoteProvider = new RemoteSearchProvider(appInfo, busName, objectPath);
remoteProvider = new RemoteSearchProvider(appInfo, busName, objectPath, autoStart);
remoteProvider.defaultEnabled = true;
try {
@ -184,17 +191,22 @@ function loadRemoteSearchProviders(searchSettings, callback) {
var RemoteSearchProvider = new Lang.Class({
Name: 'RemoteSearchProvider',
_init: function(appInfo, dbusName, dbusPath, proxyInfo) {
_init: function(appInfo, dbusName, dbusPath, autoStart, proxyInfo) {
if (!proxyInfo)
proxyInfo = SearchProviderProxyInfo;
let g_flags = Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES;
if (autoStart)
g_flags |= Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION;
else
g_flags |= Gio.DBusProxyFlags.DO_NOT_AUTO_START;
this.proxy = new Gio.DBusProxy({ g_bus_type: Gio.BusType.SESSION,
g_name: dbusName,
g_object_path: dbusPath,
g_interface_info: proxyInfo,
g_interface_name: proxyInfo.name,
g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION |
Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) });
g_flags });
this.proxy.init_async(GLib.PRIORITY_DEFAULT, null, null);
this.appInfo = appInfo;
@ -307,8 +319,8 @@ var RemoteSearchProvider2 = new Lang.Class({
Name: 'RemoteSearchProvider2',
Extends: RemoteSearchProvider,
_init: function(appInfo, dbusName, dbusPath) {
this.parent(appInfo, dbusName, dbusPath, SearchProvider2ProxyInfo);
_init: function(appInfo, dbusName, dbusPath, autoStart) {
this.parent(appInfo, dbusName, dbusPath, autoStart, SearchProvider2ProxyInfo);
this.canLaunchSearch = true;
},

View File

@ -681,6 +681,15 @@ var SearchResults = new Lang.Class({
this._setSelected(this._defaultResult, highlight);
},
popupMenuDefault: function() {
// If we have a search queued up, force the search now.
if (this._searchTimeoutId > 0)
this._doSearch();
if (this._defaultResult)
this._defaultResult.actor.popup_menu();
},
navigateFocus: function(direction) {
let rtl = this.actor.get_text_direction() == Clutter.TextDirection.RTL;
if (direction == Gtk.DirectionType.TAB_BACKWARD ||
@ -765,7 +774,7 @@ var ProviderInfo = new Lang.Class({
},
setMoreCount: function(count) {
this._moreLabel.text = _("%d more").format(count);
this._moreLabel.text = ngettext("%d more", "%d more", count).format(count);
this._moreLabel.visible = count > 0;
}
});

View File

@ -843,7 +843,7 @@ var InputSourceIndicator = new Lang.Class({
this._indicatorLabels[i] = indicatorLabel;
is.connect('changed', function() {
menuItem.indicator.set_text(is.shortName);
indicatorLabel.set_text(is.shorName);
indicatorLabel.set_text(is.shortName);
});
this.menu.addMenuItem(menuItem, menuIndex++);

View File

@ -115,17 +115,6 @@ function ensureActiveConnectionProps(active, settings) {
}
}
function createSettingsAction(label, device) {
let item = new PopupMenu.PopupMenuItem(label);
item.connect('activate', function() {
Util.spawnApp(['gnome-control-center', 'network', 'show-device',
device.get_path()]);
});
return item;
}
var NMConnectionItem = new Lang.Class({
Name: 'NMConnectionItem',
@ -514,7 +503,7 @@ var NMDeviceWired = new Lang.Class({
_init: function(client, device, settings) {
this.parent(client, device, settings);
this.item.menu.addMenuItem(createSettingsAction(_("Wired Settings"), device));
this.item.menu.addSettingsAction(_("Wired Settings"), 'gnome-network-panel.desktop');
},
_hasCarrier: function() {
@ -556,7 +545,7 @@ var NMDeviceModem = new Lang.Class({
_init: function(client, device, settings) {
this.parent(client, device, settings);
this.item.menu.addMenuItem(createSettingsAction(_("Mobile Broadband Settings"), device));
this.item.menu.addSettingsAction(_("Mobile Broadband Settings"), 'gnome-network-panel.desktop');
this._mobileDevice = null;
@ -635,7 +624,7 @@ var NMDeviceBluetooth = new Lang.Class({
_init: function(client, device, settings) {
this.parent(client, device, settings);
this.item.menu.addMenuItem(createSettingsAction(_("Bluetooth Settings"), device));
this.item.menu.addSettingsAction(_("Bluetooth Settings"), 'gnome-network-panel.desktop');
},
_getDescription: function() {
@ -962,7 +951,7 @@ var NMWirelessDialog = new Lang.Class({
|| (accessPoints[0]._secType == NMAccessPointSecurity.WPA_ENT)) {
// 802.1x-enabled APs require further configuration, so they're
// handled in gnome-control-center
Util.spawn(['gnome-control-center', 'network', 'connect-8021x-wifi',
Util.spawn(['gnome-control-center', 'wifi', 'connect-8021x-wifi',
this._device.get_path(), accessPoints[0].dbus_path]);
} else {
let connection = new NetworkManager.Connection();
@ -1205,7 +1194,7 @@ var NMDeviceWireless = new Lang.Class({
this._toggleItem.connect('activate', Lang.bind(this, this._toggleWifi));
this.item.menu.addMenuItem(this._toggleItem);
this.item.menu.addMenuItem(createSettingsAction(_("Wi-Fi Settings"), device));
this.item.menu.addSettingsAction(_("Wi-Fi Settings"), 'gnome-wifi-panel.desktop');
this._wirelessEnabledChangedId = this._client.connect('notify::wireless-enabled', Lang.bind(this, this._sync));
this._wirelessHwEnabledChangedId = this._client.connect('notify::wireless-hardware-enabled', Lang.bind(this, this._sync));
@ -1502,36 +1491,7 @@ var NMVPNSection = new Lang.Class({
_init: function(client) {
this.parent(client);
this._vpnSettings = new PopupMenu.PopupMenuItem('');
this.item.menu.addMenuItem(this._vpnSettings);
this._vpnSettings.connect('activate', Lang.bind(this, this._onSettingsActivate));
this._sync();
},
_sync: function() {
let nItems = this._connectionItems.size;
this.item.actor.visible = (nItems > 0);
if (nItems > 1)
this._vpnSettings.label.text = _("Network Settings");
else
this._vpnSettings.label.text = _("VPN Settings");
this.parent();
},
_onSettingsActivate: function() {
let nItems = this._connectionItems.size;
if (nItems > 1) {
let appSys = Shell.AppSystem.get_default();
let app = appSys.lookup_app('gnome-network-panel.desktop');
app.launch(0, -1, false);
} else {
let connection = this._connections[0];
Util.spawnApp(['gnome-control-center', 'network', 'show-device',
connection.get_path()]);
}
this.item.menu.addSettingsAction(_("VPN Settings"), 'gnome-network-panel.desktop');
},
_getDescription: function() {

View File

@ -2,39 +2,19 @@
const AccountsService = imports.gi.AccountsService;
const Clutter = imports.gi.Clutter;
const Gdm = imports.gi.Gdm;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
const GObject = imports.gi.GObject;
const BoxPointer = imports.ui.boxpointer;
const GnomeSession = imports.misc.gnomeSession;
const LoginManager = imports.misc.loginManager;
const SystemActions = imports.misc.systemActions;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
const LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen';
const DISABLE_USER_SWITCH_KEY = 'disable-user-switching';
const DISABLE_LOCK_SCREEN_KEY = 'disable-lock-screen';
const DISABLE_LOG_OUT_KEY = 'disable-log-out';
const DISABLE_RESTART_KEY = 'disable-restart-buttons';
const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out';
const SENSOR_BUS_NAME = 'net.hadess.SensorProxy';
const SENSOR_OBJECT_PATH = '/net/hadess/SensorProxy';
const SensorProxyInterface = '<node> \
<interface name="net.hadess.SensorProxy"> \
<property name="HasAccelerometer" type="b" access="read"/> \
</interface> \
</node>';
const SensorProxy = Gio.DBusProxy.makeProxyWrapper(SensorProxyInterface);
var AltSwitcher = new Lang.Class({
Name: 'AltSwitcher',
@ -138,41 +118,17 @@ var Indicator = new Lang.Class({
_init: function() {
this.parent();
this._loginScreenSettings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA });
this._lockdownSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA });
this._orientationSettings = new Gio.Settings({ schema_id: 'org.gnome.settings-daemon.peripherals.touchscreen' });
let userManager = AccountsService.UserManager.get_default();
this._user = userManager.get_user(GLib.get_user_name());
this._session = new GnomeSession.SessionManager();
this._loginManager = LoginManager.getLoginManager();
this._monitorManager = Meta.MonitorManager.get();
this._haveShutdown = true;
this._haveSuspend = true;
this._userManager = AccountsService.UserManager.get_default();
this._user = this._userManager.get_user(GLib.get_user_name());
this._systemActions = new SystemActions.getDefault();
this._createSubMenu();
this._userManager.connect('notify::is-loaded',
Lang.bind(this, this._updateMultiUser));
this._userManager.connect('notify::has-multiple-users',
Lang.bind(this, this._updateMultiUser));
this._userManager.connect('user-added',
Lang.bind(this, this._updateMultiUser));
this._userManager.connect('user-removed',
Lang.bind(this, this._updateMultiUser));
this._lockdownSettings.connect('changed::' + DISABLE_USER_SWITCH_KEY,
Lang.bind(this, this._updateMultiUser));
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
Lang.bind(this, this._updateMultiUser));
this._lockdownSettings.connect('changed::' + DISABLE_LOCK_SCREEN_KEY,
Lang.bind(this, this._updateLockScreen));
global.settings.connect('changed::' + ALWAYS_SHOW_LOG_OUT_KEY,
Lang.bind(this, this._updateMultiUser));
this._updateSwitchUser();
this._updateMultiUser();
this._updateLockScreen();
this._loginScreenItem.actor.connect('notify::visible',
() => { this._updateMultiUser(); });
this._logoutItem.actor.connect('notify::visible',
() => { this._updateMultiUser(); });
// Whether shutdown is available or not depends on both lockdown
// settings (disable-log-out) and Polkit policy - the latter doesn't
// notify, so we update the menu item each time the menu opens or
@ -182,42 +138,14 @@ var Indicator = new Lang.Class({
if (!open)
return;
this._updateHaveShutdown();
this._updateHaveSuspend();
this._systemActions.forceUpdate();
}));
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
Lang.bind(this, this._updateHaveShutdown));
this._orientationSettings.connect('changed::orientation-lock',
Lang.bind(this, this._updateOrientationLock));
Main.layoutManager.connect('monitors-changed',
Lang.bind(this, this._updateOrientationLock));
Gio.DBus.system.watch_name(SENSOR_BUS_NAME,
Gio.BusNameWatcherFlags.NONE,
Lang.bind(this, this._sensorProxyAppeared),
Lang.bind(this, function() {
this._sensorProxy = null;
this._updateOrientationLock();
}));
this._updateOrientationLock();
this._updateMultiUser();
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
this._sessionUpdated();
},
_sensorProxyAppeared: function() {
this._sensorProxy = new SensorProxy(Gio.DBus.system, SENSOR_BUS_NAME, SENSOR_OBJECT_PATH,
Lang.bind(this, function(proxy, error) {
if (error) {
log(error.message);
return;
}
this._sensorProxy.connect('g-properties-changed',
Lang.bind(this, this._updateOrientationLock));
this._updateOrientationLock();
}));
},
_updateActionsVisibility: function() {
let visible = (this._settingsAction.visible ||
this._orientationLockAction.visible ||
@ -228,42 +156,14 @@ var Indicator = new Lang.Class({
},
_sessionUpdated: function() {
this._updateLockScreen();
this._updatePowerOff();
this._updateSuspend();
this._updateMultiUser();
this._settingsAction.visible = Main.sessionMode.allowSettings;
this._updateActionsVisibility();
},
_updateMultiUser: function() {
let shouldShowInMode = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
let hasSwitchUser = this._updateSwitchUser();
let hasLogout = this._updateLogout();
let hasSwitchUser = this._loginScreenItem.actor.visible;
let hasLogout = this._logoutItem.actor.visible;
this._switchUserSubMenu.actor.visible = shouldShowInMode && (hasSwitchUser || hasLogout);
},
_updateSwitchUser: function() {
let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY);
let multiUser = this._userManager.can_switch() && this._userManager.has_multiple_users;
let visible = allowSwitch && multiUser;
this._loginScreenItem.actor.visible = visible;
return visible;
},
_updateLogout: function() {
let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY);
let alwaysShow = global.settings.get_boolean(ALWAYS_SHOW_LOG_OUT_KEY);
let systemAccount = this._user.system_account;
let localAccount = this._user.local_account;
let multiUser = this._userManager.has_multiple_users;
let multiSession = Gdm.get_session_ids().length > 1;
let visible = allowLogout && (alwaysShow || multiUser || multiSession || systemAccount || !localAccount);
this._logoutItem.actor.visible = visible;
return visible;
this._switchUserSubMenu.actor.visible = hasSwitchUser || hasLogout;
},
_updateSwitchUserSubMenu: function() {
@ -299,63 +199,6 @@ var Indicator = new Lang.Class({
}
},
_updateOrientationLock: function() {
if (this._sensorProxy)
this._orientationLockAction.visible = this._sensorProxy.HasAccelerometer &&
this._monitorManager.get_is_builtin_display_on();
else
this._orientationLockAction.visible = false;
let locked = this._orientationSettings.get_boolean('orientation-lock');
let icon = this._orientationLockAction.child;
icon.icon_name = locked ? 'rotation-locked-symbolic' : 'rotation-allowed-symbolic';
this._updateActionsVisibility();
},
_updateLockScreen: function() {
let showLock = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY);
this._lockScreenAction.visible = showLock && allowLockScreen && LoginManager.canLock();
this._updateActionsVisibility();
},
_updateHaveShutdown: function() {
this._session.CanShutdownRemote(Lang.bind(this, function(result, error) {
if (error)
return;
this._haveShutdown = result[0];
this._updatePowerOff();
}));
},
_updatePowerOff: function() {
let disabled = Main.sessionMode.isLocked ||
(Main.sessionMode.isGreeter &&
this._loginScreenSettings.get_boolean(DISABLE_RESTART_KEY));
this._powerOffAction.visible = this._haveShutdown && !disabled;
this._updateActionsVisibility();
},
_updateHaveSuspend: function() {
this._loginManager.canSuspend(Lang.bind(this,
function(canSuspend, needsAuth) {
this._haveSuspend = canSuspend;
this._suspendNeedsAuth = needsAuth;
this._updateSuspend();
}));
},
_updateSuspend: function() {
let disabled = (Main.sessionMode.isLocked &&
this._suspendNeedsAuth) ||
(Main.sessionMode.isGreeter &&
this._loginScreenSettings.get_boolean(DISABLE_RESTART_KEY));
this._suspendAction.visible = this._haveSuspend && !disabled;
this._updateActionsVisibility();
},
_createActionButton: function(iconName, accessibleName) {
let icon = new St.Button({ reactive: true,
can_focus: true,
@ -367,6 +210,7 @@ var Indicator = new Lang.Class({
},
_createSubMenu: function() {
let bindFlags = GObject.BindingFlags.DEFAULT | GObject.BindingFlags.SYNC_CREATE;
let item;
this._switchUserSubMenu = new PopupMenu.PopupSubMenuMenuItem('', true);
@ -382,14 +226,28 @@ var Indicator = new Lang.Class({
}));
item = new PopupMenu.PopupMenuItem(_("Switch User"));
item.connect('activate', Lang.bind(this, this._onLoginScreenActivate));
item.connect('activate', () => {
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
this._systemActions.activateSwitchUser();
});
this._switchUserSubMenu.menu.addMenuItem(item);
this._loginScreenItem = item;
this._systemActions.bind_property('can-switch-user',
this._loginScreenItem.actor,
'visible',
bindFlags);
item = new PopupMenu.PopupMenuItem(_("Log Out"));
item.connect('activate', Lang.bind(this, this._onQuitSessionActivate));
item.connect('activate', () => {
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
this._systemActions.activateLogout();
});
this._switchUserSubMenu.menu.addMenuItem(item);
this._logoutItem = item;
this._systemActions.bind_property('can-logout',
this._logoutItem.actor,
'visible',
bindFlags);
this._switchUserSubMenu.menu.addSettingsAction(_("Account Settings"),
'gnome-user-accounts-panel.desktop');
@ -405,28 +263,70 @@ var Indicator = new Lang.Class({
can_focus: false });
this._settingsAction = this._createActionButton('preferences-system-symbolic', _("Settings"));
this._settingsAction.connect('clicked', Lang.bind(this, this._onSettingsClicked));
this._settingsAction.connect('clicked', () => { this._onSettingsClicked(); });
item.actor.add(this._settingsAction, { expand: true, x_fill: false });
this._orientationLockAction = this._createActionButton('', _("Orientation Lock"));
this._orientationLockAction.connect('clicked', Lang.bind(this, this._onOrientationLockClicked));
this._orientationLockAction.connect('clicked', () => {
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE),
this._systemActions.activateLockOrientation();
});
item.actor.add(this._orientationLockAction, { expand: true, x_fill: false });
this._systemActions.bind_property('can-lock-orientation',
this._orientationLockAction,
'visible',
bindFlags);
this._systemActions.bind_property('orientation-lock-icon',
this._orientationLockAction.child,
'icon-name',
bindFlags);
this._lockScreenAction = this._createActionButton('changes-prevent-symbolic', _("Lock"));
this._lockScreenAction.connect('clicked', Lang.bind(this, this._onLockScreenClicked));
this._lockScreenAction.connect('clicked', () => {
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
this._systemActions.activateLockScreen();
});
item.actor.add(this._lockScreenAction, { expand: true, x_fill: false });
this._systemActions.bind_property('can-lock-screen',
this._lockScreenAction,
'visible',
bindFlags);
this._suspendAction = this._createActionButton('media-playback-pause-symbolic', _("Suspend"));
this._suspendAction.connect('clicked', Lang.bind(this, this._onSuspendClicked));
this._suspendAction.connect('clicked', () => {
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
this._systemActions.activateSuspend();
});
this._systemActions.bind_property('can-suspend',
this._suspendAction,
'visible',
bindFlags);
this._powerOffAction = this._createActionButton('system-shutdown-symbolic', _("Power Off"));
this._powerOffAction.connect('clicked', Lang.bind(this, this._onPowerOffClicked));
this._powerOffAction.connect('clicked', () => {
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
this._systemActions.activatePowerOff();
});
this._systemActions.bind_property('can-power-off',
this._powerOffAction,
'visible',
bindFlags);
this._altSwitcher = new AltSwitcher(this._powerOffAction, this._suspendAction);
item.actor.add(this._altSwitcher.actor, { expand: true, x_fill: false });
this._actionsItem = item;
this.menu.addMenuItem(item);
this._settingsAction.connect('notify::visible',
() => { this._updateActionsVisibility(); });
this._orientationLockAction.connect('notify::visible',
() => { this._updateActionsVisibility(); });
this._lockScreenAction.connect('notify::visible',
() => { this._updateActionsVisibility(); });
this._altSwitcher.actor.connect('notify::visible',
() => { this._updateActionsVisibility(); });
},
_onSettingsClicked: function() {
@ -434,46 +334,5 @@ var Indicator = new Lang.Class({
let app = Shell.AppSystem.get_default().lookup_app('gnome-control-center.desktop');
Main.overview.hide();
app.activate();
},
_onOrientationLockClicked: function() {
this.menu.itemActivated();
let locked = this._orientationSettings.get_boolean('orientation-lock');
this._orientationSettings.set_boolean('orientation-lock', !locked);
this._updateOrientationLock();
},
_onLockScreenClicked: function() {
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
Main.overview.hide();
Main.screenShield.lock(true);
},
_onLoginScreenActivate: function() {
this.menu.itemActivated(BoxPointer.PopupAnimation.NONE);
Main.overview.hide();
if (Main.screenShield)
Main.screenShield.lock(false);
Clutter.threads_add_repaint_func_full(Clutter.RepaintFlags.POST_PAINT, function() {
Gdm.goto_login_session_sync(null);
return false;
});
},
_onQuitSessionActivate: function() {
Main.overview.hide();
this._session.LogoutRemote(0);
},
_onPowerOffClicked: function() {
this.menu.itemActivated();
Main.overview.hide();
this._session.ShutdownRemote(0);
},
_onSuspendClicked: function() {
this.menu.itemActivated();
this._loginManager.suspend();
},
}
});

101
js/ui/switchMonitor.js Normal file
View File

@ -0,0 +1,101 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
const Lang = imports.lang;
const Meta = imports.gi.Meta;
const St = imports.gi.St;
const SwitcherPopup = imports.ui.switcherPopup;
var APP_ICON_SIZE = 96;
var SwitchMonitorPopup = new Lang.Class({
Name: 'SwitchMonitorPopup',
Extends: SwitcherPopup.SwitcherPopup,
_init: function() {
let items = [{ icon: 'view-mirror-symbolic',
/* Translators: this is for display mirroring i.e. cloning.
* Try to keep it under around 15 characters.
*/
label: _('Mirror') },
{ icon: 'video-joined-displays-symbolic',
/* Translators: this is for the desktop spanning displays.
* Try to keep it under around 15 characters.
*/
label: _('Join Displays') },
{ icon: 'video-single-display-symbolic',
/* Translators: this is for using only an external display.
* Try to keep it under around 15 characters.
*/
label: _('External Only') },
{ icon: 'computer-symbolic',
/* Translators: this is for using only the laptop display.
* Try to keep it under around 15 characters.
*/
label: _('Built-in Only') }];
this.parent(items);
this._switcherList = new SwitchMonitorSwitcher(items);
},
show: function(backward, binding, mask) {
if (!Meta.MonitorManager.get().can_switch_config())
return false;
return this.parent(backward, binding, mask);
},
_initialSelection: function() {
let currentConfig = Meta.MonitorManager.get().get_switch_config();
currentConfig %= Meta.MonitorSwitchConfigType.UNKNOWN;
this._select(currentConfig);
},
_keyPressHandler: function(keysym, action) {
if (action == Meta.KeyBindingAction.SWITCH_MONITOR)
this._select(this._next());
else if (keysym == Clutter.Left)
this._select(this._previous());
else if (keysym == Clutter.Right)
this._select(this._next());
else
return Clutter.EVENT_PROPAGATE;
return Clutter.EVENT_STOP;
},
_finish : function() {
this.parent();
Meta.MonitorManager.get().switch_config(this._selectedIndex);
},
});
var SwitchMonitorSwitcher = new Lang.Class({
Name: 'SwitchMonitorSwitcher',
Extends: SwitcherPopup.SwitcherList,
_init: function(items) {
this.parent(true);
for (let i = 0; i < items.length; i++)
this._addIcon(items[i]);
},
_addIcon: function(item) {
let box = new St.BoxLayout({ style_class: 'alt-tab-app',
vertical: true });
let icon = new St.Icon({ icon_name: item.icon,
icon_size: APP_ICON_SIZE });
box.add(icon, { x_fill: false, y_fill: false } );
let text = new St.Label({ text: item.label });
box.add(text, { x_fill: false });
this.addItem(box, text);
}
});

View File

@ -19,6 +19,7 @@ var POPUP_SCROLL_TIME = 0.10; // seconds
var POPUP_FADE_OUT_TIME = 0.1; // seconds
var DISABLE_HOVER_TIMEOUT = 500; // milliseconds
var NO_MODS_TIMEOUT = 1500; // milliseconds
function mod(a, b) {
return (a + b) % b;
@ -61,6 +62,7 @@ var SwitcherPopup = new Lang.Class({
this._motionTimeoutId = 0;
this._initialDelayTimeoutId = 0;
this._noModsTimeoutId = 0;
// Initially disable hover so we ignore the enter-event if
// the switcher appears underneath the current pointer location
@ -145,10 +147,14 @@ var SwitcherPopup = new Lang.Class({
// https://bugzilla.gnome.org/show_bug.cgi?id=596695 for
// details.) So we check now. (Have to do this after updating
// selection.)
let [x, y, mods] = global.get_pointer();
if (!(mods & this._modifierMask)) {
this._finish(global.get_current_time());
return false;
if (this._modifierMask) {
let [x, y, mods] = global.get_pointer();
if (!(mods & this._modifierMask)) {
this._finish(global.get_current_time());
return false;
}
} else {
this._resetNoModsTimeout();
}
// We delay showing the popup so that fast Alt+Tab users aren't
@ -192,11 +198,15 @@ var SwitcherPopup = new Lang.Class({
},
_keyReleaseEvent: function(actor, event) {
let [x, y, mods] = global.get_pointer();
let state = mods & this._modifierMask;
if (this._modifierMask) {
let [x, y, mods] = global.get_pointer();
let state = mods & this._modifierMask;
if (state == 0)
this._finish(event.get_time());
if (state == 0)
this._finish(event.get_time());
} else {
this._resetNoModsTimeout();
}
return Clutter.EVENT_STOP;
},
@ -253,6 +263,18 @@ var SwitcherPopup = new Lang.Class({
return GLib.SOURCE_REMOVE;
},
_resetNoModsTimeout: function() {
if (this._noModsTimeoutId != 0)
Mainloop.source_remove(this._noModsTimeoutId);
this._noModsTimeoutId = Mainloop.timeout_add(NO_MODS_TIMEOUT,
Lang.bind(this, function () {
this._finish(global.get_current_time());
this._noModsTimeoutId = 0;
return GLib.SOURCE_REMOVE;
}));
},
_popModal: function() {
if (this._haveModal) {
Main.popModal(this.actor);
@ -287,6 +309,8 @@ var SwitcherPopup = new Lang.Class({
Mainloop.source_remove(this._motionTimeoutId);
if (this._initialDelayTimeoutId != 0)
Mainloop.source_remove(this._initialDelayTimeoutId);
if (this._noModsTimeoutId != 0)
Mainloop.source_remove(this._noModsTimeoutId);
},
_select: function(num) {

View File

@ -35,6 +35,10 @@ var Avatar = new Lang.Class({
reactive: params.reactive,
width: this._iconSize * scaleFactor,
height: this._iconSize * scaleFactor });
// Monitor the scaling factor to make sure we recreate the avatar when needed.
let themeContext = St.ThemeContext.get_for_stage(global.stage);
themeContext.connect('notify::scale-factor', Lang.bind(this, this.update));
},
setSensitive: function(sensitive) {
@ -56,6 +60,9 @@ var Avatar = new Lang.Class({
this.actor.child = new St.Icon({ icon_name: 'avatar-default-symbolic',
icon_size: this._iconSize });
}
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
this.actor.set_size(this._iconSize * scaleFactor, this._iconSize * scaleFactor);
}
});

View File

@ -163,6 +163,13 @@ var ViewSelector = new Lang.Class({
this._text.connect('key-focus-out', Lang.bind(this, function() {
this._searchResults.highlightDefault(false);
}));
this._entry.connect('popup-menu', () => {
if (!this._searchActive)
return;
this._entry.menu.close();
this._searchResults.popupMenuDefault();
});
this._entry.connect('notify::mapped', Lang.bind(this, this._onMapped));
global.stage.connect('notify::key-focus', Lang.bind(this, this._onStageKeyFocusChanged));

View File

@ -22,6 +22,7 @@ const WindowMenu = imports.ui.windowMenu;
const PadOsd = imports.ui.padOsd;
const EdgeDragAction = imports.ui.edgeDragAction;
const CloseDialog = imports.ui.closeDialog;
const SwitchMonitor = imports.ui.switchMonitor;
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
var MINIMIZE_WINDOW_ANIMATION_TIME = 0.2;
@ -515,7 +516,7 @@ var TouchpadWorkspaceSwitchAction = new Lang.Class({
return Clutter.EVENT_PROPAGATE;
if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.UPDATE) {
let [dx, dy] = event.get_gesture_motion_delta(event);
let [dx, dy] = event.get_gesture_motion_delta();
this._dx += dx;
this._dy += dy;
@ -898,6 +899,10 @@ var WindowManager = new Lang.Class({
Shell.ActionMode.UNLOCK_SCREEN |
Shell.ActionMode.LOGIN_SCREEN,
Lang.bind(this, this._startA11ySwitcher));
this.setCustomKeybindingHandler('switch-monitor',
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._startSwitcher));
this.addKeybinding('pause-resume-tweens',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
@ -980,7 +985,8 @@ var WindowManager = new Lang.Class({
gesture.connect('activated', Lang.bind(this, this._switchApp));
global.stage.add_action(gesture);
gesture = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM, Shell.ActionMode.ALL);
let mode = Shell.ActionMode.ALL & ~Shell.ActionMode.LOCK_SCREEN;
gesture = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM, mode);
gesture.connect('activated', Lang.bind(this, function() {
Main.keyboard.show(Main.layoutManager.bottomIndex);
}));
@ -1838,6 +1844,9 @@ var WindowManager = new Lang.Class({
case 'cycle-group-backward':
constructor = AltTab.GroupCyclerPopup;
break;
case 'switch-monitor':
constructor = SwitchMonitor.SwitchMonitorPopup;
break;
}
if (!constructor)

View File

@ -20,7 +20,7 @@ const WindowManager = imports.ui.windowManager;
var WINDOW_DND_SIZE = 256;
var WINDOW_CLONE_MAXIMUM_SCALE = 0.7;
var WINDOW_CLONE_MAXIMUM_SCALE = 1.0;
var CLOSE_BUTTON_FADE_TIME = 0.1;
@ -132,6 +132,7 @@ var WindowClone = new Lang.Class({
this.actor._delegate = this;
this.slotId = 0;
this._slot = [0, 0, 0, 0];
this._dragSlot = [0, 0, 0, 0];
this._stackAbove = null;
@ -157,6 +158,12 @@ var WindowClone = new Lang.Class({
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPress));
this.actor.connect('enter-event', () => { this.emit('show-chrome'); });
this.actor.connect('key-focus-in', () => { this.emit('show-chrome'); });
this.actor.connect('leave-event', () => { this.emit('hide-chrome'); });
this.actor.connect('key-focus-out', () => { this.emit('hide-chrome'); });
this._draggable = DND.makeDraggable(this.actor,
{ restoreOnSuccess: true,
manualMode: true,
@ -374,6 +381,8 @@ var WindowClone = new Lang.Class({
action.release();
this._draggable.startDrag(x, y, global.get_current_time(), this._dragTouchSequence);
}));
} else {
this.emit('show-chrome');
}
return true;
},
@ -439,7 +448,6 @@ var WindowOverlay = new Lang.Class({
let title = new St.Label({ style_class: 'window-caption',
text: metaWindow.title });
title.clutter_text.ellipsize = Pango.EllipsizeMode.END;
title._spacing = 0;
windowClone.actor.label_actor = title;
this._updateCaptionId = metaWindow.connect('notify::title',
@ -455,18 +463,13 @@ var WindowOverlay = new Lang.Class({
button.connect('clicked', Lang.bind(this, this._closeWindow));
windowClone.actor.connect('destroy', Lang.bind(this, this._onDestroy));
windowClone.actor.connect('enter-event',
Lang.bind(this, this._onEnter));
windowClone.actor.connect('leave-event',
Lang.bind(this, this._onLeave));
windowClone.actor.connect('key-focus-in',
Lang.bind(this, this._onEnter));
windowClone.actor.connect('key-focus-out',
Lang.bind(this, this._onLeave));
windowClone.connect('show-chrome', Lang.bind(this, this._onShowChrome));
windowClone.connect('hide-chrome', Lang.bind(this, this._onHideChrome));
this._windowAddedId = 0;
button.hide();
title.hide();
this.title = title;
this.closeButton = button;
@ -475,8 +478,8 @@ var WindowOverlay = new Lang.Class({
Shell.util_set_hidden_from_pick(this.title, true);
Shell.util_set_hidden_from_pick(this.border, true);
parentActor.add_actor(this.title);
parentActor.add_actor(this.border);
parentActor.add_actor(this.title);
parentActor.add_actor(this.closeButton);
title.connect('style-changed',
Lang.bind(this, this._onStyleChanged));
@ -491,7 +494,6 @@ var WindowOverlay = new Lang.Class({
hide: function() {
this._hidden = true;
this.title.hide();
this.hideCloseButton();
},
@ -499,14 +501,13 @@ var WindowOverlay = new Lang.Class({
show: function() {
this._hidden = false;
this.title.show();
if (this._windowClone.actor['has-pointer'])
this._animateVisible();
},
chromeHeights: function () {
return [Math.max(this.borderSize, this.closeButton.height - this.closeButton._overlap),
this.title.height + this.title._spacing];
(this.title.height - this.borderSize) / 2];
},
chromeWidths: function () {
@ -540,24 +541,13 @@ var WindowOverlay = new Lang.Class({
else
button.set_position(Math.floor(buttonX), Math.floor(buttonY));
// Clutter.Actor.get_preferred_width() will return the fixed width if one
// is set, so we need to reset the width by calling set_width(-1), to forward
// the call down to StLabel.
// We also need to save and restore the current width, otherwise the animation
// starts from the wrong point.
let prevTitleWidth = title.width;
title.set_width(-1);
let [titleMinWidth, titleNatWidth] = title.get_preferred_width(-1);
let titleWidth = Math.max(titleMinWidth, Math.min(titleNatWidth, cloneWidth));
title.width = prevTitleWidth;
let titleX = cloneX + (cloneWidth - title.width) / 2;
let titleY = cloneY + cloneHeight - (title.height - this.borderSize) / 2;
let titleX = cloneX + (cloneWidth - titleWidth) / 2;
let titleY = cloneY + cloneHeight + title._spacing;
if (animate)
this._animateOverlayActor(title, Math.floor(titleX), Math.floor(titleY), titleWidth);
else {
title.width = titleWidth;
if (animate) {
this._animateOverlayActor(title, Math.floor(titleX), Math.floor(titleY), title.width);
} else {
title.width = title.width;
title.set_position(Math.floor(titleX), Math.floor(titleY));
}
@ -640,60 +630,48 @@ var WindowOverlay = new Lang.Class({
_animateVisible: function() {
this._parentActor.raise_top();
if (this._windowCanClose()) {
this.closeButton.show();
this.closeButton.opacity = 0;
Tweener.addTween(this.closeButton,
let toAnimate = [this.border, this.title];
if (this._windowCanClose())
toAnimate.push(this.closeButton);
toAnimate.forEach(a => {
a.show();
a.opacity = 0;
Tweener.addTween(a,
{ opacity: 255,
time: CLOSE_BUTTON_FADE_TIME,
transition: 'easeOutQuad' });
}
this.border.show();
this.border.opacity = 0;
Tweener.addTween(this.border,
{ opacity: 255,
time: CLOSE_BUTTON_FADE_TIME,
transition: 'easeOutQuad' });
this.title.add_style_pseudo_class('hover');
});
},
_animateInvisible: function() {
this.closeButton.opacity = 255;
Tweener.addTween(this.closeButton,
{ opacity: 0,
time: CLOSE_BUTTON_FADE_TIME,
transition: 'easeInQuad' });
this.border.opacity = 255;
Tweener.addTween(this.border,
{ opacity: 0,
time: CLOSE_BUTTON_FADE_TIME,
transition: 'easeInQuad' });
this.title.remove_style_pseudo_class('hover');
[this.closeButton, this.border, this.title].forEach(a => {
a.opacity = 255;
Tweener.addTween(a,
{ opacity: 0,
time: CLOSE_BUTTON_FADE_TIME,
transition: 'easeInQuad' });
});
},
_onEnter: function() {
_onShowChrome: function() {
// We might get enter events on the clone while the overlay is
// hidden, e.g. during animations, we ignore these events,
// as the close button will be shown as needed when the overlays
// are shown again
if (this._hidden)
return Clutter.EVENT_PROPAGATE;
return;
this._windowClone.actor.grab_key_focus();
this._animateVisible();
this.emit('show-close-button');
return Clutter.EVENT_PROPAGATE;
},
_onLeave: function() {
_onHideChrome: function() {
if (this._idleToggleCloseId == 0) {
this._idleToggleCloseId = Mainloop.timeout_add(750, Lang.bind(this, this._idleToggleCloseButton));
GLib.Source.set_name_by_id(this._idleToggleCloseId, '[gnome-shell] this._idleToggleCloseButton');
}
return Clutter.EVENT_PROPAGATE;
},
_idleToggleCloseButton: function() {
@ -713,13 +691,10 @@ var WindowOverlay = new Lang.Class({
}
this.closeButton.hide();
this.border.hide();
this.title.remove_style_pseudo_class('hover');
this.title.hide();
},
_onStyleChanged: function() {
let titleNode = this.title.get_theme_node();
this.title._spacing = titleNode.get_length('-shell-caption-spacing');
let closeNode = this.closeButton.get_theme_node();
this.closeButton._overlap = closeNode.get_length('-shell-close-overlap');
@ -975,6 +950,10 @@ var LayoutStrategy = new Lang.Class({
let cloneX = x + (cellWidth - cloneWidth) / 2;
let cloneY = row.y + row.height * row.additionalScale - cellHeight + compensation;
// Align with the pixel grid to prevent blurry windows at scale = 1
cloneX = Math.floor(cloneX);
cloneY = Math.floor(cloneY);
slots.push([cloneX, cloneY, s, window]);
x += cellWidth + this._columnSpacing;
}
@ -1091,6 +1070,22 @@ function rectEqual(one, two) {
one.height == two.height);
}
const WorkspaceActor = new Lang.Class({
Name: 'WorkspaceActor',
Extends: St.Widget,
vfunc_get_focus_chain: function() {
return this.get_children().filter(c => c.visible).sort((a,b) => {
let cloneA = (a._delegate && a._delegate instanceof WindowClone) ? a._delegate: null;
let cloneB = (b._delegate && b._delegate instanceof WindowClone) ? b._delegate: null;
if (cloneA && cloneB)
return cloneA.slotId - cloneB.slotId;
return 0;
});
}
});
/**
* @metaWorkspace: a #Meta.Workspace, or null
*/
@ -1113,6 +1108,7 @@ var Workspace = new Lang.Class({
// do some simple aspect ratio like math to fit the layout calculated
// for the full geometry into this area.
this._actualGeometry = null;
this._actualGeometryLater = 0;
this._currentLayout = null;
@ -1122,7 +1118,7 @@ var Workspace = new Lang.Class({
// Without this the drop area will be overlapped.
this._windowOverlaysGroup.set_size(0, 0);
this.actor = new St.Widget({ style_class: 'window-picker' });
this.actor = new WorkspaceActor({ style_class: 'window-picker' });
if (monitorIndex != Main.layoutManager.primaryIndex)
this.actor.add_style_class_name('external-monitor');
this.actor.set_size(0, 0);
@ -1951,19 +1947,16 @@ var Workspace = new Lang.Class({
right: node.get_padding(St.Side.RIGHT),
};
let closeButtonHeight, captionHeight;
let leftBorder, rightBorder;
// All of the overlays have the same chrome sizes,
// so just pick the first one.
let overlay = this._windowOverlays[0];
[closeButtonHeight, captionHeight] = overlay.chromeHeights();
[leftBorder, rightBorder] = overlay.chromeWidths();
let [topBorder, bottomBorder] = overlay.chromeHeights();
let [leftBorder, rightBorder] = overlay.chromeWidths();
rowSpacing += captionHeight;
rowSpacing += (topBorder + bottomBorder) / 2;
columnSpacing += (rightBorder + leftBorder) / 2;
padding.top += closeButtonHeight;
padding.bottom += captionHeight;
padding.top += topBorder;
padding.bottom += bottomBorder;
padding.left += leftBorder;
padding.right += rightBorder;

View File

@ -31,6 +31,7 @@ var WorkspaceSwitcherPopup = new Lang.Class({
this._itemSpacing = 0;
this._childHeight = 0;
this._childWidth = 0;
this._timeoutId = 0;
this._list.connect('style-changed', Lang.bind(this, function() {
this._itemSpacing = this._list.get_theme_node().get_length('spacing');
}));
@ -49,9 +50,6 @@ var WorkspaceSwitcherPopup = new Lang.Class({
this._globalSignals = [];
this._globalSignals.push(global.screen.connect('workspace-added', Lang.bind(this, this._redisplay)));
this._globalSignals.push(global.screen.connect('workspace-removed', Lang.bind(this, this._redisplay)));
this._timeoutId = Mainloop.timeout_add(DISPLAY_TIMEOUT, Lang.bind(this, this._onTimeout));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._onTimeout');
},
_getPreferredHeight : function (actor, forWidth, alloc) {

View File

@ -18,8 +18,8 @@ const WindowManager = imports.ui.windowManager;
const Workspace = imports.ui.workspace;
const WorkspacesView = imports.ui.workspacesView;
// The maximum size of a thumbnail is 1/8 the width and height of the screen
let MAX_THUMBNAIL_SCALE = 1/8.;
// The maximum size of a thumbnail is 1/10 the width and height of the screen
let MAX_THUMBNAIL_SCALE = 1/10.;
var RESCALE_ANIMATION_TIME = 0.2;
var SLIDE_ANIMATION_TIME = 0.2;
@ -937,7 +937,8 @@ var ThumbnailsBox = new Lang.Class({
},
addThumbnails: function(start, count) {
this._ensurePorthole();
if (!this._ensurePorthole())
return;
for (let k = start; k < start + count; k++) {
let metaWorkspace = global.screen.get_workspace_by_index(k);
let thumbnail = new WorkspaceThumbnail(metaWorkspace);
@ -1125,7 +1126,12 @@ var ThumbnailsBox = new Lang.Class({
// the size request to our children because we know how big they are and know
// that the actors aren't depending on the virtual functions being called.
this._ensurePorthole();
if (!this._ensurePorthole()) {
alloc.min_size = -1;
alloc.natural_size = -1;
return;
}
let themeNode = this.actor.get_theme_node();
let spacing = themeNode.get_length('spacing');
@ -1137,7 +1143,11 @@ var ThumbnailsBox = new Lang.Class({
},
_getPreferredWidth: function(actor, forHeight, alloc) {
this._ensurePorthole();
if (!this._ensurePorthole()) {
alloc.min_size = -1;
alloc.natural_size = -1;
return;
}
let themeNode = this.actor.get_theme_node();
@ -1158,8 +1168,13 @@ var ThumbnailsBox = new Lang.Class({
// The "porthole" is the portion of the screen that we show in the
// workspaces
_ensurePorthole: function() {
if (!Main.layoutManager.primaryMonitor)
return false;
if (!this._porthole)
this._porthole = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
return true;
},
_allocate: function(actor, box, flags) {

View File

@ -1,19 +0,0 @@
XSLTPROC_FLAGS = \
--nonet \
--stringparam man.output.quietly 1 \
--stringparam funcsynopsis.style ansi \
--stringparam man.th.extra1.suppress 1 \
--stringparam man.authors.section.enabled 0 \
--stringparam man.copyright.section.enabled 0
.xml.1:
$(AM_V_GEN) $(XSLTPROC) $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
man_MANS = \
gnome-shell.1
xml_files = $(man_MANS:.1=.xml)
EXTRA_DIST = $(xml_files)
DISTCLEANFILES = $(man_MANS)

View File

@ -1,6 +1,6 @@
project('gnome-shell', 'c',
version: '3.25.4',
meson_version: '>= 0.41.0',
version: '3.26.2',
meson_version: '>= 0.42.0',
license: 'GPLv2+'
)
@ -23,7 +23,7 @@ gi_req = '>= 1.49.1'
gjs_req = '>= 1.47.0'
gtk_req = '>= 3.15.0'
json_glib_req = '>= 0.13.2'
mutter_req = '>= 3.25.2'
mutter_req = '>= 3.26.0'
polkit_req = '>= 0.100'
schemas_req = '>= 3.21.3'
startup_req = '>= 0.11'

View File

@ -9,6 +9,7 @@ js/extensionPrefs/main.js
js/gdm/authPrompt.js
js/gdm/loginDialog.js
js/gdm/util.js
js/misc/systemActions.js
js/misc/util.js
js/portalHelper/main.js
js/ui/accessDialog.js
@ -30,8 +31,8 @@ js/ui/dateMenu.js
js/ui/endSessionDialog.js
js/ui/extensionDownloader.js
js/ui/extensionSystem.js
js/ui/inhibitShortcutsDialog.js
js/ui/keyboard.js
js/ui/legacyTray.js
js/ui/lookingGlass.js
js/ui/main.js
js/ui/messageList.js
@ -59,6 +60,7 @@ js/ui/status/power.js
js/ui/status/rfkill.js
js/ui/status/system.js
js/ui/status/volume.js
js/ui/switchMonitor.js
js/ui/unlockDialog.js
js/ui/viewSelector.js
js/ui/windowAttentionHandler.js

598
po/ar.po

File diff suppressed because it is too large Load Diff

553
po/be.po

File diff suppressed because it is too large Load Diff

1287
po/bg.po

File diff suppressed because it is too large Load Diff

558
po/ca.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

556
po/cs.po

File diff suppressed because it is too large Load Diff

665
po/da.po

File diff suppressed because it is too large Load Diff

589
po/de.po

File diff suppressed because it is too large Load Diff

626
po/el.po

File diff suppressed because it is too large Load Diff

351
po/es.po
View File

@ -10,8 +10,8 @@ msgstr ""
"Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-07-20 03:49+0000\n"
"PO-Revision-Date: 2017-07-24 15:38+0200\n"
"POT-Creation-Date: 2017-08-22 11:17+0000\n"
"PO-Revision-Date: 2017-08-22 13:38+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: es <gnome-es-list@gnome.org>\n"
"Language: es\n"
@ -349,7 +349,7 @@ msgstr "Hubo un error al lanzar el diálogo de preferencias para %s:"
#: js/gdm/authPrompt.js:149 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:947
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:936
msgid "Cancel"
msgstr "Cancelar"
@ -410,6 +410,82 @@ msgstr "Error de autenticación"
msgid "(or swipe finger)"
msgstr "(o pase el dedo)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:99
#| msgid "Power Off"
msgctxt "search-result"
msgid "Power off"
msgstr "Apagar"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:102
msgid "power off;shutdown"
msgstr "apagar;apagado"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:106
#| msgid "Lock Screen"
msgctxt "search-result"
msgid "Lock screen"
msgstr "Bloquear la pantalla"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:109
#| msgid "Lock Screen"
msgid "lock screen"
msgstr "bloquear;pantalla"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:113
#| msgid "Log Out"
msgctxt "search-result"
msgid "Log out"
msgstr "Cerrar la sesión"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:116
msgid "logout;sign off"
msgstr "cerrar;sesión;salir"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:120
#| msgid "Suspend"
msgctxt "search-result"
msgid "Suspend"
msgstr "Suspender"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:123
#| msgid "Suspend"
msgid "suspend;sleep"
msgstr "suspender;dormir"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:127
#| msgid "Switch User"
msgctxt "search-result"
msgid "Switch user"
msgstr "Cambiar de usuario"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:130
#| msgid "Switch User"
msgid "switch user"
msgstr "cambiar;usuario"
#. Translators: The name of the lock orientation action in search
#: js/misc/systemActions.js:134
#| msgid "Orientation Lock"
msgctxt "search-result"
msgid "Lock orientation"
msgstr "Bloqueo de orientación"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:137
#| msgid "Clock Format"
msgid "lock orientation"
msgstr "bloqueo;orientación"
#: js/misc/util.js:122
msgid "Command not found"
msgstr "Comando no encontrado"
@ -568,35 +644,35 @@ msgstr "Denegar acceso"
msgid "Grant Access"
msgstr "Conceder acceso"
#: js/ui/appDisplay.js:806
#: js/ui/appDisplay.js:809
msgid "Frequently used applications will appear here"
msgstr "Las aplicaciones usadas frecuentemente aparecerán aquí"
#: js/ui/appDisplay.js:927
#: js/ui/appDisplay.js:930
msgid "Frequent"
msgstr "Frecuentes"
#: js/ui/appDisplay.js:934
#: js/ui/appDisplay.js:937
msgid "All"
msgstr "Todas"
#: js/ui/appDisplay.js:1895
#: js/ui/appDisplay.js:1915
msgid "New Window"
msgstr "Ventana nueva"
#: js/ui/appDisplay.js:1909
#: js/ui/appDisplay.js:1929
msgid "Launch using Dedicated Graphics Card"
msgstr "Lanzar usando la tarjeta gráfica dedicada"
#: js/ui/appDisplay.js:1936 js/ui/dash.js:289
#: js/ui/appDisplay.js:1956 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Quitar de los favoritos"
#: js/ui/appDisplay.js:1942
#: js/ui/appDisplay.js:1962
msgid "Add to Favorites"
msgstr "Añadir a los favoritos"
#: js/ui/appDisplay.js:1952
#: js/ui/appDisplay.js:1972
msgid "Show Details"
msgstr "Mostrar detalles"
@ -638,7 +714,7 @@ msgstr "Cambiar el fondo…"
msgid "Display Settings"
msgstr "Configuración de pantalla"
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:407
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:265
msgid "Settings"
msgstr "Configuración"
@ -745,7 +821,6 @@ msgstr "Limpiar todo"
#. Translators: %s is an application name
#: js/ui/closeDialog.js:44
#, javascript-format
#| msgid "“%s” is ready"
msgid "“%s” is not responding."
msgstr "«%s» no responde."
@ -786,8 +861,8 @@ msgstr "Contraseña:"
msgid "Type again:"
msgstr "Escriba de nuevo:"
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:272
#: js/ui/status/network.js:366 js/ui/status/network.js:950
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:261
#: js/ui/status/network.js:355 js/ui/status/network.js:939
msgid "Connect"
msgstr "Conectar"
@ -862,7 +937,7 @@ msgstr "Contraseña de la red de banda ancha móvil"
msgid "A password is required to connect to “%s”."
msgstr "Se requiere una contraseña para conectarse a «%s»."
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1760
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1720
msgid "Network Manager"
msgstr "Gestor de la red"
@ -893,7 +968,7 @@ msgstr "Eso no ha funcionado. Inténtelo de nuevo."
msgid "%s is now known as %s"
msgstr "Ahora %s se llama %s"
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:179
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:186
msgid "Windows"
msgstr "Ventanas"
@ -938,7 +1013,7 @@ msgstr "Meteorología"
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:281
#: js/ui/dateMenu.js:286
#, javascript-format
msgid "%s all day."
msgstr "%s todo el día."
@ -947,7 +1022,7 @@ msgstr "%s todo el día."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:287
#: js/ui/dateMenu.js:292
#, javascript-format
msgid "%s, then %s later."
msgstr "%s, luego %s."
@ -956,30 +1031,30 @@ msgstr "%s, luego %s."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:293
#: js/ui/dateMenu.js:298
#, javascript-format
msgid "%s, then %s, followed by %s later."
msgstr "%s, luego %s seguido de %s."
#: js/ui/dateMenu.js:300
#: js/ui/dateMenu.js:309
msgid "Select a location…"
msgstr "Seleccionar ubicación…"
#: js/ui/dateMenu.js:303
#: js/ui/dateMenu.js:312
msgid "Loading…"
msgstr "Cargando…"
#. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:309
#: js/ui/dateMenu.js:318
#, javascript-format
msgid "Feels like %s."
msgstr "Sensación térmica de %s."
#: js/ui/dateMenu.js:312
#: js/ui/dateMenu.js:321
msgid "Go online for weather information"
msgstr "Conectarse para obtener la información meteorológica"
#: js/ui/dateMenu.js:314
#: js/ui/dateMenu.js:323
msgid "Weather information is currently unavailable"
msgstr "La información meteorológica no está disponible actualmente."
@ -1141,19 +1216,34 @@ msgstr "Instalar"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
#: js/ui/keyboard.js:740 js/ui/status/keyboard.js:782
#. Translators: %s is an application name like "Settings"
#: js/ui/inhibitShortcutsDialog.js:59
#, javascript-format
msgid "%s wants to inhibit shortcuts"
msgstr "%s quiere inhibir los atajos"
#: js/ui/inhibitShortcutsDialog.js:60
msgid "Application wants to inhibit shortcuts"
msgstr "Su aplicación quiere inhibir los atajos"
#. Translators: %s is a keyboard shortcut like "Super+x"
#: js/ui/inhibitShortcutsDialog.js:69
#, javascript-format
msgid "You can restore shortcuts by pressing %s."
msgstr "Puede restaurar los atajos pulsando %s."
#: js/ui/inhibitShortcutsDialog.js:74
msgid "Deny"
msgstr "Denegar"
#: js/ui/inhibitShortcutsDialog.js:80
msgid "Allow"
msgstr "Permitir"
#: js/ui/keyboard.js:738 js/ui/status/keyboard.js:782
msgid "Keyboard"
msgstr "Teclado"
#. translators: 'Hide' is a verb
#: js/ui/legacyTray.js:65
msgid "Hide tray"
msgstr "Ocultar bandeja"
#: js/ui/legacyTray.js:106
msgid "Status Icons"
msgstr "Iconos de estado"
#: js/ui/lookingGlass.js:642
msgid "No extensions installed"
msgstr "No hay extensiones instaladas"
@ -1340,7 +1430,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d notificación nueva"
msgstr[1] "%d notificaciones nuevas"
#: js/ui/screenShield.js:452 js/ui/status/system.js:415
#: js/ui/screenShield.js:452 js/ui/status/system.js:284
msgid "Lock"
msgstr "Bloquear"
@ -1371,10 +1461,13 @@ msgstr "Buscando…"
msgid "No results."
msgstr "No se encontraron resultados."
#: js/ui/search.js:768
#: js/ui/search.js:777
#, javascript-format
#| msgid "%d more"
msgid "%d more"
msgstr "%d más"
msgid_plural "%d more"
msgstr[0] "%d más"
msgstr[1] "%d más"
#: js/ui/shellEntry.js:25
msgid "Copy"
@ -1448,7 +1541,7 @@ msgstr "Texto grande"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:638
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627
msgid "Bluetooth Settings"
msgstr "Configuración de Bluetooth"
@ -1468,13 +1561,13 @@ msgstr "Desconectado"
msgid "On"
msgstr "Encender"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1310
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1299
msgid "Turn On"
msgstr "Encender"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:181
#: js/ui/status/network.js:367 js/ui/status/network.js:1310
#: js/ui/status/network.js:1429 js/ui/status/nightLight.js:47
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:170
#: js/ui/status/network.js:356 js/ui/status/network.js:1299
#: js/ui/status/network.js:1418 js/ui/status/nightLight.js:47
#: js/ui/status/rfkill.js:90 js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Apagar"
@ -1528,13 +1621,13 @@ msgid "<unknown>"
msgstr "<desconocido>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:465 js/ui/status/network.js:1339
#: js/ui/status/network.js:454 js/ui/status/network.js:1328
#, javascript-format
msgid "%s Off"
msgstr "%s apagada"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:468
#: js/ui/status/network.js:457
#, javascript-format
msgid "%s Connected"
msgstr "%s conectada"
@ -1542,190 +1635,189 @@ msgstr "%s conectada"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu);
#. %s is a network identifier
#: js/ui/status/network.js:473
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s sin gestionar"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:476
#: js/ui/status/network.js:465
#, javascript-format
msgid "%s Disconnecting"
msgstr "Desconectando %s"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:483 js/ui/status/network.js:1331
#: js/ui/status/network.js:472 js/ui/status/network.js:1320
#, javascript-format
msgid "%s Connecting"
msgstr "Conectando %s"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:486
#: js/ui/status/network.js:475
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s requiere autenticación"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:494
#: js/ui/status/network.js:483
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Falta el «firmware» para %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:498
#: js/ui/status/network.js:487
#, javascript-format
msgid "%s Unavailable"
msgstr "%s no disponible"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:501
#: js/ui/status/network.js:490
#, javascript-format
msgid "%s Connection Failed"
msgstr "Falló la conexión %s"
#: js/ui/status/network.js:517
#: js/ui/status/network.js:506
msgid "Wired Settings"
msgstr "Configuración de red cableada"
#: js/ui/status/network.js:559
#: js/ui/status/network.js:548
msgid "Mobile Broadband Settings"
msgstr "Configuración de banda ancha móvil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:602 js/ui/status/network.js:1336
#: js/ui/status/network.js:591 js/ui/status/network.js:1325
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "Hardware %s desactivado"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:606
#: js/ui/status/network.js:595
#, javascript-format
msgid "%s Disabled"
msgstr "%s desactivado"
#: js/ui/status/network.js:646
#: js/ui/status/network.js:635
msgid "Connect to Internet"
msgstr "Conectar a Internet"
#: js/ui/status/network.js:844
#: js/ui/status/network.js:833
msgid "Airplane Mode is On"
msgstr "El modo avión está activado"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:834
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "La Wi-Fi se desactiva cuando se activa el modo avión."
#: js/ui/status/network.js:846
#: js/ui/status/network.js:835
msgid "Turn Off Airplane Mode"
msgstr "Apagar el modo avión"
#: js/ui/status/network.js:855
#: js/ui/status/network.js:844
msgid "Wi-Fi is Off"
msgstr "La Wi-Fi está desactivada"
#: js/ui/status/network.js:856
#: js/ui/status/network.js:845
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Se debe activar la Wi-Fi para poder conectarse a la red."
#: js/ui/status/network.js:857
#: js/ui/status/network.js:846
msgid "Turn On Wi-Fi"
msgstr "Activar la Wi-Fi"
#: js/ui/status/network.js:882
#: js/ui/status/network.js:871
msgid "Wi-Fi Networks"
msgstr "Redes Wi-Fi"
#: js/ui/status/network.js:884
#: js/ui/status/network.js:873
msgid "Select a network"
msgstr "Seleccionar una red"
#: js/ui/status/network.js:914
#: js/ui/status/network.js:903
msgid "No Networks"
msgstr "No hay redes"
#: js/ui/status/network.js:935 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:924 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "Usar el interruptor hardware para apagar"
#: js/ui/status/network.js:1202
#: js/ui/status/network.js:1191
msgid "Select Network"
msgstr "Seleccionar red"
#: js/ui/status/network.js:1208
#: js/ui/status/network.js:1197
msgid "Wi-Fi Settings"
msgstr "Configuración de Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1327
#: js/ui/status/network.js:1316
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Punto de acceso %s activo"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1342
#: js/ui/status/network.js:1331
#, javascript-format
msgid "%s Not Connected"
msgstr "%s no conectado"
#: js/ui/status/network.js:1446
#: js/ui/status/network.js:1435
msgid "connecting…"
msgstr "conectando…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1449
#: js/ui/status/network.js:1438
msgid "authentication required"
msgstr "se necesita autenticación"
#: js/ui/status/network.js:1451
#: js/ui/status/network.js:1440
msgid "connection failed"
msgstr "falló la conexión"
#: js/ui/status/network.js:1517 js/ui/status/network.js:1612
#: js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Configuración de la red"
#: js/ui/status/network.js:1519
#: js/ui/status/network.js:1494
msgid "VPN Settings"
msgstr "Configuración de VPN"
#: js/ui/status/network.js:1538
#: js/ui/status/network.js:1498
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1548
#: js/ui/status/network.js:1508
msgid "VPN Off"
msgstr "VPN apagada"
#: js/ui/status/network.js:1643
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Configuración de la red"
#: js/ui/status/network.js:1603
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s conexión cableada"
msgstr[1] "%s conexiones cableadas"
#: js/ui/status/network.js:1647
#: js/ui/status/network.js:1607
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s conexión inalámbrica"
msgstr[1] "%s conexiones inalámbricas"
#: js/ui/status/network.js:1651
#: js/ui/status/network.js:1611
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s conexión por módem"
msgstr[1] "%s conexiones por módem"
#: js/ui/status/network.js:1799
#: js/ui/status/network.js:1759
msgid "Connection failed"
msgstr "Falló la conexión"
#: js/ui/status/network.js:1800
#: js/ui/status/network.js:1760
msgid "Activation of network connection failed"
msgstr "Falló la activación de la conexión de red"
@ -1783,27 +1875,27 @@ msgstr "%d%%"
msgid "Airplane Mode On"
msgstr "Modo avión activado"
#: js/ui/status/system.js:384
#: js/ui/status/system.js:228
msgid "Switch User"
msgstr "Cambiar de usuario"
#: js/ui/status/system.js:389
#: js/ui/status/system.js:240
msgid "Log Out"
msgstr "Cerrar la sesión"
#: js/ui/status/system.js:394
#: js/ui/status/system.js:252
msgid "Account Settings"
msgstr "Configuración de la cuenta"
#: js/ui/status/system.js:411
#: js/ui/status/system.js:269
msgid "Orientation Lock"
msgstr "Bloqueo de orientación"
#: js/ui/status/system.js:419
#: js/ui/status/system.js:295
msgid "Suspend"
msgstr "Suspender"
#: js/ui/status/system.js:422
#: js/ui/status/system.js:305
msgid "Power Off"
msgstr "Apagar"
@ -1815,6 +1907,36 @@ msgstr "Volumen modificado"
msgid "Volume"
msgstr "Volumen"
#. Translators: this is for display mirroring i.e. cloning.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:21
#| msgid "Error"
msgid "Mirror"
msgstr "Espejo"
#. Translators: this is for the desktop spanning displays.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:26
#| msgid "Panel Display"
msgid "Join Displays"
msgstr "Unir pantallas"
#. Translators: this is for using only an external display.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:31
msgid "External Only"
msgstr "Sólo la externa"
#. Translators: this is for using only the laptop display.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:36
msgid "Built-in Only"
msgstr "Sólo la integrada"
#: js/ui/unlockDialog.js:67
msgid "Log in as another user"
msgstr "Iniciar sesión como otro usuario"
@ -1823,11 +1945,11 @@ msgstr "Iniciar sesión como otro usuario"
msgid "Unlock Window"
msgstr "Desbloquear ventana"
#: js/ui/viewSelector.js:183
#: js/ui/viewSelector.js:190
msgid "Applications"
msgstr "Aplicaciones"
#: js/ui/viewSelector.js:187
#: js/ui/viewSelector.js:194
msgid "Search"
msgstr "Buscar"
@ -1836,22 +1958,22 @@ msgstr "Buscar"
msgid "“%s” is ready"
msgstr "«%s» está preparado"
#: js/ui/windowManager.js:71
#: js/ui/windowManager.js:72
msgid "Do you want to keep these display settings?"
msgstr "¿Quiere mantener esta configuración de la pantalla?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#.
#: js/ui/windowManager.js:83
#: js/ui/windowManager.js:84
msgid "Revert Settings"
msgstr "Revertir configuración"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:87
msgid "Keep Changes"
msgstr "Mantener cambios"
#: js/ui/windowManager.js:104
#: js/ui/windowManager.js:105
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -1860,7 +1982,7 @@ msgstr[1] "La configuración se revertirá en %d segundos"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:659
#: js/ui/windowManager.js:660
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -1938,21 +2060,21 @@ msgstr "Calendario de Evolution"
msgid "evolution"
msgstr "evolution"
#: src/main.c:372
#: src/main.c:380
msgid "Print version"
msgstr "Imprimir versión"
#: src/main.c:378
#: src/main.c:386
msgid "Mode used by GDM for login screen"
msgstr "Modo usado por GDM para la pantalla de inicio"
#: src/main.c:384
#: src/main.c:392
msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr ""
"Usar un modo específico, por ejemplo, «gdm» para la pantalla de inicio de "
"sesión"
#: src/main.c:390
#: src/main.c:398
msgid "List possible modes"
msgstr "Listar los modos posibles"
@ -2000,6 +2122,12 @@ msgstr[1] "%u entradas"
msgid "System Sounds"
msgstr "Sonidos del sistema"
#~ msgid "Hide tray"
#~ msgstr "Ocultar bandeja"
#~ msgid "Status Icons"
#~ msgstr "Iconos de estado"
#~ msgid "Events"
#~ msgstr "Eventos"
@ -2353,12 +2481,6 @@ msgstr "Sonidos del sistema"
#~ msgid "Device %s wants to pair with this computer"
#~ msgstr "El dispositivo «%s» quiere emparejarse con este equipo"
#~ msgid "Allow"
#~ msgstr "Permitir"
#~ msgid "Deny"
#~ msgstr "Denegar"
#~ msgid "Device %s wants access to the service '%s'"
#~ msgstr "El dispositivo %s quiere acceder al servicio «%s»"
@ -2815,9 +2937,6 @@ msgstr "Sonidos del sistema"
#~ msgid "Online Accounts"
#~ msgstr "Cuentas en línea"
#~ msgid "Lock Screen"
#~ msgstr "Bloquear la pantalla"
#~ msgid "Log Out..."
#~ msgstr "Cerrar la sesión…"
@ -3095,15 +3214,9 @@ msgstr "Sonidos del sistema"
#~ "especificado en la clave «custom_format». Note que si se establece a "
#~ "«unix» o «custom» se ignoran las claves «show_date» y «show_seconds»."
#~ msgid "Clock Format"
#~ msgstr "Formato del reloj"
#~ msgid "Clock Preferences"
#~ msgstr "Preferencias del reloj"
#~ msgid "Panel Display"
#~ msgstr "Panel de visualización"
#~ msgid "Show seco_nds"
#~ msgstr "Mostrar los segu_ndos"

644
po/eu.po

File diff suppressed because it is too large Load Diff

1089
po/fa.po

File diff suppressed because it is too large Load Diff

571
po/fi.po

File diff suppressed because it is too large Load Diff

755
po/fr.po

File diff suppressed because it is too large Load Diff

360
po/fur.po
View File

@ -8,15 +8,15 @@ msgstr ""
"Project-Id-Version: video-subtitles master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-07-28 11:38+0000\n"
"PO-Revision-Date: 2017-07-25 15:43+0200\n"
"POT-Creation-Date: 2017-10-04 18:03+0000\n"
"PO-Revision-Date: 2017-10-11 08:34+0200\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Language-Team: Friulian <fur@li.org>\n"
"Language: fur\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.2\n"
"X-Generator: Poedit 2.0.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: data/50-gnome-shell-system.xml:6
@ -341,7 +341,7 @@ msgstr ""
#: js/gdm/authPrompt.js:149 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:947
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:936
msgid "Cancel"
msgstr "Anule"
@ -402,6 +402,72 @@ msgstr "Erôr di autenticazion"
msgid "(or swipe finger)"
msgstr "(o passe cul dêt)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:99
msgctxt "search-result"
msgid "Power off"
msgstr "Distudâ"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:102
msgid "power off;shutdown"
msgstr "distudâ;studâ"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:106
msgctxt "search-result"
msgid "Lock screen"
msgstr "Blocâ il schermi"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:109
msgid "lock screen"
msgstr "blocâ schermi;blocâ"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Log out"
msgstr "Jessî"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:116
msgid "logout;sign off"
msgstr "jessî;sierâ session"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:120
msgctxt "search-result"
msgid "Suspend"
msgstr "Sospindi"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:123
msgid "suspend;sleep"
msgstr "sospindi;polse"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:127
msgctxt "search-result"
msgid "Switch user"
msgstr "Cambiâ utent"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:130
msgid "switch user"
msgstr "cambiâ utent"
#. Translators: The name of the lock orientation action in search
#: js/misc/systemActions.js:134
msgctxt "search-result"
msgid "Lock orientation"
msgstr "Blocâ orientament"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:137
msgid "lock orientation"
msgstr "blocâ orientament"
#: js/misc/util.js:122
msgid "Command not found"
msgstr "Comant no cjatât"
@ -561,44 +627,44 @@ msgstr "Dinee acès"
msgid "Grant Access"
msgstr "Garantìs l'acès"
#: js/ui/appDisplay.js:806
#: js/ui/appDisplay.js:809
msgid "Frequently used applications will appear here"
msgstr "Lis aplicazions dopradis dispès a vignaran mostradis culì"
#: js/ui/appDisplay.js:927
#: js/ui/appDisplay.js:930
msgid "Frequent"
msgstr "Dispès"
#: js/ui/appDisplay.js:934
#: js/ui/appDisplay.js:937
msgid "All"
msgstr "Dutis"
#: js/ui/appDisplay.js:1895
#: js/ui/appDisplay.js:1915
msgid "New Window"
msgstr "Gnûf barcon"
#: js/ui/appDisplay.js:1909
#: js/ui/appDisplay.js:1929
msgid "Launch using Dedicated Graphics Card"
msgstr "Invie doprant une schede grafiche dedicade"
#: js/ui/appDisplay.js:1936 js/ui/dash.js:289
#: js/ui/appDisplay.js:1956 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Gjave dai preferîts"
#: js/ui/appDisplay.js:1942
#: js/ui/appDisplay.js:1962
msgid "Add to Favorites"
msgstr "Zonte tai preferîts"
#: js/ui/appDisplay.js:1952
#: js/ui/appDisplay.js:1972
msgid "Show Details"
msgstr "Mostre Detais"
#: js/ui/appFavorites.js:140
#: js/ui/appFavorites.js:141
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s al è stât zontât tai tiei preferîts."
#: js/ui/appFavorites.js:174
#: js/ui/appFavorites.js:175
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s al è stât gjavât dai tiei preferîts."
@ -631,7 +697,7 @@ msgstr "Cambie sfont..."
msgid "Display Settings"
msgstr "Impostazions visôr"
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:407
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:265
msgid "Settings"
msgstr "Impostazions"
@ -687,51 +753,51 @@ msgctxt "grid saturday"
msgid "S"
msgstr "S"
#: js/ui/calendar.js:442
#: js/ui/calendar.js:449
msgid "Previous month"
msgstr "Mês indaûr"
#: js/ui/calendar.js:452
#: js/ui/calendar.js:459
msgid "Next month"
msgstr "Prossim mês"
#: js/ui/calendar.js:605
#: js/ui/calendar.js:612
#, no-javascript-format
msgctxt "date day number format"
msgid "%d"
msgstr "%d"
#: js/ui/calendar.js:660
#: js/ui/calendar.js:667
msgid "Week %V"
msgstr "Setemane %V"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#.
#: js/ui/calendar.js:729
#: js/ui/calendar.js:736
msgctxt "event list time"
msgid "All Day"
msgstr "Dut il dì"
#: js/ui/calendar.js:862
#: js/ui/calendar.js:869
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d di %B"
#: js/ui/calendar.js:866
#: js/ui/calendar.js:873
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d di %B dal %Y"
#: js/ui/calendar.js:1086
#: js/ui/calendar.js:1093
msgid "No Notifications"
msgstr "Nissune notifiche"
#: js/ui/calendar.js:1089
#: js/ui/calendar.js:1096
msgid "No Events"
msgstr "Nissun event"
#: js/ui/calendar.js:1117
#: js/ui/calendar.js:1124
msgid "Clear All"
msgstr "Nete dut"
@ -765,7 +831,7 @@ msgstr "Dispositîf esterni tacât"
msgid "External drive disconnected"
msgstr "Dispositîf esterni distacât"
#: js/ui/components/autorunManager.js:354
#: js/ui/components/autorunManager.js:358
#, javascript-format
msgid "Open with %s"
msgstr "Vierç cun %s"
@ -778,8 +844,8 @@ msgstr "Password:"
msgid "Type again:"
msgstr "Scîf di gnûf:"
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:272
#: js/ui/status/network.js:366 js/ui/status/network.js:950
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:261
#: js/ui/status/network.js:355 js/ui/status/network.js:939
msgid "Connect"
msgstr "Conet"
@ -854,7 +920,7 @@ msgstr "Passowrd rêt mobil a bande largje"
msgid "A password is required to connect to “%s”."
msgstr "A covente une password par tacâsi a '%s'."
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1760
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1720
msgid "Network Manager"
msgstr "Ministradôr di rêt"
@ -885,7 +951,7 @@ msgstr "Mi displâs, no je lade drete. Prove di gnûf."
msgid "%s is now known as %s"
msgstr "L'utent %s al è cognossût cumò come %s"
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:179
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:186
msgid "Windows"
msgstr "Barcons"
@ -902,7 +968,7 @@ msgstr "Dash"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: js/ui/dateMenu.js:75
#: js/ui/dateMenu.js:76
msgid "%B %e %Y"
msgstr "%e di %B dal %Y"
@ -910,19 +976,19 @@ msgstr "%e di %B dal %Y"
#. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015".
#.
#: js/ui/dateMenu.js:82
#: js/ui/dateMenu.js:83
msgid "%A %B %e %Y"
msgstr "%A %e di %B dal %Y"
#: js/ui/dateMenu.js:144
#: js/ui/dateMenu.js:145
msgid "Add world clocks…"
msgstr "Zonte orlois mondiâi..."
#: js/ui/dateMenu.js:145
#: js/ui/dateMenu.js:146
msgid "World Clocks"
msgstr "Orlois mondiâi"
#: js/ui/dateMenu.js:224
#: js/ui/dateMenu.js:225
msgid "Weather"
msgstr "Timp"
@ -930,7 +996,7 @@ msgstr "Timp"
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:281
#: js/ui/dateMenu.js:289
#, javascript-format
msgid "%s all day."
msgstr "%s dut il dì."
@ -939,7 +1005,7 @@ msgstr "%s dut il dì."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:287
#: js/ui/dateMenu.js:295
#, javascript-format
msgid "%s, then %s later."
msgstr "%s, plui tart %s."
@ -948,30 +1014,30 @@ msgstr "%s, plui tart %s."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:293
#: js/ui/dateMenu.js:301
#, javascript-format
msgid "%s, then %s, followed by %s later."
msgstr "%s, chi di un pôc %s, e plui tart %s."
#: js/ui/dateMenu.js:300
#: js/ui/dateMenu.js:312
msgid "Select a location…"
msgstr "Selezione une posizion..."
#: js/ui/dateMenu.js:303
#: js/ui/dateMenu.js:315
msgid "Loading…"
msgstr "Daûr a cjariâ..."
#. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:309
#: js/ui/dateMenu.js:321
#, javascript-format
msgid "Feels like %s."
msgstr "Si sint %s."
#: js/ui/dateMenu.js:312
#: js/ui/dateMenu.js:324
msgid "Go online for weather information"
msgstr "Va in rêt pes informazions sul timp"
#: js/ui/dateMenu.js:314
#: js/ui/dateMenu.js:326
msgid "Weather information is currently unavailable"
msgstr "Lis informazions sul timp al moment no son disponibilis"
@ -1134,19 +1200,34 @@ msgstr "Instale"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Scjariâ e instalâ '%s' da extensions.gnome.org?"
#. Translators: %s is an application name like "Settings"
#: js/ui/inhibitShortcutsDialog.js:59
#, javascript-format
msgid "%s wants to inhibit shortcuts"
msgstr "%s al desidere inibî lis scurtis"
#: js/ui/inhibitShortcutsDialog.js:60
msgid "Application wants to inhibit shortcuts"
msgstr "Une aplicazion e desidere inibî lis scurtis"
#. Translators: %s is a keyboard shortcut like "Super+x"
#: js/ui/inhibitShortcutsDialog.js:69
#, javascript-format
msgid "You can restore shortcuts by pressing %s."
msgstr "Si pues ripristinâ lis scurtis fracant %s."
#: js/ui/inhibitShortcutsDialog.js:74
msgid "Deny"
msgstr "Dinee"
#: js/ui/inhibitShortcutsDialog.js:80
msgid "Allow"
msgstr "Pemet"
#: js/ui/keyboard.js:738 js/ui/status/keyboard.js:782
msgid "Keyboard"
msgstr "Tastiere"
#. translators: 'Hide' is a verb
#: js/ui/legacyTray.js:65
msgid "Hide tray"
msgstr "Plate casset"
#: js/ui/legacyTray.js:106
msgid "Status Icons"
msgstr "Iconis di stât"
#: js/ui/lookingGlass.js:642
msgid "No extensions installed"
msgstr "Nissune estension instalade"
@ -1195,7 +1276,7 @@ msgstr "Viôt sorzint"
msgid "Web Page"
msgstr "Pagjine Web"
#: js/ui/messageTray.js:1493
#: js/ui/messageTray.js:1494
msgid "System Information"
msgstr "Informazion di sisteme"
@ -1335,7 +1416,7 @@ msgid_plural "%d new notifications"
msgstr[0] "%d gnove notifiche"
msgstr[1] "%d gnovis modifichis"
#: js/ui/screenShield.js:452 js/ui/status/system.js:415
#: js/ui/screenShield.js:452 js/ui/status/system.js:284
msgid "Lock"
msgstr "Bloche"
@ -1367,10 +1448,12 @@ msgid "No results."
msgstr "Nissun risultât."
# o ancjemò %d
#: js/ui/search.js:768
#: js/ui/search.js:777
#, javascript-format
msgid "%d more"
msgstr "Ancjemò %d"
msgid_plural "%d more"
msgstr[0] "%d altri"
msgstr[1] "%d altris"
#: js/ui/shellEntry.js:25
msgid "Copy"
@ -1444,7 +1527,7 @@ msgstr "Test Larc"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:638
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627
msgid "Bluetooth Settings"
msgstr "Impostazions Bluetooth"
@ -1464,13 +1547,13 @@ msgstr "Distudât"
msgid "On"
msgstr "Impiât"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1310
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1299
msgid "Turn On"
msgstr "Impie"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:181
#: js/ui/status/network.js:367 js/ui/status/network.js:1310
#: js/ui/status/network.js:1429 js/ui/status/nightLight.js:47
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:170
#: js/ui/status/network.js:356 js/ui/status/network.js:1299
#: js/ui/status/network.js:1418 js/ui/status/nightLight.js:47
#: js/ui/status/rfkill.js:90 js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Distude"
@ -1524,13 +1607,13 @@ msgid "<unknown>"
msgstr "<no cognossût>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:465 js/ui/status/network.js:1339
#: js/ui/status/network.js:454 js/ui/status/network.js:1328
#, javascript-format
msgid "%s Off"
msgstr "%s distudât"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:468
#: js/ui/status/network.js:457
#, javascript-format
msgid "%s Connected"
msgstr "%s tacât"
@ -1538,190 +1621,189 @@ msgstr "%s tacât"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu);
#. %s is a network identifier
#: js/ui/status/network.js:473
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s no ministrât"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:476
#: js/ui/status/network.js:465
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s daûr a disconeti"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:483 js/ui/status/network.js:1331
#: js/ui/status/network.js:472 js/ui/status/network.js:1320
#, javascript-format
msgid "%s Connecting"
msgstr "%s in conession"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:486
#: js/ui/status/network.js:475
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s al à dibisugne di autenticazion"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:494
#: js/ui/status/network.js:483
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Al mancje il firmware par %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:498
#: js/ui/status/network.js:487
#, javascript-format
msgid "%s Unavailable"
msgstr "%s no disponibil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:501
#: js/ui/status/network.js:490
#, javascript-format
msgid "%s Connection Failed"
msgstr "Conession falide su %s"
#: js/ui/status/network.js:517
#: js/ui/status/network.js:506
msgid "Wired Settings"
msgstr "Impostazions rêt vie fîl"
#: js/ui/status/network.js:559
#: js/ui/status/network.js:548
msgid "Mobile Broadband Settings"
msgstr "Impostazions bande largje mobil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:602 js/ui/status/network.js:1336
#: js/ui/status/network.js:591 js/ui/status/network.js:1325
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s disabilitât vie hardware "
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:606
#: js/ui/status/network.js:595
#, javascript-format
msgid "%s Disabled"
msgstr "%s disabilitât"
#: js/ui/status/network.js:646
#: js/ui/status/network.js:635
msgid "Connect to Internet"
msgstr "Conet a internet"
#: js/ui/status/network.js:844
#: js/ui/status/network.js:833
msgid "Airplane Mode is On"
msgstr "Modalitât avion piade"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:834
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Il Wi-Fi al è disabilitât cuant che la modalitât avion e je impiade."
#: js/ui/status/network.js:846
#: js/ui/status/network.js:835
msgid "Turn Off Airplane Mode"
msgstr "Distude modalitât avion"
#: js/ui/status/network.js:855
#: js/ui/status/network.js:844
msgid "Wi-Fi is Off"
msgstr "Il Wi-Fi al è distudât"
#: js/ui/status/network.js:856
#: js/ui/status/network.js:845
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Il Wi-Fi al scugne jessi impiât par podêsi tacâ a une rêt."
#: js/ui/status/network.js:857
#: js/ui/status/network.js:846
msgid "Turn On Wi-Fi"
msgstr "Impie il Wi-Fi"
#: js/ui/status/network.js:882
#: js/ui/status/network.js:871
msgid "Wi-Fi Networks"
msgstr "Rêts Wi-Fi"
#: js/ui/status/network.js:884
#: js/ui/status/network.js:873
msgid "Select a network"
msgstr "Selezione une rêt"
#: js/ui/status/network.js:914
#: js/ui/status/network.js:903
msgid "No Networks"
msgstr "Nissune rêt"
#: js/ui/status/network.js:935 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:924 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "Dopre interutôr fisic par distudâ"
#: js/ui/status/network.js:1202
#: js/ui/status/network.js:1191
msgid "Select Network"
msgstr "Selezione rêt"
#: js/ui/status/network.js:1208
#: js/ui/status/network.js:1197
msgid "Wi-Fi Settings"
msgstr "Impostazions Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1327
#: js/ui/status/network.js:1316
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Hotspot %s atîf"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1342
#: js/ui/status/network.js:1331
#, javascript-format
msgid "%s Not Connected"
msgstr "%s distacât"
#: js/ui/status/network.js:1446
#: js/ui/status/network.js:1435
msgid "connecting…"
msgstr "daûr a coneti…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1449
#: js/ui/status/network.js:1438
msgid "authentication required"
msgstr "autenticazion necessarie"
#: js/ui/status/network.js:1451
#: js/ui/status/network.js:1440
msgid "connection failed"
msgstr "conession falide"
#: js/ui/status/network.js:1517 js/ui/status/network.js:1612
#: js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Impostazions rêt"
#: js/ui/status/network.js:1519
#: js/ui/status/network.js:1494
msgid "VPN Settings"
msgstr "Impostazions VPN"
#: js/ui/status/network.js:1538
#: js/ui/status/network.js:1498
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1548
#: js/ui/status/network.js:1508
msgid "VPN Off"
msgstr "VPN distudât"
#: js/ui/status/network.js:1643
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Impostazions rêt"
#: js/ui/status/network.js:1603
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s conession cablade"
msgstr[1] "%s conessions cabladis"
#: js/ui/status/network.js:1647
#: js/ui/status/network.js:1607
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s conession cence fîi"
msgstr[1] "%s conessions cence fîi"
#: js/ui/status/network.js:1651
#: js/ui/status/network.js:1611
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s conession modem"
msgstr[1] "%s conessions modem"
#: js/ui/status/network.js:1799
#: js/ui/status/network.js:1759
msgid "Connection failed"
msgstr "Conession falide"
#: js/ui/status/network.js:1800
#: js/ui/status/network.js:1760
msgid "Activation of network connection failed"
msgstr "Ativazion de conession di rêt falide"
@ -1779,27 +1861,27 @@ msgstr "%d%%"
msgid "Airplane Mode On"
msgstr "Modalitât Avion ative"
#: js/ui/status/system.js:384
#: js/ui/status/system.js:228
msgid "Switch User"
msgstr "Cambie Utent"
#: js/ui/status/system.js:389
#: js/ui/status/system.js:240
msgid "Log Out"
msgstr "Jes"
#: js/ui/status/system.js:394
#: js/ui/status/system.js:252
msgid "Account Settings"
msgstr "Impostazions account"
#: js/ui/status/system.js:411
#: js/ui/status/system.js:269
msgid "Orientation Lock"
msgstr "Bloche Orientament"
#: js/ui/status/system.js:419
#: js/ui/status/system.js:295
msgid "Suspend"
msgstr "Sospindi"
#: js/ui/status/system.js:422
#: js/ui/status/system.js:305
msgid "Power Off"
msgstr "Distude"
@ -1811,6 +1893,34 @@ msgstr "Volum modificât"
msgid "Volume"
msgstr "Volum"
#. Translators: this is for display mirroring i.e. cloning.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:21
msgid "Mirror"
msgstr "Sdopleâ"
#. Translators: this is for the desktop spanning displays.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:26
msgid "Join Displays"
msgstr "Unìs schermis"
#. Translators: this is for using only an external display.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:31
msgid "External Only"
msgstr "Dome esterni"
#. Translators: this is for using only the laptop display.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:36
msgid "Built-in Only"
msgstr "Dome incorporât"
#: js/ui/unlockDialog.js:67
msgid "Log in as another user"
msgstr "Jentre come altri utent"
@ -1819,11 +1929,11 @@ msgstr "Jentre come altri utent"
msgid "Unlock Window"
msgstr "Sbloche barcon"
#: js/ui/viewSelector.js:183
#: js/ui/viewSelector.js:190
msgid "Applications"
msgstr "Aplicazions"
#: js/ui/viewSelector.js:187
#: js/ui/viewSelector.js:194
msgid "Search"
msgstr "Cîr"
@ -1832,22 +1942,22 @@ msgstr "Cîr"
msgid "“%s” is ready"
msgstr "'%s' al è pront"
#: js/ui/windowManager.js:71
#: js/ui/windowManager.js:72
msgid "Do you want to keep these display settings?"
msgstr "Vûstu tignî chestis impostazions di visôr?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#.
#: js/ui/windowManager.js:83
#: js/ui/windowManager.js:84
msgid "Revert Settings"
msgstr "Ripristine impostazions"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:87
msgid "Keep Changes"
msgstr "Ten lis modifichis"
#: js/ui/windowManager.js:104
#: js/ui/windowManager.js:105
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -1858,7 +1968,7 @@ msgstr[1] ""
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:659
#: js/ui/windowManager.js:660
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -1936,19 +2046,19 @@ msgstr "Calendari di Evolution"
msgid "evolution"
msgstr "evolution"
#: src/main.c:372
#: src/main.c:380
msgid "Print version"
msgstr "Stampe version"
#: src/main.c:378
#: src/main.c:386
msgid "Mode used by GDM for login screen"
msgstr "Modalitât doprade da GDM pe videade di acès"
#: src/main.c:384
#: src/main.c:392
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"
#: src/main.c:390
#: src/main.c:398
msgid "List possible modes"
msgstr "Liste modalitâts pussibilis"
@ -1996,6 +2106,12 @@ msgstr[1] "%u jentradis"
msgid "System Sounds"
msgstr "Suns di sisteme"
#~ msgid "Hide tray"
#~ msgstr "Plate casset"
#~ msgid "Status Icons"
#~ msgstr "Iconis di stât"
#~ msgid "Events"
#~ msgstr "Events"

582
po/gl.po

File diff suppressed because it is too large Load Diff

371
po/hr.po
View File

@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-07-20 03:49+0000\n"
"PO-Revision-Date: 2017-07-25 20:05+0200\n"
"POT-Creation-Date: 2017-08-22 11:17+0000\n"
"PO-Revision-Date: 2017-08-23 17:35+0200\n"
"Last-Translator: gogo <trebelnik2@gmail.com>\n"
"Language-Team: Croatian <hr@li.org>\n"
"Language: hr\n"
@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 2.0.2\n"
"X-Generator: Poedit 2.0.3\n"
#: data/50-gnome-shell-system.xml:6
msgid "System"
@ -59,13 +59,13 @@ msgstr "GNOME ljuska"
#: data/org.gnome.Shell.desktop.in.in:5
msgid "Window management and application launching"
msgstr "Pokretanje upravljanja prozorima i aplikacijama."
msgstr "Pokretanje upravljanja prozorima i aplikacijama"
#: data/org.gnome.shell.gschema.xml.in:6
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
"Omogući unutrašnji alat koristan za razvijatelje i testiratelje koristeći "
"Alt-F2 dijalog."
"Alt-F2 dijalog"
#: data/org.gnome.shell.gschema.xml.in:9
msgid ""
@ -219,7 +219,7 @@ msgstr "Prečac tipkovnice za otvaranje pogleda"
#: data/org.gnome.shell.gschema.xml.in:117
msgid "Keybinding to open the Activities Overview."
msgstr "Prečac tipkovnice za otvaranje pogleda Aktivnosti"
msgstr "Prečac tipkovnice za otvaranje pogleda Aktivnosti."
#: data/org.gnome.shell.gschema.xml.in:123
msgid "Keybinding to toggle the visibility of the notification list"
@ -245,7 +245,7 @@ msgid ""
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
msgstr ""
"Prečac tipkovnice za pauziranje i nastavljanje svih pokrenutih duplikata, u "
"svrhu otklanjanja grešaka."
"svrhu otklanjanja grešaka"
#: data/org.gnome.shell.gschema.xml.in:146
msgid "Which keyboard to use"
@ -253,7 +253,7 @@ msgstr "Koju tipkovnicu koristiti"
#: data/org.gnome.shell.gschema.xml.in:147
msgid "The type of keyboard to use."
msgstr "Vrsta tipkovnice koja se koristi"
msgstr "Vrsta tipkovnice koja se koristi."
#: data/org.gnome.shell.gschema.xml.in:158
#: data/org.gnome.shell.gschema.xml.in:185
@ -340,7 +340,7 @@ msgstr "Dogodila se greška učitavanja dijaloga osobitosti za %s:"
#: js/gdm/authPrompt.js:149 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:947
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:936
msgid "Cancel"
msgstr "Odustani"
@ -367,7 +367,7 @@ msgstr "Odaberi sesiju"
#. manually entering the username.
#: js/gdm/loginDialog.js:458
msgid "Not listed?"
msgstr "Nije na popisu?"
msgstr "Niste na popisu?"
#. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm
@ -382,7 +382,7 @@ msgstr "(npr., korisnik ili %s)"
#: js/gdm/loginDialog.js:893 js/ui/components/networkAgent.js:243
#: js/ui/components/networkAgent.js:261
msgid "Username: "
msgstr "Korisničko ime:"
msgstr "Korisničko ime: "
#: js/gdm/loginDialog.js:1236
msgid "Login Window"
@ -401,6 +401,72 @@ msgstr "Greška ovjere"
msgid "(or swipe finger)"
msgstr "(ili pomakni prst)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:99
msgctxt "search-result"
msgid "Power off"
msgstr "Isključivanje"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:102
msgid "power off;shutdown"
msgstr "isključi;isključivanje"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:106
msgctxt "search-result"
msgid "Lock screen"
msgstr "Zaključavanje zaslona"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:109
msgid "lock screen"
msgstr "zaključavanje zaslona"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Log out"
msgstr "Odjava"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:116
msgid "logout;sign off"
msgstr "odjava:odjavljivanje"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:120
msgctxt "search-result"
msgid "Suspend"
msgstr "Suspenzija"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:123
msgid "suspend;sleep"
msgstr "suspendiraj;spavaj"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:127
msgctxt "search-result"
msgid "Switch user"
msgstr "Zamjena korisnika"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:130
msgid "switch user"
msgstr "zamjena korisnika"
#. Translators: The name of the lock orientation action in search
#: js/misc/systemActions.js:134
msgctxt "search-result"
msgid "Lock orientation"
msgstr "Zaključavanje orjentacije"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:137
msgid "lock orientation"
msgstr "zaključavanje orjentacije"
#: js/misc/util.js:122
msgid "Command not found"
msgstr "Naredba nije pronađena"
@ -566,35 +632,35 @@ msgstr "Zabrani pristup"
msgid "Grant Access"
msgstr "Dopusti pristup"
#: js/ui/appDisplay.js:806
#: js/ui/appDisplay.js:809
msgid "Frequently used applications will appear here"
msgstr "Najčešće korištene aplikacije će se pojaviti ovdje"
#: js/ui/appDisplay.js:927
#: js/ui/appDisplay.js:930
msgid "Frequent"
msgstr "Najčešće"
#: js/ui/appDisplay.js:934
#: js/ui/appDisplay.js:937
msgid "All"
msgstr "Sve"
#: js/ui/appDisplay.js:1895
#: js/ui/appDisplay.js:1915
msgid "New Window"
msgstr "Novi prozor"
#: js/ui/appDisplay.js:1909
#: js/ui/appDisplay.js:1929
msgid "Launch using Dedicated Graphics Card"
msgstr "Pokreni pomoću namjenske grafičke kartice"
#: js/ui/appDisplay.js:1936 js/ui/dash.js:289
#: js/ui/appDisplay.js:1956 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Ukloni iz omiljenih"
#: js/ui/appDisplay.js:1942
#: js/ui/appDisplay.js:1962
msgid "Add to Favorites"
msgstr "Dodaj u omiljene"
#: js/ui/appDisplay.js:1952
#: js/ui/appDisplay.js:1972
msgid "Show Details"
msgstr "Prikaži pojedinosti"
@ -630,13 +696,13 @@ msgstr "Mikrofon"
#: js/ui/backgroundMenu.js:19
msgid "Change Background…"
msgstr "Promijeni pozadinu..."
msgstr "Promijeni pozadinu"
#: js/ui/backgroundMenu.js:21 js/ui/status/nightLight.js:51
msgid "Display Settings"
msgstr "Postavke prikaza"
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:407
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:265
msgid "Settings"
msgstr "Postavke"
@ -783,8 +849,8 @@ msgstr "Lozinka:"
msgid "Type again:"
msgstr "Pokušaj ponovno:"
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:272
#: js/ui/status/network.js:366 js/ui/status/network.js:950
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:261
#: js/ui/status/network.js:355 js/ui/status/network.js:939
msgid "Connect"
msgstr "Povezivanje"
@ -793,24 +859,24 @@ msgstr "Povezivanje"
#: js/ui/components/networkAgent.js:245 js/ui/components/networkAgent.js:265
#: js/ui/components/networkAgent.js:275
msgid "Password: "
msgstr "Lozinka:"
msgstr "Lozinka: "
#. static WEP
#: js/ui/components/networkAgent.js:210
msgid "Key: "
msgstr "Ključ:"
msgstr "Ključ: "
#: js/ui/components/networkAgent.js:249
msgid "Identity: "
msgstr "Identitet:"
msgstr "Identitet: "
#: js/ui/components/networkAgent.js:251
msgid "Private key password: "
msgstr "Lozinka privatnog ključa:"
msgstr "Lozinka privatnog ključa: "
#: js/ui/components/networkAgent.js:263
msgid "Service: "
msgstr "Usluga:"
msgstr "Usluga: "
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:638
msgid "Authentication required by wireless network"
@ -830,7 +896,7 @@ msgstr "Wired 802.1X ovjera"
#: js/ui/components/networkAgent.js:299
msgid "Network name: "
msgstr "Naziv mreže:"
msgstr "Naziv mreže: "
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:646
msgid "DSL authentication"
@ -846,7 +912,7 @@ msgstr "PIN kôd je potreban za uređaj mobilnog interneta"
#: js/ui/components/networkAgent.js:313
msgid "PIN: "
msgstr "PIN:"
msgstr "PIN: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:659
msgid "Mobile broadband network password"
@ -858,7 +924,7 @@ msgstr "Lozinka mreže mobilnog interneta"
msgid "A password is required to connect to “%s”."
msgstr "Potrebna je lozinka za povezivanje s “%s”."
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1760
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1720
msgid "Network Manager"
msgstr "Mrežni upravitelj"
@ -889,7 +955,7 @@ msgstr "Nažalost, to ne radi. Pokušajte ponovno."
msgid "%s is now known as %s"
msgstr "%s je poznat kao %s"
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:179
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:186
msgid "Windows"
msgstr "Prozori"
@ -920,7 +986,7 @@ msgstr "%e %b, %Y"
#: js/ui/dateMenu.js:144
msgid "Add world clocks…"
msgstr "Dodaj satove iz svijeta..."
msgstr "Dodaj satove iz svijeta"
#: js/ui/dateMenu.js:145
msgid "World Clocks"
@ -934,7 +1000,7 @@ msgstr "Vrijeme"
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:281
#: js/ui/dateMenu.js:286
#, javascript-format
msgid "%s all day."
msgstr "%s cijeli dan."
@ -943,7 +1009,7 @@ msgstr "%s cijeli dan."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:287
#: js/ui/dateMenu.js:292
#, javascript-format
msgid "%s, then %s later."
msgstr "%s, zatim %s kasnije."
@ -952,30 +1018,30 @@ msgstr "%s, zatim %s kasnije."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:293
#: js/ui/dateMenu.js:298
#, javascript-format
msgid "%s, then %s, followed by %s later."
msgstr "%s, zatim %s, praćena s %s kasnije."
#: js/ui/dateMenu.js:300
#: js/ui/dateMenu.js:309
msgid "Select a location…"
msgstr "Odaberi lokaciju..."
msgstr "Odaberi lokaciju"
#: js/ui/dateMenu.js:303
#: js/ui/dateMenu.js:312
msgid "Loading…"
msgstr "Pretraživanje…"
#. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:309
#: js/ui/dateMenu.js:318
#, javascript-format
msgid "Feels like %s."
msgstr "Kao da je %s."
#: js/ui/dateMenu.js:312
#: js/ui/dateMenu.js:321
msgid "Go online for weather information"
msgstr "Posjetite za opširnije vremenske informacije"
#: js/ui/dateMenu.js:314
#: js/ui/dateMenu.js:323
msgid "Weather information is currently unavailable"
msgstr "Vremenske informacije su trenutno nedostupne"
@ -1145,19 +1211,34 @@ msgstr "Instaliraj"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Preuzmi i instaliraj “%s” sa extensions.gnome.org?"
#: js/ui/keyboard.js:740 js/ui/status/keyboard.js:782
#. Translators: %s is an application name like "Settings"
#: js/ui/inhibitShortcutsDialog.js:59
#, javascript-format
msgid "%s wants to inhibit shortcuts"
msgstr "%s želi spriječiti prečac"
#: js/ui/inhibitShortcutsDialog.js:60
msgid "Application wants to inhibit shortcuts"
msgstr "Aplikacija želi spriječiti prečac"
#. Translators: %s is a keyboard shortcut like "Super+x"
#: js/ui/inhibitShortcutsDialog.js:69
#, javascript-format
msgid "You can restore shortcuts by pressing %s."
msgstr "Možete obnoviti prečac pritiskom na %s."
#: js/ui/inhibitShortcutsDialog.js:74
msgid "Deny"
msgstr "Spriječi"
#: js/ui/inhibitShortcutsDialog.js:80
msgid "Allow"
msgstr "Dopusti"
#: js/ui/keyboard.js:738 js/ui/status/keyboard.js:782
msgid "Keyboard"
msgstr "Tipkovnica"
#. translators: 'Hide' is a verb
#: js/ui/legacyTray.js:65
msgid "Hide tray"
msgstr "Sakrij traku stanja"
#: js/ui/legacyTray.js:106
msgid "Status Icons"
msgstr "Ikona stanja"
#: js/ui/lookingGlass.js:642
msgid "No extensions installed"
msgstr "Nema instaliranih proširenja"
@ -1234,11 +1315,11 @@ msgstr "Pregled"
#. characters.
#: js/ui/overview.js:240
msgid "Type to search…"
msgstr "Upiši za pretragu..."
msgstr "Upiši za pretragu"
#: js/ui/padOsd.js:103
msgid "New shortcut…"
msgstr "Novi prečac..."
msgstr "Novi prečac"
#: js/ui/padOsd.js:152
msgid "Application defined"
@ -1262,7 +1343,7 @@ msgstr "Završeno"
#: js/ui/padOsd.js:734
msgid "Edit…"
msgstr "Uredi..."
msgstr "Uredi"
#: js/ui/padOsd.js:774 js/ui/padOsd.js:879
msgid "None"
@ -1306,7 +1387,7 @@ msgstr "Gornja traka"
#. simply result in invisible toggle switches.
#: js/ui/popupMenu.js:291
msgid "toggle-switch-us"
msgstr ""
msgstr "toggle-switch-us"
#: js/ui/runDialog.js:71
msgid "Enter a Command"
@ -1322,7 +1403,7 @@ msgstr "Ponovno pokretanje nije dostupno na Waylandu"
#: js/ui/runDialog.js:282
msgid "Restarting…"
msgstr "Ponovno pokretanje..."
msgstr "Ponovno pokretanje"
#. Translators: This is a time format for a date in
#. long format
@ -1346,7 +1427,7 @@ msgstr[0] "%d nova obavijest"
msgstr[1] "%d nove obavijesti"
msgstr[2] "%d novih obavijesti"
#: js/ui/screenShield.js:452 js/ui/status/system.js:415
#: js/ui/screenShield.js:452 js/ui/status/system.js:284
msgid "Lock"
msgstr "Zaključaj"
@ -1377,10 +1458,13 @@ msgstr "Pretraživanje…"
msgid "No results."
msgstr "Nema rezultata."
#: js/ui/search.js:768
#: js/ui/search.js:777
#, javascript-format
msgid "%d more"
msgstr "Još %d"
msgid_plural "%d more"
msgstr[0] "Još %d"
msgstr[1] "Još %d"
msgstr[2] "Još %d"
#: js/ui/shellEntry.js:25
msgid "Copy"
@ -1454,7 +1538,7 @@ msgstr "Velik tekst"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:638
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627
msgid "Bluetooth Settings"
msgstr "Bluetooth postavke"
@ -1475,13 +1559,13 @@ msgstr "Isključeno"
msgid "On"
msgstr "Uključeno"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1310
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1299
msgid "Turn On"
msgstr "Uključi"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:181
#: js/ui/status/network.js:367 js/ui/status/network.js:1310
#: js/ui/status/network.js:1429 js/ui/status/nightLight.js:47
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:170
#: js/ui/status/network.js:356 js/ui/status/network.js:1299
#: js/ui/status/network.js:1418 js/ui/status/nightLight.js:47
#: js/ui/status/rfkill.js:90 js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Isključi"
@ -1534,13 +1618,13 @@ msgid "<unknown>"
msgstr "<nepoznato>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:465 js/ui/status/network.js:1339
#: js/ui/status/network.js:454 js/ui/status/network.js:1328
#, javascript-format
msgid "%s Off"
msgstr "%s isključena"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:468
#: js/ui/status/network.js:457
#, javascript-format
msgid "%s Connected"
msgstr "%s povezana"
@ -1548,165 +1632,164 @@ msgstr "%s povezana"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu);
#. %s is a network identifier
#: js/ui/status/network.js:473
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s neupravljana"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:476
#: js/ui/status/network.js:465
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s prekidanje povezivanja"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:483 js/ui/status/network.js:1331
#: js/ui/status/network.js:472 js/ui/status/network.js:1320
#, javascript-format
msgid "%s Connecting"
msgstr "%s povezivanje"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:486
#: js/ui/status/network.js:475
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s zahtijeva ovjeru"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:494
#: js/ui/status/network.js:483
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Nedostaje firmver za %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:498
#: js/ui/status/network.js:487
#, javascript-format
msgid "%s Unavailable"
msgstr "%s nedostupna"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:501
#: js/ui/status/network.js:490
#, javascript-format
msgid "%s Connection Failed"
msgstr "%s neuspješno povezivanje"
#: js/ui/status/network.js:517
#: js/ui/status/network.js:506
msgid "Wired Settings"
msgstr "Postavke žične mreže"
#: js/ui/status/network.js:559
#: js/ui/status/network.js:548
msgid "Mobile Broadband Settings"
msgstr "Mobilni internet"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:602 js/ui/status/network.js:1336
#: js/ui/status/network.js:591 js/ui/status/network.js:1325
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s hardverski onemogućena"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:606
#: js/ui/status/network.js:595
#, javascript-format
msgid "%s Disabled"
msgstr "%s onemogućeno"
#: js/ui/status/network.js:646
#: js/ui/status/network.js:635
msgid "Connect to Internet"
msgstr "Povežite se na internet"
#: js/ui/status/network.js:844
#: js/ui/status/network.js:833
msgid "Airplane Mode is On"
msgstr "Zrakoplovni način rada je omogućen"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:834
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Bežična mreža je onemogućena u zrakoplovnom načinu rada."
#: js/ui/status/network.js:846
#: js/ui/status/network.js:835
msgid "Turn Off Airplane Mode"
msgstr "Isključi zrakoplovni način rada"
#: js/ui/status/network.js:855
#: js/ui/status/network.js:844
msgid "Wi-Fi is Off"
msgstr "Bežična mreža isključena"
#: js/ui/status/network.js:856
#: js/ui/status/network.js:845
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Bežična mreža se mora uključiti kako bi se povezala s internetom."
#: js/ui/status/network.js:857
#: js/ui/status/network.js:846
msgid "Turn On Wi-Fi"
msgstr "Uključi bežičnu mrežu"
#: js/ui/status/network.js:882
#: js/ui/status/network.js:871
msgid "Wi-Fi Networks"
msgstr "Bežične mreže"
#: js/ui/status/network.js:884
#: js/ui/status/network.js:873
msgid "Select a network"
msgstr "Odaberi mrežu"
#: js/ui/status/network.js:914
#: js/ui/status/network.js:903
msgid "No Networks"
msgstr "Nema mreža"
#: js/ui/status/network.js:935 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:924 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "Koristi hardverski prekidač za isključivanje"
#: js/ui/status/network.js:1202
#: js/ui/status/network.js:1191
msgid "Select Network"
msgstr "Odaberi mrežu"
#: js/ui/status/network.js:1208
#: js/ui/status/network.js:1197
msgid "Wi-Fi Settings"
msgstr "Postavke bežične mreže"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1327
#: js/ui/status/network.js:1316
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s pristupna točka aktivna"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1342
#: js/ui/status/network.js:1331
#, javascript-format
msgid "%s Not Connected"
msgstr "%s nije povezana"
#: js/ui/status/network.js:1446
#: js/ui/status/network.js:1435
msgid "connecting…"
msgstr "povezivanje…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1449
#: js/ui/status/network.js:1438
msgid "authentication required"
msgstr "potrebna je ovjera"
#: js/ui/status/network.js:1451
#: js/ui/status/network.js:1440
msgid "connection failed"
msgstr "neuspješno povezivanje"
#: js/ui/status/network.js:1517 js/ui/status/network.js:1612
#: js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Mrežne postavke"
#: js/ui/status/network.js:1519
#: js/ui/status/network.js:1494
msgid "VPN Settings"
msgstr "VPN postavke"
#: js/ui/status/network.js:1538
#: js/ui/status/network.js:1498
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1548
#: js/ui/status/network.js:1508
msgid "VPN Off"
msgstr "VPN isključen"
#: js/ui/status/network.js:1643
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Mrežne postavke"
#: js/ui/status/network.js:1603
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
@ -1714,7 +1797,7 @@ msgstr[0] "%s žično povezivanje"
msgstr[1] "%s žična povezivanja"
msgstr[2] "%s žičnih povezivanja"
#: js/ui/status/network.js:1647
#: js/ui/status/network.js:1607
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
@ -1722,7 +1805,7 @@ msgstr[0] "%s bežično povezivanje"
msgstr[1] "%s bežična povezivanja"
msgstr[2] "%s bežičnih povezivanja"
#: js/ui/status/network.js:1651
#: js/ui/status/network.js:1611
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
@ -1730,11 +1813,11 @@ msgstr[0] "%s modemsko povezivanje"
msgstr[1] "%s modemska povezivanja"
msgstr[2] "%s modemskih povezivanja"
#: js/ui/status/network.js:1799
#: js/ui/status/network.js:1759
msgid "Connection failed"
msgstr "Neuspješno povezivanje"
#: js/ui/status/network.js:1800
#: js/ui/status/network.js:1760
msgid "Activation of network connection failed"
msgstr "Aktiviranje mrežnog povezivanja je neuspjelo"
@ -1766,7 +1849,7 @@ msgstr "Potpuno napunjeno"
#. to estimate battery life
#: js/ui/status/power.js:84 js/ui/status/power.js:90
msgid "Estimating…"
msgstr "Procjenjivanje..."
msgstr "Procjenjivanje"
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
#: js/ui/status/power.js:98
@ -1792,27 +1875,27 @@ msgstr "%d%%"
msgid "Airplane Mode On"
msgstr "Zrakoplovni način rada uključen"
#: js/ui/status/system.js:384
#: js/ui/status/system.js:228
msgid "Switch User"
msgstr "Zamijeni korisnika"
#: js/ui/status/system.js:389
#: js/ui/status/system.js:240
msgid "Log Out"
msgstr "Odjava"
#: js/ui/status/system.js:394
#: js/ui/status/system.js:252
msgid "Account Settings"
msgstr "Postavke računa"
#: js/ui/status/system.js:411
#: js/ui/status/system.js:269
msgid "Orientation Lock"
msgstr "Zaključavanje orjentacije"
#: js/ui/status/system.js:419
#: js/ui/status/system.js:295
msgid "Suspend"
msgstr "Suspendiraj"
#: js/ui/status/system.js:422
#: js/ui/status/system.js:305
msgid "Power Off"
msgstr "Isključivanje"
@ -1824,6 +1907,34 @@ msgstr "Glasnoća zvuka promijenjena"
msgid "Volume"
msgstr "Glasnoća zvuka"
#. Translators: this is for display mirroring i.e. cloning.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:21
msgid "Mirror"
msgstr "Zrcaljenje"
#. Translators: this is for the desktop spanning displays.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:26
msgid "Join Displays"
msgstr "Spoji zaslone"
#. Translators: this is for using only an external display.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:31
msgid "External Only"
msgstr "Samo vanjski"
#. Translators: this is for using only the laptop display.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:36
msgid "Built-in Only"
msgstr "Samo ugrađeni"
#: js/ui/unlockDialog.js:67
msgid "Log in as another user"
msgstr "Prijavi se kao drugi korisnik"
@ -1832,11 +1943,11 @@ msgstr "Prijavi se kao drugi korisnik"
msgid "Unlock Window"
msgstr "Otključaj prozor"
#: js/ui/viewSelector.js:183
#: js/ui/viewSelector.js:190
msgid "Applications"
msgstr "Aplikacije"
#: js/ui/viewSelector.js:187
#: js/ui/viewSelector.js:194
msgid "Search"
msgstr "Pretraži"
@ -1845,22 +1956,22 @@ msgstr "Pretraži"
msgid "“%s” is ready"
msgstr "“%s” je spreman"
#: js/ui/windowManager.js:71
#: js/ui/windowManager.js:72
msgid "Do you want to keep these display settings?"
msgstr "Želite li zadržati ove postavke zaslona?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#.
#: js/ui/windowManager.js:83
#: js/ui/windowManager.js:84
msgid "Revert Settings"
msgstr "Vrati postavke"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:87
msgid "Keep Changes"
msgstr "Zadrži promjene"
#: js/ui/windowManager.js:104
#: js/ui/windowManager.js:105
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -1870,7 +1981,7 @@ msgstr[2] "Promjene postavka će se vratiti za %d sekundi"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:659
#: js/ui/windowManager.js:660
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -1948,19 +2059,19 @@ msgstr "Evolution kalendar"
msgid "evolution"
msgstr "evolution"
#: src/main.c:372
#: src/main.c:380
msgid "Print version"
msgstr "Ispiši inačicu"
#: src/main.c:378
#: src/main.c:386
msgid "Mode used by GDM for login screen"
msgstr "Način koji koristi GDM za zaslon prijave"
#: src/main.c:384
#: src/main.c:392
msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Koristi određen način, npr. \"gdm\" za zaslon prijave"
#: src/main.c:390
#: src/main.c:398
msgid "List possible modes"
msgstr "Popis mogućih načina"
@ -2010,6 +2121,12 @@ msgstr[2] "%u ulaza"
msgid "System Sounds"
msgstr "Zvukovi sustava"
#~ msgid "Hide tray"
#~ msgstr "Sakrij traku stanja"
#~ msgid "Status Icons"
#~ msgstr "Ikona stanja"
#~ msgid "GNOME Shell Extension Preferences"
#~ msgstr "Osobitosti proširenja GNOME ljuske"

553
po/hu.po

File diff suppressed because it is too large Load Diff

401
po/id.po
View File

@ -2,7 +2,7 @@
# Copyright (C) 2010 THE gnome-shell'S COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell package.
#
# Andika Triwidada <andika@gmail.com>, 2010, 2011, 2012, 2013, 2014.
# Andika Triwidada <andika@gmail.com>, 2010-2014, 2017.
# Dirgita <dirgitadevina@yahoo.co.id>, 2011, 2012, 2014.
# Wibiharto <wibinem@yahoo.com>, 2011.
msgid ""
@ -10,16 +10,16 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-07-16 17:31+0000\n"
"PO-Revision-Date: 2017-07-17 10:54+0700\n"
"Last-Translator: Kukuh Syafaat <syafaatkukuh@gmail.com>\n"
"POT-Creation-Date: 2017-08-22 11:17+0000\n"
"PO-Revision-Date: 2017-08-23 00:03+0700\n"
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
"Language: id\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 2.0.2\n"
"X-Generator: Poedit 2.0.3\n"
"X-DamnedLies-Scope: partial\n"
"X-Poedit-SourceCharset: UTF-8\n"
@ -342,8 +342,8 @@ msgstr "Ada galat saat memuat dialog preferensi bagi %s:"
#: js/gdm/authPrompt.js:149 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:195
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:947
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:936
msgid "Cancel"
msgstr "Batal"
@ -404,6 +404,72 @@ msgstr "Galat otentikasi"
msgid "(or swipe finger)"
msgstr "(atau gesekkan jari)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:99
msgctxt "search-result"
msgid "Power off"
msgstr "Matikan"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:102
msgid "power off;shutdown"
msgstr "matikan"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:106
msgctxt "search-result"
msgid "Lock screen"
msgstr "Kunci layar"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:109
msgid "lock screen"
msgstr "kunci layar"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Log out"
msgstr "Keluar"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:116
msgid "logout;sign off"
msgstr "keluar"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:120
msgctxt "search-result"
msgid "Suspend"
msgstr "Suspensi"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:123
msgid "suspend;sleep"
msgstr "suspensi;tidur"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:127
msgctxt "search-result"
msgid "Switch user"
msgstr "Ganti pengguna"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:130
msgid "switch user"
msgstr "ganti pengguna"
#. Translators: The name of the lock orientation action in search
#: js/misc/systemActions.js:134
msgctxt "search-result"
msgid "Lock orientation"
msgstr "Kunci orientasi"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:137
msgid "lock orientation"
msgstr "kunci orientasi"
#: js/misc/util.js:122
msgid "Command not found"
msgstr "Perintah tidak ditemukan"
@ -557,35 +623,35 @@ msgstr "Tolak Akses"
msgid "Grant Access"
msgstr "Beri Akses"
#: js/ui/appDisplay.js:813
#: js/ui/appDisplay.js:809
msgid "Frequently used applications will appear here"
msgstr "Aplikasi yang sering dipakai akan muncul di sini"
#: js/ui/appDisplay.js:934
#: js/ui/appDisplay.js:930
msgid "Frequent"
msgstr "Sering"
#: js/ui/appDisplay.js:941
#: js/ui/appDisplay.js:937
msgid "All"
msgstr "Semua"
#: js/ui/appDisplay.js:1902
#: js/ui/appDisplay.js:1915
msgid "New Window"
msgstr "Jendela Baru"
#: js/ui/appDisplay.js:1916
#: js/ui/appDisplay.js:1929
msgid "Launch using Dedicated Graphics Card"
msgstr "Luncurkan menggunakan Kartu Grafis Terdedikasi"
#: js/ui/appDisplay.js:1943 js/ui/dash.js:289
#: js/ui/appDisplay.js:1956 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Hapus dari Favorit"
#: js/ui/appDisplay.js:1949
#: js/ui/appDisplay.js:1962
msgid "Add to Favorites"
msgstr "Tambah ke Favorit"
#: js/ui/appDisplay.js:1959
#: js/ui/appDisplay.js:1972
msgid "Show Details"
msgstr "Tampilkan Rincian"
@ -627,7 +693,7 @@ msgstr "Ubah Latar…"
msgid "Display Settings"
msgstr "Pengaturan Tampilan"
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:407
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:265
msgid "Settings"
msgstr "Pengaturan"
@ -761,7 +827,7 @@ msgstr "Drive eksternal tersambung"
msgid "External drive disconnected"
msgstr "Drive eksternal terputus"
#: js/ui/components/autorunManager.js:355
#: js/ui/components/autorunManager.js:354
#, javascript-format
msgid "Open with %s"
msgstr "Buka dengan %s"
@ -774,8 +840,8 @@ msgstr "Sandi:"
msgid "Type again:"
msgstr "Ketik lagi:"
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:272
#: js/ui/status/network.js:366 js/ui/status/network.js:950
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:261
#: js/ui/status/network.js:355 js/ui/status/network.js:939
msgid "Connect"
msgstr "Sambung"
@ -850,7 +916,7 @@ msgstr "Sandi jaringan data seluler"
msgid "A password is required to connect to “%s”."
msgstr "Perlu suatu sandi untuk menyambung ke \"%s\"."
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1760
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1720
msgid "Network Manager"
msgstr "Manajer Jaringan"
@ -881,7 +947,7 @@ msgstr "Maaf, tidak berhasil. Silakan coba lagi."
msgid "%s is now known as %s"
msgstr "%s sekarang dikenal sebagai %s"
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:179
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:186
msgid "Windows"
msgstr "Jendela"
@ -926,7 +992,7 @@ msgstr "Cuaca"
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:281
#: js/ui/dateMenu.js:286
#, javascript-format
msgid "%s all day."
msgstr "%s sepanjang hari."
@ -935,7 +1001,7 @@ msgstr "%s sepanjang hari."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:287
#: js/ui/dateMenu.js:292
#, javascript-format
msgid "%s, then %s later."
msgstr "%s, kemudian %s."
@ -944,30 +1010,30 @@ msgstr "%s, kemudian %s."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:293
#: js/ui/dateMenu.js:298
#, javascript-format
msgid "%s, then %s, followed by %s later."
msgstr "%s, kemudian %s, diikuti dengan %s nanti."
#: js/ui/dateMenu.js:300
#: js/ui/dateMenu.js:309
msgid "Select a location…"
msgstr "Pilih lokasi…"
#: js/ui/dateMenu.js:303
#: js/ui/dateMenu.js:312
msgid "Loading…"
msgstr "Memuat…"
#. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:309
#: js/ui/dateMenu.js:318
#, javascript-format
msgid "Feels like %s."
msgstr "Terasa seperti %s."
#: js/ui/dateMenu.js:312
#: js/ui/dateMenu.js:321
msgid "Go online for weather information"
msgstr "Pergi daring untuk informasi cuaca"
#: js/ui/dateMenu.js:314
#: js/ui/dateMenu.js:323
msgid "Weather information is currently unavailable"
msgstr "Informasi cuaca saat ini tidak tersedia"
@ -1113,28 +1179,43 @@ msgstr "%s (jarak jauh)"
msgid "%s (console)"
msgstr "%s (konsol)"
#: js/ui/extensionDownloader.js:199
#: js/ui/extensionDownloader.js:201
msgid "Install"
msgstr "Pasang"
#: js/ui/extensionDownloader.js:204
#: js/ui/extensionDownloader.js:206
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?"
#: js/ui/keyboard.js:740 js/ui/status/keyboard.js:782
#. Translators: %s is an application name like "Settings"
#: js/ui/inhibitShortcutsDialog.js:59
#, javascript-format
msgid "%s wants to inhibit shortcuts"
msgstr "%s ingin mencegah pintasan"
#: js/ui/inhibitShortcutsDialog.js:60
msgid "Application wants to inhibit shortcuts"
msgstr "Aplikasi ingin mencegah pintasan"
#. Translators: %s is a keyboard shortcut like "Super+x"
#: js/ui/inhibitShortcutsDialog.js:69
#, javascript-format
msgid "You can restore shortcuts by pressing %s."
msgstr "Anda dapat memulihkan pintasan dengan menekan %s."
#: js/ui/inhibitShortcutsDialog.js:74
msgid "Deny"
msgstr "Tolak"
#: js/ui/inhibitShortcutsDialog.js:80
msgid "Allow"
msgstr "Izinkan"
#: js/ui/keyboard.js:738 js/ui/status/keyboard.js:782
msgid "Keyboard"
msgstr "Papan Ketik"
#. translators: 'Hide' is a verb
#: js/ui/legacyTray.js:65
msgid "Hide tray"
msgstr "Sembunyikan baki"
#: js/ui/legacyTray.js:106
msgid "Status Icons"
msgstr "Ikon Status"
#: js/ui/lookingGlass.js:642
msgid "No extensions installed"
msgstr "Tak ada ekstensi terpasang"
@ -1159,7 +1240,7 @@ msgstr "Diaktifkan"
#. translators:
#. * The device has been disabled
#: js/ui/lookingGlass.js:718 src/gvc/gvc-mixer-control.c:1866
#: js/ui/lookingGlass.js:718 subprojects/gvc/gvc-mixer-control.c:1866
msgid "Disabled"
msgstr "Dinonaktifkan"
@ -1233,27 +1314,27 @@ msgstr "Ganti monitor"
msgid "Assign keystroke"
msgstr "Tetapkan keystroke"
#: js/ui/padOsd.js:209
#: js/ui/padOsd.js:220
msgid "Done"
msgstr "Selesai"
#: js/ui/padOsd.js:708
#: js/ui/padOsd.js:734
msgid "Edit…"
msgstr "Sunting…"
#: js/ui/padOsd.js:748 js/ui/padOsd.js:810
#: js/ui/padOsd.js:774 js/ui/padOsd.js:879
msgid "None"
msgstr "Nihil"
#: js/ui/padOsd.js:793
#: js/ui/padOsd.js:833
msgid "Press a button to configure"
msgstr "Tekan tombol untuk mengkonfigurasi"
#: js/ui/padOsd.js:794
#: js/ui/padOsd.js:834
msgid "Press Esc to exit"
msgstr "Tekan Esc untuk keluar"
#: js/ui/padOsd.js:797
#: js/ui/padOsd.js:837
msgid "Press any key to exit"
msgstr "Tekan tombol apa saja untuk keluar"
@ -1320,7 +1401,7 @@ msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "%d pemberitahuan baru"
#: js/ui/screenShield.js:452 js/ui/status/system.js:415
#: js/ui/screenShield.js:452 js/ui/status/system.js:284
msgid "Lock"
msgstr "Kunci"
@ -1351,10 +1432,11 @@ msgstr "Mencari…"
msgid "No results."
msgstr "Tak ada yang cocok."
#: js/ui/search.js:768
#: js/ui/search.js:777
#, javascript-format
msgid "%d more"
msgstr "%d lagi"
msgid_plural "%d more"
msgstr[0] "%d lagi"
#: js/ui/shellEntry.js:25
msgid "Copy"
@ -1428,7 +1510,7 @@ msgstr "Teks Besar"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:638
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627
msgid "Bluetooth Settings"
msgstr "Pengaturan Bluetooth"
@ -1447,13 +1529,13 @@ msgstr "Mati"
msgid "On"
msgstr "Hidup"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1310
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1299
msgid "Turn On"
msgstr "Nyalakan"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:181
#: js/ui/status/network.js:367 js/ui/status/network.js:1310
#: js/ui/status/network.js:1429 js/ui/status/nightLight.js:47
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:170
#: js/ui/status/network.js:356 js/ui/status/network.js:1299
#: js/ui/status/network.js:1418 js/ui/status/nightLight.js:47
#: js/ui/status/rfkill.js:90 js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Matikan"
@ -1505,13 +1587,13 @@ msgid "<unknown>"
msgstr "<tak dikenal>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:465 js/ui/status/network.js:1339
#: js/ui/status/network.js:454 js/ui/status/network.js:1328
#, javascript-format
msgid "%s Off"
msgstr "%s Mati"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:468
#: js/ui/status/network.js:457
#, javascript-format
msgid "%s Connected"
msgstr "%s Tersambung"
@ -1519,187 +1601,186 @@ msgstr "%s Tersambung"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu);
#. %s is a network identifier
#: js/ui/status/network.js:473
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s Tak Dikelola"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:476
#: js/ui/status/network.js:465
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s Memutus"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:483 js/ui/status/network.js:1331
#: js/ui/status/network.js:472 js/ui/status/network.js:1320
#, javascript-format
msgid "%s Connecting"
msgstr "%s Menyambung"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:486
#: js/ui/status/network.js:475
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s Memerlukan Otentikasi"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:494
#: js/ui/status/network.js:483
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Firmware Hilang Untuk %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:498
#: js/ui/status/network.js:487
#, javascript-format
msgid "%s Unavailable"
msgstr "%s Tak tersedia"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:501
#: js/ui/status/network.js:490
#, javascript-format
msgid "%s Connection Failed"
msgstr "Koneksi %s Gagal"
#: js/ui/status/network.js:517
#: js/ui/status/network.js:506
msgid "Wired Settings"
msgstr "Pengaturan Kabel"
#: js/ui/status/network.js:559
#: js/ui/status/network.js:548
msgid "Mobile Broadband Settings"
msgstr "Pengaturan Data Seluler"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:602 js/ui/status/network.js:1336
#: js/ui/status/network.js:591 js/ui/status/network.js:1325
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s Perangkat Keras Dinonaktifkan"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:606
#: js/ui/status/network.js:595
#, javascript-format
msgid "%s Disabled"
msgstr "%s Dinonaktifkan"
#: js/ui/status/network.js:646
#: js/ui/status/network.js:635
msgid "Connect to Internet"
msgstr "Sambungkan ke Internet"
#: js/ui/status/network.js:844
#: js/ui/status/network.js:833
msgid "Airplane Mode is On"
msgstr "Mode Pesawat Terbang Menyala"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:834
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Wi-Fi dinonaktifkan ketika mode pesawat terbang menyala."
#: js/ui/status/network.js:846
#: js/ui/status/network.js:835
msgid "Turn Off Airplane Mode"
msgstr "Matikan Mode Pesawat Terbang"
#: js/ui/status/network.js:855
#: js/ui/status/network.js:844
msgid "Wi-Fi is Off"
msgstr "Wi-Fi Mati"
#: js/ui/status/network.js:856
#: js/ui/status/network.js:845
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Wi-Fi perlu dinyalakan untuk menyambung ke suatu jaringan."
#: js/ui/status/network.js:857
#: js/ui/status/network.js:846
msgid "Turn On Wi-Fi"
msgstr "Nyalakan Wi-Fi"
#: js/ui/status/network.js:882
#: js/ui/status/network.js:871
msgid "Wi-Fi Networks"
msgstr "Jaringan Wi-Fi"
#: js/ui/status/network.js:884
#: js/ui/status/network.js:873
msgid "Select a network"
msgstr "Pilih jaringan"
#: js/ui/status/network.js:914
#: js/ui/status/network.js:903
msgid "No Networks"
msgstr "Tiada Jaringan"
#: js/ui/status/network.js:935 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:924 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "Pakai saklar perangkat keras untuk mematikan"
#: js/ui/status/network.js:1202
#: js/ui/status/network.js:1191
msgid "Select Network"
msgstr "Pilih Jaringan"
#: js/ui/status/network.js:1208
#: js/ui/status/network.js:1197
msgid "Wi-Fi Settings"
msgstr "Pengaturan Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1327
#: js/ui/status/network.js:1316
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s Hotspot Aktif"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1342
#: js/ui/status/network.js:1331
#, javascript-format
msgid "%s Not Connected"
msgstr "%s Tak Tersambung"
#: js/ui/status/network.js:1446
#: js/ui/status/network.js:1435
msgid "connecting…"
msgstr "menghubungi..."
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1449
#: js/ui/status/network.js:1438
msgid "authentication required"
msgstr "diperlukan otentikasi"
#: js/ui/status/network.js:1451
#: js/ui/status/network.js:1440
msgid "connection failed"
msgstr "koneksi gagal"
#: js/ui/status/network.js:1517 js/ui/status/network.js:1612
#: js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Pengaturan Jaringan"
#: js/ui/status/network.js:1519
#: js/ui/status/network.js:1494
msgid "VPN Settings"
msgstr "Pengaturan VPN"
#: js/ui/status/network.js:1538
#: js/ui/status/network.js:1498
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1548
#: js/ui/status/network.js:1508
msgid "VPN Off"
msgstr "VPN Mati"
#: js/ui/status/network.js:1643
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Pengaturan Jaringan"
#: js/ui/status/network.js:1603
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s Koneksi Kabel"
#: js/ui/status/network.js:1647
#: js/ui/status/network.js:1607
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s Koneksi Wi-Fi"
#: js/ui/status/network.js:1651
#: js/ui/status/network.js:1611
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s Koneksi Modem"
#: js/ui/status/network.js:1799
#: js/ui/status/network.js:1759
msgid "Connection failed"
msgstr "Koneksi gagal"
#: js/ui/status/network.js:1800
#: js/ui/status/network.js:1760
msgid "Activation of network connection failed"
msgstr "Aktivasi koneksi jaringan gagal"
@ -1757,27 +1838,27 @@ msgstr "%d%%"
msgid "Airplane Mode On"
msgstr "Mode Pesawat Terbang Aktif"
#: js/ui/status/system.js:384
#: js/ui/status/system.js:228
msgid "Switch User"
msgstr "Ganti Pengguna"
#: js/ui/status/system.js:389
#: js/ui/status/system.js:240
msgid "Log Out"
msgstr "Keluar"
#: js/ui/status/system.js:394
#: js/ui/status/system.js:252
msgid "Account Settings"
msgstr "Pengaturan Akun"
#: js/ui/status/system.js:411
#: js/ui/status/system.js:269
msgid "Orientation Lock"
msgstr "Kunci Orientasi"
#: js/ui/status/system.js:419
#: js/ui/status/system.js:295
msgid "Suspend"
msgstr "Suspensi"
#: js/ui/status/system.js:422
#: js/ui/status/system.js:305
msgid "Power Off"
msgstr "Matikan"
@ -1789,6 +1870,34 @@ msgstr "Volume diubah"
msgid "Volume"
msgstr "Volume"
#. Translators: this is for display mirroring i.e. cloning.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:21
msgid "Mirror"
msgstr "Kembar"
#. Translators: this is for the desktop spanning displays.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:26
msgid "Join Displays"
msgstr "Gabung Layar"
#. Translators: this is for using only an external display.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:31
msgid "External Only"
msgstr "Hanya Eksternal"
#. Translators: this is for using only the laptop display.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:36
msgid "Built-in Only"
msgstr "Hanya Bawaan"
#: js/ui/unlockDialog.js:67
msgid "Log in as another user"
msgstr "Masuk sebagai pengguna lain"
@ -1797,11 +1906,11 @@ msgstr "Masuk sebagai pengguna lain"
msgid "Unlock Window"
msgstr "Buka Kunci Jendela"
#: js/ui/viewSelector.js:183
#: js/ui/viewSelector.js:190
msgid "Applications"
msgstr "Aplikasi"
#: js/ui/viewSelector.js:187
#: js/ui/viewSelector.js:194
msgid "Search"
msgstr "Cari"
@ -1810,22 +1919,22 @@ msgstr "Cari"
msgid "“%s” is ready"
msgstr "'%s' siap"
#: js/ui/windowManager.js:71
#: js/ui/windowManager.js:72
msgid "Do you want to keep these display settings?"
msgstr "Apakah Anda ingin mempertahankan pengaturan tampilan ini?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#.
#: js/ui/windowManager.js:83
#: js/ui/windowManager.js:84
msgid "Revert Settings"
msgstr "Balikkan Tatanan"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:87
msgid "Keep Changes"
msgstr "Simpan Perubahan"
#: js/ui/windowManager.js:104
#: js/ui/windowManager.js:105
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -1833,7 +1942,7 @@ msgstr[0] "Perubahan tatanan akan dikembalikan dalam %d detik"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:659
#: js/ui/windowManager.js:660
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -1911,39 +2020,19 @@ msgstr "Evolution Kalender"
msgid "evolution"
msgstr "evolution"
#. translators:
#. * The number of sound outputs on a particular device
#: src/gvc/gvc-mixer-control.c:1873
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
msgstr[0] "%u Keluaran"
#. translators:
#. * The number of sound inputs on a particular device
#: src/gvc/gvc-mixer-control.c:1883
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u Masukan"
#: src/gvc/gvc-mixer-control.c:2738
msgid "System Sounds"
msgstr "Suara Sistem"
#: src/main.c:372
#: src/main.c:380
msgid "Print version"
msgstr "Versi Cetak"
#: src/main.c:378
#: src/main.c:386
msgid "Mode used by GDM for login screen"
msgstr "Mode yang dipakai oleh layar log masuk GDM"
#: src/main.c:384
#: src/main.c:392
msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk"
#: src/main.c:390
#: src/main.c:398
msgid "List possible modes"
msgstr "Menampilkan mode yang mungkin"
@ -1969,26 +2058,22 @@ msgstr "Sandi tidak boleh kosong"
msgid "Authentication dialog was dismissed by the user"
msgstr "Dialog otentikasi ditolak oleh pengguna"
#~ msgid "Events"
#~ msgstr "Kejadian"
#. translators:
#. * The number of sound outputs on a particular device
#: subprojects/gvc/gvc-mixer-control.c:1873
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
msgstr[0] "%u Keluaran"
#~ msgid "Notifications"
#~ msgstr "Pemberitahuan"
#. translators:
#. * The number of sound inputs on a particular device
#: subprojects/gvc/gvc-mixer-control.c:1883
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u Masukan"
#~ msgid "Clear section"
#~ msgstr "Bersihkan seksi"
#~ msgid "Media"
#~ msgstr "Media"
#~ msgid "GNOME Shell Extension Preferences"
#~ msgstr "Preferensi Ekstensi GNOME Shell"
#~ msgid "Web Authentication Redirect"
#~ msgstr "Pengalihan Otentikasi Web"
#~ msgid "%d x %d"
#~ msgstr "%d x %d"
#~ msgid "Not In Use"
#~ msgstr "Tidak Dipakai"
#: subprojects/gvc/gvc-mixer-control.c:2738
msgid "System Sounds"
msgstr "Suara Sistem"

1035
po/is.po

File diff suppressed because it is too large Load Diff

616
po/it.po

File diff suppressed because it is too large Load Diff

719
po/ja.po

File diff suppressed because it is too large Load Diff

321
po/kk.po
View File

@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-07-20 03:49+0000\n"
"PO-Revision-Date: 2017-07-27 17:09+0500\n"
"POT-Creation-Date: 2017-08-22 11:17+0000\n"
"PO-Revision-Date: 2017-08-22 19:22+0500\n"
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
"Language-Team: Kazakh <kk_KZ@googlegroups.com>\n"
"Language: kk\n"
@ -339,7 +339,7 @@ msgstr "%s үшін баптаулар сұхбатын жүктеу кезін
#: js/gdm/authPrompt.js:149 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:947
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:936
msgid "Cancel"
msgstr "Бас тарту"
@ -400,6 +400,72 @@ msgstr "Аутентификация қатесі"
msgid "(or swipe finger)"
msgstr "(немесе саусағыңызды өткізіңіз)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:99
msgctxt "search-result"
msgid "Power off"
msgstr "Сөндіру"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:102
msgid "power off;shutdown"
msgstr "сөндіру"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:106
msgctxt "search-result"
msgid "Lock screen"
msgstr "Экранды блоктау"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:109
msgid "lock screen"
msgstr "экранды блоктау"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Log out"
msgstr "Жүйеден шығу"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:116
msgid "logout;sign off"
msgstr "жүйеден шығу"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:120
msgctxt "search-result"
msgid "Suspend"
msgstr "Ұйықтату"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:123
msgid "suspend;sleep"
msgstr "ұйықтату"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:127
msgctxt "search-result"
msgid "Switch user"
msgstr "Пайдаланушыны ауыстыру"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:130
msgid "switch user"
msgstr "пайдаланушыны ауыстыру"
#. Translators: The name of the lock orientation action in search
#: js/misc/systemActions.js:134
msgctxt "search-result"
msgid "Lock orientation"
msgstr "Бағдарды бекіту"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:137
msgid "lock orientation"
msgstr "бағдарды бекіту"
#: js/misc/util.js:122
msgid "Command not found"
msgstr "Команда табылмады"
@ -553,35 +619,35 @@ msgstr "Тыйым салу"
msgid "Grant Access"
msgstr "Рұқсат ету"
#: js/ui/appDisplay.js:806
#: js/ui/appDisplay.js:809
msgid "Frequently used applications will appear here"
msgstr "Жиі қолданылатын қолданбалар осында көрінеді"
#: js/ui/appDisplay.js:927
#: js/ui/appDisplay.js:930
msgid "Frequent"
msgstr "Жиі қолданылатын"
#: js/ui/appDisplay.js:934
#: js/ui/appDisplay.js:937
msgid "All"
msgstr "Барлығы"
#: js/ui/appDisplay.js:1895
#: js/ui/appDisplay.js:1915
msgid "New Window"
msgstr "Жаңа терезе"
#: js/ui/appDisplay.js:1909
#: js/ui/appDisplay.js:1929
msgid "Launch using Dedicated Graphics Card"
msgstr "Бөлек графикалық картаны пайдаланып жөнелту"
#: js/ui/appDisplay.js:1936 js/ui/dash.js:289
#: js/ui/appDisplay.js:1956 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Таңдамалылардан өшіру"
#: js/ui/appDisplay.js:1942
#: js/ui/appDisplay.js:1962
msgid "Add to Favorites"
msgstr "Таңдамалыларға қосу"
#: js/ui/appDisplay.js:1952
#: js/ui/appDisplay.js:1972
msgid "Show Details"
msgstr "Деректерді көрсету"
@ -623,7 +689,7 @@ msgstr "Фонды өзгерту..."
msgid "Display Settings"
msgstr "Экран баптаулары"
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:407
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:265
msgid "Settings"
msgstr "Баптаулар"
@ -770,8 +836,8 @@ msgstr "Пароль:"
msgid "Type again:"
msgstr "Қайтадан енгізіңіз:"
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:272
#: js/ui/status/network.js:366 js/ui/status/network.js:950
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:261
#: js/ui/status/network.js:355 js/ui/status/network.js:939
msgid "Connect"
msgstr "Байланысу"
@ -845,7 +911,7 @@ msgstr "Сымсыз кеңжолақты желісінің паролі"
msgid "A password is required to connect to “%s”."
msgstr "\"%s\" үшін байланысты орнату үшін пароль керек."
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1760
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1720
msgid "Network Manager"
msgstr "Желілер басқарушысы"
@ -876,7 +942,7 @@ msgstr "Кешіріңіз, талап сәтсіз. Қайтадан көрің
msgid "%s is now known as %s"
msgstr "%s енді %s ретінде белгілі"
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:179
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:186
msgid "Windows"
msgstr "Терезелер"
@ -921,7 +987,7 @@ msgstr "Ауа райы"
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:281
#: js/ui/dateMenu.js:286
#, javascript-format
msgid "%s all day."
msgstr "%s күні бойы."
@ -930,7 +996,7 @@ msgstr "%s күні бойы."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:287
#: js/ui/dateMenu.js:292
#, javascript-format
msgid "%s, then %s later."
msgstr "%s, одан кейін %s."
@ -939,30 +1005,30 @@ msgstr "%s, одан кейін %s."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:293
#: js/ui/dateMenu.js:298
#, javascript-format
msgid "%s, then %s, followed by %s later."
msgstr "%s, одан кейін %s, одан кейін %s."
#: js/ui/dateMenu.js:300
#: js/ui/dateMenu.js:309
msgid "Select a location…"
msgstr "Орналасуды таңдаңыз…"
#: js/ui/dateMenu.js:303
#: js/ui/dateMenu.js:312
msgid "Loading…"
msgstr "Жүктеу…"
#. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:309
#: js/ui/dateMenu.js:318
#, javascript-format
msgid "Feels like %s."
msgstr "%s сияқты сезіледі."
#: js/ui/dateMenu.js:312
#: js/ui/dateMenu.js:321
msgid "Go online for weather information"
msgstr "Ауа райы ақпаратын алу үшін желіге байланысыңыз"
#: js/ui/dateMenu.js:314
#: js/ui/dateMenu.js:323
msgid "Weather information is currently unavailable"
msgstr "Ауа райы ақпараты ағымдағы уақытта қолжетерсіз"
@ -1118,19 +1184,34 @@ msgstr "Орнату"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "extensions.gnome.org адресінен \"%s\" жүктеп алып, орнату керек пе?"
#: js/ui/keyboard.js:740 js/ui/status/keyboard.js:782
#. Translators: %s is an application name like "Settings"
#: js/ui/inhibitShortcutsDialog.js:59
#, javascript-format
msgid "%s wants to inhibit shortcuts"
msgstr "%s жарлықтарды сөндіргісі келеді"
#: js/ui/inhibitShortcutsDialog.js:60
msgid "Application wants to inhibit shortcuts"
msgstr "Қолданба жарлықтарды сөндіргісі келеді"
#. Translators: %s is a keyboard shortcut like "Super+x"
#: js/ui/inhibitShortcutsDialog.js:69
#, javascript-format
msgid "You can restore shortcuts by pressing %s."
msgstr "Сіз жарлықтарды %s басу арқылы қалпына келтіре аласыз."
#: js/ui/inhibitShortcutsDialog.js:74
msgid "Deny"
msgstr "Тыйым салу"
#: js/ui/inhibitShortcutsDialog.js:80
msgid "Allow"
msgstr "Рұқсат ету"
#: js/ui/keyboard.js:738 js/ui/status/keyboard.js:782
msgid "Keyboard"
msgstr "Пернетақта"
#. translators: 'Hide' is a verb
#: js/ui/legacyTray.js:65
msgid "Hide tray"
msgstr "Жүйелік трейді жасыру"
#: js/ui/legacyTray.js:106
msgid "Status Icons"
msgstr "Қалып-күй таңбашалары"
#: js/ui/lookingGlass.js:642
msgid "No extensions installed"
msgstr "Кеңейтулер орнатылмаған"
@ -1315,7 +1396,7 @@ msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "%d жаңа ескерту"
#: js/ui/screenShield.js:452 js/ui/status/system.js:415
#: js/ui/screenShield.js:452 js/ui/status/system.js:284
msgid "Lock"
msgstr "Блоктау"
@ -1346,10 +1427,11 @@ msgstr "Іздеу..."
msgid "No results."
msgstr "Нәтижелер жоқ."
#: js/ui/search.js:768
#: js/ui/search.js:777
#, javascript-format
msgid "%d more"
msgstr "тағы %d"
msgid_plural "%d more"
msgstr[0] "тағы %d"
#: js/ui/shellEntry.js:25
msgid "Copy"
@ -1423,7 +1505,7 @@ msgstr "Үлкен мәтін"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:638
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627
msgid "Bluetooth Settings"
msgstr "Bluetooth баптаулары"
@ -1442,13 +1524,13 @@ msgstr "Сөнд."
msgid "On"
msgstr "Іске қос."
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1310
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1299
msgid "Turn On"
msgstr "Іске қосу"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:181
#: js/ui/status/network.js:367 js/ui/status/network.js:1310
#: js/ui/status/network.js:1429 js/ui/status/nightLight.js:47
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:170
#: js/ui/status/network.js:356 js/ui/status/network.js:1299
#: js/ui/status/network.js:1418 js/ui/status/nightLight.js:47
#: js/ui/status/rfkill.js:90 js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Сөндіру"
@ -1502,13 +1584,13 @@ msgid "<unknown>"
msgstr "<белгісіз>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:465 js/ui/status/network.js:1339
#: js/ui/status/network.js:454 js/ui/status/network.js:1328
#, javascript-format
msgid "%s Off"
msgstr "%s сөндірулі"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:468
#: js/ui/status/network.js:457
#, javascript-format
msgid "%s Connected"
msgstr "%s байланысқан"
@ -1516,187 +1598,186 @@ msgstr "%s байланысқан"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu);
#. %s is a network identifier
#: js/ui/status/network.js:473
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s басқарылмайтын"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:476
#: js/ui/status/network.js:465
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s байланысты үзуде"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:483 js/ui/status/network.js:1331
#: js/ui/status/network.js:472 js/ui/status/network.js:1320
#, javascript-format
msgid "%s Connecting"
msgstr "%s байланысуда"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:486
#: js/ui/status/network.js:475
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s аутентификацияны талап етеді"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:494
#: js/ui/status/network.js:483
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "%s үшін бинарлы кодтары жоқ"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:498
#: js/ui/status/network.js:487
#, javascript-format
msgid "%s Unavailable"
msgstr "%s қолжетерсіз"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:501
#: js/ui/status/network.js:490
#, javascript-format
msgid "%s Connection Failed"
msgstr "%s байланысын орнату сәтсіз"
#: js/ui/status/network.js:517
#: js/ui/status/network.js:506
msgid "Wired Settings"
msgstr "Сымды желі баптаулары"
#: js/ui/status/network.js:559
#: js/ui/status/network.js:548
msgid "Mobile Broadband Settings"
msgstr "Сымсыз кеңжолақты желісінің баптаулары"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:602 js/ui/status/network.js:1336
#: js/ui/status/network.js:591 js/ui/status/network.js:1325
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s құрылғылық түрде сөндірулі тұр"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:606
#: js/ui/status/network.js:595
#, javascript-format
msgid "%s Disabled"
msgstr "%s сөндірулі тұр"
#: js/ui/status/network.js:646
#: js/ui/status/network.js:635
msgid "Connect to Internet"
msgstr "Интернетке байланысу"
#: js/ui/status/network.js:844
#: js/ui/status/network.js:833
msgid "Airplane Mode is On"
msgstr "Ұшақтағы режим іске қосылған"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:834
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Wi-Fi ұшақтағы режимі кезінде сөндірілген болады."
#: js/ui/status/network.js:846
#: js/ui/status/network.js:835
msgid "Turn Off Airplane Mode"
msgstr "Ұшақтағы режимді сөндіру"
#: js/ui/status/network.js:855
#: js/ui/status/network.js:844
msgid "Wi-Fi is Off"
msgstr "Wi-Fi сөндірілген"
#: js/ui/status/network.js:856
#: js/ui/status/network.js:845
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Желіге байланысты орнату үшін Wi-Fi іске қосылған болуы тиіс."
#: js/ui/status/network.js:857
#: js/ui/status/network.js:846
msgid "Turn On Wi-Fi"
msgstr "Wi-Fi іске қосу"
#: js/ui/status/network.js:882
#: js/ui/status/network.js:871
msgid "Wi-Fi Networks"
msgstr "Wi-Fi желілері"
#: js/ui/status/network.js:884
#: js/ui/status/network.js:873
msgid "Select a network"
msgstr "Желіні таңдау"
#: js/ui/status/network.js:914
#: js/ui/status/network.js:903
msgid "No Networks"
msgstr "Желілер жоқ"
#: js/ui/status/network.js:935 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:924 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "Сөндіру үшін құрылғылық қосқышты қолданыңыз"
#: js/ui/status/network.js:1202
#: js/ui/status/network.js:1191
msgid "Select Network"
msgstr "Желіні таңдау"
#: js/ui/status/network.js:1208
#: js/ui/status/network.js:1197
msgid "Wi-Fi Settings"
msgstr "Wi-Fi баптаулары"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1327
#: js/ui/status/network.js:1316
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s қатынау нүктесі белсенді"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1342
#: js/ui/status/network.js:1331
#, javascript-format
msgid "%s Not Connected"
msgstr "%s байланыспаған"
#: js/ui/status/network.js:1446
#: js/ui/status/network.js:1435
msgid "connecting…"
msgstr "байланысты орнату…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1449
#: js/ui/status/network.js:1438
msgid "authentication required"
msgstr "аутентификация керек"
#: js/ui/status/network.js:1451
#: js/ui/status/network.js:1440
msgid "connection failed"
msgstr "байланысты орнату сәтсіз"
#: js/ui/status/network.js:1517 js/ui/status/network.js:1612
#: js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Желі баптаулары"
#: js/ui/status/network.js:1519
#: js/ui/status/network.js:1494
msgid "VPN Settings"
msgstr "VPN баптаулары"
#: js/ui/status/network.js:1538
#: js/ui/status/network.js:1498
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1548
#: js/ui/status/network.js:1508
msgid "VPN Off"
msgstr "VPN сөндірілген"
#: js/ui/status/network.js:1643
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Желі баптаулары"
#: js/ui/status/network.js:1603
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s сымды желі байланысы"
#: js/ui/status/network.js:1647
#: js/ui/status/network.js:1607
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s Wi-Fi желі байланысы"
#: js/ui/status/network.js:1651
#: js/ui/status/network.js:1611
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s модем желі байланысы"
#: js/ui/status/network.js:1799
#: js/ui/status/network.js:1759
msgid "Connection failed"
msgstr "Байланыс орнату сәтсіз"
#: js/ui/status/network.js:1800
#: js/ui/status/network.js:1760
msgid "Activation of network connection failed"
msgstr "Желілік байланысты белсендіру сәтсіз"
@ -1754,27 +1835,27 @@ msgstr "%d%%"
msgid "Airplane Mode On"
msgstr "Ұшақтағы режим іске қосулы"
#: js/ui/status/system.js:384
#: js/ui/status/system.js:228
msgid "Switch User"
msgstr "Пайдаланушыны ауыстыру"
#: js/ui/status/system.js:389
#: js/ui/status/system.js:240
msgid "Log Out"
msgstr "Жүйеден шығу"
#: js/ui/status/system.js:394
#: js/ui/status/system.js:252
msgid "Account Settings"
msgstr "Тіркелгі баптаулары"
#: js/ui/status/system.js:411
#: js/ui/status/system.js:269
msgid "Orientation Lock"
msgstr "Бағдарды бекіту"
#: js/ui/status/system.js:419
#: js/ui/status/system.js:295
msgid "Suspend"
msgstr "Ұйықтату"
#: js/ui/status/system.js:422
#: js/ui/status/system.js:305
msgid "Power Off"
msgstr "Сөндіру"
@ -1786,6 +1867,34 @@ msgstr "Дыбыс өзгертілді"
msgid "Volume"
msgstr "Дыбыс деңгейі"
#. Translators: this is for display mirroring i.e. cloning.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:21
msgid "Mirror"
msgstr "Айналы"
#. Translators: this is for the desktop spanning displays.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:26
msgid "Join Displays"
msgstr "Экран­дарды біріктіру"
#. Translators: this is for using only an external display.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:31
msgid "External Only"
msgstr "Тек сыртқы"
#. Translators: this is for using only the laptop display.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:36
msgid "Built-in Only"
msgstr "Тек құрамындағы"
#: js/ui/unlockDialog.js:67
msgid "Log in as another user"
msgstr "Басқа пайдаланушы ретінде жүйеге кіру"
@ -1794,11 +1903,11 @@ msgstr "Басқа пайдаланушы ретінде жүйеге кіру"
msgid "Unlock Window"
msgstr "Блоктауды алу терезесі"
#: js/ui/viewSelector.js:183
#: js/ui/viewSelector.js:190
msgid "Applications"
msgstr "Қолданбалар"
#: js/ui/viewSelector.js:187
#: js/ui/viewSelector.js:194
msgid "Search"
msgstr "Іздеу"
@ -1807,22 +1916,22 @@ msgstr "Іздеу"
msgid "“%s” is ready"
msgstr "\"%s\" дайын"
#: js/ui/windowManager.js:71
#: js/ui/windowManager.js:72
msgid "Do you want to keep these display settings?"
msgstr "Экранның бұл баптауларын сақтауды қалайсыз ба?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#.
#: js/ui/windowManager.js:83
#: js/ui/windowManager.js:84
msgid "Revert Settings"
msgstr "Баптауларды қалпына келтіру"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:87
msgid "Keep Changes"
msgstr "Өзгерістерді сақтау"
#: js/ui/windowManager.js:104
#: js/ui/windowManager.js:105
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -1830,7 +1939,7 @@ msgstr[0] "Өзгертілген баптаулар %d секундтан ке
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:659
#: js/ui/windowManager.js:660
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -1908,19 +2017,19 @@ msgstr "Evolution күнтізбесі"
msgid "evolution"
msgstr "evolution"
#: src/main.c:372
#: src/main.c:380
msgid "Print version"
msgstr "Баспа нұсқасы"
#: src/main.c:378
#: src/main.c:386
msgid "Mode used by GDM for login screen"
msgstr "GDM жүйеге кіру экраны үшін қолданатын режимі"
#: src/main.c:384
#: src/main.c:392
msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Жүйеге кіру экраны үшін арнайы режимді, мыс. \"gdm\", қолдану"
#: src/main.c:390
#: src/main.c:398
msgid "List possible modes"
msgstr "Қолжетерлік режимдерді тізіп шығу"
@ -1966,6 +2075,12 @@ msgstr[0] "%u кірісі"
msgid "System Sounds"
msgstr "Жүйелік дыбыстар"
#~ msgid "Hide tray"
#~ msgstr "Жүйелік трейді жасыру"
#~ msgid "Status Icons"
#~ msgstr "Қалып-күй таңбашалары"
#~ msgid "Events"
#~ msgstr "Оқиғалар"

542
po/ko.po

File diff suppressed because it is too large Load Diff

333
po/lt.po
View File

@ -11,8 +11,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-07-20 03:49+0000\n"
"PO-Revision-Date: 2017-07-24 23:45+0300\n"
"POT-Creation-Date: 2017-08-22 11:17+0000\n"
"PO-Revision-Date: 2017-08-22 23:13+0300\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
"Language: lt\n"
@ -337,7 +337,7 @@ msgstr "Kilo klaida įkeliant %s nuostatų dialogą:"
#: js/gdm/authPrompt.js:149 js/ui/audioDeviceSelection.js:71
#: js/ui/components/networkAgent.js:117 js/ui/components/polkitAgent.js:148
#: js/ui/endSessionDialog.js:482 js/ui/extensionDownloader.js:197
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:947
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:936
msgid "Cancel"
msgstr "Atsisakyti"
@ -398,6 +398,80 @@ msgstr "Tapatybės patvirtinimo klaida"
msgid "(or swipe finger)"
msgstr "(arba perbraukite pirštu)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:99
#| msgid "Power Off"
msgctxt "search-result"
msgid "Power off"
msgstr "Išjungti"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:102
msgid "power off;shutdown"
msgstr "išjungti"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:106
msgctxt "search-result"
msgid "Lock screen"
msgstr "Užrakinti ekraną"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:109
msgid "lock screen"
msgstr "užrakinti ekraną"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:113
#| msgid "Log Out"
msgctxt "search-result"
msgid "Log out"
msgstr "Atsijungti"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:116
msgid "logout;sign off"
msgstr "atsijungti"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:120
#| msgid "Suspend"
msgctxt "search-result"
msgid "Suspend"
msgstr "Pristabdyti"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:123
#| msgid "Suspend"
msgid "suspend;sleep"
msgstr "pristabdyti;užmigdyti"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:127
#| msgid "Switch User"
msgctxt "search-result"
msgid "Switch user"
msgstr "Keisti naudotoją"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:130
#| msgid "Switch User"
msgid "switch user"
msgstr "keisti naudotoją"
#. Translators: The name of the lock orientation action in search
#: js/misc/systemActions.js:134
#| msgid "Orientation Lock"
msgctxt "search-result"
msgid "Lock orientation"
msgstr "Orientacijos užrakinimas"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:137
#| msgid "Orientation Lock"
msgid "lock orientation"
msgstr "orientacijos užrakinimas"
#: js/misc/util.js:122
msgid "Command not found"
msgstr "Komanda nerasta"
@ -562,35 +636,35 @@ msgstr "Atmesti prieigą"
msgid "Grant Access"
msgstr "Suteikti prieigą"
#: js/ui/appDisplay.js:806
#: js/ui/appDisplay.js:809
msgid "Frequently used applications will appear here"
msgstr "Čia bus matomos dažnai naudojamos programos"
#: js/ui/appDisplay.js:927
#: js/ui/appDisplay.js:930
msgid "Frequent"
msgstr "Dažnai naudojamos"
#: js/ui/appDisplay.js:934
#: js/ui/appDisplay.js:937
msgid "All"
msgstr "Visos"
#: js/ui/appDisplay.js:1895
#: js/ui/appDisplay.js:1915
msgid "New Window"
msgstr "Naujas langas"
#: js/ui/appDisplay.js:1909
#: js/ui/appDisplay.js:1929
msgid "Launch using Dedicated Graphics Card"
msgstr "Paleisti naudojant dedikuotą grafikos kortą"
#: js/ui/appDisplay.js:1936 js/ui/dash.js:289
#: js/ui/appDisplay.js:1956 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Pašalinti iš mėgstamų"
#: js/ui/appDisplay.js:1942
#: js/ui/appDisplay.js:1962
msgid "Add to Favorites"
msgstr "Pridėti prie mėgstamų"
#: js/ui/appDisplay.js:1952
#: js/ui/appDisplay.js:1972
msgid "Show Details"
msgstr "Rodyti detalią informaciją"
@ -632,7 +706,7 @@ msgstr "Keisti foną…"
msgid "Display Settings"
msgstr "Ekrano nustatymai"
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:407
#: js/ui/backgroundMenu.js:22 js/ui/status/system.js:265
msgid "Settings"
msgstr "Nustatymai"
@ -739,7 +813,6 @@ msgstr "Viską išvalyti"
#. Translators: %s is an application name
#: js/ui/closeDialog.js:44
#, javascript-format
#| msgid "“%s” is ready"
msgid "“%s” is not responding."
msgstr "„%s“ neatsiliepia."
@ -780,8 +853,8 @@ msgstr "Slaptažodis:"
msgid "Type again:"
msgstr "Įveskite dar kartą:"
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:272
#: js/ui/status/network.js:366 js/ui/status/network.js:950
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:261
#: js/ui/status/network.js:355 js/ui/status/network.js:939
msgid "Connect"
msgstr "Prisijungti"
@ -856,7 +929,7 @@ msgstr "Mobiliojo plačiajuosčio tinklo slaptažodis"
msgid "A password is required to connect to “%s”."
msgstr "Būtinas slaptažodis norint prisijungti prie „%s“."
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1760
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1720
msgid "Network Manager"
msgstr "Tinklo tvarkymas"
@ -887,7 +960,7 @@ msgstr "Atsiprašome, tai nesuveikė. Bandykite dar kartą."
msgid "%s is now known as %s"
msgstr "%s nuo šiol vadinasi %s"
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:179
#: js/ui/ctrlAltTab.js:29 js/ui/viewSelector.js:186
msgid "Windows"
msgstr "Langai"
@ -932,7 +1005,7 @@ msgstr "Orai"
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:281
#: js/ui/dateMenu.js:286
#, javascript-format
msgid "%s all day."
msgstr "%s visą dieną."
@ -941,7 +1014,7 @@ msgstr "%s visą dieną."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:287
#: js/ui/dateMenu.js:292
#, javascript-format
msgid "%s, then %s later."
msgstr "%s, o vėliau %s."
@ -950,30 +1023,30 @@ msgstr "%s, o vėliau %s."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:293
#: js/ui/dateMenu.js:298
#, javascript-format
msgid "%s, then %s, followed by %s later."
msgstr "%s, tuomet %s, o po to vėliau %s."
#: js/ui/dateMenu.js:300
#: js/ui/dateMenu.js:309
msgid "Select a location…"
msgstr "Pasirinkite vietą…"
#: js/ui/dateMenu.js:303
#: js/ui/dateMenu.js:312
msgid "Loading…"
msgstr "Įkeliama…"
#. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:309
#: js/ui/dateMenu.js:318
#, javascript-format
msgid "Feels like %s."
msgstr "Jaučiama kaip %s."
#: js/ui/dateMenu.js:312
#: js/ui/dateMenu.js:321
msgid "Go online for weather information"
msgstr "Prisijunkite prie tinklo orų informacijai gauti"
#: js/ui/dateMenu.js:314
#: js/ui/dateMenu.js:323
msgid "Weather information is currently unavailable"
msgstr "Orų informacija šiuo metu yra neprieinama"
@ -1140,19 +1213,34 @@ msgstr "Įdiegti"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Parsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
#: js/ui/keyboard.js:740 js/ui/status/keyboard.js:782
#. Translators: %s is an application name like "Settings"
#: js/ui/inhibitShortcutsDialog.js:59
#, javascript-format
msgid "%s wants to inhibit shortcuts"
msgstr "%s nori talpinti trumpinius"
#: js/ui/inhibitShortcutsDialog.js:60
msgid "Application wants to inhibit shortcuts"
msgstr "Programa nori talpinti trumpinius"
#. Translators: %s is a keyboard shortcut like "Super+x"
#: js/ui/inhibitShortcutsDialog.js:69
#, javascript-format
msgid "You can restore shortcuts by pressing %s."
msgstr "Galite atstatyti trumpinius paspaudę %s"
#: js/ui/inhibitShortcutsDialog.js:74
msgid "Deny"
msgstr "Neleisti"
#: js/ui/inhibitShortcutsDialog.js:80
msgid "Allow"
msgstr "Leisti"
#: js/ui/keyboard.js:738 js/ui/status/keyboard.js:782
msgid "Keyboard"
msgstr "Klaviatūra"
#. translators: 'Hide' is a verb
#: js/ui/legacyTray.js:65
msgid "Hide tray"
msgstr "Slėpti dėklą"
#: js/ui/legacyTray.js:106
msgid "Status Icons"
msgstr "Būsenos piktogramos"
#: js/ui/lookingGlass.js:642
msgid "No extensions installed"
msgstr "Nėra įdiegtų plėtinių"
@ -1341,7 +1429,7 @@ msgstr[0] "%d naujas pranešimas"
msgstr[1] "%d nauji pranešimai"
msgstr[2] "%d naujų pranešimų"
#: js/ui/screenShield.js:452 js/ui/status/system.js:415
#: js/ui/screenShield.js:452 js/ui/status/system.js:284
msgid "Lock"
msgstr "Užrakinti"
@ -1372,10 +1460,13 @@ msgstr "Ieškoma…"
msgid "No results."
msgstr "Nerasta atitikmenų."
#: js/ui/search.js:768
#: js/ui/search.js:777
#, javascript-format
msgid "%d more"
msgstr "dar %d"
msgid_plural "%d more"
msgstr[0] "dar %d"
msgstr[1] "dar %d"
msgstr[2] "dar %d"
#: js/ui/shellEntry.js:25
msgid "Copy"
@ -1449,7 +1540,7 @@ msgstr "Didelis tekstas"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:638
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627
msgid "Bluetooth Settings"
msgstr "Bluetooth nustatymai"
@ -1470,13 +1561,13 @@ msgstr "Išjungta"
msgid "On"
msgstr "Įjungta"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1310
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1299
msgid "Turn On"
msgstr "Įjungti"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:181
#: js/ui/status/network.js:367 js/ui/status/network.js:1310
#: js/ui/status/network.js:1429 js/ui/status/nightLight.js:47
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:170
#: js/ui/status/network.js:356 js/ui/status/network.js:1299
#: js/ui/status/network.js:1418 js/ui/status/nightLight.js:47
#: js/ui/status/rfkill.js:90 js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Išjungti"
@ -1528,13 +1619,13 @@ msgid "<unknown>"
msgstr "<nežinoma>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:465 js/ui/status/network.js:1339
#: js/ui/status/network.js:454 js/ui/status/network.js:1328
#, javascript-format
msgid "%s Off"
msgstr "%s išjungtas"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:468
#: js/ui/status/network.js:457
#, javascript-format
msgid "%s Connected"
msgstr "Prisijungta prie %s"
@ -1542,165 +1633,164 @@ msgstr "Prisijungta prie %s"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu);
#. %s is a network identifier
#: js/ui/status/network.js:473
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s netvarkomas"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:476
#: js/ui/status/network.js:465
#, javascript-format
msgid "%s Disconnecting"
msgstr "Atsijungiama nuo %s"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:483 js/ui/status/network.js:1331
#: js/ui/status/network.js:472 js/ui/status/network.js:1320
#, javascript-format
msgid "%s Connecting"
msgstr "Jungiamasi prie %s"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:486
#: js/ui/status/network.js:475
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s reikalauja patvirtinti tapatybę"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:494
#: js/ui/status/network.js:483
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "%s trūksta integruotos programinės įrangos"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:498
#: js/ui/status/network.js:487
#, javascript-format
msgid "%s Unavailable"
msgstr "%s nepasiekiamas"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:501
#: js/ui/status/network.js:490
#, javascript-format
msgid "%s Connection Failed"
msgstr "Nepavyko prisijungti prie %s"
#: js/ui/status/network.js:517
#: js/ui/status/network.js:506
msgid "Wired Settings"
msgstr "Laidinio ryšio nustatymai"
#: js/ui/status/network.js:559
#: js/ui/status/network.js:548
msgid "Mobile Broadband Settings"
msgstr "Mobiliojo plačiajuosčio tinklo nustatymai"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:602 js/ui/status/network.js:1336
#: js/ui/status/network.js:591 js/ui/status/network.js:1325
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s aparatinė įranga išjungta"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:606
#: js/ui/status/network.js:595
#, javascript-format
msgid "%s Disabled"
msgstr "%s išjungtas"
#: js/ui/status/network.js:646
#: js/ui/status/network.js:635
msgid "Connect to Internet"
msgstr "Prisijungti prie interneto"
#: js/ui/status/network.js:844
#: js/ui/status/network.js:833
msgid "Airplane Mode is On"
msgstr "Skrydžio veiksena įjungta"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:834
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Belaidis ryšys yra išjungta skrydžio veiksenoje."
#: js/ui/status/network.js:846
#: js/ui/status/network.js:835
msgid "Turn Off Airplane Mode"
msgstr "Išjungti skrydžio veikseną"
#: js/ui/status/network.js:855
#: js/ui/status/network.js:844
msgid "Wi-Fi is Off"
msgstr "Belaidžio ryšys išjungtas"
#: js/ui/status/network.js:856
#: js/ui/status/network.js:845
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Norint prisijungti prie tinklo reikia įjungti belaidį ryšį."
#: js/ui/status/network.js:857
#: js/ui/status/network.js:846
msgid "Turn On Wi-Fi"
msgstr "Įjungti belaidį ryšį"
#: js/ui/status/network.js:882
#: js/ui/status/network.js:871
msgid "Wi-Fi Networks"
msgstr "Wi-Fi tinklai"
#: js/ui/status/network.js:884
#: js/ui/status/network.js:873
msgid "Select a network"
msgstr "Pasirinkite tinklą"
#: js/ui/status/network.js:914
#: js/ui/status/network.js:903
msgid "No Networks"
msgstr "Nėra tinklų"
#: js/ui/status/network.js:935 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:924 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "Išjungimui naudoti aparatinį jungiklį"
#: js/ui/status/network.js:1202
#: js/ui/status/network.js:1191
msgid "Select Network"
msgstr "Pasirinkite tinklą"
#: js/ui/status/network.js:1208
#: js/ui/status/network.js:1197
msgid "Wi-Fi Settings"
msgstr "Belaidžio ryšio nustatymai"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1327
#: js/ui/status/network.js:1316
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Prieigos taškas %s aktyvus"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1342
#: js/ui/status/network.js:1331
#, javascript-format
msgid "%s Not Connected"
msgstr "Neprisijungta prie %s"
#: js/ui/status/network.js:1446
#: js/ui/status/network.js:1435
msgid "connecting…"
msgstr "jungiamasi…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1449
#: js/ui/status/network.js:1438
msgid "authentication required"
msgstr "reikia patvirtinti tapatybę"
#: js/ui/status/network.js:1451
#: js/ui/status/network.js:1440
msgid "connection failed"
msgstr "nepavyko prisijungti"
#: js/ui/status/network.js:1517 js/ui/status/network.js:1612
#: js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Tinklo nustatymai"
#: js/ui/status/network.js:1519
#: js/ui/status/network.js:1494
msgid "VPN Settings"
msgstr "VPN nustatymai"
#: js/ui/status/network.js:1538
#: js/ui/status/network.js:1498
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1548
#: js/ui/status/network.js:1508
msgid "VPN Off"
msgstr "VPN išjungtas"
#: js/ui/status/network.js:1643
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Tinklo nustatymai"
#: js/ui/status/network.js:1603
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
@ -1708,7 +1798,7 @@ msgstr[0] "%s laidinis ryšys"
msgstr[1] "%s laidiniai ryšiai"
msgstr[2] "%s laidinių ryšių"
#: js/ui/status/network.js:1647
#: js/ui/status/network.js:1607
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
@ -1716,7 +1806,7 @@ msgstr[0] "%s belaidis ryšys"
msgstr[1] "%s belaidžiai ryšiai"
msgstr[2] "%s belaidžių ryšių"
#: js/ui/status/network.js:1651
#: js/ui/status/network.js:1611
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
@ -1724,11 +1814,11 @@ msgstr[0] "%s modemo ryšys"
msgstr[1] "%s modemo ryšiai"
msgstr[2] "%s modemo ryšių"
#: js/ui/status/network.js:1799
#: js/ui/status/network.js:1759
msgid "Connection failed"
msgstr "Nepavyko prisijungti"
#: js/ui/status/network.js:1800
#: js/ui/status/network.js:1760
msgid "Activation of network connection failed"
msgstr "Tinklo ryšio nepavyko aktyvuoti"
@ -1786,27 +1876,27 @@ msgstr "%d%%"
msgid "Airplane Mode On"
msgstr "Skrydžio veiksena įjungta"
#: js/ui/status/system.js:384
#: js/ui/status/system.js:228
msgid "Switch User"
msgstr "Keisti naudotoją"
#: js/ui/status/system.js:389
#: js/ui/status/system.js:240
msgid "Log Out"
msgstr "Atsijungti"
#: js/ui/status/system.js:394
#: js/ui/status/system.js:252
msgid "Account Settings"
msgstr "Paskyros nustatymai"
#: js/ui/status/system.js:411
#: js/ui/status/system.js:269
msgid "Orientation Lock"
msgstr "Padėties užrakinimas"
#: js/ui/status/system.js:419
#: js/ui/status/system.js:295
msgid "Suspend"
msgstr "Pristabdyti"
#: js/ui/status/system.js:422
#: js/ui/status/system.js:305
msgid "Power Off"
msgstr "Išjungti"
@ -1818,6 +1908,35 @@ msgstr "Garsumas pakeistas"
msgid "Volume"
msgstr "Garsumas"
#. Translators: this is for display mirroring i.e. cloning.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:21
#| msgid "Error"
msgid "Mirror"
msgstr "Veidrodis"
#. Translators: this is for the desktop spanning displays.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:26
msgid "Join Displays"
msgstr "Sujungti vaizduoklius"
#. Translators: this is for using only an external display.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:31
msgid "External Only"
msgstr "Tik išorinis"
#. Translators: this is for using only the laptop display.
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:36
msgid "Built-in Only"
msgstr "Tik vidinis"
#: js/ui/unlockDialog.js:67
msgid "Log in as another user"
msgstr "Prisijungti kitu naudotoju"
@ -1826,11 +1945,11 @@ msgstr "Prisijungti kitu naudotoju"
msgid "Unlock Window"
msgstr "Atrakinimo langas"
#: js/ui/viewSelector.js:183
#: js/ui/viewSelector.js:190
msgid "Applications"
msgstr "Programos"
#: js/ui/viewSelector.js:187
#: js/ui/viewSelector.js:194
msgid "Search"
msgstr "Ieškoti"
@ -1839,22 +1958,22 @@ msgstr "Ieškoti"
msgid "“%s” is ready"
msgstr "„%s“ yra pasirengusi"
#: js/ui/windowManager.js:71
#: js/ui/windowManager.js:72
msgid "Do you want to keep these display settings?"
msgstr "Ar norite įrašyti šiuos vaizduoklio nustatymus?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#.
#: js/ui/windowManager.js:83
#: js/ui/windowManager.js:84
msgid "Revert Settings"
msgstr "Grąžinti nustatymus"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:87
msgid "Keep Changes"
msgstr "Įrašyti pakeitimus"
#: js/ui/windowManager.js:104
#: js/ui/windowManager.js:105
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -1864,7 +1983,7 @@ msgstr[2] "Pakeitimai bus grąžinti po %d sekundžių"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:659
#: js/ui/windowManager.js:660
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -1942,19 +2061,19 @@ msgstr "Evolution kalendorius"
msgid "evolution"
msgstr "evolution"
#: src/main.c:372
#: src/main.c:380
msgid "Print version"
msgstr "Išvesti versijos numerį"
#: src/main.c:378
#: src/main.c:386
msgid "Mode used by GDM for login screen"
msgstr "Veiksena, naudojama GDM prisijungimo ekrane"
#: src/main.c:384
#: src/main.c:392
msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Naudoti konkrečią veikseną, pvz., „gdm“ prisijungimo ekranui"
#: src/main.c:390
#: src/main.c:398
msgid "List possible modes"
msgstr "Išvardinti galimas veiksenas"
@ -2004,6 +2123,12 @@ msgstr[2] "%u įvesčių"
msgid "System Sounds"
msgstr "Sistemos garsai"
#~ msgid "Hide tray"
#~ msgstr "Slėpti dėklą"
#~ msgid "Status Icons"
#~ msgstr "Būsenos piktogramos"
#~ msgid "Events"
#~ msgstr "Įvykiai"

565
po/lv.po

File diff suppressed because it is too large Load Diff

3118
po/ml.po

File diff suppressed because it is too large Load Diff

View File

@ -1931,7 +1931,7 @@ msgstr "इभोल्युसन पात्रो"
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
#: src/calendar-server/evolution-calendar.desktop.in:6
msgid "evolution"
msgstr "इभोल्युसन"
msgstr "evolution"
#: src/main.c:372
msgid "Print version"

1092
po/nl.po

File diff suppressed because it is too large Load Diff

758
po/pa.po

File diff suppressed because it is too large Load Diff

564
po/pl.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

572
po/ru.po

File diff suppressed because it is too large Load Diff

571
po/sk.po

File diff suppressed because it is too large Load Diff

632
po/sl.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