Compare commits

..

176 Commits

Author SHA1 Message Date
45797a977b app-system: Add back StartupWMClass matching
While unfortunate that we still have to scan all apps with get_all(),
support for this feature will be short-lived, so hopefully we can drop
it in the future as new apps adapt to the desktop file / app ID
recommendations.

For now, simply scan all desktop IDs.
2013-10-02 18:22:28 -04:00
884b94233e app-system: Put back support for the installed-changed signal
Use the new GAppInfoMonitor that Ryan added to glib to know when the
set of apps has changed.
2013-10-02 18:22:27 -04:00
74d3e3139f app-system: Lazily create ShellApps for apps we care about
Rather than create all ShellApps up-front, create them lazily. We really
had no reason to do this before as we were scanning GMenu to get all the
apps, but doing this can remove a need for get_all, which is slow and
memory-hungry.
2013-10-02 18:22:27 -04:00
77b5385cc3 appDisplay: Use the desktop file index for app searching
Rather than scanning all apps for searching, use Ryan's new desktop
file index and the glib support APIs for app searching instead of our
own system.
2013-10-02 18:22:27 -04:00
d749d646be appDisplay: Use a proper string key for the app search provider
We were always sort of cheating when we used objects as the search ID.
Since the new desktop file index will return us a list of desktop file
IDs, just use those as IDs instead.
2013-10-02 18:22:27 -04:00
fa8224d7b5 app-system: Remove use of gnome-menus internally
We want to transition to a system in the future where we have a desktop
file cache. As we no longer differentiate categories or similar, it no
longer makes sense to have app visibility based on categories. Thus,
we no longer need to use gnome-menus to list all apps. The potential
issue here is reloading all desktop files when new files are created,
but this can be dealt with individually.

The "All Applications" view still uses gnome-menus.

https://bugzilla.gnome.org/show_bug.cgi?id=698486
2013-10-02 18:22:27 -04:00
f687197ccc appDisplay: Ignore the NoDisplay flag for directories
This makes us match the native app search.

https://bugzilla.gnome.org/show_bug.cgi?id=698486
2013-10-02 18:22:15 -04:00
28a6aefb6c app-system: Remove visible_id_to_app
Since appDisplay.js makes its own GMenu tree, it's not necessary
anymore. This does mean that searches will show apps in NoDisplay
categories, but that's an obscure enough edge case not to matter.

https://bugzilla.gnome.org/show_bug.cgi?id=698486
2013-10-02 18:22:15 -04:00
96c2a90e11 app-system: Remove lookup_app_for_path
It's absurdly silly. Just modify the one place that uses it
to be better.

https://bugzilla.gnome.org/show_bug.cgi?id=698486
2013-10-02 18:22:15 -04:00
63cf46e49b app-system: Remove known_vendor_prefixes
This does remove support for legacy prefixed app infos with
subdirs, but since we want to remove support for the menu spec,
let's not even bother.

https://bugzilla.gnome.org/show_bug.cgi?id=698486
2013-10-02 18:22:15 -04:00
200a9ef1af app-system: Remove get_tree
Make clients construct their own gmenu tree if they need it.

https://bugzilla.gnome.org/show_bug.cgi?id=698486
2013-10-02 18:22:08 -04:00
6050ca6e0c app-system: Map wmclass to ID rather than apps
This makes the refcounting and memory management easier to understand.
2013-10-02 18:22:08 -04:00
8bd7db9227 app-system: Don't use gmenu_tree_entry_get_desktop_app_info
It's a broken method when it comes to giving us a useful GDesktopAppInfo,
and it's hard to fix libgmenu properly, so simply recreate the app info
using the desktop file ID that libgmenu has.
2013-10-02 18:22:07 -04:00
982feb85c1 app: Port to be based on GDesktopAppInfo
We weren't using the GMenuTreeEntry for anything special anymore,
so remove it.

https://bugzilla.gnome.org/show_bug.cgi?id=698486
2013-10-02 18:14:18 -04:00
f165cc23c0 app-system: Remove lookup_app_by_tree_entry
We want to move away from gnome-menus eventually, so the simple
utility method isn't really worth keeping around. Reimplement it
in the one place that uses it.

https://bugzilla.gnome.org/show_bug.cgi?id=698486
2013-10-02 17:39:36 -04:00
8737b06559 loginDialog: MessageType is now in GdmUtil
https://bugzilla.gnome.org/show_bug.cgi?id=709286
2013-10-02 13:58:09 -04:00
15ab285174 layout: Use monitor index when adding bg managers
Don't assume that this._bgManagers.push() (i.e adding to the end) is always
correct.

On startup we call _createPrimaryBackground which passes in the primary index
which may not be 0.
2013-10-02 15:58:22 +02:00
3a4782cc64 app-system: Fix some enum warnings
https://bugzilla.gnome.org/show_bug.cgi?id=698486
2013-10-02 09:49:03 -04:00
0256a6d47b app: Use g_variant_lookup instead of dict iteration 2013-10-02 09:49:02 -04:00
8b0e846e0e background: Disconnect settings signal handler on destroy
We connect to the changed signal in _init() but never actually disconnect from
it. The callback has a reference to "this" which results into the background
object not getting garbage collected.

Fix that leaks by disconnecting in _destroy()

https://bugzilla.gnome.org/show_bug.cgi?id=709263
2013-10-02 15:43:30 +02:00
41acb5d3cc Updated Czech translation 2013-10-02 09:56:45 +02:00
a2f9b8ea9b workspacesView: Remove dead code 2013-10-01 18:41:26 -04:00
6237a1c505 workspace: Remove unused leftover constant
from the window zooming days
2013-10-01 18:41:26 -04:00
7c08db0b0f [l10n] Updated Italian translation. 2013-10-01 19:22:11 +02:00
df1270ac49 Updated Danish translation 2013-10-01 19:10:05 +02:00
46edc053d4 overview: Add cover pane directly to overviewGroup
The cover pane is used to block events during transitions, but as
workspaces don't share the same container as other overview elements,
they are currently excempt from the event blocking.
Move the cover pane to the top-level overview container instead.

https://bugzilla.gnome.org/show_bug.cgi?id=709034
2013-10-01 17:16:51 +02:00
908046c31a [l10n] Updated Estonian translation 2013-10-01 17:14:01 +03:00
8380c79875 network: Update the network indicator when the VPN state changes 2013-10-01 10:25:46 -04:00
8a4879a96a Updated Traditional Chinese translation(Hong Kong and Taiwan) 2013-09-30 19:40:48 +08:00
cdf1a77f08 Updated Spanish translation 2013-09-30 12:00:58 +02:00
3f9857ccbd Assamese translation updated 2013-09-30 13:32:07 +05:30
1d65a31420 Updated Lithuanian translation 2013-09-29 20:33:17 +03:00
dafdf0838a Updated Slovak translation 2013-09-29 17:41:47 +01:00
f9cf135f68 update Punjabi Translaiton 2013-09-29 05:26:34 -05:00
a1878e54c9 Updated Norwegian bokmål translation 2013-09-29 11:29:08 +02:00
95e5d899a9 Updated Basque language 2013-09-29 10:53:34 +02:00
ee8321df67 Updated Slovenian translation 2013-09-28 21:49:04 +02:00
4918213e68 Tajik translation updated 2013-09-28 19:39:12 +05:00
ed7f349fc6 Updated Galician translations 2013-09-28 16:25:15 +02:00
2888f22a24 Updated Norwegian bokmål translation 2013-09-28 14:53:19 +02:00
fcb217f681 Updated Brazilian Portuguese translation 2013-09-28 05:16:53 -03:00
9ffa9fe1a8 Updated Galician translations 2013-09-27 21:38:08 +02:00
905020c507 Updated Slovak translation 2013-09-27 17:40:35 +01:00
02f5500641 theme: Make indicators checked&active like checked 2013-09-27 17:06:26 +02:00
465af55d6e theme: Add hover/active states to indicators
Until now we had the same svg for hover, active and checked
states in the pagination indicators. Just differentiate between
them using differents svg.

svg files provided by Jakub Steiner

https://bugzilla.gnome.org/show_bug.cgi?id=708852
2013-09-27 15:50:28 +02:00
80a3bb85aa overview: Ignore dragEnd while the animation is still in progress
Moving the mouse fast enough during xdnd will trigger a xdnd-leave event
because the input shape is not updated until after the animation is done.

So simply ignore the leave events while the animation is in progress.

https://bugzilla.gnome.org/show_bug.cgi?id=708887
2013-09-27 12:54:22 +02:00
ea26bd3003 Updated Latvian translation 2013-09-26 23:30:59 +03:00
508a511d2a Revert "overviewControls: Don't allow appearing controls to "pop in""
This reverts commit e31693bbee.

This doesn't properly adjust the allocation, leading to an unbalanced
overview where things aren't centered properly. Just revert for now,
and we'll rethink this next cycle.
2013-09-26 16:20:06 -04:00
2d80cb71db searchDisplay: Scroll results when the user focuses a provider icon
Otherwise, it seems odd to highlight results the user can't see
simply by pressing down a lot.

https://bugzilla.gnome.org/show_bug.cgi?id=708868
2013-09-26 15:17:29 -04:00
e31693bbee overviewControls: Don't allow appearing controls to "pop in"
When coming back from search or apps, the workspace thumbnails and dash
don't slide in but "pop in". This is because of bad timing: when slideIn
is called, we immediately start the translation animation, and it
completes before by the time we fade the new page in.

Fix this by calling slideIn and slideOut at two different times: we now
slide out when the old page with our controls is fading out, and slide in
when the new page with our controls is fading in.

https://bugzilla.gnome.org/show_bug.cgi?id=708340
2013-09-26 13:39:20 -04:00
fb561f10a7 network: Make sure to set the signal icon at dialog item construction time
We forgot to set it here; it would be updated if there was changes in the
signal, but not when it was created.

https://bugzilla.gnome.org/show_bug.cgi?id=708442
2013-09-26 11:06:42 -04:00
0c57d53e03 Update Esperanto translation 2013-09-26 09:09:37 -04:00
3b1b9f589b SystemMenu: wait for a completed paint before switching VT
Activating the GDM login screen switches VT and causes X to freeze
event processing (because it lost the drm master), so must make
sure to have painted the lock screen at least once before proceeding,
or the user can go back and see the unlocked desktop.

https://bugzilla.gnome.org/show_bug.cgi?id=708051
2013-09-26 10:46:42 +02:00
ac8d39acf4 Updated Lithuanian translation 2013-09-25 23:22:27 +03:00
664e795217 [l10n]Updated Turkish translation 2013-09-25 21:16:28 +03:00
82bf323f63 Updated German translation 2013-09-25 15:25:31 +02:00
547ac85113 Updated Basque language 2013-09-25 11:17:01 +02:00
46e0e4430d Bump version to 3.10.0.1
Update NEWS.
2013-09-24 16:04:57 -04:00
609a31ea46 loginManager: fix versionCompare function
It's important to compare the version components as integers,
not strings, so "10" evaulates as greater than "5"

This fixes the login screen in gnome 3.10.

https://bugzilla.gnome.org/show_bug.cgi?id=708691
2013-09-24 14:22:09 -04:00
3e99eb10d1 Updated Norwegian bokmål translation 2013-09-24 19:38:41 +02:00
b9d935af0c ActivitiesButton: close the dummy menu when activating the button
We need to close the menu to make sure that any grabs held by
the PopupMenuManager are released, and events are properly delivered.

https://bugzilla.gnome.org/show_bug.cgi?id=707852
2013-09-24 16:28:31 +02:00
31d3e82aa8 Updated Czech translation 2013-09-24 16:10:40 +02:00
dfdc17197b Punjabi Translation updated by Aman 2013-09-24 07:54:25 -05:00
62b965b4b7 Updated Spanish translation 2013-09-24 14:39:14 +02:00
ba221abea5 Updated Belarusian translation. 2013-09-24 15:03:09 +03:00
aa026c7134 Updated Traditional Chinese translation(Hong Kong and Taiwan) 2013-09-24 19:13:45 +08:00
496cfff97a Assamese translation updated 2013-09-24 14:25:28 +05:30
ccaa7f5f3e Updated Russian translation 2013-09-24 12:18:45 +04:00
f492d21c70 Update Kazakh translation 2013-09-24 06:37:02 +06:00
1983541f8c Bump version to 3.10.0
Update NEWS.
2013-09-23 23:33:14 +02:00
e4cb3672b9 Updated Galician translations 2013-09-23 22:24:36 +02:00
a06a78a9c1 aggregate-menu: Increase width
Add 20px more width to make longer strings (translations) fit better.

https://bugzilla.gnome.org/show_bug.cgi?id=708472
2013-09-23 22:23:46 +02:00
2ba91ad837 Updated Slovenian translation 2013-09-23 21:18:03 +02:00
66eb3ea723 Updated Polish translation 2013-09-23 20:38:24 +02:00
d30e992b20 Updated Polish translation 2013-09-23 20:35:58 +02:00
c6a342563f Updated Danish translation 2013-09-23 19:43:15 +02:00
fd584eda05 l10n: Update Japanese translation 2013-09-24 00:01:51 +09:00
4301506590 Updated Hebrew translation
Signed-off-by: Yosef Or Boczko <yoseforb@gmail.com>
2013-09-23 17:59:51 +03:00
88f7c3a970 Updated Indonesian translation 2013-09-23 21:25:49 +07:00
f21a9f0cc2 [l10n] Updated Italian translation. 2013-09-23 16:21:33 +02:00
2233c2e618 Updated Brazilian Portuguese translation 2013-09-23 10:56:43 -03:00
6264419bd4 Update French translation 2013-09-23 15:48:18 +02:00
b62effb8fa add missing translation markers around string in schema 2013-09-23 15:35:06 +02:00
c8a07dd612 messageTray: Fix condition for adding the tray to CtrlAltTab
With the current condition, we wrongly add the message tray to
CtrlAltTab if we start up locked or as greeter.

https://bugzilla.gnome.org/show_bug.cgi?id=708380
2013-09-23 13:32:17 +02:00
02c99e4b25 authPrompt: Clear _queryingService on verification failure
A conversation is finished after failing, and we are expecting a new
one to be started shortly after. However if we encounter an existing
reference to a previously set _queryingService, we will clear the
password entry, which might already contain a partially typed password
at that point. The behavior does make sense in the case of conflicting
conversations, but in the failure case it is both unexpected and
annoying, so clear _queryingService early to prevent this.

https://bugzilla.gnome.org/show_bug.cgi?id=708186
2013-09-23 13:32:17 +02:00
1242a16265 keyring: Don't unregister the prompt when disabled
gnome-keyring provides a fallback in case our builtin prompt fails
to register, so keyring dialogs may still pop up even when they
are supposed to be disabled.
Instead, keep the prompt registered but cancel requests immediately
while disabled.

https://bugzilla.gnome.org/show_bug.cgi?id=708187
2013-09-23 13:32:17 +02:00
a89fd17b8e shell: Make KeyringPrompt.cancel() callable from signal handlers
gcr/gnome-keyring don't handle the case where prompt_password_async()/
prompt_confirm_async() return their result from within the function
very well (or rather: break badly). Calling gcr_prompt_close() instead
is safe, but to avoid these kind of errors in the future, modify
shell_keyring_prompt_cancel() to work as expected in this case.

https://bugzilla.gnome.org/show_bug.cgi?id=708187
2013-09-23 13:32:17 +02:00
3d5e7bd6f1 Updated Indonesian translation 2013-09-23 09:40:56 +07:00
cefcb89487 Updated Portuguese translation 2013-09-22 23:50:24 +01:00
005272bde9 bluetooth: Actually add the menu item to the bluetooth menu
https://bugzilla.gnome.org/show_bug.cgi?id=708541
2013-09-22 22:22:49 +02:00
491e60e4f2 Updated Galician translations 2013-09-22 19:49:52 +02:00
e5f72fd302 Updated Hebrew translation 2013-09-22 13:58:19 +03:00
5f21b100b8 Updated Ukrainian 2013-09-22 11:28:53 +03:00
1a4c7629c5 Translate 'suspend' as 'pauzestand' for consistency 2013-09-21 23:27:43 +02:00
d21734ee47 Updated Dutch translation 2013-09-21 23:04:37 +02:00
e140e2c367 Updated Latvian translatio 2013-09-21 21:53:36 +03:00
7ced1f5b54 focusCaretTracker: Lower AT-SPI's timeout values
Have AT-SPI calls time out after 250ms, to mitigate the effect of a
deadlock when querying another application that is trying to query
gnome-shell.

https://bugzilla.gnome.org/show_bug.cgi?id=708387
2013-09-21 04:51:42 -05:00
54b028ee3e Updated Ukrainian 2013-09-21 11:42:12 +03:00
703336e1ea Updated Esperanto translation 2013-09-21 09:54:37 +02:00
9e936252ae Updated Polish translation 2013-09-20 17:44:36 +02:00
fc71a0f081 Updated Polish translation 2013-09-20 17:29:48 +02:00
86c72fa15d Updated Traditional Chinese translation(Hong Kong and Taiwan) 2013-09-20 13:43:49 +08:00
6ba5af1e9e Updated Romanian Translation 2013-09-19 21:54:35 +02:00
33a4f59cfb popupMenu: Center the labels in submenu items
https://bugzilla.gnome.org/show_bug.cgi?id=708330
2013-09-19 12:40:43 -04:00
39134f0d9b networkAgent: Don't allow ellipsization of Password label
We don't want password entries to grow when entering more characters
that fit the available width; as labels' ClutterText ellipsizes by
default, the password labels allow entries to grow by shrinking.
Setting the appropriate ellipsize mode fixes this.

https://bugzilla.gnome.org/show_bug.cgi?id=708324
2013-09-19 07:53:57 +02:00
30e7440851 keyring: Don't allow ellipsization of Password label
We don't want the password entry to grow when entering more characters
that fit the available width; as labels' ClutterText ellipsizes by
default, the password label allows the entry to grow by shrinking.
Setting the appropriate ellipsize mode fixes this.

https://bugzilla.gnome.org/show_bug.cgi?id=708324
2013-09-19 07:53:57 +02:00
be1a7bac7c networkAgent: Port to ClutterTableLayout
We don't make use of any functionality StTable provides over
ClutterTableLayout, so port all users to the Clutter layout
in order to remove our own copy of the code.

https://bugzilla.gnome.org/show_bug.cgi?id=703833
2013-09-19 07:53:57 +02:00
fb52a93a28 keyring: Port to ClutterTableLayout
We don't make use of any functionality StTable provides over
ClutterTableLayout, so port all users to the Clutter layout
in order to remove our own copy of the code.

https://bugzilla.gnome.org/show_bug.cgi?id=703833
2013-09-19 07:53:56 +02:00
efdf1ff755 main: Close runDialog as necessary on session mode changes
We already do this for looking glass, but it makes even less sense
for the normal run dialog - if a mode sets runDialog to false, the
intention is to not allow executing aribitrary commands.

https://bugzilla.gnome.org/show_bug.cgi?id=708218
2013-09-19 07:53:56 +02:00
2c00dad211 network: Make sure to resync when the activating connection changes
Otherwise, we may be left with a stale activating connection if a
connection is activating, but doesn't fully activate for whatever
reason.

https://bugzilla.gnome.org/show_bug.cgi?id=708322
2013-09-18 17:15:01 -04:00
c23786c73e St: Fix fade effect
Commit 4095a58eb9 introduced a
regression, since we have to take into account four cases,
top, bottom, right, and left, and that can't be merged into
two like that commit did.
So fix it to make fade effect works again.

https://bugzilla.gnome.org/show_bug.cgi?id=708256
2013-09-18 20:01:49 +02:00
7f1b07b76f Revert "Background: Drop "saturation" related source"
This reverts commit 2f35ad6e65.
2013-09-18 13:54:54 +02:00
2f35ad6e65 Background: Drop "saturation" related source
"saturation" was removed from MetaBackground in mutter with
https://git.gnome.org/browse/mutter/commit/?id=0e589061
2013-09-18 13:49:35 +02:00
159c7d34c7 l10n: Update Japanese translation 2013-09-18 20:41:47 +09:00
fe8e990ed7 Punjabi Translation updated by Aman 2013-09-17 22:08:46 -05:00
1fb9b18cb6 Updated Belarusian translation. 2013-09-17 22:46:22 +03:00
5c2586127b Update gvc
A translator accidentally undid this.
2013-09-17 11:54:44 -04:00
661b266b45 Updated Esperanto translation
Reviewed by Ken Price
2013-09-17 10:11:50 -04:00
98af044196 Updated Romanian Translation 2013-09-17 09:55:18 +02:00
8006c336f5 Bump version to 3.9.92
Update NEWS.
2013-09-16 23:59:39 +02:00
bdf07d2ce8 Updated Greek translation 2013-09-16 22:38:25 +03:00
efcf858e60 Updated Hebrew translation 2013-09-16 21:55:49 +03:00
93d9c16672 appDisplay: Rework indicators animation
Previously the animation was not entirely according to the mockup.
Now we are closer to the mockup.

The padding for the indicators are decremented, since we need that
to make the animation not too quick. As a drawback, maybe visually
is not as good as before, or the area to click dots is too much little.
Just make that change for now and test it widely, and we can change
that after.

https://bugzilla.gnome.org/show_bug.cgi?id=707565
2013-09-16 18:49:24 +02:00
7aaf261f5a [l10n] Updated Italian translation. 2013-09-16 14:29:11 +02:00
5eb4450012 Updated Hungarian translation 2013-09-16 13:13:38 +02:00
49c8cdd8f6 a11y: check states EXPANDABLE/EXPANDED on PopupSubMenuMenuItem
https://bugzilla.gnome.org/show_bug.cgi?id=708038
2013-09-16 12:36:16 +02:00
c860b96a86 Updated Basque language 2013-09-15 15:39:35 +02:00
69403bda80 Updated slovak translation 2013-09-15 10:22:30 +02:00
f5456b66ff Updated slovak translation 2013-09-15 10:19:30 +02:00
28b4c413cb Updated slovak translation 2013-09-15 10:12:56 +02:00
5b97250bb1 Updated slovak translation 2013-09-15 10:09:03 +02:00
5d26c29eaa Updated slovak translation 2013-09-15 10:07:23 +02:00
613944eccd Update Kazakh translation 2013-09-15 14:00:57 +06:00
8d0e8fc021 Updated Polish translation 2013-09-15 01:22:01 +02:00
41ee70d414 Update Russian translation 2013-09-14 20:56:06 +02:00
3691e8ddd7 Remove "Menu" from the name of the Settings menu
Its presence makes Orca present "Settings Menu menu". Removing it does
not introduce any new strings.

https://bugzilla.gnome.org/show_bug.cgi?id=708080
2013-09-14 14:07:17 -04:00
be54e94045 Update French translation 2013-09-14 19:08:19 +02:00
366ca72342 Updated Danish translation 2013-09-14 15:55:57 +02:00
fc4e392ac1 Updated Danish translation 2013-09-13 22:03:50 +02:00
507be35d3a Updated Korean translation 2013-09-14 04:27:43 +09:00
5c0d62cd0e Updated German translation 2013-09-13 19:31:45 +02:00
7b7c4568b2 appDisplay: Change pages with page down/up keys
Add key bindings to app picker to allow change pages using
the page up/down keys.

https://bugzilla.gnome.org/show_bug.cgi?id=707979
2013-09-13 19:16:11 +02:00
f38091d96b appDisplay: Move boundary page assertions
Since the function that manages the changes between pages is
goToPage, just move the assertions of page >= 0 and page < nPages
to that function

https://bugzilla.gnome.org/show_bug.cgi?id=707979
2013-09-13 18:58:46 +02:00
7c78e1fbf5 appDisplay: Fix indicator animation position
The original position was calculated with the stage and the
transformed position of the indicator when mapped. The values
were wrong on some situations, so lets calculate the position
based on the dots width.

https://bugzilla.gnome.org/show_bug.cgi?id=707580
2013-09-13 18:15:33 +02:00
72f0a48fac theme: Erase appDisplay padding
Since now AllView doesn't have a scrollbar this
padding is not necesary, and will allow to place
the indicators correctly using only the indicators
padding in a upcoming patch.

https://bugzilla.gnome.org/show_bug.cgi?id=707580
2013-09-13 18:13:41 +02:00
193f872ebe Magnifier: don't initialize if we don't need it
Let's avoid initializing AT-SPI and start monitoring events if we
are not actually using the magnifier.

https://bugzilla.gnome.org/show_bug.cgi?id=708020
2013-09-13 16:09:33 +02:00
c3f96cf0e8 data: Fix make dist and conditionally install gnome-shell-wayland 2013-09-13 15:11:04 +02:00
df09109d81 overviewControls: Use a custom layout to catch all geometry changes
We currently update workspaces geometry when we are notified about
allocation changes of the overview group; however as the geometry
is based on stage coordinates, we miss notifications when the
allocation relative to the parent is unchanged, which happens when
the primary monitor's position changes but not its resolution.
Use a custom layout manager to give us a signal that is emitted
reliably.

https://bugzilla.gnome.org/show_bug.cgi?id=708009
2013-09-13 13:50:31 +02:00
662cb9e2a3 Updated Spanish translation 2013-09-13 12:49:59 +02:00
daa54a3798 Assamese Translation Updated 2013-09-13 15:10:33 +05:30
f035a1a0e0 Updated Galician translations 2013-09-13 10:28:22 +02:00
2688bf3333 Tajik translation updated 2013-09-13 13:14:07 +05:00
4095a58eb9 st-scroll-view-fade: Reduce number of GLSL uniforms and instructions
The vvalue and hvalue uniforms are only used to decide whether we
should do fade the edges or not based on the fade_edges uniform.
The result does not change accross fragments so there is no reason
to recompute it for every fragment (pixel) so just split the edge
fade into two uniforms and compute the "should we fade the edges"
boolean once for every direction (when setting the uniforms) instead
of for every single fragment twice.

This reduces the number of uniforms as well as the the number of instructions
which are limited on older hardware. It should also be more efficent.

