Compare commits

..

236 Commits

Author SHA1 Message Date
555d45f06c wip center layout garbage 2012-11-01 12:58:12 -04:00
0a8713770b overview, viewSelector: Don't use two signals for checking the app button
Just one will do.
2012-11-01 12:58:12 -04:00
7d3ea1ac68 overview, viewSelector: show/hide workspaces and message tray on apps button 2012-11-01 12:58:12 -04:00
7785710964 messageTray: Always show message tray upon entering overview
We hide the message tray while searching, but it should always be visible when
not searching, including when initially entering overview.
2012-11-01 12:58:12 -04:00
3730dc01cf viewSelector: remove switching from search results on app-drag-begin
https://bugzilla.gnome.org/show_bug.cgi?id=682050
2012-11-01 12:58:12 -04:00
66bf0df737 viewSelector: this.active --> this.entryNonEmpty
'active' isn't terribly clear about just what is active, this variable is
true/false depending on whether or not the search entry has text.

https://bugzilla.gnome.org/show_bug.cgi?id=682050
2012-11-01 12:58:12 -04:00
4590b33f2e messageTray, viewSelector: show/hide message tray on search signals
https://bugzilla.gnome.org/show_bug.cgi?id=682050
2012-11-01 12:58:12 -04:00
6538f60322 overview: Connect app-drag signals to show/hide overview elements
Anytime we begin dragging an app launcher, ensure the overview elements are
showing. While searching, if an app-drag ends or is cancelled, hide the
overview elements, but don't switch back to windows (which was the old
behavior).

https://bugzilla.gnome.org/show_bug.cgi?id=682050
2012-11-01 12:58:12 -04:00
4b0ba8b7b8 viewSelector, overview: Add search signals and connect them to hide/show
Hide the elements when the search entry is non-empty. Show them if the search
is cancelled.

https://bugzilla.gnome.org/show_bug.cgi?id=682050
2012-11-01 12:58:11 -04:00
bc8965fe63 overview: Center the main overview group accordingly
Using the same logic as the panel which smartly centers everything,
smartly center the overview contents if we have enough space to do so.
2012-11-01 12:58:11 -04:00
e7fcce3484 overview, workspacesView: Use ThumbnailsBox for independent workspace thumbnails
Both WorkspacesDisplay and ThumbnailsBox need to know when windows have been
restacked. Instead of each tracking changes on their own or trying to call
each other, have the overview keep track and do the calculations, emitting
a signal with the result.

https://bugzilla.gnome.org/show_bug.cgi?id=682050
2012-11-01 12:58:11 -04:00
b1e4d3335c workspaceThumbnail: Add keyboard nav to ThumbnailsBox
https://bugzilla.gnome.org/show_bug.cgi?id=682050
2012-11-01 12:58:11 -04:00
a3a3f24ed3 workspaceThumbnail: Rename show(), hide() and add new methods
show() and hide() now slide the thumbnails in and out, respectively. The old
show and hide are now _createThumbnails and _destroyThumbnails. We only care
about these thumbnails while in the overview, so create them when entering and
destroy them on exit.

https://bugzilla.gnome.org/show_bug.cgi?id=682050
2012-11-01 12:58:11 -04:00
96191a9c96 workspaceThumbnail: React to scroll event
https://bugzilla.gnome.org/show_bug.cgi?id=682050
2012-11-01 12:58:11 -04:00
f4814d200b workspaceThumbnail: Make ThumbnailsBox track workspace changes itself
https://bugzilla.gnome.org/show_bug.cgi?id=682050
2012-11-01 12:58:11 -04:00
52156930d3 overview: Respect multi-monitor situations 2012-11-01 12:58:11 -04:00
cbaa999ced overview: overview as boxlayouts
https://bugzilla.gnome.org/show_bug.cgi?id=682286
2012-11-01 12:58:10 -04:00
9491f6bd23 dash: fix for shrinking dash while animating
The this.actor.height > this._maxHeight check is needed because animating the
dash out causes constant notify::height signals and so after each one the max
height would shrink to the actor height causing the icons to shrink until
eventually we get to 16px icons. This way, only increase maxHeight if the
actor can be drawn bigger than it is currently set.

https://bugzilla.gnome.org/show_bug.cgi?id=682050
2012-11-01 12:58:10 -04:00
afe8198d4b dash: Add show/hide methods
https://bugzilla.gnome.org/show_bug.cgi?id=682050
2012-11-01 12:58:10 -04:00
6aa8f14285 overview and others: Rename item-drag signals to app-drag
Since results other than apps should not be draggable, be more descriptive and
rename item-drag signals to app-drag signals.

https://bugzilla.gnome.org/show_bug.cgi?id=682050
2012-11-01 12:58:09 -04:00
e073670c4d workspace: Don't recalculate window positions when leaving the overview
https://bugzilla.gnome.org/show_bug.cgi?id=682286
2012-11-01 12:58:09 -04:00
17a3d2c63f searchDisplay: Put the grid search results in the middle
This is still "off-balance" due to the dash on the left.
2012-11-01 12:58:09 -04:00
ca38e05ed4 appDisplay: Don't use icons in results for settings
The search results are not necessarily improved by including icons, so don't.

https://bugzilla.gnome.org/show_bug.cgi?id=681797
2012-11-01 12:58:09 -04:00
9841e56ebf remoteSearch: We do not need a fallback for createIcon
Remote providers no longer have access to a grid layout, where an icon is
a requirement. If they don't specify an icon, don't create one.

https://bugzilla.gnome.org/show_bug.cgi?id=681797
2012-11-01 12:58:09 -04:00
c0d3a14ac2 popupMenu: Break separator drawing code out of PopupSeparatorMenuItem
https://bugzilla.gnome.org/show_bug.cgi?id=681797
2012-11-01 12:58:09 -04:00
d485fcf9ec appDisplay: Add provider icons for the search system
Only temporary, to test with, unless a remote provider for Settings doesn't
materialize. this.icon should be a GIcon since that is what remote providers
will return.

https://bugzilla.gnome.org/show_bug.cgi?id=681797
2012-11-01 12:58:09 -04:00
ce2c5106f8 theme: Update for search redesign
https://bugzilla.gnome.org/show_bug.cgi?id=681797
2012-11-01 12:58:09 -04:00
5e96c3dfb4 searchDisplay: Set can_focus on provider icon only if its results have focus
This way, the search results take priority, but while the user is in the
search section, they can navigate to that provider icon to launch a search.

https://bugzilla.gnome.org/show_bug.cgi?id=681797
2012-11-01 12:58:09 -04:00
a72b642f3e searchDisplay: Add ListSearchResult and ListSearchResults
These are for all search results except apps.

https://bugzilla.gnome.org/show_bug.cgi?id=681797
2012-11-01 12:58:09 -04:00
8507d3c4e4 searchDisplay, and others: Switch from provider title to provider icon
Display a '+' icon on the provider icon if there are more results that are
hidden. If the provider icon is clicked, ask the provider to launch itself and
perform a search with the current terms.

https://bugzilla.gnome.org/show_bug.cgi?id=681797
2012-11-01 12:58:09 -04:00
c985fdccba iconGrid: Handle preferred height requests for infinite widths
Request enough height to fit all children in a single line instead of
requesting 0.

https://bugzilla.gnome.org/show_bug.cgi?id=679168
2012-11-01 12:58:08 -04:00
1d7c2b1c26 centerLayout: Add some utilities to connect us up to CSS
This allows us to automatically adjust the "spacing" property of the
layout manager whenever the CSS changes.
2012-11-01 12:58:07 -04:00
ab60c628e7 panel: Abstract the centered panel logic out into a ClutterLayoutManager
Since we want to use this in the overview as well, put it into centerLayout.js

Panel corners are disabled for now. They'll be added back eventually.
2012-11-01 12:58:07 -04:00
2c34c8e20f Overview search box is too subtle
When it isn't focused, the search box can be quite hard to see.

The text/icon/border color is changed to be brighter in order to increase
contrast with the dark background and this works well with various
wallpapers.

https://bugzilla.gnome.org/show_bug.cgi?id=686479
2012-11-01 11:32:40 +00:00
d19fa731d6 Updated Polish translation 2012-10-31 19:15:34 +01:00
59bb1cc387 Add a setting to force the 'Log out' menuitem
I've heard quite a bit of feedback from people who want to log out,
even if they are the sole user on their system. It doesn't seem worth
alienating them over this; so add a setting to make the 'Log out' item
always show up.
https://bugzilla.gnome.org/show_bug.cgi?id=686057
2012-10-31 12:46:49 -04:00
56909d0646 Show 'Log out' in more situations
When the current user is a remote account, or a we are logged in
as root, we should always show 'Log out'.

https://bugzilla.gnome.org/show_bug.cgi?id=686736
2012-10-31 12:45:08 -04:00
04da29c939 appMenu: Update on icon theme changes
While we recreate icons on style changes elsewhere, the faded
icon in the application menu will stick around after icon theme
changes until another application is focused.

https://bugzilla.gnome.org/show_bug.cgi?id=687224
2012-10-31 00:06:46 +01:00
307f7a3024 IM status menu: adjust the combo popup background
The transparent background for available/unavailable IM status menu
makes the text difficult to read.

Simplifies that by using the default combo-popup background instead of a
custom one.

https://bugzilla.gnome.org/show_bug.cgi?id=658091
2012-10-30 22:51:50 +00:00
e80bfa39f5 userMenu: Use "offline" instead of "unavailable"
https://bugzilla.gnome.org/show_bug.cgi?id=687226
2012-10-30 23:01:22 +01:00
29714922ea calendar: Drop unnecessary libedataserverui dependency
The libedataserverui dependency is a relic of the old E-D-S API.
As of 3.6.0, E-D-S now centralizes authentication prompts so clients
don't have to display their own.  This also allows trading the GTK+
main loop for a plain GMainLoop in gnome-shell-calendar-server.c.

https://bugzilla.gnome.org/show_bug.cgi?id=687189
2012-10-30 14:18:39 -04:00
88192114ac NetworkAgent: cancel requests when disabling component
When the NetworkAgent is disabled (for example because the lock screen
is being activated), cancel all modal dialogs.

https://bugzilla.gnome.org/show_bug.cgi?id=685239
2012-10-30 16:34:13 +01:00
9d78208b76 NetworkMenu: don't use a global switch for all VPN connections
Stop pretending that VPN is a NMDevice, and split the useful bits into
a NMConnectionBased interface.
Make each connection have its own switch menu item and handle its own
status, and remove the VPN section title, which is no longer needed.

https://bugzilla.gnome.org/show_bug.cgi?id=682929
2012-10-30 16:08:33 +01:00
d817bf0395 theme: standardize the run dialog text styles a bit
Use the standard color for dialog headings, and use the standard
text style for the entry field. These tweaks make the dialog easier
to read.

https://bugzilla.gnome.org/show_bug.cgi?id=687127
2012-10-30 15:50:05 +01:00
4d51056226 runDialog: Remove "Run" button again
While not in the mockups, it was introduced during review of commit
0c807bddaf after discussion on IRC, but the designers disagree;
remove it again.

https://bugzilla.gnome.org/show_bug.cgi?id=687127
2012-10-30 15:50:05 +01:00
a607174a25 runDialog: Add entry to focus chain
Currently the entry takes the intial key focus, but is not actually
part of the focus chain. Fix that, even though keynav does not work
too well for the dialog anyway, due to the entry consuming tab for
command completion.

https://bugzilla.gnome.org/show_bug.cgi?id=687127
2012-10-30 15:50:05 +01:00
37d6a624b7 Improve the button insensitive style
The current insensitive style for buttons needs to be improved. Right
now we just change the text color: this doesn't make it clear that the
button is actually insensitive.

Instead of just changing the text color, we make the button background
almost transparent. We also make the text color the same as the border
color, use a thinner border.

This patch also simplifies some border rule overwrites to emphasis
only the border width is changed on focus, and makes the button look
closer to the mockups.

https://bugzilla.gnome.org/show_bug.cgi?id=687110
2012-10-30 12:35:48 +00:00
0c807bddaf runDialog: Better match style of other modal dialogs
Update the run dialog to
 - use a proper title
 - use dialog buttons
 - use the standard entry style

https://bugzilla.gnome.org/show_bug.cgi?id=687127
2012-10-29 19:12:12 +01:00
a0470bfc66 UnlockDialog: clear the password on failure
It is wrong, and the user can't correct it because it's obfuscated.
Just let him type it again.

https://bugzilla.gnome.org/show_bug.cgi?id=687132
2012-10-29 17:54:12 +01:00
b9463d23e8 ShellUserVerifier: fix fail counter
If it is updated after checking, it counts the number of failures
not including the current one, so it allows one extra attempt. Instead,
by updating it before checking, we get the expected result of dropping the
curtain at the third password.

https://bugzilla.gnome.org/show_bug.cgi?id=687132
2012-10-29 17:54:12 +01:00
04debd1623 LoginDialog: clear previous auth failed messages when trying again
When the user has the entered the password for the second time
and clicked OK, clear messages from the previous attempt, so any
new failure is shown clearly.

https://bugzilla.gnome.org/show_bug.cgi?id=687132
2012-10-29 17:54:11 +01:00
9d31576cf5 App search: Match GenericName too
This is making shell search results more useful in many cases,
such as 'web', 'browser', spreadsheet'.
https://bugzilla.gnome.org/show_bug.cgi?id=687121
2012-10-29 11:24:36 -04:00
8daca28a90 Updated Slovak translation 2012-10-28 19:50:05 +00:00
9899604261 Updated Slovak translation 2012-10-28 18:27:51 +00:00
687e1eabed Overview: Resize the window title labels on content change
Reposition the window overlay when the title changes, using the current
transformed size of the window clone.
Includes a test that changes title to a string of random length every 3 seconds.

Based on a patch by Alex Hultman <alexhultman@gmail.com>

https://bugzilla.gnome.org/show_bug.cgi?id=620874
2012-10-27 18:18:48 +02:00
eb09f34114 recorder: save recorded video as recent item
Often the first thing a user wants to do after making a recording
is post it somewhere.

This commit adds the video to recently used items, so that it shows
up prominently in open file choosers.

https://bugzilla.gnome.org/show_bug.cgi?id=680647
2012-10-26 13:29:30 -04:00
fbeb446ed7 recorder: rename "filename" property to "file-template"
The filename property is actually a template string with
substitution variables, not a filename.

This commit renames for clarity.

https://bugzilla.gnome.org/show_bug.cgi?id=680647
2012-10-26 13:29:30 -04:00
92033ce0f5 recorder: keep test-recorder alive until done recording
Recording continues for some time after the recorder object
is closed, since closing isn't a synchronous operation.

This commit defers quiting the test-recorder application until
the recording is finished.

https://bugzilla.gnome.org/show_bug.cgi?id=680647
2012-10-26 13:29:30 -04:00
9171bab5e5 recorder: keep recorder object alive until pipeline finishes
We want to make sure the recorder isn't finalized until the
saved recording hits disk.  This means the pipeline object needs
a hard reference on the recorder.

https://bugzilla.gnome.org/show_bug.cgi?id=680647
2012-10-26 13:29:30 -04:00
f9819eb7b0 recorder: Clean up stage lifetime handling
The stage is a floating object. We don't own a reference
to it, so we shouldn't unref it.

This commit removes the erroneous unref call and makes sure
we call clutter_actor_destroy on the stage when we're done
with it.

https://bugzilla.gnome.org/show_bug.cgi?id=680647
2012-10-26 13:29:30 -04:00
85728f0d15 layout: Use a MetaBackgroundActor, not a custom ClutterX11TexturePixmap
While looking at how the plymouth implementation was built, I was so
short-sighted and focused on the string "_XROOTPMAP_ID" that I didn't
realize it was the name of the standard background on the root window.
Remove our own implementation, and switch to using a standard mutter
MetaBackgroundActor.

https://bugzilla.gnome.org/show_bug.cgi?id=682428
2012-10-26 11:54:25 -04:00
9396849d56 message-tray: Restore Fittsability of summary items
The reactive area of tray items should extend to the screen edge. This
regressed when implementing the new tray design, make it work again.

https://bugzilla.gnome.org/show_bug.cgi?id=686474
2012-10-26 16:32:07 +02:00
6f5e5672bb panelMenu: Fix exception when destroying menuless button
There's explicit API to create PanelMenu.Buttons with no menu, so
guard against this case in destroy().

https://bugzilla.gnome.org/show_bug.cgi?id=686763
2012-10-26 15:49:26 +02:00
b936e60876 screenShield: Tweak curtain animation timings
Rationale:
 - Getting something out of the way should be quick;

 - Very few things in the real world move linearly so, linear
   animations, especially for something as big and visible as this,
   felt too artificial;

 - Moving the curtain out should start slower to make it feel like
   having weight (it fills the whole screen after all) but quickly
   accelerate towards the end to make it snappy too.

https://bugzilla.gnome.org/show_bug.cgi?id=686745
2012-10-26 12:56:17 +02:00
fa4bd91213 build: Stop linking gnome-desktop
Since commit 80eac7370e removed the last build-time dependency ages
ago, we only use GnomeDesktop via introspection.
2012-10-26 12:37:33 +02:00
81eeef7d3c messageTray: Hide summary notification immediately when closing the tray
When the summary notification is open when the tray is closed, we end
up with two concurrent animations: the notification fading out, and the
tray moving away from underneath it. Sliding out the tray should be the
primary transition here, so hide the notification immediately to not
draw the user's attention away from it.

https://bugzilla.gnome.org/show_bug.cgi?id=686888
2012-10-25 22:45:36 +02:00
a7b5134820 messageTray: Hide notification close button immediately on click
Having the close button move away from under the pointer after
clicking it is confusing and distracts from the main transition,
which is hiding the notification. Just hide it immediately.

https://bugzilla.gnome.org/show_bug.cgi?id=682237
2012-10-25 22:41:32 +02:00
92a01c67ba messageTray: Don't destroy the notification when clicking on the close button
Clicking on the close button should simply hide the notification.

https://bugzilla.gnome.org/show_bug.cgi?id=682237
2012-10-25 22:41:32 +02:00
71c23613b5 messageTray: Only hide the notification stack on clicking close
Rather than destroying the entire source, which is unintuitive, simply
close the notification. Removing the entire source is still possible
by right-clicking on the summary item and choosing "Remove".

https://bugzilla.gnome.org/show_bug.cgi?id=682237
2012-10-25 22:41:05 +02:00
4f876995de messageTray: make SummaryItem._closeButton public
Use this to show/hide the close button instead of closeButtonVisible.

https://bugzilla.gnome.org/show_bug.cgi?id=682237
2012-10-25 21:45:18 +02:00
9cf4a76196 po: Enforce RTL in fa/ug for messages that might end up as LTR
See commit 8b796d80a7.

https://bugzilla.gnome.org/show_bug.cgi?id=686630
2012-10-25 20:12:25 +02:00
9efe5287e4 gdm: Move logo into the panel
GDM has a 'logo' key in its schema to allow distributors to add
some branding. It is currently placed above the user list, which
no longer works too well since the login screen lost its dialog
window. Display the logo in the top-left corner instead of the
Activities button instead.

https://bugzilla.gnome.org/show_bug.cgi?id=685852
2012-10-25 18:31:16 +02:00
8c4b34de4e messageTray: Fix close button position in RTL locales 2012-10-25 18:31:16 +02:00
93e3559dc3 style: Adjust close button overlap
After changing the button size, we need to adjust the x-offset by
1px (apparently the y-offset already assumed the correct size).
2012-10-25 18:31:16 +02:00
caa0f63e1f style: Fix close button size
The image is actually 32px, so we end up with a slightly fuzzy
button when scaling up to 34px. Don't do that.

Spotted by lamefun.xOr<at>gmail.com

https://bugzilla.gnome.org/show_bug.cgi?id=686574
2012-10-25 18:27:59 +02:00
a4e29e1244 calendar: Handle calendar-server errors
The current code assumes that the GetEvents call will always
receive, causing an exception in the error case.

https://bugzilla.gnome.org/show_bug.cgi?id=686805
2012-10-24 18:26:03 +02:00
599f2f43e3 Revert "screenShield: Connect to the actor's show signal instead of using BEFORE_REDRAW"
This reverts commit bdeb7d86b6.

git bz PEBKAC
2012-10-24 10:17:43 -04:00
3a453c5f73 messageTray: Fix lightbox
Commit 448517032e accidentally reverted the condition for showing
the lightbox. Fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=686728
2012-10-24 09:03:12 +02:00
98b313c75f popupMenu: Overwrite ongoing animations when calling close repeatedly
Currently close() is a no-op when the menu has already been closed.
However, repeated calls could pass different animation parameters.
For instance in the user menu, we try to hide the menu immediately
before locking the screen, to avoid the popup jumping across the
screen while fading out - as we do this from the corresponding
item's activate handler, the closing is still animated if the menu's
own handler (which requests a full animation) is run first.
Fix this by changing close() to overwrite ongoing animations before
bailing out early.

https://bugzilla.gnome.org/show_bug.cgi?id=686484
2012-10-23 22:21:45 +02:00
8b796d80a7 po: Enforce RTL in he for messages that might end up as LTR
As the messages start with a string placeholder that might be
untranslated, we need an explicit mark to ensure that the string
does not end up as LTR.

https://bugzilla.gnome.org/show_bug.cgi?id=686630
2012-10-23 22:21:45 +02:00
719a8908a6 Release 3.7.1
Update NEWS
2012-10-23 21:14:10 +02:00
fed007ecae userMenu: Use LoginManager for suspend
https://bugzilla.gnome.org/show_bug.cgi?id=686482
2012-10-23 21:14:10 +02:00
990443465f powerMenu: Use LoginManager for suspend
https://bugzilla.gnome.org/show_bug.cgi?id=686482
2012-10-23 21:14:10 +02:00
1f183b8a4e loginManager: Add support for suspend()
Logind provides a Suspend method, which we should use instead of
the UPower API when available. Expose this in loginManager, using
the UPower API for the ConsoleKit implementation.

https://bugzilla.gnome.org/show_bug.cgi?id=686482
2012-10-23 21:14:10 +02:00
96556eb959 workspacesView: Add some more spacing between window and workspace thumbs
https://bugzilla.gnome.org/show_bug.cgi?id=582650
2012-10-23 15:12:45 -04:00
3ffeeac577 overview: Reduce space between window picker and dash
Do this in a hacky way by hardcoding this, for now. When we land
search rework, we can fix this.

https://bugzilla.gnome.org/show_bug.cgi?id=582650
2012-10-23 15:12:45 -04:00
d7929a2340 workspacesView: Don't conform to aspect ratio
We want the window picker to use the full height of the area it's given.

https://bugzilla.gnome.org/show_bug.cgi?id=582650
2012-10-23 15:12:45 -04:00
667019a8c1 workspace: Don't relayout windows when zooming workspace thumbnails
It looks ugly and busy to have windows shuffle around when I just wanted
to look at my workspaces.

https://bugzilla.gnome.org/show_bug.cgi?id=582650
2012-10-23 15:12:45 -04:00
d9b46b4782 workspace: Use all available space for windows in window selector
Change the layout strategy to be more like the mockups. With less than
two rows of windows, we try to fit every window in a non-aligned situation;
with more than three rows of windows, we try to fit every window in an
aligned situation.

Based heavily on a patch from Pierre-Eric Pelloux-Prayer <pelloux@gmail.com>

https://bugzilla.gnome.org/show_bug.cgi?id=582650
2012-10-23 15:12:45 -04:00
e249218a9d Allow testing GDM login dialog from the session
Check an environment variable, GDM_GREETER_TEST. If 1, LoginDialog will
skip anything that fails outside a GDM session.
It is therefore possible to test the GDM greeter without installing it
system-wide, by attempting login as the already logged in user (uses the
same code path as the unlock dialog).

https://bugzilla.gnome.org/show_bug.cgi?id=683725
2012-10-23 19:09:00 +02:00
a2b1946b01 workspacesView: Fix updating when number of workspaces changes
Ouch. This went unnoticed for a long time as by default (using
dynamic workspaces) only one workspace is added at a time, which
happens to work fine.

https://bugzilla.gnome.org/show_bug.cgi?id=686487
2012-10-23 18:27:07 +02:00
96a80f7ba0 workspacesView: Fix typo
We want to check for a setting, not the existence of a function.

https://bugzilla.gnome.org/show_bug.cgi?id=686487
2012-10-23 18:27:07 +02:00
9955fbf4f8 Updated Greek translation 2012-10-23 15:41:32 +03:00
14966b0cd0 Telepathy: Set empathy-chat as prefered handler when delegating channels
https://bugzilla.gnome.org/show_bug.cgi?id=686296
2012-10-23 12:37:05 +02:00
6e1a8f16a8 build: Bump gnome-desktop required version for GnomeIdleMonitor 2012-10-23 09:19:03 +02:00
d106191e6a Port to GnomeIdleMonitor
https://bugzilla.gnome.org/show_bug.cgi?id=682224
2012-10-22 12:06:45 -04:00
418cf6281e screenShield: explicitly load gnome-screensaver in fallback mode.
When running gnome-shell from lightDM, gnome-screensaver is no
longer auto-loaded. As a result the dbus calls for Lock user etc
will fail.

https://bugzilla.gnome.org/show_bug.cgi?id=683060
Bug-Ubuntu: https://launchpad.net/bugs/1064354
2012-10-22 11:21:18 -04:00
bdeb7d86b6 screenShield: Connect to the actor's show signal instead of using BEFORE_REDRAW
This should make sure that we grab at the right time while at the same time
not break focus handling.

https://bugzilla.gnome.org/show_bug.cgi?id=684650
2012-10-22 11:20:30 -04:00
a0e0cc1038 workspacesView: Simplify extraWorkspaces handling
https://bugzilla.gnome.org/show_bug.cgi?id=686002
2012-10-21 18:53:48 -04:00
78f6dec73b workspacesView: Don't show workspace switcher when it doesn't make sense
Hide workspace switcher if dynamic workspaces is disabled and number of
workspaces is set to one only, since the user is bound to only one workspace
and showing the switcher is redundant.

Signed-off-by: Seif Lotfy <seif@lotfy.com>
2012-10-20 01:39:52 +02:00
f6458f215f userMenu: Hide menu immediately before suspending
The same logic as for commit 1f30670c1d applies to the case
where we lock the screen before suspending - we don't want the
menu to jump to the opposite screen side to fade out, so remove
the animation altogether.

https://bugzilla.gnome.org/show_bug.cgi?id=686484
2012-10-19 19:09:41 +02:00
c7e0d547c4 Add missing translations for GSetting schema
These are showing in the UI of gnome-tweak-tool.

https://bugzilla.gnome.org/show_bug.cgi?id=686413
2012-10-18 22:58:51 +02:00
fa54cfa0c3 Updated slovak translation 2012-10-18 20:41:36 +02:00
31ea3f737c messageTray: Remove hack for the lack of negative units in libcroco
libcroco now has native support for negative units.

https://bugzilla.gnome.org/show_bug.cgi?id=686240
2012-10-18 12:50:49 -04:00
2a8a8065a8 ScreenShield: implement o.g.ScreenSaver.GetActiveTime
Part of the old gnome-screensaver interface, returns the number of seconds
that the screensaver has been active for.

https://bugzilla.gnome.org/show_bug.cgi?id=686064
2012-10-18 15:30:40 +02:00
d3ba002313 st: Remove unused methods
This reverts commits cd024e21f0 and dc9ad8df80.

https://bugzilla.gnome.org/show_bug.cgi?id=679268
2012-10-17 23:25:56 +02:00
f18fd8d959 userMenu: Rely on automatic texture changes
This reverts commit 6f3cf0ae50.

https://bugzilla.gnome.org/show_bug.cgi?id=679268
2012-10-17 23:25:56 +02:00
d54f7b13fb st-widget: Keep background-image and border-image updated
Currently we miss changes to a file referenced in background-image
or border-image.
Connect to the StTextureCache::texture-file-changed signal to keep
up with file changes and update the drawing state if necessary.

https://bugzilla.gnome.org/show_bug.cgi?id=679268
2012-10-17 23:25:56 +02:00
9c8b75206c st-texture-cache: Add texture-file-changed signal
For textures loaded from files, the cache might hide image changes
by keeping the data of a previous version around indefinitely. For
instance AccountsService will notify of avatar changes, but as new
image is copied over the old one, we will continue to use the old
image data.
Install a file monitor for each file resource we load and clear
the corresponding data from the cache on changes, emitting the
new StTextureCache::texture-file-changed signal.

https://bugzilla.gnome.org/show_bug.cgi?id=679268
2012-10-17 23:25:56 +02:00
15273c7f22 st: Canonicalize URLs in stylesheets
Make _st_theme_resolve_url() a bit smarter by canonicalizing the
resulting path (e.g. resolving references to /./ and /../).

https://bugzilla.gnome.org/show_bug.cgi?id=679268
2012-10-17 23:25:56 +02:00
0ea8217c55 st: Fix handling of file:// URIs in _st_theme_resolve_uri()
https://bugzilla.gnome.org/show_bug.cgi?id=679268
2012-10-17 23:03:07 +02:00
1735f28f5a Remove use of deprecated g_type_init () ...
... and bump GObject requirement accordingly.

https://bugzilla.gnome.org/show_bug.cgi?id=686318
2012-10-17 22:49:32 +02:00
8de4070f7f autorunManager: Stop erring on the side of caution for network mounts
Every mount that we care about that's local should have a GVolume
associated with it.

https://bugzilla.gnome.org/show_bug.cgi?id=686241
2012-10-17 12:24:45 -04:00
45e64f453f runDialog: Use a symbolic icon
Another fallout from the St.IconType changes

https://bugzilla.gnome.org/show_bug.cgi?id=686233
2012-10-17 12:04:28 -04:00
62dc5f2ac6 Updated Serbian translation 2012-10-17 10:09:46 +02:00
86c85a752e loginScreen: Add support for 'disable-restart-buttons'
GDM's GSettings schema contains a 'disable-restart-buttons' key
that currently is only supported by the fallback greeter.
Implement support in the shell greeter as well.

https://bugzilla.gnome.org/show_bug.cgi?id=686247
2012-10-16 22:57:37 +02:00
3de0ebf7fd messageTray: Change timestamp string formats
The timestamps before contained unnecessary information.
Additionally, align the timestamps to be in the middle of the
bubble for design reasons.

https://bugzilla.gnome.org/show_bug.cgi?id=680989
2012-10-16 22:35:10 +02:00
1496ba0bbd messageTray: Clean up "TODO" code
The code here says to remove it after the GNOME3 release. Better late
than never.
2012-10-16 12:20:46 -04:00
f5974f6793 messageTray: Primarily use a GIcon to drive the source's icon
This is a bit of a cleanup since we ported notification icons/secondary
icons to be in the same situation.

https://bugzilla.gnome.org/show_bug.cgi?id=680426
2012-10-16 12:14:16 -04:00
928ea3bb01 messageTray: Use a GIcon for a notification's icon/secondary icon
Using a GIcon instead of an actor means that we can always create
a new icon with the right size from an old icon.

https://bugzilla.gnome.org/show_bug.cgi?id=680426
2012-10-16 12:14:16 -04:00
b7acb1d488 st-texture-cache: Remove load_icon_name
With the St.Icon bug fixed, we have removed the last use of load_icon_name.
Celebration time!
2012-10-16 11:01:25 -04:00
360d94dd67 modalDialog: Remove the fade in buttons code
Due to a typo, it never worked correctly. After a fix-up to the appropriate
method, the behavior is suboptimal, as the buttons only fade in the first time
the modal dialog is constructed. Just remove the fade-in behavior, rather than
keeping this non-working code around.

https://bugzilla.gnome.org/show_bug.cgi?id=677426
2012-10-16 10:49:20 -04:00
671a813135 Updated Japanese translation 2012-10-16 23:30:05 +09:00
c005417f9b Updated Galician translations 2012-10-16 14:22:21 +02:00
b5ec68bda3 Updated Spanish translation 2012-10-16 11:11:40 +02:00
b4ed29094d Updated Belarusian translation. 2012-10-16 12:05:56 +03:00
284ab031b8 Updated Slovenian translation 2012-10-16 08:34:57 +02:00
6ad5064c09 Updated Indonesian translation 2012-10-16 07:15:32 +07:00
3a8e723a36 data: Expose '<Super>F10' shortcut in System Settings
https://bugzilla.gnome.org/show_bug.cgi?id=672909
2012-10-16 01:38:12 +02:00
dd3484b93f dash: Open 'Show Apps' with Super+A
This is a workaround for power users for the "Show Apps" button
placement being too inconvenient to press at the bottom of the
dash favorites list.

Unity also uses Super+A to show the Apps lens.

https://bugzilla.gnome.org/show_bug.cgi?id=685738
2012-10-16 01:38:12 +02:00
205773b700 Bump version to 3.6.1
Update NEWS
2012-10-16 01:34:30 +02:00
f2039070e6 build: Add missing files 2012-10-16 01:34:30 +02:00
cf58a7eafd dash: Reset show-apps label on drag-end
Currently the label for the show-apps button is only updated during
drag operations, so after an item is successfully dropped on the
button, the label will still read "Remove from Favorites".
Fix this by resetting the label on drag-end.

https://bugzilla.gnome.org/show_bug.cgi?id=684627
2012-10-15 23:22:34 +02:00
487749c25b st-entry: Force a relayout if necessary
ClutterText will only queue a relayout after font changes if it has
any contents other than the empty string. As a result, its height
request may change after the first character has been entered. To
avoid this visual glitch, force a relayout on actual font changes.

https://bugzilla.gnome.org/show_bug.cgi?id=685534
2012-10-15 23:01:42 +02:00
48fb16b570 ScreenShield: show the unlock dialog on the primary monitor when using the keyboard
Make ModalDialog.open() accept an optional onPrimary argument, and
pass it when the dialog is activated using ESC or Return.

https://bugzilla.gnome.org/show_bug.cgi?id=685855
2012-10-15 22:45:19 +02:00
f94369dd6e Updated German translation 2012-10-15 20:46:38 +02:00
fc0bd3b9e8 Updated Latvian translation. 2012-10-15 20:15:59 +03:00
19946f1d19 Updated Danish translation 2012-10-15 06:36:57 +02:00
562f56130a Updated Kannada Translation 2012-10-14 23:24:53 +05:30
99f97adfc6 UnlockDialog: reset UI on verification failure
When failing verification, reset the UI to the default pre-password
request state, waiting for the next prompt.

https://bugzilla.gnome.org/show_bug.cgi?id=685441
2012-10-14 18:48:13 +02:00
5ad7db722d ScreenShield: don't allow cancelling the curtain by pressing esc twice in the dialog
If esc is pressed twice in succession in the unlock dialog, the curtain
is cancelled, but the dialog is cleared after the first esc cancels it,
and it's not destroyed and recreated.

https://bugzilla.gnome.org/show_bug.cgi?id=685441
2012-10-14 18:48:13 +02:00
a7d344d287 Make org.gnome.ScreenSaver.SetActive work
The interface was declared to take an unsigned integer instead
of a boolean, as gnome-screensaver does. Due to this,
gnome-screensaver-command --activate or --deactivate does not
work when used with gnome-shell.

https://bugzilla.gnome.org/show_bug.cgi?id=686063
2012-10-13 21:07:08 -04:00
0ac215f9de autorunManager: Fix another StIconType removal regression
https://bugzilla.gnome.org/show_bug.cgi?id=686079
2012-10-13 14:40:51 +02:00
4342155748 dateMenu: Hide "Open Calendar" item if calendar unavailable
The configured calendar application might not actually be installed.
Instead of failing with an error message, hide the menu item altogether
in this case.

https://bugzilla.gnome.org/show_bug.cgi?id=686050
2012-10-13 14:40:51 +02:00
b561694bf0 theme: Remove left-over style 2012-10-13 14:40:51 +02:00
cae9a8d608 Updated Korean translation 2012-10-13 18:56:02 +09:00
88fbdba018 panel: Fix a copy/paste type when dealing with panel corners
Since panel corners are currently square, this doesn't really affect much,
but it's very clear what the code was supposed to be. At the same time,
also fix up a redeclaration with 'let', which technically isnt' kosher.
2012-10-12 17:47:21 -04:00
046067565a workspace: fix typo in removeThumbnails.
https://bugzilla.gnome.org/show_bug.cgi?id=684869
2012-10-12 17:44:10 -04:00
11299d9913 Updated British English translation 2012-10-12 18:57:03 +01:00
42ab233b08 L10N: Updated Persian translation 2012-10-12 20:38:12 +03:30
4a92d7d1b2 st-im-text: Chain up to parent first in dispose()
The actor's GtkIMContext is freed in dispose and reset in unrealize - as
ClutterActor's dispose will unrealize the actor if necessary, chaining
up to the parent after clearing the im context will result in warnings
if the actor is still realized, so chain up first.

https://bugzilla.gnome.org/show_bug.cgi?id=686016
2012-10-12 14:56:34 +02:00
2502ca6ccc tests: Actually call test() in box-layout 2012-10-11 19:27:56 -03:00
651030ba93 layout: Fix an accidental undefined variable error
The layout code was using actorData without defining it first.

https://bugzilla.gnome.org/show_bug.cgi?id=673189
2012-10-11 19:23:40 -03:00
8dfea9566e Updated Norwegian bokmål translation. 2012-10-11 20:25:20 +02:00
8cc54ce2a2 loginDialog: Add focus indication
While keynav works on login screen and unlock dialog, most elements
currently miss a focus indication.

https://bugzilla.gnome.org/show_bug.cgi?id=684730
2012-10-11 19:04:43 +02:00
3abfcda8b5 loginDialog: Use the same focus root for dialog and ctrl-alt-tab
Adding a group to the Ctrl-Alt-Tab popup will also add it to the
focus manager. Due to that, we currently end up with two focus
groups added for the login dialog - an explicit one for the entire
dialog, and an implicit one for the main content group.
When doing keynav, we ascend in the widget hierarchy from the
currently focused actor until we find a valid focus root, so
adding a children of the dialog as focus root breaks keynav to
any actors that are not inside the main content group.
The simple fix is to use the same group in both cases.

https://bugzilla.gnome.org/show_bug.cgi?id=684730
2012-10-11 19:04:43 +02:00
cf0ae8f182 screenShield: Remove erroneous top/bottom padding that may appear
If there are either no resident or persistent notifications, we'll
add some spacing for those boxes that may contain nothing. Make them
invisible to remove the spacing for those elements. It's possible
that we may want to be smarter about this in StBoxLayout to remove
spacing for zero-sized actors, but today is not the day.

https://bugzilla.gnome.org/show_bug.cgi?id=685919
2012-10-11 12:26:00 -03:00
d90bf5c6dc theme: Make the notifications box match mockups better
Adjust font sizes, spacing and padding, and add a box shadow
to the notifications box.

https://bugzilla.gnome.org/show_bug.cgi?id=685919
2012-10-11 12:26:00 -03:00
955b550e95 screenShield: Add some padding between the clock and notifications box
https://bugzilla.gnome.org/show_bug.cgi?id=685919
2012-10-11 12:26:00 -03:00
b3cd46a5c8 screenShield: Align notifications to the left, not the middle
With different lengths of text in notifications, icons aren't
aligned and things look ugly. Put notifications on the left
for now.

https://bugzilla.gnome.org/show_bug.cgi?id=685919
2012-10-11 12:26:00 -03:00
3fdc8bfa3d main: Override focus-change-on-pointer-rest preference
The application menu is currently unusable with non-maximized
windows when using focus-follows-mouse mode. Override mutter's
focus-change-on-pointer-rest preference, so that the actual
focus change is delayed until the pointer stops moving.

https://bugzilla.gnome.org/show_bug.cgi?id=678169
2012-10-11 16:30:33 +02:00
e8f96a6e16 loginDialog: Sync :expanded better with user list visibility
Now that we use a different text style for the username depending on
whether the user list is expanded or not, changing the :expanded style
before the actual transition looks disruptive. Adding the style right
before fading in other items and removing it right after fading them
out gives a better result.

https://bugzilla.gnome.org/show_bug.cgi?id=685201
2012-10-11 16:14:38 +02:00
dc15df1aa7 loginDialog: Remove now unused functions
https://bugzilla.gnome.org/show_bug.cgi?id=685201
2012-10-11 16:14:38 +02:00
05f5fac35b loginDialog: Use the same prompt layout as the unlock dialog
Currently the layout of the password prompt differs slightly between
login dialog and unlock screen - for the former, the prompt is
displayed next to the user avatar, replacing the user name, for
the latter, it is diplayed below both avatar and name.

https://bugzilla.gnome.org/show_bug.cgi?id=685201
2012-10-11 16:14:38 +02:00
5bfcc5392d messageTray: Reset summary after losing focus to outside actor
Currently when the summary boxpointer is ungrabbed automatically
because the keyboard focus was moved outside the message tray
(for instance by selecting the overview search entry or opening
the right-click menu of a dash item), after the popup is hidden
_updateState() will grab focus and show the popup again.
Work around this by unsetting the clicked summary item when losing
focus to an actor outside the message tray.

https://bugzilla.gnome.org/show_bug.cgi?id=685156
2012-10-11 14:28:42 +02:00
d2e830cce3 messageTray: Do not add the tray unconditionally to ctrl-alt-tab
Commit 448517032e added the message tray unconditionally to
the Ctrl-Alt-Tab popup, but while this makes sense for a normal
session, we do not want it in the login screen.
Be a bit more careful where we make the tray available.

https://bugzilla.gnome.org/show_bug.cgi?id=685914
2012-10-11 08:00:55 +02:00
1e942be639 Add a new code style/hacking guide
Written in Markdown style.

Somewhat based off of the gjs code style guide found at
http://git.gnome.org/browse/gjs/plain/doc/Style_Guide.txt.

https://bugzilla.gnome.org/show_bug.cgi?id=661241
2012-10-10 19:11:36 -03:00
576009bad0 theme: Make the selected text color white for all entries
This was accidentally changed when Allan cleaned up the styles for
all entries
2012-10-10 18:21:03 -03:00
f71108a214 extensionPrefs: Remove an extra parameter to set_cell_data_func 2012-10-10 18:21:03 -03:00
7109bd52f2 Updated Thai translation 2012-10-09 18:34:05 +07:00
0f6effa263 Calendar: hide all actions when on the login screen
No events on the login screen, and no opening calendars or
settings either.

https://bugzilla.gnome.org/show_bug.cgi?id=685142
2012-10-08 19:48:44 +02:00
8b0301ed00 Updated Irish translation 2012-10-07 16:21:57 -06:00
4f56fb125e overview: Make sure that we put the desktop clone at the right place
This ensures that the desktop window's smooth fadeout when going to
the overview is in the same spot as the desktop window, which may not
always be at 0, 0.

https://bugzilla.gnome.org/show_bug.cgi?id=681159
2012-10-06 16:07:55 -03:00
6487cd8c6f dash: Only set the label's text when initially showing the label
Having the tooltip change when it's visible looks strange and glitchy.
This also makes sure that "Remove from Favorites" doesn't change, even
when the user removes their mouse cursor from it.

https://bugzilla.gnome.org/show_bug.cgi?id=685313
2012-10-06 16:07:55 -03:00
06e5c25383 dash: Make the dash items accessible
https://bugzilla.gnome.org/show_bug.cgi?id=685313
2012-10-06 16:07:54 -03:00
36e5ae4a25 dash: Construct the label at init
Nothing doesn't use a label, so it doesn't make sense to
lazily initialize it.

https://bugzilla.gnome.org/show_bug.cgi?id=685313
2012-10-06 16:07:54 -03:00
245e43ea8c dash: Make the tooltip and hover effect sync up to the real insensitivity
We shouldn't display "Remove from Favorites" when dropping on the button
will do nothing.

https://bugzilla.gnome.org/show_bug.cgi?id=685313
2012-10-06 16:07:54 -03:00
52871c781a dash: Make the show apps button insensitive when we're dragging a non-favorite
This doesn't handle the tooltip case, unfortunately. That will come in a bit.

https://bugzilla.gnome.org/show_bug.cgi?id=685313
2012-10-06 16:07:54 -03:00
f994ada576 dash: Clean up unused code
https://bugzilla.gnome.org/show_bug.cgi?id=685313
2012-10-06 16:07:53 -03:00
147a6e49dc dash: Refactor some common code
Take the code that gets an app from a "source" that's duplicated
in lots of spots and refactor it out.

https://bugzilla.gnome.org/show_bug.cgi?id=685313
2012-10-06 16:07:53 -03:00
be24ee435c messageTray: Clean up and consolidate code for tween completion
https://bugzilla.gnome.org/show_bug.cgi?id=685341
2012-10-06 16:07:52 -03:00
9fac285b69 messageTray: Fix some artifacts when tweening back from the tray
The math to calculate the clip isn't quite right here -- it overcompensates
in the Y value.

https://bugzilla.gnome.org/show_bug.cgi?id=685341
2012-10-06 16:07:42 -03:00
3ed5f9cd15 gdm: Try harder to move focus to the first user
_moveFocusToItems seems to be called to early causing
clutter_actor_grab_key_focus not to be called.

So queue another attempt with BEFORE_REDRAW priority when
this happens to make sure we actually move the focus sucessfully.

https://bugzilla.gnome.org/show_bug.cgi?id=684650
2012-10-06 18:15:02 +02:00
17e70ff8ec notificationDaemon: Store tray-icon-added/removed ids
This allows extensions to reuse the trayManager.
2012-10-06 16:11:54 +02:00
6dab119650 extensionUtils: Don't warn about missing url
This did not have the desired effect and just produces noise.
2012-10-05 20:35:07 +02:00
f80eb89d57 jhbuildrc-gnome-shell: switch to the GNOME 3.8 moduleset
Now that GNOME 3.6 is out, the default development platform
should be the 3.8 moduleset.
2012-10-05 13:59:57 -04:00
f6c2902fe4 gnome-shell-build-setup.sh: Fix warning about git-bz symlink
The warning when changing the git-bz symlink triggered on
initial install. Suppress that.
2012-10-05 13:57:31 -04:00
1e890a8a0a gnome-shell-build-setup.sh: install libdb on Fedora 18.
For F18, db4-devel doesn't install the main -ldb and db.h any more,
so we need the libdb-devel package and Berkeley DB 5.
2012-10-05 13:52:41 -04:00
aa1a84e677 gnome-shell-build-setup.sh: add a note about removing install directory
If the user relocates from ~/gnome-shell to ~/gnome, they need to
remove the install directory or left-over paths will cause problems.
2012-10-05 13:35:58 -04:00
9395f310d6 extensionUtils: don't log verbosely on missing extension directory
A missing extension directory isn't worth debug spew, so check
if the error when reading the extension directory is NOT_FOUND,
and if so, suppress output.

https://bugzilla.gnome.org/show_bug.cgi?id=685466
2012-10-05 13:08:02 -04:00
b99bb3d4bb gnome-shell-build-setup.sh: Move default directory to ~/gnome
gnome-shell-build-setup.sh is generally useful for working on GNOME.
If moving on from hacking on gnome-shell to some other module,
having the checkout location be ~/gnome-shell is a little odd and
cumbersome, so start out checking things out into ~/gnome/source
and installing them into ~/gnome/install.

Add a warning if the old ~/gnome-shell exists to avoid unnecessary
checking out of every module again.

https://bugzilla.gnome.org/show_bug.cgi?id=685355
2012-10-05 13:08:02 -04:00
4f66f096ff userMenu: Ignore 'lock-enabled' setting for user switching
The preference controls whether the screen should be locked when
the screensaver is activated, not whether the screen should be
locked at all. In particular after having switched to a different
user, log out should not automatically switch back to the unlocked
session, so always activate the lock when user switching.

https://bugzilla.gnome.org/show_bug.cgi?id=685536
2012-10-05 16:15:47 +02:00
7f5f2284f3 Updated Hebrew tranlation. 2012-10-05 11:02:25 +02:00
59f9f4fca1 Updated Hebrew translation. 2012-10-05 11:02:25 +02:00
55284e418c modalDialog: Add alternative keys to activate default
Currently Return is used to activate the default button of a modal
dialog if no key is specified. It makes sense to allow alternatives
as the keypad's Enter key as well in this case.

https://bugzilla.gnome.org/show_bug.cgi?id=685511
2012-10-04 21:18:54 +02:00
20d4ffde6e loginDialog: Rely on default button for activation
Currently the default action is performed twice when pressing Return
in the login dialog, once in response to the entry's 'activate' signal,
and again by activating the default button. Usually this is not a
problem, as the second invocation is simply ignored, however it breaks
the case where multiple consecutive questions are asked (e.g. username
and password in the 'Not listed' case).
Fix the problem by not handling the 'activate' signal at all.

https://bugzilla.gnome.org/show_bug.cgi?id=685511
2012-10-04 21:18:54 +02:00
78e5d4df9d Update French translation 2012-10-04 15:34:55 +02:00
1118ec9653 GActionMuxer: disconnect group signals on finalize
The signals for the action group were being disconnected when the action
group was explicitly removed from the GActionMuxer but the same was not
being done when it was finalized.

This means that a change in the state of an action group that used to be
associated with a finalized GActionMuxer would result in a crash.  This
would happen for stateful application actions after closing a window.

https://bugzilla.gnome.org/show_bug.cgi?id=681399
2012-10-04 12:03:23 +02:00
7d6c85be42 messageTray: Don't animate the desktop clone for a failed tray grab
If we fail to grab for the message tray, we shouldn't be animating
the desktop clone. This is a regression from commit fe124e6.

https://bugzilla.gnome.org/show_bug.cgi?id=685342
2012-10-04 04:02:16 -03:00
0192a6cb12 unlockDialog: Make the prompt entry insensitive while logging in
This ensures that the user can't confusingly edit the entry while
waiting for a response.

https://bugzilla.gnome.org/show_bug.cgi?id=685444
2012-10-04 04:02:16 -03:00
0e01a81219 userMenu: Remove 'Switch Session' item
GDM does not allow concurrent logins of a single user, so making
'Switch Session' a user switch operation does not work - in order
to choose a different session, users have to log out.
Rather than making 'Switch Session' an alias of 'Log out' (which
is available anyway when multiple sessions are defined), remove
the item altogether - 'Switch Session' suggests an operation that
does not loose state, and we currently favor 'Switch Session' over
'Switch User', so on systems that have both multiple users and
multiple sessions, the latter would become unavailable.

https://bugzilla.gnome.org/show_bug.cgi?id=685062
2012-10-04 08:57:55 +02:00
36edf20273 gnome-shell-build-setup.sh: Add additional system packages
Add system packages for asn1Parser, cracklib, ruby, wireless-tools,
libsystemd-login.

https://bugzilla.gnome.org/show_bug.cgi?id=685352
2012-10-03 16:16:52 -04:00
a1bf19dbdf ShellUserVerifier: fix typo in function name, caught on auth error
https://bugzilla.gnome.org/show_bug.cgi?id=685434
2012-10-03 22:07:27 +02:00
0ad739e78b autorunManager: Don't try to scan remote filesystems
Content-Type scanning can be super expensive. The autorun manager is meant
for local filesystems that are plugged into a USB port or similar, not
remote NFS or sshfs mounts.

https://bugzilla.gnome.org/show_bug.cgi?id=684093
2012-10-03 14:36:37 -03:00
ff9509b901 autorunManager: Don't scan the filesystem if autorun is disabled
Content-Type scanning can be expensive, and the user disabled autorun, so...

https://bugzilla.gnome.org/show_bug.cgi?id=684093
2012-10-03 14:34:52 -03:00
7e496b1979 autorunManager: Clean up mount operations
Add a processMount function that's shared between mount scanning
and hotplug.

https://bugzilla.gnome.org/show_bug.cgi?id=684093
2012-10-03 14:34:52 -03:00
448517032e messageTray: Show the message tray in Ctrl+Alt+Tab outside of the overview
Since the message tray is accessible outside of the overview, it doesn't
make sense to show it only there.

https://bugzilla.gnome.org/show_bug.cgi?id=684633
2012-10-03 13:04:47 -03:00
a171e92e6c ctrlAltTab: Only set the stage focus mode when we're focusing a widget
This ensures that we don't accidentally lose focus when switching to
the message tray.

https://bugzilla.gnome.org/show_bug.cgi?id=684633
2012-10-03 13:04:46 -03:00
06e9bf9b0a gnome-shell-build-setup.sh: install git-bz
Someone starting gnome-shell development work needs git-bz set up.
Install it into the user account much like we install jhbuild.

(Getting git-bz packaged into distributions would be better, but
this improves thing easily.)

https://bugzilla.gnome.org/show_bug.cgi?id=685354
2012-10-03 09:49:39 -04:00
7d9ec8cea0 jhbuildrc-gnome-shell: add ignore_suggests = True
Adding ignore_suggests = True avoids building some large modules like
evolution speeding the build. But more importantly, it removes
gnome-disk-utility from the build. gnome-disk-utility has a hard
dependency on udisks-1.99, which is not found on anything but the
latest systems.

https://bugzilla.gnome.org/show_bug.cgi?id=685353
2012-10-03 09:49:39 -04:00
5b4553ff0c Revert "st-texture-cache: Remove load_icon_name"
This reverts commit 8b6df2e23f.

I shouldn't be going around removing API in minor releases.
Sorry about that.
2012-10-02 21:40:40 -03:00
d4ce7aef59 dnd: Fix regression from e6fd2be
We need to fetch the actor's parent before we reparent, otherwise
we won't put it back properly at the end.
2012-10-02 21:16:28 -03:00
8b6df2e23f st-texture-cache: Remove load_icon_name
With the St.Icon bug fixed, we have removed the last use of load_icon_name.
Celebration time!
2012-10-02 18:42:42 -03:00
e2ff5846df wanda: Use an StIcon again for createIcon
With the DND bug fixed, this is no longer necessary.
2012-10-02 18:42:41 -03:00
24efeff788 Really hide 'Show Keyboard Layout' on the lock screen
We have to set _showLayoutItem.actor.visible,
not _showLayoutItem.visible.
2012-10-02 15:34:10 -04:00
4f359e62df workspaceThumbnail: Fix the dynamic workspaces check for dragging
Be able to move windows between workspaces with static workspaces
enabled; the incorrect check here simply disabled all dragging
operations.

https://bugzilla.gnome.org/show_bug.cgi?id=684641
2012-10-02 16:15:23 -03:00
e6fd2bed4d dnd: Add drag actors to the stage before querying their sizes
Drag actors may be St widgets, which require that they're added
to the stage before they have a size.

https://bugzilla.gnome.org/show_bug.cgi?id=684888
2012-10-02 16:15:23 -03:00
9fb6510135 Updated Bulgarian translation 2012-10-02 05:38:07 +03:00
7206b61838 dash: Make padding even on the top/bottom of the dash
When Florian landed the new dash container to show the all apps button
always, he got the math wrong -- he forgot to add padding around the
container, and used the height of the box to calculate a y2 position,
rather than the y2 position of the box.

https://bugzilla.gnome.org/show_bug.cgi?id=684619
2012-10-01 06:49:13 -03:00
e8ab0b3e8f Updated Lithuanian translation 2012-09-30 12:31:59 +03:00
843788580e [l10n] Updated Italian translation. 2012-09-29 18:09:10 +02:00
4ceb3d890d Updated Norwegian bokmål translation 2012-09-28 16:10:46 +02:00
3f8995b25e Updated Danish translation 2012-09-27 22:54:39 +02:00
37e0cefc79 Updated Lithuanian translation 2012-09-27 22:26:37 +03:00
f026741dbb Updated Russian translation 2012-09-27 16:38:39 +04:00
044b121e01 Updated Serbian translation 2012-09-27 05:28:17 +02:00
d57c3b4f89 Updated Czech translation 2012-09-26 22:40:49 +02:00
960f7d5f2e Updated Hungarian translation 2012-09-26 16:12:46 +02:00
2f61381651 Updated Belarusian translation. 2012-09-26 15:06:04 +03:00
ba6e931e21 Updated Traditional Chinese translation(Hong Kong and Taiwan) 2012-09-26 11:53:23 +08:00
440aa0d369 Update Simplified Chinese Translations 2012-09-26 08:48:31 +08:00
f42d4b5fa2 [l10n] Updated Catalan (Valencian) translation 2012-09-26 01:29:34 +02:00
5d9fa2c484 [l10n] Updated Catalan translation 2012-09-26 01:29:28 +02:00
f5c86fa171 Added uk translation 2012-09-25 21:18:28 +03:00
f9019ce62d Update French translation 2012-09-25 17:28:22 +02:00
ee485e1728 Updated Polish translation 2012-09-25 15:14:11 +02:00
117 changed files with 9912 additions and 8390 deletions

331
HACKING Normal file
View File

@ -0,0 +1,331 @@
Coding guide
============
Our goal is to have all JavaScript code in GNOME follow a consistent style. In
a dynamic language like JavaScript, it is essential to be rigorous about style
(and unit tests), or you rapidly end up with a spaghetti-code mess.
A quick note
------------
Life isn't fun if you can't break the rules. If a rule seems unnecessarily
restrictive while you're coding, ignore it, and let the patch reviewer decide
what to do.
Indentation and whitespace
--------------------------
Use four-space indents. Braces are on the same line as their associated
statements. You should only omit braces if *both* sides of the statement are
on one line.
* One space after the `function` keyword. No space between the function name
* in a declaration or a call. One space before the parens in the `if`
* statements, or `while`, or `for` loops.
function foo(a, b) {
let bar;
if (a > b)
bar = do_thing(a);
else
bar = do_thing(b);
if (var == 5) {
for (let i = 0; i < 10; i++) {
print(i);
}
} else {
print(20);
}
}
Semicolons
----------
JavaScript allows omitting semicolons at the end of lines, but don't. Always
end statements with a semicolon.
js2-mode
--------
If using Emacs, do not use js2-mode. It is outdated and hasn't worked for a
while. emacs now has a built-in JavaScript mode, js-mode, based on
espresso-mode. It is the de facto emacs mode for JavaScript.
File naming and creation
------------------------
For JavaScript files, use lowerCamelCase-style names, with a `.js` extension.
We only use C where gjs/gobject-introspection is not available for the task, or
where C would be cleaner. To work around limitations in
gjs/gobject-introspection itself, add a new method in `shell-util.[ch]`.
Like many other GNOME projects, we prefix our C source filenames with the
library name followed by a dash, e.g. `shell-app-system.c`. Create a
`-private.h` header when you want to share code internally in the
library. These headers are not installed, distributed or introspected.
Imports
-------
Use UpperCamelCase when importing modules to distinguish them from ordinary
variables, e.g.
const GLib = imports.gi.GLib;
Imports should be categorized into one of two places. The top-most import block
should contain only "environment imports". These are either modules from
gobject-introspection or modules added by gjs itself.
The second block of imports should contain only "application imports". These
are the JS code that is in the gnome-shell codebase,
e.g. `imports.ui.popupMenu`.
Each import block should be sorted alphabetically. Don't import modules you
don't use.
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const St = imports.gi.St;
const Main = imports.ui.main;
const Params = imports.misc.params;
const Tweener = imports.ui.tweener;
const Util = imports.misc.util;
The alphabetical ordering should be done independently of the location of the
location. Never reference `imports` in actual code.
Constants
---------
We use CONSTANTS_CASE to define constants. All constants should be directly
under the imports:
const MY_DBUS_INTERFACE = 'org.my.Interface';
Variable declaration
--------------------
Always use either `const` or `let` when defining a variable.
// Iterating over an array
for (let i = 0; i < arr.length; ++i) {
let item = arr[i];
}
// Iterating over an object's properties
for (let prop in someobj) {
...
}
If you use "var" then the variable is added to function scope, not block scope.
See [What's new in JavaScript 1.7](https://developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.7#Block_scope_with_let_%28Merge_into_let_Statement%29)
Classes
-------
There are many approaches to classes in JavaScript. We use our own class framework
(sigh), which is built in gjs. The advantage is that it supports inheriting from
GObjects, although this feature isn't used very often in the Shell itself.
const IconLabelMenuItem = new Lang.Class({
Name: 'IconLabelMenuItem',
Extends: PopupMenu.PopupMenuBaseItem,
_init: function(icon, label) {
this.parent({ reactive: false });
this.addActor(icon);
this.addActor(label);
},
open: function() {
log("menu opened!");
}
});
* 'Name' is required. 'Extends' is optional. If you leave it out, you will
automatically inherit from Object.
* Leave a blank line between the "class header" (Name, Extends, and other
things) and the "class body" (methods). Leave a blank line between each
method.
* No space before the colon, one space after.
* No trailing comma after the last item.
* Make sure to use a semicolon after the closing paren to the class. It's
still a giant function call, even though it may resemble a more
conventional syntax.
GObject Introspection
---------------------
GObject Introspection is a powerful feature that allows us to have native
bindings for almost any library built around GObject. If a library requires
you to inherit from a type to use it, you can do so:
const MyClutterActor = new Lang.Class({
Name: 'MyClutterActor',
Extends: Clutter.Actor,
vfunc_get_preferred_width: function(actor, forHeight) {
return [100, 100];
},
vfunc_get_preferred_height: function(actor, forWidth) {
return [100, 100];
},
vfunc_paint: function(actor) {
let alloc = this.get_allocation_box();
Cogl.set_source_color4ub(255, 0, 0, 255);
Cogl.rectangle(alloc.x1, alloc.y1,
alloc.x2, alloc.y2);
}
});
Translatable strings, `environment.js`
--------------------------------------
We use gettext to translate the GNOME Shell into all the languages that GNOME
supports. The `gettext` function is aliased globally as `_`, you do not need to
explicitly import it. This is done through some magic in the
[environment.js](http://git.gnome.org/browse/gnome-shell/tree/js/ui/environment.js)
file. If you can't find a method that's used, it's probably either in gjs itself
or installed on the global object from the Environment.
Use 'single quotes' for programming strings that should not be translated
and "double quotes" for strings that the user may see. This allows us to
quickly find untranslated or mistranslated strings by grepping through the
sources for double quotes without a gettext call around them.
`actor` and `_delegate`
-----------------------
gjs allows us to set so-called "expando properties" on introspected objects,
allowing us to treat them like any other. Because the Shell was built before
you could inherit from GTypes natively in JS, we usually have a wrapper class
that has a property called `actor`. We call this wrapper class the "delegate".
We sometimes use expando properties to set a property called `_delegate` on
the actor itself:
const MyClass = new Lang.Class({
Name: 'MyClass',
_init: function() {
this.actor = new St.Button({ text: "This is a button" });
this.actor._delegate = this;
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
},
_onClicked: function(actor) {
actor.set_label("You clicked the button!");
}
});
The 'delegate' property is important for anything which trying to get the
delegate object from an associated actor. For instance, the drag and drop
system calls the `handleDragOver` function on the delegate of a "drop target"
when the user drags an item over it. If you do not set the `_delegate`
property, your actor will not be able to be dropped onto.
Functional style
----------------
JavaScript Array objects offer a lot of common functional programming
capabilities such as forEach, map, filter and so on. You can use these when
they make sense, but please don't have a spaghetti mess of function programming
messed in a procedural style. Use your best judgment.
Closures
--------
`this` will not be captured in a closure, it is relative to how the closure is
invoked, not to the value of this where the closure is created, because "this"
is a keyword with a value passed in at function invocation time, it is not a
variable that can be captured in closures.
All closures should be wrapped with a Lang.bind.
const Lang = imports.lang;
let closure = Lang.bind(this, function() { this._fnorbate(); });
A more realistic example would be connecting to a signal on a method of a
prototype:
const Lang = imports.lang;
const FnorbLib = imports.fborbLib;
const MyClass = new Lang.Class({
_init: function() {
let fnorb = new FnorbLib.Fnorb();
fnorb.connect('frobate', Lang.bind(this, this._onFnorbFrobate));
},
_onFnorbFrobate: function(fnorb) {
this._updateFnorb();
}
});
Object literal syntax
---------------------
In JavaScript, these are equivalent:
foo = { 'bar': 42 };
foo = { bar: 42 };
and so are these:
var b = foo['bar'];
var b = foo.bar;
If your usage of an object is like an object, then you're defining "member
variables." For member variables, use the no-quotes no-brackets syntax: `{ bar:
42 }` `foo.bar`.
If your usage of an object is like a hash table (and thus conceptually the keys
can have special chars in them), don't use quotes, but use brackets: `{ bar: 42
}`, `foo['bar']`.
Getters, setters, and Tweener
-----------------------------
Getters and setters should be used when you are dealing with an API that is
designed around setting properties, like Tweener. If you want to animate an
arbitrary property, create a getter and setter, and use Tweener to animate the
property.
const ANIMATION_TIME = 2000;
const MyClass = new Lang.Class({
Name: 'MyClass',
_init: function() {
this.actor = new St.BoxLayout();
this._position = 0;
},
get position() {
return this._position;
},
set position(value) {
this._position = value;
this.actor.set_position(value, value);
}
});
let myThing = new MyClass();
Tweener.addTween(myThing,
{ position: 100,
time: ANIMATION_TIME,
transition: 'easeOutQuad' });

View File

@ -13,6 +13,7 @@ EXTRA_DIST = \
DIST_EXCLUDE = \
.gitignore \
gnome-shell.doap \
HACKING \
MAINTAINERS \
tools/build/*

83
NEWS
View File

@ -1,3 +1,86 @@
3.7.1
=====
* Add shortcut to open application view directly [Jeremy; #685738]
* Expose '<Super>F10' shortcut in System Settings [Florian; #672909]
* Clean up timestamp format in chat notifications [Carlos; #680989]
* loginScreen: Add support for 'disable-restart-buttons' [Florian; #686247]
* Update textures automatically on file changes [Florian; #679268]
* Implement org.gnome.ScreenSaver.GetActiveTime [Giovanni; #686064]
* Add missing translations for GSetting schema [Giovanni; #686413]
* Hide workspace switcher completely when it's not necessary [Seif; #686483]
* Explicitly load gnome-screensaver when not running GDM [Tim; #683060]
* Port to GnomeIdleMonitor [Jasper; #682224]
* Set Empathy as preferred handler when delegating channels [Xavier; #686296]
* Allow testing GDM login dialog from the session [Giovanni; #683725]
* Use all available space for windows in window picker [Jasper, Pierre-Eric;
#582650]
* Use logind for suspend if available [Florian; #686482]
* Misc. fixes and cleanups [Jasper, Florian, Adel, Rui; #677426, #680426,
#686233, #686241, #686318, #686240, #686484, #686002, #684650, #686487]
Contributors:
Jeremy Bicha, Giovanni Campagna, Xavier Claessens, Adel Gadllah, Seif Lotfy,
Tim Lunn, Rui Matos, Florian Müllner, Pierre-Eric Pelloux-Prayer,
Carlos Soriano, Jasper St. Pierre
Translations:
Andika Triwidada [id], Matej Urbančič [sl], Ihar Hrachyshka [be],
Daniel Mustieles [es], Fran Diéguez [gl], Takayuki KUSANO [ja],
Мирослав Николић [sr, sr@latin], Dušan Kazik [sk], Tom Tryfonidis [el]
3.6.1
=====
* dash: Make padding even on the top/bottom of the dash [Jasper; #684619]
* Fix a crash when dragging search results [Jasper; #684888]
* workspaceThumbnail: Fix dragging with static workspaces [Jasper; #684641]
* Really hide 'Show Keyboard Layout' on the lock screen [Matthias]
* Misc. improvements to jhbuild setup [Owen; #685352, #685353, #685354, #685355]
* Show message tray in Ctrl+Alt+Tab outside of the overview [Jasper, Florian;
#684633, #685914]
* Disable hotplug sniffer on remote filesystems [Jasper; #684093]
* userMenu: Remove 'Switch Session' item [Florian; #685062]
* unlockDialog: Make prompt entry insensitive while logging in [Jasper; #685444]
* messageTray: Don't animate desktop clone for failed grabs [Jasper; #685342]
* Fix crash on dragging windows between workspaces [Ryan; #681399]
* userMenu: Ignore 'lock-enabled' setting for user switching [Florian; #685536]
* gdm: Fix key-focus on first user [Adel; #684650]
* Make grid button insensitive when dragging non-favorites [Jasper; #685313]
* Calendar: hide all actions when on the login screen [Matthias; #685142]
* Adapt unlock dialog layout for the login screen [Florian; #685201]
* Make focus-follows-mouse work better with Shell UI [Florian; #678169]
* Improve look of screen shield [Jasper; #685919]
* Fix keynav in the login screen [Florian; #684730]
* dateMenu: Hide "Open Calendar" item if calendar unavailable [Florian; #686050]
* unlockDialog: Reset UI on verification failure [Giovanni; #685441]
* Show unlock dialog on primary monitor when using keynav [Giovanni; #685855]
* Fix height changes of entries when entering text [Florian; #685534]
* Fix show-apps label after successful drags [Florian; #684627]
* Misc. bugfixes and cleanups [Jasper, Olivier, Florian, Owen, Adel, Tanner, Tim, Matthias; #685434, #685511, #685466, #685341, #685156, #681159, #673189, #686016, 684869, #686079, #686063
Contributors:
Jasper St. Pierre
Matthias Clasen
Owen Taylor
Olivier Blin
Florian Müllner
Ryan Lortie
Adel Gadllah
Tanner Doshier
Tim Lunn
Giovanni Campagna
Translations:
Tobias Endrigkeit [de], Rudolfs Mazurs [lv], Ask H. Larsen [da],
Shankar Prasad [kn], Changwoo Ryu [ko], Chris Leonard [en_GB],
Arash Mousavi [fa], Theppitak Karoonboonyanan [th], Seán de Búrca [ga],
Yaron Shahrabani [he], Alexander Shopov [bg], Žygimantas Beručka [lt],
Milo Casagrande [it], Kjartan Maraas [nb], Kris Thomsen [da],
Aurimas Černius [lt], Yuri Myasoedov [ru], Мирослав Николић [sr],
Marek Černocký [cs], Gabor Kelemen [hu], Ihar Hrachyshka [be],
Chao-Hsiung Liao [zh_HK, zh_TW], Eleanor Chen [zh_CN],
Carles Ferrando [ca@valencia], Vicent Cubells [ca], Daniel Korostil [uk],
Alexandre Franke [fr], Piotr Drąg [pl]
3.6.0
=====
* keyboard: Make input source items accessible [Florian; #684462]

View File

@ -153,8 +153,6 @@ NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin)
/* global initialization routine, called once when plugin
is loaded */
g_type_init ();
g_debug ("plugin loaded");
memcpy (&funcs, pfuncs, sizeof (funcs));

View File

@ -1,5 +1,5 @@
AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.6.0],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_INIT([gnome-shell],[3.7.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])
@ -52,7 +52,7 @@ AC_MSG_CHECKING([for GStreamer (needed for recording functionality)])
if $PKG_CONFIG --exists gstreamer-1.0 '>=' $GSTREAMER_MIN_VERSION ; then
AC_MSG_RESULT(yes)
build_recorder=true
recorder_modules="gstreamer-1.0 gstreamer-base-1.0 x11"
recorder_modules="gstreamer-1.0 gstreamer-base-1.0 x11 gtk+-3.0"
PKG_CHECK_MODULES(TEST_SHELL_RECORDER, $recorder_modules clutter-1.0 xfixes gl)
else
AC_MSG_RESULT(no)
@ -63,9 +63,9 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
CLUTTER_MIN_VERSION=1.11.11
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
GJS_MIN_VERSION=1.33.2
MUTTER_MIN_VERSION=3.6.0
MUTTER_MIN_VERSION=3.7.1
GTK_MIN_VERSION=3.3.9
GIO_MIN_VERSION=2.31.6
GIO_MIN_VERSION=2.35.0
LIBECAL_MIN_VERSION=3.5.3
LIBEDATASERVER_MIN_VERSION=3.5.3
LIBEDATASERVERUI_MIN_VERSION=3.5.3
@ -74,7 +74,7 @@ TELEPATHY_LOGGER_MIN_VERSION=0.2.4
POLKIT_MIN_VERSION=0.100
STARTUP_NOTIFICATION_MIN_VERSION=0.11
GCR_MIN_VERSION=3.3.90
GNOME_DESKTOP_REQUIRED_VERSION=3.5.1
GNOME_DESKTOP_REQUIRED_VERSION=3.7.1
GNOME_MENUS_REQUIRED_VERSION=3.5.3
# Collect more than 20 libraries for a prize!
@ -97,8 +97,7 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
telepathy-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION
polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes
libnm-glib libnm-util gnome-keyring-1
gcr-3 >= $GCR_MIN_VERSION
gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION)
gcr-3 >= $GCR_MIN_VERSION)
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
@ -120,7 +119,7 @@ CFLAGS=$saved_CFLAGS
LIBS=$saved_LIBS
PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION)
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.2 x11)
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11)
PKG_CHECK_MODULES(TRAY, gtk+-3.0)
PKG_CHECK_MODULES(GVC, libpulse libpulse-mainloop-glib gobject-2.0)
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.5.4)
@ -139,7 +138,7 @@ PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
AC_SUBST([HAVE_BLUETOOTH],[0])
AC_MSG_RESULT([no])])
PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION libedataserverui-3.0 >= $LIBEDATASERVERUI_MIN_VERSION gio-2.0)
PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION gio-2.0)
AC_SUBST(CALENDAR_SERVER_CFLAGS)
AC_SUBST(CALENDAR_SERVER_LIBS)

View File

@ -8,5 +8,11 @@
<KeyListEntry name="toggle-message-tray"
_description="Show the message tray"/>
<KeyListEntry name="toggle-application-view"
_description="Show all applications"/>
<KeyListEntry name="open-application-menu"
_description="Open the application menu"/>
</KeyListEntries>

View File

@ -113,9 +113,13 @@
<doc:summary>
<doc:para>
A dictionary describing the given search result, containing
'id', 'name' (both strings) and either 'icon' (a serialized
GIcon) or 'icon-data' (raw image data as (iiibiiay) - width,
height, rowstride, has-alpha, bits per sample, channels, data)
'id' and 'name' (both strings). Optionally, either 'gicon' (a
serialized GIcon) or 'icon-data' (raw image data as (iiibiiay)
- width, height, rowstride, has-alpha, bits per sample,
channels, data) can be specified if the result can be better
served with a thumbnail of the content (such as with images).
A 'description' field (string) may also be specified if more
context would help the user find the desired result.
</doc:para>
</doc:summary>
</doc:doc>
@ -143,5 +147,25 @@
</doc:doc>
</arg>
</method>
<method name="LaunchSearch">
<doc:doc>
<doc:description>
<doc:para>
Called when the user clicks on the provider icon. The provider
application should open and run the active search term itself.
</doc:para>
</doc:description>
</doc:doc>
<arg type="as" direction="in">
<doc:doc>
<doc:summary>
<doc:para>
The current search term(s).
</doc:para>
</doc:summary>
</doc:doc>
</arg>
</method>
</interface>
</node>

View File

@ -57,6 +57,14 @@ value here is from the TpConnectionPresenceType enumeration.</_summary>
<_summary>Internally used to store the last session presence status for the user. The
value here is from the GsmPresenceStatus enumeration.</_summary>
</key>
<key name="always-show-log-out" type="b">
<default>false</default>
<_summary>Always show the 'Log out' menuitem in the user menu.</_summary>
<_description>
This key overrides the automatic hiding of the 'Log out'
menuitem in single-user, single-session situations.
</_description>
</key>
<child name="calendar" schema="org.gnome.shell.calendar"/>
<child name="recorder" schema="org.gnome.shell.recorder"/>
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
@ -83,6 +91,14 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
Keybinding to open the application menu.
</_description>
</key>
<key name="toggle-application-view" type="as">
<default>["&lt;Super&gt;a"]</default>
<_summary>Keybinding to open the "Show Applications" view</_summary>
<_description>
Keybinding to open the "Show Applications" view of the Activities
Overview.
</_description>
</key>
<key name="toggle-message-tray" type="as">
<default>["&lt;Super&gt;m"]</default>
<_summary>Keybinding to toggle the visibility of the message tray</_summary>
@ -148,44 +164,53 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
</key>
</schema>
<schema id="org.gnome.shell.overrides" path="/org/gnome/shell/overrides/">
<schema id="org.gnome.shell.overrides" path="/org/gnome/shell/overrides/"
gettext-domain="@GETTEXT_PACKAGE@">
<key name="attach-modal-dialogs" type="b">
<default>true</default>
<summary>Attach modal dialog to the parent window</summary>
<description>
<_summary>Attach modal dialog to the parent window</_summary>
<_description>
This key overrides the key in org.gnome.mutter when running
GNOME Shell.
</description>
</_description>
</key>
<key name="button-layout" type="s">
<default>":close"</default>
<summary>Arrangement of buttons on the titlebar</summary>
<description>
<_summary>Arrangement of buttons on the titlebar</_summary>
<_description>
This key overrides the key in org.gnome.desktop.wm.preferences when
running GNOME Shell.
</description>
</_description>
</key>
<key name="edge-tiling" type="b">
<default>true</default>
<summary>Enable edge tiling when dropping windows on screen edges</summary>
<description>
<_summary>Enable edge tiling when dropping windows on screen edges</_summary>
<_description>
This key overrides the key in org.gnome.mutter when running GNOME Shell.
</description>
</_description>
</key>
<key name="dynamic-workspaces" type="b">
<default>true</default>
<summary>Workspaces are managed dynamically</summary>
<description>
<_summary>Workspaces are managed dynamically</_summary>
<_description>
This key overrides the key in org.gnome.mutter when running GNOME Shell.
</description>
</_description>
</key>
<key name="workspaces-only-on-primary" type="b">
<default>true</default>
<summary>Workspaces only on primary monitor</summary>
<_summary>Workspaces only on primary monitor</_summary>
<_description>
This key overrides the key in org.gnome.mutter when running GNOME Shell.
</_description>
</key>
<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>
This key overrides the key in org.gnome.mutter when running GNOME Shell.
</description>

View File

@ -39,7 +39,6 @@ stage {
/* small */
.app-well-menu,
.contact-details-status,
.run-dialog-label,
.run-dialog-error-label {
font-size: 9pt;
}
@ -311,7 +310,7 @@ StScrollBar StButton#vhandle:active {
.notification-icon-button:focus,
.hotplug-notification-item:focus,
.modal-dialog-button:focus {
border: 2px solid #8b8b8b;
border-width: 2px;
}
.dash-search-button:active,
@ -326,26 +325,30 @@ StScrollBar StButton#vhandle:active {
background-gradient-end: rgba(255, 255, 255, 0.2);
}
.notification-button:insensitive,
.notification-icon-button:insensitive,
.notification-button:insensitive {
.modal-dialog-button:insensitive {
border-color: #666666;
color: #9f9f9f;
background-gradient-direction: none;
background-color: rgba(102, 102, 102, 0.15);
}
/* Entries */
#searchEntry,
.notification StEntry,
.login-dialog-prompt-entry,
.prompt-dialog-password-entry {
.modal-dialog StEntry {
color: rgb(64, 64, 64);
caret-color: rgb(64, 64, 64);
font-size: 12pt;
caret-size: 1px;
selected-color: black;
selected-color: white;
padding: 4px 12px;
}
#searchEntry,
.run-dialog-entry,
.notification StEntry {
border: 2px solid rgba(245,245,245,0.2);
background-gradient-start: rgba(5,5,6,0.1);
@ -358,8 +361,7 @@ StScrollBar StButton#vhandle:active {
#searchEntry:focus,
#searchEntry:hover,
.notification StEntry:focus,
.login-dialog-prompt-entry,
.prompt-dialog-password-entry {
.modal-dialog StEntry {
border: 2px solid rgb(136,138,133);
background-gradient-start: rgb(200,200,200);
background-gradient-end: white;
@ -368,12 +370,17 @@ StScrollBar StButton#vhandle:active {
}
.notification StEntry:focus,
.prompt-dialog-password-entry:focus,
.login-dialog-prompt-entry:focus {
.modal-dialog StEntry:focus {
border: 2px solid #3465a4;
}
#searchEntry {
border-color: rgba(245,245,245,0.3);
color: rgb(192, 192, 192);
caret-color: rgb(192, 192, 192);
}
#searchEntry:hover {
color: rgb(128, 128, 128);
caret-color: rgb(128, 128, 128);
}
@ -386,8 +393,7 @@ StScrollBar StButton#vhandle:active {
}
.notification StEntry,
.prompt-dialog-password-entry,
.login-dialog-prompt-entry {
.modal-dialog StEntry {
border-radius: 5px;
padding: 4px 4px;
}
@ -402,6 +408,8 @@ StScrollBar StButton#vhandle:active {
.login-dialog-prompt-entry:insensitive {
color: rgba(0,0,0,0.7);
border: 2px solid #565656;
background-gradient-start: rgb(200,200,200);
background-gradient-end: rgb(210,210,210);
}
/* Panel */
@ -549,7 +557,6 @@ StScrollBar StButton#vhandle:active {
}
.status-chooser-combo.popup-combo-menu {
background-color: rgba(0,0,0,0.7);
padding: .4em 0em;
border-radius: 4px;
border: 1px solid #5f5f5f;
@ -567,6 +574,10 @@ StScrollBar StButton#vhandle:active {
/* Overview */
#overview {
spacing: 40px;
}
#overview-group {
spacing: 12px;
}
@ -612,9 +623,9 @@ StScrollBar StButton#vhandle:active {
.window-close, .notification-close {
background-image: url("close-window.svg");
background-size: 34px;
height: 34px;
width: 34px;
background-size: 32px;
height: 32px;
width: 32px;
}
.window-close {
@ -625,19 +636,31 @@ StScrollBar StButton#vhandle:active {
/* we start out in the top right of the
* notification, inset.
*
* center is 32px/2 = 17px
* center is 32px/2 = 16px
*
* adjust left 2px
* adjust down 8px */
-shell-close-overlap-x: 15px;
-shell-close-overlap-y: 12px;
-shell-close-overlap-x: 14px;
-shell-close-overlap-y: -12px;
}
.notification-close:rtl {
/* as above, but starting out in the top left of the
* notification. */
-shell-close-overlap-x: -14px;
}
.window-close:rtl {
-st-background-image-shadow: 2px 2px 6px rgba(0,0,0,0.5);
}
.window-picker {
-horizontal-spacing: 40px;
-vertical-spacing: 40px;
}
/* Dash */
#dash {
@ -656,11 +679,6 @@ StScrollBar StButton#vhandle:active {
border-radius: 9px 0px 0px 9px;
}
#dash:empty {
height: 100px;
width: 60px;
}
.placeholder {
background-image: url("dash-placeholder.svg");
background-size: contain;
@ -680,6 +698,11 @@ StScrollBar StButton#vhandle:active {
.search-entry-icon {
icon-size: 1em;
color: #c0c0c0;
}
#searchEntry:hover .search-entry-icon,
#searchEntry:focus .search-entry-icon {
color: #8d8f8a;
}
@ -692,7 +715,7 @@ StScrollBar StButton#vhandle:active {
#searchResultsContent {
padding-right: 20px;
spacing: 36px;
spacing: 16px;
}
#searchResultsContent:rtl {
@ -700,6 +723,25 @@ StScrollBar StButton#vhandle:active {
padding-left: 20px;
}
.search-section {
/* This should be equal to #searchResultsContent spacing */
spacing: 16px;
}
.search-section-separator {
-gradient-height: 1px;
-gradient-start: rgba(255,255,255,0);
-gradient-end: rgba(255,255,255,0.5);
-margin-horizontal: 1.5em;
height: 1px;
}
.search-section-content {
/* This is the space between the provider icon and the results container */
spacing: 25px;
}
.search-statustext,
.search-section-header {
padding: 4px 12px;
spacing: 4px;
@ -725,6 +767,14 @@ StScrollBar StButton#vhandle:active {
spacing: 4px;
}
.search-providers-box {
spacing: 12px;
}
.results-list {
spacing: 5px;
}
/* Text labels are an odd number of pixels tall. The uneven top and bottom
* padding compensates for this and ensures that the label is vertically
* centered */
@ -805,7 +855,10 @@ StScrollBar StButton#vhandle:active {
.app-well-app > .overview-icon,
.show-apps > .overview-icon,
.search-result-content > .overview-icon {
.remove-favorite > .overview-icon,
.search-section-icon-bin,
.search-result,
.grid-search-result-content > .overview-icon {
border-radius: 4px;
padding: 3px;
border: 1px rgba(0,0,0,0);
@ -821,7 +874,10 @@ StScrollBar StButton#vhandle:active {
.app-well-app:hover > .overview-icon,
.show-apps:hover > .overview-icon,
.search-result-content:hover > .overview-icon {
.remove-favorite:hover > .overview-icon,
.search-section-icon-bin:hover,
.search-result:hover,
.grid-search-result-content:hover > .overview-icon {
background-color: rgba(255,255,255,0.1);
text-shadow: black 0px 2px 2px;
transition-duration: 100;
@ -856,13 +912,39 @@ StScrollBar StButton#vhandle:active {
}
.app-well-app:focus > .overview-icon,
.search-result-content:focus > .overview-icon,
.show-apps:focus > .overview-icon,
.search-section-icon-bin:focus,
.search-result:focus,
.grid-search-result-content:focus > .overview-icon,
.app-well-app:selected > .overview-icon,
.search-result-content:selected > .overview-icon {
.search-section-icon-bin:selected,
.search-result:selected,
.grid-search-result-content:selected > .overview-icon {
background-color: rgba(255,255,255,0.33);
}
/* List Results */
.search-result {
padding: 15px;
}
.search-result-content {
spacing: 12px;
}
.search-result-details {
font-weight: bold;
}
.search-result-details-title {
font-size: 16pt;
}
.search-result-details-description {
font-size: 14pt;
}
/* LookingGlass */
#LookingGlassDialog {
@ -1191,7 +1273,6 @@ StScrollBar StButton#vhandle:active {
background: #2e3436 url(message-tray-background.png);
background-repeat: repeat;
transition-duration: 250;
height: 72px;
}
#message-tray:keyboard {
@ -1201,7 +1282,7 @@ StScrollBar StButton#vhandle:active {
#message-tray:overview {
background: rgba(0, 0, 0, 0.1);
border-top: 1px solid rgba(128, 128, 128, 0.3);
outline: 1px solid rgba(128, 128, 128, 0.3);
}
.notification {
@ -1423,28 +1504,34 @@ StScrollBar StButton#vhandle:active {
}
#summary-mode {
padding: 0px 6px 0px 6px; /* same as the values in .summary-source */
height: 60px;
spacing: 10px;
height: 72px;
}
.summary-source-button {
border-radius: 4px;
transition-duration: 100;
padding: 6px 3px 6px 3px;
}
.summary-source-button:hover {
.summary-source-button:last-child:ltr {
padding-right: 6px;
}
.summary-source-button:last-child:rtl {
padding-left: 6px;
}
.summary-source-button:hover .summary-source {
background-color: rgba(255,255,255,0.1);
}
.summary-source-button:focus,
.summary-source-button:selected {
.summary-source-button:focus .summary-source,
.summary-source-button:selected .summary-source {
background-color: rgba(255,255,255,0.33);
}
.summary-source {
padding-right: 6px;
padding-left: 6px;
border-radius: 4px;
padding: 0 6px 0 6px;
transition-duration: 100;
}
.summary-source-counter {
@ -1622,35 +1709,26 @@ StScrollBar StButton#vhandle:active {
padding: 4px 32px 5px;
}
.modal-dialog-button:insensitive {
color: rgb(60, 60, 60);
}
.modal-dialog-button:focus {
padding: 3px 31px 4px;
}
/* Run Dialog */
.run-dialog-label {
font-size: 12pt;
font-weight: bold;
color: #999999;
padding-bottom: .4em;
}
.run-dialog-error-box {
padding-top: 15px;
spacing: 5px;
}
.run-dialog-entry {
font-weight: bold;
width: 23em;
selection-background-color: white;
selected-color: black;
}
.run-dialog {
border-radius: 16px;
padding-right: 21px;
padding-left: 21px;
padding-bottom: 15px;
padding-top: 15px;
.modal-dialog .run-dialog-entry {
width: 20em;
}
.lightbox {
@ -2031,7 +2109,6 @@ StScrollBar StButton#vhandle:active {
}
.login-dialog-user-list-item {
color: #666666;
border-radius: 10px;
padding: .2em;
}
@ -2049,6 +2126,11 @@ StScrollBar StButton#vhandle:active {
padding-left: 1em;
}
.login-dialog-user-list:expanded .login-dialog-user-list-item {
color: #666666;
}
.login-dialog-user-list-item,
.login-dialog-user-list-item:hover .login-dialog-user-list-item-name,
.login-dialog-user-list:expanded .login-dialog-user-list-item:focus .login-dialog-user-list-item-name,
.login-dialog-user-list:expanded .login-dialog-user-list-item:logged-in {
@ -2096,6 +2178,7 @@ StScrollBar StButton#vhandle:active {
padding-top: 1em;
}
.login-dialog-not-listed-button:focus .login-dialog-not-listed-label,
.login-dialog-not-listed-button:hover .login-dialog-not-listed-label {
color: #E8E8E8;
}
@ -2171,18 +2254,24 @@ StScrollBar StButton#vhandle:active {
height: .75em;
}
.login-dialog .modal-dialog-button {
border: 1px solid #666666;
border-radius: 5px;
padding: 3px 18px;
}
.login-dialog .modal-dialog-button:focus {
padding: 2px 17px;
}
.login-dialog .modal-dialog-button:default {
background-gradient-start: #6793c4;
background-gradient-end: #335d8f;
background-gradient-direction: vertical;
border: 2px solid #16335d;
border-color: #16335d;
}
.login-dialog .modal-dialog-button:default:focus {
border: 2px solid #377fe7;
}
.login-dialog .modal-dialog-button:default:hover {
@ -2196,6 +2285,13 @@ StScrollBar StButton#vhandle:active {
background-gradient-end: #74a0d0;
}
.login-dialog .modal-dialog-button:default:insensitive {
border-color: #666666;
color: #9f9f9f;
background-gradient-direction: none;
background-color: rgba(102, 102, 102, 0.15);
}
.login-dialog-message-warning {
color: orange;
}
@ -2228,6 +2324,10 @@ StScrollBar StButton#vhandle:active {
-arrow-shadow: 0 1px 1px rgba(0,0,0,0.4);
}
.screen-shield-contents-box {
spacing: 48px;
}
.screen-shield-clock {
color: white;
text-shadow: 0px 1px 2px rgba(0,0,0,0.6);
@ -2237,12 +2337,12 @@ StScrollBar StButton#vhandle:active {
}
.screen-shield-clock-time {
font-size: 86px;
font-size: 72pt;
text-shadow: 0px 2px 2px rgba(0,0,0,0.4);
}
.screen-shield-clock-date {
font-size: 48px;
font-size: 28pt;
}
#screenShieldNotifications {
@ -2250,11 +2350,12 @@ StScrollBar StButton#vhandle:active {
background-color: rgba(0.0, 0.0, 0.0, 0.9);
border: 2px solid #868686;
max-height: 500px;
padding: 12px 0;
padding: 18px 0;
box-shadow: .5em .5em 20px rgba(0, 0, 0, 0.5);
}
.screen-shield-notifications-box {
spacing: 12px;
spacing: 18px;
}
.screen-shield-notification-source {
@ -2265,6 +2366,7 @@ StScrollBar StButton#vhandle:active {
.screen-shield-notification-label {
font-size: 1.2em;
font-weight: bold;
color: #babdb6;
}
/* Remove background from notifications, otherwise

View File

@ -41,6 +41,7 @@ nobase_dist_js_DATA = \
ui/boxpointer.js \
ui/calendar.js \
ui/checkBox.js \
ui/centerLayout.js \
ui/ctrlAltTab.js \
ui/dash.js \
ui/dateMenu.js \

View File

@ -174,7 +174,7 @@ const Application = new Lang.Class({
let renderer = new Gtk.CellRendererText();
this._extensionSelector.pack_start(renderer, true);
this._extensionSelector.add_attribute(renderer, 'text', 1);
this._extensionSelector.set_cell_data_func(renderer, Lang.bind(this, this._setExtensionInsensitive), null);
this._extensionSelector.set_cell_data_func(renderer, Lang.bind(this, this._setExtensionInsensitive));
this._extensionSelector.connect('changed', Lang.bind(this, this._extensionSelected));
toolitem = new Gtk.ToolItem({ child: this._extensionSelector });

View File

@ -25,6 +25,7 @@ const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta;
const Lang = imports.lang;
const Pango = imports.gi.Pango;
const Signals = imports.signals;
@ -38,13 +39,14 @@ const GdmUtil = imports.gdm.util;
const Lightbox = imports.ui.lightbox;
const Main = imports.ui.main;
const ModalDialog = imports.ui.modalDialog;
const PanelMenu = imports.ui.panelMenu;
const Tweener = imports.ui.tweener;
const UserMenu = imports.ui.userMenu;
const _RESIZE_ANIMATION_TIME = 0.25;
const _SCROLL_ANIMATION_TIME = 0.5;
const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0;
const _LOGO_ICON_NAME_SIZE = 48;
const _LOGO_ICON_HEIGHT = 16;
let _loginDialog = null;
@ -81,6 +83,36 @@ function _smoothlyResizeActor(actor, width, height) {
return hold;
}
const LogoMenuButton = new Lang.Class({
Name: 'LogoMenuButton',
Extends: PanelMenu.Button,
_init: function() {
this.parent(0.0, null, true);
this._settings = new Gio.Settings({ schema: GdmUtil.LOGIN_SCREEN_SCHEMA });
this._settings.connect('changed::' + GdmUtil.LOGO_KEY,
Lang.bind(this, this._updateLogo));
this._iconBin = new St.Bin();
this.actor.add_actor(this._iconBin);
this._updateLogo();
},
_updateLogo: function() {
let path = this._settings.get_string(GdmUtil.LOGO_KEY);
let icon = null;
if (path) {
let file = Gio.file_new_for_path(path);
let cache = St.TextureCache.get_default();
icon = cache.load_uri_async(file.get_uri(), -1, _LOGO_ICON_HEIGHT);
}
this._iconBin.set_child(icon);
}
});
const UserListItem = new Lang.Class({
Name: 'UserListItem',
@ -149,14 +181,6 @@ const UserListItem = new Lang.Class({
this.emit('activate');
},
fadeOutName: function() {
return GdmUtil.fadeOutActor(this._nameLabel);
},
fadeInName: function() {
return GdmUtil.fadeInActor(this._nameLabel);
},
showTimedLoginIndicator: function(time) {
let hold = new Batch.Hold();
@ -207,16 +231,18 @@ const UserList = new Lang.Class({
if (global.stage.get_key_focus() != this.actor)
return;
this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
let focusSet = this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
if (!focusSet) {
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
this._moveFocusToItems();
return false;
}));
}
},
_showItem: function(item) {
let tasks = [function() {
return GdmUtil.fadeInActor(item.actor);
},
function() {
return item.fadeInName();
}];
let batch = new Batch.ConsecutiveBatch(this, tasks);
@ -280,13 +306,16 @@ const UserList = new Lang.Class({
});
}
this._box.remove_style_pseudo_class('expanded');
let batch = new Batch.ConsecutiveBatch(this,
[function() {
return GdmUtil.fadeOutActor(this.actor.vscroll);
},
new Batch.ConcurrentBatch(this, tasks)
new Batch.ConcurrentBatch(this, tasks),
function() {
this._box.remove_style_pseudo_class('expanded');
}
]);
return batch.run();
@ -336,7 +365,6 @@ const UserList = new Lang.Class({
});
}
this._box.add_style_pseudo_class('expanded');
let batch = new Batch.ConsecutiveBatch(this,
[function() {
this.takeOverWhitespace();
@ -347,6 +375,10 @@ const UserList = new Lang.Class({
return _smoothlyResizeActor(this._box, -1, fullHeight);
},
function() {
this._box.add_style_pseudo_class('expanded');
},
new Batch.ConcurrentBatch(this, tasks),
function() {
@ -637,15 +669,17 @@ const LoginDialog = new Lang.Class({
this._userManager = AccountsService.UserManager.get_default()
this._greeterClient = new Gdm.Client();
this._greeter = this._greeterClient.get_greeter_sync(null);
if (GLib.getenv('GDM_GREETER_TEST') != '1') {
this._greeter = this._greeterClient.get_greeter_sync(null);
this._greeter.connect('default-session-name-changed',
Lang.bind(this, this._onDefaultSessionChanged));
this._greeter.connect('default-session-name-changed',
Lang.bind(this, this._onDefaultSessionChanged));
this._greeter.connect('session-opened',
Lang.bind(this, this._onSessionOpened));
this._greeter.connect('timed-login-requested',
Lang.bind(this, this._onTimedLoginRequested));
this._greeter.connect('session-opened',
Lang.bind(this, this._onSessionOpened));
this._greeter.connect('timed-login-requested',
Lang.bind(this, this._onTimedLoginRequested));
}
this._userVerifier = new GdmUtil.ShellUserVerifier(this._greeterClient);
this._userVerifier.connect('ask-question', Lang.bind(this, this._askQuestion));
@ -656,17 +690,11 @@ const LoginDialog = new Lang.Class({
this._settings = new Gio.Settings({ schema: GdmUtil.LOGIN_SCREEN_SCHEMA });
this._settings.connect('changed::' + GdmUtil.LOGO_KEY,
Lang.bind(this, this._updateLogo));
this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_KEY,
Lang.bind(this, this._updateBanner));
this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_TEXT_KEY,
Lang.bind(this, this._updateBanner));
this._logoBox = new St.Bin({ style_class: 'login-dialog-logo-box' });
this.contentLayout.add(this._logoBox);
this._updateLogo();
this._bannerLabel = new St.Label({ style_class: 'login-dialog-banner',
text: '' });
this.contentLayout.add(this._bannerLabel);
@ -679,31 +707,23 @@ const LoginDialog = new Lang.Class({
{ y_fill: false,
y_align: St.Align.START });
let mainContentBox = new St.BoxLayout({ vertical: false });
this.contentLayout.add(mainContentBox,
this._userList = new UserList();
this.contentLayout.add(this._userList.actor,
{ expand: true,
x_fill: true,
y_fill: false });
this._userList = new UserList();
mainContentBox.add(this._userList.actor,
{ expand: true,
x_fill: true,
y_fill: true });
y_fill: true });
this.setInitialKeyFocus(this._userList.actor);
this._promptBox = new St.BoxLayout({ style_class: 'login-dialog-prompt-layout',
vertical: true });
mainContentBox.add(this._promptBox,
{ expand: true,
x_fill: true,
y_fill: true,
x_align: St.Align.START });
this.contentLayout.add(this._promptBox,
{ expand: true,
x_fill: true,
y_fill: true,
x_align: St.Align.START });
this._promptLabel = new St.Label({ style_class: 'login-dialog-prompt-label' });
this._mainContentBox = mainContentBox;
this._promptBox.add(this._promptLabel,
{ expand: true,
x_fill: true,
@ -775,20 +795,6 @@ const LoginDialog = new Lang.Class({
},
_updateLogo: function() {
this._logoBox.child = null;
let path = this._settings.get_string(GdmUtil.LOGO_KEY);
if (path) {
let file = Gio.file_new_for_path(path);
let uri = file.get_uri();
let textureCache = St.TextureCache.get_default();
this._logoBox.child = textureCache.load_uri_async(uri, -1, _LOGO_ICON_NAME_SIZE);
}
},
_updateBanner: function() {
let enabled = this._settings.get_boolean(GdmUtil.BANNER_MESSAGE_KEY);
let text = this._settings.get_string(GdmUtil.BANNER_MESSAGE_TEXT_KEY);
@ -807,8 +813,7 @@ const LoginDialog = new Lang.Class({
let tasks = [this._hidePrompt,
new Batch.ConcurrentBatch(this, [this._fadeInTitleLabel,
this._fadeInNotListedButton,
this._fadeInLogo]),
this._fadeInNotListedButton]),
function() {
this._sessionList.close();
@ -834,9 +839,13 @@ const LoginDialog = new Lang.Class({
},
_showMessage: function(userVerifier, message, styleClass) {
this._promptMessage.text = message;
this._promptMessage.styleClass = styleClass;
GdmUtil.fadeInActor(this._promptMessage);
if (message) {
this._promptMessage.text = message;
this._promptMessage.styleClass = styleClass;
GdmUtil.fadeInActor(this._promptMessage);
} else {
GdmUtil.fadeOutActor(this._promptMessage);
}
},
_showLoginHint: function(verifier, message) {
@ -901,15 +910,6 @@ const LoginDialog = new Lang.Class({
label: C_("button", "Sign In"),
default: true }];
this._promptEntryActivateCallbackId = this._promptEntry.clutter_text.connect('activate',
Lang.bind(this, function() {
hold.release();
}));
hold.connect('release', Lang.bind(this, function() {
this._promptEntry.clutter_text.disconnect(this._promptEntryActivateCallbackId);
this._promptEntryActivateCallbackId = null;
}));
let tasks = [function() {
return this._fadeInPrompt();
},
@ -926,11 +926,6 @@ const LoginDialog = new Lang.Class({
},
_hidePrompt: function() {
if (this._promptEntryActivateCallbackId) {
this._promptEntry.clutter_text.disconnect(this._promptEntryActivateCallbackId);
this._promptEntryActivateCallbackId = null;
}
this.setButtons([]);
let tasks = [function() {
@ -1108,8 +1103,7 @@ const LoginDialog = new Lang.Class({
},
new Batch.ConcurrentBatch(this, [this._fadeOutTitleLabel,
this._fadeOutNotListedButton,
this._fadeOutLogo]),
this._fadeOutNotListedButton]),
function() {
let hold = new Batch.Hold();
@ -1122,14 +1116,6 @@ const LoginDialog = new Lang.Class({
batch.run();
},
_fadeInLogo: function() {
return GdmUtil.fadeInActor(this._logoBox);
},
_fadeOutLogo: function() {
return GdmUtil.fadeOutActor(this._logoBox);
},
_fadeInBanner: function() {
return GdmUtil.fadeInActor(this._bannerLabel);
},
@ -1177,13 +1163,8 @@ const LoginDialog = new Lang.Class({
return this._userList.giveUpWhitespace();
},
function() {
return activatedItem.fadeOutName();
},
new Batch.ConcurrentBatch(this, [this._fadeOutTitleLabel,
this._fadeOutNotListedButton,
this._fadeOutLogo]),
this._fadeOutNotListedButton]),
function() {
return this._userList.shrinkToNaturalHeight();
@ -1236,7 +1217,7 @@ const LoginDialog = new Lang.Class({
},
_onOpened: function() {
Main.ctrlAltTabManager.addGroup(this._mainContentBox,
Main.ctrlAltTabManager.addGroup(this.dialogLayout,
_("Login Window"),
'dialog-password',
{ sortGroup: CtrlAltTab.SortGroup.MIDDLE });

View File

@ -18,11 +18,12 @@
* 02111-1307, USA.
*/
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const UPowerGlib = imports.gi.UPowerGlib;
const LoginManager = imports.misc.loginManager;
const GdmUtil = imports.gdm.util;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
@ -33,15 +34,14 @@ const PowerMenuButton = new Lang.Class({
_init: function() {
/* Translators: accessible name of the power menu in the login screen */
this.parent('system-shutdown-symbolic', _("Power"));
this._upClient = new UPowerGlib.Client();
this._loginManager = LoginManager.getLoginManager();
this._createSubMenu();
this._settings = new Gio.Settings({ schema: GdmUtil.LOGIN_SCREEN_SCHEMA });
this._settings.connect('changed::disable-restart-buttons',
Lang.bind(this, this._updateVisibility));
this._upClient.connect('notify::can-suspend',
Lang.bind(this, this._updateHaveSuspend));
this._updateHaveSuspend();
this._createSubMenu();
// ConsoleKit doesn't send notifications when shutdown/reboot
// are disabled, so we update the menu item each time the menu opens
@ -50,15 +50,17 @@ const PowerMenuButton = new Lang.Class({
if (open) {
this._updateHaveShutdown();
this._updateHaveRestart();
this._updateHaveSuspend();
}
}));
this._updateHaveShutdown();
this._updateHaveRestart();
this._updateHaveSuspend();
},
_updateVisibility: function() {
let shouldBeVisible = (this._haveSuspend || this._haveShutdown || this._haveRestart);
this.actor.visible = shouldBeVisible;
this.actor.visible = shouldBeVisible && !this._settings.get_boolean('disable-restart-buttons');
},
_updateHaveShutdown: function() {
@ -78,9 +80,11 @@ const PowerMenuButton = new Lang.Class({
},
_updateHaveSuspend: function() {
this._haveSuspend = this._upClient.get_can_suspend();
this._suspendItem.actor.visible = this._haveSuspend;
this._updateVisibility();
this._loginManager.canSuspend(Lang.bind(this, function(result) {
this._haveSuspend = result;
this._suspendItem.actor.visible = this._haveSuspend;
this._updateVisibility();
}));
},
_createSubMenu: function() {
@ -103,8 +107,10 @@ const PowerMenuButton = new Lang.Class({
},
_onActivateSuspend: function() {
if (this._haveSuspend)
this._upClient.suspend_sync(null);
if (!this._haveSuspend)
return;
this._loginManager.suspend();
},
_onActivateRestart: function() {

View File

@ -125,6 +125,9 @@ const ShellUserVerifier = new Lang.Class({
},
answerQuery: function(serviceName, answer) {
// Clear any previous message
this.emit('show-message', null, null);
this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null);
},
@ -143,7 +146,7 @@ const ShellUserVerifier = new Lang.Class({
_reportInitError: function(where, error) {
logError(error, where);
this._hold.relase();
this._hold.release();
this.emit('show-message', _("Authentication error"), 'login-dialog-message-warning');
this._verificationFailed(false);
@ -330,12 +333,11 @@ const ShellUserVerifier = new Lang.Class({
// Otherwise, we allow ALLOWED_FAILURES attempts. After that, we
// go back to the welcome screen.
this._failCounter++;
let canRetry = retry && this._userName &&
this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY);
if (canRetry) {
this._failCounter++;
this.clear();
this.begin(this._userName, new Batch.Hold());
} else {

View File

@ -120,11 +120,6 @@ function createExtensionObject(uuid, dir, type) {
}
}
// Encourage people to add this
if (!meta.url) {
log('Warning: Missing "url" property in %s/metadata.json'.format(uuid));
}
if (uuid != meta.uuid) {
throw new Error('uuid "' + meta.uuid + '" from metadata.json does not match directory name "' + uuid + '"');
}
@ -161,7 +156,8 @@ const ExtensionFinder = new Lang.Class({
try {
fileEnum = dir.enumerate_children('standard::*', Gio.FileQueryInfoFlags.NONE, null);
} catch(e) {
logError(e, 'Could not enumerate extensions directory');
if (e.domain != Gio.io_error_quark() || e.code != Gio.IOErrorEnum.NOT_FOUND)
logError(e, 'Could not enumerate extensions directory');
return;
}

View File

@ -3,7 +3,9 @@
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Shell = imports.gi.Shell;
const UPowerGlib = imports.gi.UPowerGlib;
const SystemdLoginManagerIface = <interface name='org.freedesktop.login1.Manager'>
<method name='PowerOff'>
@ -12,12 +14,18 @@ const SystemdLoginManagerIface = <interface name='org.freedesktop.login1.Manager
<method name='Reboot'>
<arg type='b' direction='in'/>
</method>
<method name='Suspend'>
<arg type='b' direction='in'/>
</method>
<method name='CanPowerOff'>
<arg type='s' direction='out'/>
</method>
<method name='CanReboot'>
<arg type='s' direction='out'/>
</method>
<method name='CanSuspend'>
<arg type='s' direction='out'/>
</method>
</interface>;
const SystemdLoginSessionIface = <interface name='org.freedesktop.login1.Session'>
@ -123,12 +131,25 @@ const LoginManagerSystemd = new Lang.Class({
});
},
canSuspend: function(asyncCallback) {
this._proxy.CanSuspendRemote(function(result, error) {
if (error)
asyncCallback(false);
else
asyncCallback(result[0] != 'no');
});
},
powerOff: function() {
this._proxy.PowerOffRemote(true);
},
reboot: function() {
this._proxy.RebootRemote(true);
},
suspend: function() {
this._proxy.SuspendRemote(true);
}
});
@ -139,6 +160,7 @@ const LoginManagerConsoleKit = new Lang.Class({
this._proxy = new ConsoleKitManager(Gio.DBus.system,
'org.freedesktop.ConsoleKit',
'/org/freedesktop/ConsoleKit/Manager');
this._upClient = new UPowerGlib.Client();
},
// Having this function is a bit of a hack since the Systemd and ConsoleKit
@ -186,12 +208,22 @@ const LoginManagerConsoleKit = new Lang.Class({
});
},
canSuspend: function(asyncCallback) {
Mainloop.idle_add(Lang.bind(this, function() {
asyncCallback(this._upClient.get_can_suspend());
return false;
}));
},
powerOff: function() {
this._proxy.StopRemote();
},
reboot: function() {
this._proxy.RestartRemote();
},
suspend: function() {
this._upClient.suspend_sync(null);
}
});

View File

@ -1,6 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const GMenu = imports.gi.GMenu;
@ -371,6 +372,8 @@ const SettingsSearchProvider = new Lang.Class({
this._appSys = Shell.AppSystem.get_default();
this._gnomecc = this._appSys.lookup_app('gnome-control-center.desktop');
let appInfo = Gio.DesktopAppInfo.new('gnome-control-center.desktop');
this.icon = appInfo.get_icon();
},
getResultMetas: function(prefs, callback) {
@ -379,9 +382,7 @@ const SettingsSearchProvider = new Lang.Class({
let pref = prefs[i];
metas.push({ 'id': pref,
'name': pref.get_name(),
'createIcon': function(size) {
return pref.create_icon_texture(size);
}
'createIcon': function(size) { return; }
});
}
callback(metas);
@ -461,15 +462,15 @@ const AppWellIcon = new Lang.Class({
this._draggable.connect('drag-begin', Lang.bind(this,
function () {
this._removeMenuTimeout();
Main.overview.beginItemDrag(this);
Main.overview.beginAppDrag(this);
}));
this._draggable.connect('drag-cancelled', Lang.bind(this,
function () {
Main.overview.cancelledItemDrag(this);
Main.overview.cancelledAppDrag(this);
}));
this._draggable.connect('drag-end', Lang.bind(this,
function () {
Main.overview.endItemDrag(this);
Main.overview.endAppDrag(this);
}));
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));

View File

@ -141,6 +141,7 @@ const BoxPointer = new Lang.Class({
this._muteInput();
Tweener.removeTweens(this);
Tweener.addTween(this, { opacity: fade ? 0 : 255,
xOffset: xOffset,
yOffset: yOffset,

View File

@ -270,8 +270,9 @@ const DBusEventSource = new Lang.Class({
this._loadEvents(false);
},
_onEventsReceived: function([appointments]) {
_onEventsReceived: function(results, error) {
let newEvents = [];
let appointments = results ? results[0] : null;
if (appointments != null) {
for (let n = 0; n < appointments.length; n++) {
let a = appointments[n];

93
js/ui/centerLayout.js Normal file
View File

@ -0,0 +1,93 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Lang = imports.lang;
const Clutter = imports.gi.Clutter;
const St = imports.gi.St;
function connectLayoutManager(layoutManager, styleChanged) {
let widget, styleChangedId;
function _styleChanged() {
let themeNode = widget.get_theme_node();
styleChanged(themeNode, widget);
}
function actorChanged() {
if (widget) {
widget.disconnect(styleChangedId);
styleChangedId = 0;
}
let actor = layoutManager.get_actor();
if (actor && actor instanceof St.Widget) {
widget = actor;
styleChangedId = widget.connect('style-changed', _styleChanged);
_styleChanged();
}
}
layoutManager.connect('notify::actor', actorChanged);
return layoutManager;
}
function connectSpacing(layoutManager) {
return connectLayoutManager(layoutManager, function(themeNode, widget) {
layoutManager.spacing = themeNode.get_length('spacing');
});
}
const CenterLayout = new Lang.Class({
Name: 'CenterLayout',
Extends: Clutter.BoxLayout,
vfunc_allocate: function(container, box, flags) {
let rtl = container.get_text_direction() == Clutter.TextDirection.RTL;
let availWidth = box.x2 - box.x1;
let availHeight = box.y2 - box.y1;
// Assume that these are the first three widgets and they are all visible.
let [left, center, right] = container.get_children();
// Only support horizontal layouts for now.
let [centerMinWidth, centerNaturalWidth] = center.get_preferred_width(availWidth);
let sideWidth = (availWidth - centerNaturalWidth) / 2;
let childBox = new Clutter.ActorBox();
childBox.y1 = box.y1;
childBox.y2 = box.y1 + availHeight;
if (left) {
let [leftMinWidth, leftNaturalWidth] = left.get_preferred_width(availWidth);
let leftSide = Math.min(Math.floor(sideWidth), leftNaturalWidth);
if (rtl) {
childBox.x1 = availWidth - leftSide;
childBox.x2 = availWidth;
} else {
childBox.x1 = 0;
childBox.x2 = leftSide;
}
childBox.x1 += box.x1;
left.allocate(childBox, flags);
}
childBox.x1 = box.x1 + Math.ceil(sideWidth);
childBox.x2 = childBox.x1 + centerNaturalWidth;
center.allocate(childBox, flags);
if (right) {
let [rightMinWidth, rightNaturalWidth] = right.get_preferred_width(availWidth);
let rightSide = Math.min(Math.floor(sideWidth), rightNaturalWidth);
if (rtl) {
childBox.x1 = 0;
childBox.x2 = rightSide;
} else {
childBox.x1 = availWidth - rightSide;
childBox.x2 = availWidth;
}
childBox.x1 += box.x1;
right.allocate(childBox, flags);
}
}
});

View File

@ -44,6 +44,17 @@ function isMountRootHidden(root) {
return (path.indexOf('/.') != -1);
}
function isMountNonLocal(mount) {
// If the mount doesn't have an associated volume, that means it's
// an uninteresting filesystem. Most devices that we care about will
// have a mount, like media players and USB sticks.
let volume = mount.get_volume();
if (volume == null)
return true;
return (volume.get_identifier("class") == "network");
}
function startAppForMount(app, mount) {
let files = [];
let root = mount.get_root();
@ -83,13 +94,21 @@ const ContentTypeDiscoverer = new Lang.Class({
_init: function(callback) {
this._callback = callback;
this._settings = new Gio.Settings({ schema: SETTINGS_SCHEMA });
},
guessContentTypes: function(mount) {
// guess mount's content types using GIO
mount.guess_content_type(false, null,
Lang.bind(this,
this._onContentTypeGuessed));
let autorunEnabled = !this._settings.get_boolean(SETTING_DISABLE_AUTORUN);
let shouldScan = autorunEnabled && !isMountNonLocal(mount);
if (shouldScan) {
// guess mount's content types using GIO
mount.guess_content_type(false, null,
Lang.bind(this,
this._onContentTypeGuessed));
} else {
this._emitCallback(mount, []);
}
},
_onContentTypeGuessed: function(mount, res) {
@ -175,16 +194,21 @@ const AutorunManager = new Lang.Class({
this._volumeMonitor.disconnect(this._mountRemovedId);
},
_processMount: function(mount, hotplug) {
let discoverer = new ContentTypeDiscoverer(Lang.bind(this, function(mount, apps, contentTypes) {
this._ensureResidentSource();
this._residentSource.addMount(mount, apps);
if (hotplug)
this._transDispatcher.addMount(mount, apps, contentTypes);
}));
discoverer.guessContentTypes(mount);
},
_scanMounts: function() {
let mounts = this._volumeMonitor.get_mounts();
mounts.forEach(Lang.bind(this, function (mount) {
let discoverer = new ContentTypeDiscoverer(Lang.bind (this,
function (mount, apps) {
this._ensureResidentSource();
this._residentSource.addMount(mount, apps);
}));
discoverer.guessContentTypes(mount);
mounts.forEach(Lang.bind(this, function(mount) {
this._processMount(mount, false);
}));
},
@ -194,14 +218,7 @@ const AutorunManager = new Lang.Class({
if (!this._loginManager.sessionActive)
return;
let discoverer = new ContentTypeDiscoverer(Lang.bind (this,
function (mount, apps, contentTypes) {
this._transDispatcher.addMount(mount, apps, contentTypes);
this._ensureResidentSource();
this._residentSource.addMount(mount, apps);
}));
discoverer.guessContentTypes(mount);
this._processMount(mount, true);
},
_onMountRemoved: function(monitor, mount) {
@ -391,7 +408,7 @@ const AutorunResidentNotification = new Lang.Class({
expand: true });
let ejectIcon =
new St.Icon({ icon_name: 'media-eject',
new St.Icon({ icon_name: 'media-eject-symbolic',
style_class: 'hotplug-resident-eject-icon' });
let ejectButton =
@ -527,9 +544,8 @@ const AutorunTransientSource = new Lang.Class({
this.notify(this._notification);
},
createIcon: function(size) {
return new St.Icon({ gicon: this.mount.get_icon(),
icon_size: size });
getIcon: function() {
return this.mount.get_icon();
}
});
@ -592,7 +608,7 @@ const AutorunTransientNotification = new Lang.Class({
_buttonForEject: function() {
let box = new St.BoxLayout();
let icon = new St.Icon({ icon_name: 'media-eject',
let icon = new St.Icon({ icon_name: 'media-eject-symbolic',
style_class: 'hotplug-notification-item-icon' });
box.add(icon);

View File

@ -408,7 +408,10 @@ const VPNRequestHandler = new Lang.Class({
}
},
cancel: function() {
cancel: function(respond) {
if (respond)
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.USER_CANCELED);
if (this._newStylePlugin && this._shellDialog) {
this._shellDialog.close(global.get_current_time());
this._shellDialog.destroy();
@ -599,6 +602,16 @@ const NetworkAgent = new Lang.Class({
},
disable: function() {
let requestId;
for (requestId in this._dialogs)
this._dialogs[requestId].cancel();
this._dialogs = { };
for (requestId in this._vpnRequests)
this._vpnRequests[requestId].cancel(true);
this._vpnRequests = { };
this._native.unregister();
},
@ -622,7 +635,7 @@ const NetworkAgent = new Lang.Class({
this._dialogs[requestId].destroy();
delete this._dialogs[requestId];
} else if (this._vpnRequests[requestId]) {
this._vpnRequests[requestId].cancel();
this._vpnRequests[requestId].cancel(false);
delete this._vpnRequests[requestId];
}
},

View File

@ -41,7 +41,7 @@ const Recorder = new Lang.Class({
recorder.set_framerate(this._recorderSettings.get_int('framerate'));
/* Translators: this is a filename used for screencast recording */
// xgettext:no-c-format
recorder.set_filename(_("Screencast from %d %t") + '.' + this._recorderSettings.get_string('file-extension'));
recorder.set_file_template(_("Screencast from %d %t") + '.' + this._recorderSettings.get_string('file-extension'));
let pipeline = this._recorderSettings.get_string('pipeline');
if (!pipeline.match(/^\s*$/))

View File

@ -509,51 +509,42 @@ const ChatSource = new Lang.Class({
this._notification.appendAliasChange(oldAlias, newAlias);
},
createIcon: function(size) {
this._iconBox = new St.Bin({ style_class: 'avatar-box' });
this._iconBox._size = size;
let textureCache = St.TextureCache.get_default();
getIcon: function() {
let file = this._contact.get_avatar_file();
if (file) {
let uri = file.get_uri();
this._iconBox.child = textureCache.load_uri_async(uri, this._iconBox._size, this._iconBox._size);
return new Gio.FileIcon({ file: file });
} else {
this._iconBox.child = new St.Icon({ icon_name: 'avatar-default',
icon_size: this._iconBox._size });
return new Gio.ThemedIcon({ name: 'avatar-default' });
}
return this._iconBox;
},
createSecondaryIcon: function() {
let iconBox = new St.Bin();
iconBox.child = new St.Icon({ style_class: 'secondary-icon' });
getSecondaryIcon: function() {
let iconName;
let presenceType = this._contact.get_presence_type();
switch (presenceType) {
case Tp.ConnectionPresenceType.AVAILABLE:
iconBox.child.icon_name = 'user-available';
iconName = 'user-available';
break;
case Tp.ConnectionPresenceType.BUSY:
iconBox.child.icon_name = 'user-busy';
iconName = 'user-busy';
break;
case Tp.ConnectionPresenceType.OFFLINE:
iconBox.child.icon_name = 'user-offline';
iconName = 'user-offline';
break;
case Tp.ConnectionPresenceType.HIDDEN:
iconBox.child.icon_name = 'user-invisible';
iconName = 'user-invisible';
break;
case Tp.ConnectionPresenceType.AWAY:
iconBox.child.icon_name = 'user-away';
iconName = 'user-away';
break;
case Tp.ConnectionPresenceType.EXTENDED_AWAY:
iconBox.child.icon_name = 'user-idle';
iconName = 'user-idle';
break;
default:
iconBox.child.icon_name = 'user-offline';
iconName = 'user-offline';
}
return iconBox;
return new Gio.ThemedIcon({ name: iconName });
},
_updateAvatarIcon: function() {
@ -564,7 +555,9 @@ const ChatSource = new Lang.Class({
open: function(notification) {
if (this._client.is_handling_channel(this._channel)) {
// We are handling the channel, try to pass it to Empathy
this._client.delegate_channels_async([this._channel], global.get_current_time(), '', null);
this._client.delegate_channels_async([this._channel],
global.get_current_time(),
'org.freedesktop.Telepathy.Client.Empathy.Chat', null);
}
else {
// We are not the handler, just ask to present the channel
@ -733,7 +726,7 @@ const ChatSource = new Lang.Class({
title = GLib.markup_escape_text(this.title, -1);
this._notification.update(this._notification.title, null, { customContent: true, secondaryIcon: this.createSecondaryIcon() });
this._notification.update(this._notification.title, null, { customContent: true, secondaryGIcon: this.getSecondaryIcon() });
if (message)
msg += ' <i>(' + GLib.markup_escape_text(message, -1) + ')</i>';
@ -761,7 +754,7 @@ const ChatNotification = new Lang.Class({
Extends: MessageTray.Notification,
_init: function(source) {
this.parent(source, source.title, null, { customContent: true, secondaryIcon: source.createSecondaryIcon() });
this.parent(source, source.title, null, { customContent: true, secondaryGIcon: source.getSecondaryIcon() });
this.setResident(true);
this._responseEntry = new St.Entry({ style_class: 'chat-response',
@ -939,24 +932,32 @@ const ChatNotification = new Lang.Class({
let format;
// Show a week day and time if date is in the last week
if (daysAgo < 1 || (daysAgo < 7 && now.getDay() != date.getDay())) {
/* Translators: this is a time format string followed by a date.
If applicable, replace %X with a strftime format valid for your
locale, without seconds. */
// Show only the hour if date is on today
if(daysAgo < 1){
format = "<b>%H:%M</b>";
}
// Show the word "Yesterday" and time if date is on yesterday
else if(daysAgo <2){
/* Translators: this is a time format string followed by the word "Yesterday". i.e. "14:30 on Yesterday"*/
// xgettext:no-c-format
format = _("Sent at <b>%X</b> on <b>%A</b>");
format = _("<b>%H:%M</b> on Yesterday");
}
// Show a week day and time if date is in the last week
else if (daysAgo < 7) {
/* Translators: this is a time format string followed by a week day name. i.e. "14:30 on Monday*/
// xgettext:no-c-format
format = _("<b>%H:%M</b> on <b>%A</b>");
} else if (date.getYear() == now.getYear()) {
/* Translators: this is a time format in the style of "Wednesday, May 25",
shown when you get a chat message in the same year. */
/* Translators: this is a time format in the style of "14:30 on Wednesday, May 25",
shown when you get a chat message in the same year */
// xgettext:no-c-format
format = _("Sent on <b>%A</b>, <b>%B %d</b>");
format = _("<b>%H:%M</b> on <b>%A</b>, <b>%B</b> <b>%d</b>");
} else {
/* Translators: this is a time format in the style of "Wednesday, May 25, 2012",
shown when you get a chat message in a different year. */
/* Translators: this is a time format in the style of "14:30 on Wednesday, May 25, 2012",
shown when you get a chat message in a different year */
// xgettext:no-c-format
format = _("Sent on <b>%A</b>, <b>%B %d</b>, %Y");
format = _("<b>%H:%M</b> on <b>%A</b>, <b>%B</b> <b>%d</b>, %Y");
}
return date.toLocaleFormat(format);
@ -969,8 +970,7 @@ const ChatNotification = new Lang.Class({
let timeLabel = this._append({ body: this._formatTimestamp(lastMessageDate),
group: 'meta',
styles: ['chat-meta-message'],
childProps: { expand: true, x_fill: false,
x_align: St.Align.END },
childProps: { expand: true, x_fill: false },
noTimestamp: true,
timestamp: lastMessageTime });
@ -1071,9 +1071,8 @@ const ApproverSource = new Lang.Class({
this.parent();
},
createIcon: function(size) {
return new St.Icon({ gicon: this._gicon,
icon_size: size });
getIcon: function() {
return this._gicon;
}
});

View File

@ -54,16 +54,17 @@ const CtrlAltTabManager = new Lang.Class({
},
focusGroup: function(item) {
if (global.stage_input_mode == Shell.StageInputMode.NONREACTIVE ||
global.stage_input_mode == Shell.StageInputMode.NORMAL)
global.set_stage_input_mode(Shell.StageInputMode.FOCUSED);
if (item.window)
if (item.window) {
Main.activateWindow(item.window);
else if (item.focusCallback)
} else if (item.focusCallback) {
item.focusCallback();
else
} else {
if (global.stage_input_mode == Shell.StageInputMode.NONREACTIVE ||
global.stage_input_mode == Shell.StageInputMode.NORMAL)
global.set_stage_input_mode(Shell.StageInputMode.FOCUSED);
item.root.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
}
},
// Sort the items into a consistent order; panel first, tray last,

View File

@ -21,6 +21,18 @@ const DASH_ITEM_LABEL_SHOW_TIME = 0.15;
const DASH_ITEM_LABEL_HIDE_TIME = 0.1;
const DASH_ITEM_HOVER_TIMEOUT = 300;
function getAppFromSource(source) {
if (source instanceof AppDisplay.AppWellIcon) {
let appSystem = Shell.AppSystem.get_default();
return appSystem.lookup_app(source.getId());
} else if (source.metaWindow) {
let tracker = Shell.WindowTracker.get_default();
return tracker.get_window_app(source.metaWindow);
} else {
return null;
}
}
// A container like StBin, but taking the child's scale into account
// when requesting a size
const DashItemContainer = new Lang.Class({
@ -36,7 +48,11 @@ const DashItemContainer = new Lang.Class({
Lang.bind(this, this._allocate));
this.actor._delegate = this;
this.label = null;
this._labelText = "";
this.label = new St.Label({ style_class: 'dash-label'});
this.label.hide();
Main.layoutManager.addChrome(this.label);
this.actor.label_actor = this.label;
this.child = null;
this._childScale = 1;
@ -91,9 +107,10 @@ const DashItemContainer = new Lang.Class({
},
showLabel: function() {
if (this.label == null)
if (!this._labelText)
return;
this.label.set_text(this._labelText);
this.label.opacity = 0;
this.label.show();
@ -124,19 +141,10 @@ const DashItemContainer = new Lang.Class({
},
setLabelText: function(text) {
if (this.label == null) {
this.label = new St.Label({ style_class: 'dash-label'});
Main.layoutManager.addChrome(this.label);
this.label.hide();
}
this.label.set_text(text);
this._labelText = text;
},
hideLabel: function () {
if (this.label == null)
return;
Tweener.addTween(this.label,
{ opacity: 0,
time: DASH_ITEM_LABEL_HIDE_TIME,
@ -250,7 +258,7 @@ const ShowAppsIcon = new Lang.Class({
this.toggleButton._delegate = this;
this.setChild(this.toggleButton);
this.setHover(false);
this.setDragApp(null);
this.toggleButton.label_actor = this.label;
},
@ -262,31 +270,45 @@ const ShowAppsIcon = new Lang.Class({
return this._iconActor;
},
setHover: function(hovered) {
this.toggleButton.set_hover(hovered);
if (this._iconActor)
this._iconActor.set_hover(hovered);
_canRemoveApp: function(app) {
if (app == null)
return false;
if (hovered)
let id = app.get_id();
let isFavorite = AppFavorites.getAppFavorites().isFavorite(id);
return isFavorite;
},
setDragApp: function(app) {
let canRemove = this._canRemoveApp(app);
this.toggleButton.set_hover(canRemove);
if (this._iconActor)
this._iconActor.set_hover(canRemove);
if (canRemove)
this.setLabelText(_("Remove from Favorites"));
else
this.setLabelText(_("Show Applications"));
},
// Rely on the dragged item being a favorite
handleDragOver: function(source, actor, x, y, time) {
let app = getAppFromSource(source);
if (app == null)
return DND.DragMotionResult.NO_DROP;
let id = app.get_id();
let isFavorite = AppFavorites.getAppFavorites().isFavorite(id);
if (!isFavorite)
return DND.DragMotionResult.NO_DROP;
return DND.DragMotionResult.MOVE_DROP;
},
acceptDrop: function(source, actor, x, y, time) {
let app = null;
if (source instanceof AppDisplay.AppWellIcon) {
let appSystem = Shell.AppSystem.get_default();
app = appSystem.lookup_app(source.getId());
} else if (source.metaWindow) {
let tracker = Shell.WindowTracker.get_default();
app = tracker.get_window_app(source.metaWindow);
}
let app = getAppFromSource(source);
if (app == null)
return false;
let id = app.get_id();
@ -324,22 +346,21 @@ const DashActor = new Lang.Class({
vfunc_allocate: function(box, flags) {
let contentBox = this.get_theme_node().get_content_box(box);
let availWidth = contentBox.x2 - contentBox.x1;
let availHeight = contentBox.y2 - contentBox.y1;
this.set_allocation(box, flags);
let [appIcons, showAppsButton] = this.get_children();
let [minHeight, natHeight] = showAppsButton.get_preferred_height(availWidth);
let [showAppsMinHeight, showAppsNatHeight] = showAppsButton.get_preferred_height(availWidth);
let childBox = new Clutter.ActorBox();
childBox.x1 = 0;
childBox.x2 = availWidth;
childBox.y1 = 0;
childBox.y2 = availHeight - natHeight;
childBox.x1 = contentBox.x1;
childBox.y1 = contentBox.y1;
childBox.x2 = contentBox.x2;
childBox.y2 = contentBox.y2 - showAppsNatHeight;
appIcons.allocate(childBox, flags);
childBox.y1 = availHeight - natHeight;
childBox.y2 = availHeight;
childBox.y1 = contentBox.y2 - showAppsNatHeight;
childBox.y2 = contentBox.y2;
showAppsButton.allocate(childBox, flags);
}
});
@ -351,6 +372,9 @@ const Dash = new Lang.Class({
this._maxHeight = -1;
this.iconSize = 64;
this._shownInitially = false;
this.visible = false;
this._hiddenX;
this._targetX;
this._dragPlaceholder = null;
this._dragPlaceholderPos = -1;
@ -378,23 +402,23 @@ const Dash = new Lang.Class({
function() {
if (this._maxHeight != this.actor.height)
this._queueRedisplay();
this._maxHeight = this.actor.height;
if (this.actor.height > this._maxHeight)
this._maxHeight = this.actor.height;
}));
this._workId = Main.initializeDeferredWork(this._box, Lang.bind(this, this._redisplay));
this._tracker = Shell.WindowTracker.get_default();
this._appSystem = Shell.AppSystem.get_default();
this._appSystem.connect('installed-changed', Lang.bind(this, this._queueRedisplay));
AppFavorites.getAppFavorites().connect('changed', Lang.bind(this, this._queueRedisplay));
this._appSystem.connect('app-state-changed', Lang.bind(this, this._queueRedisplay));
Main.overview.connect('item-drag-begin',
Main.overview.connect('app-drag-begin',
Lang.bind(this, this._onDragBegin));
Main.overview.connect('item-drag-end',
Main.overview.connect('app-drag-end',
Lang.bind(this, this._onDragEnd));
Main.overview.connect('item-drag-cancelled',
Main.overview.connect('app-drag-cancelled',
Lang.bind(this, this._onDragCancelled));
Main.overview.connect('window-drag-begin',
Lang.bind(this, this._onDragBegin));
@ -426,31 +450,25 @@ const Dash = new Lang.Class({
_endDrag: function() {
this._clearDragPlaceholder();
this._showAppsIcon.setDragApp(null);
DND.removeDragMonitor(this._dragMonitor);
},
_onDragMotion: function(dragEvent) {
let app = null;
if (dragEvent.source instanceof AppDisplay.AppWellIcon)
app = this._appSystem.lookup_app(dragEvent.source.getId());
else if (dragEvent.source.metaWindow)
app = this._tracker.get_window_app(dragEvent.source.metaWindow);
else
let app = getAppFromSource(dragEvent.source);
if (app == null)
return DND.DragMotionResult.CONTINUE;
let id = app.get_id();
let favorites = AppFavorites.getAppFavorites().getFavoriteMap();
let srcIsFavorite = (id in favorites);
let showAppsHovered =
this._showAppsIcon.actor.contains(dragEvent.targetActor);
if (!this._box.contains(dragEvent.targetActor) || showAppsHovered)
this._clearDragPlaceholder();
this._showAppsIcon.setHover(showAppsHovered);
if (showAppsHovered)
this._showAppsIcon.setDragApp(app);
else
this._showAppsIcon.setDragApp(null);
return DND.DragMotionResult.CONTINUE;
},
@ -532,6 +550,17 @@ const Dash = new Lang.Class({
}
},
_computeDashX: function() {
this._targetX = this.actor.get_x();
let rtl = (this.actor.get_text_direction() == Clutter.TextDirection.RTL);
if (rtl)
this._hiddenX = this._targetX + this.actor.width;
else
this._hiddenX = -this.actor.width;
},
_adjustIconSize: function() {
// For the icon size, we only consider children which are "proper"
// icons (i.e. ignoring drag placeholders) and which are not
@ -627,6 +656,8 @@ const Dash = new Lang.Class({
}
});
}
this._computeDashX();
},
_redisplay: function () {
@ -743,6 +774,7 @@ const Dash = new Lang.Class({
// of items, to avoid all items zooming in at once
if (!this._shownInitially) {
this._shownInitially = true;
this.visible = true;
return;
}
@ -763,11 +795,7 @@ const Dash = new Lang.Class({
},
handleDragOver : function(source, actor, x, y, time) {
let app = null;
if (source instanceof AppDisplay.AppWellIcon)
app = this._appSystem.lookup_app(source.getId());
else if (source.metaWindow)
app = this._tracker.get_window_app(source.metaWindow);
let app = getAppFromSource(source);
// Don't allow favoriting of transient apps
if (app == null || app.is_window_backed())
@ -848,12 +876,7 @@ const Dash = new Lang.Class({
// Draggable target interface
acceptDrop : function(source, actor, x, y, time) {
let app = null;
if (source instanceof AppDisplay.AppWellIcon) {
app = this._appSystem.lookup_app(source.getId());
} else if (source.metaWindow) {
app = this._tracker.get_window_app(source.metaWindow);
}
let app = getAppFromSource(source);
// Don't allow favoriting of transient apps
if (app == null || app.is_window_backed()) {
@ -896,6 +919,34 @@ const Dash = new Lang.Class({
}));
return true;
},
show: function() {
if (this.visible)
return;
this.visible = true;
this.actor.show();
Tweener.addTween(this.actor, { translation_x: this._targetX,
transition: 'easeOutQuad',
time: DASH_ANIMATION_TIME
});
},
hide: function() {
if (!this.visible)
return;
this.visible = false;
Tweener.addTween(this.actor, { translation_x: this._hiddenX,
transition: 'easeOutQuad',
time: DASH_ANIMATION_TIME,
onComplete: Lang.bind(this, function () {
this.actor.hide();
})
});
}
});

View File

@ -89,8 +89,10 @@ const DateMenuButton = new Lang.Class({
separator.setColumnWidths(1);
vbox.add(separator.actor, {y_align: St.Align.END, expand: true, y_fill: false});
item.actor.show_on_set_parent = false;
item.actor.can_focus = false;
item.actor.reparent(vbox);
this._dateAndTimeSeparator = separator;
}
this._separator = new St.DrawingArea({ style_class: 'calendar-vertical-separator',
@ -111,6 +113,11 @@ const DateMenuButton = new Lang.Class({
this._openCalendarItem.actor.can_focus = false;
vbox.add(this._openCalendarItem.actor, {y_align: St.Align.END, expand: true, y_fill: false});
this._calendarSettings = new Gio.Settings({ schema: 'org.gnome.desktop.default-applications.office.calendar' });
this._calendarSettings.connect('changed::exec',
Lang.bind(this, this._calendarSettingsChanged));
this._calendarSettingsChanged();
// Whenever the menu is opened, select today
this.menu.connect('open-state-changed', Lang.bind(this, function(menu, isOpen) {
if (isOpen) {
@ -144,10 +151,25 @@ const DateMenuButton = new Lang.Class({
this._sessionUpdated();
},
_calendarSettingsChanged: function() {
let exec = this._calendarSettings.get_string('exec');
let fullExec = GLib.find_program_in_path(exec);
this._openCalendarItem.actor.visible = fullExec != null;
},
_setEventsVisibility: function(visible) {
this._openCalendarItem.actor.visible = visible;
this._separator.visible = visible;
this._eventList.visible = visible;
this._openCalendarItem.visible = visible;
if (visible) {
let alignment = 0.25;
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
alignment = 1.0 - alignment;
this.menu._arrowAlignment = alignment;
this._eventList.actor.get_parent().show();
} else {
this.menu._arrowAlignment = 0.5;
this._eventList.actor.get_parent().hide();
}
},
_setEventSource: function(eventSource) {
@ -165,6 +187,10 @@ const DateMenuButton = new Lang.Class({
}
this._setEventSource(eventSource);
this._setEventsVisibility(showEvents);
// This needs to be handled manually, as the code to
// autohide separators doesn't work across the vbox
this._dateAndTimeSeparator.actor.visible = Main.sessionMode.allowSettings;
},
_updateClockAndDate: function() {
@ -179,14 +205,13 @@ const DateMenuButton = new Lang.Class({
_onOpenCalendarActivate: function() {
this.menu.close();
let calendarSettings = new Gio.Settings({ schema: 'org.gnome.desktop.default-applications.office.calendar' });
let tool = calendarSettings.get_string('exec');
let tool = this._calendarSettings.get_string('exec');
if (tool.length == 0 || tool.substr(0, 9) == 'evolution') {
// TODO: pass the selected day
let app = Shell.AppSystem.get_default().lookup_app('evolution-calendar.desktop');
app.activate();
} else {
let needTerm = calendarSettings.get_boolean('needs-term');
let needTerm = this._calendarSettings.get_boolean('needs-term');
if (needTerm) {
let terminalSettings = new Gio.Settings({ schema: 'org.gnome.desktop.default-applications.terminal' });
let term = terminalSettings.get_string('exec');

View File

@ -235,6 +235,10 @@ const _Draggable = new Lang.Class({
if (this.actor._delegate && this.actor._delegate.getDragActor) {
this._dragActor = this.actor._delegate.getDragActor(this._dragStartX, this._dragStartY);
this._dragActor.reparent(Main.uiGroup);
this._dragActor.raise_top();
Shell.util_set_hidden_from_pick(this._dragActor, true);
// Drag actor does not always have to be the same as actor. For example drag actor
// can be an image that's part of the actor. So to perform "snap back" correctly we need
// to know what was the drag actor source.
@ -263,12 +267,17 @@ const _Draggable = new Lang.Class({
this._dragOffsetY = this._dragActor.y - this._dragStartY;
} else {
this._dragActor = this.actor;
this._dragActorSource = undefined;
this._dragOrigParent = this.actor.get_parent();
this._dragOrigX = this._dragActor.x;
this._dragOrigY = this._dragActor.y;
this._dragOrigScale = this._dragActor.scale_x;
this._dragActor.reparent(Main.uiGroup);
this._dragActor.raise_top();
Shell.util_set_hidden_from_pick(this._dragActor, true);
let [actorStageX, actorStageY] = this.actor.get_transformed_position();
this._dragOffsetX = actorStageX - this._dragStartX;
this._dragOffsetY = actorStageY - this._dragStartY;
@ -280,10 +289,6 @@ const _Draggable = new Lang.Class({
scaledHeight / this.actor.height);
}
this._dragActor.reparent(Main.uiGroup);
this._dragActor.raise_top();
Shell.util_set_hidden_from_pick(this._dragActor, true);
this._dragOrigOpacity = this._dragActor.opacity;
if (this._dragActorOpacity != undefined)
this._dragActor.opacity = this._dragActorOpacity;

View File

@ -198,7 +198,11 @@ const IconGrid = new Lang.Class({
_getPreferredHeight: function (grid, forWidth, alloc) {
let children = this._getVisibleChildren();
let [nColumns, usedWidth] = this._computeLayout(forWidth);
let nColumns;
if (forWidth < 0)
nColumns = children.length;
else
nColumns = this._computeLayout(forWidth)[0];
let nRows;
if (nColumns > 0)
nRows = Math.ceil(children.length / nColumns);

View File

@ -43,6 +43,8 @@ const MonitorConstraint = new Lang.Class({
},
set primary(v) {
if (v)
this._index = -1;
this._primary = v;
if (this.actor)
this.actor.queue_relayout();
@ -54,6 +56,7 @@ const MonitorConstraint = new Lang.Class({
},
set index(v) {
this._primary = false;
this._index = v;
if (this.actor)
this.actor.queue_relayout();
@ -101,7 +104,7 @@ const LayoutManager = new Lang.Class({
this.primaryMonitor = null;
this.primaryIndex = -1;
this._hotCorners = [];
this._rootPixmap = null;
this._background = null;
this._leftPanelBarrier = 0;
this._rightPanelBarrier = 0;
this._trayBarrier = 0;
@ -330,30 +333,30 @@ const LayoutManager = new Lang.Class({
// to the greeter. Otherwise, we'll just animate the panel,
// as usual.
if (Main.sessionMode.isGreeter) {
this._rootPixmap = global.create_xrootpmap_texture();
if (this._rootPixmap != null) {
Main.uiGroup.add_actor(this._rootPixmap);
Tweener.addTween(this._rootPixmap,
this._background = Meta.BackgroundActor.new_for_screen(global.screen);
if (this._background != null) {
Main.uiGroup.add_actor(this._background);
Tweener.addTween(this._background,
{ opacity: 0,
time: PLYMOUTH_TRANSITION_TIME,
transition: 'linear',
onComplete: this._fadeRootpmapComplete,
onComplete: this._fadeBackgroundComplete,
onCompleteScope: this });
plymouthTransitionRunning = true;
}
}
if (!plymouthTransitionRunning)
this._fadeRootpmapComplete();
this._fadeBackgroundComplete();
},
_fadeRootpmapComplete: function() {
_fadeBackgroundComplete: function() {
// Don't animate the strut
this._chrome.freezeUpdateRegions();
if (this._rootPixmap != null) {
this._rootPixmap.destroy();
this._rootPixmap = null;
if (this._background != null) {
this._background.destroy();
this._background = null;
}
Tweener.addTween(this.panelBox,
@ -781,10 +784,13 @@ const Chrome = new Lang.Class({
_actorReparented: function(actor, oldParent) {
let newParent = actor.get_parent();
if (!newParent)
if (!newParent) {
this._untrackActor(actor);
else
} else {
let i = this._findActor(actor);
let actorData = this._trackedActors[i];
actorData.isToplevel = (newParent == Main.uiGroup);
}
},
_updateVisibility: function() {

View File

@ -4,6 +4,7 @@ const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;
const GnomeDesktop = imports.gi.GnomeDesktop;
const Atk = imports.gi.Atk;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
@ -35,8 +36,6 @@ const LONGER_SUMMARY_TIMEOUT = 4;
const HIDE_TIMEOUT = 0.2;
const LONGER_HIDE_TIMEOUT = 0.6;
const NOTIFICATION_ICON_SIZE = 24;
// We delay hiding of the tray if the mouse is within MOUSE_LEFT_ACTOR_THRESHOLD
// range from the point where it left the tray.
const MOUSE_LEFT_ACTOR_THRESHOLD = 20;
@ -143,14 +142,9 @@ const URLHighlighter = new Lang.Class({
let url = this._urls[urlId].url;
if (url.indexOf(':') == -1)
url = 'http://' + url;
try {
Gio.app_info_launch_default_for_uri(url, global.create_app_launch_context());
return true;
} catch (e) {
// TODO: remove this after gnome 3 release
Util.spawn(['gvfs-open', url]);
return true;
}
Gio.app_info_launch_default_for_uri(url, global.create_app_launch_context());
return true;
}
return false;
}));
@ -243,9 +237,7 @@ function makeCloseButton() {
closeButton.connect('style-changed', function() {
let themeNode = closeButton.get_theme_node();
closeButton.translation_x = themeNode.get_length('-shell-close-overlap-x');
// libcroco doesn't support negative units
closeButton.translation_y = -themeNode.get_length('-shell-close-overlap-y');
closeButton.translation_y = themeNode.get_length('-shell-close-overlap-y');
});
return closeButton;
@ -291,9 +283,12 @@ function makeCloseButton() {
// If @params contains a 'body' parameter, then that text will be added to
// the content area (as with addBody()).
//
// By default, the icon shown is created by calling
// source.createIcon(). However, if @params contains an 'icon'
// parameter, the passed in icon will be used.
// By default, the icon shown is the same as the source's.
// However, if @params contains a 'gicon' parameter, the passed in gicon
// will be used.
//
// You can add a secondary icon to the banner with 'secondaryGIcon'. There
// is no fallback for this icon.
//
// If @params contains a 'titleMarkup', 'bannerMarkup', or
// 'bodyMarkup' parameter with the value %true, then the corresponding
@ -308,6 +303,8 @@ function makeCloseButton() {
const Notification = new Lang.Class({
Name: 'Notification',
ICON_SIZE: 24,
IMAGE_SIZE: 125,
_init: function(source, title, banner, params) {
@ -391,8 +388,8 @@ const Notification = new Lang.Class({
update: function(title, banner, params) {
params = Params.parse(params, { customContent: false,
body: null,
icon: null,
secondaryIcon: null,
gicon: null,
secondaryGIcon: null,
titleMarkup: false,
bannerMarkup: false,
bodyMarkup: false,
@ -402,12 +399,12 @@ const Notification = new Lang.Class({
let oldFocus = global.stage.key_focus;
if (this._icon && (params.icon || params.clear)) {
if (this._icon && (params.gicon || params.clear)) {
this._icon.destroy();
this._icon = null;
}
if (this._secondaryIcon && (params.secondaryIcon || params.clear)) {
if (this._secondaryIcon && (params.secondaryGIcon || params.clear)) {
this._secondaryIcon.destroy();
this._secondaryIcon = null;
}
@ -437,8 +434,14 @@ const Notification = new Lang.Class({
if (!this._scrollArea && !this._actionArea && !this._imageBin)
this._table.remove_style_class_name('multi-line-notification');
if (!this._icon) {
this._icon = params.icon || this.source.createIcon(NOTIFICATION_ICON_SIZE);
if (params.gicon) {
this._icon = new St.Icon({ gicon: params.gicon,
icon_size: this.ICON_SIZE });
} else {
this._icon = this.source.createIcon(this.ICON_SIZE);
}
if (this._icon) {
this._table.add(this._icon, { row: 0,
col: 0,
x_expand: false,
@ -447,11 +450,10 @@ const Notification = new Lang.Class({
y_align: St.Align.START });
}
if (!this._secondaryIcon) {
this._secondaryIcon = params.secondaryIcon;
if (this._secondaryIcon)
this._bannerBox.add_actor(this._secondaryIcon);
if (params.secondaryGIcon) {
this._secondaryIcon = new St.Icon({ gicon: params.secondaryGIcon,
style_class: 'secondary-icon' });
this._bannerBox.add_actor(this._secondaryIcon);
}
this.title = title;
@ -1114,10 +1116,14 @@ const Source = new Lang.Class({
// Provides a sane default implementation, override if you need
// something more fancy.
createIcon: function(size) {
return new St.Icon({ icon_name: this.iconName,
return new St.Icon({ gicon: this.getIcon(),
icon_size: size });
},
getIcon: function() {
return new Gio.ThemedIcon({ name: this.iconName });
},
_ensureMainIcon: function() {
if (this._mainIcon)
return;
@ -1231,12 +1237,6 @@ const SummaryItem = new Lang.Class({
this.notificationStackWidget = new St.Widget({ layout_manager: new Clutter.BinLayout() });
this._closeButton = makeCloseButton();
this._closeButton.connect('clicked', Lang.bind(this, function() {
source.destroy();
source.emit('done-displaying-content');
}));
this.notificationStackView = new St.ScrollView({ style_class: source.isChat ? '' : 'summary-notification-stack-scrollview',
vscrollbar_policy: source.isChat ? Gtk.PolicyType.NEVER : Gtk.PolicyType.AUTOMATIC,
hscrollbar_policy: Gtk.PolicyType.NEVER });
@ -1245,7 +1245,9 @@ const SummaryItem = new Lang.Class({
vertical: true });
this.notificationStackView.add_actor(this.notificationStack);
this.notificationStackWidget.add_actor(this.notificationStackView);
this.notificationStackWidget.add_actor(this._closeButton);
this.closeButton = makeCloseButton();
this.notificationStackWidget.add_actor(this.closeButton);
this._stackedNotifications = [];
this._oldMaxScrollAdjustment = 0;
@ -1262,14 +1264,6 @@ const SummaryItem = new Lang.Class({
global.focus_manager.add_group(this.rightClickMenu);
},
get closeButtonVisible() {
return this._closeButton.visible;
},
set closeButtonVisible(v) {
this._closeButton.visible = v;
},
_onKeyPress: function(actor, event) {
if (event.get_key_symbol() == Clutter.KEY_Up) {
actor.emit('clicked', 1);
@ -1447,10 +1441,10 @@ const MessageTray = new Lang.Class({
this._closeButton.connect('clicked', Lang.bind(this, this._onCloseClicked));
this._notificationWidget.add_actor(this._closeButton);
this._idleMonitorWatchId = 0;
this._idleMonitorBecameActiveId = 0;
this._userActiveWhileNotificationShown = false;
this.idleMonitor = Shell.IdleMonitor.get();
this.idleMonitor = new GnomeDesktop.IdleMonitor();
this._grabHelper = new GrabHelper.GrabHelper(this.actor);
this._grabHelper.addActor(this._summaryBoxPointer.actor);
@ -1483,7 +1477,6 @@ const MessageTray = new Lang.Class({
this._reNotifyAfterHideNotification = null;
this._inFullscreen = false;
this._desktopClone = null;
this._inCtrlAltTab = false;
this._lightbox = new Lightbox.Lightbox(global.window_group,
{ inhibitEvents: true,
@ -1505,7 +1498,7 @@ const MessageTray = new Lang.Class({
this._overviewVisible = true;
this._grabHelper.ungrab(); // drop modal grab if necessary
this.actor.add_style_pseudo_class('overview');
this._updateState();
this.show();
}));
Main.overview.connect('hiding', Lang.bind(this,
function() {
@ -1515,7 +1508,7 @@ const MessageTray = new Lang.Class({
this._updateState();
}));
Main.sessionMode.connect('updated', Lang.bind(this, this._updateState));
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
global.display.add_keybinding('toggle-message-tray',
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
@ -1530,6 +1523,18 @@ const MessageTray = new Lang.Class({
this._trayDwellTimeoutId = 0;
this._trayDwelling = false;
this._trayDwellUserTime = 0;
this._sessionUpdated();
},
_sessionUpdated: function() {
if (Main.sessionMode.isLocked || Main.sessionMode.isGreeter)
Main.ctrlAltTabManager.removeGroup(this._summary);
else
Main.ctrlAltTabManager.addGroup(this._summary, _("Message Tray"), 'start-here-symbolic',
{ focusCallback: Lang.bind(this, this.toggleAndNavigate),
sortGroup: CtrlAltTab.SortGroup.BOTTOM });
this._updateState();
},
_checkTrayDwell: function(x, y) {
@ -1586,12 +1591,9 @@ const MessageTray = new Lang.Class({
_onCloseClicked: function() {
if (this._notificationState == State.SHOWN) {
this._closeButton.hide();
this._notificationClosed = true;
this._notification.emit('done-displaying');
if (!this._notification.resident)
this._notification.destroy();
this._updateState();
this._notificationClosed = false;
}
},
@ -1734,6 +1736,11 @@ const MessageTray = new Lang.Class({
this._updateState();
},
show: function() {
this._traySummoned = true;
this._updateState();
},
_onNotify: function(source, notification) {
if (this._summaryBoxPointerItem && this._summaryBoxPointerItem.source == source) {
if (this._summaryBoxPointerState == State.HIDING) {
@ -1976,7 +1983,7 @@ const MessageTray = new Lang.Class({
}
// Summary
let summarySummoned = this._pointerInSummary || this._overviewVisible || this._traySummoned;
let summarySummoned = this._pointerInSummary || this._traySummoned;
let summaryPinned = this._pointerInTray || summarySummoned || this._locked;
let summaryHovered = this._pointerInTray || this._pointerInSummary;
@ -1984,7 +1991,7 @@ const MessageTray = new Lang.Class({
this._notificationState == State.SHOWN);
let notificationsDone = !notificationsVisible && !notificationsPending;
let summaryOptionalInOverview = this._overviewVisible && !this._locked && !summaryHovered;
let summaryOptionalInOverview = !this._locked && !summaryHovered;
let mustHideSummary = (notificationsPending && (notificationUrgent || summaryOptionalInOverview))
|| notificationsVisible || !Main.sessionMode.hasNotifications;
@ -2025,7 +2032,7 @@ const MessageTray = new Lang.Class({
let trayShouldBeVisible = (this._summaryState == State.SHOWING ||
this._summaryState == State.SHOWN);
if (!trayIsVisible && trayShouldBeVisible)
this._showTray();
trayShouldBeVisible = this._showTray();
else if (trayIsVisible && !trayShouldBeVisible)
this._hideTray();
@ -2075,7 +2082,7 @@ const MessageTray = new Lang.Class({
modal: modal,
onUngrab: Lang.bind(this, this._escapeTray) })) {
this._traySummoned = false;
return;
return false;
}
this._tween(this.actor, '_trayState', State.SHOWN,
@ -2084,25 +2091,31 @@ const MessageTray = new Lang.Class({
transition: 'easeOutQuad'
});
if (this._overviewVisible) {
Main.ctrlAltTabManager.addGroup(this._summary, _("Message Tray"), 'start-here-symbolic',
{ sortGroup: CtrlAltTab.SortGroup.BOTTOM });
this._inCtrlAltTab = true;
} else {
if (!this._overviewVisible)
this._lightbox.show();
}
return true;
},
_updateDesktopCloneClip: function() {
let geometry = this._bottomMonitorGeometry;
let progress = -Math.round(this._desktopClone.y);
this._desktopClone.set_clip(geometry.x,
geometry.y + progress,
geometry.width,
geometry.height - progress);
},
_showDesktopClone: function() {
let bottomMonitor = Main.layoutManager.bottomMonitor;
let geometry = new Clutter.Geometry({ x: bottomMonitor.x,
y: bottomMonitor.y,
width: bottomMonitor.width,
height: bottomMonitor.height
});
this._bottomMonitorGeometry = { x: bottomMonitor.x,
y: bottomMonitor.y,
width: bottomMonitor.width,
height: bottomMonitor.height };
if (this._desktopClone)
this._desktopClone.destroy();
this._desktopClone = new Clutter.Clone({ source: global.window_group, clip: geometry });
this._desktopClone = new Clutter.Clone({ source: global.window_group, clip: new Clutter.Geometry(this._bottomMonitorGeometry) });
Main.uiGroup.insert_child_above(this._desktopClone, global.window_group);
this._desktopClone.x = 0;
this._desktopClone.y = 0;
@ -2112,17 +2125,15 @@ const MessageTray = new Lang.Class({
{ y: -this.actor.height,
time: ANIMATION_TIME,
transition: 'easeOutQuad',
onUpdate: function() {
let progress = Math.round(-this.y);
this.set_clip(geometry.x,
geometry.y + progress,
geometry.width,
geometry.height - progress);
}
onUpdate: Lang.bind(this, this._updateDesktopCloneClip)
});
},
_hideTray: function() {
// Having the summary item animate out while sliding down the tray
// is distracting, so hide it immediately in case it was visible.
this._summaryBoxPointer.actor.hide();
this._tween(this.actor, '_trayState', State.HIDDEN,
{ y: 0,
time: ANIMATION_TIME,
@ -2133,56 +2144,43 @@ const MessageTray = new Lang.Class({
// which would happen if GrabHelper ungrabbed for us.
// This is a no-op in that case.
this._grabHelper.ungrab({ actor: this.actor });
if (this._inCtrlAltTab) {
Main.ctrlAltTabManager.removeGroup(this._summary);
this._inCtrlAltTab = false;
} else {
this._lightbox.hide();
}
this._lightbox.hide();
},
_hideDesktopClone: function(now) {
if (now) {
this._desktopClone.destroy();
this._desktopClone = null;
this._desktopCloneState = State.HIDDEN;
return;
}
let geometry = this._desktopClone.clip;
this._tween(this._desktopClone, '_desktopCloneState', State.HIDDEN,
{ y: 0,
time: ANIMATION_TIME,
time: now ? 0 : ANIMATION_TIME,
transition: 'easeOutQuad',
onComplete: Lang.bind(this, function() {
this._desktopClone.destroy();
this._desktopClone = null;
this._bottomMonitorGeometry = null;
}),
onUpdate: function() {
let progress = Math.round(-this.y);
this.set_clip(geometry.x,
geometry.y - progress,
geometry.width,
geometry.height + progress);
}
onUpdate: Lang.bind(this, this._updateDesktopCloneClip)
});
},
_onIdleMonitorWatch: function(monitor, id, userBecameIdle) {
this.idleMonitor.remove_watch(this._idleMonitorWatchId);
this._idleMonitorWatchId = 0;
if (!userBecameIdle)
this._updateNotificationTimeout(2000);
_onIdleMonitorBecameActive: function() {
this.idleMonitor.disconnect(this._idleMonitorBecameActiveId);
this._idleMonitorBecameActiveId = 0;
this._userActiveWhileNotificationShown = true;
this._updateNotificationTimeout(2000);
this._updateState();
},
_showNotification: function() {
this._notification = this._notificationQueue.shift();
this._userActiveWhileNotificationShown = this.idleMonitor.get_idletime() <= IDLE_TIME;
this._idleMonitorWatchId = this.idleMonitor.add_watch(IDLE_TIME,
Lang.bind(this, this._onIdleMonitorWatch));
let userIdle = this.idleMonitor.get_idletime() > IDLE_TIME;
if (userIdle) {
this._userActiveWhileNotificationShown = false;
this._idleMonitorBecameActiveId = this.idleMonitor.connect('became-active', Lang.bind(this, this._onIdleMonitorBecameActive));
} else {
this._userActiveWhileNotificationShown = true;
}
this._notificationClickedId = this._notification.connect('done-displaying',
Lang.bind(this, this._escapeTray));
this._notification.connect('unfocused', Lang.bind(this, function() {
@ -2295,6 +2293,11 @@ const MessageTray = new Lang.Class({
_hideNotification: function() {
this._grabHelper.ungrab({ actor: this._notification.actor });
if (this._idleMonitorBecameActiveId) {
this.idleMonitor.disconnect(this._idleMonitorBecameActiveId);
this._idleMonitorBecameActiveId = 0;
}
if (this._notificationExpandedId) {
this._notification.disconnect(this._notificationExpandedId);
this._notificationExpandedId = 0;
@ -2410,7 +2413,10 @@ const MessageTray = new Lang.Class({
this._notificationQueue = newQueue;
this._summaryBoxPointer.bin.child = this._summaryBoxPointerItem.notificationStackWidget;
this._summaryBoxPointerItem.closeButtonVisible = true;
let closeButton = this._summaryBoxPointerItem.closeButton;
closeButton.show();
this._summaryBoxPointerCloseClickedId = closeButton.connect('clicked', Lang.bind(this, this._hideSummaryBoxPointer));
this._summaryBoxPointerItem.prepareNotificationStackForShowing();
} else if (this._clickedSummaryItemMouseButton == 3) {
this._summaryBoxPointer.bin.child = this._clickedSummaryItem.rightClickMenu;
@ -2502,6 +2508,9 @@ const MessageTray = new Lang.Class({
this._summaryBoxPointer.actor.hide();
this._hideSummaryBoxPointerCompleted();
} else {
if (global.stage.key_focus &&
!this.actor.contains(global.stage.key_focus))
this._setClickedSummaryItem(null);
this._summaryBoxPointer.hide(BoxPointer.PopupAnimation.FULL, Lang.bind(this, this._hideSummaryBoxPointerCompleted));
}
},
@ -2517,6 +2526,8 @@ const MessageTray = new Lang.Class({
this._summaryBoxPointer.bin.child = null;
this._summaryBoxPointerItem.disconnect(this._summaryBoxPointerContentUpdatedId);
this._summaryBoxPointerContentUpdatedId = 0;
this._summaryBoxPointerItem.closeButton.disconnect(this._summaryBoxPointerCloseClickedId);
this._summaryBoxPointerCloseClickedId = 0;
this._summaryBoxPointerItem.source.disconnect(this._sourceDoneDisplayingId);
this._summaryBoxPointerDoneDisplayingId = 0;

View File

@ -20,7 +20,6 @@ const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
const OPEN_AND_CLOSE_TIME = 0.1;
const FADE_IN_BUTTONS_TIME = 0.33;
const FADE_OUT_DIALOG_TIME = 1.0;
const State = {
@ -117,8 +116,6 @@ const ModalDialog = new Lang.Class({
},
setButtons: function(buttons) {
let hadChildren = this._buttonLayout.get_children() > 0;
this._buttonLayout.destroy_all_children();
this._actionKeys = {};
@ -131,8 +128,11 @@ const ModalDialog = new Lang.Class({
let key = buttonInfo['key'];
let isDefault = buttonInfo['default'];
if (isDefault && !key)
if (isDefault && !key) {
this._actionKeys[Clutter.KEY_KP_Enter] = action;
this._actionKeys[Clutter.KEY_ISO_Enter] = action;
key = Clutter.KEY_Return;
}
buttonInfo.button = new St.Button({ style_class: 'modal-dialog-button',
reactive: true,
@ -166,21 +166,7 @@ const ModalDialog = new Lang.Class({
this._actionKeys[key] = action;
}
// Fade in buttons if there weren't any before
if (!hadChildren && buttons.length > 0) {
this._buttonLayout.opacity = 0;
Tweener.addTween(this._buttonLayout,
{ opacity: 255,
time: FADE_IN_BUTTONS_TIME,
transition: 'easeOutQuad',
onComplete: Lang.bind(this, function() {
this.emit('buttons-set');
})
});
} else {
this.emit('buttons-set');
}
this.emit('buttons-set');
},
_onKeyReleaseEvent: function(object, event) {
@ -199,8 +185,11 @@ const ModalDialog = new Lang.Class({
this.emit('destroy');
},
_fadeOpen: function() {
this._monitorConstraint.index = global.screen.get_current_monitor();
_fadeOpen: function(onPrimary) {
if (onPrimary)
this._monitorConstraint.primary = true;
else
this._monitorConstraint.index = global.screen.get_current_monitor();
this.state = State.OPENING;
@ -233,14 +222,14 @@ const ModalDialog = new Lang.Class({
}));
},
open: function(timestamp) {
open: function(timestamp, onPrimary) {
if (this.state == State.OPENED || this.state == State.OPENING)
return true;
if (!this.pushModal(timestamp))
return false;
this._fadeOpen();
this._fadeOpen(onPrimary);
return true;
},

View File

@ -116,8 +116,8 @@ const NotificationDaemon = new Lang.Class({
this._busProxy = new Bus();
this._trayManager = new Shell.TrayManager();
this._trayManager.connect('tray-icon-added', Lang.bind(this, this._onTrayIconAdded));
this._trayManager.connect('tray-icon-removed', Lang.bind(this, this._onTrayIconRemoved));
this._trayIconAddedId = this._trayManager.connect('tray-icon-added', Lang.bind(this, this._onTrayIconAdded));
this._trayIconRemovedId = this._trayManager.connect('tray-icon-removed', Lang.bind(this, this._onTrayIconRemoved));
Shell.WindowTracker.get_default().connect('notify::focus-app',
Lang.bind(this, this._onFocusAppChanged));
@ -356,12 +356,10 @@ const NotificationDaemon = new Lang.Class({
ndata.actions, ndata.hints, ndata.notification];
let gicon = this._iconForNotificationData(icon, hints);
let iconActor = new St.Icon({ gicon: gicon,
icon_size: MessageTray.NOTIFICATION_ICON_SIZE });
if (notification == null) {
notification = new MessageTray.Notification(source, summary, body,
{ icon: iconActor,
{ gicon: gicon,
bannerMarkup: true });
ndata.notification = notification;
notification.connect('destroy', Lang.bind(this,
@ -386,7 +384,7 @@ const NotificationDaemon = new Lang.Class({
this._emitActionInvoked(ndata.id, actionId);
}));
} else {
notification.update(summary, body, { icon: iconActor,
notification.update(summary, body, { gicon: gicon,
bannerMarkup: true,
clear: true });
}

View File

@ -10,6 +10,7 @@ const St = imports.gi.St;
const Shell = imports.gi.Shell;
const Gdk = imports.gi.Gdk;
const CenterLayout = imports.ui.centerLayout;
const Dash = imports.ui.dash;
const DND = imports.ui.dnd;
const Main = imports.ui.main;
@ -23,9 +24,6 @@ const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
// Time for initial animation going into Overview mode
const ANIMATION_TIME = 0.25;
// We split the screen vertically between the dash and the view selector.
const DASH_SPLIT_FRACTION = 0.1;
const DND_WINDOW_SWITCH_TIMEOUT = 1250;
const SwipeScrollDirection = {
@ -119,23 +117,18 @@ const Overview = new Lang.Class({
this._desktopFade = new St.Bin();
global.overlay_group.add_actor(this._desktopFade);
this._spacing = 0;
/* Translators: This is the main view to select
activities. See also note for "Activities" string. */
this._group = new St.Widget({ name: 'overview',
accessible_name: _("Overview"),
reactive: true });
this._group._delegate = this;
this._group.connect('style-changed',
Lang.bind(this, function() {
let node = this._group.get_theme_node();
let spacing = node.get_length('spacing');
if (spacing != this._spacing) {
this._spacing = spacing;
this._relayout();
}
}));
this._overview = new St.BoxLayout({ name: 'overview',
accessible_name: _("Overview"),
reactive: true,
vertical: true });
this._overview._delegate = this;
let layout = new CenterLayout.CenterLayout();
CenterLayout.connectSpacing(layout);
this._group = new St.Widget({ name: 'overview-group',
layout_manager: layout });
this._scrollDirection = SwipeScrollDirection.NONE;
this._scrollAdjustment = null;
@ -148,18 +141,19 @@ const Overview = new Lang.Class({
this._modal = false; // have a modal grab
this.animationInProgress = false;
this._hideInProgress = false;
this.searchActive = false;
this.appsActive = false;
// During transitions, we raise this to the top to avoid having the overview
// area be reactive; it causes too many issues such as double clicks on
// Dash elements, or mouseover handlers in the workspaces.
this._coverPane = new Clutter.Rectangle({ opacity: 0,
reactive: true });
this._group.add_actor(this._coverPane);
this._overview.add_actor(this._coverPane);
this._coverPane.connect('event', Lang.bind(this, function (actor, event) { return true; }));
this._group.hide();
global.overlay_group.add_actor(this._group);
this._overview.hide();
global.overlay_group.add_actor(this._overview);
this._coverPane.hide();
@ -171,6 +165,8 @@ const Overview = new Lang.Class({
Main.xdndHandler.connect('drag-begin', Lang.bind(this, this._onDragBegin));
Main.xdndHandler.connect('drag-end', Lang.bind(this, this._onDragEnd));
global.screen.connect('restacked', Lang.bind(this, this._onRestacked));
this._windowSwitchTimeoutId = 0;
this._windowSwitchTimestamp = 0;
this._lastActiveWorkspaceIndex = -1;
@ -193,6 +189,13 @@ const Overview = new Lang.Class({
this._shellInfo = new ShellInfo();
// Add a clone of the panel to the overview so spacing and such is
// automatic
this._panelGhost = new St.Bin({ child: new Clutter.Clone({ source: Main.panel.actor }),
reactive: false,
opacity: 0 });
this._overview.add_actor(this._panelGhost);
this._searchEntry = new St.Entry({ name: 'searchEntry',
/* Translators: this is the text displayed
in the search entry when no search is
@ -201,16 +204,13 @@ const Overview = new Lang.Class({
hint_text: _("Type to search..."),
track_hover: true,
can_focus: true });
this._group.add_actor(this._searchEntry);
this._dash = new Dash.Dash();
this._viewSelector = new ViewSelector.ViewSelector(this._searchEntry,
this._dash.showAppsButton);
this._group.add_actor(this._viewSelector.actor);
this._group.add_actor(this._dash.actor);
this._searchEntryBin = new St.Bin({ child: this._searchEntry,
x_align: St.Align.MIDDLE });
this._overview.add_actor(this._searchEntryBin);
// TODO - recalculate everything when desktop size changes
this._dash.actor.add_constraint(this._viewSelector.constrainHeight);
this._dash = new Dash.Dash();
this._group.add_actor(this._dash.actor);
this.dashIconSize = this._dash.iconSize;
this._dash.connect('icon-size-changed',
Lang.bind(this, function() {
@ -221,6 +221,82 @@ const Overview = new Lang.Class({
// the left of the overview
Main.ctrlAltTabManager.addGroup(this._dash.actor, _("Dash"), 'user-bookmarks-symbolic');
this._viewSelector = new ViewSelector.ViewSelector(this._searchEntry,
this._dash.showAppsButton);
this._group.add_actor(this._viewSelector.actor);
this._thumbnailsBox = new WorkspaceThumbnail.ThumbnailsBox();
this._group.add_actor(this._thumbnailsBox.actor);
// TODO: unique icon
Main.ctrlAltTabManager.addGroup(this._thumbnailsBox.actor, _("Workspaces"), 'user-bookmarks-symbolic');
// Add our same-line elements after the search entry
this._overview.add_actor(this._group);
// Then account for message tray
this._messageTrayGhost = new St.Bin({ child: new Clutter.Clone({ source: Main.messageTray.actor }),
reactive: false,
opacity: 0 });
this._overview.add_actor(this._messageTrayGhost);
this._viewSelector.connect('search-begin', Lang.bind(this,
function() {
this.searchActive = true;
this._dash.hide();
this._thumbnailsBox.hide();
Main.messageTray.hide();
}));
this._viewSelector.connect('search-cancelled', Lang.bind(this,
function() {
this.searchActive = false;
this._dash.show();
this._thumbnailsBox.show();
// search-cancelled is emitted if we leave the overview
// directly from searching. That means the message tray will
// be shown when we reach the workspace. Don't do this, only
// show the message tray on search-cancelled if we are still
// in the overview/not transitioning out of it.
if (this.visible && !this.animationInProgress)
Main.messageTray.show();
}));
this._viewSelector.connect('apps-button-checked', Lang.bind(this,
function(vs, checked) {
this.appsActive = checked;
if (checked) {
this._thumbnailsBox.hide();
Main.messageTray.hide();
} else {
this._thumbnailsBox.show();
if (this.visible && !this.animationInProgress)
Main.messageTray.show();
}
}));
this.connect('app-drag-begin',
Lang.bind(this, function () {
this._dash.show();
this._thumbnailsBox.show();
}));
this.connect('app-drag-cancelled',
Lang.bind(this, function () {
if (this.searchActive) {
this._dash.hide();
this._thumbnailsBox.hide();
} else if (this.appsActive) {
this._thumbnailsBox.hide();
}
}));
this.connect('app-drag-end',
Lang.bind(this, function () {
if (this.searchActive) {
this._dash.hide();
this._thumbnailsBox.hide();
} else if (this.appsActive) {
this._thumbnailsBox.hide();
}
}));
Main.layoutManager.connect('monitors-changed', Lang.bind(this, this._relayout));
this._relayout();
},
@ -470,7 +546,9 @@ const Overview = new Lang.Class({
if (windows.length == 0)
return null;
let clone = new Clutter.Clone({ source: windows[0].get_texture() });
let window = windows[0];
let clone = new Clutter.Clone({ source: window.get_texture(),
x: window.x, y: window.y });
clone.source.connect('destroy', Lang.bind(this, function() {
clone.destroy();
}));
@ -484,55 +562,41 @@ const Overview = new Lang.Class({
this.hide();
let primary = Main.layoutManager.primaryMonitor;
let rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
let contentY = Main.panel.actor.height;
let contentHeight = primary.height - contentY - Main.messageTray.actor.height;
this._group.set_position(primary.x, primary.y);
this._group.set_size(primary.width, primary.height);
this._overview.set_position(primary.x, primary.y);
this._overview.set_size(primary.width, primary.height);
this._coverPane.set_position(0, contentY);
this._coverPane.set_size(primary.width, contentHeight);
},
let searchWidth = this._searchEntry.get_width();
let searchHeight = this._searchEntry.get_height();
let searchX = (primary.width - searchWidth) / 2;
let searchY = contentY + this._spacing;
_onRestacked: function() {
let stack = global.get_window_actors();
let stackIndices = {};
let dashWidth = Math.round(DASH_SPLIT_FRACTION * primary.width);
let dashY = searchY + searchHeight + this._spacing;
let dashX;
if (rtl) {
this._dash.actor.set_anchor_point_from_gravity(Clutter.Gravity.NORTH_EAST);
dashX = primary.width;
} else {
dashX = 0;
for (let i = 0; i < stack.length; i++) {
// Use the stable sequence for an integer to use as a hash key
stackIndices[stack[i].get_meta_window().get_stable_sequence()] = i;
}
let viewX = rtl ? 0 : dashWidth + this._spacing;
let viewY = searchY + searchHeight + this._spacing;
let viewWidth = primary.width - dashWidth - this._spacing;
let viewHeight = contentHeight - this._spacing - viewY;
this._searchEntry.set_position(searchX, searchY);
this._dash.actor.set_position(dashX, dashY);
this._viewSelector.actor.set_position(viewX, viewY);
this._viewSelector.actor.set_size(viewWidth, viewHeight);
this.emit('sync-window-stacking', stackIndices);
},
//// Public methods ////
beginItemDrag: function(source) {
this.emit('item-drag-begin');
beginAppDrag: function(source) {
this.emit('app-drag-begin');
},
cancelledItemDrag: function(source) {
this.emit('item-drag-cancelled');
cancelledAppDrag: function(source) {
this.emit('app-drag-cancelled');
},
endItemDrag: function(source) {
this.emit('item-drag-end');
endAppDrag: function(source) {
this.emit('app-drag-end');
},
beginWindowDrag: function(source) {
@ -556,13 +620,13 @@ const Overview = new Lang.Class({
if (this._shown)
return;
// Do this manually instead of using _syncInputMode, to handle failure
if (!Main.pushModal(this._group))
if (!Main.pushModal(this._overview))
return;
this._modal = true;
this._animateVisible();
this._shown = true;
this._buttonPressId = this._group.connect('button-press-event',
this._buttonPressId = this._overview.connect('button-press-event',
Lang.bind(this, this._onButtonPress));
},
@ -606,12 +670,12 @@ const Overview = new Lang.Class({
// Disable unredirection while in the overview
Meta.disable_unredirect_for_screen(global.screen);
global.window_group.hide();
this._group.show();
this._overview.show();
this._background.show();
this._viewSelector.show();
this._group.opacity = 0;
Tweener.addTween(this._group,
this._overview.opacity = 0;
Tweener.addTween(this._overview,
{ opacity: 255,
transition: 'easeOutQuad',
time: ANIMATION_TIME,
@ -665,7 +729,7 @@ const Overview = new Lang.Class({
this._syncInputMode();
if (this._buttonPressId > 0)
this._group.disconnect(this._buttonPressId);
this._overview.disconnect(this._buttonPressId);
this._buttonPressId = 0;
},
@ -707,20 +771,20 @@ const Overview = new Lang.Class({
if (this._shown) {
if (!this._modal) {
if (Main.pushModal(this._group))
if (Main.pushModal(this._overview))
this._modal = true;
else
this.hide();
}
} else if (this._shownTemporarily) {
if (this._modal) {
Main.popModal(this._group);
Main.popModal(this._overview);
this._modal = false;
}
global.stage_input_mode = Shell.StageInputMode.FULLSCREEN;
} else {
if (this._modal) {
Main.popModal(this._group);
Main.popModal(this._overview);
this._modal = false;
}
else if (global.stage_input_mode == Shell.StageInputMode.FULLSCREEN)
@ -738,7 +802,7 @@ const Overview = new Lang.Class({
this._viewSelector.zoomFromOverview();
// Make other elements fade out.
Tweener.addTween(this._group,
Tweener.addTween(this._overview,
{ opacity: 0,
transition: 'easeOutQuad',
time: ANIMATION_TIME,
@ -780,7 +844,7 @@ const Overview = new Lang.Class({
this._viewSelector.hide();
this._desktopFade.hide();
this._background.hide();
this._group.hide();
this._overview.hide();
this.visible = false;
this.animationInProgress = false;

View File

@ -15,6 +15,7 @@ const Signals = imports.signals;
const Atk = imports.gi.Atk;
const CenterLayout = imports.ui.centerLayout;
const Config = imports.misc.config;
const CtrlAltTab = imports.ui.ctrlAltTab;
const DND = imports.ui.dnd;
@ -247,6 +248,10 @@ const AppMenuButton = new Lang.Class({
this._container.connect('get-preferred-height', Lang.bind(this, this._getContentPreferredHeight));
this._container.connect('allocate', Lang.bind(this, this._contentAllocate));
let textureCache = St.TextureCache.get_default();
textureCache.connect('icon-theme-changed',
Lang.bind(this, this._onIconThemeChanged));
this._iconBox = new Shell.Slicer({ name: 'appMenuIcon' });
this._iconBox.connect('style-changed',
Lang.bind(this, this._onIconBoxStyleChanged));
@ -332,6 +337,15 @@ const AppMenuButton = new Lang.Class({
this._updateIconBoxClip();
},
_onIconThemeChanged: function() {
if (this._iconBox.child == null)
return;
this._iconBox.child.destroy();
let icon = this._targetApp.get_faded_icon(2 * PANEL_ICON_SIZE);
this._iconBox.set_child(icon);
},
_updateIconBoxClip: function() {
let allocation = this._iconBox.allocation;
if (this._iconBottomClip > 0)
@ -901,6 +915,7 @@ const PANEL_ITEM_IMPLEMENTATIONS = {
'volume': imports.ui.status.volume.Indicator,
'battery': imports.ui.status.power.Indicator,
'lockScreen': imports.ui.status.lockScreenMenu.Indicator,
'logo': imports.gdm.loginDialog.LogoMenuButton,
'keyboard': imports.ui.status.keyboard.InputSourceIndicator,
'powerMenu': imports.gdm.powerMenu.PowerMenuButton,
'userMenu': imports.ui.userMenu.UserMenuButton
@ -917,12 +932,47 @@ try {
log('NMApplet is not supported. It is possible that your NetworkManager version is too old');
}
const PanelLayout = new Lang.Class({
Name: 'PanelLayout',
Extends: CenterLayout.CenterLayout,
vfunc_allocate: function(container, box, flags) {
this.parent(container, box, flags);
let availWidth = box.x2 - box.x1;
let availHeight = box.y2 - box.y1;
let [left, center, right, leftCorner, rightCorner] = container.get_children();
let childBox = new Clutter.ActorBox();
let cornerMinWidth, cornerMinHeight;
let cornerWidth, cornerHeight;
[cornerMinWidth, cornerWidth] = leftCorner.get_preferred_width(-1);
[cornerMinHeight, cornerHeight] = leftCorner.get_preferred_height(-1);
childBox.x1 = 0;
childBox.x2 = cornerWidth;
childBox.y1 = availHeight;
childBox.y2 = availHeight + cornerHeight;
leftCorner.allocate(childBox, flags);
[cornerMinWidth, cornerWidth] = rightCorner.get_preferred_width(-1);
[cornerMinHeight, cornerHeight] = rightCorner.get_preferred_height(-1);
childBox.x1 = availWidth - cornerWidth;
childBox.x2 = availWidth;
childBox.y1 = availHeight;
childBox.y2 = availHeight + cornerHeight;
rightCorner.allocate(childBox, flags);
}
});
const Panel = new Lang.Class({
Name: 'Panel',
_init : function() {
this.actor = new Shell.GenericContainer({ name: 'panel',
reactive: true });
this.actor = new St.Widget({ name: 'panel',
reactive: true,
layoutManager: new PanelLayout() });
this.actor._delegate = this;
this.statusArea = {};
@ -947,7 +997,6 @@ const Panel = new Lang.Class({
this._leftCorner = new PanelCorner(this._rightBox, St.Side.LEFT);
else
this._leftCorner = new PanelCorner(this._leftBox, St.Side.LEFT);
this.actor.add_actor(this._leftCorner.actor);
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL)
@ -956,9 +1005,6 @@ const Panel = new Lang.Class({
this._rightCorner = new PanelCorner(this._rightBox, St.Side.RIGHT);
this.actor.add_actor(this._rightCorner.actor);
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
this.actor.connect('allocate', Lang.bind(this, this._allocate));
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
Main.layoutManager.panelBox.add(this.actor);
@ -969,80 +1015,6 @@ const Panel = new Lang.Class({
this._updatePanel();
},
_getPreferredWidth: function(actor, forHeight, alloc) {
alloc.min_size = -1;
alloc.natural_size = Main.layoutManager.primaryMonitor.width;
},
_getPreferredHeight: function(actor, forWidth, alloc) {
// We don't need to implement this; it's forced by the CSS
alloc.min_size = -1;
alloc.natural_size = -1;
},
_allocate: function(actor, box, flags) {
let allocWidth = box.x2 - box.x1;
let allocHeight = box.y2 - box.y1;
let [leftMinWidth, leftNaturalWidth] = this._leftBox.get_preferred_width(-1);
let [centerMinWidth, centerNaturalWidth] = this._centerBox.get_preferred_width(-1);
let [rightMinWidth, rightNaturalWidth] = this._rightBox.get_preferred_width(-1);
let sideWidth, centerWidth;
centerWidth = centerNaturalWidth;
sideWidth = (allocWidth - centerWidth) / 2;
let childBox = new Clutter.ActorBox();
childBox.y1 = 0;
childBox.y2 = allocHeight;
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
childBox.x1 = allocWidth - Math.min(Math.floor(sideWidth),
leftNaturalWidth);
childBox.x2 = allocWidth;
} else {
childBox.x1 = 0;
childBox.x2 = Math.min(Math.floor(sideWidth),
leftNaturalWidth);
}
this._leftBox.allocate(childBox, flags);
childBox.x1 = Math.ceil(sideWidth);
childBox.y1 = 0;
childBox.x2 = childBox.x1 + centerWidth;
childBox.y2 = allocHeight;
this._centerBox.allocate(childBox, flags);
childBox.y1 = 0;
childBox.y2 = allocHeight;
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
childBox.x1 = 0;
childBox.x2 = Math.min(Math.floor(sideWidth),
rightNaturalWidth);
} else {
childBox.x1 = allocWidth - Math.min(Math.floor(sideWidth),
rightNaturalWidth);
childBox.x2 = allocWidth;
}
this._rightBox.allocate(childBox, flags);
let [cornerMinWidth, cornerWidth] = this._leftCorner.actor.get_preferred_width(-1);
let [cornerMinHeight, cornerHeight] = this._leftCorner.actor.get_preferred_width(-1);
childBox.x1 = 0;
childBox.x2 = cornerWidth;
childBox.y1 = allocHeight;
childBox.y2 = allocHeight + cornerHeight;
this._leftCorner.actor.allocate(childBox, flags);
let [cornerMinWidth, cornerWidth] = this._rightCorner.actor.get_preferred_width(-1);
let [cornerMinHeight, cornerHeight] = this._rightCorner.actor.get_preferred_width(-1);
childBox.x1 = allocWidth - cornerWidth;
childBox.x2 = allocWidth;
childBox.y1 = allocHeight;
childBox.y2 = allocHeight + cornerHeight;
this._rightCorner.actor.allocate(childBox, flags);
},
_onButtonPress: function(actor, event) {
if (event.get_source() != actor)
return false;

View File

@ -214,7 +214,8 @@ const Button = new Lang.Class({
destroy: function() {
this.actor._delegate = null;
this.menu.destroy();
if (this.menu)
this.menu.destroy();
this.actor.destroy();
this.emit('destroy');

View File

@ -2,6 +2,7 @@
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const GnomeDesktop = imports.gi.GnomeDesktop;
const Shell = imports.gi.Shell;
// We stop polling if the user is idle for more than this amount of time
@ -40,9 +41,9 @@ const PointerWatcher = new Lang.Class({
Name: 'PointerWatcher',
_init: function() {
let idleMonitor = Shell.IdleMonitor.get();
idleMonitor.add_watch(IDLE_TIME,
Lang.bind(this, this._onIdleMonitorWatch));
let idleMonitor = new GnomeDesktop.IdleMonitor();
idleMonitor.connect('became-active', Lang.bind(this, this._onIdleMonitorBecameActive));
idleMonitor.add_watch(IDLE_TIME, Lang.bind(this, this._onIdleMonitorBecameIdle));
this._idle = idleMonitor.get_idletime() > IDLE_TIME;
this._watches = [];
this.pointerX = null;
@ -78,11 +79,14 @@ const PointerWatcher = new Lang.Class({
}
},
_onIdleMonitorWatch: function(monitor, id, userBecameIdle) {
this._idle = userBecameIdle;
if (!userBecameIdle)
this._updatePointer();
_onIdleMonitorBecameActive: function(monitor) {
this._idle = false;
this._updatePointer();
this._updateTimeout();
},
_onIdleMonitorBecameIdle: function(monitor) {
this._idle = true;
this._updateTimeout();
},

View File

@ -404,9 +404,17 @@ const PopupSeparatorMenuItem = new Lang.Class({
this.parent({ reactive: false,
can_focus: false});
this._drawingArea = new St.DrawingArea({ style_class: 'popup-separator-menu-item' });
this.addActor(this._drawingArea, { span: -1, expand: true });
this._drawingArea.connect('repaint', Lang.bind(this, this._onRepaint));
this._separator = new HorzSeparator({ style_class: 'popup-separator-menu-item' });
this.addActor(this._separator.actor, { span: -1, expand: true });
}
});
const HorzSeparator = new Lang.Class({
Name: 'HorzSeparator',
_init: function (params) {
this.actor = new St.DrawingArea(params);
this.actor.connect('repaint', Lang.bind(this, this._onRepaint));
},
_onRepaint: function(area) {
@ -1269,13 +1277,14 @@ const PopupMenu = new Lang.Class({
},
close: function(animate) {
if (!this.isOpen)
return;
if (this._activeMenuItem)
this._activeMenuItem.setActive(false);
this._boxPointer.hide(animate);
if (this._boxPointer.actor.visible)
this._boxPointer.hide(animate);
if (!this.isOpen)
return;
this.isOpen = false;
this.emit('open-state-changed', false);

View File

@ -27,6 +27,9 @@ const SearchProviderIface = <interface name="org.gnome.Shell.SearchProvider">
<method name="ActivateResult">
<arg type="s" direction="in" />
</method>
<method name="LaunchSearch">
<arg type="as" direction="in" />
</method>
</interface>;
var SearchProviderProxy = Gio.DBusProxy.makeProxyWrapper(SearchProviderIface);
@ -112,6 +115,7 @@ const RemoteSearchProvider = new Lang.Class({
this.parent(title.toUpperCase());
this._cancellable = new Gio.Cancellable();
this.icon = icon;
},
createIcon: function(size, meta) {
@ -126,9 +130,7 @@ const RemoteSearchProvider = new Lang.Class({
width, height, rowStride, size);
}
// Ugh, but we want to fall back to something ...
return new St.Icon({ icon_name: 'text-x-generic',
icon_size: size });
return null;
},
_getResultsFinished: function(results, error) {
@ -196,6 +198,10 @@ const RemoteSearchProvider = new Lang.Class({
activateResult: function(id) {
this._proxy.ActivateResultRemote(id);
},
launchSearch: function(terms) {
this._proxy.LaunchSearchRemote(terms);
}
});

View File

@ -202,11 +202,12 @@ const RunDialog = new Lang.Class({
let label = new St.Label({ style_class: 'run-dialog-label',
text: _("Please enter a command:") });
text: _("Enter a Command") });
this.contentLayout.add(label, { y_align: St.Align.START });
let entry = new St.Entry({ style_class: 'run-dialog-entry' });
let entry = new St.Entry({ style_class: 'run-dialog-entry',
can_focus: true });
ShellEntry.addContextMenu(entry);
entry.label_actor = label;
@ -219,7 +220,9 @@ const RunDialog = new Lang.Class({
this.contentLayout.add(this._errorBox, { expand: true });
let errorIcon = new St.Icon({ icon_name: 'dialog-error', icon_size: 24, style_class: 'run-dialog-error-icon' });
let errorIcon = new St.Icon({ icon_name: 'dialog-error-symbolic',
icon_size: 24,
style_class: 'run-dialog-error-icon' });
this._errorBox.add(errorIcon, { y_align: St.Align.MIDDLE });
@ -234,6 +237,10 @@ const RunDialog = new Lang.Class({
this._errorBox.hide();
this.setButtons([{ action: Lang.bind(this, this.close),
label: _("Close"),
key: Clutter.Escape }]);
this._pathCompleter = new Gio.FilenameCompleter();
this._commandCompleter = new CommandCompleter();
this._group.connect('notify::visible', Lang.bind(this._commandCompleter, this._commandCompleter.update));
@ -244,20 +251,12 @@ const RunDialog = new Lang.Class({
let symbol = e.get_key_symbol();
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
this.popModal();
if (e.get_state() & Clutter.ModifierType.CONTROL_MASK)
this._run(o.get_text(), true);
else
this._run(o.get_text(), false);
if (!this._commandError)
this._run(o.get_text(),
e.get_state() & Clutter.ModifierType.CONTROL_MASK);
if (!this._commandError ||
!this.pushModal())
this.close();
else {
if (!this.pushModal())
this.close();
}
return true;
}
if (symbol == Clutter.Escape) {
this.close();
return true;
}
if (symbol == Clutter.slash) {

View File

@ -21,11 +21,12 @@ const Overview = imports.ui.overview;
const MessageTray = imports.ui.messageTray;
const ShellDBus = imports.ui.shellDBus;
const Tweener = imports.ui.tweener;
const Util = imports.misc.util;
const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
const LOCK_ENABLED_KEY = 'lock-enabled';
const CURTAIN_SLIDE_TIME = 0.5;
const CURTAIN_SLIDE_TIME = 0.3;
// fraction of screen height the arrow must reach before completing
// the slide up automatically
const ARROW_DRAG_THRESHOLD = 0.1;
@ -46,7 +47,7 @@ const SUMMARY_ICON_SIZE = 48;
// STANDARD_FADE_TIME is used when the session goes idle, while
// SHORT_FADE_TIME is used when requesting lock explicitly from the user menu
const STANDARD_FADE_TIME = 10;
const SHORT_FADE_TIME = 0.8;
const SHORT_FADE_TIME = 0.3;
const Clock = new Lang.Class({
Name: 'ScreenShieldClock',
@ -95,13 +96,13 @@ const NotificationsBox = new Lang.Class({
this._residentNotificationBox = new St.BoxLayout({ vertical: true,
style_class: 'screen-shield-notifications-box' });
let scrollView = new St.ScrollView({ x_fill: false, x_align: St.Align.MIDDLE });
let scrollView = new St.ScrollView({ x_fill: false, x_align: St.Align.START });
this._persistentNotificationBox = new St.BoxLayout({ vertical: true,
style_class: 'screen-shield-notifications-box' });
scrollView.add_actor(this._persistentNotificationBox);
this.actor.add(this._residentNotificationBox, { x_fill: true });
this.actor.add(scrollView, { x_fill: true, x_align: St.Align.MIDDLE });
this.actor.add(scrollView, { x_fill: true, x_align: St.Align.START });
this._items = [];
Main.messageTray.getSummaryItems().forEach(Lang.bind(this, function(item) {
@ -126,13 +127,12 @@ const NotificationsBox = new Lang.Class({
},
_updateVisibility: function() {
if (this._residentNotificationBox.get_n_children() > 0) {
this.actor.show();
return;
}
this._residentNotificationBox.visible = this._residentNotificationBox.get_n_children() > 0;
this._persistentNotificationBox.visible = this._persistentNotificationBox.get_children().some(function(a) {
return a.visible;
});
let children = this._persistentNotificationBox.get_children();
this.actor.visible = children.some(function(a) { return a.visible; });
this.actor.visible = this._residentNotificationBox.visible || this._persistentNotificationBox.visible;
},
_sourceIsResident: function(source) {
@ -153,7 +153,7 @@ const NotificationsBox = new Lang.Class({
box.add(sourceActor.actor, { y_fill: true });
let textBox = new St.BoxLayout({ vertical: true });
box.add(textBox);
box.add(textBox, { y_fill: false, y_align: St.Align.START });
let label = new St.Label({ text: source.title,
style_class: 'screen-shield-notification-label' });
@ -186,11 +186,11 @@ const NotificationsBox = new Lang.Class({
if (obj.resident) {
this._residentNotificationBox.add(item.notificationStackWidget);
item.closeButtonVisible = false;
item.closeButton.hide();
item.prepareNotificationStackForShowing();
} else {
[obj.sourceBox, obj.countLabel] = this._makeNotificationSource(item.source);
this._persistentNotificationBox.add(obj.sourceBox, { x_fill: false, x_align: St.Align.MIDDLE });
this._persistentNotificationBox.add(obj.sourceBox, { x_fill: false, x_align: St.Align.START });
}
obj.contentUpdatedId = item.connect('content-updated', Lang.bind(this, this._onItemContentUpdated));
@ -236,7 +236,7 @@ const NotificationsBox = new Lang.Class({
this._residentNotificationBox.remove_actor(obj.item.notificationStackWidget);
[obj.sourceBox, obj.countLabel] = this._makeNotificationSource(obj.source);
this._persistentNotificationBox.add(obj.sourceBox);
this._persistentNotificationBox.add(obj.sourceBox, { x_fill: false, x_align: St.Align.START });
} else if (itemShouldBeResident && !obj.resident) {
// make into a resident item
obj.sourceBox.destroy();
@ -244,7 +244,7 @@ const NotificationsBox = new Lang.Class({
obj.resident = true;
this._residentNotificationBox.add(obj.item.notificationStackWidget);
obj.item.closeButtonVisible = false;
obj.item.closeButton.hide();
obj.item.prepareNotificationStackForShowing();
} else {
// just update the counter
@ -430,6 +430,7 @@ const ScreenShield = new Lang.Class({
this._isGreeter = false;
this._isActive = false;
this._inUnlockAnimation = false;
this._activationTime = 0;
this._lightbox = new Lightbox.Lightbox(Main.uiGroup,
{ inhibitEvents: true,
@ -440,19 +441,26 @@ const ScreenShield = new Lang.Class({
_onLockScreenKeyRelease: function(actor, event) {
let symbol = event.get_key_symbol();
// Do nothing if the lock screen is not fully shown.
// This avoids reusing the previous (and stale) unlock
// dialog if esc is pressed while the curtain is going
// down after cancel.
// Similarly, don't bump if the lock screen is not showing or is
// animating, as the bump overrides the animation and would
// remove any onComplete handler.
if (this._lockScreenState != MessageTray.State.SHOWN)
return false;
if (symbol == Clutter.KEY_Escape ||
symbol == Clutter.KEY_Return ||
symbol == Clutter.KEY_KP_Enter) {
this._ensureUnlockDialog();
this._ensureUnlockDialog(true);
this._hideLockScreen(true);
return true;
}
// Don't bump if the lock screen is not showing or is
// animating, as the bump overrides the animation and would
// remove any onComplete handler
if (this._lockScreenState == MessageTray.State.SHOWN)
this._bumpLockScreen();
this._bumpLockScreen();
return true;
},
@ -470,7 +478,7 @@ const ScreenShield = new Lang.Class({
// 7 standard scrolls to lift up
if (this._lockScreenScrollCounter > 35) {
this._ensureUnlockDialog();
this._ensureUnlockDialog(false);
this._hideLockScreen(true);
}
@ -502,7 +510,7 @@ const ScreenShield = new Lang.Class({
_onDragBegin: function() {
Tweener.removeTweens(this._lockScreenGroup);
this._lockScreenState = MessageTray.State.HIDING;
this._ensureUnlockDialog();
this._ensureUnlockDialog(false);
},
_onDragEnd: function(action, actor, eventX, eventY, modifiers) {
@ -518,7 +526,7 @@ const ScreenShield = new Lang.Class({
Tweener.addTween(this._lockScreenGroup,
{ y: 0,
time: time,
transition: 'linear',
transition: 'easeInQuad',
onComplete: function() {
this._lockScreenGroup.fixed_position_set = false;
this._lockScreenState = MessageTray.State.SHOWN;
@ -550,8 +558,12 @@ const ScreenShield = new Lang.Class({
this._isModal = true;
}
if (!this._isActive)
if (!this._isActive) {
this._lightbox.show();
if (this._activationTime == 0)
this._activationTime = GLib.get_monotonic_time();
}
} else {
let lightboxWasShown = this._lightbox.shown;
this._lightbox.hide();
@ -579,7 +591,7 @@ const ScreenShield = new Lang.Class({
this.actor.show();
this._isGreeter = Main.sessionMode.isGreeter;
this._ensureUnlockDialog();
this._ensureUnlockDialog(true);
this._hideLockScreen(false);
},
@ -610,7 +622,7 @@ const ScreenShield = new Lang.Class({
Tweener.addTween(this._lockScreenGroup,
{ y: -h,
time: time,
transition: 'linear',
transition: 'easeInQuad',
onComplete: function() {
this._lockScreenState = MessageTray.State.HIDDEN;
this._lockScreenGroup.hide();
@ -626,7 +638,7 @@ const ScreenShield = new Lang.Class({
Main.sessionMode.popMode('lock-screen');
},
_ensureUnlockDialog: function() {
_ensureUnlockDialog: function(onPrimary) {
if (!this._dialog) {
let constructor = Main.sessionMode.unlockDialog;
this._dialog = new constructor(this._lockDialogGroup);
@ -636,8 +648,9 @@ const ScreenShield = new Lang.Class({
return;
}
let time = global.get_current_time();
this._dialog.connect('loaded', Lang.bind(this, function() {
if (!this._dialog.open()) {
if (!this._dialog.open(time, onPrimary)) {
log('Could not open login dialog: failed to acquire grab');
this.unlock();
}
@ -670,7 +683,7 @@ const ScreenShield = new Lang.Class({
Tweener.addTween(this._lockScreenGroup,
{ y: 0,
time: SHORT_FADE_TIME,
transition: 'linear',
transition: 'easeOutQuad',
onComplete: function() {
this._lockScreenShown();
},
@ -726,7 +739,8 @@ const ScreenShield = new Lang.Class({
y_align: Clutter.ActorAlign.CENTER,
x_expand: true,
y_expand: true,
vertical: true });
vertical: true,
style_class: 'screen-shield-contents-box' });
this._clock = new Clock();
this._lockScreenContentsBox.add(this._clock.actor, { x_fill: true,
y_fill: true });
@ -766,6 +780,10 @@ const ScreenShield = new Lang.Class({
return this._isActive;
},
get activationTime() {
return this._activationTime;
},
_tweenUnlocked: function() {
this._inUnlockAnimation = true;
this.unlock();
@ -810,6 +828,7 @@ const ScreenShield = new Lang.Class({
if (Main.sessionMode.currentMode == 'unlock-dialog')
Main.sessionMode.popMode('unlock-dialog');
this._activationTime = 0;
this._isActive = false;
this.emit('lock-status-changed');
},
@ -820,6 +839,9 @@ const ScreenShield = new Lang.Class({
this._isModal = true;
}
if (this._activationTime == 0)
this._activationTime = GLib.get_monotonic_time();
this.actor.show();
if (Main.sessionMode.currentMode != 'unlock-dialog' &&
@ -844,6 +866,8 @@ const ScreenShieldFallback = new Lang.Class({
Name: 'ScreenShieldFallback',
_init: function() {
Util.spawn(['gnome-screensaver']);
this._proxy = new Gio.DBusProxy({ g_connection: Gio.DBus.session,
g_name: 'org.gnome.ScreenSaver',
g_object_path: '/org/gnome/ScreenSaver',

View File

@ -163,6 +163,16 @@ const SearchProvider = new Lang.Class({
*/
activateResult: function(id) {
throw new Error('Not implemented');
},
/**
* launchSearch:
* @terms: Current search terms
*
* Called when the user clicks the provider icon.
*/
launchSearch: function(terms) {
throw new Error('Not implemented');
}
});
Signals.addSignalMethods(SearchProvider.prototype);
@ -261,5 +271,11 @@ const SearchSystem = new Lang.Class({
}
}
},
launchSearch: function(provider) {
let terms = this.getTerms();
provider.launchSearch(terms);
Main.overview.toggle();
}
});
Signals.addSignalMethods(SearchSystem.prototype);

View File

@ -4,25 +4,191 @@ const Clutter = imports.gi.Clutter;
const Lang = imports.lang;
const Gtk = imports.gi.Gtk;
const Meta = imports.gi.Meta;
const Signals = imports.signals;
const St = imports.gi.St;
const Atk = imports.gi.Atk;
const AppDisplay = imports.ui.appDisplay;
const DND = imports.ui.dnd;
const IconGrid = imports.ui.iconGrid;
const Main = imports.ui.main;
const Overview = imports.ui.overview;
const PopupMenu = imports.ui.popupMenu;
const Search = imports.ui.search;
const MAX_SEARCH_RESULTS_ROWS = 1;
const MAX_SEARCH_RESULTS_ROWS = 3;
const MAX_GRID_SEARCH_RESULTS_ROWS = 1;
const SearchResult = new Lang.Class({
Name: 'SearchResult',
const ListSearchResult = new Lang.Class({
Name: 'ListSearchResult',
ICON_SIZE: 64,
_init: function(provider, metaInfo, terms) {
this.provider = provider;
this.metaInfo = metaInfo;
this.actor = new St.Button({ style_class: 'search-result',
reactive: true,
can_focus: true,
track_hover: true,
x_align: St.Align.START,
x_fill: true,
y_fill: true });
this.actor._delegate = this;
let content = new St.BoxLayout({ style_class: 'search-result-content',
vertical: false });
this._content = content;
this.actor.set_child(content);
// An icon for, or thumbnail of, content
let icon = this.metaInfo['createIcon'](this.ICON_SIZE);
if (icon) {
let iconBin = new St.Bin({ style_class: 'search-result-icon',
child: icon });
content.add(iconBin);
}
let details = new St.BoxLayout({ style_class: 'search-result-details',
vertical: true });
content.add(details, { x_fill: true,
y_fill: false,
x_align: St.Align.START,
y_align: St.Align.MIDDLE });
let title = new St.Label({ style_class: 'search-result-details-title',
text: this.metaInfo['name'] })
details.add(title, { x_fill: true,
y_fill: false,
x_align: St.Align.START,
y_align: St.Align.START });
// TODO: could highlight terms in the description here, or should
// providers provide what should be highlighted?
if (this.metaInfo['description']) {
let description = new St.Label({ style_class: 'search-result-details-description',
text: this.metaInfo['description'] });
details.add(description, { x_fill: false,
y_fill: true,
x_align: St.Align.START,
y_align: St.Align.END });
}
this.actor.connect('clicked', Lang.bind(this, this._onResultClicked));
},
setSelected: function(selected) {
if (selected)
this.actor.add_style_pseudo_class('selected');
else
this.actor.remove_style_pseudo_class('selected');
},
activate: function() {
this.provider.activateResult(this.metaInfo.id);
Main.overview.toggle();
},
_onResultClicked: function(actor) {
this.activate();
}
});
const ListSearchResults = new Lang.Class({
Name: 'ListSearchResults',
Extends: Search.SearchResultDisplay,
_init: function(provider) {
this.parent(provider);
this.actor = new St.BoxLayout({ style_class: 'results-list',
vertical: true });
this.actor.connect('notify::width', Lang.bind(this, function() {
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
let results = this.getResultsForDisplay();
if (results.length == 0)
return;
provider.getResultMetas(results, Lang.bind(this, this.renderResults));
}));
}));
this._notDisplayedResult = [];
this._terms = [];
this._pendingClear = false;
},
getResultsForDisplay: function() {
let alreadyVisible = this._pendingClear ? 0 : this.getVisibleResultCount();
let canDisplay = MAX_SEARCH_RESULTS_ROWS - alreadyVisible;
let numResults = Math.min(this._notDisplayedResult.length, canDisplay);
return this._notDisplayedResult.splice(0, numResults);
},
getVisibleResultCount: function() {
return this.actor.get_n_children();
},
hasMoreResults: function() {
return this._notDisplayedResult.length > 0;
},
setResults: function(results, terms) {
// copy the lists
this._notDisplayedResult = results.slice(0);
this._terms = terms.slice(0);
this._pendingClear = true;
},
renderResults: function(metas) {
for (let i = 0; i < metas.length; i++) {
let display = new ListSearchResult(this.provider, metas[i], this._terms);
this.addItem(display.actor);
display.actor.connect('key-focus-in', Lang.bind(this, this._onFocusedProviderChanged));
}
},
clear: function () {
this.actor.destroy_all_children();
this._pendingClear = false;
},
getFirstResult: function() {
if (this.getVisibleResultCount() > 0)
return this.getItemAtIndex(0)._delegate;
else
return null;
},
addItem: function(actor, index) {
if (index !== undefined)
this.actor.insert_child_at_index(actor, index);
else
this.actor.add_actor(actor);
},
getItemAtIndex: function(index) {
return this.actor.get_child_at_index(index);
},
_onFocusedProviderChanged: function() {
this.emit('focused-provider-changed');
}
});
Signals.addSignalMethods(ListSearchResults.prototype);
const GridSearchResult = new Lang.Class({
Name: 'GridSearchResult',
_init: function(provider, metaInfo, terms) {
this.provider = provider;
this.metaInfo = metaInfo;
this.actor = new St.Button({ style_class: 'grid-search-result',
reactive: true,
x_align: St.Align.START,
y_fill: true });
@ -31,7 +197,7 @@ const SearchResult = new Lang.Class({
let content = provider.createResultActor(metaInfo, terms);
if (content == null) {
content = new St.Bin({ style_class: 'search-result-content',
content = new St.Bin({ style_class: 'grid-search-result-content',
reactive: true,
can_focus: true,
track_hover: true,
@ -45,7 +211,7 @@ const SearchResult = new Lang.Class({
if (content._delegate && content._delegate.getDragActorSource)
this._dragActorSource = content._delegate.getDragActorSource();
}
this._content = content;
this.content = content;
this.actor.set_child(content);
this.actor.connect('clicked', Lang.bind(this, this._onResultClicked));
@ -53,23 +219,23 @@ const SearchResult = new Lang.Class({
let draggable = DND.makeDraggable(this.actor);
draggable.connect('drag-begin',
Lang.bind(this, function() {
Main.overview.beginItemDrag(this);
Main.overview.beginAppDrag(this);
}));
draggable.connect('drag-cancelled',
Lang.bind(this, function() {
Main.overview.cancelledItemDrag(this);
Main.overview.cancelledAppDrag(this);
}));
draggable.connect('drag-end',
Lang.bind(this, function() {
Main.overview.endItemDrag(this);
Main.overview.endAppDrag(this);
}));
},
setSelected: function(selected) {
if (selected)
this._content.add_style_pseudo_class('selected');
this.content.add_style_pseudo_class('selected');
else
this._content.remove_style_pseudo_class('selected');
this.content.remove_style_pseudo_class('selected');
},
activate: function() {
@ -85,7 +251,7 @@ const SearchResult = new Lang.Class({
if (this._dragActorSource)
return this._dragActorSource;
// not exactly right, but alignment problems are hard to notice
return this._content;
return this.content;
},
getDragActor: function(stageX, stageY) {
@ -108,11 +274,11 @@ const GridSearchResults = new Lang.Class({
_init: function(provider, grid) {
this.parent(provider);
this._grid = grid || new IconGrid.IconGrid({ rowLimit: MAX_SEARCH_RESULTS_ROWS,
this._grid = grid || new IconGrid.IconGrid({ rowLimit: MAX_GRID_SEARCH_RESULTS_ROWS,
xAlign: St.Align.START });
this.actor = new St.Bin({ x_align: St.Align.START });
this.actor = new St.Bin({ x_align: St.Align.MIDDLE });
this.actor.set_child(this._grid.actor);
this._width = 0;
this.actor.connect('notify::width', Lang.bind(this, function() {
this._width = this.actor.width;
@ -130,6 +296,7 @@ const GridSearchResults = new Lang.Class({
},
getResultsForDisplay: function() {
this._grid.actor.ensure_style();
let alreadyVisible = this._pendingClear ? 0 : this._grid.visibleItemsCount();
let canDisplay = this._grid.childrenInRow(this._width) * this._grid.getRowLimit()
- alreadyVisible;
@ -143,6 +310,10 @@ const GridSearchResults = new Lang.Class({
return this._grid.visibleItemsCount();
},
hasMoreResults: function() {
return this._notDisplayedResult.length > 0;
},
setResults: function(results, terms) {
// copy the lists
this._notDisplayedResult = results.slice(0);
@ -152,8 +323,10 @@ const GridSearchResults = new Lang.Class({
renderResults: function(metas) {
for (let i = 0; i < metas.length; i++) {
let display = new SearchResult(this.provider, metas[i], this._terms);
let display = new GridSearchResult(this.provider, metas[i], this._terms);
this._grid.addItem(display.actor);
display.content.connect('key-focus-in', Lang.bind(this, this._onFocusedProviderChanged));
}
},
@ -167,11 +340,17 @@ const GridSearchResults = new Lang.Class({
return this._grid.getItemAtIndex(0)._delegate;
else
return null;
},
_onFocusedProviderChanged: function() {
this.emit('focused-provider-changed');
}
});
Signals.addSignalMethods(GridSearchResults.prototype);
const SearchResults = new Lang.Class({
Name: 'SearchResults',
const SearchDisplay = new Lang.Class({
Name: 'SearchDisplay',
_init: function(searchSystem) {
this._searchSystem = searchSystem;
@ -222,19 +401,43 @@ const SearchResults = new Lang.Class({
createProviderMeta: function(provider) {
let providerBox = new St.BoxLayout({ style_class: 'search-section',
vertical: true });
let title = new St.Label({ style_class: 'search-section-header',
text: provider.title });
providerBox.add(title, { x_fill: false, x_align: St.Align.START });
let providerBoxContent = new St.BoxLayout({ style_class: 'search-section-content' });
let isAppsProvider = (provider instanceof AppDisplay.AppSearchProvider);
let providerIcon;
if (!isAppsProvider) {
let separator = new PopupMenu.HorzSeparator({ style_class: 'search-section-separator' });
providerBox.add(separator.actor, { expand: true });
providerIcon = new ProviderIcon(provider);
providerIcon.connect('launch-search', Lang.bind(this, function(providerIcon) {
this._searchSystem.launchSearch(providerIcon.provider);
}));
providerBoxContent.add(providerIcon.actor, { x_fill: false,
y_fill: false,
x_align: St.Align.START,
y_align: St.Align.START });
}
let resultDisplayBin = new St.Bin({ style_class: 'search-section-results',
x_fill: true,
y_fill: true });
providerBox.add(resultDisplayBin, { expand: true });
let resultDisplay = new GridSearchResults(provider);
providerBoxContent.add(resultDisplayBin, { expand: true });
providerBox.add(providerBoxContent);
let resultDisplay;
if (isAppsProvider)
resultDisplay = new GridSearchResults(provider);
else
resultDisplay = new ListSearchResults(provider);
resultDisplay.connect('focused-provider-changed', Lang.bind(this, this._updateProviderIconCanFocus));
resultDisplayBin.set_child(resultDisplay.actor);
this._providerMeta.push({ provider: provider,
actor: providerBox,
icon: providerIcon,
resultDisplay: resultDisplay });
this._content.add(providerBox);
},
@ -255,6 +458,7 @@ const SearchResults = new Lang.Class({
let meta = this._providerMeta[i];
meta.resultDisplay.clear();
meta.actor.hide();
if (meta.icon) meta.icon.actor.can_focus = false;
}
},
@ -262,6 +466,7 @@ const SearchResults = new Lang.Class({
let meta = this._metaForProvider(provider);
meta.resultDisplay.clear();
meta.actor.hide();
if (meta.icon) meta.icon.actor.can_focus = false;
},
reset: function() {
@ -284,6 +489,11 @@ const SearchResults = new Lang.Class({
return this._providerMeta[this._providers.indexOf(provider)];
},
_metaForProvidersExcept: function(provider) {
let skip = this._providers.indexOf(provider);
return this._providerMeta.filter(function(meta, index) { return index != skip }, this);
},
_maybeSetInitialSelection: function() {
let newDefaultResult = null;
@ -341,6 +551,9 @@ const SearchResults = new Lang.Class({
meta.resultDisplay.setResults(providerResults, terms);
let results = meta.resultDisplay.getResultsForDisplay();
if (meta.icon)
meta.icon.moreIcon.visible = meta.resultDisplay.hasMoreResults();
provider.getResultMetas(results, Lang.bind(this, function(metas) {
this._clearDisplayForProvider(provider);
meta.actor.show();
@ -374,6 +587,15 @@ const SearchResults = new Lang.Class({
this._defaultResult.setSelected(highlight);
},
_updateProviderIconCanFocus: function(resultDisplay) {
let meta = this._metaForProvider(resultDisplay.provider);
if (meta.icon)
meta.icon.actor.can_focus = true;
let others = this._metaForProvidersExcept(resultDisplay.provider);
others.forEach(function(meta) { if (meta.icon) meta.icon.actor.can_focus = false; });
},
navigateFocus: function(direction) {
let rtl = this.actor.get_text_direction() == Clutter.TextDirection.RTL;
if (direction == Gtk.DirectionType.TAB_BACKWARD ||
@ -393,3 +615,65 @@ const SearchResults = new Lang.Class({
}
}
});
const ProviderIcon = new Lang.Class({
Name: 'ProviderIcon',
PROVIDER_ICON_SIZE: 48,
MORE_ICON_SIZE: 16,
_init: function(provider) {
this.provider = provider;
this.actor = new St.Button({ style_class: 'search-section-icon-bin',
reactive: true,
track_hover: true });
this.actor.connect('clicked', Lang.bind(this, this._onIconClicked));
this._content = new St.Widget({ layout_manager: new Clutter.BinLayout() });
this.actor.set_child(this._content);
let rtl = (this.actor.get_text_direction() == Clutter.TextDirection.RTL);
this.moreIcon = new St.Icon({ style_class: 'search-section-icon-more',
icon_size: this.MORE_ICON_SIZE,
icon_name: 'list-add-symbolic',
visible: false,
x_align: rtl ? Clutter.ActorAlign.START : Clutter.ActorAlign.END,
y_align: Clutter.ActorAlign.END,
// HACK: without these, ClutterBinLayout
// ignores alignment properties on the actor
x_expand: true,
y_expand: true });
this._iconBin = new St.Bin({ style_class: 'search-section-icon',
width: this.PROVIDER_ICON_SIZE,
height: this.PROVIDER_ICON_SIZE });
this._content.add_actor(this._iconBin);
this._content.add_actor(this.moreIcon);
this._createProviderIcon();
},
_createProviderIcon: function() {
let icon = new St.Icon({ icon_size: this.PROVIDER_ICON_SIZE });
if (this.provider.icon)
icon.gicon = this.provider.icon;
else
icon.icon_name = 'application-x-executable';
this._iconBin.set_child(icon);
},
activate: function() {
this.emit('launch-search');
},
_onIconClicked: function(actor) {
this.activate();
}
});
Signals.addSignalMethods(ProviderIcon.prototype);

View File

@ -39,7 +39,7 @@ const _modes = {
unlockDialog: imports.gdm.loginDialog.LoginDialog,
components: ['polkitAgent'],
panel: {
left: [],
left: ['logo'],
center: ['dateMenu'],
right: ['a11y', 'display', 'keyboard',
'volume', 'battery', 'powerMenu']

View File

@ -57,7 +57,10 @@ const ScreenSaverIface = <interface name="org.gnome.ScreenSaver">
<arg name="active" direction="out" type="b" />
</method>
<method name="SetActive">
<arg name="value" direction="in" type="u" />
<arg name="value" direction="in" type="b" />
</method>
<method name="GetActiveTime">
<arg name="value" direction="out" type="u" />
</method>
<signal name="ActiveChanged">
<arg name="new_value" type="b" />
@ -373,5 +376,13 @@ const ScreenSaverDBus = new Lang.Class({
GetActive: function() {
return this._screenShield.locked;
}
},
GetActiveTime: function() {
let started = this._screenShield.activationTime;
if (started > 0)
return Math.floor((GLib.get_monotonic_time() - started) / 1000000);
else
return 0;
},
});

View File

@ -238,7 +238,7 @@ const InputSourceIndicator = new Lang.Class({
// but at least for now it is used as "allow popping up windows
// from shell menus"; we can always add a separate sessionMode
// option if need arises.
this._showLayoutItem.visible = Main.sessionMode.allowSettings;
this._showLayoutItem.actor.visible = Main.sessionMode.allowSettings;
},
_currentInputSourceChanged: function() {

View File

@ -233,20 +233,11 @@ const NMWirelessSectionTitleMenuItem = new Lang.Class({
}
});
const NMDevice = new Lang.Class({
Name: 'NMDevice',
const NMConnectionBased = new Lang.Class({
Name: 'NMConnectionBased',
Abstract: true,
_init: function(client, device, connections) {
this.device = device;
if (device) {
this.device._delegate = this;
this._stateChangedId = this.device.connect('state-changed', Lang.bind(this, this._deviceStateChanged));
} else
this._stateChangedId = 0;
// protected
this._client = client;
_init: function(connections) {
this._connections = [ ];
for (let i = 0; i < connections.length; i++) {
if (!connections[i].get_uuid())
@ -264,26 +255,115 @@ const NMDevice = new Lang.Class({
this._connections.push(obj);
}
this._connections.sort(this._connectionSortFunction);
},
checkConnection: function(connection) {
let pos = this._findConnection(connection.get_uuid());
let exists = pos != -1;
let valid = this.connectionValid(connection);
let similar = false;
if (exists) {
let existing = this._connections[pos];
// Check if connection changed name or id
similar = existing.name == connection.get_id() &&
existing.timestamp == connection._timestamp;
}
if (exists && valid && similar) {
// Nothing to do
return;
}
if (exists)
this.removeConnection(connection);
if (valid)
this.addConnection(connection);
},
addConnection: function(connection) {
// record the connection
let obj = {
connection: connection,
name: connection.get_id(),
uuid: connection.get_uuid(),
timestamp: connection._timestamp,
item: null,
};
Util.insertSorted(this._connections, obj, this._connectionSortFunction);
this._queueCreateSection();
},
removeConnection: function(connection) {
let pos = this._findConnection(connection.get_uuid());
if (pos == -1) {
// this connection was never added, nothing to do here
return;
}
let obj = this._connections[pos];
if (obj.item)
obj.item.destroy();
this._connections.splice(pos, 1);
if (this._connections.length <= 1) {
// We need to show the automatic connection again
// (or in the case of NMDeviceWired, we want to hide
// the only explicit connection)
this._queueCreateSection();
}
},
_findConnection: function(uuid) {
for (let i = 0; i < this._connections.length; i++) {
let obj = this._connections[i];
if (obj.uuid == uuid)
return i;
}
return -1;
},
_connectionSortFunction: function(one, two) {
if (one.timestamp == two.timestamp)
return GLib.utf8_collate(one.name, two.name);
return two.timestamp - one.timestamp;
},
});
Signals.addSignalMethods(NMConnectionBased.prototype);
const NMDevice = new Lang.Class({
Name: 'NMDevice',
Abstract: true,
Extends: NMConnectionBased,
_init: function(client, device, connections) {
this.device = device;
this.device._delegate = this;
this._stateChangedId = this.device.connect('state-changed', Lang.bind(this, this._deviceStateChanged));
// protected
this._client = client;
this.parent(connections);
this._activeConnection = null;
this._activeConnectionItem = null;
this._autoConnectionItem = null;
this._overflowItem = null;
if (this.device) {
this.statusItem = new PopupMenu.PopupSwitchMenuItem(this._getDescription(), this.connected, { style_class: 'popup-subtitle-menu-item' });
this._statusChanged = this.statusItem.connect('toggled', Lang.bind(this, function(item, state) {
let ok;
if (state)
ok = this.activate();
else
ok = this.deactivate();
this.statusItem = new PopupMenu.PopupSwitchMenuItem(this._getDescription(), this.connected, { style_class: 'popup-subtitle-menu-item' });
this._statusChanged = this.statusItem.connect('toggled', Lang.bind(this, function(item, state) {
let ok;
if (state)
ok = this.activate();
else
ok = this.deactivate();
if (!ok)
item.setToggleState(!state);
}));
if (!ok)
item.setToggleState(!state);
}));
this._updateStatusItem();
}
this._updateStatusItem();
this.section = new PopupMenu.PopupMenuSection();
this._deferredWorkId = Main.initializeDeferredWork(this.section.actor, Lang.bind(this, this._createSection));
@ -352,6 +432,10 @@ const NMDevice = new Lang.Class({
return this.device.state == NetworkManager.DeviceState.ACTIVATED;
},
clearActiveConnection: function(activeConnection) {
this.setActiveConnection(null);
},
setActiveConnection: function(activeConnection) {
if (activeConnection == this._activeConnection)
// nothing to do
@ -369,80 +453,13 @@ const NMDevice = new Lang.Class({
this._queueCreateSection();
},
checkConnection: function(connection) {
let pos = this._findConnection(connection.get_uuid());
let exists = pos != -1;
let valid = this.connectionValid(connection);
let similar = false;
if (exists) {
let existing = this._connections[pos];
// Check if connection changed name or id
similar = existing.name == connection.get_id() &&
existing.timestamp == connection._timestamp;
}
if (exists && valid && similar) {
// Nothing to do
return;
}
if (exists)
this.removeConnection(connection);
if (valid)
this.addConnection(connection);
},
addConnection: function(connection) {
// record the connection
let obj = {
connection: connection,
name: connection.get_id(),
uuid: connection.get_uuid(),
timestamp: connection._timestamp,
item: null,
};
Util.insertSorted(this._connections, obj, this._connectionSortFunction);
this._clearSection();
this._queueCreateSection();
},
removeConnection: function(connection) {
let pos = this._findConnection(connection.get_uuid());
if (pos == -1) {
// this connection was never added, nothing to do here
return;
}
let obj = this._connections[pos];
if (obj.item)
obj.item.destroy();
this._connections.splice(pos, 1);
if (this._connections.length <= 1) {
// We need to show the automatic connection again
// (or in the case of NMDeviceWired, we want to hide
// the only explicit connection)
this._clearSection();
this._queueCreateSection();
}
},
connectionValid: function(connection) {
return this.device.connection_valid(connection);
},
_connectionSortFunction: function(one, two) {
if (one.timestamp == two.timestamp)
return GLib.utf8_collate(one.name, two.name);
return two.timestamp - one.timestamp;
},
setEnabled: function(enabled) {
// do nothing by default, we want to keep the conneciton list visible
// in the majority of cases (wired, wwan, vpn)
// in the majority of cases (wired, wwan)
},
getStatusLabel: function() {
@ -500,15 +517,6 @@ const NMDevice = new Lang.Class({
throw new TypeError('Invoking pure virtual function NMDevice.createAutomaticConnection');
},
_findConnection: function(uuid) {
for (let i = 0; i < this._connections.length; i++) {
let obj = this._connections[i];
if (obj.uuid == uuid)
return i;
}
return -1;
},
_queueCreateSection: function() {
this._clearSection();
Main.queueDeferredWork(this._deferredWorkId);
@ -652,8 +660,6 @@ const NMDevice = new Lang.Class({
return out;
}
});
Signals.addSignalMethods(NMDevice.prototype);
const NMDeviceWired = new Lang.Class({
Name: 'NMDeviceWired',
@ -868,95 +874,6 @@ const NMDeviceBluetooth = new Lang.Class({
}
});
// Not a real device, but I save a lot code this way
const NMDeviceVPN = new Lang.Class({
Name: 'NMDeviceVPN',
Extends: NMDevice,
_init: function(client, device, connections) {
// Disable autoconnections
this._autoConnectionName = null;
this.category = NMConnectionCategory.VPN;
this.parent(client, null, connections);
},
connectionValid: function(connection) {
return connection._type == NetworkManager.SETTING_VPN_SETTING_NAME;
},
get empty() {
return this._connections.length == 0;
},
get connected() {
if (!this._activeConnection)
return false;
return this._activeConnection.vpn_state == NetworkManager.VPNConnectionState.ACTIVATED;
},
setActiveConnection: function(activeConnection) {
if (this._stateChangeId)
this._activeConnection.disconnect(this._stateChangeId);
this._stateChangeId = 0;
this.parent(activeConnection);
if (this._activeConnection)
this._stateChangeId = this._activeConnection.connect('vpn-state-changed',
Lang.bind(this, this._connectionStateChanged));
this.emit('state-changed');
},
_shouldShowConnectionList: function() {
return true;
},
deactivate: function() {
if (this._activeConnection)
this._client.deactivate_connection(this._activeConnection);
},
getStatusLabel: function() {
if (!this._activeConnection) // Same as DISCONNECTED
return null;
switch(this._activeConnection.vpn_state) {
case NetworkManager.VPNConnectionState.DISCONNECTED:
case NetworkManager.VPNConnectionState.ACTIVATED:
return null;
case NetworkManager.VPNConnectionState.PREPARE:
case NetworkManager.VPNConnectionState.CONNECT:
case NetworkManager.VPNConnectionState.IP_CONFIG_GET:
return _("connecting...");
case NetworkManager.VPNConnectionState.NEED_AUTH:
/* Translators: this is for network connections that require some kind of key or password */
return _("authentication required");
case NetworkManager.VPNConnectionState.FAILED:
return _("connection failed");
default:
log('VPN connection state invalid, is %d'.format(this.device.state));
return 'invalid';
}
},
_connectionStateChanged: function(connection, newstate, reason) {
if (newstate == NetworkManager.VPNConnectionState.FAILED) {
// FIXME: if we ever want to show something based on reason,
// we need to convert from NetworkManager.VPNConnectionStateReason
// to NetworkManager.DeviceStateReason
this.emit('activation-failed', reason);
}
// Differently from real NMDevices, there is no need to queue
// an update of the menu section, contents wouldn't change anyway
this.emit('state-changed');
}
});
const NMDeviceWireless = new Lang.Class({
Name: 'NMDeviceWireless',
Extends: NMDevice,
@ -1557,6 +1474,151 @@ const NMDeviceWireless = new Lang.Class({
},
});
const NMVPNSection = new Lang.Class({
Name: 'NMVPNSection',
Extends: NMConnectionBased,
category: NMConnectionCategory.VPN,
_init: function(client, connections) {
this.parent(connections);
this._client = client;
this.section = new PopupMenu.PopupMenuSection();
this._deferredWorkId = Main.initializeDeferredWork(this.section.actor, Lang.bind(this, this._createSection));
},
get empty() {
return this._connections.length == 0;
},
connectionValid: function(connection) {
// filtering is done by NMApplet code
return true;
},
getStatusLabel: function(activeConnection) {
switch(activeConnection.vpn_state) {
case NetworkManager.VPNConnectionState.DISCONNECTED:
case NetworkManager.VPNConnectionState.ACTIVATED:
return null;
case NetworkManager.VPNConnectionState.PREPARE:
case NetworkManager.VPNConnectionState.CONNECT:
case NetworkManager.VPNConnectionState.IP_CONFIG_GET:
return _("connecting...");
case NetworkManager.VPNConnectionState.NEED_AUTH:
/* Translators: this is for network connections that require some kind of key or password */
return _("authentication required");
case NetworkManager.VPNConnectionState.FAILED:
return _("connection failed");
default:
log('VPN connection state invalid, is %d'.format(this.device.state));
return 'invalid';
}
},
clearActiveConnection: function(activeConnection) {
let pos = this._findConnection(activeConnection.uuid);
if (pos < 0)
return;
let obj = this._connections[pos];
obj.active.disconnect(obj.stateChangedId);
obj.active = null;
if (obj.item) {
obj.item.setToggleState(false);
obj.item.setStatus(null);
}
},
setActiveConnection: function(activeConnection) {
let pos = this._findConnection(activeConnection.uuid);
if (pos < 0)
return;
let obj = this._connections[pos];
obj.active = activeConnection;
obj.stateChangedId = obj.active.connect('vpn-state-changed',
Lang.bind(this, this._connectionStateChanged));
if (obj.item) {
obj.item.setToggleState(obj.active.vpn_state ==
NetworkManager.VPNConnectionState.ACTIVATED);
obj.item.setStatus(this.getStatusLabel(obj.active));
}
},
_queueCreateSection: function() {
this.section.removeAll();
Main.queueDeferredWork(this._deferredWorkId);
},
_createConnectionItem: function(obj) {
let menuItem = new PopupMenu.PopupSwitchMenuItem(obj.name, false,
{ style_class: 'popup-subtitle-menu-item' });
menuItem.connect('toggled', Lang.bind(this, function(menuItem) {
if (menuItem.state) {
this._client.activate_connection(obj.connection, null, null, null);
// Immediately go back to disconnected, until NM tells us to change
menuItem.setToggleState(false);
} else if (obj.active) {
this._client.deactivate_connection(obj.active);
}
}));
if (obj.active) {
menuItem.setToggleState(obj.active.vpn_state ==
NetworkManager.VPNConnectionState.ACTIVATED);
menuItem.setStatus(this.getStatusLabel(obj.active));
}
return menuItem;
},
_createSection: function() {
if (this._connections.length > 0) {
this.section.actor.show();
for(let j = 0; j < this._connections.length; ++j) {
let obj = this._connections[j];
obj.item = this._createConnectionItem(obj);
if (j >= NUM_VISIBLE_NETWORKS) {
if (!this._overflowItem) {
this._overflowItem = new PopupMenu.PopupSubMenuMenuItem(_("More..."));
this.section.addMenuItem(this._overflowItem);
}
this._overflowItem.menu.addMenuItem(obj.item);
} else
this.section.addMenuItem(obj.item);
}
} else {
this.section.actor.hide()
}
},
_connectionStateChanged: function(vpnConnection, newstate, reason) {
if (newstate == NetworkManager.VPNConnectionState.FAILED) {
// FIXME: if we ever want to show something based on reason,
// we need to convert from NetworkManager.VPNConnectionStateReason
// to NetworkManager.DeviceStateReason
this.emit('activation-failed', reason);
}
let pos = this._findConnection(vpnConnection.uuid);
if (pos >= 0) {
let obj = this._connections[pos];
if (obj.item) {
obj.item.setToggleState(vpnConnection.vpn_state ==
NetworkManager.VPNConnectionState.ACTIVATED);
obj.item.setStatus(this.getStatusLabel(vpnConnection));
}
} else {
log('Could not find connection for vpn-state-changed handler');
}
},
});
const NMApplet = new Lang.Class({
Name: 'NMApplet',
Extends: PanelMenu.SystemStatusButton,
@ -1622,15 +1684,9 @@ const NMApplet = new Lang.Class({
this.menu.addMenuItem(this._devices.wwan.section);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this._devices.vpn = {
section: new PopupMenu.PopupMenuSection(),
device: this._makeWrapperDevice(NMDeviceVPN, null),
item: new NMWiredSectionTitleMenuItem(_("VPN Connections"))
};
this._devices.vpn.section.addMenuItem(this._devices.vpn.item);
this._devices.vpn.section.addMenuItem(this._devices.vpn.device.section);
this._devices.vpn.section.actor.hide();
this.menu.addMenuItem(this._devices.vpn.section);
this._vpnSection = new NMVPNSection(this._client, this._connections);
this._vpnSection.connect('activation-failed', Lang.bind(this, this._onActivationFailed));
this.menu.addMenuItem(this._vpnSection.section);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
@ -1699,18 +1755,6 @@ const NMApplet = new Lang.Class({
},
_syncSectionTitle: function(category) {
if (category == NMConnectionCategory.VPN) {
// Special case VPN: it's only one device (and a fake one
// actually), and we don't show it if empty
let device = this._devices.vpn.device;
let section = this._devices.vpn.section;
let item = this._devices.vpn.item;
section.actor.visible = !device.empty;
item.updateForDevice(device);
return;
}
let devices = this._devices[category].devices;
let item = this._devices[category].item;
let section = this._devices[category].section;
@ -1747,10 +1791,9 @@ const NMApplet = new Lang.Class({
or this._source will be cleared */
this._ensureSource();
let icon = new St.Icon({ icon_name: iconName,
icon_size: MessageTray.NOTIFICATION_ICON_SIZE });
let gicon = new Gio.ThemedIcon({ name: iconName });
device._notification = new MessageTray.Notification(this._source, title, text,
{ icon: icon });
{ gicon: gicon });
device._notification.setUrgency(urgency);
device._notification.setTransient(true);
device._notification.connect('destroy', function() {
@ -1759,17 +1802,20 @@ const NMApplet = new Lang.Class({
this._source.notify(device._notification);
},
_onActivationFailed: function(device, reason) {
// XXX: nm-applet has no special text depending on reason
// but I'm not sure of this generic message
this._notifyForDevice(device, 'network-error-symbolic',
_("Connection failed"),
_("Activation of network connection failed"),
MessageTray.Urgency.HIGH);
},
_makeWrapperDevice: function(wrapperClass, device) {
let wrapper = new wrapperClass(this._client, device, this._connections);
wrapper._activationFailedId = wrapper.connect('activation-failed', Lang.bind(this, function(device, reason) {
// XXX: nm-applet has no special text depending on reason
// but I'm not sure of this generic message
this._notifyForDevice(device, 'network-error-symbolic',
_("Connection failed"),
_("Activation of network connection failed"),
MessageTray.Urgency.HIGH);
}));
wrapper._activationFailedId = wrapper.connect('activation-failed',
Lang.bind(this, this._onActivationFailed));
wrapper._deviceStateChangedId = wrapper.connect('state-changed', Lang.bind(this, function(dev) {
this._syncSectionTitle(dev.category);
}));
@ -1852,7 +1898,7 @@ const NMApplet = new Lang.Class({
for (let i = 0; i < closedConnections.length; i++) {
let active = closedConnections[i];
if (active._primaryDevice) {
active._primaryDevice.setActiveConnection(null);
active._primaryDevice.clearActiveConnection(active);
active._primaryDevice = null;
}
if (active._inited) {
@ -1919,7 +1965,7 @@ const NMApplet = new Lang.Class({
}
}
} else
a._primaryDevice = this._devices.vpn.device
a._primaryDevice = this._vpnSection;
if (a._primaryDevice)
a._primaryDevice.setActiveConnection(a);
@ -2001,8 +2047,7 @@ const NMApplet = new Lang.Class({
let section = connection._section;
if (section == NMConnectionCategory.VPN) {
this._devices.vpn.device.removeConnection(connection);
this._syncSectionTitle(section);
this._vpnSection.removeConnection(connection);
} else if (section != NMConnectionCategory.INVALID) {
let devices = this._devices[section].devices;
for (let i = 0; i < devices.length; i++)
@ -2025,8 +2070,7 @@ const NMApplet = new Lang.Class({
if (section == NMConnectionCategory.INVALID)
return;
if (section == NMConnectionCategory.VPN) {
this._devices.vpn.device.checkConnection(connection);
this._syncSectionTitle(section);
this._vpnSection.checkConnection(connection);
} else {
let devices = this._devices[section].devices;
for (let i = 0; i < devices.length; i++) {
@ -2052,7 +2096,6 @@ const NMApplet = new Lang.Class({
this._syncSectionTitle(NMConnectionCategory.WIRED);
this._syncSectionTitle(NMConnectionCategory.WIRELESS);
this._syncSectionTitle(NMConnectionCategory.WWAN);
this._syncSectionTitle(NMConnectionCategory.VPN);
},
_syncNMState: function() {

View File

@ -5,6 +5,7 @@ const Clutter = imports.gi.Clutter;
const Gdm = imports.gi.Gdm;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const GnomeDesktop = imports.gi.GnomeDesktop;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const Signals = imports.signals;
@ -128,6 +129,7 @@ const UnlockDialog = new Lang.Class({
this._userVerifier.connect('ask-question', Lang.bind(this, this._onAskQuestion));
this._userVerifier.connect('show-message', Lang.bind(this, this._showMessage));
this._userVerifier.connect('verification-complete', Lang.bind(this, this._onVerificationComplete));
this._userVerifier.connect('verification-failed', Lang.bind(this, this._onVerificationFailed));
this._userVerifier.connect('reset', Lang.bind(this, this._onReset));
this._userVerifier.connect('show-login-hint', Lang.bind(this, this._showLoginHint));
@ -171,7 +173,7 @@ const UnlockDialog = new Lang.Class({
default: true };
this.setButtons([cancelButton, this._okButton]);
this._updateOkButton(true);
this._updateSensitivity(true);
let otherUserLabel = new St.Label({ text: _("Log in as another user"),
style_class: 'login-dialog-not-listed-label' });
@ -194,21 +196,25 @@ const UnlockDialog = new Lang.Class({
return false;
}));
this._idleMonitor = Shell.IdleMonitor.get();
// this dialog is only created after user activity (curtain drag or
// escape key press), so the timeout will fire after IDLE_TIMEOUT seconds of inactivity
this._idleMonitor = new GnomeDesktop.IdleMonitor();
this._idleWatchId = this._idleMonitor.add_watch(IDLE_TIMEOUT * 1000, Lang.bind(this, this._escape));
},
_updateOkButton: function(sensitive) {
_updateSensitivity: function(sensitive) {
this._promptEntry.reactive = sensitive;
this._promptEntry.clutter_text.editable = sensitive;
this._okButton.button.reactive = sensitive;
this._okButton.button.can_focus = sensitive;
},
_showMessage: function(userVerifier, message, styleClass) {
this._promptMessage.text = message;
this._promptMessage.styleClass = styleClass;
GdmUtil.fadeInActor(this._promptMessage);
if (message) {
this._promptMessage.text = message;
this._promptMessage.styleClass = styleClass;
GdmUtil.fadeInActor(this._promptMessage);
} else {
GdmUtil.fadeOutActor(this._promptMessage);
}
},
_onAskQuestion: function(verifier, serviceName, question, passwordChar) {
@ -230,7 +236,7 @@ const UnlockDialog = new Lang.Class({
this._promptEntry.menu.isPassword = passwordChar != '';
this._currentQuery = serviceName;
this._updateOkButton(true);
this._updateSensitivity(true);
},
_showLoginHint: function(verifier, message) {
@ -248,7 +254,7 @@ const UnlockDialog = new Lang.Class({
// and make ourself non-reactive
// the actual reply to GDM will be sent as soon as asked
this._firstQuestionAnswer = this._promptEntry.text;
this._updateOkButton(false);
this._updateSensitivity(false);
return;
}
@ -258,7 +264,7 @@ const UnlockDialog = new Lang.Class({
let query = this._currentQuery;
this._currentQuery = null;
this._updateOkButton(false);
this._updateSensitivity(false);
this._userVerifier.answerQuery(query, this._promptEntry.text);
},
@ -272,6 +278,17 @@ const UnlockDialog = new Lang.Class({
this.emit('failed');
},
_onVerificationFailed: function() {
this._currentQuery = null;
this._firstQuestion = true;
this._promptEntry.text = '';
this._promptEntry.clutter_text.set_password_char('\u25cf');
this._promptEntry.menu.isPassword = true;
this._updateSensitivity(false);
},
_escape: function() {
this._userVerifier.cancel();
this.emit('failed');

View File

@ -9,11 +9,11 @@ const Pango = imports.gi.Pango;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
const Tp = imports.gi.TelepathyGLib;
const UPowerGlib = imports.gi.UPowerGlib;
const Atk = imports.gi.Atk;
const BoxPointer = imports.ui.boxpointer;
const GnomeSession = imports.misc.gnomeSession;
const LoginManager = imports.misc.loginManager;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
@ -26,6 +26,7 @@ const DISABLE_USER_SWITCH_KEY = 'disable-user-switching';
const DISABLE_LOCK_SCREEN_KEY = 'disable-lock-screen';
const DISABLE_LOG_OUT_KEY = 'disable-log-out';
const LOCK_ENABLED_KEY = 'lock-enabled';
const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out';
const DIALOG_ICON_SIZE = 64;
@ -73,11 +74,6 @@ const UserAvatarWidget = new Lang.Class({
let file = Gio.File.new_for_path(iconFile);
this.actor.child = null;
this.actor.style = 'background-image: url("%s");'.format(iconFile);
// AccountsService uses a fixed location for avatar images, so
// we need to clear out all cached data to pick up image changes,
// see https://bugzilla.gnome.org/show_bug.cgi?id=679268
this.actor.clear_background_image();
} else {
this.actor.style = null;
this.actor.child = new St.Icon({ icon_name: 'avatar-default-symbolic',
@ -192,7 +188,7 @@ const IMStatusChooserItem = new Lang.Class({
item = new IMStatusItem(_("Idle"), 'user-idle-symbolic');
this._combo.addMenuItem(item, IMStatus.IDLE);
item = new IMStatusItem(_("Unavailable"), 'user-offline-symbolic');
item = new IMStatusItem(_("Offline"), 'user-offline-symbolic');
this._combo.addMenuItem(item, IMStatus.OFFLINE);
this._combo.connect('active-item-changed',
@ -487,10 +483,11 @@ const UserMenuButton = new Lang.Class({
this._presence = new GnomeSession.Presence();
this._session = new GnomeSession.SessionManager();
this._haveShutdown = true;
this._haveSuspend = true;
this._accountMgr = Tp.AccountManager.dup();
this._upClient = new UPowerGlib.Client();
this._loginManager = LoginManager.getLoginManager();
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this._iconBox = new St.Bin();
@ -570,14 +567,15 @@ const UserMenuButton = new Lang.Class({
// the lockdown setting changes, which should be close enough.
this.menu.connect('open-state-changed', Lang.bind(this,
function(menu, open) {
if (open)
this._updateHaveShutdown();
if (!open)
return;
this._updateHaveShutdown();
this._updateHaveSuspend();
}));
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
Lang.bind(this, this._updateHaveShutdown));
this._upClient.connect('notify::can-suspend', Lang.bind(this, this._updateSuspendOrPowerOff));
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
this._sessionUpdated();
},
@ -613,19 +611,19 @@ const UserMenuButton = new Lang.Class({
_updateSwitchUser: function() {
let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY);
let multiUser = this._userManager.can_switch() && this._userManager.has_multiple_users;
let multiSession = Gdm.get_session_ids().length > 1;
this._loginScreenItem.label.set_text(multiUser ? _("Switch User")
: _("Switch Session"));
this._loginScreenItem.actor.visible = allowSwitch && (multiUser || multiSession);
this._loginScreenItem.actor.visible = allowSwitch && multiUser;
},
_updateLogout: function() {
let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY);
let alwaysShow = global.settings.get_boolean(ALWAYS_SHOW_LOG_OUT_KEY);
let systemAccount = this._user.system_account;
let localAccount = this._user.local_account;
let multiUser = this._userManager.has_multiple_users;
let multiSession = Gdm.get_session_ids().length > 1;
this._logoutItem.actor.visible = allowLogout && (multiUser || multiSession);
this._logoutItem.actor.visible = allowLogout && (alwaysShow || multiUser || multiSession || systemAccount || !localAccount);
},
_updateLockScreen: function() {
@ -649,9 +647,15 @@ const UserMenuButton = new Lang.Class({
}));
},
_updateSuspendOrPowerOff: function() {
this._haveSuspend = this._upClient.get_can_suspend();
_updateHaveSuspend: function() {
this._loginManager.canSuspend(Lang.bind(this,
function(result) {
this._haveSuspend = result;
this._updateSuspendOrPowerOff();
}));
},
_updateSuspendOrPowerOff: function() {
if (!this._suspendOrPowerOffItem)
return;
@ -827,8 +831,7 @@ const UserMenuButton = new Lang.Class({
_onLoginScreenActivate: function() {
this.menu.close(BoxPointer.PopupAnimation.NONE);
Main.overview.hide();
if (this._screenSaverSettings.get_boolean(LOCK_ENABLED_KEY))
Main.screenShield.lock(false);
Main.screenShield.lock(false);
Gdm.goto_login_session_sync(null);
},
@ -855,12 +858,13 @@ const UserMenuButton = new Lang.Class({
let tmpId = Main.screenShield.connect('lock-screen-shown', Lang.bind(this, function() {
Main.screenShield.disconnect(tmpId);
this._upClient.suspend_sync(null);
this._loginManager.suspend();
}));
this.menu.close(BoxPointer.PopupAnimation.NONE);
Main.screenShield.lock(true);
} else {
this._upClient.suspend_sync(null);
this._loginManager.suspend();
}
}
}

View File

@ -1,6 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;
const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta;
@ -19,6 +20,7 @@ const Tweener = imports.ui.tweener;
const Wanda = imports.ui.wanda;
const WorkspacesView = imports.ui.workspacesView;
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
const FocusTrap = new Lang.Class({
Name: 'FocusTrap',
@ -50,7 +52,7 @@ const ViewSelector = new Lang.Class({
this._activePage = null;
this.active = false;
this.entryNonEmpty = false;
this._searchPending = false;
this._searchTimeoutId = 0;
@ -88,7 +90,7 @@ const ViewSelector = new Lang.Class({
this._appsPage = this._addPage(this._appDisplay.actor, null,
_("Applications"), 'system-run-symbolic');
this._searchResults = new SearchDisplay.SearchResults(this._searchSystem);
this._searchResults = new SearchDisplay.SearchDisplay(this._searchSystem);
this._searchPage = this._addPage(this._searchResults.actor, this._entry,
_("Search"), 'edit-find-symbolic');
@ -112,9 +114,6 @@ const ViewSelector = new Lang.Class({
global.focus_manager.add_group(this._searchResults.actor);
Main.overview.connect('item-drag-begin',
Lang.bind(this, this._resetShowAppsButton));
this._stageKeyPressId = 0;
Main.overview.connect('showing', Lang.bind(this,
function () {
@ -131,16 +130,15 @@ const ViewSelector = new Lang.Class({
}
}));
// Public constraints which may be used to tie actors' height or
// vertical position to the current tab's content; as the content's
// height and position depend on the view selector's style properties
// (e.g. font size, padding, spacing, ...) it would be extremely hard
// and ugly to get these from the outside. While it would be possible
// to use position and height properties directly, outside code would
// need to ensure that the content is properly allocated before
// accessing the properties.
this.constrainHeight = new Clutter.BindConstraint({ source: this._pageArea,
coordinate: Clutter.BindCoordinate.HEIGHT });
global.display.add_keybinding('toggle-application-view',
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE,
Lang.bind(this, this._showWithAppsPage));
},
_showWithAppsPage: function() {
Main.overview.show();
this._showAppsButton.set_checked(true);
},
show: function() {
@ -218,7 +216,9 @@ const ViewSelector = new Lang.Class({
},
_onShowAppsButtonToggled: function() {
if (this.active)
this.emit('apps-button-checked', this._showAppsButton.checked);
if (this.entryNonEmpty)
this.reset();
else
this._showPage(this._showAppsButton.checked ? this._appsPage
@ -234,7 +234,7 @@ const ViewSelector = new Lang.Class({
let symbol = event.get_key_symbol();
if (symbol == Clutter.Escape) {
if (this.active)
if (this.entryNonEmpty)
this.reset();
else if (this._showAppsButton.checked)
this._resetShowAppsButton();
@ -242,9 +242,9 @@ const ViewSelector = new Lang.Class({
Main.overview.hide();
return true;
} else if (Clutter.keysym_to_unicode(symbol) ||
(symbol == Clutter.BackSpace && this.active)) {
(symbol == Clutter.BackSpace && this.entryNonEmpty)) {
this.startSearch(event);
} else if (!this.active) {
} else if (!this.entryNonEmpty) {
if (symbol == Clutter.Tab || symbol == Clutter.Down) {
this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
return true;
@ -257,6 +257,7 @@ const ViewSelector = new Lang.Class({
},
_searchCancelled: function() {
this.emit('search-cancelled');
this._showPage(this._showAppsButton.checked ? this._appsPage
: this._workspacesPage);
@ -318,13 +319,14 @@ const ViewSelector = new Lang.Class({
},
_onTextChanged: function (se, prop) {
let searchPreviouslyActive = this.active;
this.active = this._entry.get_text() != '';
this._searchPending = this.active && !searchPreviouslyActive;
let searchPreviouslyActive = this.entryNonEmpty;
this.entryNonEmpty = this._entry.get_text() != '';
this._searchPending = this.entryNonEmpty && !searchPreviouslyActive;
if (this._searchPending) {
this._searchResults.startingSearch();
}
if (this.active) {
if (this.entryNonEmpty) {
this.emit('search-begin');
this._entry.set_secondary_icon(this._activeIcon);
if (this._iconClickedId == 0) {
@ -341,7 +343,7 @@ const ViewSelector = new Lang.Class({
this._entry.set_secondary_icon(this._inactiveIcon);
this._searchCancelled();
}
if (!this.active) {
if (!this.entryNonEmpty) {
if (this._searchTimeoutId > 0) {
Mainloop.source_remove(this._searchTimeoutId);
this._searchTimeoutId = 0;
@ -369,7 +371,7 @@ const ViewSelector = new Lang.Class({
}
this._searchResults.activateDefault();
return true;
} else if (this.active) {
} else if (this.entryNonEmpty) {
let arrowNext, nextDirection;
if (entry.get_text_direction() == Clutter.TextDirection.RTL) {
arrowNext = Clutter.Left;

View File

@ -1,11 +1,9 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
const GdkPixbuf = imports.gi.GdkPixbuf;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const St = imports.gi.St;
const IconGrid = imports.ui.iconGrid;
@ -169,15 +167,8 @@ const WandaSearchProvider = new Lang.Class({
// only one which speaks the truth!
'name': capitalize(fish[0]),
'createIcon': function(iconSize) {
// for DND only (maybe could be improved)
// DON'T use St.Icon here, it crashes the shell
// (dnd.js code assumes it can query the actor size
// without parenting it, while StWidget accesses
// StThemeNode in get_preferred_width/height, which
// triggers an assertion failure)
return St.TextureCache.get_default().load_icon_name(null,
'face-smile',
iconSize);
return new St.Icon({ gicon: Gio.icon_new_for_string('face-smile'),
icon_size: iconSize });
}
}]);
},

View File

@ -33,21 +33,13 @@ const DRAGGING_WINDOW_OPACITY = 100;
const BUTTON_LAYOUT_SCHEMA = 'org.gnome.shell.overrides';
const BUTTON_LAYOUT_KEY = 'button-layout';
// Define a layout scheme for small window counts. For larger
// counts we fall back to an algorithm. We need more schemes here
// unless we have a really good algorithm.
// Each triplet is [xCenter, yCenter, scale] where the scale
// is relative to the width of the workspace.
const POSITIONS = {
1: [[0.5, 0.5, 0.95]],
2: [[0.25, 0.5, 0.48], [0.75, 0.5, 0.48]],
3: [[0.25, 0.25, 0.48], [0.75, 0.25, 0.48], [0.5, 0.75, 0.48]],
4: [[0.25, 0.25, 0.47], [0.75, 0.25, 0.47], [0.75, 0.75, 0.47], [0.25, 0.75, 0.47]],
5: [[0.165, 0.25, 0.32], [0.495, 0.25, 0.32], [0.825, 0.25, 0.32], [0.25, 0.75, 0.32], [0.75, 0.75, 0.32]]
};
// Used in _orderWindowsPermutations, 5! = 120 which is probably the highest we can go
const POSITIONING_PERMUTATIONS_MAX = 5;
// When calculating a layout, we calculate the scale of windows and the percent
// of the available area the new layout uses. If the values for the new layout,
// when weighted with the values as below, are worse than the previous layout's,
// we stop looking for a new layout and use the previous layout.
// Otherwise, we keep looking for a new layout.
const LAYOUT_SCALE_WEIGHT = 1;
const LAYOUT_SPACE_WEIGHT = 0.1;
function _interpolate(start, end, step) {
return start + (end - start) * step;
@ -167,6 +159,24 @@ const WindowClone = new Lang.Class({
this._selected = false;
},
get slot() {
let x, y, w, h;
if (this.inDrag) {
x = this.dragOrigX;
y = this.dragOrigY;
w = this.actor.width * this.dragOrigScale;
h = this.actor.height * this.dragOrigScale;
} else {
x = this.actor.x;
y = this.actor.y;
w = this.actor.width * this.actor.scale_x;
h = this.actor.height * this.actor.scale_y;
}
return [x, y, w, h];
},
setStackAbove: function (actor) {
this._stackAbove = actor;
if (this.inDrag || this._zooming)
@ -443,6 +453,11 @@ const WindowOverlay = new Lang.Class({
this._updateCaptionId = metaWindow.connect('notify::title',
Lang.bind(this, function(w) {
this.title.text = w.title;
// we need this for the next call to get_preferred_width
// to return useful results
this.title.set_size(-1, -1);
this._repositionSelf();
}));
let button = new St.Button({ style_class: 'window-close' });
@ -504,15 +519,16 @@ const WindowOverlay = new Lang.Class({
transition: 'easeOutQuad' });
},
chromeWidth: function () {
return this.closeButton.width - this.closeButton._overlap;
},
chromeHeights: function () {
return [this.closeButton.height - this.closeButton._overlap,
this.title.height + this.title._spacing];
},
_repositionSelf: function() {
let [cloneX, cloneY, cloneWidth, cloneHeight] = this._windowClone.slot;
this.updatePositions(cloneX, cloneY, cloneWidth, cloneHeight, false);
},
/**
* @cloneX: x position of windowClone
* @cloneY: y position of windowClone
@ -550,9 +566,8 @@ const WindowOverlay = new Lang.Class({
else
button.set_position(Math.floor(buttonX), Math.floor(buttonY));
if (!title.fullWidth)
title.fullWidth = title.width;
let titleWidth = Math.min(title.fullWidth, cloneWidth);
let [titleMinWidth, titleNatWidth] = title.get_preferred_width(-1);
let titleWidth = Math.max(titleMinWidth, Math.min(titleNatWidth, cloneWidth));
let titleX = cloneX + (cloneWidth - titleWidth) / 2;
let titleY = cloneY + cloneHeight + title._spacing;
@ -668,6 +683,280 @@ const WindowPositionFlags = {
ANIMATE: 1 << 1
};
const LayoutStrategy = new Lang.Class({
Name: 'LayoutStrategy',
Abstract: true,
_init: function(monitor, rowSpacing, columnSpacing, bottomPadding) {
this._monitor = monitor;
this._rowSpacing = rowSpacing;
this._columnSpacing = columnSpacing;
this._bottomPadding = bottomPadding;
},
_newRow: function() {
// Row properties:
//
// * x, y are the position of row, relative to area
//
// * width, height are the scaled versions of fullWidth, fullHeight
//
// * width also has the spacing in between windows. It's not in
// fullWidth, as the spacing is constant, whereas fullWidth is
// meant to be scaled
//
// * neither height/fullHeight have any sort of spacing or padding
//
// * if cellWidth is present, all windows in the row will occupy
// the space of cellWidth, centered.
return { x: 0, y: 0,
width: 0, height: 0,
fullWidth: 0, fullHeight: 0,
cellWidth: 0,
windows: [] };
},
// Compute the size and fancy scale for @window using the
// base scale, @scale.
//
// Returns a list structure: [ scaledWidth, scaledHeight, fancyScale ]
// where scaledWidth and scaledHeight are the window's
// width and height, scaled by fancyScale for convenience.
_computeWindowSizeAndScale: function(window, scale) {
let width = window.actor.width;
let height = window.actor.height;
let ratio;
if (width > height)
ratio = width / this._monitor.width;
else
ratio = height / this._monitor.height;
let fancyScale = (2 / (1 + ratio)) * scale;
return [width * fancyScale, height * fancyScale, fancyScale];
},
// Compute the size of each row, by assigning to the properties
// row.width, row.height, row.fullWidth, row.fullHeight, and
// (optionally) row.cellWidth, for each row in @layout.rows.
// This method is intended to be called by subclasses.
_computeRowSizes: function(layout) {
throw new Error('_computeRowSizes not implemented');
},
// Compute strategy-specific window slots for each window in
// @windows, given the @layout. The strategy may also use @layout
// as strategy-specific storage.
//
// This must calculate:
// * maxColumns - The maximum number of columns used by the layout.
// * gridWidth - The total width used by the grid, unscaled, unspaced.
// * gridHeight - The totial height used by the grid, unscaled, unspaced.
// * rows - A list of rows, which should be instantiated by _newRow.
computeLayout: function(windows, layout) {
throw new Error('computeLayout not implemented');
},
// Given @layout, compute the overall scale and space of the layout.
// The scale is the individual, non-fancy scale of each window, and
// the space is the percentage of the available area eventually
// used by the layout.
// This method does not return anything, but instead installs
// the properties "scale" and "space" on @layout directly.
//
// Make sure to call this methods before calling computeWindowSlots(),
// as it depends on the scale property installed in @layout here.
computeScaleAndSpace: function(layout) {
let area = layout.area;
let hspacing = (layout.maxColumns - 1) * this._columnSpacing;
let vspacing = (layout.numRows - 1) * this._rowSpacing + this._bottomPadding;
let spacedWidth = area.width - hspacing;
let spacedHeight = area.height - vspacing;
let horizontalScale = spacedWidth / layout.gridWidth;
let verticalScale = spacedHeight / layout.gridHeight;
// Thumbnails should be less than 70% of the original size
let scale = Math.min(horizontalScale, verticalScale, WINDOW_CLONE_MAXIMUM_SCALE);
let scaledLayoutWidth = layout.gridWidth * scale + hspacing;
let scaledLayoutHeight = layout.gridHeight * scale + vspacing;
let space = (scaledLayoutWidth * scaledLayoutHeight) / (area.width * area.height);
layout.scale = scale;
layout.space = space;
},
computeWindowSlots: function(layout, area) {
this._computeRowSizes(layout);
let { rows: rows, scale: scale, state: state } = layout;
let slots = [];
let y = 0;
for (let i = 0; i < rows.length; i++) {
let row = rows[i];
row.x = area.x + (area.width - row.width) / 2;
row.y = area.y + y;
y += row.height + this._rowSpacing;
}
let height = y - this._rowSpacing + this._bottomPadding;
let baseY = (area.height - height) / 2;
for (let i = 0; i < rows.length; i++) {
let row = rows[i];
row.y += baseY;
let baseX = row.x;
for (let j = 0; j < row.windows.length; j++) {
let window = row.windows[j];
let [width, height, s] = this._computeWindowSizeAndScale(window, scale);
let y = row.y + row.height - height;
let x = baseX;
if (row.cellWidth) {
x += (row.cellWidth - width) / 2;
width = row.cellWidth;
}
slots.push([x, y, s]);
baseX += width + this._columnSpacing;
}
}
return slots;
}
});
const UnalignedLayoutStrategy = new Lang.Class({
Name: 'UnalignedLayoutStrategy',
Extends: LayoutStrategy,
_computeRowSizes: function(layout) {
let { rows: rows, scale: scale } = layout;
for (let i = 0; i < rows.length; i++) {
let row = rows[i];
row.width = row.fullWidth * scale + (row.windows.length - 1) * this._columnSpacing;
row.height = row.fullHeight * scale;
}
},
_keepSameRow: function(row, window, width, idealRowWidth) {
if (row.fullWidth + width <= idealRowWidth)
return true;
let oldRatio = row.fullWidth / idealRowWidth;
let newRatio = (row.fullWidth + width) / idealRowWidth;
if (Math.abs(1 - newRatio) < Math.abs(1 - oldRatio))
return true;
return false;
},
computeLayout: function(windows, layout) {
let numRows = layout.numRows;
let rows = [];
let totalWidth = 0;
for (let i = 0; i < windows.length; i++) {
totalWidth += windows[i].actor.width;
}
let idealRowWidth = totalWidth / numRows;
let windowIdx = 0;
for (let i = 0; i < numRows; i++) {
let col = 0;
let row = this._newRow();
rows.push(row);
for (; windowIdx < windows.length; windowIdx++) {
let window = windows[windowIdx];
let [width, height] = this._computeWindowSizeAndScale(window, 1);
row.fullHeight = Math.max(row.fullHeight, height);
// either new width is < idealWidth or new width is nearer from idealWidth then oldWidth
if (this._keepSameRow(row, window, width, idealRowWidth) || (i == numRows - 1)) {
row.windows.push(window);
row.fullWidth += width;
} else {
break;
}
}
}
let gridHeight = 0;
let maxRow;
for (let i = 0; i < numRows; i++) {
let row = rows[i];
if (!maxRow || row.fullWidth > maxRow.fullWidth)
maxRow = row;
gridHeight += row.fullHeight;
}
layout.rows = rows;
layout.maxColumns = maxRow.windows.length;
layout.gridWidth = maxRow.fullWidth;
layout.gridHeight = gridHeight;
}
});
const GridLayoutStrategy = new Lang.Class({
Name: 'GridLayoutStrategy',
Extends: LayoutStrategy,
_computeRowSizes: function(layout) {
let { rows: rows, scale: scale } = layout;
let gridWidth = layout.numColumns * layout.maxWindowWidth;
let hspacing = (layout.numColumns - 1) * this._columnSpacing;
for (let i = 0; i < rows.length; i++) {
let row = rows[i];
row.fullWidth = layout.gridWidth;
row.fullHeight = layout.maxWindowHeight;
row.width = row.fullWidth * scale + hspacing;
row.height = row.fullHeight * scale;
row.cellWidth = layout.maxWindowWidth * scale;
}
},
computeLayout: function(windows, layout) {
let { numRows: numRows, numColumns: numColumns } = layout;
let rows = [];
let windowIdx = 0;
let maxWindowWidth = 0;
let maxWindowHeight = 0;
for (let i = 0; i < numRows; i++) {
let row = this._newRow();
rows.push(row);
for (; windowIdx < windows.length; windowIdx++) {
if (row.windows.length >= numColumns)
break;
let window = windows[windowIdx];
row.windows.push(window);
let [width, height] = this._computeWindowSizeAndScale(window, 1);
maxWindowWidth = Math.max(maxWindowWidth, width);
maxWindowHeight = Math.max(maxWindowHeight, height);
}
}
layout.rows = rows;
layout.maxColumns = numColumns;
layout.gridWidth = numColumns * maxWindowWidth;
layout.gridHeight = numRows * maxWindowHeight;
layout.maxWindowWidth = maxWindowWidth;
layout.maxWindowHeight = maxWindowHeight;
}
});
/**
* @metaWorkspace: a #Meta.Workspace, or null
*/
@ -689,7 +978,7 @@ const Workspace = new Lang.Class({
// Without this the drop area will be overlapped.
this._windowOverlaysGroup.set_size(0, 0);
this.actor = new Clutter.Group();
this.actor = new St.Widget({ style_class: 'window-picker' });
this.actor.set_size(0, 0);
this._dropRect = new Clutter.Rectangle({ opacity: 0 });
@ -729,6 +1018,8 @@ const Workspace = new Lang.Class({
this._positionWindowsFlags = 0;
this._positionWindowsId = 0;
this._currentLayout = null;
},
setGeometry: function(x, y, width, height) {
@ -763,225 +1054,6 @@ const Workspace = new Lang.Class({
return this._windows.length == 0;
},
// Only use this for n <= 20 say
_factorial: function(n) {
let result = 1;
for (let i = 2; i <= n; i++)
result *= i;
return result;
},
/**
* _permutation:
* @permutationIndex: An integer from [0, list.length!)
* @list: (inout): Array of objects to permute; will be modified in place
*
* Given an integer between 0 and length of array, re-order the array in-place
* into a permutation denoted by the index.
*/
_permutation: function(permutationIndex, list) {
for (let j = 2; j <= list.length; j++) {
let firstIndex = (permutationIndex % j);
let secondIndex = j - 1;
// Swap
let tmp = list[firstIndex];
list[firstIndex] = list[secondIndex];
list[secondIndex] = tmp;
permutationIndex = Math.floor(permutationIndex / j);
}
},
/**
* _forEachPermutations:
* @list: Array
* @func: Function which takes a single array argument
*
* Call @func with each permutation of @list as an argument.
*/
_forEachPermutations: function(list, func) {
let nCombinations = this._factorial(list.length);
for (let i = 0; i < nCombinations; i++) {
let listCopy = list.concat();
this._permutation(i, listCopy);
func(listCopy);
}
},
/**
* _computeWindowMotion:
* @actor: A #WindowClone's #ClutterActor
* @slot: An element of #POSITIONS
* @slotGeometry: Layout of @slot
*
* Returns a number corresponding to how much perceived motion
* would be involved in moving the window to the given slot.
* Currently this is the square of the distance between the
* centers.
*/
_computeWindowMotion: function (actor, slot) {
let [xCenter, yCenter, fraction] = slot;
let xDelta, yDelta, distanceSquared;
let actorWidth, actorHeight;
let x = actor.x;
let y = actor.y;
let scale = actor.scale_x;
if (actor._delegate.inDrag) {
x = actor._delegate.dragOrigX;
y = actor._delegate.dragOrigY;
scale = actor._delegate.dragOrigScale;
}
actorWidth = actor.width * scale;
actorHeight = actor.height * scale;
xDelta = x + actorWidth / 2.0 - xCenter * this._width - this._x;
yDelta = y + actorHeight / 2.0 - yCenter * this._height - this._y;
distanceSquared = xDelta * xDelta + yDelta * yDelta;
return distanceSquared;
},
/**
* _orderWindowsPermutations:
*
* Iterate over all permutations of the windows, and determine the
* permutation which has the least total motion.
*/
_orderWindowsPermutations: function (clones, slots) {
let minimumMotionPermutation = null;
let minimumMotion = -1;
let permIndex = 0;
this._forEachPermutations(clones, Lang.bind(this, function (permutation) {
let motion = 0;
for (let i = 0; i < permutation.length; i++) {
let cloneActor = permutation[i].actor;
let slot = slots[i];
let delta = this._computeWindowMotion(cloneActor, slot);
motion += delta;
// Bail out early if we're already larger than the
// previous best
if (minimumMotionPermutation != null &&
motion > minimumMotion)
continue;
}
if (minimumMotionPermutation == null || motion < minimumMotion) {
minimumMotionPermutation = permutation;
minimumMotion = motion;
}
permIndex++;
}));
return minimumMotionPermutation;
},
/**
* _orderWindowsGreedy:
*
* Iterate over available slots in order, placing into each one the window
* we find with the smallest motion to that slot.
*/
_orderWindowsGreedy: function(clones, slots) {
let result = [];
let slotIndex = 0;
// Copy since we mutate below
let clonesCopy = clones.concat();
for (let i = 0; i < slots.length; i++) {
let slot = slots[i];
let minimumMotionIndex = -1;
let minimumMotion = -1;
for (let j = 0; j < clonesCopy.length; j++) {
let cloneActor = clonesCopy[j].actor;
let delta = this._computeWindowMotion(cloneActor, slot);
if (minimumMotionIndex == -1 || delta < minimumMotion) {
minimumMotionIndex = j;
minimumMotion = delta;
}
}
result.push(clonesCopy[minimumMotionIndex]);
clonesCopy.splice(minimumMotionIndex, 1);
}
return result;
},
/**
* _orderWindowsByMotionAndStartup:
* @windows: Array of #MetaWindow
* @slots: Array of slots
*
* Returns a copy of @windows, ordered in such a way that they require least motion
* to move to the final screen coordinates of @slots. Ties are broken in a stable
* fashion by the order in which the windows were created.
*/
_orderWindowsByMotionAndStartup: function(clones, slots) {
clones.sort(function(w1, w2) {
return w2.metaWindow.get_stable_sequence() - w1.metaWindow.get_stable_sequence();
});
if (clones.length <= POSITIONING_PERMUTATIONS_MAX)
return this._orderWindowsPermutations(clones, slots);
else
return this._orderWindowsGreedy(clones, slots);
},
/**
* _getSlotGeometry:
* @slot: A layout slot
*
* Returns: the screen-relative [x, y, width, height]
* of a given window layout slot.
*/
_getSlotGeometry: function(slot) {
let [xCenter, yCenter, fraction] = slot;
let width = this._width * fraction;
let height = this._height * fraction;
let x = this._x + xCenter * this._width - width / 2 ;
let y = this._y + yCenter * this._height - height / 2;
return [x, y, width, height];
},
/**
* _computeWindowLayout:
* @metaWindow: A #MetaWindow
* @slot: A layout slot
*
* Given a window and slot to fit it in, compute its
* screen-relative [x, y, scale] where scale applies
* to both X and Y directions.
*/
_computeWindowLayout: function(metaWindow, slot) {
let [x, y, width, height] = this._getSlotGeometry(slot);
let rect = metaWindow.get_outer_rect();
let buttonOuterHeight, captionHeight;
let buttonOuterWidth = 0;
if (this._windowOverlays[0]) {
[buttonOuterHeight, captionHeight] = this._windowOverlays[0].chromeHeights();
buttonOuterWidth = this._windowOverlays[0].chromeWidth();
} else
[buttonOuterHeight, captionHeight] = [0, 0];
let scale = Math.min((width - buttonOuterWidth) / rect.width,
(height - buttonOuterHeight - captionHeight) / rect.height,
WINDOW_CLONE_MAXIMUM_SCALE);
x = Math.floor(x + (width - scale * rect.width) / 2);
// We want to center the window in case we have just one
if (metaWindow.get_workspace().n_windows == 1)
y = Math.floor(y + (height - scale * rect.height) / 2);
else
y = Math.floor(y + height - rect.height * scale - captionHeight);
return [x, y, scale];
},
setReservedSlot: function(clone) {
if (this._reservedSlot == clone)
return;
@ -990,6 +1062,7 @@ const Workspace = new Lang.Class({
clone = null;
this._reservedSlot = clone;
this._currentLayout = null;
this.positionWindows(WindowPositionFlags.ANIMATE);
},
@ -1000,6 +1073,9 @@ const Workspace = new Lang.Class({
* ANIMATE - Indicates that we need animate changing position.
*/
positionWindows: function(flags) {
if (this.leavingOverview)
return;
this._positionWindowsFlags |= flags;
if (this._positionWindowsId > 0)
@ -1020,6 +1096,11 @@ const Workspace = new Lang.Class({
}
let clones = this._windows.slice();
clones.sort(function(a, b) {
return a.metaWindow.get_stable_sequence() - b.metaWindow.get_stable_sequence();
});
if (this._reservedSlot)
clones.push(this._reservedSlot);
@ -1027,8 +1108,7 @@ const Workspace = new Lang.Class({
let animate = flags & WindowPositionFlags.ANIMATE;
// Start the animations
let slots = this._computeAllWindowSlots(clones.length);
clones = this._orderWindowsByMotionAndStartup(clones, slots);
let slots = this._computeAllWindowSlots(clones);
let currentWorkspace = global.screen.get_active_workspace();
let isOnCurrentWorkspace = this.metaWorkspace == null || this.metaWorkspace == currentWorkspace;
@ -1045,10 +1125,11 @@ const Workspace = new Lang.Class({
if (clone.inDrag)
continue;
let [x, y, scale] = this._computeWindowLayout(metaWindow, slot);
let [x, y, scale] = slot;
if (overlay && initialPositioning)
overlay.hide();
if (animate && isOnCurrentWorkspace) {
if (!metaWindow.showing_on_its_workspace()) {
/* Hidden windows should fade in and grow
@ -1072,6 +1153,8 @@ const Workspace = new Lang.Class({
this._animateClone(clone, overlay, x, y, scale, initialPositioning);
} else {
// cancel any active tweens (otherwise they might override our changes)
Tweener.removeTweens(clone.actor);
clone.actor.set_position(x, y);
clone.actor.set_scale(scale, scale);
this._updateWindowOverlayPositions(clone, overlay, x, y, scale, false);
@ -1113,11 +1196,11 @@ const Workspace = new Lang.Class({
},
_updateWindowOverlayPositions: function(clone, overlay, x, y, scale, animate) {
if (!overlay)
return;
let [cloneWidth, cloneHeight] = clone.actor.get_size();
cloneWidth = scale * cloneWidth;
cloneHeight = scale * cloneHeight;
if (overlay)
overlay.updatePositions(x, y, cloneWidth, cloneHeight, animate);
overlay.updatePositions(x, y, cloneWidth * scale, cloneHeight * scale, animate);
},
_showWindowOverlay: function(clone, overlay, fade) {
@ -1211,6 +1294,7 @@ const Workspace = new Lang.Class({
this._cursorX = x;
this._cursorY = y;
this._currentLayout = null;
this._repositionWindowsId = Mainloop.timeout_add(750,
Lang.bind(this, this._delayedWindowRepositioning));
},
@ -1263,6 +1347,7 @@ const Workspace = new Lang.Class({
clone.actor.set_position (this._x, this._y);
}
this._currentLayout = null;
this.positionWindows(WindowPositionFlags.ANIMATE);
},
@ -1300,6 +1385,8 @@ const Workspace = new Lang.Class({
// Animate the full-screen to Overview transition.
zoomToOverview : function() {
this._currentLayout = null;
// Position and scale the windows.
if (Main.overview.animationInProgress)
this.positionWindows(WindowPositionFlags.ANIMATE | WindowPositionFlags.INITIAL);
@ -1464,29 +1551,108 @@ const Workspace = new Lang.Class({
}
},
_computeWindowSlot : function(windowIndex, numberOfWindows) {
if (numberOfWindows in POSITIONS)
return POSITIONS[numberOfWindows][windowIndex];
_isBetterLayout: function(oldLayout, newLayout) {
if (oldLayout.scale === undefined)
return true;
// If we don't have a predefined scheme for this window count,
// arrange the windows in a grid pattern.
let gridWidth = Math.ceil(Math.sqrt(numberOfWindows));
let gridHeight = Math.ceil(numberOfWindows / gridWidth);
let spacePower = (newLayout.space - oldLayout.space) * LAYOUT_SPACE_WEIGHT;
let scalePower = (newLayout.scale - oldLayout.scale) * LAYOUT_SCALE_WEIGHT;
let fraction = 0.95 * (1. / gridWidth);
let xCenter = (.5 / gridWidth) + ((windowIndex) % gridWidth) / gridWidth;
let yCenter = (.5 / gridHeight) + Math.floor((windowIndex / gridWidth)) / gridHeight;
return [xCenter, yCenter, fraction];
if (newLayout.scale > oldLayout.scale && newLayout.space > oldLayout.space) {
// Win win -- better scale and better space
return true;
} else if (newLayout.scale > oldLayout.scale && newLayout.space <= oldLayout.space) {
// Keep new layout only if scale gain outweights aspect space loss
return scalePower > spacePower;
} else if (newLayout.scale <= oldLayout.scale && newLayout.space > oldLayout.space) {
// Keep new layout only if aspect space gain outweights scale loss
return spacePower > scalePower;
} else {
// Lose -- worse scale and space
return false;
}
},
_computeAllWindowSlots: function(totalWindows) {
let slots = [];
for (let i = 0; i < totalWindows; i++) {
slots.push(this._computeWindowSlot(i, totalWindows));
_computeLayout: function(windows, area, rowSpacing, columnSpacing, bottomPadding) {
// We look for the largest scale that allows us to fit the
// largest row/tallest column on the workspace.
let lastLayout = {};
for (let numRows = 1; ; numRows++) {
let numColumns = Math.ceil(windows.length / numRows);
// If adding a new row does not change column count just stop
// (for instance: 9 windows, with 3 rows -> 3 columns, 4 rows ->
// 3 columns as well => just use 3 rows then)
if (numColumns == lastLayout.numColumns)
break;
let strategyClass = numRows > 2 ? GridLayoutStrategy : UnalignedLayoutStrategy;
let strategy = new strategyClass(this._monitor, rowSpacing, columnSpacing, bottomPadding);
let layout = { area: area, strategy: strategy, numRows: numRows, numColumns: numColumns };
strategy.computeLayout(windows, layout);
strategy.computeScaleAndSpace(layout);
if (!this._isBetterLayout(lastLayout, layout))
break;
lastLayout = layout;
}
return slots;
return lastLayout;
},
_rectEqual: function(one, two) {
if (one == two)
return true;
return (one.x == two.x &&
one.y == two.y &&
one.width == two.width &&
one.height == two.height);
},
_computeAllWindowSlots: function(windows) {
let totalWindows = windows.length;
let node = this.actor.get_theme_node();
// Window grid spacing
let columnSpacing = node.get_length('-horizontal-spacing');
let rowSpacing = node.get_length('-vertical-spacing');
if (!totalWindows)
return [];
let closeButtonHeight, captionHeight;
if (this._windowOverlays.length) {
// All of the overlays have the same chrome sizes,
// so just pick the first one.
let overlay = this._windowOverlays[0];
[closeButtonHeight, captionHeight] = overlay.chromeHeights();
} else {
[closeButtonHeight, captionHeight] = [0, 0];
}
rowSpacing += captionHeight;
let area = { x: this._x, y: this._y, width: this._width, height: this._height };
area.y += closeButtonHeight;
area.height -= closeButtonHeight;
if (!this._currentLayout)
this._currentLayout = this._computeLayout(windows, area, rowSpacing, columnSpacing, captionHeight);
let layout = this._currentLayout;
let strategy = layout.strategy;
if (!this._rectEqual(area, layout.area)) {
layout.area = area;
strategy.computeScaleAndSpace(layout);
}
return strategy.computeWindowSlots(layout, area);
},
_onCloneSelected : function (clone, time) {

View File

@ -493,6 +493,7 @@ const ThumbnailsBox = new Lang.Class({
_init: function() {
this.actor = new Shell.GenericContainer({ reactive: true,
style_class: 'workspace-thumbnails',
can_focus: true,
request_mode: Clutter.RequestMode.WIDTH_FOR_HEIGHT });
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
@ -526,6 +527,8 @@ const ThumbnailsBox = new Lang.Class({
this._dropPlaceholder = new St.Bin({ style_class: 'placeholder' });
this.actor.add_actor(this._dropPlaceholder);
this.visible = true;
this._targetScale = 0;
this._scale = 0;
this._pendingScaleUpdate = false;
@ -541,12 +544,21 @@ const ThumbnailsBox = new Lang.Class({
this.actor.connect('button-press-event', function() { return true; });
this.actor.connect('button-release-event', Lang.bind(this, this._onButtonRelease));
this.actor.connect('scroll-event',
Lang.bind(this, this._onScrollEvent));
this.actor.connect('key-release-event',
Lang.bind(this, this._onKeyRelease));
Main.overview.connect('item-drag-begin',
Main.overview.connect('showing',
Lang.bind(this, this._createThumbnails));
Main.overview.connect('hidden',
Lang.bind(this, this._destroyThumbnails));
Main.overview.connect('app-drag-begin',
Lang.bind(this, this._onDragBegin));
Main.overview.connect('item-drag-end',
Main.overview.connect('app-drag-end',
Lang.bind(this, this._onDragEnd));
Main.overview.connect('item-drag-cancelled',
Main.overview.connect('app-drag-cancelled',
Lang.bind(this, this._onDragCancelled));
Main.overview.connect('window-drag-begin',
Lang.bind(this, this._onDragBegin));
@ -620,9 +632,7 @@ const ThumbnailsBox = new Lang.Class({
if (!source.realWindow && !source.shellWorkspaceLaunch && source != Main.xdndHandler)
return DND.DragMotionResult.CONTINUE;
if (!Meta.prefs_get_dynamic_workspaces())
return DND.DragMotionResult.CONTINUE;
let canCreateWorkspaces = Meta.prefs_get_dynamic_workspaces();
let spacing = this.actor.get_theme_node().get_length('spacing');
this._dropWorkspace = -1;
@ -647,7 +657,7 @@ const ThumbnailsBox = new Lang.Class({
if (i == this._dropPlaceholderPos)
targetBottom += this._dropPlaceholder.get_height();
if (y > targetTop && y <= targetBottom && source != Main.xdndHandler) {
if (y > targetTop && y <= targetBottom && source != Main.xdndHandler && canCreateWorkspaces) {
placeholderPos = i;
break;
} else if (y > targetBottom && y <= nextTargetTop) {
@ -721,10 +731,16 @@ const ThumbnailsBox = new Lang.Class({
}
},
show: function() {
_createThumbnails: function() {
this._switchWorkspaceNotifyId =
global.window_manager.connect('switch-workspace',
Lang.bind(this, this._activeWorkspaceChanged));
this._nWorkspacesNotifyId =
global.screen.connect('notify::n-workspaces',
Lang.bind(this, this._workspacesChanged));
this._syncStackingId =
Main.overview.connect('sync-window-stacking',
Lang.bind(this, this.syncStacking));
this._targetScale = 0;
this._scale = 0;
@ -748,17 +764,86 @@ const ThumbnailsBox = new Lang.Class({
this.addThumbnails(0, global.screen.n_workspaces);
},
hide: function() {
_destroyThumbnails: function() {
if (this._switchWorkspaceNotifyId > 0) {
global.window_manager.disconnect(this._switchWorkspaceNotifyId);
this._switchWorkspaceNotifyId = 0;
}
if (this._nWorkspacesNotifyId > 0) {
global.screen.disconnect(this._nWorkspacesNotifyId);
this._nWorkspacesNotifyId = 0;
}
if (this._syncStackingId > 0) {
Main.overview.disconnect(this._syncStackingId);
this._syncStackingId = 0;
}
for (let w = 0; w < this._thumbnails.length; w++)
this._thumbnails[w].destroy();
this._thumbnails = [];
},
_computeThumbnailsX: function() {
this._targetX = this.actor.get_x();
let rtl = (this.actor.get_text_direction() == Clutter.TextDirection.RTL);
if (rtl)
this._hiddenX = -this.actor.width;
else
this._hiddenX = this._targetX + this.actor.width;
},
show: function() {
if (this.visible)
return;
this.visible = true;
this.actor.show();
Tweener.addTween(this.actor, { translation_x: this._targetX,
transition: 'easeOutQuad',
time: SLIDE_ANIMATION_TIME
});
},
hide: function() {
if (!this.visible)
return;
this.visible = false;
Tweener.addTween(this.actor, { translation_x: this._hiddenX,
transition: 'easeOutQuad',
time: SLIDE_ANIMATION_TIME,
onComplete: Lang.bind(this, function () {
this.actor.hide();
})
});
},
_workspacesChanged: function() {
let oldNumWorkspaces = this._thumbnails.length;
let newNumWorkspaces = global.screen.n_workspaces;
let active = global.screen.get_active_workspace_index();
if (newNumWorkspaces > oldNumWorkspaces) {
this.addThumbnails(oldNumWorkspaces, newNumWorkspaces - oldNumWorkspaces);
} else {
let removedIndex;
let removedNum = oldNumWorkspaces - newNumWorkspaces;
for (let w = 0; w < oldNumWorkspaces; w++) {
let metaWorkspace = global.screen.get_workspace_by_index(w);
if (this._thumbnails[w].metaWorkspace != metaWorkspace) {
removedIndex = w;
break;
}
}
this.removeThumbnails(removedIndex, removedNum);
}
},
addThumbnails: function(start, count) {
for (let k = start; k < start + count; k++) {
let metaWorkspace = global.screen.get_workspace_by_index(k);
@ -785,7 +870,7 @@ const ThumbnailsBox = new Lang.Class({
this._indicator.raise_top();
},
removeThumbmails: function(start, count) {
removeThumbnails: function(start, count) {
let currentPos = 0;
for (let k = 0; k < this._thumbnails.length; k++) {
let thumbnail = this._thumbnails[k];
@ -804,7 +889,7 @@ const ThumbnailsBox = new Lang.Class({
this._queueUpdateStates();
},
syncStacking: function(stackIndices) {
syncStacking: function(actor, stackIndices) {
for (let i = 0; i < this._thumbnails.length; i++)
this._thumbnails[i].syncStacking(stackIndices);
},
@ -926,6 +1011,8 @@ const ThumbnailsBox = new Lang.Class({
onCompleteScope: this
});
});
this._computeThumbnailsX();
},
_queueUpdateStates: function() {
@ -1159,5 +1246,30 @@ const ThumbnailsBox = new Lang.Class({
},
onCompleteScope: this
});
},
_onScrollEvent: function (actor, event) {
switch (event.get_scroll_direction()) {
case Clutter.ScrollDirection.UP:
Main.wm.actionMoveWorkspace(Meta.MotionDirection.UP);
break;
case Clutter.ScrollDirection.DOWN:
Main.wm.actionMoveWorkspace(Meta.MotionDirection.DOWN);
break;
}
},
_onKeyRelease: function (actor, event) {
switch (event.get_key_symbol()) {
case Clutter.KEY_Up:
Main.wm.actionMoveWorkspace(Meta.MotionDirection.UP);
break;
case Clutter.KEY_Down:
Main.wm.actionMoveWorkspace(Meta.MotionDirection.DOWN);
break;
case Clutter.KEY_Return:
Main.overview.toggle();
break;
}
}
});

View File

@ -22,8 +22,6 @@ const MAX_WORKSPACES = 16;
const OVERRIDE_SCHEMA = 'org.gnome.shell.overrides';
const CONTROLS_POP_IN_TIME = 0.1;
const WorkspacesView = new Lang.Class({
Name: 'WorkspacesView',
@ -51,7 +49,6 @@ const WorkspacesView = new Lang.Class({
this._clipY = 0;
this._clipWidth = 0;
this._clipHeight = 0;
this._workspaceRatioSpacing = 0;
this._spacing = 0;
this._animating = false; // tweening
this._scrolling = false; // swipe-scrolling
@ -72,6 +69,7 @@ const WorkspacesView = new Lang.Class({
this._workspaces[w].actor.reparent(this.actor);
this._workspaces[activeWorkspaceIndex].actor.raise_top();
this._extraWorkspaces = [];
this._updateExtraWorkspaces();
// Position/scale the desktop windows and their children after the
@ -83,8 +81,6 @@ const WorkspacesView = new Lang.Class({
Lang.bind(this, function() {
for (let w = 0; w < this._workspaces.length; w++)
this._workspaces[w].zoomToOverview();
if (!this._extraWorkspaces)
return;
for (let w = 0; w < this._extraWorkspaces.length; w++)
this._extraWorkspaces[w].zoomToOverview();
}));
@ -108,9 +104,9 @@ const WorkspacesView = new Lang.Class({
global.window_manager.connect('switch-workspace',
Lang.bind(this, this._activeWorkspaceChanged));
this._itemDragBeginId = Main.overview.connect('item-drag-begin',
this._appDragBeginId = Main.overview.connect('app-drag-begin',
Lang.bind(this, this._dragBegin));
this._itemDragEndId = Main.overview.connect('item-drag-end',
this._appDragEndId = Main.overview.connect('app-drag-end',
Lang.bind(this, this._dragEnd));
this._windowDragBeginId = Main.overview.connect('window-drag-begin',
Lang.bind(this, this._dragBegin));
@ -124,7 +120,6 @@ const WorkspacesView = new Lang.Class({
if (!this._settings.get_boolean('workspaces-only-on-primary'))
return;
this._extraWorkspaces = [];
let monitors = Main.layoutManager.monitors;
for (let i = 0; i < monitors.length; i++) {
if (i == Main.layoutManager.primaryIndex)
@ -139,23 +134,20 @@ const WorkspacesView = new Lang.Class({
},
_destroyExtraWorkspaces: function() {
if (!this._extraWorkspaces)
return;
for (let m = 0; m < this._extraWorkspaces.length; m++)
this._extraWorkspaces[m].destroy();
this._extraWorkspaces = null;
this._extraWorkspaces = [];
},
setGeometry: function(x, y, width, height, spacing) {
setGeometry: function(x, y, width, height) {
if (this._x == x && this._y == y &&
this._width == width && this._height == height)
return;
this._width = width;
this._height = height;
this._x = x;
this._y = y;
this._workspaceRatioSpacing = spacing;
for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].setGeometry(x, y, width, height);
@ -191,8 +183,6 @@ const WorkspacesView = new Lang.Class({
for (let w = 0; w < this._workspaces.length; w++)
this._workspaces[w].zoomFromOverview();
if (!this._extraWorkspaces)
return;
for (let w = 0; w < this._extraWorkspaces.length; w++)
this._extraWorkspaces[w].zoomFromOverview();
},
@ -204,8 +194,6 @@ const WorkspacesView = new Lang.Class({
syncStacking: function(stackIndices) {
for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].syncStacking(stackIndices);
if (!this._extraWorkspaces)
return;
for (let i = 0; i < this._extraWorkspaces.length; i++)
this._extraWorkspaces[i].syncStacking(stackIndices);
},
@ -234,7 +222,7 @@ const WorkspacesView = new Lang.Class({
Tweener.removeTweens(workspace.actor);
let y = (w - active) * (this._height + this._spacing + this._workspaceRatioSpacing);
let y = (w - active) * (this._height + this._spacing);
if (showAnimation) {
let params = { y: y,
@ -337,13 +325,13 @@ const WorkspacesView = new Lang.Class({
if (this._inDrag)
this._dragEnd();
if (this._itemDragBeginId > 0) {
Main.overview.disconnect(this._itemDragBeginId);
this._itemDragBeginId = 0;
if (this._appDragBeginId > 0) {
Main.overview.disconnect(this._appDragBeginId);
this._appDragBeginId = 0;
}
if (this._itemDragEndId > 0) {
Main.overview.disconnect(this._itemDragEndId);
this._itemDragEndId = 0;
if (this._appDragEndId > 0) {
Main.overview.disconnect(this._appDragEndId);
this._appDragEndId = 0;
}
if (this._windowDragBeginId > 0) {
Main.overview.disconnect(this._windowDragBeginId);
@ -376,9 +364,6 @@ const WorkspacesView = new Lang.Class({
this._firstDragMotion = false;
for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
if (!this._extraWorkspaces)
return DND.DragMotionResult.CONTINUE;
for (let i = 0; i < this._extraWorkspaces.length; i++)
this._extraWorkspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
}
@ -392,9 +377,6 @@ const WorkspacesView = new Lang.Class({
for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].setReservedSlot(null);
if (!this._extraWorkspaces)
return;
for (let i = 0; i < this._extraWorkspaces.length; i++)
this._extraWorkspaces[i].setReservedSlot(null);
},
@ -476,25 +458,8 @@ const WorkspacesDisplay = new Lang.Class({
this.actor.connect('parent-set', Lang.bind(this, this._parentSet));
this.actor.set_clip_to_allocation(true);
let controls = new St.Bin({ style_class: 'workspace-controls',
request_mode: Clutter.RequestMode.WIDTH_FOR_HEIGHT,
y_align: St.Align.START,
y_fill: true });
this._controls = controls;
this.actor.add_actor(controls);
controls.reactive = true;
controls.track_hover = true;
controls.connect('notify::hover',
Lang.bind(this, this._onControlsHoverChanged));
controls.connect('scroll-event',
Lang.bind(this, this._onScrollEvent));
this._primaryIndex = Main.layoutManager.primaryIndex;
this._thumbnailsBox = new WorkspaceThumbnail.ThumbnailsBox();
controls.add_actor(this._thumbnailsBox.actor);
this._workspacesViews = null;
this._primaryScrollAdjustment = null;
@ -507,77 +472,47 @@ const WorkspacesDisplay = new Lang.Class({
this._inDrag = false;
this._cancelledDrag = false;
this._controlsInitiallyHovered = false;
this._alwaysZoomOut = false;
this._zoomOut = false;
this._zoomFraction = 0;
this._updateAlwaysZoom();
// If we stop hiding the overview on layout changes, we will need to
// update the _workspacesViews here
Main.layoutManager.connect('monitors-changed', Lang.bind(this, this._updateAlwaysZoom));
Main.xdndHandler.connect('drag-begin', Lang.bind(this, function(){
this._alwaysZoomOut = true;
}));
Main.xdndHandler.connect('drag-end', Lang.bind(this, function(){
this._alwaysZoomOut = false;
this._updateAlwaysZoom();
}));
global.screen.connect('notify::n-workspaces',
Lang.bind(this, this._workspacesChanged));
this._switchWorkspaceNotifyId = 0;
this._itemDragBeginId = 0;
this._itemDragCancelledId = 0;
this._itemDragEndId = 0;
this._appDragBeginId = 0;
this._appDragCancelledId = 0;
this._appDragEndId = 0;
this._windowDragBeginId = 0;
this._windowDragCancelledId = 0;
this._windowDragEndId = 0;
this._notifyOpacityId = 0;
this._swipeScrollBeginId = 0;
this._swipeScrollEndId = 0;
this._settings = new Gio.Settings({ schema: OVERRIDE_SCHEMA });
this._settings.connect('changed::dynamic-workspaces',
Lang.bind(this, this._updateSwitcherVisibility));
},
_updateSwitcherVisibility: function() {
this._thumbnailsBox.actor.visible =
this._settings.get_boolean('dynamic-workspaces') ||
global.screen.n_workspaces > 1;
},
show: function() {
if(!this._alwaysZoomOut) {
let [mouseX, mouseY] = global.get_pointer();
let [x, y] = this._controls.get_transformed_position();
let [width, height] = this._controls.get_transformed_size();
let visibleWidth = this._controls.get_theme_node().get_length('visible-width');
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
if(rtl)
x = x + width - visibleWidth;
if(mouseX > x - 0.5 && mouseX < x + visibleWidth + 0.5 &&
mouseY > y - 0.5 && mouseY < y + height + 0.5)
this._controlsInitiallyHovered = true;
}
this._zoomOut = this._alwaysZoomOut;
this._zoomFraction = this._alwaysZoomOut ? 1 : 0;
this._updateZoom();
this._controls.show();
this._thumbnailsBox.show();
this._updateWorkspacesViews();
this._restackedNotifyId =
global.screen.connect('restacked',
Main.overview.connect('sync-window-stacking',
Lang.bind(this, this._onRestacked));
if (this._itemDragBeginId == 0)
this._itemDragBeginId = Main.overview.connect('item-drag-begin',
if (this._appDragBeginId == 0)
this._appDragBeginId = Main.overview.connect('app-drag-begin',
Lang.bind(this, this._dragBegin));
if (this._itemDragCancelledId == 0)
this._itemDragCancelledId = Main.overview.connect('item-drag-cancelled',
if (this._appDragCancelledId == 0)
this._appDragCancelledId = Main.overview.connect('app-drag-cancelled',
Lang.bind(this, this._dragCancelled));
if (this._itemDragEndId == 0)
this._itemDragEndId = Main.overview.connect('item-drag-end',
if (this._appDragEndId == 0)
this._appDragEndId = Main.overview.connect('app-drag-end',
Lang.bind(this, this._dragEnd));
if (this._windowDragBeginId == 0)
this._windowDragBeginId = Main.overview.connect('window-drag-begin',
@ -588,8 +523,6 @@ const WorkspacesDisplay = new Lang.Class({
if (this._windowDragEndId == 0)
this._windowDragEndId = Main.overview.connect('window-drag-end',
Lang.bind(this, this._dragEnd));
this._onRestacked();
},
zoomFromOverview: function() {
@ -599,27 +532,21 @@ const WorkspacesDisplay = new Lang.Class({
},
hide: function() {
this._controls.hide();
this._thumbnailsBox.hide();
if (!this._alwaysZoomOut)
this.zoomFraction = 0;
if (this._restackedNotifyId > 0){
global.screen.disconnect(this._restackedNotifyId);
Main.overview.disconnect(this._restackedNotifyId);
this._restackedNotifyId = 0;
}
if (this._itemDragBeginId > 0) {
Main.overview.disconnect(this._itemDragBeginId);
this._itemDragBeginId = 0;
if (this._appDragBeginId > 0) {
Main.overview.disconnect(this._appDragBeginId);
this._appDragBeginId = 0;
}
if (this._itemDragCancelledId > 0) {
Main.overview.disconnect(this._itemDragCancelledId);
this._itemDragCancelledId = 0;
if (this._appDragCancelledId > 0) {
Main.overview.disconnect(this._appDragCancelledId);
this._appDragCancelledId = 0;
}
if (this._itemDragEndId > 0) {
Main.overview.disconnect(this._itemDragEndId);
this._itemDragEndId = 0;
if (this._appDragEndId > 0) {
Main.overview.disconnect(this._appDragEndId);
this._appDragEndId = 0;
}
if (this._windowDragBeginId > 0) {
Main.overview.disconnect(this._windowDragBeginId);
@ -750,73 +677,15 @@ const WorkspacesDisplay = new Lang.Class({
return this._getPrimaryView().getActiveWorkspace().hasMaximizedWindows();
},
// zoomFraction property allows us to tween the controls sliding in and out
set zoomFraction(fraction) {
this._zoomFraction = fraction;
this.actor.queue_relayout();
},
get zoomFraction() {
return this._zoomFraction;
},
_updateAlwaysZoom: function() {
// Always show the pager if workspaces are actually used,
// e.g. there are windows on more than one
this._alwaysZoomOut = global.screen.n_workspaces > 2;
if (this._alwaysZoomOut)
return;
let monitors = Main.layoutManager.monitors;
let primary = Main.layoutManager.primaryMonitor;
/* Look for any monitor to the right of the primary, if there is
* one, we always keep zoom out, otherwise its hard to reach
* the thumbnail area without passing into the next monitor. */
for (let i = 0; i < monitors.length; i++) {
if (monitors[i].x >= primary.x + primary.width) {
this._alwaysZoomOut = true;
break;
}
}
},
_getPreferredWidth: function (actor, forHeight, alloc) {
// pass through the call in case the child needs it, but report 0x0
this._controls.get_preferred_width(forHeight);
},
_getPreferredHeight: function (actor, forWidth, alloc) {
// pass through the call in case the child needs it, but report 0x0
this._controls.get_preferred_height(forWidth);
},
_allocate: function (actor, box, flags) {
let childBox = new Clutter.ActorBox();
let totalWidth = box.x2 - box.x1;
// width of the controls
let [controlsMin, controlsNatural] = this._controls.get_preferred_width(box.y2 - box.y1);
// Amount of space on the screen we reserve for the visible control
let controlsVisible = this._controls.get_theme_node().get_length('visible-width');
let controlsReserved = controlsVisible * (1 - this._zoomFraction) + controlsNatural * this._zoomFraction;
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
if (rtl) {
childBox.x2 = controlsReserved;
childBox.x1 = childBox.x2 - controlsNatural;
} else {
childBox.x1 = totalWidth - controlsReserved;
childBox.x2 = childBox.x1 + controlsNatural;
}
childBox.y1 = 0;
childBox.y2 = box.y2- box.y1;
this._controls.allocate(childBox, flags);
this._updateWorkspacesGeometry();
},
@ -856,36 +725,22 @@ const WorkspacesDisplay = new Lang.Class({
let width = fullWidth;
let height = fullHeight;
let [controlsMin, controlsNatural] = this._controls.get_preferred_width(height);
let controlsVisible = this._controls.get_theme_node().get_length('visible-width');
let [x, y] = this.actor.get_transformed_position();
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
let clipWidth = width - controlsVisible;
let clipHeight = (fullHeight / fullWidth) * clipWidth;
let clipX = rtl ? x + controlsVisible : x;
let clipWidth = width;
let clipHeight = fullHeight;
let clipX = x;
let clipY = y + (fullHeight - clipHeight) / 2;
let widthAdjust = this._zoomOut ? controlsNatural : controlsVisible;
width -= widthAdjust;
if (rtl)
x += widthAdjust;
height = (fullHeight / fullWidth) * width;
let difference = fullHeight - height;
y += difference / 2;
let monitors = Main.layoutManager.monitors;
let m = 0;
for (let i = 0; i < monitors.length; i++) {
if (i == this._primaryIndex) {
this._workspacesViews[m].setClipRect(clipX, clipY,
clipWidth, clipHeight);
this._workspacesViews[m].setGeometry(x, y, width, height,
difference);
this._workspacesViews[m].setGeometry(x, y, width, height);
m++;
} else if (!this._workspacesOnlyOnPrimary) {
this._workspacesViews[m].setClipRect(monitors[i].x,
@ -895,31 +750,18 @@ const WorkspacesDisplay = new Lang.Class({
this._workspacesViews[m].setGeometry(monitors[i].x,
monitors[i].y,
monitors[i].width,
monitors[i].height, 0);
monitors[i].height);
m++;
}
}
},
_onRestacked: function() {
let stack = global.get_window_actors();
let stackIndices = {};
for (let i = 0; i < stack.length; i++) {
// Use the stable sequence for an integer to use as a hash key
stackIndices[stack[i].get_meta_window().get_stable_sequence()] = i;
}
_onRestacked: function(actor, stackIndices) {
for (let i = 0; i < this._workspacesViews.length; i++)
this._workspacesViews[i].syncStacking(stackIndices);
this._thumbnailsBox.syncStacking(stackIndices);
},
_workspacesChanged: function() {
this._updateAlwaysZoom();
this._updateZoom();
if (this._workspacesViews == null)
return;
@ -932,19 +774,18 @@ const WorkspacesDisplay = new Lang.Class({
let monitors = Main.layoutManager.monitors;
let m = 0;
for (let i = 0; i < monitors.length; i++) {
if (this._workspacesOnlyOnPrimaryChanged &&
if (this._workspacesOnlyOnPrimary &&
i != this._primaryIndex)
continue;
// Assume workspaces are only added at the end
for (let w = oldNumWorkspaces; w < newNumWorkspaces; w++) {
let metaWorkspace = global.screen.get_workspace_by_index(w);
this._workspaces[m++][w] =
this._workspaces[m][w] =
new Workspace.Workspace(metaWorkspace, i);
}
m++;
}
this._thumbnailsBox.addThumbnails(oldNumWorkspaces, newNumWorkspaces - oldNumWorkspaces);
} else {
// Assume workspaces are only removed sequentially
// (e.g. 2,3,4 - not 2,4,7)
@ -967,42 +808,12 @@ const WorkspacesDisplay = new Lang.Class({
lostWorkspaces[l].destroy();
}
}
this._thumbnailsBox.removeThumbmails(removedIndex, removedNum);
}
for (let i = 0; i < this._workspacesViews.length; i++)
this._workspacesViews[i].updateWorkspaces(oldNumWorkspaces,
newNumWorkspaces);
},
_updateZoom : function() {
if (Main.overview.animationInProgress)
return;
let shouldZoom = this._alwaysZoomOut || this._controls.hover;
if (shouldZoom != this._zoomOut) {
this._zoomOut = shouldZoom;
this._updateWorkspacesGeometry();
if (!this._workspacesViews)
return;
Tweener.addTween(this,
{ zoomFraction: this._zoomOut ? 1 : 0,
time: WORKSPACE_SWITCH_TIME,
transition: 'easeOutQuad' });
for (let i = 0; i < this._workspacesViews.length; i++)
this._workspacesViews[i].updateWindowPositions();
}
},
_onControlsHoverChanged: function() {
if(!this._controls.hover)
this._controlsInitiallyHovered = false;
if(!this._controlsInitiallyHovered)
this._updateZoom();
this._updateSwitcherVisibility();
},
_dragBegin: function() {
@ -1020,33 +831,11 @@ const WorkspacesDisplay = new Lang.Class({
},
_onDragMotion: function(dragEvent) {
let controlsHovered = this._controls.contains(dragEvent.targetActor);
this._controls.set_hover(controlsHovered);
return DND.DragMotionResult.CONTINUE;
},
_dragEnd: function() {
this._inDrag = false;
// We do this deferred because drag-end is emitted before dnd.js emits
// event/leave events that were suppressed during the drag. If we didn't
// defer this, we'd zoom out then immediately zoom in because of the
// enter event we received. That would normally be invisible but we
// might as well avoid it.
Meta.later_add(Meta.LaterType.BEFORE_REDRAW,
Lang.bind(this, this._updateZoom));
},
_onScrollEvent: function (actor, event) {
switch ( event.get_scroll_direction() ) {
case Clutter.ScrollDirection.UP:
Main.wm.actionMoveWorkspace(Meta.MotionDirection.UP);
break;
case Clutter.ScrollDirection.DOWN:
Main.wm.actionMoveWorkspace(Meta.MotionDirection.DOWN);
break;
}
}
});
Signals.addSignalMethods(WorkspacesDisplay.prototype);

181
po/be.po
View File

@ -5,8 +5,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: 2012-09-19 11:02+0000\n"
"PO-Revision-Date: 2012-09-21 20:02+0300\n"
"POT-Creation-Date: 2012-10-15 23:38+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"
"Language: be\n"
@ -34,6 +34,14 @@ msgstr "Сістэма"
msgid "Show the message tray"
msgstr "Паказаць абшар апавяшчэнняў"
#: ../data/50-gnome-shell-system.xml.in.h:3
msgid "Show all applications"
msgstr "Паказаць усе праграмы"
#: ../data/50-gnome-shell-system.xml.in.h:4
msgid "Open the application menu"
msgstr "Адкрыць праграмнае меню"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "Абалонка GNOME"
@ -152,34 +160,43 @@ msgid "Keybinding to open the application menu."
msgstr "Клавіятурны скарот для адкрыцця праграмнага меню."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
msgid "Keybinding to open the \"Show Applications\" view"
msgstr "Клавіятурны скарот для рэжыму \"Паказаць праграмы\""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr "Клавіятурны скарот для рэжыму \"Паказаць праграмы\" у Аглядзе Заняткаў."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "Keybinding to toggle the visibility of the message tray"
msgstr "Клавіятурны скарот для ўключэння/выключэння абшару апавяшчэнняў"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to toggle the visibility of the message tray."
msgstr "Клавіятурны скарот для ўключэння/выключэння абшару апавяшчэнняў."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to toggle the screen recorder"
msgstr "Клавіятурны скарот для ўключэння запісу экрана"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to start/stop the builtin screen recorder."
msgstr "Клавіятурны скарот для запуску/спынення ўбудаванага запісу экрана."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid "Which keyboard to use"
msgstr "Ужываная клавіятура"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "The type of keyboard to use."
msgstr "Від ужыванай клавіятуры."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Framerate used for recording screencasts."
msgstr "Частата змены кадраў для запісу скрынкасту."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -187,11 +204,11 @@ msgstr ""
"Частата змены кадраў выніковага скрынкасту, запісанага пры дапамозе абалонкі "
"GNOME (кадраў на секунду)."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Канвеер gstreamer для кадавання скрынкастаў"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -212,16 +229,16 @@ msgstr ""
"канвеер таксама можа самастойна абслугоўваць свой вывад. Напрыклад, гэта "
"можа спатрэбіцца для пасылкі вываду на icecast-сервер пры дапамозе "
"shout2send ці пад. Калі не настаўлена ці настаўлена пустое значэнне, будзе "
"ўжыты прадвызначаны канвеер. Цяпер выкарыстоўваецца \"vp8enc min_quantizer=13 "
"max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux\" "
"і запісвае ў WEBM з дапамогай кодэка "
"VP8. %T ўжываецца ў якасці замены аптымальнай для сістэмы колькасці ніцяў."
"ўжыты прадвызначаны канвеер. Цяпер выкарыстоўваецца \"vp8enc "
"min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! "
"queue ! webmmux\" і запісвае ў WEBM з дапамогай кодэка VP8. %T ўжываецца ў "
"якасці замены аптымальнай для сістэмы колькасці ніцяў."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid "File extension used for storing the screencast"
msgstr "Пашырэнне файла для захавання скрынкасту"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@ -246,11 +263,11 @@ msgstr ""
"Абярыце пашырэнне, каб настроіць графу з выплыўным спісам, якая знаходзіцца "
"вышэй."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:529
msgid "Session..."
msgstr "Сеанс..."
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:677
msgctxt "title"
msgid "Sign In"
msgstr "Уваход"
@ -258,37 +275,42 @@ msgstr "Уваход"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:736
msgid "Not listed?"
msgstr "Няма ў спісе?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
msgid "Cancel"
msgstr "Скасаваць"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:894
msgctxt "button"
msgid "Sign In"
msgstr "Увайсці"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1215
msgid "Login Window"
msgstr "Акно ўваходу"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "Праца сістэмы"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:775
msgid "Suspend"
msgstr "Прыпыніць камп'ютар"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "Перазапусціць сістэму"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:774
msgid "Power Off"
msgstr "Выключыць камп'ютар"
@ -339,7 +361,7 @@ msgstr "НАСТРОЙКІ"
msgid "New Window"
msgstr "Новае акно"
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
msgid "Remove from Favorites"
msgstr "Выдаліць са спіса ўпадабанага"
@ -503,16 +525,16 @@ msgstr "На гэтым тыдні"
msgid "Next week"
msgstr "На наступным тыдні"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "Зменныя прыстасаванні"
#: ../js/ui/components/autorunManager.js:575
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "Адкрыць у %s"
#: ../js/ui/components/autorunManager.js:601
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "Выняць"
@ -883,7 +905,7 @@ msgstr "Рэдагаваць конт"
msgid "Unknown reason"
msgstr "Невядомая прычына"
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
msgid "Show Applications"
msgstr "Паказаць праграмы"
@ -891,14 +913,14 @@ msgstr "Паказаць праграмы"
msgid "Date and Time Settings"
msgstr "Настройкі даты і часу"
#: ../js/ui/dateMenu.js:109
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Адкрыць каляндар"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:175
#: ../js/ui/dateMenu.js:201
msgid "%A %B %e, %Y"
msgstr "%A, %e %B, %Y"
@ -1009,11 +1031,11 @@ msgstr "Усталяваць"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Сцягнуць і ўсталяваць \"%s\" з extensions.gnome.org?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "трэй"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Клавіятура"
@ -1066,19 +1088,19 @@ msgstr "Паглядзець выточны код"
msgid "Web Page"
msgstr "Сеціўная старонка"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "Адкрыць"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "Выдаліць"
#: ../js/ui/messageTray.js:2052
#: ../js/ui/messageTray.js:1540
msgid "Message Tray"
msgstr "Абшар апавяшчэнняў"
#: ../js/ui/messageTray.js:2508
#: ../js/ui/messageTray.js:2547
msgid "System Information"
msgstr "Сістэмная інфармацыя"
@ -1142,7 +1164,7 @@ msgstr "Увядзіце загад:"
msgid "%A, %B %d"
msgstr "%A, %d %B"
#: ../js/ui/screenShield.js:144
#: ../js/ui/screenShield.js:143
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
@ -1150,7 +1172,7 @@ msgstr[0] "%d новае паведамленне"
msgstr[1] "%d новыя паведамленні"
msgstr[2] "%d новых паведамленняў"
#: ../js/ui/screenShield.js:146
#: ../js/ui/screenShield.js:145
#, c-format
msgid "%d new notification"
msgid_plural "%d new notifications"
@ -1190,7 +1212,7 @@ msgstr "Пароль"
msgid "Remember Password"
msgstr "Запомніць пароль"
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
msgid "Unlock"
msgstr "Разблакіраваць"
@ -1309,7 +1331,7 @@ msgstr "Настройкі клавіятуры"
msgid "Mouse Settings"
msgstr "Настройкі мышы"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Настройкі гуку"
@ -1367,11 +1389,11 @@ msgstr "Увядзіце PIN, які паказвае прыстасаванне
msgid "OK"
msgstr "Добра"
#: ../js/ui/status/keyboard.js:227
#: ../js/ui/status/keyboard.js:228
msgid "Show Keyboard Layout"
msgstr "Паказаць раскладку"
#: ../js/ui/status/keyboard.js:232
#: ../js/ui/status/keyboard.js:233
msgid "Region and Language Settings"
msgstr "Настройкі мясцовасці і мовы"
@ -1598,7 +1620,7 @@ msgid "Unknown"
msgstr "Невядомае"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Гучнасць"
@ -1606,67 +1628,63 @@ msgstr "Гучнасць"
msgid "Microphone"
msgstr "Мікрафон"
#: ../js/ui/unlockDialog.js:176
#: ../js/ui/unlockDialog.js:177
msgid "Log in as another user"
msgstr "Увайсці іншым карыстальнікам"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "Даступны"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "Заняты"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "Нябачны"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "Адсутны"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "Бяздзейны"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "Недаступны"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
msgid "Switch User"
msgstr "Перамяніць карыстальніка"
#: ../js/ui/userMenu.js:614
msgid "Switch Session"
msgstr "Перамяніць сеанс"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:740
msgid "Notifications"
msgstr "Апавяшчэнні"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:748
msgid "System Settings"
msgstr "Сістэмныя настройкі"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "Перамяніць карыстальніка"
#: ../js/ui/userMenu.js:761
msgid "Log Out"
msgstr "Выйсці з сеанса"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:766
msgid "Lock"
msgstr "Заблакіраваць"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:781
msgid "Install Updates & Restart"
msgstr "Усталяваць абнаўленні і перазагрузіць камп'ютар"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:799
msgid "Your chat status will be set to busy"
msgstr "Вам прызначаны стан занятасці для чату"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:800
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1675,19 +1693,19 @@ msgstr ""
"сеціўны стан абноўлены інфармацыяй аб тым, што вы можаце не ўбачыць чужых "
"паведамленняў у час."
#: ../js/ui/viewSelector.js:85
#: ../js/ui/viewSelector.js:87
msgid "Windows"
msgstr "Вокны"
#: ../js/ui/viewSelector.js:89
#: ../js/ui/viewSelector.js:91
msgid "Applications"
msgstr "Праграмы"
#: ../js/ui/viewSelector.js:93
#: ../js/ui/viewSelector.js:95
msgid "Search"
msgstr "Пошук"
#: ../js/ui/wanda.js:119
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1696,12 +1714,12 @@ msgstr ""
"На жаль, на сёння не хапіла мудрасцяў:\n"
"%s"
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "Так сказаў Вяшчун %s"
#: ../js/ui/wanda.js:164
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "Ваша ўлюбёнае велікоднае яйка"
@ -1738,19 +1756,19 @@ msgstr[2] "%u уваходаў"
msgid "System Sounds"
msgstr "Сістэмныя гукі"
#: ../src/main.c:330
#: ../src/main.c:332
msgid "Print version"
msgstr "Вывесці нумар версіі праграмы"
#: ../src/main.c:336
#: ../src/main.c:338
msgid "Mode used by GDM for login screen"
msgstr "Рэжым, які выкарыстоўвае GDM для экрана ўваходу"
#: ../src/main.c:342
#: ../src/main.c:344
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "Ужыць асаблівы рэжым, напрыклад, \"gdm\" для экрана ўваходу"
#: ../src/main.c:348
#: ../src/main.c:350
msgid "List possible modes"
msgstr "Вывесці спіс магчымых рэжымаў"
@ -1778,4 +1796,3 @@ msgstr "Прадвызначана"
#: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user"
msgstr "Карыстальнік праігнараваў дыялогавае акенца ідэнтыфікацыі"

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-09-22 12:52+0300\n"
"PO-Revision-Date: 2012-09-22 12:51+0300\n"
"POT-Creation-Date: 2012-10-02 05:37+0300\n"
"PO-Revision-Date: 2012-10-02 05:38+0300\n"
"Last-Translator: Ivaylo Valkov <ivaylo@e-valkov.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"Language: bg\n"
@ -251,11 +251,11 @@ msgstr ""
"Изберете разширение, което да се настрои като използвате падащото меню по-"
"горе."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:528
msgid "Session..."
msgstr "Сесия…"
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:676
msgctxt "title"
msgid "Sign In"
msgstr "Регистриране"
@ -263,37 +263,42 @@ msgstr "Регистриране"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:743
msgid "Not listed?"
msgstr "Липсва в списъка?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "Отказване"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:901
msgctxt "button"
msgid "Sign In"
msgstr "Регистриране"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1240
msgid "Login Window"
msgstr "Екран за идентификация"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "Спиране"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
msgid "Suspend"
msgstr "Приспиване"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "Рестартиране"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
msgid "Power Off"
msgstr "Изключване"
@ -1010,11 +1015,11 @@ msgstr "Инсталиране"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Да се изтегли и инсталира ли „%s“ от from extensions.gnome.org?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "област за уведомяване"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Клавиатура"
@ -1067,19 +1072,19 @@ msgstr "Преглед на изходния код"
msgid "Web Page"
msgstr "Домашна страница"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "Отваряне"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "Изтриване"
#: ../js/ui/messageTray.js:2050
#: ../js/ui/messageTray.js:2088
msgid "Message Tray"
msgstr "Област за уведомяване"
#: ../js/ui/messageTray.js:2506
#: ../js/ui/messageTray.js:2551
msgid "System Information"
msgstr "Информация за системата"
@ -1307,7 +1312,7 @@ msgstr "Настройка на клавиатурата"
msgid "Mouse Settings"
msgstr "Настройки на мишката"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Настройки на звука"
@ -1592,7 +1597,7 @@ msgid "Unknown"
msgstr "Неизвестно"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Сила на звука"
@ -1604,63 +1609,63 @@ msgstr "Микрофон"
msgid "Log in as another user"
msgstr "Влезте като друг потребител"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "На линия"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "Зает"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "Невидим"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "Отсъстващ"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "Бездействие"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "Недостъпно"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "Смяна на потребител"
#: ../js/ui/userMenu.js:614
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "Смяна на сесия"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:743
msgid "Notifications"
msgstr "Известия"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:751
msgid "System Settings"
msgstr "Системни настройки"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:764
msgid "Log Out"
msgstr "Изход"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:769
msgid "Lock"
msgstr "Заключване"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:784
msgid "Install Updates & Restart"
msgstr "Инсталиране на обновленията и рестартиране"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:802
msgid "Your chat status will be set to busy"
msgstr "Състоянието ви ще се зададе да е „Зает“"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:803
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."

View File

@ -10,14 +10,14 @@ msgstr ""
"Project-Id-Version: HEAD\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-09-22 18:40+0000\n"
"PO-Revision-Date: 2012-09-23 00:20+0200\n"
"POT-Creation-Date: 2012-09-25 10:59+0000\n"
"PO-Revision-Date: 2012-09-25 07:47+0100\n"
"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bits\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Gtranslator 2.91.5\n"
@ -250,11 +250,11 @@ msgstr "Extensió"
msgid "Select an extension to configure using the combobox above."
msgstr "Seleccioneu una extensió amb el quadre combinat per configurar-la."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:528
msgid "Session..."
msgstr "Sessió..."
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:676
msgctxt "title"
msgid "Sign In"
msgstr "Entrada"
@ -262,42 +262,46 @@ msgstr "Entrada"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:743
msgid "Not listed?"
msgstr "No esteu llistat?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "Cancel·la"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:901
msgctxt "button"
msgid "Sign In"
msgstr "Entra"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1240
msgid "Login Window"
msgstr "Finestra d'entrada"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "Apaga"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
msgid "Suspend"
msgstr "Atura temporalment"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "Reinicia"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
msgid "Power Off"
msgstr "Apaga"
#: ../js/gdm/util.js:148
#| msgid "Authentication Required"
msgid "Authentication error"
msgstr "Error d'autenticació"
@ -1007,11 +1011,11 @@ msgstr "Instal·la"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Voleu baixar i instal·lar «%s» de extensions.gnome.org?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "safata"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Teclat"
@ -1064,19 +1068,19 @@ msgstr "Mostra el codi font"
msgid "Web Page"
msgstr "Pàgina web"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "Obre"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "Suprimeix"
#: ../js/ui/messageTray.js:2055
#: ../js/ui/messageTray.js:2088
msgid "Message Tray"
msgstr "Safata de missatges"
#: ../js/ui/messageTray.js:2511
#: ../js/ui/messageTray.js:2551
msgid "System Information"
msgstr "Informació de l'ordinador"
@ -1304,7 +1308,7 @@ msgstr "Paràmetres del teclat"
msgid "Mouse Settings"
msgstr "Paràmetres del ratolí"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Paràmetres de so"
@ -1589,7 +1593,7 @@ msgid "Unknown"
msgstr "Desconegut"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Volum"
@ -1601,63 +1605,63 @@ msgstr "Micròfon"
msgid "Log in as another user"
msgstr "Entra amb un altre usuari"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "Disponible"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "Ocupat"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "Invisible"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "Absent"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "Inactiu"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "No disponible"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "Canvia d'usuari"
#: ../js/ui/userMenu.js:614
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "Canvia de sessió"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:743
msgid "Notifications"
msgstr "Notificacions"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:751
msgid "System Settings"
msgstr "Paràmetres del sistema"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:764
msgid "Log Out"
msgstr "Surt"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:769
msgid "Lock"
msgstr "Bloqueja"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:784
msgid "Install Updates & Restart"
msgstr "Instal·la les actualitzacions i reinicia"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:802
msgid "Your chat status will be set to busy"
msgstr "L'estat del xat s'establirà a ocupat"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:803
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."

View File

@ -9,14 +9,14 @@ msgid ""
msgstr ""
"Project-Id-Version: HEAD\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-09-23 00:21+0200\n"
"PO-Revision-Date: 2012-09-23 00:20+0200\n"
"POT-Creation-Date: 2012-09-26 01:29+0200\n"
"PO-Revision-Date: 2012-09-25 07:47+0100\n"
"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
"Language: ca-XV\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bits\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Gtranslator 2.91.5\n"
@ -249,11 +249,11 @@ msgstr "Extensió"
msgid "Select an extension to configure using the combobox above."
msgstr "Seleccioneu una extensió amb el quadre combinat per configurar-la."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:528
msgid "Session..."
msgstr "Sessió..."
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:676
msgctxt "title"
msgid "Sign In"
msgstr "Entrada"
@ -261,37 +261,42 @@ msgstr "Entrada"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:743
msgid "Not listed?"
msgstr "No esteu llistat?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "Cancel·la"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:901
msgctxt "button"
msgid "Sign In"
msgstr "Entra"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1240
msgid "Login Window"
msgstr "Finestra d'entrada"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "Apaga"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
msgid "Suspend"
msgstr "Para temporalment"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "Reinicia"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
msgid "Power Off"
msgstr "Apaga"
@ -1005,11 +1010,11 @@ msgstr "Instal·la"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Voleu baixar i instal·lar «%s» d'extensions.gnome.org?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "safata"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Teclat"
@ -1062,19 +1067,19 @@ msgstr "Mostra el codi font"
msgid "Web Page"
msgstr "Pàgina web"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "Obri"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "Suprimeix"
#: ../js/ui/messageTray.js:2055
#: ../js/ui/messageTray.js:2088
msgid "Message Tray"
msgstr "Safata de missatges"
#: ../js/ui/messageTray.js:2511
#: ../js/ui/messageTray.js:2551
msgid "System Information"
msgstr "Informació de l'ordinador"
@ -1302,7 +1307,7 @@ msgstr "Paràmetres del teclat"
msgid "Mouse Settings"
msgstr "Paràmetres del ratolí"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Paràmetres de so"
@ -1587,7 +1592,7 @@ msgid "Unknown"
msgstr "Desconegut"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Volum"
@ -1599,63 +1604,63 @@ msgstr "Micròfon"
msgid "Log in as another user"
msgstr "Entra amb un altre usuari"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "Disponible"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "Ocupat"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "Invisible"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "Absent"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "Inactiu"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "No disponible"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "Canvia d'usuari"
#: ../js/ui/userMenu.js:614
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "Canvia de sessió"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:743
msgid "Notifications"
msgstr "Notificacions"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:751
msgid "System Settings"
msgstr "Paràmetres del sistema"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:764
msgid "Log Out"
msgstr "Ix"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:769
msgid "Lock"
msgstr "Bloqueja"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:784
msgid "Install Updates & Restart"
msgstr "Instal·la les actualitzacions i reinicia"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:802
msgid "Your chat status will be set to busy"
msgstr "L'estat del xat s'establirà a ocupat"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:803
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."

View File

@ -10,7 +10,7 @@ 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: 2012-09-24 13:42+0000\n"
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
"PO-Revision-Date: 2012-09-24 18:30+0200\n"
"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
@ -31,12 +31,10 @@ msgid "Record a screencast"
msgstr "Nahrát dění na obrazovce"
#: ../data/50-gnome-shell-system.xml.in.h:1
#| msgid "File System"
msgid "System"
msgstr "Systém"
#: ../data/50-gnome-shell-system.xml.in.h:2
#| msgid "Message Tray"
msgid "Show the message tray"
msgstr "Zobrazit lištu zpráv"
@ -196,17 +194,6 @@ msgstr "Roura systému gstreamer určená ke kódování nahrávky dění na obr
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#, no-c-format
#| msgid ""
#| "Sets the GStreamer pipeline used to encode recordings. It follows the "
#| "syntax used for gst-launch. The pipeline should have an unconnected sink "
#| "pad where the recorded video is recorded. It will normally have a "
#| "unconnected source pad; output from that pad will be written into the "
#| "output file. However the pipeline can also take care of its own output - "
#| "this might be used to send the output to an icecast server via shout2send "
#| "or similar. When unset or set to an empty value, the default pipeline "
#| "will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! "
#| "queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a "
#| "placeholder for a guess at the optimal thread count on the system."
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
@ -242,8 +229,7 @@ msgid ""
msgstr ""
"Název souboru nahraných dění na obrazovce se bude sestávat z jedinečného "
"názvu vycházejícího z aktuálního data a bude používat tuto příponu. Při "
"nahrávání do jiného formátu kontejneru by měla být provedena úprava "
"pravidel."
"nahrávání do jiného formátu kontejneru by měla být provedena úprava pravidel."
#: ../js/extensionPrefs/main.js:124
#, c-format
@ -260,11 +246,11 @@ msgid "Select an extension to configure using the combobox above."
msgstr ""
"Pomocí rozbalovacího seznamu výše zvolte rozšíření, které chete nastavit."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:527
msgid "Session..."
msgstr "Sezení…"
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:675
msgctxt "title"
msgid "Sign In"
msgstr "Přihlášení"
@ -272,42 +258,46 @@ msgstr "Přihlášení"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:742
msgid "Not listed?"
msgstr "Nejste na seznamu?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "Zrušit"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:900
msgctxt "button"
msgid "Sign In"
msgstr "Přihlásit se"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1239
msgid "Login Window"
msgstr "Přihlašovací okno"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "Vypnout"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
msgid "Suspend"
msgstr "Uspat do paměti"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "Restartovat"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
msgid "Power Off"
msgstr "Vypnout"
#: ../js/gdm/util.js:148
#| msgid "Authentication Required"
msgid "Authentication error"
msgstr "Chyba ověření"
@ -1621,63 +1611,63 @@ msgstr "Mikrofon"
msgid "Log in as another user"
msgstr "Přihlásit se jako jiný uživatel"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "Přítomen"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "Zaneprázdněn"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "Neviditelný"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "Nepřítomen"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "Nečinný"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "Nedostupný"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "Přepnout uživatele"
#: ../js/ui/userMenu.js:614
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "Přepnout sezení"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:743
msgid "Notifications"
msgstr "Upozornění"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:751
msgid "System Settings"
msgstr "Nastavení systému"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:764
msgid "Log Out"
msgstr "Odhlásit se"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:769
msgid "Lock"
msgstr "Uzamknout"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:784
msgid "Install Updates & Restart"
msgstr "Nainstalovat aktualizace a restartovat"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:802
msgid "Your chat status will be set to busy"
msgstr "Váš stav v konverzacích byl nastaven na „Zaneprázdněn“"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:803
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."

148
po/da.po
View File

@ -16,8 +16,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-09-22 12:27+0200\n"
"PO-Revision-Date: 2012-09-21 22:28+0200\n"
"POT-Creation-Date: 2012-10-15 06:36+0200\n"
"PO-Revision-Date: 2012-10-12 17:27+0200\n"
"Last-Translator: Kris Thomsen <lakristho@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"Language: da\n"
@ -29,21 +29,19 @@ msgstr ""
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
msgid "Screenshots"
msgstr ""
msgstr "Skærmbilleder"
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
msgid "Record a screencast"
msgstr ""
msgstr "Optag en skærmoptagelse"
#: ../data/50-gnome-shell-system.xml.in.h:1
#, fuzzy
msgid "System"
msgstr "Filsystem"
msgstr "System"
#: ../data/50-gnome-shell-system.xml.in.h:2
#, fuzzy
msgid "Show the message tray"
msgstr "Besked-statusfelt"
msgstr "Vis besked-statusfeltet"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
@ -202,7 +200,7 @@ msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Datakanalen for Gstreamer bruges til indkodning af skærmoptagelsen"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#, fuzzy, no-c-format
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
@ -222,9 +220,10 @@ msgstr ""
"outputfilen. Dog kan datakanalen også tage sig af sit eget output - dette "
"kan bruges til at sende outputtet til en icecast-server via shout2send eller "
"lignende. Når der ændres til en tom værdi, vil standarddatakanalen blive "
"brugt. Dette er i øjeblikket \"vp8enc quality=8 speed=6 threads=%T ! queue ! "
"webmmux\" og optager i WEBM-formatet med VP8-codec'et. %T bruges som "
"pladsholder for et gæt om det optimale trådantal på systemet."
"brugt. Dette er i øjeblikket \"vp8enc min_quantizer=13 max_quantizer=13 cpu-"
"used=5 deadline=1000000 threads=%T ! queue ! webmmux\" og optager i WEBM-"
"formatet med VP8-codec'et. %T bruges som pladsholder for et gæt om det "
"optimale trådantal på systemet."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
msgid "File extension used for storing the screencast"
@ -254,11 +253,11 @@ msgid "Select an extension to configure using the combobox above."
msgstr ""
"Vælg en udvidelse at konfigurere ved hjælp af kombinationsboksen ovenfor."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:529
msgid "Session..."
msgstr "Session..."
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:677
msgctxt "title"
msgid "Sign In"
msgstr "Log ind"
@ -266,44 +265,48 @@ msgstr "Log ind"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:736
msgid "Not listed?"
msgstr "Ikke listet?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
msgid "Cancel"
msgstr "Annullér"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:894
msgctxt "button"
msgid "Sign In"
msgstr "Log ind"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1215
msgid "Login Window"
msgstr "Indlogningsvindue"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "Strøm"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:775
msgid "Suspend"
msgstr "Hviletilstand"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "Genstart"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:774
msgid "Power Off"
msgstr "Sluk"
#: ../js/gdm/util.js:148
#, fuzzy
msgid "Authentication error"
msgstr "Godkendelse er påkrævet"
msgstr "Godkendelsesfejl"
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
@ -348,7 +351,7 @@ msgstr "INDSTILLINGER"
msgid "New Window"
msgstr "Nyt vindue"
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
msgid "Remove from Favorites"
msgstr "Fjern fra favoritter"
@ -512,16 +515,16 @@ msgstr "Denne uge"
msgid "Next week"
msgstr "Næste uge"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "Flytbare enheder"
#: ../js/ui/components/autorunManager.js:575
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "Åbn med %s"
#: ../js/ui/components/autorunManager.js:601
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "Skub ud"
@ -893,7 +896,7 @@ msgstr "Redigér konto"
msgid "Unknown reason"
msgstr "Ukendt årsag"
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
msgid "Show Applications"
msgstr "Vis programmer"
@ -901,14 +904,14 @@ msgstr "Vis programmer"
msgid "Date and Time Settings"
msgstr "Indstillinger for dato og tid"
#: ../js/ui/dateMenu.js:109
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Åbn kalender"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:175
#: ../js/ui/dateMenu.js:201
msgid "%A %B %e, %Y"
msgstr "%A, %e. %B %Y"
@ -1009,11 +1012,11 @@ msgstr "Installér"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Hent og installér \"%s\" fra extensions.gnome.org?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "statusfelt"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Tastatur"
@ -1066,19 +1069,19 @@ msgstr "Vis kilde"
msgid "Web Page"
msgstr "Webside"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "Åbn"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "Fjern"
#: ../js/ui/messageTray.js:2050
#: ../js/ui/messageTray.js:1540
msgid "Message Tray"
msgstr "Besked-statusfelt"
#: ../js/ui/messageTray.js:2506
#: ../js/ui/messageTray.js:2547
msgid "System Information"
msgstr "Systeminformation"
@ -1142,14 +1145,14 @@ msgstr "Indtast en kommando:"
msgid "%A, %B %d"
msgstr "%A, %d. %B"
#: ../js/ui/screenShield.js:144
#: ../js/ui/screenShield.js:143
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d ny besked"
msgstr[1] "%d nye beskeder"
#: ../js/ui/screenShield.js:146
#: ../js/ui/screenShield.js:145
#, c-format
msgid "%d new notification"
msgid_plural "%d new notifications"
@ -1188,7 +1191,7 @@ msgstr "Adgangskode"
msgid "Remember Password"
msgstr "Husk adgangskode"
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
msgid "Unlock"
msgstr "Lås op"
@ -1306,7 +1309,7 @@ msgstr "Indstillinger for tastatur"
msgid "Mouse Settings"
msgstr "Indstillinger for mus"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Indstillinger for lyd"
@ -1592,7 +1595,7 @@ msgid "Unknown"
msgstr "Ukendt"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Lydstyrke"
@ -1600,67 +1603,63 @@ msgstr "Lydstyrke"
msgid "Microphone"
msgstr "Mikrofon"
#: ../js/ui/unlockDialog.js:176
#: ../js/ui/unlockDialog.js:177
msgid "Log in as another user"
msgstr "Log ind som en anden bruger"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "Tilgængelig"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "Optaget"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "Usynlig"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "Ikke tilstede"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "Tomgang"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "Utilgængelig"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
msgid "Switch User"
msgstr "Skift bruger"
#: ../js/ui/userMenu.js:614
msgid "Switch Session"
msgstr "Skift session"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:740
msgid "Notifications"
msgstr "Beskeder"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:748
msgid "System Settings"
msgstr "Systemindstillinger"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "Skift bruger"
#: ../js/ui/userMenu.js:761
msgid "Log Out"
msgstr "Log ud"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:766
msgid "Lock"
msgstr "Lås"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:781
msgid "Install Updates & Restart"
msgstr "Installér opdateringer og genstart"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:799
msgid "Your chat status will be set to busy"
msgstr "Din chat-status vil blive angivet som optaget"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:800
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1681,7 +1680,7 @@ msgstr "Programmer"
msgid "Search"
msgstr "Søg"
#: ../js/ui/wanda.js:119
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1690,12 +1689,12 @@ msgstr ""
"Beklager, ingen visdom til dig i dag:\n"
"%s"
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "Oraklet %s siger"
#: ../js/ui/wanda.js:164
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "Dit yndlingspåskeæg"
@ -1730,19 +1729,19 @@ msgstr[1] "%u inputs"
msgid "System Sounds"
msgstr "Systemlyde"
#: ../src/main.c:330
#: ../src/main.c:332
msgid "Print version"
msgstr "Udskriv version"
#: ../src/main.c:336
#: ../src/main.c:338
msgid "Mode used by GDM for login screen"
msgstr "Tilstand brugt af GDM til indlogningskærm"
#: ../src/main.c:342
#: ../src/main.c:344
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "Brug en specifik tilstand, f.eks. \"gdm\" til logind-skærm"
#: ../src/main.c:348
#: ../src/main.c:350
msgid "List possible modes"
msgstr "Vis mulige tilstande"
@ -1771,6 +1770,9 @@ msgstr "Standard"
msgid "Authentication dialog was dismissed by the user"
msgstr "Godkendelsesdialogen blev afvist af brugeren"
#~ msgid "Switch Session"
#~ msgstr "Skift session"
#~ msgid "Failed to unmount '%s'"
#~ msgstr "Kunne ikke afmontere \"%s\""

188
po/de.po
View File

@ -19,9 +19,9 @@ 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: 2012-09-19 11:02+0000\n"
"PO-Revision-Date: 2012-09-23 12:29+0100\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"POT-Creation-Date: 2012-10-14 16:48+0000\n"
"PO-Revision-Date: 2012-10-10 23:10+0100\n"
"Last-Translator: Tobias Endrigkeit <tobiasendrigkeit@googlemail.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
@ -89,8 +89,8 @@ msgstr ""
"Die Erweiterungen der GNOME-Shell besitzen eine UUID-Eigenschaft. Dieser "
"Schlüssel listet Erweiterungen auf, welche geladen werden sollen. Jede zu "
"ladende Erweiterung muss in dieser Liste erscheinen. Sie können diese Liste "
"auch mit den D-Bus-Methoden EnableExtension und DisableExtension in org.gnome."
"Shell bearbeiten."
"auch mit den D-Bus-Methoden EnableExtension und DisableExtension in org."
"gnome.Shell bearbeiten."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
msgid "Whether to collect stats about applications usage"
@ -118,8 +118,8 @@ msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgstr ""
"Programme, welche auf diese Bezeichner zutreffen, werden im Favoriten-Bereich "
"angezeigt."
"Programme, welche auf diese Bezeichner zutreffen, werden im Favoriten-"
"Bereich angezeigt."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
msgid "History for command (Alt-F2) dialog"
@ -131,8 +131,8 @@ msgstr "Chronik des Dialogs »looking glass«"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
msgid ""
"Internally used to store the last IM presence explicitly set by the user. The "
"value here is from the TpConnectionPresenceType enumeration."
"Internally used to store the last IM presence explicitly set by the user. "
"The value here is from the TpConnectionPresenceType enumeration."
msgstr ""
"Wird intern zur Speicherung des letzten Sofortnachrichtenstatus verwendet, "
"der explizit vom Benutzer gesetzt wurde. Der hier verwendete Wert wird der "
@ -143,9 +143,9 @@ msgid ""
"Internally used to store the last session presence status for the user. The "
"value here is from the GsmPresenceStatus enumeration."
msgstr ""
"Wird intern zur Speicherung des letzten Sofortnachrichtenstatus des Benutzers "
"verwendet. Der hier verwendete Wert wird der GsmPresenceStatus-Aufzählung "
"entnommen."
"Wird intern zur Speicherung des letzten Sofortnachrichtenstatus des "
"Benutzers verwendet. Der hier verwendete Wert wird der GsmPresenceStatus-"
"Aufzählung entnommen."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
msgid "Show the week date in the calendar"
@ -172,7 +172,8 @@ msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid "Keybinding to toggle the visibility of the message tray."
msgstr ""
"Tastenkombination zum Umschalten der Sichtbarkeit des Benachrichtigungsfeldes."
"Tastenkombination zum Umschalten der Sichtbarkeit des "
"Benachrichtigungsfeldes."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "Keybinding to toggle the screen recorder"
@ -219,9 +220,9 @@ msgid ""
"pipeline can also take care of its own output - this might be used to send "
"the output to an icecast server via shout2send or similar. When unset or set "
"to an empty value, the default pipeline will be used. This is currently "
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads="
"%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as "
"a placeholder for a guess at the optimal thread count on the system."
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
"used as a placeholder for a guess at the optimal thread count on the system."
msgstr ""
"Gibt die GStreamer-Weiterleitung zur Enkodierung von Aufzeichnungen an. Hier "
"wird die Syntax von gst-launch verwendet. Die Weiterleitung sollte über eine "
@ -230,12 +231,12 @@ msgstr ""
"Auffüllung haben; die Ausgabe dieser Auffüllung wird in die Ausgabedatei "
"geschrieben. Die Weiterleitung kann auch mit ihrer eigenen Ausgabe umgehen. "
"Das kann zum Senden der Ausgabe über shout2send an einen Icecast-Server oder "
"Ähnliches verwendet werden. Falls nicht (oder auf einen leeren Wert) gesetzt, "
"so wird die vorgegebene Weiterleitung verwendet, welche derzeit »vp8enc "
"min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! "
"queue ! webmmux« lautet und nach WEBM mittels des VP8-Codecs aufzeichnet. %T "
"wird als Platzhalter für die vermutete optimale Thread-Anzahl auf dem System "
"verwendet."
"Ähnliches verwendet werden. Falls nicht (oder auf einen leeren Wert) "
"gesetzt, so wird die vorgegebene Weiterleitung verwendet, welche derzeit "
"»vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
"threads=%T ! queue ! webmmux« lautet und nach WEBM mittels des VP8-Codecs "
"aufzeichnet. %T wird als Platzhalter für die vermutete optimale Thread-"
"Anzahl auf dem System verwendet."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
msgid "File extension used for storing the screencast"
@ -265,11 +266,11 @@ 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/loginDialog.js:526
#: ../js/gdm/loginDialog.js:529
msgid "Session..."
msgstr "Sitzung …"
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:677
msgctxt "title"
msgid "Sign In"
msgstr "Anmelden"
@ -277,37 +278,42 @@ msgstr "Anmelden"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:736
msgid "Not listed?"
msgstr "Nicht aufgeführt?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
msgid "Cancel"
msgstr "Abbrechen"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:894
msgctxt "button"
msgid "Sign In"
msgstr "Anmelden"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1215
msgid "Login Window"
msgstr "Anmeldefenster"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "Ausschalten"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:775
msgid "Suspend"
msgstr "Bereitschaft"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "Neu starten"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:774
msgid "Power Off"
msgstr "Ausschalten"
@ -358,7 +364,7 @@ msgstr "EINSTELLUNGEN"
msgid "New Window"
msgstr "Neues Fenster"
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
msgid "Remove from Favorites"
msgstr "Aus Favoriten entfernen"
@ -526,16 +532,16 @@ msgstr "Diese Woche"
msgid "Next week"
msgstr "Nächste Woche"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "Wechseldatenträger"
#: ../js/ui/components/autorunManager.js:575
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "Öffnen mit %s"
#: ../js/ui/components/autorunManager.js:601
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "Auswerfen"
@ -592,7 +598,8 @@ msgstr "Legitimierung für Funknetzwerk wird benötigt"
#: ../js/ui/components/networkAgent.js:310
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network '%s'."
"Passwords or encryption keys are required to access the wireless network "
"'%s'."
msgstr ""
"Passwörter oder Schlüssel sind erforderlich, um auf das Funknetzwerk »%s« "
"zuzugreifen."
@ -756,7 +763,8 @@ msgstr "Video-Anruf von %s"
msgid "Call from %s"
msgstr "Anruf von %s"
#: ../js/ui/components/telepathyClient.js:1137 ../js/ui/status/bluetooth.js:346
#: ../js/ui/components/telepathyClient.js:1137
#: ../js/ui/status/bluetooth.js:346
msgid "Reject"
msgstr "Abweisen"
@ -850,7 +858,8 @@ msgid "This account is already connected to the server"
msgstr "Dieses Konto ist bereits mit dem Server verbunden"
#: ../js/ui/components/telepathyClient.js:1332
msgid "Connection has been replaced by a new connection using the same resource"
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr ""
"Die Verbindung wurde durch eine neue Verbindung mit der gleichen Ressource "
"ersetzt"
@ -907,7 +916,7 @@ msgstr "Konto bearbeiten"
msgid "Unknown reason"
msgstr "Unbekannter Grund"
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
msgid "Show Applications"
msgstr "Anwendungen anzeigen"
@ -915,14 +924,14 @@ msgstr "Anwendungen anzeigen"
msgid "Date and Time Settings"
msgstr "Einstellungen für Datum und Uhrzeit"
#: ../js/ui/dateMenu.js:109
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Kalender öffnen"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:175
#: ../js/ui/dateMenu.js:201
msgid "%A %B %e, %Y"
msgstr "%A, %e. %B %Y"
@ -974,8 +983,8 @@ msgstr "Ausschalten"
#: ../js/ui/endSessionDialog.js:82
msgid "Click Power Off to quit these applications and power off the system."
msgstr ""
"Klicken Sie auf »Ausschalten«, um diese Anwendungen zu beenden und das System "
"auszuschalten."
"Klicken Sie auf »Ausschalten«, um diese Anwendungen zu beenden und das "
"System auszuschalten."
#: ../js/ui/endSessionDialog.js:84
#, c-format
@ -1006,8 +1015,8 @@ msgstr "Neu starten"
#: ../js/ui/endSessionDialog.js:99
msgid "Click Restart to quit these applications and restart the system."
msgstr ""
"Klicken Sie auf »Neu starten«, um diese Anwendungen zu beenden und das System "
"neu zu starten."
"Klicken Sie auf »Neu starten«, um diese Anwendungen zu beenden und das "
"System neu zu starten."
#: ../js/ui/endSessionDialog.js:101
#, c-format
@ -1029,11 +1038,11 @@ msgstr "Installieren"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "Benachrichtigungsfeld"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Tastatur"
@ -1086,19 +1095,19 @@ msgstr "Quelle zeigen"
msgid "Web Page"
msgstr "Webseite"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "Öffnen"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "Entfernen"
#: ../js/ui/messageTray.js:2052
#: ../js/ui/messageTray.js:1540
msgid "Message Tray"
msgstr "Benachrichtigungsfeld"
#: ../js/ui/messageTray.js:2508
#: ../js/ui/messageTray.js:2547
msgid "System Information"
msgstr "Systeminformationen"
@ -1166,14 +1175,14 @@ msgstr "Bitte geben Sie einen Befehl ein:"
msgid "%A, %B %d"
msgstr "%A, %d. %B"
#: ../js/ui/screenShield.js:144
#: ../js/ui/screenShield.js:143
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d neue Nachricht"
msgstr[1] "%d neue Nachrichten"
#: ../js/ui/screenShield.js:146
#: ../js/ui/screenShield.js:145
#, c-format
msgid "%d new notification"
msgid_plural "%d new notifications"
@ -1212,7 +1221,7 @@ msgstr "Passwort"
msgid "Remember Password"
msgstr "An Passwort erinnern"
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
msgid "Unlock"
msgstr "Entsperren"
@ -1331,7 +1340,7 @@ msgstr "Tastatureinstellungen"
msgid "Mouse Settings"
msgstr "Maus-Einstellungen"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Klangeinstellungen"
@ -1390,11 +1399,11 @@ msgstr "Bitte geben Sie die auf dem Gerät angezeigte PIN ein."
msgid "OK"
msgstr "OK"
#: ../js/ui/status/keyboard.js:227
#: ../js/ui/status/keyboard.js:228
msgid "Show Keyboard Layout"
msgstr "Tastaturbelegung zeigen"
#: ../js/ui/status/keyboard.js:232
#: ../js/ui/status/keyboard.js:233
msgid "Region and Language Settings"
msgstr "Einstellungen für Region und Sprache"
@ -1617,7 +1626,7 @@ msgid "Unknown"
msgstr "Unbekannt"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Lautstärke"
@ -1625,67 +1634,63 @@ msgstr "Lautstärke"
msgid "Microphone"
msgstr "Mikrofon"
#: ../js/ui/unlockDialog.js:176
#: ../js/ui/unlockDialog.js:177
msgid "Log in as another user"
msgstr "Als anderer Benutzer anmelden"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "Verfügbar"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "Beschäftigt"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "Unsichtbar"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "Abwesend"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "Untätig"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "Nicht verfügbar"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
msgid "Switch User"
msgstr "Benutzer wechseln"
#: ../js/ui/userMenu.js:614
msgid "Switch Session"
msgstr "Sitzung wechseln"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:740
msgid "Notifications"
msgstr "Benachrichtigungen"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:748
msgid "System Settings"
msgstr "Systemeinstellungen"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "Benutzer wechseln"
#: ../js/ui/userMenu.js:761
msgid "Log Out"
msgstr "Abmelden"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:766
msgid "Lock"
msgstr "Sperren"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:781
msgid "Install Updates & Restart"
msgstr "Aktualisierungen installieren und neustarten"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:799
msgid "Your chat status will be set to busy"
msgstr "Ihr Anwesenheitsstatus wird auf »Beschäftigt« gesetzt"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:800
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1706,7 +1711,7 @@ msgstr "Anwendungen"
msgid "Search"
msgstr "Suchen"
#: ../js/ui/wanda.js:119
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1715,12 +1720,12 @@ msgstr ""
"Leider steht für heute keine Weisheit zur Verfügung:\n"
"%s"
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "%s, das Orakel, sagt"
#: ../js/ui/wanda.js:164
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "Ihr Lieblings-Osterei"
@ -1755,20 +1760,20 @@ msgstr[1] "%u Eingänge"
msgid "System Sounds"
msgstr "Systemklänge"
#: ../src/main.c:330
#: ../src/main.c:332
msgid "Print version"
msgstr "Version ausgeben"
#: ../src/main.c:336
#: ../src/main.c:338
msgid "Mode used by GDM for login screen"
msgstr "Der durch GDM im Anmeldefenster verwendete Modus"
#: ../src/main.c:342
#: ../src/main.c:344
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr ""
"Einen spezifischen Modus nutzen, wie z.B. »gdm» für den Anmeldebildschirm"
#: ../src/main.c:348
#: ../src/main.c:350
msgid "List possible modes"
msgstr "Die möglichen Modi auflisten"
@ -1797,6 +1802,9 @@ msgstr "Vorgabe"
msgid "Authentication dialog was dismissed by the user"
msgstr "Der Dialog zur Legitimierung wurde vom Benutzer geschlossen"
#~ msgid "Switch Session"
#~ msgstr "Sitzung wechseln"
#~ msgid "disabled OpenSearch providers"
#~ msgstr "deaktivierte OpenSearch-Provider"

135
po/el.po
View File

@ -4,8 +4,8 @@ msgstr ""
"Project-Id-Version: gnome-shell.po.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: 2012-09-25 00:06+0000\n"
"PO-Revision-Date: 2012-09-25 11:15+0200\n"
"POT-Creation-Date: 2012-10-16 20:41+0000\n"
"PO-Revision-Date: 2012-10-23 15:39+0200\n"
"Last-Translator: Tom Tryfonidis <tomtryf@gmail.com>\n"
"Language-Team: team@gnome.gr\n"
"Language: el\n"
@ -23,7 +23,7 @@ msgstr "Στιγμιότυπα οθόνης"
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
msgid "Record a screencast"
msgstr "Καταγραφή ενός βίντεο παρουσίασης"
msgstr "Καταγραφή ενός βίντεο οθόνης"
#: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System"
@ -182,21 +182,21 @@ msgstr "Ο τύπος του πληκτρολογίου που θα χρησιμ
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid "Framerate used for recording screencasts."
msgstr ""
"Ο ρυθμός καρέ που θα χρησιμοποιηθεί για την καταγραφή του βίντεο παρουσίασης."
"Ο ρυθμός καρέ που θα χρησιμοποιηθεί για την καταγραφή του βίντεο οθόνης."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
msgstr ""
"Ο ρυθμός καρέ του στιγμιότυπου που παράγεται από τον εγγραφέα βίντεο "
"παρουσίασης του GNOME Shell σε καρέ ανά δευτερόλεπτο."
"Ο ρυθμός καρέ του στιγμιότυπου που παράγεται από τον εγγραφέα βίντεο οθόνης "
"του GNOME Shell σε καρέ ανά δευτερόλεπτο."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "The gstreamer pipeline used to encode the screencast"
msgstr ""
"Ο δίαυλος του gstreamer που χρησιμοποιήθηκε για την κωδικοποίηση του βίντεο "
"παρουσίασης"
"οθόνης"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#, no-c-format
@ -229,8 +229,7 @@ msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
msgid "File extension used for storing the screencast"
msgstr ""
"Επέκταση αρχείου που θα χρησιμοποιηθεί για την αποθήκευση του βίντεο "
"παρουσίασης"
"Επέκταση αρχείου που θα χρησιμοποιηθεί για την αποθήκευση του βίντεο οθόνης"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
msgid ""
@ -238,7 +237,7 @@ msgid ""
"current date, and use this extension. It should be changed when recording to "
"a different container format."
msgstr ""
"Το όνομα αρχείου για τα καταγεγραμμένα βίντεο παρουσίασης θα είναι μοναδικό, "
"Το όνομα αρχείου για τα καταγεγραμμένα βίντεο οθόνης θα είναι μοναδικό, "
"βασισμένο στην τρέχουσα ημερομηνία και θα χρησιμοποιεί αυτή την επέκταση. Θα "
"πρέπει να αλλάζει όταν γίνεται εγγραφή σε διαφορετικό πρότυπο περιέκτη."
@ -259,11 +258,11 @@ msgstr ""
"Επιλέξτε μια επέκταση για να την ρυθμίσετε χρησιμοποιώντας το πλαίσιο "
"πολλαπλών επιλογών."
#: ../js/gdm/loginDialog.js:527
#: ../js/gdm/loginDialog.js:529
msgid "Session..."
msgstr "Συνεδρία..."
#: ../js/gdm/loginDialog.js:675
#: ../js/gdm/loginDialog.js:677
msgctxt "title"
msgid "Sign In"
msgstr "Σύνδεση"
@ -271,34 +270,33 @@ msgstr "Σύνδεση"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:742
#: ../js/gdm/loginDialog.js:736
msgid "Not listed?"
msgstr "Δεν είστε στη λίστα;"
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
msgid "Cancel"
msgstr "Ακύρωση"
#: ../js/gdm/loginDialog.js:900
#: ../js/gdm/loginDialog.js:894
msgctxt "button"
msgid "Sign In"
msgstr "Σύνδεση"
#: ../js/gdm/loginDialog.js:1239
#: ../js/gdm/loginDialog.js:1215
msgid "Login Window"
msgstr "Παράθυρο σύνδεσης"
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
#| msgid "Power Off"
msgid "Power"
msgstr "Ενέργεια"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:775
msgid "Suspend"
msgstr "Αναστολή"
@ -306,10 +304,10 @@ msgstr "Αναστολή"
msgid "Restart"
msgstr "Επανεκκίνηση"
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:774
msgid "Power Off"
msgstr "Τερματισμός"
msgstr "Απενεργοποίηση"
#: ../js/gdm/util.js:148
msgid "Authentication error"
@ -358,7 +356,7 @@ msgstr "ΡΥΘΜΙΣΕΙΣ"
msgid "New Window"
msgstr "Νέο παράθυρο"
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
msgid "Remove from Favorites"
msgstr "Αφαίρεση από τα αγαπημένα"
@ -522,16 +520,16 @@ msgstr "Αυτή η εβδομάδα"
msgid "Next week"
msgstr "Επόμενη εβδομάδα"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "Αφαιρούμενες συσκευές"
#: ../js/ui/components/autorunManager.js:575
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "Άνοιγμα με %s"
#: ../js/ui/components/autorunManager.js:601
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "Εξαγωγή"
@ -651,7 +649,7 @@ msgstr "Συγνώμη, αυτό δεν λειτούργησε. Παρακαλώ
#: ../js/ui/components/recorder.js:44
#, no-c-format
msgid "Screencast from %d %t"
msgstr "Βίντεο παρουσίαση από %d %t"
msgstr "Βίντεο οθόνης από %d %t"
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
#. system-users for now as Empathy does.
@ -905,7 +903,7 @@ msgstr "Επεξεργασία λογαριασμού"
msgid "Unknown reason"
msgstr "Άγνωστος λόγος"
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
msgid "Show Applications"
msgstr "Προβολή εφαρμογών"
@ -913,14 +911,14 @@ msgstr "Προβολή εφαρμογών"
msgid "Date and Time Settings"
msgstr "Ρυθμίσεις ώρας και ημερομηνίας"
#: ../js/ui/dateMenu.js:109
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Άνοιγμα ημερολογίου"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:175
#: ../js/ui/dateMenu.js:201
msgid "%A %B %e, %Y"
msgstr "%A %B %e, %Y"
@ -967,13 +965,13 @@ msgstr "Αποσύνδεση"
#: ../js/ui/endSessionDialog.js:81
msgctxt "title"
msgid "Power Off"
msgstr "Τερματισμός"
msgstr "Απενεργοποίηση"
#: ../js/ui/endSessionDialog.js:82
msgid "Click Power Off to quit these applications and power off the system."
msgstr ""
"Πατήστε Τερματισμός για να κλείσετε αυτές τις εφαρμογές και να "
"απενεργοποιήσετε το σύστημα."
"Πατήστε Απενεργοποίηση για να κλείσετε αυτές τις εφαρμογές και να "
"τερματίσετε το σύστημα."
#: ../js/ui/endSessionDialog.js:84
#, c-format
@ -994,7 +992,7 @@ msgstr "Επανεκκίνηση"
#: ../js/ui/endSessionDialog.js:92
msgctxt "button"
msgid "Power Off"
msgstr "Τερματισμός"
msgstr "Απενεργοποίηση"
#: ../js/ui/endSessionDialog.js:98
msgctxt "title"
@ -1027,11 +1025,11 @@ msgstr "Εγκατάσταση"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Λήψη και εγκατάσταση '%s' από το extensions.gnome.org ;"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "περιοχή"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Πληκτρολόγιο"
@ -1084,19 +1082,19 @@ msgstr "Προβολή πηγής"
msgid "Web Page"
msgstr "Ιστοσελίδα"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "Άνοιγμα"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "Αφαίρεση"
#: ../js/ui/messageTray.js:2055
#: ../js/ui/messageTray.js:1540
msgid "Message Tray"
msgstr "Περιοχή ειδοποιήσεων"
#: ../js/ui/messageTray.js:2511
#: ../js/ui/messageTray.js:2547
msgid "System Information"
msgstr "Πληροφορίες συστήματος"
@ -1160,14 +1158,14 @@ msgstr "Παρακαλώ πληκτρολογήστε μία εντολή:"
msgid "%A, %B %d"
msgstr "%A, %B %d"
#: ../js/ui/screenShield.js:144
#: ../js/ui/screenShield.js:143
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d νέο μήνυμα"
msgstr[1] "%d νέα μηνύματα"
#: ../js/ui/screenShield.js:146
#: ../js/ui/screenShield.js:145
#, c-format
msgid "%d new notification"
msgid_plural "%d new notifications"
@ -1206,7 +1204,7 @@ msgstr "Κωδικός"
msgid "Remember Password"
msgstr "Απομνημόνευση κωδικού"
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
msgid "Unlock"
msgstr "Ξεκλείδωμα"
@ -1325,7 +1323,7 @@ msgstr "Ρυθμίσεις πληκτρολογίου"
msgid "Mouse Settings"
msgstr "Ρυθμίσεις ποντικιού"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Ρυθμίσεις ήχου"
@ -1610,7 +1608,7 @@ msgid "Unknown"
msgstr "Άγνωστο"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Ένταση ήχου"
@ -1618,7 +1616,7 @@ msgstr "Ένταση ήχου"
msgid "Microphone"
msgstr "Μικρόφωνο"
#: ../js/ui/unlockDialog.js:176
#: ../js/ui/unlockDialog.js:177
msgid "Log in as another user"
msgstr "Είσοδος ως άλλος χρήστης"
@ -1646,39 +1644,35 @@ msgstr "Αδρανής"
msgid "Unavailable"
msgstr "Μη διαθέσιμος-η"
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "Αλλαγή χρήστη"
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "Αλλαγή συνεδρίας"
#: ../js/ui/userMenu.js:743
#: ../js/ui/userMenu.js:740
msgid "Notifications"
msgstr "Ειδοποιήσεις"
#: ../js/ui/userMenu.js:751
#: ../js/ui/userMenu.js:748
msgid "System Settings"
msgstr "Ρυθμίσεις συστήματος"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "Αλλαγή χρήστη"
#: ../js/ui/userMenu.js:761
msgid "Log Out"
msgstr "Αποσύνδεση"
#: ../js/ui/userMenu.js:769
#: ../js/ui/userMenu.js:766
msgid "Lock"
msgstr "Κλείδωμα"
#: ../js/ui/userMenu.js:784
#: ../js/ui/userMenu.js:781
msgid "Install Updates & Restart"
msgstr "Εγκατάσταση ενημερώσεων & επανεκκίνηση"
#: ../js/ui/userMenu.js:802
#: ../js/ui/userMenu.js:799
msgid "Your chat status will be set to busy"
msgstr "Η κατάσταση συνομιλίας σας θα ορισθεί σε απασχολημένος"
#: ../js/ui/userMenu.js:803
#: ../js/ui/userMenu.js:800
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1699,7 +1693,7 @@ msgstr "Εφαρμογές"
msgid "Search"
msgstr "Αναζήτηση"
#: ../js/ui/wanda.js:119
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1708,12 +1702,12 @@ msgstr ""
"Συγγνώμη, κανένα απόφθεγμα για εσάς σήμερα:\n"
"%s"
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "%s ο Προφήτης λέει"
#: ../js/ui/wanda.js:164
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "Το αγαπημένο σας Easter Egg"
@ -1748,20 +1742,20 @@ msgstr[1] "%u είσοδοι"
msgid "System Sounds"
msgstr "Ήχοι συστήματος"
#: ../src/main.c:330
#: ../src/main.c:332
msgid "Print version"
msgstr "Εκτύπωση έκδοσης"
#: ../src/main.c:336
#: ../src/main.c:338
msgid "Mode used by GDM for login screen"
msgstr "Λειτουργία που απαιτείται από το GDM για την οθόνη σύνδεσης"
#: ../src/main.c:342
#: ../src/main.c:344
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr ""
"Χρησιμοποιήστε μια συγκεκριμένη λειτουργία, π.χ \"gdm\" για την οθόνη εισόδου"
#: ../src/main.c:348
#: ../src/main.c:350
msgid "List possible modes"
msgstr "Λίστα πιθανών λειτουργιών"
@ -1790,6 +1784,9 @@ msgstr "Προεπιλογή"
msgid "Authentication dialog was dismissed by the user"
msgstr "Το παράθυρο πιστοποίησης έκλεισε από τον χρήστη"
#~ msgid "Switch Session"
#~ msgstr "Αλλαγή συνεδρίας"
#~ msgid "disabled OpenSearch providers"
#~ msgstr "απενεργοποιημένοι πάροχοι OpenSearch"

View File

@ -3,14 +3,16 @@
# This file is distributed under the same license as the gnome-shell package.
# Philip Withnall <philip@tecnocode.co.uk>, 2009, 2010.
# Bruce Cowan <bruce@bcowan.me.uk>, 2010, 2011, 2012.
# Chris Leonard <cjlhomeaddress@gmail.com>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-09-22 11:16+0100\n"
"PO-Revision-Date: 2012-09-22 11:18+0100\n"
"Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
"Language-Team: British English <en@li.org>\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-10-11 15:26+0000\n"
"PO-Revision-Date: 2012-09-27 23:56-0400\n"
"Last-Translator: Chris Leonard <cjlhomeaddress@gmail.com>\n"
"Language-Team: Sugar Labs\n"
"Language: en_GB\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -211,8 +213,7 @@ msgstr ""
"to an empty value, the default pipeline will be used. This is currently "
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
"used as a placeholder for a guess at the optimal thread count on the "
"system."
"used as a placeholder for a guess at the optimal thread count on the system."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
msgid "File extension used for storing the screencast"
@ -241,11 +242,11 @@ msgstr "Extension"
msgid "Select an extension to configure using the combobox above."
msgstr "Select an extension to configure using the combobox above."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:529
msgid "Session..."
msgstr "Session…"
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:677
msgctxt "title"
msgid "Sign In"
msgstr "Sign In"
@ -253,37 +254,42 @@ msgstr "Sign In"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:736
msgid "Not listed?"
msgstr "Not listed?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "Cancel"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:894
msgctxt "button"
msgid "Sign In"
msgstr "Sign In"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1215
msgid "Login Window"
msgstr "Login Window"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "Power"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:775
msgid "Suspend"
msgstr "Suspend"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "Restart"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:774
msgid "Power Off"
msgstr "Power Off"
@ -334,7 +340,7 @@ msgstr "SETTINGS"
msgid "New Window"
msgstr "New Window"
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
msgid "Remove from Favorites"
msgstr "Remove from Favourites"
@ -498,16 +504,16 @@ msgstr "This week"
msgid "Next week"
msgstr "Next week"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "Removable Devices"
#: ../js/ui/components/autorunManager.js:575
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "Open with %s"
#: ../js/ui/components/autorunManager.js:601
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "Eject"
@ -878,7 +884,7 @@ msgstr "Edit account"
msgid "Unknown reason"
msgstr "Unknown reason"
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
msgid "Show Applications"
msgstr "Show Applications"
@ -886,14 +892,14 @@ msgstr "Show Applications"
msgid "Date and Time Settings"
msgstr "Date and Time Settings"
#: ../js/ui/dateMenu.js:109
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Open Calendar"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:175
#: ../js/ui/dateMenu.js:190
msgid "%A %B %e, %Y"
msgstr "%A %e %B, %Y"
@ -994,11 +1000,11 @@ msgstr "Install"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Download and install '%s' from extensions.gnome.org?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "tray"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Keyboard"
@ -1051,19 +1057,19 @@ msgstr "View Source"
msgid "Web Page"
msgstr "Web Page"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "Open"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "Remove"
#: ../js/ui/messageTray.js:2050
#: ../js/ui/messageTray.js:1540
msgid "Message Tray"
msgstr "Message Tray"
#: ../js/ui/messageTray.js:2506
#: ../js/ui/messageTray.js:2547
msgid "System Information"
msgstr "System Information"
@ -1127,14 +1133,14 @@ msgstr "Please enter a command:"
msgid "%A, %B %d"
msgstr "%A, %d %B"
#: ../js/ui/screenShield.js:144
#: ../js/ui/screenShield.js:143
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d new message"
msgstr[1] "%d new messages"
#: ../js/ui/screenShield.js:146
#: ../js/ui/screenShield.js:145
#, c-format
msgid "%d new notification"
msgid_plural "%d new notifications"
@ -1291,7 +1297,7 @@ msgstr "Keyboard Settings"
msgid "Mouse Settings"
msgstr "Mouse Settings"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Sound Settings"
@ -1576,7 +1582,7 @@ msgid "Unknown"
msgstr "Unknown"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Volume"
@ -1588,63 +1594,59 @@ msgstr "Microphone"
msgid "Log in as another user"
msgstr "Log in as another user"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "Available"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "Busy"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "Invisible"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "Away"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "Idle"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "Unavailable"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
msgid "Switch User"
msgstr "Switch User"
#: ../js/ui/userMenu.js:614
msgid "Switch Session"
msgstr "Switch Session"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:740
msgid "Notifications"
msgstr "Notifications"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:748
msgid "System Settings"
msgstr "System Settings"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "Switch User"
#: ../js/ui/userMenu.js:761
msgid "Log Out"
msgstr "Log Out"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:766
msgid "Lock"
msgstr "Lock"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:781
msgid "Install Updates & Restart"
msgstr "Install Updates & Restart"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:799
msgid "Your chat status will be set to busy"
msgstr "Your chat status will be set to busy"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:800
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1664,7 +1666,7 @@ msgstr "Applications"
msgid "Search"
msgstr "Search"
#: ../js/ui/wanda.js:119
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1673,12 +1675,12 @@ msgstr ""
"Sorry, no wisdom for you today:\n"
"%s"
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "%s the Oracle says"
#: ../js/ui/wanda.js:164
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "Your favourite Easter Egg"
@ -1713,19 +1715,19 @@ msgstr[1] "%u Inputs"
msgid "System Sounds"
msgstr "System Sounds"
#: ../src/main.c:330
#: ../src/main.c:332
msgid "Print version"
msgstr "Print version"
#: ../src/main.c:336
#: ../src/main.c:338
msgid "Mode used by GDM for login screen"
msgstr "Mode used by GDM for login screen"
#: ../src/main.c:342
#: ../src/main.c:344
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "Use a specific mode, e.g. \"gdm\" for login screen"
#: ../src/main.c:348
#: ../src/main.c:350
msgid "List possible modes"
msgstr "List possible modes"
@ -1754,6 +1756,9 @@ msgstr "Default"
msgid "Authentication dialog was dismissed by the user"
msgstr "Authentication dialogue was dismissed by the user"
#~ msgid "Switch Session"
#~ msgstr "Switch Session"
#~ msgid "disabled OpenSearch providers"
#~ msgstr "disabled OpenSearch providers"

159
po/es.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: 2012-09-25 00:06+0000\n"
"PO-Revision-Date: 2012-09-25 10:26+0200\n"
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
"PO-Revision-Date: 2012-10-16 11:06+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Español <gnome-es-list@gnome.org>\n"
"Language: \n"
@ -37,6 +37,16 @@ msgstr "Sistema"
msgid "Show the message tray"
msgstr "Mostrar la bandeja de mensajes"
#: ../data/50-gnome-shell-system.xml.in.h:3
#| msgid "Show Applications"
msgid "Show all applications"
msgstr "Mostrar todas las aplicaciones"
#: ../data/50-gnome-shell-system.xml.in.h:4
#| msgid "Keybinding to open the application menu"
msgid "Open the application menu"
msgstr "Abrir el menú de la aplicación"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "GNOME Shell"
@ -155,34 +165,47 @@ msgid "Keybinding to open the application menu."
msgstr "Asociación de teclas para abrir el menú de la aplicación."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
#| msgid "Keybinding to open the application menu"
msgid "Keybinding to open the \"Show Applications\" view"
msgstr "Asociación de teclas para la vista «Mostrar aplicaciones»"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
#| msgid "Keybinding to open the application menu."
msgid ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr ""
"Asociación de teclas para abrir la vista «Mostrar aplicaciones» de la vista "
"de actividades."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "Keybinding to toggle the visibility of the message tray"
msgstr "Asociación de teclas cambiar la visibilidad de la bandeja de mensajes"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to toggle the visibility of the message tray."
msgstr "Asociación de teclas cambiar la visibilidad de la bandeja de mensajes."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to toggle the screen recorder"
msgstr "Asociación de teclas cambiar el grabador de pantalla"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to start/stop the builtin screen recorder."
msgstr "Asociación de teclas para iniciar/detener el grabador de pantalla."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid "Which keyboard to use"
msgstr "Qué teclado usar"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "The type of keyboard to use."
msgstr "El tipo de teclado que usar."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Framerate used for recording screencasts."
msgstr "Tasa de fotogramas usada para grabar «screencast»."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -190,11 +213,11 @@ msgstr ""
"La tasa de fotogramas de la grabación resultante grabada por el grabador de "
"«screencast» de GNOME Shell, en fotogramas por segundo."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "La tubería de gstreamer usada para codificar el «screencast»"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -220,11 +243,11 @@ msgstr ""
"threads=%T ! queue ! webmmux» y graba en WEBM usando el códec VP8. Se usa %T "
"como marcador de posición para el número de hilos óptimos en el sistema."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid "File extension used for storing the screencast"
msgstr "Extensión de archivo que usar para almacenar los «screencast»"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@ -248,11 +271,11 @@ msgid "Select an extension to configure using the combobox above."
msgstr ""
"Seleccione una extensión que configurar usando la caja combinada de arriba."
#: ../js/gdm/loginDialog.js:527
#: ../js/gdm/loginDialog.js:529
msgid "Session..."
msgstr "Sesión…"
#: ../js/gdm/loginDialog.js:675
#: ../js/gdm/loginDialog.js:677
msgctxt "title"
msgid "Sign In"
msgstr "Iniciar sesión"
@ -260,34 +283,33 @@ msgstr "Iniciar sesión"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:742
#: ../js/gdm/loginDialog.js:736
msgid "Not listed?"
msgstr "¿No está en la lista?"
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
msgid "Cancel"
msgstr "Cancelar"
#: ../js/gdm/loginDialog.js:900
#: ../js/gdm/loginDialog.js:894
msgctxt "button"
msgid "Sign In"
msgstr "Iniciar sesión"
#: ../js/gdm/loginDialog.js:1239
#: ../js/gdm/loginDialog.js:1215
msgid "Login Window"
msgstr "Ventana de inicio de sesión"
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
#| msgid "Power Off"
msgid "Power"
msgstr "Energía"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:775
msgid "Suspend"
msgstr "Suspender"
@ -295,8 +317,8 @@ msgstr "Suspender"
msgid "Restart"
msgstr "Reiniciar"
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:774
msgid "Power Off"
msgstr "Apagar"
@ -347,7 +369,7 @@ msgstr "CONFIGURACIÓN"
msgid "New Window"
msgstr "Ventana nueva"
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
msgid "Remove from Favorites"
msgstr "Quitar de los favoritos"
@ -511,16 +533,16 @@ msgstr "Esta semana"
msgid "Next week"
msgstr "La semana que viene"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "Dispositivos extraíbles"
#: ../js/ui/components/autorunManager.js:575
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "Abrir con %s"
#: ../js/ui/components/autorunManager.js:601
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "Expulsar"
@ -894,7 +916,7 @@ msgstr "Editar cuenta"
msgid "Unknown reason"
msgstr "Razón desconocida"
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
msgid "Show Applications"
msgstr "Mostrar aplicaciones"
@ -902,14 +924,14 @@ msgstr "Mostrar aplicaciones"
msgid "Date and Time Settings"
msgstr "Ajustes de hora y fecha"
#: ../js/ui/dateMenu.js:109
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Abrir calendario"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:175
#: ../js/ui/dateMenu.js:201
msgid "%A %B %e, %Y"
msgstr "%A, %e de %B de %Y"
@ -1013,11 +1035,11 @@ msgstr "Instalar"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "bandeja"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Teclado"
@ -1070,19 +1092,19 @@ msgstr "Ver fuente"
msgid "Web Page"
msgstr "Página web"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "Abrir"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "Quitar"
#: ../js/ui/messageTray.js:2055
#: ../js/ui/messageTray.js:1540
msgid "Message Tray"
msgstr "Bandeja de mensajes"
#: ../js/ui/messageTray.js:2511
#: ../js/ui/messageTray.js:2547
msgid "System Information"
msgstr "Información del sistema"
@ -1146,14 +1168,14 @@ msgstr "Introduzca un comando:"
msgid "%A, %B %d"
msgstr "%A, %d de %B"
#: ../js/ui/screenShield.js:144
#: ../js/ui/screenShield.js:143
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d mensaje nuevo"
msgstr[1] "%d mensajes nuevos"
#: ../js/ui/screenShield.js:146
#: ../js/ui/screenShield.js:145
#, c-format
msgid "%d new notification"
msgid_plural "%d new notifications"
@ -1192,7 +1214,7 @@ msgstr "Contraseña"
msgid "Remember Password"
msgstr "Recordar contraseña"
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
msgid "Unlock"
msgstr "Desbloquear"
@ -1310,7 +1332,7 @@ msgstr "Configuración del teclado"
msgid "Mouse Settings"
msgstr "Ajustes del ratón…"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Configuración del sonido"
@ -1595,7 +1617,7 @@ msgid "Unknown"
msgstr "Desconocido"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Volumen"
@ -1603,7 +1625,7 @@ msgstr "Volumen"
msgid "Microphone"
msgstr "Micrófono"
#: ../js/ui/unlockDialog.js:176
#: ../js/ui/unlockDialog.js:177
msgid "Log in as another user"
msgstr "Iniciar sesión como otro usuario"
@ -1631,39 +1653,35 @@ msgstr "Inactivo"
msgid "Unavailable"
msgstr "No disponible"
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "Cambiar de usuario"
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "Cambiar de sesión"
#: ../js/ui/userMenu.js:743
#: ../js/ui/userMenu.js:740
msgid "Notifications"
msgstr "Notificaciones"
#: ../js/ui/userMenu.js:751
#: ../js/ui/userMenu.js:748
msgid "System Settings"
msgstr "Configuración del sistema"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "Cambiar de usuario"
#: ../js/ui/userMenu.js:761
msgid "Log Out"
msgstr "Cerrar la sesión"
#: ../js/ui/userMenu.js:769
#: ../js/ui/userMenu.js:766
msgid "Lock"
msgstr "Bloquear"
#: ../js/ui/userMenu.js:784
#: ../js/ui/userMenu.js:781
msgid "Install Updates & Restart"
msgstr "Instalar actualizaciones y reiniciar"
#: ../js/ui/userMenu.js:802
#: ../js/ui/userMenu.js:799
msgid "Your chat status will be set to busy"
msgstr "Su estado del chat se establecerá a «ocupado»"
#: ../js/ui/userMenu.js:803
#: ../js/ui/userMenu.js:800
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1672,19 +1690,19 @@ msgstr ""
"chat. Su estado en línea se ha ajustado para que otros sepan que puede no "
"leer sus mensajes."
#: ../js/ui/viewSelector.js:85
#: ../js/ui/viewSelector.js:87
msgid "Windows"
msgstr "Ventanas"
#: ../js/ui/viewSelector.js:89
#: ../js/ui/viewSelector.js:91
msgid "Applications"
msgstr "Aplicaciones"
#: ../js/ui/viewSelector.js:93
#: ../js/ui/viewSelector.js:95
msgid "Search"
msgstr "Buscar"
#: ../js/ui/wanda.js:119
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1693,12 +1711,12 @@ msgstr ""
"Hoy no tiene ningún mensaje:\n"
"%s"
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "%s el oráculo dice"
#: ../js/ui/wanda.js:164
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "Su mensaje oculto favorito"
@ -1733,21 +1751,21 @@ msgstr[1] "%u entradas"
msgid "System Sounds"
msgstr "Sonidos del sistema"
#: ../src/main.c:330
#: ../src/main.c:332
msgid "Print version"
msgstr "Imprimir versión"
#: ../src/main.c:336
#: ../src/main.c:338
msgid "Mode used by GDM for login screen"
msgstr "Modo usado por GDM para la pantalla de inicio"
#: ../src/main.c:342
#: ../src/main.c:344
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr ""
"Usar un modo específico, por ejemplo, «gdm» para la pantalla de inicio de "
"sesión"
#: ../src/main.c:348
#: ../src/main.c:350
msgid "List possible modes"
msgstr "Listar los modos posibles"
@ -1776,6 +1794,9 @@ msgstr "Predeterminada"
msgid "Authentication dialog was dismissed by the user"
msgstr "El usuario rechazó el diálogo de autenticación"
#~ msgid "Switch Session"
#~ msgstr "Cambiar de sesión"
#~ msgid "disabled OpenSearch providers"
#~ msgstr "proveedores OpenSearch desactivados"

425
po/fa.po
View File

@ -9,8 +9,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: 2012-09-06 15:33+0000\n"
"PO-Revision-Date: 2012-09-06 20:44+0330\n"
"POT-Creation-Date: 2012-10-04 06:59+0000\n"
"PO-Revision-Date: 2012-10-12 20:16+0330\n"
"Last-Translator: Arash Mousavi <mousavi.arash@gmail.com>\n"
"Language-Team: Persian\n"
"Language: fa\n"
@ -20,6 +20,24 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
"X-Poedit-SourceCharset: utf-8\n"
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
msgid "Screenshots"
msgstr "عکس‌های صفحه"
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
msgid "Record a screencast"
msgstr "ضبط یک تصویربرداری از صفحه‌نمایش"
#: ../data/50-gnome-shell-system.xml.in.h:1
#| msgid "File System"
msgid "System"
msgstr "سیستم"
#: ../data/50-gnome-shell-system.xml.in.h:2
#| msgid "Message Tray"
msgid "Show the message tray"
msgstr "نمایش سینی پیام"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "پوسته‌ی گنوم"
@ -96,18 +114,14 @@ msgid ""
msgstr "برنامه‌های مشابه این شناسه‌ها در قسمت مورد پسندها نمایش داده می‌شود."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
msgid "disabled OpenSearch providers"
msgstr "غیرفعال کردنِ تامین‌کننده‌گان OpenSearch"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
msgid "History for command (Alt-F2) dialog"
msgstr "تاریخچه‌ی فرمان برای محاوره‌ی (Alt-F2)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
msgid "History for the looking glass dialog"
msgstr "تاریخچه برای نما محاوره شیشه‌ای"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
msgid ""
"Internally used to store the last IM presence explicitly set by the user. "
"The value here is from the TpConnectionPresenceType enumeration."
@ -115,7 +129,7 @@ msgstr ""
"به‌طور داخلی جهت ذخیره‌ی آخرین وضعیتِ حاضرِ ثبت شده‌ی توسط کاربر استفاده می‌شود. "
"مقدار اینجا از محل محاسبه‌ی TpConnectionPresenceType است."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
msgid ""
"Internally used to store the last session presence status for the user. The "
"value here is from the GsmPresenceStatus enumeration."
@ -123,53 +137,51 @@ msgstr ""
"به‌طور داخلی برای ذخیره آخرین نشستی که کاربر در آن وضعیت حاضر داشته است "
"استفاده می‌شود. مقدار اینجا از محاسبه GsmPresenceStatus است."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
msgid "Show the week date in the calendar"
msgstr "نمایش هفته در تقویم"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
msgid "If true, display the ISO week date in the calendar."
msgstr "در صورت تنظیم بر روی «درست»، تاریخ هفتگی ایزو را در تقویم نشان می‌دهد."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
msgid "Keybinding to open the application menu"
msgstr "کلید مقید برای باز کردن منو برنامه"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
msgid "Keybinding to open the application menu."
msgstr "کلید مقید برای باز کردن منو برنامه."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
#| msgid "Keybinding to toggle the screen recorder"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
msgid "Keybinding to toggle the visibility of the message tray"
msgstr "کلید مقید برای تغییر وضعیت نمایش سینی پیام‌ها"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
#| msgid "Keybinding to toggle the screen recorder"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid "Keybinding to toggle the visibility of the message tray."
msgstr "کلید مقید برای تغییر وضعیت نمایش سینی پیام‌ها."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "Keybinding to toggle the screen recorder"
msgstr "کلید مقید برای تغییر وضعیت ضبط کننده‌ی صفحه"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to start/stop the builtin screen recorder."
msgstr "کلید مقید برای شروع/توقف ضبط کننده‌ی صفحه پیش ساخته."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Which keyboard to use"
msgstr "استفاده از کدام صفحه‌کلید"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "The type of keyboard to use."
msgstr "نوع صفحه‌کلید جهت استفاده"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid "Framerate used for recording screencasts."
msgstr "سرعت فریم استفاده شده در تصویربرداری از صفحه‌نمایش."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -177,12 +189,23 @@ msgstr ""
"سرعت فریم حاصل از تصویربرداری از صفحه نمایش با استفاده از ضبط کننده نمایشگر "
"پوسته‌ی گنوم بر اساس فریم بر ثانیه"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "مجرای ارتباطی gstreamer برای کدگذاری تصویربرداری از صفحه نمایش"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#, no-c-format
#| msgid ""
#| "Sets the GStreamer pipeline used to encode recordings. It follows the "
#| "syntax used for gst-launch. The pipeline should have an unconnected sink "
#| "pad where the recorded video is recorded. It will normally have a "
#| "unconnected source pad; output from that pad will be written into the "
#| "output file. However the pipeline can also take care of its own output - "
#| "this might be used to send the output to an icecast server via shout2send "
#| "or similar. When unset or set to an empty value, the default pipeline "
#| "will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! "
#| "queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a "
#| "placeholder for a guess at the optimal thread count on the system."
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
@ -191,9 +214,9 @@ msgid ""
"pipeline can also take care of its own output - this might be used to send "
"the output to an icecast server via shout2send or similar. When unset or set "
"to an empty value, the default pipeline will be used. This is currently "
"'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM "
"using the VP8 codec. %T is used as a placeholder for a guess at the optimal "
"thread count on the system."
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
"used as a placeholder for a guess at the optimal thread count on the system."
msgstr ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
@ -202,15 +225,15 @@ msgstr ""
"pipeline can also take care of its own output - this might be used to send "
"the output to an icecast server via shout2send or similar. When unset or set "
"to an empty value, the default pipeline will be used. This is currently "
"'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM "
"using the VP8 codec. %T is used as a placeholder for a guess at the optimal "
"thread count on the system."
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
"used as a placeholder for a guess at the optimal thread count on the system."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
msgid "File extension used for storing the screencast"
msgstr "پسوند پرونده‌ی قابل استفاده برای ذخیره تصویربرداری از صفحه‌نمایش"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@ -226,7 +249,6 @@ msgid "There was an error loading the preferences dialog for %s:"
msgstr "خطایی هنگام باز کردن محاوره‌ی ترجیحات برای %s رُخ داد:"
#: ../js/extensionPrefs/main.js:164
#| msgid "<b>Extension</b>"
msgid "Extension"
msgstr "افزونه"
@ -234,11 +256,11 @@ msgstr "افزونه"
msgid "Select an extension to configure using the combobox above."
msgstr "با استفاده از جعبه‌ی بالا یک افزونه برای پیکربندی انتخاب کنید."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:528
msgid "Session..."
msgstr "نشست..."
#: ../js/gdm/loginDialog.js:675
#: ../js/gdm/loginDialog.js:676
msgctxt "title"
msgid "Sign In"
msgstr "ورود"
@ -246,47 +268,58 @@ msgstr "ورود"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:742
#: ../js/gdm/loginDialog.js:743
msgid "Not listed?"
msgstr "فهرست نشده؟"
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:135
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "لغو"
#: ../js/gdm/loginDialog.js:900
#: ../js/gdm/loginDialog.js:901
msgctxt "button"
msgid "Sign In"
msgstr "ورود"
#: ../js/gdm/loginDialog.js:1239
#: ../js/gdm/loginDialog.js:1240
msgid "Login Window"
msgstr "پنجره‌ی ورود به سیستم"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:657 ../js/ui/userMenu.js:661
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
#| msgid "Power Off"
msgid "Power"
msgstr "انرژی"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:775
msgid "Suspend"
msgstr "تعلیق"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "راه‌اندازی مجدد"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:659 ../js/ui/userMenu.js:661
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:774
msgid "Power Off"
msgstr "خاموش کردن"
#: ../js/gdm/util.js:148
#| msgid "Authentication Required"
msgid "Authentication error"
msgstr "خطا تایید هویت"
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
#: ../js/gdm/util.js:247
#: ../js/gdm/util.js:265
msgid "(or swipe finger)"
msgstr "(یا انگشتتان را بکشید)"
#: ../js/gdm/util.js:272
#: ../js/gdm/util.js:290
#, c-format
msgid "(e.g., user or %s)"
msgstr "(برای مثال, کاربر یا %s)"
@ -487,16 +520,16 @@ msgstr "این هفته"
msgid "Next week"
msgstr "هفته آینده"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "دستگاه‌های جدا شدنی"
#: ../js/ui/components/autorunManager.js:571
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "باز کردن با %s"
#: ../js/ui/components/autorunManager.js:597
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "بیرون دادن"
@ -640,38 +673,46 @@ msgstr "درخواست اشتراک"
msgid "Connection error"
msgstr "خطا اتصال"
#: ../js/ui/components/telepathyClient.js:491
msgid "Unmute"
msgstr "باصدا"
#: ../js/ui/components/telepathyClient.js:491
msgid "Mute"
msgstr "بی‌صدا"
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
#: ../js/ui/components/telepathyClient.js:934
#: ../js/ui/components/telepathyClient.js:948
#, no-c-format
msgid "Sent at <b>%X</b> on <b>%A</b>"
msgstr "ارسال در <b>%OH:%OM</b> در <b>%A</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25",
#. shown when you get a chat message in the same year.
#: ../js/ui/components/telepathyClient.js:940
#: ../js/ui/components/telepathyClient.js:954
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
msgstr "ارسال در <b>%A</b>, <b>%B %d</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
#. shown when you get a chat message in a different year.
#: ../js/ui/components/telepathyClient.js:945
#: ../js/ui/components/telepathyClient.js:959
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
msgstr "ارسال در <b>%A</b>, <b>%B %d</b>, %Y"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: ../js/ui/components/telepathyClient.js:974
#: ../js/ui/components/telepathyClient.js:988
#, c-format
msgid "%s is now known as %s"
msgstr "%s با عنوان %s شناخته می‌شود"
msgstr "%s با عنوان %s شناخته می‌شود"
#. translators: argument is a room name like
#. * room@jabber.org for example.
#: ../js/ui/components/telepathyClient.js:1074
#: ../js/ui/components/telepathyClient.js:1088
#, c-format
msgid "Invitation to %s"
msgstr "دعوتنامه به %s"
@ -679,42 +720,42 @@ msgstr "دعوتنامه به %s"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example.
#: ../js/ui/components/telepathyClient.js:1082
#: ../js/ui/components/telepathyClient.js:1096
#, c-format
msgid "%s is inviting you to join %s"
msgstr "%s از شما دعوت می‌کند که به %s بپیوندید"
msgstr "%s از شما دعوت می‌کند که به %s بپیوندید"
#: ../js/ui/components/telepathyClient.js:1084
#: ../js/ui/components/telepathyClient.js:1163
#: ../js/ui/components/telepathyClient.js:1226
#: ../js/ui/components/telepathyClient.js:1098
#: ../js/ui/components/telepathyClient.js:1177
#: ../js/ui/components/telepathyClient.js:1240
msgid "Decline"
msgstr "رد کردن"
#: ../js/ui/components/telepathyClient.js:1085
#: ../js/ui/components/telepathyClient.js:1164
#: ../js/ui/components/telepathyClient.js:1227
#: ../js/ui/components/telepathyClient.js:1099
#: ../js/ui/components/telepathyClient.js:1178
#: ../js/ui/components/telepathyClient.js:1241
msgid "Accept"
msgstr "پذیرفتن"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/components/telepathyClient.js:1115
#: ../js/ui/components/telepathyClient.js:1129
#, c-format
msgid "Video call from %s"
msgstr "تماس ویدئویی از طریق %s"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/components/telepathyClient.js:1118
#: ../js/ui/components/telepathyClient.js:1132
#, c-format
msgid "Call from %s"
msgstr "تماس از طرف %s"
#: ../js/ui/components/telepathyClient.js:1123
#: ../js/ui/components/telepathyClient.js:1137
#: ../js/ui/status/bluetooth.js:346
msgid "Reject"
msgstr "رد کردن"
#. translators: this is a button label (verb), not a noun
#: ../js/ui/components/telepathyClient.js:1125
#: ../js/ui/components/telepathyClient.js:1139
msgid "Answer"
msgstr "پاسخگویی"
@ -723,111 +764,111 @@ msgstr "پاسخگویی"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#.
#: ../js/ui/components/telepathyClient.js:1157
#: ../js/ui/components/telepathyClient.js:1171
#, c-format
msgid "%s is sending you %s"
msgstr "%s در حال ارسال %s به شما است"
msgstr "%s در حال ارسال %s به شما است"
#. To translators: The parameter is the contact's alias
#: ../js/ui/components/telepathyClient.js:1192
#: ../js/ui/components/telepathyClient.js:1206
#, c-format
msgid "%s would like permission to see when you are online"
msgstr "%s اجازه دسترسی برای دیدن زمان‌هایی که شما برخط هستید را دارد"
msgstr "%s اجازه دسترسی برای دیدن زمان‌هایی که شما برخط هستید را دارد"
#: ../js/ui/components/telepathyClient.js:1284
#: ../js/ui/components/telepathyClient.js:1298
msgid "Network error"
msgstr "خطا شبکه"
#: ../js/ui/components/telepathyClient.js:1286
#: ../js/ui/components/telepathyClient.js:1300
msgid "Authentication failed"
msgstr "تایید هویت شکست خورد"
#: ../js/ui/components/telepathyClient.js:1288
#: ../js/ui/components/telepathyClient.js:1302
msgid "Encryption error"
msgstr "خطا رمزنگاری"
#: ../js/ui/components/telepathyClient.js:1290
#: ../js/ui/components/telepathyClient.js:1304
msgid "Certificate not provided"
msgstr "گواهینامه ارائه نشده"
#: ../js/ui/components/telepathyClient.js:1292
#: ../js/ui/components/telepathyClient.js:1306
msgid "Certificate untrusted"
msgstr "گواهینامه نامعتبر است"
#: ../js/ui/components/telepathyClient.js:1294
#: ../js/ui/components/telepathyClient.js:1308
msgid "Certificate expired"
msgstr "گواهینامه منقضی شده"
#: ../js/ui/components/telepathyClient.js:1296
#: ../js/ui/components/telepathyClient.js:1310
msgid "Certificate not activated"
msgstr "گواهینامه فعال نشده"
#: ../js/ui/components/telepathyClient.js:1298
#: ../js/ui/components/telepathyClient.js:1312
msgid "Certificate hostname mismatch"
msgstr "نام کارگزار گواهینامه نامنطبق است"
#: ../js/ui/components/telepathyClient.js:1300
#: ../js/ui/components/telepathyClient.js:1314
msgid "Certificate fingerprint mismatch"
msgstr "اثرانگشت گواهینامه نامنطبق است"
#: ../js/ui/components/telepathyClient.js:1302
#: ../js/ui/components/telepathyClient.js:1316
msgid "Certificate self-signed"
msgstr "گواهینامه خود-امضا شده"
#: ../js/ui/components/telepathyClient.js:1304
#: ../js/ui/components/telepathyClient.js:1318
msgid "Status is set to offline"
msgstr "وضعیت بر روی برون خط تنظیم شده"
#: ../js/ui/components/telepathyClient.js:1306
#: ../js/ui/components/telepathyClient.js:1320
msgid "Encryption is not available"
msgstr "رمزنگاری موجود نیست"
#: ../js/ui/components/telepathyClient.js:1308
#: ../js/ui/components/telepathyClient.js:1322
msgid "Certificate is invalid"
msgstr "گواهینامه نامعتبر است"
#: ../js/ui/components/telepathyClient.js:1310
#: ../js/ui/components/telepathyClient.js:1324
msgid "Connection has been refused"
msgstr "اتصال رد شده است"
#: ../js/ui/components/telepathyClient.js:1312
#: ../js/ui/components/telepathyClient.js:1326
msgid "Connection can't be established"
msgstr "اتصال نمی‌تواند برقرار شود"
#: ../js/ui/components/telepathyClient.js:1314
#: ../js/ui/components/telepathyClient.js:1328
msgid "Connection has been lost"
msgstr "اتصال از دست رفته است"
#: ../js/ui/components/telepathyClient.js:1316
#: ../js/ui/components/telepathyClient.js:1330
msgid "This account is already connected to the server"
msgstr "این حساب قبلا به کارگزار متصل شده است"
#: ../js/ui/components/telepathyClient.js:1318
#: ../js/ui/components/telepathyClient.js:1332
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr ""
"اتصال توسط یک اتصال جدید که از منبع مشابه استفاده می‌کند، جایگزین شده است"
#: ../js/ui/components/telepathyClient.js:1320
#: ../js/ui/components/telepathyClient.js:1334
msgid "The account already exists on the server"
msgstr "حساب از قبل بر روی کارگزار وجود دارد"
#: ../js/ui/components/telepathyClient.js:1322
#: ../js/ui/components/telepathyClient.js:1336
msgid "Server is currently too busy to handle the connection"
msgstr "کارگزار در حال حاضر برای دست گرفتن اتصال بسیار مشغول است"
#: ../js/ui/components/telepathyClient.js:1324
#: ../js/ui/components/telepathyClient.js:1338
msgid "Certificate has been revoked"
msgstr "گواهینامه لغو شده است"
#: ../js/ui/components/telepathyClient.js:1326
#: ../js/ui/components/telepathyClient.js:1340
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"گواهینامه از الگوریتم رمزی نامطمئنی استفاده می‌کند یا از نظر cryptography "
"ضعیف است"
#: ../js/ui/components/telepathyClient.js:1328
#: ../js/ui/components/telepathyClient.js:1342
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -835,31 +876,30 @@ msgstr ""
"اندازه گواهینامه کارگزار، یا عمق حلقه‌ی گواهینامه کارگزار، از محدودیت اعمال "
"شده توسط کتابخانه cryptography تجاوز کرد"
#: ../js/ui/components/telepathyClient.js:1330
#: ../js/ui/components/telepathyClient.js:1344
msgid "Internal error"
msgstr "خطای داخلی"
#. translators: argument is the account name, like
#. * name@jabber.org for example.
#: ../js/ui/components/telepathyClient.js:1340
#: ../js/ui/components/telepathyClient.js:1354
#, c-format
msgid "Connection to %s failed"
msgstr "اتصال به %s شکست خورد"
#: ../js/ui/components/telepathyClient.js:1349
#: ../js/ui/components/telepathyClient.js:1363
msgid "Reconnect"
msgstr "اتصال مجدد"
#: ../js/ui/components/telepathyClient.js:1350
#: ../js/ui/components/telepathyClient.js:1364
msgid "Edit account"
msgstr "ویرایش حساب"
#: ../js/ui/components/telepathyClient.js:1395
#: ../js/ui/components/telepathyClient.js:1409
msgid "Unknown reason"
msgstr "دلیل ناشناخته"
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
#| msgid "Applications"
msgid "Show Applications"
msgstr "نمایش برنامه‌ها"
@ -898,8 +938,8 @@ msgstr ""
#, c-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
msgstr[1] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
msgstr[0] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
msgstr[1] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
#: ../js/ui/endSessionDialog.js:70
#, c-format
@ -978,84 +1018,76 @@ msgstr "نصب"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "بارگیری و نصب «%s» از extensions.gnome.org؟"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "سینی"
#: ../js/ui/keyboard.js:545 ../js/ui/status/keyboard.js:146
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "صفحه‌کلید"
#: ../js/ui/lookingGlass.js:694
#: ../js/ui/lookingGlass.js:691
msgid "No extensions installed"
msgstr "هیچ افزونه‌ای نصب نشده است"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:748
#: ../js/ui/lookingGlass.js:745
#, c-format
msgid "%s has not emitted any errors."
msgstr "افزونه %s هیچ خطایی منتشر نکرده است."
#: ../js/ui/lookingGlass.js:754
#: ../js/ui/lookingGlass.js:751
msgid "Hide Errors"
msgstr "مخفی کردن خطاها"
#: ../js/ui/lookingGlass.js:758 ../js/ui/lookingGlass.js:818
#: ../js/ui/lookingGlass.js:755 ../js/ui/lookingGlass.js:815
msgid "Show Errors"
msgstr "نمایش خطاها"
#: ../js/ui/lookingGlass.js:767
#: ../js/ui/lookingGlass.js:764
msgid "Enabled"
msgstr "به کار انداختن"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:770 ../src/gvc/gvc-mixer-control.c:1082
#: ../js/ui/lookingGlass.js:767 ../src/gvc/gvc-mixer-control.c:1082
msgid "Disabled"
msgstr "از کار انداختن"
#: ../js/ui/lookingGlass.js:772
#: ../js/ui/lookingGlass.js:769
msgid "Error"
msgstr "خطا"
#: ../js/ui/lookingGlass.js:774
#: ../js/ui/lookingGlass.js:771
msgid "Out of date"
msgstr "قدیمی"
#: ../js/ui/lookingGlass.js:776
#: ../js/ui/lookingGlass.js:773
msgid "Downloading"
msgstr "در حال بارگیری"
#: ../js/ui/lookingGlass.js:800
#: ../js/ui/lookingGlass.js:797
msgid "View Source"
msgstr "نمایش منبع"
#: ../js/ui/lookingGlass.js:809
#: ../js/ui/lookingGlass.js:806
msgid "Web Page"
msgstr "صفحه‌ی وب"
#: ../js/ui/messageTray.js:1233
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "بازکردن"
#: ../js/ui/messageTray.js:1240
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "حذف"
#: ../js/ui/messageTray.js:1250
msgid "Unmute"
msgstr "باصدا"
#: ../js/ui/messageTray.js:1250
msgid "Mute"
msgstr "بی‌صدا"
#: ../js/ui/messageTray.js:2037
#: ../js/ui/messageTray.js:1533
msgid "Message Tray"
msgstr "سینی پیام"
#: ../js/ui/messageTray.js:2485
#: ../js/ui/messageTray.js:2544
msgid "System Information"
msgstr "اطلاعات سیستم"
@ -1064,11 +1096,11 @@ msgctxt "program"
msgid "Unknown"
msgstr "ناشناس"
#: ../js/ui/overview.js:83
#: ../js/ui/overview.js:82
msgid "Undo"
msgstr "برگردان"
#: ../js/ui/overview.js:128
#: ../js/ui/overview.js:127
msgid "Overview"
msgstr "نمای‌کلی"
@ -1076,13 +1108,13 @@ msgstr "نمای‌کلی"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
#: ../js/ui/overview.js:202
#: ../js/ui/overview.js:201
msgid "Type to search..."
msgstr "برای جستجو تایپ کنید..."
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:223
#: ../js/ui/overview.js:222
msgid "Dash"
msgstr "دَش"
@ -1100,25 +1132,12 @@ msgstr "فعالیت‌ها"
msgid "Top Bar"
msgstr "نوار بالا"
#: ../js/ui/placeDisplay.js:115
#, c-format
msgid "Failed to unmount '%s'"
msgstr "عدم توانایی در پیاده کردن «%s»"
#: ../js/ui/placeDisplay.js:118
msgid "Retry"
msgstr "سعی مجدد"
#: ../js/ui/placeDisplay.js:349
msgid "PLACES & DEVICES"
msgstr "محل‌ها و ابزارها"
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
#. "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:728
#: ../js/ui/popupMenu.js:731
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1128,33 +1147,29 @@ msgstr "لطفا یک فرمان وارد کنید:"
#. Translators: This is a time format for a date in
#. long format
#: ../js/ui/screenShield.js:78
#| msgctxt "calendar heading"
#| msgid "%A, %B %d"
#: ../js/ui/screenShield.js:79
msgid "%A, %B %d"
msgstr "%A، %Od %B"
#: ../js/ui/screenShield.js:143
#: ../js/ui/screenShield.js:144
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%Id پیام جدید"
msgstr[1] "%Id پیام جدید"
#: ../js/ui/screenShield.js:145
#: ../js/ui/screenShield.js:146
#, c-format
#| msgid "Notifications"
msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "%Id اعلان جدید"
msgstr[1] "%Id اعلان جدید"
#: ../js/ui/searchDisplay.js:277
#: ../js/ui/searchDisplay.js:275
msgid "Searching..."
msgstr "درحال حستجو..."
#: ../js/ui/searchDisplay.js:328
#| msgid "No matching results."
#: ../js/ui/searchDisplay.js:323
msgid "No results."
msgstr "بدون نتیجه."
@ -1166,25 +1181,23 @@ msgstr "رونوشت"
msgid "Paste"
msgstr "چسباندن"
#: ../js/ui/shellEntry.js:96
#: ../js/ui/shellEntry.js:102
msgid "Show Text"
msgstr "نمایش متن"
#: ../js/ui/shellEntry.js:98
#: ../js/ui/shellEntry.js:104
msgid "Hide Text"
msgstr "مخفی‌کردن متن"
#: ../js/ui/shellMountOperation.js:368
#| msgid "Password:"
msgid "Password"
msgstr "گذرواژه"
#: ../js/ui/shellMountOperation.js:389
#| msgid "Remember Passphrase"
msgid "Remember Password"
msgstr "به‌خاطر سپردن گذرواژه"
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:138
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
msgid "Unlock"
msgstr "بازکردن قفل"
@ -1302,7 +1315,7 @@ msgstr "تنظیمات صفحه‌کلید"
msgid "Mouse Settings"
msgstr "تنظیمات موشی"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "تنظیمات صدا"
@ -1362,11 +1375,11 @@ msgstr "لطفا PIN ذکر شده در دستگاه را وارد کنید."
msgid "OK"
msgstr "تایید"
#: ../js/ui/status/keyboard.js:170
#: ../js/ui/status/keyboard.js:228
msgid "Show Keyboard Layout"
msgstr "نمایش چیدمان صفحه‌کلید"
#: ../js/ui/status/keyboard.js:175
#: ../js/ui/status/keyboard.js:233
msgid "Region and Language Settings"
msgstr "تنظیمات ناحیه و زبان"
@ -1589,7 +1602,7 @@ msgid "Unknown"
msgstr "ناشناس"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "بلندی صدا"
@ -1597,43 +1610,34 @@ msgstr "بلندی صدا"
msgid "Microphone"
msgstr "میکروفون"
#: ../js/ui/unlockDialog.js:145
#| msgid "Login as another user"
#: ../js/ui/unlockDialog.js:176
msgid "Log in as another user"
msgstr "ورود به سیستم بعنوان کاربری دیگر"
#: ../js/ui/userMenu.js:174
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "در دسترس"
#: ../js/ui/userMenu.js:177
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "مشغول"
#: ../js/ui/userMenu.js:180
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "نامرئی"
#: ../js/ui/userMenu.js:183
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "غائب"
#: ../js/ui/userMenu.js:186
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "بی‌کار"
#: ../js/ui/userMenu.js:189
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "خارج از دسترس"
#: ../js/ui/userMenu.js:612 ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "تعویض کاربر"
#: ../js/ui/userMenu.js:613
msgid "Switch Session"
msgstr "تعویض نشست"
#: ../js/ui/userMenu.js:740
msgid "Notifications"
msgstr "اعلان‌ها"
@ -1642,6 +1646,10 @@ msgstr "اعلان‌ها"
msgid "System Settings"
msgstr "تنظیمات سیستم"
#: ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "تعویض کاربر"
#: ../js/ui/userMenu.js:761
msgid "Log Out"
msgstr "خروج از سیستم"
@ -1666,19 +1674,19 @@ msgstr ""
"هم‌اکنون اعلان‌ها، از جمله پیام‌های گپ، غیرفعال هستند. وضعیتِ برخطِ شما به گونه‌ای "
"تنظیم شده است که به دیگران نشان دهد ممکن است شما پیام‌هایشان را نبینید."
#: ../js/ui/viewSelector.js:86
#: ../js/ui/viewSelector.js:85
msgid "Windows"
msgstr "پنجره‌‌ها"
#: ../js/ui/viewSelector.js:90
#: ../js/ui/viewSelector.js:89
msgid "Applications"
msgstr "برنامه‌ها"
#: ../js/ui/viewSelector.js:94 ../src/shell-util.c:250
#: ../js/ui/viewSelector.js:93
msgid "Search"
msgstr "جستجو"
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1687,12 +1695,12 @@ msgstr ""
"شرمنده، هیچ تعبیری امروز برای شما وجود ندارد:\n"
"%s"
#: ../js/ui/wanda.js:127
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "%s پیشگو می‌گوید"
msgstr "%s پیشگو می‌گوید"
#: ../js/ui/wanda.js:168
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "تخم‌مرغ شانسی مورد علاقه شما"
@ -1768,27 +1776,26 @@ msgstr "پیش‌فرض"
msgid "Authentication dialog was dismissed by the user"
msgstr "محاوره تایید هویت از طرف کاربر رد شد"
#. Translators: this is the same string as the one found in
#. * nautilus
#: ../src/shell-util.c:94
msgid "Home"
msgstr "خانه"
#~ msgid "disabled OpenSearch providers"
#~ msgstr "غیرفعال کردنِ تامین‌کننده‌گان OpenSearch"
#. Translators: this is the same string as the one found in
#. * nautilus
#: ../src/shell-util.c:104
msgid "File System"
msgstr "سیستم پرونده‌ها"
#~ msgid "Failed to unmount '%s'"
#~ msgstr "عدم توانایی در پیاده کردن «%s»"
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
#. * directory called "some-directory" is in the trash.
#.
#: ../src/shell-util.c:300
#, c-format
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
#~ msgid "Retry"
#~ msgstr "سعی مجدد"
#~ msgid "PLACES & DEVICES"
#~ msgstr "محل‌ها و ابزارها"
#~ msgid "Switch Session"
#~ msgstr "تعویض نشست"
#~ msgid "Home"
#~ msgstr "خانه"
#~ msgid "%1$s: %2$s"
#~ msgstr "%1$s: %2$s"
#~ msgid "Connect to..."
#~ msgstr "اتصال به..."
@ -1845,16 +1852,16 @@ msgstr "%1$s: %2$s"
#~ msgstr "شبکه"
#~ msgid "%s is online."
#~ msgstr "%s بر خط است."
#~ msgstr "%s بر خط است."
#~ msgid "%s is offline."
#~ msgstr "%s برون خط است."
#~ msgstr "%s برون خط است."
#~ msgid "%s is away."
#~ msgstr "%s غایب است."
#~ msgstr "%s غایب است."
#~ msgid "%s is busy."
#~ msgstr "%s مشغول است."
#~ msgstr "%s مشغول است."
#~ msgid "Hidden"
#~ msgstr "نامرئی"

View File

@ -17,8 +17,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master fr\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-09-20 07:05+0000\n"
"PO-Revision-Date: 2012-09-20 12:25+0200\n"
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
"PO-Revision-Date: 2012-10-04 15:34+0200\n"
"Last-Translator: Alexandre Franke <alexandre.franke@gmail.com>\n"
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
"Language: \n"
@ -266,11 +266,11 @@ msgstr ""
"Sélectionnez une extension à configurer en utilisant la boîte combinée ci-"
"dessus."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:527
msgid "Session..."
msgstr "Session..."
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:675
msgctxt "title"
msgid "Sign In"
msgstr "Connexion"
@ -278,37 +278,42 @@ msgstr "Connexion"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:742
msgid "Not listed?"
msgstr "Absent de la liste ?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "Annuler"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:900
msgctxt "button"
msgid "Sign In"
msgstr "Se connecter"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1239
msgid "Login Window"
msgstr "Fenêtre de connexion"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "Énergie"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
msgid "Suspend"
msgstr "Mettre en veille"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "Redémarrer"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
msgid "Power Off"
msgstr "Éteindre"
@ -516,7 +521,7 @@ msgstr "Sa"
#. Translators: Text to show if there are no events
#: ../js/ui/calendar.js:699
msgid "Nothing Scheduled"
msgstr "Rien au calendrier"
msgstr "Rien de prévu"
#. Translators: Shown on calendar heading when selected day occurs on current year
#: ../js/ui/calendar.js:715
@ -940,7 +945,7 @@ msgstr "Paramètres de date et heure"
#: ../js/ui/dateMenu.js:109
msgid "Open Calendar"
msgstr "Ouvrir le calendrier"
msgstr "Ouvrir l'agenda"
# luc: FIXME: how to have a capitalized weekday (start of sentence)?
# %a (abbreviated) %A (full weekday) %^A (full weekday all uppercase)
@ -1062,7 +1067,7 @@ msgstr "Télécharger et installer « %s » à partir de extensions.gnome.org
msgid "tray"
msgstr "tiroir de messagerie"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Clavier"
@ -1123,11 +1128,11 @@ msgstr "Ouvrir"
msgid "Remove"
msgstr "Enlever"
#: ../js/ui/messageTray.js:2050
#: ../js/ui/messageTray.js:2055
msgid "Message Tray"
msgstr "Tiroir de messagerie"
#: ../js/ui/messageTray.js:2506
#: ../js/ui/messageTray.js:2511
msgid "System Information"
msgstr "Informations du système"
@ -1417,11 +1422,11 @@ msgstr ""
msgid "OK"
msgstr "Valider"
#: ../js/ui/status/keyboard.js:227
#: ../js/ui/status/keyboard.js:228
msgid "Show Keyboard Layout"
msgstr "Afficher la disposition du clavier"
#: ../js/ui/status/keyboard.js:232
#: ../js/ui/status/keyboard.js:233
msgid "Region and Language Settings"
msgstr "Paramètres de région et de langue"
@ -1656,63 +1661,63 @@ msgstr "Microphone"
msgid "Log in as another user"
msgstr "Se connecter en tant qu'un autre utilisateur"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "Disponible"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "Occupé"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "Invisible"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "Absent"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "Inactif"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "Non disponible"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "Changer d'utilisateur"
#: ../js/ui/userMenu.js:614
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "Changer de session"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:743
msgid "Notifications"
msgstr "Notifications"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:751
msgid "System Settings"
msgstr "Paramètres système"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:764
msgid "Log Out"
msgstr "Fermer la session"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:769
msgid "Lock"
msgstr "Verrouiller"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:784
msgid "Install Updates & Restart"
msgstr "Installer les mises à jour et redémarrer"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:802
msgid "Your chat status will be set to busy"
msgstr "Votre statut pour les discussions sera défini à occupé"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:803
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1758,7 +1763,7 @@ msgstr "« %s » est prêt"
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
msgid "Evolution Calendar"
msgstr "Calendrier Evolution"
msgstr "Agenda d'Evolution"
#. translators:
#. * The number of sound outputs on a particular device

1556
po/ga.po

File diff suppressed because it is too large Load Diff

146
po/gl.po
View File

@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-09-25 10:47+0200\n"
"PO-Revision-Date: 2012-09-25 10:48+0200\n"
"POT-Creation-Date: 2012-10-16 13:35+0200\n"
"PO-Revision-Date: 2012-10-16 14:22+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: gnome-l10n-gl@gnome.org\n"
"Language: gl\n"
@ -39,6 +39,14 @@ msgstr "Sistema"
msgid "Show the message tray"
msgstr "Mostrar a bandexa de mensaxes"
#: ../data/50-gnome-shell-system.xml.in.h:3
msgid "Show all applications"
msgstr "Mostrar todos os aplicativos"
#: ../data/50-gnome-shell-system.xml.in.h:4
msgid "Open the application menu"
msgstr "Abrir o menú de aplicativo"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "GNOME Shell"
@ -156,35 +164,46 @@ msgid "Keybinding to open the application menu."
msgstr "Combinación de teclas para abrir o menú de aplicativo."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
msgid "Keybinding to open the \"Show Applications\" view"
msgstr "Combinación de teclas para abrir a vista «Mostrar aplicativos»"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr ""
"Combinación de teclas para abrir a vista \"Mostrar aplicativos\" da Vista xera "
"de Actividades."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "Keybinding to toggle the visibility of the message tray"
msgstr "Combinación de teclas para mostrar/ocultar a área de mensaxes"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to toggle the visibility of the message tray."
msgstr "Combinación de teclas para mostrar/ocultar a área de mensaxes."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to toggle the screen recorder"
msgstr "Combinación de teclas para trocar a gravadora de pantalla"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to start/stop the builtin screen recorder."
msgstr ""
"Combinación de teclas para iniciar/deter a gravadora de pantalla incrustada."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid "Which keyboard to use"
msgstr "Que teclado usar"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "The type of keyboard to use."
msgstr "O tipo de teclado a usar."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Framerate used for recording screencasts."
msgstr "Taxa de marcos usada para gravar «screencast»."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -192,11 +211,11 @@ msgstr ""
"A taxa de marcos da grabación resultante grabada polo grabador de "
"«screencast» de GNOME Shell, en marcos por segundo."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "A tubería de gstreamer usada para codificar o «screenast»."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -222,11 +241,11 @@ msgstr ""
"queue ! webmmux» e grava en WEBM usando o códec VP8. Úsase %T como marcador "
"de posición para o número de fillos óptimos no sistema."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid "File extension used for storing the screencast"
msgstr "Extensión de ficheiro que usar para almacenar os «screencast»"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@ -250,11 +269,11 @@ msgid "Select an extension to configure using the combobox above."
msgstr ""
"Seleccione unha extensión que configurar usando a caixa combinada de arriba."
#: ../js/gdm/loginDialog.js:527
#: ../js/gdm/loginDialog.js:529
msgid "Session..."
msgstr "Sesión…"
#: ../js/gdm/loginDialog.js:675
#: ../js/gdm/loginDialog.js:677
msgctxt "title"
msgid "Sign In"
msgstr "Iniciar sesión"
@ -262,23 +281,23 @@ msgstr "Iniciar sesión"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:742
#: ../js/gdm/loginDialog.js:736
msgid "Not listed?"
msgstr "Non está na lista?"
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
msgid "Cancel"
msgstr "Cancelar"
#: ../js/gdm/loginDialog.js:900
#: ../js/gdm/loginDialog.js:894
msgctxt "button"
msgid "Sign In"
msgstr "Iniciar sesión"
#: ../js/gdm/loginDialog.js:1239
#: ../js/gdm/loginDialog.js:1215
msgid "Login Window"
msgstr "Xanela de inicio de sesión"
@ -287,8 +306,8 @@ msgstr "Xanela de inicio de sesión"
msgid "Power"
msgstr "Apagar"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:775
msgid "Suspend"
msgstr "Suspender"
@ -296,8 +315,8 @@ msgstr "Suspender"
msgid "Restart"
msgstr "Reiniciar"
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:774
msgid "Power Off"
msgstr "Apagar"
@ -348,7 +367,7 @@ msgstr "CONFIGURACIÓN"
msgid "New Window"
msgstr "Xanela nova"
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
msgid "Remove from Favorites"
msgstr "Retirar dos marcadores"
@ -512,16 +531,16 @@ msgstr "Esta semana"
msgid "Next week"
msgstr "A vindeira semana"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "Dispositivos extraíbeis"
#: ../js/ui/components/autorunManager.js:575
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "Abrir con %s"
#: ../js/ui/components/autorunManager.js:601
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "Expulsar"
@ -895,7 +914,7 @@ msgstr "Editar conta"
msgid "Unknown reason"
msgstr "Razón descoñecida"
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
msgid "Show Applications"
msgstr "Mostrar aplicativos"
@ -903,14 +922,14 @@ msgstr "Mostrar aplicativos"
msgid "Date and Time Settings"
msgstr "Preferencias de data e hora"
#: ../js/ui/dateMenu.js:109
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Abrir o calendario"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:175
#: ../js/ui/dateMenu.js:201
msgid "%A %B %e, %Y"
msgstr "%a, %e de %B, %Y"
@ -1078,11 +1097,11 @@ msgstr "Abrir"
msgid "Remove"
msgstr "Retirar"
#: ../js/ui/messageTray.js:2088
#: ../js/ui/messageTray.js:1540
msgid "Message Tray"
msgstr "Bandexa de mensaxes"
#: ../js/ui/messageTray.js:2551
#: ../js/ui/messageTray.js:2547
msgid "System Information"
msgstr "Información do sistema"
@ -1146,14 +1165,14 @@ msgstr "Escriba unha orde:"
msgid "%A, %B %d"
msgstr "%A, %d de %B"
#: ../js/ui/screenShield.js:144
#: ../js/ui/screenShield.js:143
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d mensaxe nova"
msgstr[1] "%d mensaxes novas"
#: ../js/ui/screenShield.js:146
#: ../js/ui/screenShield.js:145
#, c-format
msgid "%d new notification"
msgid_plural "%d new notifications"
@ -1192,7 +1211,7 @@ msgstr "Contrasinal"
msgid "Remember Password"
msgstr "Lembrar o contrasinal"
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
msgid "Unlock"
msgstr "Desbloquear"
@ -1310,7 +1329,7 @@ msgstr "Preferencias do teclado"
msgid "Mouse Settings"
msgstr "Preferencias do rato"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Preferencias do son"
@ -1595,7 +1614,7 @@ msgid "Unknown"
msgstr "Descoñecido"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Volume"
@ -1603,7 +1622,7 @@ msgstr "Volume"
msgid "Microphone"
msgstr "Micrófono"
#: ../js/ui/unlockDialog.js:176
#: ../js/ui/unlockDialog.js:177
msgid "Log in as another user"
msgstr "Iniciar sesión como outro usuario"
@ -1631,39 +1650,35 @@ msgstr "Inactivo"
msgid "Unavailable"
msgstr "Non dispoñíbel"
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "Cambiar de usuario"
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "Cambiar de sesión"
#: ../js/ui/userMenu.js:743
#: ../js/ui/userMenu.js:740
msgid "Notifications"
msgstr "Notificacións"
#: ../js/ui/userMenu.js:751
#: ../js/ui/userMenu.js:748
msgid "System Settings"
msgstr "Preferencias do sistema"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "Cambiar de usuario"
#: ../js/ui/userMenu.js:761
msgid "Log Out"
msgstr "Saír da sesión"
#: ../js/ui/userMenu.js:769
#: ../js/ui/userMenu.js:766
msgid "Lock"
msgstr "Bloquear"
#: ../js/ui/userMenu.js:784
#: ../js/ui/userMenu.js:781
msgid "Install Updates & Restart"
msgstr "Instalar actualizacións e reiniciar"
#: ../js/ui/userMenu.js:802
#: ../js/ui/userMenu.js:799
msgid "Your chat status will be set to busy"
msgstr "O seu estado de conversa definirase como «ocupado»"
#: ../js/ui/userMenu.js:803
#: ../js/ui/userMenu.js:800
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1672,19 +1687,19 @@ msgstr ""
"conversa. O seu estado de conexión axustouse para que outros saiban que non "
"quere ver as súas mensaxes."
#: ../js/ui/viewSelector.js:85
#: ../js/ui/viewSelector.js:87
msgid "Windows"
msgstr "Xanelas"
#: ../js/ui/viewSelector.js:89
#: ../js/ui/viewSelector.js:91
msgid "Applications"
msgstr "Aplicativos"
#: ../js/ui/viewSelector.js:93
#: ../js/ui/viewSelector.js:95
msgid "Search"
msgstr "Buscar"
#: ../js/ui/wanda.js:119
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1693,12 +1708,12 @@ msgstr ""
"Hoxe non ten ningunha mensaxe:\n"
"%s"
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "%s o oráculo dí"
#: ../js/ui/wanda.js:164
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "A súa mensaxe oculta favorita"
@ -1733,21 +1748,21 @@ msgstr[1] "%u entradas"
msgid "System Sounds"
msgstr "Sons do sistema"
#: ../src/main.c:330
#: ../src/main.c:332
msgid "Print version"
msgstr "Imprimir versión"
#: ../src/main.c:336
#: ../src/main.c:338
msgid "Mode used by GDM for login screen"
msgstr "Modo usado por GDM para a pantalla de inicio"
#: ../src/main.c:342
#: ../src/main.c:344
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr ""
"Usar un modo específico, por exemplo, «gdm» para a pantalla de inicio de "
"sesión"
#: ../src/main.c:348
#: ../src/main.c:350
msgid "List possible modes"
msgstr "Listar os modos posíbeis"
@ -1776,6 +1791,9 @@ msgstr "Predeterminado"
msgid "Authentication dialog was dismissed by the user"
msgstr "O usuario rexeitou o diálogo de autenticación"
#~ msgid "Switch Session"
#~ msgstr "Cambiar de sesión"
#~ msgid "disabled OpenSearch providers"
#~ msgstr "fornecedores OpenSearch desactivados"

View File

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-09-25 11:31+0200\n"
"PO-Revision-Date: 2012-09-25 09:47+0200\n"
"POT-Creation-Date: 2012-10-05 11:01+0200\n"
"PO-Revision-Date: 2012-09-28 15:47+0200\n"
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
"Language-Team: Hebrew <sh.yaron@gmail.com>\n"
"Language: he\n"
@ -242,11 +242,11 @@ msgstr "הרחבה"
msgid "Select an extension to configure using the combobox above."
msgstr "יש לבחור את ההרחבה להגדרה באמצעות תיבת הבחירה המשולבת שלהלן."
#: ../js/gdm/loginDialog.js:527
#: ../js/gdm/loginDialog.js:528
msgid "Session..."
msgstr "הפעלה..."
#: ../js/gdm/loginDialog.js:675
#: ../js/gdm/loginDialog.js:676
msgctxt "title"
msgid "Sign In"
msgstr "כניסה"
@ -254,23 +254,23 @@ msgstr "כניסה"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:742
#: ../js/gdm/loginDialog.js:743
msgid "Not listed?"
msgstr "לא רשום?"
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "ביטול"
#: ../js/gdm/loginDialog.js:900
#: ../js/gdm/loginDialog.js:901
msgctxt "button"
msgid "Sign In"
msgstr "כניסה"
#: ../js/gdm/loginDialog.js:1239
#: ../js/gdm/loginDialog.js:1240
msgid "Login Window"
msgstr "חלון כניסה"
@ -351,12 +351,12 @@ msgstr "הוספה למועדפים"
#: ../js/ui/appFavorites.js:87
#, c-format
msgid "%s has been added to your favorites."
msgstr "%s נוסף למועדפים שלך."
msgstr "%s נוסף למועדפים שלך."
#: ../js/ui/appFavorites.js:118
#, c-format
msgid "%s has been removed from your favorites."
msgstr "%s הוסר מהמועדפים שלך."
msgstr "%s הוסר מהמועדפים שלך."
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
@ -751,13 +751,13 @@ msgstr "מענה"
#: ../js/ui/components/telepathyClient.js:1171
#, c-format
msgid "%s is sending you %s"
msgstr "%s שולח/ת אליך %s"
msgstr "%s שולח/ת אליך %s"
#. To translators: The parameter is the contact's alias
#: ../js/ui/components/telepathyClient.js:1206
#, c-format
msgid "%s would like permission to see when you are online"
msgstr "%s רוצה לקבל הרשאות כדי לראות מתי מצבך הוא מקוון"
msgstr "%s רוצה לקבל הרשאות כדי לראות מתי מצבך הוא מקוון"
#: ../js/ui/components/telepathyClient.js:1298
msgid "Network error"
@ -903,12 +903,12 @@ msgstr "%A ה־%e ב%B, %Y"
#, c-format
msgctxt "title"
msgid "Log Out %s"
msgstr "ֹהוצאת %s"
msgstr "הוצאת %s"
#: ../js/ui/endSessionDialog.js:62
msgctxt "title"
msgid "Log Out"
msgstr "ֹיציאה"
msgstr "יציאה"
#: ../js/ui/endSessionDialog.js:63
msgid "Click Log Out to quit these applications and log out of the system."
@ -937,12 +937,12 @@ msgstr "מתבצעת יציאה מהמערכת."
#: ../js/ui/endSessionDialog.js:76
msgctxt "button"
msgid "Log Out"
msgstr "ֹיציאה"
msgstr "יציאה"
#: ../js/ui/endSessionDialog.js:81
msgctxt "title"
msgid "Power Off"
msgstr "ֹכיבוי"
msgstr "כיבוי"
#: ../js/ui/endSessionDialog.js:82
msgid "Click Power Off to quit these applications and power off the system."
@ -963,17 +963,17 @@ msgstr "המערכת נכבית."
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107
msgctxt "button"
msgid "Restart"
msgstr "ֹהפעלה מחדש"
msgstr "הפעלה מחדש"
#: ../js/ui/endSessionDialog.js:92
msgctxt "button"
msgid "Power Off"
msgstr "ֹכיבוי"
msgstr "כיבוי"
#: ../js/ui/endSessionDialog.js:98
msgctxt "title"
msgid "Restart"
msgstr "ֹהפעלה מחדש"
msgstr "הפעלה מחדש"
#: ../js/ui/endSessionDialog.js:99
msgid "Click Restart to quit these applications and restart the system."
@ -1017,7 +1017,7 @@ msgstr "לא מותקנות הרחבות"
#: ../js/ui/lookingGlass.js:745
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s לא העלה שגיאות כלשהן."
msgstr "%s לא העלה שגיאות כלשהן."
#: ../js/ui/lookingGlass.js:751
msgid "Hide Errors"
@ -1299,7 +1299,7 @@ msgstr "הגדרות מקלדת"
msgid "Mouse Settings"
msgstr "הגדרות עכבר"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "הגדרות שמע"
@ -1436,7 +1436,7 @@ msgstr "חיוג אוטומטי"
#: ../js/ui/status/network.js:853 ../js/ui/status/network.js:1476
#, c-format
msgid "Auto %s"
msgstr "%s אוטומטי"
msgstr "%s אוטומטי"
#: ../js/ui/status/network.js:855
msgid "Auto bluetooth"
@ -1588,7 +1588,7 @@ msgid "Unknown"
msgstr "לא ידוע"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "עצמה"
@ -1642,7 +1642,7 @@ msgstr "הגדרות המערכת"
#: ../js/ui/userMenu.js:764
msgid "Log Out"
msgstr "ֹיציאה"
msgstr "יציאה"
#: ../js/ui/userMenu.js:769
msgid "Lock"
@ -1688,7 +1688,7 @@ msgstr ""
#: ../js/ui/wanda.js:123
#, c-format
msgid "%s the Oracle says"
msgstr "%s, כה אמרה האוראקל"
msgstr "%s, כה אמרה האוראקל"
#: ../js/ui/wanda.js:164
msgid "Your favorite Easter Egg"
@ -1697,7 +1697,7 @@ msgstr "ביצת הפסחא האהובה עליך"
#: ../js/ui/windowAttentionHandler.js:19
#, c-format
msgid "'%s' is ready"
msgstr "'%s' מוכן"
msgstr "'%s' מוכן"
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
msgid "Evolution Calendar"
@ -1845,16 +1845,16 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
#~ msgstr "רשת"
#~ msgid "%s is online."
#~ msgstr "%s התחבר/ה."
#~ msgstr "%s התחבר/ה."
#~ msgid "%s is offline."
#~ msgstr "%s התנתק/ה."
#~ msgstr "%s התנתק/ה."
#~ msgid "%s is away."
#~ msgstr "'%s' מרוחק/ת."
#~ msgstr "'%s' מרוחק/ת."
#~ msgid "%s is busy."
#~ msgstr "%s עסוק/ה."
#~ msgstr "%s עסוק/ה."
#~ msgid "Hidden"
#~ msgstr "מוסתר"
@ -1887,7 +1887,7 @@ msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
#~ msgstr "הצגת ססמה"
#~ msgid "%s has finished starting"
#~ msgstr "%s סיים את תהליך ההתחלה"
#~ msgstr "%s סיים את תהליך ההתחלה"
#~ msgid "Home Folder"
#~ msgstr "תיקיית הבית"

154
po/hu.po
View File

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-09-20 14:55+0200\n"
"PO-Revision-Date: 2012-09-20 14:52+0200\n"
"POT-Creation-Date: 2012-09-26 16:11+0200\n"
"PO-Revision-Date: 2012-09-26 16:12+0200\n"
"Last-Translator: Gabor Kelemen <kelemeng at gnome dot hu>\n"
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
"Language: hu\n"
@ -17,7 +17,23 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 1.4\n"
"X-Generator: KBabel 1.11.4\n"
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
msgid "Screenshots"
msgstr "Képernyőképek"
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
msgid "Record a screencast"
msgstr "Képernyővideó felvétele"
#: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System"
msgstr "Rendszer"
#: ../data/50-gnome-shell-system.xml.in.h:2
msgid "Show the message tray"
msgstr "Üzenettálca megjelenítése"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
@ -149,8 +165,7 @@ msgstr "Billentyűtársítás a képernyőfelvevő megnyitásához"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to start/stop the builtin screen recorder."
msgstr ""
"Billentyűtársítás a beépített képernyőfelvevő elindításához/leállításához."
msgstr "Billentyűtársítás a beépített képernyőfelvevő elindításához/leállításához."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Which keyboard to use"
@ -230,11 +245,11 @@ msgstr "Kiterjesztés"
msgid "Select an extension to configure using the combobox above."
msgstr "Válasszon egy beállítandó kiterjesztést a fenti legördülő menüből."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:528
msgid "Session..."
msgstr "Munkamenet…"
#: ../js/gdm/loginDialog.js:675
#: ../js/gdm/loginDialog.js:676
msgctxt "title"
msgid "Sign In"
msgstr "Bejelentkezés"
@ -242,47 +257,56 @@ msgstr "Bejelentkezés"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:742
#: ../js/gdm/loginDialog.js:743
msgid "Not listed?"
msgstr "Nincs a listán?"
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:137
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "Mégse"
#: ../js/gdm/loginDialog.js:900
#: ../js/gdm/loginDialog.js:901
msgctxt "button"
msgid "Sign In"
msgstr "Bejelentkezés"
#: ../js/gdm/loginDialog.js:1239
#: ../js/gdm/loginDialog.js:1240
msgid "Login Window"
msgstr "Bejelentkezési ablak"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:657 ../js/ui/userMenu.js:661
#: ../js/ui/userMenu.js:772
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "Kikapcsolás"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
msgid "Suspend"
msgstr "Felfüggesztés"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "Újraindítás"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:659 ../js/ui/userMenu.js:661
#: ../js/ui/userMenu.js:771
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
msgid "Power Off"
msgstr "Kikapcsolás"
#: ../js/gdm/util.js:148
msgid "Authentication error"
msgstr "Hitelesítési hiba"
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
#: ../js/gdm/util.js:247
#: ../js/gdm/util.js:265
msgid "(or swipe finger)"
msgstr "(vagy húzza le az ujját)"
#: ../js/gdm/util.js:272
#: ../js/gdm/util.js:290
#, c-format
msgid "(e.g., user or %s)"
msgstr "(például: felhasználó vagy %s)"
@ -809,10 +833,8 @@ msgid "This account is already connected to the server"
msgstr "Ez a fiók már kapcsolódik a kiszolgálóhoz"
#: ../js/ui/components/telepathyClient.js:1332
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr ""
"A kapcsolatot leváltotta egy új, ugyanazt az erőforrást használó kapcsolat"
msgid "Connection has been replaced by a new connection using the same resource"
msgstr "A kapcsolatot leváltotta egy új, ugyanazt az erőforrást használó kapcsolat"
#: ../js/ui/components/telepathyClient.js:1334
msgid "The account already exists on the server"
@ -827,8 +849,7 @@ msgid "Certificate has been revoked"
msgstr "A tanúsítvány visszavonva"
#: ../js/ui/components/telepathyClient.js:1340
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"A tanúsítvány nem biztonságos titkosító algoritmust használ, vagy "
"titkosításilag gyenge"
@ -984,14 +1005,13 @@ msgstr "Telepítés"
#: ../js/ui/extensionDownloader.js:204
#, c-format
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr ""
"Letölti és telepíti a következőt az extensions.gnome.org webhelyről: „%s”?"
msgstr "Letölti és telepíti a következőt az extensions.gnome.org webhelyről: „%s”?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "tálca"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:146
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Billentyűzet"
@ -1044,19 +1064,19 @@ msgstr "Forrás megtekintése"
msgid "Web Page"
msgstr "Weblap"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "Megnyitás"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "Eltávolítás"
#: ../js/ui/messageTray.js:2041
#: ../js/ui/messageTray.js:2088
msgid "Message Tray"
msgstr "Üzenettálca"
#: ../js/ui/messageTray.js:2483
#: ../js/ui/messageTray.js:2551
msgid "System Information"
msgstr "Rendszerinformációk"
@ -1117,18 +1137,18 @@ msgstr "Adjon meg egy parancsot:"
#. Translators: This is a time format for a date in
#. long format
#: ../js/ui/screenShield.js:78
#: ../js/ui/screenShield.js:79
msgid "%A, %B %d"
msgstr "%A, %B %d."
#: ../js/ui/screenShield.js:143
#: ../js/ui/screenShield.js:144
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d új üzenet"
msgstr[1] "%d új üzenet"
#: ../js/ui/screenShield.js:145
#: ../js/ui/screenShield.js:146
#, c-format
msgid "%d new notification"
msgid_plural "%d new notifications"
@ -1167,7 +1187,7 @@ msgstr "Jelszó"
msgid "Remember Password"
msgstr "Jelszó megjegyzése"
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:140
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
msgid "Unlock"
msgstr "Feloldás"
@ -1285,7 +1305,7 @@ msgstr "Billentyűzetbeállítások"
msgid "Mouse Settings"
msgstr "Egérbeállítások"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Hangbeállítások"
@ -1343,11 +1363,11 @@ msgstr "Adja meg az eszközön említett PIN-kódot."
msgid "OK"
msgstr "OK"
#: ../js/ui/status/keyboard.js:170
#: ../js/ui/status/keyboard.js:228
msgid "Show Keyboard Layout"
msgstr "Billentyűzetkiosztás megjelenítése"
#: ../js/ui/status/keyboard.js:175
#: ../js/ui/status/keyboard.js:233
msgid "Region and Language Settings"
msgstr "Területi és nyelvi beállítások"
@ -1570,7 +1590,7 @@ msgid "Unknown"
msgstr "Ismeretlen"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Hangerő"
@ -1578,67 +1598,67 @@ msgstr "Hangerő"
msgid "Microphone"
msgstr "Mikrofon"
#: ../js/ui/unlockDialog.js:147
#: ../js/ui/unlockDialog.js:176
msgid "Log in as another user"
msgstr "Bejelentkezés másik felhasználóként"
#: ../js/ui/userMenu.js:174
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "Elérhető"
#: ../js/ui/userMenu.js:177
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "Elfoglalt"
#: ../js/ui/userMenu.js:180
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "Láthatatlan"
#: ../js/ui/userMenu.js:183
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "Távol"
#: ../js/ui/userMenu.js:186
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "Ráér"
#: ../js/ui/userMenu.js:189
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "Nem érhető el"
#: ../js/ui/userMenu.js:612 ../js/ui/userMenu.js:753
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "Felhasználóváltás"
#: ../js/ui/userMenu.js:613
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "Felhasználóváltás"
#: ../js/ui/userMenu.js:737
#: ../js/ui/userMenu.js:743
msgid "Notifications"
msgstr "Értesítések"
#: ../js/ui/userMenu.js:745
#: ../js/ui/userMenu.js:751
msgid "System Settings"
msgstr "Rendszerbeállítások"
#: ../js/ui/userMenu.js:758
#: ../js/ui/userMenu.js:764
msgid "Log Out"
msgstr "Kijelentkezés"
#: ../js/ui/userMenu.js:763
#: ../js/ui/userMenu.js:769
msgid "Lock"
msgstr "Lezárás"
#: ../js/ui/userMenu.js:778
#: ../js/ui/userMenu.js:784
msgid "Install Updates & Restart"
msgstr "Frissítések telepítése és újraindítás"
#: ../js/ui/userMenu.js:796
#: ../js/ui/userMenu.js:802
msgid "Your chat status will be set to busy"
msgstr "Csevegési állapota elfoglaltra lesz állítva"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:803
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1718,8 +1738,7 @@ msgstr "A GDM által a bejelentkezési képernyőhöz használt mód"
#: ../src/main.c:342
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr ""
"Használjon egy adott módot, például a „gdm”-et a bejelentkező képernyőn"
msgstr "Használjon egy adott módot, például a „gdm”-et a bejelentkező képernyőn"
#: ../src/main.c:348
msgid "List possible modes"
@ -1750,20 +1769,3 @@ msgstr "Alapértelmezett"
msgid "Authentication dialog was dismissed by the user"
msgstr "A hitelesítési ablakot a felhasználó bezárta"
#~ msgid "Screenshots"
#~ msgstr "Képernyőképek"
#~ msgid "Record a screencast"
#~ msgstr "Képernyővideó felvétele"
#~| msgid "System Sounds"
#~ msgid "System"
#~ msgstr "Rendszer"
#~| msgid "Message Tray"
#~ msgid "Show the message tray"
#~ msgstr "Üzenettálca megjelenítése"
#~| msgid "Authentication Required"
#~ msgid "Authentication error"
#~ msgstr "Hitelesítési hiba"

154
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: 2012-09-25 00:06+0000\n"
"PO-Revision-Date: 2012-09-25 09:53+0700\n"
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
"PO-Revision-Date: 2012-10-16 07:11+0700\n"
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
"Language-Team: Indonesian <gnome@i15n.org>\n"
"Language: id\n"
@ -20,7 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Poedit 1.5.3\n"
"X-Generator: Poedit 1.5.4\n"
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
msgid "Screenshots"
@ -38,6 +38,14 @@ msgstr "Sistem"
msgid "Show the message tray"
msgstr "Tampilkan baki pesan"
#: ../data/50-gnome-shell-system.xml.in.h:3
msgid "Show all applications"
msgstr "Tampilkan semua aplikasi"
#: ../data/50-gnome-shell-system.xml.in.h:4
msgid "Open the application menu"
msgstr "Buka menu aplikasi"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "GNOME Shell"
@ -155,34 +163,45 @@ msgid "Keybinding to open the application menu."
msgstr "Kombinasi tombol untuk membuka menu aplikasi."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
msgid "Keybinding to open the \"Show Applications\" view"
msgstr "Kombinasi tombol untuk membuka tilikan \"Tampilkan Aplikasi\""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr ""
"Kombinasi tombol untuk membuka tilikan Ringkasan Aktivitas \"Tampilkan "
"Aplikasi\"."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "Keybinding to toggle the visibility of the message tray"
msgstr "Kombinasi tombol untuk kenampakan baki pesan"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to toggle the visibility of the message tray."
msgstr "Kombinasi tombol untuk kenampakan baki pesan."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to toggle the screen recorder"
msgstr "Kombinasi tombol untuk perekaman layar"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to start/stop the builtin screen recorder."
msgstr "Kombinasi tombol mulai/menghentikan perekam layar bawaan."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid "Which keyboard to use"
msgstr "Papan tik mana yang akan dipakai"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "The type of keyboard to use."
msgstr "Jenis papan tik yang akan dipakai."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Framerate used for recording screencasts."
msgstr "Laju gambar untuk menyimpan tangkapan layar."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -190,11 +209,11 @@ msgstr ""
"Laju frame dari hasil screencast yang direkam oleh perekam screencast GNOME "
"Shell dalam frame per detik."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Jalur pipa gstreamer yang dipakai untuk mengode screencast"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -220,11 +239,11 @@ msgstr ""
"dan merekam ke WEBM memakai kodek VP8. %T digunakan sebagai pewakil untuk "
"perkiraan jumlah thread optimal pada sistem."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid "File extension used for storing the screencast"
msgstr "Ekstensi berkas untuk menyimpan tangkapan layar"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@ -247,11 +266,11 @@ msgstr "Ekstensi"
msgid "Select an extension to configure using the combobox above."
msgstr "Pilih ekstensi yang ingin dikonfigurasi pada kotak di atas."
#: ../js/gdm/loginDialog.js:527
#: ../js/gdm/loginDialog.js:529
msgid "Session..."
msgstr "Sesi..."
#: ../js/gdm/loginDialog.js:675
#: ../js/gdm/loginDialog.js:677
msgctxt "title"
msgid "Sign In"
msgstr "Masuk"
@ -259,34 +278,33 @@ msgstr "Masuk"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:742
#: ../js/gdm/loginDialog.js:736
msgid "Not listed?"
msgstr "Tak masuk daftar?"
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
msgid "Cancel"
msgstr "Batal"
#: ../js/gdm/loginDialog.js:900
#: ../js/gdm/loginDialog.js:894
msgctxt "button"
msgid "Sign In"
msgstr "Masuk"
#: ../js/gdm/loginDialog.js:1239
#: ../js/gdm/loginDialog.js:1215
msgid "Login Window"
msgstr "Jendela Log Masuk"
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
#| msgid "Power Off"
msgid "Power"
msgstr "Daya"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:775
msgid "Suspend"
msgstr "Suspensi"
@ -294,8 +312,8 @@ msgstr "Suspensi"
msgid "Restart"
msgstr "Nyalakan Ulang"
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:774
msgid "Power Off"
msgstr "Matikan"
@ -346,7 +364,7 @@ msgstr "PENGATURAN"
msgid "New Window"
msgstr "Jendela Baru"
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
msgid "Remove from Favorites"
msgstr "Hapus dari Favorit"
@ -510,16 +528,16 @@ msgstr "Minggu ini"
msgid "Next week"
msgstr "Minggu depan"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "Perangkat Yang Dapat Dicabut"
#: ../js/ui/components/autorunManager.js:575
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "Buka dengan %s"
#: ../js/ui/components/autorunManager.js:601
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "Keluarkan"
@ -891,7 +909,7 @@ msgstr "Sunting Akun"
msgid "Unknown reason"
msgstr "Alasan yang tidak diketahui"
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
msgid "Show Applications"
msgstr "Tampilkan Aplikasi"
@ -899,14 +917,14 @@ msgstr "Tampilkan Aplikasi"
msgid "Date and Time Settings"
msgstr "Pengaturan Waktu dan Tanggal"
#: ../js/ui/dateMenu.js:109
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Buka Kalender"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:175
#: ../js/ui/dateMenu.js:201
msgid "%A %B %e, %Y"
msgstr "%A, %e %B %Y"
@ -1005,11 +1023,11 @@ msgstr "Pasang"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Unduh dan pasang '%s' dari extensions.gnome.org?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "baki"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Papan Ketik"
@ -1062,19 +1080,19 @@ msgstr "Tilik Sumber"
msgid "Web Page"
msgstr "Halaman Web"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "Buka"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "Hapus"
#: ../js/ui/messageTray.js:2055
#: ../js/ui/messageTray.js:1540
msgid "Message Tray"
msgstr "Baki Pesan"
#: ../js/ui/messageTray.js:2511
#: ../js/ui/messageTray.js:2547
msgid "System Information"
msgstr "Informasi Sistem"
@ -1139,13 +1157,13 @@ msgstr "Ketikkan perintah:"
msgid "%A, %B %d"
msgstr "%A, %d %B"
#: ../js/ui/screenShield.js:144
#: ../js/ui/screenShield.js:143
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d pesan baru"
#: ../js/ui/screenShield.js:146
#: ../js/ui/screenShield.js:145
#, c-format
msgid "%d new notification"
msgid_plural "%d new notifications"
@ -1183,7 +1201,7 @@ msgstr "Sandi"
msgid "Remember Password"
msgstr "Ingat Sandi"
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
msgid "Unlock"
msgstr "Buka Kunci"
@ -1301,7 +1319,7 @@ msgstr "Pengaturan Papan Ketik"
msgid "Mouse Settings"
msgstr "Pengaturan Tetikus"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Pengaturan Suara"
@ -1582,7 +1600,7 @@ msgid "Unknown"
msgstr "Tak Dikenal"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Volume"
@ -1590,7 +1608,7 @@ msgstr "Volume"
msgid "Microphone"
msgstr "Mikrofon"
#: ../js/ui/unlockDialog.js:176
#: ../js/ui/unlockDialog.js:177
msgid "Log in as another user"
msgstr "Masuk sebagai pengguna lain"
@ -1618,39 +1636,35 @@ msgstr "Menganggur"
msgid "Unavailable"
msgstr "Tak tersedia"
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "Ganti Pengguna"
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "Pindah Sesi"
#: ../js/ui/userMenu.js:743
#: ../js/ui/userMenu.js:740
msgid "Notifications"
msgstr "Pemberitahuan"
#: ../js/ui/userMenu.js:751
#: ../js/ui/userMenu.js:748
msgid "System Settings"
msgstr "Pengaturan Sistem"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "Ganti Pengguna"
#: ../js/ui/userMenu.js:761
msgid "Log Out"
msgstr "Keluar"
#: ../js/ui/userMenu.js:769
#: ../js/ui/userMenu.js:766
msgid "Lock"
msgstr "Kunci"
#: ../js/ui/userMenu.js:784
#: ../js/ui/userMenu.js:781
msgid "Install Updates & Restart"
msgstr "Pasang Pemutakhiran & Jalankan Ulang"
#: ../js/ui/userMenu.js:802
#: ../js/ui/userMenu.js:799
msgid "Your chat status will be set to busy"
msgstr "Status obrolan Anda akan ditata ke sibuk"
#: ../js/ui/userMenu.js:803
#: ../js/ui/userMenu.js:800
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1659,19 +1673,19 @@ msgstr ""
"telah disesuaikan untuk memberitahu pihak lain bahwa Anda mungkin tak "
"melihat pesan mereka."
#: ../js/ui/viewSelector.js:85
#: ../js/ui/viewSelector.js:87
msgid "Windows"
msgstr "Jendela"
#: ../js/ui/viewSelector.js:89
#: ../js/ui/viewSelector.js:91
msgid "Applications"
msgstr "Aplikasi"
#: ../js/ui/viewSelector.js:93
#: ../js/ui/viewSelector.js:95
msgid "Search"
msgstr "Cari"
#: ../js/ui/wanda.js:119
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1680,12 +1694,12 @@ msgstr ""
"Maaf, tidak ada kata-kata bijak bagi Anda hari ini:\n"
"%s"
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "%s sang Peramal berkata"
#: ../js/ui/wanda.js:164
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "Easter Egg kesukaan Anda"
@ -1718,19 +1732,19 @@ msgstr[0] "%u Masukan"
msgid "System Sounds"
msgstr "Suara Sistem"
#: ../src/main.c:330
#: ../src/main.c:332
msgid "Print version"
msgstr "Versi Cetak"
#: ../src/main.c:336
#: ../src/main.c:338
msgid "Mode used by GDM for login screen"
msgstr "Mode yang dipakai oleh layar log masuk GDM"
#: ../src/main.c:342
#: ../src/main.c:344
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk"
#: ../src/main.c:348
#: ../src/main.c:350
msgid "List possible modes"
msgstr "Menampilkan mode yang mungkin"

View File

@ -1,5 +1,6 @@
# Italian translations for gnome-shell package.
# Copyright (C) 2009, 2010 the gnome-shell copyright holder
# Copyright (C) 2009, 2010, the gnome-shell copyright holder
# Copyright (C) 2011, 2012, the Free Software Foundation
# This file is distributed under the same license as the gnome-shell package.
#
# Luca Ferretti <lferrett@gnome.org>, 2010, 2011, 2012.
@ -9,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-09-22 16:54+0200\n"
"PO-Revision-Date: 2012-09-22 16:54+0200\n"
"POT-Creation-Date: 2012-09-29 18:06+0200\n"
"PO-Revision-Date: 2012-09-29 18:08+0200\n"
"Last-Translator: Milo Casagrande <milo@ubuntu.com>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
"Language: it\n"
@ -253,11 +254,11 @@ msgstr ""
"Selezionare una estensione da configurare usando la casella combinata qui "
"sopra."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:528
msgid "Session..."
msgstr "Sessione..."
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:676
msgctxt "title"
msgid "Sign In"
msgstr "Accesso"
@ -265,37 +266,42 @@ msgstr "Accesso"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:743
msgid "Not listed?"
msgstr "Non elencato?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "Annulla"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:901
msgctxt "button"
msgid "Sign In"
msgstr "Accedi"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1240
msgid "Login Window"
msgstr "Finestra di accesso"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "Risparmio energetico"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
msgid "Suspend"
msgstr "Sospendi"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "Riavvia"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
msgid "Power Off"
msgstr "Spegni"
@ -1025,11 +1031,11 @@ msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
# FIXME!!!!!!
# dai, ma come fai a tradurre un pulsante del genere?!?!?!
# per ora ho messo nascondi, poi vedremo
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "nascondi"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Tastiera"
@ -1084,19 +1090,19 @@ msgstr "Visualizza sorgente"
msgid "Web Page"
msgstr "Pagina web"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "Apri"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "Rimuovi"
#: ../js/ui/messageTray.js:2050
#: ../js/ui/messageTray.js:2088
msgid "Message Tray"
msgstr "Cassetto messaggi"
#: ../js/ui/messageTray.js:2506
#: ../js/ui/messageTray.js:2551
msgid "System Information"
msgstr "Informazione di sistema"
@ -1329,7 +1335,7 @@ msgstr "Impostazioni tastiera"
msgid "Mouse Settings"
msgstr "Impostazioni mouse"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Impostazioni audio"
@ -1617,7 +1623,7 @@ msgid "Unknown"
msgstr "Sconosciuto"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Volume"
@ -1629,64 +1635,64 @@ msgstr "Microfono"
msgid "Log in as another user"
msgstr "Accedi come altro utente"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "Disponibile"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "Non disponibile"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "Invisibile"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "Assente"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "Inattivo"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "Non disponibile"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "Cambia utente"
#: ../js/ui/userMenu.js:614
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "Cambia sessione"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:743
msgid "Notifications"
msgstr "Notifiche"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:751
msgid "System Settings"
msgstr "Impostazioni di sistema"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:764
msgid "Log Out"
msgstr "Termina sessione"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:769
msgid "Lock"
msgstr "Blocca"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:784
msgid "Install Updates & Restart"
msgstr "Installa aggiornamenti e riavvia"
# accorciato, altrimenti non si legge...
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:802
msgid "Your chat status will be set to busy"
msgstr "Stato per chat impostato a non disponibile"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:803
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."

153
po/ja.po
View File

@ -12,9 +12,9 @@ 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: 2012-09-25 00:06+0000\n"
"PO-Revision-Date: 2012-09-25 09:10+0900\n"
"Last-Translator: Jiro Matsuzawa <jmatsuzawa@gnome.org>\n"
"POT-Creation-Date: 2012-10-16 12:22+0000\n"
"PO-Revision-Date: 2012-10-16 10:53+0900\n"
"Last-Translator: Takayuki KUSANO <AE5T-KSN@asahi-net.or.jp>\n"
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
@ -39,6 +39,14 @@ msgstr "システム"
msgid "Show the message tray"
msgstr "メッセージトレイを表示する"
#: ../data/50-gnome-shell-system.xml.in.h:3
msgid "Show all applications"
msgstr "すべてのアプリケーションを表示"
#: ../data/50-gnome-shell-system.xml.in.h:4
msgid "Open the application menu"
msgstr "アプリケーションメニューを開く"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "GNOME Shell"
@ -121,51 +129,59 @@ msgid "Keybinding to open the application menu."
msgstr "アプリケーションメニューを開くためのキーバインドです。"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
msgid "Keybinding to open the \"Show Applications\" view"
msgstr "「アプリケーションの表示」のビューを開くキーバインド"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid "Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr "アクティビティで「アプリケーションの表示」のビューを開くキーバインドです。"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "Keybinding to toggle the visibility of the message tray"
msgstr "メッセージトレイの表示・非表示を切り替えるキーバインド"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to toggle the visibility of the message tray."
msgstr "メッセージトレイを表示したり非表示にしたりするのを切り替えるキーバインドです。"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to toggle the screen recorder"
msgstr "スクリーンレコーダー切り替えのキーバインド"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to start/stop the builtin screen recorder."
msgstr "内蔵のスクリーンレコーダーを起動したり止めたりするキーバインドです。"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid "Which keyboard to use"
msgstr "使いたいキーボードの種類"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "The type of keyboard to use."
msgstr "使いたいキーボードの種類です。"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Framerate used for recording screencasts."
msgstr "スクリーンキャスト録画のフレームレート"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
msgstr "GNOME Shell のスクリーンキャストレコーダーで録画するスクリーンキャストの 1秒あたりのフレーム数です。"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "スクリーンキャストのエンコードに使用する Gstreamer パイプライン"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#, no-c-format
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
msgstr "録画したものをエンコードするための Gstreamer パイプラインを設定します。構文は gst-launch のものに準拠します。パイプラインは未接続の録画用 sink pad を持つようにしてください。パイプラインは通常未接続の source pad を持ち、ファイルへ出力データを書き込みますが、出力方法については独自に定義することもできます。shout2send プラグインやその類似プラグインを経由して icecast サーバーへ出力データを送信するときは、この方法をとります。値が設定されていないか、空の場合は、既定のパイプライン 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' が使用され、VP8 コーデックを使用した WebM 形式で録画します。 '%T' はシステムの最適スレッド数の推量値を示すプレースホルダーです。"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid "File extension used for storing the screencast"
msgstr "ファイルに保存するスクリーンキャストのファイル拡張子"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
msgstr "録画したスクリーンキャストをファイルに保存する際は、日付を基にした固有の名前とこの拡張子をファイル名として使用します。異なる形式で録画するときは拡張子を変更する必要があります。"
@ -182,11 +198,11 @@ msgstr "拡張機能"
msgid "Select an extension to configure using the combobox above."
msgstr "設定する拡張機能を上部のコンボボックスから選択してください。"
#: ../js/gdm/loginDialog.js:527
#: ../js/gdm/loginDialog.js:529
msgid "Session..."
msgstr "セッション..."
#: ../js/gdm/loginDialog.js:675
#: ../js/gdm/loginDialog.js:677
msgctxt "title"
msgid "Sign In"
msgstr "サインイン"
@ -194,23 +210,23 @@ msgstr "サインイン"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:742
#: ../js/gdm/loginDialog.js:736
msgid "Not listed?"
msgstr "アカウントが見つかりませんか?"
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
msgid "Cancel"
msgstr "キャンセル"
#: ../js/gdm/loginDialog.js:900
#: ../js/gdm/loginDialog.js:894
msgctxt "button"
msgid "Sign In"
msgstr "サインイン"
#: ../js/gdm/loginDialog.js:1239
#: ../js/gdm/loginDialog.js:1215
msgid "Login Window"
msgstr "ログインウィンドウ"
@ -219,8 +235,8 @@ msgstr "ログインウィンドウ"
msgid "Power"
msgstr "電源"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:775
msgid "Suspend"
msgstr "サスペンド"
@ -228,8 +244,8 @@ msgstr "サスペンド"
msgid "Restart"
msgstr "再起動"
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:774
msgid "Power Off"
msgstr "電源オフ"
@ -280,7 +296,7 @@ msgstr "設定"
msgid "New Window"
msgstr "新しいウィンドウで開く"
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
msgid "Remove from Favorites"
msgstr "お気に入りから削除"
@ -444,16 +460,16 @@ msgstr "今週"
msgid "Next week"
msgstr "来週"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "リムーバブルデバイス"
#: ../js/ui/components/autorunManager.js:575
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "%s で開く"
#: ../js/ui/components/autorunManager.js:601
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "取り出し"
@ -814,7 +830,7 @@ msgstr "アカウントの編集"
msgid "Unknown reason"
msgstr "原因不明"
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
msgid "Show Applications"
msgstr "アプリケーションの表示"
@ -822,14 +838,14 @@ msgstr "アプリケーションの表示"
msgid "Date and Time Settings"
msgstr "日時の設定"
#: ../js/ui/dateMenu.js:109
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "カレンダーを開く"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:175
#: ../js/ui/dateMenu.js:201
msgid "%A %B %e, %Y"
msgstr "%Y年%B%e日 (%a)"
@ -926,11 +942,11 @@ msgstr "インストール"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "extensions.gnome.org から '%s' をダウンロードしてインストールしますか?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "トレイ"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "キーボード"
@ -983,19 +999,19 @@ msgstr "ソースの表示"
msgid "Web Page"
msgstr "ウェブページ"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "開く"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "削除"
#: ../js/ui/messageTray.js:2055
#: ../js/ui/messageTray.js:1540
msgid "Message Tray"
msgstr "メッセージトレイ"
#: ../js/ui/messageTray.js:2511
#: ../js/ui/messageTray.js:2547
msgid "System Information"
msgstr "システム情報"
@ -1059,13 +1075,13 @@ msgstr "コマンド:"
msgid "%A, %B %d"
msgstr "%B%d日 %A"
#: ../js/ui/screenShield.js:144
#: ../js/ui/screenShield.js:143
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d 件の新しいメッセージ"
#: ../js/ui/screenShield.js:146
#: ../js/ui/screenShield.js:145
#, c-format
msgid "%d new notification"
msgid_plural "%d new notifications"
@ -1103,7 +1119,7 @@ msgstr "パスワード"
msgid "Remember Password"
msgstr "パスワードを保存"
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
msgid "Unlock"
msgstr "ロック解除"
@ -1221,7 +1237,7 @@ msgstr "キーボードの設定"
msgid "Mouse Settings"
msgstr "マウスの設定"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "サウンドの設定"
@ -1502,7 +1518,7 @@ msgid "Unknown"
msgstr "不明なデバイス"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "音量"
@ -1510,7 +1526,7 @@ msgstr "音量"
msgid "Microphone"
msgstr "マイク"
#: ../js/ui/unlockDialog.js:176
#: ../js/ui/unlockDialog.js:177
msgid "Log in as another user"
msgstr "他のユーザーでログイン"
@ -1538,55 +1554,51 @@ msgstr "待機中"
msgid "Unavailable"
msgstr "オフライン"
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "ユーザーの切り替え"
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "セッションの切り替え"
#: ../js/ui/userMenu.js:743
#: ../js/ui/userMenu.js:740
msgid "Notifications"
msgstr "通知"
#: ../js/ui/userMenu.js:751
#: ../js/ui/userMenu.js:748
msgid "System Settings"
msgstr "システム設定"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "ユーザーの切り替え"
#: ../js/ui/userMenu.js:761
msgid "Log Out"
msgstr "ログアウト"
#: ../js/ui/userMenu.js:769
#: ../js/ui/userMenu.js:766
msgid "Lock"
msgstr "ロック"
#: ../js/ui/userMenu.js:784
#: ../js/ui/userMenu.js:781
msgid "Install Updates & Restart"
msgstr "更新のインストールと再起動"
#: ../js/ui/userMenu.js:802
#: ../js/ui/userMenu.js:799
msgid "Your chat status will be set to busy"
msgstr "取り込み中に設定されます"
#: ../js/ui/userMenu.js:803
#: ../js/ui/userMenu.js:800
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
msgstr "チャットなどの通知メッセージが表示されなくなります。オンライン状態が変更され、あなたがメッセージに目を通せない状態にあることを、他の人が知ることができます。"
#: ../js/ui/viewSelector.js:85
#: ../js/ui/viewSelector.js:87
msgid "Windows"
msgstr "ウィンドウ"
#: ../js/ui/viewSelector.js:89
#: ../js/ui/viewSelector.js:91
msgid "Applications"
msgstr "アプリケーション"
#: ../js/ui/viewSelector.js:93
#: ../js/ui/viewSelector.js:95
msgid "Search"
msgstr "検索"
#: ../js/ui/wanda.js:119
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1595,12 +1607,12 @@ msgstr ""
"すまない、今日は賢言がないのだ:\n"
"%s"
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "預言者 %s 曰く"
#: ../js/ui/wanda.js:164
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "あなたの好きなイースターエッグ"
@ -1633,19 +1645,19 @@ msgstr[0] "入力数: %u"
msgid "System Sounds"
msgstr "システムのサウンド"
#: ../src/main.c:330
#: ../src/main.c:332
msgid "Print version"
msgstr "バージョンを表示"
#: ../src/main.c:336
#: ../src/main.c:338
msgid "Mode used by GDM for login screen"
msgstr "ログイン画面で GDM が使用するモード"
#: ../src/main.c:342
#: ../src/main.c:344
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "指定したモードを使用する (例: ログイン画面用の \"gdm\")"
#: ../src/main.c:348
#: ../src/main.c:350
msgid "List possible modes"
msgstr "使用可能なモードを一覧表示する"
@ -1674,6 +1686,9 @@ msgstr "既定"
msgid "Authentication dialog was dismissed by the user"
msgstr "認証ダイアログはユーザーに拒否されました"
#~ msgid "Switch Session"
#~ msgstr "セッションの切り替え"
#~ msgid "disabled OpenSearch providers"
#~ msgstr "OpenSearch プロバイダーを無効にする"

1720
po/kn.po

File diff suppressed because it is too large Load Diff

116
po/ko.po
View File

@ -13,8 +13,8 @@ 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: 2012-09-19 11:02+0000\n"
"PO-Revision-Date: 2012-09-22 18:49+0900\n"
"POT-Creation-Date: 2012-10-04 06:59+0000\n"
"PO-Revision-Date: 2012-10-13 18:55+0900\n"
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
"Language: Korean\n"
@ -200,7 +200,17 @@ msgid ""
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
"used as a placeholder for a guess at the optimal thread count on the system."
msgstr "녹화 인코딩에 사용할 GStreamer 파이프라인을 지정합니다. gst-launch 프로그램에 사용하는 문법을 따릅니다. 녹화한 영상이 입력되는 싱크 패드는 이 파이프라인에 연결하지 않은 상태여야 합니다. 보통은 소스 패드도 연결하지 않고, 소스 패드의 출력을 출력 파일에 기록합니다. 하지만 파이프라인에서 이 출력을 처리할 수도 있습니다. shout2send 같은 프로그램을 이용해 아이스캐스트 서버로 출력을 보내거나 하는 용도로 사용할 수 있습니다. 설정을 취소하거나 빈 값으로 설정하면, 기본 파이프라인을 사용합니다. 기본 파이프라인은 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux'이고 VP8 코덱을 사용해 WEBM 형식으로 녹화합니다. '%T' 기호는 시스템에서 최적으로 생각되는 스레드 수로 대체됩니다."
msgstr ""
"녹화 인코딩에 사용할 GStreamer 파이프라인을 지정합니다. gst-launch 프로그램"
"에 사용하는 문법을 따릅니다. 녹화한 영상이 입력되는 싱크 패드는 이 파이프라인"
"에 연결하지 않은 상태여야 합니다. 보통은 소스 패드도 연결하지 않고, 소스 패드"
"의 출력을 출력 파일에 기록합니다. 하지만 파이프라인에서 이 출력을 처리할 수"
"도 있습니다. shout2send 같은 프로그램을 이용해 아이스캐스트 서버로 출력을 보"
"내거나 하는 용도로 사용할 수 있습니다. 설정을 취소하거나 빈 값으로 설정하면, "
"기본 파이프라인을 사용합니다. 기본 파이프라인은 'vp8enc min_quantizer=13 "
"max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux'이"
"고 VP8 코덱을 사용해 WEBM 형식으로 녹화합니다. '%T' 기호는 시스템에서 최적으"
"로 생각되는 스레드 수로 대체됩니다."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
msgid "File extension used for storing the screencast"
@ -228,11 +238,11 @@ msgstr "확장"
msgid "Select an extension to configure using the combobox above."
msgstr "위의 콤보상자를 사용해 설정할 확장을 선택하십시오."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:528
msgid "Session..."
msgstr "세션..."
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:676
msgctxt "title"
msgid "Sign In"
msgstr "로그인"
@ -240,37 +250,42 @@ msgstr "로그인"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:743
msgid "Not listed?"
msgstr "목록에 없습니까?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "취소"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:901
msgctxt "button"
msgid "Sign In"
msgstr "로그인"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1240
msgid "Login Window"
msgstr "로그인 창"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "전원"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:775
msgid "Suspend"
msgstr "절전"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "다시 시작"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:774
msgid "Power Off"
msgstr "컴퓨터 끄기"
@ -485,16 +500,16 @@ msgstr "이번주"
msgid "Next week"
msgstr "다음주"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "이동식 장치"
#: ../js/ui/components/autorunManager.js:575
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "%s 프로그램으로 열기"
#: ../js/ui/components/autorunManager.js:601
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "꺼내기"
@ -975,11 +990,11 @@ msgid "Download and install '%s' from extensions.gnome.org?"
msgstr ""
"extensions.gnome.org 사이트에서 '%s' 확장을 다운로드해 설치하시겠습니까?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "트레이"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "키보드"
@ -1032,19 +1047,19 @@ msgstr "소스 보기"
msgid "Web Page"
msgstr "웹페이지"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "열기"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "제거"
#: ../js/ui/messageTray.js:2052
#: ../js/ui/messageTray.js:1533
msgid "Message Tray"
msgstr "메시지 트레이"
#: ../js/ui/messageTray.js:2508
#: ../js/ui/messageTray.js:2544
msgid "System Information"
msgstr "시스템 정보"
@ -1270,7 +1285,7 @@ msgstr "키보드 설정"
msgid "Mouse Settings"
msgstr "마우스 설정"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "소리 설정"
@ -1328,11 +1343,11 @@ msgstr "해당 장치에 표시된 PIN을 입력하십시오."
msgid "OK"
msgstr "확인"
#: ../js/ui/status/keyboard.js:227
#: ../js/ui/status/keyboard.js:228
msgid "Show Keyboard Layout"
msgstr "키보드 배치 표시"
#: ../js/ui/status/keyboard.js:232
#: ../js/ui/status/keyboard.js:233
msgid "Region and Language Settings"
msgstr "지역 및 언어 설정"
@ -1552,7 +1567,7 @@ msgstr "알 수 없음"
# 오디오 볼륨
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "볼륨"
@ -1564,63 +1579,59 @@ msgstr "마이크"
msgid "Log in as another user"
msgstr "다른 사용자로 로그인"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "대화 가능"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "다른 용무 중"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "안 보임"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "자리 비움"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "입력 없음"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "사용 불가"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
msgid "Switch User"
msgstr "사용자 바꾸기"
#: ../js/ui/userMenu.js:614
msgid "Switch Session"
msgstr "세션 바꾸기"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:740
msgid "Notifications"
msgstr "알림"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:748
msgid "System Settings"
msgstr "시스템 설정"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "사용자 바꾸기"
#: ../js/ui/userMenu.js:761
msgid "Log Out"
msgstr "로그아웃"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:766
msgid "Lock"
msgstr "잠그기"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:781
msgid "Install Updates & Restart"
msgstr "업데이트 설치 후 다시 시작"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:799
msgid "Your chat status will be set to busy"
msgstr "대화 가능 상태가 다른 용무 중으로 설정됩니다"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:800
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1640,7 +1651,7 @@ msgstr "프로그램"
msgid "Search"
msgstr "검색"
#: ../js/ui/wanda.js:119
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1650,12 +1661,12 @@ msgstr ""
"%s"
# 원래 "신탁"이지만 한국인이 이해하기 쉽게 맞게 변경.
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "현자 %s께서 말씀하시길"
#: ../js/ui/wanda.js:164
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "여러분이 좋아하는 이스터 에그"
@ -1729,3 +1740,6 @@ msgstr "기본값"
#: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user"
msgstr "인증 대화 창을 사용자가 닫았습니다"
#~ msgid "Switch Session"
#~ msgstr "세션 바꾸기"

358
po/lt.po
View File

@ -1,5 +1,5 @@
# Lithuanian translation for gnome-shell.
# Copyright (C) 2010 Free Software Foundation, Inc.
# Copyright © 2010-2012 Free Software Foundation, Inc.
# This file is distributed under the same license as the gnome-shell package.
# Žygimantas Beručka <zygis@gnome.org>, 2010, 2011, 2012.
# Algimantas Margevičius <gymka@mail.ru>, 2011.
@ -7,17 +7,19 @@
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: 2012-09-19 11:02+0000\n"
"PO-Revision-Date: 2012-09-21 20:53+0300\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-09-27 19:27+0000\n"
"PO-Revision-Date: 2012-09-30 12:30+0300\n"
"Last-Translator: Žygimantas Beručka <zygis@gnome.org>\n"
"Language-Team: Lithuanian\n"
"Language: lt\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%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Virtaal 0.7.0\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
"100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Virtaal 0.7.1\n"
"X-Project-Style: gnome\n"
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
@ -26,15 +28,13 @@ msgstr "Ekranvaizdžiai"
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
msgid "Record a screencast"
msgstr "Įrašyti ekrano veiksmus"
msgstr "Įrašyti ekrano vaizdo įrašą"
#: ../data/50-gnome-shell-system.xml.in.h:1
#| msgid "File System"
msgid "System"
msgstr "Sistema"
#: ../data/50-gnome-shell-system.xml.in.h:2
#| msgid "Message Tray"
msgid "Show the message tray"
msgstr "Rodyti pranešimų juostą"
@ -57,35 +57,62 @@ msgstr "Konfigūruoti GNOME Shell plėtinius"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "Įjungti vidinius, Alt-F2 klavišų pagalba pasiekiamus įrankius, naudingus programuotojams ir bandytojams"
msgstr ""
"Įjungti vidinius, Alt-F2 klavišų pagalba pasiekiamus įrankius, naudingus "
"programuotojams ir bandytojams"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
msgstr "Suteikia prieigą prie vidinio derinimo ir stebėjimo įrankių, naudojant Alt-F2 dialogą."
msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
"dialog."
msgstr ""
"Suteikia prieigą prie vidinio derinimo ir stebėjimo įrankių, naudojant Alt-"
"F2 dialogą."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
msgid "Uuids of extensions to enable"
msgstr "Įjungtinų plėtinių UUID."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
msgid "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension DBus methods on org.gnome.Shell."
msgstr "GNOME Shell plėtiniai turi uuid savybę; šiame rakte išvardinti plėtiniai, kurie turėtų būti įkelti. Bet kuris plėtinys, kuris nori būti įkeltas, turi būti šiame sąraše. Šį sąrašą taip pat galima keisti naudojant org.gnome.Shell DBus metodus EnableExtension ir DisableExtension."
msgid ""
"GNOME Shell extensions have a uuid property; this key lists extensions which "
"should be loaded. Any extension that wants to be loaded needs to be in this "
"list. You can also manipulate this list with the EnableExtension and "
"DisableExtension DBus methods on org.gnome.Shell."
msgstr ""
"GNOME Shell plėtiniai turi uuid savybę; šiame rakte išvardinti plėtiniai, "
"kurie turėtų būti įkelti. Bet kuris plėtinys, kuris nori būti įkeltas, turi "
"būti šiame sąraše. Šį sąrašą taip pat galima keisti naudojant org.gnome."
"Shell DBus metodus EnableExtension ir DisableExtension."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
msgid "Whether to collect stats about applications usage"
msgstr "Ar rinkti statistinę informaciją apie programų naudojimą"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
msgstr "Įprastai GNOME aplinka stebi aktyvias programas siekiant pateikti dažniausiai naudojamas (pvz., leistukuose). Nors šie duomenys konfidencialiai saugomi, jei norite, saugumo sumetimais galite šią funkciją išjungti. Atminkite, kad išjungus šią funkciją anksčiau įrašyti duomenys nebus pašalinti."
msgid ""
"The shell normally monitors active applications in order to present the most "
"used ones (e.g. in launchers). While this data will be kept private, you may "
"want to disable this for privacy reasons. Please note that doing so won't "
"remove already saved data."
msgstr ""
"Įprastai GNOME aplinka stebi aktyvias programas siekiant pateikti "
"dažniausiai naudojamas (pvz., leistukuose). Nors šie duomenys "
"konfidencialiai saugomi, jei norite, saugumo sumetimais galite šią funkciją "
"išjungti. Atminkite, kad išjungus šią funkciją anksčiau įrašyti duomenys "
"nebus pašalinti."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
msgid "List of desktop file IDs for favorite applications"
msgstr "Mėgstamų programų darbastalio failų ID sąrašas"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:8
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
msgstr "Programos, atitinkančios šiuos identifikatorius, bus rodomos mėgstamų srityje."
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgstr ""
"Programos, atitinkančios šiuos identifikatorius, bus rodomos mėgstamų "
"srityje."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
msgid "History for command (Alt-F2) dialog"
@ -96,12 +123,20 @@ msgid "History for the looking glass dialog"
msgstr "Didinamojo stiklo dialogo retrospektyva"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
msgid "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
msgstr "Naudojama viduje paskutinei naudotojo nustatytai pranešimų būsenai saugoti. Vertė yra iš TpConnectionPresenceType išvardinimo."
msgid ""
"Internally used to store the last IM presence explicitly set by the user. "
"The value here is from the TpConnectionPresenceType enumeration."
msgstr ""
"Naudojama viduje paskutinei naudotojo nustatytai pranešimų būsenai saugoti. "
"Vertė yra iš TpConnectionPresenceType išvardinimo."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
msgid "Internally used to store the last session presence status for the user. The value here is from the GsmPresenceStatus enumeration."
msgstr "Naudojama viduje paskutines sesijos naudotojo būvimo būsenai saugoti. Vertė yra iš GsmPresenceStatus išvardinimo."
msgid ""
"Internally used to store the last session presence status for the user. The "
"value here is from the GsmPresenceStatus enumeration."
msgstr ""
"Naudojama viduje paskutines sesijos naudotojo būvimo būsenai saugoti. Vertė "
"yra iš GsmPresenceStatus išvardinimo."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
msgid "Show the week date in the calendar"
@ -148,8 +183,12 @@ msgid "Framerate used for recording screencasts."
msgstr "Kadrų dažnis, naudojamas norint įrašyti ekrano vaizdo įrašą."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
msgstr "GNOME Shell ekranų įrašymo programa sukurto ekrano įrašo kadrų dažnis kadrais per sekundę."
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
msgstr ""
"GNOME Shell ekranų įrašymo programa sukurto ekrano įrašo kadrų dažnis "
"kadrais per sekundę."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "The gstreamer pipeline used to encode the screencast"
@ -157,16 +196,43 @@ msgstr "Gstreamer konvejeris, naudojamas užkoduojant ekrano vaizdo įrašą."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#, no-c-format
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
msgstr "Nurodo GStreamer konvejerį, naudojamą įrašams koduoti. Jame naudojama gst-launch sintaksė. Konvejeryje turėtų būti neprijungtas išvesties pagrindo elementas, kuriame įrašomas vaizdo įrašas. Paprastai jame yra neprijungtas šaltinio elementas; išvestis iš to elemento bus įrašyta į išvesties failą. Tačiau konvejeris taip pat gali pasirūpinti savo paties išvestimi tai gali būti panaudota norint perduoti išvestį icecast serveriui per shout2send ar pan. elementą. Kai reikšmė nenustatyta ar nustatyta tuščia reikšmė, naudojamas numatytasis konvejeris. Šiuo metu tai yra „vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux“ ir įrašo į WEBM naudojant VP8 kodeką. %T yra naudojamas kaip žymeklis optimalaus gijų skaičiaus sistemoje spėjimui."
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
"the recorded video is recorded. It will normally have a unconnected source "
"pad; output from that pad will be written into the output file. However the "
"pipeline can also take care of its own output - this might be used to send "
"the output to an icecast server via shout2send or similar. When unset or set "
"to an empty value, the default pipeline will be used. This is currently "
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
"used as a placeholder for a guess at the optimal thread count on the system."
msgstr ""
"Nurodo GStreamer konvejerį, naudojamą įrašams koduoti. Jame naudojama gst-"
"launch sintaksė. Konvejeryje turėtų būti neprijungtas išvesties pagrindo "
"elementas, kuriame įrašomas vaizdo įrašas. Paprastai jame yra neprijungtas "
"šaltinio elementas; išvestis iš to elemento bus įrašyta į išvesties failą. "
"Tačiau konvejeris taip pat gali pasirūpinti savo paties išvestimi tai gali "
"būti panaudota norint perduoti išvestį icecast serveriui per shout2send ar "
"pan. elementą. Kai reikšmė nenustatyta ar nustatyta tuščia reikšmė, "
"naudojamas numatytasis konvejeris. Šiuo metu tai yra „vp8enc "
"min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! "
"queue ! webmmux“ ir įrašo į WEBM naudojant VP8 kodeką. %T yra naudojamas "
"kaip žymeklis optimalaus gijų skaičiaus sistemoje spėjimui."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
msgid "File extension used for storing the screencast"
msgstr "Failų plėtinys, naudojamas įrašyti ekrano vaizdo įrašą"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
msgstr "Įrašytų ekrano vaizdo įrašų failų vardas bus unikalus, sudaromas atsižvelgiant į dabartinę datą ir naudojantis šį plėtinį. Rašant į kitą konteinerio formatą jį reikėtų pakeisti."
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
"a different container format."
msgstr ""
"Įrašytų ekrano vaizdo įrašų failų vardas bus unikalus, sudaromas "
"atsižvelgiant į dabartinę datą ir naudojantis šį plėtinį. Rašant į kitą "
"konteinerio formatą jį reikėtų pakeisti."
#: ../js/extensionPrefs/main.js:124
#, c-format
@ -181,11 +247,11 @@ msgstr "Plėtinys"
msgid "Select an extension to configure using the combobox above."
msgstr "Išskleidžiamajame sąraše pasirinkite konfigūruotiną plėtinį."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:528
msgid "Session..."
msgstr "Seansas..."
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:676
msgctxt "title"
msgid "Sign In"
msgstr "Prisijungti"
@ -193,50 +259,46 @@ msgstr "Prisijungti"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:743
msgid "Not listed?"
msgstr "Nėra sąraše?"
#: ../js/gdm/loginDialog.js:894
#: ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162
#: ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195
#: ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427
#: ../js/ui/unlockDialog.js:166
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "Atsisakyti"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:901
msgctxt "button"
msgid "Sign In"
msgstr "Prisijungti"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1240
msgid "Login Window"
msgstr "Prisijungimo langas"
#: ../js/gdm/powerMenu.js:88
#: ../js/ui/userMenu.js:658
#: ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "Energija"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
msgid "Suspend"
msgstr "Užmigdyti"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "Paleisti iš naujo"
#: ../js/gdm/powerMenu.js:98
#: ../js/ui/userMenu.js:660
#: ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
msgid "Power Off"
msgstr "Išjungti"
#: ../js/gdm/util.js:148
#| msgid "Authentication Required"
msgid "Authentication error"
msgstr "Tapatybės patvirtinimo klaida"
@ -283,8 +345,7 @@ msgstr "NUSTATYMAI"
msgid "New Window"
msgstr "Naujas langas"
#: ../js/ui/appDisplay.js:678
#: ../js/ui/dash.js:271
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
msgid "Remove from Favorites"
msgstr "Pašalinti iš mėgstamų"
@ -461,8 +522,7 @@ msgstr "Atverti su %s"
msgid "Eject"
msgstr "Išimti"
#: ../js/ui/components/keyring.js:86
#: ../js/ui/components/polkitAgent.js:260
#: ../js/ui/components/keyring.js:86 ../js/ui/components/polkitAgent.js:260
msgid "Password:"
msgstr "Slaptažodis:"
@ -514,8 +574,12 @@ msgstr "Belaidžiam tinklui reikia patvirtinti tapatybę"
#: ../js/ui/components/networkAgent.js:310
#, c-format
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
msgstr "Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio tinklo „%s“."
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"'%s'."
msgstr ""
"Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio "
"tinklo „%s“."
#: ../js/ui/components/networkAgent.js:314
msgid "Wired 802.1X authentication"
@ -566,8 +630,7 @@ msgstr "Patvirtinti tapatybę"
#. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password),
#. * for instance.
#: ../js/ui/components/polkitAgent.js:248
#: ../js/ui/shellMountOperation.js:381
#: ../js/ui/components/polkitAgent.js:248 ../js/ui/shellMountOperation.js:381
msgid "Sorry, that didn't work. Please try again."
msgstr "Atsiprašome, tai nesuveikė. Bandykite dar kartą."
@ -629,7 +692,7 @@ msgstr "Išsiųsta <b>%B %d</b>, <b>%A</b>"
#: ../js/ui/components/telepathyClient.js:959
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
msgstr "Išsiųsta %Y <b>%B %d</b>, <b>%A</b>"
msgstr "Išsiųsta %Y m. <b>%B %d d.</b>, <b>%A</b>"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
@ -772,7 +835,8 @@ msgid "This account is already connected to the server"
msgstr "Ši paskyra jau prijungta prie serverio"
#: ../js/ui/components/telepathyClient.js:1332
msgid "Connection has been replaced by a new connection using the same resource"
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "Ryšys pakeistas nauju ryšiu naudojant tą patį išteklių"
#: ../js/ui/components/telepathyClient.js:1334
@ -788,12 +852,19 @@ msgid "Certificate has been revoked"
msgstr "Liudijimas atšauktas"
#: ../js/ui/components/telepathyClient.js:1340
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "Liudijimui naudojamas nesaugus šifravimo algoritmas arba jis kriptografiškai silpnas"
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Liudijimui naudojamas nesaugus šifravimo algoritmas arba jis kriptografiškai "
"silpnas"
#: ../js/ui/components/telepathyClient.js:1342
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
msgstr "Serverio liudijimo ilgis arba liudijimų eilės dydis viršija kriptografijos bibliotekos apribojimus"
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
msgstr ""
"Serverio liudijimo ilgis arba liudijimų eilės dydis viršija kriptografijos "
"bibliotekos apribojimus"
#: ../js/ui/components/telepathyClient.js:1344
msgid "Internal error"
@ -818,8 +889,7 @@ msgstr "Taisyti paskyrą"
msgid "Unknown reason"
msgstr "Nežinoma priežastis"
#: ../js/ui/dash.js:245
#: ../js/ui/dash.js:273
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
msgid "Show Applications"
msgstr "Rodyti programos"
@ -851,7 +921,9 @@ msgstr "Atsijungti"
#: ../js/ui/endSessionDialog.js:63
msgid "Click Log Out to quit these applications and log out of the system."
msgstr "Spustelėkite „Išeiti“, jei norite užverti šias programas ir atsijungti nuo sistemos."
msgstr ""
"Spustelėkite „Išeiti“, jei norite užverti šias programas ir atsijungti nuo "
"sistemos."
#: ../js/ui/endSessionDialog.js:65
#, c-format
@ -885,7 +957,9 @@ msgstr "Išjungti"
#: ../js/ui/endSessionDialog.js:82
msgid "Click Power Off to quit these applications and power off the system."
msgstr "Spustelėkite „Išjungti“, jei norite užverti šias programas ir išjungti sistemą."
msgstr ""
"Spustelėkite „Išjungti“, jei norite užverti šias programas ir išjungti "
"sistemą."
#: ../js/ui/endSessionDialog.js:84
#, c-format
@ -899,8 +973,7 @@ msgstr[2] "Sistema automatiškai išsijungs po %d sekundžių."
msgid "Powering off the system."
msgstr "Sistema išjungiama."
#: ../js/ui/endSessionDialog.js:90
#: ../js/ui/endSessionDialog.js:107
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107
msgctxt "button"
msgid "Restart"
msgstr "Paleisti iš naujo"
@ -917,7 +990,9 @@ msgstr "Paleisti iš naujo"
#: ../js/ui/endSessionDialog.js:99
msgid "Click Restart to quit these applications and restart the system."
msgstr "Spustelėkite „Paleisti iš naujo“, jei norite užverti šias programas ir paleisti sistemą iš naujo."
msgstr ""
"Spustelėkite „Paleisti iš naujo“, jei norite užverti šias programas ir "
"paleisti sistemą iš naujo."
#: ../js/ui/endSessionDialog.js:101
#, c-format
@ -940,12 +1015,11 @@ msgstr "Įdiegti"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Atsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "dėklas"
#: ../js/ui/keyboard.js:561
#: ../js/ui/status/keyboard.js:194
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Klaviatūra"
@ -964,8 +1038,7 @@ msgstr "%s nepranešė apie jokias klaidas."
msgid "Hide Errors"
msgstr "Slėpti klaidas"
#: ../js/ui/lookingGlass.js:755
#: ../js/ui/lookingGlass.js:815
#: ../js/ui/lookingGlass.js:755 ../js/ui/lookingGlass.js:815
msgid "Show Errors"
msgstr "Rodyti klaidas"
@ -975,8 +1048,7 @@ msgstr "Įjungta"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:767
#: ../src/gvc/gvc-mixer-control.c:1082
#: ../js/ui/lookingGlass.js:767 ../src/gvc/gvc-mixer-control.c:1082
msgid "Disabled"
msgstr "Išjungta"
@ -1000,24 +1072,23 @@ msgstr "Žiūrėti šaltinį"
msgid "Web Page"
msgstr "Tinklalapis"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "Atverti"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "Pašalinti"
#: ../js/ui/messageTray.js:2052
#: ../js/ui/messageTray.js:2088
msgid "Message Tray"
msgstr "Pranešimų juosta"
#: ../js/ui/messageTray.js:2508
#: ../js/ui/messageTray.js:2551
msgid "System Information"
msgstr "Sistemos informacija"
#: ../js/ui/notificationDaemon.js:506
#: ../src/shell-app.c:373
#: ../js/ui/notificationDaemon.js:506 ../src/shell-app.c:373
msgctxt "program"
msgid "Unknown"
msgstr "Nežinoma"
@ -1125,8 +1196,7 @@ msgstr "Slaptažodis"
msgid "Remember Password"
msgstr "Atsiminti slaptažodį"
#: ../js/ui/shellMountOperation.js:400
#: ../js/ui/unlockDialog.js:169
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
msgid "Unlock"
msgstr "Atrakinti"
@ -1178,14 +1248,10 @@ msgstr "Didelis kontrastas"
msgid "Large Text"
msgstr "Didelis tekstas"
#: ../js/ui/status/bluetooth.js:27
#: ../js/ui/status/bluetooth.js:31
#: ../js/ui/status/bluetooth.js:251
#: ../js/ui/status/bluetooth.js:304
#: ../js/ui/status/bluetooth.js:335
#: ../js/ui/status/bluetooth.js:371
#: ../js/ui/status/bluetooth.js:400
#: ../js/ui/status/network.js:867
#: ../js/ui/status/bluetooth.js:27 ../js/ui/status/bluetooth.js:31
#: ../js/ui/status/bluetooth.js:251 ../js/ui/status/bluetooth.js:304
#: ../js/ui/status/bluetooth.js:335 ../js/ui/status/bluetooth.js:371
#: ../js/ui/status/bluetooth.js:400 ../js/ui/status/network.js:867
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1206,8 +1272,7 @@ msgid "Bluetooth Settings"
msgstr "Bluetooth nustatymai"
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
#: ../js/ui/status/bluetooth.js:103
#: ../js/ui/status/network.js:208
#: ../js/ui/status/bluetooth.js:103 ../js/ui/status/network.js:208
msgid "hardware disabled"
msgstr "įrenginys išjungtas"
@ -1215,13 +1280,11 @@ msgstr "įrenginys išjungtas"
msgid "Connection"
msgstr "Ryšys"
#: ../js/ui/status/bluetooth.js:207
#: ../js/ui/status/network.js:458
#: ../js/ui/status/bluetooth.js:207 ../js/ui/status/network.js:458
msgid "disconnecting..."
msgstr "atsijungiama..."
#: ../js/ui/status/bluetooth.js:220
#: ../js/ui/status/network.js:464
#: ../js/ui/status/bluetooth.js:220 ../js/ui/status/network.js:464
#: ../js/ui/status/network.js:934
msgid "connecting..."
msgstr "jungiamasi..."
@ -1251,8 +1314,7 @@ msgstr "Klaviatūros nustatymai"
msgid "Mouse Settings"
msgstr "Pelės nustatymai"
#: ../js/ui/status/bluetooth.js:269
#: ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Garso nustatymai"
@ -1279,8 +1341,7 @@ msgstr "Leisti tik šį kartą"
msgid "Pairing confirmation for %s"
msgstr "Suporavimo patvirtinimas įrenginiui %s"
#: ../js/ui/status/bluetooth.js:378
#: ../js/ui/status/bluetooth.js:408
#: ../js/ui/status/bluetooth.js:378 ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Įrenginys %s pageidauja būti suporuotas su šiuo kompiuteriu"
@ -1311,11 +1372,11 @@ msgstr "Įveskite PIN, nurodytą įrenginyje."
msgid "OK"
msgstr "Gerai"
#: ../js/ui/status/keyboard.js:227
#: ../js/ui/status/keyboard.js:228
msgid "Show Keyboard Layout"
msgstr "Rodyti klaviatūros išdėstymą"
#: ../js/ui/status/keyboard.js:232
#: ../js/ui/status/keyboard.js:233
msgid "Region and Language Settings"
msgstr "Regiono ir kalbos nustatymai"
@ -1339,8 +1400,7 @@ msgid "unmanaged"
msgstr "nevaldomas"
#. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:467
#: ../js/ui/status/network.js:937
#: ../js/ui/status/network.js:467 ../js/ui/status/network.js:937
msgid "authentication required"
msgstr "reikia patvirtinti tapatybę"
@ -1361,20 +1421,17 @@ msgstr "atjungtas laidas"
msgid "unavailable"
msgstr "nepasiekiamas"
#: ../js/ui/status/network.js:491
#: ../js/ui/status/network.js:939
#: ../js/ui/status/network.js:491 ../js/ui/status/network.js:939
msgid "connection failed"
msgstr "nepavyko prisijungti"
#: ../js/ui/status/network.js:552
#: ../js/ui/status/network.js:1529
#: ../js/ui/status/network.js:552 ../js/ui/status/network.js:1529
msgid "More..."
msgstr "Rodyti daugiau tinklų..."
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:588
#: ../js/ui/status/network.js:1459
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1459
msgid "Connected (private)"
msgstr "Prisijungta (privatus)"
@ -1391,8 +1448,7 @@ msgid "Auto dial-up"
msgstr "Automatinis telefoninis"
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:853
#: ../js/ui/status/network.js:1476
#: ../js/ui/status/network.js:853 ../js/ui/status/network.js:1476
#, c-format
msgid "Auto %s"
msgstr "Automatinis %s"
@ -1495,8 +1551,7 @@ msgstr[0] "liko %d minutė"
msgstr[1] "liko %d minutės"
msgstr[2] "liko %d minučių"
#: ../js/ui/status/power.js:112
#: ../js/ui/status/power.js:186
#: ../js/ui/status/power.js:112 ../js/ui/status/power.js:186
#, c-format
msgctxt "percent of battery remaining"
msgid "%d%%"
@ -1548,8 +1603,7 @@ msgid "Unknown"
msgstr "Nežinoma"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47
#: ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Garsumas"
@ -1561,66 +1615,70 @@ msgstr "Mikrofonas"
msgid "Log in as another user"
msgstr "Prisijungti kaip kitas naudotojas"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "Esu"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "Užsiėmęs (-usi)"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "Nematomas"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "Išėjęs (-usi)"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "Neužimtas"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "Nepasiekiamas"
#: ../js/ui/userMenu.js:613
#: ../js/ui/userMenu.js:754
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "Keisti naudotoją"
#: ../js/ui/userMenu.js:614
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "Perjungti seansą"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:743
msgid "Notifications"
msgstr "Pranešimai"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:751
msgid "System Settings"
msgstr "Sistemos nustatymai"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:764
msgid "Log Out"
msgstr "Atsijungti"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:769
msgid "Lock"
msgstr "Užrakinti"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:784
msgid "Install Updates & Restart"
msgstr "Įdiegti atnaujinimus ir įkelti iš naujo"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:802
msgid "Your chat status will be set to busy"
msgstr "Jūsų pokalbio būsena bus nustatyta į užimta"
#: ../js/ui/userMenu.js:798
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
msgstr "Pranešimai šiuo metu yra išjungti, įskaitant pokalbių pranešimus. Jūsų būsena internete atitinkamai pakoreguota, kad kiti galėtų žinoti, jog jūs galite nepamatyti jų pranešimų."
#: ../js/ui/userMenu.js:803
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
msgstr ""
"Pranešimai šiuo metu yra išjungti, įskaitant pokalbių pranešimus. Jūsų "
"būsena internete atitinkamai pakoreguota, kad kiti galėtų žinoti, jog jūs "
"galite nepamatyti jų pranešimų."
#: ../js/ui/viewSelector.js:85
msgid "Windows"
@ -1695,7 +1753,7 @@ msgstr "Veiksena, naudojama GDM prisijungimo ekrane"
#: ../src/main.c:342
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "Naudoti specialią veikseną, pvz. „gdm“ prisijungimo ekranui"
msgstr "Naudoti konkrečią veikseną, pvz., „gdm“ prisijungimo ekranui"
#: ../src/main.c:348
msgid "List possible modes"
@ -1725,21 +1783,3 @@ msgstr "Numatytasis"
#: ../src/shell-polkit-authentication-agent.c:343
msgid "Authentication dialog was dismissed by the user"
msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą"
#~ msgid "disabled OpenSearch providers"
#~ msgstr "išjungti OpenSearch tiekėjai"
#~ msgid "Failed to unmount '%s'"
#~ msgstr "Nepavyko atjungti „%s“"
#~ msgid "Retry"
#~ msgstr "Bandyti dar kartą"
#~ msgid "PLACES & DEVICES"
#~ msgstr "VIETOS IR ĮRENGINIAI"
#~ msgid "Home"
#~ msgstr "Namų aplankas"
#~ msgid "%1$s: %2$s"
#~ msgstr "%1$s: %2$s"

View File

@ -7,18 +7,19 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-09-25 10:39+0300\n"
"PO-Revision-Date: 2012-09-25 10:44+0300\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-10-04 06:59+0000\n"
"PO-Revision-Date: 2012-10-15 17:52+0300\n"
"Last-Translator: Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>\n"
"Language-Team: Latvian <lata-l18n@googlegroups.com>\n"
"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
"Language: lv\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 != 0 ? 1 : "
"2);\n"
"X-Generator: Lokalize 1.4\n"
"X-Generator: Lokalize 1.5\n"
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
msgid "Screenshots"
@ -243,11 +244,11 @@ 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/loginDialog.js:527
#: ../js/gdm/loginDialog.js:528
msgid "Session..."
msgstr "Sesija..."
#: ../js/gdm/loginDialog.js:675
#: ../js/gdm/loginDialog.js:676
msgctxt "title"
msgid "Sign In"
msgstr "Ierakstīties"
@ -255,23 +256,23 @@ msgstr "Ierakstīties"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:742
#: ../js/gdm/loginDialog.js:743
msgid "Not listed?"
msgstr "Nav sarakstā?"
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "Atcelt"
#: ../js/gdm/loginDialog.js:900
#: ../js/gdm/loginDialog.js:901
msgctxt "button"
msgid "Sign In"
msgstr "Ierakstīties"
#: ../js/gdm/loginDialog.js:1239
#: ../js/gdm/loginDialog.js:1240
msgid "Login Window"
msgstr "Ierakstīšanās logs"
@ -280,8 +281,8 @@ msgstr "Ierakstīšanās logs"
msgid "Power"
msgstr "Barošana"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:775
msgid "Suspend"
msgstr "Iesnaudināt"
@ -289,8 +290,8 @@ msgstr "Iesnaudināt"
msgid "Restart"
msgstr "Pārstartēt"
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:774
msgid "Power Off"
msgstr "Izslēgt"
@ -481,7 +482,7 @@ msgstr "Nekas nav ieplānots"
#: ../js/ui/calendar.js:715
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d %B"
msgstr "%A, %d. %B"
#. Translators: Shown on calendar heading when selected day occurs on different year
#: ../js/ui/calendar.js:718
@ -505,16 +506,16 @@ msgstr "Šonedēļ"
msgid "Next week"
msgstr "Nākamnedēļ"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "Izņemamās ierīces"
#: ../js/ui/components/autorunManager.js:575
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "Atvērt ar %s"
#: ../js/ui/components/autorunManager.js:601
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "Izgrūst"
@ -1075,11 +1076,11 @@ msgstr "Atvērt"
msgid "Remove"
msgstr "Izņemt"
#: ../js/ui/messageTray.js:2088
#: ../js/ui/messageTray.js:1533
msgid "Message Tray"
msgstr "Ziņojumu paplāte"
#: ../js/ui/messageTray.js:2551
#: ../js/ui/messageTray.js:2544
msgid "System Information"
msgstr "Sistēmas informācija"
@ -1141,7 +1142,7 @@ msgstr "Lūdzu, ievadiet komandu:"
#. long format
#: ../js/ui/screenShield.js:79
msgid "%A, %B %d"
msgstr "%A, %d %B"
msgstr "%A, %d. %B"
#: ../js/ui/screenShield.js:144
#, c-format
@ -1309,7 +1310,7 @@ msgstr "Tastatūras iestatījumi"
msgid "Mouse Settings"
msgstr "Peles iestatījumi"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Skaņas iestatījumi"
@ -1598,7 +1599,7 @@ msgid "Unknown"
msgstr "Nezināma"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Skaļums"
@ -1634,39 +1635,35 @@ msgstr "Dīkstāvē"
msgid "Unavailable"
msgstr "Nav pieejams"
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "Mainīt lietotāju"
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "Mainīt sesiju"
#: ../js/ui/userMenu.js:743
#: ../js/ui/userMenu.js:740
msgid "Notifications"
msgstr "Paziņojumi"
#: ../js/ui/userMenu.js:751
#: ../js/ui/userMenu.js:748
msgid "System Settings"
msgstr "Sistēmas iestatījumi"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "Mainīt lietotāju"
#: ../js/ui/userMenu.js:761
msgid "Log Out"
msgstr "Izrakstīties"
#: ../js/ui/userMenu.js:769
#: ../js/ui/userMenu.js:766
msgid "Lock"
msgstr "Bloķēt"
#: ../js/ui/userMenu.js:784
#: ../js/ui/userMenu.js:781
msgid "Install Updates & Restart"
msgstr "Instalēt atjauninājumus un pārstartēt"
#: ../js/ui/userMenu.js:802
#: ../js/ui/userMenu.js:799
msgid "Your chat status will be set to busy"
msgstr "Tērzēšanas status tiks iestatīts uz “aizņemts”"
#: ../js/ui/userMenu.js:803
#: ../js/ui/userMenu.js:800
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1687,7 +1684,7 @@ msgstr "Lietotnes"
msgid "Search"
msgstr "Meklēt"
#: ../js/ui/wanda.js:119
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1696,12 +1693,12 @@ msgstr ""
"Piedod, bet šodien nebūs nekādu gudrību:\n"
"%s"
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "%s saka Orākuls"
#: ../js/ui/wanda.js:164
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "Jūsu mīļākā Lieldienu ola"
@ -1779,6 +1776,9 @@ msgstr "Noklusētais"
msgid "Authentication dialog was dismissed by the user"
msgstr "Lietotājs noraidīja autentifikācijas dialoglodziņu"
#~ msgid "Switch Session"
#~ msgstr "Mainīt sesiju"
#~ msgid "disabled OpenSearch providers"
#~ msgstr "deaktivētie OpenSearch piegādātāji"

1174
po/nb.po

File diff suppressed because it is too large Load Diff

263
po/pl.po
View File

@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-09-19 16:38+0200\n"
"PO-Revision-Date: 2012-09-19 16:40+0200\n"
"POT-Creation-Date: 2012-10-31 19:12+0100\n"
"PO-Revision-Date: 2012-10-31 19:13+0100\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <gnomepl@aviary.pl>\n"
"Language: pl\n"
@ -142,62 +142,74 @@ msgstr ""
"użytkownika. Wartość pochodzi ze spisu GsmPresenceStatus."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
msgid "Always show the 'Log out' menuitem in the user menu."
msgstr "Wyświetlanie elementu menu \"Wyloguj się\" w menu użytkownika."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
msgid ""
"This key overrides the automatic hiding of the 'Log out' menuitem in single-"
"user, single-session situations."
msgstr ""
"Ten klucz zastępuje automatyczne ukrywanie elementu menu \"Wyloguj się\" w "
"sytuacji, gdy istnieje tylko jeden użytkownik i jedna sesja."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
msgid "Show the week date in the calendar"
msgstr "Wyświetlanie dnia tygodnia w kalendarzu"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
msgid "If true, display the ISO week date in the calendar."
msgstr ""
"Jeśli jest ustawione na \"true\", to wyświetla w kalendarzu dzień tygodnia w "
"formacie ISO."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
msgid "Keybinding to open the application menu"
msgstr "Skrót do otwarcia menu programu"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid "Keybinding to open the application menu."
msgstr "Skrót do otwarcia menu programu."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "Keybinding to toggle the visibility of the message tray"
msgstr "Skrót do przełączenia widoczności obszaru powiadamiania"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to toggle the visibility of the message tray."
msgstr "Skrót do przełączenia widoczności obszaru powiadamiania."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to toggle the screen recorder"
msgstr "Skrót do przełączenia nagrywania ekranu"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to start/stop the builtin screen recorder."
msgstr "Skrót do uruchomienia/zatrzymania wbudowanego nagrywania ekranu."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid "Which keyboard to use"
msgstr "Której klawiatury używać"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "The type of keyboard to use."
msgstr "Typ używanej klawiatury."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Framerate used for recording screencasts."
msgstr "Liczba klatek na sekundę do nagrywania ekranu."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
msgstr "Liczba klatek na sekundę wynikowego nagrania ekranu."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Potok biblioteki GStreamer używany do zakodowania nagrania ekranu"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -222,11 +234,11 @@ msgstr ""
"i nagrywa do formatu WebM używając kodeka VP8. %T jest zamieniane na "
"odgadniętą optymalną liczbę wątków dla komputera."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid "File extension used for storing the screencast"
msgstr "Rozszerzenie pliku używane do przechowywania nagrań ekranu"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@ -252,11 +264,11 @@ msgstr ""
"Proszę wybrać rozszerzenie do skonfigurowania używając powyższego pola "
"wyboru."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:529
msgid "Session..."
msgstr "Sesja..."
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:677
msgctxt "title"
msgid "Sign In"
msgstr "Proszę się zalogować"
@ -264,37 +276,42 @@ msgstr "Proszę się zalogować"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:736
msgid "Not listed?"
msgstr "Inny użytkownik?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
msgid "Cancel"
msgstr "Anuluj"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:894
msgctxt "button"
msgid "Sign In"
msgstr "Zaloguj"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1215
msgid "Login Window"
msgstr "Okno logowania"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "Zasilanie"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:664 ../js/ui/userMenu.js:668
#: ../js/ui/userMenu.js:779
msgid "Suspend"
msgstr "Uśpij"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "Uruchom ponownie"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:666 ../js/ui/userMenu.js:668
#: ../js/ui/userMenu.js:778
msgid "Power Off"
msgstr "Wyłącz komputer"
@ -345,7 +362,7 @@ msgstr "Ustawienia"
msgid "New Window"
msgstr "Nowe okno"
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
msgid "Remove from Favorites"
msgstr "Usuń z ulubionych"
@ -509,16 +526,16 @@ msgstr "Ten tydzień"
msgid "Next week"
msgstr "Następny tydzień"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "Urządzenia wymienne"
#: ../js/ui/components/autorunManager.js:575
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "Otwórz za pomocą %s"
#: ../js/ui/components/autorunManager.js:601
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "Wysuń"
@ -675,35 +692,35 @@ msgstr "Wycisz"
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
#: ../js/ui/components/telepathyClient.js:948
#: ../js/ui/components/telepathyClient.js:950
#, no-c-format
msgid "Sent at <b>%X</b> on <b>%A</b>"
msgstr "Wysłano w dniu <b>%e %b</b> o godzinie <b>%H:%M</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25",
#. shown when you get a chat message in the same year.
#: ../js/ui/components/telepathyClient.js:954
#: ../js/ui/components/telepathyClient.js:956
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
msgstr "Wysłano w dniu <b>%d %B</b>, <b>%A</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
#. shown when you get a chat message in a different year.
#: ../js/ui/components/telepathyClient.js:959
#: ../js/ui/components/telepathyClient.js:961
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
msgstr "Wysłano w dniu <b>%d %B</b> %Y, <b>%A</b>"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: ../js/ui/components/telepathyClient.js:988
#: ../js/ui/components/telepathyClient.js:990
#, c-format
msgid "%s is now known as %s"
msgstr "Użytkownik %s jest teraz znany jako %s"
#. translators: argument is a room name like
#. * room@jabber.org for example.
#: ../js/ui/components/telepathyClient.js:1088
#: ../js/ui/components/telepathyClient.js:1090
#, c-format
msgid "Invitation to %s"
msgstr "Zaproszenie do pokoju %s"
@ -711,42 +728,42 @@ msgstr "Zaproszenie do pokoju %s"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example.
#: ../js/ui/components/telepathyClient.js:1096
#: ../js/ui/components/telepathyClient.js:1098
#, c-format
msgid "%s is inviting you to join %s"
msgstr "Użytkownik %s zaprasza do dołączenia do pokoju %s"
#: ../js/ui/components/telepathyClient.js:1098
#: ../js/ui/components/telepathyClient.js:1177
#: ../js/ui/components/telepathyClient.js:1240
#: ../js/ui/components/telepathyClient.js:1100
#: ../js/ui/components/telepathyClient.js:1179
#: ../js/ui/components/telepathyClient.js:1242
msgid "Decline"
msgstr "Odmów"
#: ../js/ui/components/telepathyClient.js:1099
#: ../js/ui/components/telepathyClient.js:1178
#: ../js/ui/components/telepathyClient.js:1241
#: ../js/ui/components/telepathyClient.js:1101
#: ../js/ui/components/telepathyClient.js:1180
#: ../js/ui/components/telepathyClient.js:1243
msgid "Accept"
msgstr "Zaakceptuj"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/components/telepathyClient.js:1129
#: ../js/ui/components/telepathyClient.js:1131
#, c-format
msgid "Video call from %s"
msgstr "Wideorozmowa z użytkownikiem %s"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/components/telepathyClient.js:1132
#: ../js/ui/components/telepathyClient.js:1134
#, c-format
msgid "Call from %s"
msgstr "Rozmowa z użytkownikiem %s"
#: ../js/ui/components/telepathyClient.js:1137
#: ../js/ui/components/telepathyClient.js:1139
#: ../js/ui/status/bluetooth.js:346
msgid "Reject"
msgstr "Odrzuć"
#. translators: this is a button label (verb), not a noun
#: ../js/ui/components/telepathyClient.js:1139
#: ../js/ui/components/telepathyClient.js:1141
msgid "Answer"
msgstr "Odbierz"
@ -755,111 +772,111 @@ msgstr "Odbierz"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#.
#: ../js/ui/components/telepathyClient.js:1171
#: ../js/ui/components/telepathyClient.js:1173
#, c-format
msgid "%s is sending you %s"
msgstr "Użytkownik %s przysyła plik %s"
#. To translators: The parameter is the contact's alias
#: ../js/ui/components/telepathyClient.js:1206
#: ../js/ui/components/telepathyClient.js:1208
#, c-format
msgid "%s would like permission to see when you are online"
msgstr "Użytkownik %s prosi o uprawnienie do wyświetlania stanu"
#: ../js/ui/components/telepathyClient.js:1298
#: ../js/ui/components/telepathyClient.js:1300
msgid "Network error"
msgstr "Błąd sieci"
#: ../js/ui/components/telepathyClient.js:1300
#: ../js/ui/components/telepathyClient.js:1302
msgid "Authentication failed"
msgstr "Uwierzytelnienie się nie powiodło"
#: ../js/ui/components/telepathyClient.js:1302
#: ../js/ui/components/telepathyClient.js:1304
msgid "Encryption error"
msgstr "Błąd szyfrowania"
#: ../js/ui/components/telepathyClient.js:1304
#: ../js/ui/components/telepathyClient.js:1306
msgid "Certificate not provided"
msgstr "Nie podano certyfikatu"
#: ../js/ui/components/telepathyClient.js:1306
#: ../js/ui/components/telepathyClient.js:1308
msgid "Certificate untrusted"
msgstr "Certyfikat jest niezaufany"
#: ../js/ui/components/telepathyClient.js:1308
#: ../js/ui/components/telepathyClient.js:1310
msgid "Certificate expired"
msgstr "Certyfikat wygasł"
#: ../js/ui/components/telepathyClient.js:1310
#: ../js/ui/components/telepathyClient.js:1312
msgid "Certificate not activated"
msgstr "Certyfikat nie został aktywowany"
#: ../js/ui/components/telepathyClient.js:1312
#: ../js/ui/components/telepathyClient.js:1314
msgid "Certificate hostname mismatch"
msgstr "Nazwa komputera certyfikatu się nie zgadza"
#: ../js/ui/components/telepathyClient.js:1314
#: ../js/ui/components/telepathyClient.js:1316
msgid "Certificate fingerprint mismatch"
msgstr "Odcisk palca certyfikatu się nie zgadza"
#: ../js/ui/components/telepathyClient.js:1316
#: ../js/ui/components/telepathyClient.js:1318
msgid "Certificate self-signed"
msgstr "Certyfikat został samodzielnie podpisany"
#: ../js/ui/components/telepathyClient.js:1318
#: ../js/ui/components/telepathyClient.js:1320
msgid "Status is set to offline"
msgstr "Stan jest ustawiony na offline"
#: ../js/ui/components/telepathyClient.js:1320
#: ../js/ui/components/telepathyClient.js:1322
msgid "Encryption is not available"
msgstr "Szyfrowanie jest niedostępne"
#: ../js/ui/components/telepathyClient.js:1322
#: ../js/ui/components/telepathyClient.js:1324
msgid "Certificate is invalid"
msgstr "Certyfikat jest nieprawidłowy"
#: ../js/ui/components/telepathyClient.js:1324
#: ../js/ui/components/telepathyClient.js:1326
msgid "Connection has been refused"
msgstr "Odrzucono połączenie"
#: ../js/ui/components/telepathyClient.js:1326
#: ../js/ui/components/telepathyClient.js:1328
msgid "Connection can't be established"
msgstr "Nie można nawiązać połączenia"
#: ../js/ui/components/telepathyClient.js:1328
#: ../js/ui/components/telepathyClient.js:1330
msgid "Connection has been lost"
msgstr "Utracono połączenie"
#: ../js/ui/components/telepathyClient.js:1330
#: ../js/ui/components/telepathyClient.js:1332
msgid "This account is already connected to the server"
msgstr "To konto jest już połączone z serwerem"
#: ../js/ui/components/telepathyClient.js:1332
#: ../js/ui/components/telepathyClient.js:1334
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr ""
"Połączenie zostało zastąpione nowym z wykorzystaniem tego samego zasobu"
#: ../js/ui/components/telepathyClient.js:1334
#: ../js/ui/components/telepathyClient.js:1336
msgid "The account already exists on the server"
msgstr "Konto już istnieje na serwerze"
#: ../js/ui/components/telepathyClient.js:1336
#: ../js/ui/components/telepathyClient.js:1338
msgid "Server is currently too busy to handle the connection"
msgstr "Serwer jest obecnie zbyt zajęty, aby obsłużyć połączenie"
#: ../js/ui/components/telepathyClient.js:1338
#: ../js/ui/components/telepathyClient.js:1340
msgid "Certificate has been revoked"
msgstr "Certyfikat został unieważniony"
#: ../js/ui/components/telepathyClient.js:1340
#: ../js/ui/components/telepathyClient.js:1342
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Certyfikat używa niezabezpieczonego algorytmu szyfrowania lub jest "
"kryptograficznie słaby"
#: ../js/ui/components/telepathyClient.js:1342
#: ../js/ui/components/telepathyClient.js:1344
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -867,30 +884,30 @@ msgstr ""
"Długość certyfikatu serwera lub głębokość jego łańcucha przekracza "
"ograniczenia nałożone przez bibliotekę kryptograficzną"
#: ../js/ui/components/telepathyClient.js:1344
#: ../js/ui/components/telepathyClient.js:1346
msgid "Internal error"
msgstr "Błąd wewnętrzny"
#. translators: argument is the account name, like
#. * name@jabber.org for example.
#: ../js/ui/components/telepathyClient.js:1354
#: ../js/ui/components/telepathyClient.js:1356
#, c-format
msgid "Connection to %s failed"
msgstr "Połączenie z kontem %s się nie powiodło"
#: ../js/ui/components/telepathyClient.js:1363
#: ../js/ui/components/telepathyClient.js:1365
msgid "Reconnect"
msgstr "Połącz ponownie"
#: ../js/ui/components/telepathyClient.js:1364
#: ../js/ui/components/telepathyClient.js:1366
msgid "Edit account"
msgstr "Modyfikuj konto"
#: ../js/ui/components/telepathyClient.js:1409
#: ../js/ui/components/telepathyClient.js:1411
msgid "Unknown reason"
msgstr "Nieznana przyczyna"
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
msgid "Show Applications"
msgstr "Wyświetl programy"
@ -898,14 +915,14 @@ msgstr "Wyświetl programy"
msgid "Date and Time Settings"
msgstr "Ustawienia daty i czasu"
#: ../js/ui/dateMenu.js:109
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Otwórz kalendarz"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:175
#: ../js/ui/dateMenu.js:201
msgid "%A %B %e, %Y"
msgstr "%A, %e %B %Y"
@ -1013,11 +1030,11 @@ msgid "Download and install '%s' from extensions.gnome.org?"
msgstr ""
"Pobrać i zainstalować rozszerzenie \"%s\" z witryny extensions.gnome.org?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "Ikona"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Klawiatura"
@ -1070,23 +1087,23 @@ msgstr "Wyświetl źródło"
msgid "Web Page"
msgstr "Strona WWW"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1084
msgid "Open"
msgstr "Otwórz"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1091
msgid "Remove"
msgstr "Usuń"
#: ../js/ui/messageTray.js:2050
#: ../js/ui/messageTray.js:1543
msgid "Message Tray"
msgstr "Obszar powiadamiania"
#: ../js/ui/messageTray.js:2506
#: ../js/ui/messageTray.js:2549
msgid "System Information"
msgstr "Informacje systemowe"
#: ../js/ui/notificationDaemon.js:506 ../src/shell-app.c:373
#: ../js/ui/notificationDaemon.js:506 ../src/shell-app.c:374
msgctxt "program"
msgid "Unknown"
msgstr "Nieznany"
@ -1142,7 +1159,7 @@ msgstr "Proszę wprowadzić polecenie:"
#. Translators: This is a time format for a date in
#. long format
#: ../js/ui/screenShield.js:79
#: ../js/ui/screenShield.js:80
msgid "%A, %B %d"
msgstr "%A, %e %B"
@ -1194,7 +1211,7 @@ msgstr "Hasło"
msgid "Remember Password"
msgstr "Zapamiętanie hasła"
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
msgid "Unlock"
msgstr "Odblokuj"
@ -1312,7 +1329,7 @@ msgstr "Ustawienia klawiatury"
msgid "Mouse Settings"
msgstr "Ustawienia myszy"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Ustawienia dźwięku"
@ -1370,11 +1387,11 @@ msgstr "Proszę wprowadzić PIN wyświetlony na urządzeniu."
msgid "OK"
msgstr "OK"
#: ../js/ui/status/keyboard.js:227
#: ../js/ui/status/keyboard.js:228
msgid "Show Keyboard Layout"
msgstr "Wyświetl układ klawiatury"
#: ../js/ui/status/keyboard.js:232
#: ../js/ui/status/keyboard.js:233
msgid "Region and Language Settings"
msgstr "Ustawienia regionu i języka"
@ -1601,7 +1618,7 @@ msgid "Unknown"
msgstr "Nieznane"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Głośność"
@ -1609,67 +1626,63 @@ msgstr "Głośność"
msgid "Microphone"
msgstr "Mikrofon"
#: ../js/ui/unlockDialog.js:176
#: ../js/ui/unlockDialog.js:177
msgid "Log in as another user"
msgstr "Zaloguj jako inny użytkownik"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:181
msgid "Available"
msgstr "Dostępny"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:184
msgid "Busy"
msgstr "Zajęty"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:187
msgid "Invisible"
msgstr "Niewidoczny"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:190
msgid "Away"
msgstr "Nieobecny"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:193
msgid "Idle"
msgstr "Bezczynny"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:196
msgid "Unavailable"
msgstr "Niedostępny"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
msgid "Switch User"
msgstr "Przełącz użytkownika"
#: ../js/ui/userMenu.js:614
msgid "Switch Session"
msgstr "Przełącz sesję"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:744
msgid "Notifications"
msgstr "Powiadomienia"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:752
msgid "System Settings"
msgstr "Ustawienia systemu"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:760
msgid "Switch User"
msgstr "Przełącz użytkownika"
#: ../js/ui/userMenu.js:765
msgid "Log Out"
msgstr "Wyloguj się"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:770
msgid "Lock"
msgstr "Zablokuj ekran"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:785
msgid "Install Updates & Restart"
msgstr "Zaktualizuj i uruchom ponownie"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:803
msgid "Your chat status will be set to busy"
msgstr "Stan komunikatora zostanie ustawiony na \"zajęty\""
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:804
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1691,7 +1704,7 @@ msgstr "Programy"
msgid "Search"
msgstr "Wyszukiwanie"
#: ../js/ui/wanda.js:119
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1700,12 +1713,12 @@ msgstr ""
"Nic mądrego na dzisiaj:\n"
"%s"
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "Wyrocznia %s przemawia"
#: ../js/ui/wanda.js:164
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "Twój ulubiony żart"
@ -1742,23 +1755,23 @@ msgstr[2] "%u wejść"
msgid "System Sounds"
msgstr "Dźwięki systemowe"
#: ../src/main.c:330
#: ../src/main.c:332
msgid "Print version"
msgstr "Wyświetla wersję"
#: ../src/main.c:336
#: ../src/main.c:338
msgid "Mode used by GDM for login screen"
msgstr "Tryb używany przez GDM dla ekranu logowania"
#: ../src/main.c:342
#: ../src/main.c:344
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "Używa podanego trybu, np. \"gdm\" dla ekranu logowania"
#: ../src/main.c:348
#: ../src/main.c:350
msgid "List possible modes"
msgstr "Wyświetla listę możliwych trybów"
#: ../src/shell-app.c:621
#: ../src/shell-app.c:622
#, c-format
msgid "Failed to launch '%s'"
msgstr "Uruchomienie \"%s\" się nie powiodło"

View File

@ -15,8 +15,8 @@ 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: 2012-09-19 11:02+0000\n"
"PO-Revision-Date: 2012-09-23 20:32+0400\n"
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
"PO-Revision-Date: 2012-09-27 16:38+0400\n"
"Last-Translator: Yuri Myasoedov <omerta13@yandex.ru>\n"
"Language-Team: русский <gnome-cyr@gnome.org>\n"
"Language: ru\n"
@ -36,12 +36,10 @@ msgid "Record a screencast"
msgstr "Записать скринкаст"
#: ../data/50-gnome-shell-system.xml.in.h:1
#| msgid "File System"
msgid "System"
msgstr "Система"
#: ../data/50-gnome-shell-system.xml.in.h:2
#| msgid "Message Tray"
msgid "Show the message tray"
msgstr "Показать панель сообщений"
@ -253,11 +251,11 @@ msgstr "Расширение"
msgid "Select an extension to configure using the combobox above."
msgstr "Выберите расширение из выпадающего списка."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:527
msgid "Session..."
msgstr "Сеанс…"
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:675
msgctxt "title"
msgid "Sign In"
msgstr "Вход в систему"
@ -265,42 +263,47 @@ msgstr "Вход в систему"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:742
msgid "Not listed?"
msgstr "Нет в списке?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "Отмена"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:900
msgctxt "button"
msgid "Sign In"
msgstr "Войти"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1239
msgid "Login Window"
msgstr "Окно входа в систему"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
#| msgid "Power Off"
msgid "Power"
msgstr "Питание"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
msgid "Suspend"
msgstr "Ждущий режим"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "Перезапустить"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
msgid "Power Off"
msgstr "Выключить"
#: ../js/gdm/util.js:148
#| msgid "Authentication Required"
msgid "Authentication error"
msgstr "Ошибка подтверждения подлинности"
@ -1020,7 +1023,7 @@ msgstr "Загрузить и установить расширение «%s»
msgid "tray"
msgstr "лоток"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Клавиатура"
@ -1081,11 +1084,11 @@ msgstr "Открыть"
msgid "Remove"
msgstr "Удалить"
#: ../js/ui/messageTray.js:2052
#: ../js/ui/messageTray.js:2055
msgid "Message Tray"
msgstr "Панель сообщений"
#: ../js/ui/messageTray.js:2508
#: ../js/ui/messageTray.js:2511
msgid "System Information"
msgstr "Системная информация"
@ -1373,11 +1376,11 @@ msgstr "Введите PIN-код указанный на устройстве."
msgid "OK"
msgstr "OK"
#: ../js/ui/status/keyboard.js:227
#: ../js/ui/status/keyboard.js:228
msgid "Show Keyboard Layout"
msgstr "Показывать раскладку клавиатуры"
#: ../js/ui/status/keyboard.js:232
#: ../js/ui/status/keyboard.js:233
msgid "Region and Language Settings"
msgstr "Региональные и языковые настройки"
@ -1616,63 +1619,63 @@ msgstr "Микрофон"
msgid "Log in as another user"
msgstr "Войти от имени другого пользователя"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "Доступен"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "Занят"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "Невидим"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "Отошёл"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "Бездействует"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "Недоступен"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "Сменить пользователя"
#: ../js/ui/userMenu.js:614
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "Переключить сеанс"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:743
msgid "Notifications"
msgstr "Уведомления"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:751
msgid "System Settings"
msgstr "Системные параметры"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:764
msgid "Log Out"
msgstr "Выйти из системы"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:769
msgid "Lock"
msgstr "Заблокировать"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:784
msgid "Install Updates & Restart"
msgstr "Установить обновления и выполнить перезагрузку"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:802
msgid "Your chat status will be set to busy"
msgstr "Будет установлен статус «не беспокоить»"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:803
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."

2149
po/sk.po

File diff suppressed because it is too large Load Diff

150
po/sl.po
View File

@ -8,8 +8,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: 2012-09-25 06:44+0000\n"
"PO-Revision-Date: 2012-09-25 08:56+0100\n"
"POT-Creation-Date: 2012-10-16 00:16+0000\n"
"PO-Revision-Date: 2012-10-16 07:53+0100\n"
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
"Language: Slovenian\n"
@ -37,6 +37,14 @@ msgstr "Sistem"
msgid "Show the message tray"
msgstr "Pokaži sporočilno vrstico"
#: ../data/50-gnome-shell-system.xml.in.h:3
msgid "Show all applications"
msgstr "Pokaži vse programe"
#: ../data/50-gnome-shell-system.xml.in.h:4
msgid "Open the application menu"
msgstr "Odpri meni programov"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "Gnome lupina"
@ -119,51 +127,59 @@ msgid "Keybinding to open the application menu."
msgstr "Tipkovna bližnjica, ki odpre meni programov."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
msgid "Keybinding to open the \"Show Applications\" view"
msgstr "Tipkovna bližnjica, ki odpre pogled \"Pokaži programe\""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid "Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr "Tipkovna bližnjica, ki odpre pogled \"Pokaži programe\" v pregledu dejavnosti."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "Keybinding to toggle the visibility of the message tray"
msgstr "Tipkovna bližnjica za preklop vidnosti vrstice sporočanja"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to toggle the visibility of the message tray."
msgstr "Tipkovna bližnjica za preklop vidnosti vrstice sporočanja."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to toggle the screen recorder"
msgstr "Tipkovna bližnjica za preklop snemalnika zaslona"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to start/stop the builtin screen recorder."
msgstr "Tipkovna bližnjica za začetek in ustavitev vgrajenega snemalnika zaslona"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid "Which keyboard to use"
msgstr "Katera tipkovnica naj bo uporabljena?"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "The type of keyboard to use."
msgstr "Vrsta tipkovnice za uporabo."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Framerate used for recording screencasts."
msgstr "Hitrost sličic uporabljena za snemanje zaslonskega posnetka."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
msgstr "Hitrost sličic shranjenega končnega zaslonskega posnetka v sličicah na sekundo."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Uporabljen GStreamer cevovod za kodiranje zaslonskega posnetka."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#, no-c-format
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
msgstr "Nastavi cevovod programa GStreamer, ki se uporablja za kodiranje posnetkov. Ta sledi skladnji, ki se uporablja za program gst-launch. Cevovod mora imeti nepovezano korito, kamor se posnetek snema. Običajno je za to namenjen nepovezan izvorni pomnilnik, katerega odvod se zapiše v odvodno datoteko. Vendar pa lahko cevovod ta korak naredi v lastni odvod - možnost se lahko uporabi pri pošiljanju odvoda na strežnik icecast preko shout2send ali podobno. Nedoločena ali prazna možnost se odrazi kot privzeti cevovod. Trenutno je to 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' in omogoča snemanje v zapis WEBM z uporabo kodeka VP8. Vrednost %T se uporablja kot ročnik za ugibanje najustreznejšega števila niti na sistemu."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid "File extension used for storing the screencast"
msgstr "Pripona datoteke uporabljene za shranjevanje zaslonskih posnetkov"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
msgstr "Ime datoteke zaslonskega posnetka bo enoznačno ime, kateremu bo dodan datum in določena pripona. Pripona mora ustrezati zapisu zabojnika."
@ -180,11 +196,11 @@ msgstr "Pripona"
msgid "Select an extension to configure using the combobox above."
msgstr "Razširitev za nastavljanje je mogoče izbrati iz spustnega seznama zgoraj."
#: ../js/gdm/loginDialog.js:527
#: ../js/gdm/loginDialog.js:529
msgid "Session..."
msgstr "Seja ..."
#: ../js/gdm/loginDialog.js:675
#: ../js/gdm/loginDialog.js:677
msgctxt "title"
msgid "Sign In"
msgstr "Prijava"
@ -192,27 +208,27 @@ msgstr "Prijava"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:742
#: ../js/gdm/loginDialog.js:736
msgid "Not listed?"
msgstr "Ali je ni na seznamu?"
#: ../js/gdm/loginDialog.js:895
#: ../js/gdm/loginDialog.js:889
#: ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162
#: ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195
#: ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427
#: ../js/ui/unlockDialog.js:166
#: ../js/ui/unlockDialog.js:167
msgid "Cancel"
msgstr "Prekliči"
#: ../js/gdm/loginDialog.js:900
#: ../js/gdm/loginDialog.js:894
msgctxt "button"
msgid "Sign In"
msgstr "Prijava"
#: ../js/gdm/loginDialog.js:1239
#: ../js/gdm/loginDialog.js:1215
msgid "Login Window"
msgstr "Prijavno okno"
@ -222,9 +238,9 @@ msgid "Power"
msgstr "Napajanje"
#: ../js/gdm/powerMenu.js:89
#: ../js/ui/userMenu.js:663
#: ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
#: ../js/ui/userMenu.js:660
#: ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:775
msgid "Suspend"
msgstr "Zaustavi"
@ -233,9 +249,9 @@ msgid "Restart"
msgstr "Zaženi znova"
#: ../js/gdm/powerMenu.js:99
#: ../js/ui/userMenu.js:665
#: ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
#: ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:774
msgid "Power Off"
msgstr "Izklop"
@ -287,7 +303,7 @@ msgid "New Window"
msgstr "Novo okno"
#: ../js/ui/appDisplay.js:678
#: ../js/ui/dash.js:271
#: ../js/ui/dash.js:290
msgid "Remove from Favorites"
msgstr "Odstrani iz priljubljenih"
@ -451,16 +467,16 @@ msgstr "Ta teden"
msgid "Next week"
msgstr "Naslednji teden"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "Odstranljive naprave"
#: ../js/ui/components/autorunManager.js:575
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "Odpri s programom %s"
#: ../js/ui/components/autorunManager.js:601
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "Izvrzi"
@ -821,8 +837,8 @@ msgstr "Uredi račun"
msgid "Unknown reason"
msgstr "Neznan vzrok"
#: ../js/ui/dash.js:245
#: ../js/ui/dash.js:273
#: ../js/ui/dash.js:253
#: ../js/ui/dash.js:292
msgid "Show Applications"
msgstr "Pokaži programe"
@ -830,14 +846,14 @@ msgstr "Pokaži programe"
msgid "Date and Time Settings"
msgstr "Nastavitve časa in datuma"
#: ../js/ui/dateMenu.js:109
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Odpri koledar"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:175
#: ../js/ui/dateMenu.js:201
msgid "%A %B %e, %Y"
msgstr "%a, %e. %b., %R"
@ -1015,11 +1031,11 @@ msgstr "Odpri"
msgid "Remove"
msgstr "Odstrani"
#: ../js/ui/messageTray.js:2088
#: ../js/ui/messageTray.js:1540
msgid "Message Tray"
msgstr "Vrstica sporočanja"
#: ../js/ui/messageTray.js:2551
#: ../js/ui/messageTray.js:2547
msgid "System Information"
msgstr "Podrobnosti sistema"
@ -1084,7 +1100,7 @@ msgstr "Vnos ukaza:"
msgid "%A, %B %d"
msgstr "%A, %d. %m."
#: ../js/ui/screenShield.js:144
#: ../js/ui/screenShield.js:143
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
@ -1093,7 +1109,7 @@ msgstr[1] "%d novo sporočilo"
msgstr[2] "%d novi sporočili"
msgstr[3] "%d nova sporočila"
#: ../js/ui/screenShield.js:146
#: ../js/ui/screenShield.js:145
#, c-format
msgid "%d new notification"
msgid_plural "%d new notifications"
@ -1135,7 +1151,7 @@ msgid "Remember Password"
msgstr "Zapomni si geslo"
#: ../js/ui/shellMountOperation.js:400
#: ../js/ui/unlockDialog.js:169
#: ../js/ui/unlockDialog.js:170
msgid "Unlock"
msgstr "Odkleni"
@ -1261,7 +1277,7 @@ msgid "Mouse Settings"
msgstr "Nastavitve miške"
#: ../js/ui/status/bluetooth.js:269
#: ../js/ui/status/volume.js:236
#: ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Nastavitve zvoka"
@ -1562,7 +1578,7 @@ msgstr "Neznano"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47
#: ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Glasnost"
@ -1570,7 +1586,7 @@ msgstr "Glasnost"
msgid "Microphone"
msgstr "Mikrofon"
#: ../js/ui/unlockDialog.js:176
#: ../js/ui/unlockDialog.js:177
msgid "Log in as another user"
msgstr "Prijava kot drug uporabnik"
@ -1598,56 +1614,51 @@ msgstr "Nedejavno"
msgid "Unavailable"
msgstr "Nedostopno"
#: ../js/ui/userMenu.js:618
#: ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "Preklopi uporabnika"
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "Preklopi sejo"
#: ../js/ui/userMenu.js:743
#: ../js/ui/userMenu.js:740
msgid "Notifications"
msgstr "Obvestila"
#: ../js/ui/userMenu.js:751
#: ../js/ui/userMenu.js:748
msgid "System Settings"
msgstr "Sistemske nastavitve"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "Preklopi uporabnika"
#: ../js/ui/userMenu.js:761
msgid "Log Out"
msgstr "Odjava"
#: ../js/ui/userMenu.js:769
#: ../js/ui/userMenu.js:766
msgid "Lock"
msgstr "Zakleni"
#: ../js/ui/userMenu.js:784
#: ../js/ui/userMenu.js:781
msgid "Install Updates & Restart"
msgstr "Namesti posodobitve in ponovno zaženi"
#: ../js/ui/userMenu.js:802
#: ../js/ui/userMenu.js:799
msgid "Your chat status will be set to busy"
msgstr "Stanje vašega klepeta bo nastavljeno na zasedeno"
#: ../js/ui/userMenu.js:803
#: ../js/ui/userMenu.js:800
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
msgstr "Obveščanje je zdaj onemogočeno, vključno s sporočili klepeta. Vaše stanje povezanosti se je prilagodilo, da bodo drugi vedeli, da njihovih sporočil morda ne boste opazili."
#: ../js/ui/viewSelector.js:85
#: ../js/ui/viewSelector.js:87
msgid "Windows"
msgstr "Okna"
#: ../js/ui/viewSelector.js:89
#: ../js/ui/viewSelector.js:91
msgid "Applications"
msgstr "Programi"
#: ../js/ui/viewSelector.js:93
#: ../js/ui/viewSelector.js:95
msgid "Search"
msgstr "Poišči"
#: ../js/ui/wanda.js:119
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1656,12 +1667,12 @@ msgstr ""
"Za danes ni modrosti:\n"
"%s"
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "Riba %s pravi"
#: ../js/ui/wanda.js:164
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "Vaše priljubljeno velikonočno jajce"
@ -1700,19 +1711,19 @@ msgstr[3] "%u dovodi naprave"
msgid "System Sounds"
msgstr "Sistemski zvoki"
#: ../src/main.c:330
#: ../src/main.c:332
msgid "Print version"
msgstr "Izpiši različico"
#: ../src/main.c:336
#: ../src/main.c:338
msgid "Mode used by GDM for login screen"
msgstr "Način uporabljen v GDM za prijavni naslov"
#: ../src/main.c:342
#: ../src/main.c:344
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "Uporabi poseben način, npr.: \"gdm\" za prijavni zaslon"
#: ../src/main.c:348
#: ../src/main.c:350
msgid "List possible modes"
msgstr "Seznam mogočih načinov"
@ -1741,6 +1752,9 @@ msgstr "Privzeto"
msgid "Authentication dialog was dismissed by the user"
msgstr "Uporabnik je zavrnil pogovorno okno overitve"
#~ msgid "Switch Session"
#~ msgstr "Preklopi sejo"
#~ msgid "disabled OpenSearch providers"
#~ msgstr "ponudniki OpenSearch so bili onemogočeni"

207
po/sr.po
View File

@ -8,8 +8,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: 2012-09-19 11:02+0000\n"
"PO-Revision-Date: 2012-09-20 20:20+0200\n"
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
"PO-Revision-Date: 2012-10-16 20:23+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnom@prevod.org>\n"
"Language: sr\n"
@ -29,15 +29,23 @@ msgid "Record a screencast"
msgstr "Снимите радни ток екрана"
#: ../data/50-gnome-shell-system.xml.in.h:1
#| msgid "File System"
msgid "System"
msgstr "Систем"
#: ../data/50-gnome-shell-system.xml.in.h:2
#| msgid "Message Tray"
msgid "Show the message tray"
msgstr "Прикажите фиоку порука"
#: ../data/50-gnome-shell-system.xml.in.h:3
#| msgid "Show Applications"
msgid "Show all applications"
msgstr "Прикажи све програме"
#: ../data/50-gnome-shell-system.xml.in.h:4
#| msgid "Keybinding to open the application menu"
msgid "Open the application menu"
msgstr "Отворите изборник програма"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "Гномова шкољка"
@ -145,41 +153,52 @@ msgstr "Ако је изабрано, приказује ИСО дан у нед
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
msgid "Keybinding to open the application menu"
msgstr "Свеза тастера за отварање изборника програма"
msgstr "Пречица за отварање изборника програма"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
msgid "Keybinding to open the application menu."
msgstr "Свеза тастера за отварање изборника програма."
msgstr "Пречица за отварање изборника програма."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
#| msgid "Keybinding to open the application menu"
msgid "Keybinding to open the \"Show Applications\" view"
msgstr "Пречица за отварање прегледа „Прикажи програме“"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
#| msgid "Keybinding to open the application menu."
msgid ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr "Пречица за отварање прегледа „Прикажи програме“ у прегледу активности."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "Keybinding to toggle the visibility of the message tray"
msgstr "Пречица за окидање видљивости фиоке порука"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to toggle the visibility of the message tray."
msgstr "Пречица за окидање видљивости фиоке порука."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to toggle the screen recorder"
msgstr "Пречица за окидање читача екрана"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to start/stop the builtin screen recorder."
msgstr "Пречица за покретање/заустављање уграђеног снимача екрана."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid "Which keyboard to use"
msgstr "Која ће тастатура бити коришћена"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "The type of keyboard to use."
msgstr "Врста тастатуре за употребу."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Framerate used for recording screencasts."
msgstr "Учестаност кадрова за видео снимак екрана."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -187,23 +206,12 @@ msgstr ""
"Учестаност кадрова снимка снимљених помоћу Гномове шкољке у кадровима по "
"секунди."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Процесни ланац Гстримера коришћен за кодирање видео снимка екрана"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#, no-c-format
#| msgid ""
#| "Sets the GStreamer pipeline used to encode recordings. It follows the "
#| "syntax used for gst-launch. The pipeline should have an unconnected sink "
#| "pad where the recorded video is recorded. It will normally have a "
#| "unconnected source pad; output from that pad will be written into the "
#| "output file. However the pipeline can also take care of its own output - "
#| "this might be used to send the output to an icecast server via shout2send "
#| "or similar. When unset or set to an empty value, the default pipeline "
#| "will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! "
#| "queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a "
#| "placeholder for a guess at the optimal thread count on the system."
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
@ -221,19 +229,19 @@ msgstr ""
"да има један неповезани падиљон синхронизације за чување снимљеног видеа. "
"Нормално ће имати неповезан падиљон извора; излаз са овог падиљона ће бити "
"записиван у излазну датотеку. Ипак процесни ланац може да ради са сопственим "
"излазом — ово може бити коришћено за слање излаза на ајскаст сервер преко "
"d„shout2sen“ или сличне наредбе. Када ова опција није постављена или је "
"излазом — ово може бити коришћено за слање излаза на ајскаст сервер преко d"
"„shout2sen“ или сличне наредбе. Када ова опција није постављена или је "
"постављена на неку празну вредност, биће коришћен подразумевани процесни "
"ланац. А то је тренутно „vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 "
"deadline=1000000 threads=%T ! queue ! webmmux“ и записује у „WEBM“ "
"користећи ВП8 кодек. „%T“ се користи као носилац за откривање при оптималном "
"прорачуну нити на систему."
"deadline=1000000 threads=%T ! queue ! webmmux“ и записује у „WEBM“ користећи "
"ВП8 кодек. „%T“ се користи као носилац за откривање при оптималном прорачуну "
"нити на систему."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid "File extension used for storing the screencast"
msgstr "Проширење датотеке за чување видео снимака екрана"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@ -256,11 +264,11 @@ msgstr "Проширење"
msgid "Select an extension to configure using the combobox above."
msgstr "Изаберите проширење за подешавање користећи прозорче за избор."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:529
msgid "Session..."
msgstr "Сесија..."
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:677
msgctxt "title"
msgid "Sign In"
msgstr "Пријавите се"
@ -268,42 +276,46 @@ msgstr "Пријавите се"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:736
msgid "Not listed?"
msgstr "Није на списку?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
msgid "Cancel"
msgstr "Откажи"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:894
msgctxt "button"
msgid "Sign In"
msgstr "Пријави ме"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1215
msgid "Login Window"
msgstr "Прозор за пријављивање"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "Угаси"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:775
msgid "Suspend"
msgstr "Обустави"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "Поново покрени"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:774
msgid "Power Off"
msgstr "Угаси"
#: ../js/gdm/util.js:148
#| msgid "Authentication Required"
msgid "Authentication error"
msgstr "Грешка потврђивања идентитета"
@ -350,7 +362,7 @@ msgstr "ПОДЕШАВАЊА"
msgid "New Window"
msgstr "Нови прозор"
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
msgid "Remove from Favorites"
msgstr "Уклони из омиљених"
@ -514,16 +526,16 @@ msgstr "Ове недеље"
msgid "Next week"
msgstr "Следеће недеље"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "Уклоњиви уређаји"
#: ../js/ui/components/autorunManager.js:575
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "Отвори програмом %s"
#: ../js/ui/components/autorunManager.js:601
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "Избаци"
@ -892,7 +904,7 @@ msgstr "Уреди налог"
msgid "Unknown reason"
msgstr "Непознат разлог"
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
msgid "Show Applications"
msgstr "Прикажи програме"
@ -900,14 +912,14 @@ msgstr "Прикажи програме"
msgid "Date and Time Settings"
msgstr "Подешавања датума и времена"
#: ../js/ui/dateMenu.js:109
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Отвори календар"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:175
#: ../js/ui/dateMenu.js:201
msgid "%A %B %e, %Y"
msgstr "%A, %e. %b, %R"
@ -1020,11 +1032,11 @@ msgstr "Инсталирај"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Да преузмем и да инсталирам „%s“ са extensions.gnome.org?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "фиока"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Тастатура"
@ -1077,19 +1089,19 @@ msgstr "Прикажи код"
msgid "Web Page"
msgstr "Веб страница"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "Отвори"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "Уклони"
#: ../js/ui/messageTray.js:2052
#: ../js/ui/messageTray.js:1540
msgid "Message Tray"
msgstr "Фиока порука"
#: ../js/ui/messageTray.js:2508
#: ../js/ui/messageTray.js:2547
msgid "System Information"
msgstr "Подаци о систему"
@ -1153,7 +1165,7 @@ msgstr "Унесите наредбу:"
msgid "%A, %B %d"
msgstr "%A, %d. %B"
#: ../js/ui/screenShield.js:144
#: ../js/ui/screenShield.js:143
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
@ -1162,7 +1174,7 @@ msgstr[1] "%d нове поруке"
msgstr[2] "%d нових порука"
msgstr[3] "Једна нова порука"
#: ../js/ui/screenShield.js:146
#: ../js/ui/screenShield.js:145
#, c-format
msgid "%d new notification"
msgid_plural "%d new notifications"
@ -1203,7 +1215,7 @@ msgstr "Лозинка"
msgid "Remember Password"
msgstr "Запамти лозинку"
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
msgid "Unlock"
msgstr "Откључај"
@ -1321,7 +1333,7 @@ msgstr "Подешавања тастатуре"
msgid "Mouse Settings"
msgstr "Подешавања миша"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Подешавања звука"
@ -1379,11 +1391,11 @@ msgstr "Молим унесите ПИН назначен на уређају."
msgid "OK"
msgstr "У реду"
#: ../js/ui/status/keyboard.js:227
#: ../js/ui/status/keyboard.js:228
msgid "Show Keyboard Layout"
msgstr "Прикажи распоред тастатуре"
#: ../js/ui/status/keyboard.js:232
#: ../js/ui/status/keyboard.js:233
msgid "Region and Language Settings"
msgstr "Подешавања региона и језика"
@ -1614,7 +1626,7 @@ msgid "Unknown"
msgstr "Непознат"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Јачина звука"
@ -1622,67 +1634,63 @@ msgstr "Јачина звука"
msgid "Microphone"
msgstr "Микрофон"
#: ../js/ui/unlockDialog.js:176
#: ../js/ui/unlockDialog.js:177
msgid "Log in as another user"
msgstr "Пријавите се као други корсник"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "Доступан"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "Заузет"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "Невидљив"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "Одсутан"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "Мирује"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "Недоступан"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
msgid "Switch User"
msgstr "Промени корисника"
#: ../js/ui/userMenu.js:614
msgid "Switch Session"
msgstr "Промени сесију"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:740
msgid "Notifications"
msgstr "Обавештења"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:748
msgid "System Settings"
msgstr "Подешавања система"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "Промени корисника"
#: ../js/ui/userMenu.js:761
msgid "Log Out"
msgstr "Одјави ме"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:766
msgid "Lock"
msgstr "Закључај"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:781
msgid "Install Updates & Restart"
msgstr "Инсталирај ажурирања и поново покрени"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:799
msgid "Your chat status will be set to busy"
msgstr "Ваше стање ћаскања ће бити постављено на заузето"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:800
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1691,19 +1699,19 @@ msgstr ""
"мрежи је подешено тако да ће остали знати да ви не можете видети њихове "
"поруке."
#: ../js/ui/viewSelector.js:85
#: ../js/ui/viewSelector.js:87
msgid "Windows"
msgstr "Прозори"
#: ../js/ui/viewSelector.js:89
#: ../js/ui/viewSelector.js:91
msgid "Applications"
msgstr "Програми"
#: ../js/ui/viewSelector.js:93
#: ../js/ui/viewSelector.js:95
msgid "Search"
msgstr "Тражи"
#: ../js/ui/wanda.js:119
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1712,12 +1720,12 @@ msgstr ""
"Извините, данас за вас нема мудрости:\n"
"%s"
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "Пророк је рекао %s"
#: ../js/ui/wanda.js:164
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "Ваше омиљено ускршње јаје"
@ -1756,19 +1764,19 @@ msgstr[3] "Један улаз"
msgid "System Sounds"
msgstr "Системски звуци"
#: ../src/main.c:330
#: ../src/main.c:332
msgid "Print version"
msgstr "Исписује издање"
#: ../src/main.c:336
#: ../src/main.c:338
msgid "Mode used by GDM for login screen"
msgstr "Који режим користи ГДМ за екран пријављивања"
#: ../src/main.c:342
#: ../src/main.c:344
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "Користи нарочит режим, нпр. „gdm“ за екран пријављивања"
#: ../src/main.c:348
#: ../src/main.c:350
msgid "List possible modes"
msgstr "Исписује могуће режиме"
@ -1797,6 +1805,9 @@ msgstr "Основно"
msgid "Authentication dialog was dismissed by the user"
msgstr "Корисник је одбацио прозорче за потврђивање идентитета"
#~ msgid "Switch Session"
#~ msgstr "Промени сесију"
#~ msgid "disabled OpenSearch providers"
#~ msgstr "искључени „OpenSearch“ достављачи"

View File

@ -8,8 +8,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: 2012-09-19 11:02+0000\n"
"PO-Revision-Date: 2012-09-20 20:20+0200\n"
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
"PO-Revision-Date: 2012-10-16 20:23+0200\n"
"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnom@prevod.org>\n"
"Language: sr\n"
@ -29,15 +29,23 @@ msgid "Record a screencast"
msgstr "Snimite radni tok ekrana"
#: ../data/50-gnome-shell-system.xml.in.h:1
#| msgid "File System"
msgid "System"
msgstr "Sistem"
#: ../data/50-gnome-shell-system.xml.in.h:2
#| msgid "Message Tray"
msgid "Show the message tray"
msgstr "Prikažite fioku poruka"
#: ../data/50-gnome-shell-system.xml.in.h:3
#| msgid "Show Applications"
msgid "Show all applications"
msgstr "Prikaži sve programe"
#: ../data/50-gnome-shell-system.xml.in.h:4
#| msgid "Keybinding to open the application menu"
msgid "Open the application menu"
msgstr "Otvorite izbornik programa"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "Gnomova školjka"
@ -145,41 +153,52 @@ msgstr "Ako je izabrano, prikazuje ISO dan u nedelji u kalendaru."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
msgid "Keybinding to open the application menu"
msgstr "Sveza tastera za otvaranje izbornika programa"
msgstr "Prečica za otvaranje izbornika programa"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
msgid "Keybinding to open the application menu."
msgstr "Sveza tastera za otvaranje izbornika programa."
msgstr "Prečica za otvaranje izbornika programa."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
#| msgid "Keybinding to open the application menu"
msgid "Keybinding to open the \"Show Applications\" view"
msgstr "Prečica za otvaranje pregleda „Prikaži programe“"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
#| msgid "Keybinding to open the application menu."
msgid ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr "Prečica za otvaranje pregleda „Prikaži programe“ u pregledu aktivnosti."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "Keybinding to toggle the visibility of the message tray"
msgstr "Prečica za okidanje vidljivosti fioke poruka"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to toggle the visibility of the message tray."
msgstr "Prečica za okidanje vidljivosti fioke poruka."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to toggle the screen recorder"
msgstr "Prečica za okidanje čitača ekrana"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to start/stop the builtin screen recorder."
msgstr "Prečica za pokretanje/zaustavljanje ugrađenog snimača ekrana."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid "Which keyboard to use"
msgstr "Koja će tastatura biti korišćena"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "The type of keyboard to use."
msgstr "Vrsta tastature za upotrebu."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Framerate used for recording screencasts."
msgstr "Učestanost kadrova za video snimak ekrana."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -187,23 +206,12 @@ msgstr ""
"Učestanost kadrova snimka snimljenih pomoću Gnomove školjke u kadrovima po "
"sekundi."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Procesni lanac Gstrimera korišćen za kodiranje video snimka ekrana"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#, no-c-format
#| msgid ""
#| "Sets the GStreamer pipeline used to encode recordings. It follows the "
#| "syntax used for gst-launch. The pipeline should have an unconnected sink "
#| "pad where the recorded video is recorded. It will normally have a "
#| "unconnected source pad; output from that pad will be written into the "
#| "output file. However the pipeline can also take care of its own output - "
#| "this might be used to send the output to an icecast server via shout2send "
#| "or similar. When unset or set to an empty value, the default pipeline "
#| "will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! "
#| "queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a "
#| "placeholder for a guess at the optimal thread count on the system."
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
@ -221,19 +229,19 @@ msgstr ""
"da ima jedan nepovezani padiljon sinhronizacije za čuvanje snimljenog videa. "
"Normalno će imati nepovezan padiljon izvora; izlaz sa ovog padiljona će biti "
"zapisivan u izlaznu datoteku. Ipak procesni lanac može da radi sa sopstvenim "
"izlazom — ovo može biti korišćeno za slanje izlaza na ajskast server preko "
"d„shout2sen“ ili slične naredbe. Kada ova opcija nije postavljena ili je "
"izlazom — ovo može biti korišćeno za slanje izlaza na ajskast server preko d"
"„shout2sen“ ili slične naredbe. Kada ova opcija nije postavljena ili je "
"postavljena na neku praznu vrednost, biće korišćen podrazumevani procesni "
"lanac. A to je trenutno „vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 "
"deadline=1000000 threads=%T ! queue ! webmmux“ i zapisuje u „WEBM“ "
"koristeći VP8 kodek. „%T“ se koristi kao nosilac za otkrivanje pri optimalnom "
"proračunu niti na sistemu."
"deadline=1000000 threads=%T ! queue ! webmmux“ i zapisuje u „WEBM“ koristeći "
"VP8 kodek. „%T“ se koristi kao nosilac za otkrivanje pri optimalnom proračunu "
"niti na sistemu."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid "File extension used for storing the screencast"
msgstr "Proširenje datoteke za čuvanje video snimaka ekrana"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@ -256,11 +264,11 @@ msgstr "Proširenje"
msgid "Select an extension to configure using the combobox above."
msgstr "Izaberite proširenje za podešavanje koristeći prozorče za izbor."
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:529
msgid "Session..."
msgstr "Sesija..."
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:677
msgctxt "title"
msgid "Sign In"
msgstr "Prijavite se"
@ -268,42 +276,46 @@ msgstr "Prijavite se"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:736
msgid "Not listed?"
msgstr "Nije na spisku?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
msgid "Cancel"
msgstr "Otkaži"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:894
msgctxt "button"
msgid "Sign In"
msgstr "Prijavi me"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1215
msgid "Login Window"
msgstr "Prozor za prijavljivanje"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "Ugasi"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:775
msgid "Suspend"
msgstr "Obustavi"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "Ponovo pokreni"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:774
msgid "Power Off"
msgstr "Ugasi"
#: ../js/gdm/util.js:148
#| msgid "Authentication Required"
msgid "Authentication error"
msgstr "Greška potvrđivanja identiteta"
@ -350,7 +362,7 @@ msgstr "PODEŠAVANJA"
msgid "New Window"
msgstr "Novi prozor"
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
msgid "Remove from Favorites"
msgstr "Ukloni iz omiljenih"
@ -514,16 +526,16 @@ msgstr "Ove nedelje"
msgid "Next week"
msgstr "Sledeće nedelje"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "Uklonjivi uređaji"
#: ../js/ui/components/autorunManager.js:575
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "Otvori programom %s"
#: ../js/ui/components/autorunManager.js:601
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "Izbaci"
@ -892,7 +904,7 @@ msgstr "Uredi nalog"
msgid "Unknown reason"
msgstr "Nepoznat razlog"
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
msgid "Show Applications"
msgstr "Prikaži programe"
@ -900,14 +912,14 @@ msgstr "Prikaži programe"
msgid "Date and Time Settings"
msgstr "Podešavanja datuma i vremena"
#: ../js/ui/dateMenu.js:109
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Otvori kalendar"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:175
#: ../js/ui/dateMenu.js:201
msgid "%A %B %e, %Y"
msgstr "%A, %e. %b, %R"
@ -1020,11 +1032,11 @@ msgstr "Instaliraj"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Da preuzmem i da instaliram „%s“ sa extensions.gnome.org?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "fioka"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "Tastatura"
@ -1077,19 +1089,19 @@ msgstr "Prikaži kod"
msgid "Web Page"
msgstr "Veb stranica"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "Otvori"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "Ukloni"
#: ../js/ui/messageTray.js:2052
#: ../js/ui/messageTray.js:1540
msgid "Message Tray"
msgstr "Fioka poruka"
#: ../js/ui/messageTray.js:2508
#: ../js/ui/messageTray.js:2547
msgid "System Information"
msgstr "Podaci o sistemu"
@ -1153,7 +1165,7 @@ msgstr "Unesite naredbu:"
msgid "%A, %B %d"
msgstr "%A, %d. %B"
#: ../js/ui/screenShield.js:144
#: ../js/ui/screenShield.js:143
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
@ -1162,7 +1174,7 @@ msgstr[1] "%d nove poruke"
msgstr[2] "%d novih poruka"
msgstr[3] "Jedna nova poruka"
#: ../js/ui/screenShield.js:146
#: ../js/ui/screenShield.js:145
#, c-format
msgid "%d new notification"
msgid_plural "%d new notifications"
@ -1203,7 +1215,7 @@ msgstr "Lozinka"
msgid "Remember Password"
msgstr "Zapamti lozinku"
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
msgid "Unlock"
msgstr "Otključaj"
@ -1321,7 +1333,7 @@ msgstr "Podešavanja tastature"
msgid "Mouse Settings"
msgstr "Podešavanja miša"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "Podešavanja zvuka"
@ -1379,11 +1391,11 @@ msgstr "Molim unesite PIN naznačen na uređaju."
msgid "OK"
msgstr "U redu"
#: ../js/ui/status/keyboard.js:227
#: ../js/ui/status/keyboard.js:228
msgid "Show Keyboard Layout"
msgstr "Prikaži raspored tastature"
#: ../js/ui/status/keyboard.js:232
#: ../js/ui/status/keyboard.js:233
msgid "Region and Language Settings"
msgstr "Podešavanja regiona i jezika"
@ -1614,7 +1626,7 @@ msgid "Unknown"
msgstr "Nepoznat"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "Jačina zvuka"
@ -1622,67 +1634,63 @@ msgstr "Jačina zvuka"
msgid "Microphone"
msgstr "Mikrofon"
#: ../js/ui/unlockDialog.js:176
#: ../js/ui/unlockDialog.js:177
msgid "Log in as another user"
msgstr "Prijavite se kao drugi korsnik"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "Dostupan"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "Zauzet"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "Nevidljiv"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "Odsutan"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "Miruje"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "Nedostupan"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
msgid "Switch User"
msgstr "Promeni korisnika"
#: ../js/ui/userMenu.js:614
msgid "Switch Session"
msgstr "Promeni sesiju"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:740
msgid "Notifications"
msgstr "Obaveštenja"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:748
msgid "System Settings"
msgstr "Podešavanja sistema"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "Promeni korisnika"
#: ../js/ui/userMenu.js:761
msgid "Log Out"
msgstr "Odjavi me"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:766
msgid "Lock"
msgstr "Zaključaj"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:781
msgid "Install Updates & Restart"
msgstr "Instaliraj ažuriranja i ponovo pokreni"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:799
msgid "Your chat status will be set to busy"
msgstr "Vaše stanje ćaskanja će biti postavljeno na zauzeto"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:800
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1691,19 +1699,19 @@ msgstr ""
"mreži je podešeno tako da će ostali znati da vi ne možete videti njihove "
"poruke."
#: ../js/ui/viewSelector.js:85
#: ../js/ui/viewSelector.js:87
msgid "Windows"
msgstr "Prozori"
#: ../js/ui/viewSelector.js:89
#: ../js/ui/viewSelector.js:91
msgid "Applications"
msgstr "Programi"
#: ../js/ui/viewSelector.js:93
#: ../js/ui/viewSelector.js:95
msgid "Search"
msgstr "Traži"
#: ../js/ui/wanda.js:119
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1712,12 +1720,12 @@ msgstr ""
"Izvinite, danas za vas nema mudrosti:\n"
"%s"
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "Prorok je rekao %s"
#: ../js/ui/wanda.js:164
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "Vaše omiljeno uskršnje jaje"
@ -1756,19 +1764,19 @@ msgstr[3] "Jedan ulaz"
msgid "System Sounds"
msgstr "Sistemski zvuci"
#: ../src/main.c:330
#: ../src/main.c:332
msgid "Print version"
msgstr "Ispisuje izdanje"
#: ../src/main.c:336
#: ../src/main.c:338
msgid "Mode used by GDM for login screen"
msgstr "Koji režim koristi GDM za ekran prijavljivanja"
#: ../src/main.c:342
#: ../src/main.c:344
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "Koristi naročit režim, npr. „gdm“ za ekran prijavljivanja"
#: ../src/main.c:348
#: ../src/main.c:350
msgid "List possible modes"
msgstr "Ispisuje moguće režime"
@ -1797,6 +1805,9 @@ msgstr "Osnovno"
msgid "Authentication dialog was dismissed by the user"
msgstr "Korisnik je odbacio prozorče za potvrđivanje identiteta"
#~ msgid "Switch Session"
#~ msgstr "Promeni sesiju"
#~ msgid "disabled OpenSearch providers"
#~ msgstr "isključeni „OpenSearch“ dostavljači"

104
po/th.po
View File

@ -9,8 +9,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: 2012-09-19 11:02+0000\n"
"PO-Revision-Date: 2012-09-20 16:21+0700\n"
"POT-Creation-Date: 2012-10-04 06:59+0000\n"
"PO-Revision-Date: 2012-10-09 18:31+0700\n"
"Last-Translator: Theppitak Karoonboonyanan <thep@linux.thai.net>\n"
"Language-Team: Thai <thai-l10n@googlegroups.com>\n"
"Language: th\n"
@ -234,11 +234,11 @@ msgstr "ส่วนขยาย"
msgid "Select an extension to configure using the combobox above."
msgstr "เลือกส่วนขยายที่จะตั้งค่าโดยใช้กล่องคอมโบด้านบน"
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:528
msgid "Session..."
msgstr "วาระ..."
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:676
msgctxt "title"
msgid "Sign In"
msgstr "เข้าระบบ"
@ -246,37 +246,42 @@ msgstr "เข้าระบบ"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:743
msgid "Not listed?"
msgstr "ไม่มีชื่อของคุณงั้นหรือ?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "ยกเลิก"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:901
msgctxt "button"
msgid "Sign In"
msgstr "เข้าระบบ"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1240
msgid "Login Window"
msgstr "หน้าต่างเข้าระบบ"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "เปิด/ปิด"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:775
msgid "Suspend"
msgstr "พักเครื่อง"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "เปิดเครื่องใหม่"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
#: ../js/ui/userMenu.js:774
msgid "Power Off"
msgstr "ปิดเครื่อง"
@ -491,16 +496,16 @@ msgstr "สัปดาห์นี้"
msgid "Next week"
msgstr "สัปดาห์หน้า"
#: ../js/ui/components/autorunManager.js:278
#: ../js/ui/components/autorunManager.js:297
msgid "Removable Devices"
msgstr "อุปกรณ์ถอดเสียบ"
#: ../js/ui/components/autorunManager.js:575
#: ../js/ui/components/autorunManager.js:594
#, c-format
msgid "Open with %s"
msgstr "เปิดด้วย %s"
#: ../js/ui/components/autorunManager.js:601
#: ../js/ui/components/autorunManager.js:620
msgid "Eject"
msgstr "เอาสื่อออก"
@ -979,11 +984,11 @@ msgstr "ติดตั้ง"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "จะดาวน์โหลดและติดตั้ง '%s' จาก extensions.gnome.org หรือไม่?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "ถาด"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "แป้นพิมพ์"
@ -1036,19 +1041,19 @@ msgstr "ดูซอร์ส"
msgid "Web Page"
msgstr "หน้าเว็บ"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "เปิด"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "ลบ"
#: ../js/ui/messageTray.js:2052
#: ../js/ui/messageTray.js:1533
msgid "Message Tray"
msgstr "ถาดข้อความ"
#: ../js/ui/messageTray.js:2508
#: ../js/ui/messageTray.js:2544
msgid "System Information"
msgstr "ข้อมูลระบบ"
@ -1274,7 +1279,7 @@ msgstr "ตั้งค่าแป้นพิมพ์"
msgid "Mouse Settings"
msgstr "ตั้งค่าเมาส์"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "ตั้งค่าเสียง"
@ -1332,11 +1337,11 @@ msgstr "กรุณาป้อนรหัส PIN ที่ระบุบน
msgid "OK"
msgstr "ตกลง"
#: ../js/ui/status/keyboard.js:227
#: ../js/ui/status/keyboard.js:228
msgid "Show Keyboard Layout"
msgstr "แสดงผังแป้นพิมพ์"
#: ../js/ui/status/keyboard.js:232
#: ../js/ui/status/keyboard.js:233
msgid "Region and Language Settings"
msgstr "ตั้งค่าท้องที่และภาษา"
@ -1555,7 +1560,7 @@ msgid "Unknown"
msgstr "ไม่ทราบ"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "ความดังเสียง"
@ -1567,63 +1572,59 @@ msgstr "ไมโครโฟน"
msgid "Log in as another user"
msgstr "เข้าระบบในนามผู้ใช้อื่น"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "อยู่"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "ไม่ว่าง"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "ซ่อนตัว"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "ไม่อยู่"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "ไม่มีกิจกรรม"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "ออฟไลน์"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
msgid "Switch User"
msgstr "สลับผู้ใช้"
#: ../js/ui/userMenu.js:614
msgid "Switch Session"
msgstr "สลับวาระ"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:740
msgid "Notifications"
msgstr "การแจ้งเหตุ"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:748
msgid "System Settings"
msgstr "ตั้งค่าระบบ"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:756
msgid "Switch User"
msgstr "สลับผู้ใช้"
#: ../js/ui/userMenu.js:761
msgid "Log Out"
msgstr "ออกจากระบบ"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:766
msgid "Lock"
msgstr "ล็อค"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:781
msgid "Install Updates & Restart"
msgstr "ติดตั้งรายการปรับรุ่น & เปิดเครื่องใหม่"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:799
msgid "Your chat status will be set to busy"
msgstr "จะกำหนดสถานะการสนทนาของคุณเป็นไม่ว่าง"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:800
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1643,7 +1644,7 @@ msgstr "โปรแกรม"
msgid "Search"
msgstr "ค้นหา"
#: ../js/ui/wanda.js:119
#: ../js/ui/wanda.js:117
#, c-format
msgid ""
"Sorry, no wisdom for you today:\n"
@ -1652,12 +1653,12 @@ msgstr ""
"เสียใจด้วย วันนี้ไม่มีคำคมสำหรับคุณ:\n"
"%s"
#: ../js/ui/wanda.js:123
#: ../js/ui/wanda.js:121
#, c-format
msgid "%s the Oracle says"
msgstr "หมอดู %s กล่าว"
#: ../js/ui/wanda.js:164
#: ../js/ui/wanda.js:162
msgid "Your favorite Easter Egg"
msgstr "ไข่อีสเตอร์สุดโปรดของคุณ"
@ -1731,6 +1732,9 @@ msgstr "ปริยาย"
msgid "Authentication dialog was dismissed by the user"
msgstr "กล่องโต้ตอบยืนยันตัวบุคคลถูกผู้ใช้ปิดทิ้ง"
#~ msgid "Switch Session"
#~ msgstr "สลับวาระ"
#~ msgid "Failed to unmount '%s'"
#~ msgstr "เลิกเมานท์ '%s' ไม่สำเร็จ"

View File

@ -218,12 +218,12 @@ msgstr "يىغقۇچقا قوش"
#: ../js/ui/appFavorites.js:91
#, c-format
msgid "%s has been added to your favorites."
msgstr "%s يىغقۇچىڭىزغا قوشۇلدى."
msgstr "%s يىغقۇچىڭىزغا قوشۇلدى."
#: ../js/ui/appFavorites.js:122
#, c-format
msgid "%s has been removed from your favorites."
msgstr "%s يىغقۇچىڭىزدىن چىقىرىۋېتىلىدۇ."
msgstr "%s يىغقۇچىڭىزدىن چىقىرىۋېتىلىدۇ."
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
@ -437,7 +437,7 @@ msgstr "يېقىنقى تۈرلەر"
#: ../js/ui/endSessionDialog.js:63
#, c-format
msgid "Log Out %s"
msgstr "%s تىزىمدىن چىقىش"
msgstr "%s تىزىمدىن چىقىش"
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
msgid "Log Out"
@ -452,7 +452,7 @@ msgstr ""
#: ../js/ui/endSessionDialog.js:66
#, c-format
msgid "%s will be logged out automatically in %d seconds."
msgstr "%s تىزىمدىن %d سېكۇنتتىن كېيىن ئۆزلۈكىدىن چىقىسىز."
msgstr "%s تىزىمدىن %d سېكۇنتتىن كېيىن ئۆزلۈكىدىن چىقىسىز."
#: ../js/ui/endSessionDialog.js:67
#, c-format
@ -566,7 +566,7 @@ msgstr "سىزىقچە"
#: ../js/ui/panel.js:533
#, c-format
msgid "Quit %s"
msgstr "%s چېكىن"
msgstr "%s چېكىن"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
@ -799,7 +799,7 @@ msgstr "رەت قىل"
#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "%s نىڭ جەزملىشىنى جۈپلەشتۈرۈۋاتىدۇ"
msgstr "%s نىڭ جەزملىشىنى جۈپلەشتۈرۈۋاتىدۇ"
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format
@ -823,7 +823,7 @@ msgstr "ماسلاشمىدى"
#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
msgstr "%s دىن كەلگەن جۈپلەش ئىلتىماسى"
msgstr "%s دىن كەلگەن جۈپلەش ئىلتىماسى"
#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
@ -1074,22 +1074,22 @@ msgstr "مىكروفون"
#: ../js/ui/telepathyClient.js:335
#, c-format
msgid "%s is online."
msgstr "%s توردا."
msgstr "%s توردا."
#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is offline."
msgstr "%s توردا يوق."
msgstr "%s توردا يوق."
#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is away."
msgstr "%s يوق."
msgstr "%s يوق."
#: ../js/ui/telepathyClient.js:346
#, c-format
msgid "%s is busy."
msgstr "%s ئالدىراش."
msgstr "%s ئالدىراش."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
@ -1114,7 +1114,7 @@ msgstr "ئىزدە"
#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "%s باشلاشنى تاماملىدى"
msgstr "%s باشلاشنى تاماملىدى"
#: ../js/ui/windowAttentionHandler.js:44
#, c-format

1654
po/uk.po

File diff suppressed because it is too large Load Diff

View File

@ -17,19 +17,18 @@ 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: 2012-09-19 11:02+0000\n"
"PO-Revision-Date: 2012-09-23 04:35+0800\n"
"Last-Translator: YunQiang Su <wzssyqa@gmail.com>\n"
"POT-Creation-Date: 2012-09-25 10:59+0000\n"
"PO-Revision-Date: 2012-09-25 17:05+0800\n"
"Last-Translator: Eleanor Chen <chenyueg@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bits\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Gtranslator 2.91.5\n"
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
#| msgid "Screen position"
msgid "Screenshots"
msgstr "屏幕截图"
@ -38,12 +37,10 @@ msgid "Record a screencast"
msgstr "屏幕录像"
#: ../data/50-gnome-shell-system.xml.in.h:1
#| msgid "File System"
msgid "System"
msgstr "系统"
#: ../data/50-gnome-shell-system.xml.in.h:2
#| msgid "Message Tray"
msgid "Show the message tray"
msgstr "显示消息托盘"
@ -194,17 +191,6 @@ msgstr "用于编码屏幕录像的 GStreamer 管道"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#, no-c-format
#| msgid ""
#| "Sets the GStreamer pipeline used to encode recordings. It follows the "
#| "syntax used for gst-launch. The pipeline should have an unconnected sink "
#| "pad where the recorded video is recorded. It will normally have a "
#| "unconnected source pad; output from that pad will be written into the "
#| "output file. However the pipeline can also take care of its own output - "
#| "this might be used to send the output to an icecast server via shout2send "
#| "or similar. When unset or set to an empty value, the default pipeline "
#| "will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! "
#| "queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a "
#| "placeholder for a guess at the optimal thread count on the system."
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
@ -252,11 +238,11 @@ msgstr "扩展"
msgid "Select an extension to configure using the combobox above."
msgstr "使用上面的下拉框选择一个要配置的扩展。"
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:528
msgid "Session..."
msgstr "会话..."
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:676
msgctxt "title"
msgid "Sign In"
msgstr "登录"
@ -264,42 +250,46 @@ msgstr "登录"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:743
msgid "Not listed?"
msgstr "未列出?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "取消"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:901
msgctxt "button"
msgid "Sign In"
msgstr "登录"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1240
msgid "Login Window"
msgstr "登录窗口"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "电源"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
msgid "Suspend"
msgstr "挂起"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "重启"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
msgid "Power Off"
msgstr "关机"
#: ../js/gdm/util.js:148
#| msgid "Authentication Required"
msgid "Authentication error"
msgstr "认证出错"
@ -996,11 +986,11 @@ msgstr "安装"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "从 extensions.gnome.org 下载并安装 %s"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "托盘"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "键盘"
@ -1053,19 +1043,19 @@ msgstr "查看源"
msgid "Web Page"
msgstr "网页"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "打开"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "移除"
#: ../js/ui/messageTray.js:2052
#: ../js/ui/messageTray.js:2088
msgid "Message Tray"
msgstr "消息托盘"
#: ../js/ui/messageTray.js:2508
#: ../js/ui/messageTray.js:2551
msgid "System Information"
msgstr "系统信息"
@ -1291,7 +1281,7 @@ msgstr "键盘设置"
msgid "Mouse Settings"
msgstr "鼠标设置"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "声音设置"
@ -1349,11 +1339,11 @@ msgstr "请输入设备上的 PIN 码。"
msgid "OK"
msgstr "确定"
#: ../js/ui/status/keyboard.js:227
#: ../js/ui/status/keyboard.js:228
msgid "Show Keyboard Layout"
msgstr "显示键盘布局"
#: ../js/ui/status/keyboard.js:232
#: ../js/ui/status/keyboard.js:233
msgid "Region and Language Settings"
msgstr "区域和语言设置"
@ -1572,7 +1562,7 @@ msgid "Unknown"
msgstr "未知"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "音量"
@ -1584,63 +1574,63 @@ msgstr "麦克风"
msgid "Log in as another user"
msgstr "以另一个用户身份登录"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "可用"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "忙碌"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "隐身"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "离开"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "空闲"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "不可用"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "切换用户"
#: ../js/ui/userMenu.js:614
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "切换会话"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:743
msgid "Notifications"
msgstr "提示"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:751
msgid "System Settings"
msgstr "系统设置"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:764
msgid "Log Out"
msgstr "注销"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:769
msgid "Lock"
msgstr "锁定"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:784
msgid "Install Updates & Restart"
msgstr "安装更新并重启"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:802
msgid "Your chat status will be set to busy"
msgstr "您的聊天状态将被设置为忙碌"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:803
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."

View File

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell 3.3.90\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-09-24 22:58+0800\n"
"PO-Revision-Date: 2012-09-24 22:58+0800\n"
"POT-Creation-Date: 2012-09-26 11:53+0800\n"
"PO-Revision-Date: 2012-09-26 11:53+0800\n"
"Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n"
"Language-Team: Chinese (Hong Kong) <community@linuxhall.org>\n"
"Language: \n"
@ -209,11 +209,11 @@ msgstr "擴充功能"
msgid "Select an extension to configure using the combobox above."
msgstr "使用上面的組合方塊選擇要設定的擴充功能。"
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:528
msgid "Session..."
msgstr "作業階段…"
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:676
msgctxt "title"
msgid "Sign In"
msgstr "登入"
@ -221,37 +221,42 @@ msgstr "登入"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:743
msgid "Not listed?"
msgstr "沒有列出來?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "取消"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:901
msgctxt "button"
msgid "Sign In"
msgstr "登入"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1240
msgid "Login Window"
msgstr "登入視窗"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "電源"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
msgid "Suspend"
msgstr "暫停"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "重新啟動"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
msgid "Power Off"
msgstr "關閉電源"
@ -952,11 +957,11 @@ msgstr "安裝"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "是否從 extensions.gnome.org 下載並安裝「%s」"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "系統匣"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "鍵盤"
@ -1009,19 +1014,19 @@ msgstr "檢示來源"
msgid "Web Page"
msgstr "網頁"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "開啟"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "移除"
#: ../js/ui/messageTray.js:2055
#: ../js/ui/messageTray.js:2088
msgid "Message Tray"
msgstr "訊息匣"
#: ../js/ui/messageTray.js:2511
#: ../js/ui/messageTray.js:2551
msgid "System Information"
msgstr "系統資訊"
@ -1247,7 +1252,7 @@ msgstr "鍵盤設定值"
msgid "Mouse Settings"
msgstr "滑鼠設定值"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "音效設定值"
@ -1528,7 +1533,7 @@ msgid "Unknown"
msgstr "不明"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "音量"
@ -1540,63 +1545,63 @@ msgstr "麥克風"
msgid "Log in as another user"
msgstr "以另一個使用者身分登入"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "有空"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "忙碌"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "隱藏"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "離開"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "閒置"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "沒空"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "切換使用者"
#: ../js/ui/userMenu.js:614
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "切換工作階段"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:743
msgid "Notifications"
msgstr "通知"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:751
msgid "System Settings"
msgstr "系統設定值"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:764
msgid "Log Out"
msgstr "登出"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:769
msgid "Lock"
msgstr "鎖定"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:784
msgid "Install Updates & Restart"
msgstr "安裝更新 & 重新啟動"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:802
msgid "Your chat status will be set to busy"
msgstr "你的聊天狀態會設為忙碌"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:803
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."

View File

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell 3.3.90\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-09-24 22:58+0800\n"
"PO-Revision-Date: 2012-09-19 19:30+0800\n"
"POT-Creation-Date: 2012-09-26 11:53+0800\n"
"PO-Revision-Date: 2012-09-26 11:34+0800\n"
"Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n"
"Language-Team: Chinese (Taiwan) <zh-l10n@lists.linux.org.tw>\n"
"Language: \n"
@ -230,11 +230,11 @@ msgstr "擴充功能"
msgid "Select an extension to configure using the combobox above."
msgstr "使用上面的組合方塊選擇要設定的擴充功能。"
#: ../js/gdm/loginDialog.js:526
#: ../js/gdm/loginDialog.js:528
msgid "Session..."
msgstr "作業階段…"
#: ../js/gdm/loginDialog.js:674
#: ../js/gdm/loginDialog.js:676
msgctxt "title"
msgid "Sign In"
msgstr "登入"
@ -242,37 +242,42 @@ msgstr "登入"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:741
#: ../js/gdm/loginDialog.js:743
msgid "Not listed?"
msgstr "沒有列出來?"
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
msgid "Cancel"
msgstr "取消"
#: ../js/gdm/loginDialog.js:899
#: ../js/gdm/loginDialog.js:901
msgctxt "button"
msgid "Sign In"
msgstr "登入"
#: ../js/gdm/loginDialog.js:1238
#: ../js/gdm/loginDialog.js:1240
msgid "Login Window"
msgstr "登入視窗"
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:773
#. Translators: accessible name of the power menu in the login screen
#: ../js/gdm/powerMenu.js:35
msgid "Power"
msgstr "電源"
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:778
msgid "Suspend"
msgstr "暫停"
#: ../js/gdm/powerMenu.js:93
#: ../js/gdm/powerMenu.js:94
msgid "Restart"
msgstr "重新啟動"
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
#: ../js/ui/userMenu.js:772
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
#: ../js/ui/userMenu.js:777
msgid "Power Off"
msgstr "關閉電源"
@ -973,11 +978,11 @@ msgstr "安裝"
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "是否從 extensions.gnome.org 下載並安裝「%s」"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:337
msgid "tray"
msgstr "系統匣"
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
#: ../js/ui/status/power.js:205
msgid "Keyboard"
msgstr "鍵盤"
@ -1030,19 +1035,19 @@ msgstr "檢示來源"
msgid "Web Page"
msgstr "網頁"
#: ../js/ui/messageTray.js:1080
#: ../js/ui/messageTray.js:1081
msgid "Open"
msgstr "開啟"
#: ../js/ui/messageTray.js:1087
#: ../js/ui/messageTray.js:1088
msgid "Remove"
msgstr "移除"
#: ../js/ui/messageTray.js:2055
#: ../js/ui/messageTray.js:2088
msgid "Message Tray"
msgstr "訊息匣"
#: ../js/ui/messageTray.js:2511
#: ../js/ui/messageTray.js:2551
msgid "System Information"
msgstr "系統資訊"
@ -1268,7 +1273,7 @@ msgstr "鍵盤設定值"
msgid "Mouse Settings"
msgstr "滑鼠設定值"
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
msgid "Sound Settings"
msgstr "音效設定值"
@ -1549,7 +1554,7 @@ msgid "Unknown"
msgstr "不明"
#. Translators: This is the label for audio volume
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
msgid "Volume"
msgstr "音量"
@ -1561,63 +1566,63 @@ msgstr "麥克風"
msgid "Log in as another user"
msgstr "以另一個使用者身分登入"
#: ../js/ui/userMenu.js:175
#: ../js/ui/userMenu.js:180
msgid "Available"
msgstr "有空"
#: ../js/ui/userMenu.js:178
#: ../js/ui/userMenu.js:183
msgid "Busy"
msgstr "忙碌"
#: ../js/ui/userMenu.js:181
#: ../js/ui/userMenu.js:186
msgid "Invisible"
msgstr "隱藏"
#: ../js/ui/userMenu.js:184
#: ../js/ui/userMenu.js:189
msgid "Away"
msgstr "離開"
#: ../js/ui/userMenu.js:187
#: ../js/ui/userMenu.js:192
msgid "Idle"
msgstr "閒置"
#: ../js/ui/userMenu.js:190
#: ../js/ui/userMenu.js:195
msgid "Unavailable"
msgstr "沒空"
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
msgid "Switch User"
msgstr "切換使用者"
#: ../js/ui/userMenu.js:614
#: ../js/ui/userMenu.js:619
msgid "Switch Session"
msgstr "切換工作階段"
#: ../js/ui/userMenu.js:738
#: ../js/ui/userMenu.js:743
msgid "Notifications"
msgstr "通知"
#: ../js/ui/userMenu.js:746
#: ../js/ui/userMenu.js:751
msgid "System Settings"
msgstr "系統設定值"
#: ../js/ui/userMenu.js:759
#: ../js/ui/userMenu.js:764
msgid "Log Out"
msgstr "登出"
#: ../js/ui/userMenu.js:764
#: ../js/ui/userMenu.js:769
msgid "Lock"
msgstr "鎖定"
#: ../js/ui/userMenu.js:779
#: ../js/ui/userMenu.js:784
msgid "Install Updates & Restart"
msgstr "安裝更新 & 重新啟動"
#: ../js/ui/userMenu.js:797
#: ../js/ui/userMenu.js:802
msgid "Your chat status will be set to busy"
msgstr "您的聊天狀態會設為忙碌"
#: ../js/ui/userMenu.js:798
#: ../js/ui/userMenu.js:803
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."

View File

@ -113,7 +113,6 @@ shell_public_headers_h = \
shell-generic-container.h \
shell-gtk-embed.h \
shell-global.h \
shell-idle-monitor.h \
shell-invert-lightness-effect.h \
shell-mobile-providers.h \
shell-mount-operation.h \
@ -158,7 +157,6 @@ libgnome_shell_la_SOURCES = \
shell-generic-container.c \
shell-gtk-embed.c \
shell-global.c \
shell-idle-monitor.c \
shell-invert-lightness-effect.c \
shell-keyring-prompt.h \
shell-keyring-prompt.c \

View File

@ -31,7 +31,6 @@
#include <string.h>
#define HANDLE_LIBICAL_MEMORY
#include <libecal/libecal.h>
#include <libedataserverui/libedataserverui.h>
#undef CALENDAR_ENABLE_DEBUG
#include "calendar-debug.h"

View File

@ -34,7 +34,6 @@
#include <unistd.h>
#include <gio/gio.h>
#include <gtk/gtk.h>
#define HANDLE_LIBICAL_MEMORY
#include <libecal/libecal.h>
@ -985,9 +984,11 @@ on_name_lost (GDBusConnection *connection,
const gchar *name,
gpointer user_data)
{
GMainLoop *main_loop = user_data;
g_print ("gnome-shell-calendar-server[%d]: Lost (or failed to acquire) the name " BUS_NAME " - exiting\n",
(gint) getpid ());
gtk_main_quit ();
g_main_loop_quit (main_loop);
}
static void
@ -1003,11 +1004,13 @@ stdin_channel_io_func (GIOChannel *source,
GIOCondition condition,
gpointer data)
{
GMainLoop *main_loop = data;
if (condition & G_IO_HUP)
{
g_debug ("gnome-shell-calendar-server[%d]: Got HUP on stdin - exiting\n",
(gint) getpid ());
gtk_main_quit ();
g_main_loop_quit (main_loop);
}
else
{
@ -1022,6 +1025,7 @@ main (int argc,
{
GError *error;
GOptionContext *opt_context;
GMainLoop *main_loop;
gint ret;
guint name_owner_id;
GIOChannel *stdin_channel;
@ -1031,9 +1035,7 @@ main (int argc,
name_owner_id = 0;
stdin_channel = NULL;
/* We need to initialize GTK+ since evolution-data-server may decide to use
* GTK+ to pop up a dialog box */
gtk_init (&argc, &argv);
g_type_init ();
introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL);
g_assert (introspection_data != NULL);
@ -1048,11 +1050,15 @@ main (int argc,
goto out;
}
main_loop = g_main_loop_new (NULL, FALSE);
stdin_channel = g_io_channel_unix_new (STDIN_FILENO);
g_io_add_watch (stdin_channel,
G_IO_HUP,
stdin_channel_io_func,
NULL);
g_io_add_watch_full (stdin_channel,
G_PRIORITY_DEFAULT,
G_IO_HUP,
stdin_channel_io_func,
g_main_loop_ref (main_loop),
(GDestroyNotify) g_main_loop_unref);
name_owner_id = g_bus_own_name (G_BUS_TYPE_SESSION,
BUS_NAME,
@ -1061,10 +1067,12 @@ main (int argc,
on_bus_acquired,
on_name_acquired,
on_name_lost,
NULL,
NULL);
g_main_loop_ref (main_loop),
(GDestroyNotify) g_main_loop_unref);
gtk_main ();
g_main_loop_run (main_loop);
g_main_loop_unref (main_loop);
ret = 0;

View File

@ -392,6 +392,11 @@ static void
g_action_muxer_free_group (gpointer data)
{
Group *group = data;
gint i;
/* 'for loop' or 'four loop'? */
for (i = 0; i < 4; i++)
g_signal_handler_disconnect (group->group, group->handler_ids[i]);
g_object_unref (group->group);
g_free (group->prefix);
@ -525,10 +530,6 @@ g_action_muxer_remove (GActionMuxer *muxer,
g_action_muxer_action_removed (group->group, actions[i], group);
g_strfreev (actions);
/* 'for loop' or 'four loop'? */
for (i = 0; i < 4; i++)
g_signal_handler_disconnect (group->group, group->handler_ids[i]);
g_action_muxer_free_group (group);
}
}

View File

@ -240,8 +240,6 @@ main (int argc,
{
guint name_owner_id;
g_type_init ();
introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL);
g_assert (introspection_data != NULL);

View File

@ -178,6 +178,8 @@ shell_prefs_init (void)
OVERRIDES_SCHEMA);
meta_prefs_override_preference_schema ("edge-tiling",
OVERRIDES_SCHEMA);
meta_prefs_override_preference_schema ("focus-change-on-pointer-rest",
OVERRIDES_SCHEMA);
}
static void
@ -359,8 +361,6 @@ main (int argc, char **argv)
int ecode;
TpDebugSender *sender;
g_type_init ();
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);

View File

@ -92,7 +92,6 @@ main(int argc, char **argv)
g_error ("option parsing failed: %s", error->message);
setlocale (LC_ALL, "");
g_type_init ();
_shell_global_init (NULL);
global = shell_global_get ();

View File

@ -73,6 +73,7 @@ struct _ShellApp
char *window_id_string;
char *casefolded_name;
char *casefolded_generic_name;
char *name_collation_key;
char *casefolded_exec;
char **casefolded_keywords;
@ -1310,6 +1311,7 @@ static void
shell_app_init_search_data (ShellApp *app)
{
const char *name;
const char *generic_name;
const char *exec;
const char * const *keywords;
char *normalized_exec;
@ -1319,6 +1321,12 @@ shell_app_init_search_data (ShellApp *app)
name = g_app_info_get_name (G_APP_INFO (appinfo));
app->casefolded_name = shell_util_normalize_and_casefold (name);
generic_name = g_desktop_app_info_get_generic_name (appinfo);
if (generic_name)
app->casefolded_generic_name = shell_util_normalize_and_casefold (generic_name);
else
app->casefolded_generic_name = NULL;
exec = g_app_info_get_executable (G_APP_INFO (appinfo));
normalized_exec = shell_util_normalize_and_casefold (exec);
app->casefolded_exec = trim_exec_line (normalized_exec);
@ -1388,6 +1396,18 @@ _shell_app_match_search_terms (ShellApp *app,
current_match = MATCH_SUBSTRING;
}
if (app->casefolded_generic_name)
{
p = strstr (app->casefolded_generic_name, term);
if (p != NULL)
{
if (p == app->casefolded_generic_name || *(p - 1) == ' ')
current_match = MATCH_PREFIX;
else if (current_match < MATCH_PREFIX)
current_match = MATCH_SUBSTRING;
}
}
if (app->casefolded_exec)
{
p = strstr (app->casefolded_exec, term);
@ -1497,6 +1517,7 @@ shell_app_finalize (GObject *object)
g_free (app->window_id_string);
g_free (app->casefolded_name);
g_free (app->casefolded_generic_name);
g_free (app->name_collation_key);
g_free (app->casefolded_exec);
g_strfreev (app->casefolded_keywords);

View File

@ -1693,43 +1693,3 @@ shell_global_get_session_mode (ShellGlobal *global)
return global->session_mode;
}
/**
* shell_global_create_xrootpmap_texture:
* @global: The #ShellGlobal
*
* This returns the _XROOTPMAP_ID pixmap that gdm should have stuffed
* in the root window. The goal here is to allow a smooth fade between
* plymouth and the shell greeter. This is also a workaround for gjs not
* supporting raw xlib types.
*
* Returns: (transfer floating): A #ClutterActor that represents the
* _XROOTPMAP_ID pixmap property from the root window.
*/
ClutterActor *
shell_global_create_xrootpmap_texture (ShellGlobal *global)
{
Atom res_type;
int res_format;
unsigned long res_nitems, bytesafter;
unsigned char *data;
Pixmap root_pixmap_id = None;
g_return_val_if_fail (SHELL_IS_GLOBAL (global), NULL);
if (XGetWindowProperty (global->xdisplay,
DefaultRootWindow (global->xdisplay),
XInternAtom (global->xdisplay, "_XROOTPMAP_ID", False),
0, G_MAXLONG, False, XA_PIXMAP,
&res_type, &res_format, &res_nitems, &bytesafter, &data) == Success)
{
if (res_type == XA_PIXMAP && res_format == 32 && res_nitems == 1)
root_pixmap_id = * (Pixmap *) data;
XFree (data);
}
if (root_pixmap_id != None)
return clutter_x11_texture_pixmap_new_with_pixmap (root_pixmap_id);
else
return NULL;
}

View File

@ -136,8 +136,6 @@ void shell_global_reexec_self (ShellGlobal *global);
const char * shell_global_get_session_mode (ShellGlobal *global);
ClutterActor * shell_global_create_xrootpmap_texture (ShellGlobal *global);
G_END_DECLS
#endif /* __SHELL_GLOBAL_H__ */

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