Compare commits

...

66 Commits

Author SHA1 Message Date
f393bb41aa Bump version to 3.15.4
Update NEWS.
2015-01-21 15:45:13 +01:00
4bf53cd507 windowManager: Kill a comment
The code described by the comment was moved away in commit eda27d51,
so it is not misleading at best. It wasn't too useful to begin with,
so kill it off rather than moving it to the correct place ...
2015-01-21 15:44:05 +01:00
fd45d3589b workspacesView: Remove obsolete constant 2015-01-21 15:44:05 +01:00
6efa9e46ca Updated Friulian translation 2015-01-20 21:15:02 +00:00
9f5a2d8aca Remove the dependency on XTest
We haven't been using XTest since edd66c4.
2015-01-18 16:49:36 -08:00
ce35d523a2 windowManager: Allow moving a window above the top workspace
When using dynamic workspaces, a new workspace will be appended
when moving a window down to the last (empty) workspace. It makes
sense to extend the behavior in the opposite direction, and prepend
a new workspace when moving a window up from the first workspace.

https://bugzilla.gnome.org/show_bug.cgi?id=665764
2015-01-16 19:28:57 +01:00
0bfaa5c6a3 windowManager: Update active workspace after inserting a new one
New workspaces are inserted by shifting all windows on workspaces
below the insertion position down. As a result, when the new
workspace is inserted before the active one, we end up with
the illusion of a workspace switch. Instead, activate the workspace
on which the windows from the active one ended up.

https://bugzilla.gnome.org/show_bug.cgi?id=665764
2015-01-16 19:28:56 +01:00
67ec1e5519 windowManager: Don't shift OR windows when inserting a workspace
We are not supposed to mess around with OR windows, so don't try
to shift them to a different workspace. This fixes a warning with
newer versions of mutter.

https://bugzilla.gnome.org/show_bug.cgi?id=665764
2015-01-16 19:28:56 +01:00
cc05d303d8 windowManager: Split out workspace insertion from thumbnails
We will soon allow to insert a new workspace by other means than
DND in between workspace thumbnails, so move the relevant code
to a new windowManager method.

https://bugzilla.gnome.org/show_bug.cgi?id=665764
2015-01-16 19:28:56 +01:00
554de3fb24 Lower slider scrolling step to 2%
https://bugzilla.gnome.org/show_bug.cgi?id=742648
2015-01-16 18:24:36 +01:00
76315fca9f shell-screenshot: Disable unredirection while taking screenshots
Otherwise we grab wrong contents.

https://bugzilla.gnome.org/show_bug.cgi?id=741114
2015-01-13 19:44:03 +01:00
af889168f0 StTextureCache: adapt to MetaWindow changing icon prop type
Mutter change is
https://git.gnome.org/browse/mutter/commit/?id=af7f51b992b20da543312fa9fdf1dcef39704b37

https://bugzilla.gnome.org/show_bug.cgi?id=742824
2015-01-13 15:58:45 +01:00
d8ca374a06 ibusManager: Disable IBus input sources on password entries
Input method preedit text needs to be disabled on password entries
for security and usability reasons.
IBus 1.5.7 provides the signal set-content-type so that panel UIs can
handle these special purpose input entries:
https://github.com/ibus/ibus/commit/6ca5ddb302c9

Unfortunately IBus versions older than 1.5.10 have a bug which causes
spurious set-content-type emissions when switching input focus that
temporarily lose purpose and hints defeating its intended semantics
and confusing users. We thus don't use it in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=730628
2015-01-12 16:13:45 +01:00
19c7da7b08 Updated Spanish translation 2015-01-12 12:19:02 +01:00
42ccfe0ccd Require gsettings-desktop-schemas >= 3.13.1
https://bugzilla.gnome.org/show_bug.cgi?id=742748
2015-01-11 15:50:13 +01:00
538272bb23 recorder: Cleanups 2015-01-11 15:48:05 +01:00
985e909876 recorder: Don't compute the buffer size twice 2015-01-11 15:42:38 +01:00
d183f13456 recorder: Switch to vp9
Currently we have been using the vp8 codec because it was the best unencumbered codec at that time. With vp9 we now have a successor that leads to smaller
files at at the same video quality and has been supported by current browsers
for a while.

With the raise of hidpi and 4K displays we need a better codec that handles
those resolutions better, so switch to vp9.

https://bugzilla.gnome.org/show_bug.cgi?id=742744
2015-01-11 15:35:31 +01:00
e150a9cff2 recorder: Stop using deprecated cogl_read_pixels 2015-01-11 12:53:13 +01:00
60b3d43ea7 calendar: update current day highlight on day change
https://bugzilla.gnome.org/show_bug.cgi?id=742492
2015-01-10 17:44:38 +01:00
e3a8a284a4 slider: Don't hardcode scroll interval for smooth scrolling
Use the SLIDER_SCROLL_STEP constant instead for consistency.

https://bugzilla.gnome.org/show_bug.cgi?id=742648
2015-01-10 14:56:34 +01:00
3136ca086b Updated German translation 2015-01-08 22:40:32 +00:00
3f913b2895 Updated Brazilian Portuguese translation 2015-01-08 18:44:49 +00:00
8345fe006e search: remove redundant check
We check for (metasNeeded.length == 0) at the beginning of the function,
which is only ever called when when a non-zero number of results is
received back from the provider. Effectively, this means that
(metas.length != metasNeeded.length) will also catch (metas.length == 0)
and print a nicer message to the log.
2015-01-07 15:26:21 -08:00
67a807e849 search: improve log message when metas length mismatch
Log also the name of the provider and the expected/received metas.
2015-01-07 15:26:21 -08:00
cea946e745 search: don't forget to notify caller when failing to ensure actors
The updateSearch() function is called in SearchResults every time new
search hits are available from a search provider; SearchResults will
wait for updateSearch() to complete in a callaback, to update the
overall progress of the search operation.

updateSearch() will call _ensureResultActors(), which will in turn call
getResultMetas() on the search provider, which is an operation that can
fail arbitrarily or return inconsistent data, as it's entirely in the
hands of the search provider.

In case _ensureResultActors() returns a failure, updateSearch() is
currently failing to notify the passed-in callback, which might leave
SearchResults in an inconsistent state: make sure the asynchronous flow
always ends up with a notification to the updateSearch() callback.
2015-01-07 15:26:21 -08:00
966ae2c370 Updated Czech translation 2015-01-07 08:53:43 +01:00
897144baba windowManager: Make sure to reset the resizePopup after using it
So that we'll recreate it the next time we want to show it. Otherwise,
we'll try to call things on a half-destroyed ResizePopup and end up
causing errors instead of showing the user their resize popup.
2015-01-02 09:33:20 -08:00
f585fee4cf Updated Hungarian translation 2014-12-31 10:21:00 +00:00
85ec77eb26 Updated Norwegian bokmål translation. 2014-12-31 00:46:24 +01:00
2d372e6201 Updated Russian translation 2014-12-30 23:42:17 +00:00
cb84c3a921 Updated Basque language 2014-12-30 15:14:01 +01:00
fce3cd534a Updated Bengali (India) translation 2014-12-30 11:20:57 +00:00
3291281957 windowManager: Implement the resize popup here
mutter recently removed its implementation, so add a simple one here.
2014-12-29 17:46:37 -08:00
01c6392c13 window-tracker: remove now unused launched_pid_to_app
https://bugzilla.gnome.org/show_bug.cgi?id=736527
2014-12-28 16:40:20 -08:00
186f9b2e2c window-tracker: Fix pid based window/app association
The lookup table used by get_app_from_window_pid contained only pids of
apps launched by gnome-shell itself, but not pids of apps running before
gnome-shell was (re-)started. Also the pids in that table might not even
be the pid of the process that is actually showing the window if wrapper
scripts are used.

Instead use shell_window_tracker_get_app_from_pid which uses the pids
from the windows themselves.

This removes the only use of launched_pid_to_app which will be removed
in the following commit.

This fixes: https://bugzilla.gnome.org/show_bug.cgi?id=736527
2014-12-28 16:40:20 -08:00
2c8e405e27 Updated Slovenian translation 2014-12-25 19:18:45 +01:00
94446eb8c4 Updated Indonesian translation 2014-12-24 04:51:40 +00:00
6803528810 shellDBus: Add mode parameter to AcceleratorActivated signal
This will allow g-s-d to handle actions differently based on the
current mode - namely, allow the power button when locked, but
make sure to never show any dialogs in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=711682
2014-12-19 14:11:55 +01:00
2aa4fb02dd shellDBus: Change AcceleratorActivated signature
Adding new parameters to the signal currently will break keybindings
until gnome-settings-daemon is updated to the new API as well.
Put additional parameters into a dictionary instead to make future
extensions easier.

https://bugzilla.gnome.org/show_bug.cgi?id=711682
2014-12-19 14:11:55 +01:00
906106c700 Bump version to 3.15.3
Update NEWS.
2014-12-19 11:48:00 +01:00
0257a23c31 windowManager: Update stacking during workspace switches
When animating workspace switches, windows on the old and new workspaces
are temporarily reparented. If windows are restacked, those windows will
thus be ignored by mutter until meta_switch_workspace_completed() resyncs
the stacking at the end of the animation.
As a result, activating a window on another workspace that is not on top
of the stack is very noticeably a two-step operation of switching workspace
and raising the window. There is a technical reason for that order[0], but
we can avoid the visible disruption by manually syncing the stack during
the switch operation.

[0] https://git.gnome.org/browse/mutter/tree/src/core/workspace.c#n590

https://bugzilla.gnome.org/show_bug.cgi?id=741680
2014-12-19 11:39:50 +01:00
e0eebc90e0 Rename KeyBindingMode to ActionMode
The keybinding mode is no longer used exclusively for actions triggered
by keybindings, so reflect this by a more generic name.

https://bugzilla.gnome.org/show_bug.cgi?id=740237
2014-12-19 11:39:50 +01:00
ddeac2386f gestures: Restrict actions based on keybindingMode
Just like keybindings and the message tray pointer barrier, gestures
don't always make sense - for instance, swiping up the screen shield
should not trigger the message tray just as the SelectArea action around
the left edge should not open the overview.
To avoid this, restrict gestures based on the current keybinding mode.

https://bugzilla.gnome.org/show_bug.cgi?id=740237
2014-12-19 11:39:50 +01:00
7b9be2188a loginDialog: use two column view if banner message long
Frequently banner messages are longer than can reasonable
fit in a one column view, which leads to a smooshed layout.

This commit changes the layout to a two column view, with the
banner on the left and the prompt on the right, if the banner
message is long enough that it can't fit well above the prompt.
If there isn't enough space for two columns then we keep the
one column layout but add scrollbars.

https://bugzilla.gnome.org/show_bug.cgi?id=703972
2014-12-18 13:58:10 -05:00
117a81e06f loginDialog: display banner message when disable-user-list=true
The login screen supports showing a banner message which admins
can use to mention login rules or disclaimers.

This message only shows up currently if the user list is enabled.
Most people who want to show a banner message also want to disable
the user list.

This commit moves the banner message to display when the user is
prompted for login credentials instead of when showing the user
list. It also adds a scrollbar if the message is too long.

https://bugzilla.gnome.org/show_bug.cgi?id=703972
2014-12-18 13:58:09 -05:00
522fe8e8bf loginDialog: allocate children manually
The login screen is pretty custom full screen container and the standard
layout managers aren't really a good fit for the kind of layout that's
happening. This will be even more problematic with upcoming changes
to login banners, so we need to switch techniques.

This commit moves login dialog over to using a custom allocate handler
that has specific domain knowledge of the parts of the login screen
and where they go.

https://bugzilla.gnome.org/show_bug.cgi?id=703972
2014-12-18 13:58:09 -05:00
73480255b1 Updated Kazakh translation 2014-12-18 00:40:51 +00:00
09d3f8eb71 Updated Basque language 2014-12-17 16:31:51 +01:00
0592adead5 Calendar: ignore timeouts starting the calendar-server
In certain cases the timeout for starting the calendar helper can
be reached but the calendar helper still loads fine. If so, just
ignore the timeout and wait until we get a notification from
dbus of the successful start.

https://bugzilla.gnome.org/show_bug.cgi?id=735308
2014-12-14 17:18:16 -08:00
b21f5c5566 calendar-server: activate evolution-source-registry manually at startup
g_dbus_proxy_new() (and library calls that wrap it) has an hardcoded
timeout of 25 seconds, which is insufficient for starting up e-s-r
in certain setups. Avoid a timeout error by starting the service
manually with a longer timeout before hand.
Also demote the error to a warning + exit failure instead of
a crash, to avoid triggering abrt reports.

https://bugzilla.gnome.org/show_bug.cgi?id=735308
2014-12-14 17:18:16 -08:00
7602260462 Updated Kazakh translation 2014-12-14 14:08:39 +00:00
0448effd82 Updated Turkish translation 2014-12-13 17:46:23 +00:00
90dedccc87 Updated Swedish translation 2014-12-11 19:06:46 +00:00
b29e8a1a3d Fix typo 2014-12-11 15:48:51 +01:00
9689a9ba8b Updated Hungarian translation 2014-11-30 15:31:24 +00:00
4eb0a672db theme: Add high-contrast variant
For now, simply enforce symbolic icons.

https://bugzilla.gnome.org/show_bug.cgi?id=740447
2014-11-29 18:13:03 +01:00
cad56c871a app: Respect icon-style for faded icon texture
Just like regular application icons, the faded icon texture used
in the app menu should follow the theme's icon style setting.

https://bugzilla.gnome.org/show_bug.cgi?id=740447
2014-11-29 18:13:03 +01:00
0acc7ed4c2 app: Use StIcon as icon_texture when loading from a GIcon
Themes - namely the HighContrast one - may now request symbolic
icons rather than fullcolor ones. In order to have recoloring
work as expected in that case, we will need a theme node to pick
up colors from - using an StIcon instead of manually loading a
texture from the cache gives us that for free, so do that.

https://bugzilla.gnome.org/show_bug.cgi?id=740447
2014-11-29 18:13:03 +01:00
2940ef07e9 st-theme-node: Add support for -st-icon-style property
GTK+ added support for a -gtk-icon-style property in themes to
enforce a particular icon style. Do the same for shell themes
with an -st-icon-style property, with the same set of possible
values as the GTK+ variant:
  'requested' - use symbolic or fullcolor icon depending on the
                icon name (default)
  'regular'   - enforce fullcolor icons
  'symbolic'  - enforce symbolic icons

https://bugzilla.gnome.org/show_bug.cgi?id=740447
2014-11-29 18:13:03 +01:00
deddac8748 st-texture-cache: Remove load_gicon_with_colors()
The split between st_texture_cache_load_gicon() and load_gicon_with_colors()
no longer makes any sense, so just move the code into the public method.

https://bugzilla.gnome.org/show_bug.cgi?id=740447
2014-11-29 18:13:03 +01:00
f4cc3327e8 main: Add support for -high-contrast theme variants
While the default Shell style is fairly decent with regard to
accessibility requirements, having the ability to tweak certain
aspects where the regular style works less well is still useful.
For this purpose, try to load a -high-contrast theme variant of
the default stylesheet when a high-contrast theme is requested
(as determined by the GTK+ theme name).

https://bugzilla.gnome.org/show_bug.cgi?id=740447
2014-11-29 18:13:03 +01:00
977448b6bc overview: Set _shown before calling _animateNotVisible
_hideDone checks _shown to determine if anything has shown the overview
while we hid it, and if so, shows the overview forward just in case.

In a local patch that called _hideDone immediately inside _hide for
testing, this broke. While we don't actually depend on this anywhere,
it doesn't hurt so that the next person to hack this up (perhaps me!)
doesn't get stuck debugging it for 20 minutes.
2014-11-27 14:28:32 -08:00
d69eceab3b Update .gitignore 2014-11-27 21:00:51 +01:00
ed7649c93a main: Fix unsetting of custom stylesheets
Since moving to a GFile based API in commit 642bf2b778,
setThemeStylesheet() no longer accepts %null to revert to
the default theme. We should have some way to revert to the
default and the least intrusive option is to return to the
old behavior, so do that.
2014-11-27 14:43:21 +00:00
af6ed9e02a main: Update doc comment 2014-11-27 14:43:21 +00:00
57 changed files with 4272 additions and 3954 deletions

1
.gitignore vendored
View File

@ -86,6 +86,7 @@ src/gnome-shell-perf-helper
src/gnome-shell-perf-tool src/gnome-shell-perf-tool
src/gnome-shell-portal-helper src/gnome-shell-portal-helper
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
src/org-gtk-application.[ch]
src/run-js-test src/run-js-test
src/test-recorder src/test-recorder
src/test-recorder.ogg src/test-recorder.ogg

35
NEWS
View File