https://bugzilla.gnome.org/show_bug.cgi?id=708007
2013-09-13 09:45:19 +02:00
c1b1ebe97e Updated Czech translation 2013-09-13 08:57:44 +02:00
a47b97d443 Updated Brazilian Portuguese translation 2013-09-12 23:02:30 -03:00
df5d5583eb lookingGlass: Fix position on multi-head
We currently assume that the primary monitor is located at (0, 0),
fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=707996
2013-09-13 00:03:24 +02:00
79e764d5ec Update .gitignore 2013-09-12 23:28:37 +02:00
2fcb04e5b2 Updated Lithuanian translation 2013-09-12 22:41:11 +03:00
da1e264687 dnd: Use sync_pointer rather than complex enter/leave tracking
https://bugzilla.gnome.org/show_bug.cgi?id=707940
2013-09-12 14:33:33 -04:00
03975287d2 Updated Slovenian translation 2013-09-12 20:30:32 +02:00
50a61b38f7 Updated Polish translation 2013-09-12 19:39:01 +02:00
1fe072471e Updated POTFILES.in 2013-09-12 19:36:37 +02:00
93e840295e Update .gitignore 2013-09-12 11:16:20 -04:00
6ab7d640f0 Updated British English translation 2013-09-12 14:38:32 +01:00
255cb8edb1 AppFolderPopup: fix the position of close buttons
We need to adjust the offset of close buttons, in case the box
pointer has the arrow at the top. To do so, extend close buttons
to hook into a boxpointer (since that's the common use for them)
and automatically adjust their position.

https://bugzilla.gnome.org/show_bug.cgi?id=707842
2013-09-12 14:33:35 +02:00
367fb32493 Updated Hungarian translation 2013-09-12 13:58:25 +02:00
ef6d1fd6ce Updated Hungarian translation 2013-09-12 13:42:27 +02:00
3e8ab0645b ScreenShield: fix a typo due to the MetaCursorTracker switch
And replace another show_cursor() usage with the new API.

Reviewed-by: Carlos Soriano in IRC.
2013-09-12 13:17:23 +02:00
135727c9f7 Add support for running wayland under gnome-session
Include a .desktop file that autostarts us as a wayland compositor.

https://bugzilla.gnome.org/show_bug.cgi?id=707467
2013-09-12 10:34:25 +02:00
c58448817b ShellGlobal: use MetaCursorTracker to query the pointer position
Gdk uses Xwayland, so it only sees the events we forward to X11
clients. Instead, we can use the abstraction API provided by
mutter and get the right value automatically.
Also, we need to use MetaCursorTracker to handle the cursor
visibility too.

https://bugzilla.gnome.org/show_bug.cgi?id=707467
2013-09-12 10:34:25 +02:00
8ae0f1a9dc StEntry: add a hook to set the cursor from libgnome-shell
We need to call into MetaScreen to set the cursor, but we can't
do that from libst, so add a hook that libgnome-shell can fill,
and remove more ClutterX11 usage.

https://bugzilla.gnome.org/show_bug.cgi?id=707467
2013-09-12 10:34:25 +02:00
ba9c1d98f6 ShellGlobal: use a different window for IBus when running on wayland
When running as a wayland compositor, the clutter stage doesn't
have an usable window for IPC, so just create another one.

Also, disable freezing the keyboard when running on wayland, as
we can't do it really.

https://bugzilla.gnome.org/show_bug.cgi?id=707467
2013-09-12 10:34:25 +02:00
4db6e70f97 Disable XDND when running as a wayland compositor
We can't do xdnd on wayland easily, so let's disable this for 3.10

https://bugzilla.gnome.org/show_bug.cgi?id=707467
2013-09-12 10:34:25 +02:00
9d1f789937 ShellGlobal: repurpose the stage_gdk_window as the IBus window
And use it directly in the IBus event handling (by pushing it down
to StIMText)

https://bugzilla.gnome.org/show_bug.cgi?id=707467
2013-09-12 10:34:25 +02:00
11c2933e23 ShellGlobal: remove cursor manipulation functions
Use the new API in MetaScreen instead, which is automatically
routed to MetaCursorTracker as appropriate.

https://bugzilla.gnome.org/show_bug.cgi?id=707467
2013-09-12 10:34:22 +02:00
fbd4951ea7 [l10n] Updated Estonian translation 2013-09-12 07:54:11 +03:00
119 changed files with 17209 additions and 18265 deletions

5
.gitignore vendored
View File

@ -19,6 +19,8 @@ configure
data/50-gnome-shell-*.xml
data/gnome-shell.desktop
data/gnome-shell.desktop.in
data/gnome-shell-wayland.desktop
data/gnome-shell-wayland.desktop.in
data/gnome-shell-extension-prefs.desktop
data/gnome-shell-extension-prefs.desktop.in
data/gschemas.compiled
@ -71,13 +73,14 @@ src/calendar-server/evolution-calendar.desktop.in
src/calendar-server/org.gnome.Shell.CalendarServer.service
src/gnome-shell
src/gnome-shell-calendar-server
src/gnome-shell-extension-tool
src/gnome-shell-extension-prefs
src/gnome-shell-extension-tool
src/gnome-shell-hotplug-sniffer
src/gnome-shell-jhbuild
src/gnome-shell-perf-helper
src/gnome-shell-perf-tool
src/gnome-shell-real
src/gnome-shell-wayland
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
src/run-js-test
src/test-recorder

78
NEWS
View File

@ -1,3 +1,81 @@
3.10.0.1
=========
* Fix login screen [Ray; #708691]
Contributors:
Ray Strode, Giovanni Campagna, Jasper St. Pierree
Translations:
Kjartan Maraas [nb], Marek Černocký [cs], A S Alam [pa], Daniel Mustieles [es],
Ihar Hrachyshka [be], Chao-Hsiung Liao [zh_HK], Nilamdyuti Goswami [as],
Yuri Myasoedov [ru], Baurzhan Muftakhidinov [kk]
3.10.0
======
* Fix fade effect in ScrollViews [Carlos; #708256]
* network: Resync when activating connection changes [Jasper; #708322]
* Close run dialog when the screen locks [Florian; #708218]
* Fix entry growing out of password dialogs [Florian; #708324, #703833]
* Vertically center labels in submenu items [Jasper; #708330]
* https://bugzilla.gnome.org/show_bug.cgi?id=708387 [Mike; #708387]
* Fix bluetooth icon not being added to status menu [Jasper; #708541]
* Fix GNOME 2 keyring dialogs appearing on lock screen [Florian; #708187]
* Fix passwords being cleared twice when authentication fails [Florian; #708186]
* Fix message tray appearing in a11y popup on login screen [Florian; #708380]
* Increase width of aggregate menu popup [Adel; #708472]
Contributors:
Adel Gadllah, Mike Gorse, Ryan Lortie, Florian Müllner, Frédéric Péters,
Carlos Soriano, Jasper St. Pierre, Rico Tzschichholz
Translations:
Daniel Șerbănescu [ro], Ryan Lortie [eo], Ihar Hrachyshka [be],
A S Alam [pa], Jiro Matsuzawa [ja], Chao-Hsiung Liao [zh_HK, zh_TW],
Piotr Drąg [pl], Kristjan SCHMIDT [eo], Daniel Korostil [uk],
Rūdolfs Mazurs [lv], Reinout van Schouwen [nl], Yosef Or Boczko [he],
Fran Diéguez [gl], António Lima [pt], Andika Triwidada [id],
Alexandre Franke [fr], Rafael Ferreira [pt_BR], Milo Casagrande [it],
Kenneth Nielsen [da], Matej Urbančič [sl]
3.9.92
======
* Don't show page indicators if there's only one page [Florian; #707363]
* Make :active style of app and non-app results consistent [Jakub; #704714]
* Fade app pages when scrolled [Florian; #707409]
* Don't block scrolling on page indicators [Carlos; #707609]
* Tweak visual appearance of folder views [Florian; #707662]
* Don't put minimized apps at the end of the app switcher [Florian; #707663]
* Merge the wayland branch [Giovanni, Neil; #707467]
* Make search entry behave better in RTL locales [Matthias, Florian; #705779]
* Allow to change app pages with pageUp/pageDown keys [Carlos; #707979]
* Set approriate a11y states on expandable menu items [Alejandro; #708038]
* Improve page indicator animation [Carlos; #707565]
* Misc bug fixes and cleanups [Florian, Olivier, Jasper, Giovanni, Magdalen,
Adel, Carlos, Rico, Joanmarie; #707308, #707430, #707508, #707557, #707600,
#707614, #707666, #707814, #707806, #707801, #707889, #707892, #707935,
#707842, #707940, #707996, #708007, #708009, #708020, #707580, #708080]
Contributors:
Magdalen Berns, Olivier Blin, Giovanni Campagna, Matthias Clasen,
Joanmarie Diggs, Adel Gadllah, Florian Müllner, Alejandro Piñeiro,
Neil Roberts, Carlos Soriano, Jasper St. Pierre, Jakub Steiner,
Rico Tzschichholz
Translations:
Rafael Ferreira [pt_BR], Fran Diéguez [gl], Daniel Mustieles [es],
Aurimas Černius [lt], Luca Ferretti [it], Piotr Drąg [pl],
Chao-Hsiung Liao [zh_HK, zh_TW], Timo Jyrinki [fi], Daniel Korostil [uk],
Dušan Kazik [sk], Adam Matoušek [cs], Marek Černocký [cs],
Jiro Matsuzawa [ja], Yuri Myasoedov [ru], Tobias Endrigkeit [de],
Kjartan Maraas [nb], Victor Ibragimov [tg], Мирослав Николић [sr, sr@latin],
A S Alam [pa], Khaled Hosny [ar], Andika Triwidada [id],
Nilamdyuti Goswami [as], Ihar Hrachyshka [be], Rūdolfs Mazurs [lv],
Mattias Põldaru [et], Gabor Kelemen [hu], Bruce Cowan [en_GB],
Matej Urbančič [sl], Enrico Nicoletto [pt_BR], Benjamin Steinwender [de],
Changwoo Ryu [ko], Kris Thomsen [da], Alexandre Franke [fr],
Evgeny Bobkin [ru], Baurzhan Muftakhidinov [kk], Peter Mráz [sk],
Inaki Larranaga Murgoitio [eu], Yosef Or Boczko [he]
3.9.91
======
* Improve submenu styling [Jakub; #706037]

View File

@ -1,5 +1,5 @@
AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.9.91],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_INIT([gnome-shell],[3.10.0.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/shell-global.c])
@ -60,7 +60,7 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
CLUTTER_MIN_VERSION=1.13.4
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
GJS_MIN_VERSION=1.35.4
MUTTER_MIN_VERSION=3.9.91
MUTTER_MIN_VERSION=3.10.0
GTK_MIN_VERSION=3.7.9
GIO_MIN_VERSION=2.37.0
LIBECAL_MIN_VERSION=3.5.3
@ -70,7 +70,6 @@ POLKIT_MIN_VERSION=0.100
STARTUP_NOTIFICATION_MIN_VERSION=0.11
GCR_MIN_VERSION=3.7.5
GNOME_DESKTOP_REQUIRED_VERSION=3.7.90
GNOME_MENUS_REQUIRED_VERSION=3.5.3
NETWORKMANAGER_MIN_VERSION=0.9.8
PULSE_MIN_VERS=2.0
@ -80,7 +79,6 @@ SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION
gtk+-3.0 >= $GTK_MIN_VERSION
atk-bridge-2.0
gjs-internals-1.0 >= $GJS_MIN_VERSION
libgnome-menu-3.0 >= $GNOME_MENUS_REQUIRED_VERSION
$recorder_modules
gdk-x11-3.0 libsoup-2.4
xtst

View File

@ -3,6 +3,10 @@ dist_wanda_DATA = wanda.png
desktopdir=$(datadir)/applications
desktop_DATA = gnome-shell.desktop gnome-shell-extension-prefs.desktop
if HAVE_MUTTER_WAYLAND
desktop_DATA += gnome-shell-wayland.desktop
endif HAVE_MUTTER_WAYLAND
# We substitute in bindir so it works as an autostart
# file when built in a non-system prefix
@ -41,8 +45,10 @@ dist_theme_DATA = \
theme/message-tray-background.png \
theme/more-results.svg \
theme/noise-texture.png \
theme/page-indicator-active.svg \
theme/page-indicator-active.svg \
theme/page-indicator-inactive.svg \
theme/page-indicator-checked.svg \
theme/page-indicator-hover.svg \
theme/panel-button-border.svg \
theme/panel-button-highlight-narrow.svg \
theme/panel-button-highlight-wide.svg \
@ -83,6 +89,7 @@ convert_DATA = gnome-shell-overrides.convert
EXTRA_DIST = \
gnome-shell.desktop.in.in \
gnome-shell-wayland.desktop.in.in \
gnome-shell-extension-prefs.desktop.in.in \
$(introspection_DATA) \
$(menu_DATA) \
@ -92,6 +99,7 @@ EXTRA_DIST = \
CLEANFILES = \
gnome-shell.desktop.in \
gnome-shell-wayland.desktop.in \
gnome-shell-extension-prefs.in \
$(desktop_DATA) \
$(keys_DATA) \

View File

@ -0,0 +1,15 @@
[Desktop Entry]
Type=Application
_Name=GNOME Shell (wayland compositor)
_Comment=Window management and application launching
Exec=@bindir@/mutter-launch -- gnome-shell-wayland --wayland
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gnome-shell
X-GNOME-Bugzilla-Component=general
X-GNOME-Bugzilla-Version=@VERSION@
Categories=GNOME;GTK;Core;
OnlyShowIn=GNOME;
NoDisplay=true
X-GNOME-Autostart-Phase=DisplayServer
X-GNOME-Autostart-Notify=true
X-GNOME-AutoRestart=false

View File

@ -216,10 +216,10 @@
<key name="focus-change-on-pointer-rest" type="b">
<default>true</default>
<summary>Delay focus changes in mouse mode until the pointer stops moving</summary>
<description>
<_summary>Delay focus changes in mouse mode until the pointer stops moving</_summary>
<_description>
This key overrides the key in org.gnome.mutter when running GNOME Shell.
</description>
</_description>
</key>
</schema>
</schemalist>

View File

@ -642,7 +642,7 @@ StScrollBar StButton#vhandle:active {
}
.aggregate-menu {
width: 340px;
width: 360px;
}
.aggregate-menu .popup-menu-icon {
@ -918,7 +918,6 @@ StScrollBar StButton#vhandle:active {
}
.app-display {
padding: 8px;
spacing: 20px;
}
@ -942,7 +941,7 @@ StScrollBar StButton#vhandle:active {
}
.page-indicator {
padding: 15px 30px;
padding: 15px 20px;
}
.page-indicator .page-indicator-icon {
@ -951,11 +950,19 @@ StScrollBar StButton#vhandle:active {
background-image: url(page-indicator-inactive.svg);
}
.page-indicator:hover .page-indicator-icon,
.page-indicator:checked .page-indicator-icon {
.page-indicator:hover .page-indicator-icon {
background-image: url(page-indicator-hover.svg);
}
.page-indicator:active .page-indicator-icon {
background-image: url(page-indicator-active.svg);
}
.page-indicator:checked .page-indicator-icon,
.page-indicator:checked:active .page-indicator-icon {
background-image: url(page-indicator-checked.svg);
}
.no-frequent-applications-label {
font-size: 18pt;
color: #999999;

View File

@ -14,7 +14,7 @@
id="svg4703"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="page-indicator-active.svg">
sodipodi:docname="page-indicator-pushed.svg">
<defs
id="defs4705" />
<sodipodi:namedview
@ -24,18 +24,22 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.197802"
inkscape:cx="2.1522887"
inkscape:cy="16.782904"
inkscape:zoom="31.392433"
inkscape:cx="1.0245308"
inkscape:cy="13.3715"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1920"
inkscape:window-height="1021"
inkscape:window-width="2560"
inkscape:window-height="1374"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1" />
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid6140" />
</sodipodi:namedview>
<metadata
id="metadata4708">
<rdf:RDF>
@ -44,7 +48,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
@ -54,14 +58,14 @@
inkscape:groupmode="layer"
transform="translate(0,2)">
<path
transform="matrix(0.72823872,0,0,0.8336417,-1512.2872,-525.55618)"
d="m 2099.9808,638.83099 c 0,5.29998 -4.9184,9.59645 -10.9854,9.59645 -6.0671,0 -10.9854,-4.29647 -10.9854,-9.59645 0,-5.29997 4.9183,-9.59645 10.9854,-9.59645 6.067,0 10.9854,4.29648 10.9854,9.59645 z"
transform="matrix(0.54617904,0,0,0.62523128,-1131.9904,-392.39214)"
d="m 2099.9808,638.83099 a 10.985409,9.5964489 0 1 1 -21.9708,0 10.985409,9.5964489 0 1 1 21.9708,0 z"
sodipodi:ry="9.5964489"
sodipodi:rx="10.985409"
sodipodi:cy="638.83099"
sodipodi:cx="2088.9954"
id="path4711"
style="fill:#fdffff;fill-opacity:0.94117647;stroke:none"
style="fill:#fdffff;fill-opacity:1;stroke:none"
sodipodi:type="arc" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,67 @@
<?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="18"
height="18"
id="svg4703"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="page-indicator-active.svg">
<defs
id="defs4705" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.197802"
inkscape:cx="2.1522887"
inkscape:cy="16.782904"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1920"
inkscape:window-height="1021"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1" />
<metadata
id="metadata4708">
<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>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
transform="translate(0,2)">
<path
transform="matrix(0.72823872,0,0,0.8336417,-1512.2872,-525.55618)"
d="m 2099.9808,638.83099 c 0,5.29998 -4.9184,9.59645 -10.9854,9.59645 -6.0671,0 -10.9854,-4.29647 -10.9854,-9.59645 0,-5.29997 4.9183,-9.59645 10.9854,-9.59645 6.067,0 10.9854,4.29648 10.9854,9.59645 z"
sodipodi:ry="9.5964489"
sodipodi:rx="10.985409"
sodipodi:cy="638.83099"
sodipodi:cx="2088.9954"
id="path4711"
style="fill:#fdffff;fill-opacity:0.94117647;stroke:none"
sodipodi:type="arc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,67 @@
<?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="18"
height="18"
id="svg5266"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="page-indicator-inactive.svg">
<defs
id="defs5268" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="11.313709"
inkscape:cx="-2.307566"
inkscape:cy="17.859535"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="2560"
inkscape:window-height="1374"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1" />
<metadata
id="metadata5271">
<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"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
transform="translate(0,2)">
<path
sodipodi:type="arc"
style="fill:none;fill-opacity:0;stroke:#ffffff;stroke-width:2.93356276000000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path5274"
sodipodi:cx="2088.9954"
sodipodi:cy="638.83099"
sodipodi:rx="10.985409"
sodipodi:ry="9.5964489"
d="m 2099.9808,638.83099 c 0,5.29998 -4.9184,9.59645 -10.9854,9.59645 -6.0671,0 -10.9854,-4.29647 -10.9854,-9.59645 0,-5.29997 4.9183,-9.59645 10.9854,-9.59645 6.067,0 10.9854,4.29648 10.9854,9.59645 z"
transform="matrix(0.63720887,0,0,0.72943648,-1322.1264,-458.98661)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -25,14 +25,14 @@
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="11.313709"
inkscape:cx="13.381365"
inkscape:cx="-2.307566"
inkscape:cy="17.859535"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1920"
inkscape:window-height="1021"
inkscape:window-width="2560"
inkscape:window-height="1374"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1" />
@ -55,7 +55,7 @@
transform="translate(0,2)">
<path
sodipodi:type="arc"
style="fill:#ffffff;fill-opacity:0;stroke:#ffffff;stroke-width:2.93356276;stroke-miterlimit:4;stroke-opacity:0.39215686;stroke-dasharray:none"
style="fill:none;fill-opacity:0;stroke:#ffffff;stroke-width:2.93356276000000005;stroke-miterlimit:4;stroke-opacity:0.39215686000000000;stroke-dasharray:none"
id="path5274"
sodipodi:cx="2088.9954"
sodipodi:cy="638.83099"

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -244,6 +244,7 @@ const AuthPrompt = new Lang.Class({
},
_onVerificationFailed: function() {
this._queryingService = null;
this.clear();
this.updateSensitivity(true);

View File

@ -619,7 +619,7 @@ const LoginDialog = new Lang.Class({
// Translators: this message is shown below the username entry field
// to clue the user in on how to login to the local network realm
this._authPrompt.setMessage(_("(e.g., user or %s)").format(hint), AuthPrompt.MessageType.HINT);
this._authPrompt.setMessage(_("(e.g., user or %s)").format(hint), GdmUtil.MessageType.HINT);
},
_askForUsernameAndBeginVerification: function() {

View File

@ -72,8 +72,10 @@ function versionCompare(required, reference) {
reference = reference.split('.');
for (let i = 0; i < required.length; i++) {
if (required[i] != reference[i])
return required[i] < reference[i];
let requiredInt = parseInt(required[i]);
let referenceInt = parseInt(reference[i]);
if (requiredInt != referenceInt)
return requiredInt < referenceInt;
}
return true;

View File

@ -2,6 +2,7 @@
const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib;
const Lang = imports.lang;
const St = imports.gi.St;
const Main = imports.ui.main;
@ -189,28 +190,57 @@ function insertSorted(array, val, cmp) {
return pos;
}
function makeCloseButton() {
let closeButton = new St.Button({ style_class: 'notification-close'});
const CloseButton = new Lang.Class({
Name: 'CloseButton',
Extends: St.Button,
// This is a bit tricky. St.Bin has its own x-align/y-align properties
// that compete with Clutter's properties. This should be fixed for
// Clutter 2.0. Since St.Bin doesn't define its own setters, the
// setters are a workaround to get Clutter's version.
closeButton.set_x_align(Clutter.ActorAlign.END);
closeButton.set_y_align(Clutter.ActorAlign.START);
_init: function(boxpointer) {
this.parent({ style_class: 'notification-close'});
// XXX Clutter 2.0 workaround: ClutterBinLayout needs expand
// to respect the alignments.
closeButton.set_x_expand(true);
closeButton.set_y_expand(true);
// This is a bit tricky. St.Bin has its own x-align/y-align properties
// that compete with Clutter's properties. This should be fixed for
// Clutter 2.0. Since St.Bin doesn't define its own setters, the
// setters are a workaround to get Clutter's version.
this.set_x_align(Clutter.ActorAlign.END);
this.set_y_align(Clutter.ActorAlign.START);
closeButton.connect('style-changed', function() {
let themeNode = closeButton.get_theme_node();
closeButton.translation_x = themeNode.get_length('-shell-close-overlap-x');
closeButton.translation_y = themeNode.get_length('-shell-close-overlap-y');
});
// XXX Clutter 2.0 workaround: ClutterBinLayout needs expand
// to respect the alignments.
this.set_x_expand(true);
this.set_y_expand(true);
return closeButton;
this._boxPointer = boxpointer;
if (boxpointer)
this._boxPointer.connect('arrow-side-changed', Lang.bind(this, this._sync));
},
_computeBoxPointerOffset: function() {
if (!this._boxPointer || !this._boxPointer.actor.get_stage())
return 0;
let side = this._boxPointer.arrowSide;
if (side == St.Side.TOP)
return this._boxPointer.getArrowHeight();
else
return 0;
},
_sync: function() {
let themeNode = this.get_theme_node();
let offY = this._computeBoxPointerOffset();
this.translation_x = themeNode.get_length('-shell-close-overlap-x')
this.translation_y = themeNode.get_length('-shell-close-overlap-y') + offY;
},
vfunc_style_changed: function() {
this._sync();
this.parent();
},
});
function makeCloseButton(boxpointer) {
return new CloseButton(boxpointer);
}
function ensureActorVisibleInScrollView(scrollView, actor) {

View File

@ -39,12 +39,9 @@ const FOLDER_SUBICON_FRACTION = .4;
const MIN_FREQUENT_APPS_COUNT = 3;
const INDICATORS_ANIMATION_TIME = 0.5;
// 100% means indicators wait for be animated until the previous one
// is animated completely. 0% means all animators are animated
// at once without delay
const INDICATORS_ANIMATION_DELAY_PERCENTAGE = 50;
const INDICATORS_BASE_TIME = 0.25;
const INDICATORS_ANIMATION_DELAY = 0.125;
const INDICATORS_ANIMATION_MAX_TIME = 0.75;
// Fraction of page height the finger or mouse must reach
// to change page
const PAGE_SWITCH_TRESHOLD = 0.2;
@ -58,13 +55,13 @@ function _loadCategory(dir, view) {
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
if (nextType == GMenu.TreeItemType.ENTRY) {
let entry = iter.get_entry();
let app = appSystem.lookup_app_by_tree_entry(entry);
if (!entry.get_app_info().get_nodisplay())
let appInfo = entry.get_app_info();
let app = appSystem.lookup_app(entry.get_desktop_file_id());
if (appInfo.should_show())
view.addApp(app);
} else if (nextType == GMenu.TreeItemType.DIRECTORY) {
let itemDir = iter.get_directory();
if (!itemDir.get_is_nodisplay())
_loadCategory(itemDir, view);
_loadCategory(itemDir, view);
}
}
};
@ -230,24 +227,23 @@ const PageIndicators = new Lang.Class({
if (children.length == 0)
return;
let timePerChild = INDICATORS_ANIMATION_TIME / this._nPages;
let delay = INDICATORS_ANIMATION_DELAY_PERCENTAGE / 100 * timePerChild;
let [stageX, ] = children[0].get_transformed_position();
let offset;
let monitor = Main.layoutManager.primaryMonitor;
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
offset = monitor.x - stageX - children[0].width;
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL)
offset = -children[0].width;
else
offset = monitor.x + monitor.width - stageX;
offset = children[0].width;
let delay = INDICATORS_ANIMATION_DELAY;
let totalAnimationTime = INDICATORS_BASE_TIME + INDICATORS_ANIMATION_DELAY * this._nPages;
if (totalAnimationTime > INDICATORS_ANIMATION_MAX_TIME)
delay -= (totalAnimationTime - INDICATORS_ANIMATION_MAX_TIME) / this._nPages;
for (let i = 0; i < this._nPages; i++) {
children[i].translation_x = offset;
Tweener.addTween(children[i],
{ translation_x: 0,
time: timePerChild,
delay: delay * i,
transition: 'easeOutQuad'
time: INDICATORS_BASE_TIME + delay * i,
transition: 'easeInOutQuad'
});
}
}
@ -337,6 +333,19 @@ const AllView = new Lang.Class({
function() {
this._displayingPopup = false;
}));
this.actor.connect('notify::mapped', Lang.bind(this,
function() {
if (this.actor.mapped) {
this._keyPressEventId =
global.stage.connect('key-press-event',
Lang.bind(this, this._onKeyPressEvent));
} else {
if (this._keyPressEventId)
global.stage.disconnect(this._keyPressEventId);
this._keyPressEventId = 0;
}
}));
},
getCurrentPageY: function() {
@ -344,6 +353,8 @@ const AllView = new Lang.Class({
},
goToPage: function(pageNumber) {
if(pageNumber < 0 || pageNumber > this._grid.nPages() - 1)
return;
if (this._currentPage == pageNumber && this._displayingPopup && this._currentPopup)
return;
if (this._displayingPopup && this._currentPopup)
@ -405,16 +416,13 @@ const AllView = new Lang.Class({
_onScroll: function(actor, event) {
if (this._displayingPopup)
return true;
let direction = event.get_scroll_direction();
if (direction == Clutter.ScrollDirection.UP) {
if (this._currentPage > 0)
this.goToPage(this._currentPage - 1);
} else {
if (direction == Clutter.ScrollDirection.DOWN) {
if (this._currentPage < (this._grid.nPages() - 1))
this.goToPage(this._currentPage + 1);
}
}
if (direction == Clutter.ScrollDirection.UP)
this.goToPage(this._currentPage - 1);
else if (direction == Clutter.ScrollDirection.DOWN)
this.goToPage(this._currentPage + 1);
return true;
},
@ -434,9 +442,9 @@ const AllView = new Lang.Class({
return;
let diffCurrentPage = this._diffToPage(this._currentPage);
if (diffCurrentPage > this._scrollView.height * PAGE_SWITCH_TRESHOLD) {
if (action.get_velocity(0)[2] > 0 && this._currentPage > 0)
if (action.get_velocity(0)[2] > 0)
this.goToPage(this._currentPage - 1);
else if (this._currentPage < this._grid.nPages() - 1)
else
this.goToPage(this._currentPage + 1);
} else {
this.goToPage(this._currentPage);
@ -444,6 +452,21 @@ const AllView = new Lang.Class({
this._panning = false;
},
_onKeyPressEvent: function(actor, event) {
if (this._displayingPopup)
return true;
if (event.get_key_symbol() == Clutter.Page_Up) {
this.goToPage(this._currentPage - 1);
return true;
} else if (event.get_key_symbol() == Clutter.Page_Down) {
this.goToPage(this._currentPage + 1);
return true;
}
return false;
},
_getItemId: function(item) {
if (item instanceof Shell.App)
return item.get_id();
@ -668,8 +691,7 @@ const AppDisplay = new Lang.Class({
Name: 'AppDisplay',
_init: function() {
this._appSystem = Shell.AppSystem.get_default();
this._appSystem.connect('installed-changed', Lang.bind(this, function() {
Shell.AppSystem.get_default().connect('installed-changed', Lang.bind(this, function() {
Main.queueDeferredWork(this._allAppsWorkId);
}));
Main.overview.connect('showing', Lang.bind(this, function() {
@ -785,7 +807,8 @@ const AppDisplay = new Lang.Class({
view.removeAll();
let tree = this._appSystem.get_tree();
let tree = new GMenu.Tree({ menu_basename: "applications.menu" });
tree.load_sync();
let root = tree.get_root_directory();
let iter = root.iter();
@ -794,8 +817,6 @@ const AppDisplay = new Lang.Class({
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
if (nextType == GMenu.TreeItemType.DIRECTORY) {
let dir = iter.get_directory();
if (dir.get_is_nodisplay())
continue;
if (folderCategories.indexOf(dir.get_menu_id()) != -1)
view.addFolder(dir);
@ -843,8 +864,8 @@ const AppSearchProvider = new Lang.Class({
getResultMetas: function(apps, callback) {
let metas = [];
for (let i = 0; i < apps.length; i++) {
let app = apps[i];
metas.push({ 'id': app,
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);
@ -854,15 +875,23 @@ const AppSearchProvider = new Lang.Class({
callback(metas);
},
_compareResults: function(a, b) {
let usage = Shell.AppUsage.get_default();
return usage.compare('', a, b);
},
getInitialResultSet: function(terms) {
this.searchSystem.setResults(this, this._appSys.initial_search(terms));
let query = terms.join(' ');
let results = Gio.DesktopAppInfo.search(query, Lang.bind(this, this._compareResults), MAX_COLUMNS);
this.searchSystem.setResults(this, results);
},
getSubsearchResultSet: function(previousResults, terms) {
this.searchSystem.setResults(this, this._appSys.subsearch(previousResults, terms));
this.getInitialResultSet(terms);
},
activateResult: function(app) {
activateResult: function(result) {
let app = this._appSys.lookup_app(result);
let event = Clutter.get_current_event();
let modifiers = event ? event.get_state() : 0;
let openNewWindow = modifiers & Clutter.ModifierType.CONTROL_MASK;
@ -882,7 +911,7 @@ const AppSearchProvider = new Lang.Class({
},
createResultObject: function (resultMeta, terms) {
let app = resultMeta['id'];
let app = this._appSys.lookup_app(resultMeta['id']);
return new AppIcon(app);
}
});
@ -1157,7 +1186,7 @@ const AppFolderPopup = new Lang.Class({
this.actor.add_actor(this._boxPointer.actor);
this._boxPointer.bin.set_child(this._view.actor);
this.closeButton = Util.makeCloseButton();
this.closeButton = Util.makeCloseButton(this._boxPointer);
this.closeButton.connect('clicked', Lang.bind(this, this.popdown));
this.actor.add_actor(this.closeButton);

View File

@ -319,9 +319,9 @@ const Background = new Lang.Class({
this._cancellable = new Gio.Cancellable();
this.isLoaded = false;
this._settings.connect('changed', Lang.bind(this, function() {
this.emit('changed');
}));
this._settingsChangedSignalId = this._settings.connect('changed', Lang.bind(this, function() {
this.emit('changed');
}));
this._load();
},
@ -362,6 +362,10 @@ const Background = new Lang.Class({
this.actor.disconnect(this._destroySignalId);
this._destroySignalId = 0;
if (this._settingsChangedSignalId != 0)
this._settings.disconnect(this._settingsChangedSignalId);
this._settingsChangedSignalId = 0;
},
_setLoaded: function() {

View File

@ -3,8 +3,9 @@
const Clutter = imports.gi.Clutter;
const Lang = imports.lang;
const Meta = imports.gi.Meta;
const St = imports.gi.St;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const St = imports.gi.St;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
@ -61,6 +62,10 @@ const BoxPointer = new Lang.Class({
this._muteInput();
},
get arrowSide() {
return this._arrowSide;
},
_muteInput: function() {
if (this._capturedEventId == 0)
this._capturedEventId = this.actor.connect('captured-event',
@ -612,6 +617,8 @@ const BoxPointer = new Lang.Class({
this._container.queue_relayout();
return false;
}));
this.emit('arrow-side-changed');
}
},
@ -644,6 +651,8 @@ const BoxPointer = new Lang.Class({
updateArrowSide: function(side) {
this._arrowSide = side;
this._border.queue_repaint();
this.emit('arrow-side-changed');
},
getPadding: function(side) {
@ -654,3 +663,4 @@ const BoxPointer = new Lang.Class({
return this.actor.get_theme_node().get_length('-arrow-rise');
}
});
Signals.addSignalMethods(BoxPointer.prototype);

View File

@ -80,23 +80,26 @@ const KeyringDialog = new Lang.Class({
},
_buildControlTable: function() {
let table = new St.Table({ style_class: 'keyring-dialog-control-table' });
let layout = new Clutter.TableLayout();
let table = new St.Widget({ style_class: 'keyring-dialog-control-table',
layout_manager: layout });
layout.hookup_style(table);
let row = 0;
if (this.prompt.password_visible) {
let label = new St.Label(({ style_class: 'prompt-dialog-password-label' }));
let label = new St.Label({ style_class: 'prompt-dialog-password-label' });
label.set_text(_("Password:"));
table.add(label, { row: row, col: 0,
x_expand: false, x_fill: true,
x_align: St.Align.START,
y_fill: false, y_align: St.Align.MIDDLE });
label.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
layout.pack(label, 0, row);
layout.child_set(label, { x_expand: false, y_fill: false,
x_align: Clutter.TableAlignment.START });
this._passwordEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
text: '',
can_focus: true});
can_focus: true });
this._passwordEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onPasswordActivate));
table.add(this._passwordEntry, { row: row, col: 1, x_expand: true, x_fill: true, x_align: St.Align.START });
layout.pack(this._passwordEntry, 1, row);
row++;
} else {
this._passwordEntry = null;
@ -105,17 +108,16 @@ const KeyringDialog = new Lang.Class({
if (this.prompt.confirm_visible) {
var label = new St.Label(({ style_class: 'prompt-dialog-password-label' }));
label.set_text(_("Type again:"));
table.add(label, { row: row, col: 0,
x_expand: false, x_fill: true,
x_align: St.Align.START,
y_fill: false, y_align: St.Align.MIDDLE });
layout.pack(label, 0, row);
layout.child_set(label, { x_expand: false, y_fill: false,
x_align: Clutter.TableAlignment.START });
this._confirmEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
text: '',
can_focus: true});
can_focus: true });
this._confirmEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
ShellEntry.addContextMenu(this._confirmEntry, { isPassword: true });
this._confirmEntry.clutter_text.connect('activate', Lang.bind(this, this._onConfirmActivate));
table.add(this._confirmEntry, { row: row, col: 1, x_expand: true, x_fill: true, x_align: St.Align.START });
layout.pack(this._confirmEntry, 1, row);
row++;
} else {
this._confirmEntry = null;
@ -128,14 +130,14 @@ const KeyringDialog = new Lang.Class({
let choice = new CheckBox.CheckBox();
this.prompt.bind_property('choice-label', choice.getLabelActor(), 'text', GObject.BindingFlags.SYNC_CREATE);
this.prompt.bind_property('choice-chosen', choice.actor, 'checked', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL);
table.add(choice.actor, { row: row, col: 1, x_expand: false, x_fill: true, x_align: St.Align.START });
layout.pack(choice.actor, 1, row);
row++;
}
let warning = new St.Label({ style_class: 'prompt-dialog-error-label' });
warning.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
warning.clutter_text.line_wrap = true;
table.add(warning, { row: row, col: 1, x_expand: false, x_fill: false, x_align: St.Align.START });
layout.pack(warning, 1, row);
this.prompt.bind_property('warning-visible', warning, 'visible', GObject.BindingFlags.SYNC_CREATE);
this.prompt.bind_property('warning', warning, 'text', GObject.BindingFlags.SYNC_CREATE);
@ -221,27 +223,50 @@ const KeyringDialog = new Lang.Class({
},
});
const KeyringDummyDialog = new Lang.Class({
Name: 'KeyringDummyDialog',
_init: function() {
this.prompt = new Shell.KeyringPrompt();
this.prompt.connect('show-password',
Lang.bind(this, this._cancelPrompt));
this.prompt.connect('show-confirm', Lang.bind(this,
this._cancelPrompt));
},
_cancelPrompt: function() {
this.prompt.cancel();
}
});
const KeyringPrompter = new Lang.Class({
Name: 'KeyringPrompter',
_init: function() {
this._prompter = new Gcr.SystemPrompter();
this._prompter.connect('new-prompt', function(prompter) {
let dialog = new KeyringDialog();
return dialog.prompt;
});
this._prompter.connect('new-prompt', Lang.bind(this,
function() {
let dialog = this._enabled ? new KeyringDialog()
: new KeyringDummyDialog();
return dialog.prompt;
}));
this._dbusId = null;
this._registered = false;
this._enabled = false;
},
enable: function() {
this._prompter.register(Gio.DBus.session);
this._dbusId = Gio.DBus.session.own_name('org.gnome.keyring.SystemPrompter',
Gio.BusNameOwnerFlags.ALLOW_REPLACEMENT, null, null);
if (!this._registered) {
this._prompter.register(Gio.DBus.session);
this._dbusId = Gio.DBus.session.own_name('org.gnome.keyring.SystemPrompter',
Gio.BusNameOwnerFlags.ALLOW_REPLACEMENT, null, null);
this._registered = true;
}
this._enabled = true;
},
disable: function() {
this._prompter.unregister(false);
Gio.DBus.session.unown_name(this._dbusId);
this._enabled = false;
}
});

View File

@ -72,13 +72,18 @@ const NetworkSecretDialog = new Lang.Class({
expand: true });
}
let secretTable = new St.Table({ style_class: 'network-dialog-secret-table' });
let layout = new Clutter.TableLayout();
let secretTable = new St.Widget({ style_class: 'network-dialog-secret-table',
layout_manager: layout });
layout.hookup_style(secretTable);
let initialFocusSet = false;
let pos = 0;
for (let i = 0; i < this._content.secrets.length; i++) {
let secret = this._content.secrets[i];
let label = new St.Label({ style_class: 'prompt-dialog-password-label',
text: secret.label });
label.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
let reactive = secret.key != null;
@ -111,11 +116,10 @@ const NetworkSecretDialog = new Lang.Class({
} else
secret.valid = true;
secretTable.add(label, { row: pos, col: 0,
x_expand: false, x_fill: true,
x_align: St.Align.START,
y_fill: false, y_align: St.Align.MIDDLE });
secretTable.add(secret.entry, { row: pos, col: 1, x_expand: true, x_fill: true, y_align: St.Align.END });
layout.pack(label, 0, pos);
layout.child_set(label, { x_expand: false, y_fill: false,
x_align: Clutter.TableAlignment.START });
layout.pack(secret.entry, 1, pos);
pos++;
if (secret.password)

View File

@ -5,6 +5,7 @@ const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const St = imports.gi.St;
const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const Tweener = imports.ui.tweener;
@ -27,9 +28,9 @@ const DragMotionResult = {
};
const DRAG_CURSOR_MAP = {
0: Shell.Cursor.DND_UNSUPPORTED_TARGET,
1: Shell.Cursor.DND_COPY,
2: Shell.Cursor.DND_MOVE
0: Meta.Cursor.DND_UNSUPPORTED_TARGET,
1: Meta.Cursor.DND_COPY,
2: Meta.Cursor.DND_MOVE
};
const DragDropResult = {
@ -85,11 +86,6 @@ const _Draggable = new Lang.Class({
this.actor.connect('destroy', Lang.bind(this, function() {
this._actorDestroyed = true;
// If the drag actor is destroyed and we were going to fix
// up its hover state, fix up the parent hover state instead
if (this.actor == this._firstLeaveActor)
this._firstLeaveActor = this._dragOrigParent;
if (this._dragInProgress && this._dragCancellable)
this._cancelDrag(global.get_current_time());
this.disconnectAll();
@ -105,12 +101,6 @@ const _Draggable = new Lang.Class({
this._animationInProgress = false; // The drag is over and the item is in the process of animating to its original position (snapping back or reverting).
this._dragCancellable = true;
// During the drag, we eat enter/leave events so that actors don't prelight.
// But we remember the actors that we first left/last entered so we can
// fix up the hover state after the drag ends.
this._firstLeaveActor = null;
this._lastEnterActor = null;
this._eventsGrabbed = false;
},
@ -196,11 +186,6 @@ const _Draggable = new Lang.Class({
this._cancelDrag(event.get_time());
return true;
}
} else if (event.type() == Clutter.EventType.LEAVE) {
if (this._firstLeaveActor == null)
this._firstLeaveActor = event.get_source();
} else if (event.type() == Clutter.EventType.ENTER) {
this._lastEnterActor = event.get_source();
}
return false;
@ -244,7 +229,7 @@ const _Draggable = new Lang.Class({
if (this._onEventId)
this._ungrabActor();
this._grabEvents();
global.set_cursor(Shell.Cursor.DND_IN_DRAG);
global.screen.set_cursor(Meta.Cursor.DND_IN_DRAG);
this._dragX = this._dragStartX = stageX;
this._dragY = this._dragStartY = stageY;
@ -374,7 +359,7 @@ const _Draggable = new Lang.Class({
if (motionFunc) {
let result = motionFunc(dragEvent);
if (result != DragMotionResult.CONTINUE) {
global.set_cursor(DRAG_CURSOR_MAP[result]);
global.screen.set_cursor(DRAG_CURSOR_MAP[result]);
return false;
}
}
@ -392,13 +377,13 @@ const _Draggable = new Lang.Class({
targY,
0);
if (result != DragMotionResult.CONTINUE) {
global.set_cursor(DRAG_CURSOR_MAP[result]);
global.screen.set_cursor(DRAG_CURSOR_MAP[result]);
return false;
}
}
target = target.get_parent();
}
global.set_cursor(Shell.Cursor.DND_IN_DRAG);
global.screen.set_cursor(Meta.Cursor.DND_IN_DRAG);
return false;
},
@ -470,7 +455,7 @@ const _Draggable = new Lang.Class({
}
this._dragInProgress = false;
global.unset_cursor();
global.screen.set_cursor(Meta.Cursor.DEFAULT);
this.emit('drag-end', event.get_time(), true);
this._dragComplete();
return true;
@ -522,7 +507,7 @@ const _Draggable = new Lang.Class({
let [snapBackX, snapBackY, snapBackScale] = this._getRestoreLocation();
if (this._actorDestroyed) {
global.unset_cursor();
global.screen.set_cursor(Meta.Cursor.DEFAULT);
if (!this._buttonDown)
this._dragComplete();
this.emit('drag-end', eventTime, false);
@ -576,7 +561,7 @@ const _Draggable = new Lang.Class({
} else {
dragActor.destroy();
}
global.unset_cursor();
global.screen.set_cursor(Meta.Cursor.DEFAULT);
this.emit('drag-end', eventTime, false);
this._animationInProgress = false;
@ -584,33 +569,12 @@ const _Draggable = new Lang.Class({
this._dragComplete();
},
// Actor is an actor we have entered or left during the drag; call
// st_widget_sync_hover on all StWidget ancestors
_syncHover: function(actor) {
while (actor) {
let parent = actor.get_parent();
if (actor instanceof St.Widget)
actor.sync_hover();
actor = parent;
}
},
_dragComplete: function() {
if (!this._actorDestroyed)
Shell.util_set_hidden_from_pick(this._dragActor, false);
this._ungrabEvents();
if (this._firstLeaveActor) {
this._syncHover(this._firstLeaveActor);
this._firstLeaveActor = null;
}
if (this._lastEnterActor) {
this._syncHover(this._lastEnterActor);
this._lastEnterActor = null;
}
global.sync_pointer();
if (this._updateHoverId) {
GLib.source_remove(this._updateHoverId);

View File

@ -33,6 +33,7 @@ const FocusCaretTracker = new Lang.Class({
_init: function() {
Atspi.init();
Atspi.set_timeout(250, 250);
this._atspiListener = Atspi.EventListener.new(Lang.bind(this, this._onChanged));
},

View File

@ -362,7 +362,7 @@ const LayoutManager = new Lang.Class({
BackgroundMenu.addBackgroundMenu(bgManager.background.actor);
}));
this._bgManagers.push(bgManager);
this._bgManagers[monitorIndex] = bgManager;
return bgManager.background;
},

View File

@ -1072,15 +1072,15 @@ const LookingGlass = new Lang.Class({
let myWidth = primary.width * 0.7;
let availableHeight = primary.height - Main.layoutManager.keyboardBox.height;
let myHeight = Math.min(primary.height * 0.7, availableHeight * 0.9);
this.actor.x = (primary.width - myWidth) / 2;
this._hiddenY = Main.layoutManager.panelBox.height - myHeight - 4; // -4 to hide the top corners
this.actor.x = primary.x + (primary.width - myWidth) / 2;
this._hiddenY = primary.y + Main.layoutManager.panelBox.height - myHeight - 4; // -4 to hide the top corners
this._targetY = this._hiddenY + myHeight;
this.actor.y = this._hiddenY;
this.actor.width = myWidth;
this.actor.height = myHeight;
this._objInspector.actor.set_size(Math.floor(myWidth * 0.8), Math.floor(myHeight * 0.8));
this._objInspector.actor.set_position(primary.x + this.actor.x + Math.floor(myWidth * 0.1),
primary.y + this._targetY + Math.floor(myHeight * 0.1));
this._objInspector.actor.set_position(this.actor.x + Math.floor(myWidth * 0.1),
this._targetY + Math.floor(myHeight * 0.1));
},
insertObject: function(obj) {

View File

@ -57,6 +57,20 @@ const Magnifier = new Lang.Class({
// Magnifier is a manager of ZoomRegions.
this._zoomRegions = [];
// Export to dbus.
magDBusService = new MagnifierDBus.ShellMagnifier();
let showAtLaunch = this._settingsInit();
this.setActive(showAtLaunch);
},
_initialize: function() {
if (this._initialized)
return;
this._initialized = true;
this._settingsInitLate();
// Create small clutter tree for the magnified mouse.
let cursorTracker = Meta.CursorTracker.get_for_screen(global.screen);
this._mouseSprite = new Clutter.Texture();
@ -72,15 +86,11 @@ const Magnifier = new Lang.Class({
let aZoomRegion = new ZoomRegion(this, this._cursorRoot);
this._zoomRegions.push(aZoomRegion);
let showAtLaunch = this._settingsInit(aZoomRegion);
this._settingsInitRegion(aZoomRegion);
aZoomRegion.scrollContentsTo(this.xMouse, this.yMouse);
cursorTracker.connect('cursor-changed', Lang.bind(this, this._updateMouseSprite));
this._cursorTracker = cursorTracker;
// Export to dbus.
magDBusService = new MagnifierDBus.ShellMagnifier();
this.setActive(showAtLaunch);
},
/**
@ -88,7 +98,7 @@ const Magnifier = new Lang.Class({
* Show the system mouse pointer.
*/
showSystemCursor: function() {
global.stage.show_cursor();
this._cursorTracker.set_pointer_visible(true);
},
/**
@ -96,7 +106,7 @@ const Magnifier = new Lang.Class({
* Hide the system mouse pointer.
*/
hideSystemCursor: function() {
global.stage.hide_cursor();
this._cursorTracker.set_pointer_visible(false);
},
/**
@ -105,6 +115,12 @@ const Magnifier = new Lang.Class({
* @activate: Boolean to activate or de-activate the magnifier.
*/
setActive: function(activate) {
if (activate == this.isActive())
return;
if (activate)
this._initialize();
this._zoomRegions.forEach (function(zoomRegion, index, array) {
zoomRegion.setActive(activate);
});
@ -117,7 +133,7 @@ const Magnifier = new Lang.Class({
// Make sure system mouse pointer is shown when all zoom regions are
// invisible.
if (!activate)
global.stage.show_cursor();
this._cursorTracker.set_pointer_visible(true);
// Notify interested parties of this change
this.emit('active-changed', activate);
@ -432,64 +448,68 @@ const Magnifier = new Lang.Class({
this._mouseSprite.set_anchor_point(xHot, yHot);
},
_settingsInit: function(zoomRegion) {
_settingsInitRegion: function(zoomRegion) {
// Mag factor is accurate to two decimal places.
let aPref = parseFloat(this._settings.get_double(MAG_FACTOR_KEY).toFixed(2));
if (aPref != 0.0)
zoomRegion.setMagFactor(aPref, aPref);
aPref = this._settings.get_enum(SCREEN_POSITION_KEY);
if (aPref)
zoomRegion.setScreenPosition(aPref);
zoomRegion.setLensMode(this._settings.get_boolean(LENS_MODE_KEY));
zoomRegion.setClampScrollingAtEdges(!this._settings.get_boolean(CLAMP_MODE_KEY));
aPref = this._settings.get_enum(MOUSE_TRACKING_KEY);
if (aPref)
zoomRegion.setMouseTrackingMode(aPref);
aPref = this._settings.get_enum(FOCUS_TRACKING_KEY);
if (aPref)
zoomRegion.setFocusTrackingMode(aPref);
aPref = this._settings.get_enum(CARET_TRACKING_KEY);
if (aPref)
zoomRegion.setCaretTrackingMode(aPref);
aPref = this._settings.get_boolean(INVERT_LIGHTNESS_KEY);
if (aPref)
zoomRegion.setInvertLightness(aPref);
aPref = this._settings.get_double(COLOR_SATURATION_KEY);
if (aPref)
zoomRegion.setColorSaturation(aPref);
let bc = {};
bc.r = this._settings.get_double(BRIGHT_RED_KEY);
bc.g = this._settings.get_double(BRIGHT_GREEN_KEY);
bc.b = this._settings.get_double(BRIGHT_BLUE_KEY);
zoomRegion.setBrightness(bc);
bc.r = this._settings.get_double(CONTRAST_RED_KEY);
bc.g = this._settings.get_double(CONTRAST_GREEN_KEY);
bc.b = this._settings.get_double(CONTRAST_BLUE_KEY);
zoomRegion.setContrast(bc);
},
_settingsInit: function() {
this._appSettings = new Gio.Settings({ schema: APPLICATIONS_SCHEMA });
this._settings = new Gio.Settings({ schema: MAGNIFIER_SCHEMA });
if (zoomRegion) {
// Mag factor is accurate to two decimal places.
let aPref = parseFloat(this._settings.get_double(MAG_FACTOR_KEY).toFixed(2));
if (aPref != 0.0)
zoomRegion.setMagFactor(aPref, aPref);
this._appSettings.connect('changed::' + SHOW_KEY, Lang.bind(this, function() {
let active = this._appSettings.get_boolean(SHOW_KEY);
this.setActive(active);
}));
aPref = this._settings.get_enum(SCREEN_POSITION_KEY);
if (aPref)
zoomRegion.setScreenPosition(aPref);
zoomRegion.setLensMode(this._settings.get_boolean(LENS_MODE_KEY));
zoomRegion.setClampScrollingAtEdges(!this._settings.get_boolean(CLAMP_MODE_KEY));
aPref = this._settings.get_enum(MOUSE_TRACKING_KEY);
if (aPref)
zoomRegion.setMouseTrackingMode(aPref);
aPref = this._settings.get_enum(FOCUS_TRACKING_KEY);
if (aPref)
zoomRegion.setFocusTrackingMode(aPref);
aPref = this._settings.get_enum(CARET_TRACKING_KEY);
if (aPref)
zoomRegion.setCaretTrackingMode(aPref);
aPref = this._settings.get_boolean(INVERT_LIGHTNESS_KEY);
if (aPref)
zoomRegion.setInvertLightness(aPref);
aPref = this._settings.get_double(COLOR_SATURATION_KEY);
if (aPref)
zoomRegion.setColorSaturation(aPref);
let bc = {};
bc.r = this._settings.get_double(BRIGHT_RED_KEY);
bc.g = this._settings.get_double(BRIGHT_GREEN_KEY);
bc.b = this._settings.get_double(BRIGHT_BLUE_KEY);
zoomRegion.setBrightness(bc);
bc.r = this._settings.get_double(CONTRAST_RED_KEY);
bc.g = this._settings.get_double(CONTRAST_GREEN_KEY);
bc.b = this._settings.get_double(CONTRAST_BLUE_KEY);
zoomRegion.setContrast(bc);
}
return this._appSettings.get_boolean(SHOW_KEY);
},
_settingsInitLate: function() {
let showCrosshairs = this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY);
this.addCrosshairs();
this.setCrosshairsVisible(showCrosshairs);
this._appSettings.connect('changed::' + SHOW_KEY,
Lang.bind(this, function() {
this.setActive(this._appSettings.get_boolean(SHOW_KEY));
}));
this._settings.connect('changed::' + SCREEN_POSITION_KEY,
Lang.bind(this, this._updateScreenPosition));
this._settings.connect('changed::' + MAG_FACTOR_KEY,
@ -553,8 +573,6 @@ const Magnifier = new Lang.Class({
Lang.bind(this, function() {
this.setCrosshairsClip(this._settings.get_boolean(CROSS_HAIRS_CLIP_KEY));
}));
return this._appSettings.get_boolean(SHOW_KEY);
},
_updateScreenPosition: function() {
@ -732,14 +750,17 @@ const ZoomRegion = new Lang.Class({
* @activate: Boolean to show/hide the ZoomRegion.
*/
setActive: function(activate) {
if (activate && !this.isActive()) {
if (activate == this.isActive())
return;
if (activate) {
this._createActors();
if (this._isMouseOverRegion())
this._magnifier.hideSystemCursor();
this._updateMagViewGeometry();
this._updateCloneGeometry();
this._updateMousePosition();
} else if (!activate && this.isActive()) {
} else {
this._destroyActors();
}
},

View File

@ -90,8 +90,12 @@ function _sessionUpdated() {
Shell.KeyBindingMode.OVERVIEW,
sessionMode.hasRunDialog ? openRunDialog : null);
if (!sessionMode.hasRunDialog && lookingGlass)
lookingGlass.close();
if (!sessionMode.hasRunDialog) {
if (runDialog)
runDialog.close();
if (lookingGlass)
lookingGlass.close();
}
}
function start() {

View File

@ -215,10 +215,10 @@ const URLHighlighter = new Lang.Class({
let urlId = this._findUrlAtPos(event);
if (urlId != -1 && !this._cursorChanged) {
global.set_cursor(Shell.Cursor.POINTING_HAND);
global.screen.set_cursor(Meta.Cursor.POINTING_HAND);
this._cursorChanged = true;
} else if (urlId == -1) {
global.unset_cursor();
global.screen.set_cursor(Meta.Cursor.DEFAULT);
this._cursorChanged = false;
}
return false;
@ -229,7 +229,7 @@ const URLHighlighter = new Lang.Class({
if (this._cursorChanged) {
this._cursorChanged = false;
global.unset_cursor();
global.screen.set_cursor(Meta.Cursor.DEFAULT);
}
}));
},
@ -1805,8 +1805,9 @@ const MessageTray = new Lang.Class({
},
_sessionUpdated: function() {
if ((Main.sessionMode.isLocked || Main.sessionMode.isGreeter) && this._inCtrlAltTab) {
Main.ctrlAltTabManager.removeGroup(this._summary);
if (Main.sessionMode.isLocked || Main.sessionMode.isGreeter) {
if (this._inCtrlAltTab)
Main.ctrlAltTabManager.removeGroup(this._summary);
this._inCtrlAltTab = false;
} else if (!this._inCtrlAltTab) {
Main.ctrlAltTabManager.addGroup(this._summary, _("Message Tray"), 'user-available-symbolic',

View File

@ -148,7 +148,7 @@ const Overview = new Lang.Class({
// Dash elements, or mouseover handlers in the workspaces.
this._coverPane = new Clutter.Actor({ opacity: 0,
reactive: true });
this._stack.add_actor(this._coverPane);
Main.layoutManager.overviewGroup.add_child(this._coverPane);
this._coverPane.connect('event', Lang.bind(this, function (actor, event) { return true; }));
this._stack.add_actor(this._overview);
@ -313,6 +313,9 @@ const Overview = new Lang.Class({
},
_onDragEnd: function(time) {
if (this.animationInProgress)
return;
this._inXdndDrag = false;
// In case the drag was canceled while in the overview

View File

@ -504,6 +504,17 @@ const MessagesIndicator = new Lang.Class({
}
});
const ControlsLayout = new Lang.Class({
Name: 'ControlsLayout',
Extends: Clutter.BinLayout,
Signals: { 'allocation-changed': { flags: GObject.SignalFlags.RUN_LAST } },
vfunc_allocate: function(container, box, flags) {
this.parent(container, box, flags);
this.emit('allocation-changed');
}
});
const ControlsManager = new Lang.Class({
Name: 'ControlsManager',
@ -524,7 +535,8 @@ const ControlsManager = new Lang.Class({
this._indicator = new MessagesIndicator(this.viewSelector);
this.indicatorActor = this._indicator.actor;
this.actor = new St.Widget({ layout_manager: new Clutter.BinLayout(),
let layout = new ControlsLayout();
this.actor = new St.Widget({ layout_manager: layout,
reactive: true,
x_expand: true, y_expand: true,
clip_to_allocation: true });
@ -539,7 +551,7 @@ const ControlsManager = new Lang.Class({
expand: true });
this._group.add_actor(this._thumbnailsSlider.actor);
this._group.connect('notify::allocation', Lang.bind(this, this._updateWorkspacesGeometry));
layout.connect('allocation-changed', Lang.bind(this, this._updateWorkspacesGeometry));
Main.overview.connect('showing', Lang.bind(this, this._updateSpacerVisibility));
Main.overview.connect('item-drag-begin', Lang.bind(this,

View File

@ -611,6 +611,7 @@ const ActivitiesButton = new Lang.Class({
_onButtonRelease: function() {
Main.overview.toggle();
this.menu.close();
},
_onKeyRelease: function(actor, event) {
@ -804,7 +805,7 @@ const AggregateMenu = new Lang.Class({
Extends: PanelMenu.Button,
_init: function() {
this.parent(0.0, _("Settings Menu"), false);
this.parent(0.0, _("Settings"), false);
this.menu.actor.add_style_class_name('aggregate-menu');
this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });

View File

@ -948,14 +948,18 @@ const PopupSubMenuMenuItem = new Lang.Class({
this.actor.add_child(this.icon);
}
this.label = new St.Label({ text: text });
this.label = new St.Label({ text: text,
y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this.actor.add_child(this.label);
this.actor.label_actor = this.label;
let expander = new St.Bin({ style_class: 'popup-menu-item-expander' });
this.actor.add(expander, { expand: true });
this.status = new St.Label({ style_class: 'popup-status-menu-item' });
this.status = new St.Label({ style_class: 'popup-status-menu-item',
y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this.actor.add_child(this.status);
this._triangle = new St.Label({ text: '\u25B8',
@ -969,6 +973,7 @@ const PopupSubMenuMenuItem = new Lang.Class({
this._triangleBin.set_scale(-1.0, 1.0);
this.actor.add_child(this._triangleBin);
this.actor.add_accessible_state (Atk.StateType.EXPANDABLE);
this.menu = new PopupSubMenu(this.actor, this._triangle);
this.menu.connect('open-state-changed', Lang.bind(this, this._subMenuOpenStateChanged));
@ -990,9 +995,11 @@ const PopupSubMenuMenuItem = new Lang.Class({
if (open) {
this.actor.add_style_pseudo_class('open');
this._getTopMenu()._setOpenedSubMenu(this.menu);
this.actor.add_accessible_state (Atk.StateType.EXPANDED);
} else {
this.actor.remove_style_pseudo_class('open');
this._getTopMenu()._setOpenedSubMenu(null);
this.actor.remove_accessible_state (Atk.StateType.EXPANDED);
}
},

View File

@ -584,6 +584,7 @@ const ScreenShield = new Lang.Class({
this._shortLightbox.connect('shown', Lang.bind(this, this._onShortLightboxShown));
this.idleMonitor = Meta.IdleMonitor.get_core();
this._cursorTracker = Meta.CursorTracker.get_for_screen(global.screen);
},
_createBackground: function(monitorIndex) {
@ -953,7 +954,7 @@ const ScreenShield = new Lang.Class({
this._hideLockScreenComplete();
}
global.stage.show_cursor();
this._cursorTracker.set_pointer_visible(true);
},
_ensureUnlockDialog: function(onPrimary, allowCancel) {
@ -1086,15 +1087,15 @@ const ScreenShield = new Lang.Class({
this._checkArrowAnimation();
let motionId = global.stage.connect('captured-event', function(stage, event) {
let motionId = global.stage.connect('captured-event', Lang.bind(this, function(stage, event) {
if (event.type() == Clutter.EventType.MOTION) {
global.stage.show_cursor();
this._cursorTracker.set_pointer_visible(true);
global.stage.disconnect(motionId);
}
return false;
});
global.stage.hide_cursor();
}));
this._cursorTracker.set_pointer_visible(false);
this._lockScreenState = MessageTray.State.SHOWN;
this._lockScreenGroup.fixed_position_set = false;

View File

@ -6,6 +6,7 @@ const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const St = imports.gi.St;
@ -167,7 +168,7 @@ const SelectArea = new Lang.Class({
if (!Main.pushModal(this._group) || this._group.visible)
return;
global.set_cursor(Shell.Cursor.CROSSHAIR);
global.screen.set_cursor(Meta.Cursor.CROSSHAIR);
this._group.visible = true;
},
@ -238,7 +239,7 @@ const SelectArea = new Lang.Class({
function() {
Main.popModal(this._group);
this._group.destroy();
global.unset_cursor();
global.screen.set_cursor(Meta.Cursor.DEFAULT);
this.emit('finished', geometry);
})

View File

@ -214,8 +214,8 @@ const SearchResultsBase = new Lang.Class({
this.actor.hide();
},
_keyFocusIn: function(icon) {
this.emit('key-focus-in', icon);
_keyFocusIn: function(actor) {
this.emit('key-focus-in', actor);
},
_setMoreIconVisible: function(visible) {
@ -259,6 +259,7 @@ const ListSearchResults = new Lang.Class({
this._container = new St.BoxLayout({ style_class: 'search-section-content' });
this.providerIcon = new ProviderIcon(provider);
this.providerIcon.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
this.providerIcon.connect('clicked', Lang.bind(this,
function() {
provider.launchSearch(this._terms);
@ -404,8 +405,8 @@ const SearchResults = new Lang.Class({
return false;
},
_keyFocusIn: function(provider, icon) {
Util.ensureActorVisibleInScrollView(this._scrollView, icon);
_keyFocusIn: function(provider, actor) {
Util.ensureActorVisibleInScrollView(this._scrollView, actor);
},
createProviderDisplay: function(provider) {

View File

@ -31,6 +31,7 @@ const Indicator = new Lang.Class({
this._applet.killswitch_state = GnomeBluetooth.KillswitchState.SOFT_BLOCKED;
}));
this._item.menu.addSettingsAction(_("Bluetooth Settings"), 'gnome-bluetooth-panel.desktop');
this.menu.addMenuItem(this._item);
this._applet = new GnomeBluetoothApplet.Applet();
this._applet.connect('devices-changed', Lang.bind(this, this._sync));

View File

@ -547,18 +547,24 @@ const NMWirelessDialogItem = new Lang.Class({
this._signalIcon = new St.Icon({ style_class: 'nm-dialog-icon' });
this._icons.add_actor(this._signalIcon);
this._sync();
},
_sync: function() {
this._signalIcon.icon_name = this._getSignalIcon();
},
updateBestAP: function(ap) {
this._ap = ap;
this._signalIcon.icon_name = this._getIcon();
this._sync();
},
setActive: function(isActive) {
this._selectedIcon.opacity = isActive ? 255 : 0;
},
_getIcon: function() {
_getSignalIcon: function() {
if (this._ap.mode == NM80211Mode.ADHOC)
return 'network-workgroup-symbolic';
else
@ -1117,6 +1123,7 @@ const NMVPNConnectionItem = new Lang.Class({
this.emit('activation-failed', reason);
}
this.emit('icon-changed');
this.parent();
},
@ -1287,6 +1294,7 @@ const NMApplet = new Lang.Class({
this._client.connect('notify::networking-enabled', Lang.bind(this, this._syncNMState));
this._client.connect('notify::state', Lang.bind(this, this._syncNMState));
this._client.connect('notify::primary-connection', Lang.bind(this, this._syncMainConnection));
this._client.connect('notify::activating-connection', Lang.bind(this, this._syncMainConnection));
this._client.connect('notify::active-connections', Lang.bind(this, this._syncVPNConnections));
this._client.connect('device-added', Lang.bind(this, this._deviceAdded));
this._client.connect('device-removed', Lang.bind(this, this._deviceRemoved));

View File

@ -372,7 +372,11 @@ const Indicator = new Lang.Class({
Main.overview.hide();
if (Main.screenShield)
Main.screenShield.lock(false);
Gdm.goto_login_session_sync(null);
Clutter.threads_add_repaint_func_full(Clutter.RepaintFlags.POST_PAINT, function() {
Gdm.goto_login_session_sync(null);
return false;
});
},
_onQuitSessionActivate: function() {

View File

@ -20,8 +20,6 @@ const FOCUS_ANIMATION_TIME = 0.15;
const WINDOW_DND_SIZE = 256;
const SCROLL_SCALE_AMOUNT = 100 / 5;
const WINDOW_CLONE_MAXIMUM_SCALE = 0.7;
const LIGHTBOX_FADE_TIME = 0.1;

View File

@ -62,7 +62,6 @@ const WorkspacesView = new Lang.Class({
this._animating = false; // tweening
this._scrolling = false; // swipe-scrolling
this._animatingScroll = false; // programatically updating the adjustment
this._zoomOut = false; // zoom to a larger area
this._inDrag = false; // dragging a window
this._settings = new Gio.Settings({ schema: OVERRIDE_SCHEMA });
@ -168,14 +167,6 @@ const WorkspacesView = new Lang.Class({
this._workspaces[i].setActualGeometry(geom);
},
_lookupWorkspaceForMetaWindow: function (metaWindow) {
for (let i = 0; i < this._workspaces.length; i++) {
if (this._workspaces[i].containsMetaWindow(metaWindow))
return this._workspaces[i];
}
return null;
},
getActiveWorkspace: function() {
let active = global.screen.get_active_workspace_index();
return this._workspaces[active];
@ -433,10 +424,6 @@ const WorkspacesView = new Lang.Class({
this._workspaces[i].actor.y += dy;
}
},
_getWorkspaceIndexToRemove: function() {
return global.screen.get_active_workspace_index();
}
});
Signals.addSignalMethods(WorkspacesView.prototype);

View File

@ -3,6 +3,7 @@
const Clutter = imports.gi.Clutter;
const Lang = imports.lang;
const Main = imports.ui.main;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const DND = imports.ui.dnd;
@ -20,7 +21,8 @@ const XdndHandler = new Lang.Class({
Main.uiGroup.add_actor(this._dummy);
this._dummy.hide();
global.init_xdnd();
if (!Meta.is_wayland_compositor())
global.init_xdnd();
global.connect('xdnd-enter', Lang.bind(this, this._onEnter));
global.connect('xdnd-position-changed', Lang.bind(this, this._onPositionChanged));

View File

@ -4,6 +4,7 @@
data/50-gnome-shell-system.xml.in
data/gnome-shell.desktop.in.in
data/gnome-shell-extension-prefs.desktop.in.in
data/gnome-shell-wayland.desktop.in.in
data/org.gnome.shell.gschema.xml.in.in
js/extensionPrefs/main.js
js/gdm/authPrompt.js

488
po/as.po

File diff suppressed because it is too large Load Diff

162
po/be.po
View File

@ -5,7 +5,7 @@ msgstr ""
"Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
"POT-Creation-Date: 2013-09-23 13:35+0000\n"
"PO-Revision-Date: 2012-10-16 12:05+0300\n"
"Last-Translator: Kasia Bondarava <kasia.bondarava@gmail.com>\n"
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
@ -47,6 +47,7 @@ msgid "GNOME Shell"
msgstr "Абалонка GNOME"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Кіраванне вокнамі і пуск праграм"
@ -59,6 +60,10 @@ msgstr "Настройкі пашырэння абалонкі GNOME"
msgid "Configure GNOME Shell Extensions"
msgstr "Настройкі пашырэнняў абалонкі GNOME"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "Абалонка GNOME (Wayland-кампазіцыя)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
@ -258,6 +263,10 @@ msgstr "Дынамічнае кіраванне прасторамі працы"
msgid "Workspaces only on primary monitor"
msgstr "Прасторы працы толькі для асноўнага манітора"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Затрымліваць змяненне фокусу ў рэжыме мышы да спынення руху яе паказальніка"
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
@ -273,10 +282,10 @@ msgstr ""
"Абярыце пашырэнне, каб настроіць графу з выплыўным спісам, якая знаходзіцца "
"вышэй."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "Скасаваць"
@ -315,8 +324,8 @@ msgstr "(напр., карыстальнік ці %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277
msgid "Username: "
msgstr "Імя карыстальніка: "
@ -337,42 +346,42 @@ msgstr "Памылка ідэнтыфікацыі"
msgid "(or swipe finger)"
msgstr "(або правядзіце пальцам)"
#: ../js/misc/util.js:97
#: ../js/misc/util.js:98
msgid "Command not found"
msgstr "Загад не знойдзены"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:130
#: ../js/misc/util.js:131
msgid "Could not parse command:"
msgstr "Не ўдалося разабраць загад:"
#: ../js/misc/util.js:138
#: ../js/misc/util.js:139
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Не ўдалося выканаць \"%s\":"
#: ../js/ui/appDisplay.js:578
#: ../js/ui/appDisplay.js:596
msgid "Frequently used applications will appear here"
msgstr "Тут размешчаныя часта ўжываныя праграмы"
#: ../js/ui/appDisplay.js:694
#: ../js/ui/appDisplay.js:712
msgid "Frequent"
msgstr "Часта"
#: ../js/ui/appDisplay.js:701
#: ../js/ui/appDisplay.js:719
msgid "All"
msgstr "Усе"
#: ../js/ui/appDisplay.js:1488
#: ../js/ui/appDisplay.js:1514
msgid "New Window"
msgstr "Новае акно"
#: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Выдаліць са спіса ўпадабанага"
#: ../js/ui/appDisplay.js:1492
#: ../js/ui/appDisplay.js:1518
msgid "Add to Favorites"
msgstr "Дадаць у спіс упадабанага"
@ -386,7 +395,8 @@ msgstr "%s дададзены ў ваш спіс упадабанага."
msgid "%s has been removed from your favorites."
msgstr "%s выдалены з вашага спіса ўпадабанага."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
#: ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Настройкі"
@ -572,50 +582,50 @@ msgstr "Адкрыць у %s"
msgid "Eject"
msgstr "Выняць"
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Пароль:"
#: ../js/ui/components/keyring.js:107
#: ../js/ui/components/keyring.js:110
msgid "Type again:"
msgstr "Паўтарыце пароль:"
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
msgid "Connect"
msgstr "Злучыць"
#. Cisco LEAP
#: ../js/ui/components/networkAgent.js:218
#: ../js/ui/components/networkAgent.js:230
#: ../js/ui/components/networkAgent.js:257
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:287
#: ../js/ui/components/networkAgent.js:222
#: ../js/ui/components/networkAgent.js:234
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:281
#: ../js/ui/components/networkAgent.js:291
msgid "Password: "
msgstr "Пароль: "
#. static WEP
#: ../js/ui/components/networkAgent.js:223
#: ../js/ui/components/networkAgent.js:227
msgid "Key: "
msgstr "Ключ: "
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:265
msgid "Identity: "
msgstr "Ідэнтычнасць: "
#: ../js/ui/components/networkAgent.js:263
#: ../js/ui/components/networkAgent.js:267
msgid "Private key password: "
msgstr "Пароль да прыватнага ключа: "
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:279
msgid "Service: "
msgstr "Паслуга: "
#: ../js/ui/components/networkAgent.js:304
#: ../js/ui/components/networkAgent.js:308
msgid "Authentication required by wireless network"
msgstr "Для бесправадной сеткі патрэбная ідэнтыфікацыя"
#: ../js/ui/components/networkAgent.js:305
#: ../js/ui/components/networkAgent.js:309
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -624,37 +634,37 @@ msgstr ""
"Для доступу да бесправадной сеткі \"%s\" патрэбны пароль або ключы "
"шыфравання."
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:313
msgid "Wired 802.1X authentication"
msgstr "Правадная ідэнтыфікацыя 802.1X"
#: ../js/ui/components/networkAgent.js:311
#: ../js/ui/components/networkAgent.js:315
msgid "Network name: "
msgstr "Назва сеткі: "
#: ../js/ui/components/networkAgent.js:316
#: ../js/ui/components/networkAgent.js:320
msgid "DSL authentication"
msgstr "DSL-ідэнтыфікацыя"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:327
msgid "PIN code required"
msgstr "Патрэбны PIN-код"
#: ../js/ui/components/networkAgent.js:324
#: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device"
msgstr ""
"Для прыстасавання для доступу да шырокапалоснай мабільнай сеткі патрэбны PIN-"
"код"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:329
msgid "PIN: "
msgstr "PIN-код: "
#: ../js/ui/components/networkAgent.js:331
#: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password"
msgstr "Пароль да шырокапалоснай мабільнай сеткі"
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:336
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "Каб злучыцца з \"%s\", патрэбны пароль."
@ -916,7 +926,7 @@ msgstr "Праглядзець конт"
msgid "Unknown reason"
msgstr "Невядомая прычына"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
msgid "Windows"
msgstr "Вокны"
@ -1068,7 +1078,7 @@ msgstr "Усталяваць"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Сцягнуць і ўсталяваць \"%s\" з extensions.gnome.org?"
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
msgid "Keyboard"
msgstr "Клавіятура"
@ -1144,11 +1154,11 @@ msgstr "Меню трэя"
msgid "No Messages"
msgstr "Апавяшчэнні адсутнічаюць"
#: ../js/ui/messageTray.js:1812
#: ../js/ui/messageTray.js:1813
msgid "Message Tray"
msgstr "Абшар апавяшчэнняў"
#: ../js/ui/messageTray.js:2786
#: ../js/ui/messageTray.js:2788
msgid "System Information"
msgstr "Сістэмная інфармацыя"
@ -1181,21 +1191,17 @@ msgstr "Агляд"
msgid "Type to search…"
msgstr "Увядзіце тэкст для пошуку..."
#: ../js/ui/panel.js:516
#: ../js/ui/panel.js:518
msgid "Quit"
msgstr "Выйсці"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:568
#: ../js/ui/panel.js:570
msgid "Activities"
msgstr "Заняткі"
#: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "Меню настроек"
#: ../js/ui/panel.js:892
#: ../js/ui/panel.js:903
msgid "Top Bar"
msgstr "Верхняя панэль"
@ -1204,7 +1210,7 @@ msgstr "Верхняя панэль"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:226
#: ../js/ui/popupMenu.js:233
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1234,7 +1240,7 @@ msgstr[2] "%d новых апавяшчэнняў"
msgid "Lock"
msgstr "Заблакіраваць"
#: ../js/ui/screenShield.js:703
#: ../js/ui/screenShield.js:704
msgid "GNOME needs to lock the screen"
msgstr "GNOME патрабуе блакіравання экрана"
@ -1245,11 +1251,11 @@ msgstr "GNOME патрабуе блакіравання экрана"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Unable to lock"
msgstr "Не ўдалося заблакіраваць"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
msgid "Lock was blocked by an application"
msgstr "Блакіраванне стрымана праграмай"
@ -1331,9 +1337,9 @@ msgstr "Буйны тэкст"
#. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item.
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1346,7 +1352,7 @@ msgstr "Выключыць"
msgid "Bluetooth Settings"
msgstr "Настройкі Bluetooth"
#: ../js/ui/status/bluetooth.js:57
#: ../js/ui/status/bluetooth.js:58
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
@ -1354,73 +1360,73 @@ msgstr[0] "%d злучанае прыстасаванне"
msgstr[1] "%d злучаныя прыстасаванні"
msgstr[2] "%d злучаных прыстасаванняў"
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#, c-format
msgid "Authorization request from %s"
msgstr "Запыт на ўпаўнаважанне ад %s"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Прыстасаванне %s хоча спарыцца з гэтым камп'ютарам"
#: ../js/ui/status/bluetooth.js:108
#: ../js/ui/status/bluetooth.js:109
msgid "Allow"
msgstr "Дазволіць"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:110
msgid "Deny"
msgstr "Адмовіць"
#: ../js/ui/status/bluetooth.js:134
#: ../js/ui/status/bluetooth.js:135
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Прыстасаванне %s хоча даступіцца да паслугі \"%s\""
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:137
msgid "Always grant access"
msgstr "Заўсёды даваць дазвол"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:138
msgid "Grant this time only"
msgstr "Даць дазвол аднойчы"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:139
msgid "Reject"
msgstr "Адмовіць"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:165
#: ../js/ui/status/bluetooth.js:166
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Пацвярджэнне спарвання з %s"
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:173
#, c-format
msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "Праверце, ці супадае пароль \"%06d\" з нумарам на прыстасаванні."
#. Translators: this is the verb, not the noun
#: ../js/ui/status/bluetooth.js:175
#: ../js/ui/status/bluetooth.js:176
msgid "Matches"
msgstr "Супадае"
#: ../js/ui/status/bluetooth.js:176
#: ../js/ui/status/bluetooth.js:177
msgid "Does not match"
msgstr "Не супадае"
#: ../js/ui/status/bluetooth.js:195
#: ../js/ui/status/bluetooth.js:196
#, c-format
msgid "Pairing request for %s"
msgstr "Запыт на спарванне з %s"
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:204
msgid "Please enter the PIN mentioned on the device."
msgstr "Увядзіце PIN, які паказвае прыстасаванне."
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/bluetooth.js:221
msgid "OK"
msgstr "Добра"
@ -1428,7 +1434,7 @@ msgstr "Добра"
msgid "Brightness"
msgstr "Яркасць"
#: ../js/ui/status/keyboard.js:404
#: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout"
msgstr "Паказаць раскладку"
@ -1504,15 +1510,15 @@ msgstr "Уключыць"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1306
#: ../js/ui/status/network.js:1307
msgid "Network Manager"
msgstr "Сеткавы кіраўнік"
#: ../js/ui/status/network.js:1345
#: ../js/ui/status/network.js:1346
msgid "Connection failed"
msgstr "Не ўдалося злучыцца"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1347
msgid "Activation of network connection failed"
msgstr "Не ўдалося ўключыць сеткавае злучэнне"
@ -1598,11 +1604,11 @@ msgstr "Увайсці іншым карыстальнікам"
msgid "Unlock Window"
msgstr "Акно блакіравання"
#: ../js/ui/viewSelector.js:100
#: ../js/ui/viewSelector.js:104
msgid "Applications"
msgstr "Праграмы"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:108
msgid "Search"
msgstr "Пошук"

435
po/cs.po

File diff suppressed because it is too large Load Diff

1565
po/da.po

File diff suppressed because it is too large Load Diff

175
po/de.po
View File

@ -18,18 +18,17 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-07 19:18+0000\n"
"PO-Revision-Date: 2013-09-08 00:01+0200\n"
"Last-Translator: Tobias Endrigkeit <tobiasendrigkeit@outlook.com>\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-25 15:24+0200\n"
"PO-Revision-Date: 2013-09-25 15:25+0100\n"
"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 2.91.6\n"
"X-Generator: Poedit 1.5.4\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System"
@ -60,6 +59,7 @@ msgid "GNOME Shell"
msgstr "GNOME-Shell"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Fenster verwalten und Anwendungen starten"
@ -72,6 +72,10 @@ msgstr "Einstellungen für Erweiterungen der GNOME-Shell"
msgid "Configure GNOME Shell Extensions"
msgstr "Erweiterungen der GNOME-Shell einrichten"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME-Shell (Wayland Composition)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "Interne Werkzeuge für Entwickler und Tester mit Alt+F2 aktivieren"
@ -277,6 +281,11 @@ msgstr "Arbeitsflächen dynamisch verwalten"
msgid "Workspaces only on primary monitor"
msgstr "Arbeitsflächen nur auf dem primären Bildschirm"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr ""
"Fokuswechsel im Mausmodus verzögern, bis sich der Zeiger nicht mehr bewegt."
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
@ -290,10 +299,10 @@ msgstr "Erweiterung"
msgid "Select an extension to configure using the combobox above."
msgstr "Wählen Sie oben eine Erweiterung aus, die Sie konfigurieren wollen."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "Abbrechen"
@ -332,8 +341,8 @@ msgstr "(z.B. Benutzer oder %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277
msgid "Username: "
msgstr "Benutzername:"
@ -354,42 +363,42 @@ msgstr "Legitimationsfehler"
msgid "(or swipe finger)"
msgstr "(oder benutzen Sie den Fingerabdruckleser)"
#: ../js/misc/util.js:97
#: ../js/misc/util.js:98
msgid "Command not found"
msgstr "Befehl nicht gefunden"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:130
#: ../js/misc/util.js:131
msgid "Could not parse command:"
msgstr "Befehl konnte nicht verarbeitet werden:"
#: ../js/misc/util.js:138
#: ../js/misc/util.js:139
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Ausführung von »%s« ist gescheitert:"
#: ../js/ui/appDisplay.js:573
#: ../js/ui/appDisplay.js:596
msgid "Frequently used applications will appear here"
msgstr "Häufig genutzte Anwendungen werden hier erscheinen"
#: ../js/ui/appDisplay.js:689
#: ../js/ui/appDisplay.js:712
msgid "Frequent"
msgstr "Häufig"
#: ../js/ui/appDisplay.js:696
#: ../js/ui/appDisplay.js:719
msgid "All"
msgstr "Alle"
#: ../js/ui/appDisplay.js:1491
#: ../js/ui/appDisplay.js:1514
msgid "New Window"
msgstr "Neues Fenster"
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Aus Favoriten entfernen"
#: ../js/ui/appDisplay.js:1495
#: ../js/ui/appDisplay.js:1518
msgid "Add to Favorites"
msgstr "Zu Favoriten hinzufügen"
@ -403,7 +412,8 @@ msgstr "%s wurde zu Ihren Favoriten hinzugefügt"
msgid "%s has been removed from your favorites."
msgstr "%s wurde aus Ihren Favoriten entfernt"
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:808
#: ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Einstellungen"
@ -592,50 +602,50 @@ msgstr "Öffnen mit %s"
msgid "Eject"
msgstr "Auswerfen"
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Passwort:"
#: ../js/ui/components/keyring.js:107
#: ../js/ui/components/keyring.js:110
msgid "Type again:"
msgstr "Erneut eingeben:"
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
msgid "Connect"
msgstr "Verbinden"
#. Cisco LEAP
#: ../js/ui/components/networkAgent.js:218
#: ../js/ui/components/networkAgent.js:230
#: ../js/ui/components/networkAgent.js:257
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:287
#: ../js/ui/components/networkAgent.js:222
#: ../js/ui/components/networkAgent.js:234
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:281
#: ../js/ui/components/networkAgent.js:291
msgid "Password: "
msgstr "Passwort:"
#. static WEP
#: ../js/ui/components/networkAgent.js:223
#: ../js/ui/components/networkAgent.js:227
msgid "Key: "
msgstr "Schlüssel:"
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:265
msgid "Identity: "
msgstr "Identität:"
#: ../js/ui/components/networkAgent.js:263
#: ../js/ui/components/networkAgent.js:267
msgid "Private key password: "
msgstr "Passwort für geheimen Schlüssel:"
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:279
msgid "Service: "
msgstr "Dienst:"
#: ../js/ui/components/networkAgent.js:304
#: ../js/ui/components/networkAgent.js:308
msgid "Authentication required by wireless network"
msgstr "Legitimierung für Funknetzwerk wird benötigt"
#: ../js/ui/components/networkAgent.js:305
#: ../js/ui/components/networkAgent.js:309
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -644,35 +654,35 @@ msgstr ""
"Passwörter oder Schlüssel sind erforderlich, um auf das Funknetzwerk »%s« "
"zuzugreifen."
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:313
msgid "Wired 802.1X authentication"
msgstr "Kabelgebundene 802.1X-Legitimierung"
#: ../js/ui/components/networkAgent.js:311
#: ../js/ui/components/networkAgent.js:315
msgid "Network name: "
msgstr "Netzwerkname:"
#: ../js/ui/components/networkAgent.js:316
#: ../js/ui/components/networkAgent.js:320
msgid "DSL authentication"
msgstr "DSL-Legitimierung"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:327
msgid "PIN code required"
msgstr "PIN-Code ist erforderlich"
#: ../js/ui/components/networkAgent.js:324
#: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device"
msgstr "Für das mobile Breitbandgerät wird ein PIN-Code benötigt."
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:329
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:331
#: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password"
msgstr "Passwort der mobilen Breitbandverbindung"
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:336
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "Es wird ein Passwort benötigt, um sich mit »%s« zu verbinden."
@ -940,7 +950,7 @@ msgstr "Konto anzeigen"
msgid "Unknown reason"
msgstr "Unbekannter Grund"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
msgid "Windows"
msgstr "Fenster"
@ -1088,7 +1098,7 @@ msgstr "Installieren"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
msgid "Keyboard"
msgstr "Tastatur"
@ -1164,11 +1174,11 @@ msgstr "Benachrichtigungsfeldmenü"
msgid "No Messages"
msgstr "Keine Nachrichten"
#: ../js/ui/messageTray.js:1812
#: ../js/ui/messageTray.js:1813
msgid "Message Tray"
msgstr "Benachrichtigungsfeld"
#: ../js/ui/messageTray.js:2787
#: ../js/ui/messageTray.js:2788
msgid "System Information"
msgstr "Systeminformationen"
@ -1200,21 +1210,17 @@ msgstr "Übersicht"
msgid "Type to search…"
msgstr "Suchbegriff eingeben …"
#: ../js/ui/panel.js:516
#: ../js/ui/panel.js:518
msgid "Quit"
msgstr "Beenden"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:568
#: ../js/ui/panel.js:570
msgid "Activities"
msgstr "Aktivitäten"
#: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "Einstellungsmenü"
#: ../js/ui/panel.js:901
#: ../js/ui/panel.js:904
msgid "Top Bar"
msgstr "Oberes Panel"
@ -1223,7 +1229,7 @@ msgstr "Oberes Panel"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:226
#: ../js/ui/popupMenu.js:233
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1255,7 +1261,7 @@ msgstr[1] "%d neue Benachrichtigungen"
msgid "Lock"
msgstr "Sperren"
#: ../js/ui/screenShield.js:703
#: ../js/ui/screenShield.js:704
msgid "GNOME needs to lock the screen"
msgstr "GNOME muss den Bildschirm sperren"
@ -1266,11 +1272,11 @@ msgstr "GNOME muss den Bildschirm sperren"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Unable to lock"
msgstr "Sperrung fehlgeschlagen"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
msgid "Lock was blocked by an application"
msgstr "Sperrung wurde von einer Anwendung blockiert"
@ -1352,9 +1358,9 @@ msgstr "Große Schrift"
#. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item.
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1367,56 +1373,56 @@ msgstr "Ausschalten"
msgid "Bluetooth Settings"
msgstr "Bluetooth-Einstellungen"
#: ../js/ui/status/bluetooth.js:57
#: ../js/ui/status/bluetooth.js:58
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "%d Verbundes Gerät"
msgstr[1] "%d Verbundene Geräte"
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#, c-format
msgid "Authorization request from %s"
msgstr "Legitimierungsanfrage von %s"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Gerät »%s« möchte mit diesem Rechner gekoppelt werden"
#: ../js/ui/status/bluetooth.js:108
#: ../js/ui/status/bluetooth.js:109
msgid "Allow"
msgstr "Erlauben"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:110
msgid "Deny"
msgstr "Verweigern"
#: ../js/ui/status/bluetooth.js:134
#: ../js/ui/status/bluetooth.js:135
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Gerät »%s« bittet um Zugriff auf den Dienst »%s«"
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:137
msgid "Always grant access"
msgstr "Immer Zugriff gewähren"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:138
msgid "Grant this time only"
msgstr "Nur dieses Mal gewähren"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:139
msgid "Reject"
msgstr "Abweisen"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:165
#: ../js/ui/status/bluetooth.js:166
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Koppelungsbestätigung für %s"
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:173
#, c-format
msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device."
@ -1424,24 +1430,24 @@ msgstr ""
"Bitte bestätigen Sie, ob die PIN »%06d« mit der des Gerätes übereinstimmt."
#. Translators: this is the verb, not the noun
#: ../js/ui/status/bluetooth.js:175
#: ../js/ui/status/bluetooth.js:176
msgid "Matches"
msgstr "Stimmt überein"
#: ../js/ui/status/bluetooth.js:176
#: ../js/ui/status/bluetooth.js:177
msgid "Does not match"
msgstr "Stimmt nicht überein"
#: ../js/ui/status/bluetooth.js:195
#: ../js/ui/status/bluetooth.js:196
#, c-format
msgid "Pairing request for %s"
msgstr "Koppelungsanfrage für %s"
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:204
msgid "Please enter the PIN mentioned on the device."
msgstr "Bitte geben Sie die auf dem Gerät angezeigte PIN ein."
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/bluetooth.js:221
msgid "OK"
msgstr "OK"
@ -1449,7 +1455,7 @@ msgstr "OK"
msgid "Brightness"
msgstr "Helligkeit"
#: ../js/ui/status/keyboard.js:404
#: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout"
msgstr "Tastaturbelegung zeigen"
@ -1525,15 +1531,15 @@ msgstr "Einschalten"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1306
#: ../js/ui/status/network.js:1307
msgid "Network Manager"
msgstr "Netzwerk-Verwaltung"
#: ../js/ui/status/network.js:1345
#: ../js/ui/status/network.js:1346
msgid "Connection failed"
msgstr "Verbindung gescheitert"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1347
msgid "Activation of network connection failed"
msgstr "Aktivierung der Netzwerkverbindung ist gescheitert"
@ -1619,11 +1625,11 @@ msgstr "Als anderer Benutzer anmelden"
msgid "Unlock Window"
msgstr "Fenster entsperren"
#: ../js/ui/viewSelector.js:100
#: ../js/ui/viewSelector.js:104
msgid "Applications"
msgstr "Anwendungen"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:108
msgid "Search"
msgstr "Suchen"
@ -1729,6 +1735,9 @@ msgstr "Das Passwort darf nicht leer sein"
msgid "Authentication dialog was dismissed by the user"
msgstr "Der Dialog zur Legitimierung wurde vom Benutzer geschlossen"
#~ msgid "Settings Menu"
#~ msgstr "Einstellungsmenü"
#~ msgid ""
#~ "Internally used to store the last IM presence explicitly set by the user. "
#~ "The value here is from the TpConnectionPresenceType enumeration."

1616
po/el.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2921
po/eo.po

File diff suppressed because it is too large Load Diff

432
po/es.po

File diff suppressed because it is too large Load Diff

1007
po/et.po

File diff suppressed because it is too large Load Diff

1750
po/eu.po

File diff suppressed because it is too large Load Diff

1568
po/fr.po

File diff suppressed because it is too large Load Diff

476
po/gl.po

File diff suppressed because it is too large Load Diff

918
po/he.po

File diff suppressed because it is too large Load Diff

879
po/hu.po

File diff suppressed because it is too large Load Diff

165
po/id.po
View File

@ -10,8 +10,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
"PO-Revision-Date: 2013-09-10 13:06+0700\n"
"POT-Creation-Date: 2013-09-23 13:35+0000\n"
"PO-Revision-Date: 2013-09-23 21:24+0700\n"
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
"Language-Team: Indonesian <gnome@i15n.org>\n"
"Language: id\n"
@ -51,6 +51,7 @@ msgid "GNOME Shell"
msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Manajemen jendela dan peluncuran aplikasi"
@ -63,6 +64,10 @@ msgstr "Preferensi Ekstensi GNOME Shell"
msgid "Configure GNOME Shell Extensions"
msgstr "Konfigurasi Ekstensi GNOME Shell"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (kompositor wayland)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
@ -265,6 +270,11 @@ msgstr "Ruang kerja dikelola secara dinamis"
msgid "Workspaces only on primary monitor"
msgstr "Ruang kerja hanya pada monitor primer"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr ""
"Tunda perubahan fokus dalam mode tetikus sampai penunjuk berhenti bergerak"
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
@ -278,10 +288,10 @@ msgstr "Ekstensi"
msgid "Select an extension to configure using the combobox above."
msgstr "Pilih ekstensi yang ingin dikonfigurasi pada kotak di atas."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "Batal"
@ -320,8 +330,8 @@ msgstr "(cth., pengguna dari %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277
msgid "Username: "
msgstr "Nama pengguna: "
@ -342,42 +352,42 @@ msgstr "Galat otentikasi"
msgid "(or swipe finger)"
msgstr "(atau gesekkan jari)"
#: ../js/misc/util.js:97
#: ../js/misc/util.js:98
msgid "Command not found"
msgstr "Perintah tidak ditemukan"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:130
#: ../js/misc/util.js:131
msgid "Could not parse command:"
msgstr "Tidak dapat mengurai perintah:"
#: ../js/misc/util.js:138
#: ../js/misc/util.js:139
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Eksekusi '%s' gagal:"
#: ../js/ui/appDisplay.js:578
#: ../js/ui/appDisplay.js:596
msgid "Frequently used applications will appear here"
msgstr "Aplikasi yang sering dipakai akan muncul di sini"
#: ../js/ui/appDisplay.js:694
#: ../js/ui/appDisplay.js:712
msgid "Frequent"
msgstr "Sering"
#: ../js/ui/appDisplay.js:701
#: ../js/ui/appDisplay.js:719
msgid "All"
msgstr "Semua"
#: ../js/ui/appDisplay.js:1488
#: ../js/ui/appDisplay.js:1514
msgid "New Window"
msgstr "Jendela Baru"
#: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Hapus dari Favorit"
#: ../js/ui/appDisplay.js:1492
#: ../js/ui/appDisplay.js:1518
msgid "Add to Favorites"
msgstr "Tambah ke Favorit"
@ -391,7 +401,8 @@ msgstr "%s telah ditambahkan ke favorit Anda."
msgid "%s has been removed from your favorites."
msgstr "%s telah dihapus dari favorit Anda."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
#: ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Pengaturan"
@ -577,50 +588,50 @@ msgstr "Buka dengan %s"
msgid "Eject"
msgstr "Keluarkan"
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Sandi:"
#: ../js/ui/components/keyring.js:107
#: ../js/ui/components/keyring.js:110
msgid "Type again:"
msgstr "Ketik lagi:"
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
msgid "Connect"
msgstr "Sambung"
#. Cisco LEAP
#: ../js/ui/components/networkAgent.js:218
#: ../js/ui/components/networkAgent.js:230
#: ../js/ui/components/networkAgent.js:257
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:287
#: ../js/ui/components/networkAgent.js:222
#: ../js/ui/components/networkAgent.js:234
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:281
#: ../js/ui/components/networkAgent.js:291
msgid "Password: "
msgstr "Sandi: "
#. static WEP
#: ../js/ui/components/networkAgent.js:223
#: ../js/ui/components/networkAgent.js:227
msgid "Key: "
msgstr "Tombol: "
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:265
msgid "Identity: "
msgstr "Identitas: "
#: ../js/ui/components/networkAgent.js:263
#: ../js/ui/components/networkAgent.js:267
msgid "Private key password: "
msgstr "Sandi kunci privat: "
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:279
msgid "Service: "
msgstr "Layanan: "
#: ../js/ui/components/networkAgent.js:304
#: ../js/ui/components/networkAgent.js:308
msgid "Authentication required by wireless network"
msgstr "Otentikasi dibutuhkan oleh jaringan nirkabel"
#: ../js/ui/components/networkAgent.js:305
#: ../js/ui/components/networkAgent.js:309
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -629,35 +640,35 @@ msgstr ""
"Sandi atau kunci penyandian diperlukan untuk mengakses jaringan nirkabel "
"'%s'."
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:313
msgid "Wired 802.1X authentication"
msgstr "Otentikasi 802.1X kabel"
#: ../js/ui/components/networkAgent.js:311
#: ../js/ui/components/networkAgent.js:315
msgid "Network name: "
msgstr "Nama jaringan: "
#: ../js/ui/components/networkAgent.js:316
#: ../js/ui/components/networkAgent.js:320
msgid "DSL authentication"
msgstr "Otentikasi DSL"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:327
msgid "PIN code required"
msgstr "Perlu kode PIN"
#: ../js/ui/components/networkAgent.js:324
#: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device"
msgstr "Kode PIN dibutuhkan untuk perangkat data seluler"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:329
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:331
#: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password"
msgstr "Sandi jaringan data seluler"
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:336
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "Sebuah kata sandi dibutuhkan untuk menyambung ke '%s'."
@ -922,7 +933,7 @@ msgstr "Tilik akun"
msgid "Unknown reason"
msgstr "Alasan yang tidak diketahui"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
msgid "Windows"
msgstr "Jendela"
@ -1063,7 +1074,7 @@ msgstr "Pasang"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Unduh dan pasang '%s' dari extensions.gnome.org?"
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
msgid "Keyboard"
msgstr "Papan Ketik"
@ -1139,11 +1150,11 @@ msgstr "Menu Baki"
msgid "No Messages"
msgstr "Tiada Pesan"
#: ../js/ui/messageTray.js:1812
#: ../js/ui/messageTray.js:1813
msgid "Message Tray"
msgstr "Baki Pesan"
#: ../js/ui/messageTray.js:2786
#: ../js/ui/messageTray.js:2788
msgid "System Information"
msgstr "Informasi Sistem"
@ -1174,21 +1185,17 @@ msgstr "Gambaran"
msgid "Type to search…"
msgstr "Ketik untuk mencari…"
#: ../js/ui/panel.js:516
#: ../js/ui/panel.js:518
msgid "Quit"
msgstr "Keluar"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:568
#: ../js/ui/panel.js:570
msgid "Activities"
msgstr "Aktivitas"
#: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "Menu Pengaturan"
#: ../js/ui/panel.js:892
#: ../js/ui/panel.js:903
msgid "Top Bar"
msgstr "Bar Atas"
@ -1198,7 +1205,7 @@ msgstr "Bar Atas"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:226
#: ../js/ui/popupMenu.js:233
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1226,7 +1233,7 @@ msgstr[0] "%d pemberitahuan baru"
msgid "Lock"
msgstr "Kunci"
#: ../js/ui/screenShield.js:703
#: ../js/ui/screenShield.js:704
msgid "GNOME needs to lock the screen"
msgstr "GNOME perlu mengunci layar"
@ -1237,11 +1244,11 @@ msgstr "GNOME perlu mengunci layar"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Unable to lock"
msgstr "Tak bisa mengunci"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
msgid "Lock was blocked by an application"
msgstr "Kunci diblokir oleh suatu aplikasi"
@ -1323,9 +1330,9 @@ msgstr "Teks Besar"
#. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item.
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1338,55 +1345,55 @@ msgstr "Matikan"
msgid "Bluetooth Settings"
msgstr "Pengaturan Bluetooth"
#: ../js/ui/status/bluetooth.js:57
#: ../js/ui/status/bluetooth.js:58
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "%d Perangkat Tersambung"
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#, c-format
msgid "Authorization request from %s"
msgstr "Permintaan otorisasi dari %s"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Perangkat %s ingin berpasangan dengan komputer ini"
#: ../js/ui/status/bluetooth.js:108
#: ../js/ui/status/bluetooth.js:109
msgid "Allow"
msgstr "Ijinkan"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:110
msgid "Deny"
msgstr "Tolak"
#: ../js/ui/status/bluetooth.js:134
#: ../js/ui/status/bluetooth.js:135
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Perangkat %s ingin mengakses layanan '%s'"
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:137
msgid "Always grant access"
msgstr "Selalu berikan akses"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:138
msgid "Grant this time only"
msgstr "Hanya untuk saat ini"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:139
msgid "Reject"
msgstr "Tolak"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:165
#: ../js/ui/status/bluetooth.js:166
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Konfirmasi berpasangan untuk %s"
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:173
#, c-format
msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device."
@ -1394,24 +1401,24 @@ msgstr ""
"Harap konfirmasi apakah Passkey '%06d' sesuai dengan salah satu perangkat."
#. Translators: this is the verb, not the noun
#: ../js/ui/status/bluetooth.js:175
#: ../js/ui/status/bluetooth.js:176
msgid "Matches"
msgstr "Cocok"
#: ../js/ui/status/bluetooth.js:176
#: ../js/ui/status/bluetooth.js:177
msgid "Does not match"
msgstr "Tidak cocok"
#: ../js/ui/status/bluetooth.js:195
#: ../js/ui/status/bluetooth.js:196
#, c-format
msgid "Pairing request for %s"
msgstr "Permintaan berpasangan untuk %s"
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:204
msgid "Please enter the PIN mentioned on the device."
msgstr "Ketikkan PIN yang disebutkan oleh perangkat."
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/bluetooth.js:221
msgid "OK"
msgstr "Oke"
@ -1419,7 +1426,7 @@ msgstr "Oke"
msgid "Brightness"
msgstr "Kecerahan"
#: ../js/ui/status/keyboard.js:404
#: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout"
msgstr "Tampilkan Tata Letak Papan Tik"
@ -1495,15 +1502,15 @@ msgstr "Nyalakan"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1306
#: ../js/ui/status/network.js:1307
msgid "Network Manager"
msgstr "Manajer Jaringan"
#: ../js/ui/status/network.js:1345
#: ../js/ui/status/network.js:1346
msgid "Connection failed"
msgstr "Koneksi gagal"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1347
msgid "Activation of network connection failed"
msgstr "Aktivasi koneksi jaringan gagal"
@ -1589,11 +1596,11 @@ msgstr "Masuk sebagai pengguna lain"
msgid "Unlock Window"
msgstr "Buka Kunci Jendela"
#: ../js/ui/viewSelector.js:100
#: ../js/ui/viewSelector.js:104
msgid "Applications"
msgstr "Aplikasi"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:108
msgid "Search"
msgstr "Cari"

703
po/it.po

File diff suppressed because it is too large Load Diff

167
po/ja.po
View File

@ -13,8 +13,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-06 21:55+0000\n"
"PO-Revision-Date: 2013-09-07 22:28+0900\n"
"POT-Creation-Date: 2013-09-23 13:35+0000\n"
"PO-Revision-Date: 2013-09-23 23:30+0900\n"
"Last-Translator: Jiro Matsuzawa <jmatsuzawa@gnome.org>\n"
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
"Language: ja\n"
@ -52,6 +52,7 @@ msgid "GNOME Shell"
msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "ウィンドウ管理とアプリケーションの起動"
@ -64,6 +65,10 @@ msgstr "GNOME Shell 拡張機能設定"
msgid "Configure GNOME Shell Extensions"
msgstr "GNOME Shell 拡張機能の設定を行います"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (Wayland コンポジター)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "Alt-F2 から開発・テスト用の内部ツールを利用可能にする"
@ -212,6 +217,10 @@ msgstr "ワークスペースを動的に管理する"
msgid "Workspaces only on primary monitor"
msgstr "プライマリモニターのみワークスペースを切り替える"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "マウスモードにおけるフォーカス遷移をポインターが停止するまで遅延させる"
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
@ -225,10 +234,10 @@ msgstr "拡張機能"
msgid "Select an extension to configure using the combobox above."
msgstr "設定する拡張機能を上部のコンボボックスから選択してください。"
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "キャンセル"
@ -267,8 +276,8 @@ msgstr "(たとえば、user あるいは %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277
msgid "Username: "
msgstr "ユーザー名: "
@ -289,42 +298,42 @@ msgstr "認証エラー"
msgid "(or swipe finger)"
msgstr "(あるいは指でスワイプする)"
#: ../js/misc/util.js:97
#: ../js/misc/util.js:98
msgid "Command not found"
msgstr "コマンドが見つかりません"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:130
#: ../js/misc/util.js:131
msgid "Could not parse command:"
msgstr "次のコマンドは解析できません:"
#: ../js/misc/util.js:138
#: ../js/misc/util.js:139
#, c-format
msgid "Execution of '%s' failed:"
msgstr "'%s'の実行に失敗しました:"
#: ../js/ui/appDisplay.js:573
#: ../js/ui/appDisplay.js:596
msgid "Frequently used applications will appear here"
msgstr "よく使うアプリケーションがここに表示されます"
#: ../js/ui/appDisplay.js:689
#: ../js/ui/appDisplay.js:712
msgid "Frequent"
msgstr "常用"
#: ../js/ui/appDisplay.js:696
#: ../js/ui/appDisplay.js:719
msgid "All"
msgstr "すべて"
#: ../js/ui/appDisplay.js:1491
#: ../js/ui/appDisplay.js:1514
msgid "New Window"
msgstr "新しいウィンドウで開く"
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "お気に入りから削除"
#: ../js/ui/appDisplay.js:1495
#: ../js/ui/appDisplay.js:1518
msgid "Add to Favorites"
msgstr "お気に入りに追加"
@ -338,7 +347,8 @@ msgstr "%s をお気に入りに追加しました。"
msgid "%s has been removed from your favorites."
msgstr "%s をお気に入りから削除しました。"
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
#: ../js/ui/status/system.js:325
msgid "Settings"
msgstr "設定"
@ -524,83 +534,83 @@ msgstr "%s で開く"
msgid "Eject"
msgstr "取り出し"
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "パスワード:"
#: ../js/ui/components/keyring.js:107
#: ../js/ui/components/keyring.js:110
msgid "Type again:"
msgstr "再入力:"
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
msgid "Connect"
msgstr "接続"
#. Cisco LEAP
#: ../js/ui/components/networkAgent.js:218
#: ../js/ui/components/networkAgent.js:230
#: ../js/ui/components/networkAgent.js:257
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:287
#: ../js/ui/components/networkAgent.js:222
#: ../js/ui/components/networkAgent.js:234
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:281
#: ../js/ui/components/networkAgent.js:291
msgid "Password: "
msgstr "パスワード: "
#. static WEP
#: ../js/ui/components/networkAgent.js:223
#: ../js/ui/components/networkAgent.js:227
msgid "Key: "
msgstr "キー: "
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:265
msgid "Identity: "
msgstr "識別子: "
#: ../js/ui/components/networkAgent.js:263
#: ../js/ui/components/networkAgent.js:267
msgid "Private key password: "
msgstr "プライベートキーパスワード: "
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:279
msgid "Service: "
msgstr "サービス: "
#: ../js/ui/components/networkAgent.js:304
#: ../js/ui/components/networkAgent.js:308
msgid "Authentication required by wireless network"
msgstr "無線ネットワークでは認証が要求されます"
#: ../js/ui/components/networkAgent.js:305
#: ../js/ui/components/networkAgent.js:309
#, c-format
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
msgstr "無線ネットワーク '%s' にアクセスするにはパスワードか、または暗号化キーが必要です。"
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:313
msgid "Wired 802.1X authentication"
msgstr "有線 802.1X の認証"
#: ../js/ui/components/networkAgent.js:311
#: ../js/ui/components/networkAgent.js:315
msgid "Network name: "
msgstr "ネットワーク名: "
#: ../js/ui/components/networkAgent.js:316
#: ../js/ui/components/networkAgent.js:320
msgid "DSL authentication"
msgstr "DSL 認証"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:327
msgid "PIN code required"
msgstr "PIN コードが必要です"
#: ../js/ui/components/networkAgent.js:324
#: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device"
msgstr "モバイルブロードバンドデバイスには PIN コードが必要です"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:329
msgid "PIN: "
msgstr "PIN 番号: "
#: ../js/ui/components/networkAgent.js:331
#: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password"
msgstr "モバイルブロードバンドネットワークのパスワード"
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:336
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "'%s' への接続にパスワードが必要です。"
@ -856,7 +866,7 @@ msgstr "アカウントを表示"
msgid "Unknown reason"
msgstr "原因不明"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
msgid "Windows"
msgstr "ウィンドウ"
@ -994,7 +1004,7 @@ msgstr "インストール"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "extensions.gnome.org から '%s' をダウンロードしてインストールしますか?"
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
msgid "Keyboard"
msgstr "キーボード"
@ -1070,11 +1080,11 @@ msgstr "トレイメニュー"
msgid "No Messages"
msgstr "メッセージなし"
#: ../js/ui/messageTray.js:1812
#: ../js/ui/messageTray.js:1813
msgid "Message Tray"
msgstr "メッセージトレイ"
#: ../js/ui/messageTray.js:2787
#: ../js/ui/messageTray.js:2788
msgid "System Information"
msgstr "システム情報"
@ -1105,21 +1115,17 @@ msgstr "アクティビティ画面"
msgid "Type to search…"
msgstr "検索ワードを入力…"
#: ../js/ui/panel.js:516
#: ../js/ui/panel.js:518
msgid "Quit"
msgstr "終了"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:568
#: ../js/ui/panel.js:570
msgid "Activities"
msgstr "アクティビティ"
#: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "設定メニュー"
#: ../js/ui/panel.js:901
#: ../js/ui/panel.js:903
msgid "Top Bar"
msgstr "トップバー"
@ -1128,7 +1134,7 @@ msgstr "トップバー"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:226
#: ../js/ui/popupMenu.js:233
msgid "toggle-switch-us"
msgstr "toggle-switch-us"
@ -1156,7 +1162,7 @@ msgstr[0] "%d 件の新しい通知"
msgid "Lock"
msgstr "ロック"
#: ../js/ui/screenShield.js:703
#: ../js/ui/screenShield.js:704
msgid "GNOME needs to lock the screen"
msgstr "画面をロックする必要があります"
@ -1167,11 +1173,11 @@ msgstr "画面をロックする必要があります"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Unable to lock"
msgstr "ロックできません"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
msgid "Lock was blocked by an application"
msgstr "アプリケーションによってロックがブロックされました"
@ -1253,9 +1259,9 @@ msgstr "大きな文字"
#. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item.
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1268,78 +1274,78 @@ msgstr "オフにする"
msgid "Bluetooth Settings"
msgstr "Bluetooth の設定"
#: ../js/ui/status/bluetooth.js:57
#: ../js/ui/status/bluetooth.js:58
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "接続デバイス: %d台"
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#, c-format
msgid "Authorization request from %s"
msgstr "%s からアクセス許可の要求"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "デバイス %s がこのコンピューターとのペアリングを要求しています"
#: ../js/ui/status/bluetooth.js:108
#: ../js/ui/status/bluetooth.js:109
msgid "Allow"
msgstr "許可"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:110
msgid "Deny"
msgstr "拒否"
#: ../js/ui/status/bluetooth.js:134
#: ../js/ui/status/bluetooth.js:135
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "デバイス '%s' が サービス '%s' へのアクセスを要求しています"
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:137
msgid "Always grant access"
msgstr "許可"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:138
msgid "Grant this time only"
msgstr "今回のみ許可"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:139
msgid "Reject"
msgstr "拒否"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:165
#: ../js/ui/status/bluetooth.js:166
#, c-format
msgid "Pairing confirmation for %s"
msgstr "%s からペアリングの確認"
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:173
#, c-format
msgid "Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "'%06d' がデバイスのパスキーと一致しているか確認してください。"
#. Translators: this is the verb, not the noun
#: ../js/ui/status/bluetooth.js:175
#: ../js/ui/status/bluetooth.js:176
msgid "Matches"
msgstr "一致"
#: ../js/ui/status/bluetooth.js:176
#: ../js/ui/status/bluetooth.js:177
msgid "Does not match"
msgstr "不一致"
#: ../js/ui/status/bluetooth.js:195
#: ../js/ui/status/bluetooth.js:196
#, c-format
msgid "Pairing request for %s"
msgstr "%s からペアリングの要求"
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:204
msgid "Please enter the PIN mentioned on the device."
msgstr "デバイスの PIN コードを入力してください。"
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/bluetooth.js:221
msgid "OK"
msgstr "OK"
@ -1347,7 +1353,7 @@ msgstr "OK"
msgid "Brightness"
msgstr "明るさ"
#: ../js/ui/status/keyboard.js:404
#: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout"
msgstr "キーボードレイアウトの表示"
@ -1423,15 +1429,15 @@ msgstr "オンにする"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1306
#: ../js/ui/status/network.js:1307
msgid "Network Manager"
msgstr "ネットワークマネージャー"
#: ../js/ui/status/network.js:1345
#: ../js/ui/status/network.js:1346
msgid "Connection failed"
msgstr "接続失敗"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1347
msgid "Activation of network connection failed"
msgstr "ネットワーク接続を有効にできません"
@ -1517,11 +1523,11 @@ msgstr "他のユーザーでログイン"
msgid "Unlock Window"
msgstr "ロック解除"
#: ../js/ui/viewSelector.js:100
#: ../js/ui/viewSelector.js:104
msgid "Applications"
msgstr "アプリケーション"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:108
msgid "Search"
msgstr "検索"
@ -1622,6 +1628,9 @@ msgstr "パスワードを空白にすることはできません。"
msgid "Authentication dialog was dismissed by the user"
msgstr "認証ダイアログはユーザーに拒否されました"
#~ msgid "Settings Menu"
#~ msgstr "設定メニュー"
#~ msgid "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
#~ msgstr "ユーザーにより明示的に設定された最新の IM プレゼンスを保存するのに内部的に使用されます。ここは TpConnectionPresenceType 列挙型の値になります。"

239
po/kk.po
View File

@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-08-30 14:46+0000\n"
"PO-Revision-Date: 2013-08-31 19:43+0600\n"
"POT-Creation-Date: 2013-09-23 13:35+0000\n"
"PO-Revision-Date: 2013-09-24 06:33+0600\n"
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
"Language-Team: Kazakh <kk_KZ@googlegroups.com>\n"
"Language: kk\n"
@ -48,6 +48,7 @@ msgid "GNOME Shell"
msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Терезелерді басқару мен қолданбаларды жөнелту"
@ -60,6 +61,10 @@ msgstr "GNOME Shell кеңейту баптаулары"
msgid "Configure GNOME Shell Extensions"
msgstr "GNOME Shell кеңейтулерін баптау"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (wayland үйлестіргіші)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
@ -85,6 +90,10 @@ msgid ""
"list. You can also manipulate this list with the EnableExtension and "
"DisableExtension DBus methods on org.gnome.Shell."
msgstr ""
"GNOME Shell кеңейтулерінде uuid қасиеті бар; бұл кілт жүктелетін кеңейтулер "
"тізімін сақтайды. Жүйеге кірген кезде жүктелем дейтін кеңейту осы тізімде "
"болуы тиіс. Бұл тізімді org.gnome.Shell ішіндегі EnableExtension және "
"DisableExtension DBus тәсілдерімен де өзгертуге болады."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
msgid "List of desktop file IDs for favorite applications"
@ -95,6 +104,8 @@ msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgstr ""
"Осы анықтағыштарға сәйкес келетін қолданбалар таңдамалылар аймағында "
"көрсетілетін болады."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
msgid "List of categories that should be displayed as folders"
@ -105,6 +116,8 @@ msgid ""
"Each category name in this list will be represented as folder in the "
"application view, rather than being displayed inline in the main view."
msgstr ""
"Бұл тізімдегі әрбір санат аты басты көріністе қатарынан көрсетілудің орнына "
"қолданбалар көрінісінде бума ретінде көрсетіледі."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
msgid "History for command (Alt-F2) dialog"
@ -123,6 +136,8 @@ msgid ""
"This key overrides the automatic hiding of the 'Log out' menuitem in single-"
"user, single-session situations."
msgstr ""
"Бұл кілт бір пайдаланушы, бір сессия бар кезінде 'Жүйеден шығу' "
"мүмкіндігінің автоматты түрде жасыруын алмастырады."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
msgid ""
@ -138,6 +153,10 @@ msgid ""
"'Remember Password' checkbox will be present. This key sets the default "
"state of the checkbox."
msgstr ""
"Қоршам шифрленген құрылғы немесе қашықтағы файлдық жүйе тіркелген кезде "
"парольді сұрайды. Егер парольді болашақтағы қолданулар үшін сақтау керек "
"болса, 'Парольді еске сақтау' жалаушасые орнатыңыз. Бұл кілт жалаушаның "
"бастапқы күйін орнатады."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
msgid "Show the week date in the calendar"
@ -207,10 +226,13 @@ msgid ""
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
"only' (shows only the application icon) or 'both'."
msgstr ""
"Терезелер ауыстырғышта қалай көрсетілетінін сипаттайды. Мүмкін мәндері "
"'thumbnail-only' (терезенің кіші көрінісі көрсетіледі), 'app-icon-only' (тек "
"қолданба таңбашасы көрсетіледі) немесе 'both' (екеуі де)."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "Attach modal dialog to the parent window"
msgstr ""
msgstr "Модальды сұхбатты аталық терезесіне жалғау"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
msgid ""
@ -234,6 +256,8 @@ msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Терезелерді экран шеттеріне апарған кезде олардың өлшемдерін өзгертуді іске "
"қосу"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid "Workspaces are managed dynamically"
@ -243,6 +267,10 @@ msgstr "Жұмыс орындары динамикалы түрде басқар
msgid "Workspaces only on primary monitor"
msgstr "Жұмыс орындар тек біріншілік мониторда"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Тышқан режиміндегі фокусты ауыстыру курсор тоқтағанша дейін кідірту"
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
@ -256,10 +284,10 @@ msgstr "Кеңейту"
msgid "Select an extension to configure using the combobox above."
msgstr "Жоғарыдағы ашылмалы тізімнен баптау үшін кеңейтуді таңдаңыз."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:679
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "Бас тарту"
@ -298,8 +326,8 @@ msgstr "(мыс., пайдаланушы не %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277
msgid "Username: "
msgstr "Пайдаланушы аты:"
@ -320,38 +348,42 @@ msgstr "Аутентификация қатесі"
msgid "(or swipe finger)"
msgstr "(немесе саусағыңызды өткізіңіз)"
#: ../js/misc/util.js:97
#: ../js/misc/util.js:98
msgid "Command not found"
msgstr "Команда табылмады"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:130
#: ../js/misc/util.js:131
msgid "Could not parse command:"
msgstr "Команданы талдау мүмкін емес:"
#: ../js/misc/util.js:138
#: ../js/misc/util.js:139
#, c-format
msgid "Execution of '%s' failed:"
msgstr "'%s' жөнелту сәтсіз:"
#: ../js/ui/appDisplay.js:386
#: ../js/ui/appDisplay.js:596
msgid "Frequently used applications will appear here"
msgstr "Жиі қолданылатын қолданбалар осында көрінеді"
#: ../js/ui/appDisplay.js:712
msgid "Frequent"
msgstr "Жиі"
#: ../js/ui/appDisplay.js:393
#: ../js/ui/appDisplay.js:719
msgid "All"
msgstr "Барлық"
#: ../js/ui/appDisplay.js:991
#: ../js/ui/appDisplay.js:1514
msgid "New Window"
msgstr "Жаңа терезе"
#: ../js/ui/appDisplay.js:994 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Таңдамалылардан өшіру"
#: ../js/ui/appDisplay.js:995
#: ../js/ui/appDisplay.js:1518
msgid "Add to Favorites"
msgstr "Таңдамалыларға қосу"
@ -365,7 +397,8 @@ msgstr "%s таңдамалыларыңызға қосылды."
msgid "%s has been removed from your favorites."
msgstr "%s таңдамалыларыңыздан өшірілді."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
#: ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Баптаулар"
@ -520,7 +553,7 @@ msgstr "Бүгін"
#: ../js/ui/calendar.js:789
msgid "Tomorrow"
msgstr "Ертен"
msgstr "Ертең"
#: ../js/ui/calendar.js:800
msgid "This week"
@ -551,85 +584,85 @@ msgstr "%s көмегімен ашу"
msgid "Eject"
msgstr "Шығару"
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Пароль:"
#: ../js/ui/components/keyring.js:107
#: ../js/ui/components/keyring.js:110
msgid "Type again:"
msgstr "Қайтадан енгізіңіз:"
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:268 ../js/ui/status/network.js:682
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
msgid "Connect"
msgstr "Байланысу"
#. Cisco LEAP
#: ../js/ui/components/networkAgent.js:218
#: ../js/ui/components/networkAgent.js:230
#: ../js/ui/components/networkAgent.js:257
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:287
#: ../js/ui/components/networkAgent.js:222
#: ../js/ui/components/networkAgent.js:234
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:281
#: ../js/ui/components/networkAgent.js:291
msgid "Password: "
msgstr "Пароль:"
#. static WEP
#: ../js/ui/components/networkAgent.js:223
#: ../js/ui/components/networkAgent.js:227
msgid "Key: "
msgstr "Кілт:"
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:265
msgid "Identity: "
msgstr ""
msgstr "Анықтағыш:"
#: ../js/ui/components/networkAgent.js:263
#: ../js/ui/components/networkAgent.js:267
msgid "Private key password: "
msgstr "Жеке кілт паролі:"
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:279
msgid "Service: "
msgstr "Қызмет:"
#: ../js/ui/components/networkAgent.js:304
#: ../js/ui/components/networkAgent.js:308
msgid "Authentication required by wireless network"
msgstr "Сымсыз желісі аутентификацияны талап етеді"
#: ../js/ui/components/networkAgent.js:305
#: ../js/ui/components/networkAgent.js:309
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"'%s'."
msgstr "'%s' сымсыз желісіне қатынау үшін парольдер не шифрлеу кілттері керек."
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:313
msgid "Wired 802.1X authentication"
msgstr "Сымды 802.1X аутентификациясы"
#: ../js/ui/components/networkAgent.js:311
#: ../js/ui/components/networkAgent.js:315
msgid "Network name: "
msgstr "Желі аты:"
#: ../js/ui/components/networkAgent.js:316
#: ../js/ui/components/networkAgent.js:320
msgid "DSL authentication"
msgstr "DSL аутентификациясы"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:327
msgid "PIN code required"
msgstr "PIN коды керек"
#: ../js/ui/components/networkAgent.js:324
#: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device"
msgstr "Сымсыз кеңжолақты құрылғы үшін PIN коды керек"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:329
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:331
#: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password"
msgstr "Сымсыз кеңжолақты желісінің паролі"
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:336
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "'%s' үшін байланысты орнату үшін пароль керек."
@ -893,7 +926,7 @@ msgstr "Тіркелгіні қарап шығу"
msgid "Unknown reason"
msgstr "Себебі белгісіз"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
msgid "Windows"
msgstr "Терезелер"
@ -903,7 +936,7 @@ msgstr "Қолданбаларды көрсету"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/dash.js:439
#: ../js/ui/dash.js:442
msgid "Dash"
msgstr "Dash"
@ -987,15 +1020,12 @@ msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "Жүйе %d секундтан кейін автоматты түрде қайта қосылады."
#: ../js/ui/endSessionDialog.js:112
#| msgid "Install Updates & Restart"
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "Қайта қосу және жаңартуларды орнату"
#: ../js/ui/endSessionDialog.js:114
#, c-format
#| msgid "The system will restart automatically in %d second."
#| msgid_plural "The system will restart automatically in %d seconds."
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
"The system will automatically restart and install updates in %d seconds."
@ -1037,7 +1067,7 @@ msgstr "Орнату"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "extensions.gnome.org адресінен '%s' жүктеп алып, орнату керек пе?"
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
msgid "Keyboard"
msgstr "Пернетақта"
@ -1113,11 +1143,11 @@ msgstr "Трей мәзірі"
msgid "No Messages"
msgstr "Хабарламалар жоқ"
#: ../js/ui/messageTray.js:1812
#: ../js/ui/messageTray.js:1813
msgid "Message Tray"
msgstr "Жүйелік трей"
#: ../js/ui/messageTray.js:2786
#: ../js/ui/messageTray.js:2788
msgid "System Information"
msgstr "Жүйелік ақпарат"
@ -1148,21 +1178,17 @@ msgstr "Шолу"
msgid "Type to search…"
msgstr "Іздеу үшін теріңіз..."
#: ../js/ui/panel.js:516
#: ../js/ui/panel.js:518
msgid "Quit"
msgstr "Шығу"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:568
#: ../js/ui/panel.js:570
msgid "Activities"
msgstr "Көрініс"
#: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "Баптаулар мәзірі"
#: ../js/ui/panel.js:892
#: ../js/ui/panel.js:903
msgid "Top Bar"
msgstr "Үстідегі панель"
@ -1171,7 +1197,7 @@ msgstr "Үстідегі панель"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:226
#: ../js/ui/popupMenu.js:233
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1199,7 +1225,7 @@ msgstr[0] "%d жаңа ескерту"
msgid "Lock"
msgstr "Блоктау"
#: ../js/ui/screenShield.js:703
#: ../js/ui/screenShield.js:704
msgid "GNOME needs to lock the screen"
msgstr "GNOME экранды блоктау керек"
@ -1210,19 +1236,19 @@ msgstr "GNOME экранды блоктау керек"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Unable to lock"
msgstr "Блоктау мүмкін емес"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
msgid "Lock was blocked by an application"
msgstr "Блоктауды басқа қолданба болдырмады"
#: ../js/ui/searchDisplay.js:445
#: ../js/ui/searchDisplay.js:447
msgid "Searching…"
msgstr "Іздеу..."
#: ../js/ui/searchDisplay.js:489
#: ../js/ui/searchDisplay.js:491
msgid "No results."
msgstr "Нәтижелер жоқ."
@ -1296,14 +1322,14 @@ msgstr "Үлкен мәтін"
#. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item.
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:1027 ../js/ui/status/rfkill.js:46
#: ../js/ui/status/network.js:1034 ../js/ui/status/rfkill.js:46
msgid "Turn Off"
msgstr "Сөндіру"
@ -1311,79 +1337,79 @@ msgstr "Сөндіру"
msgid "Bluetooth Settings"
msgstr "Bluetooth баптаулары"
#: ../js/ui/status/bluetooth.js:57
#: ../js/ui/status/bluetooth.js:58
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "%d байланысқан құрылғы"
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#, c-format
msgid "Authorization request from %s"
msgstr "%s жіберген авторизация сұранымы"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "%s құрылғысы бұл компьютермен пар болғысы кеп тұр"
#: ../js/ui/status/bluetooth.js:108
#: ../js/ui/status/bluetooth.js:109
msgid "Allow"
msgstr "Рұқсат ету"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:110
msgid "Deny"
msgstr "Тайдыру"
#: ../js/ui/status/bluetooth.js:134
#: ../js/ui/status/bluetooth.js:135
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "%s құрылғысы '%s' қызметін қатынағысы кеп тұр"
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:137
msgid "Always grant access"
msgstr "Әрқашан рұқсат ету"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:138
msgid "Grant this time only"
msgstr "Тек осы ретке рұқсат ету"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:139
msgid "Reject"
msgstr "Болдырмау"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:165
#: ../js/ui/status/bluetooth.js:166
#, c-format
msgid "Pairing confirmation for %s"
msgstr "%s жіберген парлау растауы"
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:173
#, c-format
msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "'%06d' кілт коды құрылғыдағы кодымен сәйкес келетінін растаңыз."
#. Translators: this is the verb, not the noun
#: ../js/ui/status/bluetooth.js:175
#: ../js/ui/status/bluetooth.js:176
msgid "Matches"
msgstr "Сәйкес"
#: ../js/ui/status/bluetooth.js:176
#: ../js/ui/status/bluetooth.js:177
msgid "Does not match"
msgstr "Сәйкес емес"
#: ../js/ui/status/bluetooth.js:195
#: ../js/ui/status/bluetooth.js:196
#, c-format
msgid "Pairing request for %s"
msgstr "%s үшін парлау сұранымы"
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:204
msgid "Please enter the PIN mentioned on the device."
msgstr "Құрылғыда көрсетілген PIN кодын енгізіңіз."
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/bluetooth.js:221
msgid "OK"
msgstr "ОК"
@ -1391,7 +1417,7 @@ msgstr "ОК"
msgid "Brightness"
msgstr "Жарықтылығы"
#: ../js/ui/status/keyboard.js:404
#: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout"
msgstr "Пернетақта жаймасын көрсету"
@ -1399,83 +1425,83 @@ msgstr "Пернетақта жаймасын көрсету"
msgid "<unknown>"
msgstr "<белгісіз>"
#: ../js/ui/status/network.js:196 ../js/ui/status/network.js:1042
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
msgid "Off"
msgstr "Сөнд."
#: ../js/ui/status/network.js:269 ../js/ui/status/network.js:948
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:955
#: ../js/ui/status/rfkill.js:49
msgid "Network Settings"
msgstr "Желі баптаулары"
#. 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)
#: ../js/ui/status/network.js:357
#: ../js/ui/status/network.js:364
msgid "unmanaged"
msgstr "басқарылмайтын"
#: ../js/ui/status/network.js:359
#: ../js/ui/status/network.js:366
msgid "disconnecting..."
msgstr "байланысты үзу..."
#: ../js/ui/status/network.js:365 ../js/ui/status/network.js:1093
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1100
msgid "connecting..."
msgstr "байланысты орнату..."
#. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:368 ../js/ui/status/network.js:1096
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1103
msgid "authentication required"
msgstr "аутентификация керек"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing
#: ../js/ui/status/network.js:376
#: ../js/ui/status/network.js:383
msgid "firmware missing"
msgstr "бинарлы кодтары жоқ"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage
#: ../js/ui/status/network.js:380
#: ../js/ui/status/network.js:387
msgid "unavailable"
msgstr "қолжетерсіз"
#: ../js/ui/status/network.js:382 ../js/ui/status/network.js:1098
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1105
msgid "connection failed"
msgstr "байланысты орнату сәтсіз"
#: ../js/ui/status/network.js:647
#: ../js/ui/status/network.js:654
msgid "Wi-Fi Networks"
msgstr "Wi-Fi желілері"
#: ../js/ui/status/network.js:649
#: ../js/ui/status/network.js:656
msgid "Select a network"
msgstr "Желіні таңдаңыз"
#: ../js/ui/status/network.js:673
#: ../js/ui/status/network.js:680
msgid "No Networks"
msgstr "Желілер жоқ"
#: ../js/ui/status/network.js:942
#: ../js/ui/status/network.js:949
msgid "Select Network"
msgstr "Желіні таңдаңыз"
#: ../js/ui/status/network.js:1027
#: ../js/ui/status/network.js:1034
msgid "Turn On"
msgstr "Іске қосу"
#: ../js/ui/status/network.js:1160
#: ../js/ui/status/network.js:1167
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1299
#: ../js/ui/status/network.js:1307
msgid "Network Manager"
msgstr "Желілер басқарушысы"
#: ../js/ui/status/network.js:1338
#: ../js/ui/status/network.js:1346
msgid "Connection failed"
msgstr "Байланыс орнату сәтсіз"
#: ../js/ui/status/network.js:1339
#: ../js/ui/status/network.js:1347
msgid "Activation of network connection failed"
msgstr "Желілік байланысты белсендіру сәтсіз"
@ -1561,11 +1587,11 @@ msgstr "Басқа пайдаланушы ретінде жүйеге кіру"
msgid "Unlock Window"
msgstr "Блоктауды алу терезесі"
#: ../js/ui/viewSelector.js:100
#: ../js/ui/viewSelector.js:104
msgid "Applications"
msgstr "Қолданбалар"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:108
msgid "Search"
msgstr "Іздеу"
@ -1581,7 +1607,7 @@ msgstr ""
#: ../js/ui/wanda.js:81
#, c-format
msgid "%s the Oracle says"
msgstr ""
msgstr "Болжаушы айтады: %s"
#: ../js/ui/windowAttentionHandler.js:19
#, c-format
@ -1665,3 +1691,6 @@ msgstr "Пароль бос болуы мүмкін емес"
#: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user"
msgstr "Аутентификация терезесін пайдаланушы тайдырды"
#~ msgid "Settings Menu"
#~ msgstr "Баптаулар мәзірі"

1502
po/ko.po

File diff suppressed because it is too large Load Diff

411
po/lt.po

File diff suppressed because it is too large Load Diff

184
po/lv.po
View File

@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
"PO-Revision-Date: 2013-09-10 21:28+0300\n"
"POT-Creation-Date: 2013-09-23 13:35+0000\n"
"PO-Revision-Date: 2013-09-26 23:29+0300\n"
"Last-Translator: Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>\n"
"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
"Language: lv\n"
@ -50,6 +50,7 @@ msgid "GNOME Shell"
msgstr "GNOME čaula"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Logu pārvaldība un lietotņu palaišana"
@ -62,6 +63,10 @@ msgstr "GNOME Shell paplašinājumu iestatījumi"
msgid "Configure GNOME Shell Extensions"
msgstr "Konfigurēt GNOME Shell paplašinājumus"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME čaula (wayland kompozitors)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
@ -179,12 +184,10 @@ msgstr ""
"Taustiņu sasaiste, kas atver “Rādīt lietotnes” aktivitāšu pārskata skatu."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
#| msgid "Keybinding to open the \"Show Applications\" view"
msgid "Keybinding to open the overview"
msgstr "Taustiņu sasaiste, kas atver pārskatu"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
#| msgid "Keybinding to open the \"Show Applications\" view"
msgid "Keybinding to open the Activities Overview."
msgstr "Taustiņu sasaiste, kas atver aktivitāšu pārskatu."
@ -259,6 +262,10 @@ msgstr "Darbvirsmas tiek pārvaldītas dinamiski"
msgid "Workspaces only on primary monitor"
msgstr "Darbvietas tikai uz galvenā monitora"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Peles režīmā aizkavēt fokusa izmaiņas, līdz rādītājs pārstāj kustēties"
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
@ -272,10 +279,10 @@ msgstr "Paplašinājums"
msgid "Select an extension to configure using the combobox above."
msgstr "Izvēlieties konfigurējamo paplašinājumu no saraksta."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "Atcelt"
@ -294,7 +301,6 @@ msgid "Sign In"
msgstr "Ierakstīties"
#: ../js/gdm/loginDialog.js:294
#| msgid "Switch Session"
msgid "Choose Session"
msgstr "Izvēlieties sesiju"
@ -315,8 +321,8 @@ msgstr "(piemēram, lietotājs vai %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277
msgid "Username: "
msgstr "Lietotājvārds: "
@ -337,42 +343,42 @@ msgstr "Autentifikācijas kļūda"
msgid "(or swipe finger)"
msgstr "(vai velciet pirkstu)"
#: ../js/misc/util.js:97
#: ../js/misc/util.js:98
msgid "Command not found"
msgstr "Komanda nav atrasta"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:130
#: ../js/misc/util.js:131
msgid "Could not parse command:"
msgstr "Neizdevās apstrādāt komandu:"
#: ../js/misc/util.js:138
#: ../js/misc/util.js:139
#, c-format
msgid "Execution of '%s' failed:"
msgstr "“%s” izpilde neizdevās:"
#: ../js/ui/appDisplay.js:578
#: ../js/ui/appDisplay.js:596
msgid "Frequently used applications will appear here"
msgstr "Šeit parādīsies biežāk izmantotās lietotnes"
#: ../js/ui/appDisplay.js:694
#: ../js/ui/appDisplay.js:712
msgid "Frequent"
msgstr "Biežāk izmantotās"
#: ../js/ui/appDisplay.js:701
#: ../js/ui/appDisplay.js:719
msgid "All"
msgstr "Visas"
#: ../js/ui/appDisplay.js:1488
#: ../js/ui/appDisplay.js:1514
msgid "New Window"
msgstr "Jauns logs"
#: ../js/ui/appDisplay.js:1491 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Izņemt no izlases"
#: ../js/ui/appDisplay.js:1492
#: ../js/ui/appDisplay.js:1518
msgid "Add to Favorites"
msgstr "Pievienot izlasei"
@ -386,7 +392,8 @@ msgstr "%s ir pievienots izlasei."
msgid "%s has been removed from your favorites."
msgstr "%s ir izņemts no izlases."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:807
#: ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Iestatījumi"
@ -572,50 +579,50 @@ msgstr "Atvērt ar %s"
msgid "Eject"
msgstr "Izgrūst"
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Parole:"
#: ../js/ui/components/keyring.js:107
#: ../js/ui/components/keyring.js:110
msgid "Type again:"
msgstr "Ierakstiet vēlreiz:"
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
msgid "Connect"
msgstr "Savienot"
#. Cisco LEAP
#: ../js/ui/components/networkAgent.js:218
#: ../js/ui/components/networkAgent.js:230
#: ../js/ui/components/networkAgent.js:257
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:287
#: ../js/ui/components/networkAgent.js:222
#: ../js/ui/components/networkAgent.js:234
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:281
#: ../js/ui/components/networkAgent.js:291
msgid "Password: "
msgstr "Parole: "
#. static WEP
#: ../js/ui/components/networkAgent.js:223
#: ../js/ui/components/networkAgent.js:227
msgid "Key: "
msgstr "Atslēga: "
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:265
msgid "Identity: "
msgstr "Identitāte: "
#: ../js/ui/components/networkAgent.js:263
#: ../js/ui/components/networkAgent.js:267
msgid "Private key password: "
msgstr "Privātās atslēgas parole: "
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:279
msgid "Service: "
msgstr "Serviss: "
#: ../js/ui/components/networkAgent.js:304
#: ../js/ui/components/networkAgent.js:308
msgid "Authentication required by wireless network"
msgstr "Bezvadu tīkls pieprasa autentifikāciju"
#: ../js/ui/components/networkAgent.js:305
#: ../js/ui/components/networkAgent.js:309
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -624,35 +631,35 @@ msgstr ""
"Lai piekļūtu bezvadu tīklam “%s”, ir nepieciešamas paroles vai šifrēšanas "
"atslēgas."
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:313
msgid "Wired 802.1X authentication"
msgstr "Vadu 802.1X autentifikācija"
#: ../js/ui/components/networkAgent.js:311
#: ../js/ui/components/networkAgent.js:315
msgid "Network name: "
msgstr "Tīkla nosaukums: "
#: ../js/ui/components/networkAgent.js:316
#: ../js/ui/components/networkAgent.js:320
msgid "DSL authentication"
msgstr "DSL autentifikācija"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:327
msgid "PIN code required"
msgstr "Nepieciešams PIN kods"
#: ../js/ui/components/networkAgent.js:324
#: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device"
msgstr "Mobilā platjoslas tīkla ierīcei ir vajadzīgs PIN kods"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:329
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:331
#: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password"
msgstr "Mobilās platjoslas tīkla parole"
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:336
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "Lai savienotos ar “%s”, ir nepieciešama parole."
@ -918,7 +925,7 @@ msgstr "Skatīt kontu"
msgid "Unknown reason"
msgstr "Nezināms iemesls"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
msgid "Windows"
msgstr "Logi"
@ -1020,15 +1027,12 @@ msgstr[1] "Sistēma tiks automātiski pārstartēta pēc %d sekundēm."
msgstr[2] "Sistēma tiks automātiski pārstartēta pēc %d sekundēm."
#: ../js/ui/endSessionDialog.js:112
#| msgid "Install Updates & Restart"
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "Pārstartēt un instalēt atjauninājumus"
#: ../js/ui/endSessionDialog.js:114
#, c-format
#| msgid "The system will restart automatically in %d second."
#| msgid_plural "The system will restart automatically in %d seconds."
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
"The system will automatically restart and install updates in %d seconds."
@ -1076,7 +1080,7 @@ msgstr "Instalēt"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Lejupielādēt un instalēt “%s” no extensions.gnome.org?"
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
msgid "Keyboard"
msgstr "Tastatūra"
@ -1152,11 +1156,11 @@ msgstr "Paplātes izvēlne"
msgid "No Messages"
msgstr "Nav ziņojumu"
#: ../js/ui/messageTray.js:1812
#: ../js/ui/messageTray.js:1813
msgid "Message Tray"
msgstr "Ziņojumu paplāte"
#: ../js/ui/messageTray.js:2786
#: ../js/ui/messageTray.js:2788
msgid "System Information"
msgstr "Sistēmas informācija"
@ -1189,22 +1193,17 @@ msgstr "Pārskats"
msgid "Type to search…"
msgstr "Rakstiet, lai meklētu…"
#: ../js/ui/panel.js:516
#: ../js/ui/panel.js:518
msgid "Quit"
msgstr "Iziet"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:568
#: ../js/ui/panel.js:570
msgid "Activities"
msgstr "Aktivitātes"
#: ../js/ui/panel.js:805
#| msgid "Settings"
msgid "Settings Menu"
msgstr "Iestatījumu izvēlne"
#: ../js/ui/panel.js:892
#: ../js/ui/panel.js:903
msgid "Top Bar"
msgstr "Augšējā josla"
@ -1213,7 +1212,7 @@ msgstr "Augšējā josla"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:226
#: ../js/ui/popupMenu.js:233
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1243,7 +1242,7 @@ msgstr[2] "%d jaunu paziņojumu"
msgid "Lock"
msgstr "Bloķēt"
#: ../js/ui/screenShield.js:703
#: ../js/ui/screenShield.js:704
msgid "GNOME needs to lock the screen"
msgstr "GNOME vajag bloķēt ekrānu"
@ -1254,11 +1253,11 @@ msgstr "GNOME vajag bloķēt ekrānu"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Unable to lock"
msgstr "Nevar bloķēt"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
msgid "Lock was blocked by an application"
msgstr "Lietotne neļāva bloķēt"
@ -1340,9 +1339,9 @@ msgstr "Liels teksts"
#. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item.
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1355,83 +1354,81 @@ msgstr "Izslēgt"
msgid "Bluetooth Settings"
msgstr "Bluetooth iestatījumi"
#: ../js/ui/status/bluetooth.js:57
#: ../js/ui/status/bluetooth.js:58
#, c-format
#| msgid "Connected (private)"
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "%d savienota ierīce"
msgstr[1] "%d savienotas ierīces"
msgstr[2] "%d savienotu ierīču"
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#, c-format
msgid "Authorization request from %s"
msgstr "Autorizācijas pieprasījums no %s"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Ierīce %s prasa sapārošanu ar šo datoru"
#: ../js/ui/status/bluetooth.js:108
#: ../js/ui/status/bluetooth.js:109
msgid "Allow"
msgstr "Atļaut"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:110
msgid "Deny"
msgstr "Liegt"
#: ../js/ui/status/bluetooth.js:134
#: ../js/ui/status/bluetooth.js:135
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Ierīce %s prasa pieeju “%s” servisam"
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:137
msgid "Always grant access"
msgstr "Vienmēr piešķirt pieeju"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:138
msgid "Grant this time only"
msgstr "Piešķirt tikai šoreiz"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:139
msgid "Reject"
msgstr "Noraidīt"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:165
#: ../js/ui/status/bluetooth.js:166
#, c-format
msgid "Pairing confirmation for %s"
msgstr "%s pārošanas apstiprinājums"
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:173
#, c-format
#| msgid "Please confirm whether the PIN '%06d' matches the one on the device."
msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "Lūdzu, pārliecinieties, vai parole “%06d” sakrīt ar ierīces doto."
#. Translators: this is the verb, not the noun
#: ../js/ui/status/bluetooth.js:175
#: ../js/ui/status/bluetooth.js:176
msgid "Matches"
msgstr "Sakrīt"
#: ../js/ui/status/bluetooth.js:176
#: ../js/ui/status/bluetooth.js:177
msgid "Does not match"
msgstr "Nesakrīt"
#: ../js/ui/status/bluetooth.js:195
#: ../js/ui/status/bluetooth.js:196
#, c-format
msgid "Pairing request for %s"
msgstr "%s pārošanas pieprasījums"
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:204
msgid "Please enter the PIN mentioned on the device."
msgstr "Lūdzu, ievadiet PIN, kas redzams uz ierīces."
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/bluetooth.js:221
msgid "OK"
msgstr "Labi"
@ -1439,7 +1436,7 @@ msgstr "Labi"
msgid "Brightness"
msgstr "Gaišums"
#: ../js/ui/status/keyboard.js:404
#: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout"
msgstr "Rādīt tastatūras izkārtojumu"
@ -1448,7 +1445,6 @@ msgid "<unknown>"
msgstr "<nezināms>"
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
#| msgid "Offline"
msgid "Off"
msgstr "Izslēgts"
@ -1493,22 +1489,18 @@ msgid "connection failed"
msgstr "savienojums neizdevās"
#: ../js/ui/status/network.js:654
#| msgid "Network"
msgid "Wi-Fi Networks"
msgstr "Bezvadu tīkli"
#: ../js/ui/status/network.js:656
#| msgid "Enable networking"
msgid "Select a network"
msgstr "Izvēlieties tīklu"
#: ../js/ui/status/network.js:680
#| msgid "Network"
msgid "No Networks"
msgstr "Nav tīklu"
#: ../js/ui/status/network.js:949
#| msgid "Network"
msgid "Select Network"
msgstr "Izvēlieties tīklu"
@ -1520,15 +1512,15 @@ msgstr "Ieslēgt"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1306
#: ../js/ui/status/network.js:1307
msgid "Network Manager"
msgstr "Tīkla pārvaldnieks"
#: ../js/ui/status/network.js:1345
#: ../js/ui/status/network.js:1346
msgid "Connection failed"
msgstr "Neizdevās savienoties"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1347
msgid "Activation of network connection failed"
msgstr "Neizdevās tīkla savienojuma aktivēšana"
@ -1571,7 +1563,6 @@ msgid "Airplane Mode"
msgstr "Lidmašīnas režīms"
#: ../js/ui/status/rfkill.js:45
#| msgid "Open"
msgid "On"
msgstr "Ieslēgt"
@ -1615,11 +1606,11 @@ msgstr "Ierakstīties kā citam lietotājam"
msgid "Unlock Window"
msgstr "Atbloķēšanas logs"
#: ../js/ui/viewSelector.js:100
#: ../js/ui/viewSelector.js:104
msgid "Applications"
msgstr "Lietotnes"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:108
msgid "Search"
msgstr "Meklēt"
@ -1650,7 +1641,6 @@ msgstr "Vai vēlaties paturēt šos displeja iestatījumus?"
#. to avoid ellipsizing the labels.
#.
#: ../js/ui/windowManager.js:75
#| msgid "Power Settings"
msgid "Revert Settings"
msgstr "Atgriezt iestatījumus"
@ -1727,6 +1717,10 @@ msgstr "Parole nevar būt tukša"
msgid "Authentication dialog was dismissed by the user"
msgstr "Lietotājs noraidīja autentifikācijas dialoglodziņu"
#~| msgid "Settings"
#~ msgid "Settings Menu"
#~ msgstr "Iestatījumu izvēlne"
#~ msgid "Screenshots"
#~ msgstr "Ekrānattēli"

197
po/nb.po
View File

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell 3.9.x\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-08 11:22+0200\n"
"PO-Revision-Date: 2013-09-08 11:23+0200\n"
"POT-Creation-Date: 2013-09-29 11:27+0200\n"
"PO-Revision-Date: 2013-09-24 19:38+0200\n"
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
"Language: \n"
@ -47,6 +47,7 @@ msgid "GNOME Shell"
msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Vindushåndtering og oppstart av programmer"
@ -59,6 +60,10 @@ msgstr "Brukervalg for GNOME Shell utvidelser"
msgid "Configure GNOME Shell Extensions"
msgstr "Konfigurer utvidelser for GNOME Shell"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (wayland kompositør)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "Aktiver interne verktøy for utviklere og testere fra Alt-F2"
@ -243,6 +248,10 @@ msgstr "Arbeidsområder håndteres dynamisk"
msgid "Workspaces only on primary monitor"
msgstr "Arbeidsområder vises kun på hovedskjerm"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr ""
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
@ -256,10 +265,10 @@ msgstr "Utvidelse"
msgid "Select an extension to configure using the combobox above."
msgstr "Velg en utvidelse som skal konfigureres med komboboksen over."
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:132
#: ../js/gdm/authPrompt.js:145 ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161 ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221 ../js/ui/status/network.js:686
#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/network.js:692
msgid "Cancel"
msgstr "Avbryt"
@ -298,8 +307,8 @@ msgstr "(f.eks. bruker eller %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
#: ../js/gdm/loginDialog.js:627 ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277
msgid "Username: "
msgstr "Brukernavn: "
@ -320,42 +329,42 @@ msgstr "Autentiseringsfeil"
msgid "(or swipe finger)"
msgstr "(eller dra finger)"
#: ../js/misc/util.js:97
#: ../js/misc/util.js:98
msgid "Command not found"
msgstr "Kommando ikke funnet"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:130
#: ../js/misc/util.js:131
msgid "Could not parse command:"
msgstr "Klarte ikke å lese kommando:"
#: ../js/misc/util.js:138
#: ../js/misc/util.js:139
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Kjøring av «%s» feilet:"
#: ../js/ui/appDisplay.js:573
#: ../js/ui/appDisplay.js:596
msgid "Frequently used applications will appear here"
msgstr "Ofte brukte programmer vil vises her"
#: ../js/ui/appDisplay.js:689
#: ../js/ui/appDisplay.js:712
msgid "Frequent"
msgstr "Ofte"
#: ../js/ui/appDisplay.js:696
#: ../js/ui/appDisplay.js:719
msgid "All"
msgstr "Alle"
#: ../js/ui/appDisplay.js:1491
#: ../js/ui/appDisplay.js:1514
msgid "New Window"
msgstr "Nytt vindu"
#: ../js/ui/appDisplay.js:1494 ../js/ui/dash.js:284
#: ../js/ui/appDisplay.js:1517 ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Fjern fra favoritter"
#: ../js/ui/appDisplay.js:1495
#: ../js/ui/appDisplay.js:1518
msgid "Add to Favorites"
msgstr "Legg til i favoritter"
@ -369,7 +378,8 @@ msgstr "%s ble lagt til i dine favoritter."
msgid "%s has been removed from your favorites."
msgstr "%s ble fjernet fra dine favoritter."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/status/system.js:325
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:808
#: ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Innstillinger"
@ -555,50 +565,50 @@ msgstr "Åpne med %s"
msgid "Eject"
msgstr "Løs ut"
#: ../js/ui/components/keyring.js:88 ../js/ui/components/polkitAgent.js:280
#: ../js/ui/components/keyring.js:91 ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Passord:"
#: ../js/ui/components/keyring.js:107
#: ../js/ui/components/keyring.js:110
msgid "Type again:"
msgstr "Skriv på nytt:"
#: ../js/ui/components/networkAgent.js:127 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:689
#: ../js/ui/components/networkAgent.js:131 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275 ../js/ui/status/network.js:695
msgid "Connect"
msgstr "Koble til"
#. Cisco LEAP
#: ../js/ui/components/networkAgent.js:218
#: ../js/ui/components/networkAgent.js:230
#: ../js/ui/components/networkAgent.js:257
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:287
#: ../js/ui/components/networkAgent.js:222
#: ../js/ui/components/networkAgent.js:234
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:281
#: ../js/ui/components/networkAgent.js:291
msgid "Password: "
msgstr "Passord: "
#. static WEP
#: ../js/ui/components/networkAgent.js:223
#: ../js/ui/components/networkAgent.js:227
msgid "Key: "
msgstr "Nøkkel: "
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:265
msgid "Identity: "
msgstr "Identitet: "
#: ../js/ui/components/networkAgent.js:263
#: ../js/ui/components/networkAgent.js:267
msgid "Private key password: "
msgstr "Passord for privat nøkkel: "
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:279
msgid "Service: "
msgstr "Tjeneste: "
#: ../js/ui/components/networkAgent.js:304
#: ../js/ui/components/networkAgent.js:308
msgid "Authentication required by wireless network"
msgstr "Autentisering kreves av trådløst nettverk"
#: ../js/ui/components/networkAgent.js:305
#: ../js/ui/components/networkAgent.js:309
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -607,35 +617,35 @@ msgstr ""
"Passord eller krypteringsnøkler kreves for å koble til trådløst nettverk "
"«%s»."
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:313
msgid "Wired 802.1X authentication"
msgstr "802.1X autentisering for trådbundet nettverk"
#: ../js/ui/components/networkAgent.js:311
#: ../js/ui/components/networkAgent.js:315
msgid "Network name: "
msgstr "Navn på nettverk: "
#: ../js/ui/components/networkAgent.js:316
#: ../js/ui/components/networkAgent.js:320
msgid "DSL authentication"
msgstr "DSL-autentisering"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:327
msgid "PIN code required"
msgstr "PIN-kode kreves"
#: ../js/ui/components/networkAgent.js:324
#: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device"
msgstr "PIN-kode kreves for mobil bredbåndsenhet"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:329
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:331
#: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password"
msgstr "Nettverkspassord for mobilt bredbånd"
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:336
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "Et passord kreves for å koble til «%s»."
@ -899,7 +909,7 @@ msgstr "Vis konto"
msgid "Unknown reason"
msgstr "Ukjent årsak"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:96
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:100
msgid "Windows"
msgstr "Vinduer"
@ -1047,7 +1057,7 @@ msgstr "Installer"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Last ned og installer «%s» fra extensions.gnome.org?"
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:334
#: ../js/ui/keyboard.js:619 ../js/ui/status/keyboard.js:333
msgid "Keyboard"
msgstr "Tastatur"
@ -1123,11 +1133,11 @@ msgstr "Meny for varslingsområde"
msgid "No Messages"
msgstr "Ingen meldinger"
#: ../js/ui/messageTray.js:1812
#: ../js/ui/messageTray.js:1813
msgid "Message Tray"
msgstr "Meldingstrau"
#: ../js/ui/messageTray.js:2787
#: ../js/ui/messageTray.js:2788
msgid "System Information"
msgstr "Systeminformasjon"
@ -1159,21 +1169,17 @@ msgstr "Oversikt"
msgid "Type to search…"
msgstr "Skriv for å søke …"
#: ../js/ui/panel.js:516
#: ../js/ui/panel.js:518
msgid "Quit"
msgstr "Avslutt"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:568
#: ../js/ui/panel.js:570
msgid "Activities"
msgstr "Aktiviteter"
#: ../js/ui/panel.js:805
msgid "Settings Menu"
msgstr "Meny for innstillinger"
#: ../js/ui/panel.js:901
#: ../js/ui/panel.js:904
msgid "Top Bar"
msgstr "Topp-panel"
@ -1182,7 +1188,7 @@ msgstr "Topp-panel"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:226
#: ../js/ui/popupMenu.js:233
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1211,7 +1217,7 @@ msgstr[1] "%d nye varslinger"
msgid "Lock"
msgstr "Lås"
#: ../js/ui/screenShield.js:703
#: ../js/ui/screenShield.js:704
msgid "GNOME needs to lock the screen"
msgstr "GNOME må låse skjermen"
@ -1222,19 +1228,19 @@ msgstr "GNOME må låse skjermen"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: ../js/ui/screenShield.js:830 ../js/ui/screenShield.js:1296
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
msgid "Unable to lock"
msgstr "Kan ikke låse"
#: ../js/ui/screenShield.js:831 ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:832 ../js/ui/screenShield.js:1298
msgid "Lock was blocked by an application"
msgstr "Låsing ble stoppet av et program"
#: ../js/ui/searchDisplay.js:447
#: ../js/ui/searchDisplay.js:448
msgid "Searching…"
msgstr "Søker …"
#: ../js/ui/searchDisplay.js:491
#: ../js/ui/searchDisplay.js:492
msgid "No results."
msgstr "Ingen resultater."
@ -1308,14 +1314,14 @@ msgstr "Stor tekst"
#. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item.
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:99 ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:163 ../js/ui/status/bluetooth.js:194
#: ../js/ui/status/bluetooth.js:28 ../js/ui/status/bluetooth.js:63
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:164 ../js/ui/status/bluetooth.js:195
msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:30 ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:1034 ../js/ui/status/rfkill.js:46
#: ../js/ui/status/network.js:1040 ../js/ui/status/rfkill.js:46
msgid "Turn Off"
msgstr "Slå av"
@ -1323,80 +1329,80 @@ msgstr "Slå av"
msgid "Bluetooth Settings"
msgstr "Innstillinger for Bluetooth"
#: ../js/ui/status/bluetooth.js:57
#: ../js/ui/status/bluetooth.js:58
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "%d tilkoblet enhet"
msgstr[1] "%d tilkoblede enheter"
#: ../js/ui/status/bluetooth.js:100 ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:101 ../js/ui/status/bluetooth.js:129
#, c-format
msgid "Authorization request from %s"
msgstr "Forespørsel om autorisering fra %s"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Enhet %s vil koble seg sammen med denne datamaskinen"
#: ../js/ui/status/bluetooth.js:108
#: ../js/ui/status/bluetooth.js:109
msgid "Allow"
msgstr "Tillat"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:110
msgid "Deny"
msgstr "Nekt"
#: ../js/ui/status/bluetooth.js:134
#: ../js/ui/status/bluetooth.js:135
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Enhet %s vil ha tilgang til tjenesten «%s»"
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:137
msgid "Always grant access"
msgstr "Alltid gi tilgang"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:138
msgid "Grant this time only"
msgstr "Gi tilgang kun denne ene gangen"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:139
msgid "Reject"
msgstr "Avvis"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:165
#: ../js/ui/status/bluetooth.js:166
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Bekreftelse for tilkobling for %s"
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:173
#, c-format
msgid ""
"Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "Vennligst bekreft om passord «%06d» er lik den som brukes på enheten."
#. Translators: this is the verb, not the noun
#: ../js/ui/status/bluetooth.js:175
#: ../js/ui/status/bluetooth.js:176
msgid "Matches"
msgstr "Stemmer overens"
#: ../js/ui/status/bluetooth.js:176
#: ../js/ui/status/bluetooth.js:177
msgid "Does not match"
msgstr "Stemmer ikke overens"
#: ../js/ui/status/bluetooth.js:195
#: ../js/ui/status/bluetooth.js:196
#, c-format
msgid "Pairing request for %s"
msgstr "Forespørsel om tilkobling for %s"
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:204
msgid "Please enter the PIN mentioned on the device."
msgstr "Vennligst oppgi PIN som oppgitt på enheten."
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/bluetooth.js:221
msgid "OK"
msgstr "OK"
@ -1404,7 +1410,7 @@ msgstr "OK"
msgid "Brightness"
msgstr "Lysstyrke"
#: ../js/ui/status/keyboard.js:404
#: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout"
msgstr "Vis tastaturutforming"
@ -1412,11 +1418,11 @@ msgstr "Vis tastaturutforming"
msgid "<unknown>"
msgstr "<ukjent>"
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1049
#: ../js/ui/status/network.js:203 ../js/ui/status/network.js:1055
msgid "Off"
msgstr "Av"
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:955
#: ../js/ui/status/network.js:276 ../js/ui/status/network.js:961
#: ../js/ui/status/rfkill.js:49
msgid "Network Settings"
msgstr "Innstillinger for nettverk"
@ -1431,12 +1437,12 @@ msgstr "ikke håndtert"
msgid "disconnecting..."
msgstr "kobler fra …"
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1100
#: ../js/ui/status/network.js:372 ../js/ui/status/network.js:1106
msgid "connecting..."
msgstr "kobler til …"
#. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1103
#: ../js/ui/status/network.js:375 ../js/ui/status/network.js:1109
msgid "authentication required"
msgstr "autentisering kreves"
@ -1452,43 +1458,43 @@ msgstr "fastvare mangler"
msgid "unavailable"
msgstr "ikke tilgjengelig"
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1105
#: ../js/ui/status/network.js:389 ../js/ui/status/network.js:1111
msgid "connection failed"
msgstr "tilkobling feilet"
#: ../js/ui/status/network.js:654
#: ../js/ui/status/network.js:660
msgid "Wi-Fi Networks"
msgstr "Wi-Fi nettverk"
#: ../js/ui/status/network.js:656
#: ../js/ui/status/network.js:662
msgid "Select a network"
msgstr "Velg et nettverk"
#: ../js/ui/status/network.js:680
#: ../js/ui/status/network.js:686
msgid "No Networks"
msgstr "Ingen nettverk"
#: ../js/ui/status/network.js:949
#: ../js/ui/status/network.js:955
msgid "Select Network"
msgstr "Velg nettverk"
#: ../js/ui/status/network.js:1034
#: ../js/ui/status/network.js:1040
msgid "Turn On"
msgstr "Slå på"
#: ../js/ui/status/network.js:1167
#: ../js/ui/status/network.js:1173
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1306
#: ../js/ui/status/network.js:1313
msgid "Network Manager"
msgstr "Nettverkshåndtering"
#: ../js/ui/status/network.js:1345
#: ../js/ui/status/network.js:1352
msgid "Connection failed"
msgstr "Tilkobling feilet"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1353
msgid "Activation of network connection failed"
msgstr "Aktivering av nettverkstilkobling feilet"
@ -1574,11 +1580,11 @@ msgstr "Logg inn som en annen bruker"
msgid "Unlock Window"
msgstr "Lås opp vindu"
#: ../js/ui/viewSelector.js:100
#: ../js/ui/viewSelector.js:104
msgid "Applications"
msgstr "Programmer"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:108
msgid "Search"
msgstr "Søk"
@ -1681,3 +1687,6 @@ msgstr "Passordet kan ikke være tomt"
#: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user"
msgstr "Autentiseringsdialogen ble lukket av brukeren"
#~ msgid "Settings Menu"
#~ msgstr "Meny for innstillinger"

1530
po/nl.po

File diff suppressed because it is too large Load Diff

475
po/pa.po

File diff suppressed because it is too large Load Diff

454
po/pl.po

File diff suppressed because it is too large Load Diff

1693
po/pt.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2678
po/ro.po

File diff suppressed because it is too large Load Diff

190
po/ru.po
View File

@ -14,16 +14,16 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2013-09-02 19:28+0000\n"
"PO-Revision-Date: 2013-09-07 23:11+0300\n"
"POT-Creation-Date: 2013-09-23 15:02+0000\n"
"PO-Revision-Date: 2013-09-24 12:18+0300\n"
"Last-Translator: Yuri Myasoedov <omerta13@yandex.ru>\n"
"Language-Team: русский <gnome-cyr@gnome.org>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"X-Generator: Gtranslator 2.91.6\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 1.5.7\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System"
@ -54,6 +54,7 @@ msgid "GNOME Shell"
msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Управление окнами и запуск приложений"
@ -66,6 +67,10 @@ msgstr "Параметры расширений GNOME Shell"
msgid "Configure GNOME Shell Extensions"
msgstr "Настроить расширения GNOME Shell"
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr "GNOME Shell (компоновщик wayland)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "Включить внутренние инструменты из Alt-F2 для разработчиков и тестеров"
@ -215,6 +220,10 @@ msgstr "Рабочие места управляются динамически"
msgid "Workspaces only on primary monitor"
msgstr "Рабочие места только на основном мониторе"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Задержка изменения фокуса в режиме мыши после остановки указателя"
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
@ -229,12 +238,12 @@ msgid "Select an extension to configure using the combobox above."
msgstr "Выберите расширение из выпадающего списка."
#: ../js/gdm/authPrompt.js:145
#: ../js/ui/components/networkAgent.js:132
#: ../js/ui/components/networkAgent.js:136
#: ../js/ui/components/polkitAgent.js:161
#: ../js/ui/endSessionDialog.js:351
#: ../js/ui/extensionDownloader.js:195
#: ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/bluetooth.js:221
#: ../js/ui/status/bluetooth.js:222
#: ../js/ui/status/network.js:686
msgid "Cancel"
msgstr "Отмена"
@ -277,8 +286,8 @@ msgstr "(например, пользователь или %s)"
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:627
#: ../js/ui/components/networkAgent.js:255
#: ../js/ui/components/networkAgent.js:273
#: ../js/ui/components/networkAgent.js:259
#: ../js/ui/components/networkAgent.js:277
msgid "Username: "
msgstr "Имя пользователя: "
@ -299,43 +308,43 @@ msgstr "Ошибка проверки подлинности"
msgid "(or swipe finger)"
msgstr "(или проведите пальцем по считывающему устройству)"
#: ../js/misc/util.js:97
#: ../js/misc/util.js:98
msgid "Command not found"
msgstr "Команда не найдена"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:130
#: ../js/misc/util.js:131
msgid "Could not parse command:"
msgstr "Не удалось разобрать команду:"
#: ../js/misc/util.js:138
#: ../js/misc/util.js:139
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Не удалось выполнить «%s»:"
#: ../js/ui/appDisplay.js:578
#: ../js/ui/appDisplay.js:596
msgid "Frequently used applications will appear here"
msgstr "Здесь появляются часто используемые приложения"
#: ../js/ui/appDisplay.js:694
#: ../js/ui/appDisplay.js:712
msgid "Frequent"
msgstr "Популярные"
#: ../js/ui/appDisplay.js:701
#: ../js/ui/appDisplay.js:719
msgid "All"
msgstr "Все"
#: ../js/ui/appDisplay.js:1488
#: ../js/ui/appDisplay.js:1514
msgid "New Window"
msgstr "Новое окно"
#: ../js/ui/appDisplay.js:1491
#: ../js/ui/appDisplay.js:1517
#: ../js/ui/dash.js:284
msgid "Remove from Favorites"
msgstr "Удалить из избранного"
#: ../js/ui/appDisplay.js:1492
#: ../js/ui/appDisplay.js:1518
msgid "Add to Favorites"
msgstr "Добавить в избранное"
@ -350,6 +359,7 @@ msgid "%s has been removed from your favorites."
msgstr "Приложение %s удалено из избранного."
#: ../js/ui/backgroundMenu.js:19
#: ../js/ui/panel.js:807
#: ../js/ui/status/system.js:325
msgid "Settings"
msgstr "Параметры"
@ -536,16 +546,16 @@ msgstr "Открыть с помощью %s"
msgid "Eject"
msgstr "Извлечь"
#: ../js/ui/components/keyring.js:88
#: ../js/ui/components/keyring.js:91
#: ../js/ui/components/polkitAgent.js:280
msgid "Password:"
msgstr "Пароль:"
#: ../js/ui/components/keyring.js:107
#: ../js/ui/components/keyring.js:110
msgid "Type again:"
msgstr "Введите ещё раз:"
#: ../js/ui/components/networkAgent.js:127
#: ../js/ui/components/networkAgent.js:131
#: ../js/ui/status/network.js:112
#: ../js/ui/status/network.js:275
#: ../js/ui/status/network.js:689
@ -553,69 +563,69 @@ msgid "Connect"
msgstr "Соединиться"
#. Cisco LEAP
#: ../js/ui/components/networkAgent.js:218
#: ../js/ui/components/networkAgent.js:230
#: ../js/ui/components/networkAgent.js:257
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:287
#: ../js/ui/components/networkAgent.js:222
#: ../js/ui/components/networkAgent.js:234
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:281
#: ../js/ui/components/networkAgent.js:291
msgid "Password: "
msgstr "Пароль: "
#. static WEP
#: ../js/ui/components/networkAgent.js:223
#: ../js/ui/components/networkAgent.js:227
msgid "Key: "
msgstr "Ключ: "
#: ../js/ui/components/networkAgent.js:261
#: ../js/ui/components/networkAgent.js:265
msgid "Identity: "
msgstr "Идентичность: "
#: ../js/ui/components/networkAgent.js:263
#: ../js/ui/components/networkAgent.js:267
msgid "Private key password: "
msgstr "Пароль личного ключа: "
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:279
msgid "Service: "
msgstr "Служба: "
#: ../js/ui/components/networkAgent.js:304
#: ../js/ui/components/networkAgent.js:308
msgid "Authentication required by wireless network"
msgstr "Беспроводная сеть требует подтверждения подлинности"
#: ../js/ui/components/networkAgent.js:305
#: ../js/ui/components/networkAgent.js:309
#, c-format
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
msgstr "Для доступа к беспроводной сети «%s» требуются пароли или ключи шифрования."
#: ../js/ui/components/networkAgent.js:309
#: ../js/ui/components/networkAgent.js:313
msgid "Wired 802.1X authentication"
msgstr "Аутентификация Wired 802.1X"
#: ../js/ui/components/networkAgent.js:311
#: ../js/ui/components/networkAgent.js:315
msgid "Network name: "
msgstr "Название сети: "
#: ../js/ui/components/networkAgent.js:316
#: ../js/ui/components/networkAgent.js:320
msgid "DSL authentication"
msgstr "Аутентификация DSL"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:327
msgid "PIN code required"
msgstr "Требуется PIN-код"
#: ../js/ui/components/networkAgent.js:324
#: ../js/ui/components/networkAgent.js:328
msgid "PIN code is needed for the mobile broadband device"
msgstr "Для широкополосного мобильного устройства требуется PIN-код "
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:329
msgid "PIN: "
msgstr "PIN-код: "
#: ../js/ui/components/networkAgent.js:331
#: ../js/ui/components/networkAgent.js:335
msgid "Mobile broadband network password"
msgstr "Пароль для мобильной широкополосной сети"
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:336
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "Для подключения к «%s» требуется пароль."
@ -873,7 +883,7 @@ msgid "Unknown reason"
msgstr "Неизвестная причина"
#: ../js/ui/ctrlAltTab.js:29
#: ../js/ui/viewSelector.js:96
#: ../js/ui/viewSelector.js:100
msgid "Windows"
msgstr "Окна"
@ -977,15 +987,12 @@ msgstr[1] "Система будет автоматически перезапу
msgstr[2] "Система будет автоматически перезапущена через %d секунд."
#: ../js/ui/endSessionDialog.js:112
#| msgid "Install Updates & Restart"
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "Перезапустить и установить обновления"
#: ../js/ui/endSessionDialog.js:114
#, c-format
#| msgid "The system will restart automatically in %d second."
#| msgid_plural "The system will restart automatically in %d seconds."
msgid "The system will automatically restart and install updates in %d second."
msgid_plural "The system will automatically restart and install updates in %d seconds."
msgstr[0] "Система автоматически перезапустится и установит обновления через %d секунду."
@ -1027,7 +1034,7 @@ msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Загрузить и установить расширение «%s» с extensions.gnome.org?"
#: ../js/ui/keyboard.js:619
#: ../js/ui/status/keyboard.js:334
#: ../js/ui/status/keyboard.js:333
msgid "Keyboard"
msgstr "Клавиатура"
@ -1105,11 +1112,11 @@ msgstr "Меню панели"
msgid "No Messages"
msgstr "Нет сообщений"
#: ../js/ui/messageTray.js:1812
#: ../js/ui/messageTray.js:1813
msgid "Message Tray"
msgstr "Панель сообщений"
#: ../js/ui/messageTray.js:2786
#: ../js/ui/messageTray.js:2788
msgid "System Information"
msgstr "Системная информация"
@ -1144,22 +1151,17 @@ msgstr "Обзор"
msgid "Type to search…"
msgstr "Найти…"
#: ../js/ui/panel.js:516
#: ../js/ui/panel.js:518
msgid "Quit"
msgstr "Закрыть"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:568
#: ../js/ui/panel.js:570
msgid "Activities"
msgstr "Обзор"
#: ../js/ui/panel.js:805
#| msgid "Settings"
msgid "Settings Menu"
msgstr "Меню параметров"
#: ../js/ui/panel.js:892
#: ../js/ui/panel.js:903
msgid "Top Bar"
msgstr "Верхняя панель"
@ -1168,7 +1170,7 @@ msgstr "Верхняя панель"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:226
#: ../js/ui/popupMenu.js:233
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1199,7 +1201,7 @@ msgstr[2] "%d новых уведомлений"
msgid "Lock"
msgstr "Заблокировать"
#: ../js/ui/screenShield.js:703
#: ../js/ui/screenShield.js:704
msgid "GNOME needs to lock the screen"
msgstr "GNOME необходимо заблокировать экран"
@ -1210,13 +1212,13 @@ msgstr "GNOME необходимо заблокировать экран"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: ../js/ui/screenShield.js:830
#: ../js/ui/screenShield.js:1296
#: ../js/ui/screenShield.js:831
#: ../js/ui/screenShield.js:1297
msgid "Unable to lock"
msgstr "Не удалось заблокировать"
#: ../js/ui/screenShield.js:831
#: ../js/ui/screenShield.js:1297
#: ../js/ui/screenShield.js:832
#: ../js/ui/screenShield.js:1298
msgid "Lock was blocked by an application"
msgstr "Блокировке помешало приложение"
@ -1299,11 +1301,11 @@ msgstr "Крупный текст"
#. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item.
#: ../js/ui/status/bluetooth.js:28
#: ../js/ui/status/bluetooth.js:62
#: ../js/ui/status/bluetooth.js:99
#: ../js/ui/status/bluetooth.js:127
#: ../js/ui/status/bluetooth.js:163
#: ../js/ui/status/bluetooth.js:194
#: ../js/ui/status/bluetooth.js:63
#: ../js/ui/status/bluetooth.js:100
#: ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:164
#: ../js/ui/status/bluetooth.js:195
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1318,7 +1320,7 @@ msgstr "Выключить"
msgid "Bluetooth Settings"
msgstr "Настроить Bluetooth"
#: ../js/ui/status/bluetooth.js:57
#: ../js/ui/status/bluetooth.js:58
#, c-format
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
@ -1326,74 +1328,74 @@ msgstr[0] "Подключено %d устройство"
msgstr[1] "Подключено %d устройства"
msgstr[2] "Подключено %d устройств"
#: ../js/ui/status/bluetooth.js:100
#: ../js/ui/status/bluetooth.js:128
#: ../js/ui/status/bluetooth.js:101
#: ../js/ui/status/bluetooth.js:129
#, c-format
msgid "Authorization request from %s"
msgstr "Запрос авторизации от %s"
#: ../js/ui/status/bluetooth.js:106
#: ../js/ui/status/bluetooth.js:171
#: ../js/ui/status/bluetooth.js:202
#: ../js/ui/status/bluetooth.js:107
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:203
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Устройство %s пытается выполнить сопряжение с этим компьютером"
#: ../js/ui/status/bluetooth.js:108
#: ../js/ui/status/bluetooth.js:109
msgid "Allow"
msgstr "Разрешить"
#: ../js/ui/status/bluetooth.js:109
#: ../js/ui/status/bluetooth.js:110
msgid "Deny"
msgstr "Отклонить"
#: ../js/ui/status/bluetooth.js:134
#: ../js/ui/status/bluetooth.js:135
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Устройство %s пытается получить доступ к службе «%s»"
#: ../js/ui/status/bluetooth.js:136
#: ../js/ui/status/bluetooth.js:137
msgid "Always grant access"
msgstr "Всегда предоставлять доступ"
#: ../js/ui/status/bluetooth.js:137
#: ../js/ui/status/bluetooth.js:138
msgid "Grant this time only"
msgstr "Предоставить единовременно"
#: ../js/ui/status/bluetooth.js:138
#: ../js/ui/status/bluetooth.js:139
msgid "Reject"
msgstr "Отклонить"
#. Translators: argument is the device short name
#: ../js/ui/status/bluetooth.js:165
#: ../js/ui/status/bluetooth.js:166
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Подтверждение на сопряжение с %s"
#: ../js/ui/status/bluetooth.js:172
#: ../js/ui/status/bluetooth.js:173
#, c-format
msgid "Please confirm whether the Passkey '%06d' matches the one on the device."
msgstr "Подтвердите, совпадает ли ключ доступа «%06d» с кодом на устройстве."
#. Translators: this is the verb, not the noun
#: ../js/ui/status/bluetooth.js:175
#: ../js/ui/status/bluetooth.js:176
msgid "Matches"
msgstr "Совпадает"
#: ../js/ui/status/bluetooth.js:176
#: ../js/ui/status/bluetooth.js:177
msgid "Does not match"
msgstr "Не совпадает"
#: ../js/ui/status/bluetooth.js:195
#: ../js/ui/status/bluetooth.js:196
#, c-format
msgid "Pairing request for %s"
msgstr "Запрос на сопряжение c %s"
#: ../js/ui/status/bluetooth.js:203
#: ../js/ui/status/bluetooth.js:204
msgid "Please enter the PIN mentioned on the device."
msgstr "Введите PIN-код указанный на устройстве."
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/bluetooth.js:221
msgid "OK"
msgstr "OK"
@ -1401,7 +1403,7 @@ msgstr "OK"
msgid "Brightness"
msgstr "Яркость"
#: ../js/ui/status/keyboard.js:404
#: ../js/ui/status/keyboard.js:403
msgid "Show Keyboard Layout"
msgstr "Показать раскладку клавиатуры"
@ -1467,7 +1469,6 @@ msgid "Select a network"
msgstr "Выберите сеть"
#: ../js/ui/status/network.js:680
#| msgid "Wi-Fi Networks"
msgid "No Networks"
msgstr "Сети отсутствуют"
@ -1483,15 +1484,15 @@ msgstr "Включить"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1306
#: ../js/ui/status/network.js:1307
msgid "Network Manager"
msgstr "Диспетчер сети"
#: ../js/ui/status/network.js:1345
#: ../js/ui/status/network.js:1346
msgid "Connection failed"
msgstr "Сбой подключения"
#: ../js/ui/status/network.js:1346
#: ../js/ui/status/network.js:1347
msgid "Activation of network connection failed"
msgstr "Не удалось активировать сетевое подключение"
@ -1518,14 +1519,12 @@ msgstr "Выполняется подсчёт…"
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
#: ../js/ui/status/power.js:77
#, c-format
#| msgid "%d\\u2236%d Remaining (%d%%)"
msgid "%d\\u2236%02d Remaining (%d%%)"
msgstr "Осталось %d\\u2236%02d (%d%%)"
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
#: ../js/ui/status/power.js:82
#, c-format
#| msgid "%d\\u2236%d Until Full (%d%%)"
msgid "%d\\u2236%02d Until Full (%d%%)"
msgstr "До полного заряда %d\\u2236%02d (%d%%)"
@ -1537,7 +1536,6 @@ msgid "Airplane Mode"
msgstr "Режим перелёта"
#: ../js/ui/status/rfkill.js:45
#| msgid "Open"
msgid "On"
msgstr "Включено"
@ -1581,11 +1579,11 @@ msgstr "Войти от имени другого пользователя"
msgid "Unlock Window"
msgstr "Разблокировать окно"
#: ../js/ui/viewSelector.js:100
#: ../js/ui/viewSelector.js:104
msgid "Applications"
msgstr "Приложения"
#: ../js/ui/viewSelector.js:104
#: ../js/ui/viewSelector.js:108
msgid "Search"
msgstr "Поиск"
@ -1616,7 +1614,6 @@ msgstr "Хотите сохранить эти параметры дисплея
#. to avoid ellipsizing the labels.
#.
#: ../js/ui/windowManager.js:75
#| msgid "Power Settings"
msgid "Revert Settings"
msgstr "Вернуть параметры"
@ -1693,6 +1690,9 @@ msgstr "Пароль не может быть пустым"
msgid "Authentication dialog was dismissed by the user"
msgstr "Аутентификация отклонена пользователем"
#~ msgid "Settings Menu"
#~ msgstr "Меню параметров"
#~ msgid "Screenshots"
#~ msgstr "Снимки экрана"

550
po/sk.po

File diff suppressed because it is too large Load Diff

432
po/sl.po

File diff suppressed because it is too large Load Diff

435
po/tg.po

File diff suppressed because it is too large Load Diff

1477
po/tr.po

File diff suppressed because it is too large Load Diff

415
po/uk.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,4 @@
st_cflags = \
-DCLUTTER_ENABLE_EXPERIMENTAL_API \
-DCOGL_ENABLE_EXPERIMENTAL_API \
-DCOGL_ENABLE_EXPERIMENTAL_2_0_API \
-I$(top_srcdir)/src \
-DPREFIX=\""$(prefix)"\" \
-DLIBDIR=\""$(libdir)"\" \

View File

@ -68,9 +68,6 @@ include Makefile-calendar-server.am
include Makefile-hotplug-sniffer.am
gnome_shell_cflags = \
-DCLUTTER_ENABLE_EXPERIMENTAL_API \
-DCOGL_ENABLE_EXPERIMENTAL_API \
-DCOGL_ENABLE_EXPERIMENTAL_2_0_API \
$(GNOME_SHELL_CFLAGS) \
-I$(srcdir)/tray \
-DVERSION=\"$(VERSION)\" \

View File

@ -28,11 +28,14 @@
#include <stdlib.h>
#include <string.h>
#define CLUTTER_ENABLE_EXPERIMENTAL_API
#define COGL_ENABLE_EXPERIMENTAL_API
#include <clutter/clutter.h>
#include <clutter/x11/clutter-x11.h>
#include <gjs/gjs.h>
#include <meta/display.h>
#include <meta/meta-plugin.h>
#include <meta/util.h>
#include "shell-global-private.h"
#include "shell-perf-log.h"
@ -341,8 +344,13 @@ gnome_shell_plugin_xevent_filter (MetaPlugin *plugin,
}
#endif
#ifdef HAVE_WAYLAND
if (meta_is_wayland_compositor ())
return FALSE;
#endif
/*
* Pass the event to shell-global
* Pass the event to shell-global for XDND
*/
if (_shell_global_check_xdnd_event (shell_plugin->global, xev))
return TRUE;

View File

@ -12,9 +12,9 @@ G_BEGIN_DECLS
ShellApp* _shell_app_new_for_window (MetaWindow *window);
ShellApp* _shell_app_new (GMenuTreeEntry *entry);
ShellApp* _shell_app_new (GDesktopAppInfo *info);
void _shell_app_set_entry (ShellApp *app, GMenuTreeEntry *entry);
void _shell_app_set_app_info (ShellApp *app, GDesktopAppInfo *info);
void _shell_app_handle_startup_sequence (ShellApp *app, SnStartupSequence *sequence);

View File

@ -38,18 +38,12 @@ enum {
static guint signals[LAST_SIGNAL] = { 0 };
struct _ShellAppSystemPrivate {
GMenuTree *apps_tree;
GHashTable *running_apps;
GHashTable *visible_id_to_app;
GHashTable *id_to_app;
GHashTable *startup_wm_class_to_app;
GSList *known_vendor_prefixes;
GHashTable *startup_wm_class_to_id;
};
static void shell_app_system_finalize (GObject *object);
static void on_apps_tree_changed_cb (GMenuTree *tree, gpointer user_data);
G_DEFINE_TYPE(ShellAppSystem, shell_app_system, G_TYPE_OBJECT);
@ -77,10 +71,45 @@ static void shell_app_system_class_init(ShellAppSystemClass *klass)
g_type_class_add_private (gobject_class, sizeof (ShellAppSystemPrivate));
}
static void
scan_startup_wm_class_to_id (ShellAppSystem *self)
{
ShellAppSystemPrivate *priv = self->priv;
GList *apps, *l;
g_hash_table_remove_all (priv->startup_wm_class_to_id);
apps = g_app_info_get_all ();
for (l = apps; l != NULL; l = l->next)
{
GAppInfo *info = l->data;
const char *startup_wm_class, *id;
id = g_app_info_get_id (info);
startup_wm_class = g_desktop_app_info_get_startup_wm_class (G_DESKTOP_APP_INFO (info));
if (startup_wm_class != NULL)
g_hash_table_insert (priv->startup_wm_class_to_id, (char *) startup_wm_class, (char *) id);
}
g_list_free_full (apps, g_object_unref);
}
static void
installed_changed (GAppInfoMonitor *monitor,
gpointer user_data)
{
ShellAppSystem *self = user_data;
scan_startup_wm_class_to_id (self);
g_signal_emit (self, signals[INSTALLED_CHANGED], 0, NULL);
}
static void
shell_app_system_init (ShellAppSystem *self)
{
ShellAppSystemPrivate *priv;
GAppInfoMonitor *monitor;
self->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
SHELL_TYPE_APP_SYSTEM,
@ -91,19 +120,11 @@ shell_app_system_init (ShellAppSystem *self)
NULL,
(GDestroyNotify)g_object_unref);
/* All the objects in this hash table are owned by id_to_app */
priv->visible_id_to_app = g_hash_table_new (g_str_hash, g_str_equal);
priv->startup_wm_class_to_id = g_hash_table_new (g_str_hash, g_str_equal);
priv->startup_wm_class_to_app = g_hash_table_new_full (g_str_hash, g_str_equal,
NULL,
(GDestroyNotify)g_object_unref);
/* We want to track NoDisplay apps, so we add INCLUDE_NODISPLAY. We'll
* filter NoDisplay apps out when showing them to the user. */
priv->apps_tree = gmenu_tree_new ("applications.menu", GMENU_TREE_FLAGS_INCLUDE_NODISPLAY);
g_signal_connect (priv->apps_tree, "changed", G_CALLBACK (on_apps_tree_changed_cb), self);
on_apps_tree_changed_cb (priv->apps_tree, self);
monitor = g_app_info_monitor_get ();
g_signal_connect (monitor, "changed", G_CALLBACK (installed_changed), self);
installed_changed (monitor, self);
}
static void
@ -112,313 +133,13 @@ shell_app_system_finalize (GObject *object)
ShellAppSystem *self = SHELL_APP_SYSTEM (object);
ShellAppSystemPrivate *priv = self->priv;
g_object_unref (priv->apps_tree);
g_hash_table_destroy (priv->running_apps);
g_hash_table_destroy (priv->id_to_app);
g_hash_table_destroy (priv->visible_id_to_app);
g_hash_table_destroy (priv->startup_wm_class_to_app);
g_slist_free_full (priv->known_vendor_prefixes, g_free);
priv->known_vendor_prefixes = NULL;
g_hash_table_destroy (priv->startup_wm_class_to_id);
G_OBJECT_CLASS (shell_app_system_parent_class)->finalize (object);
}
static char *
get_prefix_for_entry (GMenuTreeEntry *entry)
{
char *prefix = NULL, *file_prefix = NULL;
const char *id;
GFile *file;
char *name;
int i = 0;
id = gmenu_tree_entry_get_desktop_file_id (entry);
file = g_file_new_for_path (gmenu_tree_entry_get_desktop_file_path (entry));
name = g_file_get_basename (file);
if (!name)
{
g_object_unref (file);
return NULL;
}
for (i = 0; vendor_prefixes[i]; i++)
{
if (g_str_has_prefix (name, vendor_prefixes[i]))
{
file_prefix = g_strdup (vendor_prefixes[i]);
break;
}
}
while (strcmp (name, id) != 0)
{
char *t;
char *pname;
GFile *parent = g_file_get_parent (file);
if (!parent)
{
g_warn_if_reached ();
break;
}
pname = g_file_get_basename (parent);
if (!pname)
{
g_object_unref (parent);
break;
}
if (!g_strstr_len (id, -1, pname))
{
/* handle <LegacyDir prefix="..."> */
char *t;
size_t name_len = strlen (name);
size_t id_len = strlen (id);
char *t_id = g_strdup (id);
t_id[id_len - name_len] = '\0';
t = g_strdup(t_id);
g_free (prefix);
g_free (t_id);
g_free (name);
name = g_strdup (id);
prefix = t;
g_object_unref (file);
file = parent;
g_free (pname);
g_free (file_prefix);
file_prefix = NULL;
break;
}
t = g_strconcat (pname, "-", name, NULL);
g_free (name);
name = t;
t = g_strconcat (pname, "-", prefix, NULL);
g_free (prefix);
prefix = t;
g_object_unref (file);
file = parent;
g_free (pname);
}
if (file)
g_object_unref (file);
if (strcmp (name, id) == 0)
{
g_free (name);
if (file_prefix && !prefix)
return file_prefix;
if (file_prefix)
{
char *t = g_strconcat (prefix, "-", file_prefix, NULL);
g_free (prefix);
g_free (file_prefix);
prefix = t;
}
return prefix;
}
g_free (name);
g_free (prefix);
g_free (file_prefix);
g_return_val_if_reached (NULL);
}
static void
get_flattened_entries_recurse (GMenuTreeDirectory *dir,
GHashTable *entry_set)
{
GMenuTreeIter *iter = gmenu_tree_directory_iter (dir);
GMenuTreeItemType next_type;
while ((next_type = gmenu_tree_iter_next (iter)) != GMENU_TREE_ITEM_INVALID)
{
gpointer item = NULL;
switch (next_type)
{
case GMENU_TREE_ITEM_ENTRY:
{
GMenuTreeEntry *entry;
item = entry = gmenu_tree_iter_get_entry (iter);
/* Key is owned by entry */
g_hash_table_replace (entry_set,
(char*)gmenu_tree_entry_get_desktop_file_id (entry),
gmenu_tree_item_ref (entry));
}
break;
case GMENU_TREE_ITEM_DIRECTORY:
{
item = gmenu_tree_iter_get_directory (iter);
get_flattened_entries_recurse ((GMenuTreeDirectory*)item, entry_set);
}
break;
default:
break;
}
if (item != NULL)
gmenu_tree_item_unref (item);
}
gmenu_tree_iter_unref (iter);
}
static GHashTable *
get_flattened_entries_from_tree (GMenuTree *tree)
{
GHashTable *table;
GMenuTreeDirectory *root;
table = g_hash_table_new_full (g_str_hash, g_str_equal,
(GDestroyNotify) NULL,
(GDestroyNotify) gmenu_tree_item_unref);
root = gmenu_tree_get_root_directory (tree);
if (root != NULL)
get_flattened_entries_recurse (root, table);
gmenu_tree_item_unref (root);
return table;
}
static void
on_apps_tree_changed_cb (GMenuTree *tree,
gpointer user_data)
{
ShellAppSystem *self = SHELL_APP_SYSTEM (user_data);
GError *error = NULL;
GHashTable *new_apps;
GHashTableIter iter;
gpointer key, value;
g_assert (tree == self->priv->apps_tree);
g_hash_table_remove_all (self->priv->visible_id_to_app);
g_slist_free_full (self->priv->known_vendor_prefixes, g_free);
self->priv->known_vendor_prefixes = NULL;
if (!gmenu_tree_load_sync (self->priv->apps_tree, &error))
{
if (error)
{
g_warning ("Failed to load apps: %s", error->message);
g_error_free (error);
}
else
{
g_warning ("Failed to load apps");
}
return;
}
new_apps = get_flattened_entries_from_tree (self->priv->apps_tree);
g_hash_table_iter_init (&iter, new_apps);
while (g_hash_table_iter_next (&iter, &key, &value))
{
const char *id = key;
GMenuTreeEntry *entry = value;
GMenuTreeEntry *old_entry;
char *prefix;
ShellApp *app;
GDesktopAppInfo *info;
const char *startup_wm_class;
prefix = get_prefix_for_entry (entry);
if (prefix != NULL
&& !g_slist_find_custom (self->priv->known_vendor_prefixes, prefix,
(GCompareFunc)g_strcmp0))
self->priv->known_vendor_prefixes = g_slist_append (self->priv->known_vendor_prefixes,
prefix);
else
g_free (prefix);
app = g_hash_table_lookup (self->priv->id_to_app, id);
if (app != NULL)
{
/* We hold a reference to the original entry temporarily,
* because otherwise the hash table would be referencing
* potentially free'd memory until we replace it below with
* the new data.
*/
old_entry = shell_app_get_tree_entry (app);
gmenu_tree_item_ref (old_entry);
_shell_app_set_entry (app, entry);
g_object_ref (app); /* Extra ref, removed in _replace below */
}
else
{
old_entry = NULL;
app = _shell_app_new (entry);
}
/* Note that "id" is owned by app->entry. Since we're always
* setting a new entry, even if the app already exists in the
* hash table we need to replace the key so that the new id
* string is pointed to.
*/
g_hash_table_replace (self->priv->id_to_app, (char*)id, app);
if (!gmenu_tree_entry_get_is_nodisplay_recurse (entry))
g_hash_table_replace (self->priv->visible_id_to_app, (char*)id, app);
if (old_entry)
{
GDesktopAppInfo *old_info;
const gchar *old_startup_wm_class;
old_info = gmenu_tree_entry_get_app_info (old_entry);
old_startup_wm_class = g_desktop_app_info_get_startup_wm_class (old_info);
if (old_startup_wm_class)
g_hash_table_remove (self->priv->startup_wm_class_to_app, old_startup_wm_class);
}
info = gmenu_tree_entry_get_app_info (entry);
startup_wm_class = g_desktop_app_info_get_startup_wm_class (info);
if (startup_wm_class)
g_hash_table_replace (self->priv->startup_wm_class_to_app,
(char*)startup_wm_class, g_object_ref (app));
if (old_entry)
gmenu_tree_item_unref (old_entry);
}
/* Now iterate over the apps again; we need to unreference any apps
* which have been removed. The JS code may still be holding a
* reference; that's fine.
*/
g_hash_table_iter_init (&iter, self->priv->id_to_app);
while (g_hash_table_iter_next (&iter, &key, &value))
{
const char *id = key;
if (!g_hash_table_lookup (new_apps, id))
g_hash_table_iter_remove (&iter);
}
g_hash_table_destroy (new_apps);
g_signal_emit (self, signals[INSTALLED_CHANGED], 0);
}
/**
* shell_app_system_get_tree:
*
* Return Value: (transfer none): The #GMenuTree for apps
*/
GMenuTree *
shell_app_system_get_tree (ShellAppSystem *self)
{
return self->priv->apps_tree;
}
/**
* shell_app_system_get_default:
*
@ -446,61 +167,20 @@ ShellApp *
shell_app_system_lookup_app (ShellAppSystem *self,
const char *id)
{
return g_hash_table_lookup (self->priv->id_to_app, id);
}
/**
* shell_app_system_lookup_app_by_tree_entry:
* @system: a #ShellAppSystem
* @entry: a #GMenuTreeEntry
*
* Find a #ShellApp corresponding to a #GMenuTreeEntry.
*
* Return value: (transfer none): The #ShellApp for @entry, or %NULL if none
*/
ShellApp *
shell_app_system_lookup_app_by_tree_entry (ShellAppSystem *self,
GMenuTreeEntry *entry)
{
/* If we looked up directly in ->entry_to_app, we'd lose the
* override of running apps. Thus, indirect through the id.
*/
return shell_app_system_lookup_app (self, gmenu_tree_entry_get_desktop_file_id (entry));
}
/**
* shell_app_system_lookup_app_for_path:
* @system: a #ShellAppSystem
* @desktop_path: (type utf8): UTF-8 encoded absolute file name
*
* Find or create a #ShellApp corresponding to a given absolute file
* name which must be in the standard paths (XDG_DATA_DIRS). For
* files outside the datadirs, this function returns %NULL.
*
* Return value: (transfer none): The #ShellApp for id, or %NULL if none
*/
ShellApp *
shell_app_system_lookup_app_for_path (ShellAppSystem *system,
const char *desktop_path)
{
const char *basename;
const char *app_path;
ShellAppSystemPrivate *priv = self->priv;
ShellApp *app;
GDesktopAppInfo *info;
basename = g_strrstr (desktop_path, "/");
if (basename)
basename += 1;
else
basename = desktop_path;
app = g_hash_table_lookup (priv->id_to_app, id);
if (app)
return app;
app = shell_app_system_lookup_app (system, basename);
if (!app)
return NULL;
app_path = g_desktop_app_info_get_filename (shell_app_get_app_info (app));
if (strcmp (desktop_path, app_path) != 0)
info = g_desktop_app_info_new (id);
if (!info)
return NULL;
app = _shell_app_new (info);
g_hash_table_insert (priv->id_to_app, (char *) id, app);
return app;
}
@ -520,15 +200,15 @@ shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
const char *name)
{
ShellApp *result;
GSList *prefix;
const char *const *prefix;
result = shell_app_system_lookup_app (system, name);
if (result != NULL)
return result;
for (prefix = system->priv->known_vendor_prefixes; prefix; prefix = g_slist_next (prefix))
for (prefix = vendor_prefixes; *prefix != NULL; prefix++)
{
char *tmpid = g_strconcat ((char*)prefix->data, name, NULL);
char *tmpid = g_strconcat (*prefix, name, NULL);
result = shell_app_system_lookup_app (system, tmpid);
g_free (tmpid);
if (result != NULL)
@ -603,10 +283,16 @@ ShellApp *
shell_app_system_lookup_startup_wmclass (ShellAppSystem *system,
const char *wmclass)
{
const char *id;
if (wmclass == NULL)
return NULL;
return g_hash_table_lookup (system->priv->startup_wm_class_to_app, wmclass);
id = g_hash_table_lookup (system->priv->startup_wm_class_to_id, wmclass);
if (id == NULL)
return NULL;
return shell_app_system_lookup_app (system, id);
}
void
@ -618,6 +304,7 @@ _shell_app_system_notify_app_state_changed (ShellAppSystem *self,
switch (state)
{
case SHELL_APP_STATE_RUNNING:
case SHELL_APP_STATE_BUSY:
g_hash_table_insert (self->priv->running_apps, g_object_ref (app), NULL);
break;
case SHELL_APP_STATE_STARTING:
@ -660,136 +347,3 @@ shell_app_system_get_running (ShellAppSystem *self)
return ret;
}
static gint
compare_apps_by_usage (gconstpointer a,
gconstpointer b,
gpointer data)
{
ShellAppUsage *usage = shell_app_usage_get_default ();
ShellApp *app_a = (ShellApp*)a;
ShellApp *app_b = (ShellApp*)b;
return shell_app_usage_compare (usage, "", app_a, app_b);
}
static GSList *
sort_and_concat_results (ShellAppSystem *system,
GSList *prefix_matches,
GSList *substring_matches)
{
prefix_matches = g_slist_sort_with_data (prefix_matches,
compare_apps_by_usage,
system);
substring_matches = g_slist_sort_with_data (substring_matches,
compare_apps_by_usage,
system);
return g_slist_concat (prefix_matches, substring_matches);
}
/**
* normalize_terms:
* @terms: (element-type utf8): Input search terms
*
* Returns: (element-type utf8) (transfer full): Unicode-normalized and lowercased terms
*/
static GSList *
normalize_terms (GSList *terms)
{
GSList *normalized_terms = NULL;
GSList *iter;
for (iter = terms; iter; iter = iter->next)
{
const char *term = iter->data;
normalized_terms = g_slist_prepend (normalized_terms,
shell_util_normalize_casefold_and_unaccent (term));
}
return normalized_terms;
}
static GSList *
search_tree (ShellAppSystem *self,
GSList *terms,
GHashTable *apps)
{
GSList *prefix_results = NULL;
GSList *substring_results = NULL;
GSList *normalized_terms;
GHashTableIter iter;
gpointer key, value;
normalized_terms = normalize_terms (terms);
g_hash_table_iter_init (&iter, apps);
while (g_hash_table_iter_next (&iter, &key, &value))
{
ShellApp *app = value;
_shell_app_do_match (app, normalized_terms,
&prefix_results,
&substring_results);
}
g_slist_free_full (normalized_terms, g_free);
return sort_and_concat_results (self, prefix_results, substring_results);
}
/**
* shell_app_system_initial_search:
* @system: A #ShellAppSystem
* @terms: (element-type utf8): List of terms, logical AND
*
* Search through applications for the given search terms.
*
* Returns: (transfer container) (element-type ShellApp): List of applications
*/
GSList *
shell_app_system_initial_search (ShellAppSystem *self,
GSList *terms)
{
return search_tree (self, terms, self->priv->visible_id_to_app);
}
/**
* shell_app_system_subsearch:
* @system: A #ShellAppSystem
* @previous_results: (element-type ShellApp): List of previous results
* @terms: (element-type utf8): List of terms, logical AND
*
* Search through a previous result set; for more information, see
* js/ui/search.js. Note the value of @prefs must be
* the same as passed to shell_app_system_initial_search(). Note that returned
* strings are only valid until a return to the main loop.
*
* Returns: (transfer container) (element-type ShellApp): List of application identifiers
*/
GSList *
shell_app_system_subsearch (ShellAppSystem *system,
GSList *previous_results,
GSList *terms)
{
GSList *iter;
GSList *prefix_results = NULL;
GSList *substring_results = NULL;
GSList *normalized_terms = normalize_terms (terms);
previous_results = g_slist_reverse (previous_results);
for (iter = previous_results; iter; iter = iter->next)
{
ShellApp *app = iter->data;
_shell_app_do_match (app, normalized_terms,
&prefix_results,
&substring_results);
}
g_slist_free_full (normalized_terms, g_free);
/* Note that a shorter term might have matched as a prefix, but
when extended only as a substring, so we have to redo the
sort rather than reusing the existing ordering */
return sort_and_concat_results (system, prefix_results, substring_results);
}

View File

@ -5,8 +5,6 @@
#include <gio/gio.h>
#include <clutter/clutter.h>
#include <meta/window.h>
#define GMENU_I_KNOW_THIS_IS_UNSTABLE
#include <gmenu-tree.h>
#include "shell-app.h"
@ -39,14 +37,8 @@ struct _ShellAppSystemClass
GType shell_app_system_get_type (void) G_GNUC_CONST;
ShellAppSystem *shell_app_system_get_default (void);
GMenuTree *shell_app_system_get_tree (ShellAppSystem *system);
ShellApp *shell_app_system_lookup_app (ShellAppSystem *system,
const char *id);
ShellApp *shell_app_system_lookup_app_by_tree_entry (ShellAppSystem *system,
GMenuTreeEntry *entry);
ShellApp *shell_app_system_lookup_app_for_path (ShellAppSystem *system,
const char *desktop_path);
ShellApp *shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
const char *id);
@ -57,10 +49,4 @@ ShellApp *shell_app_system_lookup_desktop_wmclass (ShellAppSystem *s
GSList *shell_app_system_get_running (ShellAppSystem *self);
GSList *shell_app_system_initial_search (ShellAppSystem *system,
GSList *terms);
GSList *shell_app_system_subsearch (ShellAppSystem *system,
GSList *previous_results,
GSList *terms);
#endif /* __SHELL_APP_SYSTEM_H__ */

View File

@ -527,19 +527,19 @@ shell_app_usage_get_most_used (ShellAppUsage *self,
* shell_app_usage_compare:
* @self: the usage instance to request
* @context: Activity identifier
* @app_a: First app
* @app_b: Second app
* @id_a: ID of first app
* @id_b: ID of second app
*
* Compare @app_a and @app_b based on frequency of use.
* Compare @id_a and @id_b based on frequency of use.
*
* Returns: -1 if @app_a ranks higher than @app_b, 1 if @app_b ranks higher
* than @app_a, and 0 if both rank equally.
* Returns: -1 if @id_a ranks higher than @id_b, 1 if @id_b ranks higher
* than @id_a, and 0 if both rank equally.
*/
int
shell_app_usage_compare (ShellAppUsage *self,
const char *context,
ShellApp *app_a,
ShellApp *app_b)
const char *id_a,
const char *id_b)
{
GHashTable *usages;
UsageData *usage_a, *usage_b;
@ -548,8 +548,8 @@ shell_app_usage_compare (ShellAppUsage *self,
if (usages == NULL)
return 0;
usage_a = g_hash_table_lookup (usages, shell_app_get_id (app_a));
usage_b = g_hash_table_lookup (usages, shell_app_get_id (app_b));
usage_a = g_hash_table_lookup (usages, id_a);
usage_b = g_hash_table_lookup (usages, id_b);
if (usage_a == NULL && usage_b == NULL)
return 0;

View File

@ -31,8 +31,8 @@ GSList *shell_app_usage_get_most_used (ShellAppUsage *usage,
const char *context);
int shell_app_usage_compare (ShellAppUsage *self,
const char *context,
ShellApp *app_a,
ShellApp *app_b);
const char *id_a,
const char *id_b);
G_END_DECLS

View File

@ -53,7 +53,7 @@ typedef struct {
* SECTION:shell-app
* @short_description: Object representing an application
*
* This object wraps a #GMenuTreeEntry, providing methods and signals
* This object wraps a #GDesktopAppInfo, providing methods and signals
* primarily useful for running applications.
*/
struct _ShellApp
@ -64,7 +64,7 @@ struct _ShellApp
ShellAppState state;
GMenuTreeEntry *entry; /* If NULL, this app is backed by one or more
GDesktopAppInfo *info; /* If NULL, this app is backed by one or more
* MetaWindow. For purposes of app title
* etc., we use the first window added,
* because it's most likely to be what we
@ -137,15 +137,15 @@ shell_app_get_property (GObject *gobject,
const char *
shell_app_get_id (ShellApp *app)
{
if (app->entry)
return gmenu_tree_entry_get_desktop_file_id (app->entry);
if (app->info)
return g_app_info_get_id (G_APP_INFO (app->info));
return app->window_id_string;
}
static MetaWindow *
window_backed_app_get_window (ShellApp *app)
{
g_assert (app->entry == NULL);
g_assert (app->info == NULL);
g_assert (app->running_state);
g_assert (app->running_state->windows);
return app->running_state->windows->data;
@ -194,10 +194,10 @@ shell_app_create_icon_texture (ShellApp *app,
ret = NULL;
if (app->entry == NULL)
if (app->info == NULL)
return window_backed_app_get_icon (app, size);
icon = g_app_info_get_icon (G_APP_INFO (gmenu_tree_entry_get_app_info (app->entry)));
icon = g_app_info_get_icon (G_APP_INFO (app->info));
if (icon != NULL)
ret = st_texture_cache_load_gicon (st_texture_cache_get_default (), NULL, icon, size);
@ -217,7 +217,7 @@ typedef struct {
ClutterTextDirection direction;
} CreateFadedIconData;
static CoglTexture *
static CoglHandle
shell_app_create_faded_icon_cpu (StTextureCache *cache,
const char *key,
void *datap,
@ -227,7 +227,7 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
ShellApp *app;
GdkPixbuf *pixbuf;
int size;
CoglTexture *texture;
CoglHandle texture;
gint width, height, rowstride;
guint8 n_channels;
gboolean have_alpha;
@ -245,7 +245,7 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
info = NULL;
icon = g_app_info_get_icon (G_APP_INFO (gmenu_tree_entry_get_app_info (app->entry)));
icon = g_app_info_get_icon (G_APP_INFO (app->info));
if (icon != NULL)
{
info = gtk_icon_theme_lookup_by_gicon (gtk_icon_theme_get_default (),
@ -263,13 +263,13 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
}
if (info == NULL)
return NULL;
return COGL_INVALID_HANDLE;
pixbuf = gtk_icon_info_load_icon (info, NULL);
g_object_unref (info);
if (pixbuf == NULL)
return NULL;
return COGL_INVALID_HANDLE;
width = gdk_pixbuf_get_width (pixbuf);
height = gdk_pixbuf_get_height (pixbuf);
@ -338,7 +338,7 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
ClutterActor *
shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection direction)
{
CoglTexture *texture;
CoglHandle texture;
ClutterActor *result;
char *cache_key;
CreateFadedIconData data;
@ -347,7 +347,7 @@ shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection directio
* property tracking bits, and this helps us visually distinguish
* app-tracked from not.
*/
if (!app->entry)
if (!app->info)
return window_backed_app_get_icon (app, size);
/* Use icon: prefix so that we get evicted from the cache on
@ -367,7 +367,7 @@ shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection directio
NULL);
g_free (cache_key);
if (texture != NULL)
if (texture != COGL_INVALID_HANDLE)
{
result = clutter_texture_new ();
clutter_texture_set_cogl_texture (CLUTTER_TEXTURE (result), texture);
@ -384,8 +384,8 @@ shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection directio
const char *
shell_app_get_name (ShellApp *app)
{
if (app->entry)
return g_app_info_get_name (G_APP_INFO (gmenu_tree_entry_get_app_info (app->entry)));
if (app->info)
return g_app_info_get_name (G_APP_INFO (app->info));
else
{
MetaWindow *window = window_backed_app_get_window (app);
@ -401,8 +401,8 @@ shell_app_get_name (ShellApp *app)
const char *
shell_app_get_description (ShellApp *app)
{
if (app->entry)
return g_app_info_get_description (G_APP_INFO (gmenu_tree_entry_get_app_info (app->entry)));
if (app->info)
return g_app_info_get_description (G_APP_INFO (app->info));
else
return NULL;
}
@ -417,7 +417,7 @@ shell_app_get_description (ShellApp *app)
gboolean
shell_app_is_window_backed (ShellApp *app)
{
return app->entry == NULL;
return app->info == NULL;
}
typedef struct {
@ -653,6 +653,7 @@ shell_app_activate_full (ShellApp *app,
case SHELL_APP_STATE_STARTING:
break;
case SHELL_APP_STATE_RUNNING:
case SHELL_APP_STATE_BUSY:
shell_app_activate_window (app, NULL, timestamp);
break;
}
@ -669,7 +670,7 @@ void
shell_app_open_new_window (ShellApp *app,
int workspace)
{
g_return_if_fail (app->entry != NULL);
g_return_if_fail (app->info != NULL);
/* Here we just always launch the application again, even if we know
* it was already running. For most applications this
@ -864,25 +865,24 @@ _shell_app_new_for_window (MetaWindow *window)
}
ShellApp *
_shell_app_new (GMenuTreeEntry *info)
_shell_app_new (GDesktopAppInfo *info)
{
ShellApp *app;
app = g_object_new (SHELL_TYPE_APP, NULL);
_shell_app_set_entry (app, info);
_shell_app_set_app_info (app, info);
return app;
}
void
_shell_app_set_entry (ShellApp *app,
GMenuTreeEntry *entry)
_shell_app_set_app_info (ShellApp *app,
GDesktopAppInfo *info)
{
if (app->entry != NULL)
gmenu_tree_item_unref (app->entry);
app->entry = gmenu_tree_item_ref (entry);
g_clear_object (&app->info);
app->info = g_object_ref (info);
if (app->name_collation_key != NULL)
g_free (app->name_collation_key);
app->name_collation_key = g_utf8_collate_key (shell_app_get_name (app), -1);
@ -960,10 +960,8 @@ application_properties_changed (GDBusConnection *connection,
{
ShellApp *app = user_data;
GVariant *changed_properties;
GVariantIter iter;
gboolean busy = FALSE;
const gchar *key, *interface_name_for_signal;
GVariant *value;
const gchar *interface_name_for_signal;
g_variant_get (parameters,
"(&s@a{sv}as)",
@ -974,19 +972,7 @@ application_properties_changed (GDBusConnection *connection,
if (g_strcmp0 (interface_name_for_signal, "org.gtk.Application") != 0)
return;
g_variant_iter_init (&iter, changed_properties);
while (g_variant_iter_next (&iter, "{&sv}", &key, &value))
{
if (g_strcmp0 (key, "Busy") != 0)
{
g_variant_unref (value);
continue;
}
busy = g_variant_get_boolean (value);
g_variant_unref (value);
break;
}
g_variant_lookup (changed_properties, "Busy", "b", &busy);
if (busy)
shell_app_state_transition (app, SHELL_APP_STATE_BUSY);
@ -1201,7 +1187,6 @@ shell_app_launch (ShellApp *app,
char **startup_id,
GError **error)
{
GDesktopAppInfo *gapp;
GdkAppLaunchContext *context;
gboolean ret;
ShellGlobal *global;
@ -1211,7 +1196,7 @@ shell_app_launch (ShellApp *app,
if (startup_id)
*startup_id = NULL;
if (app->entry == NULL)
if (app->info == NULL)
{
MetaWindow *window = window_backed_app_get_window (app);
/* We can't pass URIs into a window; shouldn't hit this
@ -1237,8 +1222,7 @@ shell_app_launch (ShellApp *app,
gdk_app_launch_context_set_timestamp (context, timestamp);
gdk_app_launch_context_set_desktop (context, workspace);
gapp = gmenu_tree_entry_get_app_info (app->entry);
ret = g_desktop_app_info_launch_uris_as_manager (gapp, uris,
ret = g_desktop_app_info_launch_uris_as_manager (app->info, uris,
G_APP_LAUNCH_CONTEXT (context),
G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
NULL, NULL,
@ -1258,21 +1242,7 @@ shell_app_launch (ShellApp *app,
GDesktopAppInfo *
shell_app_get_app_info (ShellApp *app)
{
if (app->entry)
return gmenu_tree_entry_get_app_info (app->entry);
return NULL;
}
/**
* shell_app_get_tree_entry:
* @app: a #ShellApp
*
* Returns: (transfer none): The #GMenuTreeEntry for this app, or %NULL if backed by a window
*/
GMenuTreeEntry *
shell_app_get_tree_entry (ShellApp *app)
{
return app->entry;
return app->info;
}
static void
@ -1387,24 +1357,22 @@ shell_app_init_search_data (ShellApp *app)
const char *exec;
const char * const *keywords;
char *normalized_exec;
GDesktopAppInfo *appinfo;
appinfo = gmenu_tree_entry_get_app_info (app->entry);
name = g_app_info_get_name (G_APP_INFO (appinfo));
name = g_app_info_get_name (G_APP_INFO (app->info));
app->casefolded_name = shell_util_normalize_casefold_and_unaccent (name);
generic_name = g_desktop_app_info_get_generic_name (appinfo);
generic_name = g_desktop_app_info_get_generic_name (app->info);
if (generic_name)
app->casefolded_generic_name = shell_util_normalize_casefold_and_unaccent (generic_name);
else
app->casefolded_generic_name = NULL;
exec = g_app_info_get_executable (G_APP_INFO (appinfo));
exec = g_app_info_get_executable (G_APP_INFO (app->info));
normalized_exec = shell_util_normalize_casefold_and_unaccent (exec);
app->casefolded_exec = trim_exec_line (normalized_exec);
g_free (normalized_exec);
keywords = g_desktop_app_info_get_keywords (appinfo);
keywords = g_desktop_app_info_get_keywords (app->info);
if (keywords)
{
@ -1525,16 +1493,14 @@ _shell_app_do_match (ShellApp *app,
GSList **substring_results)
{
ShellAppSearchMatch match;
GAppInfo *appinfo;
g_assert (app != NULL);
/* Skip window-backed apps */
appinfo = (GAppInfo*)shell_app_get_app_info (app);
if (appinfo == NULL)
if (app->info == NULL)
return;
/* Skip not-visible apps */
if (!g_app_info_should_show (appinfo))
if (!g_app_info_should_show (G_APP_INFO (app->info)))
return;
match = _shell_app_match_search_terms (app, terms);
@ -1563,11 +1529,7 @@ shell_app_dispose (GObject *object)
{
ShellApp *app = SHELL_APP (object);
if (app->entry)
{
gmenu_tree_item_unref (app->entry);
app->entry = NULL;
}
g_clear_object (&app->info);
if (app->running_state)
{

View File

@ -4,9 +4,8 @@
#include <clutter/clutter.h>
#include <gio/gio.h>
#include <gio/gdesktopappinfo.h>
#include <meta/window.h>
#define GMENU_I_KNOW_THIS_IS_UNSTABLE
#include <gmenu-tree.h>
G_BEGIN_DECLS
@ -39,7 +38,6 @@ GType shell_app_get_type (void) G_GNUC_CONST;
const char *shell_app_get_id (ShellApp *app);
GMenuTreeEntry *shell_app_get_tree_entry (ShellApp *app);
GDesktopAppInfo *shell_app_get_app_info (ShellApp *app);
ClutterActor *shell_app_create_icon_texture (ShellApp *app, int size);

View File

@ -27,6 +27,7 @@
#include <meta/display.h>
#include <meta/util.h>
#include <meta/meta-shaped-texture.h>
#include <meta/meta-cursor-tracker.h>
/* Memory report bits */
#ifdef HAVE_MALLINFO
@ -51,7 +52,7 @@ struct _ShellGlobal {
ClutterStage *stage;
Window stage_xwindow;
GdkWindow *stage_gdk_window;
GdkWindow *ibus_window;
MetaDisplay *meta_display;
GdkDisplay *gdk_display;
@ -599,91 +600,6 @@ sync_input_region (ShellGlobal *global)
meta_set_stage_input_region (screen, global->input_region);
}
/**
* shell_global_set_cursor:
* @global: A #ShellGlobal
* @type: the type of the cursor
*
* Set the cursor on the stage window.
*/
void
shell_global_set_cursor (ShellGlobal *global,
ShellCursor type)
{
const char *name;
GdkCursor *cursor;
switch (type)
{
case SHELL_CURSOR_DND_IN_DRAG:
name = "dnd-none";
break;
case SHELL_CURSOR_DND_MOVE:
name = "dnd-move";
break;
case SHELL_CURSOR_DND_COPY:
name = "dnd-copy";
break;
case SHELL_CURSOR_DND_UNSUPPORTED_TARGET:
name = "dnd-none";
break;
case SHELL_CURSOR_POINTING_HAND:
name = "hand";
break;
case SHELL_CURSOR_CROSSHAIR:
name = "crosshair";
break;
default:
g_return_if_reached ();
}
cursor = gdk_cursor_new_from_name (global->gdk_display, name);
if (!cursor)
{
GdkCursorType cursor_type;
switch (type)
{
case SHELL_CURSOR_DND_IN_DRAG:
cursor_type = GDK_FLEUR;
break;
case SHELL_CURSOR_DND_MOVE:
cursor_type = GDK_TARGET;
break;
case SHELL_CURSOR_DND_COPY:
cursor_type = GDK_PLUS;
break;
case SHELL_CURSOR_POINTING_HAND:
cursor_type = GDK_HAND2;
break;
case SHELL_CURSOR_CROSSHAIR:
cursor_type = GDK_CROSSHAIR;
break;
case SHELL_CURSOR_DND_UNSUPPORTED_TARGET:
cursor_type = GDK_X_CURSOR;
break;
default:
g_return_if_reached ();
}
cursor = gdk_cursor_new (cursor_type);
}
gdk_window_set_cursor (global->stage_gdk_window, cursor);
g_object_unref (cursor);
}
/**
* shell_global_unset_cursor:
* @global: A #ShellGlobal
*
* Unset the cursor on the stage window.
*/
void
shell_global_unset_cursor (ShellGlobal *global)
{
gdk_window_set_cursor (global->stage_gdk_window, NULL);
}
/**
* shell_global_set_stage_input_region:
* @global: the #ShellGlobal
@ -877,13 +793,9 @@ gnome_shell_gdk_event_handler (GdkEvent *event_gdk,
{
if (event_gdk->type == GDK_KEY_PRESS || event_gdk->type == GDK_KEY_RELEASE)
{
ClutterActor *stage;
Window stage_xwindow;
ShellGlobal *global = data;
stage = CLUTTER_ACTOR (data);
stage_xwindow = clutter_x11_get_stage_window (CLUTTER_STAGE (stage));
if (GDK_WINDOW_XID (event_gdk->key.window) == stage_xwindow)
if (event_gdk->key.window == global->ibus_window)
{
ClutterDeviceManager *device_manager = clutter_device_manager_get_default ();
ClutterInputDevice *keyboard = clutter_device_manager_get_core_device (device_manager,
@ -893,7 +805,7 @@ gnome_shell_gdk_event_handler (GdkEvent *event_gdk,
CLUTTER_KEY_PRESS : CLUTTER_KEY_RELEASE);
event_clutter->key.time = event_gdk->key.time;
event_clutter->key.flags = CLUTTER_EVENT_NONE;
event_clutter->key.stage = CLUTTER_STAGE (stage);
event_clutter->key.stage = CLUTTER_STAGE (global->stage);
event_clutter->key.source = NULL;
/* This depends on ClutterModifierType and GdkModifierType being
@ -916,6 +828,16 @@ gnome_shell_gdk_event_handler (GdkEvent *event_gdk,
gtk_main_do_event (event_gdk);
}
static void
entry_cursor_func (StEntry *entry,
gboolean use_ibeam,
gpointer user_data)
{
ShellGlobal *global = user_data;
meta_screen_set_cursor (global->meta_screen, use_ibeam ? META_CURSOR_IBEAM : META_CURSOR_DEFAULT);
}
void
_shell_global_set_plugin (ShellGlobal *global,
MetaPlugin *plugin)
@ -935,9 +857,38 @@ _shell_global_set_plugin (ShellGlobal *global,
meta_screen_get_screen_number (global->meta_screen));
global->stage = CLUTTER_STAGE (meta_get_stage_for_screen (global->meta_screen));
global->stage_xwindow = clutter_x11_get_stage_window (global->stage);
global->stage_gdk_window = gdk_x11_window_foreign_new_for_display (global->gdk_display,
global->stage_xwindow);
#ifdef HAVE_WAYLAND
if (meta_is_wayland_compositor ())
{
/* When Mutter is acting as its own display server then the
stage does not have a window, so create a different window
which we use to communicate with IBus, and leave stage_xwindow
as None.
*/
GdkWindowAttr attributes;
attributes.wclass = GDK_INPUT_OUTPUT;
attributes.width = 100;
attributes.height = 100;
attributes.window_type = GDK_WINDOW_TOPLEVEL;
global->ibus_window = gdk_window_new (NULL,
&attributes,
0 /* attributes_mask */);
global->stage_xwindow = None;
}
else
#endif
{
global->stage_xwindow = clutter_x11_get_stage_window (global->stage);
global->ibus_window = gdk_x11_window_foreign_new_for_display (global->gdk_display,
global->stage_xwindow);
}
st_im_text_set_event_window (global->ibus_window);
st_entry_set_cursor_func (entry_cursor_func, global);
g_signal_connect (global->stage, "notify::width",
G_CALLBACK (global_stage_notify_width), global);
@ -966,7 +917,7 @@ _shell_global_set_plugin (ShellGlobal *global,
g_signal_connect (global->meta_display, "notify::focus-window",
G_CALLBACK (focus_window_changed), global);
gdk_event_handler_set (gnome_shell_gdk_event_handler, global->stage, NULL);
gdk_event_handler_set (gnome_shell_gdk_event_handler, global, NULL);
global->focus_manager = st_focus_manager_get_for_stage (global->stage);
}
@ -1041,7 +992,8 @@ void
shell_global_freeze_keyboard (ShellGlobal *global,
guint32 timestamp)
{
meta_display_freeze_keyboard (global->meta_display, global->stage_xwindow, timestamp);
if (global->stage_xwindow != None)
meta_display_freeze_keyboard (global->meta_display, global->stage_xwindow, timestamp);
}
/* Code to close all file descriptors before we exec; copied from gspawn.c in GLib.
@ -1291,9 +1243,6 @@ void shell_global_init_xdnd (ShellGlobal *global)
* @mods: (out): the current set of modifier keys that are pressed down
*
* Gets the pointer coordinates and current modifier key state.
* This is a wrapper around gdk_display_get_pointer() that strips
* out any un-declared modifier flags, to make gjs happy; see
* https://bugzilla.gnome.org/show_bug.cgi?id=597292.
*/
void
shell_global_get_pointer (ShellGlobal *global,
@ -1301,18 +1250,13 @@ shell_global_get_pointer (ShellGlobal *global,
int *y,
ClutterModifierType *mods)
{
GdkDeviceManager *gmanager;
GdkDevice *gdevice;
GdkScreen *gscreen;
GdkModifierType raw_mods;
ClutterModifierType raw_mods;
MetaCursorTracker *tracker;
gmanager = gdk_display_get_device_manager (global->gdk_display);
gdevice = gdk_device_manager_get_client_pointer (gmanager);
gdk_device_get_position (gdevice, &gscreen, x, y);
gdk_device_get_state (gdevice,
gdk_screen_get_root_window (gscreen),
NULL, &raw_mods);
*mods = raw_mods & GDK_MODIFIER_MASK;
tracker = meta_cursor_tracker_get_for_screen (global->meta_screen);
meta_cursor_tracker_get_pointer (tracker, x, y, &raw_mods);
*mods = raw_mods & CLUTTER_MODIFIER_MASK;
}
/**
@ -1327,19 +1271,10 @@ void
shell_global_sync_pointer (ShellGlobal *global)
{
int x, y;
GdkModifierType mods;
GdkDeviceManager *gmanager;
GdkDevice *gdevice;
GdkScreen *gscreen;
ClutterModifierType mods;
ClutterMotionEvent event;
gmanager = gdk_display_get_device_manager (global->gdk_display);
gdevice = gdk_device_manager_get_client_pointer (gmanager);
gdk_device_get_position (gdevice, &gscreen, &x, &y);
gdk_device_get_state (gdevice,
gdk_screen_get_root_window (gscreen),
NULL, &mods);
shell_global_get_pointer (global, &x, &y, &mods);
event.type = CLUTTER_MOTION;
event.time = shell_global_get_current_time (global);

View File

@ -50,20 +50,6 @@ void shell_global_freeze_keyboard (ShellGlobal *global,
void shell_global_set_stage_input_region (ShellGlobal *global,
GSList *rectangles);
/* X utilities */
typedef enum {
SHELL_CURSOR_DND_IN_DRAG,
SHELL_CURSOR_DND_UNSUPPORTED_TARGET,
SHELL_CURSOR_DND_MOVE,
SHELL_CURSOR_DND_COPY,
SHELL_CURSOR_POINTING_HAND,
SHELL_CURSOR_CROSSHAIR
} ShellCursor;
void shell_global_set_cursor (ShellGlobal *global,
ShellCursor type);
void shell_global_unset_cursor (ShellGlobal *global);
void shell_global_get_pointer (ShellGlobal *global,
int *x,
int *y,

View File

@ -35,6 +35,8 @@
#define SHELL_IS_INVERT_EFFECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_INVERT_LIGHTNESS_EFFECT))
#define SHELL_INVERT_LIGHTNESS_EFFECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_INVERT_LIGHTNESS_EFFEC, ShellInvertLightnessEffectClass))
#define CLUTTER_ENABLE_EXPERIMENTAL_API
#include "shell-invert-lightness-effect.h"
#include <cogl/cogl.h>
@ -122,7 +124,6 @@ shell_invert_lightness_effect_paint_target (ClutterOffscreenEffect *effect)
ShellInvertLightnessEffect *self = SHELL_INVERT_LIGHTNESS_EFFECT (effect);
ClutterActor *actor;
guint8 paint_opacity;
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
actor = clutter_actor_meta_get_actor (CLUTTER_ACTOR_META (effect));
paint_opacity = clutter_actor_get_paint_opacity (actor);
@ -132,8 +133,11 @@ shell_invert_lightness_effect_paint_target (ClutterOffscreenEffect *effect)
paint_opacity,
paint_opacity,
paint_opacity);
cogl_framebuffer_draw_rectangle (fb, self->pipeline,
0, 0, self->tex_width, self->tex_height);
cogl_push_source (self->pipeline);
cogl_rectangle (0, 0, self->tex_width, self->tex_height);
cogl_pop_source ();
}
static void

View File

@ -21,6 +21,7 @@
#ifndef __SHELL_INVERT_LIGHTNESS_EFFECT_H__
#define __SHELL_INVERT_LIGHTNESS_EFFECT_H__
#define COGL_ENABLE_EXPERIMENTAL_API
#include <clutter/clutter.h>
G_BEGIN_DECLS

View File

@ -771,6 +771,6 @@ shell_keyring_prompt_cancel (ShellKeyringPrompt *self)
self->async_result = NULL;
self->mode = PROMPTING_NONE;
g_simple_async_result_complete (res);
g_simple_async_result_complete_in_idle (res);
g_object_unref (res);
}

View File

@ -441,19 +441,15 @@ recorder_record_frame (ShellRecorder *recorder)
recorder->last_frame_time = now;
size = recorder->area.width * recorder->area.height * 4;
data = g_malloc (size);
if (!cogl_framebuffer_read_pixels (cogl_get_draw_framebuffer (),
recorder->area.x,
recorder->area.y,
recorder->area.width,
recorder->area.height,
CLUTTER_CAIRO_FORMAT_ARGB32,
data))
{
g_warning ("Could not retrieve pixel data");
g_free (data);
return;
}
data = g_malloc (recorder->area.width * 4 * recorder->area.height);
cogl_read_pixels (recorder->area.x,
recorder->area.y,
recorder->area.width,
recorder->area.height,
COGL_READ_PIXELS_COLOR_BUFFER,
CLUTTER_CAIRO_FORMAT_ARGB32,
data);
buffer = gst_buffer_new();
gst_buffer_insert_memory (buffer, -1,

View File

@ -1,5 +1,8 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
#define COGL_ENABLE_EXPERIMENTAL_API
#define CLUTTER_ENABLE_EXPERIMENTAL_API
#include <clutter/clutter.h>
#include <cogl/cogl.h>
#include <meta/display.h>

View File

@ -97,7 +97,6 @@ shell_slicer_paint_child (ShellSlicer *self)
float width, height, child_width, child_height;
StAlign x_align, y_align;
double x_align_factor, y_align_factor;
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
child = st_bin_get_child (ST_BIN (self));
@ -116,17 +115,18 @@ shell_slicer_paint_child (ShellSlicer *self)
child_width = child_box.x2 - child_box.x1;
child_height = child_box.y2 - child_box.y1;
cogl_framebuffer_push_matrix (fb);
cogl_framebuffer_push_rectangle_clip (fb, 0, 0, width, height);
cogl_framebuffer_translate (fb,
(int)(0.5 + x_align_factor * (width - child_width)),
(int)(0.5 + y_align_factor * (height - child_height)),
0);
cogl_push_matrix ();
cogl_clip_push_rectangle (0, 0, width, height);
cogl_translate ((int)(0.5 + x_align_factor * (width - child_width)),
(int)(0.5 + y_align_factor * (height - child_height)),
0);
clutter_actor_paint (child);
cogl_framebuffer_pop_clip (fb);
cogl_framebuffer_pop_matrix (fb);
cogl_clip_pop ();
cogl_pop_matrix ();
}
static void

View File

@ -844,6 +844,7 @@ ShellApp *
shell_startup_sequence_get_app (ShellStartupSequence *sequence)
{
const char *appid;
char *basename;
ShellAppSystem *appsys;
ShellApp *app;
@ -851,8 +852,10 @@ shell_startup_sequence_get_app (ShellStartupSequence *sequence)
if (!appid)
return NULL;
basename = g_path_get_basename (appid);
appsys = shell_app_system_get_default ();
app = shell_app_system_lookup_app_for_path (appsys, appid);
app = shell_app_system_lookup_app (appsys, basename);
g_free (basename);
return app;
}

View File

@ -387,20 +387,19 @@ st_box_layout_paint (ClutterActor *actor)
ClutterActorBox allocation_box;
ClutterActorBox content_box;
ClutterActor *child;
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
get_border_paint_offsets (self, &x, &y);
if (x != 0 || y != 0)
{
cogl_framebuffer_push_matrix (fb);
cogl_framebuffer_translate (fb, (int)x, (int)y, 0);
cogl_push_matrix ();
cogl_translate ((int)x, (int)y, 0);
}
st_widget_paint_background (ST_WIDGET (actor));
if (x != 0 || y != 0)
{
cogl_framebuffer_pop_matrix (fb);
cogl_pop_matrix ();
}
if (clutter_actor_get_n_children (actor) == 0)
@ -418,11 +417,10 @@ st_box_layout_paint (ClutterActor *actor)
* the borders and background stay in place; after drawing the borders and
* background, we clip to the content area */
if (priv->hadjustment || priv->vadjustment)
cogl_framebuffer_push_rectangle_clip (fb,
(int)content_box.x1,
(int)content_box.y1,
(int)content_box.x2,
(int)content_box.y2);
cogl_clip_push_rectangle ((int)content_box.x1,
(int)content_box.y1,
(int)content_box.x2,
(int)content_box.y2);
for (child = clutter_actor_get_first_child (actor);
child != NULL;
@ -430,7 +428,7 @@ st_box_layout_paint (ClutterActor *actor)
clutter_actor_paint (child);
if (priv->hadjustment || priv->vadjustment)
cogl_framebuffer_pop_clip (fb);
cogl_clip_pop ();
}
static void
@ -444,20 +442,19 @@ st_box_layout_pick (ClutterActor *actor,
ClutterActorBox allocation_box;
ClutterActorBox content_box;
ClutterActor *child;
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
get_border_paint_offsets (self, &x, &y);
if (x != 0 || y != 0)
{
cogl_framebuffer_push_matrix (fb);
cogl_framebuffer_translate (fb, (int)x, (int)y, 0);
cogl_push_matrix ();
cogl_translate ((int)x, (int)y, 0);
}
CLUTTER_ACTOR_CLASS (st_box_layout_parent_class)->pick (actor, color);
if (x != 0 || y != 0)
{
cogl_framebuffer_pop_matrix (fb);
cogl_pop_matrix ();
}
if (clutter_actor_get_n_children (actor) == 0)
@ -472,11 +469,10 @@ st_box_layout_pick (ClutterActor *actor,
content_box.y2 += y;
if (priv->hadjustment || priv->vadjustment)
cogl_framebuffer_push_rectangle_clip (fb,
(int)content_box.x1,
(int)content_box.y1,
(int)content_box.x2,
(int)content_box.y2);
cogl_clip_push_rectangle ((int)content_box.x1,
(int)content_box.y1,
(int)content_box.x2,
(int)content_box.y2);
for (child = clutter_actor_get_first_child (actor);
child != NULL;
@ -484,7 +480,7 @@ st_box_layout_pick (ClutterActor *actor,
clutter_actor_paint (child);
if (priv->hadjustment || priv->vadjustment)
cogl_framebuffer_pop_clip (fb);
cogl_clip_pop ();
}
static gboolean

View File

@ -39,8 +39,8 @@
G_DEFINE_TYPE(StDrawingArea, st_drawing_area, ST_TYPE_WIDGET);
struct _StDrawingAreaPrivate {
CoglTexture *texture;
CoglPipeline *pipeline;
CoglHandle texture;
CoglHandle material;
cairo_t *context;
guint needs_repaint : 1;
guint in_repaint : 1;
@ -61,8 +61,17 @@ st_drawing_area_dispose (GObject *object)
StDrawingArea *area = ST_DRAWING_AREA (object);
StDrawingAreaPrivate *priv = area->priv;
g_clear_pointer (&priv->pipeline, cogl_object_unref);
g_clear_pointer (&priv->texture, cogl_object_unref);
if (priv->material != COGL_INVALID_HANDLE)
{
cogl_handle_unref (priv->material);
priv->material = COGL_INVALID_HANDLE;
}
if (priv->texture != COGL_INVALID_HANDLE)
{
cogl_handle_unref (priv->texture);
priv->texture = COGL_INVALID_HANDLE;
}
G_OBJECT_CLASS (st_drawing_area_parent_class)->dispose (object);
}
@ -76,6 +85,8 @@ st_drawing_area_paint (ClutterActor *self)
ClutterActorBox allocation_box;
ClutterActorBox content_box;
int width, height;
CoglColor color;
guint8 paint_opacity;
(CLUTTER_ACTOR_CLASS (st_drawing_area_parent_class))->paint (self);
@ -85,25 +96,20 @@ st_drawing_area_paint (ClutterActor *self)
width = (int)(0.5 + content_box.x2 - content_box.x1);
height = (int)(0.5 + content_box.y2 - content_box.y1);
if (priv->pipeline == NULL)
{
CoglContext *ctx =
clutter_backend_get_cogl_context (clutter_get_default_backend ());
if (priv->material == COGL_INVALID_HANDLE)
priv->material = cogl_material_new ();
priv->pipeline = cogl_pipeline_new (ctx);
}
if (priv->texture != NULL &&
if (priv->texture != COGL_INVALID_HANDLE &&
(width != cogl_texture_get_width (priv->texture) ||
height != cogl_texture_get_height (priv->texture)))
{
cogl_object_unref (priv->texture);
priv->texture = NULL;
cogl_handle_unref (priv->texture);
priv->texture = COGL_INVALID_HANDLE;
}
if (width > 0 && height > 0)
{
if (priv->texture == NULL)
if (priv->texture == COGL_INVALID_HANDLE)
{
priv->texture = cogl_texture_new_with_size (width, height,
COGL_TEXTURE_NONE,
@ -135,21 +141,19 @@ st_drawing_area_paint (ClutterActor *self)
}
}
cogl_pipeline_set_layer_texture (priv->pipeline, 0, priv->texture);
cogl_material_set_layer (priv->material, 0, priv->texture);
if (priv->texture)
{
CoglColor color;
guint8 paint_opacity;
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
paint_opacity = clutter_actor_get_paint_opacity (self);
cogl_color_init_from_4ub (&color, paint_opacity, paint_opacity, paint_opacity, paint_opacity);
cogl_pipeline_set_color (priv->pipeline, &color);
cogl_color_set_from_4ub (&color,
paint_opacity, paint_opacity, paint_opacity, paint_opacity);
cogl_material_set_color (priv->material, &color);
cogl_framebuffer_draw_rectangle (fb, priv->pipeline,
content_box.x1, content_box.y1,
content_box.x2, content_box.y2);
cogl_set_source (priv->material);
cogl_rectangle_with_texture_coords (content_box.x1, content_box.y1,
content_box.x2, content_box.y2,
0.0f, 0.0f, 1.0f, 1.0f);
}
}
@ -191,7 +195,7 @@ st_drawing_area_init (StDrawingArea *area)
{
area->priv = G_TYPE_INSTANCE_GET_PRIVATE (area, ST_TYPE_DRAWING_AREA,
StDrawingAreaPrivate);
area->priv->texture = NULL;
area->priv->texture = COGL_INVALID_HANDLE;
}
/**

View File

@ -65,10 +65,6 @@
#include "st-clipboard.h"
#include "st-private.h"
#include <clutter/x11/clutter-x11.h>
#include <X11/Xlib.h>
#include <X11/cursorfont.h>
#include "st-widget-accessible.h"
#define HAS_FOCUS(actor) (clutter_actor_get_stage (actor) && clutter_stage_get_key_focus ((ClutterStage *) clutter_actor_get_stage (actor)) == actor)
@ -681,33 +677,28 @@ st_entry_key_focus_in (ClutterActor *actor)
clutter_actor_grab_key_focus (priv->entry);
}
static StEntryCursorFunc cursor_func;
static gpointer cursor_func_data;
/**
* st_entry_set_cursor_func: (skip)
*
* This function is for private use by libgnome-shell.
* Do not ever use.
*/
void
st_entry_set_cursor_func (StEntryCursorFunc func,
gpointer data)
{
cursor_func = func;
cursor_func_data = data;
}
static void
st_entry_set_cursor (StEntry *entry,
gboolean use_ibeam)
{
Display *dpy;
ClutterActor *stage, *actor = CLUTTER_ACTOR (entry);
Window wid;
static Cursor ibeam = None;
dpy = clutter_x11_get_default_display ();
stage = clutter_actor_get_stage (actor);
if (stage == NULL)
{
g_warn_if_fail (!entry->priv->has_ibeam);
return;
}
wid = clutter_x11_get_stage_window (CLUTTER_STAGE (stage));
if (ibeam == None)
ibeam = XCreateFontCursor (dpy, XC_xterm);
if (use_ibeam)
XDefineCursor (dpy, wid, ibeam);
else
XUndefineCursor (dpy, wid);
cursor_func (entry, use_ibeam, cursor_func_data);
entry->priv->has_ibeam = use_ibeam;
}

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