@ -1,3 +1,38 @@
3.15.4
======
* Add mode parameter to AcceleratorActivated signal [Florian; #711682]
* Fix PID based window/app association [Sebastian; #736527]
* Fix current day highlight on day change [Sebastian; #742492]
* Switch to vp9 for screencast recordings [Adel; #742744]
* Disable IBus input sources on password entries [Takao; #730628]
* Make slider scrolling smoother [Adel; #742648]
* Allow move-up shortcut to move window above top workspace [Florian; #665764]
* Misc. bug fixes [Adel, Rui; #742748, #742824, #741114]
Contributors:
Cosimo Cecchi, Takao Fujiwara, Adel Gadllah, Sebastian Keller, Rui Matos,
Florian Müllner, Jasper St. Pierre
Translations:
Andika Triwidada [id], Matej Urbančič [sl], Saibal Ray [bn_IN],
Inaki Larranaga Murgoitio [eu], Stas Solovey [ru], Kjartan Maraas [nb],
Balázs Úr [hu], Marek Černocký [cs], Rafael Ferreira [pt_BR],
Bernd Homuth [de], Daniel Mustieles [es], Fabio Tomat [fur]
3.15.3
======
* Add support for high-contrast themes [Florian; #740447]
* Fix banner message on login screen without user list [Ray; #703972]
* Fix flicker when activating windows on another workspace [Florian; #741680]
* Misc. bug fixes [Giovanni, Florian; #735308, #740237]
Contributors:
Giovanni Campagna, Florian Müllner, Jasper St. Pierre, Ray Strode
Translations:
Balázs Úr [hu], Josef Andersson [sv], Muhammet Kara [tr],
Baurzhan Muftakhidinov [kk], Inaki Larranaga Murgoitio [eu]
3.15.2 3.15.2
====== ======
* Fix visual glitch of window preview outline in overview [Chris; #699044] * Fix visual glitch of window preview outline in overview [Chris; #699044]

View File

@ -1,5 +1,5 @@
AC_PREREQ(2.63) AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.15.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) AC_INIT([gnome-shell],[3.15.4],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/shell-global.c]) AC_CONFIG_SRCDIR([src/shell-global.c])
@ -76,7 +76,7 @@ AC_MSG_RESULT($enable_systemd)
CLUTTER_MIN_VERSION=1.15.90 CLUTTER_MIN_VERSION=1.15.90
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
GJS_MIN_VERSION=1.39.0 GJS_MIN_VERSION=1.39.0
MUTTER_MIN_VERSION=3.15.2 MUTTER_MIN_VERSION=3.15.4
GTK_MIN_VERSION=3.15.0 GTK_MIN_VERSION=3.15.0
GIO_MIN_VERSION=2.37.0 GIO_MIN_VERSION=2.37.0
LIBECAL_MIN_VERSION=3.5.3 LIBECAL_MIN_VERSION=3.5.3
@ -97,7 +97,6 @@ SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION
gjs-internals-1.0 >= $GJS_MIN_VERSION gjs-internals-1.0 >= $GJS_MIN_VERSION
$recorder_modules $recorder_modules
gdk-x11-3.0 libsoup-2.4 gdk-x11-3.0 libsoup-2.4
xtst
clutter-x11-1.0 >= $CLUTTER_MIN_VERSION clutter-x11-1.0 >= $CLUTTER_MIN_VERSION
clutter-glx-1.0 >= $CLUTTER_MIN_VERSION clutter-glx-1.0 >= $CLUTTER_MIN_VERSION
libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION
@ -119,7 +118,7 @@ PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0) PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0)
PKG_CHECK_MODULES(TRAY, gtk+-3.0) PKG_CHECK_MODULES(TRAY, gtk+-3.0)
PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0) PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0)
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.7.4) PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.13.1)
PKG_CHECK_MODULES(CARIBOU, caribou-1.0 >= 0.4.8) PKG_CHECK_MODULES(CARIBOU, caribou-1.0 >= 0.4.8)
AC_ARG_ENABLE(browser-plugin, AC_ARG_ENABLE(browser-plugin,

View File

@ -16,6 +16,7 @@
<file>filter-selected-ltr.svg</file> <file>filter-selected-ltr.svg</file>
<file>filter-selected-rtl.svg</file> <file>filter-selected-rtl.svg</file>
<file>gnome-shell.css</file> <file>gnome-shell.css</file>
<file>gnome-shell-high-contrast.css</file>
<file>logged-in-indicator.svg</file> <file>logged-in-indicator.svg</file>
<file>message-tray-background.png</file> <file>message-tray-background.png</file>
<file>more-results.svg</file> <file>more-results.svg</file>

View File

@ -0,0 +1,20 @@
/* Copyright 2014, Red Hat, Inc.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU Lesser General Public License,
* version 2.1, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
* more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
*/
@import url("resource:///org/gnome/shell/theme/gnome-shell.css");
stage {
-st-icon-style: symbolic;
}

View File

@ -2107,6 +2107,15 @@ StScrollBar StButton#vhandle:active {
font-size: 14pt; font-size: 14pt;
} }
/* Resize popup */
.resize-popup {
border-radius: 10px;
background-color: rgba(0.0, 0.0, 0.0, 0.9);
border: 2px solid #868686;
padding: 16px;
font-size: 14pt;
}
/* ShellMountOperation Dialogs */ /* ShellMountOperation Dialogs */
.shell-mount-operation-icon { .shell-mount-operation-icon {
icon-size: 48px; icon-size: 48px;
@ -2388,6 +2397,10 @@ StScrollBar StButton#vhandle:active {
} }
/* Login Dialog */ /* Login Dialog */
.login-dialog-banner-view {
padding-top: 24px;
max-width: 23em;
}
.framed-user-icon { .framed-user-icon {
border: 2px solid #8b8b8b; border: 2px solid #8b8b8b;
@ -2400,11 +2413,7 @@ StScrollBar StButton#vhandle:active {
} }
.login-dialog-banner { .login-dialog-banner {
font-size: 10pt;
font-weight: bold;
text-align: center;
color: #666666; color: #666666;
padding-bottom: 1em;
} }
.login-dialog { .login-dialog {

View File

@ -26,6 +26,7 @@ const Gtk = imports.gi.Gtk;
const Lang = imports.lang; const Lang = imports.lang;
const Mainloop = imports.mainloop; const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta; const Meta = imports.gi.Meta;
const Pango = imports.gi.Pango;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Signals = imports.signals; const Signals = imports.signals;
const St = imports.gi.St; const St = imports.gi.St;
@ -364,12 +365,12 @@ const LoginDialog = new Lang.Class({
Name: 'LoginDialog', Name: 'LoginDialog',
_init: function(parentActor) { _init: function(parentActor) {
this.actor = new St.Widget({ accessible_role: Atk.Role.WINDOW, this.actor = new Shell.GenericContainer({ style_class: 'login-dialog',
layout_manager: new Clutter.BinLayout(),
style_class: 'login-dialog',
visible: false }); visible: false });
this.actor.get_accessible().set_role(Atk.Role.WINDOW);
this.actor.add_constraint(new Layout.MonitorConstraint({ primary: true })); this.actor.add_constraint(new Layout.MonitorConstraint({ primary: true }));
this.actor.connect('allocate', Lang.bind(this, this._onAllocate));
this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
parentActor.add_child(this.actor); parentActor.add_child(this.actor);
@ -405,17 +406,10 @@ const LoginDialog = new Lang.Class({
this._userSelectionBox = new St.BoxLayout({ style_class: 'login-dialog-user-selection-box', this._userSelectionBox = new St.BoxLayout({ style_class: 'login-dialog-user-selection-box',
x_align: Clutter.ActorAlign.CENTER, x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER,
x_expand: true,
y_expand: true,
vertical: true, vertical: true,
visible: false }); visible: false });
this.actor.add_child(this._userSelectionBox); this.actor.add_child(this._userSelectionBox);
this._bannerLabel = new St.Label({ style_class: 'login-dialog-banner',
text: '' });
this._userSelectionBox.add(this._bannerLabel);
this._updateBanner();
this._userList = new UserList(); this._userList = new UserList();
this._userSelectionBox.add(this._userList.actor, this._userSelectionBox.add(this._userList.actor,
{ expand: true, { expand: true,
@ -450,11 +444,25 @@ const LoginDialog = new Lang.Class({
x_align: St.Align.START, x_align: St.Align.START,
x_fill: true }); x_fill: true });
this._bannerView = new St.ScrollView({ style_class: 'login-dialog-banner-view',
opacity: 0,
vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,
hscrollbar_policy: Gtk.PolicyType.NEVER });
this.actor.add_child(this._bannerView);
let bannerBox = new St.BoxLayout({ vertical: true });
this._bannerView.add_actor(bannerBox);
this._bannerLabel = new St.Label({ style_class: 'login-dialog-banner',
text: '' });
this._bannerLabel.clutter_text.line_wrap = true;
this._bannerLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
bannerBox.add_child(this._bannerLabel);
this._updateBanner();
this._logoBin = new St.Widget({ style_class: 'login-dialog-logo-bin', this._logoBin = new St.Widget({ style_class: 'login-dialog-logo-bin',
x_align: Clutter.ActorAlign.CENTER, x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.END, y_align: Clutter.ActorAlign.END });
x_expand: true,
y_expand: true });
this.actor.add_child(this._logoBin); this.actor.add_child(this._logoBin);
this._updateLogo(); this._updateLogo();
@ -485,6 +493,180 @@ const LoginDialog = new Lang.Class({
Lang.bind(this, this._updateDisableUserList)); Lang.bind(this, this._updateDisableUserList));
}, },
_getBannerAllocation: function (dialogBox) {
let actorBox = new Clutter.ActorBox();
let [minWidth, minHeight, natWidth, natHeight] = this._bannerView.get_preferred_size();
let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2;
actorBox.x1 = centerX - natWidth / 2;
actorBox.y1 = dialogBox.y1 + Main.layoutManager.panelBox.height;
actorBox.x2 = actorBox.x1 + natWidth;
actorBox.y2 = actorBox.y1 + natHeight;
return actorBox;
},
_getLogoBinAllocation: function (dialogBox) {
let actorBox = new Clutter.ActorBox();
let [minWidth, minHeight, natWidth, natHeight] = this._logoBin.get_preferred_size();
let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2;
actorBox.x1 = centerX - natWidth / 2;
actorBox.y1 = dialogBox.y2 - natHeight;
actorBox.x2 = actorBox.x1 + natWidth;
actorBox.y2 = actorBox.y1 + natHeight;
return actorBox;
},
_getCenterActorAllocation: function (dialogBox, actor) {
let actorBox = new Clutter.ActorBox();
let [minWidth, minHeight, natWidth, natHeight] = actor.get_preferred_size();
let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2;
let centerY = dialogBox.y1 + (dialogBox.y2 - dialogBox.y1) / 2;
actorBox.x1 = centerX - natWidth / 2;
actorBox.y1 = centerY - natHeight / 2;
actorBox.x2 = actorBox.x1 + natWidth;
actorBox.y2 = actorBox.y1 + natHeight;
return actorBox;
},
_onAllocate: function (actor, dialogBox, flags) {
let dialogWidth = dialogBox.x2 - dialogBox.x1;
let dialogHeight = dialogBox.y2 - dialogBox.y1;
// First find out what space the children require
let bannerAllocation = null;
let bannerHeight = 0;
let bannerWidth = 0;
if (this._bannerView.visible) {
bannerAllocation = this._getBannerAllocation(dialogBox, this._bannerView);
bannerHeight = bannerAllocation.y2 - bannerAllocation.y1;
bannerWidth = bannerAllocation.x2 - bannerAllocation.x1;
}
let authPromptAllocation = null;
let authPromptHeight = 0;
let authPromptWidth = 0;
if (this._authPrompt.actor.visible) {
authPromptAllocation = this._getCenterActorAllocation(dialogBox, this._authPrompt.actor);
authPromptHeight = authPromptAllocation.y2 - authPromptAllocation.y1;
authPromptWidth = authPromptAllocation.x2 - authPromptAllocation.x1;
}
let userSelectionAllocation = null;
let userSelectionHeight = 0;
if (this._userSelectionBox.visible) {
userSelectionAllocation = this._getCenterActorAllocation(dialogBox, this._userSelectionBox);
userSelectionHeight = userSelectionAllocation.y2 - userSelectionAllocation.y1;
}
let logoAllocation = null;
let logoHeight = 0;
if (this._logoBin.visible) {
logoAllocation = this._getLogoBinAllocation(dialogBox);
logoHeight = logoAllocation.y2 - logoAllocation.y1;
}
// Then figure out if we're overly constrained and need to
// try a different layout, or if we have what extra space we
// can hand out
if (bannerAllocation) {
let leftOverYSpace = dialogHeight - bannerHeight - authPromptHeight - logoHeight;
if (leftOverYSpace > 0) {
// First figure out how much left over space is up top
let leftOverTopSpace = leftOverYSpace / 2;
// Then, shift the banner into the middle of that extra space
let yShift = leftOverTopSpace / 2;
bannerAllocation.y1 += yShift;
bannerAllocation.y2 += yShift;
} else {
// Then figure out how much space there would be if we switched to a
// wide layout with banner on one side and authprompt on the other.
let leftOverXSpace = dialogWidth - authPromptWidth;
// In a wide view, half of the available space goes to the banner,
// and the other half goes to the margins.
let wideBannerWidth = leftOverXSpace / 2;
let wideSpacing = leftOverXSpace - wideBannerWidth;
// If we do go with a wide layout, we need there to be at least enough
// space for the banner and the auth prompt to be the same width,
// so it doesn't look unbalanced.
if (authPromptWidth > 0 && wideBannerWidth > authPromptWidth) {
let centerX = dialogBox.x1 + dialogWidth / 2;
let centerY = dialogBox.y1 + dialogHeight / 2;
// A small portion of the spacing goes down the center of the
// screen to help delimit the two columns of the wide view
let centerGap = wideSpacing / 8;
// place the banner along the left edge of the center margin
bannerAllocation.x2 = centerX - centerGap / 2;
bannerAllocation.x1 = bannerAllocation.x2 - wideBannerWidth;
// figure out how tall it would like to be and try to accomodate
// but don't let it get too close to the logo
let [wideMinHeight, wideBannerHeight] = this._bannerView.get_preferred_height(wideBannerWidth);
let maxWideHeight = dialogHeight - 3 * logoHeight;
wideBannerHeight = Math.min(maxWideHeight, wideBannerHeight);
bannerAllocation.y1 = centerY - wideBannerHeight / 2;
bannerAllocation.y2 = bannerAllocation.y1 + wideBannerHeight;
// place the auth prompt along the right edge of the center margin
authPromptAllocation.x1 = centerX + centerGap / 2;
authPromptAllocation.x2 = authPromptAllocation.x1 + authPromptWidth;
} else {
// If we aren't going to do a wide view, then we need to limit
// the height of the banner so it will present scrollbars
// First figure out how much space there is without the banner
leftOverYSpace += bannerHeight;
// Then figure out how much of that space is up top
let availableTopSpace = leftOverYSpace / 2;
// Then give all of that space to the banner
bannerAllocation.y2 = bannerAllocation.y1 + availableTopSpace;
}
}
} else if (userSelectionAllocation) {
// Grow the user list to fill the space
let leftOverYSpace = dialogHeight - userSelectionHeight - logoHeight;
if (leftOverYSpace > 0) {
let topExpansion = leftOverYSpace / 2;
let bottomExpansion = topExpansion;
userSelectionAllocation.y1 -= topExpansion;
userSelectionAllocation.y2 += bottomExpansion;
}
}
// Finally hand out the allocations
if (bannerAllocation) {
this._bannerView.allocate(bannerAllocation, flags);
}
if (authPromptAllocation)
this._authPrompt.actor.allocate(authPromptAllocation, flags);
if (userSelectionAllocation)
this._userSelectionBox.allocate(userSelectionAllocation, flags);
if (logoAllocation)
this._logoBin.allocate(logoAllocation, flags);
},
_ensureUserListLoaded: function() { _ensureUserListLoaded: function() {
if (!this._userManager.is_loaded) { if (!this._userManager.is_loaded) {
this._userManagerLoadedId = this._userManager.connect('notify::is-loaded', this._userManagerLoadedId = this._userManager.connect('notify::is-loaded',
@ -537,6 +719,18 @@ const LoginDialog = new Lang.Class({
} }
}, },
_fadeInBannerView: function() {
Tweener.addTween(this._bannerView,
{ opacity: 255,
time: _FADE_ANIMATION_TIME,
transition: 'easeOutQuad' });
},
_hideBannerView: function() {
Tweener.removeTweens(this._bannerView);
this._bannerView.opacity = 0;
},
_updateLogoTexture: function(cache, file) { _updateLogoTexture: function(cache, file) {
if (this._logoFile && !this._logoFile.equal(file)) if (this._logoFile && !this._logoFile.equal(file))
return; return;
@ -604,6 +798,7 @@ const LoginDialog = new Lang.Class({
{ opacity: 255, { opacity: 255,
time: _FADE_ANIMATION_TIME, time: _FADE_ANIMATION_TIME,
transition: 'easeOutQuad' }); transition: 'easeOutQuad' });
this._fadeInBannerView();
}, },
_showRealmLoginHint: function(realmManager, hint) { _showRealmLoginHint: function(realmManager, hint) {
@ -860,6 +1055,7 @@ const LoginDialog = new Lang.Class({
_showUserList: function() { _showUserList: function() {
this._ensureUserListLoaded(); this._ensureUserListLoaded();
this._authPrompt.hide(); this._authPrompt.hide();
this._hideBannerView();
this._sessionMenuButton.close(); this._sessionMenuButton.close();
this._setUserListExpanded(true); this._setUserListExpanded(true);
this._notListedButton.show(); this._notListedButton.show();
@ -959,7 +1155,7 @@ const LoginDialog = new Lang.Class({
this.actor.show(); this.actor.show();
this.actor.opacity = 0; this.actor.opacity = 0;
Main.pushModal(this.actor, { keybindingMode: Shell.KeyBindingMode.LOGIN_SCREEN }); Main.pushModal(this.actor, { actionMode: Shell.ActionMode.LOGIN_SCREEN });
Tweener.addTween(this.actor, Tweener.addTween(this.actor,
{ opacity: 255, { opacity: 255,

View File

@ -43,7 +43,7 @@ function getCurrentExtension() {
let path = match[1]; let path = match[1];
let file = Gio.File.new_for_path(path); let file = Gio.File.new_for_path(path);
// Walk up the directory tree, looking for an extesion with // Walk up the directory tree, looking for an extension with
// the same UUID as a directory name. // the same UUID as a directory name.
while (file != null) { while (file != null) {
let extension = extensions[file.get_basename()]; let extension = extensions[file.get_basename()];

View File

@ -8,7 +8,7 @@ const Signals = imports.signals;
try { try {
var IBus = imports.gi.IBus; var IBus = imports.gi.IBus;
_checkIBusVersion(); _checkIBusVersion(1, 5, 2);
const IBusCandidatePopup = imports.ui.ibusCandidatePopup; const IBusCandidatePopup = imports.ui.ibusCandidatePopup;
} catch (e) { } catch (e) {
var IBus = null; var IBus = null;
@ -17,11 +17,7 @@ try {
let _ibusManager = null; let _ibusManager = null;
function _checkIBusVersion() { function _checkIBusVersion(requiredMajor, requiredMinor, requiredMicro) {
var requiredMajor = 1;
var requiredMinor = 5;
var requiredMicro = 2;
if ((IBus.MAJOR_VERSION > requiredMajor) || if ((IBus.MAJOR_VERSION > requiredMajor) ||
(IBus.MAJOR_VERSION == requiredMajor && IBus.MINOR_VERSION > requiredMinor) || (IBus.MAJOR_VERSION == requiredMajor && IBus.MINOR_VERSION > requiredMinor) ||
(IBus.MAJOR_VERSION == requiredMajor && IBus.MINOR_VERSION == requiredMinor && (IBus.MAJOR_VERSION == requiredMajor && IBus.MINOR_VERSION == requiredMinor &&
@ -125,6 +121,16 @@ const IBusManager = new Lang.Class({
object_path: IBus.PATH_PANEL }); object_path: IBus.PATH_PANEL });
this._candidatePopup.setPanelService(this._panelService); this._candidatePopup.setPanelService(this._panelService);
this._panelService.connect('update-property', Lang.bind(this, this._updateProperty)); this._panelService.connect('update-property', Lang.bind(this, this._updateProperty));
try {
// IBus versions older than 1.5.10 have a bug which
// causes spurious set-content-type emissions when
// switching input focus that temporarily lose purpose
// and hints defeating its intended semantics and
// confusing users. We thus don't use it in that case.
_checkIBusVersion(1, 5, 10);
this._panelService.connect('set-content-type', Lang.bind(this, this._setContentType));
} catch (e) {
}
// If an engine is already active we need to get its properties // If an engine is already active we need to get its properties
this._ibus.get_global_engine_async(-1, null, Lang.bind(this, function(i, result) { this._ibus.get_global_engine_async(-1, null, Lang.bind(this, function(i, result) {
let engine; let engine;
@ -174,6 +180,10 @@ const IBusManager = new Lang.Class({
this.emit('property-updated', this._currentEngineName, prop); this.emit('property-updated', this._currentEngineName, prop);
}, },
_setContentType: function(panel, purpose, hints) {
this.emit('set-content-type', purpose, hints);
},
activateProperty: function(key, state) { activateProperty: function(key, state) {
this._panelService.property_activate(key, state); this._panelService.property_activate(key, state);
}, },
@ -186,7 +196,10 @@ const IBusManager = new Lang.Class({
}, },
setEngine: function(id, callback) { setEngine: function(id, callback) {
if (!IBus || !this._ready || id == this._currentEngineName) { // Send id even if id == this._currentEngineName
// because 'properties-registered' signal can be emitted
// while this._ibusSources == null on a lock screen.
if (!IBus || !this._ready) {
if (callback) if (callback)
callback(); callback();
return; return;

View File

@ -233,12 +233,25 @@ const DBusEventSource = new Lang.Class({
this._initialized = false; this._initialized = false;
this._dbusProxy = new CalendarServer(); this._dbusProxy = new CalendarServer();
this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null, Lang.bind(this, function(object, result) { this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null, Lang.bind(this, function(object, result) {
let loaded = false;
try { try {
this._dbusProxy.init_finish(result); this._dbusProxy.init_finish(result);
loaded = true;
} catch(e) { } catch(e) {
if (e.matches(Gio.DBusError, Gio.DBusError.TIMED_OUT)) {
// Ignore timeouts and install signals as normal, because with high
// probability the service will appear later on, and we will get a
// NameOwnerChanged which will finish loading
//
// (But still _initialized to false, because the proxy does not know
// about the HasCalendars property and would cause an exception trying
// to read it)
} else {
log('Error loading calendars: ' + e.message); log('Error loading calendars: ' + e.message);
return; return;
} }
}
this._dbusProxy.connectSignal('Changed', Lang.bind(this, this._onChanged)); this._dbusProxy.connectSignal('Changed', Lang.bind(this, this._onChanged));
@ -253,9 +266,11 @@ const DBusEventSource = new Lang.Class({
this.emit('notify::has-calendars'); this.emit('notify::has-calendars');
})); }));
this._initialized = true; this._initialized = loaded;
if (loaded) {
this.emit('notify::has-calendars'); this.emit('notify::has-calendars');
this._onNameAppeared(); this._onNameAppeared();
}
})); }));
}, },
@ -277,6 +292,7 @@ const DBusEventSource = new Lang.Class({
}, },
_onNameAppeared: function(owner) { _onNameAppeared: function(owner) {
this._initialized = true;
this._resetCache(); this._resetCache();
this._loadEvents(true); this._loadEvents(true);
}, },
@ -585,6 +601,7 @@ const Calendar = new Lang.Class({
beginDate.setHours(12); beginDate.setHours(12);
this._calendarBegin = new Date(beginDate); this._calendarBegin = new Date(beginDate);
this._markedAsToday = now;
let year = beginDate.getYear(); let year = beginDate.getYear();
@ -676,7 +693,7 @@ const Calendar = new Lang.Class({
else else
this._monthLabel.text = this._selectedDate.toLocaleFormat(this._headerFormat); this._monthLabel.text = this._selectedDate.toLocaleFormat(this._headerFormat);
if (!this._calendarBegin || !_sameMonth(this._selectedDate, this._calendarBegin)) if (!this._calendarBegin || !_sameMonth(this._selectedDate, this._calendarBegin) || !_sameDay(now, this._markedAsToday))
this._rebuildCalendar(); this._rebuildCalendar();
this._buttons.forEach(Lang.bind(this, function(button) { this._buttons.forEach(Lang.bind(this, function(button) {

View File

@ -100,7 +100,7 @@ const CtrlAltTabManager = new Lang.Class({
if (app) if (app)
icon = app.create_icon_texture(POPUP_APPICON_SIZE); icon = app.create_icon_texture(POPUP_APPICON_SIZE);
else else
icon = textureCache.bind_pixbuf_property(windows[i], 'icon'); icon = textureCache.bind_cairo_surface_property(windows[i], 'icon');
} }
items.push({ name: windows[i].title, items.push({ name: windows[i].title,

View File

@ -6,6 +6,8 @@ const Meta = imports.gi.Meta;
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const St = imports.gi.St; const St = imports.gi.St;
const Main = imports.ui.main;
const EDGE_THRESHOLD = 20; const EDGE_THRESHOLD = 20;
const DRAG_DISTANCE = 80; const DRAG_DISTANCE = 80;
@ -13,9 +15,10 @@ const EdgeDragAction = new Lang.Class({
Name: 'EdgeDragAction', Name: 'EdgeDragAction',
Extends: Clutter.GestureAction, Extends: Clutter.GestureAction,
_init : function(side) { _init : function(side, allowedModes) {
this.parent(); this.parent();
this._side = side; this._side = side;
this._allowedModes = allowedModes;
this.set_n_touch_points(1); this.set_n_touch_points(1);
global.display.connect('grab-op-begin', Lang.bind(this, function() { global.display.connect('grab-op-begin', Lang.bind(this, function() {
@ -34,6 +37,9 @@ const EdgeDragAction = new Lang.Class({
if (this.get_n_current_points() == 0) if (this.get_n_current_points() == 0)
return false; return false;
if (!(this._allowedModes & Main.actionMode))
return false;
let [x, y] = this.get_press_coords(0); let [x, y] = this.get_press_coords(0);
let monitorRect = this._getMonitorRect(x, y); let monitorRect = this._getMonitorRect(x, y);

View File

@ -458,8 +458,8 @@ const LayoutManager = new Lang.Class({
_setupTrayPressure: function() { _setupTrayPressure: function() {
this._trayPressure = new PressureBarrier(MESSAGE_TRAY_PRESSURE_THRESHOLD, this._trayPressure = new PressureBarrier(MESSAGE_TRAY_PRESSURE_THRESHOLD,
MESSAGE_TRAY_PRESSURE_TIMEOUT, MESSAGE_TRAY_PRESSURE_TIMEOUT,
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW); Shell.ActionMode.OVERVIEW);
this._trayPressure.setEventFilter(this._trayBarrierEventFilter); this._trayPressure.setEventFilter(this._trayBarrierEventFilter);
this._trayPressure.connect('trigger', function(barrier) { this._trayPressure.connect('trigger', function(barrier) {
if (Main.layoutManager.bottomMonitor.inFullscreen) if (Main.layoutManager.bottomMonitor.inFullscreen)
@ -1067,8 +1067,8 @@ const HotCorner = new Lang.Class({
this._pressureBarrier = new PressureBarrier(HOT_CORNER_PRESSURE_THRESHOLD, this._pressureBarrier = new PressureBarrier(HOT_CORNER_PRESSURE_THRESHOLD,
HOT_CORNER_PRESSURE_TIMEOUT, HOT_CORNER_PRESSURE_TIMEOUT,
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW); Shell.ActionMode.OVERVIEW);
this._pressureBarrier.connect('trigger', Lang.bind(this, this._toggleOverview)); this._pressureBarrier.connect('trigger', Lang.bind(this, this._toggleOverview));
// Cache the three ripples instead of dynamically creating and destroying them. // Cache the three ripples instead of dynamically creating and destroying them.
@ -1245,10 +1245,10 @@ const HotCorner = new Lang.Class({
const PressureBarrier = new Lang.Class({ const PressureBarrier = new Lang.Class({
Name: 'PressureBarrier', Name: 'PressureBarrier',
_init: function(threshold, timeout, keybindingMode) { _init: function(threshold, timeout, actionMode) {
this._threshold = threshold; this._threshold = threshold;
this._timeout = timeout; this._timeout = timeout;
this._keybindingMode = keybindingMode; this._actionMode = actionMode;
this._barriers = []; this._barriers = [];
this._eventFilter = null; this._eventFilter = null;
@ -1351,7 +1351,7 @@ const PressureBarrier = new Lang.Class({
return; return;
// Throw out all events not in the proper keybinding mode // Throw out all events not in the proper keybinding mode
if (!(this._keybindingMode & Main.keybindingMode)) if (!(this._actionMode & Main.actionMode))
return; return;
let slide = this._getDistanceAlongBarrier(barrier, event); let slide = this._getDistanceAlongBarrier(barrier, event);

View File

@ -1086,7 +1086,7 @@ const LookingGlass = new Lang.Class({
if (this._open) if (this._open)
return; return;
if (!Main.pushModal(this._entry, { keybindingMode: Shell.KeyBindingMode.LOOKING_GLASS })) if (!Main.pushModal(this._entry, { actionMode: Shell.ActionMode.LOOKING_GLASS }))
return; return;
this._notebook.selectIndex(0); this._notebook.selectIndex(0);

View File

@ -4,6 +4,7 @@ const Clutter = imports.gi.Clutter;
const Gdk = imports.gi.Gdk; const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang; const Lang = imports.lang;
const Mainloop = imports.mainloop; const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta; const Meta = imports.gi.Meta;
@ -62,7 +63,7 @@ let shellMountOpDBusService = null;
let screenSaverDBus = null; let screenSaverDBus = null;
let screencastService = null; let screencastService = null;
let modalCount = 0; let modalCount = 0;
let keybindingMode = Shell.KeyBindingMode.NONE; let actionMode = Shell.ActionMode.NONE;
let modalActorFocusStack = []; let modalActorFocusStack = [];
let uiGroup = null; let uiGroup = null;
let magnifier = null; let magnifier = null;
@ -75,18 +76,19 @@ let _cssStylesheet = null;
let _a11ySettings = null; let _a11ySettings = null;
function _sessionUpdated() { function _sessionUpdated() {
if (sessionMode.isPrimary)
_loadDefaultStylesheet(); _loadDefaultStylesheet();
wm.setCustomKeybindingHandler('panel-main-menu', wm.setCustomKeybindingHandler('panel-main-menu',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
sessionMode.hasOverview ? Lang.bind(overview, overview.toggle) : null); sessionMode.hasOverview ? Lang.bind(overview, overview.toggle) : null);
wm.allowKeybinding('overlay-key', Shell.KeyBindingMode.NORMAL | wm.allowKeybinding('overlay-key', Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW); Shell.ActionMode.OVERVIEW);
wm.setCustomKeybindingHandler('panel-run-dialog', wm.setCustomKeybindingHandler('panel-run-dialog',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
sessionMode.hasRunDialog ? openRunDialog : null); sessionMode.hasRunDialog ? openRunDialog : null);
if (!sessionMode.hasRunDialog) { if (!sessionMode.hasRunDialog) {
@ -109,6 +111,8 @@ function start() {
sessionMode = new SessionMode.SessionMode(); sessionMode = new SessionMode.SessionMode();
sessionMode.connect('updated', _sessionUpdated); sessionMode.connect('updated', _sessionUpdated);
Gtk.Settings.get_default().connect('notify::gtk-theme-name',
_loadDefaultStylesheet);
_initializeUI(); _initializeUI();
shellDBusService = new ShellDBus.GnomeShell(); shellDBusService = new ShellDBus.GnomeShell();
@ -205,8 +209,8 @@ function _initializeUI() {
} }
layoutManager.connect('startup-complete', function() { layoutManager.connect('startup-complete', function() {
if (keybindingMode == Shell.KeyBindingMode.NONE) { if (actionMode == Shell.ActionMode.NONE) {
keybindingMode = Shell.KeyBindingMode.NORMAL; actionMode = Shell.ActionMode.NORMAL;
} }
if (screenShield) { if (screenShield) {
screenShield.lockIfWasLocked(); screenShield.lockIfWasLocked();
@ -225,24 +229,36 @@ function _initializeUI() {
}); });
} }
function _getDefaultStylesheet() { function _getStylesheet(name) {
let stylesheet; let stylesheet;
stylesheet = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/' + sessionMode.stylesheetName); stylesheet = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/' + name);
if (stylesheet.query_exists(null)) if (stylesheet.query_exists(null))
return stylesheet; return stylesheet;
stylesheet = Gio.File.new_for_path(global.datadir + '/theme/' + sessionMode.stylesheetName); stylesheet = Gio.File.new_for_path(global.datadir + '/theme/' + name);
if (stylesheet.query_exists(null)) if (stylesheet.query_exists(null))
return stylesheet; return stylesheet;
return null; return null;
} }
function _loadDefaultStylesheet() { function _getDefaultStylesheet() {
if (!sessionMode.isPrimary) let stylesheet = null;
return; let name = sessionMode.stylesheetName;
// Look for a high-contrast variant first when using GTK+'s HighContrast
// theme
if (Gtk.Settings.get_default().gtk_theme_name == 'HighContrast')
stylesheet = _getStylesheet(name.replace('.css', '-high-contrast.css'));
if (stylesheet == null)
stylesheet = _getStylesheet(sessionMode.stylesheetName);
return stylesheet;
}
function _loadDefaultStylesheet() {
let stylesheet = _getDefaultStylesheet(); let stylesheet = _getDefaultStylesheet();
if (_defaultCssStylesheet && _defaultCssStylesheet.equal(stylesheet)) if (_defaultCssStylesheet && _defaultCssStylesheet.equal(stylesheet))
return; return;
@ -256,7 +272,7 @@ function _loadDefaultStylesheet() {
* *
* Get the theme CSS file that the shell will load * Get the theme CSS file that the shell will load
* *
* Returns: A file path that contains the theme CSS, * Returns: A #GFile that contains the theme CSS,
* null if using the default * null if using the default
*/ */
function getThemeStylesheet() { function getThemeStylesheet() {
@ -271,7 +287,7 @@ function getThemeStylesheet() {
* Set the theme CSS file that the shell will load * Set the theme CSS file that the shell will load
*/ */
function setThemeStylesheet(cssStylesheet) { function setThemeStylesheet(cssStylesheet) {
_cssStylesheet = Gio.File.new_for_path(cssStylesheet); _cssStylesheet = cssStylesheet ? Gio.File.new_for_path(cssStylesheet) : null;
} }
/** /**
@ -356,7 +372,7 @@ function _findModal(actor) {
* - options: Meta.ModalOptions flags to indicate that the pointer is * - options: Meta.ModalOptions flags to indicate that the pointer is
* already grabbed * already grabbed
* *
* - keybindingMode: used to set the current Shell.KeyBindingMode to filter * - actionMode: used to set the current Shell.ActionMode to filter
* global keybindings; the default of NONE will filter * global keybindings; the default of NONE will filter
* out all keybindings * out all keybindings
* *
@ -365,7 +381,7 @@ function _findModal(actor) {
function pushModal(actor, params) { function pushModal(actor, params) {
params = Params.parse(params, { timestamp: global.get_current_time(), params = Params.parse(params, { timestamp: global.get_current_time(),
options: 0, options: 0,
keybindingMode: Shell.KeyBindingMode.NONE }); actionMode: Shell.ActionMode.NONE });
if (modalCount == 0) { if (modalCount == 0) {
if (!global.begin_modal(params.timestamp, params.options)) { if (!global.begin_modal(params.timestamp, params.options)) {
@ -395,9 +411,9 @@ function pushModal(actor, params) {
destroyId: actorDestroyId, destroyId: actorDestroyId,
prevFocus: prevFocus, prevFocus: prevFocus,
prevFocusDestroyId: prevFocusDestroyId, prevFocusDestroyId: prevFocusDestroyId,
keybindingMode: keybindingMode }); actionMode: actionMode });
keybindingMode = params.keybindingMode; actionMode = params.actionMode;
global.stage.set_key_focus(actor); global.stage.set_key_focus(actor);
return true; return true;
} }
@ -423,7 +439,7 @@ function popModal(actor, timestamp) {
if (focusIndex < 0) { if (focusIndex < 0) {
global.stage.set_key_focus(null); global.stage.set_key_focus(null);
global.end_modal(timestamp); global.end_modal(timestamp);
keybindingMode = Shell.KeyBindingMode.NORMAL; actionMode = Shell.ActionMode.NORMAL;
throw new Error('incorrect pop'); throw new Error('incorrect pop');
} }
@ -436,7 +452,7 @@ function popModal(actor, timestamp) {
if (focusIndex == modalActorFocusStack.length - 1) { if (focusIndex == modalActorFocusStack.length - 1) {
if (record.prevFocus) if (record.prevFocus)
record.prevFocus.disconnect(record.prevFocusDestroyId); record.prevFocus.disconnect(record.prevFocusDestroyId);
keybindingMode = record.keybindingMode; actionMode = record.actionMode;
global.stage.set_key_focus(record.prevFocus); global.stage.set_key_focus(record.prevFocus);
} else { } else {
// If we have: // If we have:
@ -461,7 +477,7 @@ function popModal(actor, timestamp) {
for (let i = modalActorFocusStack.length - 1; i > focusIndex; i--) { for (let i = modalActorFocusStack.length - 1; i > focusIndex; i--) {
modalActorFocusStack[i].prevFocus = modalActorFocusStack[i - 1].prevFocus; modalActorFocusStack[i].prevFocus = modalActorFocusStack[i - 1].prevFocus;
modalActorFocusStack[i].prevFocusDestroyId = modalActorFocusStack[i - 1].prevFocusDestroyId; modalActorFocusStack[i].prevFocusDestroyId = modalActorFocusStack[i - 1].prevFocusDestroyId;
modalActorFocusStack[i].keybindingMode = modalActorFocusStack[i - 1].keybindingMode; modalActorFocusStack[i].actionMode = modalActorFocusStack[i - 1].actionMode;
} }
} }
modalActorFocusStack.splice(focusIndex, 1); modalActorFocusStack.splice(focusIndex, 1);
@ -472,7 +488,7 @@ function popModal(actor, timestamp) {
layoutManager.modalEnded(); layoutManager.modalEnded();
global.end_modal(timestamp); global.end_modal(timestamp);
Meta.enable_unredirect_for_screen(global.screen); Meta.enable_unredirect_for_screen(global.screen);
keybindingMode = Shell.KeyBindingMode.NORMAL; actionMode = Shell.ActionMode.NORMAL;
} }
function createLookingGlass() { function createLookingGlass() {

View File

@ -1852,7 +1852,7 @@ const MessageTray = new Lang.Class({
this.idleMonitor = Meta.IdleMonitor.get_core(); this.idleMonitor = Meta.IdleMonitor.get_core();
this._grabHelper = new GrabHelper.GrabHelper(this.actor, this._grabHelper = new GrabHelper.GrabHelper(this.actor,
{ keybindingMode: Shell.KeyBindingMode.MESSAGE_TRAY }); { actionMode: Shell.ActionMode.MESSAGE_TRAY });
this._grabHelper.addActor(this._summaryBoxPointer.actor); this._grabHelper.addActor(this._summaryBoxPointer.actor);
this._grabHelper.addActor(this.actor); this._grabHelper.addActor(this.actor);
@ -1916,16 +1916,16 @@ const MessageTray = new Lang.Class({
Main.wm.addKeybinding('toggle-message-tray', Main.wm.addKeybinding('toggle-message-tray',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.MESSAGE_TRAY | Shell.ActionMode.MESSAGE_TRAY |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this.toggleAndNavigate)); Lang.bind(this, this.toggleAndNavigate));
Main.wm.addKeybinding('focus-active-notification', Main.wm.addKeybinding('focus-active-notification',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.MESSAGE_TRAY | Shell.ActionMode.MESSAGE_TRAY |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._expandActiveNotification)); Lang.bind(this, this._expandActiveNotification));
this._sources = new Map(); this._sources = new Map();
@ -1951,7 +1951,9 @@ const MessageTray = new Lang.Class({
this._messageTrayMenuButton.actor.connect('key-press-event', this._messageTrayMenuButton.actor.connect('key-press-event',
Lang.bind(this, this._onTrayButtonKeyPress)); Lang.bind(this, this._onTrayButtonKeyPress));
let gesture = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM); let gesture = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW);
gesture.connect('activated', Lang.bind(this, this.toggle)); gesture.connect('activated', Lang.bind(this, this.toggle));
global.stage.add_action(gesture); global.stage.add_action(gesture);
}, },

View File

@ -41,14 +41,14 @@ const ModalDialog = new Lang.Class({
_init: function(params) { _init: function(params) {
params = Params.parse(params, { shellReactive: false, params = Params.parse(params, { shellReactive: false,
styleClass: null, styleClass: null,
keybindingMode: Shell.KeyBindingMode.SYSTEM_MODAL, actionMode: Shell.ActionMode.SYSTEM_MODAL,
shouldFadeIn: true, shouldFadeIn: true,
shouldFadeOut: true, shouldFadeOut: true,
destroyOnClose: true }); destroyOnClose: true });
this.state = State.CLOSED; this.state = State.CLOSED;
this._hasModal = false; this._hasModal = false;
this._keybindingMode = params.keybindingMode; this._actionMode = params.actionMode;
this._shellReactive = params.shellReactive; this._shellReactive = params.shellReactive;
this._shouldFadeIn = params.shouldFadeIn; this._shouldFadeIn = params.shouldFadeIn;
this._shouldFadeOut = params.shouldFadeOut; this._shouldFadeOut = params.shouldFadeOut;
@ -362,7 +362,7 @@ const ModalDialog = new Lang.Class({
if (this._hasModal) if (this._hasModal)
return true; return true;
if (!Main.pushModal(this._group, { timestamp: timestamp, if (!Main.pushModal(this._group, { timestamp: timestamp,
keybindingMode: this._keybindingMode })) actionMode: this._actionMode }))
return false; return false;
this._hasModal = true; this._hasModal = true;

View File

@ -509,7 +509,7 @@ const Overview = new Lang.Class({
if (shouldBeModal) { if (shouldBeModal) {
if (!this._modal) { if (!this._modal) {
if (Main.pushModal(this._overview, if (Main.pushModal(this._overview,
{ keybindingMode: Shell.KeyBindingMode.OVERVIEW })) { { actionMode: Shell.ActionMode.OVERVIEW })) {
this._modal = true; this._modal = true;
} else { } else {
this.hide(); this.hide();
@ -605,9 +605,9 @@ const Overview = new Lang.Class({
return; return;
} }
this._animateNotVisible();
this._shown = false; this._shown = false;
this._animateNotVisible();
this._syncGrab(); this._syncGrab();
}, },

View File

@ -893,7 +893,7 @@ const Panel = new Lang.Class({
this.statusArea = {}; this.statusArea = {};
this.menuManager = new PopupMenu.PopupMenuManager(this, { keybindingMode: Shell.KeyBindingMode.TOPBAR_POPUP }); this.menuManager = new PopupMenu.PopupMenuManager(this, { actionMode: Shell.ActionMode.TOPBAR_POPUP });
this._leftBox = new St.BoxLayout({ name: 'panelLeft' }); this._leftBox = new St.BoxLayout({ name: 'panelLeft' });
this.actor.add_actor(this._leftBox); this.actor.add_actor(this._leftBox);

View File

@ -647,14 +647,14 @@ const ScreenShield = new Lang.Class({
if (this._isModal) if (this._isModal)
return true; return true;
this._isModal = Main.pushModal(this.actor, { keybindingMode: Shell.KeyBindingMode.LOCK_SCREEN }); this._isModal = Main.pushModal(this.actor, { actionMode: Shell.ActionMode.LOCK_SCREEN });
if (this._isModal) if (this._isModal)
return true; return true;
// We failed to get a pointer grab, it means that // We failed to get a pointer grab, it means that
// something else has it. Try with a keyboard grab only // something else has it. Try with a keyboard grab only
this._isModal = Main.pushModal(this.actor, { options: Meta.ModalOptions.POINTER_ALREADY_GRABBED, this._isModal = Main.pushModal(this.actor, { options: Meta.ModalOptions.POINTER_ALREADY_GRABBED,
keybindingMode: Shell.KeyBindingMode.LOCK_SCREEN }); actionMode: Shell.ActionMode.LOCK_SCREEN });
return this._isModal; return this._isModal;
}, },

View File

@ -199,12 +199,9 @@ const SearchResultsBase = new Lang.Class({
this._cancellable.reset(); this._cancellable.reset();
this.provider.getResultMetas(metasNeeded, Lang.bind(this, function(metas) { this.provider.getResultMetas(metasNeeded, Lang.bind(this, function(metas) {
if (metas.length == 0) {
callback(false);
return;
}
if (metas.length != metasNeeded.length) { if (metas.length != metasNeeded.length) {
log('Wrong number of result metas returned by search provider'); log('Wrong number of result metas returned by search provider ' + this.provider.id +
': expected ' + metasNeeded.length + ' but got ' + metas.length);
callback(false); callback(false);
return; return;
} }
@ -236,6 +233,7 @@ const SearchResultsBase = new Lang.Class({
this._ensureResultActors(results, Lang.bind(this, function(successful) { this._ensureResultActors(results, Lang.bind(this, function(successful) {
if (!successful) { if (!successful) {
this._clearResultDisplay(); this._clearResultDisplay();
callback();
return; return;
} }

View File

@ -44,8 +44,7 @@ const GnomeShellIface = '<node> \
</method> \ </method> \
<signal name="AcceleratorActivated"> \ <signal name="AcceleratorActivated"> \
<arg name="action" type="u" /> \ <arg name="action" type="u" /> \
<arg name="deviceid" type="u" /> \ <arg name="parameters" type="a{sv}" /> \
<arg name="timestamp" type="u" /> \
</signal> \ </signal> \
<property name="Mode" type="s" access="read" /> \ <property name="Mode" type="s" access="read" /> \
<property name="OverviewActive" type="b" access="readwrite" /> \ <property name="OverviewActive" type="b" access="readwrite" /> \
@ -196,11 +195,14 @@ const GnomeShell = new Lang.Class({
let connection = this._dbusImpl.get_connection(); let connection = this._dbusImpl.get_connection();
let info = this._dbusImpl.get_info(); let info = this._dbusImpl.get_info();
let params = { 'device-id': GLib.Variant.new('u', deviceid),
'timestamp': GLib.Variant.new('u', timestamp),
'action-mode': GLib.Variant.new('u', Main.actionMode) };
connection.emit_signal(destination, connection.emit_signal(destination,
this._dbusImpl.get_object_path(), this._dbusImpl.get_object_path(),
info ? info.name : null, info ? info.name : null,
'AcceleratorActivated', 'AcceleratorActivated',
GLib.Variant.new('(uuu)', [action, deviceid, timestamp])); GLib.Variant.new('(ua{sv})', [action, params]));
}, },
_grabAcceleratorForSender: function(accelerator, flags, sender) { _grabAcceleratorForSender: function(accelerator, flags, sender) {

View File

@ -7,7 +7,7 @@ const Lang = imports.lang;
const St = imports.gi.St; const St = imports.gi.St;
const Signals = imports.signals; const Signals = imports.signals;
const SLIDER_SCROLL_STEP = 0.05; /* Slider scrolling step in % */ const SLIDER_SCROLL_STEP = 0.02; /* Slider scrolling step in % */
const Slider = new Lang.Class({ const Slider = new Lang.Class({
Name: "Slider", Name: "Slider",
@ -197,7 +197,7 @@ const Slider = new Lang.Class({
let [dx, dy] = event.get_scroll_delta(); let [dx, dy] = event.get_scroll_delta();
// Even though the slider is horizontal, use dy to match // Even though the slider is horizontal, use dy to match
// the UP/DOWN above. // the UP/DOWN above.
delta = -dy / 10; delta = -dy * SLIDER_SCROLL_STEP;
} }
this._value = Math.min(Math.max(0, this._value + delta), 1); this._value = Math.min(Math.max(0, this._value + delta), 1);

View File

@ -155,6 +155,7 @@ const InputSourceManager = new Lang.Class({
this._ibusSources = {}; this._ibusSources = {};
this._currentSource = null; this._currentSource = null;
this._backupSource = null;
// All valid input sources currently in the gsettings // All valid input sources currently in the gsettings
// KEY_INPUT_SOURCES list ordered by most recently used // KEY_INPUT_SOURCES list ordered by most recently used
@ -163,13 +164,13 @@ const InputSourceManager = new Lang.Class({
Main.wm.addKeybinding('switch-input-source', Main.wm.addKeybinding('switch-input-source',
new Gio.Settings({ schema_id: "org.gnome.desktop.wm.keybindings" }), new Gio.Settings({ schema_id: "org.gnome.desktop.wm.keybindings" }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.ALL, Shell.ActionMode.ALL,
Lang.bind(this, this._switchInputSource)); Lang.bind(this, this._switchInputSource));
this._keybindingActionBackward = this._keybindingActionBackward =
Main.wm.addKeybinding('switch-input-source-backward', Main.wm.addKeybinding('switch-input-source-backward',
new Gio.Settings({ schema_id: "org.gnome.desktop.wm.keybindings" }), new Gio.Settings({ schema_id: "org.gnome.desktop.wm.keybindings" }),
Meta.KeyBindingFlags.IS_REVERSED, Meta.KeyBindingFlags.IS_REVERSED,
Shell.KeyBindingMode.ALL, Shell.ActionMode.ALL,
Lang.bind(this, this._switchInputSource)); Lang.bind(this, this._switchInputSource));
this._settings = new Gio.Settings({ schema_id: DESKTOP_INPUT_SOURCES_SCHEMA }); this._settings = new Gio.Settings({ schema_id: DESKTOP_INPUT_SOURCES_SCHEMA });
this._settings.connect('changed::' + KEY_INPUT_SOURCES, Lang.bind(this, this._inputSourcesChanged)); this._settings.connect('changed::' + KEY_INPUT_SOURCES, Lang.bind(this, this._inputSourcesChanged));
@ -183,6 +184,7 @@ const InputSourceManager = new Lang.Class({
this._ibusManager.connect('ready', Lang.bind(this, this._ibusReadyCallback)); this._ibusManager.connect('ready', Lang.bind(this, this._ibusReadyCallback));
this._ibusManager.connect('properties-registered', Lang.bind(this, this._ibusPropertiesRegistered)); this._ibusManager.connect('properties-registered', Lang.bind(this, this._ibusPropertiesRegistered));
this._ibusManager.connect('property-updated', Lang.bind(this, this._ibusPropertyUpdated)); this._ibusManager.connect('property-updated', Lang.bind(this, this._ibusPropertyUpdated));
this._ibusManager.connect('set-content-type', Lang.bind(this, this._ibusSetContentType));
global.display.connect('modifiers-accelerator-activated', Lang.bind(this, this._modifiersSwitcher)); global.display.connect('modifiers-accelerator-activated', Lang.bind(this, this._modifiersSwitcher));
@ -192,6 +194,7 @@ const InputSourceManager = new Lang.Class({
this._overviewHiddenId = 0; this._overviewHiddenId = 0;
this._settings.connect('changed::per-window', Lang.bind(this, this._sourcesPerWindowChanged)); this._settings.connect('changed::per-window', Lang.bind(this, this._sourcesPerWindowChanged));
this._sourcesPerWindowChanged(); this._sourcesPerWindowChanged();
this._disableIBus = false;
}, },
reload: function() { reload: function() {
@ -239,8 +242,8 @@ const InputSourceManager = new Lang.Class({
// effect without considerable work to consolidate the usage // effect without considerable work to consolidate the usage
// of pushModal/popModal and grabHelper. See // of pushModal/popModal and grabHelper. See
// https://bugzilla.gnome.org/show_bug.cgi?id=695143 . // https://bugzilla.gnome.org/show_bug.cgi?id=695143 .
if (Main.keybindingMode == Shell.KeyBindingMode.MESSAGE_TRAY || if (Main.actionMode == Shell.ActionMode.MESSAGE_TRAY ||
Main.keybindingMode == Shell.KeyBindingMode.TOPBAR_POPUP) { Main.actionMode == Shell.ActionMode.TOPBAR_POPUP) {
this._modifiersSwitcher(); this._modifiersSwitcher();
return; return;
} }
@ -309,6 +312,8 @@ const InputSourceManager = new Lang.Class({
[exists, displayName, shortName, , ] = [exists, displayName, shortName, , ] =
this._xkbInfo.get_layout_info(id); this._xkbInfo.get_layout_info(id);
} else if (type == INPUT_SOURCE_TYPE_IBUS) { } else if (type == INPUT_SOURCE_TYPE_IBUS) {
if (this._disableIBus)
continue;
let engineDesc = this._ibusManager.getEngineDesc(id); let engineDesc = this._ibusManager.getEngineDesc(id);
if (engineDesc) { if (engineDesc) {
let language = IBus.get_language_name(engineDesc.get_language()); let language = IBus.get_language_name(engineDesc.get_language());
@ -379,8 +384,20 @@ const InputSourceManager = new Lang.Class({
} }
this._mruSources = mruSources.concat(sourcesList); this._mruSources = mruSources.concat(sourcesList);
if (this._mruSources.length > 0) if (this._mruSources.length > 0) {
if (!this._disableIBus && this._backupSource) {
for (let i = 0; i < this._mruSources.length; i++) {
if (this._mruSources[i].type == this._backupSource.type &&
this._mruSources[i].id == this._backupSource.id) {
let currentSource = this._mruSources.splice(i, 1);
this._mruSources = currentSource.concat(this._mruSources);
break;
}
}
this._backupSource = null;
}
this._mruSources[0].activate(); this._mruSources[0].activate();
}
// All ibus engines are preloaded here to reduce the launching time // All ibus engines are preloaded here to reduce the launching time
// when users switch the input sources. // when users switch the input sources.
@ -437,6 +454,27 @@ const InputSourceManager = new Lang.Class({
return false; return false;
}, },
_ibusSetContentType: function(im, purpose, hints) {
if (purpose == IBus.InputPurpose.PASSWORD) {
if (Object.keys(this._inputSources).length == Object.keys(this._ibusSources).length)
return;
if (this._disableIBus)
return;
this._disableIBus = true;
this._backupSource = this._currentSource;
} else {
if (!this._disableIBus)
return;
this._disableIBus = false;
}
// If this._mruSources is not cleared before this.reload() is called,
// the order is different from the original one as IM sources will
// be appended to XKB sources.
this._mruSources = [];
this.reload();
},
_getNewInputSource: function(current) { _getNewInputSource: function(current) {
for (let i in this._inputSources) { for (let i in this._inputSources) {
let is = this._inputSources[i]; let is = this._inputSources[i];

View File

@ -154,7 +154,7 @@ const UnlockDialog = new Lang.Class({
return true; return true;
if (!Main.pushModal(this.actor, { timestamp: timestamp, if (!Main.pushModal(this.actor, { timestamp: timestamp,
keybindingMode: Shell.KeyBindingMode.UNLOCK_SCREEN })) actionMode: Shell.ActionMode.UNLOCK_SCREEN }))
return false; return false;
this._isModal = true; this._isModal = true;

View File

@ -65,7 +65,8 @@ const ShowOverviewAction = new Lang.Class({
}, },
vfunc_gesture_prepare : function(action, actor) { vfunc_gesture_prepare : function(action, actor) {
return this.get_n_current_points() == this.get_n_touch_points(); return Main.actionMode == Shell.ActionMode.NORMAL &&
this.get_n_current_points() == this.get_n_touch_points();
}, },
_getBoundingRect : function(motion) { _getBoundingRect : function(motion) {
@ -202,20 +203,21 @@ const ViewSelector = new Lang.Class({
Main.wm.addKeybinding('toggle-application-view', Main.wm.addKeybinding('toggle-application-view',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._toggleAppsPage)); Lang.bind(this, this._toggleAppsPage));
Main.wm.addKeybinding('toggle-overview', Main.wm.addKeybinding('toggle-overview',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(Main.overview, Main.overview.toggle)); Lang.bind(Main.overview, Main.overview.toggle));
let gesture; let gesture;
gesture = new EdgeDragAction.EdgeDragAction(St.Side.LEFT); gesture = new EdgeDragAction.EdgeDragAction(St.Side.LEFT,
Shell.ActionMode.NORMAL);
gesture.connect('activated', Lang.bind(this, function() { gesture.connect('activated', Lang.bind(this, function() {
if (Main.overview.visible) if (Main.overview.visible)
Main.overview.hide(); Main.overview.hide();

View File

@ -478,7 +478,9 @@ const WorkspaceSwitchAction = new Lang.Class({
}, },
vfunc_gesture_prepare : function(action, actor) { vfunc_gesture_prepare : function(action, actor) {
return this.get_n_current_points() == this.get_n_touch_points(); let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
return this.get_n_current_points() == this.get_n_touch_points() &&
(allowedModes & Main.actionMode);
}, },
vfunc_gesture_end : function(action, actor) { vfunc_gesture_end : function(action, actor) {
@ -526,7 +528,7 @@ const AppSwitchAction = new Lang.Class({
}, },
vfunc_gesture_prepare : function(action, actor) { vfunc_gesture_prepare : function(action, actor) {
if (Main.overview.visible) { if (Main.actionMode != Shell.ActionMode.NORMAL) {
this.cancel(); this.cancel();
return false; return false;
} }
@ -578,6 +580,35 @@ const AppSwitchAction = new Lang.Class({
}); });
Signals.addSignalMethods(AppSwitchAction.prototype); Signals.addSignalMethods(AppSwitchAction.prototype);
const ResizePopup = new Lang.Class({
Name: 'ResizePopup',
_init: function() {
this._widget = new St.Widget({ layout_manager: new Clutter.BinLayout() });
this._label = new St.Label({ style_class: 'resize-popup',
x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.CENTER,
x_expand: true, y_expand: true });
this._widget.add_child(this._label);
Main.uiGroup.add_actor(this._widget);
},
set: function(rect, displayW, displayH) {
/* Translators: This represents the size of a window. The first number is
* the width of the window and the second is the height. */
let text = _("%d x %d").format(displayW, displayH);
this._label.set_text(text);
this._widget.set_position(rect.x, rect.y);
this._widget.set_size(rect.width, rect.height);
},
destroy: function() {
this._widget.destroy();
this._widget = null;
},
});
const WindowManager = new Lang.Class({ const WindowManager = new Lang.Class({
Name: 'WindowManager', Name: 'WindowManager',
@ -616,179 +647,182 @@ const WindowManager = new Lang.Class({
this._shellwm.connect('destroy', Lang.bind(this, this._destroyWindow)); this._shellwm.connect('destroy', Lang.bind(this, this._destroyWindow));
this._shellwm.connect('filter-keybinding', Lang.bind(this, this._filterKeybinding)); this._shellwm.connect('filter-keybinding', Lang.bind(this, this._filterKeybinding));
this._shellwm.connect('confirm-display-change', Lang.bind(this, this._confirmDisplayChange)); this._shellwm.connect('confirm-display-change', Lang.bind(this, this._confirmDisplayChange));
global.screen.connect('restacked', Lang.bind(this, this._syncStacking));
this._workspaceSwitcherPopup = null; this._workspaceSwitcherPopup = null;
this._tilePreview = null; this._tilePreview = null;
this.setCustomKeybindingHandler('switch-to-workspace-left', this.setCustomKeybindingHandler('switch-to-workspace-left',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-right', this.setCustomKeybindingHandler('switch-to-workspace-right',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-up', this.setCustomKeybindingHandler('switch-to-workspace-up',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-down', this.setCustomKeybindingHandler('switch-to-workspace-down',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-last', this.setCustomKeybindingHandler('switch-to-workspace-last',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-left', this.setCustomKeybindingHandler('move-to-workspace-left',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-right', this.setCustomKeybindingHandler('move-to-workspace-right',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-up', this.setCustomKeybindingHandler('move-to-workspace-up',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-down', this.setCustomKeybindingHandler('move-to-workspace-down',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-1', this.setCustomKeybindingHandler('switch-to-workspace-1',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-2', this.setCustomKeybindingHandler('switch-to-workspace-2',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-3', this.setCustomKeybindingHandler('switch-to-workspace-3',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-4', this.setCustomKeybindingHandler('switch-to-workspace-4',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-5', this.setCustomKeybindingHandler('switch-to-workspace-5',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-6', this.setCustomKeybindingHandler('switch-to-workspace-6',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-7', this.setCustomKeybindingHandler('switch-to-workspace-7',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-8', this.setCustomKeybindingHandler('switch-to-workspace-8',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-9', this.setCustomKeybindingHandler('switch-to-workspace-9',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-10', this.setCustomKeybindingHandler('switch-to-workspace-10',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-11', this.setCustomKeybindingHandler('switch-to-workspace-11',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-12', this.setCustomKeybindingHandler('switch-to-workspace-12',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW, Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-1', this.setCustomKeybindingHandler('move-to-workspace-1',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-2', this.setCustomKeybindingHandler('move-to-workspace-2',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-3', this.setCustomKeybindingHandler('move-to-workspace-3',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-4', this.setCustomKeybindingHandler('move-to-workspace-4',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-5', this.setCustomKeybindingHandler('move-to-workspace-5',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-6', this.setCustomKeybindingHandler('move-to-workspace-6',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-7', this.setCustomKeybindingHandler('move-to-workspace-7',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-8', this.setCustomKeybindingHandler('move-to-workspace-8',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-9', this.setCustomKeybindingHandler('move-to-workspace-9',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-10', this.setCustomKeybindingHandler('move-to-workspace-10',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-11', this.setCustomKeybindingHandler('move-to-workspace-11',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-12', this.setCustomKeybindingHandler('move-to-workspace-12',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-last', this.setCustomKeybindingHandler('move-to-workspace-last',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher)); Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-applications', this.setCustomKeybindingHandler('switch-applications',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._startAppSwitcher)); Lang.bind(this, this._startAppSwitcher));
this.setCustomKeybindingHandler('switch-group', this.setCustomKeybindingHandler('switch-group',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._startAppSwitcher)); Lang.bind(this, this._startAppSwitcher));
this.setCustomKeybindingHandler('switch-applications-backward', this.setCustomKeybindingHandler('switch-applications-backward',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._startAppSwitcher)); Lang.bind(this, this._startAppSwitcher));
this.setCustomKeybindingHandler('switch-group-backward', this.setCustomKeybindingHandler('switch-group-backward',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._startAppSwitcher)); Lang.bind(this, this._startAppSwitcher));
this.setCustomKeybindingHandler('switch-windows', this.setCustomKeybindingHandler('switch-windows',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._startWindowSwitcher)); Lang.bind(this, this._startWindowSwitcher));
this.setCustomKeybindingHandler('switch-windows-backward', this.setCustomKeybindingHandler('switch-windows-backward',
Shell.KeyBindingMode.NORMAL, Shell.ActionMode.NORMAL,
Lang.bind(this, this._startWindowSwitcher)); Lang.bind(this, this._startWindowSwitcher));
this.setCustomKeybindingHandler('switch-panels', this.setCustomKeybindingHandler('switch-panels',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW | Shell.ActionMode.OVERVIEW |
Shell.KeyBindingMode.LOCK_SCREEN | Shell.ActionMode.LOCK_SCREEN |
Shell.KeyBindingMode.UNLOCK_SCREEN | Shell.ActionMode.UNLOCK_SCREEN |
Shell.KeyBindingMode.LOGIN_SCREEN, Shell.ActionMode.LOGIN_SCREEN,
Lang.bind(this, this._startA11ySwitcher)); Lang.bind(this, this._startA11ySwitcher));
this.setCustomKeybindingHandler('switch-panels-backward', this.setCustomKeybindingHandler('switch-panels-backward',
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW | Shell.ActionMode.OVERVIEW |
Shell.KeyBindingMode.LOCK_SCREEN | Shell.ActionMode.LOCK_SCREEN |
Shell.KeyBindingMode.UNLOCK_SCREEN | Shell.ActionMode.UNLOCK_SCREEN |
Shell.KeyBindingMode.LOGIN_SCREEN, Shell.ActionMode.LOGIN_SCREEN,
Lang.bind(this, this._startA11ySwitcher)); Lang.bind(this, this._startA11ySwitcher));
this.addKeybinding('pause-resume-tweens', this.addKeybinding('pause-resume-tweens',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.ALL, Shell.ActionMode.ALL,
Lang.bind(this, this._toggleTweens)); Lang.bind(this, this._toggleTweens));
this.addKeybinding('open-application-menu', this.addKeybinding('open-application-menu',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE, Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL | Shell.ActionMode.NORMAL |
Shell.KeyBindingMode.TOPBAR_POPUP, Shell.ActionMode.TOPBAR_POPUP,
Lang.bind(this, this._toggleAppMenu)); Lang.bind(this, this._toggleAppMenu));
global.display.connect('show-resize-popup', Lang.bind(this, this._showResizePopup));
Main.overview.connect('showing', Lang.bind(this, function() { Main.overview.connect('showing', Lang.bind(this, function() {
for (let i = 0; i < this._dimmedWindows.length; i++) for (let i = 0; i < this._dimmedWindows.length; i++)
this._undimWindow(this._dimmedWindows[i]); this._undimWindow(this._dimmedWindows[i]);
@ -854,6 +888,44 @@ const WindowManager = new Lang.Class({
Main.activateWindow(nextWindow); Main.activateWindow(nextWindow);
}, },
insertWorkspace: function(pos) {
if (!Meta.prefs_get_dynamic_workspaces())
return;
let windows = global.get_window_actors().map(function(winActor) {
return winActor.meta_window;
});
// To create a new workspace, we slide all the windows on workspaces
// below us to the next workspace, leaving a blank workspace for us
// to recycle.
windows.forEach(function(window) {
// If the window is attached to an ancestor, we don't need/want
// to move it
if (window.get_transient_for() != null)
return;
// Same for OR windows
if (window.is_override_redirect())
return;
// Windows on workspaces below pos don't need moving
let index = window.get_workspace().index();
if (index < pos)
return;
window.change_workspace_by_index(index + 1, true);
});
// If the new workspace was inserted before the active workspace,
// activate the workspace to which its windows went
let activeIndex = global.screen.get_active_workspace_index();
if (activeIndex >= pos) {
let newWs = global.screen.get_workspace_by_index(activeIndex + 1);
this._blockAnimations = true;
newWs.activate(global.get_current_time());
this._blockAnimations = false;
}
},
keepWorkspaceAlive: function(workspace, duration) { keepWorkspaceAlive: function(workspace, duration) {
if (!this._workspaceTracker) if (!this._workspaceTracker)
return; return;
@ -875,7 +947,7 @@ const WindowManager = new Lang.Class({
removeKeybinding: function(name) { removeKeybinding: function(name) {
if (global.display.remove_keybinding(name)) if (global.display.remove_keybinding(name))
this.allowKeybinding(name, Shell.KeyBindingMode.NONE); this.allowKeybinding(name, Shell.ActionMode.NONE);
}, },
allowKeybinding: function(name, modes) { allowKeybinding: function(name, modes) {
@ -883,7 +955,7 @@ const WindowManager = new Lang.Class({
}, },
_shouldAnimate: function() { _shouldAnimate: function() {
return !Main.overview.visible; return !(Main.overview.visible || this._blockAnimations);
}, },
_shouldAnimateActor: function(actor, types) { _shouldAnimateActor: function(actor, types) {
@ -1074,10 +1146,8 @@ const WindowManager = new Lang.Class({
return; return;
} }
if (actor.meta_window.is_attached_dialog()) { if (actor.meta_window.is_attached_dialog())
/* Scale the window from the center of the parent */
this._checkDimming(actor.get_meta_window().get_transient_for()); this._checkDimming(actor.get_meta_window().get_transient_for());
}
switch (actor._windowType) { switch (actor._windowType) {
case Meta.WindowType.NORMAL: case Meta.WindowType.NORMAL:
@ -1232,18 +1302,36 @@ const WindowManager = new Lang.Class({
}, },
_filterKeybinding: function(shellwm, binding) { _filterKeybinding: function(shellwm, binding) {
if (Main.keybindingMode == Shell.KeyBindingMode.NONE) if (Main.actionMode == Shell.ActionMode.NONE)
return true; return true;
// There's little sense in implementing a keybinding in mutter and // There's little sense in implementing a keybinding in mutter and
// not having it work in NORMAL mode; handle this case generically // not having it work in NORMAL mode; handle this case generically
// so we don't have to explicitly allow all builtin keybindings in // so we don't have to explicitly allow all builtin keybindings in
// NORMAL mode. // NORMAL mode.
if (Main.keybindingMode == Shell.KeyBindingMode.NORMAL && if (Main.actionMode == Shell.ActionMode.NORMAL &&
binding.is_builtin()) binding.is_builtin())
return false; return false;
return !(this._allowedKeybindings[binding.get_name()] & Main.keybindingMode); return !(this._allowedKeybindings[binding.get_name()] & Main.actionMode);
},
_syncStacking: function() {
if (this._switchData == null)
return;
// Update stacking of windows in inGroup (aka the workspace we are
// switching to). Windows in outGroup are about to be hidden anyway,
// so we just ignore them here.
let windows = global.get_window_actors();
let sibling = null;
for (let i = 0; i < windows.length; i++) {
if (windows[i].get_parent() != this._switchData.inGroup)
continue;
this._switchData.inGroup.set_child_above_sibling(windows[i], sibling);
sibling = windows[i];
}
}, },
_switchWorkspace : function(shellwm, from, to, direction) { _switchWorkspace : function(shellwm, from, to, direction) {
@ -1437,6 +1525,11 @@ const WindowManager = new Lang.Class({
direction = Meta.MotionDirection.DOWN; direction = Meta.MotionDirection.DOWN;
newWs = screen.get_workspace_by_index(screen.n_workspaces - 1); newWs = screen.get_workspace_by_index(screen.n_workspaces - 1);
} else if (isNaN(target)) { } else if (isNaN(target)) {
// Prepend a new workspace dynamically
if (screen.get_active_workspace_index() == 0 &&
action == 'move' && target == 'up')
this.insertWorkspace(0);
direction = Meta.MotionDirection[target.toUpperCase()]; direction = Meta.MotionDirection[target.toUpperCase()];
newWs = screen.get_active_workspace().get_neighbor(direction); newWs = screen.get_active_workspace().get_neighbor(direction);
} else if (target > 0) { } else if (target > 0) {
@ -1501,4 +1594,18 @@ const WindowManager = new Lang.Class({
let dialog = new DisplayChangeDialog(this._shellwm); let dialog = new DisplayChangeDialog(this._shellwm);
dialog.open(); dialog.open();
}, },
_showResizePopup: function(display, show, rect, displayW, displayH) {
if (show) {
if (!this._resizePopup)
this._resizePopup = new ResizePopup();
this._resizePopup.set(rect, displayW, displayH);
} else {
if (this._resizePopup) {
this._resizePopup.destroy();
this._resizePopup = null;
}
}
},
}); });

View File

@ -795,35 +795,13 @@ const ThumbnailsBox = new Lang.Class({
let isWindow = !!source.realWindow; let isWindow = !!source.realWindow;
// To create a new workspace, we first slide all the windows on workspaces
// below us to the next workspace, leaving a blank workspace for us to recycle.
let newWorkspaceIndex; let newWorkspaceIndex;
[newWorkspaceIndex, this._dropPlaceholderPos] = [this._dropPlaceholderPos, -1]; [newWorkspaceIndex, this._dropPlaceholderPos] = [this._dropPlaceholderPos, -1];
// Nab all the windows below us.
let windows = global.get_window_actors().filter(function(winActor) {
// If the window is attached to an ancestor, we don't need/want to move it
let window = winActor.meta_window;
if (window.get_transient_for() != null)
return false;
if (isWindow)
return window.get_workspace().index() >= newWorkspaceIndex && winActor != source;
else
return window.get_workspace().index() >= newWorkspaceIndex;
});
this._spliceIndex = newWorkspaceIndex; this._spliceIndex = newWorkspaceIndex;
// ... move them down one. Main.wm.insertWorkspace(newWorkspaceIndex);
windows.forEach(function(winActor) {
let window = winActor.meta_window;
window.change_workspace_by_index(window.get_workspace().index() + 1, true);
});
if (isWindow) { if (isWindow) {
// ... and bam, a workspace, good as new.
// Move the window to our monitor first if necessary. // Move the window to our monitor first if necessary.
let thumbMonitor = this._thumbnails[newWorkspaceIndex].monitorIndex; let thumbMonitor = this._thumbnails[newWorkspaceIndex].monitorIndex;
if (source.metaWindow.get_monitor() != thumbMonitor) if (source.metaWindow.get_monitor() != thumbMonitor)

View File

@ -18,8 +18,6 @@ const Workspace = imports.ui.workspace;
const WorkspaceThumbnail = imports.ui.workspaceThumbnail; const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
const WORKSPACE_SWITCH_TIME = 0.25; const WORKSPACE_SWITCH_TIME = 0.25;
// Note that mutter has a compile-time limit of 36
const MAX_WORKSPACES = 16;
const AnimationType = { const AnimationType = {
ZOOM: 0, ZOOM: 0,

File diff suppressed because it is too large Load Diff

View File

@ -4,15 +4,15 @@
# Andre Klapper <ak-47@gmx.net>, 2009. # Andre Klapper <ak-47@gmx.net>, 2009.
# Petr Kovar <pknbe@volny.cz>, 2009, 2010, 2011, 2012, 2014. # Petr Kovar <pknbe@volny.cz>, 2009, 2010, 2011, 2012, 2014.
# Adam Matoušek <adamatousek@gmail.com>, 2012, 2013. # Adam Matoušek <adamatousek@gmail.com>, 2012, 2013.
# Marek Černocký <marek@manet.cz>, 2012, 2013, 2014. # Marek Černocký <marek@manet.cz>, 2012, 2013, 2014, 2015.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-11-26 08:34+0000\n" "POT-Creation-Date: 2015-01-06 20:31+0000\n"
"PO-Revision-Date: 2014-11-26 12:05+0100\n" "PO-Revision-Date: 2015-01-07 08:53+0100\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n" "Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: Czech <gnome-cs-list@gnome.org>\n" "Language-Team: Czech <gnome-cs-list@gnome.org>\n"
"Language: cs\n" "Language: cs\n"
@ -327,25 +327,25 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Přihlásit se" msgstr "Přihlásit se"
#: ../js/gdm/loginDialog.js:275 #: ../js/gdm/loginDialog.js:276
msgid "Choose Session" msgid "Choose Session"
msgstr "Vybrat sezení" msgstr "Vybrat sezení"
#: ../js/gdm/loginDialog.js:434 #: ../js/gdm/loginDialog.js:428
msgid "Not listed?" msgid "Not listed?"
msgstr "Nejste na seznamu?" msgstr "Nejste na seznamu?"
#: ../js/gdm/loginDialog.js:619 #: ../js/gdm/loginDialog.js:814
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(např. uživatel nebo %s)" msgstr "(např. uživatel nebo %s)"
#: ../js/gdm/loginDialog.js:624 ../js/ui/components/networkAgent.js:269 #: ../js/gdm/loginDialog.js:819 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287 #: ../js/ui/components/networkAgent.js:287
msgid "Username: " msgid "Username: "
msgstr "Uživatelské jméno: " msgstr "Uživatelské jméno: "
#: ../js/gdm/loginDialog.js:955 #: ../js/gdm/loginDialog.js:1151
msgid "Login Window" msgid "Login Window"
msgstr "Přihlašovací okno" msgstr "Přihlašovací okno"
@ -412,7 +412,7 @@ msgstr "%s byl přidán mezi oblíbené."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s byl odstraněn z oblíbených." msgstr "%s byl odstraněn z oblíbených."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:819
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:337
msgid "Settings" msgid "Settings"
msgstr "Nastavení" msgstr "Nastavení"
@ -455,43 +455,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together #. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S". #. * and in order, e.g. "S M T W T F S".
#. */ #. */
#: ../js/ui/calendar.js:115 #: ../js/ui/calendar.js:98
msgctxt "grid sunday" msgctxt "grid sunday"
msgid "S" msgid "S"
msgstr "Ne" msgstr "Ne"
#. Translators: Calendar grid abbreviation for Monday */ #. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:117 #: ../js/ui/calendar.js:100
msgctxt "grid monday" msgctxt "grid monday"
msgid "M" msgid "M"
msgstr "Po" msgstr "Po"
#. Translators: Calendar grid abbreviation for Tuesday */ #. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:119 #: ../js/ui/calendar.js:102
msgctxt "grid tuesday" msgctxt "grid tuesday"
msgid "T" msgid "T"
msgstr "Út" msgstr "Út"
#. Translators: Calendar grid abbreviation for Wednesday */ #. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:121 #: ../js/ui/calendar.js:104
msgctxt "grid wednesday" msgctxt "grid wednesday"
msgid "W" msgid "W"
msgstr "St" msgstr "St"
#. Translators: Calendar grid abbreviation for Thursday */ #. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:123 #: ../js/ui/calendar.js:106
msgctxt "grid thursday" msgctxt "grid thursday"
msgid "T" msgid "T"
msgstr "Čt" msgstr "Čt"
#. Translators: Calendar grid abbreviation for Friday */ #. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:125 #: ../js/ui/calendar.js:108
msgctxt "grid friday" msgctxt "grid friday"
msgid "F" msgid "F"
msgstr "Pá" msgstr "Pá"
#. Translators: Calendar grid abbreviation for Saturday */ #. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:127 #: ../js/ui/calendar.js:110
msgctxt "grid saturday" msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "So" msgstr "So"
@ -502,83 +502,83 @@ msgstr "So"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T'). #. * both be 'T').
#. */ #. */
#: ../js/ui/calendar.js:140 #: ../js/ui/calendar.js:123
msgctxt "list sunday" msgctxt "list sunday"
msgid "Su" msgid "Su"
msgstr "Ne" msgstr "Ne"
#. Translators: Event list abbreviation for Monday */ #. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:142 #: ../js/ui/calendar.js:125
msgctxt "list monday" msgctxt "list monday"
msgid "M" msgid "M"
msgstr "Po" msgstr "Po"
#. Translators: Event list abbreviation for Tuesday */ #. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:144 #: ../js/ui/calendar.js:127
msgctxt "list tuesday" msgctxt "list tuesday"
msgid "T" msgid "T"
msgstr "Út" msgstr "Út"
#. Translators: Event list abbreviation for Wednesday */ #. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:146 #: ../js/ui/calendar.js:129
msgctxt "list wednesday" msgctxt "list wednesday"
msgid "W" msgid "W"
msgstr "St" msgstr "St"
#. Translators: Event list abbreviation for Thursday */ #. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:148 #: ../js/ui/calendar.js:131
msgctxt "list thursday" msgctxt "list thursday"
msgid "Th" msgid "Th"
msgstr "Čt" msgstr "Čt"
#. Translators: Event list abbreviation for Friday */ #. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:150 #: ../js/ui/calendar.js:133
msgctxt "list friday" msgctxt "list friday"
msgid "F" msgid "F"
msgstr "Pá" msgstr "Pá"
#. Translators: Event list abbreviation for Saturday */ #. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:152 #: ../js/ui/calendar.js:135
msgctxt "list saturday" msgctxt "list saturday"
msgid "S" msgid "S"
msgstr "So" msgstr "So"
#: ../js/ui/calendar.js:461 #: ../js/ui/calendar.js:460
msgid "Previous month" msgid "Previous month"
msgstr "Předchozí měsíc" msgstr "Předchozí měsíc"
#: ../js/ui/calendar.js:471 #: ../js/ui/calendar.js:470
msgid "Next month" msgid "Next month"
msgstr "Následující měsíc" msgstr "Následující měsíc"
#. Translators: Text to show if there are no events */ #. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:806 #: ../js/ui/calendar.js:805
msgid "Nothing Scheduled" msgid "Nothing Scheduled"
msgstr "nic nenaplánováno" msgstr "nic nenaplánováno"
#: ../js/ui/calendar.js:825 #: ../js/ui/calendar.js:824
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %e. %B" msgstr "%A, %e. %B"
#: ../js/ui/calendar.js:829 #: ../js/ui/calendar.js:828
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %e. %B %Y" msgstr "%A, %e. %B %Y"
#: ../js/ui/calendar.js:841 #: ../js/ui/calendar.js:840
msgid "Today" msgid "Today"
msgstr "Dnes" msgstr "Dnes"
#: ../js/ui/calendar.js:845 #: ../js/ui/calendar.js:844
msgid "Tomorrow" msgid "Tomorrow"
msgstr "Zítra" msgstr "Zítra"
#: ../js/ui/calendar.js:856 #: ../js/ui/calendar.js:855
msgid "This week" msgid "This week"
msgstr "Tento týden" msgstr "Tento týden"
#: ../js/ui/calendar.js:864 #: ../js/ui/calendar.js:863
msgid "Next week" msgid "Next week"
msgstr "Následující týden" msgstr "Následující týden"
@ -979,7 +979,7 @@ msgstr "Zobrazit účet"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Neznámý důvod" msgstr "Neznámý důvod"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155
msgid "Windows" msgid "Windows"
msgstr "Okna" msgstr "Okna"
@ -1242,11 +1242,11 @@ msgstr "Nabídka lišty zpráv"
msgid "No Messages" msgid "No Messages"
msgstr "Žádné zprávy" msgstr "Žádné zprávy"
#: ../js/ui/messageTray.js:1984 #: ../js/ui/messageTray.js:1986
msgid "Message Tray" msgid "Message Tray"
msgstr "Lišta zpráv" msgstr "Lišta zpráv"
#: ../js/ui/messageTray.js:2441 ../js/ui/overviewControls.js:483 #: ../js/ui/messageTray.js:2443 ../js/ui/overviewControls.js:483
#: ../js/ui/screenShield.js:152 #: ../js/ui/screenShield.js:152
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
@ -1255,11 +1255,11 @@ msgstr[0] "%d nová zpráva"
msgstr[1] "%d nové zprávy" msgstr[1] "%d nové zprávy"
msgstr[2] "%d nových zpráv" msgstr[2] "%d nových zpráv"
#: ../js/ui/messageTray.js:3011 #: ../js/ui/messageTray.js:3013
msgid "System Information" msgid "System Information"
msgstr "Informace o systému" msgstr "Informace o systému"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425 #: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:439
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Neznámé" msgstr "Neznámé"
@ -1280,17 +1280,17 @@ msgstr "Přehled"
msgid "Type to search…" msgid "Type to search…"
msgstr "Vyhledávejte psaním…" msgstr "Vyhledávejte psaním…"
#: ../js/ui/panel.js:515 #: ../js/ui/panel.js:521
msgid "Quit" msgid "Quit"
msgstr "Ukončit" msgstr "Ukončit"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */ #. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:567 #: ../js/ui/panel.js:573
msgid "Activities" msgid "Activities"
msgstr "Činnosti" msgstr "Činnosti"
#: ../js/ui/panel.js:918 #: ../js/ui/panel.js:924
msgid "Top Bar" msgid "Top Bar"
msgstr "Horní lišta" msgstr "Horní lišta"
@ -1702,11 +1702,11 @@ msgstr "Přihlásit se jako jiný uživatel"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Odemykací okno" msgstr "Odemykací okno"
#: ../js/ui/viewSelector.js:158 #: ../js/ui/viewSelector.js:159
msgid "Applications" msgid "Applications"
msgstr "Aplikace" msgstr "Aplikace"
#: ../js/ui/viewSelector.js:162 #: ../js/ui/viewSelector.js:163
msgid "Search" msgid "Search"
msgstr "Hledat" msgstr "Hledat"
@ -1738,6 +1738,13 @@ msgstr[0] "Nastavení se obnoví na původní za %d sekundu"
msgstr[1] "Nastavení se obnoví na původní za %d sekundy" msgstr[1] "Nastavení se obnoví na původní za %d sekundy"
msgstr[2] "Nastavení se obnoví na původní za %d sekund" msgstr[2] "Nastavení se obnoví na původní za %d sekund"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. */
#: ../js/ui/windowManager.js:599
#, javascript-format
msgid "%d x %d"
msgstr "%d×%d"
#: ../js/ui/windowMenu.js:34 #: ../js/ui/windowMenu.js:34
msgid "Minimize" msgid "Minimize"
msgstr "Minimalizovat" msgstr "Minimalizovat"
@ -1822,7 +1829,7 @@ msgstr "Použít pro přihlašovací obrazovku zadaný režim, např. „gdm“.
msgid "List possible modes" msgid "List possible modes"
msgstr "Vypsat možné režimy" msgstr "Vypsat možné režimy"
#: ../src/shell-app.c:666 #: ../src/shell-app.c:680
#, c-format #, c-format
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "Nelze spustit „%s“" msgstr "Nelze spustit „%s“"

444
po/de.po

File diff suppressed because it is too large Load Diff

View File

@ -3,15 +3,15 @@
# This file is distributed under the same license as the gnome-shell package. # This file is distributed under the same license as the gnome-shell package.
# Jorge González <jorgegonz@svn.gnome.org>, 2009, 2010, 2011. # Jorge González <jorgegonz@svn.gnome.org>, 2009, 2010, 2011.
# Benjamín Valero Espinosa <benjavalero@gmail.com>, 2011. # Benjamín Valero Espinosa <benjavalero@gmail.com>, 2011.
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2010, 2011, 2012, 2013, 2014. # Daniel Mustieles <daniel.mustieles@gmail.com>, 2010, 2011, 2012, 2013, 2014, 2015.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell.master\n" "Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-11-12 08:29+0000\n" "POT-Creation-Date: 2015-01-12 08:33+0000\n"
"PO-Revision-Date: 2014-11-12 12:29+0100\n" "PO-Revision-Date: 2015-01-12 12:05+0100\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n" "Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Español; Castellano <gnome-es-list@gnome.org>\n" "Language-Team: Español; Castellano <gnome-es-list@gnome.org>\n"
"Language: es\n" "Language: es\n"
@ -304,7 +304,6 @@ msgstr ""
"Retardo al cambiar el foco del ratón hasta que el puntero deja de moverse" "Retardo al cambiar el foco del ratón hasta que el puntero deja de moverse"
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1 #: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
#| msgid "Network error"
msgid "Network Login" msgid "Network Login"
msgstr "Inicio de sesión de la red" msgstr "Inicio de sesión de la red"
@ -338,25 +337,25 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Iniciar sesión" msgstr "Iniciar sesión"
#: ../js/gdm/loginDialog.js:275 #: ../js/gdm/loginDialog.js:276
msgid "Choose Session" msgid "Choose Session"
msgstr "Elegir sesión" msgstr "Elegir sesión"
#: ../js/gdm/loginDialog.js:434 #: ../js/gdm/loginDialog.js:428
msgid "Not listed?" msgid "Not listed?"
msgstr "¿No está en la lista?" msgstr "¿No está en la lista?"
#: ../js/gdm/loginDialog.js:619 #: ../js/gdm/loginDialog.js:814
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(ej., usuario o %s)" msgstr "(ej., usuario o %s)"
#: ../js/gdm/loginDialog.js:624 ../js/ui/components/networkAgent.js:269 #: ../js/gdm/loginDialog.js:819 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287 #: ../js/ui/components/networkAgent.js:287
msgid "Username: " msgid "Username: "
msgstr "Nombre de usuario:" msgstr "Nombre de usuario:"
#: ../js/gdm/loginDialog.js:953 #: ../js/gdm/loginDialog.js:1151
msgid "Login Window" msgid "Login Window"
msgstr "Ventana de inicio de sesión" msgstr "Ventana de inicio de sesión"
@ -423,7 +422,7 @@ msgstr "Se ha añadido %s a sus favoritos."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "Se ha quitado %s de sus favoritos." msgstr "Se ha quitado %s de sus favoritos."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:819
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:337
msgid "Settings" msgid "Settings"
msgstr "Configuración" msgstr "Configuración"
@ -466,43 +465,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together #. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S". #. * and in order, e.g. "S M T W T F S".
#. */ #. */
#: ../js/ui/calendar.js:115 #: ../js/ui/calendar.js:98
msgctxt "grid sunday" msgctxt "grid sunday"
msgid "S" msgid "S"
msgstr "D" msgstr "D"
#. Translators: Calendar grid abbreviation for Monday */ #. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:117 #: ../js/ui/calendar.js:100
msgctxt "grid monday" msgctxt "grid monday"
msgid "M" msgid "M"
msgstr "L" msgstr "L"
#. Translators: Calendar grid abbreviation for Tuesday */ #. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:119 #: ../js/ui/calendar.js:102
msgctxt "grid tuesday" msgctxt "grid tuesday"
msgid "T" msgid "T"
msgstr "M" msgstr "M"
#. Translators: Calendar grid abbreviation for Wednesday */ #. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:121 #: ../js/ui/calendar.js:104
msgctxt "grid wednesday" msgctxt "grid wednesday"
msgid "W" msgid "W"
msgstr "X" msgstr "X"
#. Translators: Calendar grid abbreviation for Thursday */ #. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:123 #: ../js/ui/calendar.js:106
msgctxt "grid thursday" msgctxt "grid thursday"
msgid "T" msgid "T"
msgstr "J" msgstr "J"
#. Translators: Calendar grid abbreviation for Friday */ #. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:125 #: ../js/ui/calendar.js:108
msgctxt "grid friday" msgctxt "grid friday"
msgid "F" msgid "F"
msgstr "V" msgstr "V"
#. Translators: Calendar grid abbreviation for Saturday */ #. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:127 #: ../js/ui/calendar.js:110
msgctxt "grid saturday" msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "S" msgstr "S"
@ -513,52 +512,52 @@ msgstr "S"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T'). #. * both be 'T').
#. */ #. */
#: ../js/ui/calendar.js:140 #: ../js/ui/calendar.js:123
msgctxt "list sunday" msgctxt "list sunday"
msgid "Su" msgid "Su"
msgstr "Dom" msgstr "Dom"
#. Translators: Event list abbreviation for Monday */ #. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:142 #: ../js/ui/calendar.js:125
msgctxt "list monday" msgctxt "list monday"
msgid "M" msgid "M"
msgstr "L" msgstr "L"
#. Translators: Event list abbreviation for Tuesday */ #. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:144 #: ../js/ui/calendar.js:127
msgctxt "list tuesday" msgctxt "list tuesday"
msgid "T" msgid "T"
msgstr "M" msgstr "M"
#. Translators: Event list abbreviation for Wednesday */ #. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:146 #: ../js/ui/calendar.js:129
msgctxt "list wednesday" msgctxt "list wednesday"
msgid "W" msgid "W"
msgstr "X" msgstr "X"
#. Translators: Event list abbreviation for Thursday */ #. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:148 #: ../js/ui/calendar.js:131
msgctxt "list thursday" msgctxt "list thursday"
msgid "Th" msgid "Th"
msgstr "J" msgstr "J"
#. Translators: Event list abbreviation for Friday */ #. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:150 #: ../js/ui/calendar.js:133
msgctxt "list friday" msgctxt "list friday"
msgid "F" msgid "F"
msgstr "V" msgstr "V"
#. Translators: Event list abbreviation for Saturday */ #. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:152 #: ../js/ui/calendar.js:135
msgctxt "list saturday" msgctxt "list saturday"
msgid "S" msgid "S"
msgstr "S" msgstr "S"
#: ../js/ui/calendar.js:461 #: ../js/ui/calendar.js:460
msgid "Previous month" msgid "Previous month"
msgstr "Mes anterior" msgstr "Mes anterior"
#: ../js/ui/calendar.js:471 #: ../js/ui/calendar.js:470
msgid "Next month" msgid "Next month"
msgstr "Siguiente mes" msgstr "Siguiente mes"
@ -993,7 +992,7 @@ msgstr "Ver cuenta"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Razón desconocida" msgstr "Razón desconocida"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155
msgid "Windows" msgid "Windows"
msgstr "Ventanas" msgstr "Ventanas"
@ -1005,22 +1004,22 @@ msgstr "Mostrar aplicaciones"
msgid "Dash" msgid "Dash"
msgstr "Tablero" msgstr "Tablero"
#: ../js/ui/dateMenu.js:99 #: ../js/ui/dateMenu.js:97
msgid "Open Calendar" msgid "Open Calendar"
msgstr "Abrir calendario" msgstr "Abrir calendario"
#: ../js/ui/dateMenu.js:103 #: ../js/ui/dateMenu.js:101
msgid "Open Clocks" msgid "Open Clocks"
msgstr "Abrir Relojes" msgstr "Abrir Relojes"
#: ../js/ui/dateMenu.js:110 #: ../js/ui/dateMenu.js:108
msgid "Date & Time Settings" msgid "Date & Time Settings"
msgstr "Configuración de hora y fecha" msgstr "Configuración de hora y fecha"
#. Translators: This is the date format to use when the calendar popup is #. 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"). #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */ #. */
#: ../js/ui/dateMenu.js:134 #: ../js/ui/dateMenu.js:132
msgid "%A %B %e, %Y" msgid "%A %B %e, %Y"
msgstr "%A, %e de %B de %Y" msgstr "%A, %e de %B de %Y"
@ -1164,7 +1163,7 @@ msgstr "Instalar"
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?" msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:535 #: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:539
msgid "Keyboard" msgid "Keyboard"
msgstr "Teclado" msgstr "Teclado"
@ -1248,11 +1247,11 @@ msgstr "Bandeja de menú"
msgid "No Messages" msgid "No Messages"
msgstr "No hay mensajes" msgstr "No hay mensajes"
#: ../js/ui/messageTray.js:1984 #: ../js/ui/messageTray.js:1986
msgid "Message Tray" msgid "Message Tray"
msgstr "Bandeja de mensajes" msgstr "Bandeja de mensajes"
#: ../js/ui/messageTray.js:2441 ../js/ui/overviewControls.js:483 #: ../js/ui/messageTray.js:2443 ../js/ui/overviewControls.js:483
#: ../js/ui/screenShield.js:152 #: ../js/ui/screenShield.js:152
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
@ -1260,11 +1259,11 @@ msgid_plural "%d new messages"
msgstr[0] "%d mensaje nuevo" msgstr[0] "%d mensaje nuevo"
msgstr[1] "%d mensajes nuevos" msgstr[1] "%d mensajes nuevos"
#: ../js/ui/messageTray.js:3011 #: ../js/ui/messageTray.js:3013
msgid "System Information" msgid "System Information"
msgstr "Información del sistema" msgstr "Información del sistema"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425 #: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:439
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Desconocido" msgstr "Desconocido"
@ -1285,17 +1284,17 @@ msgstr "Vista general"
msgid "Type to search…" msgid "Type to search…"
msgstr "Escribir para buscar…" msgstr "Escribir para buscar…"
#: ../js/ui/panel.js:515 #: ../js/ui/panel.js:521
msgid "Quit" msgid "Quit"
msgstr "Salir" msgstr "Salir"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */ #. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:567 #: ../js/ui/panel.js:573
msgid "Activities" msgid "Activities"
msgstr "Actividades" msgstr "Actividades"
#: ../js/ui/panel.js:918 #: ../js/ui/panel.js:924
msgid "Top Bar" msgid "Top Bar"
msgstr "Barra superior" msgstr "Barra superior"
@ -1344,11 +1343,11 @@ msgstr "No se pudo bloquear"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Una aplicación impidió el bloqueo" msgstr "Una aplicación impidió el bloqueo"
#: ../js/ui/search.js:611 #: ../js/ui/search.js:609
msgid "Searching…" msgid "Searching…"
msgstr "Buscando…" msgstr "Buscando…"
#: ../js/ui/search.js:613 #: ../js/ui/search.js:611
msgid "No results." msgid "No results."
msgstr "No se encontraron resultados." msgstr "No se encontraron resultados."
@ -1450,7 +1449,7 @@ msgstr "No conectado"
msgid "Brightness" msgid "Brightness"
msgstr "Brillo" msgstr "Brillo"
#: ../js/ui/status/keyboard.js:559 #: ../js/ui/status/keyboard.js:563
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Mostrar la distribución del teclado" msgstr "Mostrar la distribución del teclado"
@ -1705,11 +1704,11 @@ msgstr "Iniciar sesión como otro usuario"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Desbloquear ventana" msgstr "Desbloquear ventana"
#: ../js/ui/viewSelector.js:158 #: ../js/ui/viewSelector.js:159
msgid "Applications" msgid "Applications"
msgstr "Aplicaciones" msgstr "Aplicaciones"
#: ../js/ui/viewSelector.js:162 #: ../js/ui/viewSelector.js:163
msgid "Search" msgid "Search"
msgstr "Buscar" msgstr "Buscar"
@ -1740,6 +1739,13 @@ msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "La configuración se revertirá en %d segundo" msgstr[0] "La configuración se revertirá en %d segundo"
msgstr[1] "La configuración se revertirá en %d segundos" msgstr[1] "La configuración se revertirá en %d segundos"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. */
#: ../js/ui/windowManager.js:599
#, javascript-format
msgid "%d x %d"
msgstr "%d x %d"
#: ../js/ui/windowMenu.js:34 #: ../js/ui/windowMenu.js:34
msgid "Minimize" msgid "Minimize"
msgstr "Minimizar" msgstr "Minimizar"
@ -1824,7 +1830,7 @@ msgstr ""
msgid "List possible modes" msgid "List possible modes"
msgstr "Listar los modos posibles" msgstr "Listar los modos posibles"
#: ../src/shell-app.c:666 #: ../src/shell-app.c:680
#, c-format #, c-format
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "Falló al lanzar «%s»" msgstr "Falló al lanzar «%s»"

585
po/eu.po

File diff suppressed because it is too large Load Diff

542
po/fur.po

File diff suppressed because it is too large Load Diff

356
po/hu.po

File diff suppressed because it is too large Load Diff

343
po/id.po
View File

@ -10,8 +10,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-09-13 07:37+0000\n" "POT-Creation-Date: 2014-12-23 20:37+0000\n"
"PO-Revision-Date: 2014-09-13 19:20+0700\n" "PO-Revision-Date: 2014-12-24 11:51+0700\n"
"Last-Translator: Andika Triwidada <andika@gmail.com>\n" "Last-Translator: Andika Triwidada <andika@gmail.com>\n"
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n" "Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
"Language: id\n" "Language: id\n"
@ -20,7 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Poedit 1.6.9\n" "X-Generator: Poedit 1.7.1\n"
#: ../data/50-gnome-shell-system.xml.in.h:1 #: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System" msgid "System"
@ -301,8 +301,8 @@ msgstr ""
"Tunda perubahan fokus dalam mode tetikus sampai penunjuk berhenti bergerak" "Tunda perubahan fokus dalam mode tetikus sampai penunjuk berhenti bergerak"
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1 #: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
msgid "Captive Portal" msgid "Network Login"
msgstr "Portal Captive" msgstr "Log Masuk Jaringan"
#: ../js/extensionPrefs/main.js:123 #: ../js/extensionPrefs/main.js:123
#, javascript-format #, javascript-format
@ -316,7 +316,7 @@ msgstr "Ekstensi GNOME Shell"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:915 #: ../js/ui/status/network.js:916
msgid "Cancel" msgid "Cancel"
msgstr "Batal" msgstr "Batal"
@ -334,33 +334,33 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Masuk" msgstr "Masuk"
#: ../js/gdm/loginDialog.js:269 #: ../js/gdm/loginDialog.js:276
msgid "Choose Session" msgid "Choose Session"
msgstr "Pilih Sesi" msgstr "Pilih Sesi"
#: ../js/gdm/loginDialog.js:429 #: ../js/gdm/loginDialog.js:428
msgid "Not listed?" msgid "Not listed?"
msgstr "Tak masuk daftar?" msgstr "Tak masuk daftar?"
#: ../js/gdm/loginDialog.js:614 #: ../js/gdm/loginDialog.js:814
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(cth., pengguna dari %s)" msgstr "(cth., pengguna dari %s)"
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 #: ../js/gdm/loginDialog.js:819 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287 #: ../js/ui/components/networkAgent.js:287
msgid "Username: " msgid "Username: "
msgstr "Nama pengguna: " msgstr "Nama pengguna: "
#: ../js/gdm/loginDialog.js:922 #: ../js/gdm/loginDialog.js:1151
msgid "Login Window" msgid "Login Window"
msgstr "Jendela Log Masuk" msgstr "Jendela Log Masuk"
#: ../js/gdm/util.js:323 #: ../js/gdm/util.js:341
msgid "Authentication error" msgid "Authentication error"
msgstr "Galat otentikasi" msgstr "Galat otentikasi"
#: ../js/gdm/util.js:453 #: ../js/gdm/util.js:473
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(atau gesekkan jari)" msgstr "(atau gesekkan jari)"
@ -381,15 +381,15 @@ msgstr "Eksekusi \"%s\" gagal:"
msgid "Web Authentication Redirect" msgid "Web Authentication Redirect"
msgstr "Pengalihan Otentikasi Web" msgstr "Pengalihan Otentikasi Web"
#: ../js/ui/appDisplay.js:772 #: ../js/ui/appDisplay.js:770
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Aplikasi yang sering dipakai akan muncul di sini" msgstr "Aplikasi yang sering dipakai akan muncul di sini"
#: ../js/ui/appDisplay.js:883 #: ../js/ui/appDisplay.js:881
msgid "Frequent" msgid "Frequent"
msgstr "Sering" msgstr "Sering"
#: ../js/ui/appDisplay.js:890 #: ../js/ui/appDisplay.js:888
msgid "All" msgid "All"
msgstr "Semua" msgstr "Semua"
@ -409,17 +409,17 @@ msgstr "Tambah ke Favorit"
msgid "Show Details" msgid "Show Details"
msgstr "Tampilkan Rincian" msgstr "Tampilkan Rincian"
#: ../js/ui/appFavorites.js:124 #: ../js/ui/appFavorites.js:132
#, javascript-format #, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "%s telah ditambahkan ke favorit Anda." msgstr "%s telah ditambahkan ke favorit Anda."
#: ../js/ui/appFavorites.js:158 #: ../js/ui/appFavorites.js:166
#, javascript-format #, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s telah dihapus dari favorit Anda." msgstr "%s telah dihapus dari favorit Anda."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:819
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:337
msgid "Settings" msgid "Settings"
msgstr "Pengaturan" msgstr "Pengaturan"
@ -428,17 +428,23 @@ msgstr "Pengaturan"
msgid "Change Background…" msgid "Change Background…"
msgstr "Ubah Latar…" msgstr "Ubah Latar…"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:39
msgctxt "calendar-no-work"
msgid "06"
msgstr "06"
#. Translators: Shown in calendar event list for all day events #. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters #. * Keep it short, best if you can use less then 10 characters
#. */ #. */
#: ../js/ui/calendar.js:67 #: ../js/ui/calendar.js:68
msgctxt "event list time" msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Sepanjang Hari" msgstr "Sepanjang Hari"
#. Translators: Shown in calendar event list, if 24h format, #. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */ #. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:73 #: ../js/ui/calendar.js:75
msgctxt "event list time" msgctxt "event list time"
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
@ -446,7 +452,7 @@ msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format, #. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is #. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */ #. a thin space */
#: ../js/ui/calendar.js:82 #: ../js/ui/calendar.js:84
msgctxt "event list time" msgctxt "event list time"
msgid "%l%M%p" msgid "%l%M%p"
msgstr "%l%M%p" msgstr "%l%M%p"
@ -456,43 +462,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together #. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S". #. * and in order, e.g. "S M T W T F S".
#. */ #. */
#: ../js/ui/calendar.js:113 #: ../js/ui/calendar.js:98
msgctxt "grid sunday" msgctxt "grid sunday"
msgid "S" msgid "S"
msgstr "M" msgstr "M"
#. Translators: Calendar grid abbreviation for Monday */ #. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:115 #: ../js/ui/calendar.js:100
msgctxt "grid monday" msgctxt "grid monday"
msgid "M" msgid "M"
msgstr "S" msgstr "S"
#. Translators: Calendar grid abbreviation for Tuesday */ #. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:117 #: ../js/ui/calendar.js:102
msgctxt "grid tuesday" msgctxt "grid tuesday"
msgid "T" msgid "T"
msgstr "S" msgstr "S"
#. Translators: Calendar grid abbreviation for Wednesday */ #. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:119 #: ../js/ui/calendar.js:104
msgctxt "grid wednesday" msgctxt "grid wednesday"
msgid "W" msgid "W"
msgstr "R" msgstr "R"
#. Translators: Calendar grid abbreviation for Thursday */ #. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:121 #: ../js/ui/calendar.js:106
msgctxt "grid thursday" msgctxt "grid thursday"
msgid "T" msgid "T"
msgstr "K" msgstr "K"
#. Translators: Calendar grid abbreviation for Friday */ #. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:123 #: ../js/ui/calendar.js:108
msgctxt "grid friday" msgctxt "grid friday"
msgid "F" msgid "F"
msgstr "J" msgstr "J"
#. Translators: Calendar grid abbreviation for Saturday */ #. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:125 #: ../js/ui/calendar.js:110
msgctxt "grid saturday" msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "S" msgstr "S"
@ -503,85 +509,83 @@ msgstr "S"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T'). #. * both be 'T').
#. */ #. */
#: ../js/ui/calendar.js:138 #: ../js/ui/calendar.js:123
msgctxt "list sunday" msgctxt "list sunday"
msgid "Su" msgid "Su"
msgstr "Min" msgstr "Min"
#. Translators: Event list abbreviation for Monday */ #. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:140 #: ../js/ui/calendar.js:125
msgctxt "list monday" msgctxt "list monday"
msgid "M" msgid "M"
msgstr "Sen" msgstr "Sen"
#. Translators: Event list abbreviation for Tuesday */ #. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:142 #: ../js/ui/calendar.js:127
msgctxt "list tuesday" msgctxt "list tuesday"
msgid "T" msgid "T"
msgstr "Sel" msgstr "Sel"
#. Translators: Event list abbreviation for Wednesday */ #. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:144 #: ../js/ui/calendar.js:129
msgctxt "list wednesday" msgctxt "list wednesday"
msgid "W" msgid "W"
msgstr "Rab" msgstr "Rab"
#. Translators: Event list abbreviation for Thursday */ #. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:146 #: ../js/ui/calendar.js:131
msgctxt "list thursday" msgctxt "list thursday"
msgid "Th" msgid "Th"
msgstr "Kam" msgstr "Kam"
#. Translators: Event list abbreviation for Friday */ #. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:148 #: ../js/ui/calendar.js:133
msgctxt "list friday" msgctxt "list friday"
msgid "F" msgid "F"
msgstr "Jum" msgstr "Jum"
#. Translators: Event list abbreviation for Saturday */ #. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:150 #: ../js/ui/calendar.js:135
msgctxt "list saturday" msgctxt "list saturday"
msgid "S" msgid "S"
msgstr "Sab" msgstr "Sab"
#: ../js/ui/calendar.js:453 #: ../js/ui/calendar.js:460
msgid "Previous month" msgid "Previous month"
msgstr "Bulan sebelumnya" msgstr "Bulan sebelumnya"
#: ../js/ui/calendar.js:463 #: ../js/ui/calendar.js:470
msgid "Next month" msgid "Next month"
msgstr "Bulan selanjutnya" msgstr "Bulan selanjutnya"
#. Translators: Text to show if there are no events */ #. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:781 #: ../js/ui/calendar.js:805
msgid "Nothing Scheduled" msgid "Nothing Scheduled"
msgstr "Tak Ada Jadwal" msgstr "Tak Ada Jadwal"
#. Translators: Shown on calendar heading when selected day occurs on current year */ #: ../js/ui/calendar.js:824
#: ../js/ui/calendar.js:799
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" 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:828
#: ../js/ui/calendar.js:802
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %d %B %Y" msgstr "%A, %d %B %Y"
#: ../js/ui/calendar.js:813 #: ../js/ui/calendar.js:840
msgid "Today" msgid "Today"
msgstr "Hari ini" msgstr "Hari ini"
#: ../js/ui/calendar.js:817 #: ../js/ui/calendar.js:844
msgid "Tomorrow" msgid "Tomorrow"
msgstr "Besok" msgstr "Besok"
#: ../js/ui/calendar.js:828 #: ../js/ui/calendar.js:855
msgid "This week" msgid "This week"
msgstr "Minggu ini" msgstr "Minggu ini"
#: ../js/ui/calendar.js:836 #: ../js/ui/calendar.js:863
msgid "Next week" msgid "Next week"
msgstr "Minggu depan" msgstr "Minggu depan"
@ -615,7 +619,7 @@ msgid "Type again:"
msgstr "Ketik lagi:" msgstr "Ketik lagi:"
#: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277 #: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:918 #: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919
msgid "Connect" msgid "Connect"
msgstr "Sambung" msgstr "Sambung"
@ -709,102 +713,102 @@ msgstr "Otentikasi"
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "Maaf, tidak berhasil. Silakan coba lagi." msgstr "Maaf, tidak berhasil. Silakan coba lagi."
#: ../js/ui/components/telepathyClient.js:240 #: ../js/ui/components/telepathyClient.js:242
msgid "Invitation" msgid "Invitation"
msgstr "Undangan" msgstr "Undangan"
#: ../js/ui/components/telepathyClient.js:300 #: ../js/ui/components/telepathyClient.js:302
msgid "Call" msgid "Call"
msgstr "Panggil" msgstr "Panggil"
#: ../js/ui/components/telepathyClient.js:316 #: ../js/ui/components/telepathyClient.js:318
msgid "File Transfer" msgid "File Transfer"
msgstr "Transfer Berkas" msgstr "Transfer Berkas"
#: ../js/ui/components/telepathyClient.js:420 #: ../js/ui/components/telepathyClient.js:422
msgid "Chat" msgid "Chat"
msgstr "Obrolan" msgstr "Obrolan"
#: ../js/ui/components/telepathyClient.js:483 #: ../js/ui/components/telepathyClient.js:485
msgid "Unmute" msgid "Unmute"
msgstr "Bersuara" msgstr "Bersuara"
#: ../js/ui/components/telepathyClient.js:483 #: ../js/ui/components/telepathyClient.js:485
msgid "Mute" msgid "Mute"
msgstr "Bisu" msgstr "Bisu"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:953 #: ../js/ui/components/telepathyClient.js:955
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */ #. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:960 #: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "Kemarin, %H:%M" msgstr "Kemarin, %H:%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */ #. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:967 #: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %H%M" msgstr "%A, %H%M"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */ #. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:974 #: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M" msgid "%B %d, %H%M"
msgstr "%d %B, %H%M" msgstr "%d %B, %H%M"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */ #. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:980 #: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M" msgid "%B %d %Y, %H%M"
msgstr "%d %B %Y, %H%M" msgstr "%d %B %Y, %H%M"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:986 #: ../js/ui/components/telepathyClient.js:988
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:993 #: ../js/ui/components/telepathyClient.js:995
msgid "Yesterday, %l%M %p" msgid "Yesterday, %l%M %p"
msgstr "Kemarin, %l%M %p" msgstr "Kemarin, %l%M %p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */ #. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1000 #: ../js/ui/components/telepathyClient.js:1002
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %l%M %p" msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */ #. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1007 #: ../js/ui/components/telepathyClient.js:1009
msgid "%B %d, %l%M %p" msgid "%B %d, %l%M %p"
msgstr "%d %B, %l%M %p" msgstr "%d %B, %l%M %p"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format. #. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/ #. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1013 #: ../js/ui/components/telepathyClient.js:1015
msgid "%B %d %Y, %l%M %p" msgid "%B %d %Y, %l%M %p"
msgstr "%d %B %Y, %l%M %p" msgstr "%d %B %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:1045 #: ../js/ui/components/telepathyClient.js:1047
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s sekarang dikenal sebagai %s" msgstr "%s sekarang dikenal sebagai %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. */ #. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1149 #: ../js/ui/components/telepathyClient.js:1151
#, javascript-format #, javascript-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Undangan ke %s" msgstr "Undangan ke %s"
@ -812,38 +816,38 @@ msgstr "Undangan ke %s"
#. translators: first argument is the name of a contact and the second #. 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 #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */ #. * for example. */
#: ../js/ui/components/telepathyClient.js:1157 #: ../js/ui/components/telepathyClient.js:1159
#, javascript-format #, javascript-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s mengundang Anda untuk bergabung dengan %s" msgstr "%s mengundang Anda untuk bergabung dengan %s"
#: ../js/ui/components/telepathyClient.js:1159 #: ../js/ui/components/telepathyClient.js:1161
#: ../js/ui/components/telepathyClient.js:1194 #: ../js/ui/components/telepathyClient.js:1196
#: ../js/ui/components/telepathyClient.js:1228 #: ../js/ui/components/telepathyClient.js:1230
#: ../js/ui/components/telepathyClient.js:1286 #: ../js/ui/components/telepathyClient.js:1287
msgid "Decline" msgid "Decline"
msgstr "Tolak" msgstr "Tolak"
#: ../js/ui/components/telepathyClient.js:1165 #: ../js/ui/components/telepathyClient.js:1167
#: ../js/ui/components/telepathyClient.js:1234 #: ../js/ui/components/telepathyClient.js:1236
#: ../js/ui/components/telepathyClient.js:1291 #: ../js/ui/components/telepathyClient.js:1292
msgid "Accept" msgid "Accept"
msgstr "Terima" msgstr "Terima"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1184 #: ../js/ui/components/telepathyClient.js:1186
#, javascript-format #, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Panggilan video dari %s" msgstr "Panggilan video dari %s"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1187 #: ../js/ui/components/telepathyClient.js:1189
#, javascript-format #, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Panggilan dari %s" msgstr "Panggilan dari %s"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1201 #: ../js/ui/components/telepathyClient.js:1203
msgid "Answer" msgid "Answer"
msgstr "Jawab" msgstr "Jawab"
@ -852,111 +856,111 @@ msgstr "Jawab"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1222 #: ../js/ui/components/telepathyClient.js:1224
#, javascript-format #, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s sedang mengirimi Anda %s" msgstr "%s sedang mengirimi Anda %s"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1251 #: ../js/ui/components/telepathyClient.js:1253
#, javascript-format #, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s ingin minta izin melihat Anda ketika Anda daring" msgstr "%s ingin minta izin melihat Anda ketika Anda daring"
#: ../js/ui/components/telepathyClient.js:1337 #: ../js/ui/components/telepathyClient.js:1338
msgid "Network error" msgid "Network error"
msgstr "Galat jaringan" msgstr "Galat jaringan"
#: ../js/ui/components/telepathyClient.js:1339 #: ../js/ui/components/telepathyClient.js:1340
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Otentikasi gagal" msgstr "Otentikasi gagal"
#: ../js/ui/components/telepathyClient.js:1341 #: ../js/ui/components/telepathyClient.js:1342
msgid "Encryption error" msgid "Encryption error"
msgstr "Galat enkripsi" msgstr "Galat enkripsi"
#: ../js/ui/components/telepathyClient.js:1343 #: ../js/ui/components/telepathyClient.js:1344
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Sertifikat tidak disediakan" msgstr "Sertifikat tidak disediakan"
#: ../js/ui/components/telepathyClient.js:1345 #: ../js/ui/components/telepathyClient.js:1346
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Sertifikat tidak dipercaya" msgstr "Sertifikat tidak dipercaya"
#: ../js/ui/components/telepathyClient.js:1347 #: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Sertifikat kadaluarsa" msgstr "Sertifikat kadaluarsa"
#: ../js/ui/components/telepathyClient.js:1349 #: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Sertifikat tidak diaktifkan" msgstr "Sertifikat tidak diaktifkan"
#: ../js/ui/components/telepathyClient.js:1351 #: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Nama host sertifikat tidak cocok" msgstr "Nama host sertifikat tidak cocok"
#: ../js/ui/components/telepathyClient.js:1353 #: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Sidik jari sertifikat tidak cocok" msgstr "Sidik jari sertifikat tidak cocok"
#: ../js/ui/components/telepathyClient.js:1355 #: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Sertifikat ditandatangani sendiri" msgstr "Sertifikat ditandatangani sendiri"
#: ../js/ui/components/telepathyClient.js:1357 #: ../js/ui/components/telepathyClient.js:1358
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Status diatur ke luring" msgstr "Status diatur ke luring"
#: ../js/ui/components/telepathyClient.js:1359 #: ../js/ui/components/telepathyClient.js:1360
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Enkripsi tidak tersedia" msgstr "Enkripsi tidak tersedia"
#: ../js/ui/components/telepathyClient.js:1361 #: ../js/ui/components/telepathyClient.js:1362
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Sertifikat tidak valid" msgstr "Sertifikat tidak valid"
#: ../js/ui/components/telepathyClient.js:1363 #: ../js/ui/components/telepathyClient.js:1364
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Koneksi telah ditolak" msgstr "Koneksi telah ditolak"
#: ../js/ui/components/telepathyClient.js:1365 #: ../js/ui/components/telepathyClient.js:1366
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Koneksi tak dapat dijalin" msgstr "Koneksi tak dapat dijalin"
#: ../js/ui/components/telepathyClient.js:1367 #: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Koneksi telah terputus" msgstr "Koneksi telah terputus"
#: ../js/ui/components/telepathyClient.js:1369 #: ../js/ui/components/telepathyClient.js:1370
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Akun ini telah tersambung pada server" msgstr "Akun ini telah tersambung pada server"
#: ../js/ui/components/telepathyClient.js:1371 #: ../js/ui/components/telepathyClient.js:1372
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "" msgstr ""
"Koneksi telah digantikan oleh koneksi baru memakai sumberdaya yang sama" "Koneksi telah digantikan oleh koneksi baru memakai sumberdaya yang sama"
#: ../js/ui/components/telepathyClient.js:1373 #: ../js/ui/components/telepathyClient.js:1374
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Akun ini sudah ada di server" msgstr "Akun ini sudah ada di server"
#: ../js/ui/components/telepathyClient.js:1375 #: ../js/ui/components/telepathyClient.js:1376
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "Server kini terlalu sibuk untuk menangani koneksi" msgstr "Server kini terlalu sibuk untuk menangani koneksi"
#: ../js/ui/components/telepathyClient.js:1377 #: ../js/ui/components/telepathyClient.js:1378
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Sertifikat telah dicabut" msgstr "Sertifikat telah dicabut"
#: ../js/ui/components/telepathyClient.js:1379 #: ../js/ui/components/telepathyClient.js:1380
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Sertifikat memakai algorima cipher yang tak aman atau lemah secara " "Sertifikat memakai algorima cipher yang tak aman atau lemah secara "
"kriptografi" "kriptografi"
#: ../js/ui/components/telepathyClient.js:1381 #: ../js/ui/components/telepathyClient.js:1382
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -964,26 +968,26 @@ msgstr ""
"Panjang sertifikat server, atau kedalaman rantai sertifikat server, " "Panjang sertifikat server, atau kedalaman rantai sertifikat server, "
"melampaui batas yang diberlakukan oleh pustaka kriptografi" "melampaui batas yang diberlakukan oleh pustaka kriptografi"
#: ../js/ui/components/telepathyClient.js:1383 #: ../js/ui/components/telepathyClient.js:1384
msgid "Internal error" msgid "Internal error"
msgstr "Galat internal" msgstr "Galat internal"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1393 #: ../js/ui/components/telepathyClient.js:1394
#, javascript-format #, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Tak bisa menyambung ke %s" msgstr "Tak bisa menyambung ke %s"
#: ../js/ui/components/telepathyClient.js:1398 #: ../js/ui/components/telepathyClient.js:1399
msgid "View account" msgid "View account"
msgstr "Tilik akun" msgstr "Tilik akun"
#: ../js/ui/components/telepathyClient.js:1435 #: ../js/ui/components/telepathyClient.js:1436
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Alasan yang tidak diketahui" msgstr "Alasan yang tidak diketahui"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155
msgid "Windows" msgid "Windows"
msgstr "Jendela" msgstr "Jendela"
@ -995,22 +999,22 @@ msgstr "Tampilkan Aplikasi"
msgid "Dash" msgid "Dash"
msgstr "Dash" msgstr "Dash"
#: ../js/ui/dateMenu.js:96 #: ../js/ui/dateMenu.js:97
msgid "Open Calendar" msgid "Open Calendar"
msgstr "Buka Kalender" msgstr "Buka Kalender"
#: ../js/ui/dateMenu.js:100 #: ../js/ui/dateMenu.js:101
msgid "Open Clocks" msgid "Open Clocks"
msgstr "Buka Jam" msgstr "Buka Jam"
#: ../js/ui/dateMenu.js:107 #: ../js/ui/dateMenu.js:108
msgid "Date & Time Settings" msgid "Date & Time Settings"
msgstr "Pengaturan Waktu & Tanggal" msgstr "Pengaturan Waktu & Tanggal"
#. Translators: This is the date format to use when the calendar popup is #. 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"). #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */ #. */
#: ../js/ui/dateMenu.js:204 #: ../js/ui/dateMenu.js:132
msgid "%A %B %e, %Y" msgid "%A %B %e, %Y"
msgstr "%A, %e %B %Y" msgstr "%A, %e %B %Y"
@ -1147,7 +1151,7 @@ msgstr "Pasang"
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?" msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?"
#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523 #: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:539
msgid "Keyboard" msgid "Keyboard"
msgstr "Papan Ketik" msgstr "Papan Ketik"
@ -1203,53 +1207,54 @@ msgstr "Tilik Sumber"
msgid "Web Page" msgid "Web Page"
msgstr "Halaman Web" msgstr "Halaman Web"
#: ../js/ui/messageTray.js:1326 #: ../js/ui/messageTray.js:1332
msgid "Open" msgid "Open"
msgstr "Buka" msgstr "Buka"
#: ../js/ui/messageTray.js:1333 #: ../js/ui/messageTray.js:1339
msgid "Remove" msgid "Remove"
msgstr "Hapus" msgstr "Hapus"
#: ../js/ui/messageTray.js:1630 #: ../js/ui/messageTray.js:1636
msgid "Notifications" msgid "Notifications"
msgstr "Pemberitahuan" msgstr "Pemberitahuan"
#: ../js/ui/messageTray.js:1637 #: ../js/ui/messageTray.js:1643
msgid "Clear Messages" msgid "Clear Messages"
msgstr "Bersihkan Pesan" msgstr "Bersihkan Pesan"
#: ../js/ui/messageTray.js:1656 #: ../js/ui/messageTray.js:1662
msgid "Notification Settings" msgid "Notification Settings"
msgstr "Pengaturan Pemberitahuan" msgstr "Pengaturan Pemberitahuan"
#: ../js/ui/messageTray.js:1709 #: ../js/ui/messageTray.js:1715
msgid "Tray Menu" msgid "Tray Menu"
msgstr "Menu Baki" msgstr "Menu Baki"
#: ../js/ui/messageTray.js:1926 #: ../js/ui/messageTray.js:1939
msgid "No Messages" msgid "No Messages"
msgstr "Tiada Pesan" msgstr "Tiada Pesan"
#: ../js/ui/messageTray.js:1968 #: ../js/ui/messageTray.js:1986
msgid "Message Tray" msgid "Message Tray"
msgstr "Baki Pesan" msgstr "Baki Pesan"
#: ../js/ui/messageTray.js:2971 #: ../js/ui/messageTray.js:2443 ../js/ui/overviewControls.js:483
msgid "System Information" #: ../js/ui/screenShield.js:152
msgstr "Informasi Sistem"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425
msgctxt "program"
msgid "Unknown"
msgstr "Tak dikenal"
#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
msgstr[0] "%d pesan baru" msgstr[0] "%d pesan baru"
#: ../js/ui/messageTray.js:3013
msgid "System Information"
msgstr "Informasi Sistem"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:439
msgctxt "program"
msgid "Unknown"
msgstr "Tak dikenal"
#: ../js/ui/overview.js:84 #: ../js/ui/overview.js:84
msgid "Undo" msgid "Undo"
msgstr "Batal" msgstr "Batal"
@ -1266,17 +1271,17 @@ msgstr "Gambaran"
msgid "Type to search…" msgid "Type to search…"
msgstr "Ketik untuk mencari…" msgstr "Ketik untuk mencari…"
#: ../js/ui/panel.js:515 #: ../js/ui/panel.js:521
msgid "Quit" msgid "Quit"
msgstr "Keluar" msgstr "Keluar"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */ #. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:567 #: ../js/ui/panel.js:573
msgid "Activities" msgid "Activities"
msgstr "Aktivitas" msgstr "Aktivitas"
#: ../js/ui/panel.js:918 #: ../js/ui/panel.js:924
msgid "Top Bar" msgid "Top Bar"
msgstr "Bar Atas" msgstr "Bar Atas"
@ -1303,33 +1308,33 @@ msgstr "Memulai ulang..."
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d %B" msgstr "%A, %d %B"
#: ../js/ui/screenShield.js:153 #: ../js/ui/screenShield.js:154
#, javascript-format #, javascript-format
msgid "%d new notification" msgid "%d new notification"
msgid_plural "%d new notifications" msgid_plural "%d new notifications"
msgstr[0] "%d pemberitahuan baru" msgstr[0] "%d pemberitahuan baru"
#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 #: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345
msgid "Lock" msgid "Lock"
msgstr "Kunci" msgstr "Kunci"
#: ../js/ui/screenShield.js:706 #: ../js/ui/screenShield.js:709
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME perlu mengunci layar" msgstr "GNOME perlu mengunci layar"
#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Tak bisa mengunci" msgstr "Tak bisa mengunci"
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 #: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Kunci diblokir oleh suatu aplikasi" msgstr "Kunci diblokir oleh suatu aplikasi"
#: ../js/ui/search.js:594 #: ../js/ui/search.js:611
msgid "Searching…" msgid "Searching…"
msgstr "Mencari…" msgstr "Mencari…"
#: ../js/ui/search.js:596 #: ../js/ui/search.js:613
msgid "No results." msgid "No results."
msgstr "Tak ada yang cocok." msgstr "Tak ada yang cocok."
@ -1406,9 +1411,9 @@ msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178 #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1281 #: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1282
#: ../js/ui/status/network.js:1392 ../js/ui/status/rfkill.js:86 #: ../js/ui/status/network.js:1393 ../js/ui/status/rfkill.js:91
#: ../js/ui/status/rfkill.js:114 #: ../js/ui/status/rfkill.js:118
msgid "Turn Off" msgid "Turn Off"
msgstr "Matikan" msgstr "Matikan"
@ -1422,7 +1427,7 @@ msgid "%d Connected Device"
msgid_plural "%d Connected Devices" msgid_plural "%d Connected Devices"
msgstr[0] "%d Perangkat Tersambung" msgstr[0] "%d Perangkat Tersambung"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309 #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1310
msgid "Not Connected" msgid "Not Connected"
msgstr "Tak Tersambung" msgstr "Tak Tersambung"
@ -1430,7 +1435,7 @@ msgstr "Tak Tersambung"
msgid "Brightness" msgid "Brightness"
msgstr "Kecerahan" msgstr "Kecerahan"
#: ../js/ui/status/keyboard.js:547 #: ../js/ui/status/keyboard.js:563
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Tampilkan Tata Letak Papan Tik" msgstr "Tampilkan Tata Letak Papan Tik"
@ -1458,8 +1463,8 @@ msgstr "Fungsikan"
msgid "<unknown>" msgid "<unknown>"
msgstr "<tak dikenal>" msgstr "<tak dikenal>"
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307 #: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1308
#: ../js/ui/status/network.js:1511 #: ../js/ui/status/network.js:1512
msgid "Off" msgid "Off"
msgstr "Mati" msgstr "Mati"
@ -1477,7 +1482,7 @@ msgstr "Tak Dikelola"
msgid "Disconnecting" msgid "Disconnecting"
msgstr "Memutus" msgstr "Memutus"
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301 #: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1302
msgid "Connecting" msgid "Connecting"
msgstr "Menyambung" msgstr "Menyambung"
@ -1498,7 +1503,7 @@ msgstr "Firmware hilang"
msgid "Unavailable" msgid "Unavailable"
msgstr "Tak tersedia" msgstr "Tak tersedia"
#: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1695 #: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1696
msgid "Connection failed" msgid "Connection failed"
msgstr "Koneksi gagal" msgstr "Koneksi gagal"
@ -1510,7 +1515,7 @@ msgstr "Pengaturan Kabel"
msgid "Mobile Broadband Settings" msgid "Mobile Broadband Settings"
msgstr "Pengaturan Data Seluler" msgstr "Pengaturan Data Seluler"
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305 #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1306
msgid "Hardware Disabled" msgid "Hardware Disabled"
msgstr "Perangkat Keras Dinonaktifkan" msgstr "Perangkat Keras Dinonaktifkan"
@ -1550,60 +1555,60 @@ msgstr "Jaringan Wi-Fi"
msgid "Select a network" msgid "Select a network"
msgstr "Pilih jaringan" msgstr "Pilih jaringan"
#: ../js/ui/status/network.js:882 #: ../js/ui/status/network.js:883
msgid "No Networks" msgid "No Networks"
msgstr "Tiada Jaringan" msgstr "Tiada Jaringan"
#: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112 #: ../js/ui/status/network.js:904 ../js/ui/status/rfkill.js:116
msgid "Use hardware switch to turn off" msgid "Use hardware switch to turn off"
msgstr "Pakai saklar perangkat keras untuk mematikan" msgstr "Pakai saklar perangkat keras untuk mematikan"
#: ../js/ui/status/network.js:1173 #: ../js/ui/status/network.js:1174
msgid "Select Network" msgid "Select Network"
msgstr "Pilih Jaringan" msgstr "Pilih Jaringan"
#: ../js/ui/status/network.js:1179 #: ../js/ui/status/network.js:1180
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Pengaturan Wi-Fi" msgstr "Pengaturan Wi-Fi"
#: ../js/ui/status/network.js:1281 #: ../js/ui/status/network.js:1282
msgid "Turn On" msgid "Turn On"
msgstr "Nyalakan" msgstr "Nyalakan"
#: ../js/ui/status/network.js:1298 #: ../js/ui/status/network.js:1299
msgid "Hotspot Active" msgid "Hotspot Active"
msgstr "Hotspot Aktif" msgstr "Hotspot Aktif"
#: ../js/ui/status/network.js:1409 #: ../js/ui/status/network.js:1410
msgid "connecting..." msgid "connecting..."
msgstr "menghubungi..." msgstr "menghubungi..."
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:1412 #: ../js/ui/status/network.js:1413
msgid "authentication required" msgid "authentication required"
msgstr "diperlukan otentikasi" msgstr "diperlukan otentikasi"
#: ../js/ui/status/network.js:1414 #: ../js/ui/status/network.js:1415
msgid "connection failed" msgid "connection failed"
msgstr "koneksi gagal" msgstr "koneksi gagal"
#: ../js/ui/status/network.js:1480 ../js/ui/status/rfkill.js:89 #: ../js/ui/status/network.js:1481 ../js/ui/status/rfkill.js:94
msgid "Network Settings" msgid "Network Settings"
msgstr "Pengaturan Jaringan" msgstr "Pengaturan Jaringan"
#: ../js/ui/status/network.js:1482 #: ../js/ui/status/network.js:1483
msgid "VPN Settings" msgid "VPN Settings"
msgstr "Pengaturan VPN" msgstr "Pengaturan VPN"
#: ../js/ui/status/network.js:1501 #: ../js/ui/status/network.js:1502
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1656 #: ../js/ui/status/network.js:1657
msgid "Network Manager" msgid "Network Manager"
msgstr "Manajer Jaringan" msgstr "Manajer Jaringan"
#: ../js/ui/status/network.js:1696 #: ../js/ui/status/network.js:1697
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Aktivasi koneksi jaringan gagal" msgstr "Aktivasi koneksi jaringan gagal"
@ -1637,11 +1642,11 @@ msgstr "UPS"
msgid "Battery" msgid "Battery"
msgstr "Baterai" msgstr "Baterai"
#: ../js/ui/status/rfkill.js:83 #: ../js/ui/status/rfkill.js:88
msgid "Airplane Mode" msgid "Airplane Mode"
msgstr "Mode Pesawat Terbang" msgstr "Mode Pesawat Terbang"
#: ../js/ui/status/rfkill.js:85 #: ../js/ui/status/rfkill.js:90
msgid "On" msgid "On"
msgstr "Nyala" msgstr "Nyala"
@ -1685,11 +1690,11 @@ msgstr "Masuk sebagai pengguna lain"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Buka Kunci Jendela" msgstr "Buka Kunci Jendela"
#: ../js/ui/viewSelector.js:158 #: ../js/ui/viewSelector.js:159
msgid "Applications" msgid "Applications"
msgstr "Aplikasi" msgstr "Aplikasi"
#: ../js/ui/viewSelector.js:162 #: ../js/ui/viewSelector.js:163
msgid "Search" msgid "Search"
msgstr "Cari" msgstr "Cari"
@ -1799,7 +1804,7 @@ msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk"
msgid "List possible modes" msgid "List possible modes"
msgstr "Menampilkan mode yang mungkin" msgstr "Menampilkan mode yang mungkin"
#: ../src/shell-app.c:666 #: ../src/shell-app.c:680
#, c-format #, c-format
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "Gagal meluncurkan \"%s\"" msgstr "Gagal meluncurkan \"%s\""

468
po/kk.po

File diff suppressed because it is too large Load Diff

View File

@ -9,8 +9,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell 3.15.x\n" "Project-Id-Version: gnome-shell 3.15.x\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-11-16 12:28+0100\n" "POT-Creation-Date: 2014-12-31 00:46+0100\n"
"PO-Revision-Date: 2014-11-16 12:29+0100\n" "PO-Revision-Date: 2014-12-31 00:46+0100\n"
"Last-Translator: Åka Sikrom <a4NOSPAMPLEASETHANKYOU@hush.com>\n" "Last-Translator: Åka Sikrom <a4NOSPAMPLEASETHANKYOU@hush.com>\n"
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n" "Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
"Language: Norwegian bokmål\n" "Language: Norwegian bokmål\n"
@ -327,20 +327,20 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Logg inn" msgstr "Logg inn"
#: ../js/gdm/loginDialog.js:275 #: ../js/gdm/loginDialog.js:276
msgid "Choose Session" msgid "Choose Session"
msgstr "Velg økt" msgstr "Velg økt"
#. translators: this message is shown below the user list on the #. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for #. login screen. It can be activated to reveal an entry for
#. manually entering the username. #. manually entering the username.
#: ../js/gdm/loginDialog.js:434 #: ../js/gdm/loginDialog.js:428
msgid "Not listed?" msgid "Not listed?"
msgstr "Ikke listet?" msgstr "Ikke listet?"
#. Translators: this message is shown below the username entry field #. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm #. to clue the user in on how to login to the local network realm
#: ../js/gdm/loginDialog.js:619 #: ../js/gdm/loginDialog.js:814
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(f.eks. bruker eller %s)" msgstr "(f.eks. bruker eller %s)"
@ -348,12 +348,12 @@ msgstr "(f.eks. bruker eller %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:624 ../js/ui/components/networkAgent.js:269 #: ../js/gdm/loginDialog.js:819 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287 #: ../js/ui/components/networkAgent.js:287
msgid "Username: " msgid "Username: "
msgstr "Brukernavn: " msgstr "Brukernavn: "
#: ../js/gdm/loginDialog.js:953 #: ../js/gdm/loginDialog.js:1151
msgid "Login Window" msgid "Login Window"
msgstr "Innloggingsvindu" msgstr "Innloggingsvindu"
@ -429,7 +429,7 @@ msgstr "%s ble lagt til i dine favoritter."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s ble fjernet fra dine favoritter." msgstr "%s ble fjernet fra dine favoritter."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:819
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:337
msgid "Settings" msgid "Settings"
msgstr "Innstillinger" msgstr "Innstillinger"
@ -472,43 +472,43 @@ msgstr "%H.%M"
#. * NOTE: These grid abbreviations are always shown together #. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S". #. * and in order, e.g. "S M T W T F S".
#. #.
#: ../js/ui/calendar.js:115 #: ../js/ui/calendar.js:98
msgctxt "grid sunday" msgctxt "grid sunday"
msgid "S" msgid "S"
msgstr "S" msgstr "S"
#. Translators: Calendar grid abbreviation for Monday #. Translators: Calendar grid abbreviation for Monday
#: ../js/ui/calendar.js:117 #: ../js/ui/calendar.js:100
msgctxt "grid monday" msgctxt "grid monday"
msgid "M" msgid "M"
msgstr "M" msgstr "M"
#. Translators: Calendar grid abbreviation for Tuesday #. Translators: Calendar grid abbreviation for Tuesday
#: ../js/ui/calendar.js:119 #: ../js/ui/calendar.js:102
msgctxt "grid tuesday" msgctxt "grid tuesday"
msgid "T" msgid "T"
msgstr "T" msgstr "T"
#. Translators: Calendar grid abbreviation for Wednesday #. Translators: Calendar grid abbreviation for Wednesday
#: ../js/ui/calendar.js:121 #: ../js/ui/calendar.js:104
msgctxt "grid wednesday" msgctxt "grid wednesday"
msgid "W" msgid "W"
msgstr "O" msgstr "O"
#. Translators: Calendar grid abbreviation for Thursday #. Translators: Calendar grid abbreviation for Thursday
#: ../js/ui/calendar.js:123 #: ../js/ui/calendar.js:106
msgctxt "grid thursday" msgctxt "grid thursday"
msgid "T" msgid "T"
msgstr "T" msgstr "T"
#. Translators: Calendar grid abbreviation for Friday #. Translators: Calendar grid abbreviation for Friday
#: ../js/ui/calendar.js:125 #: ../js/ui/calendar.js:108
msgctxt "grid friday" msgctxt "grid friday"
msgid "F" msgid "F"
msgstr "F" msgstr "F"
#. Translators: Calendar grid abbreviation for Saturday #. Translators: Calendar grid abbreviation for Saturday
#: ../js/ui/calendar.js:127 #: ../js/ui/calendar.js:110
msgctxt "grid saturday" msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "L" msgstr "L"
@ -519,83 +519,83 @@ msgstr "L"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T'). #. * both be 'T').
#. #.
#: ../js/ui/calendar.js:140 #: ../js/ui/calendar.js:123
msgctxt "list sunday" msgctxt "list sunday"
msgid "Su" msgid "Su"
msgstr "Sø" msgstr "Sø"
#. Translators: Event list abbreviation for Monday #. Translators: Event list abbreviation for Monday
#: ../js/ui/calendar.js:142 #: ../js/ui/calendar.js:125
msgctxt "list monday" msgctxt "list monday"
msgid "M" msgid "M"
msgstr "Ma" msgstr "Ma"
#. Translators: Event list abbreviation for Tuesday #. Translators: Event list abbreviation for Tuesday
#: ../js/ui/calendar.js:144 #: ../js/ui/calendar.js:127
msgctxt "list tuesday" msgctxt "list tuesday"
msgid "T" msgid "T"
msgstr "Ti" msgstr "Ti"
#. Translators: Event list abbreviation for Wednesday #. Translators: Event list abbreviation for Wednesday
#: ../js/ui/calendar.js:146 #: ../js/ui/calendar.js:129
msgctxt "list wednesday" msgctxt "list wednesday"
msgid "W" msgid "W"
msgstr "On" msgstr "On"
#. Translators: Event list abbreviation for Thursday #. Translators: Event list abbreviation for Thursday
#: ../js/ui/calendar.js:148 #: ../js/ui/calendar.js:131
msgctxt "list thursday" msgctxt "list thursday"
msgid "Th" msgid "Th"
msgstr "To" msgstr "To"
#. Translators: Event list abbreviation for Friday #. Translators: Event list abbreviation for Friday
#: ../js/ui/calendar.js:150 #: ../js/ui/calendar.js:133
msgctxt "list friday" msgctxt "list friday"
msgid "F" msgid "F"
msgstr "Fr" msgstr "Fr"
#. Translators: Event list abbreviation for Saturday #. Translators: Event list abbreviation for Saturday
#: ../js/ui/calendar.js:152 #: ../js/ui/calendar.js:135
msgctxt "list saturday" msgctxt "list saturday"
msgid "S" msgid "S"
msgstr "Lø" msgstr "Lø"
#: ../js/ui/calendar.js:461 #: ../js/ui/calendar.js:460
msgid "Previous month" msgid "Previous month"
msgstr "Forrige måned" msgstr "Forrige måned"
#: ../js/ui/calendar.js:471 #: ../js/ui/calendar.js:470
msgid "Next month" msgid "Next month"
msgstr "Neste måned" msgstr "Neste måned"
#. Translators: Text to show if there are no events #. Translators: Text to show if there are no events
#: ../js/ui/calendar.js:806 #: ../js/ui/calendar.js:805
msgid "Nothing Scheduled" msgid "Nothing Scheduled"
msgstr "Ingenting planlagt" msgstr "Ingenting planlagt"
#: ../js/ui/calendar.js:825 #: ../js/ui/calendar.js:824
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A %B %d" msgstr "%A %B %d"
#: ../js/ui/calendar.js:829 #: ../js/ui/calendar.js:828
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A %B %d, %Y" msgstr "%A %B %d, %Y"
#: ../js/ui/calendar.js:841 #: ../js/ui/calendar.js:840
msgid "Today" msgid "Today"
msgstr "I dag" msgstr "I dag"
#: ../js/ui/calendar.js:845 #: ../js/ui/calendar.js:844
msgid "Tomorrow" msgid "Tomorrow"
msgstr "I morgen" msgstr "I morgen"
#: ../js/ui/calendar.js:856 #: ../js/ui/calendar.js:855
msgid "This week" msgid "This week"
msgstr "Denne uka" msgstr "Denne uka"
#: ../js/ui/calendar.js:864 #: ../js/ui/calendar.js:863
msgid "Next week" msgid "Next week"
msgstr "Neste uke" msgstr "Neste uke"
@ -1010,7 +1010,7 @@ msgstr "Vis konto"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Ukjent årsak" msgstr "Ukjent årsak"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155
msgid "Windows" msgid "Windows"
msgstr "Vinduer" msgstr "Vinduer"
@ -1268,11 +1268,11 @@ msgstr "Meny for varslingsområde"
msgid "No Messages" msgid "No Messages"
msgstr "Ingen meldinger" msgstr "Ingen meldinger"
#: ../js/ui/messageTray.js:1984 #: ../js/ui/messageTray.js:1986
msgid "Message Tray" msgid "Message Tray"
msgstr "Meldingstrau" msgstr "Meldingstrau"
#: ../js/ui/messageTray.js:2441 ../js/ui/overviewControls.js:483 #: ../js/ui/messageTray.js:2443 ../js/ui/overviewControls.js:483
#: ../js/ui/screenShield.js:152 #: ../js/ui/screenShield.js:152
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
@ -1280,11 +1280,11 @@ msgid_plural "%d new messages"
msgstr[0] "%d ny melding" msgstr[0] "%d ny melding"
msgstr[1] "%d nye meldinger" msgstr[1] "%d nye meldinger"
#: ../js/ui/messageTray.js:3011 #: ../js/ui/messageTray.js:3013
msgid "System Information" msgid "System Information"
msgstr "Systeminformasjon" msgstr "Systeminformasjon"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425 #: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:439
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Ukjent" msgstr "Ukjent"
@ -1305,17 +1305,17 @@ msgstr "Oversikt"
msgid "Type to search…" msgid "Type to search…"
msgstr "Skriv for å søke …" msgstr "Skriv for å søke …"
#: ../js/ui/panel.js:515 #: ../js/ui/panel.js:521
msgid "Quit" msgid "Quit"
msgstr "Avslutt" msgstr "Avslutt"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". #. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:567 #: ../js/ui/panel.js:573
msgid "Activities" msgid "Activities"
msgstr "Aktiviteter" msgstr "Aktiviteter"
#: ../js/ui/panel.js:918 #: ../js/ui/panel.js:924
msgid "Top Bar" msgid "Top Bar"
msgstr "Topp-panel" msgstr "Topp-panel"
@ -1746,11 +1746,11 @@ msgstr "Logg inn som en annen bruker"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Lås opp vindu" msgstr "Lås opp vindu"
#: ../js/ui/viewSelector.js:158 #: ../js/ui/viewSelector.js:159
msgid "Applications" msgid "Applications"
msgstr "Programmer" msgstr "Programmer"
#: ../js/ui/viewSelector.js:162 #: ../js/ui/viewSelector.js:163
msgid "Search" msgid "Search"
msgstr "Søk" msgstr "Søk"
@ -1781,6 +1781,13 @@ msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "Endringer i innstillingene vil forkastes om %d sekund" msgstr[0] "Endringer i innstillingene vil forkastes om %d sekund"
msgstr[1] "Endringer i innstillingene vil forkastes om %d sekunder" msgstr[1] "Endringer i innstillingene vil forkastes om %d sekunder"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: ../js/ui/windowManager.js:599
#, javascript-format
msgid "%d x %d"
msgstr "%d x %d"
#: ../js/ui/windowMenu.js:34 #: ../js/ui/windowMenu.js:34
msgid "Minimize" msgid "Minimize"
msgstr "Minimer" msgstr "Minimer"
@ -1863,7 +1870,7 @@ msgstr "Bruk spesifikt modus, f.eks «gdm» for innloggingsskjerm"
msgid "List possible modes" msgid "List possible modes"
msgstr "Vis mulige modi" msgstr "Vis mulige modi"
#: ../src/shell-app.c:666 #: ../src/shell-app.c:680
#, c-format #, c-format
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "Klarte ikke å starte «%s»" msgstr "Klarte ikke å starte «%s»"

File diff suppressed because it is too large Load Diff

361
po/ru.po

File diff suppressed because it is too large Load Diff

166
po/sl.po
View File

@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-09-13 16:14+0000\n" "POT-Creation-Date: 2014-12-19 16:26+0000\n"
"PO-Revision-Date: 2014-09-13 21:02+0100\n" "PO-Revision-Date: 2014-12-25 19:18+0100\n"
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n" "Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n" "Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
"Language: Slovenian\n" "Language: Slovenian\n"
@ -125,11 +125,11 @@ msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9 #: ../data/org.gnome.shell.gschema.xml.in.in.h:9
msgid "App Picker View" msgid "App Picker View"
msgstr "" msgstr "Pogled izbirnika programov"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10 #: ../data/org.gnome.shell.gschema.xml.in.in.h:10
msgid "Index of the currently selected view in the application picker." msgid "Index of the currently selected view in the application picker."
msgstr "" msgstr "Kazalo trenutno izbranega pogleda v izbirniku programa."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11 #: ../data/org.gnome.shell.gschema.xml.in.in.h:11
msgid "History for command (Alt-F2) dialog" msgid "History for command (Alt-F2) dialog"
@ -224,6 +224,8 @@ msgstr "Tipkovna bližnjica za prikaz dejavnega obvestila."
msgid "" msgid ""
"Keybinding that pauses and resumes all running tweens, for debugging purposes" "Keybinding that pauses and resumes all running tweens, for debugging purposes"
msgstr "" msgstr ""
"Tipkovna bližnjica, ki omogoča ustavljanje in ponovni zagon vseh zagnanih "
"programov za razhroščevanje."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30 #: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid "Which keyboard to use" msgid "Which keyboard to use"
@ -242,6 +244,9 @@ msgid ""
"If true, only applications that have windows on the current workspace are " "If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included." "shown in the switcher. Otherwise, all applications are included."
msgstr "" msgstr ""
"Izbrana možnost določa, da bodo v trenutnem pogledu prikazana le okna, ki so "
"v izbrani delovni površini v preklopniku. V nasprotnem primeru so prikazana "
"vsa okna."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34 #: ../data/org.gnome.shell.gschema.xml.in.in.h:34
msgid "The application icon mode." msgid "The application icon mode."
@ -262,6 +267,8 @@ msgid ""
"If true, only windows from the current workspace are shown in the switcher. " "If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included." "Otherwise, all windows are included."
msgstr "" msgstr ""
"Izbrana možnost določa, da bodo v trenutnem pogledu prikazana le okna v "
"preklopniku. V nasprotnem primeru so prikazana vsa okna."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37 #: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
@ -293,7 +300,7 @@ msgstr ""
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1 #: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
msgid "Captive Portal" msgid "Captive Portal"
msgstr "" msgstr "Združen pogled"
#: ../js/extensionPrefs/main.js:123 #: ../js/extensionPrefs/main.js:123
#, javascript-format #, javascript-format
@ -304,54 +311,54 @@ msgstr "Prišlo je do napake med nalaganjem pogovornega okna z možnosti za %s:"
msgid "GNOME Shell Extensions" msgid "GNOME Shell Extensions"
msgstr "Razširitve lupine Gnome" msgstr "Razširitve lupine Gnome"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 #: ../js/gdm/authPrompt.js:146 ../js/ui/components/networkAgent.js:143
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:915 #: ../js/ui/status/network.js:915
msgid "Cancel" msgid "Cancel"
msgstr "Prekliči" msgstr "Prekliči"
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 #: ../js/gdm/authPrompt.js:168 ../js/gdm/authPrompt.js:216
msgid "Next" msgid "Next"
msgstr "Naslednji" msgstr "Naslednji"
#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 #: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59 #: ../js/ui/unlockDialog.js:59
msgid "Unlock" msgid "Unlock"
msgstr "Odkleni" msgstr "Odkleni"
#: ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:214
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Prijava" msgstr "Prijava"
#: ../js/gdm/loginDialog.js:269 #: ../js/gdm/loginDialog.js:275
msgid "Choose Session" msgid "Choose Session"
msgstr "Izbor seje" msgstr "Izbor seje"
#: ../js/gdm/loginDialog.js:429 #: ../js/gdm/loginDialog.js:434
msgid "Not listed?" msgid "Not listed?"
msgstr "Ali je ni na seznamu?" msgstr "Ali je ni na seznamu?"
#: ../js/gdm/loginDialog.js:614 #: ../js/gdm/loginDialog.js:619
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(na primer, uporabnika ali %s)" msgstr "(na primer, uporabnika ali %s)"
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 #: ../js/gdm/loginDialog.js:624 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287 #: ../js/ui/components/networkAgent.js:287
msgid "Username: " msgid "Username: "
msgstr "Uporabniško ime: " msgstr "Uporabniško ime: "
#: ../js/gdm/loginDialog.js:922 #: ../js/gdm/loginDialog.js:955
msgid "Login Window" msgid "Login Window"
msgstr "Prijavno okno" msgstr "Prijavno okno"
#: ../js/gdm/util.js:323 #: ../js/gdm/util.js:341
msgid "Authentication error" msgid "Authentication error"
msgstr "Napaka overitve" msgstr "Napaka overitve"
#: ../js/gdm/util.js:453 #: ../js/gdm/util.js:473
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(ali pa povlecite prst)" msgstr "(ali pa povlecite prst)"
@ -384,28 +391,28 @@ msgstr "Pogosto"
msgid "All" msgid "All"
msgstr "Vse" msgstr "Vse"
#: ../js/ui/appDisplay.js:1789 #: ../js/ui/appDisplay.js:1791
msgid "New Window" msgid "New Window"
msgstr "Novo okno" msgstr "Novo okno"
#: ../js/ui/appDisplay.js:1815 ../js/ui/dash.js:285 #: ../js/ui/appDisplay.js:1817 ../js/ui/dash.js:285
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Odstrani iz priljubljenih" msgstr "Odstrani iz priljubljenih"
#: ../js/ui/appDisplay.js:1821 #: ../js/ui/appDisplay.js:1823
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Dodaj med priljubljene" msgstr "Dodaj med priljubljene"
#: ../js/ui/appDisplay.js:1830 #: ../js/ui/appDisplay.js:1832
msgid "Show Details" msgid "Show Details"
msgstr "Pokaži besedilo" msgstr "Pokaži besedilo"
#: ../js/ui/appFavorites.js:124 #: ../js/ui/appFavorites.js:132
#, javascript-format #, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "Program \"%s\" je dodan med priljubljeno." msgstr "Program \"%s\" je dodan med priljubljeno."
#: ../js/ui/appFavorites.js:158 #: ../js/ui/appFavorites.js:166
#, javascript-format #, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "Program \"%s\" je odstranjen iz priljubljenih." msgstr "Program \"%s\" je odstranjen iz priljubljenih."
@ -422,14 +429,14 @@ msgstr "Spremeni ozadje ..."
#. Translators: Shown in calendar event list for all day events #. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters #. * Keep it short, best if you can use less then 10 characters
#. */ #. */
#: ../js/ui/calendar.js:67 #: ../js/ui/calendar.js:70
msgctxt "event list time" msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Celodnevno" msgstr "Celodnevno"
#. Translators: Shown in calendar event list, if 24h format, #. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */ #. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:73 #: ../js/ui/calendar.js:77
msgctxt "event list time" msgctxt "event list time"
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
@ -437,7 +444,7 @@ msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format, #. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is #. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */ #. a thin space */
#: ../js/ui/calendar.js:82 #: ../js/ui/calendar.js:86
msgctxt "event list time" msgctxt "event list time"
msgid "%l%M%p" msgid "%l%M%p"
msgstr "%l%M%p" msgstr "%l%M%p"
@ -447,43 +454,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together #. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S". #. * and in order, e.g. "S M T W T F S".
#. */ #. */
#: ../js/ui/calendar.js:113 #: ../js/ui/calendar.js:100
msgctxt "grid sunday" msgctxt "grid sunday"
msgid "S" msgid "S"
msgstr "N" msgstr "N"
#. Translators: Calendar grid abbreviation for Monday */ #. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:115 #: ../js/ui/calendar.js:102
msgctxt "grid monday" msgctxt "grid monday"
msgid "M" msgid "M"
msgstr "P" msgstr "P"
#. Translators: Calendar grid abbreviation for Tuesday */ #. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:117 #: ../js/ui/calendar.js:104
msgctxt "grid tuesday" msgctxt "grid tuesday"
msgid "T" msgid "T"
msgstr "T" msgstr "T"
#. Translators: Calendar grid abbreviation for Wednesday */ #. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:119 #: ../js/ui/calendar.js:106
msgctxt "grid wednesday" msgctxt "grid wednesday"
msgid "W" msgid "W"
msgstr "S" msgstr "S"
#. Translators: Calendar grid abbreviation for Thursday */ #. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:121 #: ../js/ui/calendar.js:108
msgctxt "grid thursday" msgctxt "grid thursday"
msgid "T" msgid "T"
msgstr "Č" msgstr "Č"
#. Translators: Calendar grid abbreviation for Friday */ #. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:123 #: ../js/ui/calendar.js:110
msgctxt "grid friday" msgctxt "grid friday"
msgid "F" msgid "F"
msgstr "P" msgstr "P"
#. Translators: Calendar grid abbreviation for Saturday */ #. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:125 #: ../js/ui/calendar.js:112
msgctxt "grid saturday" msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "S" msgstr "S"
@ -494,85 +501,85 @@ msgstr "S"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T'). #. * both be 'T').
#. */ #. */
#: ../js/ui/calendar.js:138 #: ../js/ui/calendar.js:125
msgctxt "list sunday" msgctxt "list sunday"
msgid "Su" msgid "Su"
msgstr "Ne" msgstr "Ne"
#. Translators: Event list abbreviation for Monday */ #. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:140 #: ../js/ui/calendar.js:127
msgctxt "list monday" msgctxt "list monday"
msgid "M" msgid "M"
msgstr "P" msgstr "P"
#. Translators: Event list abbreviation for Tuesday */ #. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:142 #: ../js/ui/calendar.js:129
msgctxt "list tuesday" msgctxt "list tuesday"
msgid "T" msgid "T"
msgstr "T" msgstr "T"
#. Translators: Event list abbreviation for Wednesday */ #. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:144 #: ../js/ui/calendar.js:131
msgctxt "list wednesday" msgctxt "list wednesday"
msgid "W" msgid "W"
msgstr "S" msgstr "S"
#. Translators: Event list abbreviation for Thursday */ #. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:146 #: ../js/ui/calendar.js:133
msgctxt "list thursday" msgctxt "list thursday"
msgid "Th" msgid "Th"
msgstr "Če" msgstr "Če"
#. Translators: Event list abbreviation for Friday */ #. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:148 #: ../js/ui/calendar.js:135
msgctxt "list friday" msgctxt "list friday"
msgid "F" msgid "F"
msgstr "Pe" msgstr "Pe"
#. Translators: Event list abbreviation for Saturday */ #. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:150 #: ../js/ui/calendar.js:137
msgctxt "list saturday" msgctxt "list saturday"
msgid "S" msgid "S"
msgstr "S" msgstr "S"
#: ../js/ui/calendar.js:453 #: ../js/ui/calendar.js:462
msgid "Previous month" msgid "Previous month"
msgstr "Predhodni mesec" msgstr "Predhodni mesec"
#: ../js/ui/calendar.js:463 #: ../js/ui/calendar.js:472
msgid "Next month" msgid "Next month"
msgstr "Naslednji mesec" msgstr "Naslednji mesec"
#. Translators: Text to show if there are no events */ #. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:781 #: ../js/ui/calendar.js:810
msgid "Nothing Scheduled" msgid "Nothing Scheduled"
msgstr "Nič ni razporejeno" msgstr "Nič ni razporejeno"
#. Translators: Shown on calendar heading when selected day occurs on current year */ #. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:799 #: ../js/ui/calendar.js:826
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d. %m." msgstr "%A, %d. %m."
#. Translators: Shown on calendar heading when selected day occurs on different year */ #. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:802 #: ../js/ui/calendar.js:829
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %d %B %Y" msgstr "%A, %d %B %Y"
#: ../js/ui/calendar.js:813 #: ../js/ui/calendar.js:839
msgid "Today" msgid "Today"
msgstr "Danes" msgstr "Danes"
#: ../js/ui/calendar.js:817 #: ../js/ui/calendar.js:843
msgid "Tomorrow" msgid "Tomorrow"
msgstr "Jutri" msgstr "Jutri"
#: ../js/ui/calendar.js:828 #: ../js/ui/calendar.js:854
msgid "This week" msgid "This week"
msgstr "Ta teden" msgstr "Ta teden"
#: ../js/ui/calendar.js:836 #: ../js/ui/calendar.js:862
msgid "Next week" msgid "Next week"
msgstr "Naslednji teden" msgstr "Naslednji teden"
@ -972,7 +979,7 @@ msgstr "Poglej račun"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Neznan vzrok" msgstr "Neznan vzrok"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 #: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155
msgid "Windows" msgid "Windows"
msgstr "Okna" msgstr "Okna"
@ -984,22 +991,22 @@ msgstr "Pokaži programe"
msgid "Dash" msgid "Dash"
msgstr "Pregledna plošča" msgstr "Pregledna plošča"
#: ../js/ui/dateMenu.js:96 #: ../js/ui/dateMenu.js:97
msgid "Open Calendar" msgid "Open Calendar"
msgstr "Odpri koledar" msgstr "Odpri koledar"
#: ../js/ui/dateMenu.js:100 #: ../js/ui/dateMenu.js:101
msgid "Open Clocks" msgid "Open Clocks"
msgstr "Odpri ure" msgstr "Odpri ure"
#: ../js/ui/dateMenu.js:107 #: ../js/ui/dateMenu.js:108
msgid "Date & Time Settings" msgid "Date & Time Settings"
msgstr "Nastavitve časa in datuma" msgstr "Nastavitve časa in datuma"
#. Translators: This is the date format to use when the calendar popup is #. 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"). #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */ #. */
#: ../js/ui/dateMenu.js:204 #: ../js/ui/dateMenu.js:132
msgid "%A %B %e, %Y" msgid "%A %B %e, %Y"
msgstr "%a, %e. %b., %R" msgstr "%a, %e. %b., %R"
@ -1155,7 +1162,7 @@ msgstr "Namesti"
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Prejmi in namesti “%s” preko povezave na extensions.gnome.org?" msgstr "Prejmi in namesti “%s” preko povezave na extensions.gnome.org?"
#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523 #: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:535
msgid "Keyboard" msgid "Keyboard"
msgstr "Tipkovnica" msgstr "Tipkovnica"
@ -1211,48 +1218,40 @@ msgstr "Poglej vir"
msgid "Web Page" msgid "Web Page"
msgstr "Spletna stran" msgstr "Spletna stran"
#: ../js/ui/messageTray.js:1326 #: ../js/ui/messageTray.js:1332
msgid "Open" msgid "Open"
msgstr "Odpri" msgstr "Odpri"
#: ../js/ui/messageTray.js:1333 #: ../js/ui/messageTray.js:1339
msgid "Remove" msgid "Remove"
msgstr "Odstrani" msgstr "Odstrani"
#: ../js/ui/messageTray.js:1630 #: ../js/ui/messageTray.js:1636
msgid "Notifications" msgid "Notifications"
msgstr "Obvestila" msgstr "Obvestila"
#: ../js/ui/messageTray.js:1637 #: ../js/ui/messageTray.js:1643
msgid "Clear Messages" msgid "Clear Messages"
msgstr "Počisti sporočila" msgstr "Počisti sporočila"
#: ../js/ui/messageTray.js:1656 #: ../js/ui/messageTray.js:1662
msgid "Notification Settings" msgid "Notification Settings"
msgstr "Nastavitve obvestil" msgstr "Nastavitve obvestil"
#: ../js/ui/messageTray.js:1709 #: ../js/ui/messageTray.js:1715
msgid "Tray Menu" msgid "Tray Menu"
msgstr "Meni sistemske vrstice" msgstr "Meni sistemske vrstice"
#: ../js/ui/messageTray.js:1926 #: ../js/ui/messageTray.js:1939
msgid "No Messages" msgid "No Messages"
msgstr "Ni sporočil" msgstr "Ni sporočil"
#: ../js/ui/messageTray.js:1968 #: ../js/ui/messageTray.js:1986
msgid "Message Tray" msgid "Message Tray"
msgstr "Sporočilna vrstica" msgstr "Sporočilna vrstica"
#: ../js/ui/messageTray.js:2971 #: ../js/ui/messageTray.js:2443 ../js/ui/overviewControls.js:483
msgid "System Information" #: ../js/ui/screenShield.js:151
msgstr "Podrobnosti sistema"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425
msgctxt "program"
msgid "Unknown"
msgstr "Neznano"
#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
@ -1261,6 +1260,15 @@ msgstr[1] "%d novo sporočilo"
msgstr[2] "%d novi sporočili" msgstr[2] "%d novi sporočili"
msgstr[3] "%d nova sporočila" msgstr[3] "%d nova sporočila"
#: ../js/ui/messageTray.js:3013
msgid "System Information"
msgstr "Podrobnosti sistema"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425
msgctxt "program"
msgid "Unknown"
msgstr "Neznano"
#: ../js/ui/overview.js:84 #: ../js/ui/overview.js:84
msgid "Undo" msgid "Undo"
msgstr "Razveljavi" msgstr "Razveljavi"
@ -1330,19 +1338,19 @@ msgstr "Zakleni"
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "Zakleniti je treba zaslon" msgstr "Zakleniti je treba zaslon"
#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 #: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1309
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Zaklep ni mogoč" msgstr "Zaklep ni mogoč"
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 #: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1310
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Zaklep je preprečil program" msgstr "Zaklep je preprečil program"
#: ../js/ui/search.js:594 #: ../js/ui/search.js:611
msgid "Searching…" msgid "Searching…"
msgstr "Iskanje ..." msgstr "Iskanje ..."
#: ../js/ui/search.js:596 #: ../js/ui/search.js:613
msgid "No results." msgid "No results."
msgstr "Ni najdenih zadetkov." msgstr "Ni najdenih zadetkov."
@ -1446,7 +1454,7 @@ msgstr "Ni vzpostavljene povezave"
msgid "Brightness" msgid "Brightness"
msgstr "Svetlost" msgstr "Svetlost"
#: ../js/ui/status/keyboard.js:547 #: ../js/ui/status/keyboard.js:559
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Pokaži razporeditev tipkovnice" msgstr "Pokaži razporeditev tipkovnice"
@ -1701,11 +1709,11 @@ msgstr "Prijava kot drug uporabnik"
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Odkleni okno" msgstr "Odkleni okno"
#: ../js/ui/viewSelector.js:158 #: ../js/ui/viewSelector.js:159
msgid "Applications" msgid "Applications"
msgstr "Programi" msgstr "Programi"
#: ../js/ui/viewSelector.js:162 #: ../js/ui/viewSelector.js:163
msgid "Search" msgid "Search"
msgstr "Poišči" msgstr "Poišči"

348
po/sv.po
View File

@ -3,22 +3,23 @@
# This file is distributed under the same license as the gnome-shell package. # This file is distributed under the same license as the gnome-shell package.
# Daniel Nylander <po@danielnylander.se>, 2009, 2010, 2011, 2012. # Daniel Nylander <po@danielnylander.se>, 2009, 2010, 2011, 2012.
# Marcus Lundblad <ml@update.uu.se>, 2014. # Marcus Lundblad <ml@update.uu.se>, 2014.
# Åke Engelbrektson <eson57@gmail.com, 2014.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-09-12 21:57+0000\n" "POT-Creation-Date: 2014-12-11 08:30+0000\n"
"PO-Revision-Date: 2014-09-15 09:47+0100\n" "PO-Revision-Date: 2014-12-11 08:57+0100\n"
"Last-Translator: Mattias Eriksson <snaggen@gmail.com>\n" "Last-Translator: Åke Engelbrektson <eson57@gmail.com>\n"
"Language-Team: svenska <tp-sv@listor.tp-sv.se>\n" "Language-Team: svenska <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n" "Language: sv\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.4\n" "X-Generator: Poedit 1.7.1\n"
#: ../data/50-gnome-shell-system.xml.in.h:1 #: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System" msgid "System"
@ -292,8 +293,8 @@ msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Fördröj fokusändringar i musläge tills pekare slutar röra sig" msgstr "Fördröj fokusändringar i musläge tills pekare slutar röra sig"
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1 #: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
msgid "Captive Portal" msgid "Network Login"
msgstr "Fångstportal" msgstr "Nätverksinloggning"
#: ../js/extensionPrefs/main.js:123 #: ../js/extensionPrefs/main.js:123
#, javascript-format #, javascript-format
@ -307,7 +308,7 @@ msgstr "Tillägg för GNOME-skal"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:915 #: ../js/ui/status/network.js:916
msgid "Cancel" msgid "Cancel"
msgstr "Avbryt" msgstr "Avbryt"
@ -325,33 +326,33 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Logga in" msgstr "Logga in"
#: ../js/gdm/loginDialog.js:269 #: ../js/gdm/loginDialog.js:275
msgid "Choose Session" msgid "Choose Session"
msgstr "Välj session" msgstr "Välj session"
#: ../js/gdm/loginDialog.js:429 #: ../js/gdm/loginDialog.js:434
msgid "Not listed?" msgid "Not listed?"
msgstr "Inte listad?" msgstr "Inte listad?"
#: ../js/gdm/loginDialog.js:614 #: ../js/gdm/loginDialog.js:619
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(till exempel användare eller %s)" msgstr "(till exempel användare eller %s)"
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 #: ../js/gdm/loginDialog.js:624 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287 #: ../js/ui/components/networkAgent.js:287
msgid "Username: " msgid "Username: "
msgstr "Användarnamn: " msgstr "Användarnamn: "
#: ../js/gdm/loginDialog.js:922 #: ../js/gdm/loginDialog.js:955
msgid "Login Window" msgid "Login Window"
msgstr "Inloggningsfönster" msgstr "Inloggningsfönster"
#: ../js/gdm/util.js:323 #: ../js/gdm/util.js:341
msgid "Authentication error" msgid "Authentication error"
msgstr "Autentiseringsfel" msgstr "Autentiseringsfel"
#: ../js/gdm/util.js:453 #: ../js/gdm/util.js:473
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(eller dra fingret)" msgstr "(eller dra fingret)"
@ -372,15 +373,15 @@ msgstr "Körning av ”%s” misslyckades:"
msgid "Web Authentication Redirect" msgid "Web Authentication Redirect"
msgstr "Omdirigering för webautentisering" msgstr "Omdirigering för webautentisering"
#: ../js/ui/appDisplay.js:772 #: ../js/ui/appDisplay.js:770
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Ofta använda program kommer visas här" msgstr "Ofta använda program kommer visas här"
#: ../js/ui/appDisplay.js:883 #: ../js/ui/appDisplay.js:881
msgid "Frequent" msgid "Frequent"
msgstr "Ofta använda" msgstr "Ofta använda"
#: ../js/ui/appDisplay.js:890 #: ../js/ui/appDisplay.js:888
msgid "All" msgid "All"
msgstr "Alla" msgstr "Alla"
@ -400,17 +401,17 @@ msgstr "Lägg till som favorit"
msgid "Show Details" msgid "Show Details"
msgstr "Visa detaljer" msgstr "Visa detaljer"
#: ../js/ui/appFavorites.js:124 #: ../js/ui/appFavorites.js:132
#, javascript-format #, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "%s har lagts till i dina favoriter." msgstr "%s har lagts till i dina favoriter."
#: ../js/ui/appFavorites.js:158 #: ../js/ui/appFavorites.js:166
#, javascript-format #, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s har tagits bort från dina favoriter." msgstr "%s har tagits bort från dina favoriter."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:819
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:337
msgid "Settings" msgid "Settings"
msgstr "Inställningar" msgstr "Inställningar"
@ -419,17 +420,23 @@ msgstr "Inställningar"
msgid "Change Background…" msgid "Change Background…"
msgstr "Ändra bakgrund…" msgstr "Ändra bakgrund…"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:39
msgctxt "calendar-no-work"
msgid "06"
msgstr ""
#. Translators: Shown in calendar event list for all day events #. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters #. * Keep it short, best if you can use less then 10 characters
#. */ #. */
#: ../js/ui/calendar.js:67 #: ../js/ui/calendar.js:68
msgctxt "event list time" msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Hela dagen" msgstr "Hela dagen"
#. Translators: Shown in calendar event list, if 24h format, #. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */ #. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:73 #: ../js/ui/calendar.js:75
msgctxt "event list time" msgctxt "event list time"
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
@ -437,7 +444,7 @@ msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format, #. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is #. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */ #. a thin space */
#: ../js/ui/calendar.js:82 #: ../js/ui/calendar.js:84
msgctxt "event list time" msgctxt "event list time"
msgid "%l%M%p" msgid "%l%M%p"
msgstr "%l%M%p" msgstr "%l%M%p"
@ -447,43 +454,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together #. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S". #. * and in order, e.g. "S M T W T F S".
#. */ #. */
#: ../js/ui/calendar.js:113 #: ../js/ui/calendar.js:98
msgctxt "grid sunday" msgctxt "grid sunday"
msgid "S" msgid "S"
msgstr "S" msgstr "S"
#. Translators: Calendar grid abbreviation for Monday */ #. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:115 #: ../js/ui/calendar.js:100
msgctxt "grid monday" msgctxt "grid monday"
msgid "M" msgid "M"
msgstr "M" msgstr "M"
#. Translators: Calendar grid abbreviation for Tuesday */ #. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:117 #: ../js/ui/calendar.js:102
msgctxt "grid tuesday" msgctxt "grid tuesday"
msgid "T" msgid "T"
msgstr "T" msgstr "T"
#. Translators: Calendar grid abbreviation for Wednesday */ #. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:119 #: ../js/ui/calendar.js:104
msgctxt "grid wednesday" msgctxt "grid wednesday"
msgid "W" msgid "W"
msgstr "O" msgstr "O"
#. Translators: Calendar grid abbreviation for Thursday */ #. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:121 #: ../js/ui/calendar.js:106
msgctxt "grid thursday" msgctxt "grid thursday"
msgid "T" msgid "T"
msgstr "T" msgstr "T"
#. Translators: Calendar grid abbreviation for Friday */ #. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:123 #: ../js/ui/calendar.js:108
msgctxt "grid friday" msgctxt "grid friday"
msgid "F" msgid "F"
msgstr "F" msgstr "F"
#. Translators: Calendar grid abbreviation for Saturday */ #. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:125 #: ../js/ui/calendar.js:110
msgctxt "grid saturday" msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "L" msgstr "L"
@ -494,85 +501,83 @@ msgstr "L"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T'). #. * both be 'T').
#. */ #. */
#: ../js/ui/calendar.js:138 #: ../js/ui/calendar.js:123
msgctxt "list sunday" msgctxt "list sunday"
msgid "Su" msgid "Su"
msgstr "Sö" msgstr "Sö"
#. Translators: Event list abbreviation for Monday */ #. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:140 #: ../js/ui/calendar.js:125
msgctxt "list monday" msgctxt "list monday"
msgid "M" msgid "M"
msgstr "Må" msgstr "Må"
#. Translators: Event list abbreviation for Tuesday */ #. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:142 #: ../js/ui/calendar.js:127
msgctxt "list tuesday" msgctxt "list tuesday"
msgid "T" msgid "T"
msgstr "Ti" msgstr "Ti"
#. Translators: Event list abbreviation for Wednesday */ #. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:144 #: ../js/ui/calendar.js:129
msgctxt "list wednesday" msgctxt "list wednesday"
msgid "W" msgid "W"
msgstr "On" msgstr "On"
#. Translators: Event list abbreviation for Thursday */ #. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:146 #: ../js/ui/calendar.js:131
msgctxt "list thursday" msgctxt "list thursday"
msgid "Th" msgid "Th"
msgstr "To" msgstr "To"
#. Translators: Event list abbreviation for Friday */ #. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:148 #: ../js/ui/calendar.js:133
msgctxt "list friday" msgctxt "list friday"
msgid "F" msgid "F"
msgstr "Fr" msgstr "Fr"
#. Translators: Event list abbreviation for Saturday */ #. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:150 #: ../js/ui/calendar.js:135
msgctxt "list saturday" msgctxt "list saturday"
msgid "S" msgid "S"
msgstr "Lö" msgstr "Lö"
#: ../js/ui/calendar.js:453 #: ../js/ui/calendar.js:444
msgid "Previous month" msgid "Previous month"
msgstr "Föregående månad" msgstr "Föregående månad"
#: ../js/ui/calendar.js:463 #: ../js/ui/calendar.js:454
msgid "Next month" msgid "Next month"
msgstr "Nästa månad" msgstr "Nästa månad"
#. Translators: Text to show if there are no events */ #. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:781 #: ../js/ui/calendar.js:789
msgid "Nothing Scheduled" msgid "Nothing Scheduled"
msgstr "Ingenting i schemat" msgstr "Ingenting i schemat"
#. Translators: Shown on calendar heading when selected day occurs on current year */ #: ../js/ui/calendar.js:808
#: ../js/ui/calendar.js:799
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" 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:812
#: ../js/ui/calendar.js:802
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %d %B, %Y" msgstr "%A, %d %B, %Y"
#: ../js/ui/calendar.js:813 #: ../js/ui/calendar.js:824
msgid "Today" msgid "Today"
msgstr "Idag" msgstr "Idag"
#: ../js/ui/calendar.js:817 #: ../js/ui/calendar.js:828
msgid "Tomorrow" msgid "Tomorrow"
msgstr "Imorgon" msgstr "Imorgon"
#: ../js/ui/calendar.js:828 #: ../js/ui/calendar.js:839
msgid "This week" msgid "This week"
msgstr "Denna vecka" msgstr "Denna vecka"
#: ../js/ui/calendar.js:836 #: ../js/ui/calendar.js:847
msgid "Next week" msgid "Next week"
msgstr "Nästa vecka" msgstr "Nästa vecka"
@ -606,7 +611,7 @@ msgid "Type again:"
msgstr "Skriv igen:" msgstr "Skriv igen:"
#: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277 #: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:918 #: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919
msgid "Connect" msgid "Connect"
msgstr "Anslut" msgstr "Anslut"
@ -700,102 +705,102 @@ msgstr "Autentisera"
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "Tyvärr, det fungerade inte. Försök igen." msgstr "Tyvärr, det fungerade inte. Försök igen."
#: ../js/ui/components/telepathyClient.js:240 #: ../js/ui/components/telepathyClient.js:242
msgid "Invitation" msgid "Invitation"
msgstr "Inbjudan" msgstr "Inbjudan"
#: ../js/ui/components/telepathyClient.js:300 #: ../js/ui/components/telepathyClient.js:302
msgid "Call" msgid "Call"
msgstr "Samtal" msgstr "Samtal"
#: ../js/ui/components/telepathyClient.js:316 #: ../js/ui/components/telepathyClient.js:318
msgid "File Transfer" msgid "File Transfer"
msgstr "Filöverföring" msgstr "Filöverföring"
#: ../js/ui/components/telepathyClient.js:420 #: ../js/ui/components/telepathyClient.js:422
msgid "Chat" msgid "Chat"
msgstr "Chatt" msgstr "Chatt"
#: ../js/ui/components/telepathyClient.js:483 #: ../js/ui/components/telepathyClient.js:485
msgid "Unmute" msgid "Unmute"
msgstr "Aktivera ljud" msgstr "Aktivera ljud"
#: ../js/ui/components/telepathyClient.js:483 #: ../js/ui/components/telepathyClient.js:485
msgid "Mute" msgid "Mute"
msgstr "Tyst" msgstr "Tyst"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:953 #: ../js/ui/components/telepathyClient.js:955
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */ #. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:960 #: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "Igår, %H%M" msgstr "Igår, %H%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */ #. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:967 #: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %H%M" msgstr "%A, %H%M"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */ #. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:974 #: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M" msgid "%B %d, %H%M"
msgstr "%d %B, %H%M" msgstr "%d %B, %H%M"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */ #. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:980 #: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M" msgid "%B %d %Y, %H%M"
msgstr "%d %B %Y, %H%M" msgstr "%d %B %Y, %H%M"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:986 #: ../js/ui/components/telepathyClient.js:988
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%l%M%p" msgstr "%l%M%p"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:993 #: ../js/ui/components/telepathyClient.js:995
msgid "Yesterday, %l%M %p" msgid "Yesterday, %l%M %p"
msgstr "Igår, %l%M%p" msgstr "Igår, %l%M%p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */ #. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1000 #: ../js/ui/components/telepathyClient.js:1002
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %I%M%p" msgstr "%A, %I%M%p"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */ #. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1007 #: ../js/ui/components/telepathyClient.js:1009
msgid "%B %d, %l%M %p" msgid "%B %d, %l%M %p"
msgstr "%d %B, %l%M%p" msgstr "%d %B, %l%M%p"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format. #. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/ #. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1013 #: ../js/ui/components/telepathyClient.js:1015
msgid "%B %d %Y, %l%M %p" msgid "%B %d %Y, %l%M %p"
msgstr "%d %B %Y, %l%M%p" msgstr "%d %B %Y, %l%M%p"
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:1045 #: ../js/ui/components/telepathyClient.js:1047
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s är nu känd som %s" msgstr "%s är nu känd som %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. */ #. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1149 #: ../js/ui/components/telepathyClient.js:1151
#, javascript-format #, javascript-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Inbjudan till %s" msgstr "Inbjudan till %s"
@ -803,38 +808,38 @@ msgstr "Inbjudan till %s"
#. translators: first argument is the name of a contact and the second #. 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 #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */ #. * for example. */
#: ../js/ui/components/telepathyClient.js:1157 #: ../js/ui/components/telepathyClient.js:1159
#, javascript-format #, javascript-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s bjuder in dig till %s" msgstr "%s bjuder in dig till %s"
#: ../js/ui/components/telepathyClient.js:1159 #: ../js/ui/components/telepathyClient.js:1161
#: ../js/ui/components/telepathyClient.js:1194 #: ../js/ui/components/telepathyClient.js:1196
#: ../js/ui/components/telepathyClient.js:1228 #: ../js/ui/components/telepathyClient.js:1230
#: ../js/ui/components/telepathyClient.js:1286 #: ../js/ui/components/telepathyClient.js:1287
msgid "Decline" msgid "Decline"
msgstr "Neka" msgstr "Neka"
#: ../js/ui/components/telepathyClient.js:1165 #: ../js/ui/components/telepathyClient.js:1167
#: ../js/ui/components/telepathyClient.js:1234 #: ../js/ui/components/telepathyClient.js:1236
#: ../js/ui/components/telepathyClient.js:1291 #: ../js/ui/components/telepathyClient.js:1292
msgid "Accept" msgid "Accept"
msgstr "Acceptera" msgstr "Acceptera"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1184 #: ../js/ui/components/telepathyClient.js:1186
#, javascript-format #, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Videosamtal från %s" msgstr "Videosamtal från %s"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1187 #: ../js/ui/components/telepathyClient.js:1189
#, javascript-format #, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Samtal från %s" msgstr "Samtal från %s"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1201 #: ../js/ui/components/telepathyClient.js:1203
msgid "Answer" msgid "Answer"
msgstr "Svara" msgstr "Svara"
@ -843,109 +848,109 @@ msgstr "Svara"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1222 #: ../js/ui/components/telepathyClient.js:1224
#, javascript-format #, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s skickar dig %s" msgstr "%s skickar dig %s"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1251 #: ../js/ui/components/telepathyClient.js:1253
#, javascript-format #, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s vill få behörighet att se när du är ansluten" msgstr "%s vill få behörighet att se när du är ansluten"
#: ../js/ui/components/telepathyClient.js:1337 #: ../js/ui/components/telepathyClient.js:1338
msgid "Network error" msgid "Network error"
msgstr "Nätverksfel" msgstr "Nätverksfel"
#: ../js/ui/components/telepathyClient.js:1339 #: ../js/ui/components/telepathyClient.js:1340
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Autentisering misslyckades" msgstr "Autentisering misslyckades"
#: ../js/ui/components/telepathyClient.js:1341 #: ../js/ui/components/telepathyClient.js:1342
msgid "Encryption error" msgid "Encryption error"
msgstr "Krypteringsfel" msgstr "Krypteringsfel"
#: ../js/ui/components/telepathyClient.js:1343 #: ../js/ui/components/telepathyClient.js:1344
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Certifikat tillhandahålls inte" msgstr "Certifikat tillhandahålls inte"
#: ../js/ui/components/telepathyClient.js:1345 #: ../js/ui/components/telepathyClient.js:1346
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Certifikatet är inte pålitligt" msgstr "Certifikatet är inte pålitligt"
#: ../js/ui/components/telepathyClient.js:1347 #: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Certifikatet är utgånget" msgstr "Certifikatet är utgånget"
#: ../js/ui/components/telepathyClient.js:1349 #: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Certifikatet är inte aktiverat" msgstr "Certifikatet är inte aktiverat"
#: ../js/ui/components/telepathyClient.js:1351 #: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Certifikatets värdnamn stämmer inte" msgstr "Certifikatets värdnamn stämmer inte"
#: ../js/ui/components/telepathyClient.js:1353 #: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Certifikatets fingeravtryck stämmer inte" msgstr "Certifikatets fingeravtryck stämmer inte"
#: ../js/ui/components/telepathyClient.js:1355 #: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Certifikatet är självsignerat" msgstr "Certifikatet är självsignerat"
#: ../js/ui/components/telepathyClient.js:1357 #: ../js/ui/components/telepathyClient.js:1358
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Status är inställd till frånkopplad" msgstr "Status är inställd till frånkopplad"
#: ../js/ui/components/telepathyClient.js:1359 #: ../js/ui/components/telepathyClient.js:1360
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Kryptering är inte tillgänglig" msgstr "Kryptering är inte tillgänglig"
#: ../js/ui/components/telepathyClient.js:1361 #: ../js/ui/components/telepathyClient.js:1362
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Certifikatet är ogiltigt" msgstr "Certifikatet är ogiltigt"
#: ../js/ui/components/telepathyClient.js:1363 #: ../js/ui/components/telepathyClient.js:1364
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Anslutningen har nekats" msgstr "Anslutningen har nekats"
#: ../js/ui/components/telepathyClient.js:1365 #: ../js/ui/components/telepathyClient.js:1366
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Anslutningen kan inte etableras" msgstr "Anslutningen kan inte etableras"
#: ../js/ui/components/telepathyClient.js:1367 #: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Anslutningen har förlorats" msgstr "Anslutningen har förlorats"
#: ../js/ui/components/telepathyClient.js:1369 #: ../js/ui/components/telepathyClient.js:1370
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Detta konto är redan anslutet till servern" msgstr "Detta konto är redan anslutet till servern"
#: ../js/ui/components/telepathyClient.js:1371 #: ../js/ui/components/telepathyClient.js:1372
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "Anslutningen har ersatts av en ny anslutning med samma resurs" msgstr "Anslutningen har ersatts av en ny anslutning med samma resurs"
#: ../js/ui/components/telepathyClient.js:1373 #: ../js/ui/components/telepathyClient.js:1374
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Kontot finns redan på servern" msgstr "Kontot finns redan på servern"
#: ../js/ui/components/telepathyClient.js:1375 #: ../js/ui/components/telepathyClient.js:1376
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "Servern är för närvarande för upptagen för att hantera anslutningen" msgstr "Servern är för närvarande för upptagen för att hantera anslutningen"
#: ../js/ui/components/telepathyClient.js:1377 #: ../js/ui/components/telepathyClient.js:1378
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Certifikatet har spärrats" msgstr "Certifikatet har spärrats"
#: ../js/ui/components/telepathyClient.js:1379 #: ../js/ui/components/telepathyClient.js:1380
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Certifikatet använder en osäker skifferalgoritm eller är kryptografiskt svagt" "Certifikatet använder en osäker skifferalgoritm eller är kryptografiskt svagt"
#: ../js/ui/components/telepathyClient.js:1381 #: ../js/ui/components/telepathyClient.js:1382
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -953,22 +958,22 @@ msgstr ""
"Längden på serverns certifikat, eller djupet av serverns certifikatkedja, " "Längden på serverns certifikat, eller djupet av serverns certifikatkedja, "
"överstiger gränserna som satts av det kryptografiska biblioteket" "överstiger gränserna som satts av det kryptografiska biblioteket"
#: ../js/ui/components/telepathyClient.js:1383 #: ../js/ui/components/telepathyClient.js:1384
msgid "Internal error" msgid "Internal error"
msgstr "Internt fel" msgstr "Internt fel"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1393 #: ../js/ui/components/telepathyClient.js:1394
#, javascript-format #, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "Misslyckades att ansluta till %s" msgstr "Misslyckades att ansluta till %s"
#: ../js/ui/components/telepathyClient.js:1398 #: ../js/ui/components/telepathyClient.js:1399
msgid "View account" msgid "View account"
msgstr "Visa konto" msgstr "Visa konto"
#: ../js/ui/components/telepathyClient.js:1435 #: ../js/ui/components/telepathyClient.js:1436
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Okänd anledning" msgstr "Okänd anledning"
@ -982,24 +987,24 @@ msgstr "Visa program"
#: ../js/ui/dash.js:445 #: ../js/ui/dash.js:445
msgid "Dash" msgid "Dash"
msgstr "Favoriter" msgstr "Snabbstartspanel"
#: ../js/ui/dateMenu.js:96 #: ../js/ui/dateMenu.js:97
msgid "Open Calendar" msgid "Open Calendar"
msgstr "Öppna kalender" msgstr "Öppna kalender"
#: ../js/ui/dateMenu.js:100 #: ../js/ui/dateMenu.js:101
msgid "Open Clocks" msgid "Open Clocks"
msgstr "Öppna klockor" msgstr "Öppna klockor"
#: ../js/ui/dateMenu.js:107 #: ../js/ui/dateMenu.js:108
msgid "Date & Time Settings" msgid "Date & Time Settings"
msgstr "Inställningar för datum och tid" msgstr "Inställningar för datum och tid"
#. Translators: This is the date format to use when the calendar popup is #. 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"). #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */ #. */
#: ../js/ui/dateMenu.js:204 #: ../js/ui/dateMenu.js:132
msgid "%A %B %e, %Y" msgid "%A %B %e, %Y"
msgstr "%A %e %B, %Y" msgstr "%A %e %B, %Y"
@ -1144,7 +1149,7 @@ msgstr "Installera"
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Hämta och installera ”%s” från extensions.gnome.org?" msgstr "Hämta och installera ”%s” från extensions.gnome.org?"
#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523 #: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:539
msgid "Keyboard" msgid "Keyboard"
msgstr "Tangentbord" msgstr "Tangentbord"
@ -1200,54 +1205,55 @@ msgstr "Visa källa"
msgid "Web Page" msgid "Web Page"
msgstr "Webbsida" msgstr "Webbsida"
#: ../js/ui/messageTray.js:1326 #: ../js/ui/messageTray.js:1332
msgid "Open" msgid "Open"
msgstr "Öppna" msgstr "Öppna"
#: ../js/ui/messageTray.js:1333 #: ../js/ui/messageTray.js:1339
msgid "Remove" msgid "Remove"
msgstr "Ta bort" msgstr "Ta bort"
#: ../js/ui/messageTray.js:1630 #: ../js/ui/messageTray.js:1636
msgid "Notifications" msgid "Notifications"
msgstr "Notifieringar" msgstr "Notifieringar"
#: ../js/ui/messageTray.js:1637 #: ../js/ui/messageTray.js:1643
msgid "Clear Messages" msgid "Clear Messages"
msgstr "Rensa meddelanden" msgstr "Rensa meddelanden"
#: ../js/ui/messageTray.js:1656 #: ../js/ui/messageTray.js:1662
msgid "Notification Settings" msgid "Notification Settings"
msgstr "Inställningar för notifieringar" msgstr "Inställningar för notifieringar"
#: ../js/ui/messageTray.js:1709 #: ../js/ui/messageTray.js:1715
msgid "Tray Menu" msgid "Tray Menu"
msgstr "Fältmeny" msgstr "Fältmeny"
#: ../js/ui/messageTray.js:1926 #: ../js/ui/messageTray.js:1939
msgid "No Messages" msgid "No Messages"
msgstr "Inga meddelanden" msgstr "Inga meddelanden"
#: ../js/ui/messageTray.js:1968 #: ../js/ui/messageTray.js:1984
msgid "Message Tray" msgid "Message Tray"
msgstr "Meddelandefält" msgstr "Meddelandefält"
#: ../js/ui/messageTray.js:2971 #: ../js/ui/messageTray.js:2441 ../js/ui/overviewControls.js:483
msgid "System Information" #: ../js/ui/screenShield.js:152
msgstr "Systeminformation"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425
msgctxt "program"
msgid "Unknown"
msgstr "Okänt"
#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
msgstr[0] "%d nytt meddelande" msgstr[0] "%d nytt meddelande"
msgstr[1] "%d nya meddelanden" msgstr[1] "%d nya meddelanden"
#: ../js/ui/messageTray.js:3011
msgid "System Information"
msgstr "Systeminformation"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:439
msgctxt "program"
msgid "Unknown"
msgstr "Okänt"
#: ../js/ui/overview.js:84 #: ../js/ui/overview.js:84
msgid "Undo" msgid "Undo"
msgstr "Ångra" msgstr "Ångra"
@ -1264,17 +1270,17 @@ msgstr "Översikt"
msgid "Type to search…" msgid "Type to search…"
msgstr "Skriv för att söka…" msgstr "Skriv för att söka…"
#: ../js/ui/panel.js:515 #: ../js/ui/panel.js:521
msgid "Quit" msgid "Quit"
msgstr "Avsluta" msgstr "Avsluta"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */ #. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:567 #: ../js/ui/panel.js:573
msgid "Activities" msgid "Activities"
msgstr "Aktiviteter" msgstr "Aktiviteter"
#: ../js/ui/panel.js:918 #: ../js/ui/panel.js:924
msgid "Top Bar" msgid "Top Bar"
msgstr "Systemrad" msgstr "Systemrad"
@ -1300,34 +1306,34 @@ msgstr "Startar om…"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d %B" msgstr "%A, %d %B"
#: ../js/ui/screenShield.js:153 #: ../js/ui/screenShield.js:154
#, javascript-format #, javascript-format
msgid "%d new notification" msgid "%d new notification"
msgid_plural "%d new notifications" msgid_plural "%d new notifications"
msgstr[0] "%d ny notifiering" msgstr[0] "%d ny notifiering"
msgstr[1] "%d nya notifieringar" msgstr[1] "%d nya notifieringar"
#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 #: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345
msgid "Lock" msgid "Lock"
msgstr "Lås" msgstr "Lås"
#: ../js/ui/screenShield.js:706 #: ../js/ui/screenShield.js:709
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME behöver låsa skärmen" msgstr "GNOME behöver låsa skärmen"
#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Kunde inte låsa" msgstr "Kunde inte låsa"
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 #: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Låsning hindrades av ett program" msgstr "Låsning hindrades av ett program"
#: ../js/ui/search.js:594 #: ../js/ui/search.js:611
msgid "Searching…" msgid "Searching…"
msgstr "Söker…" msgstr "Söker…"
#: ../js/ui/search.js:596 #: ../js/ui/search.js:613
msgid "No results." msgid "No results."
msgstr "Inga sökträffar." msgstr "Inga sökträffar."
@ -1404,9 +1410,9 @@ msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178 #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1281 #: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1282
#: ../js/ui/status/network.js:1392 ../js/ui/status/rfkill.js:86 #: ../js/ui/status/network.js:1393 ../js/ui/status/rfkill.js:91
#: ../js/ui/status/rfkill.js:114 #: ../js/ui/status/rfkill.js:118
msgid "Turn Off" msgid "Turn Off"
msgstr "Stäng av" msgstr "Stäng av"
@ -1421,7 +1427,7 @@ msgid_plural "%d Connected Devices"
msgstr[0] "%d ansluten enhet" msgstr[0] "%d ansluten enhet"
msgstr[1] "%d anslutna enheter" msgstr[1] "%d anslutna enheter"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309 #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1310
msgid "Not Connected" msgid "Not Connected"
msgstr "Ej ansluten" msgstr "Ej ansluten"
@ -1429,7 +1435,7 @@ msgstr "Ej ansluten"
msgid "Brightness" msgid "Brightness"
msgstr "Ljusstyrka" msgstr "Ljusstyrka"
#: ../js/ui/status/keyboard.js:547 #: ../js/ui/status/keyboard.js:563
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Visa tangentbordslayout" msgstr "Visa tangentbordslayout"
@ -1442,7 +1448,6 @@ msgid "Disable"
msgstr "Inaktivera" msgstr "Inaktivera"
#: ../js/ui/status/location.js:73 #: ../js/ui/status/location.js:73
#| msgid "Power Settings"
msgid "Privacy Settings" msgid "Privacy Settings"
msgstr "Sekretessinställningar" msgstr "Sekretessinställningar"
@ -1458,8 +1463,8 @@ msgstr "Aktivera"
msgid "<unknown>" msgid "<unknown>"
msgstr "<okänd>" msgstr "<okänd>"
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307 #: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1308
#: ../js/ui/status/network.js:1511 #: ../js/ui/status/network.js:1512
msgid "Off" msgid "Off"
msgstr "Frånkopplad" msgstr "Frånkopplad"
@ -1477,7 +1482,7 @@ msgstr "Ohanterade"
msgid "Disconnecting" msgid "Disconnecting"
msgstr "Kopplar från" msgstr "Kopplar från"
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301 #: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1302
msgid "Connecting" msgid "Connecting"
msgstr "Ansluter" msgstr "Ansluter"
@ -1498,7 +1503,7 @@ msgstr "Fast programvara saknas"
msgid "Unavailable" msgid "Unavailable"
msgstr "Inte tillgänglig" msgstr "Inte tillgänglig"
#: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1695 #: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1696
msgid "Connection failed" msgid "Connection failed"
msgstr "Anslutningen misslyckades" msgstr "Anslutningen misslyckades"
@ -1510,7 +1515,7 @@ msgstr "Trådbundna inställningar"
msgid "Mobile Broadband Settings" msgid "Mobile Broadband Settings"
msgstr "Inställningar för mobilt bredband" msgstr "Inställningar för mobilt bredband"
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305 #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1306
msgid "Hardware Disabled" msgid "Hardware Disabled"
msgstr "Maskinvara inaktiverad" msgstr "Maskinvara inaktiverad"
@ -1551,60 +1556,60 @@ msgstr "Trådlösa nätverk"
msgid "Select a network" msgid "Select a network"
msgstr "Välj ett nätverk" msgstr "Välj ett nätverk"
#: ../js/ui/status/network.js:882 #: ../js/ui/status/network.js:883
msgid "No Networks" msgid "No Networks"
msgstr "Inga nätverk" msgstr "Inga nätverk"
#: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112 #: ../js/ui/status/network.js:904 ../js/ui/status/rfkill.js:116
msgid "Use hardware switch to turn off" msgid "Use hardware switch to turn off"
msgstr "Använd hårdvarubrytare för att slå av" msgstr "Använd hårdvarubrytare för att slå av"
#: ../js/ui/status/network.js:1173 #: ../js/ui/status/network.js:1174
msgid "Select Network" msgid "Select Network"
msgstr "Välj nätverk" msgstr "Välj nätverk"
#: ../js/ui/status/network.js:1179 #: ../js/ui/status/network.js:1180
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Inställningar för trådlösa nätverk" msgstr "Inställningar för trådlösa nätverk"
#: ../js/ui/status/network.js:1281 #: ../js/ui/status/network.js:1282
msgid "Turn On" msgid "Turn On"
msgstr "Slå på" msgstr "Slå på"
#: ../js/ui/status/network.js:1298 #: ../js/ui/status/network.js:1299
msgid "Hotspot Active" msgid "Hotspot Active"
msgstr "Surfpunkt Aktiv" msgstr "Surfzon aktiv"
#: ../js/ui/status/network.js:1409 #: ../js/ui/status/network.js:1410
msgid "connecting..." msgid "connecting..."
msgstr "ansluter..." msgstr "ansluter..."
#. Translators: this is for network connections that require some kind of key or password */ #. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:1412 #: ../js/ui/status/network.js:1413
msgid "authentication required" msgid "authentication required"
msgstr "autentisering krävs" msgstr "autentisering krävs"
#: ../js/ui/status/network.js:1414 #: ../js/ui/status/network.js:1415
msgid "connection failed" msgid "connection failed"
msgstr "anslutningen misslyckades" msgstr "anslutningen misslyckades"
#: ../js/ui/status/network.js:1480 ../js/ui/status/rfkill.js:89 #: ../js/ui/status/network.js:1481 ../js/ui/status/rfkill.js:94
msgid "Network Settings" msgid "Network Settings"
msgstr "Nätverksinställningar" msgstr "Nätverksinställningar"
#: ../js/ui/status/network.js:1482 #: ../js/ui/status/network.js:1483
msgid "VPN Settings" msgid "VPN Settings"
msgstr "VPN-inställningar" msgstr "VPN-inställningar"
#: ../js/ui/status/network.js:1501 #: ../js/ui/status/network.js:1502
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1656 #: ../js/ui/status/network.js:1657
msgid "Network Manager" msgid "Network Manager"
msgstr "Nätverkshanterare" msgstr "Nätverkshanterare"
#: ../js/ui/status/network.js:1696 #: ../js/ui/status/network.js:1697
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Aktivering av nätverksanslutning misslyckades" msgstr "Aktivering av nätverksanslutning misslyckades"
@ -1638,11 +1643,11 @@ msgstr "Avbrottsfri kraftförsörjning (UPS)"
msgid "Battery" msgid "Battery"
msgstr "Batteri" msgstr "Batteri"
#: ../js/ui/status/rfkill.js:83 #: ../js/ui/status/rfkill.js:88
msgid "Airplane Mode" msgid "Airplane Mode"
msgstr "Flygplansläge" msgstr "Flygplansläge"
#: ../js/ui/status/rfkill.js:85 #: ../js/ui/status/rfkill.js:90
msgid "On" msgid "On"
msgstr "På" msgstr "På"
@ -1803,7 +1808,7 @@ msgstr "Använd ett specifikt läge, t.ex. ”gdm” för inloggningsskärm"
msgid "List possible modes" msgid "List possible modes"
msgstr "Lista möjliga lägen" msgstr "Lista möjliga lägen"
#: ../src/shell-app.c:666 #: ../src/shell-app.c:680
#, c-format #, c-format
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "Misslyckades med att starta ”%s”" msgstr "Misslyckades med att starta ”%s”"
@ -1820,6 +1825,9 @@ msgstr "Lösenordet får inte vara blankt"
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Autentiseringsdialogen stängdes av användaren" msgstr "Autentiseringsdialogen stängdes av användaren"
#~ msgid "Captive Portal"
#~ msgstr "Fångstportal"
#~ msgid "The maximum accuracy level of location." #~ msgid "The maximum accuracy level of location."
#~ msgstr "Högsta grad av noggrannhet för plats." #~ msgstr "Högsta grad av noggrannhet för plats."

343
po/tr.po
View File

@ -7,14 +7,15 @@
# Osman Karagöz <osmank3@gmail.com>, 2013. # Osman Karagöz <osmank3@gmail.com>, 2013.
# Bayram Güçlü <byrmgcl@yandex.com.tr>, 2014. # Bayram Güçlü <byrmgcl@yandex.com.tr>, 2014.
# sabri ünal <yakushabb@gmail.com>, 2014. # sabri ünal <yakushabb@gmail.com>, 2014.
# Gökhan Gurbetoğlu <ggurbet@gmail.com>, 2014.
# Muhammet Kara <muhammetk@gmail.com>, 2011, 2012, 2013, 2014. # Muhammet Kara <muhammetk@gmail.com>, 2011, 2012, 2013, 2014.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "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" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-09-15 09:30+0000\n" "POT-Creation-Date: 2014-12-13 08:33+0000\n"
"PO-Revision-Date: 2014-09-16 09:01+0000\n" "PO-Revision-Date: 2014-12-13 17:43+0000\n"
"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n" "Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
"Language-Team: Türkçe <gnome-turk@gnome.org>\n" "Language-Team: Türkçe <gnome-turk@gnome.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -267,8 +268,8 @@ msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Fare kipinde odak değişikliklerini işaretçi hareketi durana kadar beklet" msgstr "Fare kipinde odak değişikliklerini işaretçi hareketi durana kadar beklet"
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1 #: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
msgid "Captive Portal" msgid "Network Login"
msgstr "Esir Portal" msgstr "Ağ Girişi"
#: ../js/extensionPrefs/main.js:123 #: ../js/extensionPrefs/main.js:123
#, javascript-format #, javascript-format
@ -282,7 +283,7 @@ msgstr "GNOME Kabuğu Uzantıları"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:915 #: ../js/ui/status/network.js:916
msgid "Cancel" msgid "Cancel"
msgstr "İptal" msgstr "İptal"
@ -300,33 +301,33 @@ msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Giriş" msgstr "Giriş"
#: ../js/gdm/loginDialog.js:269 #: ../js/gdm/loginDialog.js:275
msgid "Choose Session" msgid "Choose Session"
msgstr "Oturum Seçin" msgstr "Oturum Seçin"
#: ../js/gdm/loginDialog.js:429 #: ../js/gdm/loginDialog.js:434
msgid "Not listed?" msgid "Not listed?"
msgstr "Listede yok mu?" msgstr "Listede yok mu?"
#: ../js/gdm/loginDialog.js:614 #: ../js/gdm/loginDialog.js:619
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(örneğin, kullanıcı veya %s)" msgstr "(örneğin, kullanıcı veya %s)"
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 #: ../js/gdm/loginDialog.js:624 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287 #: ../js/ui/components/networkAgent.js:287
msgid "Username: " msgid "Username: "
msgstr "Kullanıcı Adı: " msgstr "Kullanıcı Adı: "
#: ../js/gdm/loginDialog.js:922 #: ../js/gdm/loginDialog.js:955
msgid "Login Window" msgid "Login Window"
msgstr "Oturum Açma Penceresi" msgstr "Oturum Açma Penceresi"
#: ../js/gdm/util.js:323 #: ../js/gdm/util.js:341
msgid "Authentication error" msgid "Authentication error"
msgstr "Kimlik doğrulama hatası" msgstr "Kimlik doğrulama hatası"
#: ../js/gdm/util.js:453 #: ../js/gdm/util.js:473
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(ya da parmak izi okutun)" msgstr "(ya da parmak izi okutun)"
@ -347,15 +348,15 @@ msgstr "“%s” çalıştırılması başarısız:"
msgid "Web Authentication Redirect" msgid "Web Authentication Redirect"
msgstr "Web Kimlik Doğrulama Yönlendirmesi" msgstr "Web Kimlik Doğrulama Yönlendirmesi"
#: ../js/ui/appDisplay.js:772 #: ../js/ui/appDisplay.js:770
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Sık kullanılan uygulamalar burada yer alacak" msgstr "Sık kullanılan uygulamalar burada yer alacak"
#: ../js/ui/appDisplay.js:883 #: ../js/ui/appDisplay.js:881
msgid "Frequent" msgid "Frequent"
msgstr "Sık sık" msgstr "Sık sık"
#: ../js/ui/appDisplay.js:890 #: ../js/ui/appDisplay.js:888
msgid "All" msgid "All"
msgstr "Hepsi" msgstr "Hepsi"
@ -375,17 +376,17 @@ msgstr "Sık Kullanılanlara Ekle"
msgid "Show Details" msgid "Show Details"
msgstr "Ayrıntıları Göster" msgstr "Ayrıntıları Göster"
#: ../js/ui/appFavorites.js:124 #: ../js/ui/appFavorites.js:132
#, javascript-format #, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "%s sık kullanılanlarınıza eklendi." msgstr "%s sık kullanılanlarınıza eklendi."
#: ../js/ui/appFavorites.js:158 #: ../js/ui/appFavorites.js:166
#, javascript-format #, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s sık kullanılanlarınızdan çıkarıldı." msgstr "%s sık kullanılanlarınızdan çıkarıldı."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:819
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:337
msgid "Settings" msgid "Settings"
msgstr "Ayarlar" msgstr "Ayarlar"
@ -394,17 +395,24 @@ msgstr "Ayarlar"
msgid "Change Background…" msgid "Change Background…"
msgstr "Arkaplanı Değiştir…" msgstr "Arkaplanı Değiştir…"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0"
#. (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:39
msgctxt "calendar-no-work"
msgid "06"
msgstr "06"
#. Translators: Shown in calendar event list for all day events #. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters #. * Keep it short, best if you can use less then 10 characters
#. */ #. */
#: ../js/ui/calendar.js:67 #: ../js/ui/calendar.js:68
msgctxt "event list time" msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Tüm Gün" msgstr "Tüm Gün"
#. Translators: Shown in calendar event list, if 24h format, #. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */ #. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:73 #: ../js/ui/calendar.js:75
msgctxt "event list time" msgctxt "event list time"
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
@ -412,7 +420,7 @@ msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format, #. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is #. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */ #. a thin space */
#: ../js/ui/calendar.js:82 #: ../js/ui/calendar.js:84
msgctxt "event list time" msgctxt "event list time"
msgid "%l%M%p" msgid "%l%M%p"
msgstr "%l%M%p" msgstr "%l%M%p"
@ -422,43 +430,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together #. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S". #. * and in order, e.g. "S M T W T F S".
#. */ #. */
#: ../js/ui/calendar.js:113 #: ../js/ui/calendar.js:98
msgctxt "grid sunday" msgctxt "grid sunday"
msgid "S" msgid "S"
msgstr "P" msgstr "P"
#. Translators: Calendar grid abbreviation for Monday */ #. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:115 #: ../js/ui/calendar.js:100
msgctxt "grid monday" msgctxt "grid monday"
msgid "M" msgid "M"
msgstr "P" msgstr "P"
#. Translators: Calendar grid abbreviation for Tuesday */ #. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:117 #: ../js/ui/calendar.js:102
msgctxt "grid tuesday" msgctxt "grid tuesday"
msgid "T" msgid "T"
msgstr "S" msgstr "S"
#. Translators: Calendar grid abbreviation for Wednesday */ #. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:119 #: ../js/ui/calendar.js:104
msgctxt "grid wednesday" msgctxt "grid wednesday"
msgid "W" msgid "W"
msgstr "Ç" msgstr "Ç"
#. Translators: Calendar grid abbreviation for Thursday */ #. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:121 #: ../js/ui/calendar.js:106
msgctxt "grid thursday" msgctxt "grid thursday"
msgid "T" msgid "T"
msgstr "P" msgstr "P"
#. Translators: Calendar grid abbreviation for Friday */ #. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:123 #: ../js/ui/calendar.js:108
msgctxt "grid friday" msgctxt "grid friday"
msgid "F" msgid "F"
msgstr "C" msgstr "C"
#. Translators: Calendar grid abbreviation for Saturday */ #. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:125 #: ../js/ui/calendar.js:110
msgctxt "grid saturday" msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "C" msgstr "C"
@ -469,87 +477,83 @@ msgstr "C"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T'). #. * both be 'T').
#. */ #. */
#: ../js/ui/calendar.js:138 #: ../js/ui/calendar.js:123
msgctxt "list sunday" msgctxt "list sunday"
msgid "Su" msgid "Su"
msgstr "Pa" msgstr "Pa"
#. Translators: Event list abbreviation for Monday */ #. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:140 #: ../js/ui/calendar.js:125
msgctxt "list monday" msgctxt "list monday"
msgid "M" msgid "M"
msgstr "Pz" msgstr "Pz"
#. Translators: Event list abbreviation for Tuesday */ #. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:142 #: ../js/ui/calendar.js:127
msgctxt "list tuesday" msgctxt "list tuesday"
msgid "T" msgid "T"
msgstr "S" msgstr "S"
#. Translators: Event list abbreviation for Wednesday */ #. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:144 #: ../js/ui/calendar.js:129
msgctxt "list wednesday" msgctxt "list wednesday"
msgid "W" msgid "W"
msgstr "Ç" msgstr "Ç"
#. Translators: Event list abbreviation for Thursday */ #. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:146 #: ../js/ui/calendar.js:131
msgctxt "list thursday" msgctxt "list thursday"
msgid "Th" msgid "Th"
msgstr "Pe" msgstr "Pe"
#. Translators: Event list abbreviation for Friday */ #. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:148 #: ../js/ui/calendar.js:133
msgctxt "list friday" msgctxt "list friday"
msgid "F" msgid "F"
msgstr "C" msgstr "C"
#. Translators: Event list abbreviation for Saturday */ #. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:150 #: ../js/ui/calendar.js:135
msgctxt "list saturday" msgctxt "list saturday"
msgid "S" msgid "S"
msgstr "Ct" msgstr "Ct"
#: ../js/ui/calendar.js:453 #: ../js/ui/calendar.js:444
msgid "Previous month" msgid "Previous month"
msgstr "Önceki ay" msgstr "Önceki ay"
#: ../js/ui/calendar.js:463 #: ../js/ui/calendar.js:454
msgid "Next month" msgid "Next month"
msgstr "Gelecek ay" msgstr "Gelecek ay"
#. Translators: Text to show if there are no events */ #. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:781 #: ../js/ui/calendar.js:789
msgid "Nothing Scheduled" msgid "Nothing Scheduled"
msgstr "Planınız Boş" msgstr "Planınız Boş"
#. Translators: Shown on calendar heading when selected day occurs on current #: ../js/ui/calendar.js:808
#. year */
#: ../js/ui/calendar.js:799
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d %B" msgstr "%A, %d %B"
#. Translators: Shown on calendar heading when selected day occurs on #: ../js/ui/calendar.js:812
#. different year */
#: ../js/ui/calendar.js:802
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %d %B, %Y" msgstr "%A, %d %B, %Y"
#: ../js/ui/calendar.js:813 #: ../js/ui/calendar.js:824
msgid "Today" msgid "Today"
msgstr "Bugün" msgstr "Bugün"
#: ../js/ui/calendar.js:817 #: ../js/ui/calendar.js:828
msgid "Tomorrow" msgid "Tomorrow"
msgstr "Yarın" msgstr "Yarın"
#: ../js/ui/calendar.js:828 #: ../js/ui/calendar.js:839
msgid "This week" msgid "This week"
msgstr "Bu hafta" msgstr "Bu hafta"
#: ../js/ui/calendar.js:836 #: ../js/ui/calendar.js:847
msgid "Next week" msgid "Next week"
msgstr "Gelecek hafta" msgstr "Gelecek hafta"
@ -583,7 +587,7 @@ msgid "Type again:"
msgstr "Terkar yazın:" msgstr "Terkar yazın:"
#: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277 #: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:918 #: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919
msgid "Connect" msgid "Connect"
msgstr "Bağlan" msgstr "Bağlan"
@ -675,103 +679,103 @@ msgstr "Doğrula"
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "Üzgünüm ama işe yaramadı. Lütfen tekrar deneyin." msgstr "Üzgünüm ama işe yaramadı. Lütfen tekrar deneyin."
#: ../js/ui/components/telepathyClient.js:240 #: ../js/ui/components/telepathyClient.js:242
msgid "Invitation" msgid "Invitation"
msgstr "Davet" msgstr "Davet"
#: ../js/ui/components/telepathyClient.js:300 #: ../js/ui/components/telepathyClient.js:302
msgid "Call" msgid "Call"
msgstr "Çağrı" msgstr "Çağrı"
#: ../js/ui/components/telepathyClient.js:316 #: ../js/ui/components/telepathyClient.js:318
msgid "File Transfer" msgid "File Transfer"
msgstr "Dosya Aktarımı" msgstr "Dosya Aktarımı"
#: ../js/ui/components/telepathyClient.js:420 #: ../js/ui/components/telepathyClient.js:422
msgid "Chat" msgid "Chat"
msgstr "Sohbet" msgstr "Sohbet"
#: ../js/ui/components/telepathyClient.js:483 #: ../js/ui/components/telepathyClient.js:485
msgid "Unmute" msgid "Unmute"
msgstr "Sesi Aç" msgstr "Sesi Aç"
#: ../js/ui/components/telepathyClient.js:483 #: ../js/ui/components/telepathyClient.js:485
msgid "Mute" msgid "Mute"
msgstr "Sesi Kapat" msgstr "Sesi Kapat"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:953 #: ../js/ui/components/telepathyClient.js:955
msgid "%H%M" msgid "%H%M"
msgstr "%H%M" msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */ #. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:960 #: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "Dün, %H%M" msgstr "Dün, %H%M"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */ #. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:967 #: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A, %H%M" msgstr "%A, %H%M"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */ #. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:974 #: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M" msgid "%B %d, %H%M"
msgstr "%d %B, %H%M" msgstr "%d %B, %H%M"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */ #. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:980 #: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M" msgid "%B %d %Y, %H%M"
msgstr "%d %B %Y, %H%M" msgstr "%d %B %Y, %H%M"
#. Translators: Time in 24h format */ #. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:986 #: ../js/ui/components/telepathyClient.js:988
msgid "%l%M %p" msgid "%l%M %p"
msgstr "%l%M %p" msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:993 #: ../js/ui/components/telepathyClient.js:995
msgid "Yesterday, %l%M %p" msgid "Yesterday, %l%M %p"
msgstr "Dün, %l%M %p" msgstr "Dün, %l%M %p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */ #. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1000 #: ../js/ui/components/telepathyClient.js:1002
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A, %l%M %p" msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */ #. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1007 #: ../js/ui/components/telepathyClient.js:1009
msgid "%B %d, %l%M %p" msgid "%B %d, %l%M %p"
msgstr "%d %B, %l%M %p" msgstr "%d %B, %l%M %p"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format. #. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/ #. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1013 #: ../js/ui/components/telepathyClient.js:1015
msgid "%B %d %Y, %l%M %p" msgid "%B %d %Y, %l%M %p"
msgstr "%d %B %Y, %l%M %p" msgstr "%d %B %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their #. Translators: this is the other person changing their old IM name to their
#. new #. new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:1045 #: ../js/ui/components/telepathyClient.js:1047
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s, şimdi %s olarak biliniyor" msgstr "%s, şimdi %s olarak biliniyor"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. */ #. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1149 #: ../js/ui/components/telepathyClient.js:1151
#, javascript-format #, javascript-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "%s'e Davet" msgstr "%s'e Davet"
@ -779,38 +783,38 @@ msgstr "%s'e Davet"
#. translators: first argument is the name of a contact and the second #. 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 #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */ #. * for example. */
#: ../js/ui/components/telepathyClient.js:1157 #: ../js/ui/components/telepathyClient.js:1159
#, javascript-format #, javascript-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s, sizi %s'e katılmanız için davet ediyor" msgstr "%s, sizi %s'e katılmanız için davet ediyor"
#: ../js/ui/components/telepathyClient.js:1159 #: ../js/ui/components/telepathyClient.js:1161
#: ../js/ui/components/telepathyClient.js:1194 #: ../js/ui/components/telepathyClient.js:1196
#: ../js/ui/components/telepathyClient.js:1228 #: ../js/ui/components/telepathyClient.js:1230
#: ../js/ui/components/telepathyClient.js:1286 #: ../js/ui/components/telepathyClient.js:1287
msgid "Decline" msgid "Decline"
msgstr "Reddet" msgstr "Reddet"
#: ../js/ui/components/telepathyClient.js:1165 #: ../js/ui/components/telepathyClient.js:1167
#: ../js/ui/components/telepathyClient.js:1234 #: ../js/ui/components/telepathyClient.js:1236
#: ../js/ui/components/telepathyClient.js:1291 #: ../js/ui/components/telepathyClient.js:1292
msgid "Accept" msgid "Accept"
msgstr "Kabul Et" msgstr "Kabul Et"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1184 #: ../js/ui/components/telepathyClient.js:1186
#, javascript-format #, javascript-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "%s'den görüntülü arama" msgstr "%s'den görüntülü arama"
#. translators: argument is a contact name like Alice for example. */ #. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1187 #: ../js/ui/components/telepathyClient.js:1189
#, javascript-format #, javascript-format
msgid "Call from %s" msgid "Call from %s"
msgstr "%s'den çağrı" msgstr "%s'den çağrı"
#. translators: this is a button label (verb), not a noun */ #. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1201 #: ../js/ui/components/telepathyClient.js:1203
msgid "Answer" msgid "Answer"
msgstr "Cevapla" msgstr "Cevapla"
@ -819,129 +823,129 @@ msgstr "Cevapla"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. */ #. */
#: ../js/ui/components/telepathyClient.js:1222 #: ../js/ui/components/telepathyClient.js:1224
#, javascript-format #, javascript-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s, size %s dosyasını gönderiyor" msgstr "%s, size %s dosyasını gönderiyor"
#. To translators: The parameter is the contact's alias */ #. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1251 #: ../js/ui/components/telepathyClient.js:1253
#, javascript-format #, javascript-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s, ne zaman çevrimiçi olduğunuzu görmek için izin istiyor" msgstr "%s, ne zaman çevrimiçi olduğunuzu görmek için izin istiyor"
#: ../js/ui/components/telepathyClient.js:1337 #: ../js/ui/components/telepathyClient.js:1338
msgid "Network error" msgid "Network error"
msgstr "Ağ hatası" msgstr "Ağ hatası"
#: ../js/ui/components/telepathyClient.js:1339 #: ../js/ui/components/telepathyClient.js:1340
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Kimlik doğrulama başarısız" msgstr "Kimlik doğrulama başarısız"
#: ../js/ui/components/telepathyClient.js:1341 #: ../js/ui/components/telepathyClient.js:1342
msgid "Encryption error" msgid "Encryption error"
msgstr "Şifreleme hatası" msgstr "Şifreleme hatası"
#: ../js/ui/components/telepathyClient.js:1343 #: ../js/ui/components/telepathyClient.js:1344
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Sertifika sağlanmamış" msgstr "Sertifika sağlanmamış"
#: ../js/ui/components/telepathyClient.js:1345 #: ../js/ui/components/telepathyClient.js:1346
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Sertifika güvenilmez" msgstr "Sertifika güvenilmez"
#: ../js/ui/components/telepathyClient.js:1347 #: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Sertifikanın süresi dolmuş" msgstr "Sertifikanın süresi dolmuş"
#: ../js/ui/components/telepathyClient.js:1349 #: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Sertifika etkinleştirilmemiş" msgstr "Sertifika etkinleştirilmemiş"
#: ../js/ui/components/telepathyClient.js:1351 #: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Sertifikanın makine adı uyuşmuyor" msgstr "Sertifikanın makine adı uyuşmuyor"
#: ../js/ui/components/telepathyClient.js:1353 #: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Sertifikanın parmak izi uyuşmuyor" msgstr "Sertifikanın parmak izi uyuşmuyor"
#: ../js/ui/components/telepathyClient.js:1355 #: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Sertifika kendinden-imzalı" msgstr "Sertifika kendinden-imzalı"
#: ../js/ui/components/telepathyClient.js:1357 #: ../js/ui/components/telepathyClient.js:1358
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Durum çevrimdıına ayarlı" msgstr "Durum çevrimdıına ayarlı"
#: ../js/ui/components/telepathyClient.js:1359 #: ../js/ui/components/telepathyClient.js:1360
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Şifreleme kullanılabilir değil" msgstr "Şifreleme kullanılabilir değil"
#: ../js/ui/components/telepathyClient.js:1361 #: ../js/ui/components/telepathyClient.js:1362
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Sertifika geçersiz" msgstr "Sertifika geçersiz"
#: ../js/ui/components/telepathyClient.js:1363 #: ../js/ui/components/telepathyClient.js:1364
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Bağlantı reddedildi" msgstr "Bağlantı reddedildi"
#: ../js/ui/components/telepathyClient.js:1365 #: ../js/ui/components/telepathyClient.js:1366
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Bağlantı kurulamıyor" msgstr "Bağlantı kurulamıyor"
#: ../js/ui/components/telepathyClient.js:1367 #: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Bağlantı koptu" msgstr "Bağlantı koptu"
#: ../js/ui/components/telepathyClient.js:1369 #: ../js/ui/components/telepathyClient.js:1370
msgid "This account is already connected to the server" msgid "This account is already connected to the server"
msgstr "Bu hesap zaten sunucuya bağlı" msgstr "Bu hesap zaten sunucuya bağlı"
#: ../js/ui/components/telepathyClient.js:1371 #: ../js/ui/components/telepathyClient.js:1372
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "Bağlantı, aynı kaynağı kullanan yeni bir bağlantı ile değiştirildi" msgstr "Bağlantı, aynı kaynağı kullanan yeni bir bağlantı ile değiştirildi"
#: ../js/ui/components/telepathyClient.js:1373 #: ../js/ui/components/telepathyClient.js:1374
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Sunucuda böyle bir hesap zaten var" msgstr "Sunucuda böyle bir hesap zaten var"
#: ../js/ui/components/telepathyClient.js:1375 #: ../js/ui/components/telepathyClient.js:1376
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "Sunucu, şu anda bağlantıyı işleyemeyecek kadar meşgul" msgstr "Sunucu, şu anda bağlantıyı işleyemeyecek kadar meşgul"
#: ../js/ui/components/telepathyClient.js:1377 #: ../js/ui/components/telepathyClient.js:1378
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Sertifika hükümsüz kılınmış" msgstr "Sertifika hükümsüz kılınmış"
#: ../js/ui/components/telepathyClient.js:1379 #: ../js/ui/components/telepathyClient.js:1380
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "Sertifika güvensiz bir şifreleme algoritması kullanıyor ya da kriptografik olarak zayıf" msgstr "Sertifika güvensiz bir şifreleme algoritması kullanıyor ya da kriptografik olarak zayıf"
#: ../js/ui/components/telepathyClient.js:1381 #: ../js/ui/components/telepathyClient.js:1382
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate" "The length of the server certificate, or the depth of the server certificate"
" chain, exceed the limits imposed by the cryptography library" " chain, exceed the limits imposed by the cryptography library"
msgstr "Sunucu sertifikasının uzunluğu ya da sunucu sertifikası zincirinin derinliği, şifreleme kütüphanesi tarafından koyulan sınırlarııyor" msgstr "Sunucu sertifikasının uzunluğu ya da sunucu sertifikası zincirinin derinliği, şifreleme kütüphanesi tarafından koyulan sınırlarııyor"
#: ../js/ui/components/telepathyClient.js:1383 #: ../js/ui/components/telepathyClient.js:1384
msgid "Internal error" msgid "Internal error"
msgstr "İç hata" msgstr "İç hata"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. */ #. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1393 #: ../js/ui/components/telepathyClient.js:1394
#, javascript-format #, javascript-format
msgid "Unable to connect to %s" msgid "Unable to connect to %s"
msgstr "%s bağlantısı sağlanamadı" msgstr "%s bağlantısı sağlanamadı"
#: ../js/ui/components/telepathyClient.js:1398 #: ../js/ui/components/telepathyClient.js:1399
msgid "View account" msgid "View account"
msgstr "Hesabı göster" msgstr "Hesabı göster"
#: ../js/ui/components/telepathyClient.js:1435 #: ../js/ui/components/telepathyClient.js:1436
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Bilinmeyen sebep" msgstr "Bilinmeyen sebep"
@ -957,15 +961,15 @@ msgstr "Uygulamaları Göster"
msgid "Dash" msgid "Dash"
msgstr "Konsol" msgstr "Konsol"
#: ../js/ui/dateMenu.js:96 #: ../js/ui/dateMenu.js:97
msgid "Open Calendar" msgid "Open Calendar"
msgstr "Takvimi Aç" msgstr "Takvimi Aç"
#: ../js/ui/dateMenu.js:100 #: ../js/ui/dateMenu.js:101
msgid "Open Clocks" msgid "Open Clocks"
msgstr "Saati Aç" msgstr "Saati Aç"
#: ../js/ui/dateMenu.js:107 #: ../js/ui/dateMenu.js:108
msgid "Date & Time Settings" msgid "Date & Time Settings"
msgstr "Tarih ve Saat Ayarları" msgstr "Tarih ve Saat Ayarları"
@ -973,9 +977,9 @@ msgstr "Tarih ve Saat Ayarları"
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29
#. AM"). #. AM").
#. */ #. */
#: ../js/ui/dateMenu.js:204 #: ../js/ui/dateMenu.js:132
msgid "%A %B %e, %Y" msgid "%A %B %e, %Y"
msgstr "%e %B %A, %Y" msgstr "%e %B %Y %A"
#: ../js/ui/endSessionDialog.js:64 #: ../js/ui/endSessionDialog.js:64
#, javascript-format #, javascript-format
@ -1108,7 +1112,7 @@ msgstr "Kur"
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "extensions.gnome.org adresinden “%s” indirilip kurulsun mu?" msgstr "extensions.gnome.org adresinden “%s” indirilip kurulsun mu?"
#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523 #: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:539
msgid "Keyboard" msgid "Keyboard"
msgstr "Klavye" msgstr "Klavye"
@ -1164,53 +1168,54 @@ msgstr "Kaynağı Görüntüle"
msgid "Web Page" msgid "Web Page"
msgstr "Web Sayfası" msgstr "Web Sayfası"
#: ../js/ui/messageTray.js:1326 #: ../js/ui/messageTray.js:1332
msgid "Open" msgid "Open"
msgstr "Aç" msgstr "Aç"
#: ../js/ui/messageTray.js:1333 #: ../js/ui/messageTray.js:1339
msgid "Remove" msgid "Remove"
msgstr "Sil" msgstr "Sil"
#: ../js/ui/messageTray.js:1630 #: ../js/ui/messageTray.js:1636
msgid "Notifications" msgid "Notifications"
msgstr "Bildirimler" msgstr "Bildirimler"
#: ../js/ui/messageTray.js:1637 #: ../js/ui/messageTray.js:1643
msgid "Clear Messages" msgid "Clear Messages"
msgstr "Mesajları Temizle" msgstr "Mesajları Temizle"
#: ../js/ui/messageTray.js:1656 #: ../js/ui/messageTray.js:1662
msgid "Notification Settings" msgid "Notification Settings"
msgstr "Bildirim Ayarları" msgstr "Bildirim Ayarları"
#: ../js/ui/messageTray.js:1709 #: ../js/ui/messageTray.js:1715
msgid "Tray Menu" msgid "Tray Menu"
msgstr "Tepsi Menüsü" msgstr "Tepsi Menüsü"
#: ../js/ui/messageTray.js:1926 #: ../js/ui/messageTray.js:1939
msgid "No Messages" msgid "No Messages"
msgstr "Mesaj Yok" msgstr "Mesaj Yok"
#: ../js/ui/messageTray.js:1968 #: ../js/ui/messageTray.js:1984
msgid "Message Tray" msgid "Message Tray"
msgstr "Mesaj Tepsisi" msgstr "Mesaj Tepsisi"
#: ../js/ui/messageTray.js:2971 #: ../js/ui/messageTray.js:2441 ../js/ui/overviewControls.js:483
msgid "System Information" #: ../js/ui/screenShield.js:152
msgstr "Sistem Bilgisi"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425
msgctxt "program"
msgid "Unknown"
msgstr "Bilinmeyen"
#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151
#, javascript-format #, javascript-format
msgid "%d new message" msgid "%d new message"
msgid_plural "%d new messages" msgid_plural "%d new messages"
msgstr[0] "%d yeni mesaj" msgstr[0] "%d yeni mesaj"
#: ../js/ui/messageTray.js:3011
msgid "System Information"
msgstr "Sistem Bilgisi"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:439
msgctxt "program"
msgid "Unknown"
msgstr "Bilinmeyen"
#: ../js/ui/overview.js:84 #: ../js/ui/overview.js:84
msgid "Undo" msgid "Undo"
msgstr "Geri Al" msgstr "Geri Al"
@ -1227,17 +1232,17 @@ msgstr "Genel Görünüm"
msgid "Type to search…" msgid "Type to search…"
msgstr "Aramak için buraya yazın..." msgstr "Aramak için buraya yazın..."
#: ../js/ui/panel.js:515 #: ../js/ui/panel.js:521
msgid "Quit" msgid "Quit"
msgstr "Kapat" msgstr "Kapat"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */ #. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:567 #: ../js/ui/panel.js:573
msgid "Activities" msgid "Activities"
msgstr "Etkinlikler" msgstr "Etkinlikler"
#: ../js/ui/panel.js:918 #: ../js/ui/panel.js:924
msgid "Top Bar" msgid "Top Bar"
msgstr "Tepe Çubuğu" msgstr "Tepe Çubuğu"
@ -1261,35 +1266,35 @@ msgstr "Yeniden başlatılıyor..."
#. long format */ #. long format */
#: ../js/ui/screenShield.js:88 #: ../js/ui/screenShield.js:88
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%d %B, %A" msgstr "%d %B %A"
#: ../js/ui/screenShield.js:153 #: ../js/ui/screenShield.js:154
#, javascript-format #, javascript-format
msgid "%d new notification" msgid "%d new notification"
msgid_plural "%d new notifications" msgid_plural "%d new notifications"
msgstr[0] "%d yeni bildirim" msgstr[0] "%d yeni bildirim"
#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 #: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345
msgid "Lock" msgid "Lock"
msgstr "Kilitle" msgstr "Kilitle"
#: ../js/ui/screenShield.js:706 #: ../js/ui/screenShield.js:709
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME'un ekranı kilitlemesi gerekiyor" msgstr "GNOME'un ekranı kilitlemesi gerekiyor"
#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 #: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Kilitlenemedi" msgstr "Kilitlenemedi"
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 #: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Kilitleme bir uygulama tarafından engellendi" msgstr "Kilitleme bir uygulama tarafından engellendi"
#: ../js/ui/search.js:594 #: ../js/ui/search.js:611
msgid "Searching…" msgid "Searching…"
msgstr "Aranıyor…" msgstr "Aranıyor…"
#: ../js/ui/search.js:596 #: ../js/ui/search.js:613
msgid "No results." msgid "No results."
msgstr "Sonuç yok." msgstr "Sonuç yok."
@ -1366,9 +1371,9 @@ msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178 #: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1281 #: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1282
#: ../js/ui/status/network.js:1392 ../js/ui/status/rfkill.js:86 #: ../js/ui/status/network.js:1393 ../js/ui/status/rfkill.js:91
#: ../js/ui/status/rfkill.js:114 #: ../js/ui/status/rfkill.js:118
msgid "Turn Off" msgid "Turn Off"
msgstr "Kapat" msgstr "Kapat"
@ -1382,7 +1387,7 @@ msgid "%d Connected Device"
msgid_plural "%d Connected Devices" msgid_plural "%d Connected Devices"
msgstr[0] "%d Bağlı Cihaz" msgstr[0] "%d Bağlı Cihaz"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309 #: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1310
msgid "Not Connected" msgid "Not Connected"
msgstr "Bağlı Değil" msgstr "Bağlı Değil"
@ -1390,7 +1395,7 @@ msgstr "Bağlı Değil"
msgid "Brightness" msgid "Brightness"
msgstr "Parlaklık" msgstr "Parlaklık"
#: ../js/ui/status/keyboard.js:547 #: ../js/ui/status/keyboard.js:563
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Klavye Düzenini Göster" msgstr "Klavye Düzenini Göster"
@ -1418,8 +1423,8 @@ msgstr "Etkinleştir"
msgid "<unknown>" msgid "<unknown>"
msgstr "<bilinmeyen>" msgstr "<bilinmeyen>"
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307 #: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1308
#: ../js/ui/status/network.js:1511 #: ../js/ui/status/network.js:1512
msgid "Off" msgid "Off"
msgstr "Kapalı" msgstr "Kapalı"
@ -1438,7 +1443,7 @@ msgstr "Yönetilmeyen"
msgid "Disconnecting" msgid "Disconnecting"
msgstr "Bağlantı Kesiliyor" msgstr "Bağlantı Kesiliyor"
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301 #: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1302
msgid "Connecting" msgid "Connecting"
msgstr "Bağlantı Kuruluyor" msgstr "Bağlantı Kuruluyor"
@ -1462,7 +1467,7 @@ msgstr "Ürün Bilgisi eksik"
msgid "Unavailable" msgid "Unavailable"
msgstr "Kullanılamaz" msgstr "Kullanılamaz"
#: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1695 #: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1696
msgid "Connection failed" msgid "Connection failed"
msgstr "Bağlantı başarısız oldu" msgstr "Bağlantı başarısız oldu"
@ -1474,7 +1479,7 @@ msgstr "Kablolu Ağ Ayarları"
msgid "Mobile Broadband Settings" msgid "Mobile Broadband Settings"
msgstr "Mobil Geniş Bant Ayarları" msgstr "Mobil Geniş Bant Ayarları"
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305 #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1306
msgid "Hardware Disabled" msgid "Hardware Disabled"
msgstr "Donanım Devre Dışı" msgstr "Donanım Devre Dışı"
@ -1514,61 +1519,61 @@ msgstr "Kablosuz Ağlar"
msgid "Select a network" msgid "Select a network"
msgstr "Bir ağ seçin" msgstr "Bir ağ seçin"
#: ../js/ui/status/network.js:882 #: ../js/ui/status/network.js:883
msgid "No Networks" msgid "No Networks"
msgstr "Ağ Yok" msgstr "Ağ Yok"
#: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112 #: ../js/ui/status/network.js:904 ../js/ui/status/rfkill.js:116
msgid "Use hardware switch to turn off" msgid "Use hardware switch to turn off"
msgstr "Kapatmak için donanım anahtarını kullanın." msgstr "Kapatmak için donanım anahtarını kullanın."
#: ../js/ui/status/network.js:1173 #: ../js/ui/status/network.js:1174
msgid "Select Network" msgid "Select Network"
msgstr "Ağ Seç" msgstr "Ağ Seç"
#: ../js/ui/status/network.js:1179 #: ../js/ui/status/network.js:1180
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Kablosuz Ağ Ayarları" msgstr "Kablosuz Ağ Ayarları"
#: ../js/ui/status/network.js:1281 #: ../js/ui/status/network.js:1282
msgid "Turn On" msgid "Turn On"
msgstr "Aç" msgstr "Aç"
#: ../js/ui/status/network.js:1298 #: ../js/ui/status/network.js:1299
msgid "Hotspot Active" msgid "Hotspot Active"
msgstr "Hotspot Etkin" msgstr "Hotspot Etkin"
#: ../js/ui/status/network.js:1409 #: ../js/ui/status/network.js:1410
msgid "connecting..." msgid "connecting..."
msgstr "bağlanıyor..." msgstr "bağlanıyor..."
#. Translators: this is for network connections that require some kind of key #. Translators: this is for network connections that require some kind of key
#. or password */ #. or password */
#: ../js/ui/status/network.js:1412 #: ../js/ui/status/network.js:1413
msgid "authentication required" msgid "authentication required"
msgstr "kimlik doğrulaması gerekli" msgstr "kimlik doğrulaması gerekli"
#: ../js/ui/status/network.js:1414 #: ../js/ui/status/network.js:1415
msgid "connection failed" msgid "connection failed"
msgstr "bağlantı başarısız" msgstr "bağlantı başarısız"
#: ../js/ui/status/network.js:1480 ../js/ui/status/rfkill.js:89 #: ../js/ui/status/network.js:1481 ../js/ui/status/rfkill.js:94
msgid "Network Settings" msgid "Network Settings"
msgstr "Ağ Ayarları" msgstr "Ağ Ayarları"
#: ../js/ui/status/network.js:1482 #: ../js/ui/status/network.js:1483
msgid "VPN Settings" msgid "VPN Settings"
msgstr "VPN Ayarları" msgstr "VPN Ayarları"
#: ../js/ui/status/network.js:1501 #: ../js/ui/status/network.js:1502
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1656 #: ../js/ui/status/network.js:1657
msgid "Network Manager" msgid "Network Manager"
msgstr "Ağ Yöneticisi" msgstr "Ağ Yöneticisi"
#: ../js/ui/status/network.js:1696 #: ../js/ui/status/network.js:1697
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Ağ bağlantısının etkinleştirilmesi başarısız oldu" msgstr "Ağ bağlantısının etkinleştirilmesi başarısız oldu"
@ -1602,11 +1607,11 @@ msgstr "UPS"
msgid "Battery" msgid "Battery"
msgstr "Pil" msgstr "Pil"
#: ../js/ui/status/rfkill.js:83 #: ../js/ui/status/rfkill.js:88
msgid "Airplane Mode" msgid "Airplane Mode"
msgstr "Uçak Kipi" msgstr "Uçak Kipi"
#: ../js/ui/status/rfkill.js:85 #: ../js/ui/status/rfkill.js:90
msgid "On" msgid "On"
msgstr "Açık" msgstr "Açık"
@ -1764,7 +1769,7 @@ msgstr "Oturum açma için -\"gdm\" gibi- özel bir kip kullan"
msgid "List possible modes" msgid "List possible modes"
msgstr "Mevcut kipleri listele" msgstr "Mevcut kipleri listele"
#: ../src/shell-app.c:666 #: ../src/shell-app.c:680
#, c-format #, c-format
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "“%s” başlatılamadı" msgstr "“%s” başlatılamadı"

View File

@ -99,7 +99,7 @@ shell_public_headers_h = \
shell-gtk-embed.h \ shell-gtk-embed.h \
shell-global.h \ shell-global.h \
shell-invert-lightness-effect.h \ shell-invert-lightness-effect.h \
shell-keybinding-modes.h \ shell-action-modes.h \
shell-mount-operation.h \ shell-mount-operation.h \
shell-perf-log.h \ shell-perf-log.h \
shell-screenshot.h \ shell-screenshot.h \

View File

@ -176,18 +176,54 @@ static void
calendar_sources_init (CalendarSources *sources) calendar_sources_init (CalendarSources *sources)
{ {
GError *error = NULL; GError *error = NULL;
GDBusConnection *session_bus;
GVariant *result;
sources->priv = CALENDAR_SOURCES_GET_PRIVATE (sources); sources->priv = CALENDAR_SOURCES_GET_PRIVATE (sources);
/* XXX Not sure what to do if this fails. /* WORKAROUND: the hardcoded timeout for e_source_registry_new_sync()
* Should this class implement GInitable or pass the (and other library calls that eventually call g_dbus_proxy_new[_sync]())
* registry in as a G_PARAM_CONSTRUCT_ONLY property? */ is 25 seconds. This has been shown to be too small for
evolution-source-registry in certain cases (slow disk, concurrent IO,
many configured sources), so we first ensure that the service
starts with a manual call and a higher timeout.
HACK: every time the DBus API is bumped in e-d-s we need
to update this!
*/
session_bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
if (session_bus == NULL)
{
g_error ("Failed to connect to the session bus: %s", error->message);
}
result = g_dbus_connection_call_sync (session_bus, "org.freedesktop.DBus",
"/", "org.freedesktop.DBus",
"StartServiceByName",
g_variant_new ("(su)",
"org.gnome.evolution.dataserver.Sources3",
0),
NULL,
G_DBUS_CALL_FLAGS_NONE,
60 * 1000,
NULL, &error);
if (result != NULL)
{
g_variant_unref (result);
sources->priv->registry = e_source_registry_new_sync (NULL, &error); sources->priv->registry = e_source_registry_new_sync (NULL, &error);
}
if (error != NULL) if (error != NULL)
{ {
g_error ("%s: %s", G_STRFUNC, error->message); /* Any error is fatal, but we don't want to crash gnome-shell-calendar-server
because of e-d-s problems. So just exit here.
*/
g_warning ("Failed to start evolution-source-registry: %s", error->message);
exit(EXIT_FAILURE);
} }
g_object_unref (session_bus);
sources->priv->source_added_id = g_signal_connect (sources->priv->registry, sources->priv->source_added_id = g_signal_connect (sources->priv->registry,
"source-added", "source-added",
G_CALLBACK (calendar_sources_registry_source_changed_cb), G_CALLBACK (calendar_sources_registry_source_changed_cb),

39
src/shell-action-modes.h Normal file
View File

@ -0,0 +1,39 @@
/**
* ShellActionMode:
* @SHELL_ACTION_MODE_NONE: block action
* @SHELL_ACTION_MODE_NORMAL: allow action when in window mode,
* e.g. when the focus is in an application window
* @SHELL_ACTION_MODE_OVERVIEW: allow action while the overview
* is active
* @SHELL_ACTION_MODE_LOCK_SCREEN: allow action when the screen
* is locked, e.g. when the screen shield is shown
* @SHELL_ACTION_MODE_UNLOCK_SCREEN: allow action in the unlock
* dialog
* @SHELL_ACTION_MODE_LOGIN_SCREEN: allow action in the login screen
* @SHELL_ACTION_MODE_MESSAGE_TRAY: allow action while the message
* tray is popped up
* @SHELL_ACTION_MODE_SYSTEM_MODAL: allow action when a system modal
* dialog (e.g. authentification or session dialogs) is open
* @SHELL_ACTION_MODE_LOOKING_GLASS: allow action in looking glass
* @SHELL_ACTION_MODE_TOPBAR_POPUP: allow action while a top bar menu
* is open
* @SHELL_ACTION_MODE_ALL: always allow action
*
* Controls in which GNOME Shell states an action (like keybindings and gestures)
* should be handled.
*/
typedef enum {
SHELL_ACTION_MODE_NONE = 0,
SHELL_ACTION_MODE_NORMAL = 1 << 0,
SHELL_ACTION_MODE_OVERVIEW = 1 << 1,
SHELL_ACTION_MODE_LOCK_SCREEN = 1 << 2,
SHELL_ACTION_MODE_UNLOCK_SCREEN = 1 << 3,
SHELL_ACTION_MODE_LOGIN_SCREEN = 1 << 4,
SHELL_ACTION_MODE_MESSAGE_TRAY = 1 << 5,
SHELL_ACTION_MODE_SYSTEM_MODAL = 1 << 6,
SHELL_ACTION_MODE_LOOKING_GLASS = 1 << 7,
SHELL_ACTION_MODE_TOPBAR_POPUP = 1 << 8,
SHELL_ACTION_MODE_ALL = ~0,
} ShellActionMode;

View File

@ -189,7 +189,7 @@ window_backed_app_get_icon (ShellApp *app,
} }
window = window_backed_app_get_window (app); window = window_backed_app_get_window (app);
actor = st_texture_cache_bind_pixbuf_property (st_texture_cache_get_default (), actor = st_texture_cache_bind_cairo_surface_property (st_texture_cache_get_default (),
G_OBJECT (window), G_OBJECT (window),
"icon"); "icon");
g_object_set (actor, "width", (float) size, "height", (float) size, NULL); g_object_set (actor, "width", (float) size, "height", (float) size, NULL);
@ -209,27 +209,23 @@ shell_app_create_icon_texture (ShellApp *app,
int size) int size)
{ {
GIcon *icon; GIcon *icon;
gint scale;
ClutterActor *ret; ClutterActor *ret;
ShellGlobal *global;
StThemeContext *context;
global = shell_global_get ();
context = st_theme_context_get_for_stage (shell_global_get_stage (global));
g_object_get (context, "scale-factor", &scale, NULL);
ret = NULL;
if (app->info == NULL) if (app->info == NULL)
return window_backed_app_get_icon (app, size); return window_backed_app_get_icon (app, size);
ret = st_icon_new ();
st_icon_set_icon_size (ST_ICON (ret), size);
icon = g_app_info_get_icon (G_APP_INFO (app->info)); icon = g_app_info_get_icon (G_APP_INFO (app->info));
if (icon != NULL) if (icon != NULL)
ret = st_texture_cache_load_gicon (st_texture_cache_get_default (), NULL, icon, size, scale); {
st_icon_set_gicon (ST_ICON (ret), icon);
if (ret == NULL) }
else
{ {
icon = g_themed_icon_new ("application-x-executable"); icon = g_themed_icon_new ("application-x-executable");
ret = st_texture_cache_load_gicon (st_texture_cache_get_default (), NULL, icon, size, scale); st_icon_set_gicon (ST_ICON (ret), icon);
g_object_unref (icon); g_object_unref (icon);
} }
@ -241,6 +237,7 @@ typedef struct {
int size; int size;
int scale; int scale;
ClutterTextDirection direction; ClutterTextDirection direction;
StThemeNode *theme_node;
} CreateFadedIconData; } CreateFadedIconData;
static CoglHandle static CoglHandle
@ -268,19 +265,28 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
guint8 *pixels; guint8 *pixels;
GIcon *icon; GIcon *icon;
GtkIconInfo *info; GtkIconInfo *info;
GtkIconLookupFlags lookup_flags;
StIconStyle icon_style;
app = data->app; app = data->app;
size = data->size; size = data->size;
scale = data->scale; scale = data->scale;
icon_style = st_theme_node_get_icon_style (data->theme_node);
info = NULL; info = NULL;
lookup_flags = GTK_ICON_LOOKUP_FORCE_SIZE;
if (icon_style == ST_ICON_STYLE_REGULAR)
lookup_flags |= GTK_ICON_LOOKUP_FORCE_REGULAR;
else if (icon_style == ST_ICON_STYLE_SYMBOLIC)
lookup_flags |= GTK_ICON_LOOKUP_FORCE_SYMBOLIC;
icon = g_app_info_get_icon (G_APP_INFO (app->info)); icon = g_app_info_get_icon (G_APP_INFO (app->info));
if (icon != NULL) if (icon != NULL)
{ {
info = gtk_icon_theme_lookup_by_gicon_for_scale (gtk_icon_theme_get_default (), info = gtk_icon_theme_lookup_by_gicon_for_scale (gtk_icon_theme_get_default (),
icon, size, scale, icon, size, scale,
GTK_ICON_LOOKUP_FORCE_SIZE); lookup_flags);
} }
if (info == NULL) if (info == NULL)
@ -288,7 +294,7 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
icon = g_themed_icon_new ("application-x-executable"); icon = g_themed_icon_new ("application-x-executable");
info = gtk_icon_theme_lookup_by_gicon_for_scale (gtk_icon_theme_get_default (), info = gtk_icon_theme_lookup_by_gicon_for_scale (gtk_icon_theme_get_default (),
icon, size, scale, icon, size, scale,
GTK_ICON_LOOKUP_FORCE_SIZE); lookup_flags);
g_object_unref (icon); g_object_unref (icon);
} }
@ -395,6 +401,7 @@ shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection directio
data.size = size; data.size = size;
data.scale = scale; data.scale = scale;
data.direction = direction; data.direction = direction;
data.theme_node = st_theme_context_get_root_node (context);
texture = st_texture_cache_load (st_texture_cache_get_default (), texture = st_texture_cache_load (st_texture_cache_get_default (),
cache_key, cache_key,
ST_TEXTURE_CACHE_POLICY_FOREVER, ST_TEXTURE_CACHE_POLICY_FOREVER,
@ -1293,24 +1300,6 @@ shell_app_request_quit (ShellApp *app)
return TRUE; return TRUE;
} }
static void
_gather_pid_callback (GDesktopAppInfo *gapp,
GPid pid,
gpointer data)
{
ShellApp *app;
ShellWindowTracker *tracker;
g_return_if_fail (data != NULL);
app = SHELL_APP (data);
tracker = shell_window_tracker_get_default ();
_shell_window_tracker_add_child_process_app (tracker,
pid,
app);
}
#ifdef HAVE_SYSTEMD #ifdef HAVE_SYSTEMD
/* This sets up the launched application to log to the journal /* This sets up the launched application to log to the journal
* using its own identifier, instead of just "gnome-session". * using its own identifier, instead of just "gnome-session".
@ -1362,13 +1351,13 @@ shell_app_launch (ShellApp *app,
ret = g_desktop_app_info_launch_uris_as_manager (app->info, NULL, ret = g_desktop_app_info_launch_uris_as_manager (app->info, NULL,
context, context,
G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, G_SPAWN_SEARCH_PATH,
#ifdef HAVE_SYSTEMD #ifdef HAVE_SYSTEMD
app_child_setup, (gpointer)shell_app_get_id (app), app_child_setup, (gpointer)shell_app_get_id (app),
#else #else
NULL, NULL, NULL, NULL,
#endif #endif
_gather_pid_callback, app, NULL, NULL,
error); error);
g_object_unref (context); g_object_unref (context);

View File

@ -1,38 +0,0 @@
/**
* ShellKeyBindingMode:
* @SHELL_KEYBINDING_MODE_NONE: block keybinding
* @SHELL_KEYBINDING_MODE_NORMAL: allow keybinding when in window mode,
* e.g. when the focus is in an application window
* @SHELL_KEYBINDING_MODE_OVERVIEW: allow keybinding while the overview
* is active
* @SHELL_KEYBINDING_MODE_LOCK_SCREEN: allow keybinding when the screen
* is locked, e.g. when the screen shield is shown
* @SHELL_KEYBINDING_MODE_UNLOCK_SCREEN: allow keybinding in the unlock
* dialog
* @SHELL_KEYBINDING_MODE_LOGIN_SCREEN: allow keybinding in the login screen
* @SHELL_KEYBINDING_MODE_MESSAGE_TRAY: allow keybinding while the message
* tray is popped up
* @SHELL_KEYBINDING_MODE_SYSTEM_MODAL: allow keybinding when a system modal
* dialog (e.g. authentification or session dialogs) is open
* @SHELL_KEYBINDING_MODE_LOOKING_GLASS: allow keybinding in looking glass
* @SHELL_KEYBINDING_MODE_TOPBAR_POPUP: allow keybinding while a top bar menu
* is open
* @SHELL_KEYBINDING_MODE_ALL: always allow keybinding
*
* Controls in which GNOME Shell states a keybinding should be handled.
*/
typedef enum {
SHELL_KEYBINDING_MODE_NONE = 0,
SHELL_KEYBINDING_MODE_NORMAL = 1 << 0,
SHELL_KEYBINDING_MODE_OVERVIEW = 1 << 1,
SHELL_KEYBINDING_MODE_LOCK_SCREEN = 1 << 2,
SHELL_KEYBINDING_MODE_UNLOCK_SCREEN = 1 << 3,
SHELL_KEYBINDING_MODE_LOGIN_SCREEN = 1 << 4,
SHELL_KEYBINDING_MODE_MESSAGE_TRAY = 1 << 5,
SHELL_KEYBINDING_MODE_SYSTEM_MODAL = 1 << 6,
SHELL_KEYBINDING_MODE_LOOKING_GLASS = 1 << 7,
SHELL_KEYBINDING_MODE_TOPBAR_POPUP = 1 << 8,
SHELL_KEYBINDING_MODE_ALL = ~0,
} ShellKeyBindingMode;

View File

@ -156,7 +156,7 @@ G_DEFINE_TYPE(ShellRecorder, shell_recorder, G_TYPE_OBJECT);
* (Theora does have some support for frames at non-uniform times, but * (Theora does have some support for frames at non-uniform times, but
* things seem to break down if there are large gaps.) * things seem to break down if there are large gaps.)
*/ */
#define DEFAULT_PIPELINE "vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux" #define DEFAULT_PIPELINE "vp9enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux"
/* If we can find the amount of memory on the machine, we use half /* If we can find the amount of memory on the machine, we use half
* of that for memory_target, otherwise, we use this value, in kB. * of that for memory_target, otherwise, we use this value, in kB.
@ -437,12 +437,12 @@ recorder_record_frame (ShellRecorder *recorder)
size = recorder->area.width * recorder->area.height * 4; size = recorder->area.width * recorder->area.height * 4;
data = g_malloc (recorder->area.width * 4 * recorder->area.height); data = g_malloc (size);
cogl_read_pixels (recorder->area.x, cogl_framebuffer_read_pixels (cogl_get_draw_framebuffer (),
recorder->area.x,
recorder->area.y, recorder->area.y,
recorder->area.width, recorder->area.width,
recorder->area.height, recorder->area.height,
COGL_READ_PIXELS_COLOR_BUFFER,
CLUTTER_CAIRO_FORMAT_ARGB32, CLUTTER_CAIRO_FORMAT_ARGB32,
data); data);
@ -1261,7 +1261,7 @@ recorder_pipeline_closed (RecorderPipeline *pipeline)
/* /*
* Replaces '%T' in the passed pipeline with the thread count, * Replaces '%T' in the passed pipeline with the thread count,
* the maximum possible value is 64 (limit of what vp8enc supports) * the maximum possible value is 64 (limit of what vp9enc supports)
* *
* It is assumes that %T occurs only once. * It is assumes that %T occurs only once.
*/ */
@ -1291,7 +1291,7 @@ substitute_thread_count (const char *pipeline)
g_string_append_printf (result, "%d", n_threads); g_string_append_printf (result, "%d", n_threads);
g_string_append (result, tmp + 2); g_string_append (result, tmp + 2);
return g_string_free (result, FALSE);; return g_string_free (result, FALSE);
} }
static gboolean static gboolean
@ -1303,7 +1303,7 @@ recorder_open_pipeline (ShellRecorder *recorder)
GError *error = NULL; GError *error = NULL;
GstBus *bus; GstBus *bus;
pipeline = g_new0(RecorderPipeline, 1); pipeline = g_new0 (RecorderPipeline, 1);
pipeline->recorder = g_object_ref (recorder); pipeline->recorder = g_object_ref (recorder);
pipeline->outfile = - 1; pipeline->outfile = - 1;
@ -1459,7 +1459,7 @@ shell_recorder_set_draw_cursor (ShellRecorder *recorder,
* might be used to send the output to an icecast server * might be used to send the output to an icecast server
* via shout2send or similar. * via shout2send or similar.
* *
* The default value is 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' * The default value is 'vp9enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux'
*/ */
void void
shell_recorder_set_pipeline (ShellRecorder *recorder, shell_recorder_set_pipeline (ShellRecorder *recorder,

View File

@ -37,6 +37,7 @@ struct _ShellScreenshotPrivate
cairo_rectangle_int_t screenshot_area; cairo_rectangle_int_t screenshot_area;
gboolean include_cursor; gboolean include_cursor;
gboolean include_frame;
ShellScreenshotCallback callback; ShellScreenshotCallback callback;
}; };
@ -73,6 +74,8 @@ on_screenshot_written (GObject *source,
g_clear_pointer (&priv->image, cairo_surface_destroy); g_clear_pointer (&priv->image, cairo_surface_destroy);
g_clear_pointer (&priv->filename, g_free); g_clear_pointer (&priv->filename, g_free);
g_clear_pointer (&priv->filename_used, g_free); g_clear_pointer (&priv->filename_used, g_free);
meta_enable_unredirect_for_screen (shell_global_get_screen (priv->global));
} }
/* called in an I/O thread */ /* called in an I/O thread */
@ -407,6 +410,56 @@ grab_area_screenshot (ClutterActor *stage,
g_object_unref (result); g_object_unref (result);
} }
static void
grab_window_screenshot (ClutterActor *stage,
ShellScreenshot *screenshot)
{
ShellScreenshotPrivate *priv = screenshot->priv;
GSimpleAsyncResult *result;
GSettings *settings;
MetaScreen *screen = shell_global_get_screen (priv->global);
MetaCursorTracker *tracker;
MetaDisplay *display = meta_screen_get_display (screen);
MetaWindow *window = meta_display_get_focus_window (display);
ClutterActor *window_actor;
gfloat actor_x, actor_y;
MetaShapedTexture *stex;
MetaRectangle rect;
cairo_rectangle_int_t clip;
window_actor = CLUTTER_ACTOR (meta_window_get_compositor_private (window));
clutter_actor_get_position (window_actor, &actor_x, &actor_y);
meta_window_get_frame_rect (window, &rect);
if (!priv->include_frame)
meta_window_frame_rect_to_client_rect (window, &rect, &rect);
priv->screenshot_area.x = rect.x;
priv->screenshot_area.y = rect.y;
clip.x = rect.x - (gint) actor_x;
clip.y = rect.y - (gint) actor_y;
clip.width = priv->screenshot_area.width = rect.width;
clip.height = priv->screenshot_area.height = rect.height;
stex = META_SHAPED_TEXTURE (meta_window_actor_get_texture (META_WINDOW_ACTOR (window_actor)));
priv->image = meta_shaped_texture_get_image (stex, &clip);
settings = g_settings_new (A11Y_APPS_SCHEMA);
if (priv->include_cursor && !g_settings_get_boolean (settings, MAGNIFIER_ACTIVE_KEY))
{
tracker = meta_cursor_tracker_get_for_screen (screen);
_draw_cursor_image (tracker, priv->image, priv->screenshot_area);
}
g_object_unref (settings);
g_signal_handlers_disconnect_by_func (stage, (void *)grab_window_screenshot, (gpointer)screenshot);
result = g_simple_async_result_new (G_OBJECT (screenshot), on_screenshot_written, NULL, grab_window_screenshot);
g_simple_async_result_run_in_thread (result, write_screenshot_thread, G_PRIORITY_DEFAULT, NULL);
g_object_unref (result);
}
/** /**
* shell_screenshot_screenshot: * shell_screenshot_screenshot:
* @screenshot: the #ShellScreenshot * @screenshot: the #ShellScreenshot
@ -440,6 +493,8 @@ shell_screenshot_screenshot (ShellScreenshot *screenshot,
stage = CLUTTER_ACTOR (shell_global_get_stage (priv->global)); stage = CLUTTER_ACTOR (shell_global_get_stage (priv->global));
meta_disable_unredirect_for_screen (shell_global_get_screen (priv->global));
g_signal_connect_after (stage, "paint", G_CALLBACK (grab_screenshot), (gpointer)screenshot); g_signal_connect_after (stage, "paint", G_CALLBACK (grab_screenshot), (gpointer)screenshot);
clutter_actor_queue_redraw (stage); clutter_actor_queue_redraw (stage);
@ -487,6 +542,8 @@ shell_screenshot_screenshot_area (ShellScreenshot *screenshot,
stage = CLUTTER_ACTOR (shell_global_get_stage (priv->global)); stage = CLUTTER_ACTOR (shell_global_get_stage (priv->global));
meta_disable_unredirect_for_screen (shell_global_get_screen (shell_global_get ()));
g_signal_connect_after (stage, "paint", G_CALLBACK (grab_area_screenshot), (gpointer)screenshot); g_signal_connect_after (stage, "paint", G_CALLBACK (grab_area_screenshot), (gpointer)screenshot);
clutter_actor_queue_redraw (stage); clutter_actor_queue_redraw (stage);
@ -512,19 +569,11 @@ shell_screenshot_screenshot_window (ShellScreenshot *screenshot,
const char *filename, const char *filename,
ShellScreenshotCallback callback) ShellScreenshotCallback callback)
{ {
GSimpleAsyncResult *result;
GSettings *settings;
ShellScreenshotPrivate *priv = screenshot->priv; ShellScreenshotPrivate *priv = screenshot->priv;
MetaScreen *screen = shell_global_get_screen (priv->global); MetaScreen *screen = shell_global_get_screen (priv->global);
MetaCursorTracker *tracker; ClutterActor *stage;
MetaDisplay *display = meta_screen_get_display (screen); MetaDisplay *display = meta_screen_get_display (screen);
MetaWindow *window = meta_display_get_focus_window (display); MetaWindow *window = meta_display_get_focus_window (display);
ClutterActor *window_actor;
gfloat actor_x, actor_y;
MetaShapedTexture *stex;
MetaRectangle rect;
cairo_rectangle_int_t clip;
if (priv->filename != NULL || !window) { if (priv->filename != NULL || !window) {
if (callback) if (callback)
@ -534,37 +583,16 @@ shell_screenshot_screenshot_window (ShellScreenshot *screenshot,
priv->filename = g_strdup (filename); priv->filename = g_strdup (filename);
priv->callback = callback; priv->callback = callback;
priv->include_frame = include_frame;
priv->include_cursor = include_cursor;
window_actor = CLUTTER_ACTOR (meta_window_get_compositor_private (window)); stage = CLUTTER_ACTOR (shell_global_get_stage (priv->global));
clutter_actor_get_position (window_actor, &actor_x, &actor_y);
meta_window_get_frame_rect (window, &rect); meta_disable_unredirect_for_screen (shell_global_get_screen (shell_global_get ()));
if (!include_frame) g_signal_connect_after (stage, "paint", G_CALLBACK (grab_window_screenshot), (gpointer)screenshot);
meta_window_frame_rect_to_client_rect (window, &rect, &rect);
priv->screenshot_area.x = rect.x; clutter_actor_queue_redraw (stage);
priv->screenshot_area.y = rect.y;
clip.x = rect.x - (gint) actor_x;
clip.y = rect.y - (gint) actor_y;
clip.width = priv->screenshot_area.width = rect.width;
clip.height = priv->screenshot_area.height = rect.height;
stex = META_SHAPED_TEXTURE (meta_window_actor_get_texture (META_WINDOW_ACTOR (window_actor)));
priv->image = meta_shaped_texture_get_image (stex, &clip);
settings = g_settings_new (A11Y_APPS_SCHEMA);
if (include_cursor && !g_settings_get_boolean (settings, MAGNIFIER_ACTIVE_KEY))
{
tracker = meta_cursor_tracker_get_for_screen (screen);
_draw_cursor_image (tracker, priv->image, priv->screenshot_area);
}
g_object_unref (settings);
result = g_simple_async_result_new (G_OBJECT (screenshot), on_screenshot_written, NULL, shell_screenshot_screenshot_window);
g_simple_async_result_run_in_thread (result, write_screenshot_thread, G_PRIORITY_DEFAULT, NULL);
g_object_unref (result);
} }
ShellScreenshot * ShellScreenshot *

View File

@ -10,7 +10,6 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <gdk-pixbuf/gdk-pixbuf.h> #include <gdk-pixbuf/gdk-pixbuf.h>
#include <gdk/gdkx.h> #include <gdk/gdkx.h>
#include <X11/extensions/XTest.h>
#include <locale.h> #include <locale.h>
#ifdef HAVE__NL_TIME_FIRST_WEEKDAY #ifdef HAVE__NL_TIME_FIRST_WEEKDAY

View File

@ -47,9 +47,6 @@ struct _ShellWindowTracker
/* <MetaWindow * window, ShellApp *app> */ /* <MetaWindow * window, ShellApp *app> */
GHashTable *window_to_app; GHashTable *window_to_app;
/* <int, ShellApp *app> */
GHashTable *launched_pid_to_app;
}; };
G_DEFINE_TYPE (ShellWindowTracker, shell_window_tracker, G_TYPE_OBJECT); G_DEFINE_TYPE (ShellWindowTracker, shell_window_tracker, G_TYPE_OBJECT);
@ -293,7 +290,7 @@ get_app_from_window_group (ShellWindowTracker *tracker,
* @window: a #MetaWindow * @window: a #MetaWindow
* *
* Check if the pid associated with @window corresponds to an * Check if the pid associated with @window corresponds to an
* application we launched. * application.
* *
* Return value: (transfer full): A newly-referenced #ShellApp, or %NULL * Return value: (transfer full): A newly-referenced #ShellApp, or %NULL
*/ */
@ -312,7 +309,7 @@ get_app_from_window_pid (ShellWindowTracker *tracker,
if (pid == -1) if (pid == -1)
return NULL; return NULL;
result = g_hash_table_lookup (tracker->launched_pid_to_app, GINT_TO_POINTER (pid)); result = shell_window_tracker_get_app_from_pid (tracker, pid);
if (result != NULL) if (result != NULL)
g_object_ref (result); g_object_ref (result);
@ -631,8 +628,6 @@ shell_window_tracker_init (ShellWindowTracker *self)
self->window_to_app = g_hash_table_new_full (g_direct_hash, g_direct_equal, self->window_to_app = g_hash_table_new_full (g_direct_hash, g_direct_equal,
NULL, (GDestroyNotify) g_object_unref); NULL, (GDestroyNotify) g_object_unref);
self->launched_pid_to_app = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) g_object_unref);
screen = shell_global_get_screen (shell_global_get ()); screen = shell_global_get_screen (shell_global_get ());
g_signal_connect (G_OBJECT (screen), "startup-sequence-changed", g_signal_connect (G_OBJECT (screen), "startup-sequence-changed",
@ -648,7 +643,6 @@ shell_window_tracker_finalize (GObject *object)
ShellWindowTracker *self = SHELL_WINDOW_TRACKER (object); ShellWindowTracker *self = SHELL_WINDOW_TRACKER (object);
g_hash_table_destroy (self->window_to_app); g_hash_table_destroy (self->window_to_app);
g_hash_table_destroy (self->launched_pid_to_app);
G_OBJECT_CLASS (shell_window_tracker_parent_class)->finalize(object); G_OBJECT_CLASS (shell_window_tracker_parent_class)->finalize(object);
} }
@ -717,40 +711,6 @@ shell_window_tracker_get_app_from_pid (ShellWindowTracker *tracker,
return result; return result;
} }
static void
on_child_exited (GPid pid,
gint status,
gpointer unused_data)
{
ShellWindowTracker *tracker;
tracker = shell_window_tracker_get_default ();
g_hash_table_remove (tracker->launched_pid_to_app, GINT_TO_POINTER((gint)pid));
}
void
_shell_window_tracker_add_child_process_app (ShellWindowTracker *tracker,
GPid pid,
ShellApp *app)
{
gpointer pid_ptr = GINT_TO_POINTER((int)pid);
if (g_hash_table_lookup (tracker->launched_pid_to_app,
&pid_ptr))
return;
g_hash_table_insert (tracker->launched_pid_to_app,
pid_ptr,
g_object_ref (app));
g_child_watch_add (pid, on_child_exited, NULL);
/* TODO: rescan unassociated windows
* Unlikely in practice that the launched app gets ahead of us
* enough to map an X window before we get scheduled after the fork(),
* but adding this note for future reference.
*/
}
static void static void
set_focus_app (ShellWindowTracker *tracker, set_focus_app (ShellWindowTracker *tracker,
ShellApp *new_focus_app) ShellApp *new_focus_app)

View File

@ -628,18 +628,26 @@ static void
st_texture_cache_reset_texture (StTextureCachePropertyBind *bind, st_texture_cache_reset_texture (StTextureCachePropertyBind *bind,
const char *propname) const char *propname)
{ {
GdkPixbuf *pixbuf; cairo_surface_t *surface;
CoglTexture *texdata; CoglTexture *texdata;
ClutterBackend *backend = clutter_get_default_backend ();
CoglContext *ctx = clutter_backend_get_cogl_context (backend);
g_object_get (bind->source, propname, &pixbuf, NULL); g_object_get (bind->source, propname, &surface, NULL);
g_return_if_fail (pixbuf == NULL || GDK_IS_PIXBUF (pixbuf)); if (surface != NULL &&
cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_IMAGE &&
if (pixbuf != NULL) (cairo_image_surface_get_format (surface) == CAIRO_FORMAT_ARGB32 ||
cairo_image_surface_get_format (surface) == CAIRO_FORMAT_RGB24))
{ {
texdata = pixbuf_to_cogl_texture (pixbuf); texdata = COGL_TEXTURE (cogl_texture_2d_new_from_data (ctx,
g_object_unref (pixbuf); cairo_image_surface_get_width (surface),
cairo_image_surface_get_height (surface),
cairo_image_surface_get_format (surface) == CAIRO_FORMAT_ARGB32 ?
COGL_PIXEL_FORMAT_BGRA_8888 : COGL_PIXEL_FORMAT_BGR_888,
cairo_image_surface_get_stride (surface),
cairo_image_surface_get_data (surface),
NULL));
clutter_texture_set_cogl_texture (bind->texture, texdata); clutter_texture_set_cogl_texture (bind->texture, texdata);
cogl_object_unref (texdata); cogl_object_unref (texdata);
@ -677,12 +685,12 @@ st_texture_cache_free_bind (gpointer data)
} }
/** /**
* st_texture_cache_bind_pixbuf_property: * st_texture_cache_bind_cairo_surface_property:
* @cache: * @cache:
* @object: A #GObject with a property @property_name of type #GdkPixbuf * @object: A #GObject with a property @property_name of type #GdkPixbuf
* @property_name: Name of a property * @property_name: Name of a property
* *
* Create a #ClutterTexture which tracks the #GdkPixbuf value of a GObject property * Create a #ClutterTexture which tracks the #cairo_surface_t value of a GObject property
* named by @property_name. Unlike other methods in StTextureCache, the underlying * named by @property_name. Unlike other methods in StTextureCache, the underlying
* #CoglTexture is not shared by default with other invocations to this method. * #CoglTexture is not shared by default with other invocations to this method.
* *
@ -692,7 +700,7 @@ st_texture_cache_free_bind (gpointer data)
* Return value: (transfer none): A new #ClutterActor * Return value: (transfer none): A new #ClutterActor
*/ */
ClutterActor * ClutterActor *
st_texture_cache_bind_pixbuf_property (StTextureCache *cache, st_texture_cache_bind_cairo_surface_property (StTextureCache *cache,
GObject *object, GObject *object,
const char *property_name) const char *property_name)
{ {
@ -812,12 +820,27 @@ ensure_request (StTextureCache *cache,
return had_pending; return had_pending;
} }
static ClutterActor * /**
load_gicon_with_colors (StTextureCache *cache, * st_texture_cache_load_gicon:
* @cache: The texture cache instance
* @theme_node: (nullable): The #StThemeNode to use for colors, or NULL
* if the icon must not be recolored
* @icon: the #GIcon to load
* @size: Size of themed
* @scale: Scale factor of display
*
* This method returns a new #ClutterActor for a given #GIcon. If the
* icon isn't loaded already, the texture will be filled
* asynchronously.
*
* Return Value: (transfer none): A new #ClutterActor for the icon, or %NULL if not found
*/
ClutterActor *
st_texture_cache_load_gicon (StTextureCache *cache,
StThemeNode *theme_node,
GIcon *icon, GIcon *icon,
gint size, gint size,
gint scale, gint scale)
StIconColors *colors)
{ {
AsyncTextureLoadData *request; AsyncTextureLoadData *request;
ClutterActor *texture; ClutterActor *texture;
@ -826,13 +849,26 @@ load_gicon_with_colors (StTextureCache *cache,
GtkIconTheme *theme; GtkIconTheme *theme;
GtkIconInfo *info; GtkIconInfo *info;
StTextureCachePolicy policy; StTextureCachePolicy policy;
StIconColors *colors = NULL;
StIconStyle icon_style = ST_ICON_STYLE_REQUESTED;
GtkIconLookupFlags lookup_flags; GtkIconLookupFlags lookup_flags;
if (theme_node)
{
colors = st_theme_node_get_icon_colors (theme_node);
icon_style = st_theme_node_get_icon_style (theme_node);
}
/* Do theme lookups in the main thread to avoid thread-unsafety */ /* Do theme lookups in the main thread to avoid thread-unsafety */
theme = cache->priv->icon_theme; theme = cache->priv->icon_theme;
lookup_flags = GTK_ICON_LOOKUP_USE_BUILTIN; lookup_flags = GTK_ICON_LOOKUP_USE_BUILTIN;
if (icon_style == ST_ICON_STYLE_REGULAR)
lookup_flags |= GTK_ICON_LOOKUP_FORCE_REGULAR;
else if (icon_style == ST_ICON_STYLE_SYMBOLIC)
lookup_flags |= GTK_ICON_LOOKUP_FORCE_SYMBOLIC;
if (clutter_get_default_text_direction () == CLUTTER_TEXT_DIRECTION_RTL) if (clutter_get_default_text_direction () == CLUTTER_TEXT_DIRECTION_RTL)
lookup_flags |= GTK_ICON_LOOKUP_DIR_RTL; lookup_flags |= GTK_ICON_LOOKUP_DIR_RTL;
else else
@ -852,8 +888,8 @@ load_gicon_with_colors (StTextureCache *cache,
if (colors) if (colors)
{ {
/* This raises some doubts about the practice of using string keys */ /* This raises some doubts about the practice of using string keys */
key = g_strdup_printf (CACHE_PREFIX_ICON "%s,size=%d,scale=%d,colors=%2x%2x%2x%2x,%2x%2x%2x%2x,%2x%2x%2x%2x,%2x%2x%2x%2x", key = g_strdup_printf (CACHE_PREFIX_ICON "%s,size=%d,scale=%d,style=%d,colors=%2x%2x%2x%2x,%2x%2x%2x%2x,%2x%2x%2x%2x,%2x%2x%2x%2x",
gicon_string, size, scale, gicon_string, size, scale, icon_style,
colors->foreground.red, colors->foreground.blue, colors->foreground.green, colors->foreground.alpha, colors->foreground.red, colors->foreground.blue, colors->foreground.green, colors->foreground.alpha,
colors->warning.red, colors->warning.blue, colors->warning.green, colors->warning.alpha, colors->warning.red, colors->warning.blue, colors->warning.green, colors->warning.alpha,
colors->error.red, colors->error.blue, colors->error.green, colors->error.alpha, colors->error.red, colors->error.blue, colors->error.green, colors->error.alpha,
@ -861,8 +897,8 @@ load_gicon_with_colors (StTextureCache *cache,
} }
else else
{ {
key = g_strdup_printf (CACHE_PREFIX_ICON "%s,size=%d,scale=%d", key = g_strdup_printf (CACHE_PREFIX_ICON "%s,size=%d,scale=%d,style=%d",
gicon_string, size, scale); gicon_string, size, scale, icon_style);
} }
g_free (gicon_string); g_free (gicon_string);
@ -894,31 +930,6 @@ load_gicon_with_colors (StTextureCache *cache,
return CLUTTER_ACTOR (texture); return CLUTTER_ACTOR (texture);
} }
/**
* st_texture_cache_load_gicon:
* @cache: The texture cache instance
* @theme_node: (nullable): The #StThemeNode to use for colors, or NULL
* if the icon must not be recolored
* @icon: the #GIcon to load
* @size: Size of themed
* @scale: Scale factor of display
*
* This method returns a new #ClutterActor for a given #GIcon. If the
* icon isn't loaded already, the texture will be filled
* asynchronously.
*
* Return Value: (transfer none): A new #ClutterActor for the icon, or %NULL if not found
*/
ClutterActor *
st_texture_cache_load_gicon (StTextureCache *cache,
StThemeNode *theme_node,
GIcon *icon,
gint size,
gint scale)
{
return load_gicon_with_colors (cache, icon, size, scale, theme_node ? st_theme_node_get_icon_colors (theme_node) : NULL);
}
static ClutterActor * static ClutterActor *
load_from_pixbuf (GdkPixbuf *pixbuf) load_from_pixbuf (GdkPixbuf *pixbuf)
{ {

View File

@ -28,7 +28,6 @@
#include <gio/gio.h> #include <gio/gio.h>
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <clutter/clutter.h> #include <clutter/clutter.h>
#include <st/st-types.h> #include <st/st-types.h>
@ -77,7 +76,7 @@ st_texture_cache_load_sliced_image (StTextureCache *cache,
GFunc load_callback, GFunc load_callback,
gpointer user_data); gpointer user_data);
ClutterActor *st_texture_cache_bind_pixbuf_property (StTextureCache *cache, ClutterActor *st_texture_cache_bind_cairo_surface_property (StTextureCache *cache,
GObject *object, GObject *object,
const char *property_name); const char *property_name);

View File

@ -2392,6 +2392,48 @@ st_theme_node_get_transition_duration (StThemeNode *node)
return st_slow_down_factor * node->transition_duration; return st_slow_down_factor * node->transition_duration;
} }
StIconStyle
st_theme_node_get_icon_style (StThemeNode *node)
{
int i;
ensure_properties (node);
for (i = node->n_properties - 1; i >= 0; i--)
{
CRDeclaration *decl = node->properties[i];
if (strcmp (decl->property->stryng->str, "-st-icon-style") == 0)
{
CRTerm *term;
for (term = decl->value; term; term = term->next)
{
if (term->type != TERM_IDENT)
goto next_decl;
if (strcmp (term->content.str->stryng->str, "requested") == 0)
return ST_ICON_STYLE_REQUESTED;
else if (strcmp (term->content.str->stryng->str, "regular") == 0)
return ST_ICON_STYLE_REGULAR;
else if (strcmp (term->content.str->stryng->str, "symbolic") == 0)
return ST_ICON_STYLE_SYMBOLIC;
else
g_warning ("Unknown -st-icon-style \"%s\"",
term->content.str->stryng->str);
}
}
next_decl:
;
}
if (node->parent_node)
return st_theme_node_get_icon_style (node->parent_node);
return ST_ICON_STYLE_REQUESTED;
}
StTextDecoration StTextDecoration
st_theme_node_get_text_decoration (StThemeNode *node) st_theme_node_get_text_decoration (StThemeNode *node)
{ {

View File

@ -94,6 +94,12 @@ typedef enum {
ST_GRADIENT_RADIAL ST_GRADIENT_RADIAL
} StGradientType; } StGradientType;
typedef enum {
ST_ICON_STYLE_REQUESTED,
ST_ICON_STYLE_REGULAR,
ST_ICON_STYLE_SYMBOLIC
} StIconStyle;
typedef struct _StThemeNodePaintState StThemeNodePaintState; typedef struct _StThemeNodePaintState StThemeNodePaintState;
struct _StThemeNodePaintState { struct _StThemeNodePaintState {
@ -220,6 +226,8 @@ int st_theme_node_get_max_height (StThemeNode *node);
int st_theme_node_get_transition_duration (StThemeNode *node); int st_theme_node_get_transition_duration (StThemeNode *node);
StIconStyle st_theme_node_get_icon_style (StThemeNode *node);
StTextDecoration st_theme_node_get_text_decoration (StThemeNode *node); StTextDecoration st_theme_node_get_text_decoration (StThemeNode *node);
StTextAlign st_theme_node_get_text_align (StThemeNode *node); StTextAlign st_theme_node_get_text_align (StThemeNode *node);